
/* Automatically generated struct definitions for the Data API.
 * Do not edit manually, changes will be overwritten.           */

#define RNA_RUNTIME

#include <float.h>
#include <stdio.h>
#include <limits.h>
#include <limits>
#include <string.h>

#include <stddef.h>

#include <algorithm>

#include "MEM_guardedalloc.h"

#include "DNA_ID.h"
#include "DNA_scene_types.h"
#include "DNA_node_types.h"
#include "BLI_fileops.h"

#include "BLI_listbase.h"

#include "BLI_path_utils.hh"

#include "BLI_rect.h"

#include "BLI_string.h"

#include "BLI_string_utf8.h"

#include "BLI_utildefines.h"

#include "BKE_context.hh"
#include "BKE_lib_id.hh"
#include "BKE_main.hh"
#include "BKE_report.hh"
#include "RNA_define.hh"
#include "RNA_types.hh"
#include "rna_internal.hh"

#include "rna_prototypes_gen.hh"

#include "rna_constraint.cc"

#pragma GCC diagnostic ignored "-Wunused-parameter"

/* Auto-generated Functions. */


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;


extern PropertyRNA &rna_ConstraintTarget_rna_properties;
extern PropertyRNA &rna_ConstraintTarget_rna_type;
extern PropertyRNA &rna_ConstraintTarget_target;
extern PropertyRNA &rna_ConstraintTarget_subtarget;


extern PropertyRNA &rna_ConstraintTargetBone_rna_properties;
extern PropertyRNA &rna_ConstraintTargetBone_rna_type;
extern PropertyRNA &rna_ConstraintTargetBone_target;
extern PropertyRNA &rna_ConstraintTargetBone_subtarget;
extern PropertyRNA &rna_ConstraintTargetBone_weight;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_ChildOfConstraint_target;
extern PropertyRNA &rna_ChildOfConstraint_subtarget;
extern PropertyRNA &rna_ChildOfConstraint_use_location_x;
extern PropertyRNA &rna_ChildOfConstraint_use_location_y;
extern PropertyRNA &rna_ChildOfConstraint_use_location_z;
extern PropertyRNA &rna_ChildOfConstraint_use_rotation_x;
extern PropertyRNA &rna_ChildOfConstraint_use_rotation_y;
extern PropertyRNA &rna_ChildOfConstraint_use_rotation_z;
extern PropertyRNA &rna_ChildOfConstraint_use_scale_x;
extern PropertyRNA &rna_ChildOfConstraint_use_scale_y;
extern PropertyRNA &rna_ChildOfConstraint_use_scale_z;
extern PropertyRNA &rna_ChildOfConstraint_set_inverse_pending;
extern PropertyRNA &rna_ChildOfConstraint_inverse_matrix;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_ArmatureConstraint_targets;
extern PropertyRNA &rna_ArmatureConstraint_use_deform_preserve_volume;
extern PropertyRNA &rna_ArmatureConstraint_use_bone_envelopes;
extern PropertyRNA &rna_ArmatureConstraint_use_current_location;


extern PropertyRNA &rna_ArmatureConstraintTargets_rna_properties;
extern PropertyRNA &rna_ArmatureConstraintTargets_rna_type;

extern FunctionRNA rna_ArmatureConstraintTargets_new_func;
extern PropertyRNA &rna_ArmatureConstraintTargets_new_target;

extern FunctionRNA rna_ArmatureConstraintTargets_remove_func;
extern PropertyRNA &rna_ArmatureConstraintTargets_remove_target;

extern FunctionRNA rna_ArmatureConstraintTargets_clear_func;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_StretchToConstraint_head_tail;
extern PropertyRNA &rna_StretchToConstraint_use_bbone_shape;
extern PropertyRNA &rna_StretchToConstraint_target;
extern PropertyRNA &rna_StretchToConstraint_subtarget;
extern PropertyRNA &rna_StretchToConstraint_volume;
extern PropertyRNA &rna_StretchToConstraint_keep_axis;
extern PropertyRNA &rna_StretchToConstraint_rest_length;
extern PropertyRNA &rna_StretchToConstraint_bulge;
extern PropertyRNA &rna_StretchToConstraint_use_bulge_min;
extern PropertyRNA &rna_StretchToConstraint_use_bulge_max;
extern PropertyRNA &rna_StretchToConstraint_bulge_min;
extern PropertyRNA &rna_StretchToConstraint_bulge_max;
extern PropertyRNA &rna_StretchToConstraint_bulge_smooth;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_FollowPathConstraint_target;
extern PropertyRNA &rna_FollowPathConstraint_offset;
extern PropertyRNA &rna_FollowPathConstraint_offset_factor;
extern PropertyRNA &rna_FollowPathConstraint_forward_axis;
extern PropertyRNA &rna_FollowPathConstraint_up_axis;
extern PropertyRNA &rna_FollowPathConstraint_use_curve_follow;
extern PropertyRNA &rna_FollowPathConstraint_use_fixed_location;
extern PropertyRNA &rna_FollowPathConstraint_use_curve_radius;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_LockedTrackConstraint_head_tail;
extern PropertyRNA &rna_LockedTrackConstraint_use_bbone_shape;
extern PropertyRNA &rna_LockedTrackConstraint_target;
extern PropertyRNA &rna_LockedTrackConstraint_subtarget;
extern PropertyRNA &rna_LockedTrackConstraint_track_axis;
extern PropertyRNA &rna_LockedTrackConstraint_lock_axis;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_ActionConstraint_target;
extern PropertyRNA &rna_ActionConstraint_subtarget;
extern PropertyRNA &rna_ActionConstraint_mix_mode;
extern PropertyRNA &rna_ActionConstraint_transform_channel;
extern PropertyRNA &rna_ActionConstraint_action;
extern PropertyRNA &rna_ActionConstraint_action_slot_handle;
extern PropertyRNA &rna_ActionConstraint_last_slot_identifier;
extern PropertyRNA &rna_ActionConstraint_action_slot;
extern PropertyRNA &rna_ActionConstraint_action_suitable_slots;
extern PropertyRNA &rna_ActionConstraint_use_bone_object_action;
extern PropertyRNA &rna_ActionConstraint_frame_start;
extern PropertyRNA &rna_ActionConstraint_frame_end;
extern PropertyRNA &rna_ActionConstraint_max;
extern PropertyRNA &rna_ActionConstraint_min;
extern PropertyRNA &rna_ActionConstraint_eval_time;
extern PropertyRNA &rna_ActionConstraint_use_eval_time;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_CopyScaleConstraint_target;
extern PropertyRNA &rna_CopyScaleConstraint_subtarget;
extern PropertyRNA &rna_CopyScaleConstraint_use_x;
extern PropertyRNA &rna_CopyScaleConstraint_use_y;
extern PropertyRNA &rna_CopyScaleConstraint_use_z;
extern PropertyRNA &rna_CopyScaleConstraint_power;
extern PropertyRNA &rna_CopyScaleConstraint_use_make_uniform;
extern PropertyRNA &rna_CopyScaleConstraint_use_offset;
extern PropertyRNA &rna_CopyScaleConstraint_use_add;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_MaintainVolumeConstraint_free_axis;
extern PropertyRNA &rna_MaintainVolumeConstraint_mode;
extern PropertyRNA &rna_MaintainVolumeConstraint_volume;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_CopyLocationConstraint_head_tail;
extern PropertyRNA &rna_CopyLocationConstraint_use_bbone_shape;
extern PropertyRNA &rna_CopyLocationConstraint_target;
extern PropertyRNA &rna_CopyLocationConstraint_subtarget;
extern PropertyRNA &rna_CopyLocationConstraint_use_x;
extern PropertyRNA &rna_CopyLocationConstraint_use_y;
extern PropertyRNA &rna_CopyLocationConstraint_use_z;
extern PropertyRNA &rna_CopyLocationConstraint_invert_x;
extern PropertyRNA &rna_CopyLocationConstraint_invert_y;
extern PropertyRNA &rna_CopyLocationConstraint_invert_z;
extern PropertyRNA &rna_CopyLocationConstraint_use_offset;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_CopyRotationConstraint_target;
extern PropertyRNA &rna_CopyRotationConstraint_subtarget;
extern PropertyRNA &rna_CopyRotationConstraint_use_x;
extern PropertyRNA &rna_CopyRotationConstraint_use_y;
extern PropertyRNA &rna_CopyRotationConstraint_use_z;
extern PropertyRNA &rna_CopyRotationConstraint_invert_x;
extern PropertyRNA &rna_CopyRotationConstraint_invert_y;
extern PropertyRNA &rna_CopyRotationConstraint_invert_z;
extern PropertyRNA &rna_CopyRotationConstraint_euler_order;
extern PropertyRNA &rna_CopyRotationConstraint_mix_mode;
extern PropertyRNA &rna_CopyRotationConstraint_use_offset;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_CopyTransformsConstraint_head_tail;
extern PropertyRNA &rna_CopyTransformsConstraint_use_bbone_shape;
extern PropertyRNA &rna_CopyTransformsConstraint_target;
extern PropertyRNA &rna_CopyTransformsConstraint_subtarget;
extern PropertyRNA &rna_CopyTransformsConstraint_remove_target_shear;
extern PropertyRNA &rna_CopyTransformsConstraint_mix_mode;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_FloorConstraint_target;
extern PropertyRNA &rna_FloorConstraint_subtarget;
extern PropertyRNA &rna_FloorConstraint_floor_location;
extern PropertyRNA &rna_FloorConstraint_use_rotation;
extern PropertyRNA &rna_FloorConstraint_offset;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_TrackToConstraint_head_tail;
extern PropertyRNA &rna_TrackToConstraint_use_bbone_shape;
extern PropertyRNA &rna_TrackToConstraint_target;
extern PropertyRNA &rna_TrackToConstraint_subtarget;
extern PropertyRNA &rna_TrackToConstraint_track_axis;
extern PropertyRNA &rna_TrackToConstraint_up_axis;
extern PropertyRNA &rna_TrackToConstraint_use_target_z;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_KinematicConstraint_target;
extern PropertyRNA &rna_KinematicConstraint_subtarget;
extern PropertyRNA &rna_KinematicConstraint_iterations;
extern PropertyRNA &rna_KinematicConstraint_pole_target;
extern PropertyRNA &rna_KinematicConstraint_pole_subtarget;
extern PropertyRNA &rna_KinematicConstraint_pole_angle;
extern PropertyRNA &rna_KinematicConstraint_weight;
extern PropertyRNA &rna_KinematicConstraint_orient_weight;
extern PropertyRNA &rna_KinematicConstraint_chain_count;
extern PropertyRNA &rna_KinematicConstraint_use_tail;
extern PropertyRNA &rna_KinematicConstraint_reference_axis;
extern PropertyRNA &rna_KinematicConstraint_use_location;
extern PropertyRNA &rna_KinematicConstraint_lock_location_x;
extern PropertyRNA &rna_KinematicConstraint_lock_location_y;
extern PropertyRNA &rna_KinematicConstraint_lock_location_z;
extern PropertyRNA &rna_KinematicConstraint_use_rotation;
extern PropertyRNA &rna_KinematicConstraint_lock_rotation_x;
extern PropertyRNA &rna_KinematicConstraint_lock_rotation_y;
extern PropertyRNA &rna_KinematicConstraint_lock_rotation_z;
extern PropertyRNA &rna_KinematicConstraint_use_stretch;
extern PropertyRNA &rna_KinematicConstraint_ik_type;
extern PropertyRNA &rna_KinematicConstraint_limit_mode;
extern PropertyRNA &rna_KinematicConstraint_distance;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_ClampToConstraint_target;
extern PropertyRNA &rna_ClampToConstraint_main_axis;
extern PropertyRNA &rna_ClampToConstraint_use_cyclic;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_LimitDistanceConstraint_head_tail;
extern PropertyRNA &rna_LimitDistanceConstraint_use_bbone_shape;
extern PropertyRNA &rna_LimitDistanceConstraint_target;
extern PropertyRNA &rna_LimitDistanceConstraint_subtarget;
extern PropertyRNA &rna_LimitDistanceConstraint_distance;
extern PropertyRNA &rna_LimitDistanceConstraint_limit_mode;
extern PropertyRNA &rna_LimitDistanceConstraint_use_transform_limit;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_LimitScaleConstraint_use_min_x;
extern PropertyRNA &rna_LimitScaleConstraint_use_min_y;
extern PropertyRNA &rna_LimitScaleConstraint_use_min_z;
extern PropertyRNA &rna_LimitScaleConstraint_use_max_x;
extern PropertyRNA &rna_LimitScaleConstraint_use_max_y;
extern PropertyRNA &rna_LimitScaleConstraint_use_max_z;
extern PropertyRNA &rna_LimitScaleConstraint_min_x;
extern PropertyRNA &rna_LimitScaleConstraint_min_y;
extern PropertyRNA &rna_LimitScaleConstraint_min_z;
extern PropertyRNA &rna_LimitScaleConstraint_max_x;
extern PropertyRNA &rna_LimitScaleConstraint_max_y;
extern PropertyRNA &rna_LimitScaleConstraint_max_z;
extern PropertyRNA &rna_LimitScaleConstraint_use_transform_limit;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_LimitRotationConstraint_use_limit_x;
extern PropertyRNA &rna_LimitRotationConstraint_use_limit_y;
extern PropertyRNA &rna_LimitRotationConstraint_use_limit_z;
extern PropertyRNA &rna_LimitRotationConstraint_min_x;
extern PropertyRNA &rna_LimitRotationConstraint_min_y;
extern PropertyRNA &rna_LimitRotationConstraint_min_z;
extern PropertyRNA &rna_LimitRotationConstraint_max_x;
extern PropertyRNA &rna_LimitRotationConstraint_max_y;
extern PropertyRNA &rna_LimitRotationConstraint_max_z;
extern PropertyRNA &rna_LimitRotationConstraint_euler_order;
extern PropertyRNA &rna_LimitRotationConstraint_use_transform_limit;
extern PropertyRNA &rna_LimitRotationConstraint_use_legacy_behavior;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_LimitLocationConstraint_use_min_x;
extern PropertyRNA &rna_LimitLocationConstraint_use_min_y;
extern PropertyRNA &rna_LimitLocationConstraint_use_min_z;
extern PropertyRNA &rna_LimitLocationConstraint_use_max_x;
extern PropertyRNA &rna_LimitLocationConstraint_use_max_y;
extern PropertyRNA &rna_LimitLocationConstraint_use_max_z;
extern PropertyRNA &rna_LimitLocationConstraint_min_x;
extern PropertyRNA &rna_LimitLocationConstraint_min_y;
extern PropertyRNA &rna_LimitLocationConstraint_min_z;
extern PropertyRNA &rna_LimitLocationConstraint_max_x;
extern PropertyRNA &rna_LimitLocationConstraint_max_y;
extern PropertyRNA &rna_LimitLocationConstraint_max_z;
extern PropertyRNA &rna_LimitLocationConstraint_use_transform_limit;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_TransformConstraint_target;
extern PropertyRNA &rna_TransformConstraint_subtarget;
extern PropertyRNA &rna_TransformConstraint_map_from;
extern PropertyRNA &rna_TransformConstraint_map_to;
extern PropertyRNA &rna_TransformConstraint_map_to_x_from;
extern PropertyRNA &rna_TransformConstraint_map_to_y_from;
extern PropertyRNA &rna_TransformConstraint_map_to_z_from;
extern PropertyRNA &rna_TransformConstraint_use_motion_extrapolate;
extern PropertyRNA &rna_TransformConstraint_from_rotation_mode;
extern PropertyRNA &rna_TransformConstraint_to_euler_order;
extern PropertyRNA &rna_TransformConstraint_from_min_x;
extern PropertyRNA &rna_TransformConstraint_from_min_y;
extern PropertyRNA &rna_TransformConstraint_from_min_z;
extern PropertyRNA &rna_TransformConstraint_from_max_x;
extern PropertyRNA &rna_TransformConstraint_from_max_y;
extern PropertyRNA &rna_TransformConstraint_from_max_z;
extern PropertyRNA &rna_TransformConstraint_to_min_x;
extern PropertyRNA &rna_TransformConstraint_to_min_y;
extern PropertyRNA &rna_TransformConstraint_to_min_z;
extern PropertyRNA &rna_TransformConstraint_to_max_x;
extern PropertyRNA &rna_TransformConstraint_to_max_y;
extern PropertyRNA &rna_TransformConstraint_to_max_z;
extern PropertyRNA &rna_TransformConstraint_mix_mode;
extern PropertyRNA &rna_TransformConstraint_from_min_x_rot;
extern PropertyRNA &rna_TransformConstraint_from_min_y_rot;
extern PropertyRNA &rna_TransformConstraint_from_min_z_rot;
extern PropertyRNA &rna_TransformConstraint_from_max_x_rot;
extern PropertyRNA &rna_TransformConstraint_from_max_y_rot;
extern PropertyRNA &rna_TransformConstraint_from_max_z_rot;
extern PropertyRNA &rna_TransformConstraint_to_min_x_rot;
extern PropertyRNA &rna_TransformConstraint_to_min_y_rot;
extern PropertyRNA &rna_TransformConstraint_to_min_z_rot;
extern PropertyRNA &rna_TransformConstraint_to_max_x_rot;
extern PropertyRNA &rna_TransformConstraint_to_max_y_rot;
extern PropertyRNA &rna_TransformConstraint_to_max_z_rot;
extern PropertyRNA &rna_TransformConstraint_mix_mode_rot;
extern PropertyRNA &rna_TransformConstraint_from_min_x_scale;
extern PropertyRNA &rna_TransformConstraint_from_min_y_scale;
extern PropertyRNA &rna_TransformConstraint_from_min_z_scale;
extern PropertyRNA &rna_TransformConstraint_from_max_x_scale;
extern PropertyRNA &rna_TransformConstraint_from_max_y_scale;
extern PropertyRNA &rna_TransformConstraint_from_max_z_scale;
extern PropertyRNA &rna_TransformConstraint_to_min_x_scale;
extern PropertyRNA &rna_TransformConstraint_to_min_y_scale;
extern PropertyRNA &rna_TransformConstraint_to_min_z_scale;
extern PropertyRNA &rna_TransformConstraint_to_max_x_scale;
extern PropertyRNA &rna_TransformConstraint_to_max_y_scale;
extern PropertyRNA &rna_TransformConstraint_to_max_z_scale;
extern PropertyRNA &rna_TransformConstraint_mix_mode_scale;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_ShrinkwrapConstraint_target;
extern PropertyRNA &rna_ShrinkwrapConstraint_shrinkwrap_type;
extern PropertyRNA &rna_ShrinkwrapConstraint_wrap_mode;
extern PropertyRNA &rna_ShrinkwrapConstraint_distance;
extern PropertyRNA &rna_ShrinkwrapConstraint_project_axis;
extern PropertyRNA &rna_ShrinkwrapConstraint_project_axis_space;
extern PropertyRNA &rna_ShrinkwrapConstraint_project_limit;
extern PropertyRNA &rna_ShrinkwrapConstraint_use_project_opposite;
extern PropertyRNA &rna_ShrinkwrapConstraint_cull_face;
extern PropertyRNA &rna_ShrinkwrapConstraint_use_invert_cull;
extern PropertyRNA &rna_ShrinkwrapConstraint_use_track_normal;
extern PropertyRNA &rna_ShrinkwrapConstraint_track_axis;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_DampedTrackConstraint_head_tail;
extern PropertyRNA &rna_DampedTrackConstraint_use_bbone_shape;
extern PropertyRNA &rna_DampedTrackConstraint_target;
extern PropertyRNA &rna_DampedTrackConstraint_subtarget;
extern PropertyRNA &rna_DampedTrackConstraint_track_axis;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_SplineIKConstraint_target;
extern PropertyRNA &rna_SplineIKConstraint_chain_count;
extern PropertyRNA &rna_SplineIKConstraint_joint_bindings;
extern PropertyRNA &rna_SplineIKConstraint_use_chain_offset;
extern PropertyRNA &rna_SplineIKConstraint_use_even_divisions;
extern PropertyRNA &rna_SplineIKConstraint_use_curve_radius;
extern PropertyRNA &rna_SplineIKConstraint_xz_scale_mode;
extern PropertyRNA &rna_SplineIKConstraint_y_scale_mode;
extern PropertyRNA &rna_SplineIKConstraint_use_original_scale;
extern PropertyRNA &rna_SplineIKConstraint_bulge;
extern PropertyRNA &rna_SplineIKConstraint_use_bulge_min;
extern PropertyRNA &rna_SplineIKConstraint_use_bulge_max;
extern PropertyRNA &rna_SplineIKConstraint_bulge_min;
extern PropertyRNA &rna_SplineIKConstraint_bulge_max;
extern PropertyRNA &rna_SplineIKConstraint_bulge_smooth;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_PivotConstraint_head_tail;
extern PropertyRNA &rna_PivotConstraint_use_bbone_shape;
extern PropertyRNA &rna_PivotConstraint_target;
extern PropertyRNA &rna_PivotConstraint_subtarget;
extern PropertyRNA &rna_PivotConstraint_use_relative_location;
extern PropertyRNA &rna_PivotConstraint_offset;
extern PropertyRNA &rna_PivotConstraint_rotation_range;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_FollowTrackConstraint_clip;
extern PropertyRNA &rna_FollowTrackConstraint_track;
extern PropertyRNA &rna_FollowTrackConstraint_use_active_clip;
extern PropertyRNA &rna_FollowTrackConstraint_use_3d_position;
extern PropertyRNA &rna_FollowTrackConstraint_object;
extern PropertyRNA &rna_FollowTrackConstraint_camera;
extern PropertyRNA &rna_FollowTrackConstraint_depth_object;
extern PropertyRNA &rna_FollowTrackConstraint_frame_method;
extern PropertyRNA &rna_FollowTrackConstraint_use_undistorted_position;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_CameraSolverConstraint_clip;
extern PropertyRNA &rna_CameraSolverConstraint_use_active_clip;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_ObjectSolverConstraint_clip;
extern PropertyRNA &rna_ObjectSolverConstraint_use_active_clip;
extern PropertyRNA &rna_ObjectSolverConstraint_set_inverse_pending;
extern PropertyRNA &rna_ObjectSolverConstraint_object;
extern PropertyRNA &rna_ObjectSolverConstraint_camera;


extern PropertyRNA &rna_Constraint_rna_properties;
extern PropertyRNA &rna_Constraint_rna_type;
extern PropertyRNA &rna_Constraint_name;
extern PropertyRNA &rna_Constraint_type;
extern PropertyRNA &rna_Constraint_is_override_data;
extern PropertyRNA &rna_Constraint_owner_space;
extern PropertyRNA &rna_Constraint_target_space;
extern PropertyRNA &rna_Constraint_space_object;
extern PropertyRNA &rna_Constraint_space_subtarget;
extern PropertyRNA &rna_Constraint_mute;
extern PropertyRNA &rna_Constraint_enabled;
extern PropertyRNA &rna_Constraint_show_expanded;
extern PropertyRNA &rna_Constraint_is_valid;
extern PropertyRNA &rna_Constraint_active;
extern PropertyRNA &rna_Constraint_influence;
extern PropertyRNA &rna_Constraint_error_location;
extern PropertyRNA &rna_Constraint_error_rotation;

extern PropertyRNA &rna_TransformCacheConstraint_cache_file;
extern PropertyRNA &rna_TransformCacheConstraint_object_path;

static PointerRNA Constraint_rna_properties_get(CollectionPropertyIterator *iter)
{
    PropCollectionGetFunc fn = rna_builtin_properties_get;
    return fn(iter);
}

extern void Constraint_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

    *iter = {};
    iter->parent = *ptr;
    iter->prop = &rna_Constraint_rna_properties;

    PropCollectionBeginFunc fn = rna_builtin_properties_begin;
    fn(iter, ptr);

    if (iter->valid) {
        iter->ptr = Constraint_rna_properties_get(iter);
    }
}

extern void Constraint_rna_properties_next(CollectionPropertyIterator *iter)
{
    PropCollectionNextFunc fn = rna_builtin_properties_next;
    fn(iter);

    if (iter->valid) {
        iter->ptr = Constraint_rna_properties_get(iter);
    }
}

extern void Constraint_rna_properties_end(CollectionPropertyIterator *iter)
{
    PropCollectionEndFunc fn = rna_iterator_listbase_end;
    fn(iter);
}

extern bool Constraint_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
    PropCollectionLookupStringFunc fn = rna_builtin_properties_lookup_string;
    return fn(ptr, key, r_ptr);
}

extern PointerRNA Constraint_rna_type_get(PointerRNA *ptr)
{
    PropPointerGetFunc fn = rna_builtin_type_get;
    return fn(ptr);
}

extern void Constraint_name_get(PointerRNA *ptr, char *value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    strcpy(value, data->name);
}

extern int Constraint_name_length(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return strlen(data->name);
}

extern void Constraint_name_set(PointerRNA *ptr, const char *value)
{
    PropStringSetFunc fn = rna_Constraint_name_set;
    fn(ptr, value);
}

extern int Constraint_type_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (int)(data->type);
}

extern bool Constraint_is_override_data_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return !(((data->flag) & 2048) != 0);
}

extern int Constraint_owner_space_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (int)(data->ownspace);
}

extern void Constraint_owner_space_set(PointerRNA *ptr, int value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
#ifdef __cplusplus
    data->ownspace = (std::remove_reference_t<decltype(data->ownspace)>)value;
#else
    data->ownspace = value;
#endif
}

extern int Constraint_target_space_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (int)(data->tarspace);
}

extern void Constraint_target_space_set(PointerRNA *ptr, int value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
#ifdef __cplusplus
    data->tarspace = (std::remove_reference_t<decltype(data->tarspace)>)value;
#else
    data->tarspace = value;
#endif
}

extern PointerRNA Constraint_space_object_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->space_object);
}

extern void Constraint_space_object_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }
    if (value.data) {
        id_lib_extern((ID *)value.data);
    }
    *(void **)&data->space_object = value.data;
}

extern void Constraint_space_subtarget_get(PointerRNA *ptr, char *value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    strcpy(value, data->space_subtarget);
}

extern int Constraint_space_subtarget_length(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return strlen(data->space_subtarget);
}

extern void Constraint_space_subtarget_set(PointerRNA *ptr, const char *value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    BLI_strncpy_utf8(data->space_subtarget, value, 64);
}

extern bool Constraint_mute_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (((data->flag) & 512) != 0);
}

extern void Constraint_mute_set(PointerRNA *ptr, bool value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    if (value) { data->flag |= 512; }
    else { data->flag &= ~512; }
}

extern bool Constraint_enabled_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return !(((data->flag) & 512) != 0);
}

extern void Constraint_enabled_set(PointerRNA *ptr, bool value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    if (!value) { data->flag |= 512; }
    else { data->flag &= ~512; }
}

extern bool Constraint_show_expanded_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (bool)(data->ui_expand_flag);
}

extern void Constraint_show_expanded_set(PointerRNA *ptr, bool value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
#ifdef __cplusplus
    data->ui_expand_flag = (std::remove_reference_t<decltype(data->ui_expand_flag)>)value;
#else
    data->ui_expand_flag = value;
#endif
}

extern bool Constraint_is_valid_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return !(((data->flag) & 4) != 0);
}

extern bool Constraint_active_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (((data->flag) & 16) != 0);
}

extern void Constraint_active_set(PointerRNA *ptr, bool value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    if (value) { data->flag |= 16; }
    else { data->flag &= ~16; }
}

extern float Constraint_influence_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (float)(data->enforce);
}

extern void Constraint_influence_set(PointerRNA *ptr, float value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
#ifdef __cplusplus
    data->enforce = (std::remove_reference_t<decltype(data->enforce)>)std::clamp(value, 0.0f, 1.0f);
#else
    data->enforce = std::clamp(value, 0.0f, 1.0f);
#endif
}

extern float Constraint_error_location_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (float)(data->lin_error);
}

extern float Constraint_error_rotation_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (float)(data->rot_error);
}

static PointerRNA ConstraintTarget_rna_properties_get(CollectionPropertyIterator *iter)
{
    PropCollectionGetFunc fn = rna_builtin_properties_get;
    return fn(iter);
}

extern void ConstraintTarget_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

    *iter = {};
    iter->parent = *ptr;
    iter->prop = &rna_ConstraintTarget_rna_properties;

    PropCollectionBeginFunc fn = rna_builtin_properties_begin;
    fn(iter, ptr);

    if (iter->valid) {
        iter->ptr = ConstraintTarget_rna_properties_get(iter);
    }
}

extern void ConstraintTarget_rna_properties_next(CollectionPropertyIterator *iter)
{
    PropCollectionNextFunc fn = rna_builtin_properties_next;
    fn(iter);

    if (iter->valid) {
        iter->ptr = ConstraintTarget_rna_properties_get(iter);
    }
}

extern void ConstraintTarget_rna_properties_end(CollectionPropertyIterator *iter)
{
    PropCollectionEndFunc fn = rna_iterator_listbase_end;
    fn(iter);
}

extern bool ConstraintTarget_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
    PropCollectionLookupStringFunc fn = rna_builtin_properties_lookup_string;
    return fn(ptr, key, r_ptr);
}

extern PointerRNA ConstraintTarget_rna_type_get(PointerRNA *ptr)
{
    PropPointerGetFunc fn = rna_builtin_type_get;
    return fn(ptr);
}

extern PointerRNA ConstraintTarget_target_get(PointerRNA *ptr)
{
    bConstraintTarget *data = (bConstraintTarget *)(ptr->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->tar);
}

extern void ConstraintTarget_target_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bConstraintTarget *data = (bConstraintTarget *)(ptr->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }
    if (value.data) {
        id_lib_extern((ID *)value.data);
    }
    *(void **)&data->tar = value.data;
}

extern void ConstraintTarget_subtarget_get(PointerRNA *ptr, char *value)
{
    bConstraintTarget *data = (bConstraintTarget *)(ptr->data);
    strcpy(value, data->subtarget);
}

extern int ConstraintTarget_subtarget_length(PointerRNA *ptr)
{
    bConstraintTarget *data = (bConstraintTarget *)(ptr->data);
    return strlen(data->subtarget);
}

extern void ConstraintTarget_subtarget_set(PointerRNA *ptr, const char *value)
{
    bConstraintTarget *data = (bConstraintTarget *)(ptr->data);
    BLI_strncpy_utf8(data->subtarget, value, 64);
}

static PointerRNA ConstraintTargetBone_rna_properties_get(CollectionPropertyIterator *iter)
{
    PropCollectionGetFunc fn = rna_builtin_properties_get;
    return fn(iter);
}

extern void ConstraintTargetBone_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

    *iter = {};
    iter->parent = *ptr;
    iter->prop = &rna_ConstraintTargetBone_rna_properties;

    PropCollectionBeginFunc fn = rna_builtin_properties_begin;
    fn(iter, ptr);

    if (iter->valid) {
        iter->ptr = ConstraintTargetBone_rna_properties_get(iter);
    }
}

extern void ConstraintTargetBone_rna_properties_next(CollectionPropertyIterator *iter)
{
    PropCollectionNextFunc fn = rna_builtin_properties_next;
    fn(iter);

    if (iter->valid) {
        iter->ptr = ConstraintTargetBone_rna_properties_get(iter);
    }
}

extern void ConstraintTargetBone_rna_properties_end(CollectionPropertyIterator *iter)
{
    PropCollectionEndFunc fn = rna_iterator_listbase_end;
    fn(iter);
}

extern bool ConstraintTargetBone_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
    PropCollectionLookupStringFunc fn = rna_builtin_properties_lookup_string;
    return fn(ptr, key, r_ptr);
}

extern PointerRNA ConstraintTargetBone_rna_type_get(PointerRNA *ptr)
{
    PropPointerGetFunc fn = rna_builtin_type_get;
    return fn(ptr);
}

extern PointerRNA ConstraintTargetBone_target_get(PointerRNA *ptr)
{
    bConstraintTarget *data = (bConstraintTarget *)(ptr->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->tar);
}

extern void ConstraintTargetBone_target_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    PropPointerSetFunc fn = rna_ConstraintTargetBone_target_set;
    fn(ptr, value, reports);
}

extern void ConstraintTargetBone_subtarget_get(PointerRNA *ptr, char *value)
{
    bConstraintTarget *data = (bConstraintTarget *)(ptr->data);
    strcpy(value, data->subtarget);
}

extern int ConstraintTargetBone_subtarget_length(PointerRNA *ptr)
{
    bConstraintTarget *data = (bConstraintTarget *)(ptr->data);
    return strlen(data->subtarget);
}

extern void ConstraintTargetBone_subtarget_set(PointerRNA *ptr, const char *value)
{
    bConstraintTarget *data = (bConstraintTarget *)(ptr->data);
    BLI_strncpy_utf8(data->subtarget, value, 64);
}

extern float ConstraintTargetBone_weight_get(PointerRNA *ptr)
{
    bConstraintTarget *data = (bConstraintTarget *)(ptr->data);
    return (float)(data->weight);
}

extern void ConstraintTargetBone_weight_set(PointerRNA *ptr, float value)
{
    bConstraintTarget *data = (bConstraintTarget *)(ptr->data);
#ifdef __cplusplus
    data->weight = (std::remove_reference_t<decltype(data->weight)>)std::clamp(value, 0.0f, 1.0f);
#else
    data->weight = std::clamp(value, 0.0f, 1.0f);
#endif
}

extern PointerRNA ChildOfConstraint_target_get(PointerRNA *ptr)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->tar);
}

extern void ChildOfConstraint_target_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }
    if (value.data) {
        id_lib_extern((ID *)value.data);
    }
    *(void **)&data->tar = value.data;
}

extern void ChildOfConstraint_subtarget_get(PointerRNA *ptr, char *value)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    strcpy(value, data->subtarget);
}

extern int ChildOfConstraint_subtarget_length(PointerRNA *ptr)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    return strlen(data->subtarget);
}

extern void ChildOfConstraint_subtarget_set(PointerRNA *ptr, const char *value)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    BLI_strncpy_utf8(data->subtarget, value, 64);
}

extern bool ChildOfConstraint_use_location_x_get(PointerRNA *ptr)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 1) != 0);
}

extern void ChildOfConstraint_use_location_x_set(PointerRNA *ptr, bool value)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 1; }
    else { data->flag &= ~1; }
}

extern bool ChildOfConstraint_use_location_y_get(PointerRNA *ptr)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 2) != 0);
}

extern void ChildOfConstraint_use_location_y_set(PointerRNA *ptr, bool value)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 2; }
    else { data->flag &= ~2; }
}

extern bool ChildOfConstraint_use_location_z_get(PointerRNA *ptr)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 4) != 0);
}

extern void ChildOfConstraint_use_location_z_set(PointerRNA *ptr, bool value)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 4; }
    else { data->flag &= ~4; }
}

extern bool ChildOfConstraint_use_rotation_x_get(PointerRNA *ptr)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 8) != 0);
}

extern void ChildOfConstraint_use_rotation_x_set(PointerRNA *ptr, bool value)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 8; }
    else { data->flag &= ~8; }
}

extern bool ChildOfConstraint_use_rotation_y_get(PointerRNA *ptr)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 16) != 0);
}

extern void ChildOfConstraint_use_rotation_y_set(PointerRNA *ptr, bool value)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 16; }
    else { data->flag &= ~16; }
}

extern bool ChildOfConstraint_use_rotation_z_get(PointerRNA *ptr)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 32) != 0);
}

extern void ChildOfConstraint_use_rotation_z_set(PointerRNA *ptr, bool value)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 32; }
    else { data->flag &= ~32; }
}

extern bool ChildOfConstraint_use_scale_x_get(PointerRNA *ptr)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 64) != 0);
}

extern void ChildOfConstraint_use_scale_x_set(PointerRNA *ptr, bool value)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 64; }
    else { data->flag &= ~64; }
}

extern bool ChildOfConstraint_use_scale_y_get(PointerRNA *ptr)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 128) != 0);
}

extern void ChildOfConstraint_use_scale_y_set(PointerRNA *ptr, bool value)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 128; }
    else { data->flag &= ~128; }
}

extern bool ChildOfConstraint_use_scale_z_get(PointerRNA *ptr)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 256) != 0);
}

extern void ChildOfConstraint_use_scale_z_set(PointerRNA *ptr, bool value)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 256; }
    else { data->flag &= ~256; }
}

extern bool ChildOfConstraint_set_inverse_pending_get(PointerRNA *ptr)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 512) != 0);
}

extern void ChildOfConstraint_set_inverse_pending_set(PointerRNA *ptr, bool value)
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 512; }
    else { data->flag &= ~512; }
}

extern void ChildOfConstraint_inverse_matrix_get(PointerRNA *ptr, float values[16])
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    unsigned int i;

    for (i = 0; i < 16; i++) {
        values[i] = (float)(((float *)data->invmat)[i]);
    }
}

extern void ChildOfConstraint_inverse_matrix_set(PointerRNA *ptr, const float values[16])
{
    bChildOfConstraint *data = (bChildOfConstraint *)(((bConstraint *)ptr->data)->data);
    unsigned int i;

    for (i = 0; i < 16; i++) {
        ((float *)data->invmat)[i] = values[i];
    }
}

static PointerRNA ArmatureConstraint_targets_get(CollectionPropertyIterator *iter)
{
    return RNA_pointer_create_with_parent(iter->parent, &RNA_ConstraintTargetBone, rna_iterator_listbase_get(iter));
}

extern void ArmatureConstraint_targets_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{
    bArmatureConstraint *data = (bArmatureConstraint *)(((bConstraint *)ptr->data)->data);

    *iter = {};
    iter->parent = *ptr;
    iter->prop = &rna_ArmatureConstraint_targets;

    rna_iterator_listbase_begin(iter, ptr, &data->targets, nullptr);

    if (iter->valid) {
        iter->ptr = ArmatureConstraint_targets_get(iter);
    }
}

extern void ArmatureConstraint_targets_next(CollectionPropertyIterator *iter)
{
    PropCollectionNextFunc fn = rna_iterator_listbase_next;
    fn(iter);

    if (iter->valid) {
        iter->ptr = ArmatureConstraint_targets_get(iter);
    }
}

extern void ArmatureConstraint_targets_end(CollectionPropertyIterator *iter)
{
    PropCollectionEndFunc fn = rna_iterator_listbase_end;
    fn(iter);
}

extern bool ArmatureConstraint_targets_lookup_int(PointerRNA *ptr, int index, PointerRNA *r_ptr)
{
    bool found = false;
    CollectionPropertyIterator iter;

    ArmatureConstraint_targets_begin(&iter, ptr);

    if (iter.valid) {
        ListBaseIterator *internal = &iter.internal.listbase;
        if (internal->skip) {
            while (index-- > 0 && iter.valid) {
                rna_iterator_listbase_next(&iter);
            }
            found = (index == -1 && iter.valid);
        }
        else {
            while (index-- > 0 && internal->link) {
                internal->link = internal->link->next;
            }
            found = (index == -1 && internal->link);
        }
        if (found) { *r_ptr = ArmatureConstraint_targets_get(&iter); }
    }

    ArmatureConstraint_targets_end(&iter);

    return found;
}

extern bool ArmatureConstraint_use_deform_preserve_volume_get(PointerRNA *ptr)
{
    bArmatureConstraint *data = (bArmatureConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 1) != 0);
}

extern void ArmatureConstraint_use_deform_preserve_volume_set(PointerRNA *ptr, bool value)
{
    bArmatureConstraint *data = (bArmatureConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 1; }
    else { data->flag &= ~1; }
}

extern bool ArmatureConstraint_use_bone_envelopes_get(PointerRNA *ptr)
{
    bArmatureConstraint *data = (bArmatureConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 2) != 0);
}

extern void ArmatureConstraint_use_bone_envelopes_set(PointerRNA *ptr, bool value)
{
    bArmatureConstraint *data = (bArmatureConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 2; }
    else { data->flag &= ~2; }
}

extern bool ArmatureConstraint_use_current_location_get(PointerRNA *ptr)
{
    bArmatureConstraint *data = (bArmatureConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 4) != 0);
}

extern void ArmatureConstraint_use_current_location_set(PointerRNA *ptr, bool value)
{
    bArmatureConstraint *data = (bArmatureConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 4; }
    else { data->flag &= ~4; }
}

static PointerRNA ArmatureConstraintTargets_rna_properties_get(CollectionPropertyIterator *iter)
{
    PropCollectionGetFunc fn = rna_builtin_properties_get;
    return fn(iter);
}

extern void ArmatureConstraintTargets_rna_properties_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

    *iter = {};
    iter->parent = *ptr;
    iter->prop = &rna_ArmatureConstraintTargets_rna_properties;

    PropCollectionBeginFunc fn = rna_builtin_properties_begin;
    fn(iter, ptr);

    if (iter->valid) {
        iter->ptr = ArmatureConstraintTargets_rna_properties_get(iter);
    }
}

extern void ArmatureConstraintTargets_rna_properties_next(CollectionPropertyIterator *iter)
{
    PropCollectionNextFunc fn = rna_builtin_properties_next;
    fn(iter);

    if (iter->valid) {
        iter->ptr = ArmatureConstraintTargets_rna_properties_get(iter);
    }
}

extern void ArmatureConstraintTargets_rna_properties_end(CollectionPropertyIterator *iter)
{
    PropCollectionEndFunc fn = rna_iterator_listbase_end;
    fn(iter);
}

extern bool ArmatureConstraintTargets_rna_properties_lookup_string(PointerRNA *ptr, const char *key, PointerRNA *r_ptr)
{
    PropCollectionLookupStringFunc fn = rna_builtin_properties_lookup_string;
    return fn(ptr, key, r_ptr);
}

extern PointerRNA ArmatureConstraintTargets_rna_type_get(PointerRNA *ptr)
{
    PropPointerGetFunc fn = rna_builtin_type_get;
    return fn(ptr);
}

extern float StretchToConstraint_head_tail_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (float)(data->headtail);
}

extern void StretchToConstraint_head_tail_set(PointerRNA *ptr, float value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
#ifdef __cplusplus
    data->headtail = (std::remove_reference_t<decltype(data->headtail)>)std::clamp(value, 0.0f, 1.0f);
#else
    data->headtail = std::clamp(value, 0.0f, 1.0f);
#endif
}

extern bool StretchToConstraint_use_bbone_shape_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (((data->flag) & 1024) != 0);
}

extern void StretchToConstraint_use_bbone_shape_set(PointerRNA *ptr, bool value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    if (value) { data->flag |= 1024; }
    else { data->flag &= ~1024; }
}

extern PointerRNA StretchToConstraint_target_get(PointerRNA *ptr)
{
    bStretchToConstraint *data = (bStretchToConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->tar);
}

extern void StretchToConstraint_target_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bStretchToConstraint *data = (bStretchToConstraint *)(((bConstraint *)ptr->data)->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }
    if (value.data) {
        id_lib_extern((ID *)value.data);
    }
    *(void **)&data->tar = value.data;
}

extern void StretchToConstraint_subtarget_get(PointerRNA *ptr, char *value)
{
    bStretchToConstraint *data = (bStretchToConstraint *)(((bConstraint *)ptr->data)->data);
    strcpy(value, data->subtarget);
}

extern int StretchToConstraint_subtarget_length(PointerRNA *ptr)
{
    bStretchToConstraint *data = (bStretchToConstraint *)(((bConstraint *)ptr->data)->data);
    return strlen(data->subtarget);
}

extern void StretchToConstraint_subtarget_set(PointerRNA *ptr, const char *value)
{
    bStretchToConstraint *data = (bStretchToConstraint *)(((bConstraint *)ptr->data)->data);
    BLI_strncpy_utf8(data->subtarget, value, 64);
}

extern int StretchToConstraint_volume_get(PointerRNA *ptr)
{
    bStretchToConstraint *data = (bStretchToConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->volmode);
}

extern void StretchToConstraint_volume_set(PointerRNA *ptr, int value)
{
    bStretchToConstraint *data = (bStretchToConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->volmode = (std::remove_reference_t<decltype(data->volmode)>)value;
#else
    data->volmode = value;
#endif
}

extern int StretchToConstraint_keep_axis_get(PointerRNA *ptr)
{
    bStretchToConstraint *data = (bStretchToConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->plane);
}

extern void StretchToConstraint_keep_axis_set(PointerRNA *ptr, int value)
{
    bStretchToConstraint *data = (bStretchToConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->plane = (std::remove_reference_t<decltype(data->plane)>)value;
#else
    data->plane = value;
#endif
}

extern float StretchToConstraint_rest_length_get(PointerRNA *ptr)
{
    bStretchToConstraint *data = (bStretchToConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->orglength);
}

extern void StretchToConstraint_rest_length_set(PointerRNA *ptr, float value)
{
    bStretchToConstraint *data = (bStretchToConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->orglength = (std::remove_reference_t<decltype(data->orglength)>)std::clamp(value, 0.0f, 1000.0f);
#else
    data->orglength = std::clamp(value, 0.0f, 1000.0f);
#endif
}

extern float StretchToConstraint_bulge_get(PointerRNA *ptr)
{
    bStretchToConstraint *data = (bStretchToConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->bulge);
}

extern void StretchToConstraint_bulge_set(PointerRNA *ptr, float value)
{
    bStretchToConstraint *data = (bStretchToConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->bulge = (std::remove_reference_t<decltype(data->bulge)>)std::clamp(value, 0.0f, 100.0f);
#else
    data->bulge = std::clamp(value, 0.0f, 100.0f);
#endif
}

extern bool StretchToConstraint_use_bulge_min_get(PointerRNA *ptr)
{
    bStretchToConstraint *data = (bStretchToConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 1) != 0);
}

extern void StretchToConstraint_use_bulge_min_set(PointerRNA *ptr, bool value)
{
    bStretchToConstraint *data = (bStretchToConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 1; }
    else { data->flag &= ~1; }
}

extern bool StretchToConstraint_use_bulge_max_get(PointerRNA *ptr)
{
    bStretchToConstraint *data = (bStretchToConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 2) != 0);
}

extern void StretchToConstraint_use_bulge_max_set(PointerRNA *ptr, bool value)
{
    bStretchToConstraint *data = (bStretchToConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 2; }
    else { data->flag &= ~2; }
}

extern float StretchToConstraint_bulge_min_get(PointerRNA *ptr)
{
    bStretchToConstraint *data = (bStretchToConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->bulge_min);
}

extern void StretchToConstraint_bulge_min_set(PointerRNA *ptr, float value)
{
    bStretchToConstraint *data = (bStretchToConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->bulge_min = (std::remove_reference_t<decltype(data->bulge_min)>)std::clamp(value, 0.0f, 1.0f);
#else
    data->bulge_min = std::clamp(value, 0.0f, 1.0f);
#endif
}

extern float StretchToConstraint_bulge_max_get(PointerRNA *ptr)
{
    bStretchToConstraint *data = (bStretchToConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->bulge_max);
}

extern void StretchToConstraint_bulge_max_set(PointerRNA *ptr, float value)
{
    bStretchToConstraint *data = (bStretchToConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->bulge_max = (std::remove_reference_t<decltype(data->bulge_max)>)std::clamp(value, 1.0f, 100.0f);
#else
    data->bulge_max = std::clamp(value, 1.0f, 100.0f);
#endif
}

extern float StretchToConstraint_bulge_smooth_get(PointerRNA *ptr)
{
    bStretchToConstraint *data = (bStretchToConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->bulge_smooth);
}

extern void StretchToConstraint_bulge_smooth_set(PointerRNA *ptr, float value)
{
    bStretchToConstraint *data = (bStretchToConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->bulge_smooth = (std::remove_reference_t<decltype(data->bulge_smooth)>)std::clamp(value, 0.0f, 1.0f);
#else
    data->bulge_smooth = std::clamp(value, 0.0f, 1.0f);
#endif
}

extern PointerRNA FollowPathConstraint_target_get(PointerRNA *ptr)
{
    bFollowPathConstraint *data = (bFollowPathConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->tar);
}

extern void FollowPathConstraint_target_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bFollowPathConstraint *data = (bFollowPathConstraint *)(((bConstraint *)ptr->data)->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }
    if (value.data) {
        id_lib_extern((ID *)value.data);
    }
    *(void **)&data->tar = value.data;
}

extern float FollowPathConstraint_offset_get(PointerRNA *ptr)
{
    bFollowPathConstraint *data = (bFollowPathConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->offset);
}

extern void FollowPathConstraint_offset_set(PointerRNA *ptr, float value)
{
    bFollowPathConstraint *data = (bFollowPathConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->offset = (std::remove_reference_t<decltype(data->offset)>)std::clamp(value, -1048574.0f, 1048574.0f);
#else
    data->offset = std::clamp(value, -1048574.0f, 1048574.0f);
#endif
}

extern float FollowPathConstraint_offset_factor_get(PointerRNA *ptr)
{
    bFollowPathConstraint *data = (bFollowPathConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->offset_fac);
}

extern void FollowPathConstraint_offset_factor_set(PointerRNA *ptr, float value)
{
    bFollowPathConstraint *data = (bFollowPathConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->offset_fac = (std::remove_reference_t<decltype(data->offset_fac)>)value;
#else
    data->offset_fac = value;
#endif
}

extern int FollowPathConstraint_forward_axis_get(PointerRNA *ptr)
{
    bFollowPathConstraint *data = (bFollowPathConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->trackflag);
}

extern void FollowPathConstraint_forward_axis_set(PointerRNA *ptr, int value)
{
    bFollowPathConstraint *data = (bFollowPathConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->trackflag = (std::remove_reference_t<decltype(data->trackflag)>)value;
#else
    data->trackflag = value;
#endif
}

extern int FollowPathConstraint_up_axis_get(PointerRNA *ptr)
{
    bFollowPathConstraint *data = (bFollowPathConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->upflag);
}

extern void FollowPathConstraint_up_axis_set(PointerRNA *ptr, int value)
{
    bFollowPathConstraint *data = (bFollowPathConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->upflag = (std::remove_reference_t<decltype(data->upflag)>)value;
#else
    data->upflag = value;
#endif
}

extern bool FollowPathConstraint_use_curve_follow_get(PointerRNA *ptr)
{
    bFollowPathConstraint *data = (bFollowPathConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->followflag) & 1) != 0);
}

extern void FollowPathConstraint_use_curve_follow_set(PointerRNA *ptr, bool value)
{
    bFollowPathConstraint *data = (bFollowPathConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->followflag |= 1; }
    else { data->followflag &= ~1; }
}

extern bool FollowPathConstraint_use_fixed_location_get(PointerRNA *ptr)
{
    bFollowPathConstraint *data = (bFollowPathConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->followflag) & 2) != 0);
}

extern void FollowPathConstraint_use_fixed_location_set(PointerRNA *ptr, bool value)
{
    bFollowPathConstraint *data = (bFollowPathConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->followflag |= 2; }
    else { data->followflag &= ~2; }
}

extern bool FollowPathConstraint_use_curve_radius_get(PointerRNA *ptr)
{
    bFollowPathConstraint *data = (bFollowPathConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->followflag) & 4) != 0);
}

extern void FollowPathConstraint_use_curve_radius_set(PointerRNA *ptr, bool value)
{
    bFollowPathConstraint *data = (bFollowPathConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->followflag |= 4; }
    else { data->followflag &= ~4; }
}

extern float LockedTrackConstraint_head_tail_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (float)(data->headtail);
}

extern void LockedTrackConstraint_head_tail_set(PointerRNA *ptr, float value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
#ifdef __cplusplus
    data->headtail = (std::remove_reference_t<decltype(data->headtail)>)std::clamp(value, 0.0f, 1.0f);
#else
    data->headtail = std::clamp(value, 0.0f, 1.0f);
#endif
}

extern bool LockedTrackConstraint_use_bbone_shape_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (((data->flag) & 1024) != 0);
}

extern void LockedTrackConstraint_use_bbone_shape_set(PointerRNA *ptr, bool value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    if (value) { data->flag |= 1024; }
    else { data->flag &= ~1024; }
}

extern PointerRNA LockedTrackConstraint_target_get(PointerRNA *ptr)
{
    bLockTrackConstraint *data = (bLockTrackConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->tar);
}

extern void LockedTrackConstraint_target_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bLockTrackConstraint *data = (bLockTrackConstraint *)(((bConstraint *)ptr->data)->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }
    if (value.data) {
        id_lib_extern((ID *)value.data);
    }
    *(void **)&data->tar = value.data;
}

extern void LockedTrackConstraint_subtarget_get(PointerRNA *ptr, char *value)
{
    bLockTrackConstraint *data = (bLockTrackConstraint *)(((bConstraint *)ptr->data)->data);
    strcpy(value, data->subtarget);
}

extern int LockedTrackConstraint_subtarget_length(PointerRNA *ptr)
{
    bLockTrackConstraint *data = (bLockTrackConstraint *)(((bConstraint *)ptr->data)->data);
    return strlen(data->subtarget);
}

extern void LockedTrackConstraint_subtarget_set(PointerRNA *ptr, const char *value)
{
    bLockTrackConstraint *data = (bLockTrackConstraint *)(((bConstraint *)ptr->data)->data);
    BLI_strncpy_utf8(data->subtarget, value, 64);
}

extern int LockedTrackConstraint_track_axis_get(PointerRNA *ptr)
{
    bLockTrackConstraint *data = (bLockTrackConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->trackflag);
}

extern void LockedTrackConstraint_track_axis_set(PointerRNA *ptr, int value)
{
    bLockTrackConstraint *data = (bLockTrackConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->trackflag = (std::remove_reference_t<decltype(data->trackflag)>)value;
#else
    data->trackflag = value;
#endif
}

extern int LockedTrackConstraint_lock_axis_get(PointerRNA *ptr)
{
    bLockTrackConstraint *data = (bLockTrackConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->lockflag);
}

extern void LockedTrackConstraint_lock_axis_set(PointerRNA *ptr, int value)
{
    bLockTrackConstraint *data = (bLockTrackConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->lockflag = (std::remove_reference_t<decltype(data->lockflag)>)value;
#else
    data->lockflag = value;
#endif
}

extern PointerRNA ActionConstraint_target_get(PointerRNA *ptr)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->tar);
}

extern void ActionConstraint_target_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }
    if (value.data) {
        id_lib_extern((ID *)value.data);
    }
    *(void **)&data->tar = value.data;
}

extern void ActionConstraint_subtarget_get(PointerRNA *ptr, char *value)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
    strcpy(value, data->subtarget);
}

extern int ActionConstraint_subtarget_length(PointerRNA *ptr)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
    return strlen(data->subtarget);
}

extern void ActionConstraint_subtarget_set(PointerRNA *ptr, const char *value)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
    BLI_strncpy_utf8(data->subtarget, value, 64);
}

extern int ActionConstraint_mix_mode_get(PointerRNA *ptr)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->mix_mode);
}

extern void ActionConstraint_mix_mode_set(PointerRNA *ptr, int value)
{
    PropEnumSetFunc fn = rna_ActionConstraint_mix_mode_set;
    fn(ptr, value);
}

extern int ActionConstraint_transform_channel_get(PointerRNA *ptr)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->type);
}

extern void ActionConstraint_transform_channel_set(PointerRNA *ptr, int value)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->type = (std::remove_reference_t<decltype(data->type)>)value;
#else
    data->type = value;
#endif
}

extern PointerRNA ActionConstraint_action_get(PointerRNA *ptr)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Action, data->act);
}

extern void ActionConstraint_action_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    PropPointerSetFunc fn = rna_ActionConstraint_action_set;
    fn(ptr, value, reports);
}

extern int ActionConstraint_action_slot_handle_get(PointerRNA *ptr)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->action_slot_handle);
}

extern void ActionConstraint_action_slot_handle_set(PointerRNA *ptr, int value)
{
    PropIntSetFunc fn = rna_ActionConstraint_action_slot_handle_set;
    fn(ptr, value);
}

extern void ActionConstraint_last_slot_identifier_get(PointerRNA *ptr, char *value)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
    strcpy(value, data->last_slot_identifier);
}

extern int ActionConstraint_last_slot_identifier_length(PointerRNA *ptr)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
    return strlen(data->last_slot_identifier);
}

extern void ActionConstraint_last_slot_identifier_set(PointerRNA *ptr, const char *value)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
    BLI_strncpy_utf8(data->last_slot_identifier, value, 66);
}

extern PointerRNA ActionConstraint_action_slot_get(PointerRNA *ptr)
{
    PropPointerGetFunc fn = rna_ActionConstraint_action_slot_get;
    return fn(ptr);
}

extern void ActionConstraint_action_slot_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    PropPointerSetFunc fn = rna_ActionConstraint_action_slot_set;
    fn(ptr, value, reports);
}

static PointerRNA ActionConstraint_action_suitable_slots_get(CollectionPropertyIterator *iter)
{
    return RNA_pointer_create_with_parent(iter->parent, &RNA_ActionSlot, rna_iterator_array_dereference_get(iter));
}

extern void ActionConstraint_action_suitable_slots_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{

    *iter = {};
    iter->parent = *ptr;
    iter->prop = &rna_ActionConstraint_action_suitable_slots;

    PropCollectionBeginFunc fn = rna_iterator_ActionConstraint_action_suitable_slots_begin;
    fn(iter, ptr);

    if (iter->valid) {
        iter->ptr = ActionConstraint_action_suitable_slots_get(iter);
    }
}

extern void ActionConstraint_action_suitable_slots_next(CollectionPropertyIterator *iter)
{
    PropCollectionNextFunc fn = rna_iterator_array_next;
    fn(iter);

    if (iter->valid) {
        iter->ptr = ActionConstraint_action_suitable_slots_get(iter);
    }
}

extern void ActionConstraint_action_suitable_slots_end(CollectionPropertyIterator *iter)
{
    PropCollectionEndFunc fn = rna_iterator_array_end;
    fn(iter);
}

extern bool ActionConstraint_use_bone_object_action_get(PointerRNA *ptr)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 1) != 0);
}

extern void ActionConstraint_use_bone_object_action_set(PointerRNA *ptr, bool value)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 1; }
    else { data->flag &= ~1; }
}

extern int ActionConstraint_frame_start_get(PointerRNA *ptr)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->start);
}

extern void ActionConstraint_frame_start_set(PointerRNA *ptr, int value)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->start = (std::remove_reference_t<decltype(data->start)>)std::clamp(value, -1048574, 1048574);
#else
    data->start = std::clamp(value, -1048574, 1048574);
#endif
}

extern int ActionConstraint_frame_end_get(PointerRNA *ptr)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->end);
}

extern void ActionConstraint_frame_end_set(PointerRNA *ptr, int value)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->end = (std::remove_reference_t<decltype(data->end)>)std::clamp(value, -1048574, 1048574);
#else
    data->end = std::clamp(value, -1048574, 1048574);
#endif
}

extern float ActionConstraint_max_get(PointerRNA *ptr)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->max);
}

extern void ActionConstraint_max_set(PointerRNA *ptr, float value)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
    float prop_clamp_min = -FLT_MAX, prop_clamp_max = FLT_MAX, prop_soft_min, prop_soft_max;
    rna_ActionConstraint_minmax_range(ptr, &prop_clamp_min, &prop_clamp_max, &prop_soft_min, &prop_soft_max);
#ifdef __cplusplus
    data->max = (std::remove_reference_t<decltype(data->max)>)std::clamp(value, prop_clamp_min, prop_clamp_max);
#else
    data->max = std::clamp(value, prop_clamp_min, prop_clamp_max);
#endif
}

extern float ActionConstraint_min_get(PointerRNA *ptr)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->min);
}

extern void ActionConstraint_min_set(PointerRNA *ptr, float value)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
    float prop_clamp_min = -FLT_MAX, prop_clamp_max = FLT_MAX, prop_soft_min, prop_soft_max;
    rna_ActionConstraint_minmax_range(ptr, &prop_clamp_min, &prop_clamp_max, &prop_soft_min, &prop_soft_max);
#ifdef __cplusplus
    data->min = (std::remove_reference_t<decltype(data->min)>)std::clamp(value, prop_clamp_min, prop_clamp_max);
#else
    data->min = std::clamp(value, prop_clamp_min, prop_clamp_max);
#endif
}

extern float ActionConstraint_eval_time_get(PointerRNA *ptr)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->eval_time);
}

extern void ActionConstraint_eval_time_set(PointerRNA *ptr, float value)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->eval_time = (std::remove_reference_t<decltype(data->eval_time)>)std::clamp(value, 0.0f, 1.0f);
#else
    data->eval_time = std::clamp(value, 0.0f, 1.0f);
#endif
}

extern bool ActionConstraint_use_eval_time_get(PointerRNA *ptr)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 2) != 0);
}

extern void ActionConstraint_use_eval_time_set(PointerRNA *ptr, bool value)
{
    bActionConstraint *data = (bActionConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 2; }
    else { data->flag &= ~2; }
}

extern PointerRNA CopyScaleConstraint_target_get(PointerRNA *ptr)
{
    bSizeLikeConstraint *data = (bSizeLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->tar);
}

extern void CopyScaleConstraint_target_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bSizeLikeConstraint *data = (bSizeLikeConstraint *)(((bConstraint *)ptr->data)->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }
    if (value.data) {
        id_lib_extern((ID *)value.data);
    }
    *(void **)&data->tar = value.data;
}

extern void CopyScaleConstraint_subtarget_get(PointerRNA *ptr, char *value)
{
    bSizeLikeConstraint *data = (bSizeLikeConstraint *)(((bConstraint *)ptr->data)->data);
    strcpy(value, data->subtarget);
}

extern int CopyScaleConstraint_subtarget_length(PointerRNA *ptr)
{
    bSizeLikeConstraint *data = (bSizeLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return strlen(data->subtarget);
}

extern void CopyScaleConstraint_subtarget_set(PointerRNA *ptr, const char *value)
{
    bSizeLikeConstraint *data = (bSizeLikeConstraint *)(((bConstraint *)ptr->data)->data);
    BLI_strncpy_utf8(data->subtarget, value, 64);
}

extern bool CopyScaleConstraint_use_x_get(PointerRNA *ptr)
{
    bSizeLikeConstraint *data = (bSizeLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 1) != 0);
}

extern void CopyScaleConstraint_use_x_set(PointerRNA *ptr, bool value)
{
    bSizeLikeConstraint *data = (bSizeLikeConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 1; }
    else { data->flag &= ~1; }
}

extern bool CopyScaleConstraint_use_y_get(PointerRNA *ptr)
{
    bSizeLikeConstraint *data = (bSizeLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 2) != 0);
}

extern void CopyScaleConstraint_use_y_set(PointerRNA *ptr, bool value)
{
    bSizeLikeConstraint *data = (bSizeLikeConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 2; }
    else { data->flag &= ~2; }
}

extern bool CopyScaleConstraint_use_z_get(PointerRNA *ptr)
{
    bSizeLikeConstraint *data = (bSizeLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 4) != 0);
}

extern void CopyScaleConstraint_use_z_set(PointerRNA *ptr, bool value)
{
    bSizeLikeConstraint *data = (bSizeLikeConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 4; }
    else { data->flag &= ~4; }
}

extern float CopyScaleConstraint_power_get(PointerRNA *ptr)
{
    bSizeLikeConstraint *data = (bSizeLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->power);
}

extern void CopyScaleConstraint_power_set(PointerRNA *ptr, float value)
{
    bSizeLikeConstraint *data = (bSizeLikeConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->power = (std::remove_reference_t<decltype(data->power)>)value;
#else
    data->power = value;
#endif
}

extern bool CopyScaleConstraint_use_make_uniform_get(PointerRNA *ptr)
{
    bSizeLikeConstraint *data = (bSizeLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 32) != 0);
}

extern void CopyScaleConstraint_use_make_uniform_set(PointerRNA *ptr, bool value)
{
    bSizeLikeConstraint *data = (bSizeLikeConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 32; }
    else { data->flag &= ~32; }
}

extern bool CopyScaleConstraint_use_offset_get(PointerRNA *ptr)
{
    bSizeLikeConstraint *data = (bSizeLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 8) != 0);
}

extern void CopyScaleConstraint_use_offset_set(PointerRNA *ptr, bool value)
{
    bSizeLikeConstraint *data = (bSizeLikeConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 8; }
    else { data->flag &= ~8; }
}

extern bool CopyScaleConstraint_use_add_get(PointerRNA *ptr)
{
    bSizeLikeConstraint *data = (bSizeLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return !(((data->flag) & 16) != 0);
}

extern void CopyScaleConstraint_use_add_set(PointerRNA *ptr, bool value)
{
    bSizeLikeConstraint *data = (bSizeLikeConstraint *)(((bConstraint *)ptr->data)->data);
    if (!value) { data->flag |= 16; }
    else { data->flag &= ~16; }
}

extern int MaintainVolumeConstraint_free_axis_get(PointerRNA *ptr)
{
    bSameVolumeConstraint *data = (bSameVolumeConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->free_axis);
}

extern void MaintainVolumeConstraint_free_axis_set(PointerRNA *ptr, int value)
{
    bSameVolumeConstraint *data = (bSameVolumeConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->free_axis = (std::remove_reference_t<decltype(data->free_axis)>)value;
#else
    data->free_axis = value;
#endif
}

extern int MaintainVolumeConstraint_mode_get(PointerRNA *ptr)
{
    bSameVolumeConstraint *data = (bSameVolumeConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->mode);
}

extern void MaintainVolumeConstraint_mode_set(PointerRNA *ptr, int value)
{
    bSameVolumeConstraint *data = (bSameVolumeConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->mode = (std::remove_reference_t<decltype(data->mode)>)value;
#else
    data->mode = value;
#endif
}

extern float MaintainVolumeConstraint_volume_get(PointerRNA *ptr)
{
    bSameVolumeConstraint *data = (bSameVolumeConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->volume);
}

extern void MaintainVolumeConstraint_volume_set(PointerRNA *ptr, float value)
{
    bSameVolumeConstraint *data = (bSameVolumeConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->volume = (std::remove_reference_t<decltype(data->volume)>)std::clamp(value, 0.0f, FLT_MAX);
#else
    data->volume = std::clamp(value, 0.0f, FLT_MAX);
#endif
}

extern float CopyLocationConstraint_head_tail_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (float)(data->headtail);
}

extern void CopyLocationConstraint_head_tail_set(PointerRNA *ptr, float value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
#ifdef __cplusplus
    data->headtail = (std::remove_reference_t<decltype(data->headtail)>)std::clamp(value, 0.0f, 1.0f);
#else
    data->headtail = std::clamp(value, 0.0f, 1.0f);
#endif
}

extern bool CopyLocationConstraint_use_bbone_shape_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (((data->flag) & 1024) != 0);
}

extern void CopyLocationConstraint_use_bbone_shape_set(PointerRNA *ptr, bool value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    if (value) { data->flag |= 1024; }
    else { data->flag &= ~1024; }
}

extern PointerRNA CopyLocationConstraint_target_get(PointerRNA *ptr)
{
    bLocateLikeConstraint *data = (bLocateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->tar);
}

extern void CopyLocationConstraint_target_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bLocateLikeConstraint *data = (bLocateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }
    if (value.data) {
        id_lib_extern((ID *)value.data);
    }
    *(void **)&data->tar = value.data;
}

extern void CopyLocationConstraint_subtarget_get(PointerRNA *ptr, char *value)
{
    bLocateLikeConstraint *data = (bLocateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    strcpy(value, data->subtarget);
}

extern int CopyLocationConstraint_subtarget_length(PointerRNA *ptr)
{
    bLocateLikeConstraint *data = (bLocateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return strlen(data->subtarget);
}

extern void CopyLocationConstraint_subtarget_set(PointerRNA *ptr, const char *value)
{
    bLocateLikeConstraint *data = (bLocateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    BLI_strncpy_utf8(data->subtarget, value, 64);
}

extern bool CopyLocationConstraint_use_x_get(PointerRNA *ptr)
{
    bLocateLikeConstraint *data = (bLocateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 1) != 0);
}

extern void CopyLocationConstraint_use_x_set(PointerRNA *ptr, bool value)
{
    bLocateLikeConstraint *data = (bLocateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 1; }
    else { data->flag &= ~1; }
}

extern bool CopyLocationConstraint_use_y_get(PointerRNA *ptr)
{
    bLocateLikeConstraint *data = (bLocateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 2) != 0);
}

extern void CopyLocationConstraint_use_y_set(PointerRNA *ptr, bool value)
{
    bLocateLikeConstraint *data = (bLocateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 2; }
    else { data->flag &= ~2; }
}

extern bool CopyLocationConstraint_use_z_get(PointerRNA *ptr)
{
    bLocateLikeConstraint *data = (bLocateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 4) != 0);
}

extern void CopyLocationConstraint_use_z_set(PointerRNA *ptr, bool value)
{
    bLocateLikeConstraint *data = (bLocateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 4; }
    else { data->flag &= ~4; }
}

extern bool CopyLocationConstraint_invert_x_get(PointerRNA *ptr)
{
    bLocateLikeConstraint *data = (bLocateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 16) != 0);
}

extern void CopyLocationConstraint_invert_x_set(PointerRNA *ptr, bool value)
{
    bLocateLikeConstraint *data = (bLocateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 16; }
    else { data->flag &= ~16; }
}

extern bool CopyLocationConstraint_invert_y_get(PointerRNA *ptr)
{
    bLocateLikeConstraint *data = (bLocateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 32) != 0);
}

extern void CopyLocationConstraint_invert_y_set(PointerRNA *ptr, bool value)
{
    bLocateLikeConstraint *data = (bLocateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 32; }
    else { data->flag &= ~32; }
}

extern bool CopyLocationConstraint_invert_z_get(PointerRNA *ptr)
{
    bLocateLikeConstraint *data = (bLocateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 64) != 0);
}

extern void CopyLocationConstraint_invert_z_set(PointerRNA *ptr, bool value)
{
    bLocateLikeConstraint *data = (bLocateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 64; }
    else { data->flag &= ~64; }
}

extern bool CopyLocationConstraint_use_offset_get(PointerRNA *ptr)
{
    bLocateLikeConstraint *data = (bLocateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 128) != 0);
}

extern void CopyLocationConstraint_use_offset_set(PointerRNA *ptr, bool value)
{
    bLocateLikeConstraint *data = (bLocateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 128; }
    else { data->flag &= ~128; }
}

extern PointerRNA CopyRotationConstraint_target_get(PointerRNA *ptr)
{
    bRotateLikeConstraint *data = (bRotateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->tar);
}

extern void CopyRotationConstraint_target_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bRotateLikeConstraint *data = (bRotateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }
    if (value.data) {
        id_lib_extern((ID *)value.data);
    }
    *(void **)&data->tar = value.data;
}

extern void CopyRotationConstraint_subtarget_get(PointerRNA *ptr, char *value)
{
    bRotateLikeConstraint *data = (bRotateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    strcpy(value, data->subtarget);
}

extern int CopyRotationConstraint_subtarget_length(PointerRNA *ptr)
{
    bRotateLikeConstraint *data = (bRotateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return strlen(data->subtarget);
}

extern void CopyRotationConstraint_subtarget_set(PointerRNA *ptr, const char *value)
{
    bRotateLikeConstraint *data = (bRotateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    BLI_strncpy_utf8(data->subtarget, value, 64);
}

extern bool CopyRotationConstraint_use_x_get(PointerRNA *ptr)
{
    bRotateLikeConstraint *data = (bRotateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 1) != 0);
}

extern void CopyRotationConstraint_use_x_set(PointerRNA *ptr, bool value)
{
    bRotateLikeConstraint *data = (bRotateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 1; }
    else { data->flag &= ~1; }
}

extern bool CopyRotationConstraint_use_y_get(PointerRNA *ptr)
{
    bRotateLikeConstraint *data = (bRotateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 2) != 0);
}

extern void CopyRotationConstraint_use_y_set(PointerRNA *ptr, bool value)
{
    bRotateLikeConstraint *data = (bRotateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 2; }
    else { data->flag &= ~2; }
}

extern bool CopyRotationConstraint_use_z_get(PointerRNA *ptr)
{
    bRotateLikeConstraint *data = (bRotateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 4) != 0);
}

extern void CopyRotationConstraint_use_z_set(PointerRNA *ptr, bool value)
{
    bRotateLikeConstraint *data = (bRotateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 4; }
    else { data->flag &= ~4; }
}

extern bool CopyRotationConstraint_invert_x_get(PointerRNA *ptr)
{
    bRotateLikeConstraint *data = (bRotateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 16) != 0);
}

extern void CopyRotationConstraint_invert_x_set(PointerRNA *ptr, bool value)
{
    bRotateLikeConstraint *data = (bRotateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 16; }
    else { data->flag &= ~16; }
}

extern bool CopyRotationConstraint_invert_y_get(PointerRNA *ptr)
{
    bRotateLikeConstraint *data = (bRotateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 32) != 0);
}

extern void CopyRotationConstraint_invert_y_set(PointerRNA *ptr, bool value)
{
    bRotateLikeConstraint *data = (bRotateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 32; }
    else { data->flag &= ~32; }
}

extern bool CopyRotationConstraint_invert_z_get(PointerRNA *ptr)
{
    bRotateLikeConstraint *data = (bRotateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 64) != 0);
}

extern void CopyRotationConstraint_invert_z_set(PointerRNA *ptr, bool value)
{
    bRotateLikeConstraint *data = (bRotateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 64; }
    else { data->flag &= ~64; }
}

extern int CopyRotationConstraint_euler_order_get(PointerRNA *ptr)
{
    bRotateLikeConstraint *data = (bRotateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->euler_order);
}

extern void CopyRotationConstraint_euler_order_set(PointerRNA *ptr, int value)
{
    bRotateLikeConstraint *data = (bRotateLikeConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->euler_order = (std::remove_reference_t<decltype(data->euler_order)>)value;
#else
    data->euler_order = value;
#endif
}

extern int CopyRotationConstraint_mix_mode_get(PointerRNA *ptr)
{
    bRotateLikeConstraint *data = (bRotateLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->mix_mode);
}

extern void CopyRotationConstraint_mix_mode_set(PointerRNA *ptr, int value)
{
    bRotateLikeConstraint *data = (bRotateLikeConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->mix_mode = (std::remove_reference_t<decltype(data->mix_mode)>)value;
#else
    data->mix_mode = value;
#endif
}

extern bool CopyRotationConstraint_use_offset_get(PointerRNA *ptr)
{
    PropBooleanGetFunc fn = rna_Constraint_RotLike_use_offset_get;
    return fn(ptr);
}

extern void CopyRotationConstraint_use_offset_set(PointerRNA *ptr, bool value)
{
    PropBooleanSetFunc fn = rna_Constraint_RotLike_use_offset_set;
    fn(ptr, value);
}

extern float CopyTransformsConstraint_head_tail_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (float)(data->headtail);
}

extern void CopyTransformsConstraint_head_tail_set(PointerRNA *ptr, float value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
#ifdef __cplusplus
    data->headtail = (std::remove_reference_t<decltype(data->headtail)>)std::clamp(value, 0.0f, 1.0f);
#else
    data->headtail = std::clamp(value, 0.0f, 1.0f);
#endif
}

extern bool CopyTransformsConstraint_use_bbone_shape_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (((data->flag) & 1024) != 0);
}

extern void CopyTransformsConstraint_use_bbone_shape_set(PointerRNA *ptr, bool value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    if (value) { data->flag |= 1024; }
    else { data->flag &= ~1024; }
}

extern PointerRNA CopyTransformsConstraint_target_get(PointerRNA *ptr)
{
    bTransLikeConstraint *data = (bTransLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->tar);
}

extern void CopyTransformsConstraint_target_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bTransLikeConstraint *data = (bTransLikeConstraint *)(((bConstraint *)ptr->data)->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }
    if (value.data) {
        id_lib_extern((ID *)value.data);
    }
    *(void **)&data->tar = value.data;
}

extern void CopyTransformsConstraint_subtarget_get(PointerRNA *ptr, char *value)
{
    bTransLikeConstraint *data = (bTransLikeConstraint *)(((bConstraint *)ptr->data)->data);
    strcpy(value, data->subtarget);
}

extern int CopyTransformsConstraint_subtarget_length(PointerRNA *ptr)
{
    bTransLikeConstraint *data = (bTransLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return strlen(data->subtarget);
}

extern void CopyTransformsConstraint_subtarget_set(PointerRNA *ptr, const char *value)
{
    bTransLikeConstraint *data = (bTransLikeConstraint *)(((bConstraint *)ptr->data)->data);
    BLI_strncpy_utf8(data->subtarget, value, 64);
}

extern bool CopyTransformsConstraint_remove_target_shear_get(PointerRNA *ptr)
{
    bTransLikeConstraint *data = (bTransLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 1) != 0);
}

extern void CopyTransformsConstraint_remove_target_shear_set(PointerRNA *ptr, bool value)
{
    bTransLikeConstraint *data = (bTransLikeConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 1; }
    else { data->flag &= ~1; }
}

extern int CopyTransformsConstraint_mix_mode_get(PointerRNA *ptr)
{
    bTransLikeConstraint *data = (bTransLikeConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->mix_mode);
}

extern void CopyTransformsConstraint_mix_mode_set(PointerRNA *ptr, int value)
{
    bTransLikeConstraint *data = (bTransLikeConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->mix_mode = (std::remove_reference_t<decltype(data->mix_mode)>)value;
#else
    data->mix_mode = value;
#endif
}

extern PointerRNA FloorConstraint_target_get(PointerRNA *ptr)
{
    bMinMaxConstraint *data = (bMinMaxConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->tar);
}

extern void FloorConstraint_target_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bMinMaxConstraint *data = (bMinMaxConstraint *)(((bConstraint *)ptr->data)->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }
    if (value.data) {
        id_lib_extern((ID *)value.data);
    }
    *(void **)&data->tar = value.data;
}

extern void FloorConstraint_subtarget_get(PointerRNA *ptr, char *value)
{
    bMinMaxConstraint *data = (bMinMaxConstraint *)(((bConstraint *)ptr->data)->data);
    strcpy(value, data->subtarget);
}

extern int FloorConstraint_subtarget_length(PointerRNA *ptr)
{
    bMinMaxConstraint *data = (bMinMaxConstraint *)(((bConstraint *)ptr->data)->data);
    return strlen(data->subtarget);
}

extern void FloorConstraint_subtarget_set(PointerRNA *ptr, const char *value)
{
    bMinMaxConstraint *data = (bMinMaxConstraint *)(((bConstraint *)ptr->data)->data);
    BLI_strncpy_utf8(data->subtarget, value, 64);
}

extern int FloorConstraint_floor_location_get(PointerRNA *ptr)
{
    bMinMaxConstraint *data = (bMinMaxConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->minmaxflag);
}

extern void FloorConstraint_floor_location_set(PointerRNA *ptr, int value)
{
    bMinMaxConstraint *data = (bMinMaxConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->minmaxflag = (std::remove_reference_t<decltype(data->minmaxflag)>)value;
#else
    data->minmaxflag = value;
#endif
}

extern bool FloorConstraint_use_rotation_get(PointerRNA *ptr)
{
    bMinMaxConstraint *data = (bMinMaxConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 4) != 0);
}

extern void FloorConstraint_use_rotation_set(PointerRNA *ptr, bool value)
{
    bMinMaxConstraint *data = (bMinMaxConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 4; }
    else { data->flag &= ~4; }
}

extern float FloorConstraint_offset_get(PointerRNA *ptr)
{
    bMinMaxConstraint *data = (bMinMaxConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->offset);
}

extern void FloorConstraint_offset_set(PointerRNA *ptr, float value)
{
    bMinMaxConstraint *data = (bMinMaxConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->offset = (std::remove_reference_t<decltype(data->offset)>)value;
#else
    data->offset = value;
#endif
}

extern float TrackToConstraint_head_tail_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (float)(data->headtail);
}

extern void TrackToConstraint_head_tail_set(PointerRNA *ptr, float value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
#ifdef __cplusplus
    data->headtail = (std::remove_reference_t<decltype(data->headtail)>)std::clamp(value, 0.0f, 1.0f);
#else
    data->headtail = std::clamp(value, 0.0f, 1.0f);
#endif
}

extern bool TrackToConstraint_use_bbone_shape_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (((data->flag) & 1024) != 0);
}

extern void TrackToConstraint_use_bbone_shape_set(PointerRNA *ptr, bool value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    if (value) { data->flag |= 1024; }
    else { data->flag &= ~1024; }
}

extern PointerRNA TrackToConstraint_target_get(PointerRNA *ptr)
{
    bTrackToConstraint *data = (bTrackToConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->tar);
}

extern void TrackToConstraint_target_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bTrackToConstraint *data = (bTrackToConstraint *)(((bConstraint *)ptr->data)->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }
    if (value.data) {
        id_lib_extern((ID *)value.data);
    }
    *(void **)&data->tar = value.data;
}

extern void TrackToConstraint_subtarget_get(PointerRNA *ptr, char *value)
{
    bTrackToConstraint *data = (bTrackToConstraint *)(((bConstraint *)ptr->data)->data);
    strcpy(value, data->subtarget);
}

extern int TrackToConstraint_subtarget_length(PointerRNA *ptr)
{
    bTrackToConstraint *data = (bTrackToConstraint *)(((bConstraint *)ptr->data)->data);
    return strlen(data->subtarget);
}

extern void TrackToConstraint_subtarget_set(PointerRNA *ptr, const char *value)
{
    bTrackToConstraint *data = (bTrackToConstraint *)(((bConstraint *)ptr->data)->data);
    BLI_strncpy_utf8(data->subtarget, value, 64);
}

extern int TrackToConstraint_track_axis_get(PointerRNA *ptr)
{
    bTrackToConstraint *data = (bTrackToConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->reserved1);
}

extern void TrackToConstraint_track_axis_set(PointerRNA *ptr, int value)
{
    bTrackToConstraint *data = (bTrackToConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->reserved1 = (std::remove_reference_t<decltype(data->reserved1)>)value;
#else
    data->reserved1 = value;
#endif
}

extern int TrackToConstraint_up_axis_get(PointerRNA *ptr)
{
    bTrackToConstraint *data = (bTrackToConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->reserved2);
}

extern void TrackToConstraint_up_axis_set(PointerRNA *ptr, int value)
{
    bTrackToConstraint *data = (bTrackToConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->reserved2 = (std::remove_reference_t<decltype(data->reserved2)>)value;
#else
    data->reserved2 = value;
#endif
}

extern bool TrackToConstraint_use_target_z_get(PointerRNA *ptr)
{
    bTrackToConstraint *data = (bTrackToConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flags) & 1) != 0);
}

extern void TrackToConstraint_use_target_z_set(PointerRNA *ptr, bool value)
{
    bTrackToConstraint *data = (bTrackToConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flags |= 1; }
    else { data->flags &= ~1; }
}

extern PointerRNA KinematicConstraint_target_get(PointerRNA *ptr)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->tar);
}

extern void KinematicConstraint_target_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }
    if (value.data) {
        id_lib_extern((ID *)value.data);
    }
    *(void **)&data->tar = value.data;
}

extern void KinematicConstraint_subtarget_get(PointerRNA *ptr, char *value)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    strcpy(value, data->subtarget);
}

extern int KinematicConstraint_subtarget_length(PointerRNA *ptr)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    return strlen(data->subtarget);
}

extern void KinematicConstraint_subtarget_set(PointerRNA *ptr, const char *value)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    BLI_strncpy_utf8(data->subtarget, value, 64);
}

extern int KinematicConstraint_iterations_get(PointerRNA *ptr)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->iterations);
}

extern void KinematicConstraint_iterations_set(PointerRNA *ptr, int value)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->iterations = (std::remove_reference_t<decltype(data->iterations)>)std::clamp(value, 0, 10000);
#else
    data->iterations = std::clamp(value, 0, 10000);
#endif
}

extern PointerRNA KinematicConstraint_pole_target_get(PointerRNA *ptr)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->poletar);
}

extern void KinematicConstraint_pole_target_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }
    if (value.data) {
        id_lib_extern((ID *)value.data);
    }
    *(void **)&data->poletar = value.data;
}

extern void KinematicConstraint_pole_subtarget_get(PointerRNA *ptr, char *value)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    strcpy(value, data->polesubtarget);
}

extern int KinematicConstraint_pole_subtarget_length(PointerRNA *ptr)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    return strlen(data->polesubtarget);
}

extern void KinematicConstraint_pole_subtarget_set(PointerRNA *ptr, const char *value)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    BLI_strncpy_utf8(data->polesubtarget, value, 64);
}

extern float KinematicConstraint_pole_angle_get(PointerRNA *ptr)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->poleangle);
}

extern void KinematicConstraint_pole_angle_set(PointerRNA *ptr, float value)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->poleangle = (std::remove_reference_t<decltype(data->poleangle)>)std::clamp(value, -3.1415927410f, 3.1415927410f);
#else
    data->poleangle = std::clamp(value, -3.1415927410f, 3.1415927410f);
#endif
}

extern float KinematicConstraint_weight_get(PointerRNA *ptr)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->weight);
}

extern void KinematicConstraint_weight_set(PointerRNA *ptr, float value)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->weight = (std::remove_reference_t<decltype(data->weight)>)std::clamp(value, 0.0099999998f, 1.0f);
#else
    data->weight = std::clamp(value, 0.0099999998f, 1.0f);
#endif
}

extern float KinematicConstraint_orient_weight_get(PointerRNA *ptr)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->orientweight);
}

extern void KinematicConstraint_orient_weight_set(PointerRNA *ptr, float value)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->orientweight = (std::remove_reference_t<decltype(data->orientweight)>)std::clamp(value, 0.0099999998f, 1.0f);
#else
    data->orientweight = std::clamp(value, 0.0099999998f, 1.0f);
#endif
}

extern int KinematicConstraint_chain_count_get(PointerRNA *ptr)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->rootbone);
}

extern void KinematicConstraint_chain_count_set(PointerRNA *ptr, int value)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->rootbone = (std::remove_reference_t<decltype(data->rootbone)>)std::clamp(value, 0, 255);
#else
    data->rootbone = std::clamp(value, 0, 255);
#endif
}

extern bool KinematicConstraint_use_tail_get(PointerRNA *ptr)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 1) != 0);
}

extern void KinematicConstraint_use_tail_set(PointerRNA *ptr, bool value)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 1; }
    else { data->flag &= ~1; }
}

extern int KinematicConstraint_reference_axis_get(PointerRNA *ptr)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    return ((data->flag) & 16384);
}

extern void KinematicConstraint_reference_axis_set(PointerRNA *ptr, int value)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    data->flag &= ~16384;
    data->flag |= value;
}

extern bool KinematicConstraint_use_location_get(PointerRNA *ptr)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 32) != 0);
}

extern void KinematicConstraint_use_location_set(PointerRNA *ptr, bool value)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 32; }
    else { data->flag &= ~32; }
}

extern bool KinematicConstraint_lock_location_x_get(PointerRNA *ptr)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    return !(((data->flag) & 256) != 0);
}

extern void KinematicConstraint_lock_location_x_set(PointerRNA *ptr, bool value)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    if (!value) { data->flag |= 256; }
    else { data->flag &= ~256; }
}

extern bool KinematicConstraint_lock_location_y_get(PointerRNA *ptr)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    return !(((data->flag) & 512) != 0);
}

extern void KinematicConstraint_lock_location_y_set(PointerRNA *ptr, bool value)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    if (!value) { data->flag |= 512; }
    else { data->flag &= ~512; }
}

extern bool KinematicConstraint_lock_location_z_get(PointerRNA *ptr)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    return !(((data->flag) & 1024) != 0);
}

extern void KinematicConstraint_lock_location_z_set(PointerRNA *ptr, bool value)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    if (!value) { data->flag |= 1024; }
    else { data->flag &= ~1024; }
}

extern bool KinematicConstraint_use_rotation_get(PointerRNA *ptr)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 2) != 0);
}

extern void KinematicConstraint_use_rotation_set(PointerRNA *ptr, bool value)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 2; }
    else { data->flag &= ~2; }
}

extern bool KinematicConstraint_lock_rotation_x_get(PointerRNA *ptr)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    return !(((data->flag) & 2048) != 0);
}

extern void KinematicConstraint_lock_rotation_x_set(PointerRNA *ptr, bool value)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    if (!value) { data->flag |= 2048; }
    else { data->flag &= ~2048; }
}

extern bool KinematicConstraint_lock_rotation_y_get(PointerRNA *ptr)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    return !(((data->flag) & 4096) != 0);
}

extern void KinematicConstraint_lock_rotation_y_set(PointerRNA *ptr, bool value)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    if (!value) { data->flag |= 4096; }
    else { data->flag &= ~4096; }
}

extern bool KinematicConstraint_lock_rotation_z_get(PointerRNA *ptr)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    return !(((data->flag) & 8192) != 0);
}

extern void KinematicConstraint_lock_rotation_z_set(PointerRNA *ptr, bool value)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    if (!value) { data->flag |= 8192; }
    else { data->flag &= ~8192; }
}

extern bool KinematicConstraint_use_stretch_get(PointerRNA *ptr)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 16) != 0);
}

extern void KinematicConstraint_use_stretch_set(PointerRNA *ptr, bool value)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 16; }
    else { data->flag &= ~16; }
}

extern int KinematicConstraint_ik_type_get(PointerRNA *ptr)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->type);
}

extern void KinematicConstraint_ik_type_set(PointerRNA *ptr, int value)
{
    PropEnumSetFunc fn = rna_Constraint_ik_type_set;
    fn(ptr, value);
}

extern int KinematicConstraint_limit_mode_get(PointerRNA *ptr)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->mode);
}

extern void KinematicConstraint_limit_mode_set(PointerRNA *ptr, int value)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->mode = (std::remove_reference_t<decltype(data->mode)>)value;
#else
    data->mode = value;
#endif
}

extern float KinematicConstraint_distance_get(PointerRNA *ptr)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->dist);
}

extern void KinematicConstraint_distance_set(PointerRNA *ptr, float value)
{
    bKinematicConstraint *data = (bKinematicConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->dist = (std::remove_reference_t<decltype(data->dist)>)std::clamp(value, 0.0f, 100.0f);
#else
    data->dist = std::clamp(value, 0.0f, 100.0f);
#endif
}

extern PointerRNA ClampToConstraint_target_get(PointerRNA *ptr)
{
    bClampToConstraint *data = (bClampToConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->tar);
}

extern void ClampToConstraint_target_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bClampToConstraint *data = (bClampToConstraint *)(((bConstraint *)ptr->data)->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }
    if (value.data) {
        id_lib_extern((ID *)value.data);
    }
    *(void **)&data->tar = value.data;
}

extern int ClampToConstraint_main_axis_get(PointerRNA *ptr)
{
    bClampToConstraint *data = (bClampToConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->flag);
}

extern void ClampToConstraint_main_axis_set(PointerRNA *ptr, int value)
{
    bClampToConstraint *data = (bClampToConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->flag = (std::remove_reference_t<decltype(data->flag)>)value;
#else
    data->flag = value;
#endif
}

extern bool ClampToConstraint_use_cyclic_get(PointerRNA *ptr)
{
    bClampToConstraint *data = (bClampToConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag2) & 1) != 0);
}

extern void ClampToConstraint_use_cyclic_set(PointerRNA *ptr, bool value)
{
    bClampToConstraint *data = (bClampToConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag2 |= 1; }
    else { data->flag2 &= ~1; }
}

extern float LimitDistanceConstraint_head_tail_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (float)(data->headtail);
}

extern void LimitDistanceConstraint_head_tail_set(PointerRNA *ptr, float value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
#ifdef __cplusplus
    data->headtail = (std::remove_reference_t<decltype(data->headtail)>)std::clamp(value, 0.0f, 1.0f);
#else
    data->headtail = std::clamp(value, 0.0f, 1.0f);
#endif
}

extern bool LimitDistanceConstraint_use_bbone_shape_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (((data->flag) & 1024) != 0);
}

extern void LimitDistanceConstraint_use_bbone_shape_set(PointerRNA *ptr, bool value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    if (value) { data->flag |= 1024; }
    else { data->flag &= ~1024; }
}

extern PointerRNA LimitDistanceConstraint_target_get(PointerRNA *ptr)
{
    bDistLimitConstraint *data = (bDistLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->tar);
}

extern void LimitDistanceConstraint_target_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bDistLimitConstraint *data = (bDistLimitConstraint *)(((bConstraint *)ptr->data)->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }
    if (value.data) {
        id_lib_extern((ID *)value.data);
    }
    *(void **)&data->tar = value.data;
}

extern void LimitDistanceConstraint_subtarget_get(PointerRNA *ptr, char *value)
{
    bDistLimitConstraint *data = (bDistLimitConstraint *)(((bConstraint *)ptr->data)->data);
    strcpy(value, data->subtarget);
}

extern int LimitDistanceConstraint_subtarget_length(PointerRNA *ptr)
{
    bDistLimitConstraint *data = (bDistLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return strlen(data->subtarget);
}

extern void LimitDistanceConstraint_subtarget_set(PointerRNA *ptr, const char *value)
{
    bDistLimitConstraint *data = (bDistLimitConstraint *)(((bConstraint *)ptr->data)->data);
    BLI_strncpy_utf8(data->subtarget, value, 64);
}

extern float LimitDistanceConstraint_distance_get(PointerRNA *ptr)
{
    bDistLimitConstraint *data = (bDistLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->dist);
}

extern void LimitDistanceConstraint_distance_set(PointerRNA *ptr, float value)
{
    bDistLimitConstraint *data = (bDistLimitConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->dist = (std::remove_reference_t<decltype(data->dist)>)value;
#else
    data->dist = value;
#endif
}

extern int LimitDistanceConstraint_limit_mode_get(PointerRNA *ptr)
{
    bDistLimitConstraint *data = (bDistLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->mode);
}

extern void LimitDistanceConstraint_limit_mode_set(PointerRNA *ptr, int value)
{
    bDistLimitConstraint *data = (bDistLimitConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->mode = (std::remove_reference_t<decltype(data->mode)>)value;
#else
    data->mode = value;
#endif
}

extern bool LimitDistanceConstraint_use_transform_limit_get(PointerRNA *ptr)
{
    bDistLimitConstraint *data = (bDistLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 2) != 0);
}

extern void LimitDistanceConstraint_use_transform_limit_set(PointerRNA *ptr, bool value)
{
    bDistLimitConstraint *data = (bDistLimitConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 2; }
    else { data->flag &= ~2; }
}

extern bool LimitScaleConstraint_use_min_x_get(PointerRNA *ptr)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 1) != 0);
}

extern void LimitScaleConstraint_use_min_x_set(PointerRNA *ptr, bool value)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 1; }
    else { data->flag &= ~1; }
}

extern bool LimitScaleConstraint_use_min_y_get(PointerRNA *ptr)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 4) != 0);
}

extern void LimitScaleConstraint_use_min_y_set(PointerRNA *ptr, bool value)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 4; }
    else { data->flag &= ~4; }
}

extern bool LimitScaleConstraint_use_min_z_get(PointerRNA *ptr)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 16) != 0);
}

extern void LimitScaleConstraint_use_min_z_set(PointerRNA *ptr, bool value)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 16; }
    else { data->flag &= ~16; }
}

extern bool LimitScaleConstraint_use_max_x_get(PointerRNA *ptr)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 2) != 0);
}

extern void LimitScaleConstraint_use_max_x_set(PointerRNA *ptr, bool value)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 2; }
    else { data->flag &= ~2; }
}

extern bool LimitScaleConstraint_use_max_y_get(PointerRNA *ptr)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 8) != 0);
}

extern void LimitScaleConstraint_use_max_y_set(PointerRNA *ptr, bool value)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 8; }
    else { data->flag &= ~8; }
}

extern bool LimitScaleConstraint_use_max_z_get(PointerRNA *ptr)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 32) != 0);
}

extern void LimitScaleConstraint_use_max_z_set(PointerRNA *ptr, bool value)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 32; }
    else { data->flag &= ~32; }
}

extern float LimitScaleConstraint_min_x_get(PointerRNA *ptr)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->xmin);
}

extern void LimitScaleConstraint_min_x_set(PointerRNA *ptr, float value)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->xmin = (std::remove_reference_t<decltype(data->xmin)>)std::clamp(value, -1000.0f, 1000.0f);
#else
    data->xmin = std::clamp(value, -1000.0f, 1000.0f);
#endif
}

extern float LimitScaleConstraint_min_y_get(PointerRNA *ptr)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->ymin);
}

extern void LimitScaleConstraint_min_y_set(PointerRNA *ptr, float value)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->ymin = (std::remove_reference_t<decltype(data->ymin)>)std::clamp(value, -1000.0f, 1000.0f);
#else
    data->ymin = std::clamp(value, -1000.0f, 1000.0f);
#endif
}

extern float LimitScaleConstraint_min_z_get(PointerRNA *ptr)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->zmin);
}

extern void LimitScaleConstraint_min_z_set(PointerRNA *ptr, float value)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->zmin = (std::remove_reference_t<decltype(data->zmin)>)std::clamp(value, -1000.0f, 1000.0f);
#else
    data->zmin = std::clamp(value, -1000.0f, 1000.0f);
#endif
}

extern float LimitScaleConstraint_max_x_get(PointerRNA *ptr)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->xmax);
}

extern void LimitScaleConstraint_max_x_set(PointerRNA *ptr, float value)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->xmax = (std::remove_reference_t<decltype(data->xmax)>)std::clamp(value, -1000.0f, 1000.0f);
#else
    data->xmax = std::clamp(value, -1000.0f, 1000.0f);
#endif
}

extern float LimitScaleConstraint_max_y_get(PointerRNA *ptr)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->ymax);
}

extern void LimitScaleConstraint_max_y_set(PointerRNA *ptr, float value)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->ymax = (std::remove_reference_t<decltype(data->ymax)>)std::clamp(value, -1000.0f, 1000.0f);
#else
    data->ymax = std::clamp(value, -1000.0f, 1000.0f);
#endif
}

extern float LimitScaleConstraint_max_z_get(PointerRNA *ptr)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->zmax);
}

extern void LimitScaleConstraint_max_z_set(PointerRNA *ptr, float value)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->zmax = (std::remove_reference_t<decltype(data->zmax)>)std::clamp(value, -1000.0f, 1000.0f);
#else
    data->zmax = std::clamp(value, -1000.0f, 1000.0f);
#endif
}

extern bool LimitScaleConstraint_use_transform_limit_get(PointerRNA *ptr)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag2) & 2) != 0);
}

extern void LimitScaleConstraint_use_transform_limit_set(PointerRNA *ptr, bool value)
{
    bSizeLimitConstraint *data = (bSizeLimitConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag2 |= 2; }
    else { data->flag2 &= ~2; }
}

extern bool LimitRotationConstraint_use_limit_x_get(PointerRNA *ptr)
{
    bRotLimitConstraint *data = (bRotLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 1) != 0);
}

extern void LimitRotationConstraint_use_limit_x_set(PointerRNA *ptr, bool value)
{
    bRotLimitConstraint *data = (bRotLimitConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 1; }
    else { data->flag &= ~1; }
}

extern bool LimitRotationConstraint_use_limit_y_get(PointerRNA *ptr)
{
    bRotLimitConstraint *data = (bRotLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 2) != 0);
}

extern void LimitRotationConstraint_use_limit_y_set(PointerRNA *ptr, bool value)
{
    bRotLimitConstraint *data = (bRotLimitConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 2; }
    else { data->flag &= ~2; }
}

extern bool LimitRotationConstraint_use_limit_z_get(PointerRNA *ptr)
{
    bRotLimitConstraint *data = (bRotLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 4) != 0);
}

extern void LimitRotationConstraint_use_limit_z_set(PointerRNA *ptr, bool value)
{
    bRotLimitConstraint *data = (bRotLimitConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 4; }
    else { data->flag &= ~4; }
}

extern float LimitRotationConstraint_min_x_get(PointerRNA *ptr)
{
    bRotLimitConstraint *data = (bRotLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->xmin);
}

extern void LimitRotationConstraint_min_x_set(PointerRNA *ptr, float value)
{
    bRotLimitConstraint *data = (bRotLimitConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->xmin = (std::remove_reference_t<decltype(data->xmin)>)std::clamp(value, -1000.0f, 1000.0f);
#else
    data->xmin = std::clamp(value, -1000.0f, 1000.0f);
#endif
}

extern float LimitRotationConstraint_min_y_get(PointerRNA *ptr)
{
    bRotLimitConstraint *data = (bRotLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->ymin);
}

extern void LimitRotationConstraint_min_y_set(PointerRNA *ptr, float value)
{
    bRotLimitConstraint *data = (bRotLimitConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->ymin = (std::remove_reference_t<decltype(data->ymin)>)std::clamp(value, -1000.0f, 1000.0f);
#else
    data->ymin = std::clamp(value, -1000.0f, 1000.0f);
#endif
}

extern float LimitRotationConstraint_min_z_get(PointerRNA *ptr)
{
    bRotLimitConstraint *data = (bRotLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->zmin);
}

extern void LimitRotationConstraint_min_z_set(PointerRNA *ptr, float value)
{
    bRotLimitConstraint *data = (bRotLimitConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->zmin = (std::remove_reference_t<decltype(data->zmin)>)std::clamp(value, -1000.0f, 1000.0f);
#else
    data->zmin = std::clamp(value, -1000.0f, 1000.0f);
#endif
}

extern float LimitRotationConstraint_max_x_get(PointerRNA *ptr)
{
    bRotLimitConstraint *data = (bRotLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->xmax);
}

extern void LimitRotationConstraint_max_x_set(PointerRNA *ptr, float value)
{
    bRotLimitConstraint *data = (bRotLimitConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->xmax = (std::remove_reference_t<decltype(data->xmax)>)std::clamp(value, -1000.0f, 1000.0f);
#else
    data->xmax = std::clamp(value, -1000.0f, 1000.0f);
#endif
}

extern float LimitRotationConstraint_max_y_get(PointerRNA *ptr)
{
    bRotLimitConstraint *data = (bRotLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->ymax);
}

extern void LimitRotationConstraint_max_y_set(PointerRNA *ptr, float value)
{
    bRotLimitConstraint *data = (bRotLimitConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->ymax = (std::remove_reference_t<decltype(data->ymax)>)std::clamp(value, -1000.0f, 1000.0f);
#else
    data->ymax = std::clamp(value, -1000.0f, 1000.0f);
#endif
}

extern float LimitRotationConstraint_max_z_get(PointerRNA *ptr)
{
    bRotLimitConstraint *data = (bRotLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->zmax);
}

extern void LimitRotationConstraint_max_z_set(PointerRNA *ptr, float value)
{
    bRotLimitConstraint *data = (bRotLimitConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->zmax = (std::remove_reference_t<decltype(data->zmax)>)std::clamp(value, -1000.0f, 1000.0f);
#else
    data->zmax = std::clamp(value, -1000.0f, 1000.0f);
#endif
}

extern int LimitRotationConstraint_euler_order_get(PointerRNA *ptr)
{
    bRotLimitConstraint *data = (bRotLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->euler_order);
}

extern void LimitRotationConstraint_euler_order_set(PointerRNA *ptr, int value)
{
    bRotLimitConstraint *data = (bRotLimitConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->euler_order = (std::remove_reference_t<decltype(data->euler_order)>)value;
#else
    data->euler_order = value;
#endif
}

extern bool LimitRotationConstraint_use_transform_limit_get(PointerRNA *ptr)
{
    bRotLimitConstraint *data = (bRotLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag2) & 2) != 0);
}

extern void LimitRotationConstraint_use_transform_limit_set(PointerRNA *ptr, bool value)
{
    bRotLimitConstraint *data = (bRotLimitConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag2 |= 2; }
    else { data->flag2 &= ~2; }
}

extern bool LimitRotationConstraint_use_legacy_behavior_get(PointerRNA *ptr)
{
    bRotLimitConstraint *data = (bRotLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 8) != 0);
}

extern void LimitRotationConstraint_use_legacy_behavior_set(PointerRNA *ptr, bool value)
{
    bRotLimitConstraint *data = (bRotLimitConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 8; }
    else { data->flag &= ~8; }
}

extern bool LimitLocationConstraint_use_min_x_get(PointerRNA *ptr)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 1) != 0);
}

extern void LimitLocationConstraint_use_min_x_set(PointerRNA *ptr, bool value)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 1; }
    else { data->flag &= ~1; }
}

extern bool LimitLocationConstraint_use_min_y_get(PointerRNA *ptr)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 4) != 0);
}

extern void LimitLocationConstraint_use_min_y_set(PointerRNA *ptr, bool value)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 4; }
    else { data->flag &= ~4; }
}

extern bool LimitLocationConstraint_use_min_z_get(PointerRNA *ptr)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 16) != 0);
}

extern void LimitLocationConstraint_use_min_z_set(PointerRNA *ptr, bool value)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 16; }
    else { data->flag &= ~16; }
}

extern bool LimitLocationConstraint_use_max_x_get(PointerRNA *ptr)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 2) != 0);
}

extern void LimitLocationConstraint_use_max_x_set(PointerRNA *ptr, bool value)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 2; }
    else { data->flag &= ~2; }
}

extern bool LimitLocationConstraint_use_max_y_get(PointerRNA *ptr)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 8) != 0);
}

extern void LimitLocationConstraint_use_max_y_set(PointerRNA *ptr, bool value)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 8; }
    else { data->flag &= ~8; }
}

extern bool LimitLocationConstraint_use_max_z_get(PointerRNA *ptr)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 32) != 0);
}

extern void LimitLocationConstraint_use_max_z_set(PointerRNA *ptr, bool value)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 32; }
    else { data->flag &= ~32; }
}

extern float LimitLocationConstraint_min_x_get(PointerRNA *ptr)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->xmin);
}

extern void LimitLocationConstraint_min_x_set(PointerRNA *ptr, float value)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->xmin = (std::remove_reference_t<decltype(data->xmin)>)value;
#else
    data->xmin = value;
#endif
}

extern float LimitLocationConstraint_min_y_get(PointerRNA *ptr)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->ymin);
}

extern void LimitLocationConstraint_min_y_set(PointerRNA *ptr, float value)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->ymin = (std::remove_reference_t<decltype(data->ymin)>)value;
#else
    data->ymin = value;
#endif
}

extern float LimitLocationConstraint_min_z_get(PointerRNA *ptr)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->zmin);
}

extern void LimitLocationConstraint_min_z_set(PointerRNA *ptr, float value)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->zmin = (std::remove_reference_t<decltype(data->zmin)>)value;
#else
    data->zmin = value;
#endif
}

extern float LimitLocationConstraint_max_x_get(PointerRNA *ptr)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->xmax);
}

extern void LimitLocationConstraint_max_x_set(PointerRNA *ptr, float value)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->xmax = (std::remove_reference_t<decltype(data->xmax)>)value;
#else
    data->xmax = value;
#endif
}

extern float LimitLocationConstraint_max_y_get(PointerRNA *ptr)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->ymax);
}

extern void LimitLocationConstraint_max_y_set(PointerRNA *ptr, float value)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->ymax = (std::remove_reference_t<decltype(data->ymax)>)value;
#else
    data->ymax = value;
#endif
}

extern float LimitLocationConstraint_max_z_get(PointerRNA *ptr)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->zmax);
}

extern void LimitLocationConstraint_max_z_set(PointerRNA *ptr, float value)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->zmax = (std::remove_reference_t<decltype(data->zmax)>)value;
#else
    data->zmax = value;
#endif
}

extern bool LimitLocationConstraint_use_transform_limit_get(PointerRNA *ptr)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag2) & 2) != 0);
}

extern void LimitLocationConstraint_use_transform_limit_set(PointerRNA *ptr, bool value)
{
    bLocLimitConstraint *data = (bLocLimitConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag2 |= 2; }
    else { data->flag2 &= ~2; }
}

extern PointerRNA TransformConstraint_target_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->tar);
}

extern void TransformConstraint_target_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }
    if (value.data) {
        id_lib_extern((ID *)value.data);
    }
    *(void **)&data->tar = value.data;
}

extern void TransformConstraint_subtarget_get(PointerRNA *ptr, char *value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    strcpy(value, data->subtarget);
}

extern int TransformConstraint_subtarget_length(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return strlen(data->subtarget);
}

extern void TransformConstraint_subtarget_set(PointerRNA *ptr, const char *value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    BLI_strncpy_utf8(data->subtarget, value, 64);
}

extern int TransformConstraint_map_from_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->from);
}

extern void TransformConstraint_map_from_set(PointerRNA *ptr, int value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->from = (std::remove_reference_t<decltype(data->from)>)value;
#else
    data->from = value;
#endif
}

extern int TransformConstraint_map_to_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->to);
}

extern void TransformConstraint_map_to_set(PointerRNA *ptr, int value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->to = (std::remove_reference_t<decltype(data->to)>)value;
#else
    data->to = value;
#endif
}

extern int TransformConstraint_map_to_x_from_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->map[0]);
}

extern void TransformConstraint_map_to_x_from_set(PointerRNA *ptr, int value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->map[0] = (std::remove_reference_t<decltype(data->map[0])>)value;
#else
    data->map[0] = value;
#endif
}

extern int TransformConstraint_map_to_y_from_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->map[1]);
}

extern void TransformConstraint_map_to_y_from_set(PointerRNA *ptr, int value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->map[1] = (std::remove_reference_t<decltype(data->map[1])>)value;
#else
    data->map[1] = value;
#endif
}

extern int TransformConstraint_map_to_z_from_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->map[2]);
}

extern void TransformConstraint_map_to_z_from_set(PointerRNA *ptr, int value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->map[2] = (std::remove_reference_t<decltype(data->map[2])>)value;
#else
    data->map[2] = value;
#endif
}

extern bool TransformConstraint_use_motion_extrapolate_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->expo) & 1) != 0);
}

extern void TransformConstraint_use_motion_extrapolate_set(PointerRNA *ptr, bool value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->expo |= 1; }
    else { data->expo &= ~1; }
}

extern int TransformConstraint_from_rotation_mode_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->from_rotation_mode);
}

extern void TransformConstraint_from_rotation_mode_set(PointerRNA *ptr, int value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->from_rotation_mode = (std::remove_reference_t<decltype(data->from_rotation_mode)>)value;
#else
    data->from_rotation_mode = value;
#endif
}

extern int TransformConstraint_to_euler_order_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->to_euler_order);
}

extern void TransformConstraint_to_euler_order_set(PointerRNA *ptr, int value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->to_euler_order = (std::remove_reference_t<decltype(data->to_euler_order)>)value;
#else
    data->to_euler_order = value;
#endif
}

extern float TransformConstraint_from_min_x_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->from_min[0]);
}

extern void TransformConstraint_from_min_x_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->from_min[0] = (std::remove_reference_t<decltype(data->from_min[0])>)value;
#else
    data->from_min[0] = value;
#endif
}

extern float TransformConstraint_from_min_y_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->from_min[1]);
}

extern void TransformConstraint_from_min_y_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->from_min[1] = (std::remove_reference_t<decltype(data->from_min[1])>)value;
#else
    data->from_min[1] = value;
#endif
}

extern float TransformConstraint_from_min_z_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->from_min[2]);
}

extern void TransformConstraint_from_min_z_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->from_min[2] = (std::remove_reference_t<decltype(data->from_min[2])>)value;
#else
    data->from_min[2] = value;
#endif
}

extern float TransformConstraint_from_max_x_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->from_max[0]);
}

extern void TransformConstraint_from_max_x_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->from_max[0] = (std::remove_reference_t<decltype(data->from_max[0])>)value;
#else
    data->from_max[0] = value;
#endif
}

extern float TransformConstraint_from_max_y_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->from_max[1]);
}

extern void TransformConstraint_from_max_y_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->from_max[1] = (std::remove_reference_t<decltype(data->from_max[1])>)value;
#else
    data->from_max[1] = value;
#endif
}

extern float TransformConstraint_from_max_z_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->from_max[2]);
}

extern void TransformConstraint_from_max_z_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->from_max[2] = (std::remove_reference_t<decltype(data->from_max[2])>)value;
#else
    data->from_max[2] = value;
#endif
}

extern float TransformConstraint_to_min_x_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->to_min[0]);
}

extern void TransformConstraint_to_min_x_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->to_min[0] = (std::remove_reference_t<decltype(data->to_min[0])>)value;
#else
    data->to_min[0] = value;
#endif
}

extern float TransformConstraint_to_min_y_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->to_min[1]);
}

extern void TransformConstraint_to_min_y_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->to_min[1] = (std::remove_reference_t<decltype(data->to_min[1])>)value;
#else
    data->to_min[1] = value;
#endif
}

extern float TransformConstraint_to_min_z_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->to_min[2]);
}

extern void TransformConstraint_to_min_z_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->to_min[2] = (std::remove_reference_t<decltype(data->to_min[2])>)value;
#else
    data->to_min[2] = value;
#endif
}

extern float TransformConstraint_to_max_x_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->to_max[0]);
}

extern void TransformConstraint_to_max_x_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->to_max[0] = (std::remove_reference_t<decltype(data->to_max[0])>)value;
#else
    data->to_max[0] = value;
#endif
}

extern float TransformConstraint_to_max_y_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->to_max[1]);
}

extern void TransformConstraint_to_max_y_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->to_max[1] = (std::remove_reference_t<decltype(data->to_max[1])>)value;
#else
    data->to_max[1] = value;
#endif
}

extern float TransformConstraint_to_max_z_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->to_max[2]);
}

extern void TransformConstraint_to_max_z_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->to_max[2] = (std::remove_reference_t<decltype(data->to_max[2])>)value;
#else
    data->to_max[2] = value;
#endif
}

extern int TransformConstraint_mix_mode_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->mix_mode_loc);
}

extern void TransformConstraint_mix_mode_set(PointerRNA *ptr, int value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->mix_mode_loc = (std::remove_reference_t<decltype(data->mix_mode_loc)>)value;
#else
    data->mix_mode_loc = value;
#endif
}

extern float TransformConstraint_from_min_x_rot_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->from_min_rot[0]);
}

extern void TransformConstraint_from_min_x_rot_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->from_min_rot[0] = (std::remove_reference_t<decltype(data->from_min_rot[0])>)value;
#else
    data->from_min_rot[0] = value;
#endif
}

extern float TransformConstraint_from_min_y_rot_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->from_min_rot[1]);
}

extern void TransformConstraint_from_min_y_rot_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->from_min_rot[1] = (std::remove_reference_t<decltype(data->from_min_rot[1])>)value;
#else
    data->from_min_rot[1] = value;
#endif
}

extern float TransformConstraint_from_min_z_rot_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->from_min_rot[2]);
}

extern void TransformConstraint_from_min_z_rot_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->from_min_rot[2] = (std::remove_reference_t<decltype(data->from_min_rot[2])>)value;
#else
    data->from_min_rot[2] = value;
#endif
}

extern float TransformConstraint_from_max_x_rot_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->from_max_rot[0]);
}

extern void TransformConstraint_from_max_x_rot_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->from_max_rot[0] = (std::remove_reference_t<decltype(data->from_max_rot[0])>)value;
#else
    data->from_max_rot[0] = value;
#endif
}

extern float TransformConstraint_from_max_y_rot_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->from_max_rot[1]);
}

extern void TransformConstraint_from_max_y_rot_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->from_max_rot[1] = (std::remove_reference_t<decltype(data->from_max_rot[1])>)value;
#else
    data->from_max_rot[1] = value;
#endif
}

extern float TransformConstraint_from_max_z_rot_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->from_max_rot[2]);
}

extern void TransformConstraint_from_max_z_rot_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->from_max_rot[2] = (std::remove_reference_t<decltype(data->from_max_rot[2])>)value;
#else
    data->from_max_rot[2] = value;
#endif
}

extern float TransformConstraint_to_min_x_rot_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->to_min_rot[0]);
}

extern void TransformConstraint_to_min_x_rot_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->to_min_rot[0] = (std::remove_reference_t<decltype(data->to_min_rot[0])>)value;
#else
    data->to_min_rot[0] = value;
#endif
}

extern float TransformConstraint_to_min_y_rot_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->to_min_rot[1]);
}

extern void TransformConstraint_to_min_y_rot_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->to_min_rot[1] = (std::remove_reference_t<decltype(data->to_min_rot[1])>)value;
#else
    data->to_min_rot[1] = value;
#endif
}

extern float TransformConstraint_to_min_z_rot_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->to_min_rot[2]);
}

extern void TransformConstraint_to_min_z_rot_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->to_min_rot[2] = (std::remove_reference_t<decltype(data->to_min_rot[2])>)value;
#else
    data->to_min_rot[2] = value;
#endif
}

extern float TransformConstraint_to_max_x_rot_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->to_max_rot[0]);
}

extern void TransformConstraint_to_max_x_rot_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->to_max_rot[0] = (std::remove_reference_t<decltype(data->to_max_rot[0])>)value;
#else
    data->to_max_rot[0] = value;
#endif
}

extern float TransformConstraint_to_max_y_rot_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->to_max_rot[1]);
}

extern void TransformConstraint_to_max_y_rot_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->to_max_rot[1] = (std::remove_reference_t<decltype(data->to_max_rot[1])>)value;
#else
    data->to_max_rot[1] = value;
#endif
}

extern float TransformConstraint_to_max_z_rot_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->to_max_rot[2]);
}

extern void TransformConstraint_to_max_z_rot_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->to_max_rot[2] = (std::remove_reference_t<decltype(data->to_max_rot[2])>)value;
#else
    data->to_max_rot[2] = value;
#endif
}

extern int TransformConstraint_mix_mode_rot_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->mix_mode_rot);
}

extern void TransformConstraint_mix_mode_rot_set(PointerRNA *ptr, int value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->mix_mode_rot = (std::remove_reference_t<decltype(data->mix_mode_rot)>)value;
#else
    data->mix_mode_rot = value;
#endif
}

extern float TransformConstraint_from_min_x_scale_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->from_min_scale[0]);
}

extern void TransformConstraint_from_min_x_scale_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->from_min_scale[0] = (std::remove_reference_t<decltype(data->from_min_scale[0])>)value;
#else
    data->from_min_scale[0] = value;
#endif
}

extern float TransformConstraint_from_min_y_scale_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->from_min_scale[1]);
}

extern void TransformConstraint_from_min_y_scale_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->from_min_scale[1] = (std::remove_reference_t<decltype(data->from_min_scale[1])>)value;
#else
    data->from_min_scale[1] = value;
#endif
}

extern float TransformConstraint_from_min_z_scale_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->from_min_scale[2]);
}

extern void TransformConstraint_from_min_z_scale_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->from_min_scale[2] = (std::remove_reference_t<decltype(data->from_min_scale[2])>)value;
#else
    data->from_min_scale[2] = value;
#endif
}

extern float TransformConstraint_from_max_x_scale_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->from_max_scale[0]);
}

extern void TransformConstraint_from_max_x_scale_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->from_max_scale[0] = (std::remove_reference_t<decltype(data->from_max_scale[0])>)value;
#else
    data->from_max_scale[0] = value;
#endif
}

extern float TransformConstraint_from_max_y_scale_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->from_max_scale[1]);
}

extern void TransformConstraint_from_max_y_scale_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->from_max_scale[1] = (std::remove_reference_t<decltype(data->from_max_scale[1])>)value;
#else
    data->from_max_scale[1] = value;
#endif
}

extern float TransformConstraint_from_max_z_scale_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->from_max_scale[2]);
}

extern void TransformConstraint_from_max_z_scale_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->from_max_scale[2] = (std::remove_reference_t<decltype(data->from_max_scale[2])>)value;
#else
    data->from_max_scale[2] = value;
#endif
}

extern float TransformConstraint_to_min_x_scale_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->to_min_scale[0]);
}

extern void TransformConstraint_to_min_x_scale_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->to_min_scale[0] = (std::remove_reference_t<decltype(data->to_min_scale[0])>)value;
#else
    data->to_min_scale[0] = value;
#endif
}

extern float TransformConstraint_to_min_y_scale_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->to_min_scale[1]);
}

extern void TransformConstraint_to_min_y_scale_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->to_min_scale[1] = (std::remove_reference_t<decltype(data->to_min_scale[1])>)value;
#else
    data->to_min_scale[1] = value;
#endif
}

extern float TransformConstraint_to_min_z_scale_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->to_min_scale[2]);
}

extern void TransformConstraint_to_min_z_scale_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->to_min_scale[2] = (std::remove_reference_t<decltype(data->to_min_scale[2])>)value;
#else
    data->to_min_scale[2] = value;
#endif
}

extern float TransformConstraint_to_max_x_scale_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->to_max_scale[0]);
}

extern void TransformConstraint_to_max_x_scale_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->to_max_scale[0] = (std::remove_reference_t<decltype(data->to_max_scale[0])>)value;
#else
    data->to_max_scale[0] = value;
#endif
}

extern float TransformConstraint_to_max_y_scale_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->to_max_scale[1]);
}

extern void TransformConstraint_to_max_y_scale_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->to_max_scale[1] = (std::remove_reference_t<decltype(data->to_max_scale[1])>)value;
#else
    data->to_max_scale[1] = value;
#endif
}

extern float TransformConstraint_to_max_z_scale_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->to_max_scale[2]);
}

extern void TransformConstraint_to_max_z_scale_set(PointerRNA *ptr, float value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->to_max_scale[2] = (std::remove_reference_t<decltype(data->to_max_scale[2])>)value;
#else
    data->to_max_scale[2] = value;
#endif
}

extern int TransformConstraint_mix_mode_scale_get(PointerRNA *ptr)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->mix_mode_scale);
}

extern void TransformConstraint_mix_mode_scale_set(PointerRNA *ptr, int value)
{
    bTransformConstraint *data = (bTransformConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->mix_mode_scale = (std::remove_reference_t<decltype(data->mix_mode_scale)>)value;
#else
    data->mix_mode_scale = value;
#endif
}

extern PointerRNA ShrinkwrapConstraint_target_get(PointerRNA *ptr)
{
    bShrinkwrapConstraint *data = (bShrinkwrapConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->target);
}

extern void ShrinkwrapConstraint_target_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bShrinkwrapConstraint *data = (bShrinkwrapConstraint *)(((bConstraint *)ptr->data)->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }
    if (value.data) {
        id_lib_extern((ID *)value.data);
    }
    *(void **)&data->target = value.data;
}

extern int ShrinkwrapConstraint_shrinkwrap_type_get(PointerRNA *ptr)
{
    bShrinkwrapConstraint *data = (bShrinkwrapConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->shrinkType);
}

extern void ShrinkwrapConstraint_shrinkwrap_type_set(PointerRNA *ptr, int value)
{
    bShrinkwrapConstraint *data = (bShrinkwrapConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->shrinkType = (std::remove_reference_t<decltype(data->shrinkType)>)value;
#else
    data->shrinkType = value;
#endif
}

extern int ShrinkwrapConstraint_wrap_mode_get(PointerRNA *ptr)
{
    bShrinkwrapConstraint *data = (bShrinkwrapConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->shrinkMode);
}

extern void ShrinkwrapConstraint_wrap_mode_set(PointerRNA *ptr, int value)
{
    bShrinkwrapConstraint *data = (bShrinkwrapConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->shrinkMode = (std::remove_reference_t<decltype(data->shrinkMode)>)value;
#else
    data->shrinkMode = value;
#endif
}

extern float ShrinkwrapConstraint_distance_get(PointerRNA *ptr)
{
    bShrinkwrapConstraint *data = (bShrinkwrapConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->dist);
}

extern void ShrinkwrapConstraint_distance_set(PointerRNA *ptr, float value)
{
    bShrinkwrapConstraint *data = (bShrinkwrapConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->dist = (std::remove_reference_t<decltype(data->dist)>)std::clamp(value, 0.0f, FLT_MAX);
#else
    data->dist = std::clamp(value, 0.0f, FLT_MAX);
#endif
}

extern int ShrinkwrapConstraint_project_axis_get(PointerRNA *ptr)
{
    bShrinkwrapConstraint *data = (bShrinkwrapConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->projAxis);
}

extern void ShrinkwrapConstraint_project_axis_set(PointerRNA *ptr, int value)
{
    bShrinkwrapConstraint *data = (bShrinkwrapConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->projAxis = (std::remove_reference_t<decltype(data->projAxis)>)value;
#else
    data->projAxis = value;
#endif
}

extern int ShrinkwrapConstraint_project_axis_space_get(PointerRNA *ptr)
{
    bShrinkwrapConstraint *data = (bShrinkwrapConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->projAxisSpace);
}

extern void ShrinkwrapConstraint_project_axis_space_set(PointerRNA *ptr, int value)
{
    bShrinkwrapConstraint *data = (bShrinkwrapConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->projAxisSpace = (std::remove_reference_t<decltype(data->projAxisSpace)>)value;
#else
    data->projAxisSpace = value;
#endif
}

extern float ShrinkwrapConstraint_project_limit_get(PointerRNA *ptr)
{
    bShrinkwrapConstraint *data = (bShrinkwrapConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->projLimit);
}

extern void ShrinkwrapConstraint_project_limit_set(PointerRNA *ptr, float value)
{
    bShrinkwrapConstraint *data = (bShrinkwrapConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->projLimit = (std::remove_reference_t<decltype(data->projLimit)>)std::clamp(value, 0.0f, FLT_MAX);
#else
    data->projLimit = std::clamp(value, 0.0f, FLT_MAX);
#endif
}

extern bool ShrinkwrapConstraint_use_project_opposite_get(PointerRNA *ptr)
{
    bShrinkwrapConstraint *data = (bShrinkwrapConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 1) != 0);
}

extern void ShrinkwrapConstraint_use_project_opposite_set(PointerRNA *ptr, bool value)
{
    bShrinkwrapConstraint *data = (bShrinkwrapConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 1; }
    else { data->flag &= ~1; }
}

extern int ShrinkwrapConstraint_cull_face_get(PointerRNA *ptr)
{
    PropEnumGetFunc fn = rna_ShrinkwrapConstraint_face_cull_get;
    return fn(ptr);
}

extern void ShrinkwrapConstraint_cull_face_set(PointerRNA *ptr, int value)
{
    PropEnumSetFunc fn = rna_ShrinkwrapConstraint_face_cull_set;
    fn(ptr, value);
}

extern bool ShrinkwrapConstraint_use_invert_cull_get(PointerRNA *ptr)
{
    bShrinkwrapConstraint *data = (bShrinkwrapConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 2) != 0);
}

extern void ShrinkwrapConstraint_use_invert_cull_set(PointerRNA *ptr, bool value)
{
    bShrinkwrapConstraint *data = (bShrinkwrapConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 2; }
    else { data->flag &= ~2; }
}

extern bool ShrinkwrapConstraint_use_track_normal_get(PointerRNA *ptr)
{
    bShrinkwrapConstraint *data = (bShrinkwrapConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 4) != 0);
}

extern void ShrinkwrapConstraint_use_track_normal_set(PointerRNA *ptr, bool value)
{
    bShrinkwrapConstraint *data = (bShrinkwrapConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 4; }
    else { data->flag &= ~4; }
}

extern int ShrinkwrapConstraint_track_axis_get(PointerRNA *ptr)
{
    bShrinkwrapConstraint *data = (bShrinkwrapConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->trackAxis);
}

extern void ShrinkwrapConstraint_track_axis_set(PointerRNA *ptr, int value)
{
    bShrinkwrapConstraint *data = (bShrinkwrapConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->trackAxis = (std::remove_reference_t<decltype(data->trackAxis)>)value;
#else
    data->trackAxis = value;
#endif
}

extern float DampedTrackConstraint_head_tail_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (float)(data->headtail);
}

extern void DampedTrackConstraint_head_tail_set(PointerRNA *ptr, float value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
#ifdef __cplusplus
    data->headtail = (std::remove_reference_t<decltype(data->headtail)>)std::clamp(value, 0.0f, 1.0f);
#else
    data->headtail = std::clamp(value, 0.0f, 1.0f);
#endif
}

extern bool DampedTrackConstraint_use_bbone_shape_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (((data->flag) & 1024) != 0);
}

extern void DampedTrackConstraint_use_bbone_shape_set(PointerRNA *ptr, bool value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    if (value) { data->flag |= 1024; }
    else { data->flag &= ~1024; }
}

extern PointerRNA DampedTrackConstraint_target_get(PointerRNA *ptr)
{
    bDampTrackConstraint *data = (bDampTrackConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->tar);
}

extern void DampedTrackConstraint_target_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bDampTrackConstraint *data = (bDampTrackConstraint *)(((bConstraint *)ptr->data)->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }
    if (value.data) {
        id_lib_extern((ID *)value.data);
    }
    *(void **)&data->tar = value.data;
}

extern void DampedTrackConstraint_subtarget_get(PointerRNA *ptr, char *value)
{
    bDampTrackConstraint *data = (bDampTrackConstraint *)(((bConstraint *)ptr->data)->data);
    strcpy(value, data->subtarget);
}

extern int DampedTrackConstraint_subtarget_length(PointerRNA *ptr)
{
    bDampTrackConstraint *data = (bDampTrackConstraint *)(((bConstraint *)ptr->data)->data);
    return strlen(data->subtarget);
}

extern void DampedTrackConstraint_subtarget_set(PointerRNA *ptr, const char *value)
{
    bDampTrackConstraint *data = (bDampTrackConstraint *)(((bConstraint *)ptr->data)->data);
    BLI_strncpy_utf8(data->subtarget, value, 64);
}

extern int DampedTrackConstraint_track_axis_get(PointerRNA *ptr)
{
    bDampTrackConstraint *data = (bDampTrackConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->trackflag);
}

extern void DampedTrackConstraint_track_axis_set(PointerRNA *ptr, int value)
{
    bDampTrackConstraint *data = (bDampTrackConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->trackflag = (std::remove_reference_t<decltype(data->trackflag)>)value;
#else
    data->trackflag = value;
#endif
}

extern PointerRNA SplineIKConstraint_target_get(PointerRNA *ptr)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->tar);
}

extern void SplineIKConstraint_target_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }
    if (value.data) {
        id_lib_extern((ID *)value.data);
    }
    *(void **)&data->tar = value.data;
}

extern int SplineIKConstraint_chain_count_get(PointerRNA *ptr)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->chainlen);
}

extern void SplineIKConstraint_chain_count_set(PointerRNA *ptr, int value)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->chainlen = (std::remove_reference_t<decltype(data->chainlen)>)std::clamp(value, 1, 255);
#else
    data->chainlen = std::clamp(value, 1, 255);
#endif
}

extern void SplineIKConstraint_joint_bindings_get(PointerRNA *ptr, float values[])
{
    PropFloatArrayGetFunc fn = rna_SplineIKConstraint_joint_bindings_get;
    fn(ptr, values);
}

extern void SplineIKConstraint_joint_bindings_set(PointerRNA *ptr, const float values[])
{
    PropFloatArraySetFunc fn = rna_SplineIKConstraint_joint_bindings_set;
    fn(ptr, values);
}

extern bool SplineIKConstraint_use_chain_offset_get(PointerRNA *ptr)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 2) != 0);
}

extern void SplineIKConstraint_use_chain_offset_set(PointerRNA *ptr, bool value)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 2; }
    else { data->flag &= ~2; }
}

extern bool SplineIKConstraint_use_even_divisions_get(PointerRNA *ptr)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 8) != 0);
}

extern void SplineIKConstraint_use_even_divisions_set(PointerRNA *ptr, bool value)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 8; }
    else { data->flag &= ~8; }
}

extern bool SplineIKConstraint_use_curve_radius_get(PointerRNA *ptr)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
    return !(((data->flag) & 16) != 0);
}

extern void SplineIKConstraint_use_curve_radius_set(PointerRNA *ptr, bool value)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
    if (!value) { data->flag |= 16; }
    else { data->flag &= ~16; }
}

extern int SplineIKConstraint_xz_scale_mode_get(PointerRNA *ptr)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->xzScaleMode);
}

extern void SplineIKConstraint_xz_scale_mode_set(PointerRNA *ptr, int value)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->xzScaleMode = (std::remove_reference_t<decltype(data->xzScaleMode)>)value;
#else
    data->xzScaleMode = value;
#endif
}

extern int SplineIKConstraint_y_scale_mode_get(PointerRNA *ptr)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->yScaleMode);
}

extern void SplineIKConstraint_y_scale_mode_set(PointerRNA *ptr, int value)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->yScaleMode = (std::remove_reference_t<decltype(data->yScaleMode)>)value;
#else
    data->yScaleMode = value;
#endif
}

extern bool SplineIKConstraint_use_original_scale_get(PointerRNA *ptr)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 128) != 0);
}

extern void SplineIKConstraint_use_original_scale_set(PointerRNA *ptr, bool value)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 128; }
    else { data->flag &= ~128; }
}

extern float SplineIKConstraint_bulge_get(PointerRNA *ptr)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->bulge);
}

extern void SplineIKConstraint_bulge_set(PointerRNA *ptr, float value)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->bulge = (std::remove_reference_t<decltype(data->bulge)>)std::clamp(value, 0.0f, 100.0f);
#else
    data->bulge = std::clamp(value, 0.0f, 100.0f);
#endif
}

extern bool SplineIKConstraint_use_bulge_min_get(PointerRNA *ptr)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 32) != 0);
}

extern void SplineIKConstraint_use_bulge_min_set(PointerRNA *ptr, bool value)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 32; }
    else { data->flag &= ~32; }
}

extern bool SplineIKConstraint_use_bulge_max_get(PointerRNA *ptr)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 64) != 0);
}

extern void SplineIKConstraint_use_bulge_max_set(PointerRNA *ptr, bool value)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 64; }
    else { data->flag &= ~64; }
}

extern float SplineIKConstraint_bulge_min_get(PointerRNA *ptr)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->bulge_min);
}

extern void SplineIKConstraint_bulge_min_set(PointerRNA *ptr, float value)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->bulge_min = (std::remove_reference_t<decltype(data->bulge_min)>)std::clamp(value, 0.0f, 1.0f);
#else
    data->bulge_min = std::clamp(value, 0.0f, 1.0f);
#endif
}

extern float SplineIKConstraint_bulge_max_get(PointerRNA *ptr)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->bulge_max);
}

extern void SplineIKConstraint_bulge_max_set(PointerRNA *ptr, float value)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->bulge_max = (std::remove_reference_t<decltype(data->bulge_max)>)std::clamp(value, 1.0f, 100.0f);
#else
    data->bulge_max = std::clamp(value, 1.0f, 100.0f);
#endif
}

extern float SplineIKConstraint_bulge_smooth_get(PointerRNA *ptr)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
    return (float)(data->bulge_smooth);
}

extern void SplineIKConstraint_bulge_smooth_set(PointerRNA *ptr, float value)
{
    bSplineIKConstraint *data = (bSplineIKConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->bulge_smooth = (std::remove_reference_t<decltype(data->bulge_smooth)>)std::clamp(value, 0.0f, 1.0f);
#else
    data->bulge_smooth = std::clamp(value, 0.0f, 1.0f);
#endif
}

extern float PivotConstraint_head_tail_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (float)(data->headtail);
}

extern void PivotConstraint_head_tail_set(PointerRNA *ptr, float value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
#ifdef __cplusplus
    data->headtail = (std::remove_reference_t<decltype(data->headtail)>)std::clamp(value, 0.0f, 1.0f);
#else
    data->headtail = std::clamp(value, 0.0f, 1.0f);
#endif
}

extern bool PivotConstraint_use_bbone_shape_get(PointerRNA *ptr)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    return (((data->flag) & 1024) != 0);
}

extern void PivotConstraint_use_bbone_shape_set(PointerRNA *ptr, bool value)
{
    bConstraint *data = (bConstraint *)(ptr->data);
    if (value) { data->flag |= 1024; }
    else { data->flag &= ~1024; }
}

extern PointerRNA PivotConstraint_target_get(PointerRNA *ptr)
{
    bPivotConstraint *data = (bPivotConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->tar);
}

extern void PivotConstraint_target_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bPivotConstraint *data = (bPivotConstraint *)(((bConstraint *)ptr->data)->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }
    if (value.data) {
        id_lib_extern((ID *)value.data);
    }
    *(void **)&data->tar = value.data;
}

extern void PivotConstraint_subtarget_get(PointerRNA *ptr, char *value)
{
    bPivotConstraint *data = (bPivotConstraint *)(((bConstraint *)ptr->data)->data);
    strcpy(value, data->subtarget);
}

extern int PivotConstraint_subtarget_length(PointerRNA *ptr)
{
    bPivotConstraint *data = (bPivotConstraint *)(((bConstraint *)ptr->data)->data);
    return strlen(data->subtarget);
}

extern void PivotConstraint_subtarget_set(PointerRNA *ptr, const char *value)
{
    bPivotConstraint *data = (bPivotConstraint *)(((bConstraint *)ptr->data)->data);
    BLI_strncpy_utf8(data->subtarget, value, 64);
}

extern bool PivotConstraint_use_relative_location_get(PointerRNA *ptr)
{
    bPivotConstraint *data = (bPivotConstraint *)(((bConstraint *)ptr->data)->data);
    return !(((data->flag) & 1) != 0);
}

extern void PivotConstraint_use_relative_location_set(PointerRNA *ptr, bool value)
{
    bPivotConstraint *data = (bPivotConstraint *)(((bConstraint *)ptr->data)->data);
    if (!value) { data->flag |= 1; }
    else { data->flag &= ~1; }
}

extern void PivotConstraint_offset_get(PointerRNA *ptr, float values[3])
{
    bPivotConstraint *data = (bPivotConstraint *)(((bConstraint *)ptr->data)->data);
    unsigned int i;

    for (i = 0; i < 3; i++) {
        values[i] = (float)(((float *)data->offset)[i]);
    }
}

extern void PivotConstraint_offset_set(PointerRNA *ptr, const float values[3])
{
    bPivotConstraint *data = (bPivotConstraint *)(((bConstraint *)ptr->data)->data);
    unsigned int i;

    for (i = 0; i < 3; i++) {
        ((float *)data->offset)[i] = values[i];
    }
}

extern int PivotConstraint_rotation_range_get(PointerRNA *ptr)
{
    bPivotConstraint *data = (bPivotConstraint *)(((bConstraint *)ptr->data)->data);
    return (int)(data->rotAxis);
}

extern void PivotConstraint_rotation_range_set(PointerRNA *ptr, int value)
{
    bPivotConstraint *data = (bPivotConstraint *)(((bConstraint *)ptr->data)->data);
#ifdef __cplusplus
    data->rotAxis = (std::remove_reference_t<decltype(data->rotAxis)>)value;
#else
    data->rotAxis = value;
#endif
}

extern PointerRNA FollowTrackConstraint_clip_get(PointerRNA *ptr)
{
    bFollowTrackConstraint *data = (bFollowTrackConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_MovieClip, data->clip);
}

extern void FollowTrackConstraint_clip_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bFollowTrackConstraint *data = (bFollowTrackConstraint *)(((bConstraint *)ptr->data)->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }

    if (data->clip) {
        id_us_min((ID *)data->clip);
    }
    if (value.data) {
        id_us_plus((ID *)value.data);
    }
    *(void **)&data->clip = value.data;
}

extern void FollowTrackConstraint_track_get(PointerRNA *ptr, char *value)
{
    bFollowTrackConstraint *data = (bFollowTrackConstraint *)(((bConstraint *)ptr->data)->data);
    strcpy(value, data->track);
}

extern int FollowTrackConstraint_track_length(PointerRNA *ptr)
{
    bFollowTrackConstraint *data = (bFollowTrackConstraint *)(((bConstraint *)ptr->data)->data);
    return strlen(data->track);
}

extern void FollowTrackConstraint_track_set(PointerRNA *ptr, const char *value)
{
    bFollowTrackConstraint *data = (bFollowTrackConstraint *)(((bConstraint *)ptr->data)->data);
    BLI_strncpy_utf8(data->track, value, 64);
}

extern bool FollowTrackConstraint_use_active_clip_get(PointerRNA *ptr)
{
    bFollowTrackConstraint *data = (bFollowTrackConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 1) != 0);
}

extern void FollowTrackConstraint_use_active_clip_set(PointerRNA *ptr, bool value)
{
    bFollowTrackConstraint *data = (bFollowTrackConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 1; }
    else { data->flag &= ~1; }
}

extern bool FollowTrackConstraint_use_3d_position_get(PointerRNA *ptr)
{
    bFollowTrackConstraint *data = (bFollowTrackConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 2) != 0);
}

extern void FollowTrackConstraint_use_3d_position_set(PointerRNA *ptr, bool value)
{
    bFollowTrackConstraint *data = (bFollowTrackConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 2; }
    else { data->flag &= ~2; }
}

extern void FollowTrackConstraint_object_get(PointerRNA *ptr, char *value)
{
    bFollowTrackConstraint *data = (bFollowTrackConstraint *)(((bConstraint *)ptr->data)->data);
    strcpy(value, data->object);
}

extern int FollowTrackConstraint_object_length(PointerRNA *ptr)
{
    bFollowTrackConstraint *data = (bFollowTrackConstraint *)(((bConstraint *)ptr->data)->data);
    return strlen(data->object);
}

extern void FollowTrackConstraint_object_set(PointerRNA *ptr, const char *value)
{
    bFollowTrackConstraint *data = (bFollowTrackConstraint *)(((bConstraint *)ptr->data)->data);
    BLI_strncpy_utf8(data->object, value, 64);
}

extern PointerRNA FollowTrackConstraint_camera_get(PointerRNA *ptr)
{
    bFollowTrackConstraint *data = (bFollowTrackConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->camera);
}

extern void FollowTrackConstraint_camera_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    PropPointerSetFunc fn = rna_Constraint_followTrack_camera_set;
    fn(ptr, value, reports);
}

extern PointerRNA FollowTrackConstraint_depth_object_get(PointerRNA *ptr)
{
    bFollowTrackConstraint *data = (bFollowTrackConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->depth_ob);
}

extern void FollowTrackConstraint_depth_object_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    PropPointerSetFunc fn = rna_Constraint_followTrack_depthObject_set;
    fn(ptr, value, reports);
}

extern int FollowTrackConstraint_frame_method_get(PointerRNA *ptr)
{
    bFollowTrackConstraint *data = (bFollowTrackConstraint *)(((bConstraint *)ptr->data)->data);
    return ((data->frame_method) & 3);
}

extern void FollowTrackConstraint_frame_method_set(PointerRNA *ptr, int value)
{
    bFollowTrackConstraint *data = (bFollowTrackConstraint *)(((bConstraint *)ptr->data)->data);
    data->frame_method &= ~3;
    data->frame_method |= value;
}

extern bool FollowTrackConstraint_use_undistorted_position_get(PointerRNA *ptr)
{
    bFollowTrackConstraint *data = (bFollowTrackConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 4) != 0);
}

extern void FollowTrackConstraint_use_undistorted_position_set(PointerRNA *ptr, bool value)
{
    bFollowTrackConstraint *data = (bFollowTrackConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 4; }
    else { data->flag &= ~4; }
}

extern PointerRNA CameraSolverConstraint_clip_get(PointerRNA *ptr)
{
    bCameraSolverConstraint *data = (bCameraSolverConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_MovieClip, data->clip);
}

extern void CameraSolverConstraint_clip_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bCameraSolverConstraint *data = (bCameraSolverConstraint *)(((bConstraint *)ptr->data)->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }

    if (data->clip) {
        id_us_min((ID *)data->clip);
    }
    if (value.data) {
        id_us_plus((ID *)value.data);
    }
    *(void **)&data->clip = value.data;
}

extern bool CameraSolverConstraint_use_active_clip_get(PointerRNA *ptr)
{
    bCameraSolverConstraint *data = (bCameraSolverConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 1) != 0);
}

extern void CameraSolverConstraint_use_active_clip_set(PointerRNA *ptr, bool value)
{
    bCameraSolverConstraint *data = (bCameraSolverConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 1; }
    else { data->flag &= ~1; }
}

extern PointerRNA ObjectSolverConstraint_clip_get(PointerRNA *ptr)
{
    bObjectSolverConstraint *data = (bObjectSolverConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_MovieClip, data->clip);
}

extern void ObjectSolverConstraint_clip_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bObjectSolverConstraint *data = (bObjectSolverConstraint *)(((bConstraint *)ptr->data)->data);
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }

    if (data->clip) {
        id_us_min((ID *)data->clip);
    }
    if (value.data) {
        id_us_plus((ID *)value.data);
    }
    *(void **)&data->clip = value.data;
}

extern bool ObjectSolverConstraint_use_active_clip_get(PointerRNA *ptr)
{
    bObjectSolverConstraint *data = (bObjectSolverConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 1) != 0);
}

extern void ObjectSolverConstraint_use_active_clip_set(PointerRNA *ptr, bool value)
{
    bObjectSolverConstraint *data = (bObjectSolverConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 1; }
    else { data->flag &= ~1; }
}

extern bool ObjectSolverConstraint_set_inverse_pending_get(PointerRNA *ptr)
{
    bObjectSolverConstraint *data = (bObjectSolverConstraint *)(((bConstraint *)ptr->data)->data);
    return (((data->flag) & 2) != 0);
}

extern void ObjectSolverConstraint_set_inverse_pending_set(PointerRNA *ptr, bool value)
{
    bObjectSolverConstraint *data = (bObjectSolverConstraint *)(((bConstraint *)ptr->data)->data);
    if (value) { data->flag |= 2; }
    else { data->flag &= ~2; }
}

extern void ObjectSolverConstraint_object_get(PointerRNA *ptr, char *value)
{
    bObjectSolverConstraint *data = (bObjectSolverConstraint *)(((bConstraint *)ptr->data)->data);
    strcpy(value, data->object);
}

extern int ObjectSolverConstraint_object_length(PointerRNA *ptr)
{
    bObjectSolverConstraint *data = (bObjectSolverConstraint *)(((bConstraint *)ptr->data)->data);
    return strlen(data->object);
}

extern void ObjectSolverConstraint_object_set(PointerRNA *ptr, const char *value)
{
    bObjectSolverConstraint *data = (bObjectSolverConstraint *)(((bConstraint *)ptr->data)->data);
    BLI_strncpy_utf8(data->object, value, 64);
}

extern PointerRNA ObjectSolverConstraint_camera_get(PointerRNA *ptr)
{
    bObjectSolverConstraint *data = (bObjectSolverConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_Object, data->camera);
}

extern void ObjectSolverConstraint_camera_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    PropPointerSetFunc fn = rna_Constraint_objectSolver_camera_set;
    fn(ptr, value, reports);
}

extern PointerRNA TransformCacheConstraint_cache_file_get(PointerRNA *ptr)
{
    bTransformCacheConstraint *data = (bTransformCacheConstraint *)(((bConstraint *)ptr->data)->data);
    return RNA_pointer_create_with_parent(*ptr, &RNA_CacheFile, data->cache_file);
}

extern void TransformCacheConstraint_cache_file_set(PointerRNA *ptr, PointerRNA value, struct ReportList *reports)
{
    bTransformCacheConstraint *data = (bTransformCacheConstraint *)(((bConstraint *)ptr->data)->data);
    ID *id = ptr->owner_id;
    if (id == value.data) {
      return;
    }
    if (value.data && ptr->owner_id && value.owner_id && !BKE_id_can_use_id(*ptr->owner_id, *value.owner_id)) {
      return;
    }

    if (data->cache_file) {
        id_us_min((ID *)data->cache_file);
    }
    if (value.data) {
        id_us_plus((ID *)value.data);
    }
    *(void **)&data->cache_file = value.data;
}

extern void TransformCacheConstraint_object_path_get(PointerRNA *ptr, char *value)
{
    bTransformCacheConstraint *data = (bTransformCacheConstraint *)(((bConstraint *)ptr->data)->data);
    strcpy(value, data->object_path);
}

extern int TransformCacheConstraint_object_path_length(PointerRNA *ptr)
{
    bTransformCacheConstraint *data = (bTransformCacheConstraint *)(((bConstraint *)ptr->data)->data);
    return strlen(data->object_path);
}

extern void TransformCacheConstraint_object_path_set(PointerRNA *ptr, const char *value)
{
    bTransformCacheConstraint *data = (bTransformCacheConstraint *)(((bConstraint *)ptr->data)->data);
    BLI_strncpy_utf8(data->object_path, value, 1024);
}






extern struct bConstraintTarget *ArmatureConstraintTargets_new_func(struct ID *_selfid, struct bConstraint *_self, Main *bmain)
{
	return rna_ArmatureConstraint_target_new(_selfid, _self, bmain);
}

static void ArmatureConstraintTargets_new_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct ID *_selfid;
	struct bConstraint *_self;
	struct bConstraintTarget *target;
	char *_data, *_retdata;
	
	_selfid = (struct ID *)_ptr->owner_id;
	_self = (struct bConstraint *)_ptr->data;
	_data = (char *)_parms->data;
	_retdata = _data;
	
	target = rna_ArmatureConstraint_target_new(_selfid, _self, CTX_data_main(C));
	*((struct bConstraintTarget **)_retdata) = target;
}

extern void ArmatureConstraintTargets_remove_func(struct ID *_selfid, struct bConstraint *_self, Main *bmain, ReportList *reports, struct PointerRNA *target)
{
	rna_ArmatureConstraint_target_remove(_selfid, _self, bmain, reports, target);
}

static void ArmatureConstraintTargets_remove_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct ID *_selfid;
	struct bConstraint *_self;
	struct PointerRNA *target;
	char *_data;
	
	_selfid = (struct ID *)_ptr->owner_id;
	_self = (struct bConstraint *)_ptr->data;
	_data = (char *)_parms->data;
	target = *((struct PointerRNA **)_data);
	
	rna_ArmatureConstraint_target_remove(_selfid, _self, CTX_data_main(C), reports, target);
}

extern void ArmatureConstraintTargets_clear_func(struct ID *_selfid, struct bConstraint *_self, Main *bmain)
{
	rna_ArmatureConstraint_target_clear(_selfid, _self, bmain);
}

static void ArmatureConstraintTargets_clear_call(bContext *C, ReportList *reports, PointerRNA *_ptr, ParameterList *_parms)
{
	struct ID *_selfid;
	struct bConstraint *_self;
	_selfid = (struct ID *)_ptr->owner_id;
	_self = (struct bConstraint *)_ptr->data;
	
	rna_ArmatureConstraint_target_clear(_selfid, _self, CTX_data_main(C));
}

/* Repeated prototypes to detect errors */

struct bConstraintTarget *rna_ArmatureConstraint_target_new(struct ID *_selfid, struct bConstraint *_self, Main *bmain);
void rna_ArmatureConstraint_target_remove(struct ID *_selfid, struct bConstraint *_self, Main *bmain, ReportList *reports, struct PointerRNA *target);
void rna_ArmatureConstraint_target_clear(struct ID *_selfid, struct bConstraint *_self, Main *bmain);





















extern int SplineIKConstraint_joint_bindings_get_length(PointerRNA *ptr, int *arraylen)
{
	return rna_SplineIKConstraint_joint_bindings_get_length(ptr, arraylen);
}







/* Constraint */
static CollectionPropertyRNA rna_Constraint_rna_properties_ = {
	{&rna_Constraint_rna_type, nullptr,
	-1, "rna_properties", 0, 0, 0, 1, 0, PropertyPathTemplateType(0), "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	Constraint_rna_properties_begin, Constraint_rna_properties_next, Constraint_rna_properties_end, Constraint_rna_properties_get, nullptr, nullptr, Constraint_rna_properties_lookup_string, nullptr, &RNA_Property
};
PropertyRNA &rna_Constraint_rna_properties = reinterpret_cast<PropertyRNA &>(rna_Constraint_rna_properties_);

static PointerPropertyRNA rna_Constraint_rna_type_ = {
	{&rna_Constraint_name, &rna_Constraint_rna_properties,
	-1, "rna_type", 8912896, 0, 0, 0, 0, PropertyPathTemplateType(0), "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	Constraint_rna_type_get, nullptr, nullptr, nullptr,&RNA_Struct
};
PropertyRNA &rna_Constraint_rna_type = reinterpret_cast<PropertyRNA &>(rna_Constraint_rna_type_);

static StringPropertyRNA rna_Constraint_name_ = {
	{&rna_Constraint_type, &rna_Constraint_rna_type,
	-1, "name", 262145, 0, 0, 0, 0, PropertyPathTemplateType(0), "Name",
	"Constraint name",
	0, "*",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {64, 0, 0}, 0,
	nullptr, 102367237, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	Constraint_name_get, Constraint_name_length, Constraint_name_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 64, ""
};
PropertyRNA &rna_Constraint_name = reinterpret_cast<PropertyRNA &>(rna_Constraint_name_);

static EnumPropertyRNA rna_Constraint_type_ = {
	{&rna_Constraint_is_override_data, &rna_Constraint_name,
	-1, "type", 2, 0, 0, 4, 0, PropertyPathTemplateType(0), "Type",
	"",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bConstraint, type), RawPropertyType(1), nullptr},
	Constraint_type_get, nullptr, nullptr, nullptr, nullptr, nullptr, rna_enum_constraint_type_items, 32, 27
};
PropertyRNA &rna_Constraint_type = reinterpret_cast<PropertyRNA &>(rna_Constraint_type_);

static BoolPropertyRNA rna_Constraint_is_override_data_ = {
	{&rna_Constraint_owner_space, &rna_Constraint_type,
	-1, "is_override_data", 2, 0, 0, 0, 0, PropertyPathTemplateType(0), "Override Constraint",
	"In a local override object, whether this constraint comes from the linked reference object, or is local to the override",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	Constraint_is_override_data_get, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_Constraint_is_override_data = reinterpret_cast<PropertyRNA &>(rna_Constraint_is_override_data_);

static const EnumPropertyItem rna_Constraint_owner_space_items[7] = {
	{0, "WORLD", 0, "World Space", "The constraint is applied relative to the world coordinate system"},
	{5, "CUSTOM", 0, "Custom Space", "The constraint is applied in local space of a custom object/bone/vertex group"},
	{0, "", 0, nullptr, nullptr},
	{2, "POSE", 0, "Pose Space", "The constraint is applied in Pose Space, the object transformation is ignored"},
	{3, "LOCAL_WITH_PARENT", 0, "Local With Parent", "The constraint is applied relative to the rest pose local coordinate system of the bone, thus including the parent-induced transformation"},
	{1, "LOCAL", 0, "Local Space", "The constraint is applied relative to the local coordinate system of the object"},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_Constraint_owner_space_ = {
	{&rna_Constraint_target_space, &rna_Constraint_is_override_data,
	-1, "owner_space", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Owner Space",
	"Space that owner is evaluated in",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bConstraint, ownspace), RawPropertyType(2), nullptr},
	Constraint_owner_space_get, Constraint_owner_space_set, rna_Constraint_owner_space_itemf, nullptr, nullptr, nullptr, rna_Constraint_owner_space_items, 6, 0
};
PropertyRNA &rna_Constraint_owner_space = reinterpret_cast<PropertyRNA &>(rna_Constraint_owner_space_);

static const EnumPropertyItem rna_Constraint_target_space_items[8] = {
	{0, "WORLD", 0, "World Space", "The transformation of the target is evaluated relative to the world coordinate system"},
	{5, "CUSTOM", 0, "Custom Space", "The transformation of the target is evaluated relative to a custom object/bone/vertex group"},
	{0, "", 0, nullptr, nullptr},
	{2, "POSE", 0, "Pose Space", "The transformation of the target is only evaluated in the Pose Space, the target armature object transformation is ignored"},
	{3, "LOCAL_WITH_PARENT", 0, "Local With Parent", "The transformation of the target bone is evaluated relative to its rest pose local coordinate system, thus including the parent-induced transformation"},
	{1, "LOCAL", 0, "Local Space", "The transformation of the target is evaluated relative to its local coordinate system"},
	{6, "LOCAL_OWNER_ORIENT", 0, "Local Space (Owner Orientation)", "The transformation of the target bone is evaluated relative to its local coordinate system, followed by a correction for the difference in target and owner rest pose orientations. When applied as local transform to the owner produces the same global motion as the target if the parents are still in rest pose."},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_Constraint_target_space_ = {
	{&rna_Constraint_space_object, &rna_Constraint_owner_space,
	-1, "target_space", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Target Space",
	"Space that target is evaluated in",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bConstraint, tarspace), RawPropertyType(2), nullptr},
	Constraint_target_space_get, Constraint_target_space_set, rna_Constraint_target_space_itemf, nullptr, nullptr, nullptr, rna_Constraint_target_space_items, 7, 0
};
PropertyRNA &rna_Constraint_target_space = reinterpret_cast<PropertyRNA &>(rna_Constraint_target_space_);

static PointerPropertyRNA rna_Constraint_space_object_ = {
	{&rna_Constraint_space_subtarget, &rna_Constraint_target_space,
	-1, "space_object", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Object",
	"Object for Custom Space",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	Constraint_space_object_get, Constraint_space_object_set, nullptr, nullptr,&RNA_Object
};
PropertyRNA &rna_Constraint_space_object = reinterpret_cast<PropertyRNA &>(rna_Constraint_space_object_);

static StringPropertyRNA rna_Constraint_space_subtarget_ = {
	{&rna_Constraint_mute, &rna_Constraint_space_object,
	-1, "space_subtarget", 262145, 1, 0, 0, 0, PropertyPathTemplateType(0), "Sub-Target",
	"Armature bone, mesh or lattice vertex group, ...",
	0, "*",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {64, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	Constraint_space_subtarget_get, Constraint_space_subtarget_length, Constraint_space_subtarget_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 64, ""
};
PropertyRNA &rna_Constraint_space_subtarget = reinterpret_cast<PropertyRNA &>(rna_Constraint_space_subtarget_);

static BoolPropertyRNA rna_Constraint_mute_ = {
	{&rna_Constraint_enabled, &rna_Constraint_space_subtarget,
	-1, "mute", 4355, 1, 0, 0, 0, PropertyPathTemplateType(0), "Disable",
	"Enable/Disable Constraint",
	16, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	Constraint_mute_get, Constraint_mute_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_Constraint_mute = reinterpret_cast<PropertyRNA &>(rna_Constraint_mute_);

static BoolPropertyRNA rna_Constraint_enabled_ = {
	{&rna_Constraint_show_expanded, &rna_Constraint_mute,
	-1, "enabled", 4099, 1, 0, 0, 0, PropertyPathTemplateType(0), "Enabled",
	"Use the results of this constraint",
	15, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	Constraint_enabled_get, Constraint_enabled_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_Constraint_enabled = reinterpret_cast<PropertyRNA &>(rna_Constraint_enabled_);

static BoolPropertyRNA rna_Constraint_show_expanded_ = {
	{&rna_Constraint_is_valid, &rna_Constraint_enabled,
	-1, "show_expanded", 1073745923, 1, 0, 4, 0, PropertyPathTemplateType(0), "Expanded",
	"Constraint\'s panel is expanded in UI",
	33, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bConstraint, ui_expand_flag), RawPropertyType(1), nullptr},
	Constraint_show_expanded_get, Constraint_show_expanded_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_Constraint_show_expanded = reinterpret_cast<PropertyRNA &>(rna_Constraint_show_expanded_);

static BoolPropertyRNA rna_Constraint_is_valid_ = {
	{&rna_Constraint_active, &rna_Constraint_show_expanded,
	-1, "is_valid", 2, 1, 0, 0, 0, PropertyPathTemplateType(0), "Valid",
	"Constraint has valid settings and can be evaluated",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	Constraint_is_valid_get, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_Constraint_is_valid = reinterpret_cast<PropertyRNA &>(rna_Constraint_is_valid_);

static BoolPropertyRNA rna_Constraint_active_ = {
	{&rna_Constraint_influence, &rna_Constraint_is_valid,
	-1, "active", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Active",
	"Constraint is the one being edited",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	Constraint_active_get, Constraint_active_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_Constraint_active = reinterpret_cast<PropertyRNA &>(rna_Constraint_active_);

static FloatPropertyRNA rna_Constraint_influence_ = {
	{&rna_Constraint_error_location, &rna_Constraint_active,
	-1, "influence", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Influence",
	"Amount of influence constraint will have on the final solution",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_FACTOR) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_influence_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bConstraint, enforce), RawPropertyType(5), nullptr},
	Constraint_influence_get, Constraint_influence_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0f, 1.0f, 0.0f, 1.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_Constraint_influence = reinterpret_cast<PropertyRNA &>(rna_Constraint_influence_);

static FloatPropertyRNA rna_Constraint_error_location_ = {
	{&rna_Constraint_error_rotation, &rna_Constraint_influence,
	-1, "error_location", 2, 1, 0, 4, 0, PropertyPathTemplateType(0), "Lin error",
	"Amount of residual error in Blender space unit for constraints that work on position",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bConstraint, lin_error), RawPropertyType(5), nullptr},
	Constraint_error_location_get, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_Constraint_error_location = reinterpret_cast<PropertyRNA &>(rna_Constraint_error_location_);

static FloatPropertyRNA rna_Constraint_error_rotation_ = {
	{nullptr, &rna_Constraint_error_location,
	-1, "error_rotation", 2, 1, 0, 4, 0, PropertyPathTemplateType(0), "Rotation error",
	"Amount of residual error in radians for constraints that work on orientation",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bConstraint, rot_error), RawPropertyType(5), nullptr},
	Constraint_error_rotation_get, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_Constraint_error_rotation = reinterpret_cast<PropertyRNA &>(rna_Constraint_error_rotation_);

StructRNA RNA_Constraint = {
	{(ContainerRNA *)&RNA_ConstraintTarget, (ContainerRNA *)&RNA_ColorManagedSequencerColorspaceSettings,
	nullptr,
	{&rna_Constraint_rna_properties, &rna_Constraint_error_rotation}},
	"Constraint", nullptr, nullptr, 516, nullptr, "Constraint",
	"Constraint modifying the transformation of objects and bones",
	"*", 174,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	nullptr,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Constraint Target */
static CollectionPropertyRNA rna_ConstraintTarget_rna_properties_ = {
	{&rna_ConstraintTarget_rna_type, nullptr,
	-1, "rna_properties", 0, 0, 0, 1, 0, PropertyPathTemplateType(0), "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ConstraintTarget_rna_properties_begin, ConstraintTarget_rna_properties_next, ConstraintTarget_rna_properties_end, ConstraintTarget_rna_properties_get, nullptr, nullptr, ConstraintTarget_rna_properties_lookup_string, nullptr, &RNA_Property
};
PropertyRNA &rna_ConstraintTarget_rna_properties = reinterpret_cast<PropertyRNA &>(rna_ConstraintTarget_rna_properties_);

static PointerPropertyRNA rna_ConstraintTarget_rna_type_ = {
	{&rna_ConstraintTarget_target, &rna_ConstraintTarget_rna_properties,
	-1, "rna_type", 8912896, 0, 0, 0, 0, PropertyPathTemplateType(0), "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ConstraintTarget_rna_type_get, nullptr, nullptr, nullptr,&RNA_Struct
};
PropertyRNA &rna_ConstraintTarget_rna_type = reinterpret_cast<PropertyRNA &>(rna_ConstraintTarget_rna_type_);

static PointerPropertyRNA rna_ConstraintTarget_target_ = {
	{&rna_ConstraintTarget_subtarget, &rna_ConstraintTarget_rna_type,
	-1, "target", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Target",
	"Target object",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_ConstraintTarget_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ConstraintTarget_target_get, ConstraintTarget_target_set, nullptr, nullptr,&RNA_Object
};
PropertyRNA &rna_ConstraintTarget_target = reinterpret_cast<PropertyRNA &>(rna_ConstraintTarget_target_);

static StringPropertyRNA rna_ConstraintTarget_subtarget_ = {
	{nullptr, &rna_ConstraintTarget_target,
	-1, "subtarget", 262145, 1, 0, 0, 0, PropertyPathTemplateType(0), "Sub-Target",
	"Armature bone, mesh or lattice vertex group, ...",
	0, "*",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {64, 0, 0}, 0,
	rna_ConstraintTarget_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ConstraintTarget_subtarget_get, ConstraintTarget_subtarget_length, ConstraintTarget_subtarget_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 64, ""
};
PropertyRNA &rna_ConstraintTarget_subtarget = reinterpret_cast<PropertyRNA &>(rna_ConstraintTarget_subtarget_);

StructRNA RNA_ConstraintTarget = {
	{(ContainerRNA *)&RNA_ConstraintTargetBone, (ContainerRNA *)&RNA_Constraint,
	nullptr,
	{&rna_ConstraintTarget_rna_properties, &rna_ConstraintTarget_subtarget}},
	"ConstraintTarget", nullptr, nullptr, 516, nullptr, "Constraint Target",
	"Target object for multi-target constraints",
	"*", 61,
	nullptr, &rna_ConstraintTarget_rna_properties,
	nullptr,
	nullptr,
	nullptr,
	rna_ConstraintTarget_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Constraint Target Bone */
static CollectionPropertyRNA rna_ConstraintTargetBone_rna_properties_ = {
	{&rna_ConstraintTargetBone_rna_type, nullptr,
	-1, "rna_properties", 0, 0, 0, 1, 0, PropertyPathTemplateType(0), "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ConstraintTargetBone_rna_properties_begin, ConstraintTargetBone_rna_properties_next, ConstraintTargetBone_rna_properties_end, ConstraintTargetBone_rna_properties_get, nullptr, nullptr, ConstraintTargetBone_rna_properties_lookup_string, nullptr, &RNA_Property
};
PropertyRNA &rna_ConstraintTargetBone_rna_properties = reinterpret_cast<PropertyRNA &>(rna_ConstraintTargetBone_rna_properties_);

static PointerPropertyRNA rna_ConstraintTargetBone_rna_type_ = {
	{&rna_ConstraintTargetBone_target, &rna_ConstraintTargetBone_rna_properties,
	-1, "rna_type", 8912896, 0, 0, 0, 0, PropertyPathTemplateType(0), "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ConstraintTargetBone_rna_type_get, nullptr, nullptr, nullptr,&RNA_Struct
};
PropertyRNA &rna_ConstraintTargetBone_rna_type = reinterpret_cast<PropertyRNA &>(rna_ConstraintTargetBone_rna_type_);

static PointerPropertyRNA rna_ConstraintTargetBone_target_ = {
	{&rna_ConstraintTargetBone_subtarget, &rna_ConstraintTargetBone_rna_type,
	-1, "target", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Target",
	"Target armature",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_ConstraintTarget_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ConstraintTargetBone_target_get, ConstraintTargetBone_target_set, nullptr, rna_Armature_object_poll,&RNA_Object
};
PropertyRNA &rna_ConstraintTargetBone_target = reinterpret_cast<PropertyRNA &>(rna_ConstraintTargetBone_target_);

static StringPropertyRNA rna_ConstraintTargetBone_subtarget_ = {
	{&rna_ConstraintTargetBone_weight, &rna_ConstraintTargetBone_target,
	-1, "subtarget", 262145, 1, 0, 0, 0, PropertyPathTemplateType(0), "Sub-Target",
	"Target armature bone",
	0, "*",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {64, 0, 0}, 0,
	rna_ConstraintTarget_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ConstraintTargetBone_subtarget_get, ConstraintTargetBone_subtarget_length, ConstraintTargetBone_subtarget_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 64, ""
};
PropertyRNA &rna_ConstraintTargetBone_subtarget = reinterpret_cast<PropertyRNA &>(rna_ConstraintTargetBone_subtarget_);

static FloatPropertyRNA rna_ConstraintTargetBone_weight_ = {
	{nullptr, &rna_ConstraintTargetBone_subtarget,
	-1, "weight", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Blend Weight",
	"Blending weight of this bone",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_FACTOR) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_ConstraintTarget_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bConstraintTarget, weight), RawPropertyType(5), nullptr},
	ConstraintTargetBone_weight_get, ConstraintTargetBone_weight_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0f, 1.0f, 0.0f, 1.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_ConstraintTargetBone_weight = reinterpret_cast<PropertyRNA &>(rna_ConstraintTargetBone_weight_);

StructRNA RNA_ConstraintTargetBone = {
	{(ContainerRNA *)&RNA_ChildOfConstraint, (ContainerRNA *)&RNA_ConstraintTarget,
	nullptr,
	{&rna_ConstraintTargetBone_rna_properties, &rna_ConstraintTargetBone_weight}},
	"ConstraintTargetBone", nullptr, nullptr, 516, nullptr, "Constraint Target Bone",
	"Target bone for multi-target constraints",
	"*", 61,
	nullptr, &rna_ConstraintTargetBone_rna_properties,
	nullptr,
	nullptr,
	nullptr,
	rna_ConstraintTarget_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Child Of Constraint */
static PointerPropertyRNA rna_ChildOfConstraint_target_ = {
	{&rna_ChildOfConstraint_subtarget, nullptr,
	-1, "target", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Target",
	"Target object",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ChildOfConstraint_target_get, ChildOfConstraint_target_set, nullptr, nullptr,&RNA_Object
};
PropertyRNA &rna_ChildOfConstraint_target = reinterpret_cast<PropertyRNA &>(rna_ChildOfConstraint_target_);

static StringPropertyRNA rna_ChildOfConstraint_subtarget_ = {
	{&rna_ChildOfConstraint_use_location_x, &rna_ChildOfConstraint_target,
	-1, "subtarget", 262145, 1, 0, 0, 0, PropertyPathTemplateType(0), "Sub-Target",
	"Armature bone, mesh or lattice vertex group, ...",
	0, "*",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {64, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ChildOfConstraint_subtarget_get, ChildOfConstraint_subtarget_length, ChildOfConstraint_subtarget_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 64, ""
};
PropertyRNA &rna_ChildOfConstraint_subtarget = reinterpret_cast<PropertyRNA &>(rna_ChildOfConstraint_subtarget_);

static BoolPropertyRNA rna_ChildOfConstraint_use_location_x_ = {
	{&rna_ChildOfConstraint_use_location_y, &rna_ChildOfConstraint_subtarget,
	-1, "use_location_x", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Location X",
	"Use X Location of Parent",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ChildOfConstraint_use_location_x_get, ChildOfConstraint_use_location_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_ChildOfConstraint_use_location_x = reinterpret_cast<PropertyRNA &>(rna_ChildOfConstraint_use_location_x_);

static BoolPropertyRNA rna_ChildOfConstraint_use_location_y_ = {
	{&rna_ChildOfConstraint_use_location_z, &rna_ChildOfConstraint_use_location_x,
	-1, "use_location_y", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Location Y",
	"Use Y Location of Parent",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ChildOfConstraint_use_location_y_get, ChildOfConstraint_use_location_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_ChildOfConstraint_use_location_y = reinterpret_cast<PropertyRNA &>(rna_ChildOfConstraint_use_location_y_);

static BoolPropertyRNA rna_ChildOfConstraint_use_location_z_ = {
	{&rna_ChildOfConstraint_use_rotation_x, &rna_ChildOfConstraint_use_location_y,
	-1, "use_location_z", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Location Z",
	"Use Z Location of Parent",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ChildOfConstraint_use_location_z_get, ChildOfConstraint_use_location_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_ChildOfConstraint_use_location_z = reinterpret_cast<PropertyRNA &>(rna_ChildOfConstraint_use_location_z_);

static BoolPropertyRNA rna_ChildOfConstraint_use_rotation_x_ = {
	{&rna_ChildOfConstraint_use_rotation_y, &rna_ChildOfConstraint_use_location_z,
	-1, "use_rotation_x", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Rotation X",
	"Use X Rotation of Parent",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ChildOfConstraint_use_rotation_x_get, ChildOfConstraint_use_rotation_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_ChildOfConstraint_use_rotation_x = reinterpret_cast<PropertyRNA &>(rna_ChildOfConstraint_use_rotation_x_);

static BoolPropertyRNA rna_ChildOfConstraint_use_rotation_y_ = {
	{&rna_ChildOfConstraint_use_rotation_z, &rna_ChildOfConstraint_use_rotation_x,
	-1, "use_rotation_y", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Rotation Y",
	"Use Y Rotation of Parent",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ChildOfConstraint_use_rotation_y_get, ChildOfConstraint_use_rotation_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_ChildOfConstraint_use_rotation_y = reinterpret_cast<PropertyRNA &>(rna_ChildOfConstraint_use_rotation_y_);

static BoolPropertyRNA rna_ChildOfConstraint_use_rotation_z_ = {
	{&rna_ChildOfConstraint_use_scale_x, &rna_ChildOfConstraint_use_rotation_y,
	-1, "use_rotation_z", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Rotation Z",
	"Use Z Rotation of Parent",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ChildOfConstraint_use_rotation_z_get, ChildOfConstraint_use_rotation_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_ChildOfConstraint_use_rotation_z = reinterpret_cast<PropertyRNA &>(rna_ChildOfConstraint_use_rotation_z_);

static BoolPropertyRNA rna_ChildOfConstraint_use_scale_x_ = {
	{&rna_ChildOfConstraint_use_scale_y, &rna_ChildOfConstraint_use_rotation_z,
	-1, "use_scale_x", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Scale X",
	"Use X Scale of Parent",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ChildOfConstraint_use_scale_x_get, ChildOfConstraint_use_scale_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_ChildOfConstraint_use_scale_x = reinterpret_cast<PropertyRNA &>(rna_ChildOfConstraint_use_scale_x_);

static BoolPropertyRNA rna_ChildOfConstraint_use_scale_y_ = {
	{&rna_ChildOfConstraint_use_scale_z, &rna_ChildOfConstraint_use_scale_x,
	-1, "use_scale_y", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Scale Y",
	"Use Y Scale of Parent",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ChildOfConstraint_use_scale_y_get, ChildOfConstraint_use_scale_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_ChildOfConstraint_use_scale_y = reinterpret_cast<PropertyRNA &>(rna_ChildOfConstraint_use_scale_y_);

static BoolPropertyRNA rna_ChildOfConstraint_use_scale_z_ = {
	{&rna_ChildOfConstraint_set_inverse_pending, &rna_ChildOfConstraint_use_scale_y,
	-1, "use_scale_z", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Scale Z",
	"Use Z Scale of Parent",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ChildOfConstraint_use_scale_z_get, ChildOfConstraint_use_scale_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_ChildOfConstraint_use_scale_z = reinterpret_cast<PropertyRNA &>(rna_ChildOfConstraint_use_scale_z_);

static BoolPropertyRNA rna_ChildOfConstraint_set_inverse_pending_ = {
	{&rna_ChildOfConstraint_inverse_matrix, &rna_ChildOfConstraint_use_scale_z,
	-1, "set_inverse_pending", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Set Inverse Pending",
	"Set to true to request recalculation of the inverse matrix",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ChildOfConstraint_set_inverse_pending_get, ChildOfConstraint_set_inverse_pending_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_ChildOfConstraint_set_inverse_pending = reinterpret_cast<PropertyRNA &>(rna_ChildOfConstraint_set_inverse_pending_);

static float rna_ChildOfConstraint_inverse_matrix_default[16] = {
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f
};

static FloatPropertyRNA rna_ChildOfConstraint_inverse_matrix_ = {
	{nullptr, &rna_ChildOfConstraint_set_inverse_pending,
	-1, "inverse_matrix", 1, 1, 0, 4, 0, PropertyPathTemplateType(0), "Inverse Matrix",
	"Transformation matrix to apply before",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_MATRIX) | int(PROP_UNIT_NONE)), nullptr, 2, {4, 4, 0}, 16,
	rna_Constraint_childof_inverse_matrix_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bChildOfConstraint, invmat), RawPropertyType(5), nullptr},
	nullptr, nullptr, ChildOfConstraint_inverse_matrix_get, ChildOfConstraint_inverse_matrix_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, rna_ChildOfConstraint_inverse_matrix_default
};
PropertyRNA &rna_ChildOfConstraint_inverse_matrix = reinterpret_cast<PropertyRNA &>(rna_ChildOfConstraint_inverse_matrix_);

StructRNA RNA_ChildOfConstraint = {
	{(ContainerRNA *)&RNA_ArmatureConstraint, (ContainerRNA *)&RNA_ConstraintTargetBone,
	nullptr,
	{&rna_ChildOfConstraint_target, &rna_ChildOfConstraint_inverse_matrix}},
	"ChildOfConstraint", nullptr, nullptr, 516, nullptr, "Child Of Constraint",
	"Create constraint-based parent-child relationship",
	"*", 405,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Armature Constraint */
static CollectionPropertyRNA rna_ArmatureConstraint_targets_ = {
	{&rna_ArmatureConstraint_use_deform_preserve_volume, nullptr,
	-1, "targets", 0, 1, 0, 0, 0, PropertyPathTemplateType(0), "Targets",
	"Target Bones",
	0, "*",
	PROP_COLLECTION, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, &RNA_ArmatureConstraintTargets},
	ArmatureConstraint_targets_begin, ArmatureConstraint_targets_next, ArmatureConstraint_targets_end, ArmatureConstraint_targets_get, nullptr, ArmatureConstraint_targets_lookup_int, nullptr, nullptr, &RNA_ConstraintTargetBone
};
PropertyRNA &rna_ArmatureConstraint_targets = reinterpret_cast<PropertyRNA &>(rna_ArmatureConstraint_targets_);

static BoolPropertyRNA rna_ArmatureConstraint_use_deform_preserve_volume_ = {
	{&rna_ArmatureConstraint_use_bone_envelopes, &rna_ArmatureConstraint_targets,
	-1, "use_deform_preserve_volume", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Preserve Volume",
	"Deform rotation interpolation with quaternions",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ArmatureConstraint_use_deform_preserve_volume_get, ArmatureConstraint_use_deform_preserve_volume_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_ArmatureConstraint_use_deform_preserve_volume = reinterpret_cast<PropertyRNA &>(rna_ArmatureConstraint_use_deform_preserve_volume_);

static BoolPropertyRNA rna_ArmatureConstraint_use_bone_envelopes_ = {
	{&rna_ArmatureConstraint_use_current_location, &rna_ArmatureConstraint_use_deform_preserve_volume,
	-1, "use_bone_envelopes", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Use Envelopes",
	"Multiply weights by envelope for all bones, instead of acting like Vertex Group based blending. The specified weights are still used, and only the listed bones are considered.",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ArmatureConstraint_use_bone_envelopes_get, ArmatureConstraint_use_bone_envelopes_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_ArmatureConstraint_use_bone_envelopes = reinterpret_cast<PropertyRNA &>(rna_ArmatureConstraint_use_bone_envelopes_);

static BoolPropertyRNA rna_ArmatureConstraint_use_current_location_ = {
	{nullptr, &rna_ArmatureConstraint_use_bone_envelopes,
	-1, "use_current_location", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Use Current Location",
	"Use the current bone location for envelopes and choosing B-Bone segments instead of rest position",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ArmatureConstraint_use_current_location_get, ArmatureConstraint_use_current_location_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_ArmatureConstraint_use_current_location = reinterpret_cast<PropertyRNA &>(rna_ArmatureConstraint_use_current_location_);

StructRNA RNA_ArmatureConstraint = {
	{(ContainerRNA *)&RNA_ArmatureConstraintTargets, (ContainerRNA *)&RNA_ChildOfConstraint,
	nullptr,
	{&rna_ArmatureConstraint_targets, &rna_ArmatureConstraint_use_current_location}},
	"ArmatureConstraint", nullptr, nullptr, 516, nullptr, "Armature Constraint",
	"Applies transformations done by the Armature modifier",
	"*", 403,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Armature Deform Constraint Targets */
static CollectionPropertyRNA rna_ArmatureConstraintTargets_rna_properties_ = {
	{&rna_ArmatureConstraintTargets_rna_type, nullptr,
	-1, "rna_properties", 0, 1, 0, 1, 0, PropertyPathTemplateType(0), "Properties",
	"RNA property collection",
	0, "*",
	PROP_COLLECTION, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ArmatureConstraintTargets_rna_properties_begin, ArmatureConstraintTargets_rna_properties_next, ArmatureConstraintTargets_rna_properties_end, ArmatureConstraintTargets_rna_properties_get, nullptr, nullptr, ArmatureConstraintTargets_rna_properties_lookup_string, nullptr, &RNA_Property
};
PropertyRNA &rna_ArmatureConstraintTargets_rna_properties = reinterpret_cast<PropertyRNA &>(rna_ArmatureConstraintTargets_rna_properties_);

static PointerPropertyRNA rna_ArmatureConstraintTargets_rna_type_ = {
	{nullptr, &rna_ArmatureConstraintTargets_rna_properties,
	-1, "rna_type", 8912896, 1, 0, 0, 0, PropertyPathTemplateType(0), "RNA",
	"RNA type definition",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ArmatureConstraintTargets_rna_type_get, nullptr, nullptr, nullptr,&RNA_Struct
};
PropertyRNA &rna_ArmatureConstraintTargets_rna_type = reinterpret_cast<PropertyRNA &>(rna_ArmatureConstraintTargets_rna_type_);

static PointerPropertyRNA rna_ArmatureConstraintTargets_new_target_ = {
	{nullptr, nullptr,
	-1, "target", 8388608, 1, 2, 0, 0, PropertyPathTemplateType(0), "",
	"New target bone",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	nullptr, nullptr, nullptr, nullptr,&RNA_ConstraintTargetBone
};
PropertyRNA &rna_ArmatureConstraintTargets_new_target = reinterpret_cast<PropertyRNA &>(rna_ArmatureConstraintTargets_new_target_);

FunctionRNA rna_ArmatureConstraintTargets_new_func = {
	{(FunctionRNA *)&rna_ArmatureConstraintTargets_remove_func, nullptr,
	nullptr,
	{&rna_ArmatureConstraintTargets_new_target, &rna_ArmatureConstraintTargets_new_target}},
	"new", 2052, "Add a new target to the constraint",
	ArmatureConstraintTargets_new_call,
	&rna_ArmatureConstraintTargets_new_target
};

static PointerPropertyRNA rna_ArmatureConstraintTargets_remove_target_ = {
	{nullptr, nullptr,
	-1, "target", 262144, 1, 5, 0, 0, PropertyPathTemplateType(0), "",
	"Target to remove",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	nullptr, nullptr, nullptr, nullptr,&RNA_ConstraintTargetBone
};
PropertyRNA &rna_ArmatureConstraintTargets_remove_target = reinterpret_cast<PropertyRNA &>(rna_ArmatureConstraintTargets_remove_target_);

FunctionRNA rna_ArmatureConstraintTargets_remove_func = {
	{(FunctionRNA *)&rna_ArmatureConstraintTargets_clear_func, (FunctionRNA *)&rna_ArmatureConstraintTargets_new_func,
	nullptr,
	{&rna_ArmatureConstraintTargets_remove_target, &rna_ArmatureConstraintTargets_remove_target}},
	"remove", 2068, "Delete target from the constraint",
	ArmatureConstraintTargets_remove_call,
	nullptr
};

FunctionRNA rna_ArmatureConstraintTargets_clear_func = {
	{nullptr, (FunctionRNA *)&rna_ArmatureConstraintTargets_remove_func,
	nullptr,
	{nullptr, nullptr}},
	"clear", 2052, "Delete all targets from object",
	ArmatureConstraintTargets_clear_call,
	nullptr
};

StructRNA RNA_ArmatureConstraintTargets = {
	{(ContainerRNA *)&RNA_StretchToConstraint, (ContainerRNA *)&RNA_ArmatureConstraint,
	nullptr,
	{&rna_ArmatureConstraintTargets_rna_properties, &rna_ArmatureConstraintTargets_rna_type}},
	"ArmatureConstraintTargets", nullptr, nullptr, 516, nullptr, "Armature Deform Constraint Targets",
	"Collection of target bones and weights",
	"*", 403,
	nullptr, &rna_ArmatureConstraintTargets_rna_properties,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{(FunctionRNA *)&rna_ArmatureConstraintTargets_new_func, (FunctionRNA *)&rna_ArmatureConstraintTargets_clear_func}
};

/* Stretch To Constraint */
static FloatPropertyRNA rna_StretchToConstraint_head_tail_ = {
	{&rna_StretchToConstraint_use_bbone_shape, nullptr,
	-1, "head_tail", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Head/Tail",
	"Target along length of bone: Head is 0, Tail is 1",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_FACTOR) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bConstraint, headtail), RawPropertyType(5), nullptr},
	StretchToConstraint_head_tail_get, StretchToConstraint_head_tail_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0f, 1.0f, 0.0f, 1.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_StretchToConstraint_head_tail = reinterpret_cast<PropertyRNA &>(rna_StretchToConstraint_head_tail_);

static BoolPropertyRNA rna_StretchToConstraint_use_bbone_shape_ = {
	{&rna_StretchToConstraint_target, &rna_StretchToConstraint_head_tail,
	-1, "use_bbone_shape", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Follow B-Bone",
	"Follow shape of B-Bone segments when calculating Head/Tail position",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	StretchToConstraint_use_bbone_shape_get, StretchToConstraint_use_bbone_shape_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_StretchToConstraint_use_bbone_shape = reinterpret_cast<PropertyRNA &>(rna_StretchToConstraint_use_bbone_shape_);

static PointerPropertyRNA rna_StretchToConstraint_target_ = {
	{&rna_StretchToConstraint_subtarget, &rna_StretchToConstraint_use_bbone_shape,
	-1, "target", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Target",
	"Target object",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	StretchToConstraint_target_get, StretchToConstraint_target_set, nullptr, nullptr,&RNA_Object
};
PropertyRNA &rna_StretchToConstraint_target = reinterpret_cast<PropertyRNA &>(rna_StretchToConstraint_target_);

static StringPropertyRNA rna_StretchToConstraint_subtarget_ = {
	{&rna_StretchToConstraint_volume, &rna_StretchToConstraint_target,
	-1, "subtarget", 262145, 1, 0, 0, 0, PropertyPathTemplateType(0), "Sub-Target",
	"Armature bone, mesh or lattice vertex group, ...",
	0, "*",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {64, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	StretchToConstraint_subtarget_get, StretchToConstraint_subtarget_length, StretchToConstraint_subtarget_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 64, ""
};
PropertyRNA &rna_StretchToConstraint_subtarget = reinterpret_cast<PropertyRNA &>(rna_StretchToConstraint_subtarget_);

static const EnumPropertyItem rna_StretchToConstraint_volume_items[5] = {
	{0, "VOLUME_XZX", 0, "XZ", ""},
	{1, "VOLUME_X", 0, "X", ""},
	{2, "VOLUME_Z", 0, "Z", ""},
	{3, "NO_VOLUME", 0, "None", ""},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_StretchToConstraint_volume_ = {
	{&rna_StretchToConstraint_keep_axis, &rna_StretchToConstraint_subtarget,
	-1, "volume", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Maintain Volume",
	"Maintain the object\'s volume as it stretches",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bStretchToConstraint, volmode), RawPropertyType(0), nullptr},
	StretchToConstraint_volume_get, StretchToConstraint_volume_set, nullptr, nullptr, nullptr, nullptr, rna_StretchToConstraint_volume_items, 4, 0
};
PropertyRNA &rna_StretchToConstraint_volume = reinterpret_cast<PropertyRNA &>(rna_StretchToConstraint_volume_);

static const EnumPropertyItem rna_StretchToConstraint_keep_axis_items[4] = {
	{0, "PLANE_X", 0, "XZ", "Rotate around local X, then Z"},
	{2, "PLANE_Z", 0, "ZX", "Rotate around local Z, then X"},
	{1, "SWING_Y", 0, "Swing", "Use the smallest single axis rotation, similar to Damped Track"},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_StretchToConstraint_keep_axis_ = {
	{&rna_StretchToConstraint_rest_length, &rna_StretchToConstraint_volume,
	-1, "keep_axis", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Keep Axis",
	"The rotation type and axis order to use",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bStretchToConstraint, plane), RawPropertyType(0), nullptr},
	StretchToConstraint_keep_axis_get, StretchToConstraint_keep_axis_set, nullptr, nullptr, nullptr, nullptr, rna_StretchToConstraint_keep_axis_items, 3, 0
};
PropertyRNA &rna_StretchToConstraint_keep_axis = reinterpret_cast<PropertyRNA &>(rna_StretchToConstraint_keep_axis_);

static FloatPropertyRNA rna_StretchToConstraint_rest_length_ = {
	{&rna_StretchToConstraint_bulge, &rna_StretchToConstraint_keep_axis,
	-1, "rest_length", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Original Length",
	"Length at rest position",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_DISTANCE) | int(PROP_UNIT_LENGTH)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bStretchToConstraint, orglength), RawPropertyType(5), nullptr},
	StretchToConstraint_rest_length_get, StretchToConstraint_rest_length_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0f, 100.0f, 0.0f, 1000.0f, 10.0f, 5, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_StretchToConstraint_rest_length = reinterpret_cast<PropertyRNA &>(rna_StretchToConstraint_rest_length_);

static FloatPropertyRNA rna_StretchToConstraint_bulge_ = {
	{&rna_StretchToConstraint_use_bulge_min, &rna_StretchToConstraint_rest_length,
	-1, "bulge", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Volume Variation",
	"Factor between volume variation and stretching",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bStretchToConstraint, bulge), RawPropertyType(5), nullptr},
	StretchToConstraint_bulge_get, StretchToConstraint_bulge_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0f, 100.0f, 0.0f, 100.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_StretchToConstraint_bulge = reinterpret_cast<PropertyRNA &>(rna_StretchToConstraint_bulge_);

static BoolPropertyRNA rna_StretchToConstraint_use_bulge_min_ = {
	{&rna_StretchToConstraint_use_bulge_max, &rna_StretchToConstraint_bulge,
	-1, "use_bulge_min", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Use Volume Variation Minimum",
	"Use lower limit for volume variation",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	StretchToConstraint_use_bulge_min_get, StretchToConstraint_use_bulge_min_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_StretchToConstraint_use_bulge_min = reinterpret_cast<PropertyRNA &>(rna_StretchToConstraint_use_bulge_min_);

static BoolPropertyRNA rna_StretchToConstraint_use_bulge_max_ = {
	{&rna_StretchToConstraint_bulge_min, &rna_StretchToConstraint_use_bulge_min,
	-1, "use_bulge_max", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Use Volume Variation Maximum",
	"Use upper limit for volume variation",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	StretchToConstraint_use_bulge_max_get, StretchToConstraint_use_bulge_max_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_StretchToConstraint_use_bulge_max = reinterpret_cast<PropertyRNA &>(rna_StretchToConstraint_use_bulge_max_);

static FloatPropertyRNA rna_StretchToConstraint_bulge_min_ = {
	{&rna_StretchToConstraint_bulge_max, &rna_StretchToConstraint_use_bulge_max,
	-1, "bulge_min", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Volume Variation Minimum",
	"Minimum volume stretching factor",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bStretchToConstraint, bulge_min), RawPropertyType(5), nullptr},
	StretchToConstraint_bulge_min_get, StretchToConstraint_bulge_min_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0f, 1.0f, 0.0f, 1.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_StretchToConstraint_bulge_min = reinterpret_cast<PropertyRNA &>(rna_StretchToConstraint_bulge_min_);

static FloatPropertyRNA rna_StretchToConstraint_bulge_max_ = {
	{&rna_StretchToConstraint_bulge_smooth, &rna_StretchToConstraint_bulge_min,
	-1, "bulge_max", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Volume Variation Maximum",
	"Maximum volume stretching factor",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bStretchToConstraint, bulge_max), RawPropertyType(5), nullptr},
	StretchToConstraint_bulge_max_get, StretchToConstraint_bulge_max_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 1.0f, 100.0f, 1.0f, 100.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_StretchToConstraint_bulge_max = reinterpret_cast<PropertyRNA &>(rna_StretchToConstraint_bulge_max_);

static FloatPropertyRNA rna_StretchToConstraint_bulge_smooth_ = {
	{nullptr, &rna_StretchToConstraint_bulge_max,
	-1, "bulge_smooth", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Volume Variation Smoothness",
	"Strength of volume stretching clamping",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_FACTOR) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bStretchToConstraint, bulge_smooth), RawPropertyType(5), nullptr},
	StretchToConstraint_bulge_smooth_get, StretchToConstraint_bulge_smooth_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0f, 1.0f, 0.0f, 1.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_StretchToConstraint_bulge_smooth = reinterpret_cast<PropertyRNA &>(rna_StretchToConstraint_bulge_smooth_);

StructRNA RNA_StretchToConstraint = {
	{(ContainerRNA *)&RNA_FollowPathConstraint, (ContainerRNA *)&RNA_ArmatureConstraintTargets,
	nullptr,
	{&rna_StretchToConstraint_head_tail, &rna_StretchToConstraint_bulge_smooth}},
	"StretchToConstraint", nullptr, nullptr, 516, nullptr, "Stretch To Constraint",
	"Stretch to meet the target object",
	"*", 424,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Follow Path Constraint */
static PointerPropertyRNA rna_FollowPathConstraint_target_ = {
	{&rna_FollowPathConstraint_offset, nullptr,
	-1, "target", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Target",
	"Target Curve object",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	FollowPathConstraint_target_get, FollowPathConstraint_target_set, nullptr, rna_Curve_object_poll,&RNA_Object
};
PropertyRNA &rna_FollowPathConstraint_target = reinterpret_cast<PropertyRNA &>(rna_FollowPathConstraint_target_);

static FloatPropertyRNA rna_FollowPathConstraint_offset_ = {
	{&rna_FollowPathConstraint_offset_factor, &rna_FollowPathConstraint_target,
	-1, "offset", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Offset",
	"Offset from the position corresponding to the time frame",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_TIME) | int(PROP_UNIT_TIME)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bFollowPathConstraint, offset), RawPropertyType(5), nullptr},
	FollowPathConstraint_offset_get, FollowPathConstraint_offset_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1048574.0f, 1048574.0f, -1048574.0f, 1048574.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_FollowPathConstraint_offset = reinterpret_cast<PropertyRNA &>(rna_FollowPathConstraint_offset_);

static FloatPropertyRNA rna_FollowPathConstraint_offset_factor_ = {
	{&rna_FollowPathConstraint_forward_axis, &rna_FollowPathConstraint_offset,
	-1, "offset_factor", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Offset Factor",
	"Percentage value defining target position along length of curve",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_FACTOR) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bFollowPathConstraint, offset_fac), RawPropertyType(5), nullptr},
	FollowPathConstraint_offset_factor_get, FollowPathConstraint_offset_factor_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0f, 1.0f, -FLT_MAX, FLT_MAX, 0.0099999998f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_FollowPathConstraint_offset_factor = reinterpret_cast<PropertyRNA &>(rna_FollowPathConstraint_offset_factor_);

static const EnumPropertyItem rna_FollowPathConstraint_forward_axis_items[7] = {
	{0, "FORWARD_X", 0, "X", ""},
	{1, "FORWARD_Y", 0, "Y", ""},
	{2, "FORWARD_Z", 0, "Z", ""},
	{3, "TRACK_NEGATIVE_X", 0, "-X", ""},
	{4, "TRACK_NEGATIVE_Y", 0, "-Y", ""},
	{5, "TRACK_NEGATIVE_Z", 0, "-Z", ""},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_FollowPathConstraint_forward_axis_ = {
	{&rna_FollowPathConstraint_up_axis, &rna_FollowPathConstraint_offset_factor,
	-1, "forward_axis", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Forward Axis",
	"Axis that points forward along the path",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bFollowPathConstraint, trackflag), RawPropertyType(1), nullptr},
	FollowPathConstraint_forward_axis_get, FollowPathConstraint_forward_axis_set, nullptr, nullptr, nullptr, nullptr, rna_FollowPathConstraint_forward_axis_items, 6, 0
};
PropertyRNA &rna_FollowPathConstraint_forward_axis = reinterpret_cast<PropertyRNA &>(rna_FollowPathConstraint_forward_axis_);

static const EnumPropertyItem rna_FollowPathConstraint_up_axis_items[4] = {
	{0, "UP_X", 0, "X", ""},
	{1, "UP_Y", 0, "Y", ""},
	{2, "UP_Z", 0, "Z", ""},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_FollowPathConstraint_up_axis_ = {
	{&rna_FollowPathConstraint_use_curve_follow, &rna_FollowPathConstraint_forward_axis,
	-1, "up_axis", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Up Axis",
	"Axis that points upward",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bFollowPathConstraint, upflag), RawPropertyType(1), nullptr},
	FollowPathConstraint_up_axis_get, FollowPathConstraint_up_axis_set, nullptr, nullptr, nullptr, nullptr, rna_FollowPathConstraint_up_axis_items, 3, 0
};
PropertyRNA &rna_FollowPathConstraint_up_axis = reinterpret_cast<PropertyRNA &>(rna_FollowPathConstraint_up_axis_);

static BoolPropertyRNA rna_FollowPathConstraint_use_curve_follow_ = {
	{&rna_FollowPathConstraint_use_fixed_location, &rna_FollowPathConstraint_up_axis,
	-1, "use_curve_follow", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Follow Curve",
	"Object will follow the heading and banking of the curve",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	FollowPathConstraint_use_curve_follow_get, FollowPathConstraint_use_curve_follow_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_FollowPathConstraint_use_curve_follow = reinterpret_cast<PropertyRNA &>(rna_FollowPathConstraint_use_curve_follow_);

static BoolPropertyRNA rna_FollowPathConstraint_use_fixed_location_ = {
	{&rna_FollowPathConstraint_use_curve_radius, &rna_FollowPathConstraint_use_curve_follow,
	-1, "use_fixed_location", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Fixed Position",
	"Object will stay locked to a single point somewhere along the length of the curve regardless of time",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	FollowPathConstraint_use_fixed_location_get, FollowPathConstraint_use_fixed_location_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_FollowPathConstraint_use_fixed_location = reinterpret_cast<PropertyRNA &>(rna_FollowPathConstraint_use_fixed_location_);

static BoolPropertyRNA rna_FollowPathConstraint_use_curve_radius_ = {
	{nullptr, &rna_FollowPathConstraint_use_fixed_location,
	-1, "use_curve_radius", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Curve Radius",
	"Object is scaled by the curve radius",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	FollowPathConstraint_use_curve_radius_get, FollowPathConstraint_use_curve_radius_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_FollowPathConstraint_use_curve_radius = reinterpret_cast<PropertyRNA &>(rna_FollowPathConstraint_use_curve_radius_);

StructRNA RNA_FollowPathConstraint = {
	{(ContainerRNA *)&RNA_LockedTrackConstraint, (ContainerRNA *)&RNA_StretchToConstraint,
	nullptr,
	{&rna_FollowPathConstraint_target, &rna_FollowPathConstraint_use_curve_radius}},
	"FollowPathConstraint", nullptr, nullptr, 516, nullptr, "Follow Path Constraint",
	"Lock motion to the target path",
	"*", 409,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Locked Track Constraint */
static FloatPropertyRNA rna_LockedTrackConstraint_head_tail_ = {
	{&rna_LockedTrackConstraint_use_bbone_shape, nullptr,
	-1, "head_tail", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Head/Tail",
	"Target along length of bone: Head is 0, Tail is 1",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_FACTOR) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bConstraint, headtail), RawPropertyType(5), nullptr},
	LockedTrackConstraint_head_tail_get, LockedTrackConstraint_head_tail_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0f, 1.0f, 0.0f, 1.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_LockedTrackConstraint_head_tail = reinterpret_cast<PropertyRNA &>(rna_LockedTrackConstraint_head_tail_);

static BoolPropertyRNA rna_LockedTrackConstraint_use_bbone_shape_ = {
	{&rna_LockedTrackConstraint_target, &rna_LockedTrackConstraint_head_tail,
	-1, "use_bbone_shape", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Follow B-Bone",
	"Follow shape of B-Bone segments when calculating Head/Tail position",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LockedTrackConstraint_use_bbone_shape_get, LockedTrackConstraint_use_bbone_shape_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_LockedTrackConstraint_use_bbone_shape = reinterpret_cast<PropertyRNA &>(rna_LockedTrackConstraint_use_bbone_shape_);

static PointerPropertyRNA rna_LockedTrackConstraint_target_ = {
	{&rna_LockedTrackConstraint_subtarget, &rna_LockedTrackConstraint_use_bbone_shape,
	-1, "target", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Target",
	"Target object",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LockedTrackConstraint_target_get, LockedTrackConstraint_target_set, nullptr, nullptr,&RNA_Object
};
PropertyRNA &rna_LockedTrackConstraint_target = reinterpret_cast<PropertyRNA &>(rna_LockedTrackConstraint_target_);

static StringPropertyRNA rna_LockedTrackConstraint_subtarget_ = {
	{&rna_LockedTrackConstraint_track_axis, &rna_LockedTrackConstraint_target,
	-1, "subtarget", 262145, 1, 0, 0, 0, PropertyPathTemplateType(0), "Sub-Target",
	"Armature bone, mesh or lattice vertex group, ...",
	0, "*",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {64, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LockedTrackConstraint_subtarget_get, LockedTrackConstraint_subtarget_length, LockedTrackConstraint_subtarget_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 64, ""
};
PropertyRNA &rna_LockedTrackConstraint_subtarget = reinterpret_cast<PropertyRNA &>(rna_LockedTrackConstraint_subtarget_);

static const EnumPropertyItem rna_LockedTrackConstraint_track_axis_items[7] = {
	{0, "TRACK_X", 0, "X", ""},
	{1, "TRACK_Y", 0, "Y", ""},
	{2, "TRACK_Z", 0, "Z", ""},
	{3, "TRACK_NEGATIVE_X", 0, "-X", ""},
	{4, "TRACK_NEGATIVE_Y", 0, "-Y", ""},
	{5, "TRACK_NEGATIVE_Z", 0, "-Z", ""},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_LockedTrackConstraint_track_axis_ = {
	{&rna_LockedTrackConstraint_lock_axis, &rna_LockedTrackConstraint_subtarget,
	-1, "track_axis", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Track Axis",
	"Axis that points to the target object",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bLockTrackConstraint, trackflag), RawPropertyType(0), nullptr},
	LockedTrackConstraint_track_axis_get, LockedTrackConstraint_track_axis_set, nullptr, nullptr, nullptr, nullptr, rna_LockedTrackConstraint_track_axis_items, 6, 0
};
PropertyRNA &rna_LockedTrackConstraint_track_axis = reinterpret_cast<PropertyRNA &>(rna_LockedTrackConstraint_track_axis_);

static const EnumPropertyItem rna_LockedTrackConstraint_lock_axis_items[4] = {
	{0, "LOCK_X", 0, "X", ""},
	{1, "LOCK_Y", 0, "Y", ""},
	{2, "LOCK_Z", 0, "Z", ""},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_LockedTrackConstraint_lock_axis_ = {
	{nullptr, &rna_LockedTrackConstraint_track_axis,
	-1, "lock_axis", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Locked Axis",
	"Axis that points upward",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bLockTrackConstraint, lockflag), RawPropertyType(0), nullptr},
	LockedTrackConstraint_lock_axis_get, LockedTrackConstraint_lock_axis_set, nullptr, nullptr, nullptr, nullptr, rna_LockedTrackConstraint_lock_axis_items, 3, 0
};
PropertyRNA &rna_LockedTrackConstraint_lock_axis = reinterpret_cast<PropertyRNA &>(rna_LockedTrackConstraint_lock_axis_);

StructRNA RNA_LockedTrackConstraint = {
	{(ContainerRNA *)&RNA_ActionConstraint, (ContainerRNA *)&RNA_FollowPathConstraint,
	nullptr,
	{&rna_LockedTrackConstraint_head_tail, &rna_LockedTrackConstraint_lock_axis}},
	"LockedTrackConstraint", nullptr, nullptr, 516, nullptr, "Locked Track Constraint",
	"Point toward the target along the track axis, while locking the other axis",
	"*", 412,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Action Constraint */
static PointerPropertyRNA rna_ActionConstraint_target_ = {
	{&rna_ActionConstraint_subtarget, nullptr,
	-1, "target", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Target",
	"Target object",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ActionConstraint_target_get, ActionConstraint_target_set, nullptr, nullptr,&RNA_Object
};
PropertyRNA &rna_ActionConstraint_target = reinterpret_cast<PropertyRNA &>(rna_ActionConstraint_target_);

static StringPropertyRNA rna_ActionConstraint_subtarget_ = {
	{&rna_ActionConstraint_mix_mode, &rna_ActionConstraint_target,
	-1, "subtarget", 262145, 1, 0, 0, 0, PropertyPathTemplateType(0), "Sub-Target",
	"Armature bone, mesh or lattice vertex group, ...",
	0, "*",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {64, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ActionConstraint_subtarget_get, ActionConstraint_subtarget_length, ActionConstraint_subtarget_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 64, ""
};
PropertyRNA &rna_ActionConstraint_subtarget = reinterpret_cast<PropertyRNA &>(rna_ActionConstraint_subtarget_);

static const EnumPropertyItem rna_ActionConstraint_mix_mode_items[10] = {
	{6, "REPLACE", 0, "Replace", "Replace the original transformation with the action channels"},
	{0, "", 0, nullptr, nullptr},
	{3, "BEFORE_FULL", 0, "Before Original (Full)", "Apply the action channels before the original transformation, as if applied to an imaginary parent in Full Inherit Scale mode. Will create shear when combining rotation and non-uniform scale."},
	{2, "BEFORE", 0, "Before Original (Aligned)", "Apply the action channels before the original transformation, as if applied to an imaginary parent in Aligned Inherit Scale mode. This effectively uses Full for location and Split Channels for rotation and scale."},
	{5, "BEFORE_SPLIT", 0, "Before Original (Split Channels)", "Apply the action channels before the original transformation, handling location, rotation and scale separately"},
	{0, "", 0, nullptr, nullptr},
	{0, "AFTER_FULL", 0, "After Original (Full)", "Apply the action channels after the original transformation, as if applied to an imaginary child in Full Inherit Scale mode. Will create shear when combining rotation and non-uniform scale."},
	{1, "AFTER", 0, "After Original (Aligned)", "Apply the action channels after the original transformation, as if applied to an imaginary child in Aligned Inherit Scale mode. This effectively uses Full for location and Split Channels for rotation and scale."},
	{4, "AFTER_SPLIT", 0, "After Original (Split Channels)", "Apply the action channels after the original transformation, handling location, rotation and scale separately"},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_ActionConstraint_mix_mode_ = {
	{&rna_ActionConstraint_transform_channel, &rna_ActionConstraint_subtarget,
	-1, "mix_mode", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Mix Mode",
	"Specify how existing transformations and the action channels are combined",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ActionConstraint_mix_mode_get, ActionConstraint_mix_mode_set, nullptr, nullptr, nullptr, nullptr, rna_ActionConstraint_mix_mode_items, 9, 0
};
PropertyRNA &rna_ActionConstraint_mix_mode = reinterpret_cast<PropertyRNA &>(rna_ActionConstraint_mix_mode_);

static const EnumPropertyItem rna_ActionConstraint_transform_channel_items[10] = {
	{20, "LOCATION_X", 0, "X Location", ""},
	{21, "LOCATION_Y", 0, "Y Location", ""},
	{22, "LOCATION_Z", 0, "Z Location", ""},
	{0, "ROTATION_X", 0, "X Rotation", ""},
	{1, "ROTATION_Y", 0, "Y Rotation", ""},
	{2, "ROTATION_Z", 0, "Z Rotation", ""},
	{10, "SCALE_X", 0, "X Scale", ""},
	{11, "SCALE_Y", 0, "Y Scale", ""},
	{12, "SCALE_Z", 0, "Z Scale", ""},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_ActionConstraint_transform_channel_ = {
	{&rna_ActionConstraint_action, &rna_ActionConstraint_mix_mode,
	-1, "transform_channel", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Transform Channel",
	"Transformation channel from the target that is used to key the Action",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bActionConstraint, type), RawPropertyType(1), nullptr},
	ActionConstraint_transform_channel_get, ActionConstraint_transform_channel_set, nullptr, nullptr, nullptr, nullptr, rna_ActionConstraint_transform_channel_items, 9, 0
};
PropertyRNA &rna_ActionConstraint_transform_channel = reinterpret_cast<PropertyRNA &>(rna_ActionConstraint_transform_channel_);

static PointerPropertyRNA rna_ActionConstraint_action_ = {
	{&rna_ActionConstraint_action_slot_handle, &rna_ActionConstraint_transform_channel,
	-1, "action", 8388801, 1, 0, 0, 0, PropertyPathTemplateType(0), "Action",
	"The constraining action",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ActionConstraint_action_get, ActionConstraint_action_set, nullptr, rna_Action_id_poll,&RNA_Action
};
PropertyRNA &rna_ActionConstraint_action = reinterpret_cast<PropertyRNA &>(rna_ActionConstraint_action_);

static IntPropertyRNA rna_ActionConstraint_action_slot_handle_ = {
	{&rna_ActionConstraint_last_slot_identifier, &rna_ActionConstraint_action,
	-1, "action_slot_handle", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Action Slot Handle",
	"A number that identifies which sub-set of the Action is considered to be for this Action Constraint",
	0, "*",
	PROP_INT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 256507904, nullptr, nullptr, rna_ActionConstraint_action_slot_handle_override_diff, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ActionConstraint_action_slot_handle_get, ActionConstraint_action_slot_handle_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
	PROP_SCALE_LINEAR, -10000, 10000, INT_MIN, INT_MAX, 1, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_ActionConstraint_action_slot_handle = reinterpret_cast<PropertyRNA &>(rna_ActionConstraint_action_slot_handle_);

static StringPropertyRNA rna_ActionConstraint_last_slot_identifier_ = {
	{&rna_ActionConstraint_action_slot, &rna_ActionConstraint_action_slot_handle,
	-1, "last_slot_identifier", 262145, 1, 0, 0, 0, PropertyPathTemplateType(0), "Last Action Slot Identifier",
	"The identifier of the most recently assigned action slot. The slot identifies which sub-set of the Action is considered to be for this constraint, and its identifier is used to find the right slot when assigning an Action.",
	0, "*",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {66, 0, 0}, 0,
	nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ActionConstraint_last_slot_identifier_get, ActionConstraint_last_slot_identifier_length, ActionConstraint_last_slot_identifier_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 66, ""
};
PropertyRNA &rna_ActionConstraint_last_slot_identifier = reinterpret_cast<PropertyRNA &>(rna_ActionConstraint_last_slot_identifier_);

static PointerPropertyRNA rna_ActionConstraint_action_slot_ = {
	{&rna_ActionConstraint_action_suitable_slots, &rna_ActionConstraint_last_slot_identifier,
	-1, "action_slot", 8388609, 5, 0, 0, 0, PropertyPathTemplateType(0), "Action Slot",
	"The slot identifies which sub-set of the Action is considered to be for this strip, and its name is used to find the right slot when assigning another Action",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 256507904, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ActionConstraint_action_slot_get, ActionConstraint_action_slot_set, nullptr, nullptr,&RNA_ActionSlot
};
PropertyRNA &rna_ActionConstraint_action_slot = reinterpret_cast<PropertyRNA &>(rna_ActionConstraint_action_slot_);

static CollectionPropertyRNA rna_ActionConstraint_action_suitable_slots_ = {
	{&rna_ActionConstraint_use_bone_object_action, &rna_ActionConstraint_action_slot,
	-1, "action_suitable_slots", 0, 1, 0, 0, 0, PropertyPathTemplateType(0), "Action Slots",
	"The list of action slots suitable for this NLA strip",
	0, "*",
	PROP_COLLECTION, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ActionConstraint_action_suitable_slots_begin, ActionConstraint_action_suitable_slots_next, ActionConstraint_action_suitable_slots_end, ActionConstraint_action_suitable_slots_get, nullptr, nullptr, nullptr, nullptr, &RNA_ActionSlot
};
PropertyRNA &rna_ActionConstraint_action_suitable_slots = reinterpret_cast<PropertyRNA &>(rna_ActionConstraint_action_suitable_slots_);

static BoolPropertyRNA rna_ActionConstraint_use_bone_object_action_ = {
	{&rna_ActionConstraint_frame_start, &rna_ActionConstraint_action_suitable_slots,
	-1, "use_bone_object_action", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Object Action",
	"Bones only: apply the object\'s transformation channels of the action to the constrained bone, instead of bone\'s channels",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ActionConstraint_use_bone_object_action_get, ActionConstraint_use_bone_object_action_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_ActionConstraint_use_bone_object_action = reinterpret_cast<PropertyRNA &>(rna_ActionConstraint_use_bone_object_action_);

static IntPropertyRNA rna_ActionConstraint_frame_start_ = {
	{&rna_ActionConstraint_frame_end, &rna_ActionConstraint_use_bone_object_action,
	-1, "frame_start", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Start Frame",
	"First frame of the Action to use",
	0, "*",
	PROP_INT, PropertySubType(int(PROP_TIME) | int(PROP_UNIT_TIME)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bActionConstraint, start), RawPropertyType(0), nullptr},
	ActionConstraint_frame_start_get, ActionConstraint_frame_start_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
	PROP_SCALE_LINEAR, -1048574, 1048574, -1048574, 1048574, 1, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_ActionConstraint_frame_start = reinterpret_cast<PropertyRNA &>(rna_ActionConstraint_frame_start_);

static IntPropertyRNA rna_ActionConstraint_frame_end_ = {
	{&rna_ActionConstraint_max, &rna_ActionConstraint_frame_start,
	-1, "frame_end", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "End Frame",
	"Last frame of the Action to use",
	0, "*",
	PROP_INT, PropertySubType(int(PROP_TIME) | int(PROP_UNIT_TIME)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bActionConstraint, end), RawPropertyType(0), nullptr},
	ActionConstraint_frame_end_get, ActionConstraint_frame_end_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
	PROP_SCALE_LINEAR, -1048574, 1048574, -1048574, 1048574, 1, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_ActionConstraint_frame_end = reinterpret_cast<PropertyRNA &>(rna_ActionConstraint_frame_end_);

static FloatPropertyRNA rna_ActionConstraint_max_ = {
	{&rna_ActionConstraint_min, &rna_ActionConstraint_frame_end,
	-1, "max", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Maximum",
	"Maximum value for target channel range",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bActionConstraint, max), RawPropertyType(5), nullptr},
	ActionConstraint_max_get, ActionConstraint_max_set, nullptr, nullptr, rna_ActionConstraint_minmax_range, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -1000.0f, 1000.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_ActionConstraint_max = reinterpret_cast<PropertyRNA &>(rna_ActionConstraint_max_);

static FloatPropertyRNA rna_ActionConstraint_min_ = {
	{&rna_ActionConstraint_eval_time, &rna_ActionConstraint_max,
	-1, "min", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Minimum",
	"Minimum value for target channel range",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bActionConstraint, min), RawPropertyType(5), nullptr},
	ActionConstraint_min_get, ActionConstraint_min_set, nullptr, nullptr, rna_ActionConstraint_minmax_range, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -1000.0f, 1000.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_ActionConstraint_min = reinterpret_cast<PropertyRNA &>(rna_ActionConstraint_min_);

static FloatPropertyRNA rna_ActionConstraint_eval_time_ = {
	{&rna_ActionConstraint_use_eval_time, &rna_ActionConstraint_min,
	-1, "eval_time", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Evaluation Time",
	"Interpolates between Action Start and End frames",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_FACTOR) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bActionConstraint, eval_time), RawPropertyType(5), nullptr},
	ActionConstraint_eval_time_get, ActionConstraint_eval_time_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0f, 1.0f, 0.0f, 1.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_ActionConstraint_eval_time = reinterpret_cast<PropertyRNA &>(rna_ActionConstraint_eval_time_);

static BoolPropertyRNA rna_ActionConstraint_use_eval_time_ = {
	{nullptr, &rna_ActionConstraint_eval_time,
	-1, "use_eval_time", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Use Evaluation Time",
	"Interpolate between Action Start and End frames, with the Evaluation Time slider instead of the Target object/bone",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ActionConstraint_use_eval_time_get, ActionConstraint_use_eval_time_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_ActionConstraint_use_eval_time = reinterpret_cast<PropertyRNA &>(rna_ActionConstraint_use_eval_time_);

StructRNA RNA_ActionConstraint = {
	{(ContainerRNA *)&RNA_CopyScaleConstraint, (ContainerRNA *)&RNA_LockedTrackConstraint,
	nullptr,
	{&rna_ActionConstraint_target, &rna_ActionConstraint_use_eval_time}},
	"ActionConstraint", nullptr, nullptr, 516, nullptr, "Action Constraint",
	"Map an action to the transform axes of a bone",
	"*", 130,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Copy Scale Constraint */
static PointerPropertyRNA rna_CopyScaleConstraint_target_ = {
	{&rna_CopyScaleConstraint_subtarget, nullptr,
	-1, "target", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Target",
	"Target object",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyScaleConstraint_target_get, CopyScaleConstraint_target_set, nullptr, nullptr,&RNA_Object
};
PropertyRNA &rna_CopyScaleConstraint_target = reinterpret_cast<PropertyRNA &>(rna_CopyScaleConstraint_target_);

static StringPropertyRNA rna_CopyScaleConstraint_subtarget_ = {
	{&rna_CopyScaleConstraint_use_x, &rna_CopyScaleConstraint_target,
	-1, "subtarget", 262145, 1, 0, 0, 0, PropertyPathTemplateType(0), "Sub-Target",
	"Armature bone, mesh or lattice vertex group, ...",
	0, "*",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {64, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyScaleConstraint_subtarget_get, CopyScaleConstraint_subtarget_length, CopyScaleConstraint_subtarget_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 64, ""
};
PropertyRNA &rna_CopyScaleConstraint_subtarget = reinterpret_cast<PropertyRNA &>(rna_CopyScaleConstraint_subtarget_);

static BoolPropertyRNA rna_CopyScaleConstraint_use_x_ = {
	{&rna_CopyScaleConstraint_use_y, &rna_CopyScaleConstraint_subtarget,
	-1, "use_x", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Copy X",
	"Copy the target\'s X scale",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyScaleConstraint_use_x_get, CopyScaleConstraint_use_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_CopyScaleConstraint_use_x = reinterpret_cast<PropertyRNA &>(rna_CopyScaleConstraint_use_x_);

static BoolPropertyRNA rna_CopyScaleConstraint_use_y_ = {
	{&rna_CopyScaleConstraint_use_z, &rna_CopyScaleConstraint_use_x,
	-1, "use_y", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Copy Y",
	"Copy the target\'s Y scale",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyScaleConstraint_use_y_get, CopyScaleConstraint_use_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_CopyScaleConstraint_use_y = reinterpret_cast<PropertyRNA &>(rna_CopyScaleConstraint_use_y_);

static BoolPropertyRNA rna_CopyScaleConstraint_use_z_ = {
	{&rna_CopyScaleConstraint_power, &rna_CopyScaleConstraint_use_y,
	-1, "use_z", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Copy Z",
	"Copy the target\'s Z scale",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyScaleConstraint_use_z_get, CopyScaleConstraint_use_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_CopyScaleConstraint_use_z = reinterpret_cast<PropertyRNA &>(rna_CopyScaleConstraint_use_z_);

static FloatPropertyRNA rna_CopyScaleConstraint_power_ = {
	{&rna_CopyScaleConstraint_use_make_uniform, &rna_CopyScaleConstraint_use_z,
	-1, "power", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Power",
	"Raise the target\'s scale to the specified power",
	0, "Constraint",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bSizeLikeConstraint, power), RawPropertyType(5), nullptr},
	CopyScaleConstraint_power_get, CopyScaleConstraint_power_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -FLT_MAX, FLT_MAX, -FLT_MAX, FLT_MAX, 1.0f, 3, nullptr, nullptr, 1.0f, nullptr
};
PropertyRNA &rna_CopyScaleConstraint_power = reinterpret_cast<PropertyRNA &>(rna_CopyScaleConstraint_power_);

static BoolPropertyRNA rna_CopyScaleConstraint_use_make_uniform_ = {
	{&rna_CopyScaleConstraint_use_offset, &rna_CopyScaleConstraint_power,
	-1, "use_make_uniform", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Make Uniform",
	"Redistribute the copied change in volume equally between the three axes of the owner",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyScaleConstraint_use_make_uniform_get, CopyScaleConstraint_use_make_uniform_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_CopyScaleConstraint_use_make_uniform = reinterpret_cast<PropertyRNA &>(rna_CopyScaleConstraint_use_make_uniform_);

static BoolPropertyRNA rna_CopyScaleConstraint_use_offset_ = {
	{&rna_CopyScaleConstraint_use_add, &rna_CopyScaleConstraint_use_make_uniform,
	-1, "use_offset", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Offset",
	"Combine original scale with copied scale",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyScaleConstraint_use_offset_get, CopyScaleConstraint_use_offset_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_CopyScaleConstraint_use_offset = reinterpret_cast<PropertyRNA &>(rna_CopyScaleConstraint_use_offset_);

static BoolPropertyRNA rna_CopyScaleConstraint_use_add_ = {
	{nullptr, &rna_CopyScaleConstraint_use_offset,
	-1, "use_add", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Additive",
	"Use addition instead of multiplication to combine scale (2.7 compatibility)",
	0, "Constraint",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyScaleConstraint_use_add_get, CopyScaleConstraint_use_add_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_CopyScaleConstraint_use_add = reinterpret_cast<PropertyRNA &>(rna_CopyScaleConstraint_use_add_);

StructRNA RNA_CopyScaleConstraint = {
	{(ContainerRNA *)&RNA_MaintainVolumeConstraint, (ContainerRNA *)&RNA_ActionConstraint,
	nullptr,
	{&rna_CopyScaleConstraint_target, &rna_CopyScaleConstraint_use_add}},
	"CopyScaleConstraint", nullptr, nullptr, 516, nullptr, "Copy Scale Constraint",
	"Copy the scale of the target",
	"*", 421,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Maintain Volume Constraint */
static const EnumPropertyItem rna_MaintainVolumeConstraint_free_axis_items[4] = {
	{0, "SAMEVOL_X", 0, "X", ""},
	{1, "SAMEVOL_Y", 0, "Y", ""},
	{2, "SAMEVOL_Z", 0, "Z", ""},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_MaintainVolumeConstraint_free_axis_ = {
	{&rna_MaintainVolumeConstraint_mode, nullptr,
	-1, "free_axis", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Free Axis",
	"The free scaling axis of the object",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bSameVolumeConstraint, free_axis), RawPropertyType(2), nullptr},
	MaintainVolumeConstraint_free_axis_get, MaintainVolumeConstraint_free_axis_set, nullptr, nullptr, nullptr, nullptr, rna_MaintainVolumeConstraint_free_axis_items, 3, 0
};
PropertyRNA &rna_MaintainVolumeConstraint_free_axis = reinterpret_cast<PropertyRNA &>(rna_MaintainVolumeConstraint_free_axis_);

static const EnumPropertyItem rna_MaintainVolumeConstraint_mode_items[4] = {
	{0, "STRICT", 0, "Strict", "Volume is strictly preserved, overriding the scaling of non-free axes"},
	{1, "UNIFORM", 0, "Uniform", "Volume is preserved when the object is scaled uniformly. Deviations from uniform scale on non-free axes are passed through."},
	{2, "SINGLE_AXIS", 0, "Single Axis", "Volume is preserved when the object is scaled only on the free axis. Non-free axis scaling is passed through."},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_MaintainVolumeConstraint_mode_ = {
	{&rna_MaintainVolumeConstraint_volume, &rna_MaintainVolumeConstraint_free_axis,
	-1, "mode", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Mode",
	"The way the constraint treats original non-free axis scaling",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bSameVolumeConstraint, mode), RawPropertyType(2), nullptr},
	MaintainVolumeConstraint_mode_get, MaintainVolumeConstraint_mode_set, nullptr, nullptr, nullptr, nullptr, rna_MaintainVolumeConstraint_mode_items, 3, 0
};
PropertyRNA &rna_MaintainVolumeConstraint_mode = reinterpret_cast<PropertyRNA &>(rna_MaintainVolumeConstraint_mode_);

static FloatPropertyRNA rna_MaintainVolumeConstraint_volume_ = {
	{nullptr, &rna_MaintainVolumeConstraint_mode,
	-1, "volume", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Volume",
	"Volume of the bone at rest",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bSameVolumeConstraint, volume), RawPropertyType(5), nullptr},
	MaintainVolumeConstraint_volume_get, MaintainVolumeConstraint_volume_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0010000000f, 100.0f, 0.0f, FLT_MAX, 1.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_MaintainVolumeConstraint_volume = reinterpret_cast<PropertyRNA &>(rna_MaintainVolumeConstraint_volume_);

StructRNA RNA_MaintainVolumeConstraint = {
	{(ContainerRNA *)&RNA_CopyLocationConstraint, (ContainerRNA *)&RNA_CopyScaleConstraint,
	nullptr,
	{&rna_MaintainVolumeConstraint_free_axis, &rna_MaintainVolumeConstraint_volume}},
	"MaintainVolumeConstraint", nullptr, nullptr, 516, nullptr, "Maintain Volume Constraint",
	"Maintain a constant volume along a single scaling axis",
	"*", 419,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Copy Location Constraint */
static FloatPropertyRNA rna_CopyLocationConstraint_head_tail_ = {
	{&rna_CopyLocationConstraint_use_bbone_shape, nullptr,
	-1, "head_tail", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Head/Tail",
	"Target along length of bone: Head is 0, Tail is 1",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_FACTOR) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bConstraint, headtail), RawPropertyType(5), nullptr},
	CopyLocationConstraint_head_tail_get, CopyLocationConstraint_head_tail_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0f, 1.0f, 0.0f, 1.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_CopyLocationConstraint_head_tail = reinterpret_cast<PropertyRNA &>(rna_CopyLocationConstraint_head_tail_);

static BoolPropertyRNA rna_CopyLocationConstraint_use_bbone_shape_ = {
	{&rna_CopyLocationConstraint_target, &rna_CopyLocationConstraint_head_tail,
	-1, "use_bbone_shape", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Follow B-Bone",
	"Follow shape of B-Bone segments when calculating Head/Tail position",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyLocationConstraint_use_bbone_shape_get, CopyLocationConstraint_use_bbone_shape_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_CopyLocationConstraint_use_bbone_shape = reinterpret_cast<PropertyRNA &>(rna_CopyLocationConstraint_use_bbone_shape_);

static PointerPropertyRNA rna_CopyLocationConstraint_target_ = {
	{&rna_CopyLocationConstraint_subtarget, &rna_CopyLocationConstraint_use_bbone_shape,
	-1, "target", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Target",
	"Target object",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyLocationConstraint_target_get, CopyLocationConstraint_target_set, nullptr, nullptr,&RNA_Object
};
PropertyRNA &rna_CopyLocationConstraint_target = reinterpret_cast<PropertyRNA &>(rna_CopyLocationConstraint_target_);

static StringPropertyRNA rna_CopyLocationConstraint_subtarget_ = {
	{&rna_CopyLocationConstraint_use_x, &rna_CopyLocationConstraint_target,
	-1, "subtarget", 262145, 1, 0, 0, 0, PropertyPathTemplateType(0), "Sub-Target",
	"Armature bone, mesh or lattice vertex group, ...",
	0, "*",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {64, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyLocationConstraint_subtarget_get, CopyLocationConstraint_subtarget_length, CopyLocationConstraint_subtarget_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 64, ""
};
PropertyRNA &rna_CopyLocationConstraint_subtarget = reinterpret_cast<PropertyRNA &>(rna_CopyLocationConstraint_subtarget_);

static BoolPropertyRNA rna_CopyLocationConstraint_use_x_ = {
	{&rna_CopyLocationConstraint_use_y, &rna_CopyLocationConstraint_subtarget,
	-1, "use_x", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Copy X",
	"Copy the target\'s X location",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyLocationConstraint_use_x_get, CopyLocationConstraint_use_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_CopyLocationConstraint_use_x = reinterpret_cast<PropertyRNA &>(rna_CopyLocationConstraint_use_x_);

static BoolPropertyRNA rna_CopyLocationConstraint_use_y_ = {
	{&rna_CopyLocationConstraint_use_z, &rna_CopyLocationConstraint_use_x,
	-1, "use_y", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Copy Y",
	"Copy the target\'s Y location",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyLocationConstraint_use_y_get, CopyLocationConstraint_use_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_CopyLocationConstraint_use_y = reinterpret_cast<PropertyRNA &>(rna_CopyLocationConstraint_use_y_);

static BoolPropertyRNA rna_CopyLocationConstraint_use_z_ = {
	{&rna_CopyLocationConstraint_invert_x, &rna_CopyLocationConstraint_use_y,
	-1, "use_z", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Copy Z",
	"Copy the target\'s Z location",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyLocationConstraint_use_z_get, CopyLocationConstraint_use_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_CopyLocationConstraint_use_z = reinterpret_cast<PropertyRNA &>(rna_CopyLocationConstraint_use_z_);

static BoolPropertyRNA rna_CopyLocationConstraint_invert_x_ = {
	{&rna_CopyLocationConstraint_invert_y, &rna_CopyLocationConstraint_use_z,
	-1, "invert_x", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Invert X",
	"Invert the X location",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyLocationConstraint_invert_x_get, CopyLocationConstraint_invert_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_CopyLocationConstraint_invert_x = reinterpret_cast<PropertyRNA &>(rna_CopyLocationConstraint_invert_x_);

static BoolPropertyRNA rna_CopyLocationConstraint_invert_y_ = {
	{&rna_CopyLocationConstraint_invert_z, &rna_CopyLocationConstraint_invert_x,
	-1, "invert_y", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Invert Y",
	"Invert the Y location",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyLocationConstraint_invert_y_get, CopyLocationConstraint_invert_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_CopyLocationConstraint_invert_y = reinterpret_cast<PropertyRNA &>(rna_CopyLocationConstraint_invert_y_);

static BoolPropertyRNA rna_CopyLocationConstraint_invert_z_ = {
	{&rna_CopyLocationConstraint_use_offset, &rna_CopyLocationConstraint_invert_y,
	-1, "invert_z", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Invert Z",
	"Invert the Z location",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyLocationConstraint_invert_z_get, CopyLocationConstraint_invert_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_CopyLocationConstraint_invert_z = reinterpret_cast<PropertyRNA &>(rna_CopyLocationConstraint_invert_z_);

static BoolPropertyRNA rna_CopyLocationConstraint_use_offset_ = {
	{nullptr, &rna_CopyLocationConstraint_invert_z,
	-1, "use_offset", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Offset",
	"Add original location into copied location",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyLocationConstraint_use_offset_get, CopyLocationConstraint_use_offset_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_CopyLocationConstraint_use_offset = reinterpret_cast<PropertyRNA &>(rna_CopyLocationConstraint_use_offset_);

StructRNA RNA_CopyLocationConstraint = {
	{(ContainerRNA *)&RNA_CopyRotationConstraint, (ContainerRNA *)&RNA_MaintainVolumeConstraint,
	nullptr,
	{&rna_CopyLocationConstraint_head_tail, &rna_CopyLocationConstraint_use_offset}},
	"CopyLocationConstraint", nullptr, nullptr, 516, nullptr, "Copy Location Constraint",
	"Copy the location of the target",
	"*", 413,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Copy Rotation Constraint */
static PointerPropertyRNA rna_CopyRotationConstraint_target_ = {
	{&rna_CopyRotationConstraint_subtarget, nullptr,
	-1, "target", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Target",
	"Target object",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyRotationConstraint_target_get, CopyRotationConstraint_target_set, nullptr, nullptr,&RNA_Object
};
PropertyRNA &rna_CopyRotationConstraint_target = reinterpret_cast<PropertyRNA &>(rna_CopyRotationConstraint_target_);

static StringPropertyRNA rna_CopyRotationConstraint_subtarget_ = {
	{&rna_CopyRotationConstraint_use_x, &rna_CopyRotationConstraint_target,
	-1, "subtarget", 262145, 1, 0, 0, 0, PropertyPathTemplateType(0), "Sub-Target",
	"Armature bone, mesh or lattice vertex group, ...",
	0, "*",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {64, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyRotationConstraint_subtarget_get, CopyRotationConstraint_subtarget_length, CopyRotationConstraint_subtarget_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 64, ""
};
PropertyRNA &rna_CopyRotationConstraint_subtarget = reinterpret_cast<PropertyRNA &>(rna_CopyRotationConstraint_subtarget_);

static BoolPropertyRNA rna_CopyRotationConstraint_use_x_ = {
	{&rna_CopyRotationConstraint_use_y, &rna_CopyRotationConstraint_subtarget,
	-1, "use_x", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Copy X",
	"Copy the target\'s X rotation",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyRotationConstraint_use_x_get, CopyRotationConstraint_use_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_CopyRotationConstraint_use_x = reinterpret_cast<PropertyRNA &>(rna_CopyRotationConstraint_use_x_);

static BoolPropertyRNA rna_CopyRotationConstraint_use_y_ = {
	{&rna_CopyRotationConstraint_use_z, &rna_CopyRotationConstraint_use_x,
	-1, "use_y", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Copy Y",
	"Copy the target\'s Y rotation",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyRotationConstraint_use_y_get, CopyRotationConstraint_use_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_CopyRotationConstraint_use_y = reinterpret_cast<PropertyRNA &>(rna_CopyRotationConstraint_use_y_);

static BoolPropertyRNA rna_CopyRotationConstraint_use_z_ = {
	{&rna_CopyRotationConstraint_invert_x, &rna_CopyRotationConstraint_use_y,
	-1, "use_z", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Copy Z",
	"Copy the target\'s Z rotation",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyRotationConstraint_use_z_get, CopyRotationConstraint_use_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_CopyRotationConstraint_use_z = reinterpret_cast<PropertyRNA &>(rna_CopyRotationConstraint_use_z_);

static BoolPropertyRNA rna_CopyRotationConstraint_invert_x_ = {
	{&rna_CopyRotationConstraint_invert_y, &rna_CopyRotationConstraint_use_z,
	-1, "invert_x", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Invert X",
	"Invert the X rotation",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyRotationConstraint_invert_x_get, CopyRotationConstraint_invert_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_CopyRotationConstraint_invert_x = reinterpret_cast<PropertyRNA &>(rna_CopyRotationConstraint_invert_x_);

static BoolPropertyRNA rna_CopyRotationConstraint_invert_y_ = {
	{&rna_CopyRotationConstraint_invert_z, &rna_CopyRotationConstraint_invert_x,
	-1, "invert_y", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Invert Y",
	"Invert the Y rotation",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyRotationConstraint_invert_y_get, CopyRotationConstraint_invert_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_CopyRotationConstraint_invert_y = reinterpret_cast<PropertyRNA &>(rna_CopyRotationConstraint_invert_y_);

static BoolPropertyRNA rna_CopyRotationConstraint_invert_z_ = {
	{&rna_CopyRotationConstraint_euler_order, &rna_CopyRotationConstraint_invert_y,
	-1, "invert_z", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Invert Z",
	"Invert the Z rotation",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyRotationConstraint_invert_z_get, CopyRotationConstraint_invert_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_CopyRotationConstraint_invert_z = reinterpret_cast<PropertyRNA &>(rna_CopyRotationConstraint_invert_z_);

static const EnumPropertyItem rna_CopyRotationConstraint_euler_order_items[8] = {
	{0, "AUTO", 0, "Default", "Euler using the default rotation order"},
	{1, "XYZ", 0, "XYZ Euler", "Euler using the XYZ rotation order"},
	{2, "XZY", 0, "XZY Euler", "Euler using the XZY rotation order"},
	{3, "YXZ", 0, "YXZ Euler", "Euler using the YXZ rotation order"},
	{4, "YZX", 0, "YZX Euler", "Euler using the YZX rotation order"},
	{5, "ZXY", 0, "ZXY Euler", "Euler using the ZXY rotation order"},
	{6, "ZYX", 0, "ZYX Euler", "Euler using the ZYX rotation order"},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_CopyRotationConstraint_euler_order_ = {
	{&rna_CopyRotationConstraint_mix_mode, &rna_CopyRotationConstraint_invert_z,
	-1, "euler_order", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Euler Order",
	"Explicitly specify the euler rotation order",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bRotateLikeConstraint, euler_order), RawPropertyType(2), nullptr},
	CopyRotationConstraint_euler_order_get, CopyRotationConstraint_euler_order_set, nullptr, nullptr, nullptr, nullptr, rna_CopyRotationConstraint_euler_order_items, 7, 0
};
PropertyRNA &rna_CopyRotationConstraint_euler_order = reinterpret_cast<PropertyRNA &>(rna_CopyRotationConstraint_euler_order_);

static const EnumPropertyItem rna_CopyRotationConstraint_mix_mode_items[6] = {
	{0, "REPLACE", 0, "Replace", "Replace the original rotation with copied"},
	{2, "ADD", 0, "Add", "Add euler component values together"},
	{3, "BEFORE", 0, "Before Original", "Apply copied rotation before original, as if the constraint target is a parent"},
	{4, "AFTER", 0, "After Original", "Apply copied rotation after original, as if the constraint target is a child"},
	{1, "OFFSET", 0, "Offset (Legacy)", "Combine rotations like the original Offset checkbox. Does not work well for multiple axis rotations."},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_CopyRotationConstraint_mix_mode_ = {
	{&rna_CopyRotationConstraint_use_offset, &rna_CopyRotationConstraint_euler_order,
	-1, "mix_mode", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Mix Mode",
	"Specify how the copied and existing rotations are combined",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bRotateLikeConstraint, mix_mode), RawPropertyType(2), nullptr},
	CopyRotationConstraint_mix_mode_get, CopyRotationConstraint_mix_mode_set, nullptr, nullptr, nullptr, nullptr, rna_CopyRotationConstraint_mix_mode_items, 5, 0
};
PropertyRNA &rna_CopyRotationConstraint_mix_mode = reinterpret_cast<PropertyRNA &>(rna_CopyRotationConstraint_mix_mode_);

static BoolPropertyRNA rna_CopyRotationConstraint_use_offset_ = {
	{nullptr, &rna_CopyRotationConstraint_mix_mode,
	-1, "use_offset", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Offset",
	"DEPRECATED: Add original rotation into copied rotation",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyRotationConstraint_use_offset_get, CopyRotationConstraint_use_offset_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_CopyRotationConstraint_use_offset = reinterpret_cast<PropertyRNA &>(rna_CopyRotationConstraint_use_offset_);

StructRNA RNA_CopyRotationConstraint = {
	{(ContainerRNA *)&RNA_CopyTransformsConstraint, (ContainerRNA *)&RNA_CopyLocationConstraint,
	nullptr,
	{&rna_CopyRotationConstraint_target, &rna_CopyRotationConstraint_use_offset}},
	"CopyRotationConstraint", nullptr, nullptr, 516, nullptr, "Copy Rotation Constraint",
	"Copy the rotation of the target",
	"*", 417,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Copy Transforms Constraint */
static FloatPropertyRNA rna_CopyTransformsConstraint_head_tail_ = {
	{&rna_CopyTransformsConstraint_use_bbone_shape, nullptr,
	-1, "head_tail", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Head/Tail",
	"Target along length of bone: Head is 0, Tail is 1",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_FACTOR) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bConstraint, headtail), RawPropertyType(5), nullptr},
	CopyTransformsConstraint_head_tail_get, CopyTransformsConstraint_head_tail_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0f, 1.0f, 0.0f, 1.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_CopyTransformsConstraint_head_tail = reinterpret_cast<PropertyRNA &>(rna_CopyTransformsConstraint_head_tail_);

static BoolPropertyRNA rna_CopyTransformsConstraint_use_bbone_shape_ = {
	{&rna_CopyTransformsConstraint_target, &rna_CopyTransformsConstraint_head_tail,
	-1, "use_bbone_shape", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Follow B-Bone",
	"Follow shape of B-Bone segments when calculating Head/Tail position",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyTransformsConstraint_use_bbone_shape_get, CopyTransformsConstraint_use_bbone_shape_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_CopyTransformsConstraint_use_bbone_shape = reinterpret_cast<PropertyRNA &>(rna_CopyTransformsConstraint_use_bbone_shape_);

static PointerPropertyRNA rna_CopyTransformsConstraint_target_ = {
	{&rna_CopyTransformsConstraint_subtarget, &rna_CopyTransformsConstraint_use_bbone_shape,
	-1, "target", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Target",
	"Target object",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyTransformsConstraint_target_get, CopyTransformsConstraint_target_set, nullptr, nullptr,&RNA_Object
};
PropertyRNA &rna_CopyTransformsConstraint_target = reinterpret_cast<PropertyRNA &>(rna_CopyTransformsConstraint_target_);

static StringPropertyRNA rna_CopyTransformsConstraint_subtarget_ = {
	{&rna_CopyTransformsConstraint_remove_target_shear, &rna_CopyTransformsConstraint_target,
	-1, "subtarget", 262145, 1, 0, 0, 0, PropertyPathTemplateType(0), "Sub-Target",
	"Armature bone, mesh or lattice vertex group, ...",
	0, "*",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {64, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyTransformsConstraint_subtarget_get, CopyTransformsConstraint_subtarget_length, CopyTransformsConstraint_subtarget_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 64, ""
};
PropertyRNA &rna_CopyTransformsConstraint_subtarget = reinterpret_cast<PropertyRNA &>(rna_CopyTransformsConstraint_subtarget_);

static BoolPropertyRNA rna_CopyTransformsConstraint_remove_target_shear_ = {
	{&rna_CopyTransformsConstraint_mix_mode, &rna_CopyTransformsConstraint_subtarget,
	-1, "remove_target_shear", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Remove Target Shear",
	"Remove shear from the target transformation before combining",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CopyTransformsConstraint_remove_target_shear_get, CopyTransformsConstraint_remove_target_shear_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_CopyTransformsConstraint_remove_target_shear = reinterpret_cast<PropertyRNA &>(rna_CopyTransformsConstraint_remove_target_shear_);

static const EnumPropertyItem rna_CopyTransformsConstraint_mix_mode_items[10] = {
	{0, "REPLACE", 0, "Replace", "Replace the original transformation with copied"},
	{0, "", 0, nullptr, nullptr},
	{5, "BEFORE_FULL", 0, "Before Original (Full)", "Apply copied transformation before original, using simple matrix multiplication as if the constraint target is a parent in Full Inherit Scale mode. Will create shear when combining rotation and non-uniform scale."},
	{1, "BEFORE", 0, "Before Original (Aligned)", "Apply copied transformation before original, as if the constraint target is a parent in Aligned Inherit Scale mode. This effectively uses Full for location and Split Channels for rotation and scale."},
	{3, "BEFORE_SPLIT", 0, "Before Original (Split Channels)", "Apply copied transformation before original, handling location, rotation and scale separately, similar to a sequence of three Copy constraints"},
	{0, "", 0, nullptr, nullptr},
	{6, "AFTER_FULL", 0, "After Original (Full)", "Apply copied transformation after original, using simple matrix multiplication as if the constraint target is a child in Full Inherit Scale mode. Will create shear when combining rotation and non-uniform scale."},
	{2, "AFTER", 0, "After Original (Aligned)", "Apply copied transformation after original, as if the constraint target is a child in Aligned Inherit Scale mode. This effectively uses Full for location and Split Channels for rotation and scale."},
	{4, "AFTER_SPLIT", 0, "After Original (Split Channels)", "Apply copied transformation after original, handling location, rotation and scale separately, similar to a sequence of three Copy constraints"},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_CopyTransformsConstraint_mix_mode_ = {
	{nullptr, &rna_CopyTransformsConstraint_remove_target_shear,
	-1, "mix_mode", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Mix Mode",
	"Specify how the copied and existing transformations are combined",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransLikeConstraint, mix_mode), RawPropertyType(2), nullptr},
	CopyTransformsConstraint_mix_mode_get, CopyTransformsConstraint_mix_mode_set, nullptr, nullptr, nullptr, nullptr, rna_CopyTransformsConstraint_mix_mode_items, 9, 0
};
PropertyRNA &rna_CopyTransformsConstraint_mix_mode = reinterpret_cast<PropertyRNA &>(rna_CopyTransformsConstraint_mix_mode_);

StructRNA RNA_CopyTransformsConstraint = {
	{(ContainerRNA *)&RNA_FloorConstraint, (ContainerRNA *)&RNA_CopyRotationConstraint,
	nullptr,
	{&rna_CopyTransformsConstraint_head_tail, &rna_CopyTransformsConstraint_mix_mode}},
	"CopyTransformsConstraint", nullptr, nullptr, 516, nullptr, "Copy Transforms Constraint",
	"Copy all the transforms of the target",
	"*", 428,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Floor Constraint */
static PointerPropertyRNA rna_FloorConstraint_target_ = {
	{&rna_FloorConstraint_subtarget, nullptr,
	-1, "target", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Target",
	"Target object",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	FloorConstraint_target_get, FloorConstraint_target_set, nullptr, nullptr,&RNA_Object
};
PropertyRNA &rna_FloorConstraint_target = reinterpret_cast<PropertyRNA &>(rna_FloorConstraint_target_);

static StringPropertyRNA rna_FloorConstraint_subtarget_ = {
	{&rna_FloorConstraint_floor_location, &rna_FloorConstraint_target,
	-1, "subtarget", 262145, 1, 0, 0, 0, PropertyPathTemplateType(0), "Sub-Target",
	"Armature bone, mesh or lattice vertex group, ...",
	0, "*",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {64, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	FloorConstraint_subtarget_get, FloorConstraint_subtarget_length, FloorConstraint_subtarget_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 64, ""
};
PropertyRNA &rna_FloorConstraint_subtarget = reinterpret_cast<PropertyRNA &>(rna_FloorConstraint_subtarget_);

static const EnumPropertyItem rna_FloorConstraint_floor_location_items[7] = {
	{0, "FLOOR_X", 0, "X", ""},
	{1, "FLOOR_Y", 0, "Y", ""},
	{2, "FLOOR_Z", 0, "Z", ""},
	{3, "FLOOR_NEGATIVE_X", 0, "-X", ""},
	{4, "FLOOR_NEGATIVE_Y", 0, "-Y", ""},
	{5, "FLOOR_NEGATIVE_Z", 0, "-Z", ""},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_FloorConstraint_floor_location_ = {
	{&rna_FloorConstraint_use_rotation, &rna_FloorConstraint_subtarget,
	-1, "floor_location", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Floor Location",
	"Location of target that object will not pass through",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bMinMaxConstraint, minmaxflag), RawPropertyType(0), nullptr},
	FloorConstraint_floor_location_get, FloorConstraint_floor_location_set, nullptr, nullptr, nullptr, nullptr, rna_FloorConstraint_floor_location_items, 6, 0
};
PropertyRNA &rna_FloorConstraint_floor_location = reinterpret_cast<PropertyRNA &>(rna_FloorConstraint_floor_location_);

static BoolPropertyRNA rna_FloorConstraint_use_rotation_ = {
	{&rna_FloorConstraint_offset, &rna_FloorConstraint_floor_location,
	-1, "use_rotation", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Use Rotation",
	"Use the target\'s rotation to determine floor",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	FloorConstraint_use_rotation_get, FloorConstraint_use_rotation_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_FloorConstraint_use_rotation = reinterpret_cast<PropertyRNA &>(rna_FloorConstraint_use_rotation_);

static FloatPropertyRNA rna_FloorConstraint_offset_ = {
	{nullptr, &rna_FloorConstraint_use_rotation,
	-1, "offset", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Offset",
	"Offset of floor from object origin",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_DISTANCE) | int(PROP_UNIT_LENGTH)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bMinMaxConstraint, offset), RawPropertyType(5), nullptr},
	FloorConstraint_offset_get, FloorConstraint_offset_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -100.0f, 100.0f, -FLT_MAX, FLT_MAX, 1.0f, -1, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_FloorConstraint_offset = reinterpret_cast<PropertyRNA &>(rna_FloorConstraint_offset_);

StructRNA RNA_FloorConstraint = {
	{(ContainerRNA *)&RNA_TrackToConstraint, (ContainerRNA *)&RNA_CopyTransformsConstraint,
	nullptr,
	{&rna_FloorConstraint_target, &rna_FloorConstraint_offset}},
	"FloorConstraint", nullptr, nullptr, 516, nullptr, "Floor Constraint",
	"Use the target object for location limitation",
	"*", 408,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Track To Constraint */
static FloatPropertyRNA rna_TrackToConstraint_head_tail_ = {
	{&rna_TrackToConstraint_use_bbone_shape, nullptr,
	-1, "head_tail", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Head/Tail",
	"Target along length of bone: Head is 0, Tail is 1",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_FACTOR) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bConstraint, headtail), RawPropertyType(5), nullptr},
	TrackToConstraint_head_tail_get, TrackToConstraint_head_tail_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0f, 1.0f, 0.0f, 1.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TrackToConstraint_head_tail = reinterpret_cast<PropertyRNA &>(rna_TrackToConstraint_head_tail_);

static BoolPropertyRNA rna_TrackToConstraint_use_bbone_shape_ = {
	{&rna_TrackToConstraint_target, &rna_TrackToConstraint_head_tail,
	-1, "use_bbone_shape", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Follow B-Bone",
	"Follow shape of B-Bone segments when calculating Head/Tail position",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	TrackToConstraint_use_bbone_shape_get, TrackToConstraint_use_bbone_shape_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_TrackToConstraint_use_bbone_shape = reinterpret_cast<PropertyRNA &>(rna_TrackToConstraint_use_bbone_shape_);

static PointerPropertyRNA rna_TrackToConstraint_target_ = {
	{&rna_TrackToConstraint_subtarget, &rna_TrackToConstraint_use_bbone_shape,
	-1, "target", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Target",
	"Target object",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	TrackToConstraint_target_get, TrackToConstraint_target_set, nullptr, nullptr,&RNA_Object
};
PropertyRNA &rna_TrackToConstraint_target = reinterpret_cast<PropertyRNA &>(rna_TrackToConstraint_target_);

static StringPropertyRNA rna_TrackToConstraint_subtarget_ = {
	{&rna_TrackToConstraint_track_axis, &rna_TrackToConstraint_target,
	-1, "subtarget", 262145, 1, 0, 0, 0, PropertyPathTemplateType(0), "Sub-Target",
	"Armature bone, mesh or lattice vertex group, ...",
	0, "*",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {64, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	TrackToConstraint_subtarget_get, TrackToConstraint_subtarget_length, TrackToConstraint_subtarget_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 64, ""
};
PropertyRNA &rna_TrackToConstraint_subtarget = reinterpret_cast<PropertyRNA &>(rna_TrackToConstraint_subtarget_);

static const EnumPropertyItem rna_TrackToConstraint_track_axis_items[7] = {
	{0, "TRACK_X", 0, "X", ""},
	{1, "TRACK_Y", 0, "Y", ""},
	{2, "TRACK_Z", 0, "Z", ""},
	{3, "TRACK_NEGATIVE_X", 0, "-X", ""},
	{4, "TRACK_NEGATIVE_Y", 0, "-Y", ""},
	{5, "TRACK_NEGATIVE_Z", 0, "-Z", ""},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_TrackToConstraint_track_axis_ = {
	{&rna_TrackToConstraint_up_axis, &rna_TrackToConstraint_subtarget,
	-1, "track_axis", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Track Axis",
	"Axis that points to the target object",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTrackToConstraint, reserved1), RawPropertyType(0), nullptr},
	TrackToConstraint_track_axis_get, TrackToConstraint_track_axis_set, nullptr, nullptr, nullptr, nullptr, rna_TrackToConstraint_track_axis_items, 6, 0
};
PropertyRNA &rna_TrackToConstraint_track_axis = reinterpret_cast<PropertyRNA &>(rna_TrackToConstraint_track_axis_);

static const EnumPropertyItem rna_TrackToConstraint_up_axis_items[4] = {
	{0, "UP_X", 0, "X", ""},
	{1, "UP_Y", 0, "Y", ""},
	{2, "UP_Z", 0, "Z", ""},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_TrackToConstraint_up_axis_ = {
	{&rna_TrackToConstraint_use_target_z, &rna_TrackToConstraint_track_axis,
	-1, "up_axis", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Up Axis",
	"Axis that points upward",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTrackToConstraint, reserved2), RawPropertyType(0), nullptr},
	TrackToConstraint_up_axis_get, TrackToConstraint_up_axis_set, nullptr, nullptr, nullptr, nullptr, rna_TrackToConstraint_up_axis_items, 3, 0
};
PropertyRNA &rna_TrackToConstraint_up_axis = reinterpret_cast<PropertyRNA &>(rna_TrackToConstraint_up_axis_);

static BoolPropertyRNA rna_TrackToConstraint_use_target_z_ = {
	{nullptr, &rna_TrackToConstraint_up_axis,
	-1, "use_target_z", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Target Z",
	"Target\'s Z axis, not World Z axis, will constrain the Up direction",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	TrackToConstraint_use_target_z_get, TrackToConstraint_use_target_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_TrackToConstraint_use_target_z = reinterpret_cast<PropertyRNA &>(rna_TrackToConstraint_use_target_z_);

StructRNA RNA_TrackToConstraint = {
	{(ContainerRNA *)&RNA_KinematicConstraint, (ContainerRNA *)&RNA_FloorConstraint,
	nullptr,
	{&rna_TrackToConstraint_head_tail, &rna_TrackToConstraint_use_target_z}},
	"TrackToConstraint", nullptr, nullptr, 516, nullptr, "Track To Constraint",
	"Aim the constrained object toward the target",
	"*", 425,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Kinematic Constraint */
static PointerPropertyRNA rna_KinematicConstraint_target_ = {
	{&rna_KinematicConstraint_subtarget, nullptr,
	-1, "target", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Target",
	"Target object",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	KinematicConstraint_target_get, KinematicConstraint_target_set, nullptr, nullptr,&RNA_Object
};
PropertyRNA &rna_KinematicConstraint_target = reinterpret_cast<PropertyRNA &>(rna_KinematicConstraint_target_);

static StringPropertyRNA rna_KinematicConstraint_subtarget_ = {
	{&rna_KinematicConstraint_iterations, &rna_KinematicConstraint_target,
	-1, "subtarget", 262145, 1, 0, 0, 0, PropertyPathTemplateType(0), "Sub-Target",
	"Armature bone, mesh or lattice vertex group, ...",
	0, "*",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {64, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	KinematicConstraint_subtarget_get, KinematicConstraint_subtarget_length, KinematicConstraint_subtarget_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 64, ""
};
PropertyRNA &rna_KinematicConstraint_subtarget = reinterpret_cast<PropertyRNA &>(rna_KinematicConstraint_subtarget_);

static IntPropertyRNA rna_KinematicConstraint_iterations_ = {
	{&rna_KinematicConstraint_pole_target, &rna_KinematicConstraint_subtarget,
	-1, "iterations", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Iterations",
	"Maximum number of solving iterations",
	0, "*",
	PROP_INT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bKinematicConstraint, iterations), RawPropertyType(1), nullptr},
	KinematicConstraint_iterations_get, KinematicConstraint_iterations_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
	PROP_SCALE_LINEAR, 0, 10000, 0, 10000, 1, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_KinematicConstraint_iterations = reinterpret_cast<PropertyRNA &>(rna_KinematicConstraint_iterations_);

static PointerPropertyRNA rna_KinematicConstraint_pole_target_ = {
	{&rna_KinematicConstraint_pole_subtarget, &rna_KinematicConstraint_iterations,
	-1, "pole_target", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Pole Target",
	"Object for pole rotation",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	KinematicConstraint_pole_target_get, KinematicConstraint_pole_target_set, nullptr, nullptr,&RNA_Object
};
PropertyRNA &rna_KinematicConstraint_pole_target = reinterpret_cast<PropertyRNA &>(rna_KinematicConstraint_pole_target_);

static StringPropertyRNA rna_KinematicConstraint_pole_subtarget_ = {
	{&rna_KinematicConstraint_pole_angle, &rna_KinematicConstraint_pole_target,
	-1, "pole_subtarget", 262145, 1, 0, 0, 0, PropertyPathTemplateType(0), "Pole Sub-Target",
	"",
	0, "*",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {64, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	KinematicConstraint_pole_subtarget_get, KinematicConstraint_pole_subtarget_length, KinematicConstraint_pole_subtarget_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 64, ""
};
PropertyRNA &rna_KinematicConstraint_pole_subtarget = reinterpret_cast<PropertyRNA &>(rna_KinematicConstraint_pole_subtarget_);

static FloatPropertyRNA rna_KinematicConstraint_pole_angle_ = {
	{&rna_KinematicConstraint_weight, &rna_KinematicConstraint_pole_subtarget,
	-1, "pole_angle", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Pole Angle",
	"Pole rotation offset",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_ANGLE) | int(PROP_UNIT_ROTATION)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bKinematicConstraint, poleangle), RawPropertyType(5), nullptr},
	KinematicConstraint_pole_angle_get, KinematicConstraint_pole_angle_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -3.1415927410f, 3.1415927410f, -3.1415927410f, 3.1415927410f, 10.0f, 4, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_KinematicConstraint_pole_angle = reinterpret_cast<PropertyRNA &>(rna_KinematicConstraint_pole_angle_);

static FloatPropertyRNA rna_KinematicConstraint_weight_ = {
	{&rna_KinematicConstraint_orient_weight, &rna_KinematicConstraint_pole_angle,
	-1, "weight", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Weight",
	"For Tree-IK: Weight of position control for this target",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bKinematicConstraint, weight), RawPropertyType(5), nullptr},
	KinematicConstraint_weight_get, KinematicConstraint_weight_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0099999998f, 1.0f, 0.0099999998f, 1.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_KinematicConstraint_weight = reinterpret_cast<PropertyRNA &>(rna_KinematicConstraint_weight_);

static FloatPropertyRNA rna_KinematicConstraint_orient_weight_ = {
	{&rna_KinematicConstraint_chain_count, &rna_KinematicConstraint_weight,
	-1, "orient_weight", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Orientation Weight",
	"For Tree-IK: Weight of orientation control for this target",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bKinematicConstraint, orientweight), RawPropertyType(5), nullptr},
	KinematicConstraint_orient_weight_get, KinematicConstraint_orient_weight_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0099999998f, 1.0f, 0.0099999998f, 1.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_KinematicConstraint_orient_weight = reinterpret_cast<PropertyRNA &>(rna_KinematicConstraint_orient_weight_);

static IntPropertyRNA rna_KinematicConstraint_chain_count_ = {
	{&rna_KinematicConstraint_use_tail, &rna_KinematicConstraint_orient_weight,
	-1, "chain_count", 1, 1, 0, 4, 0, PropertyPathTemplateType(0), "Chain Length",
	"How many bones are included in the IK effect - 0 uses all bones",
	0, "*",
	PROP_INT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bKinematicConstraint, rootbone), RawPropertyType(1), nullptr},
	KinematicConstraint_chain_count_get, KinematicConstraint_chain_count_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
	PROP_SCALE_LINEAR, 0, 255, 0, 255, 1, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_KinematicConstraint_chain_count = reinterpret_cast<PropertyRNA &>(rna_KinematicConstraint_chain_count_);

static BoolPropertyRNA rna_KinematicConstraint_use_tail_ = {
	{&rna_KinematicConstraint_reference_axis, &rna_KinematicConstraint_chain_count,
	-1, "use_tail", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Use Tail",
	"Include bone\'s tail as last element in chain",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	KinematicConstraint_use_tail_get, KinematicConstraint_use_tail_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_KinematicConstraint_use_tail = reinterpret_cast<PropertyRNA &>(rna_KinematicConstraint_use_tail_);

static const EnumPropertyItem rna_KinematicConstraint_reference_axis_items[3] = {
	{0, "BONE", 0, "Bone", ""},
	{16384, "TARGET", 0, "Target", ""},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_KinematicConstraint_reference_axis_ = {
	{&rna_KinematicConstraint_use_location, &rna_KinematicConstraint_use_tail,
	-1, "reference_axis", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Axis Reference",
	"Constraint axis Lock options relative to Bone or Target reference",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bKinematicConstraint, flag), RawPropertyType(1), nullptr},
	KinematicConstraint_reference_axis_get, KinematicConstraint_reference_axis_set, nullptr, nullptr, nullptr, nullptr, rna_KinematicConstraint_reference_axis_items, 2, 0
};
PropertyRNA &rna_KinematicConstraint_reference_axis = reinterpret_cast<PropertyRNA &>(rna_KinematicConstraint_reference_axis_);

static BoolPropertyRNA rna_KinematicConstraint_use_location_ = {
	{&rna_KinematicConstraint_lock_location_x, &rna_KinematicConstraint_reference_axis,
	-1, "use_location", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Position",
	"Chain follows position of target",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	KinematicConstraint_use_location_get, KinematicConstraint_use_location_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_KinematicConstraint_use_location = reinterpret_cast<PropertyRNA &>(rna_KinematicConstraint_use_location_);

static BoolPropertyRNA rna_KinematicConstraint_lock_location_x_ = {
	{&rna_KinematicConstraint_lock_location_y, &rna_KinematicConstraint_use_location,
	-1, "lock_location_x", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Lock X Pos",
	"Constraint position along X axis",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 101974016, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	KinematicConstraint_lock_location_x_get, KinematicConstraint_lock_location_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_KinematicConstraint_lock_location_x = reinterpret_cast<PropertyRNA &>(rna_KinematicConstraint_lock_location_x_);

static BoolPropertyRNA rna_KinematicConstraint_lock_location_y_ = {
	{&rna_KinematicConstraint_lock_location_z, &rna_KinematicConstraint_lock_location_x,
	-1, "lock_location_y", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Lock Y Pos",
	"Constraint position along Y axis",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 101974016, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	KinematicConstraint_lock_location_y_get, KinematicConstraint_lock_location_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_KinematicConstraint_lock_location_y = reinterpret_cast<PropertyRNA &>(rna_KinematicConstraint_lock_location_y_);

static BoolPropertyRNA rna_KinematicConstraint_lock_location_z_ = {
	{&rna_KinematicConstraint_use_rotation, &rna_KinematicConstraint_lock_location_y,
	-1, "lock_location_z", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Lock Z Pos",
	"Constraint position along Z axis",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 101974016, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	KinematicConstraint_lock_location_z_get, KinematicConstraint_lock_location_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_KinematicConstraint_lock_location_z = reinterpret_cast<PropertyRNA &>(rna_KinematicConstraint_lock_location_z_);

static BoolPropertyRNA rna_KinematicConstraint_use_rotation_ = {
	{&rna_KinematicConstraint_lock_rotation_x, &rna_KinematicConstraint_lock_location_z,
	-1, "use_rotation", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Rotation",
	"Chain follows rotation of target",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	KinematicConstraint_use_rotation_get, KinematicConstraint_use_rotation_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_KinematicConstraint_use_rotation = reinterpret_cast<PropertyRNA &>(rna_KinematicConstraint_use_rotation_);

static BoolPropertyRNA rna_KinematicConstraint_lock_rotation_x_ = {
	{&rna_KinematicConstraint_lock_rotation_y, &rna_KinematicConstraint_use_rotation,
	-1, "lock_rotation_x", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Lock X Rotation",
	"Constraint rotation along X axis",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 101974016, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	KinematicConstraint_lock_rotation_x_get, KinematicConstraint_lock_rotation_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_KinematicConstraint_lock_rotation_x = reinterpret_cast<PropertyRNA &>(rna_KinematicConstraint_lock_rotation_x_);

static BoolPropertyRNA rna_KinematicConstraint_lock_rotation_y_ = {
	{&rna_KinematicConstraint_lock_rotation_z, &rna_KinematicConstraint_lock_rotation_x,
	-1, "lock_rotation_y", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Lock Y Rotation",
	"Constraint rotation along Y axis",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 101974016, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	KinematicConstraint_lock_rotation_y_get, KinematicConstraint_lock_rotation_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_KinematicConstraint_lock_rotation_y = reinterpret_cast<PropertyRNA &>(rna_KinematicConstraint_lock_rotation_y_);

static BoolPropertyRNA rna_KinematicConstraint_lock_rotation_z_ = {
	{&rna_KinematicConstraint_use_stretch, &rna_KinematicConstraint_lock_rotation_y,
	-1, "lock_rotation_z", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Lock Z Rotation",
	"Constraint rotation along Z axis",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 101974016, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	KinematicConstraint_lock_rotation_z_get, KinematicConstraint_lock_rotation_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_KinematicConstraint_lock_rotation_z = reinterpret_cast<PropertyRNA &>(rna_KinematicConstraint_lock_rotation_z_);

static BoolPropertyRNA rna_KinematicConstraint_use_stretch_ = {
	{&rna_KinematicConstraint_ik_type, &rna_KinematicConstraint_lock_rotation_z,
	-1, "use_stretch", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Stretch",
	"Enable IK Stretching",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	KinematicConstraint_use_stretch_get, KinematicConstraint_use_stretch_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_KinematicConstraint_use_stretch = reinterpret_cast<PropertyRNA &>(rna_KinematicConstraint_use_stretch_);

static const EnumPropertyItem rna_KinematicConstraint_ik_type_items[3] = {
	{0, "COPY_POSE", 0, "Copy Pose", ""},
	{1, "DISTANCE", 0, "Distance", ""},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_KinematicConstraint_ik_type_ = {
	{&rna_KinematicConstraint_limit_mode, &rna_KinematicConstraint_use_stretch,
	-1, "ik_type", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "IK Type",
	"",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	KinematicConstraint_ik_type_get, KinematicConstraint_ik_type_set, nullptr, nullptr, nullptr, nullptr, rna_KinematicConstraint_ik_type_items, 2, 0
};
PropertyRNA &rna_KinematicConstraint_ik_type = reinterpret_cast<PropertyRNA &>(rna_KinematicConstraint_ik_type_);

static const EnumPropertyItem rna_KinematicConstraint_limit_mode_items[4] = {
	{0, "LIMITDIST_INSIDE", 0, "Inside", "The object is constrained inside a virtual sphere around the target object, with a radius defined by the limit distance"},
	{1, "LIMITDIST_OUTSIDE", 0, "Outside", "The object is constrained outside a virtual sphere around the target object, with a radius defined by the limit distance"},
	{2, "LIMITDIST_ONSURFACE", 0, "On Surface", "The object is constrained on the surface of a virtual sphere around the target object, with a radius defined by the limit distance"},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_KinematicConstraint_limit_mode_ = {
	{&rna_KinematicConstraint_distance, &rna_KinematicConstraint_ik_type,
	-1, "limit_mode", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Limit Mode",
	"Distances in relation to sphere of influence to allow",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bKinematicConstraint, mode), RawPropertyType(1), nullptr},
	KinematicConstraint_limit_mode_get, KinematicConstraint_limit_mode_set, nullptr, nullptr, nullptr, nullptr, rna_KinematicConstraint_limit_mode_items, 3, 0
};
PropertyRNA &rna_KinematicConstraint_limit_mode = reinterpret_cast<PropertyRNA &>(rna_KinematicConstraint_limit_mode_);

static FloatPropertyRNA rna_KinematicConstraint_distance_ = {
	{nullptr, &rna_KinematicConstraint_limit_mode,
	-1, "distance", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Distance",
	"Radius of limiting sphere",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bKinematicConstraint, dist), RawPropertyType(5), nullptr},
	KinematicConstraint_distance_get, KinematicConstraint_distance_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0f, 100.0f, 0.0f, 100.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_KinematicConstraint_distance = reinterpret_cast<PropertyRNA &>(rna_KinematicConstraint_distance_);

StructRNA RNA_KinematicConstraint = {
	{(ContainerRNA *)&RNA_ClampToConstraint, (ContainerRNA *)&RNA_TrackToConstraint,
	nullptr,
	{&rna_KinematicConstraint_target, &rna_KinematicConstraint_distance}},
	"KinematicConstraint", nullptr, nullptr, 516, nullptr, "Kinematic Constraint",
	"Inverse Kinematics",
	"*", 411,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Clamp To Constraint */
static PointerPropertyRNA rna_ClampToConstraint_target_ = {
	{&rna_ClampToConstraint_main_axis, nullptr,
	-1, "target", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Target",
	"Target Object (Curves only)",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ClampToConstraint_target_get, ClampToConstraint_target_set, nullptr, rna_Curve_object_poll,&RNA_Object
};
PropertyRNA &rna_ClampToConstraint_target = reinterpret_cast<PropertyRNA &>(rna_ClampToConstraint_target_);

static const EnumPropertyItem rna_ClampToConstraint_main_axis_items[5] = {
	{0, "CLAMPTO_AUTO", 0, "Auto", ""},
	{1, "CLAMPTO_X", 0, "X", ""},
	{2, "CLAMPTO_Y", 0, "Y", ""},
	{3, "CLAMPTO_Z", 0, "Z", ""},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_ClampToConstraint_main_axis_ = {
	{&rna_ClampToConstraint_use_cyclic, &rna_ClampToConstraint_target,
	-1, "main_axis", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Main Axis",
	"Main axis of movement",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bClampToConstraint, flag), RawPropertyType(0), nullptr},
	ClampToConstraint_main_axis_get, ClampToConstraint_main_axis_set, nullptr, nullptr, nullptr, nullptr, rna_ClampToConstraint_main_axis_items, 4, 0
};
PropertyRNA &rna_ClampToConstraint_main_axis = reinterpret_cast<PropertyRNA &>(rna_ClampToConstraint_main_axis_);

static BoolPropertyRNA rna_ClampToConstraint_use_cyclic_ = {
	{nullptr, &rna_ClampToConstraint_main_axis,
	-1, "use_cyclic", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Cyclic",
	"Treat curve as cyclic curve (no clamping to curve bounding box)",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ClampToConstraint_use_cyclic_get, ClampToConstraint_use_cyclic_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_ClampToConstraint_use_cyclic = reinterpret_cast<PropertyRNA &>(rna_ClampToConstraint_use_cyclic_);

StructRNA RNA_ClampToConstraint = {
	{(ContainerRNA *)&RNA_LimitDistanceConstraint, (ContainerRNA *)&RNA_KinematicConstraint,
	nullptr,
	{&rna_ClampToConstraint_target, &rna_ClampToConstraint_use_cyclic}},
	"ClampToConstraint", nullptr, nullptr, 516, nullptr, "Clamp To Constraint",
	"Constrain an object\'s location to the nearest point along the target path",
	"*", 406,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Limit Distance Constraint */
static FloatPropertyRNA rna_LimitDistanceConstraint_head_tail_ = {
	{&rna_LimitDistanceConstraint_use_bbone_shape, nullptr,
	-1, "head_tail", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Head/Tail",
	"Target along length of bone: Head is 0, Tail is 1",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_FACTOR) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bConstraint, headtail), RawPropertyType(5), nullptr},
	LimitDistanceConstraint_head_tail_get, LimitDistanceConstraint_head_tail_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0f, 1.0f, 0.0f, 1.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_LimitDistanceConstraint_head_tail = reinterpret_cast<PropertyRNA &>(rna_LimitDistanceConstraint_head_tail_);

static BoolPropertyRNA rna_LimitDistanceConstraint_use_bbone_shape_ = {
	{&rna_LimitDistanceConstraint_target, &rna_LimitDistanceConstraint_head_tail,
	-1, "use_bbone_shape", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Follow B-Bone",
	"Follow shape of B-Bone segments when calculating Head/Tail position",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LimitDistanceConstraint_use_bbone_shape_get, LimitDistanceConstraint_use_bbone_shape_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_LimitDistanceConstraint_use_bbone_shape = reinterpret_cast<PropertyRNA &>(rna_LimitDistanceConstraint_use_bbone_shape_);

static PointerPropertyRNA rna_LimitDistanceConstraint_target_ = {
	{&rna_LimitDistanceConstraint_subtarget, &rna_LimitDistanceConstraint_use_bbone_shape,
	-1, "target", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Target",
	"Target object",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LimitDistanceConstraint_target_get, LimitDistanceConstraint_target_set, nullptr, nullptr,&RNA_Object
};
PropertyRNA &rna_LimitDistanceConstraint_target = reinterpret_cast<PropertyRNA &>(rna_LimitDistanceConstraint_target_);

static StringPropertyRNA rna_LimitDistanceConstraint_subtarget_ = {
	{&rna_LimitDistanceConstraint_distance, &rna_LimitDistanceConstraint_target,
	-1, "subtarget", 262145, 1, 0, 0, 0, PropertyPathTemplateType(0), "Sub-Target",
	"Armature bone, mesh or lattice vertex group, ...",
	0, "*",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {64, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LimitDistanceConstraint_subtarget_get, LimitDistanceConstraint_subtarget_length, LimitDistanceConstraint_subtarget_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 64, ""
};
PropertyRNA &rna_LimitDistanceConstraint_subtarget = reinterpret_cast<PropertyRNA &>(rna_LimitDistanceConstraint_subtarget_);

static FloatPropertyRNA rna_LimitDistanceConstraint_distance_ = {
	{&rna_LimitDistanceConstraint_limit_mode, &rna_LimitDistanceConstraint_subtarget,
	-1, "distance", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Distance",
	"Radius of limiting sphere",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_DISTANCE) | int(PROP_UNIT_LENGTH)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bDistLimitConstraint, dist), RawPropertyType(5), nullptr},
	LimitDistanceConstraint_distance_get, LimitDistanceConstraint_distance_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0f, 100.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_LimitDistanceConstraint_distance = reinterpret_cast<PropertyRNA &>(rna_LimitDistanceConstraint_distance_);

static const EnumPropertyItem rna_LimitDistanceConstraint_limit_mode_items[4] = {
	{0, "LIMITDIST_INSIDE", 0, "Inside", "The object is constrained inside a virtual sphere around the target object, with a radius defined by the limit distance"},
	{1, "LIMITDIST_OUTSIDE", 0, "Outside", "The object is constrained outside a virtual sphere around the target object, with a radius defined by the limit distance"},
	{2, "LIMITDIST_ONSURFACE", 0, "On Surface", "The object is constrained on the surface of a virtual sphere around the target object, with a radius defined by the limit distance"},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_LimitDistanceConstraint_limit_mode_ = {
	{&rna_LimitDistanceConstraint_use_transform_limit, &rna_LimitDistanceConstraint_distance,
	-1, "limit_mode", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Limit Mode",
	"Distances in relation to sphere of influence to allow",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bDistLimitConstraint, mode), RawPropertyType(1), nullptr},
	LimitDistanceConstraint_limit_mode_get, LimitDistanceConstraint_limit_mode_set, nullptr, nullptr, nullptr, nullptr, rna_LimitDistanceConstraint_limit_mode_items, 3, 0
};
PropertyRNA &rna_LimitDistanceConstraint_limit_mode = reinterpret_cast<PropertyRNA &>(rna_LimitDistanceConstraint_limit_mode_);

static BoolPropertyRNA rna_LimitDistanceConstraint_use_transform_limit_ = {
	{nullptr, &rna_LimitDistanceConstraint_limit_mode,
	-1, "use_transform_limit", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Affect Transform",
	"Transforms are affected by this constraint as well",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LimitDistanceConstraint_use_transform_limit_get, LimitDistanceConstraint_use_transform_limit_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_LimitDistanceConstraint_use_transform_limit = reinterpret_cast<PropertyRNA &>(rna_LimitDistanceConstraint_use_transform_limit_);

StructRNA RNA_LimitDistanceConstraint = {
	{(ContainerRNA *)&RNA_LimitScaleConstraint, (ContainerRNA *)&RNA_ClampToConstraint,
	nullptr,
	{&rna_LimitDistanceConstraint_head_tail, &rna_LimitDistanceConstraint_use_transform_limit}},
	"LimitDistanceConstraint", nullptr, nullptr, 516, nullptr, "Limit Distance Constraint",
	"Limit the distance from target object",
	"*", 407,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Limit Size Constraint */
static BoolPropertyRNA rna_LimitScaleConstraint_use_min_x_ = {
	{&rna_LimitScaleConstraint_use_min_y, nullptr,
	-1, "use_min_x", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Minimum X",
	"Use the minimum X value",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LimitScaleConstraint_use_min_x_get, LimitScaleConstraint_use_min_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_LimitScaleConstraint_use_min_x = reinterpret_cast<PropertyRNA &>(rna_LimitScaleConstraint_use_min_x_);

static BoolPropertyRNA rna_LimitScaleConstraint_use_min_y_ = {
	{&rna_LimitScaleConstraint_use_min_z, &rna_LimitScaleConstraint_use_min_x,
	-1, "use_min_y", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Minimum Y",
	"Use the minimum Y value",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LimitScaleConstraint_use_min_y_get, LimitScaleConstraint_use_min_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_LimitScaleConstraint_use_min_y = reinterpret_cast<PropertyRNA &>(rna_LimitScaleConstraint_use_min_y_);

static BoolPropertyRNA rna_LimitScaleConstraint_use_min_z_ = {
	{&rna_LimitScaleConstraint_use_max_x, &rna_LimitScaleConstraint_use_min_y,
	-1, "use_min_z", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Minimum Z",
	"Use the minimum Z value",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LimitScaleConstraint_use_min_z_get, LimitScaleConstraint_use_min_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_LimitScaleConstraint_use_min_z = reinterpret_cast<PropertyRNA &>(rna_LimitScaleConstraint_use_min_z_);

static BoolPropertyRNA rna_LimitScaleConstraint_use_max_x_ = {
	{&rna_LimitScaleConstraint_use_max_y, &rna_LimitScaleConstraint_use_min_z,
	-1, "use_max_x", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Maximum X",
	"Use the maximum X value",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LimitScaleConstraint_use_max_x_get, LimitScaleConstraint_use_max_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_LimitScaleConstraint_use_max_x = reinterpret_cast<PropertyRNA &>(rna_LimitScaleConstraint_use_max_x_);

static BoolPropertyRNA rna_LimitScaleConstraint_use_max_y_ = {
	{&rna_LimitScaleConstraint_use_max_z, &rna_LimitScaleConstraint_use_max_x,
	-1, "use_max_y", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Maximum Y",
	"Use the maximum Y value",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LimitScaleConstraint_use_max_y_get, LimitScaleConstraint_use_max_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_LimitScaleConstraint_use_max_y = reinterpret_cast<PropertyRNA &>(rna_LimitScaleConstraint_use_max_y_);

static BoolPropertyRNA rna_LimitScaleConstraint_use_max_z_ = {
	{&rna_LimitScaleConstraint_min_x, &rna_LimitScaleConstraint_use_max_y,
	-1, "use_max_z", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Maximum Z",
	"Use the maximum Z value",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LimitScaleConstraint_use_max_z_get, LimitScaleConstraint_use_max_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_LimitScaleConstraint_use_max_z = reinterpret_cast<PropertyRNA &>(rna_LimitScaleConstraint_use_max_z_);

static FloatPropertyRNA rna_LimitScaleConstraint_min_x_ = {
	{&rna_LimitScaleConstraint_min_y, &rna_LimitScaleConstraint_use_max_z,
	-1, "min_x", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Minimum X",
	"Lowest X value to allow",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bSizeLimitConstraint, xmin), RawPropertyType(5), nullptr},
	LimitScaleConstraint_min_x_get, LimitScaleConstraint_min_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -1000.0f, 1000.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_LimitScaleConstraint_min_x = reinterpret_cast<PropertyRNA &>(rna_LimitScaleConstraint_min_x_);

static FloatPropertyRNA rna_LimitScaleConstraint_min_y_ = {
	{&rna_LimitScaleConstraint_min_z, &rna_LimitScaleConstraint_min_x,
	-1, "min_y", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Minimum Y",
	"Lowest Y value to allow",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bSizeLimitConstraint, ymin), RawPropertyType(5), nullptr},
	LimitScaleConstraint_min_y_get, LimitScaleConstraint_min_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -1000.0f, 1000.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_LimitScaleConstraint_min_y = reinterpret_cast<PropertyRNA &>(rna_LimitScaleConstraint_min_y_);

static FloatPropertyRNA rna_LimitScaleConstraint_min_z_ = {
	{&rna_LimitScaleConstraint_max_x, &rna_LimitScaleConstraint_min_y,
	-1, "min_z", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Minimum Z",
	"Lowest Z value to allow",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bSizeLimitConstraint, zmin), RawPropertyType(5), nullptr},
	LimitScaleConstraint_min_z_get, LimitScaleConstraint_min_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -1000.0f, 1000.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_LimitScaleConstraint_min_z = reinterpret_cast<PropertyRNA &>(rna_LimitScaleConstraint_min_z_);

static FloatPropertyRNA rna_LimitScaleConstraint_max_x_ = {
	{&rna_LimitScaleConstraint_max_y, &rna_LimitScaleConstraint_min_z,
	-1, "max_x", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Maximum X",
	"Highest X value to allow",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bSizeLimitConstraint, xmax), RawPropertyType(5), nullptr},
	LimitScaleConstraint_max_x_get, LimitScaleConstraint_max_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -1000.0f, 1000.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_LimitScaleConstraint_max_x = reinterpret_cast<PropertyRNA &>(rna_LimitScaleConstraint_max_x_);

static FloatPropertyRNA rna_LimitScaleConstraint_max_y_ = {
	{&rna_LimitScaleConstraint_max_z, &rna_LimitScaleConstraint_max_x,
	-1, "max_y", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Maximum Y",
	"Highest Y value to allow",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bSizeLimitConstraint, ymax), RawPropertyType(5), nullptr},
	LimitScaleConstraint_max_y_get, LimitScaleConstraint_max_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -1000.0f, 1000.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_LimitScaleConstraint_max_y = reinterpret_cast<PropertyRNA &>(rna_LimitScaleConstraint_max_y_);

static FloatPropertyRNA rna_LimitScaleConstraint_max_z_ = {
	{&rna_LimitScaleConstraint_use_transform_limit, &rna_LimitScaleConstraint_max_y,
	-1, "max_z", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Maximum Z",
	"Highest Z value to allow",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bSizeLimitConstraint, zmax), RawPropertyType(5), nullptr},
	LimitScaleConstraint_max_z_get, LimitScaleConstraint_max_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -1000.0f, 1000.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_LimitScaleConstraint_max_z = reinterpret_cast<PropertyRNA &>(rna_LimitScaleConstraint_max_z_);

static BoolPropertyRNA rna_LimitScaleConstraint_use_transform_limit_ = {
	{nullptr, &rna_LimitScaleConstraint_max_z,
	-1, "use_transform_limit", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Affect Transform",
	"Transform tools are affected by this constraint as well",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LimitScaleConstraint_use_transform_limit_get, LimitScaleConstraint_use_transform_limit_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_LimitScaleConstraint_use_transform_limit = reinterpret_cast<PropertyRNA &>(rna_LimitScaleConstraint_use_transform_limit_);

StructRNA RNA_LimitScaleConstraint = {
	{(ContainerRNA *)&RNA_LimitRotationConstraint, (ContainerRNA *)&RNA_LimitDistanceConstraint,
	nullptr,
	{&rna_LimitScaleConstraint_use_min_x, &rna_LimitScaleConstraint_use_transform_limit}},
	"LimitScaleConstraint", nullptr, nullptr, 516, nullptr, "Limit Size Constraint",
	"Limit the scaling of the constrained object",
	"*", 422,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Limit Rotation Constraint */
static BoolPropertyRNA rna_LimitRotationConstraint_use_limit_x_ = {
	{&rna_LimitRotationConstraint_use_limit_y, nullptr,
	-1, "use_limit_x", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Limit X",
	"Use the minimum X value",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LimitRotationConstraint_use_limit_x_get, LimitRotationConstraint_use_limit_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_LimitRotationConstraint_use_limit_x = reinterpret_cast<PropertyRNA &>(rna_LimitRotationConstraint_use_limit_x_);

static BoolPropertyRNA rna_LimitRotationConstraint_use_limit_y_ = {
	{&rna_LimitRotationConstraint_use_limit_z, &rna_LimitRotationConstraint_use_limit_x,
	-1, "use_limit_y", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Limit Y",
	"Use the minimum Y value",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LimitRotationConstraint_use_limit_y_get, LimitRotationConstraint_use_limit_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_LimitRotationConstraint_use_limit_y = reinterpret_cast<PropertyRNA &>(rna_LimitRotationConstraint_use_limit_y_);

static BoolPropertyRNA rna_LimitRotationConstraint_use_limit_z_ = {
	{&rna_LimitRotationConstraint_min_x, &rna_LimitRotationConstraint_use_limit_y,
	-1, "use_limit_z", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Limit Z",
	"Use the minimum Z value",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LimitRotationConstraint_use_limit_z_get, LimitRotationConstraint_use_limit_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_LimitRotationConstraint_use_limit_z = reinterpret_cast<PropertyRNA &>(rna_LimitRotationConstraint_use_limit_z_);

static FloatPropertyRNA rna_LimitRotationConstraint_min_x_ = {
	{&rna_LimitRotationConstraint_min_y, &rna_LimitRotationConstraint_use_limit_z,
	-1, "min_x", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Minimum X",
	"Lower X angle bound",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_ANGLE) | int(PROP_UNIT_ROTATION)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bRotLimitConstraint, xmin), RawPropertyType(5), nullptr},
	LimitRotationConstraint_min_x_get, LimitRotationConstraint_min_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -6.2831854820f, 6.2831854820f, -1000.0f, 1000.0f, 10.0f, 1, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_LimitRotationConstraint_min_x = reinterpret_cast<PropertyRNA &>(rna_LimitRotationConstraint_min_x_);

static FloatPropertyRNA rna_LimitRotationConstraint_min_y_ = {
	{&rna_LimitRotationConstraint_min_z, &rna_LimitRotationConstraint_min_x,
	-1, "min_y", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Minimum Y",
	"Lower Y angle bound",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_ANGLE) | int(PROP_UNIT_ROTATION)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bRotLimitConstraint, ymin), RawPropertyType(5), nullptr},
	LimitRotationConstraint_min_y_get, LimitRotationConstraint_min_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -6.2831854820f, 6.2831854820f, -1000.0f, 1000.0f, 10.0f, 1, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_LimitRotationConstraint_min_y = reinterpret_cast<PropertyRNA &>(rna_LimitRotationConstraint_min_y_);

static FloatPropertyRNA rna_LimitRotationConstraint_min_z_ = {
	{&rna_LimitRotationConstraint_max_x, &rna_LimitRotationConstraint_min_y,
	-1, "min_z", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Minimum Z",
	"Lower Z angle bound",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_ANGLE) | int(PROP_UNIT_ROTATION)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bRotLimitConstraint, zmin), RawPropertyType(5), nullptr},
	LimitRotationConstraint_min_z_get, LimitRotationConstraint_min_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -6.2831854820f, 6.2831854820f, -1000.0f, 1000.0f, 10.0f, 1, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_LimitRotationConstraint_min_z = reinterpret_cast<PropertyRNA &>(rna_LimitRotationConstraint_min_z_);

static FloatPropertyRNA rna_LimitRotationConstraint_max_x_ = {
	{&rna_LimitRotationConstraint_max_y, &rna_LimitRotationConstraint_min_z,
	-1, "max_x", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Maximum X",
	"Upper X angle bound",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_ANGLE) | int(PROP_UNIT_ROTATION)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bRotLimitConstraint, xmax), RawPropertyType(5), nullptr},
	LimitRotationConstraint_max_x_get, LimitRotationConstraint_max_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -6.2831854820f, 6.2831854820f, -1000.0f, 1000.0f, 10.0f, 1, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_LimitRotationConstraint_max_x = reinterpret_cast<PropertyRNA &>(rna_LimitRotationConstraint_max_x_);

static FloatPropertyRNA rna_LimitRotationConstraint_max_y_ = {
	{&rna_LimitRotationConstraint_max_z, &rna_LimitRotationConstraint_max_x,
	-1, "max_y", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Maximum Y",
	"Upper Y angle bound",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_ANGLE) | int(PROP_UNIT_ROTATION)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bRotLimitConstraint, ymax), RawPropertyType(5), nullptr},
	LimitRotationConstraint_max_y_get, LimitRotationConstraint_max_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -6.2831854820f, 6.2831854820f, -1000.0f, 1000.0f, 10.0f, 1, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_LimitRotationConstraint_max_y = reinterpret_cast<PropertyRNA &>(rna_LimitRotationConstraint_max_y_);

static FloatPropertyRNA rna_LimitRotationConstraint_max_z_ = {
	{&rna_LimitRotationConstraint_euler_order, &rna_LimitRotationConstraint_max_y,
	-1, "max_z", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Maximum Z",
	"Upper Z angle bound",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_ANGLE) | int(PROP_UNIT_ROTATION)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bRotLimitConstraint, zmax), RawPropertyType(5), nullptr},
	LimitRotationConstraint_max_z_get, LimitRotationConstraint_max_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -6.2831854820f, 6.2831854820f, -1000.0f, 1000.0f, 10.0f, 1, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_LimitRotationConstraint_max_z = reinterpret_cast<PropertyRNA &>(rna_LimitRotationConstraint_max_z_);

static const EnumPropertyItem rna_LimitRotationConstraint_euler_order_items[8] = {
	{0, "AUTO", 0, "Default", "Euler using the default rotation order"},
	{1, "XYZ", 0, "XYZ Euler", "Euler using the XYZ rotation order"},
	{2, "XZY", 0, "XZY Euler", "Euler using the XZY rotation order"},
	{3, "YXZ", 0, "YXZ Euler", "Euler using the YXZ rotation order"},
	{4, "YZX", 0, "YZX Euler", "Euler using the YZX rotation order"},
	{5, "ZXY", 0, "ZXY Euler", "Euler using the ZXY rotation order"},
	{6, "ZYX", 0, "ZYX Euler", "Euler using the ZYX rotation order"},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_LimitRotationConstraint_euler_order_ = {
	{&rna_LimitRotationConstraint_use_transform_limit, &rna_LimitRotationConstraint_max_z,
	-1, "euler_order", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Euler Order",
	"Explicitly specify the euler rotation order",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bRotLimitConstraint, euler_order), RawPropertyType(2), nullptr},
	LimitRotationConstraint_euler_order_get, LimitRotationConstraint_euler_order_set, nullptr, nullptr, nullptr, nullptr, rna_LimitRotationConstraint_euler_order_items, 7, 0
};
PropertyRNA &rna_LimitRotationConstraint_euler_order = reinterpret_cast<PropertyRNA &>(rna_LimitRotationConstraint_euler_order_);

static BoolPropertyRNA rna_LimitRotationConstraint_use_transform_limit_ = {
	{&rna_LimitRotationConstraint_use_legacy_behavior, &rna_LimitRotationConstraint_euler_order,
	-1, "use_transform_limit", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Affect Transform",
	"Transform tools are affected by this constraint as well",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LimitRotationConstraint_use_transform_limit_get, LimitRotationConstraint_use_transform_limit_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_LimitRotationConstraint_use_transform_limit = reinterpret_cast<PropertyRNA &>(rna_LimitRotationConstraint_use_transform_limit_);

static BoolPropertyRNA rna_LimitRotationConstraint_use_legacy_behavior_ = {
	{nullptr, &rna_LimitRotationConstraint_use_transform_limit,
	-1, "use_legacy_behavior", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Legacy Behavior",
	"Use the old semi-broken behavior that doesn\'t understand that rotations loop around",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LimitRotationConstraint_use_legacy_behavior_get, LimitRotationConstraint_use_legacy_behavior_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_LimitRotationConstraint_use_legacy_behavior = reinterpret_cast<PropertyRNA &>(rna_LimitRotationConstraint_use_legacy_behavior_);

StructRNA RNA_LimitRotationConstraint = {
	{(ContainerRNA *)&RNA_LimitLocationConstraint, (ContainerRNA *)&RNA_LimitScaleConstraint,
	nullptr,
	{&rna_LimitRotationConstraint_use_limit_x, &rna_LimitRotationConstraint_use_legacy_behavior}},
	"LimitRotationConstraint", nullptr, nullptr, 516, nullptr, "Limit Rotation Constraint",
	"Limit the rotation of the constrained object",
	"*", 418,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Limit Location Constraint */
static BoolPropertyRNA rna_LimitLocationConstraint_use_min_x_ = {
	{&rna_LimitLocationConstraint_use_min_y, nullptr,
	-1, "use_min_x", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Minimum X",
	"Use the minimum X value",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LimitLocationConstraint_use_min_x_get, LimitLocationConstraint_use_min_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_LimitLocationConstraint_use_min_x = reinterpret_cast<PropertyRNA &>(rna_LimitLocationConstraint_use_min_x_);

static BoolPropertyRNA rna_LimitLocationConstraint_use_min_y_ = {
	{&rna_LimitLocationConstraint_use_min_z, &rna_LimitLocationConstraint_use_min_x,
	-1, "use_min_y", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Minimum Y",
	"Use the minimum Y value",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LimitLocationConstraint_use_min_y_get, LimitLocationConstraint_use_min_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_LimitLocationConstraint_use_min_y = reinterpret_cast<PropertyRNA &>(rna_LimitLocationConstraint_use_min_y_);

static BoolPropertyRNA rna_LimitLocationConstraint_use_min_z_ = {
	{&rna_LimitLocationConstraint_use_max_x, &rna_LimitLocationConstraint_use_min_y,
	-1, "use_min_z", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Minimum Z",
	"Use the minimum Z value",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LimitLocationConstraint_use_min_z_get, LimitLocationConstraint_use_min_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_LimitLocationConstraint_use_min_z = reinterpret_cast<PropertyRNA &>(rna_LimitLocationConstraint_use_min_z_);

static BoolPropertyRNA rna_LimitLocationConstraint_use_max_x_ = {
	{&rna_LimitLocationConstraint_use_max_y, &rna_LimitLocationConstraint_use_min_z,
	-1, "use_max_x", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Maximum X",
	"Use the maximum X value",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LimitLocationConstraint_use_max_x_get, LimitLocationConstraint_use_max_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_LimitLocationConstraint_use_max_x = reinterpret_cast<PropertyRNA &>(rna_LimitLocationConstraint_use_max_x_);

static BoolPropertyRNA rna_LimitLocationConstraint_use_max_y_ = {
	{&rna_LimitLocationConstraint_use_max_z, &rna_LimitLocationConstraint_use_max_x,
	-1, "use_max_y", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Maximum Y",
	"Use the maximum Y value",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LimitLocationConstraint_use_max_y_get, LimitLocationConstraint_use_max_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_LimitLocationConstraint_use_max_y = reinterpret_cast<PropertyRNA &>(rna_LimitLocationConstraint_use_max_y_);

static BoolPropertyRNA rna_LimitLocationConstraint_use_max_z_ = {
	{&rna_LimitLocationConstraint_min_x, &rna_LimitLocationConstraint_use_max_y,
	-1, "use_max_z", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Maximum Z",
	"Use the maximum Z value",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LimitLocationConstraint_use_max_z_get, LimitLocationConstraint_use_max_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_LimitLocationConstraint_use_max_z = reinterpret_cast<PropertyRNA &>(rna_LimitLocationConstraint_use_max_z_);

static FloatPropertyRNA rna_LimitLocationConstraint_min_x_ = {
	{&rna_LimitLocationConstraint_min_y, &rna_LimitLocationConstraint_use_max_z,
	-1, "min_x", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Minimum X",
	"Lowest X value to allow",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_DISTANCE) | int(PROP_UNIT_LENGTH)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bLocLimitConstraint, xmin), RawPropertyType(5), nullptr},
	LimitLocationConstraint_min_x_get, LimitLocationConstraint_min_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_LimitLocationConstraint_min_x = reinterpret_cast<PropertyRNA &>(rna_LimitLocationConstraint_min_x_);

static FloatPropertyRNA rna_LimitLocationConstraint_min_y_ = {
	{&rna_LimitLocationConstraint_min_z, &rna_LimitLocationConstraint_min_x,
	-1, "min_y", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Minimum Y",
	"Lowest Y value to allow",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_DISTANCE) | int(PROP_UNIT_LENGTH)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bLocLimitConstraint, ymin), RawPropertyType(5), nullptr},
	LimitLocationConstraint_min_y_get, LimitLocationConstraint_min_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_LimitLocationConstraint_min_y = reinterpret_cast<PropertyRNA &>(rna_LimitLocationConstraint_min_y_);

static FloatPropertyRNA rna_LimitLocationConstraint_min_z_ = {
	{&rna_LimitLocationConstraint_max_x, &rna_LimitLocationConstraint_min_y,
	-1, "min_z", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Minimum Z",
	"Lowest Z value to allow",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_DISTANCE) | int(PROP_UNIT_LENGTH)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bLocLimitConstraint, zmin), RawPropertyType(5), nullptr},
	LimitLocationConstraint_min_z_get, LimitLocationConstraint_min_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_LimitLocationConstraint_min_z = reinterpret_cast<PropertyRNA &>(rna_LimitLocationConstraint_min_z_);

static FloatPropertyRNA rna_LimitLocationConstraint_max_x_ = {
	{&rna_LimitLocationConstraint_max_y, &rna_LimitLocationConstraint_min_z,
	-1, "max_x", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Maximum X",
	"Highest X value to allow",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_DISTANCE) | int(PROP_UNIT_LENGTH)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bLocLimitConstraint, xmax), RawPropertyType(5), nullptr},
	LimitLocationConstraint_max_x_get, LimitLocationConstraint_max_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_LimitLocationConstraint_max_x = reinterpret_cast<PropertyRNA &>(rna_LimitLocationConstraint_max_x_);

static FloatPropertyRNA rna_LimitLocationConstraint_max_y_ = {
	{&rna_LimitLocationConstraint_max_z, &rna_LimitLocationConstraint_max_x,
	-1, "max_y", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Maximum Y",
	"Highest Y value to allow",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_DISTANCE) | int(PROP_UNIT_LENGTH)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bLocLimitConstraint, ymax), RawPropertyType(5), nullptr},
	LimitLocationConstraint_max_y_get, LimitLocationConstraint_max_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_LimitLocationConstraint_max_y = reinterpret_cast<PropertyRNA &>(rna_LimitLocationConstraint_max_y_);

static FloatPropertyRNA rna_LimitLocationConstraint_max_z_ = {
	{&rna_LimitLocationConstraint_use_transform_limit, &rna_LimitLocationConstraint_max_y,
	-1, "max_z", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Maximum Z",
	"Highest Z value to allow",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_DISTANCE) | int(PROP_UNIT_LENGTH)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bLocLimitConstraint, zmax), RawPropertyType(5), nullptr},
	LimitLocationConstraint_max_z_get, LimitLocationConstraint_max_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_LimitLocationConstraint_max_z = reinterpret_cast<PropertyRNA &>(rna_LimitLocationConstraint_max_z_);

static BoolPropertyRNA rna_LimitLocationConstraint_use_transform_limit_ = {
	{nullptr, &rna_LimitLocationConstraint_max_z,
	-1, "use_transform_limit", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Affect Transform",
	"Transform tools are affected by this constraint as well",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	LimitLocationConstraint_use_transform_limit_get, LimitLocationConstraint_use_transform_limit_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_LimitLocationConstraint_use_transform_limit = reinterpret_cast<PropertyRNA &>(rna_LimitLocationConstraint_use_transform_limit_);

StructRNA RNA_LimitLocationConstraint = {
	{(ContainerRNA *)&RNA_TransformConstraint, (ContainerRNA *)&RNA_LimitRotationConstraint,
	nullptr,
	{&rna_LimitLocationConstraint_use_min_x, &rna_LimitLocationConstraint_use_transform_limit}},
	"LimitLocationConstraint", nullptr, nullptr, 516, nullptr, "Limit Location Constraint",
	"Limit the location of the constrained object",
	"*", 414,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Transformation Constraint */
static PointerPropertyRNA rna_TransformConstraint_target_ = {
	{&rna_TransformConstraint_subtarget, nullptr,
	-1, "target", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Target",
	"Target object",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	TransformConstraint_target_get, TransformConstraint_target_set, nullptr, nullptr,&RNA_Object
};
PropertyRNA &rna_TransformConstraint_target = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_target_);

static StringPropertyRNA rna_TransformConstraint_subtarget_ = {
	{&rna_TransformConstraint_map_from, &rna_TransformConstraint_target,
	-1, "subtarget", 262145, 1, 0, 0, 0, PropertyPathTemplateType(0), "Sub-Target",
	"Armature bone, mesh or lattice vertex group, ...",
	0, "*",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {64, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	TransformConstraint_subtarget_get, TransformConstraint_subtarget_length, TransformConstraint_subtarget_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 64, ""
};
PropertyRNA &rna_TransformConstraint_subtarget = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_subtarget_);

static const EnumPropertyItem rna_TransformConstraint_map_from_items[4] = {
	{0, "LOCATION", 0, "Location", ""},
	{1, "ROTATION", 0, "Rotation", ""},
	{2, "SCALE", 0, "Scale", ""},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_TransformConstraint_map_from_ = {
	{&rna_TransformConstraint_map_to, &rna_TransformConstraint_subtarget,
	-1, "map_from", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Map From",
	"The transformation type to use from the target",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, from), RawPropertyType(1), nullptr},
	TransformConstraint_map_from_get, TransformConstraint_map_from_set, nullptr, nullptr, nullptr, nullptr, rna_TransformConstraint_map_from_items, 3, 0
};
PropertyRNA &rna_TransformConstraint_map_from = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_map_from_);

static const EnumPropertyItem rna_TransformConstraint_map_to_items[4] = {
	{0, "LOCATION", 0, "Location", ""},
	{1, "ROTATION", 0, "Rotation", ""},
	{2, "SCALE", 0, "Scale", ""},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_TransformConstraint_map_to_ = {
	{&rna_TransformConstraint_map_to_x_from, &rna_TransformConstraint_map_from,
	-1, "map_to", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Map To",
	"The transformation type to affect on the constrained object",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, to), RawPropertyType(1), nullptr},
	TransformConstraint_map_to_get, TransformConstraint_map_to_set, nullptr, nullptr, nullptr, nullptr, rna_TransformConstraint_map_to_items, 3, 0
};
PropertyRNA &rna_TransformConstraint_map_to = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_map_to_);

static EnumPropertyRNA rna_TransformConstraint_map_to_x_from_ = {
	{&rna_TransformConstraint_map_to_y_from, &rna_TransformConstraint_map_to,
	-1, "map_to_x_from", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Map To X From",
	"The source axis constrained object\'s X axis uses",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, map[0]), RawPropertyType(2), nullptr},
	TransformConstraint_map_to_x_from_get, TransformConstraint_map_to_x_from_set, nullptr, nullptr, nullptr, nullptr, rna_enum_axis_xyz_items, 3, 0
};
PropertyRNA &rna_TransformConstraint_map_to_x_from = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_map_to_x_from_);

static EnumPropertyRNA rna_TransformConstraint_map_to_y_from_ = {
	{&rna_TransformConstraint_map_to_z_from, &rna_TransformConstraint_map_to_x_from,
	-1, "map_to_y_from", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Map To Y From",
	"The source axis constrained object\'s Y axis uses",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, map[1]), RawPropertyType(2), nullptr},
	TransformConstraint_map_to_y_from_get, TransformConstraint_map_to_y_from_set, nullptr, nullptr, nullptr, nullptr, rna_enum_axis_xyz_items, 3, 0
};
PropertyRNA &rna_TransformConstraint_map_to_y_from = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_map_to_y_from_);

static EnumPropertyRNA rna_TransformConstraint_map_to_z_from_ = {
	{&rna_TransformConstraint_use_motion_extrapolate, &rna_TransformConstraint_map_to_y_from,
	-1, "map_to_z_from", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Map To Z From",
	"The source axis constrained object\'s Z axis uses",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, map[2]), RawPropertyType(2), nullptr},
	TransformConstraint_map_to_z_from_get, TransformConstraint_map_to_z_from_set, nullptr, nullptr, nullptr, nullptr, rna_enum_axis_xyz_items, 3, 0
};
PropertyRNA &rna_TransformConstraint_map_to_z_from = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_map_to_z_from_);

static BoolPropertyRNA rna_TransformConstraint_use_motion_extrapolate_ = {
	{&rna_TransformConstraint_from_rotation_mode, &rna_TransformConstraint_map_to_z_from,
	-1, "use_motion_extrapolate", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Extrapolate Motion",
	"Extrapolate ranges",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	TransformConstraint_use_motion_extrapolate_get, TransformConstraint_use_motion_extrapolate_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_TransformConstraint_use_motion_extrapolate = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_use_motion_extrapolate_);

static EnumPropertyRNA rna_TransformConstraint_from_rotation_mode_ = {
	{&rna_TransformConstraint_to_euler_order, &rna_TransformConstraint_use_motion_extrapolate,
	-1, "from_rotation_mode", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "From Mode",
	"Specify the type of rotation channels to use",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, from_rotation_mode), RawPropertyType(2), nullptr},
	TransformConstraint_from_rotation_mode_get, TransformConstraint_from_rotation_mode_set, nullptr, nullptr, nullptr, nullptr, rna_enum_driver_target_rotation_mode_items, 11, 0
};
PropertyRNA &rna_TransformConstraint_from_rotation_mode = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_from_rotation_mode_);

static const EnumPropertyItem rna_TransformConstraint_to_euler_order_items[8] = {
	{0, "AUTO", 0, "Default", "Euler using the default rotation order"},
	{1, "XYZ", 0, "XYZ Euler", "Euler using the XYZ rotation order"},
	{2, "XZY", 0, "XZY Euler", "Euler using the XZY rotation order"},
	{3, "YXZ", 0, "YXZ Euler", "Euler using the YXZ rotation order"},
	{4, "YZX", 0, "YZX Euler", "Euler using the YZX rotation order"},
	{5, "ZXY", 0, "ZXY Euler", "Euler using the ZXY rotation order"},
	{6, "ZYX", 0, "ZYX Euler", "Euler using the ZYX rotation order"},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_TransformConstraint_to_euler_order_ = {
	{&rna_TransformConstraint_from_min_x, &rna_TransformConstraint_from_rotation_mode,
	-1, "to_euler_order", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "To Order",
	"Explicitly specify the output euler rotation order",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, to_euler_order), RawPropertyType(2), nullptr},
	TransformConstraint_to_euler_order_get, TransformConstraint_to_euler_order_set, nullptr, nullptr, nullptr, nullptr, rna_TransformConstraint_to_euler_order_items, 7, 0
};
PropertyRNA &rna_TransformConstraint_to_euler_order = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_to_euler_order_);

static FloatPropertyRNA rna_TransformConstraint_from_min_x_ = {
	{&rna_TransformConstraint_from_min_y, &rna_TransformConstraint_to_euler_order,
	-1, "from_min_x", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "From Minimum X",
	"Bottom range of X axis source motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_DISTANCE) | int(PROP_UNIT_LENGTH)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, from_min[0]), RawPropertyType(5), nullptr},
	TransformConstraint_from_min_x_get, TransformConstraint_from_min_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_from_min_x = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_from_min_x_);

static FloatPropertyRNA rna_TransformConstraint_from_min_y_ = {
	{&rna_TransformConstraint_from_min_z, &rna_TransformConstraint_from_min_x,
	-1, "from_min_y", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "From Minimum Y",
	"Bottom range of Y axis source motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_DISTANCE) | int(PROP_UNIT_LENGTH)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, from_min[1]), RawPropertyType(5), nullptr},
	TransformConstraint_from_min_y_get, TransformConstraint_from_min_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_from_min_y = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_from_min_y_);

static FloatPropertyRNA rna_TransformConstraint_from_min_z_ = {
	{&rna_TransformConstraint_from_max_x, &rna_TransformConstraint_from_min_y,
	-1, "from_min_z", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "From Minimum Z",
	"Bottom range of Z axis source motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_DISTANCE) | int(PROP_UNIT_LENGTH)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, from_min[2]), RawPropertyType(5), nullptr},
	TransformConstraint_from_min_z_get, TransformConstraint_from_min_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_from_min_z = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_from_min_z_);

static FloatPropertyRNA rna_TransformConstraint_from_max_x_ = {
	{&rna_TransformConstraint_from_max_y, &rna_TransformConstraint_from_min_z,
	-1, "from_max_x", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "From Maximum X",
	"Top range of X axis source motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_DISTANCE) | int(PROP_UNIT_LENGTH)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, from_max[0]), RawPropertyType(5), nullptr},
	TransformConstraint_from_max_x_get, TransformConstraint_from_max_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_from_max_x = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_from_max_x_);

static FloatPropertyRNA rna_TransformConstraint_from_max_y_ = {
	{&rna_TransformConstraint_from_max_z, &rna_TransformConstraint_from_max_x,
	-1, "from_max_y", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "From Maximum Y",
	"Top range of Y axis source motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_DISTANCE) | int(PROP_UNIT_LENGTH)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, from_max[1]), RawPropertyType(5), nullptr},
	TransformConstraint_from_max_y_get, TransformConstraint_from_max_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_from_max_y = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_from_max_y_);

static FloatPropertyRNA rna_TransformConstraint_from_max_z_ = {
	{&rna_TransformConstraint_to_min_x, &rna_TransformConstraint_from_max_y,
	-1, "from_max_z", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "From Maximum Z",
	"Top range of Z axis source motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_DISTANCE) | int(PROP_UNIT_LENGTH)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, from_max[2]), RawPropertyType(5), nullptr},
	TransformConstraint_from_max_z_get, TransformConstraint_from_max_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_from_max_z = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_from_max_z_);

static FloatPropertyRNA rna_TransformConstraint_to_min_x_ = {
	{&rna_TransformConstraint_to_min_y, &rna_TransformConstraint_from_max_z,
	-1, "to_min_x", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "To Minimum X",
	"Bottom range of X axis destination motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_DISTANCE) | int(PROP_UNIT_LENGTH)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, to_min[0]), RawPropertyType(5), nullptr},
	TransformConstraint_to_min_x_get, TransformConstraint_to_min_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_to_min_x = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_to_min_x_);

static FloatPropertyRNA rna_TransformConstraint_to_min_y_ = {
	{&rna_TransformConstraint_to_min_z, &rna_TransformConstraint_to_min_x,
	-1, "to_min_y", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "To Minimum Y",
	"Bottom range of Y axis destination motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_DISTANCE) | int(PROP_UNIT_LENGTH)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, to_min[1]), RawPropertyType(5), nullptr},
	TransformConstraint_to_min_y_get, TransformConstraint_to_min_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_to_min_y = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_to_min_y_);

static FloatPropertyRNA rna_TransformConstraint_to_min_z_ = {
	{&rna_TransformConstraint_to_max_x, &rna_TransformConstraint_to_min_y,
	-1, "to_min_z", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "To Minimum Z",
	"Bottom range of Z axis destination motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_DISTANCE) | int(PROP_UNIT_LENGTH)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, to_min[2]), RawPropertyType(5), nullptr},
	TransformConstraint_to_min_z_get, TransformConstraint_to_min_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_to_min_z = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_to_min_z_);

static FloatPropertyRNA rna_TransformConstraint_to_max_x_ = {
	{&rna_TransformConstraint_to_max_y, &rna_TransformConstraint_to_min_z,
	-1, "to_max_x", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "To Maximum X",
	"Top range of X axis destination motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_DISTANCE) | int(PROP_UNIT_LENGTH)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, to_max[0]), RawPropertyType(5), nullptr},
	TransformConstraint_to_max_x_get, TransformConstraint_to_max_x_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_to_max_x = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_to_max_x_);

static FloatPropertyRNA rna_TransformConstraint_to_max_y_ = {
	{&rna_TransformConstraint_to_max_z, &rna_TransformConstraint_to_max_x,
	-1, "to_max_y", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "To Maximum Y",
	"Top range of Y axis destination motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_DISTANCE) | int(PROP_UNIT_LENGTH)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, to_max[1]), RawPropertyType(5), nullptr},
	TransformConstraint_to_max_y_get, TransformConstraint_to_max_y_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_to_max_y = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_to_max_y_);

static FloatPropertyRNA rna_TransformConstraint_to_max_z_ = {
	{&rna_TransformConstraint_mix_mode, &rna_TransformConstraint_to_max_y,
	-1, "to_max_z", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "To Maximum Z",
	"Top range of Z axis destination motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_DISTANCE) | int(PROP_UNIT_LENGTH)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, to_max[2]), RawPropertyType(5), nullptr},
	TransformConstraint_to_max_z_get, TransformConstraint_to_max_z_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_to_max_z = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_to_max_z_);

static const EnumPropertyItem rna_TransformConstraint_mix_mode_items[3] = {
	{1, "REPLACE", 0, "Replace", "Replace component values"},
	{0, "ADD", 0, "Add", "Add component values together"},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_TransformConstraint_mix_mode_ = {
	{&rna_TransformConstraint_from_min_x_rot, &rna_TransformConstraint_to_max_z,
	-1, "mix_mode", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Location Mix Mode",
	"Specify how to combine the new location with original",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, mix_mode_loc), RawPropertyType(2), nullptr},
	TransformConstraint_mix_mode_get, TransformConstraint_mix_mode_set, nullptr, nullptr, nullptr, nullptr, rna_TransformConstraint_mix_mode_items, 2, 0
};
PropertyRNA &rna_TransformConstraint_mix_mode = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_mix_mode_);

static FloatPropertyRNA rna_TransformConstraint_from_min_x_rot_ = {
	{&rna_TransformConstraint_from_min_y_rot, &rna_TransformConstraint_mix_mode,
	-1, "from_min_x_rot", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "From Minimum X",
	"Bottom range of X axis source motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_ANGLE) | int(PROP_UNIT_ROTATION)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, from_min_rot[0]), RawPropertyType(5), nullptr},
	TransformConstraint_from_min_x_rot_get, TransformConstraint_from_min_x_rot_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -3.1415927410f, 3.1415927410f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_from_min_x_rot = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_from_min_x_rot_);

static FloatPropertyRNA rna_TransformConstraint_from_min_y_rot_ = {
	{&rna_TransformConstraint_from_min_z_rot, &rna_TransformConstraint_from_min_x_rot,
	-1, "from_min_y_rot", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "From Minimum Y",
	"Bottom range of Y axis source motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_ANGLE) | int(PROP_UNIT_ROTATION)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, from_min_rot[1]), RawPropertyType(5), nullptr},
	TransformConstraint_from_min_y_rot_get, TransformConstraint_from_min_y_rot_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -3.1415927410f, 3.1415927410f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_from_min_y_rot = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_from_min_y_rot_);

static FloatPropertyRNA rna_TransformConstraint_from_min_z_rot_ = {
	{&rna_TransformConstraint_from_max_x_rot, &rna_TransformConstraint_from_min_y_rot,
	-1, "from_min_z_rot", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "From Minimum Z",
	"Bottom range of Z axis source motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_ANGLE) | int(PROP_UNIT_ROTATION)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, from_min_rot[2]), RawPropertyType(5), nullptr},
	TransformConstraint_from_min_z_rot_get, TransformConstraint_from_min_z_rot_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -3.1415927410f, 3.1415927410f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_from_min_z_rot = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_from_min_z_rot_);

static FloatPropertyRNA rna_TransformConstraint_from_max_x_rot_ = {
	{&rna_TransformConstraint_from_max_y_rot, &rna_TransformConstraint_from_min_z_rot,
	-1, "from_max_x_rot", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "From Maximum X",
	"Top range of X axis source motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_ANGLE) | int(PROP_UNIT_ROTATION)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, from_max_rot[0]), RawPropertyType(5), nullptr},
	TransformConstraint_from_max_x_rot_get, TransformConstraint_from_max_x_rot_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -3.1415927410f, 3.1415927410f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_from_max_x_rot = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_from_max_x_rot_);

static FloatPropertyRNA rna_TransformConstraint_from_max_y_rot_ = {
	{&rna_TransformConstraint_from_max_z_rot, &rna_TransformConstraint_from_max_x_rot,
	-1, "from_max_y_rot", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "From Maximum Y",
	"Top range of Y axis source motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_ANGLE) | int(PROP_UNIT_ROTATION)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, from_max_rot[1]), RawPropertyType(5), nullptr},
	TransformConstraint_from_max_y_rot_get, TransformConstraint_from_max_y_rot_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -3.1415927410f, 3.1415927410f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_from_max_y_rot = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_from_max_y_rot_);

static FloatPropertyRNA rna_TransformConstraint_from_max_z_rot_ = {
	{&rna_TransformConstraint_to_min_x_rot, &rna_TransformConstraint_from_max_y_rot,
	-1, "from_max_z_rot", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "From Maximum Z",
	"Top range of Z axis source motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_ANGLE) | int(PROP_UNIT_ROTATION)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, from_max_rot[2]), RawPropertyType(5), nullptr},
	TransformConstraint_from_max_z_rot_get, TransformConstraint_from_max_z_rot_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -3.1415927410f, 3.1415927410f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_from_max_z_rot = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_from_max_z_rot_);

static FloatPropertyRNA rna_TransformConstraint_to_min_x_rot_ = {
	{&rna_TransformConstraint_to_min_y_rot, &rna_TransformConstraint_from_max_z_rot,
	-1, "to_min_x_rot", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "To Minimum X",
	"Bottom range of X axis destination motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_ANGLE) | int(PROP_UNIT_ROTATION)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, to_min_rot[0]), RawPropertyType(5), nullptr},
	TransformConstraint_to_min_x_rot_get, TransformConstraint_to_min_x_rot_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -3.1415927410f, 3.1415927410f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_to_min_x_rot = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_to_min_x_rot_);

static FloatPropertyRNA rna_TransformConstraint_to_min_y_rot_ = {
	{&rna_TransformConstraint_to_min_z_rot, &rna_TransformConstraint_to_min_x_rot,
	-1, "to_min_y_rot", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "To Minimum Y",
	"Bottom range of Y axis destination motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_ANGLE) | int(PROP_UNIT_ROTATION)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, to_min_rot[1]), RawPropertyType(5), nullptr},
	TransformConstraint_to_min_y_rot_get, TransformConstraint_to_min_y_rot_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -3.1415927410f, 3.1415927410f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_to_min_y_rot = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_to_min_y_rot_);

static FloatPropertyRNA rna_TransformConstraint_to_min_z_rot_ = {
	{&rna_TransformConstraint_to_max_x_rot, &rna_TransformConstraint_to_min_y_rot,
	-1, "to_min_z_rot", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "To Minimum Z",
	"Bottom range of Z axis destination motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_ANGLE) | int(PROP_UNIT_ROTATION)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, to_min_rot[2]), RawPropertyType(5), nullptr},
	TransformConstraint_to_min_z_rot_get, TransformConstraint_to_min_z_rot_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -3.1415927410f, 3.1415927410f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_to_min_z_rot = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_to_min_z_rot_);

static FloatPropertyRNA rna_TransformConstraint_to_max_x_rot_ = {
	{&rna_TransformConstraint_to_max_y_rot, &rna_TransformConstraint_to_min_z_rot,
	-1, "to_max_x_rot", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "To Maximum X",
	"Top range of X axis destination motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_ANGLE) | int(PROP_UNIT_ROTATION)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, to_max_rot[0]), RawPropertyType(5), nullptr},
	TransformConstraint_to_max_x_rot_get, TransformConstraint_to_max_x_rot_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -3.1415927410f, 3.1415927410f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_to_max_x_rot = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_to_max_x_rot_);

static FloatPropertyRNA rna_TransformConstraint_to_max_y_rot_ = {
	{&rna_TransformConstraint_to_max_z_rot, &rna_TransformConstraint_to_max_x_rot,
	-1, "to_max_y_rot", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "To Maximum Y",
	"Top range of Y axis destination motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_ANGLE) | int(PROP_UNIT_ROTATION)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, to_max_rot[1]), RawPropertyType(5), nullptr},
	TransformConstraint_to_max_y_rot_get, TransformConstraint_to_max_y_rot_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -3.1415927410f, 3.1415927410f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_to_max_y_rot = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_to_max_y_rot_);

static FloatPropertyRNA rna_TransformConstraint_to_max_z_rot_ = {
	{&rna_TransformConstraint_mix_mode_rot, &rna_TransformConstraint_to_max_y_rot,
	-1, "to_max_z_rot", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "To Maximum Z",
	"Top range of Z axis destination motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_ANGLE) | int(PROP_UNIT_ROTATION)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, to_max_rot[2]), RawPropertyType(5), nullptr},
	TransformConstraint_to_max_z_rot_get, TransformConstraint_to_max_z_rot_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -3.1415927410f, 3.1415927410f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_to_max_z_rot = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_to_max_z_rot_);

static const EnumPropertyItem rna_TransformConstraint_mix_mode_rot_items[5] = {
	{1, "REPLACE", 0, "Replace", "Replace component values"},
	{0, "ADD", 0, "Add", "Add component values together"},
	{2, "BEFORE", 0, "Before Original", "Apply new rotation before original, as if it was on a parent"},
	{3, "AFTER", 0, "After Original", "Apply new rotation after original, as if it was on a child"},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_TransformConstraint_mix_mode_rot_ = {
	{&rna_TransformConstraint_from_min_x_scale, &rna_TransformConstraint_to_max_z_rot,
	-1, "mix_mode_rot", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Rotation Mix Mode",
	"Specify how to combine the new rotation with original",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, mix_mode_rot), RawPropertyType(2), nullptr},
	TransformConstraint_mix_mode_rot_get, TransformConstraint_mix_mode_rot_set, nullptr, nullptr, nullptr, nullptr, rna_TransformConstraint_mix_mode_rot_items, 4, 0
};
PropertyRNA &rna_TransformConstraint_mix_mode_rot = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_mix_mode_rot_);

static FloatPropertyRNA rna_TransformConstraint_from_min_x_scale_ = {
	{&rna_TransformConstraint_from_min_y_scale, &rna_TransformConstraint_mix_mode_rot,
	-1, "from_min_x_scale", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "From Minimum X",
	"Bottom range of X axis source motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, from_min_scale[0]), RawPropertyType(5), nullptr},
	TransformConstraint_from_min_x_scale_get, TransformConstraint_from_min_x_scale_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_from_min_x_scale = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_from_min_x_scale_);

static FloatPropertyRNA rna_TransformConstraint_from_min_y_scale_ = {
	{&rna_TransformConstraint_from_min_z_scale, &rna_TransformConstraint_from_min_x_scale,
	-1, "from_min_y_scale", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "From Minimum Y",
	"Bottom range of Y axis source motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, from_min_scale[1]), RawPropertyType(5), nullptr},
	TransformConstraint_from_min_y_scale_get, TransformConstraint_from_min_y_scale_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_from_min_y_scale = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_from_min_y_scale_);

static FloatPropertyRNA rna_TransformConstraint_from_min_z_scale_ = {
	{&rna_TransformConstraint_from_max_x_scale, &rna_TransformConstraint_from_min_y_scale,
	-1, "from_min_z_scale", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "From Minimum Z",
	"Bottom range of Z axis source motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, from_min_scale[2]), RawPropertyType(5), nullptr},
	TransformConstraint_from_min_z_scale_get, TransformConstraint_from_min_z_scale_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_from_min_z_scale = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_from_min_z_scale_);

static FloatPropertyRNA rna_TransformConstraint_from_max_x_scale_ = {
	{&rna_TransformConstraint_from_max_y_scale, &rna_TransformConstraint_from_min_z_scale,
	-1, "from_max_x_scale", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "From Maximum X",
	"Top range of X axis source motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, from_max_scale[0]), RawPropertyType(5), nullptr},
	TransformConstraint_from_max_x_scale_get, TransformConstraint_from_max_x_scale_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_from_max_x_scale = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_from_max_x_scale_);

static FloatPropertyRNA rna_TransformConstraint_from_max_y_scale_ = {
	{&rna_TransformConstraint_from_max_z_scale, &rna_TransformConstraint_from_max_x_scale,
	-1, "from_max_y_scale", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "From Maximum Y",
	"Top range of Y axis source motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, from_max_scale[1]), RawPropertyType(5), nullptr},
	TransformConstraint_from_max_y_scale_get, TransformConstraint_from_max_y_scale_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_from_max_y_scale = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_from_max_y_scale_);

static FloatPropertyRNA rna_TransformConstraint_from_max_z_scale_ = {
	{&rna_TransformConstraint_to_min_x_scale, &rna_TransformConstraint_from_max_y_scale,
	-1, "from_max_z_scale", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "From Maximum Z",
	"Top range of Z axis source motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, from_max_scale[2]), RawPropertyType(5), nullptr},
	TransformConstraint_from_max_z_scale_get, TransformConstraint_from_max_z_scale_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_from_max_z_scale = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_from_max_z_scale_);

static FloatPropertyRNA rna_TransformConstraint_to_min_x_scale_ = {
	{&rna_TransformConstraint_to_min_y_scale, &rna_TransformConstraint_from_max_z_scale,
	-1, "to_min_x_scale", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "To Minimum X",
	"Bottom range of X axis destination motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, to_min_scale[0]), RawPropertyType(5), nullptr},
	TransformConstraint_to_min_x_scale_get, TransformConstraint_to_min_x_scale_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_to_min_x_scale = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_to_min_x_scale_);

static FloatPropertyRNA rna_TransformConstraint_to_min_y_scale_ = {
	{&rna_TransformConstraint_to_min_z_scale, &rna_TransformConstraint_to_min_x_scale,
	-1, "to_min_y_scale", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "To Minimum Y",
	"Bottom range of Y axis destination motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, to_min_scale[1]), RawPropertyType(5), nullptr},
	TransformConstraint_to_min_y_scale_get, TransformConstraint_to_min_y_scale_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_to_min_y_scale = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_to_min_y_scale_);

static FloatPropertyRNA rna_TransformConstraint_to_min_z_scale_ = {
	{&rna_TransformConstraint_to_max_x_scale, &rna_TransformConstraint_to_min_y_scale,
	-1, "to_min_z_scale", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "To Minimum Z",
	"Bottom range of Z axis destination motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, to_min_scale[2]), RawPropertyType(5), nullptr},
	TransformConstraint_to_min_z_scale_get, TransformConstraint_to_min_z_scale_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_to_min_z_scale = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_to_min_z_scale_);

static FloatPropertyRNA rna_TransformConstraint_to_max_x_scale_ = {
	{&rna_TransformConstraint_to_max_y_scale, &rna_TransformConstraint_to_min_z_scale,
	-1, "to_max_x_scale", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "To Maximum X",
	"Top range of X axis destination motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, to_max_scale[0]), RawPropertyType(5), nullptr},
	TransformConstraint_to_max_x_scale_get, TransformConstraint_to_max_x_scale_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_to_max_x_scale = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_to_max_x_scale_);

static FloatPropertyRNA rna_TransformConstraint_to_max_y_scale_ = {
	{&rna_TransformConstraint_to_max_z_scale, &rna_TransformConstraint_to_max_x_scale,
	-1, "to_max_y_scale", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "To Maximum Y",
	"Top range of Y axis destination motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, to_max_scale[1]), RawPropertyType(5), nullptr},
	TransformConstraint_to_max_y_scale_get, TransformConstraint_to_max_y_scale_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_to_max_y_scale = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_to_max_y_scale_);

static FloatPropertyRNA rna_TransformConstraint_to_max_z_scale_ = {
	{&rna_TransformConstraint_mix_mode_scale, &rna_TransformConstraint_to_max_y_scale,
	-1, "to_max_z_scale", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "To Maximum Z",
	"Top range of Z axis destination motion",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, to_max_scale[2]), RawPropertyType(5), nullptr},
	TransformConstraint_to_max_z_scale_get, TransformConstraint_to_max_z_scale_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -1000.0f, 1000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_TransformConstraint_to_max_z_scale = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_to_max_z_scale_);

static const EnumPropertyItem rna_TransformConstraint_mix_mode_scale_items[3] = {
	{0, "REPLACE", 0, "Replace", "Replace component values"},
	{1, "MULTIPLY", 0, "Multiply", "Multiply component values together"},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_TransformConstraint_mix_mode_scale_ = {
	{nullptr, &rna_TransformConstraint_to_max_z_scale,
	-1, "mix_mode_scale", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Scale Mix Mode",
	"Specify how to combine the new scale with original",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bTransformConstraint, mix_mode_scale), RawPropertyType(2), nullptr},
	TransformConstraint_mix_mode_scale_get, TransformConstraint_mix_mode_scale_set, nullptr, nullptr, nullptr, nullptr, rna_TransformConstraint_mix_mode_scale_items, 2, 0
};
PropertyRNA &rna_TransformConstraint_mix_mode_scale = reinterpret_cast<PropertyRNA &>(rna_TransformConstraint_mix_mode_scale_);

StructRNA RNA_TransformConstraint = {
	{(ContainerRNA *)&RNA_ShrinkwrapConstraint, (ContainerRNA *)&RNA_LimitLocationConstraint,
	nullptr,
	{&rna_TransformConstraint_target, &rna_TransformConstraint_mix_mode_scale}},
	"TransformConstraint", nullptr, nullptr, 516, nullptr, "Transformation Constraint",
	"Map transformations of the target to the object",
	"*", 427,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Shrinkwrap Constraint */
static PointerPropertyRNA rna_ShrinkwrapConstraint_target_ = {
	{&rna_ShrinkwrapConstraint_shrinkwrap_type, nullptr,
	-1, "target", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Target",
	"Target Mesh object",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ShrinkwrapConstraint_target_get, ShrinkwrapConstraint_target_set, nullptr, rna_Mesh_object_poll,&RNA_Object
};
PropertyRNA &rna_ShrinkwrapConstraint_target = reinterpret_cast<PropertyRNA &>(rna_ShrinkwrapConstraint_target_);

static const EnumPropertyItem rna_ShrinkwrapConstraint_shrinkwrap_type_items[5] = {
	{0, "NEAREST_SURFACE", 0, "Nearest Surface Point", "Shrink the location to the nearest target surface"},
	{1, "PROJECT", 0, "Project", "Shrink the location to the nearest target surface along a given axis"},
	{2, "NEAREST_VERTEX", 0, "Nearest Vertex", "Shrink the location to the nearest target vertex"},
	{3, "TARGET_PROJECT", 0, "Target Normal Project", "Shrink the location to the nearest target surface along the interpolated vertex normals of the target"},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_ShrinkwrapConstraint_shrinkwrap_type_ = {
	{&rna_ShrinkwrapConstraint_wrap_mode, &rna_ShrinkwrapConstraint_target,
	-1, "shrinkwrap_type", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Shrinkwrap Type",
	"Select type of shrinkwrap algorithm for target position",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bShrinkwrapConstraint, shrinkType), RawPropertyType(1), nullptr},
	ShrinkwrapConstraint_shrinkwrap_type_get, ShrinkwrapConstraint_shrinkwrap_type_set, nullptr, nullptr, nullptr, nullptr, rna_ShrinkwrapConstraint_shrinkwrap_type_items, 4, 0
};
PropertyRNA &rna_ShrinkwrapConstraint_shrinkwrap_type = reinterpret_cast<PropertyRNA &>(rna_ShrinkwrapConstraint_shrinkwrap_type_);

static EnumPropertyRNA rna_ShrinkwrapConstraint_wrap_mode_ = {
	{&rna_ShrinkwrapConstraint_distance, &rna_ShrinkwrapConstraint_shrinkwrap_type,
	-1, "wrap_mode", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Snap Mode",
	"Select how to constrain the object to the target surface",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bShrinkwrapConstraint, shrinkMode), RawPropertyType(2), nullptr},
	ShrinkwrapConstraint_wrap_mode_get, ShrinkwrapConstraint_wrap_mode_set, nullptr, nullptr, nullptr, nullptr, rna_enum_modifier_shrinkwrap_mode_items, 5, 0
};
PropertyRNA &rna_ShrinkwrapConstraint_wrap_mode = reinterpret_cast<PropertyRNA &>(rna_ShrinkwrapConstraint_wrap_mode_);

static FloatPropertyRNA rna_ShrinkwrapConstraint_distance_ = {
	{&rna_ShrinkwrapConstraint_project_axis, &rna_ShrinkwrapConstraint_wrap_mode,
	-1, "distance", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Distance",
	"Distance to Target",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_DISTANCE) | int(PROP_UNIT_LENGTH)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bShrinkwrapConstraint, dist), RawPropertyType(5), nullptr},
	ShrinkwrapConstraint_distance_get, ShrinkwrapConstraint_distance_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0f, 100.0f, 0.0f, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_ShrinkwrapConstraint_distance = reinterpret_cast<PropertyRNA &>(rna_ShrinkwrapConstraint_distance_);

static EnumPropertyRNA rna_ShrinkwrapConstraint_project_axis_ = {
	{&rna_ShrinkwrapConstraint_project_axis_space, &rna_ShrinkwrapConstraint_distance,
	-1, "project_axis", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Project Axis",
	"Axis constrain to",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bShrinkwrapConstraint, projAxis), RawPropertyType(2), nullptr},
	ShrinkwrapConstraint_project_axis_get, ShrinkwrapConstraint_project_axis_set, nullptr, nullptr, nullptr, nullptr, rna_enum_object_axis_items, 6, 0
};
PropertyRNA &rna_ShrinkwrapConstraint_project_axis = reinterpret_cast<PropertyRNA &>(rna_ShrinkwrapConstraint_project_axis_);

static const EnumPropertyItem rna_ShrinkwrapConstraint_project_axis_space_items[7] = {
	{0, "WORLD", 0, "World Space", "The constraint is applied relative to the world coordinate system"},
	{5, "CUSTOM", 0, "Custom Space", "The constraint is applied in local space of a custom object/bone/vertex group"},
	{0, "", 0, nullptr, nullptr},
	{2, "POSE", 0, "Pose Space", "The constraint is applied in Pose Space, the object transformation is ignored"},
	{3, "LOCAL_WITH_PARENT", 0, "Local With Parent", "The constraint is applied relative to the rest pose local coordinate system of the bone, thus including the parent-induced transformation"},
	{1, "LOCAL", 0, "Local Space", "The constraint is applied relative to the local coordinate system of the object"},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_ShrinkwrapConstraint_project_axis_space_ = {
	{&rna_ShrinkwrapConstraint_project_limit, &rna_ShrinkwrapConstraint_project_axis,
	-1, "project_axis_space", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Axis Space",
	"Space for the projection axis",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	nullptr, 0, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bShrinkwrapConstraint, projAxisSpace), RawPropertyType(2), nullptr},
	ShrinkwrapConstraint_project_axis_space_get, ShrinkwrapConstraint_project_axis_space_set, rna_Constraint_owner_space_itemf, nullptr, nullptr, nullptr, rna_ShrinkwrapConstraint_project_axis_space_items, 6, 0
};
PropertyRNA &rna_ShrinkwrapConstraint_project_axis_space = reinterpret_cast<PropertyRNA &>(rna_ShrinkwrapConstraint_project_axis_space_);

static FloatPropertyRNA rna_ShrinkwrapConstraint_project_limit_ = {
	{&rna_ShrinkwrapConstraint_use_project_opposite, &rna_ShrinkwrapConstraint_project_axis_space,
	-1, "project_limit", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Project Distance",
	"Limit the distance used for projection (zero disables)",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_DISTANCE) | int(PROP_UNIT_LENGTH)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bShrinkwrapConstraint, projLimit), RawPropertyType(5), nullptr},
	ShrinkwrapConstraint_project_limit_get, ShrinkwrapConstraint_project_limit_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0f, 100.0f, 0.0f, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_ShrinkwrapConstraint_project_limit = reinterpret_cast<PropertyRNA &>(rna_ShrinkwrapConstraint_project_limit_);

static BoolPropertyRNA rna_ShrinkwrapConstraint_use_project_opposite_ = {
	{&rna_ShrinkwrapConstraint_cull_face, &rna_ShrinkwrapConstraint_project_limit,
	-1, "use_project_opposite", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Project Opposite",
	"Project in both specified and opposite directions",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ShrinkwrapConstraint_use_project_opposite_get, ShrinkwrapConstraint_use_project_opposite_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_ShrinkwrapConstraint_use_project_opposite = reinterpret_cast<PropertyRNA &>(rna_ShrinkwrapConstraint_use_project_opposite_);

static const EnumPropertyItem rna_ShrinkwrapConstraint_cull_face_items[4] = {
	{0, "OFF", 0, "Off", "No culling"},
	{8, "FRONT", 0, "Front", "No projection when in front of the face"},
	{16, "BACK", 0, "Back", "No projection when behind the face"},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_ShrinkwrapConstraint_cull_face_ = {
	{&rna_ShrinkwrapConstraint_use_invert_cull, &rna_ShrinkwrapConstraint_use_project_opposite,
	-1, "cull_face", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Face Cull",
	"Stop vertices from projecting to a face on the target when facing towards/away",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ShrinkwrapConstraint_cull_face_get, ShrinkwrapConstraint_cull_face_set, nullptr, nullptr, nullptr, nullptr, rna_ShrinkwrapConstraint_cull_face_items, 3, 0
};
PropertyRNA &rna_ShrinkwrapConstraint_cull_face = reinterpret_cast<PropertyRNA &>(rna_ShrinkwrapConstraint_cull_face_);

static BoolPropertyRNA rna_ShrinkwrapConstraint_use_invert_cull_ = {
	{&rna_ShrinkwrapConstraint_use_track_normal, &rna_ShrinkwrapConstraint_cull_face,
	-1, "use_invert_cull", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Invert Cull",
	"When projecting in the opposite direction invert the face cull mode",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ShrinkwrapConstraint_use_invert_cull_get, ShrinkwrapConstraint_use_invert_cull_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_ShrinkwrapConstraint_use_invert_cull = reinterpret_cast<PropertyRNA &>(rna_ShrinkwrapConstraint_use_invert_cull_);

static BoolPropertyRNA rna_ShrinkwrapConstraint_use_track_normal_ = {
	{&rna_ShrinkwrapConstraint_track_axis, &rna_ShrinkwrapConstraint_use_invert_cull,
	-1, "use_track_normal", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Align Axis To Normal",
	"Align the specified axis to the surface normal",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ShrinkwrapConstraint_use_track_normal_get, ShrinkwrapConstraint_use_track_normal_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_ShrinkwrapConstraint_use_track_normal = reinterpret_cast<PropertyRNA &>(rna_ShrinkwrapConstraint_use_track_normal_);

static const EnumPropertyItem rna_ShrinkwrapConstraint_track_axis_items[7] = {
	{0, "TRACK_X", 0, "X", ""},
	{1, "TRACK_Y", 0, "Y", ""},
	{2, "TRACK_Z", 0, "Z", ""},
	{3, "TRACK_NEGATIVE_X", 0, "-X", ""},
	{4, "TRACK_NEGATIVE_Y", 0, "-Y", ""},
	{5, "TRACK_NEGATIVE_Z", 0, "-Z", ""},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_ShrinkwrapConstraint_track_axis_ = {
	{nullptr, &rna_ShrinkwrapConstraint_use_track_normal,
	-1, "track_axis", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Track Axis",
	"Axis that is aligned to the normal",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bShrinkwrapConstraint, trackAxis), RawPropertyType(2), nullptr},
	ShrinkwrapConstraint_track_axis_get, ShrinkwrapConstraint_track_axis_set, nullptr, nullptr, nullptr, nullptr, rna_ShrinkwrapConstraint_track_axis_items, 6, 0
};
PropertyRNA &rna_ShrinkwrapConstraint_track_axis = reinterpret_cast<PropertyRNA &>(rna_ShrinkwrapConstraint_track_axis_);

StructRNA RNA_ShrinkwrapConstraint = {
	{(ContainerRNA *)&RNA_DampedTrackConstraint, (ContainerRNA *)&RNA_TransformConstraint,
	nullptr,
	{&rna_ShrinkwrapConstraint_target, &rna_ShrinkwrapConstraint_track_axis}},
	"ShrinkwrapConstraint", nullptr, nullptr, 516, nullptr, "Shrinkwrap Constraint",
	"Create constraint-based shrinkwrap relationship",
	"*", 420,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Damped Track Constraint */
static FloatPropertyRNA rna_DampedTrackConstraint_head_tail_ = {
	{&rna_DampedTrackConstraint_use_bbone_shape, nullptr,
	-1, "head_tail", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Head/Tail",
	"Target along length of bone: Head is 0, Tail is 1",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_FACTOR) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bConstraint, headtail), RawPropertyType(5), nullptr},
	DampedTrackConstraint_head_tail_get, DampedTrackConstraint_head_tail_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0f, 1.0f, 0.0f, 1.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_DampedTrackConstraint_head_tail = reinterpret_cast<PropertyRNA &>(rna_DampedTrackConstraint_head_tail_);

static BoolPropertyRNA rna_DampedTrackConstraint_use_bbone_shape_ = {
	{&rna_DampedTrackConstraint_target, &rna_DampedTrackConstraint_head_tail,
	-1, "use_bbone_shape", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Follow B-Bone",
	"Follow shape of B-Bone segments when calculating Head/Tail position",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	DampedTrackConstraint_use_bbone_shape_get, DampedTrackConstraint_use_bbone_shape_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_DampedTrackConstraint_use_bbone_shape = reinterpret_cast<PropertyRNA &>(rna_DampedTrackConstraint_use_bbone_shape_);

static PointerPropertyRNA rna_DampedTrackConstraint_target_ = {
	{&rna_DampedTrackConstraint_subtarget, &rna_DampedTrackConstraint_use_bbone_shape,
	-1, "target", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Target",
	"Target object",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	DampedTrackConstraint_target_get, DampedTrackConstraint_target_set, nullptr, nullptr,&RNA_Object
};
PropertyRNA &rna_DampedTrackConstraint_target = reinterpret_cast<PropertyRNA &>(rna_DampedTrackConstraint_target_);

static StringPropertyRNA rna_DampedTrackConstraint_subtarget_ = {
	{&rna_DampedTrackConstraint_track_axis, &rna_DampedTrackConstraint_target,
	-1, "subtarget", 262145, 1, 0, 0, 0, PropertyPathTemplateType(0), "Sub-Target",
	"Armature bone, mesh or lattice vertex group, ...",
	0, "*",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {64, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	DampedTrackConstraint_subtarget_get, DampedTrackConstraint_subtarget_length, DampedTrackConstraint_subtarget_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 64, ""
};
PropertyRNA &rna_DampedTrackConstraint_subtarget = reinterpret_cast<PropertyRNA &>(rna_DampedTrackConstraint_subtarget_);

static const EnumPropertyItem rna_DampedTrackConstraint_track_axis_items[7] = {
	{0, "TRACK_X", 0, "X", ""},
	{1, "TRACK_Y", 0, "Y", ""},
	{2, "TRACK_Z", 0, "Z", ""},
	{3, "TRACK_NEGATIVE_X", 0, "-X", ""},
	{4, "TRACK_NEGATIVE_Y", 0, "-Y", ""},
	{5, "TRACK_NEGATIVE_Z", 0, "-Z", ""},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_DampedTrackConstraint_track_axis_ = {
	{nullptr, &rna_DampedTrackConstraint_subtarget,
	-1, "track_axis", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Track Axis",
	"Axis that points to the target object",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bDampTrackConstraint, trackflag), RawPropertyType(0), nullptr},
	DampedTrackConstraint_track_axis_get, DampedTrackConstraint_track_axis_set, nullptr, nullptr, nullptr, nullptr, rna_DampedTrackConstraint_track_axis_items, 6, 0
};
PropertyRNA &rna_DampedTrackConstraint_track_axis = reinterpret_cast<PropertyRNA &>(rna_DampedTrackConstraint_track_axis_);

StructRNA RNA_DampedTrackConstraint = {
	{(ContainerRNA *)&RNA_SplineIKConstraint, (ContainerRNA *)&RNA_ShrinkwrapConstraint,
	nullptr,
	{&rna_DampedTrackConstraint_head_tail, &rna_DampedTrackConstraint_track_axis}},
	"DampedTrackConstraint", nullptr, nullptr, 516, nullptr, "Damped Track Constraint",
	"Point toward target by taking the shortest rotation path",
	"*", 425,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Spline IK Constraint */
static PointerPropertyRNA rna_SplineIKConstraint_target_ = {
	{&rna_SplineIKConstraint_chain_count, nullptr,
	-1, "target", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Target",
	"Curve that controls this relationship",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	SplineIKConstraint_target_get, SplineIKConstraint_target_set, nullptr, rna_Curve_object_poll,&RNA_Object
};
PropertyRNA &rna_SplineIKConstraint_target = reinterpret_cast<PropertyRNA &>(rna_SplineIKConstraint_target_);

static IntPropertyRNA rna_SplineIKConstraint_chain_count_ = {
	{&rna_SplineIKConstraint_joint_bindings, &rna_SplineIKConstraint_target,
	-1, "chain_count", 1, 1, 0, 4, 0, PropertyPathTemplateType(0), "Chain Length",
	"How many bones are included in the chain",
	0, "*",
	PROP_INT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bSplineIKConstraint, chainlen), RawPropertyType(1), nullptr},
	SplineIKConstraint_chain_count_get, SplineIKConstraint_chain_count_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
	PROP_SCALE_LINEAR, 1, 255, 1, 255, 1, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_SplineIKConstraint_chain_count = reinterpret_cast<PropertyRNA &>(rna_SplineIKConstraint_chain_count_);

static float rna_SplineIKConstraint_joint_bindings_default[32] = {
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f,
	0.0f
};

static FloatPropertyRNA rna_SplineIKConstraint_joint_bindings_ = {
	{&rna_SplineIKConstraint_use_chain_offset, &rna_SplineIKConstraint_chain_count,
	-1, "joint_bindings", 131075, 1, 0, 0, 0, PropertyPathTemplateType(0), "Joint Bindings",
	"(EXPERIENCED USERS ONLY) The relative positions of the joints along the chain, as percentages",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_FACTOR) | int(PROP_UNIT_NONE)), rna_SplineIKConstraint_joint_bindings_get_length, 1, {32, 0, 0}, 32,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	nullptr, nullptr, SplineIKConstraint_joint_bindings_get, SplineIKConstraint_joint_bindings_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0f, 1.0f, 0.0f, 1.0f, 10.0f, 3, nullptr, nullptr, 0.0f, rna_SplineIKConstraint_joint_bindings_default
};
PropertyRNA &rna_SplineIKConstraint_joint_bindings = reinterpret_cast<PropertyRNA &>(rna_SplineIKConstraint_joint_bindings_);

static BoolPropertyRNA rna_SplineIKConstraint_use_chain_offset_ = {
	{&rna_SplineIKConstraint_use_even_divisions, &rna_SplineIKConstraint_joint_bindings,
	-1, "use_chain_offset", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Chain Offset",
	"Offset the entire chain relative to the root joint",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	SplineIKConstraint_use_chain_offset_get, SplineIKConstraint_use_chain_offset_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_SplineIKConstraint_use_chain_offset = reinterpret_cast<PropertyRNA &>(rna_SplineIKConstraint_use_chain_offset_);

static BoolPropertyRNA rna_SplineIKConstraint_use_even_divisions_ = {
	{&rna_SplineIKConstraint_use_curve_radius, &rna_SplineIKConstraint_use_chain_offset,
	-1, "use_even_divisions", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Even Divisions",
	"Ignore the relative lengths of the bones when fitting to the curve",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	SplineIKConstraint_use_even_divisions_get, SplineIKConstraint_use_even_divisions_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_SplineIKConstraint_use_even_divisions = reinterpret_cast<PropertyRNA &>(rna_SplineIKConstraint_use_even_divisions_);

static BoolPropertyRNA rna_SplineIKConstraint_use_curve_radius_ = {
	{&rna_SplineIKConstraint_xz_scale_mode, &rna_SplineIKConstraint_use_even_divisions,
	-1, "use_curve_radius", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Use Curve Radius",
	"Average radius of the endpoints is used to tweak the X and Z Scaling of the bones, on top of XZ Scale mode",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	SplineIKConstraint_use_curve_radius_get, SplineIKConstraint_use_curve_radius_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_SplineIKConstraint_use_curve_radius = reinterpret_cast<PropertyRNA &>(rna_SplineIKConstraint_use_curve_radius_);

static const EnumPropertyItem rna_SplineIKConstraint_xz_scale_mode_items[5] = {
	{0, "NONE", 0, "None", "Don\'t scale the X and Z axes"},
	{1, "BONE_ORIGINAL", 0, "Bone Original", "Use the original scaling of the bones"},
	{2, "INVERSE_PRESERVE", 0, "Inverse Scale", "Scale of the X and Z axes is the inverse of the Y-Scale"},
	{3, "VOLUME_PRESERVE", 0, "Volume Preservation", "Scale of the X and Z axes are adjusted to preserve the volume of the bones"},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_SplineIKConstraint_xz_scale_mode_ = {
	{&rna_SplineIKConstraint_y_scale_mode, &rna_SplineIKConstraint_use_curve_radius,
	-1, "xz_scale_mode", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "XZ Scale Mode",
	"Method used for determining the scaling of the X and Z axes of the bones",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bSplineIKConstraint, xzScaleMode), RawPropertyType(1), nullptr},
	SplineIKConstraint_xz_scale_mode_get, SplineIKConstraint_xz_scale_mode_set, nullptr, nullptr, nullptr, nullptr, rna_SplineIKConstraint_xz_scale_mode_items, 4, 0
};
PropertyRNA &rna_SplineIKConstraint_xz_scale_mode = reinterpret_cast<PropertyRNA &>(rna_SplineIKConstraint_xz_scale_mode_);

static const EnumPropertyItem rna_SplineIKConstraint_y_scale_mode_items[4] = {
	{0, "NONE", 0, "None", "Don\'t scale in the Y axis"},
	{1, "FIT_CURVE", 0, "Fit Curve", "Scale the bones to fit the entire length of the curve"},
	{2, "BONE_ORIGINAL", 0, "Bone Original", "Use the original Y scale of the bone"},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_SplineIKConstraint_y_scale_mode_ = {
	{&rna_SplineIKConstraint_use_original_scale, &rna_SplineIKConstraint_xz_scale_mode,
	-1, "y_scale_mode", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Y Scale Mode",
	"Method used for determining the scaling of the Y axis of the bones, on top of the shape and scaling of the curve itself",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bSplineIKConstraint, yScaleMode), RawPropertyType(1), nullptr},
	SplineIKConstraint_y_scale_mode_get, SplineIKConstraint_y_scale_mode_set, nullptr, nullptr, nullptr, nullptr, rna_SplineIKConstraint_y_scale_mode_items, 3, 0
};
PropertyRNA &rna_SplineIKConstraint_y_scale_mode = reinterpret_cast<PropertyRNA &>(rna_SplineIKConstraint_y_scale_mode_);

static BoolPropertyRNA rna_SplineIKConstraint_use_original_scale_ = {
	{&rna_SplineIKConstraint_bulge, &rna_SplineIKConstraint_y_scale_mode,
	-1, "use_original_scale", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Use Original Scale",
	"Apply volume preservation over the original scaling",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	SplineIKConstraint_use_original_scale_get, SplineIKConstraint_use_original_scale_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_SplineIKConstraint_use_original_scale = reinterpret_cast<PropertyRNA &>(rna_SplineIKConstraint_use_original_scale_);

static FloatPropertyRNA rna_SplineIKConstraint_bulge_ = {
	{&rna_SplineIKConstraint_use_bulge_min, &rna_SplineIKConstraint_use_original_scale,
	-1, "bulge", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Volume Variation",
	"Factor between volume variation and stretching",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bSplineIKConstraint, bulge), RawPropertyType(5), nullptr},
	SplineIKConstraint_bulge_get, SplineIKConstraint_bulge_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0f, 100.0f, 0.0f, 100.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_SplineIKConstraint_bulge = reinterpret_cast<PropertyRNA &>(rna_SplineIKConstraint_bulge_);

static BoolPropertyRNA rna_SplineIKConstraint_use_bulge_min_ = {
	{&rna_SplineIKConstraint_use_bulge_max, &rna_SplineIKConstraint_bulge,
	-1, "use_bulge_min", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Use Volume Variation Minimum",
	"Use lower limit for volume variation",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	SplineIKConstraint_use_bulge_min_get, SplineIKConstraint_use_bulge_min_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_SplineIKConstraint_use_bulge_min = reinterpret_cast<PropertyRNA &>(rna_SplineIKConstraint_use_bulge_min_);

static BoolPropertyRNA rna_SplineIKConstraint_use_bulge_max_ = {
	{&rna_SplineIKConstraint_bulge_min, &rna_SplineIKConstraint_use_bulge_min,
	-1, "use_bulge_max", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Use Volume Variation Maximum",
	"Use upper limit for volume variation",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	SplineIKConstraint_use_bulge_max_get, SplineIKConstraint_use_bulge_max_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_SplineIKConstraint_use_bulge_max = reinterpret_cast<PropertyRNA &>(rna_SplineIKConstraint_use_bulge_max_);

static FloatPropertyRNA rna_SplineIKConstraint_bulge_min_ = {
	{&rna_SplineIKConstraint_bulge_max, &rna_SplineIKConstraint_use_bulge_max,
	-1, "bulge_min", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Volume Variation Minimum",
	"Minimum volume stretching factor",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bSplineIKConstraint, bulge_min), RawPropertyType(5), nullptr},
	SplineIKConstraint_bulge_min_get, SplineIKConstraint_bulge_min_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0f, 1.0f, 0.0f, 1.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_SplineIKConstraint_bulge_min = reinterpret_cast<PropertyRNA &>(rna_SplineIKConstraint_bulge_min_);

static FloatPropertyRNA rna_SplineIKConstraint_bulge_max_ = {
	{&rna_SplineIKConstraint_bulge_smooth, &rna_SplineIKConstraint_bulge_min,
	-1, "bulge_max", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Volume Variation Maximum",
	"Maximum volume stretching factor",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bSplineIKConstraint, bulge_max), RawPropertyType(5), nullptr},
	SplineIKConstraint_bulge_max_get, SplineIKConstraint_bulge_max_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 1.0f, 100.0f, 1.0f, 100.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_SplineIKConstraint_bulge_max = reinterpret_cast<PropertyRNA &>(rna_SplineIKConstraint_bulge_max_);

static FloatPropertyRNA rna_SplineIKConstraint_bulge_smooth_ = {
	{nullptr, &rna_SplineIKConstraint_bulge_max,
	-1, "bulge_smooth", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Volume Variation Smoothness",
	"Strength of volume stretching clamping",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_FACTOR) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bSplineIKConstraint, bulge_smooth), RawPropertyType(5), nullptr},
	SplineIKConstraint_bulge_smooth_get, SplineIKConstraint_bulge_smooth_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0f, 1.0f, 0.0f, 1.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_SplineIKConstraint_bulge_smooth = reinterpret_cast<PropertyRNA &>(rna_SplineIKConstraint_bulge_smooth_);

StructRNA RNA_SplineIKConstraint = {
	{(ContainerRNA *)&RNA_PivotConstraint, (ContainerRNA *)&RNA_DampedTrackConstraint,
	nullptr,
	{&rna_SplineIKConstraint_target, &rna_SplineIKConstraint_bulge_smooth}},
	"SplineIKConstraint", nullptr, nullptr, 516, nullptr, "Spline IK Constraint",
	"Align \'n\' bones along a curve",
	"*", 423,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Pivot Constraint */
static FloatPropertyRNA rna_PivotConstraint_head_tail_ = {
	{&rna_PivotConstraint_use_bbone_shape, nullptr,
	-1, "head_tail", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Head/Tail",
	"Target along length of bone: Head is 0, Tail is 1",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_FACTOR) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bConstraint, headtail), RawPropertyType(5), nullptr},
	PivotConstraint_head_tail_get, PivotConstraint_head_tail_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, 0.0f, 1.0f, 0.0f, 1.0f, 10.0f, 3, nullptr, nullptr, 0.0f, nullptr
};
PropertyRNA &rna_PivotConstraint_head_tail = reinterpret_cast<PropertyRNA &>(rna_PivotConstraint_head_tail_);

static BoolPropertyRNA rna_PivotConstraint_use_bbone_shape_ = {
	{&rna_PivotConstraint_target, &rna_PivotConstraint_head_tail,
	-1, "use_bbone_shape", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Follow B-Bone",
	"Follow shape of B-Bone segments when calculating Head/Tail position",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	PivotConstraint_use_bbone_shape_get, PivotConstraint_use_bbone_shape_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_PivotConstraint_use_bbone_shape = reinterpret_cast<PropertyRNA &>(rna_PivotConstraint_use_bbone_shape_);

static PointerPropertyRNA rna_PivotConstraint_target_ = {
	{&rna_PivotConstraint_subtarget, &rna_PivotConstraint_use_bbone_shape,
	-1, "target", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Target",
	"Target Object, defining the position of the pivot when defined",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	PivotConstraint_target_get, PivotConstraint_target_set, nullptr, nullptr,&RNA_Object
};
PropertyRNA &rna_PivotConstraint_target = reinterpret_cast<PropertyRNA &>(rna_PivotConstraint_target_);

static StringPropertyRNA rna_PivotConstraint_subtarget_ = {
	{&rna_PivotConstraint_use_relative_location, &rna_PivotConstraint_target,
	-1, "subtarget", 262145, 1, 0, 0, 0, PropertyPathTemplateType(0), "Sub-Target",
	"",
	0, "*",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {64, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	PivotConstraint_subtarget_get, PivotConstraint_subtarget_length, PivotConstraint_subtarget_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 64, ""
};
PropertyRNA &rna_PivotConstraint_subtarget = reinterpret_cast<PropertyRNA &>(rna_PivotConstraint_subtarget_);

static BoolPropertyRNA rna_PivotConstraint_use_relative_location_ = {
	{&rna_PivotConstraint_offset, &rna_PivotConstraint_subtarget,
	-1, "use_relative_location", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Use Relative Offset",
	"Offset will be an absolute point in space instead of relative to the target",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	PivotConstraint_use_relative_location_get, PivotConstraint_use_relative_location_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_PivotConstraint_use_relative_location = reinterpret_cast<PropertyRNA &>(rna_PivotConstraint_use_relative_location_);

static float rna_PivotConstraint_offset_default[3] = {
	0.0f,
	0.0f,
	0.0f
};

static FloatPropertyRNA rna_PivotConstraint_offset_ = {
	{&rna_PivotConstraint_rotation_range, &rna_PivotConstraint_use_relative_location,
	-1, "offset", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Offset",
	"Offset of pivot from target (when set), or from owner\'s location (when Fixed Position is off), or the absolute pivot point",
	0, "*",
	PROP_FLOAT, PropertySubType(int(PROP_TRANSLATION) | int(PROP_UNIT_LENGTH)), nullptr, 1, {3, 0, 0}, 3,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bPivotConstraint, offset), RawPropertyType(5), nullptr},
	nullptr, nullptr, PivotConstraint_offset_get, PivotConstraint_offset_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, PROP_SCALE_LINEAR, -10000.0f, 10000.0f, -FLT_MAX, FLT_MAX, 10.0f, 3, nullptr, nullptr, 0.0f, rna_PivotConstraint_offset_default
};
PropertyRNA &rna_PivotConstraint_offset = reinterpret_cast<PropertyRNA &>(rna_PivotConstraint_offset_);

static const EnumPropertyItem rna_PivotConstraint_rotation_range_items[8] = {
	{-1, "ALWAYS_ACTIVE", 0, "Always", "Use the pivot point in every rotation"},
	{0, "NX", 0, "-X Rotation", "Use the pivot point in the negative rotation range around the X-axis"},
	{1, "NY", 0, "-Y Rotation", "Use the pivot point in the negative rotation range around the Y-axis"},
	{2, "NZ", 0, "-Z Rotation", "Use the pivot point in the negative rotation range around the Z-axis"},
	{3, "X", 0, "X Rotation", "Use the pivot point in the positive rotation range around the X-axis"},
	{4, "Y", 0, "Y Rotation", "Use the pivot point in the positive rotation range around the Y-axis"},
	{5, "Z", 0, "Z Rotation", "Use the pivot point in the positive rotation range around the Z-axis"},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_PivotConstraint_rotation_range_ = {
	{nullptr, &rna_PivotConstraint_offset,
	-1, "rotation_range", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Enabled Rotation Range",
	"Rotation range on which pivoting should occur",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bPivotConstraint, rotAxis), RawPropertyType(1), nullptr},
	PivotConstraint_rotation_range_get, PivotConstraint_rotation_range_set, nullptr, nullptr, nullptr, nullptr, rna_PivotConstraint_rotation_range_items, 7, 0
};
PropertyRNA &rna_PivotConstraint_rotation_range = reinterpret_cast<PropertyRNA &>(rna_PivotConstraint_rotation_range_);

StructRNA RNA_PivotConstraint = {
	{(ContainerRNA *)&RNA_FollowTrackConstraint, (ContainerRNA *)&RNA_SplineIKConstraint,
	nullptr,
	{&rna_PivotConstraint_head_tail, &rna_PivotConstraint_rotation_range}},
	"PivotConstraint", nullptr, nullptr, 516, nullptr, "Pivot Constraint",
	"Rotate around a different point",
	"*", 416,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Follow Track Constraint */
static PointerPropertyRNA rna_FollowTrackConstraint_clip_ = {
	{&rna_FollowTrackConstraint_track, nullptr,
	-1, "clip", 8388801, 1, 0, 0, 0, PropertyPathTemplateType(0), "Movie Clip",
	"Movie Clip to get tracking data from",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	FollowTrackConstraint_clip_get, FollowTrackConstraint_clip_set, nullptr, nullptr,&RNA_MovieClip
};
PropertyRNA &rna_FollowTrackConstraint_clip = reinterpret_cast<PropertyRNA &>(rna_FollowTrackConstraint_clip_);

static StringPropertyRNA rna_FollowTrackConstraint_track_ = {
	{&rna_FollowTrackConstraint_use_active_clip, &rna_FollowTrackConstraint_clip,
	-1, "track", 262145, 1, 0, 0, 0, PropertyPathTemplateType(0), "Track",
	"Movie tracking track to follow",
	0, "MovieClip",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {64, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	FollowTrackConstraint_track_get, FollowTrackConstraint_track_length, FollowTrackConstraint_track_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 64, ""
};
PropertyRNA &rna_FollowTrackConstraint_track = reinterpret_cast<PropertyRNA &>(rna_FollowTrackConstraint_track_);

static BoolPropertyRNA rna_FollowTrackConstraint_use_active_clip_ = {
	{&rna_FollowTrackConstraint_use_3d_position, &rna_FollowTrackConstraint_track,
	-1, "use_active_clip", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Active Clip",
	"Use active clip defined in scene",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	FollowTrackConstraint_use_active_clip_get, FollowTrackConstraint_use_active_clip_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_FollowTrackConstraint_use_active_clip = reinterpret_cast<PropertyRNA &>(rna_FollowTrackConstraint_use_active_clip_);

static BoolPropertyRNA rna_FollowTrackConstraint_use_3d_position_ = {
	{&rna_FollowTrackConstraint_object, &rna_FollowTrackConstraint_use_active_clip,
	-1, "use_3d_position", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "3D Position",
	"Use 3D position of track to parent to",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	FollowTrackConstraint_use_3d_position_get, FollowTrackConstraint_use_3d_position_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_FollowTrackConstraint_use_3d_position = reinterpret_cast<PropertyRNA &>(rna_FollowTrackConstraint_use_3d_position_);

static StringPropertyRNA rna_FollowTrackConstraint_object_ = {
	{&rna_FollowTrackConstraint_camera, &rna_FollowTrackConstraint_use_3d_position,
	-1, "object", 262145, 1, 0, 0, 0, PropertyPathTemplateType(0), "Object",
	"Movie tracking object to follow (if empty, camera object is used)",
	0, "*",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {64, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	FollowTrackConstraint_object_get, FollowTrackConstraint_object_length, FollowTrackConstraint_object_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 64, ""
};
PropertyRNA &rna_FollowTrackConstraint_object = reinterpret_cast<PropertyRNA &>(rna_FollowTrackConstraint_object_);

static PointerPropertyRNA rna_FollowTrackConstraint_camera_ = {
	{&rna_FollowTrackConstraint_depth_object, &rna_FollowTrackConstraint_object,
	-1, "camera", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Camera",
	"Camera to which motion is parented (if empty active scene camera is used)",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	FollowTrackConstraint_camera_get, FollowTrackConstraint_camera_set, nullptr, rna_Constraint_cameraObject_poll,&RNA_Object
};
PropertyRNA &rna_FollowTrackConstraint_camera = reinterpret_cast<PropertyRNA &>(rna_FollowTrackConstraint_camera_);

static PointerPropertyRNA rna_FollowTrackConstraint_depth_object_ = {
	{&rna_FollowTrackConstraint_frame_method, &rna_FollowTrackConstraint_camera,
	-1, "depth_object", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Depth Object",
	"Object used to define depth in camera space by projecting onto surface of this object",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	FollowTrackConstraint_depth_object_get, FollowTrackConstraint_depth_object_set, nullptr, rna_Constraint_followTrack_depthObject_poll,&RNA_Object
};
PropertyRNA &rna_FollowTrackConstraint_depth_object = reinterpret_cast<PropertyRNA &>(rna_FollowTrackConstraint_depth_object_);

static const EnumPropertyItem rna_FollowTrackConstraint_frame_method_items[4] = {
	{0, "STRETCH", 0, "Stretch", ""},
	{1, "FIT", 0, "Fit", ""},
	{2, "CROP", 0, "Crop", ""},
	{0, nullptr, 0, nullptr, nullptr}
};

static EnumPropertyRNA rna_FollowTrackConstraint_frame_method_ = {
	{&rna_FollowTrackConstraint_use_undistorted_position, &rna_FollowTrackConstraint_depth_object,
	-1, "frame_method", 3, 1, 0, 4, 0, PropertyPathTemplateType(0), "Frame Method",
	"How the footage fits in the camera frame",
	0, "*",
	PROP_ENUM, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	offsetof(bFollowTrackConstraint, frame_method), RawPropertyType(0), nullptr},
	FollowTrackConstraint_frame_method_get, FollowTrackConstraint_frame_method_set, nullptr, nullptr, nullptr, nullptr, rna_FollowTrackConstraint_frame_method_items, 3, 0
};
PropertyRNA &rna_FollowTrackConstraint_frame_method = reinterpret_cast<PropertyRNA &>(rna_FollowTrackConstraint_frame_method_);

static BoolPropertyRNA rna_FollowTrackConstraint_use_undistorted_position_ = {
	{nullptr, &rna_FollowTrackConstraint_frame_method,
	-1, "use_undistorted_position", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Undistort",
	"Parent to undistorted position of 2D track",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	FollowTrackConstraint_use_undistorted_position_get, FollowTrackConstraint_use_undistorted_position_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_FollowTrackConstraint_use_undistorted_position = reinterpret_cast<PropertyRNA &>(rna_FollowTrackConstraint_use_undistorted_position_);

StructRNA RNA_FollowTrackConstraint = {
	{(ContainerRNA *)&RNA_CameraSolverConstraint, (ContainerRNA *)&RNA_PivotConstraint,
	nullptr,
	{&rna_FollowTrackConstraint_clip, &rna_FollowTrackConstraint_use_undistorted_position}},
	"FollowTrackConstraint", nullptr, nullptr, 516, nullptr, "Follow Track Constraint",
	"Lock motion to the target motion track",
	"*", 410,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Camera Solver Constraint */
static PointerPropertyRNA rna_CameraSolverConstraint_clip_ = {
	{&rna_CameraSolverConstraint_use_active_clip, nullptr,
	-1, "clip", 8388801, 1, 0, 0, 0, PropertyPathTemplateType(0), "Movie Clip",
	"Movie Clip to get tracking data from",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CameraSolverConstraint_clip_get, CameraSolverConstraint_clip_set, nullptr, nullptr,&RNA_MovieClip
};
PropertyRNA &rna_CameraSolverConstraint_clip = reinterpret_cast<PropertyRNA &>(rna_CameraSolverConstraint_clip_);

static BoolPropertyRNA rna_CameraSolverConstraint_use_active_clip_ = {
	{nullptr, &rna_CameraSolverConstraint_clip,
	-1, "use_active_clip", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Active Clip",
	"Use active clip defined in scene",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	CameraSolverConstraint_use_active_clip_get, CameraSolverConstraint_use_active_clip_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_CameraSolverConstraint_use_active_clip = reinterpret_cast<PropertyRNA &>(rna_CameraSolverConstraint_use_active_clip_);

StructRNA RNA_CameraSolverConstraint = {
	{(ContainerRNA *)&RNA_ObjectSolverConstraint, (ContainerRNA *)&RNA_FollowTrackConstraint,
	nullptr,
	{&rna_CameraSolverConstraint_clip, &rna_CameraSolverConstraint_use_active_clip}},
	"CameraSolverConstraint", nullptr, nullptr, 516, nullptr, "Camera Solver Constraint",
	"Lock motion to the reconstructed camera movement",
	"*", 404,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Object Solver Constraint */
static PointerPropertyRNA rna_ObjectSolverConstraint_clip_ = {
	{&rna_ObjectSolverConstraint_use_active_clip, nullptr,
	-1, "clip", 8388801, 1, 0, 0, 0, PropertyPathTemplateType(0), "Movie Clip",
	"Movie Clip to get tracking data from",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ObjectSolverConstraint_clip_get, ObjectSolverConstraint_clip_set, nullptr, nullptr,&RNA_MovieClip
};
PropertyRNA &rna_ObjectSolverConstraint_clip = reinterpret_cast<PropertyRNA &>(rna_ObjectSolverConstraint_clip_);

static BoolPropertyRNA rna_ObjectSolverConstraint_use_active_clip_ = {
	{&rna_ObjectSolverConstraint_set_inverse_pending, &rna_ObjectSolverConstraint_clip,
	-1, "use_active_clip", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Active Clip",
	"Use active clip defined in scene",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ObjectSolverConstraint_use_active_clip_get, ObjectSolverConstraint_use_active_clip_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_ObjectSolverConstraint_use_active_clip = reinterpret_cast<PropertyRNA &>(rna_ObjectSolverConstraint_use_active_clip_);

static BoolPropertyRNA rna_ObjectSolverConstraint_set_inverse_pending_ = {
	{&rna_ObjectSolverConstraint_object, &rna_ObjectSolverConstraint_use_active_clip,
	-1, "set_inverse_pending", 3, 1, 0, 0, 0, PropertyPathTemplateType(0), "Set Inverse Pending",
	"Set to true to request recalculation of the inverse matrix",
	0, "*",
	PROP_BOOLEAN, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ObjectSolverConstraint_set_inverse_pending_get, ObjectSolverConstraint_set_inverse_pending_set, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, nullptr
};
PropertyRNA &rna_ObjectSolverConstraint_set_inverse_pending = reinterpret_cast<PropertyRNA &>(rna_ObjectSolverConstraint_set_inverse_pending_);

static StringPropertyRNA rna_ObjectSolverConstraint_object_ = {
	{&rna_ObjectSolverConstraint_camera, &rna_ObjectSolverConstraint_set_inverse_pending,
	-1, "object", 262145, 1, 0, 0, 0, PropertyPathTemplateType(0), "Object",
	"Movie tracking object to follow",
	0, "*",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {64, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ObjectSolverConstraint_object_get, ObjectSolverConstraint_object_length, ObjectSolverConstraint_object_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 64, ""
};
PropertyRNA &rna_ObjectSolverConstraint_object = reinterpret_cast<PropertyRNA &>(rna_ObjectSolverConstraint_object_);

static PointerPropertyRNA rna_ObjectSolverConstraint_camera_ = {
	{nullptr, &rna_ObjectSolverConstraint_object,
	-1, "camera", 8388737, 1, 0, 0, 0, PropertyPathTemplateType(0), "Camera",
	"Camera to which motion is parented (if empty active scene camera is used)",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 102367232, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	ObjectSolverConstraint_camera_get, ObjectSolverConstraint_camera_set, nullptr, rna_Constraint_cameraObject_poll,&RNA_Object
};
PropertyRNA &rna_ObjectSolverConstraint_camera = reinterpret_cast<PropertyRNA &>(rna_ObjectSolverConstraint_camera_);

StructRNA RNA_ObjectSolverConstraint = {
	{(ContainerRNA *)&RNA_TransformCacheConstraint, (ContainerRNA *)&RNA_CameraSolverConstraint,
	nullptr,
	{&rna_ObjectSolverConstraint_clip, &rna_ObjectSolverConstraint_camera}},
	"ObjectSolverConstraint", nullptr, nullptr, 516, nullptr, "Object Solver Constraint",
	"Lock motion to the reconstructed object movement",
	"*", 415,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

/* Transform Cache Constraint */
static PointerPropertyRNA rna_TransformCacheConstraint_cache_file_ = {
	{&rna_TransformCacheConstraint_object_path, nullptr,
	-1, "cache_file", 9437377, 1, 0, 0, 0, PropertyPathTemplateType(0), "Cache File",
	"",
	0, "*",
	PROP_POINTER, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {0, 0, 0}, 0,
	rna_Constraint_dependency_update, 0, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	TransformCacheConstraint_cache_file_get, TransformCacheConstraint_cache_file_set, nullptr, nullptr,&RNA_CacheFile
};
PropertyRNA &rna_TransformCacheConstraint_cache_file = reinterpret_cast<PropertyRNA &>(rna_TransformCacheConstraint_cache_file_);

static StringPropertyRNA rna_TransformCacheConstraint_object_path_ = {
	{nullptr, &rna_TransformCacheConstraint_cache_file,
	-1, "object_path", 262145, 1, 0, 0, 0, PropertyPathTemplateType(0), "Object Path",
	"Path to the object in the Alembic archive used to lookup the transform matrix",
	0, "*",
	PROP_STRING, PropertySubType(int(PROP_NONE) | int(PROP_UNIT_NONE)), nullptr, 0, {1024, 0, 0}, 0,
	rna_Constraint_update, 0, nullptr, nullptr, nullptr, nullptr, nullptr,
	0, PROP_RAW_UNSET, nullptr},
	TransformCacheConstraint_object_path_get, TransformCacheConstraint_object_path_length, TransformCacheConstraint_object_path_set, nullptr, nullptr, nullptr, nullptr, eStringPropertySearchFlag(0), nullptr, 1024, ""
};
PropertyRNA &rna_TransformCacheConstraint_object_path = reinterpret_cast<PropertyRNA &>(rna_TransformCacheConstraint_object_path_);

StructRNA RNA_TransformCacheConstraint = {
	{(ContainerRNA *)&RNA_Context, (ContainerRNA *)&RNA_ObjectSolverConstraint,
	nullptr,
	{&rna_TransformCacheConstraint_cache_file, &rna_TransformCacheConstraint_object_path}},
	"TransformCacheConstraint", nullptr, nullptr, 516, nullptr, "Transform Cache Constraint",
	"Look up transformation from an external file",
	"*", 426,
	&rna_Constraint_name, &rna_Constraint_rna_properties,
	&RNA_Constraint,
	nullptr,
	rna_ConstraintType_refine,
	rna_Constraint_path,
	nullptr,
	nullptr,
	nullptr,
	nullptr,
	{nullptr, nullptr}
};

