lpol_file = bytearray([0x30, 0x14, 0x16, 0x04, 0x49, 0x4d, 0x34, 0x50,
                       0x16, 0x04, 0x6c, 0x70, 0x6f, 0x6c, 0x16, 0x03,
                       0x31, 0x2e, 0x30, 0x04, 0x01, 0x00])

# extracted from ac2
PROGRESS_BAR_OPERATIONS = {
    11: 'CREATE_PARTITION_MAP',
    12: 'CREATE_FILESYSTEM',
    13: 'RESTORE_IMAGE',
    14: 'VERIFY_RESTORE',
    15: 'CHECK_FILESYSTEMS',
    16: 'MOUNT_FILESYSTEMS',
    17: 'FIXUP_VAR',
    18: 'FLASH_FIRMWARE',
    19: 'UPDATE_BASEBAND',
    20: 'SET_BOOT_STAGE',
    21: 'REBOOT_DEVICE',
    22: 'SHUTDOWN_DEVICE',
    23: 'TURN_ON_ACCESSORY_POWER',
    24: 'CLEAR_BOOTARGS',
    25: 'MODIFY_BOOTARGS',
    26: 'INSTALL_ROOT',
    27: 'INSTALL_KERNELCACHE',
    28: 'WAIT_FOR_NAND',
    29: 'UNMOUNT_FILESYSTEMS',
    30: 'SET_DATETIME',
    31: 'EXEC_IBOOT',
    32: 'FINALIZE_NAND_EPOCH_UPDATE',
    33: 'CHECK_INAPPR_BOOT_PARTITIONS',
    34: 'CREATE_FACTORY_RESTORE_MARKER',
    35: 'LOAD_FIRMWARE',
    36: 'REQUESTING_FUD_DATA',
    37: 'REMOVING_ACTIVATION_RECORD',
    38: 'CHECK_BATTERY_VOLTAGE',
    39: 'WAIT_BATTERY_CHARGE',
    40: 'CLOSE_MODEM_TICKETS',
    41: 'MIGRATE_DATA',
    42: 'WIPE_STORAGE_DEVICE',
    43: 'SEND_APPLE_LOGO',
    44: 'CHECK_LOGS',
    46: 'CLEAR_NVRAM',
    47: 'UPDATE_GAS_GAUGE',
    48: 'PREPARE_BASEBAND_UPDATE',
    49: 'BOOT_BASEBAND',
    50: 'CREATE_SYSTEM_KEYBAG',
    51: 'UPDATE_IR_MCU_FIRMWARE',
    52: 'RESIZE_SYSTEM_PARTITION',
    53: 'COLLECTING_UPDATER_OUTPUT',
    54: 'PAIR_STOCKHOLM',
    55: 'UPDATE_STOCKHOLM',
    56: 'UPDATE_SWDHID',
    57: 'CERTIFY_SEP',
    58: 'UPDATE_NAND_FIRMWARE',
    59: 'UPDATE_SE_FIRMWARE',
    60: 'UPDATE_SAVAGE',
    61: 'INSTALLING_DEVICETREE',
    62: 'CERTIFY_SAVAGE',
    63: 'SUBMITTING_PROVINFO',
    64: 'CERTIFY_YONKERS',
    65: 'UPDATE_ROSE',
    66: 'UPDATE_VERIDIAN',
    67: 'CREATING_PROTECTED_VOLUME',
    68: 'RESIZING_MAIN_FS_PARTITION',
    69: 'CREATING_RECOVERY_OS_VOLUME',
    70: 'INSTALLING_RECOVERY_OS_FILES',
    71: 'INSTALLING_RECOVERY_OS_IMAGE',
    74: 'REQUESTING_EAN_DATA',
    77: 'SEALING_SYSTEM_VOLUME',
}
SUPPORTED_DATA_TYPES = {
    'BasebandBootData': False,
    'BasebandData': False,
    'BasebandStackData': False,
    'BasebandUpdaterOutputData': False,
    'BuildIdentityDict': False,
    'BuildIdentityDictV2': False,
    'DataType': False,
    'DiagData': False,
    'EANData': False,
    'FDRMemoryCommit': False,
    'FDRTrustData': False,
    'FUDData': False,
    'FileData': False,
    'FileDataDone': False,
    'FirmwareUpdaterData': False,
    'GrapeFWData': False,
    'HPMFWData': False,
    'HostSystemTime': True,
    'KernelCache': False,
    'NORData': False,
    'NitrogenFWData': True,
    'OpalFWData': False,
    'OverlayRootDataCount': False,
    'OverlayRootDataForKey': True,
    'PeppyFWData': True,
    'PersonalizedBootObjectV3': False,
    'PersonalizedData': True,
    'ProvisioningData': False,
    'RamdiskFWData': True,
    'RecoveryOSASRImage': True,
    'RecoveryOSAppleLogo': True,
    'RecoveryOSDeviceTree': True,
    'RecoveryOSFileAssetImage': True,
    'RecoveryOSIBEC': True,
    'RecoveryOSIBootFWFilesImages': True,
    'RecoveryOSImage': True,
    'RecoveryOSKernelCache': True,
    'RecoveryOSLocalPolicy': True,
    'RecoveryOSOverlayRootDataCount': False,
    'RecoveryOSRootTicketData': True,
    'RecoveryOSStaticTrustCache': True,
    'RecoveryOSVersionData': True,
    'RootData': False,
    'RootTicket': False,
    'S3EOverride': False,
    'SourceBootObjectV3': False,
    'SourceBootObjectV4': False,
    'SsoServiceTicket': False,
    'StockholmPostflight': False,
    'SystemImageCanonicalMetadata': False,
    'SystemImageData': False,
    'SystemImageRootHash': False,
    'USBCFWData': False,
    'USBCOverride': False,
}

# extracted from ac2
SUPPORTED_MESSAGE_TYPES = {
    'BBUpdateStatusMsg': False,
    'CheckpointMsg': True,
    'DataRequestMsg': False,
    'FDRSubmit': True,
    'MsgType': False,
    'PreviousRestoreLogMsg': False,
    'ProgressMsg': False,
    'ProvisioningAck': False,
    'ProvisioningInfo': False,
    'ProvisioningStatusMsg': False,
    'ReceivedFinalStatusMsg': False,
    'RestoredCrash': True,
    'StatusMsg': False,
}
