user: Describe GreasePencilTimeModifier(Modifier) from the Blender manual or Python API, including usage steps and snippets.

assistant: # GreasePencilTimeModifier(Modifier)

base classes — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), [`Modifier`](bpy.types.Modifier.html#bpy.types.Modifier "bpy.types.Modifier")

*class* bpy.types.GreasePencilTimeModifier(*Modifier*)
:   Offset keyframes

    frame_end
    :   Final frame of the range

        Type:
        :   int in [0, 1048574], default 250

    frame_scale
    :   Evaluation time in seconds

        Type:
        :   float in [0.001, 100], default 1.0

    frame_start
    :   First frame of the range

        Type:
        :   int in [0, 1048574], default 1

    invert_layer_filter
    :   Invert layer filter

        Type:
        :   boolean, default False

    invert_layer_pass_filter
    :   Invert layer pass filter

        Type:
        :   boolean, default False

    layer_pass_filter
    :   Layer pass filter

        Type:
        :   int in [0, 100], default 0

    mode
    :   - `NORMAL`
          Regular – Apply offset in usual animation direction.
        - `REVERSE`
          Reverse – Apply offset in reverse animation direction.
        - `FIX`
          Fixed Frame – Keep frame and do not change with time.
        - `PINGPONG`
          Ping Pong – Loop back and forth starting in reverse.
        - `CHAIN`
          Chain – List of chained animation segments.

        Type:
        :   enum in [`'NORMAL'`, `'REVERSE'`, `'FIX'`, `'PINGPONG'`, `'CHAIN'`], default `'NORMAL'`

    offset
    :   Number of frames to offset original keyframe number or frame to fix

        Type:
        :   int in [-32768, 32767], default 1

    open_custom_range_panel
    :   Type:
        :   boolean, default False

    open_influence_panel
    :   Type:
        :   boolean, default False

    segment_active_index
    :   Active index in the segment list

        Type:
        :   int in [0, inf], default 0

    segments
    :   Type:
        :   [`bpy_prop_collection`](bpy.types.bpy_prop_collection.html#bpy.types.bpy_prop_collection "bpy.types.bpy_prop_collection") of [`GreasePencilTimeModifierSegment`](bpy.types.GreasePencilTimeModifierSegment.html#bpy.types.GreasePencilTimeModifierSegment "bpy.types.GreasePencilTimeModifierSegment"), (readonly)

    tree_node_filter
    :   Layer name

        Type:
        :   string, default “”, (never None)

    use_custom_frame_range
    :   Define a custom range of frames to use in modifier

        Type:
        :   boolean, default False

    use_keep_loop
    :   Retiming end frames and move to start of animation to keep loop

        Type:
        :   boolean, default True

    use_layer_group_filter
    :   Filter by layer group name

        Type:
        :   boolean, default False

    use_layer_pass_filter
    :   Use layer pass filter

        Type:
        :   boolean, default False

    *classmethod* bl_rna_get_subclass(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The RNA type or default when not found.

        Return type:
        :   [`bpy.types.Struct`](bpy.types.Struct.html#bpy.types.Struct "bpy.types.Struct") subclass

    *classmethod* bl_rna_get_subclass_py(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The class or default when not found.

        Return type:
        :   type