####################################################################
#
#     This file was generated using XDR::Parse version v0.3.1,
#        XDR::Gen version 0.0.5 and LibVirt version v11.6.0
#
#      Don't edit this file, use the source template instead
#
#                 ANY CHANGES HERE WILL BE LOST !
#
####################################################################


use v5.14;
use warnings;

package Protocol::Sys::Virt::Remote v11.6.0;

use Carp qw(croak);
use Log::Any qw($log);

use Protocol::Sys::Virt::Remote::XDR v11.6.0;
use Protocol::Sys::Virt::Transport::XDR v11.6.0;
my $remote = 'Protocol::Sys::Virt::Remote::XDR';
my $transport = 'Protocol::Sys::Virt::Transport::XDR';

use constant {
    DRV_FEATURE_MIGRATION_V1                     => 1,
    DRV_FEATURE_REMOTE                           => 2,
    DRV_FEATURE_MIGRATION_V2                     => 3,
    DRV_FEATURE_MIGRATION_P2P                    => 4,
    DRV_FEATURE_MIGRATION_DIRECT                 => 5,
    DRV_FEATURE_MIGRATION_V3                     => 6,
    DRV_FEATURE_MIGRATE_CHANGE_PROTECTION        => 7,
    DRV_FEATURE_FD_PASSING                       => 8,
    DRV_FEATURE_TYPED_PARAM_STRING               => 9,
    DRV_FEATURE_PROGRAM_KEEPALIVE                => 10,
    DRV_FEATURE_XML_MIGRATABLE                   => 11,
    DRV_FEATURE_MIGRATION_OFFLINE                => 12,
    DRV_FEATURE_MIGRATION_PARAMS                 => 13,
    DRV_FEATURE_REMOTE_EVENT_CALLBACK            => 14,
    DRV_FEATURE_REMOTE_CLOSE_CALLBACK            => 15,
    DRV_FEATURE_NETWORK_UPDATE_HAS_CORRECT_ORDER => 16,
};


sub encode_no_args { '' }
sub decode_no_args { undef }
sub encode_no_ret { '' }
sub decode_no_ret { undef }

sub invalid_proc { my $proc = shift; sub { die "Invalid remote procedure ($proc)" } };

my @args_encoders = (
    invalid_proc(0),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_open_args($_[0], $idx, $rv); return $rv; },
    \&encode_no_args,
    \&encode_no_args,
    \&encode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_get_max_vcpus_args($_[0], $idx, $rv); return $rv; },
    \&encode_no_args,
    \&encode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_attach_device_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_create_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_create_xml_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_define_xml_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_destroy_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_detach_device_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_xml_desc_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_autostart_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_info_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_max_memory_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_max_vcpus_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_os_type_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_vcpus_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_list_defined_domains_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_lookup_by_id_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_lookup_by_name_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_lookup_by_uuid_args($_[0], $idx, $rv); return $rv; },
    \&encode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_pin_vcpu_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_reboot_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_resume_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_autostart_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_max_memory_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_memory_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_vcpus_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_shutdown_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_suspend_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_undefine_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_list_defined_networks_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_list_domains_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_list_networks_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_create_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_create_xml_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_define_xml_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_destroy_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_get_xml_desc_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_get_autostart_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_get_bridge_name_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_lookup_by_name_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_lookup_by_uuid_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_set_autostart_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_undefine_args($_[0], $idx, $rv); return $rv; },
    \&encode_no_args,
    \&encode_no_args,
    \&encode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_core_dump_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_restore_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_save_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_scheduler_type_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_scheduler_parameters_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_scheduler_parameters_args($_[0], $idx, $rv); return $rv; },
    \&encode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_supports_feature_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_prepare_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_perform_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_finish_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_block_stats_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_interface_stats_args($_[0], $idx, $rv); return $rv; },
    \&encode_no_args,
    \&encode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->serialize_auth_sasl_start_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_auth_sasl_step_args($_[0], $idx, $rv); return $rv; },
    \&encode_no_args,
    \&encode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_list_storage_pools_args($_[0], $idx, $rv); return $rv; },
    \&encode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_list_defined_storage_pools_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_find_storage_pool_sources_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_pool_create_xml_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_pool_define_xml_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_pool_create_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_pool_build_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_pool_destroy_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_pool_delete_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_pool_undefine_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_pool_refresh_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_pool_lookup_by_name_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_pool_lookup_by_uuid_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_pool_lookup_by_volume_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_pool_get_info_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_pool_get_xml_desc_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_pool_get_autostart_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_pool_set_autostart_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_pool_num_of_volumes_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_pool_list_volumes_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_vol_create_xml_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_vol_delete_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_vol_lookup_by_name_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_vol_lookup_by_key_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_vol_lookup_by_path_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_vol_get_info_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_vol_get_xml_desc_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_vol_get_path_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_get_cells_free_memory_args($_[0], $idx, $rv); return $rv; },
    \&encode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_block_peek_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_memory_peek_args($_[0], $idx, $rv); return $rv; },
    \&encode_no_args,
    \&encode_no_args,
    invalid_proc(107),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_prepare2_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_finish2_args($_[0], $idx, $rv); return $rv; },
    \&encode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_num_of_devices_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_list_devices_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_device_lookup_by_name_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_device_get_xml_desc_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_device_get_parent_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_device_num_of_caps_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_device_list_caps_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_device_dettach_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_device_re_attach_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_device_reset_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_security_label_args($_[0], $idx, $rv); return $rv; },
    \&encode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_device_create_xml_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_device_destroy_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_vol_create_xml_from_args($_[0], $idx, $rv); return $rv; },
    \&encode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_list_interfaces_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_interface_lookup_by_name_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_interface_lookup_by_mac_string_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_interface_get_xml_desc_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_interface_define_xml_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_interface_undefine_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_interface_create_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_interface_destroy_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_domain_xml_from_native_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_domain_xml_to_native_args($_[0], $idx, $rv); return $rv; },
    \&encode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_list_defined_interfaces_args($_[0], $idx, $rv); return $rv; },
    \&encode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_list_secrets_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_secret_lookup_by_uuid_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_secret_define_xml_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_secret_get_xml_desc_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_secret_set_value_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_secret_get_value_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_secret_undefine_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_secret_lookup_by_usage_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_prepare_tunnel_args($_[0], $idx, $rv); return $rv; },
    \&encode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_is_active_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_is_persistent_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_is_active_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_is_persistent_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_pool_is_active_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_pool_is_persistent_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_interface_is_active_args($_[0], $idx, $rv); return $rv; },
    \&encode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_compare_cpu_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_memory_stats_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_attach_device_flags_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_detach_device_flags_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_baseline_cpu_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_job_info_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_abort_job_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_vol_wipe_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_set_max_downtime_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_domain_event_register_any_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_domain_event_deregister_any_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(169),
    invalid_proc(170),
    invalid_proc(171),
    invalid_proc(172),
    invalid_proc(173),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_update_device_flags_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_nwfilter_lookup_by_name_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_nwfilter_lookup_by_uuid_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_nwfilter_get_xml_desc_args($_[0], $idx, $rv); return $rv; },
    \&encode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_list_nwfilters_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_nwfilter_define_xml_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_nwfilter_undefine_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_managed_save_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_has_managed_save_image_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_managed_save_remove_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_snapshot_create_xml_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_snapshot_get_xml_desc_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_snapshot_num_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_snapshot_list_names_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_snapshot_lookup_by_name_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_has_current_snapshot_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_snapshot_current_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_revert_to_snapshot_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_snapshot_delete_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_block_info_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(195),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_create_with_flags_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_memory_parameters_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_memory_parameters_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_vcpus_flags_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_vcpus_flags_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_open_console_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_is_updated_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_get_sysinfo_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_memory_flags_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_blkio_parameters_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_blkio_parameters_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_set_max_speed_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_vol_upload_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_vol_download_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_inject_nmi_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_screenshot_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_state_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_begin3_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_prepare3_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_prepare_tunnel3_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_perform3_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_finish3_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_confirm3_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_scheduler_parameters_flags_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_interface_change_begin_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_interface_change_commit_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_interface_change_rollback_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_scheduler_parameters_flags_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(224),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_pin_vcpu_flags_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_send_key_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_get_cpu_stats_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_get_memory_stats_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_control_info_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_vcpu_pin_info_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_undefine_flags_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_save_flags_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_restore_flags_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_destroy_flags_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_save_image_get_xml_desc_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_save_image_define_xml_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_block_job_abort_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_block_job_info_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_block_job_set_speed_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_block_pull_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(241),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_get_max_speed_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_block_stats_flags_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_snapshot_get_parent_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_reset_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_snapshot_num_children_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_snapshot_list_children_names_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(248),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_open_graphics_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_suspend_for_duration_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_block_resize_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_block_io_tune_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_block_io_tune_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_numa_parameters_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_numa_parameters_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_interface_parameters_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_interface_parameters_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_shutdown_flags_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_vol_wipe_pattern_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_vol_resize_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_pm_suspend_for_duration_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_cpu_stats_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_disk_errors_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_metadata_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_metadata_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_block_rebase_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_pm_wakeup_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(268),
    invalid_proc(269),
    invalid_proc(270),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_snapshot_is_current_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_snapshot_has_metadata_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_list_all_domains_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_list_all_snapshots_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_snapshot_list_all_children_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(276),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_hostname_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_security_label_list_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_pin_emulator_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_emulator_pin_info_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_list_all_storage_pools_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_pool_list_all_volumes_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_list_all_networks_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_list_all_interfaces_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_list_all_node_devices_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_list_all_nwfilters_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_list_all_secrets_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_set_memory_parameters_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_get_memory_parameters_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_block_commit_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_update_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(292),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_get_cpu_map_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_fstrim_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_send_process_signal_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_open_channel_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_device_lookup_scsi_host_by_wwn_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_job_stats_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_get_compression_cache_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_set_compression_cache_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_device_detach_flags_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_begin3_params_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_prepare3_params_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_prepare_tunnel3_params_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_perform3_params_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_finish3_params_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_confirm3_params_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_memory_stats_period_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_create_xml_with_files_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_create_with_files_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(311),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_get_cpu_model_names_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_network_event_register_any_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_network_event_deregister_any_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(315),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_domain_event_callback_register_any_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_domain_event_callback_deregister_any_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(318),
    invalid_proc(319),
    invalid_proc(320),
    invalid_proc(321),
    invalid_proc(322),
    invalid_proc(323),
    invalid_proc(324),
    invalid_proc(325),
    invalid_proc(326),
    invalid_proc(327),
    invalid_proc(328),
    invalid_proc(329),
    invalid_proc(330),
    invalid_proc(331),
    invalid_proc(332),
    invalid_proc(333),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_core_dump_with_format_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_fsfreeze_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_fsthaw_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_time_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_time_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(339),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_get_free_pages_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_get_dhcp_leases_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_get_domain_capabilities_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_open_graphics_fd_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_get_all_domain_stats_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_block_copy_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(346),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_alloc_pages_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(348),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_fsinfo_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_define_xml_flags_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_iothread_info_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_pin_iothread_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_interface_addresses_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(354),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_add_iothread_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_del_iothread_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_user_password_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_rename_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(359),
    \&encode_no_args,
    \&encode_no_args,
    invalid_proc(362),
    invalid_proc(363),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_start_post_copy_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_perf_events_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_perf_events_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(367),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_storage_pool_event_register_any_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_storage_pool_event_deregister_any_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(370),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_guest_vcpus_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_guest_vcpus_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(373),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_node_device_event_register_any_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_node_device_event_deregister_any_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(376),
    invalid_proc(377),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_vol_get_info_flags_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(379),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_secret_event_register_any_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_secret_event_deregister_any_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(382),
    invalid_proc(383),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_vcpu_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(385),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_block_threshold_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_migrate_get_max_downtime_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_managed_save_get_xml_desc_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_managed_save_define_xml_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_lifecycle_action_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_pool_lookup_by_target_path_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_detach_device_alias_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_compare_hypervisor_cpu_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_baseline_hypervisor_cpu_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_get_sev_info_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_launch_security_info_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_nwfilter_binding_lookup_by_port_dev_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_nwfilter_binding_get_xml_desc_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_nwfilter_binding_create_xml_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_nwfilter_binding_delete_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_list_all_nwfilter_bindings_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_iothread_params_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_get_storage_pool_capabilities_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_list_all_ports_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_port_lookup_by_uuid_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_port_create_xml_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_port_get_parameters_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_port_set_parameters_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_port_get_xml_desc_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_port_delete_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_checkpoint_create_xml_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_checkpoint_get_xml_desc_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_list_all_checkpoints_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_checkpoint_list_all_children_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_checkpoint_lookup_by_name_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_checkpoint_get_parent_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_checkpoint_delete_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_guest_info_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_set_identity_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_agent_set_response_timeout_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_backup_begin_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_backup_get_xml_desc_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(423),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_authorized_ssh_keys_get_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_authorized_ssh_keys_set_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_messages_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_start_dirty_rate_calc_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_device_define_xml_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_device_undefine_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_device_create_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_nwfilter_define_xml_flags_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_define_xml_flags_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_device_get_autostart_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_device_set_autostart_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_device_is_persistent_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_device_is_active_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_create_xml_flags_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(438),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_launch_security_state_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_save_params_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_restore_params_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_abort_job_flags_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_fd_associate_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_set_metadata_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_get_metadata_args($_[0], $idx, $rv); return $rv; },
    invalid_proc(446),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_device_update_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_graphics_reload_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_get_autostart_once_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_autostart_once_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_set_throttle_group_args($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_del_throttle_group_args($_[0], $idx, $rv); return $rv; }
    );

