OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
DevDefs.h File Reference

Common definitions, macros, and constants for printer modules. Enhance building and including. More...

#include <functional>
#include <cstddef>
#include <string>
#include <utility>
#include <unordered_map>
Include dependency graph for DevDefs.h:

Go to the source code of this file.

Classes

class  Slic3r::devPrinterUtil
struct  NozzleDef
struct  std::hash< NozzleDef >

Namespaces

namespace  Slic3r
 |/ Copyright (c) Prusa Research 2020 - 2023 Enrico Turri @enricoturri1966 |/ |/ PrusaSlicer is released under the terms of the AGPLv3 or higher |/
namespace  Slic3r::GUI

Macros

#define DEV_RESERVED_FOR_FUTURE(...)
#define VIRTUAL_TRAY_MAIN_ID   255
#define VIRTUAL_TRAY_DEPUTY_ID   254
#define VIRTUAL_AMS_MAIN_ID_STR   "255"
#define VIRTUAL_AMS_DEPUTY_ID_STR   "254"
#define AMS_LITE_MIXED_TRAY_INDEX_OFFSET   24
#define INVALID_AMS_TEMPERATURE   std::numeric_limits<float>::min()
#define MAIN_EXTRUDER_ID   0
#define DEPUTY_EXTRUDER_ID   1
#define UNIQUE_EXTRUDER_ID   MAIN_EXTRUDER_ID
#define INVALID_EXTRUDER_ID   -1
#define LOGIC_UNIQUE_EXTRUDER_ID   0
#define LOGIC_L_EXTRUDER_ID   0
#define LOGIC_R_EXTRUDER_ID   1

Typedefs

using Slic3r::DevAmsSlotId = std::pair<int, int>
using Slic3r::DevFirmwareUpgradingState = DevFirmwareUpgradeState

Enumerations

enum  PrinterArch { ARCH_CORE_XY , ARCH_I3 }
enum  PrinterSeries { SERIES_X1 = 0 , SERIES_P1P , SERIES_UNKNOWN }
enum  Slic3r::AmsStatusMain {
  Slic3r::AMS_STATUS_MAIN_IDLE = 0x00 , Slic3r::AMS_STATUS_MAIN_FILAMENT_CHANGE = 0x01 , Slic3r::AMS_STATUS_MAIN_RFID_IDENTIFYING = 0x02 , Slic3r::AMS_STATUS_MAIN_ASSIST = 0x03 ,
  Slic3r::AMS_STATUS_MAIN_CALIBRATION = 0x04 , Slic3r::AMS_STATUS_MAIN_COLD_PULL = 0x07 , Slic3r::AMS_STATUS_MAIN_SELF_CHECK = 0x10 , Slic3r::AMS_STATUS_MAIN_DEBUG = 0x20 ,
  Slic3r::AMS_STATUS_MAIN_UNKNOWN = 0xFF
}
enum  Slic3r::DevAmsType : int {
  Slic3r::EXT_SPOOL = 0 , Slic3r::AMS = 1 , Slic3r::AMS_LITE = 2 , Slic3r::N3F = 3 ,
  Slic3r::N3S = 4 , Slic3r::AMS_LITE_MIXED = 5
}
enum  Slic3r::DevFilamentStep {
  Slic3r::STEP_IDLE = 0x00 , Slic3r::STEP_PAUSE = 0x01 , Slic3r::STEP_HEAT_NOZZLE = 0x02 , Slic3r::STEP_CUT_FILAMENT = 0x03 ,
  Slic3r::STEP_PULL_CURR_FILAMENT = 0x04 , Slic3r::STEP_PUSH_NEW_FILAMENT = 0x05 , Slic3r::STEP_GRAB_NEW_FILAMENT = 0x06 , Slic3r::STEP_PURGE_OLD_FILAMENT = 0x07 ,
  Slic3r::STEP_CHECK_POSITION = 0x08 , Slic3r::STEP_SWITCH_EXTRUDER = 0x09 , Slic3r::STEP_SWITCH_HOTEND = 0x0A , Slic3r::STEP_AMS_FILA_COOLING = 0x0B ,
  Slic3r::STEP_PUSH_SWITCHER_FILA = 0x0C , Slic3r::STEP_PULL_SWITCHER_FILA = 0x0D , Slic3r::STEP_SWITCHER_SWITCH = 0x0E , Slic3r::STEP_CONFIRM_EXTRUDED = 0x08 ,
  Slic3r::STEP_COUNT
}
enum  Slic3r::NozzleFlowType : int {
  Slic3r::NONE_FLOWTYPE , Slic3r::S_FLOW , Slic3r::H_FLOW , Slic3r::U_FLOW ,
  Slic3r::E_FLOW
}
enum  Slic3r::NozzleDiameterType : int {
  Slic3r::NONE_DIAMETER_TYPE , Slic3r::NOZZLE_DIAMETER_0_2 , Slic3r::NOZZLE_DIAMETER_0_4 , Slic3r::NOZZLE_DIAMETER_0_6 ,
  Slic3r::NOZZLE_DIAMETER_0_8
}
enum  Slic3r::DevPrintingSpeedLevel {
  Slic3r::SPEED_LEVEL_INVALID = 0 , Slic3r::SPEED_LEVEL_SILENCE = 1 , Slic3r::SPEED_LEVEL_NORMAL = 2 , Slic3r::SPEED_LEVEL_RAPID = 3 ,
  Slic3r::SPEED_LEVEL_RAMPAGE = 4 , Slic3r::SPEED_LEVEL_COUNT
}
enum class  Slic3r::DevFirmwareUpgradeState : int {
  Slic3r::DC = -1 , Slic3r::UpgradingUnavaliable = 0 , Slic3r::UpgradingAvaliable = 1 , Slic3r::UpgradingInProgress = 2 ,
  Slic3r::UpgradingFinished = 3
}
enum  Slic3r::GUI::PrintFromType { Slic3r::GUI::FROM_NORMAL , Slic3r::GUI::FROM_SDCARD_VIEW }

