use serde::{Serialize, Deserialize};
use super::*;
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct AProgram {
#[serde(rename = "@Name", default)]
pub name: String,
#[serde(rename = "@UId", default, skip_serializing_if = "Option::is_none")]
pub uid: Option<String>,
#[serde(rename = "@ParentUId", default, skip_serializing_if = "Option::is_none")]
pub parent_uid: Option<String>,
#[serde(rename = "@Type", default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(rename = "@TestEdits", default, skip_serializing_if = "Option::is_none")]
pub test_edits: Option<String>,
#[serde(rename = "@MainRoutineName", default, skip_serializing_if = "Option::is_none")]
pub main_routine_name: Option<String>,
#[serde(rename = "@PreStateRoutineName", default, skip_serializing_if = "Option::is_none")]
pub pre_state_routine_name: Option<String>,
#[serde(rename = "@FaultRoutineName", default, skip_serializing_if = "Option::is_none")]
pub fault_routine_name: Option<String>,
#[serde(rename = "@ExecutingTaskName", default, skip_serializing_if = "Option::is_none")]
pub executing_task_name: Option<String>,
#[serde(rename = "@Verified", default, skip_serializing_if = "Option::is_none")]
pub verified: Option<String>,
#[serde(rename = "@EditsExist", default, skip_serializing_if = "Option::is_none")]
pub edits_exist: Option<String>,
#[serde(rename = "@Disabled", default, skip_serializing_if = "Option::is_none")]
pub disabled: Option<String>,
#[serde(rename = "@InitialStepIndex", default, skip_serializing_if = "Option::is_none")]
pub initial_step_index: Option<String>,
#[serde(rename = "@InitialState", default, skip_serializing_if = "Option::is_none")]
pub initial_state: Option<String>,
#[serde(rename = "@CompleteStateIfNotImpl", default, skip_serializing_if = "Option::is_none")]
pub complete_state_if_not_impl: Option<String>,
#[serde(rename = "@LossOfCommCmd", default, skip_serializing_if = "Option::is_none")]
pub loss_of_comm_cmd: Option<String>,
#[serde(rename = "@ExternalRequestAction", default, skip_serializing_if = "Option::is_none")]
pub external_request_action: Option<String>,
#[serde(rename = "@EquipmentId", default, skip_serializing_if = "Option::is_none")]
pub equipment_id: Option<String>,
#[serde(rename = "@RecipePhaseNames", default, skip_serializing_if = "Option::is_none")]
pub recipe_phase_names: Option<String>,
#[serde(rename = "@LastScanTime", default, skip_serializing_if = "Option::is_none")]
pub last_scan_time: Option<String>,
#[serde(rename = "@MaxScanTime", default, skip_serializing_if = "Option::is_none")]
pub max_scan_time: Option<String>,
#[serde(rename = "@TagsUId", default, skip_serializing_if = "Option::is_none")]
pub tags_uid: Option<String>,
#[serde(rename = "@RoutinesUId", default, skip_serializing_if = "Option::is_none")]
pub routines_uid: Option<String>,
#[serde(rename = "@Class", default, skip_serializing_if = "Option::is_none")]
pub class: Option<String>,
#[serde(rename = "@SynchronizeRedundancyDataAfterExecution", default, skip_serializing_if = "Option::is_none")]
pub synchronize_redundancy_data_after_execution: Option<String>,
#[serde(rename = "@UseAsFolder", default, skip_serializing_if = "Option::is_none")]
pub use_as_folder: Option<String>,
#[serde(rename = "@AutoValueAssignStepToPhase", default, skip_serializing_if = "Option::is_none")]
pub auto_value_assign_step_to_phase: Option<String>,
#[serde(rename = "@AutoValueAssignPhaseToStepOnComplete", default, skip_serializing_if = "Option::is_none")]
pub auto_value_assign_phase_to_step_on_complete: Option<String>,
#[serde(rename = "@AutoValueAssignPhaseToStepOnStopped", default, skip_serializing_if = "Option::is_none")]
pub auto_value_assign_phase_to_step_on_stopped: Option<String>,
#[serde(rename = "@AutoValueAssignPhaseToStepOnAborted", default, skip_serializing_if = "Option::is_none")]
pub auto_value_assign_phase_to_step_on_aborted: Option<String>,
#[serde(rename = "@Revision", default, skip_serializing_if = "Option::is_none")]
pub revision: Option<String>,
#[serde(rename = "@RevisionExtension", default, skip_serializing_if = "Option::is_none")]
pub revision_extension: Option<String>,
#[serde(rename = "@UnitID", default, skip_serializing_if = "Option::is_none")]
pub unit_id: Option<String>,
#[serde(rename = "@RetainSequenceIDOnReset", default, skip_serializing_if = "Option::is_none")]
pub retain_sequence_idon_reset: Option<String>,
#[serde(rename = "@GenerateSequenceEvents", default, skip_serializing_if = "Option::is_none")]
pub generate_sequence_events: Option<String>,
#[serde(rename = "@ValuesToUseOnStart", default, skip_serializing_if = "Option::is_none")]
pub values_to_use_on_start: Option<String>,
#[serde(rename = "@ValuesToUseOnReset", default, skip_serializing_if = "Option::is_none")]
pub values_to_use_on_reset: Option<String>,
#[serde(rename = "@Use", default, skip_serializing_if = "Option::is_none")]
pub r#use: Option<String>,
#[serde(rename = "CustomProperties", default, skip_serializing_if = "Option::is_none")]
pub custom_properties: Option<CustomPropertiesCollection>,
#[serde(rename = "Description", default, skip_serializing_if = "Option::is_none")]
pub description: Option<Description>,
#[serde(rename = "RevisionNote", default, skip_serializing_if = "Option::is_none")]
pub revision_note: Option<RevisionNote>,
#[serde(rename = "Tags", default, skip_serializing_if = "Option::is_none")]
pub tags: Option<TagCollection>,
#[serde(rename = "Parameters", default, skip_serializing_if = "Option::is_none")]
pub parameters: Option<UDIParameterCollection>,
#[serde(rename = "LocalTags", default, skip_serializing_if = "Option::is_none")]
pub local_tags: Option<UDILocalTagCollection>,
#[serde(rename = "Routines", default, skip_serializing_if = "Option::is_none")]
pub routines: Option<RoutineCollection>,
#[serde(rename = "ChildPrograms", default, skip_serializing_if = "Option::is_none")]
pub child_programs: Option<ChildProgramCollection>,
#[serde(rename = "$text", default, skip_serializing_if = "Option::is_none")]
pub text: Option<String>,
}