my @args_decoders = (
    invalid_proc(0),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_open_args($rv, $idx, $_[0]); return $rv; },
    \&decode_no_args,
    \&decode_no_args,
    \&decode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_get_max_vcpus_args($rv, $idx, $_[0]); return $rv; },
    \&decode_no_args,
    \&decode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_attach_device_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_create_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_create_xml_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_define_xml_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_destroy_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_detach_device_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_xml_desc_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_autostart_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_info_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_max_memory_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_max_vcpus_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_os_type_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_vcpus_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_list_defined_domains_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_lookup_by_id_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_lookup_by_name_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_lookup_by_uuid_args($rv, $idx, $_[0]); return $rv; },
    \&decode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_pin_vcpu_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_reboot_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_resume_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_autostart_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_max_memory_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_memory_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_vcpus_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_shutdown_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_suspend_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_undefine_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_list_defined_networks_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_list_domains_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_list_networks_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_create_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_create_xml_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_define_xml_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_destroy_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_get_xml_desc_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_get_autostart_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_get_bridge_name_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_lookup_by_name_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_lookup_by_uuid_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_set_autostart_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_undefine_args($rv, $idx, $_[0]); return $rv; },
    \&decode_no_args,
    \&decode_no_args,
    \&decode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_core_dump_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_restore_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_save_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_scheduler_type_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_scheduler_parameters_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_scheduler_parameters_args($rv, $idx, $_[0]); return $rv; },
    \&decode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_supports_feature_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_prepare_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_perform_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_finish_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_block_stats_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_interface_stats_args($rv, $idx, $_[0]); return $rv; },
    \&decode_no_args,
    \&decode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_auth_sasl_start_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_auth_sasl_step_args($rv, $idx, $_[0]); return $rv; },
    \&decode_no_args,
    \&decode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_list_storage_pools_args($rv, $idx, $_[0]); return $rv; },
    \&decode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_list_defined_storage_pools_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_find_storage_pool_sources_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_pool_create_xml_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_pool_define_xml_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_pool_create_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_pool_build_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_pool_destroy_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_pool_delete_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_pool_undefine_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_pool_refresh_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_pool_lookup_by_name_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_pool_lookup_by_uuid_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_pool_lookup_by_volume_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_pool_get_info_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_pool_get_xml_desc_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_pool_get_autostart_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_pool_set_autostart_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_pool_num_of_volumes_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_pool_list_volumes_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_vol_create_xml_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_vol_delete_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_vol_lookup_by_name_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_vol_lookup_by_key_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_vol_lookup_by_path_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_vol_get_info_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_vol_get_xml_desc_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_vol_get_path_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_get_cells_free_memory_args($rv, $idx, $_[0]); return $rv; },
    \&decode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_block_peek_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_memory_peek_args($rv, $idx, $_[0]); return $rv; },
    \&decode_no_args,
    \&decode_no_args,
    invalid_proc(107),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_prepare2_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_finish2_args($rv, $idx, $_[0]); return $rv; },
    \&decode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_num_of_devices_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_list_devices_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_device_lookup_by_name_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_device_get_xml_desc_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_device_get_parent_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_device_num_of_caps_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_device_list_caps_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_device_dettach_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_device_re_attach_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_device_reset_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_security_label_args($rv, $idx, $_[0]); return $rv; },
    \&decode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_device_create_xml_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_device_destroy_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_vol_create_xml_from_args($rv, $idx, $_[0]); return $rv; },
    \&decode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_list_interfaces_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_interface_lookup_by_name_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_interface_lookup_by_mac_string_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_interface_get_xml_desc_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_interface_define_xml_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_interface_undefine_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_interface_create_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_interface_destroy_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_domain_xml_from_native_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_domain_xml_to_native_args($rv, $idx, $_[0]); return $rv; },
    \&decode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_list_defined_interfaces_args($rv, $idx, $_[0]); return $rv; },
    \&decode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_list_secrets_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_secret_lookup_by_uuid_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_secret_define_xml_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_secret_get_xml_desc_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_secret_set_value_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_secret_get_value_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_secret_undefine_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_secret_lookup_by_usage_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_prepare_tunnel_args($rv, $idx, $_[0]); return $rv; },
    \&decode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_is_active_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_is_persistent_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_is_active_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_is_persistent_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_pool_is_active_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_pool_is_persistent_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_interface_is_active_args($rv, $idx, $_[0]); return $rv; },
    \&decode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_compare_cpu_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_memory_stats_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_attach_device_flags_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_detach_device_flags_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_baseline_cpu_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_job_info_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_abort_job_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_vol_wipe_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_set_max_downtime_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_domain_event_register_any_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_domain_event_deregister_any_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(169),
    invalid_proc(170),
    invalid_proc(171),
    invalid_proc(172),
    invalid_proc(173),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_update_device_flags_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_nwfilter_lookup_by_name_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_nwfilter_lookup_by_uuid_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_nwfilter_get_xml_desc_args($rv, $idx, $_[0]); return $rv; },
    \&decode_no_args,
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_list_nwfilters_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_nwfilter_define_xml_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_nwfilter_undefine_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_managed_save_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_has_managed_save_image_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_managed_save_remove_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_snapshot_create_xml_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_snapshot_get_xml_desc_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_snapshot_num_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_snapshot_list_names_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_snapshot_lookup_by_name_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_has_current_snapshot_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_snapshot_current_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_revert_to_snapshot_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_snapshot_delete_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_block_info_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(195),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_create_with_flags_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_memory_parameters_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_memory_parameters_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_vcpus_flags_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_vcpus_flags_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_open_console_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_is_updated_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_get_sysinfo_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_memory_flags_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_blkio_parameters_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_blkio_parameters_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_set_max_speed_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_vol_upload_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_vol_download_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_inject_nmi_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_screenshot_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_state_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_begin3_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_prepare3_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_prepare_tunnel3_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_perform3_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_finish3_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_confirm3_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_scheduler_parameters_flags_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_interface_change_begin_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_interface_change_commit_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_interface_change_rollback_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_scheduler_parameters_flags_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(224),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_pin_vcpu_flags_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_send_key_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_get_cpu_stats_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_get_memory_stats_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_control_info_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_vcpu_pin_info_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_undefine_flags_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_save_flags_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_restore_flags_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_destroy_flags_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_save_image_get_xml_desc_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_save_image_define_xml_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_block_job_abort_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_block_job_info_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_block_job_set_speed_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_block_pull_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(241),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_get_max_speed_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_block_stats_flags_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_snapshot_get_parent_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_reset_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_snapshot_num_children_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_snapshot_list_children_names_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(248),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_open_graphics_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_suspend_for_duration_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_block_resize_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_block_io_tune_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_block_io_tune_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_numa_parameters_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_numa_parameters_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_interface_parameters_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_interface_parameters_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_shutdown_flags_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_vol_wipe_pattern_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_vol_resize_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_pm_suspend_for_duration_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_cpu_stats_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_disk_errors_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_metadata_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_metadata_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_block_rebase_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_pm_wakeup_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(268),
    invalid_proc(269),
    invalid_proc(270),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_snapshot_is_current_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_snapshot_has_metadata_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_list_all_domains_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_list_all_snapshots_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_snapshot_list_all_children_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(276),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_hostname_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_security_label_list_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_pin_emulator_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_emulator_pin_info_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_list_all_storage_pools_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_pool_list_all_volumes_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_list_all_networks_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_list_all_interfaces_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_list_all_node_devices_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_list_all_nwfilters_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_list_all_secrets_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_set_memory_parameters_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_get_memory_parameters_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_block_commit_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_update_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(292),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_get_cpu_map_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_fstrim_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_send_process_signal_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_open_channel_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_device_lookup_scsi_host_by_wwn_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_job_stats_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_get_compression_cache_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_set_compression_cache_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_device_detach_flags_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_begin3_params_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_prepare3_params_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_prepare_tunnel3_params_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_perform3_params_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_finish3_params_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_confirm3_params_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_memory_stats_period_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_create_xml_with_files_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_create_with_files_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(311),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_get_cpu_model_names_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_network_event_register_any_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_network_event_deregister_any_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(315),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_domain_event_callback_register_any_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_domain_event_callback_deregister_any_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(318),
    invalid_proc(319),
    invalid_proc(320),
    invalid_proc(321),
    invalid_proc(322),
    invalid_proc(323),
    invalid_proc(324),
    invalid_proc(325),
    invalid_proc(326),
    invalid_proc(327),
    invalid_proc(328),
    invalid_proc(329),
    invalid_proc(330),
    invalid_proc(331),
    invalid_proc(332),
    invalid_proc(333),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_core_dump_with_format_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_fsfreeze_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_fsthaw_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_time_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_time_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(339),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_get_free_pages_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_get_dhcp_leases_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_get_domain_capabilities_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_open_graphics_fd_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_get_all_domain_stats_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_block_copy_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(346),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_alloc_pages_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(348),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_fsinfo_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_define_xml_flags_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_iothread_info_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_pin_iothread_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_interface_addresses_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(354),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_add_iothread_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_del_iothread_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_user_password_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_rename_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(359),
    \&decode_no_args,
    \&decode_no_args,
    invalid_proc(362),
    invalid_proc(363),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_start_post_copy_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_perf_events_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_perf_events_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(367),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_storage_pool_event_register_any_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_storage_pool_event_deregister_any_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(370),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_guest_vcpus_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_guest_vcpus_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(373),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_node_device_event_register_any_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_node_device_event_deregister_any_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(376),
    invalid_proc(377),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_vol_get_info_flags_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(379),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_secret_event_register_any_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_secret_event_deregister_any_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(382),
    invalid_proc(383),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_vcpu_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(385),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_block_threshold_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_migrate_get_max_downtime_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_managed_save_get_xml_desc_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_managed_save_define_xml_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_lifecycle_action_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_pool_lookup_by_target_path_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_detach_device_alias_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_compare_hypervisor_cpu_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_baseline_hypervisor_cpu_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_get_sev_info_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_launch_security_info_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_nwfilter_binding_lookup_by_port_dev_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_nwfilter_binding_get_xml_desc_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_nwfilter_binding_create_xml_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_nwfilter_binding_delete_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_list_all_nwfilter_bindings_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_iothread_params_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_get_storage_pool_capabilities_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_list_all_ports_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_port_lookup_by_uuid_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_port_create_xml_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_port_get_parameters_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_port_set_parameters_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_port_get_xml_desc_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_port_delete_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_checkpoint_create_xml_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_checkpoint_get_xml_desc_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_list_all_checkpoints_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_checkpoint_list_all_children_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_checkpoint_lookup_by_name_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_checkpoint_get_parent_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_checkpoint_delete_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_guest_info_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_set_identity_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_agent_set_response_timeout_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_backup_begin_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_backup_get_xml_desc_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(423),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_authorized_ssh_keys_get_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_authorized_ssh_keys_set_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_messages_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_start_dirty_rate_calc_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_device_define_xml_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_device_undefine_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_device_create_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_nwfilter_define_xml_flags_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_define_xml_flags_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_device_get_autostart_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_device_set_autostart_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_device_is_persistent_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_device_is_active_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_create_xml_flags_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(438),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_launch_security_state_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_save_params_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_restore_params_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_abort_job_flags_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_fd_associate_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_set_metadata_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_get_metadata_args($rv, $idx, $_[0]); return $rv; },
    invalid_proc(446),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_device_update_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_graphics_reload_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_get_autostart_once_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_autostart_once_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_set_throttle_group_args($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_del_throttle_group_args($rv, $idx, $_[0]); return $rv; }
    );