Detailed Description

Common definitions, macros, and constants for printer modules. Enhance building and including.

This file provides shared macros, constants, and enumerations for all printer-related modules, including printer types, status, binding states, connection types, and error codes. It is intended to be included wherever printer-specific definitions are required.

Definition in file DevDefs.h.

Macro Definition Documentation

◆ AMS_LITE_MIXED_TRAY_INDEX_OFFSET

◆ DEPUTY_EXTRUDER_ID

#define DEPUTY_EXTRUDER_ID   1

Referenced by Slic3r::GUI::AmsMapingPopup::AmsMapingPopup(), Slic3r::GUI::FeedDirectionDialog::FeedDirectionDialog(), Slic3r::GUI::NewCalibrationHistoryDialog::NewCalibrationHistoryDialog(), Slic3r::DevMappingUtil::ams_filament_mapping(), Slic3r::DevNozzle::AtLeftExtruder(), Slic3r::GUI::UnsavedChangesDialog::build(), Slic3r::GUI::NozzleListTable::BuildTextObjStr(), WipingDialog::BuildTextObjStr(), Slic3r::check_filaments_printable(), Slic3r::GUI::AMSControl::CreateAmsDoubleNozzle(), Slic3r::GUI::AMSControl::CreateAmsSingleNozzle(), Slic3r::GUI::deserialize_nozzle_config(), Slic3r::GUI::StatusBasePanel::expand_filament_loading(), Slic3r::DevCalib::ExtrusionCalibSelectParse(), Slic3r::GUI::AMSControl::findFirstMode(), Slic3r::GUI::Tab::generate_extruder_options(), Slic3r::GUI::CalibrationPresetPage::get_extruder_id_by_tray_id(), Slic3r::GUI::SelectMachineDialog::get_mapped_nozzle_str(), Slic3r::GUI::SelectMachineDialog::get_mapped_nozzles(), Slic3r::DevPrinterConfigUtil::get_toolhead_display_name(), Slic3r::DevNozzle::GetExtruderId(), Slic3r::DevFilaSystem::GetExtruderIdByAmsId(), Slic3r::DevNozzleMappingCtrl::GetMappedNozzlePosStrByFilaId(), Slic3r::MachineObject::is_filament_installed(), Slic3r::GUI::SyncAmsInfoDialog::is_nozzle_type_match(), Slic3r::GUI::StatusPanel::on_ams_load_curr(), Slic3r::GUI::StatusPanel::on_ams_switch(), Slic3r::GUI::HistoryWindow::on_device_connected(), Slic3r::GUI::StatusPanel::on_set_nozzle_temp(), Slic3r::GUI::AMSextruder::OnAmsLoading(), Slic3r::GUI::FeedDirectionDialog::OnRadioClicked(), Slic3r::MachineObject::parse_json(), Slic3r::DevFilaSystemParser::ParseV1_0(), Slic3r::GUI::s_get_slicing_extuder_nozzles(), Slic3r::GUI::AMSRoadDownPart::SetPassRoadColour(), Slic3r::GUI::wgtDeviceNozzleRackSelect::SetSelectedNozzle(), Slic3r::GUI::sGetNozzlePosId(), Slic3r::GUI::PrinterPartsDialog::Show(), Slic3r::GUI::AMSControl::SwitchAms(), Slic3r::GUI::CalibrationPresetPage::sync_ams_info(), Slic3r::GUI::CaliPASaveAutoPanel::sync_cali_result_for_multi_extruder(), Slic3r::GUI::StatusPanel::update_ams(), Slic3r::GUI::AmsReplaceMaterialDialog::update_machine_obj(), Slic3r::GUI::AmsMapingPopup::update_mapping_items(), Slic3r::GUI::StatusPanel::update_misc_ctrl(), Slic3r::GUI::Sidebar::update_presets(), Slic3r::GUI::SelectMachineDialog::update_show_status(), Slic3r::GUI::StatusPanel::update_temp_ctrl(), Slic3r::GUI::AmsMapingPopup::update_title(), Slic3r::GUI::PrinterPartsDialog::UpdateNozzleInfo(), Slic3r::GUI::wgtDeviceNozzleRackSelect::UpdateNozzleInfos(), Slic3r::GUI::wgtDeviceNozzleRackSelect::UpdatSelectedNozzle(), Slic3r::GUI::wgtDeviceNozzleRackSelect::UpdatSelectedNozzles(), and Slic3r::GUI::StatusPanel::wire_controls().

