{
    "EssenceFilterSwipeFirst": {
        "desc": "首行滑动",
        "pre_delay": 0,
        "action": {
            "type": "Swipe",
            "param": {
                "begin": [
                    135,
                    191
                ],
                "end": [
                    135,
                    75
                ],
                "end_hold": 700,
                "duration": 100
            }
        },
        "post_delay": 200,
        "next": [
            "EssenceFilterSwipeCalibrate"
        ]
    },
    "EssenceFilterSwipeNext": {
        "desc": "后续滑动",
        "pre_delay": 0,
        "action": {
            "type": "Swipe",
            "param": {
                "begin": [
                    135,
                    191
                ],
                "end": [
                    135,
                    76
                ],
                "end_hold": 700,
                "duration": 101
            }
        },
        "post_delay": 200,
        "next": [
            "EssenceFilterSwipeCalibrate"
        ]
    },
    "EssenceFilterSwipeFirstNoCalibrate": {
        "desc": "首行滑动（不校准，用于尾扫前最后一次补滑）",
        "pre_delay": 0,
        "action": {
            "type": "Swipe",
            "param": {
                "begin": [
                    135,
                    191
                ],
                "end": [
                    135,
                    75
                ],
                "end_hold": 700,
                "duration": 100
            }
        },
        "post_delay": 200,
        "next": [
            "EssenceRowDetect",
            "EssenceDetectFinal"
        ]
    },
    "EssenceFilterSwipeNextNoCalibrate": {
        "desc": "后续滑动（不校准，用于尾扫前最后一次补滑）",
        "pre_delay": 0,
        "action": {
            "type": "Swipe",
            "param": {
                "begin": [
                    135,
                    191
                ],
                "end": [
                    135,
                    76
                ],
                "end_hold": 700,
                "duration": 101
            }
        },
        "post_delay": 200,
        "next": [
            "EssenceRowDetect",
            "EssenceDetectFinal"
        ]
    },
    "EssenceFilterSwipeCalibrateCorrect": {
        "desc": "校准微滑（由 SwipeCalibrateAction 通过 RunTask override begin/end 调用）",
        "pre_delay": 0,
        "action": {
            "type": "Swipe",
            "param": {
                "begin": [
                    135,
                    191
                ],
                "end": [
                    135,
                    150
                ],
                "end_hold": 300,
                "duration": 300
            }
        },
        "post_delay": 150
    },
    "EssenceFilterSwipeCalibrate": {
        "desc": "滑动后校准：按首格 Y 误差计算滑动距离，校准到基准 86",
        "recognition": {
            "type": "TemplateMatch",
            "param": {
                "roi": [
                    18,
                    72,
                    956,
                    145
                ],
                "template": "EssenceFilter/EssenceGeneral.png",
                "method": 5,
                "threshold": 0.35
            }
        },
        "pre_delay": 0,
        "action": {
            "type": "Custom",
            "param": {
                "custom_action": "EssenceFilterSwipeCalibrateAction"
            }
        },
        "post_delay": 0,
        "next": [
            "EssenceRowDetect",
            "EssenceDetectFinal"
        ]
    }
}