my @ret_encoders = (
    invalid_proc(0),
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_connect_get_type_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_get_version_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_get_max_vcpus_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_node_get_info_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_get_capabilities_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_create_xml_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_define_xml_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_xml_desc_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_autostart_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_info_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_max_memory_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_max_vcpus_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_os_type_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_vcpus_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_list_defined_domains_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_lookup_by_id_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_lookup_by_name_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_lookup_by_uuid_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_num_of_defined_domains_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_connect_list_defined_networks_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_list_domains_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_list_networks_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_network_create_xml_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_network_define_xml_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_network_get_xml_desc_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_network_get_autostart_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_network_get_bridge_name_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_network_lookup_by_name_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_network_lookup_by_uuid_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_connect_num_of_defined_networks_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_num_of_domains_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_num_of_networks_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_scheduler_type_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_scheduler_parameters_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_connect_get_hostname_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_supports_feature_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_migrate_prepare_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_migrate_finish_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_block_stats_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_interface_stats_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_auth_list_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_auth_sasl_init_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_auth_sasl_start_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_auth_sasl_step_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_auth_polkit_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_num_of_storage_pools_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_list_storage_pools_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_num_of_defined_storage_pools_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_list_defined_storage_pools_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_find_storage_pool_sources_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_storage_pool_create_xml_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_storage_pool_define_xml_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_storage_pool_lookup_by_name_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_storage_pool_lookup_by_uuid_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_storage_pool_lookup_by_volume_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_storage_pool_get_info_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_storage_pool_get_xml_desc_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_storage_pool_get_autostart_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_storage_pool_num_of_volumes_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_storage_pool_list_volumes_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_storage_vol_create_xml_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_storage_vol_lookup_by_name_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_storage_vol_lookup_by_key_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_storage_vol_lookup_by_path_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_storage_vol_get_info_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_storage_vol_get_xml_desc_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_storage_vol_get_path_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_node_get_cells_free_memory_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_node_get_free_memory_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_block_peek_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_memory_peek_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_domain_event_register_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_domain_event_deregister_ret($_[0], $idx, $rv); return $rv; },
    invalid_proc(107),
    sub { my $idx = 0; my $rv; $remote->serialize_domain_migrate_prepare2_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_migrate_finish2_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_get_uri_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_node_num_of_devices_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_node_list_devices_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_node_device_lookup_by_name_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_node_device_get_xml_desc_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_node_device_get_parent_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_node_device_num_of_caps_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_node_device_list_caps_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_security_label_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_node_get_security_model_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_node_device_create_xml_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_storage_vol_create_xml_from_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_num_of_interfaces_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_list_interfaces_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_interface_lookup_by_name_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_interface_lookup_by_mac_string_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_interface_get_xml_desc_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_interface_define_xml_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_connect_domain_xml_from_native_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_domain_xml_to_native_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_num_of_defined_interfaces_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_list_defined_interfaces_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_num_of_secrets_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_list_secrets_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_secret_lookup_by_uuid_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_secret_define_xml_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_secret_get_xml_desc_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_secret_get_value_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_secret_lookup_by_usage_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_connect_is_secure_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_is_active_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_is_persistent_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_network_is_active_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_network_is_persistent_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_storage_pool_is_active_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_storage_pool_is_persistent_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_interface_is_active_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_get_lib_version_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_compare_cpu_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_memory_stats_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_connect_baseline_cpu_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_job_info_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    invalid_proc(169),
    invalid_proc(170),
    invalid_proc(171),
    invalid_proc(172),
    invalid_proc(173),
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_nwfilter_lookup_by_name_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_nwfilter_lookup_by_uuid_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_nwfilter_get_xml_desc_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_num_of_nwfilters_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_list_nwfilters_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_nwfilter_define_xml_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_has_managed_save_image_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_snapshot_create_xml_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_snapshot_get_xml_desc_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_snapshot_num_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_snapshot_list_names_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_snapshot_lookup_by_name_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_has_current_snapshot_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_snapshot_current_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_block_info_ret($_[0], $idx, $rv); return $rv; },
    invalid_proc(195),
    sub { my $idx = 0; my $rv; $remote->serialize_domain_create_with_flags_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_memory_parameters_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_vcpus_flags_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_is_updated_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_get_sysinfo_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_blkio_parameters_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_screenshot_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_state_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_migrate_begin3_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_migrate_prepare3_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_migrate_prepare_tunnel3_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_migrate_perform3_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_migrate_finish3_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_scheduler_parameters_flags_ret($_[0], $idx, $rv); return $rv; },
    invalid_proc(224),
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_node_get_cpu_stats_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_node_get_memory_stats_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_control_info_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_vcpu_pin_info_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_save_image_get_xml_desc_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_block_job_info_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    invalid_proc(241),
    sub { my $idx = 0; my $rv; $remote->serialize_domain_migrate_get_max_speed_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_block_stats_flags_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_snapshot_get_parent_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_snapshot_num_children_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_snapshot_list_children_names_ret($_[0], $idx, $rv); return $rv; },
    invalid_proc(248),
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_block_io_tune_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_numa_parameters_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_interface_parameters_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_cpu_stats_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_disk_errors_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_metadata_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    invalid_proc(268),
    invalid_proc(269),
    invalid_proc(270),
    sub { my $idx = 0; my $rv; $remote->serialize_domain_snapshot_is_current_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_snapshot_has_metadata_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_list_all_domains_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_list_all_snapshots_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_snapshot_list_all_children_ret($_[0], $idx, $rv); return $rv; },
    invalid_proc(276),
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_hostname_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_security_label_list_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_emulator_pin_info_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_list_all_storage_pools_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_storage_pool_list_all_volumes_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_list_all_networks_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_list_all_interfaces_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_list_all_node_devices_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_list_all_nwfilters_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_list_all_secrets_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_node_get_memory_parameters_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    invalid_proc(292),
    sub { my $idx = 0; my $rv; $remote->serialize_node_get_cpu_map_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_node_device_lookup_scsi_host_by_wwn_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_job_stats_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_migrate_get_compression_cache_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_migrate_begin3_params_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_migrate_prepare3_params_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_migrate_prepare_tunnel3_params_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_migrate_perform3_params_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_migrate_finish3_params_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_create_xml_with_files_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_create_with_files_ret($_[0], $idx, $rv); return $rv; },
    invalid_proc(311),
    sub { my $idx = 0; my $rv; $remote->serialize_connect_get_cpu_model_names_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_network_event_register_any_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    invalid_proc(315),
    sub { my $idx = 0; my $rv; $remote->serialize_connect_domain_event_callback_register_any_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    invalid_proc(318),
    invalid_proc(319),
    invalid_proc(320),
    invalid_proc(321),
    invalid_proc(322),
    invalid_proc(323),
    invalid_proc(324),
    invalid_proc(325),
    invalid_proc(326),
    invalid_proc(327),
    invalid_proc(328),
    invalid_proc(329),
    invalid_proc(330),
    invalid_proc(331),
    invalid_proc(332),
    invalid_proc(333),
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_fsfreeze_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_fsthaw_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_time_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    invalid_proc(339),
    sub { my $idx = 0; my $rv; $remote->serialize_node_get_free_pages_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_network_get_dhcp_leases_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_get_domain_capabilities_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_connect_get_all_domain_stats_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    invalid_proc(346),
    sub { my $idx = 0; my $rv; $remote->serialize_node_alloc_pages_ret($_[0], $idx, $rv); return $rv; },
    invalid_proc(348),
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_fsinfo_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_define_xml_flags_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_iothread_info_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_interface_addresses_ret($_[0], $idx, $rv); return $rv; },
    invalid_proc(354),
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_rename_ret($_[0], $idx, $rv); return $rv; },
    invalid_proc(359),
    \&encode_no_ret,
    \&encode_no_ret,
    invalid_proc(362),
    invalid_proc(363),
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_perf_events_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    invalid_proc(367),
    sub { my $idx = 0; my $rv; $remote->serialize_connect_storage_pool_event_register_any_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    invalid_proc(370),
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_guest_vcpus_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    invalid_proc(373),
    sub { my $idx = 0; my $rv; $remote->serialize_connect_node_device_event_register_any_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    invalid_proc(376),
    invalid_proc(377),
    sub { my $idx = 0; my $rv; $remote->serialize_storage_vol_get_info_flags_ret($_[0], $idx, $rv); return $rv; },
    invalid_proc(379),
    sub { my $idx = 0; my $rv; $remote->serialize_connect_secret_event_register_any_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    invalid_proc(382),
    invalid_proc(383),
    \&encode_no_ret,
    invalid_proc(385),
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_migrate_get_max_downtime_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_managed_save_get_xml_desc_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_storage_pool_lookup_by_target_path_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_connect_compare_hypervisor_cpu_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_connect_baseline_hypervisor_cpu_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_node_get_sev_info_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_launch_security_info_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_nwfilter_binding_lookup_by_port_dev_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_nwfilter_binding_get_xml_desc_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_nwfilter_binding_create_xml_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_connect_list_all_nwfilter_bindings_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_connect_get_storage_pool_capabilities_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_network_list_all_ports_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_network_port_lookup_by_uuid_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_network_port_create_xml_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_network_port_get_parameters_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_network_port_get_xml_desc_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_checkpoint_create_xml_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_checkpoint_get_xml_desc_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_list_all_checkpoints_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_checkpoint_list_all_children_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_checkpoint_lookup_by_name_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_domain_checkpoint_get_parent_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_guest_info_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_agent_set_response_timeout_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_backup_get_xml_desc_ret($_[0], $idx, $rv); return $rv; },
    invalid_proc(423),
    sub { my $idx = 0; my $rv; $remote->serialize_domain_authorized_ssh_keys_get_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_messages_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_node_device_define_xml_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_nwfilter_define_xml_flags_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_network_define_xml_flags_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_node_device_get_autostart_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_node_device_is_persistent_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_node_device_is_active_ret($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv; $remote->serialize_network_create_xml_flags_ret($_[0], $idx, $rv); return $rv; },
    invalid_proc(438),
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_network_get_metadata_ret($_[0], $idx, $rv); return $rv; },
    invalid_proc(446),
    \&encode_no_ret,
    \&encode_no_ret,
    sub { my $idx = 0; my $rv; $remote->serialize_domain_get_autostart_once_ret($_[0], $idx, $rv); return $rv; },
    \&encode_no_ret,
    \&encode_no_ret,
    \&encode_no_ret
    );

my @ret_decoders = (
    invalid_proc(0),
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_get_type_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_get_version_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_get_max_vcpus_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_node_get_info_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_get_capabilities_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_create_xml_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_define_xml_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_xml_desc_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_autostart_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_info_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_max_memory_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_max_vcpus_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_os_type_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_vcpus_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_list_defined_domains_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_lookup_by_id_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_lookup_by_name_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_lookup_by_uuid_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_num_of_defined_domains_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_list_defined_networks_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_list_domains_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_list_networks_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_network_create_xml_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_network_define_xml_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_network_get_xml_desc_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_network_get_autostart_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_network_get_bridge_name_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_network_lookup_by_name_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_network_lookup_by_uuid_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_num_of_defined_networks_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_num_of_domains_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_num_of_networks_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_scheduler_type_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_scheduler_parameters_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_get_hostname_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_supports_feature_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_migrate_prepare_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_migrate_finish_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_block_stats_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_interface_stats_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_auth_list_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_auth_sasl_init_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_auth_sasl_start_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_auth_sasl_step_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_auth_polkit_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_num_of_storage_pools_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_list_storage_pools_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_num_of_defined_storage_pools_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_list_defined_storage_pools_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_find_storage_pool_sources_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_storage_pool_create_xml_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_storage_pool_define_xml_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_storage_pool_lookup_by_name_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_storage_pool_lookup_by_uuid_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_storage_pool_lookup_by_volume_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_storage_pool_get_info_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_storage_pool_get_xml_desc_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_storage_pool_get_autostart_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_storage_pool_num_of_volumes_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_storage_pool_list_volumes_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_storage_vol_create_xml_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_storage_vol_lookup_by_name_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_storage_vol_lookup_by_key_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_storage_vol_lookup_by_path_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_storage_vol_get_info_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_storage_vol_get_xml_desc_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_storage_vol_get_path_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_node_get_cells_free_memory_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_node_get_free_memory_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_block_peek_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_memory_peek_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_domain_event_register_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_domain_event_deregister_ret($rv, $idx, $_[0]); return $rv; },
    invalid_proc(107),
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_migrate_prepare2_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_migrate_finish2_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_get_uri_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_node_num_of_devices_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_node_list_devices_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_node_device_lookup_by_name_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_node_device_get_xml_desc_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_node_device_get_parent_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_node_device_num_of_caps_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_node_device_list_caps_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_security_label_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_node_get_security_model_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_node_device_create_xml_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_storage_vol_create_xml_from_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_num_of_interfaces_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_list_interfaces_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_interface_lookup_by_name_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_interface_lookup_by_mac_string_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_interface_get_xml_desc_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_interface_define_xml_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_domain_xml_from_native_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_domain_xml_to_native_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_num_of_defined_interfaces_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_list_defined_interfaces_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_num_of_secrets_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_list_secrets_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_secret_lookup_by_uuid_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_secret_define_xml_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_secret_get_xml_desc_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_secret_get_value_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_secret_lookup_by_usage_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_is_secure_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_is_active_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_is_persistent_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_network_is_active_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_network_is_persistent_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_storage_pool_is_active_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_storage_pool_is_persistent_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_interface_is_active_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_get_lib_version_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_compare_cpu_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_memory_stats_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_baseline_cpu_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_job_info_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    invalid_proc(169),
    invalid_proc(170),
    invalid_proc(171),
    invalid_proc(172),
    invalid_proc(173),
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_nwfilter_lookup_by_name_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_nwfilter_lookup_by_uuid_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_nwfilter_get_xml_desc_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_num_of_nwfilters_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_list_nwfilters_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_nwfilter_define_xml_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_has_managed_save_image_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_snapshot_create_xml_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_snapshot_get_xml_desc_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_snapshot_num_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_snapshot_list_names_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_snapshot_lookup_by_name_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_has_current_snapshot_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_snapshot_current_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_block_info_ret($rv, $idx, $_[0]); return $rv; },
    invalid_proc(195),
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_create_with_flags_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_memory_parameters_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_vcpus_flags_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_is_updated_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_get_sysinfo_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_blkio_parameters_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_screenshot_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_state_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_migrate_begin3_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_migrate_prepare3_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_migrate_prepare_tunnel3_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_migrate_perform3_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_migrate_finish3_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_scheduler_parameters_flags_ret($rv, $idx, $_[0]); return $rv; },
    invalid_proc(224),
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_node_get_cpu_stats_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_node_get_memory_stats_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_control_info_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_vcpu_pin_info_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_save_image_get_xml_desc_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_block_job_info_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    invalid_proc(241),
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_migrate_get_max_speed_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_block_stats_flags_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_snapshot_get_parent_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_snapshot_num_children_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_snapshot_list_children_names_ret($rv, $idx, $_[0]); return $rv; },
    invalid_proc(248),
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_block_io_tune_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_numa_parameters_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_interface_parameters_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_cpu_stats_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_disk_errors_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_metadata_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    invalid_proc(268),
    invalid_proc(269),
    invalid_proc(270),
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_snapshot_is_current_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_snapshot_has_metadata_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_list_all_domains_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_list_all_snapshots_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_snapshot_list_all_children_ret($rv, $idx, $_[0]); return $rv; },
    invalid_proc(276),
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_hostname_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_security_label_list_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_emulator_pin_info_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_list_all_storage_pools_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_storage_pool_list_all_volumes_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_list_all_networks_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_list_all_interfaces_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_list_all_node_devices_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_list_all_nwfilters_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_list_all_secrets_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_node_get_memory_parameters_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    invalid_proc(292),
    sub { my $idx = 0; my $rv; $remote->deserialize_node_get_cpu_map_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_node_device_lookup_scsi_host_by_wwn_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_job_stats_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_migrate_get_compression_cache_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_migrate_begin3_params_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_migrate_prepare3_params_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_migrate_prepare_tunnel3_params_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_migrate_perform3_params_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_migrate_finish3_params_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_create_xml_with_files_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_create_with_files_ret($rv, $idx, $_[0]); return $rv; },
    invalid_proc(311),
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_get_cpu_model_names_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_network_event_register_any_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    invalid_proc(315),
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_domain_event_callback_register_any_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    invalid_proc(318),
    invalid_proc(319),
    invalid_proc(320),
    invalid_proc(321),
    invalid_proc(322),
    invalid_proc(323),
    invalid_proc(324),
    invalid_proc(325),
    invalid_proc(326),
    invalid_proc(327),
    invalid_proc(328),
    invalid_proc(329),
    invalid_proc(330),
    invalid_proc(331),
    invalid_proc(332),
    invalid_proc(333),
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_fsfreeze_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_fsthaw_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_time_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    invalid_proc(339),
    sub { my $idx = 0; my $rv; $remote->deserialize_node_get_free_pages_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_network_get_dhcp_leases_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_get_domain_capabilities_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_get_all_domain_stats_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    invalid_proc(346),
    sub { my $idx = 0; my $rv; $remote->deserialize_node_alloc_pages_ret($rv, $idx, $_[0]); return $rv; },
    invalid_proc(348),
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_fsinfo_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_define_xml_flags_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_iothread_info_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_interface_addresses_ret($rv, $idx, $_[0]); return $rv; },
    invalid_proc(354),
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_rename_ret($rv, $idx, $_[0]); return $rv; },
    invalid_proc(359),
    \&decode_no_ret,
    \&decode_no_ret,
    invalid_proc(362),
    invalid_proc(363),
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_perf_events_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    invalid_proc(367),
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_storage_pool_event_register_any_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    invalid_proc(370),
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_guest_vcpus_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    invalid_proc(373),
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_node_device_event_register_any_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    invalid_proc(376),
    invalid_proc(377),
    sub { my $idx = 0; my $rv; $remote->deserialize_storage_vol_get_info_flags_ret($rv, $idx, $_[0]); return $rv; },
    invalid_proc(379),
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_secret_event_register_any_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    invalid_proc(382),
    invalid_proc(383),
    \&decode_no_ret,
    invalid_proc(385),
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_migrate_get_max_downtime_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_managed_save_get_xml_desc_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_storage_pool_lookup_by_target_path_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_compare_hypervisor_cpu_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_baseline_hypervisor_cpu_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_node_get_sev_info_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_launch_security_info_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_nwfilter_binding_lookup_by_port_dev_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_nwfilter_binding_get_xml_desc_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_nwfilter_binding_create_xml_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_list_all_nwfilter_bindings_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_connect_get_storage_pool_capabilities_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_network_list_all_ports_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_network_port_lookup_by_uuid_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_network_port_create_xml_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_network_port_get_parameters_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_network_port_get_xml_desc_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_checkpoint_create_xml_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_checkpoint_get_xml_desc_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_list_all_checkpoints_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_checkpoint_list_all_children_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_checkpoint_lookup_by_name_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_checkpoint_get_parent_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_guest_info_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_agent_set_response_timeout_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_backup_get_xml_desc_ret($rv, $idx, $_[0]); return $rv; },
    invalid_proc(423),
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_authorized_ssh_keys_get_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_messages_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_node_device_define_xml_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_nwfilter_define_xml_flags_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_network_define_xml_flags_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_node_device_get_autostart_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_node_device_is_persistent_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_node_device_is_active_ret($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv; $remote->deserialize_network_create_xml_flags_ret($rv, $idx, $_[0]); return $rv; },
    invalid_proc(438),
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_network_get_metadata_ret($rv, $idx, $_[0]); return $rv; },
    invalid_proc(446),
    \&decode_no_ret,
    \&decode_no_ret,
    sub { my $idx = 0; my $rv; $remote->deserialize_domain_get_autostart_once_ret($rv, $idx, $_[0]); return $rv; },
    \&decode_no_ret,
    \&decode_no_ret,
    \&decode_no_ret
    );