◆ DEV_RESERVED_FOR_FUTURE

#define DEV_RESERVED_FOR_FUTURE ( ...)
Value:
/* stripped */

◆ INVALID_AMS_TEMPERATURE

#define INVALID_AMS_TEMPERATURE   std::numeric_limits<float>::min()

◆ INVALID_EXTRUDER_ID

◆ LOGIC_L_EXTRUDER_ID

◆ LOGIC_R_EXTRUDER_ID

◆ LOGIC_UNIQUE_EXTRUDER_ID

#define LOGIC_UNIQUE_EXTRUDER_ID   0

◆ MAIN_EXTRUDER_ID

#define MAIN_EXTRUDER_ID   0

Referenced by Slic3r::GUI::AmsMapingPopup::AmsMapingPopup(), Slic3r::DevExtderSystem::DevExtderSystem(), Slic3r::GUI::EditCalibrationHistoryDialog::EditCalibrationHistoryDialog(), Slic3r::GUI::FeedDirectionDialog::FeedDirectionDialog(), Slic3r::GUI::NewCalibrationHistoryDialog::NewCalibrationHistoryDialog(), Slic3r::GUI::_get_ext_loc_str(), Slic3r::GUI::_get_nozzle_name(), Slic3r::GUI::_is_rack_managed_nozzle(), Slic3r::DevMappingUtil::ams_filament_mapping(), Slic3r::DevNozzle::AtRightExtruder(), Slic3r::GUI::UnsavedChangesDialog::build(), Slic3r::GUI::NozzleListTable::BuildTextObjStr(), WipingDialog::BuildTextObjStr(), Slic3r::MachineObject::check_ams_filament_valid(), Slic3r::check_filaments_printable(), Slic3r::GUI::CalibUtils::check_printable_status_before_cali(), Slic3r::GUI::CalibUtils::check_printable_status_before_cali(), Slic3r::GUI::SelectMachineDialog::CheckErrorExtruderNozzleWithSlicing(), Slic3r::GUI::SelectMachineDialog::CheckWarningRackStatus(), Slic3r::DevNozzleSystem::CollectNozzles(), Slic3r::GUI::AMSControl::CreateAmsDoubleNozzle(), Slic3r::GUI::AMSControl::CreateAmsSingleNozzle(), Slic3r::GUI::wgtDeviceNozzleRackUprade::CreateGui(), Slic3r::DevNozzleRack::CtrlCanReadAll(), Slic3r::DevNozzleRack::CtrlCanUpdateAll(), Slic3r::DevNozzleMappingCtrl::CtrlGetAutoNozzleMappingV0(), Slic3r::GUI::deserialize_nozzle_config(), Slic3r::GUI::StatusBasePanel::expand_filament_loading(), Slic3r::DevCalib::ExtrusionCalibSelectParse(), Slic3r::DevCalib::ExtrusionCalibSetParse(), Slic3r::GUI::AMSControl::findFirstMode(), Slic3r::GUI::Tab::generate_extruder_options(), Slic3r::GUI::CalibrationPresetPage::get_extruder_id_by_tray_id(), Slic3r::GUI::SelectMachineDialog::get_mapped_nozzle_str(), Slic3r::GUI::SelectMachineDialog::get_mapped_nozzles(), Slic3r::GUI::Sidebar::priv::get_nozzle_options(), Slic3r::DevExtder::GetDisplayLoc(), Slic3r::DevExtder::GetDisplayName(), Slic3r::DevNozzle::GetExtruderId(), Slic3r::DevFilaSystem::GetExtruderIdByAmsId(), Slic3r::DevNozzleMappingCtrl::GetMappedNozzlePosStrByFilaId(), Slic3r::DevNozzleMappingCtrl::GetMappedNozzlePosVecByFilaId(), Slic3r::MachineObject::is_filament_installed(), Slic3r::GUI::SyncAmsInfoDialog::is_nozzle_type_match(), Slic3r::GUI::AMSControl::IsAmsInRightPanel(), Slic3r::DevNozzleSystem::IsRackMaximumInstalled(), Slic3r::GUI::StatusPanel::on_ams_load_curr(), Slic3r::GUI::StatusPanel::on_ams_switch(), Slic3r::GUI::HistoryWindow::on_device_connected(), Slic3r::GUI::StatusPanel::on_set_nozzle_temp(), Slic3r::GUI::AMSextruder::OnAmsLoading(), Slic3r::GUI::FeedDirectionDialog::OnRadioClicked(), Slic3r::MachineObject::parse_json(), Slic3r::DevFilaSystemParser::ParseAgentFilament(), Slic3r::DevFilaSystemParser::ParseV1_0(), Slic3r::ExtderSystemParser::ParseV1_0(), Slic3r::GUI::AMSinfo::routes_to_main_extruder(), Slic3r::GUI::s_get_slicing_extuder_nozzles(), Slic3r::GUI::sCheckFilamentInfo(), Slic3r::DevNozzleMappingCtrl::SetManualNozzleMappingByFila(), Slic3r::GUI::AMSRoadDownPart::SetPassRoadColour(), Slic3r::GUI::wgtDeviceNozzleRackSelect::SetSelectedNozzle(), Slic3r::GUI::sGetNozzlePosId(), Slic3r::GUI::PrinterPartsDialog::Show(), Slic3r::GUI::HistoryWindow::support_nozzle_id_column(), Slic3r::GUI::AMSControl::SwitchAms(), Slic3r::GUI::CalibrationPresetPage::sync_ams_info(), Slic3r::GUI::CaliPASaveAutoPanel::sync_cali_result_for_multi_extruder(), Slic3r::GUI::HistoryWindow::sync_history_data(), Slic3r::GUI::StatusPanel::update_ams(), Slic3r::GUI::AmsReplaceMaterialDialog::update_machine_obj(), Slic3r::GUI::AmsMapingPopup::update_mapping_items(), Slic3r::GUI::StatusPanel::update_misc_ctrl(), Slic3r::GUI::Sidebar::update_presets(), Slic3r::GUI::StatusPanel::update_temp_ctrl(), Slic3r::GUI::AmsMapingPopup::update_title(), Slic3r::GUI::PrinterPartsDialog::UpdateNozzleInfo(), Slic3r::GUI::wgtDeviceNozzleRackSelect::UpdateNozzleInfos(), Slic3r::GUI::wgtDeviceNozzleRack::UpdateRackInfo(), Slic3r::GUI::wgtDeviceNozzleRackSelect::UpdatSelectedNozzle(), Slic3r::GUI::wgtDeviceNozzleRackSelect::UpdatSelectedNozzles(), and Slic3r::GUI::StatusPanel::wire_controls().

◆ UNIQUE_EXTRUDER_ID

#define UNIQUE_EXTRUDER_ID   MAIN_EXTRUDER_ID

◆ VIRTUAL_AMS_DEPUTY_ID_STR

◆ VIRTUAL_AMS_MAIN_ID_STR

◆ VIRTUAL_TRAY_DEPUTY_ID

#define VIRTUAL_TRAY_DEPUTY_ID   254

Referenced by Slic3r::GUI::AmsMapingPopup::AmsMapingPopup(), Slic3r::GUI::_check_kval_not_default(), Slic3r::_parse_tray_info(), Slic3r::GUI::AmsMapingPopup::add_ams_mapping(), Slic3r::DevMappingUtil::ams_filament_mapping(), Slic3r::MachineObject::command_ams_filament_settings(), Slic3r::GUI::AMSControl::CreateAmsDoubleNozzle(), Slic3r::DevCalib::ExtrusionCalibSelectParse(), Slic3r::GUI::SelectMachineDialog::get_ams_mapping_result(), Slic3r::GUI::SendMultiMachinePage::get_ams_mapping_result(), Slic3r::GUI::SyncAmsInfoDialog::get_ams_mapping_result(), Slic3r::GUI::get_tray_ams_and_slot_id(), get_tray_id_by_ams_id_and_slot_id(), Slic3r::GUI::get_tray_name_by_tray_id(), Slic3r::DevFilaSystem::GetExtruderIdByAmsId(), Slic3r::DevFilaSystem::GetTrayIndexMap(), Slic3r::DevMappingUtil::is_valid_mapping_result(), Slic3r::GUI::AMSMaterialsSetting::is_virtual_tray(), Slic3r::devPrinterUtil::IsVirtualSlot(), Slic3r::GUI::StatusPanel::on_ams_load_curr(), Slic3r::GUI::StatusPanel::on_ams_switch(), Slic3r::GUI::AmsMapingPopup::on_left_down(), Slic3r::GUI::AMSMaterialsSetting::on_select_filament(), Slic3r::GUI::AMSMaterialsSetting::on_select_ok(), Slic3r::GUI::AMSMaterialsSetting::on_select_reset(), Slic3r::GUI::SelectMachineDialog::on_set_finish_mapping(), Slic3r::GUI::AMSinfo::parse_ext_info(), Slic3r::MachineObject::parse_json(), Slic3r::DevFilaSystemParser::ParseAgentFilament(), Slic3r::ExtderSystemParser::ParseV1_0(), Slic3r::GUI::SendMultiMachinePage::request_params(), Slic3r::GUI::MappingItem::set_data(), Slic3r::GUI::CaliPASaveManualPanel::Show(), Slic3r::GUI::CalibrationPresetPage::sync_ams_info(), Slic3r::GUI::SelectMachineDialog::sync_ams_mapping_result(), Slic3r::GUI::SyncAmsInfoDialog::sync_ams_mapping_result(), Slic3r::GUI::CaliPASaveAutoPanel::sync_cali_result(), Slic3r::GUI::CaliPASaveAutoPanel::sync_cali_result_for_multi_extruder(), Slic3r::GUI::GUI_App::transition_tridid(), Slic3r::GUI::StatusPanel::update_ams(), Slic3r::GUI::StatusPanel::update_ams_control_state(), Slic3r::GUI::SelectMachineDialog::update_filament_change_count(), Slic3r::GUI::CalibrationPresetPage::update_filament_combobox(), Slic3r::GUI::StatusPanel::update_filament_loading_panel(), Slic3r::GUI::AmsMapingPopup::update_mapping_items(), Slic3r::GUI::CalibrationPresetPage::update_multi_extruder_filament_combobox(), and Slic3r::GUI::AMSControl::UpdateAms().