my @msg_encoders = (
    invalid_proc(0),
    invalid_proc(1),
    invalid_proc(2),
    invalid_proc(3),
    invalid_proc(4),
    invalid_proc(5),
    invalid_proc(6),
    invalid_proc(7),
    invalid_proc(8),
    invalid_proc(9),
    invalid_proc(10),
    invalid_proc(11),
    invalid_proc(12),
    invalid_proc(13),
    invalid_proc(14),
    invalid_proc(15),
    invalid_proc(16),
    invalid_proc(17),
    invalid_proc(18),
    invalid_proc(19),
    invalid_proc(20),
    invalid_proc(21),
    invalid_proc(22),
    invalid_proc(23),
    invalid_proc(24),
    invalid_proc(25),
    invalid_proc(26),
    invalid_proc(27),
    invalid_proc(28),
    invalid_proc(29),
    invalid_proc(30),
    invalid_proc(31),
    invalid_proc(32),
    invalid_proc(33),
    invalid_proc(34),
    invalid_proc(35),
    invalid_proc(36),
    invalid_proc(37),
    invalid_proc(38),
    invalid_proc(39),
    invalid_proc(40),
    invalid_proc(41),
    invalid_proc(42),
    invalid_proc(43),
    invalid_proc(44),
    invalid_proc(45),
    invalid_proc(46),
    invalid_proc(47),
    invalid_proc(48),
    invalid_proc(49),
    invalid_proc(50),
    invalid_proc(51),
    invalid_proc(52),
    invalid_proc(53),
    invalid_proc(54),
    invalid_proc(55),
    invalid_proc(56),
    invalid_proc(57),
    invalid_proc(58),
    invalid_proc(59),
    invalid_proc(60),
    invalid_proc(61),
    invalid_proc(62),
    invalid_proc(63),
    invalid_proc(64),
    invalid_proc(65),
    invalid_proc(66),
    invalid_proc(67),
    invalid_proc(68),
    invalid_proc(69),
    invalid_proc(70),
    invalid_proc(71),
    invalid_proc(72),
    invalid_proc(73),
    invalid_proc(74),
    invalid_proc(75),
    invalid_proc(76),
    invalid_proc(77),
    invalid_proc(78),
    invalid_proc(79),
    invalid_proc(80),
    invalid_proc(81),
    invalid_proc(82),
    invalid_proc(83),
    invalid_proc(84),
    invalid_proc(85),
    invalid_proc(86),
    invalid_proc(87),
    invalid_proc(88),
    invalid_proc(89),
    invalid_proc(90),
    invalid_proc(91),
    invalid_proc(92),
    invalid_proc(93),
    invalid_proc(94),
    invalid_proc(95),
    invalid_proc(96),
    invalid_proc(97),
    invalid_proc(98),
    invalid_proc(99),
    invalid_proc(100),
    invalid_proc(101),
    invalid_proc(102),
    invalid_proc(103),
    invalid_proc(104),
    invalid_proc(105),
    invalid_proc(106),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_lifecycle_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(108),
    invalid_proc(109),
    invalid_proc(110),
    invalid_proc(111),
    invalid_proc(112),
    invalid_proc(113),
    invalid_proc(114),
    invalid_proc(115),
    invalid_proc(116),
    invalid_proc(117),
    invalid_proc(118),
    invalid_proc(119),
    invalid_proc(120),
    invalid_proc(121),
    invalid_proc(122),
    invalid_proc(123),
    invalid_proc(124),
    invalid_proc(125),
    invalid_proc(126),
    invalid_proc(127),
    invalid_proc(128),
    invalid_proc(129),
    invalid_proc(130),
    invalid_proc(131),
    invalid_proc(132),
    invalid_proc(133),
    invalid_proc(134),
    invalid_proc(135),
    invalid_proc(136),
    invalid_proc(137),
    invalid_proc(138),
    invalid_proc(139),
    invalid_proc(140),
    invalid_proc(141),
    invalid_proc(142),
    invalid_proc(143),
    invalid_proc(144),
    invalid_proc(145),
    invalid_proc(146),
    invalid_proc(147),
    invalid_proc(148),
    invalid_proc(149),
    invalid_proc(150),
    invalid_proc(151),
    invalid_proc(152),
    invalid_proc(153),
    invalid_proc(154),
    invalid_proc(155),
    invalid_proc(156),
    invalid_proc(157),
    invalid_proc(158),
    invalid_proc(159),
    invalid_proc(160),
    invalid_proc(161),
    invalid_proc(162),
    invalid_proc(163),
    invalid_proc(164),
    invalid_proc(165),
    invalid_proc(166),
    invalid_proc(167),
    invalid_proc(168),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_reboot_msg($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_rtc_change_msg($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_watchdog_msg($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_io_error_msg($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_graphics_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(174),
    invalid_proc(175),
    invalid_proc(176),
    invalid_proc(177),
    invalid_proc(178),
    invalid_proc(179),
    invalid_proc(180),
    invalid_proc(181),
    invalid_proc(182),
    invalid_proc(183),
    invalid_proc(184),
    invalid_proc(185),
    invalid_proc(186),
    invalid_proc(187),
    invalid_proc(188),
    invalid_proc(189),
    invalid_proc(190),
    invalid_proc(191),
    invalid_proc(192),
    invalid_proc(193),
    invalid_proc(194),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_io_error_reason_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(196),
    invalid_proc(197),
    invalid_proc(198),
    invalid_proc(199),
    invalid_proc(200),
    invalid_proc(201),
    invalid_proc(202),
    invalid_proc(203),
    invalid_proc(204),
    invalid_proc(205),
    invalid_proc(206),
    invalid_proc(207),
    invalid_proc(208),
    invalid_proc(209),
    invalid_proc(210),
    invalid_proc(211),
    invalid_proc(212),
    invalid_proc(213),
    invalid_proc(214),
    invalid_proc(215),
    invalid_proc(216),
    invalid_proc(217),
    invalid_proc(218),
    invalid_proc(219),
    invalid_proc(220),
    invalid_proc(221),
    invalid_proc(222),
    invalid_proc(223),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_control_error_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(225),
    invalid_proc(226),
    invalid_proc(227),
    invalid_proc(228),
    invalid_proc(229),
    invalid_proc(230),
    invalid_proc(231),
    invalid_proc(232),
    invalid_proc(233),
    invalid_proc(234),
    invalid_proc(235),
    invalid_proc(236),
    invalid_proc(237),
    invalid_proc(238),
    invalid_proc(239),
    invalid_proc(240),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_block_job_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(242),
    invalid_proc(243),
    invalid_proc(244),
    invalid_proc(245),
    invalid_proc(246),
    invalid_proc(247),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_disk_change_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(249),
    invalid_proc(250),
    invalid_proc(251),
    invalid_proc(252),
    invalid_proc(253),
    invalid_proc(254),
    invalid_proc(255),
    invalid_proc(256),
    invalid_proc(257),
    invalid_proc(258),
    invalid_proc(259),
    invalid_proc(260),
    invalid_proc(261),
    invalid_proc(262),
    invalid_proc(263),
    invalid_proc(264),
    invalid_proc(265),
    invalid_proc(266),
    invalid_proc(267),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_tray_change_msg($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_pmwakeup_msg($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_pmsuspend_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(271),
    invalid_proc(272),
    invalid_proc(273),
    invalid_proc(274),
    invalid_proc(275),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_balloon_change_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(277),
    invalid_proc(278),
    invalid_proc(279),
    invalid_proc(280),
    invalid_proc(281),
    invalid_proc(282),
    invalid_proc(283),
    invalid_proc(284),
    invalid_proc(285),
    invalid_proc(286),
    invalid_proc(287),
    invalid_proc(288),
    invalid_proc(289),
    invalid_proc(290),
    invalid_proc(291),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_pmsuspend_disk_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(293),
    invalid_proc(294),
    invalid_proc(295),
    invalid_proc(296),
    invalid_proc(297),
    invalid_proc(298),
    invalid_proc(299),
    invalid_proc(300),
    invalid_proc(301),
    invalid_proc(302),
    invalid_proc(303),
    invalid_proc(304),
    invalid_proc(305),
    invalid_proc(306),
    invalid_proc(307),
    invalid_proc(308),
    invalid_proc(309),
    invalid_proc(310),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_device_removed_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(312),
    invalid_proc(313),
    invalid_proc(314),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_event_lifecycle_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(316),
    invalid_proc(317),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_callback_lifecycle_msg($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_callback_reboot_msg($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_callback_rtc_change_msg($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_callback_watchdog_msg($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_callback_io_error_msg($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_callback_graphics_msg($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_callback_io_error_reason_msg($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_callback_control_error_msg($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_callback_block_job_msg($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_callback_disk_change_msg($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_callback_tray_change_msg($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_callback_pmwakeup_msg($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_callback_pmsuspend_msg($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_callback_balloon_change_msg($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_callback_pmsuspend_disk_msg($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_callback_device_removed_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(334),
    invalid_proc(335),
    invalid_proc(336),
    invalid_proc(337),
    invalid_proc(338),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_block_job_2_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(340),
    invalid_proc(341),
    invalid_proc(342),
    invalid_proc(343),
    invalid_proc(344),
    invalid_proc(345),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_callback_tunable_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(347),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_callback_agent_lifecycle_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(349),
    invalid_proc(350),
    invalid_proc(351),
    invalid_proc(352),
    invalid_proc(353),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_callback_device_added_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(355),
    invalid_proc(356),
    invalid_proc(357),
    invalid_proc(358),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_callback_migration_iteration_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(360),
    invalid_proc(361),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_connect_event_connection_closed_msg($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_callback_job_completed_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(364),
    invalid_proc(365),
    invalid_proc(366),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_callback_device_removal_failed_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(368),
    invalid_proc(369),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_pool_event_lifecycle_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(371),
    invalid_proc(372),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_storage_pool_event_refresh_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(374),
    invalid_proc(375),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_device_event_lifecycle_msg($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_node_device_event_update_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(378),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_callback_metadata_change_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(380),
    invalid_proc(381),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_secret_event_lifecycle_msg($_[0], $idx, $rv); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->serialize_secret_event_value_changed_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(384),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_block_threshold_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(386),
    invalid_proc(387),
    invalid_proc(388),
    invalid_proc(389),
    invalid_proc(390),
    invalid_proc(391),
    invalid_proc(392),
    invalid_proc(393),
    invalid_proc(394),
    invalid_proc(395),
    invalid_proc(396),
    invalid_proc(397),
    invalid_proc(398),
    invalid_proc(399),
    invalid_proc(400),
    invalid_proc(401),
    invalid_proc(402),
    invalid_proc(403),
    invalid_proc(404),
    invalid_proc(405),
    invalid_proc(406),
    invalid_proc(407),
    invalid_proc(408),
    invalid_proc(409),
    invalid_proc(410),
    invalid_proc(411),
    invalid_proc(412),
    invalid_proc(413),
    invalid_proc(414),
    invalid_proc(415),
    invalid_proc(416),
    invalid_proc(417),
    invalid_proc(418),
    invalid_proc(419),
    invalid_proc(420),
    invalid_proc(421),
    invalid_proc(422),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_memory_failure_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(424),
    invalid_proc(425),
    invalid_proc(426),
    invalid_proc(427),
    invalid_proc(428),
    invalid_proc(429),
    invalid_proc(430),
    invalid_proc(431),
    invalid_proc(432),
    invalid_proc(433),
    invalid_proc(434),
    invalid_proc(435),
    invalid_proc(436),
    invalid_proc(437),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_memory_device_size_change_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(439),
    invalid_proc(440),
    invalid_proc(441),
    invalid_proc(442),
    invalid_proc(443),
    invalid_proc(444),
    invalid_proc(445),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_network_event_callback_metadata_change_msg($_[0], $idx, $rv); return $rv; },
    invalid_proc(447),
    invalid_proc(448),
    invalid_proc(449),
    invalid_proc(450),
    invalid_proc(451),
    invalid_proc(452),
    sub { my $idx = 0; my $rv = ''; $remote->serialize_domain_event_nic_mac_change_msg($_[0], $idx, $rv); return $rv; }
    );

my @msg_decoders = (
    invalid_proc(0),
    invalid_proc(1),
    invalid_proc(2),
    invalid_proc(3),
    invalid_proc(4),
    invalid_proc(5),
    invalid_proc(6),
    invalid_proc(7),
    invalid_proc(8),
    invalid_proc(9),
    invalid_proc(10),
    invalid_proc(11),
    invalid_proc(12),
    invalid_proc(13),
    invalid_proc(14),
    invalid_proc(15),
    invalid_proc(16),
    invalid_proc(17),
    invalid_proc(18),
    invalid_proc(19),
    invalid_proc(20),
    invalid_proc(21),
    invalid_proc(22),
    invalid_proc(23),
    invalid_proc(24),
    invalid_proc(25),
    invalid_proc(26),
    invalid_proc(27),
    invalid_proc(28),
    invalid_proc(29),
    invalid_proc(30),
    invalid_proc(31),
    invalid_proc(32),
    invalid_proc(33),
    invalid_proc(34),
    invalid_proc(35),
    invalid_proc(36),
    invalid_proc(37),
    invalid_proc(38),
    invalid_proc(39),
    invalid_proc(40),
    invalid_proc(41),
    invalid_proc(42),
    invalid_proc(43),
    invalid_proc(44),
    invalid_proc(45),
    invalid_proc(46),
    invalid_proc(47),
    invalid_proc(48),
    invalid_proc(49),
    invalid_proc(50),
    invalid_proc(51),
    invalid_proc(52),
    invalid_proc(53),
    invalid_proc(54),
    invalid_proc(55),
    invalid_proc(56),
    invalid_proc(57),
    invalid_proc(58),
    invalid_proc(59),
    invalid_proc(60),
    invalid_proc(61),
    invalid_proc(62),
    invalid_proc(63),
    invalid_proc(64),
    invalid_proc(65),
    invalid_proc(66),
    invalid_proc(67),
    invalid_proc(68),
    invalid_proc(69),
    invalid_proc(70),
    invalid_proc(71),
    invalid_proc(72),
    invalid_proc(73),
    invalid_proc(74),
    invalid_proc(75),
    invalid_proc(76),
    invalid_proc(77),
    invalid_proc(78),
    invalid_proc(79),
    invalid_proc(80),
    invalid_proc(81),
    invalid_proc(82),
    invalid_proc(83),
    invalid_proc(84),
    invalid_proc(85),
    invalid_proc(86),
    invalid_proc(87),
    invalid_proc(88),
    invalid_proc(89),
    invalid_proc(90),
    invalid_proc(91),
    invalid_proc(92),
    invalid_proc(93),
    invalid_proc(94),
    invalid_proc(95),
    invalid_proc(96),
    invalid_proc(97),
    invalid_proc(98),
    invalid_proc(99),
    invalid_proc(100),
    invalid_proc(101),
    invalid_proc(102),
    invalid_proc(103),
    invalid_proc(104),
    invalid_proc(105),
    invalid_proc(106),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_lifecycle_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(108),
    invalid_proc(109),
    invalid_proc(110),
    invalid_proc(111),
    invalid_proc(112),
    invalid_proc(113),
    invalid_proc(114),
    invalid_proc(115),
    invalid_proc(116),
    invalid_proc(117),
    invalid_proc(118),
    invalid_proc(119),
    invalid_proc(120),
    invalid_proc(121),
    invalid_proc(122),
    invalid_proc(123),
    invalid_proc(124),
    invalid_proc(125),
    invalid_proc(126),
    invalid_proc(127),
    invalid_proc(128),
    invalid_proc(129),
    invalid_proc(130),
    invalid_proc(131),
    invalid_proc(132),
    invalid_proc(133),
    invalid_proc(134),
    invalid_proc(135),
    invalid_proc(136),
    invalid_proc(137),
    invalid_proc(138),
    invalid_proc(139),
    invalid_proc(140),
    invalid_proc(141),
    invalid_proc(142),
    invalid_proc(143),
    invalid_proc(144),
    invalid_proc(145),
    invalid_proc(146),
    invalid_proc(147),
    invalid_proc(148),
    invalid_proc(149),
    invalid_proc(150),
    invalid_proc(151),
    invalid_proc(152),
    invalid_proc(153),
    invalid_proc(154),
    invalid_proc(155),
    invalid_proc(156),
    invalid_proc(157),
    invalid_proc(158),
    invalid_proc(159),
    invalid_proc(160),
    invalid_proc(161),
    invalid_proc(162),
    invalid_proc(163),
    invalid_proc(164),
    invalid_proc(165),
    invalid_proc(166),
    invalid_proc(167),
    invalid_proc(168),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_reboot_msg($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_rtc_change_msg($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_watchdog_msg($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_io_error_msg($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_graphics_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(174),
    invalid_proc(175),
    invalid_proc(176),
    invalid_proc(177),
    invalid_proc(178),
    invalid_proc(179),
    invalid_proc(180),
    invalid_proc(181),
    invalid_proc(182),
    invalid_proc(183),
    invalid_proc(184),
    invalid_proc(185),
    invalid_proc(186),
    invalid_proc(187),
    invalid_proc(188),
    invalid_proc(189),
    invalid_proc(190),
    invalid_proc(191),
    invalid_proc(192),
    invalid_proc(193),
    invalid_proc(194),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_io_error_reason_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(196),
    invalid_proc(197),
    invalid_proc(198),
    invalid_proc(199),
    invalid_proc(200),
    invalid_proc(201),
    invalid_proc(202),
    invalid_proc(203),
    invalid_proc(204),
    invalid_proc(205),
    invalid_proc(206),
    invalid_proc(207),
    invalid_proc(208),
    invalid_proc(209),
    invalid_proc(210),
    invalid_proc(211),
    invalid_proc(212),
    invalid_proc(213),
    invalid_proc(214),
    invalid_proc(215),
    invalid_proc(216),
    invalid_proc(217),
    invalid_proc(218),
    invalid_proc(219),
    invalid_proc(220),
    invalid_proc(221),
    invalid_proc(222),
    invalid_proc(223),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_control_error_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(225),
    invalid_proc(226),
    invalid_proc(227),
    invalid_proc(228),
    invalid_proc(229),
    invalid_proc(230),
    invalid_proc(231),
    invalid_proc(232),
    invalid_proc(233),
    invalid_proc(234),
    invalid_proc(235),
    invalid_proc(236),
    invalid_proc(237),
    invalid_proc(238),
    invalid_proc(239),
    invalid_proc(240),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_block_job_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(242),
    invalid_proc(243),
    invalid_proc(244),
    invalid_proc(245),
    invalid_proc(246),
    invalid_proc(247),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_disk_change_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(249),
    invalid_proc(250),
    invalid_proc(251),
    invalid_proc(252),
    invalid_proc(253),
    invalid_proc(254),
    invalid_proc(255),
    invalid_proc(256),
    invalid_proc(257),
    invalid_proc(258),
    invalid_proc(259),
    invalid_proc(260),
    invalid_proc(261),
    invalid_proc(262),
    invalid_proc(263),
    invalid_proc(264),
    invalid_proc(265),
    invalid_proc(266),
    invalid_proc(267),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_tray_change_msg($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_pmwakeup_msg($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_pmsuspend_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(271),
    invalid_proc(272),
    invalid_proc(273),
    invalid_proc(274),
    invalid_proc(275),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_balloon_change_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(277),
    invalid_proc(278),
    invalid_proc(279),
    invalid_proc(280),
    invalid_proc(281),
    invalid_proc(282),
    invalid_proc(283),
    invalid_proc(284),
    invalid_proc(285),
    invalid_proc(286),
    invalid_proc(287),
    invalid_proc(288),
    invalid_proc(289),
    invalid_proc(290),
    invalid_proc(291),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_pmsuspend_disk_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(293),
    invalid_proc(294),
    invalid_proc(295),
    invalid_proc(296),
    invalid_proc(297),
    invalid_proc(298),
    invalid_proc(299),
    invalid_proc(300),
    invalid_proc(301),
    invalid_proc(302),
    invalid_proc(303),
    invalid_proc(304),
    invalid_proc(305),
    invalid_proc(306),
    invalid_proc(307),
    invalid_proc(308),
    invalid_proc(309),
    invalid_proc(310),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_device_removed_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(312),
    invalid_proc(313),
    invalid_proc(314),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_event_lifecycle_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(316),
    invalid_proc(317),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_callback_lifecycle_msg($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_callback_reboot_msg($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_callback_rtc_change_msg($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_callback_watchdog_msg($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_callback_io_error_msg($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_callback_graphics_msg($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_callback_io_error_reason_msg($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_callback_control_error_msg($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_callback_block_job_msg($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_callback_disk_change_msg($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_callback_tray_change_msg($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_callback_pmwakeup_msg($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_callback_pmsuspend_msg($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_callback_balloon_change_msg($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_callback_pmsuspend_disk_msg($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_callback_device_removed_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(334),
    invalid_proc(335),
    invalid_proc(336),
    invalid_proc(337),
    invalid_proc(338),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_block_job_2_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(340),
    invalid_proc(341),
    invalid_proc(342),
    invalid_proc(343),
    invalid_proc(344),
    invalid_proc(345),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_callback_tunable_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(347),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_callback_agent_lifecycle_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(349),
    invalid_proc(350),
    invalid_proc(351),
    invalid_proc(352),
    invalid_proc(353),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_callback_device_added_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(355),
    invalid_proc(356),
    invalid_proc(357),
    invalid_proc(358),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_callback_migration_iteration_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(360),
    invalid_proc(361),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_connect_event_connection_closed_msg($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_callback_job_completed_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(364),
    invalid_proc(365),
    invalid_proc(366),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_callback_device_removal_failed_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(368),
    invalid_proc(369),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_pool_event_lifecycle_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(371),
    invalid_proc(372),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_storage_pool_event_refresh_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(374),
    invalid_proc(375),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_device_event_lifecycle_msg($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_node_device_event_update_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(378),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_callback_metadata_change_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(380),
    invalid_proc(381),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_secret_event_lifecycle_msg($rv, $idx, $_[0]); return $rv; },
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_secret_event_value_changed_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(384),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_block_threshold_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(386),
    invalid_proc(387),
    invalid_proc(388),
    invalid_proc(389),
    invalid_proc(390),
    invalid_proc(391),
    invalid_proc(392),
    invalid_proc(393),
    invalid_proc(394),
    invalid_proc(395),
    invalid_proc(396),
    invalid_proc(397),
    invalid_proc(398),
    invalid_proc(399),
    invalid_proc(400),
    invalid_proc(401),
    invalid_proc(402),
    invalid_proc(403),
    invalid_proc(404),
    invalid_proc(405),
    invalid_proc(406),
    invalid_proc(407),
    invalid_proc(408),
    invalid_proc(409),
    invalid_proc(410),
    invalid_proc(411),
    invalid_proc(412),
    invalid_proc(413),
    invalid_proc(414),
    invalid_proc(415),
    invalid_proc(416),
    invalid_proc(417),
    invalid_proc(418),
    invalid_proc(419),
    invalid_proc(420),
    invalid_proc(421),
    invalid_proc(422),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_memory_failure_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(424),
    invalid_proc(425),
    invalid_proc(426),
    invalid_proc(427),
    invalid_proc(428),
    invalid_proc(429),
    invalid_proc(430),
    invalid_proc(431),
    invalid_proc(432),
    invalid_proc(433),
    invalid_proc(434),
    invalid_proc(435),
    invalid_proc(436),
    invalid_proc(437),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_memory_device_size_change_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(439),
    invalid_proc(440),
    invalid_proc(441),
    invalid_proc(442),
    invalid_proc(443),
    invalid_proc(444),
    invalid_proc(445),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_network_event_callback_metadata_change_msg($rv, $idx, $_[0]); return $rv; },
    invalid_proc(447),
    invalid_proc(448),
    invalid_proc(449),
    invalid_proc(450),
    invalid_proc(451),
    invalid_proc(452),
    sub { my $idx = 0; my $rv = ''; $remote->deserialize_domain_event_nic_mac_change_msg($rv, $idx, $_[0]); return $rv; }
    );


sub new {
    my ($class, %args) = @_;
    my $self = bless {
        role       => $args{role} // 'client',
        sender     => sub { croak 'Not registered with a transport'; },

        expect     => 'START', # first state of the state machine...
    }, $class;
    $self->configure(
        on_closed  => $args{on_closed},
        on_call    => $args{on_call},
        on_reply   => $args{on_reply},
        on_message => $args{on_reply},
        on_stream  => $args{on_stream},
        );

    return $self;
}

sub configure {
    my $self = shift;
    my %args = @_;
    for my $cb (keys %args) {
        $self->{$cb} = $args{$cb} // sub {}
    }
}

sub _dispatch_call {
    my ($self, %args) = @_;
    my $proc   = $args{header}->{proc};
    my $serial = $args{header}->{serial};
    $log->trace( "Dispatching call to $proc (serial: $serial)" );
    return $self->{on_call}->(%args,
                              data => $args_decoders[$proc]->($args{data}));
}

sub _dispatch_reply {
    my ($self, %args) = @_;
    my $proc   = $args{header}->{proc};
    my $serial = $args{header}->{serial};
    $log->trace( "Dispatching reply to $proc (serial: $serial)" );
    if (defined $args{error}) {
        return $self->{on_reply}->(%args);
    }
    else {
        return $self->{on_reply}->(%args,
                                   data => $ret_decoders[$proc]->($args{data}));
    }
}

sub _dispatch_message {
    my ($self, %args) = @_;
    my $proc = $args{header}->{proc};
    $log->trace("Dispatching message $proc");
    return $self->{on_message}->(%args,
                                 data => $msg_decoders[$proc]->($args{data}));
}

sub _dispatch_stream {
    my ($self, %args) = @_;
    my $proc = $args{header}->{proc};
    my $serial = $args{header}->{serial};
    my $final = $args{header}->{status} != $transport->CONTINUE;

    return $self->{on_stream}->(%args,
                                final => $final);
}

sub register {
    my ($self, $transport) = @_;
    $self->{sender} = $transport->register(
        $remote->PROGRAM,
        $remote->PROTOCOL_VERSION,
        {
            on_call    => sub { $self->_dispatch_call(@_) },
            on_reply   => sub { $self->_dispatch_reply(@_) },
            on_message => sub { $self->_dispatch_message(@_) },
            on_stream  => sub { $self->_dispatch_stream(@_) },
        });
}

sub _auth_success {
   my ($self) = @_;
   $self->{on_reply} = $self->{saved_on_reply}
        if $self->{saved_on_reply};
   $self->{on_call}  = $self->{saved_on_call}
        if $self->{saved_on_call};

   $self->{on_auth}->(status => 'success');
}

sub _auth_client_on_reply {
    my ($self, %args) = @_;
    my $serial = $args{header}->{serial};
    if ($serial != $self->{expected_serial}) {
       $self->{saved_on_reply}->(%args);
       return;
    }
    my $proc = $args{header}->{proc};
    if ($proc == $remote->PROC_AUTH_LIST) {
       my $authtype = $remote->AUTH_NONE;
       for my $type ( @{ $args{data}->{types} } ) {
           if ($self->{wanted_authtype} == $type) {
               $authtype = $type;
               last;
           }
       }
       if ($authtype == $remote->AUTH_NONE) {
          $self->_auth_success;
       }
       elsif ($authtype == $remote->AUTH_SASL) {
          $self->{expected_serial} = $self->call( $remote->PROC_AUTH_SASL_INIT );
       }
       elsif ($authtype == $remote->AUTH_POLKIT) {
          $self->{expected_serial} = $self->call( $remote->PROC_AUTH_POLKIT );
       }
       else {
           die "Unsupported authtype requested: $self->{wanted_authtype}";
       }
    }
    elsif ($proc == $remote->PROC_AUTH_SASL_INIT) {
        my $mechs = $args{data}->{mechlist};
    }
    elsif ($proc == $remote->PROC_SASL_START) {
    }
    elsif ($proc == $remote->PROC_SASL_STEP) {
        # if success, restore original 'on_reply'
        # if failure, go back to SASL_INIT/_START?
    }
    elsif ($proc == $remote->PROC_AUTH_POLKIT) {
    }
}

sub _auth_server_on_call {
    my ($self, %args) = @_;
    my $proc = $args{header}->{proc};
    if (not grep { $proc == $_ } @{ $self->{expected_proc} }) {
       $self->{saved_on_call}->(%args);
       return;
    }
    my $serial = $args{header}->{serial};
    if ($proc == $remote->PROC_AUTH_SASL_INIT) {
       $self->{expected_proc} = [ $remote->PROC_AUTH_SASL_START ];
    }
    elsif ($proc == $remote->PROC_AUTH_POLKIT) {
    }
    elsif ($proc == $remote->PROC_AUTH_SASL_START) {
       $self->{expected_proc} = [ $remote->PROC_AUTH_SASL_STEP ];
    }
    elsif ($proc == $remote->PROC_AUTH_SASL_STEP) {
       # if success, restore the original 'on_call'
       # if failure, go back to SASL_START as the expected state?
    }
}

sub start_auth {
    my ($self, $wanted, %args) = @_;

    $self->{sasl}    = $args{sasl};
    $self->{on_auth} = $args{on_complete} // sub {};
    if ($self->{role} eq 'client') {
       $self->{saved_on_reply} = $self->{on_reply};
       $self->{on_reply} = sub { $self->_auth_client_on_reply(@_); };

       # First step in the authentication sequence: request the AUTH_LIST
       $self->{expected_serial} = $self->call( $remote->PROC_AUTH_LIST );
       $self->{wanted_authtype} = $wanted;
    }
    elsif ($self->{role} eq 'server') {
       $self->{saved_on_call} = $self->{on_call};
       $self->{on_call} = sub { $self->_auth_server_on_call(@_); };

       # Start waiting for the authorization sequence
       $self->{expected_proc} = [
            $remote->PROC_AUTH_LIST,
            $remote->PROC_AUTH_SASL_INIT,
            $remote->PROC_AUTH_POLKIT,
            ];
    }
    else {
        die "Unexpected role: $self->{role}";
    }
}



sub call {
    my ($self, $proc, $args) = @_;

    if (not (0 < $proc and $proc <= $#args_encoders)) {
        die "Invalid procedure number ($proc)";
    }
    return $self->{sender}->(
        $proc, $transport->CALL, data => $args_encoders[$proc]->($args));
}

sub reply {
    my ($self, $proc, $serial, $status, $args) = @_;

    if (not (0 < $proc and $proc <= $#ret_encoders)) {
        die "Invalid procedure number ($proc)";
    }
    return $self->{sender}->(
        $proc, $transport->REPLY,
        serial => $serial,
        status => $status,
        data   => $ret_encoders[$proc]->($args));
}

sub message {
    my ($self, $proc, $args) = @_;

    if (not (0 < $proc and $proc <= $#ret_encoders)) {
        die "Invalid procedure number ($proc)";
    }

    return $self->{sender}->(
        $proc, $transport->MESSAGE,
        data   => $ret_encoders[$proc]->($args));
}

sub stream {
    my ($self, $proc, $serial, %args) = @_;

    if ($args{hole}) {
        return $self->{sender}->(
            $proc, $transport->STREAM_HOLE,
            serial => $serial,
            status => $transport->CONTINUE,
            hole   => $args{hole});
    }
    else {
        return $self->{sender}->(
            $proc, $transport->STREAM,
            serial => $serial,
            status => $transport->CONTINUE,
            data   => $args{data});
    }
}

sub stream_end {
    my ($self, $proc, $serial, $abort) = @_;

    return $self->{sender}->(
        $proc, $transport->STREAM,
        serial => $serial,
        status => $abort ? $transport->ERROR : $transport->OK,
        data   => '',
        error  => $abort
        );
}

1;

__END__

=head1 NAME

Protocol::Sys::Virt::Remote - Connect to remote libvirt daemon

=head1 VERSION

v11.6.0

Based on LibVirt tag v11.6.0

=head1 SYNOPSIS

  use Protocol::Sys::Virt::Transport;
  use Protocol::Sys::Virt::Remote;
  use Protocol::Sys::Virt::Remote::XDR;
  my $prot = 'Protocol::Sys::Virt::Remote::XDR';

  open my $fh, 'rw', '/run/libvirt/libvirt.sock';
  my $transport = Protocol::Sys::Virt::Transport->new(
       role => 'client',
       on_send => sub { my $opaque = shift; syswrite( $fh, $_ ) for @_; $opaque }
  );

  my $remote = Protocol::Sys::Virt::Remote->new(
       role => 'client',
       on_reply => sub { say 'Reply handled!'; },
  );
  $remote->register( $transport );

  $remote->start_auth( $prot->AUTH_NONE,
                       on_complete => sub { say "Authenticated!" });

  my $serial = $remote->call( $prot->PROC_CONNECT_OPEN,
                 { name => 'qemu:///system', flags => 0 } );

=head1 DESCRIPTION

This module contains a class to connect to a "remote" libvirt daemon. That is,
a deamon connected to a stream, which may be a Unix socket, a TCP socket,
a pipe, etc.  The data sent and received is encoded and decoded before passing
it on to the transport or back to the caller.

=head1 EVENTS

=head2 on_closed

Called when the remote side of the stream announces it will close the stream
using the C<REMOTE_PROC_CONNECT_CLOSE> message, or when it confirms such a
message as initiated locally.

=head2 on_call

  $on_call->(header => $hdr, data => $decoded_data, [fds => $fds]);

Called when receiving a C<VIR_NET_CALL> or C<VIR_NET_CALL_WITH_FDS>
(abbreviated as C<CALL> or C<CALL_WITH_FDS>) message.  This
callback differs from the one in C<Protocol::Sys::Virt::Transport> by the fact
the C<data> has been decoded from XDR to the Perl representation.

=head2 on_reply

  $on_reply->(header => $hdr, data  => $decoded_data, [fds => $fds]);
  $on_reply->(header => $hdr, error => $err);

Called when receiving a C<VIR_NET_REPLY> or C<VIR_NET_REPLY_WITH_FDS>
(abbreviated as C<REPLY> or C<REPLY_WITH_FDS>) message.  This
callback differs from the one in C<Protocol::Sys::Virt::Transport> by the fact
the C<data> has been decoded from XDR to the Perl representation.

=head2 on_message

  $on_message->(header => $hdr, data  => $data);

Called when receiving a C<VIR_NET_MESSAGE> (abbreviated as C<MESSAGE>) message.
This callback differs from the one in C<Protocol::Sys::Virt::Transport> by the
fact the C<data> has been decoded from XDR to the Perl representation.

=head2 on_stream

  $on_stream->(header => $hdr, data => $data);
  $on_stream->(header => $hdr, hole => $hole);
  $on_stream->(header => $hdr, error => $err);
  $on_stream->(header => $hdr, final => $final);

Passthrough from the C<on_stream> event in C<Protocol::Sys::Virt::Transport>,
with the exception of the C<final> argument which indicates a positive
confirmation of the end of the stream.  This message comes after the last
data message (which sends zero-length data); both ends send this message
which serves as a synchronization point for the stream communication.

Please note that if an error occurs, no C<final> message is sent.

=head1 CONSTRUCTOR

=head2 new

   my $remote = Protocol::Sys::Virt::Remote->new(
       role     => 'client',
       on_close => sub { ... },
       on_call  => sub { ... },
   );

Creates an instance on the client side (C<< role => 'client' >>) or server side
(C<< role => 'server' >>) of the connection.  In addition to the required C<role>
parameter, the constructor may be provided with a coderef for each of the
events.

=head1 METHODS

=head2 configure

  $remote->configure( on_reply => $callback, ... );

Sets callback handlers for events.

=head2 register

  $remote->register( $transport );

Sets the callbacks on C<$transport> for C<< $remote->PROGRAM >>, allowing this instance
to handle any incoming transfers.

=head2 start_auth

  $remote->start_auth( $wanted_auth_type,
                       sasl => $sasl,
                       on_complete => sub { ... } );

Starts a sequence of message exchanges to authenticate with the remote.  The messages
being exchanged are handled internally and not passed to the event handlers.  When
C<AUTH_SASL> is wanted, the C<sasl> key should be provided with an instance of
L<Authen::SASL>.  The C<on_complete> handler is defined as:

  $on_complete->(status => $status);

Where C<$status> can be C<success> or C<fail>.

=head2 call

  $serial = $remote->call( $proc, $data );

Calls the remote procedure C<$proc> with the arguments given in C<$data>.  C<$proc>
is one of the values in the enum C<procedure> as defined in
C<Protocol::Sys::Virt::Remote::XDR>.  Reply and stream messages in response to this
call are identified by C<$serial>.

B<Note>: If the C< on_send > callback of the associated transport is declared C<async>
(as in L<Future::AsyncAwait>), a L<Future> is returned which (eventually) resolves
to the C<$serial>.

=head2 reply

  $remote->reply( $proc, $serial, $status, $data );

Sends a reply to a remote call C<$proc> using C<$serial>.  If C<$status> is C<ERROR>,
C<$data> is expected to provide an C<error> (C<remote_error>) structure.

B<Note>: If the C< on_send > callback of the associated transport is declared C<async>
(as in L<Future::AsyncAwait>), a L<Future> is returned which resolves when the reply
has been sent.

=head2 message

  $remote->message( $proc, $data );

Sends a notification message C<$data> to the remote procedure C<$proc>.

B<Note>: If the C< on_send > callback of the associated transport is declared C<async>
(as in L<Future::AsyncAwait>), a L<Future> is returned which resolves when the message
has been sent.

=head2 stream

  $remote->stream( $proc, $serial, data => $data );
  $remote->stream( $proc, $serial, hole => $hole );

Sends data or a stream hole to the server, relating to the stream opened with
remote procedure C<$proc> through serial C<$serial>.

Note that errors terminate the stream and should be transmitted using
C<stream_end>.

=head2 stream_end

  $remote->stream_end( $proc, $serial );         # regular stream termination
  $remote->stream_end( $proc, $serial, 1 );      # abort, on client
  $remote->stream_end( $proc, $serial, $error ); # abort, on server

Closes the stream, either through regular confirmation or through an error
condition. The client does not send its error to the server, but the server
sends its error information to the client -- which explains the difference in
invocation between clients and servers. The C<role> attribute should be set
to C<server> for servers to handle error conditions in streams correctly.

=head1 CONSTANTS

=over 8

=item DRV_FEATURE_MIGRATION_V1

=item DRV_FEATURE_REMOTE

=item DRV_FEATURE_MIGRATION_V2

=item DRV_FEATURE_MIGRATION_P2P

=item DRV_FEATURE_MIGRATION_DIRECT

=item DRV_FEATURE_MIGRATION_V3

=item DRV_FEATURE_MIGRATE_CHANGE_PROTECTION

=item DRV_FEATURE_FD_PASSING

=item DRV_FEATURE_TYPED_PARAM_STRING

=item DRV_FEATURE_PROGRAM_KEEPALIVE

=item DRV_FEATURE_XML_MIGRATABLE

=item DRV_FEATURE_MIGRATION_OFFLINE

=item DRV_FEATURE_MIGRATION_PARAMS

=item DRV_FEATURE_REMOTE_EVENT_CALLBACK

=item DRV_FEATURE_REMOTE_CLOSE_CALLBACK

=item DRV_FEATURE_NETWORK_UPDATE_HAS_CORRECT_ORDER

=back

=head1 LICENSE AND COPYRIGHT

See the LICENSE file in this distribution.