◆ VIRTUAL_TRAY_MAIN_ID

#define VIRTUAL_TRAY_MAIN_ID   255

Referenced by Slic3r::GUI::AmsMapingPopup::AmsMapingPopup(), Slic3r::MachineObject::MachineObject(), Slic3r::GUI::_check_kval_not_default(), Slic3r::_parse_tray_info(), Slic3r::GUI::AmsMapingPopup::add_ams_mapping(), Slic3r::DevMappingUtil::ams_filament_mapping(), Slic3r::MachineObject::command_ams_filament_settings(), Slic3r::GUI::AMSControl::CreateAmsDoubleNozzle(), Slic3r::DevCalib::ExtrusionCalibSelectParse(), Slic3r::DevCalib::ExtrusionCalibSetParse(), Slic3r::GUI::SelectMachineDialog::get_ams_mapping_result(), Slic3r::GUI::SendMultiMachinePage::get_ams_mapping_result(), Slic3r::GUI::SyncAmsInfoDialog::get_ams_mapping_result(), Slic3r::MachineObject::get_curr_tray(), Slic3r::GUI::get_tray_ams_and_slot_id(), get_tray_id_by_ams_id_and_slot_id(), Slic3r::GUI::get_tray_name_by_tray_id(), Slic3r::DevFilaSystem::GetExtruderIdByAmsId(), Slic3r::DevFilaSystem::GetTrayIndexMap(), Slic3r::DevMappingUtil::is_valid_mapping_result(), Slic3r::GUI::AMSMaterialsSetting::is_virtual_tray(), Slic3r::devPrinterUtil::IsVirtualSlot(), Slic3r::GUI::StatusPanel::on_ams_load_curr(), Slic3r::GUI::StatusPanel::on_ams_load_vams(), Slic3r::GUI::StatusPanel::on_ams_refresh_rfid(), Slic3r::GUI::StatusPanel::on_ams_selected(), Slic3r::GUI::StatusPanel::on_ams_switch(), Slic3r::GUI::ExtrusionCalibration::on_click_cali(), Slic3r::GUI::ExtrusionCalibration::on_click_save(), Slic3r::GUI::StatusPanel::on_ext_spool_edit(), Slic3r::GUI::StatusPanel::on_filament_extrusion_cali(), Slic3r::GUI::AmsMapingPopup::on_left_down(), Slic3r::GUI::AMSMaterialsSetting::on_select_filament(), Slic3r::GUI::SelectMachineDialog::on_set_finish_mapping(), Slic3r::GUI::AMSinfo::parse_ext_info(), Slic3r::MachineObject::parse_json(), Slic3r::MachineObject::parse_vt_tray(), Slic3r::DevFilaSystemParser::ParseAgentFilament(), Slic3r::ExtderSystemParser::ParseV1_0(), Slic3r::GUI::MappingItem::set_data(), Slic3r::GUI::CaliPASaveManualPanel::Show(), Slic3r::GUI::CalibrationPresetPage::sync_ams_info(), Slic3r::GUI::SelectMachineDialog::sync_ams_mapping_result(), Slic3r::GUI::SyncAmsInfoDialog::sync_ams_mapping_result(), Slic3r::GUI::CaliPASaveAutoPanel::sync_cali_result(), Slic3r::GUI::CaliPASaveAutoPanel::sync_cali_result_for_multi_extruder(), Slic3r::GUI::GUI_App::transition_tridid(), Slic3r::GUI::StatusPanel::update_ams(), Slic3r::GUI::StatusPanel::update_ams_control_state(), Slic3r::GUI::SelectMachineDialog::update_filament_change_count(), Slic3r::GUI::CalibrationPresetPage::update_filament_combobox(), Slic3r::GUI::StatusPanel::update_filament_loading_panel(), Slic3r::GUI::AmsMapingPopup::update_mapping_items(), Slic3r::GUI::CalibrationPresetPage::update_multi_extruder_filament_combobox(), and Slic3r::GUI::AMSControl::UpdateAms().

Enumeration Type Documentation

◆ PrinterArch

Enumerator
ARCH_CORE_XY 
ARCH_I3 
28{
29 ARCH_CORE_XY,// move hotbed
30 ARCH_I3,//move z
31};
@ ARCH_CORE_XY
Definition DevDefs.h:29
@ ARCH_I3
Definition DevDefs.h:30

◆ PrinterSeries

Enumerator
SERIES_X1 
SERIES_P1P 
SERIES_UNKNOWN 
34{
35 SERIES_X1 = 0,
38};
@ SERIES_P1P
Definition DevDefs.h:36
@ SERIES_UNKNOWN
Definition DevDefs.h:37
@ SERIES_X1
Definition DevDefs.h:35