scripts/Group.ps1

# Group.ps1: This is an autogenerated file. Part of Nimble Group Management SDK. All edits to this file will be lost!
#
# © Copyright 2017 Hewlett Packard Enterprise Development LP.


function Get-NSGroup {
  # .ExternalHelp ../NimPSSDK.psm1-help.xml
  [CmdletBinding(DefaultParameterSetName='id')]
  param(
    [Parameter(ParameterSetName='id')]
    [Parameter(ParameterSetName='nonId')]
    [ValidateSet('id','name','smtp_server','smtp_port','smtp_auth_enabled','smtp_auth_username','smtp_auth_password','smtp_encrypt_type','autosupport_enabled','allow_support_tunnel','proxy_server','proxy_port','proxy_username','proxy_password','alert_to_email_addrs','send_alert_to_support','alert_from_email_addr','alert_min_level','isns_enabled','isns_server','isns_port','snmp_trap_enabled','snmp_trap_host','snmp_trap_port','snmp_get_enabled','snmp_community','snmp_get_port','snmp_sys_contact','snmp_sys_location','domain_name','dns_servers','ntp_server','timezone','user_inactivity_timeout','syslogd_enabled','syslogd_server','syslogd_port','vvol_enabled','iscsi_enabled','fc_enabled','unique_name_enabled','access_protocol_list','group_target_enabled','default_iscsi_target_scope','group_target_name','default_volume_reserve','default_volume_warn_level','default_volume_limit','default_snap_reserve','default_snap_warn_level','default_snap_limit','default_snap_limit_percent','alarms_enabled','vss_validation_timeout','auto_switchover_enabled','auto_switchover_messages','merge_state','merge_group_name','tlsv1_enabled','cc_mode_enabled','group_snapshot_ttl','autoclean_unmanaged_snapshots_ttl_unit','autoclean_unmanaged_snapshots_enabled','leader_array_name','leader_array_serial','management_service_backup_array_name','management_service_backup_status','failover_mode','witness_status','member_list','compressed_vol_usage_bytes','compressed_snap_usage_bytes','uncompressed_vol_usage_bytes','uncompressed_snap_usage_bytes','usable_capacity_bytes','usage','raw_capacity','usable_cache_capacity','raw_cache_capacity','snap_usage_populated','pending_deletes','num_connections','vol_compression_ratio','snap_compression_ratio','compression_ratio','dedupe_ratio','clone_ratio','vol_thin_provisioning_ratio','savings_ratio','data_reduction_ratio','savings_dedupe','savings_compression','savings_clone','savings_vol_thin_provisioning','savings_data_reduction','savings','free_space','unused_reserve_bytes','usage_valid','space_info_valid','version_current','version_target','version_rollback','update_state','update_start_time','update_end_time','update_array_names','update_progress_msg','update_error_code','update_downloading','update_download_error_code','update_download_start_time','update_download_end_time','iscsi_automatic_connection_method','iscsi_connection_rebalancing','repl_throttled_bandwidth','repl_throttled_bandwidth_kbps','repl_throttle_list','volume_migration_status','array_unassign_migration_status','data_rebalance_status','scsi_vendor_id','encryption_config','last_login','num_snaps','num_snapcolls','date','login_banner_message','login_banner_after_auth','login_banner_reset','snap_retn_meter_high','snap_retn_meter_very_high')]
    [string[]]$fields,

    [Parameter(ParameterSetName='id')]
    [ValidatePattern('([0-9a-f]{2})([0-9a-f]{16})([0-9a-f]{16})([0-9a-f]{8})')]
    [string] $id,

    [Parameter(ParameterSetName='nonId')]
    [string]$name,

    [Parameter(ParameterSetName='nonId')]
    [string]$smtp_server,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$smtp_port,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$smtp_auth_enabled,

    [Parameter(ParameterSetName='nonId')]
    [string]$smtp_auth_username,

    [Parameter(ParameterSetName='nonId')]
    [string]$smtp_auth_password,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'starttls', 'none', 'ssl')]
    [string]$smtp_encrypt_type,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$autosupport_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$allow_support_tunnel,

    [Parameter(ParameterSetName='nonId')]
    [string]$proxy_server,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$proxy_port,

    [Parameter(ParameterSetName='nonId')]
    [string]$proxy_username,

    [Parameter(ParameterSetName='nonId')]
    [string]$proxy_password,

    [Parameter(ParameterSetName='nonId')]
    [string]$alert_to_email_addrs,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$send_alert_to_support,

    [Parameter(ParameterSetName='nonId')]
    [string]$alert_from_email_addr,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'critical', 'warning', 'info', 'notice')]
    [string]$alert_min_level,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$isns_enabled,

    [Parameter(ParameterSetName='nonId')]
    [string]$isns_server,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$isns_port,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$snmp_trap_enabled,

    [Parameter(ParameterSetName='nonId')]
    [string]$snmp_trap_host,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$snmp_trap_port,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$snmp_get_enabled,

    [Parameter(ParameterSetName='nonId')]
    [string]$snmp_community,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$snmp_get_port,

    [Parameter(ParameterSetName='nonId')]
    [string]$snmp_sys_contact,

    [Parameter(ParameterSetName='nonId')]
    [string]$snmp_sys_location,

    [Parameter(ParameterSetName='nonId')]
    [string]$domain_name,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$dns_servers,

    [Parameter(ParameterSetName='nonId')]
    [string]$ntp_server,

    [Parameter(ParameterSetName='nonId')]
    [string]$timezone,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$user_inactivity_timeout,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$syslogd_enabled,

    [Parameter(ParameterSetName='nonId')]
    [string]$syslogd_server,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$syslogd_port,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$vvol_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$iscsi_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$fc_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$unique_name_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$access_protocol_list,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$group_target_enabled,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'volume', 'group')]
    [string]$default_iscsi_target_scope,

    [Parameter(ParameterSetName='nonId')]
    [string]$group_target_name,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$default_volume_reserve,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$default_volume_warn_level,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$default_volume_limit,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$default_snap_reserve,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$default_snap_warn_level,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$default_snap_limit,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$default_snap_limit_percent,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$alarms_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$vss_validation_timeout,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$auto_switchover_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$auto_switchover_messages,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'dest_db_done', 'dest_db', 'dest_reassigned', 'src_quiesced', 'none', 'dest_relinquish', 'src_reassigned', 'dest_start', 'src_start', 'src_quiesce_failed', 'dest_merge_validation', 'src_reassign_failed', 'dest_db_failed')]
    [string]$merge_state,

    [Parameter(ParameterSetName='nonId')]
    [string]$merge_group_name,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$tlsv1_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$cc_mode_enabled,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$group_snapshot_ttl,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$autoclean_unmanaged_snapshots_ttl_unit,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$autoclean_unmanaged_snapshots_enabled,

    [Parameter(ParameterSetName='nonId')]
    [string]$leader_array_name,

    [Parameter(ParameterSetName='nonId')]
    [string]$leader_array_serial,

    [Parameter(ParameterSetName='nonId')]
    [string]$management_service_backup_array_name,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'in_sync', 'remove_in_progress', 'yet_to_setup', 'out_of_sync', 'add_in_progress', 'setup_failed')]
    [string]$management_service_backup_status,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'Manual', 'Automatic')]
    [string]$failover_mode,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$witness_status,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$member_list,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$compressed_vol_usage_bytes,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$compressed_snap_usage_bytes,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$uncompressed_vol_usage_bytes,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$uncompressed_snap_usage_bytes,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$usable_capacity_bytes,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$usage,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$raw_capacity,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$usable_cache_capacity,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$raw_cache_capacity,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$snap_usage_populated,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$pending_deletes,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$num_connections,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[double]]$vol_compression_ratio,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[double]]$snap_compression_ratio,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[double]]$compression_ratio,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[double]]$dedupe_ratio,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[double]]$clone_ratio,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[double]]$vol_thin_provisioning_ratio,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[double]]$savings_ratio,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[double]]$data_reduction_ratio,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$savings_dedupe,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$savings_compression,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$savings_clone,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$savings_vol_thin_provisioning,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$savings_data_reduction,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$savings,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$free_space,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$unused_reserve_bytes,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$usage_valid,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$space_info_valid,

    [Parameter(ParameterSetName='nonId')]
    [string]$version_current,

    [Parameter(ParameterSetName='nonId')]
    [string]$version_target,

    [Parameter(ParameterSetName='nonId')]
    [string]$version_rollback,

    [Parameter(ParameterSetName='nonId')]
    [ValidateSet( 'normal', 'paused', 'updating', 'invalid', 'timed_out', 'failed')]
    [string]$update_state,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$update_start_time,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$update_end_time,

    [Parameter(ParameterSetName='nonId')]
    [string]$update_array_names,

    [Parameter(ParameterSetName='nonId')]
    [string]$update_progress_msg,

    [Parameter(ParameterSetName='nonId')]
    [string]$update_error_code,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$update_downloading,

    [Parameter(ParameterSetName='nonId')]
    [string]$update_download_error_code,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$update_download_start_time,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$update_download_end_time,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$iscsi_automatic_connection_method,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$iscsi_connection_rebalancing,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$repl_throttled_bandwidth,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$repl_throttled_bandwidth_kbps,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$repl_throttle_list,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$volume_migration_status,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$array_unassign_migration_status,

    [Parameter(ParameterSetName='nonId')]
    [Object[]]$data_rebalance_status,

    [Parameter(ParameterSetName='nonId')]
    [string]$scsi_vendor_id,

    [Parameter(ParameterSetName='nonId')]
    [Object]$encryption_config,

    [Parameter(ParameterSetName='nonId')]
    [string]$last_login,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$num_snaps,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$num_snapcolls,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$date,

    [Parameter(ParameterSetName='nonId')]
    [string]$login_banner_message,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$login_banner_after_auth,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[bool]]$login_banner_reset,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$snap_retn_meter_high,

    [Parameter(ParameterSetName='nonId')]
    [Nullable[long]]$snap_retn_meter_very_high

  )

  process
  {
    $API = 'groups'
    $Param = @{
      ObjectName = 'Group'
      APIPath = 'groups'
    }

    if ($fields)
    {
        $Param.Fields = $fields
    }

    if ($id)
    {
        # Get a single object for given Id.
        $Param.Id = $id
        $ResponseObject = Get-NimbleStorageAPIObject @Param
        return $ResponseObject
    }
    else
    {
        # Get list of objects matching the given filter.
        $Param.Filter = @{}
        $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
        foreach ($key in $ParameterList.keys)
        {
            if ($key.ToLower() -ne 'fields')
            {
                $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
                if($var -and ($PSBoundParameters.ContainsKey($key)))
                {
                    $Param.Filter.Add("$($var.name)", ($var.value))
                }
            }
        }
        $ResponseObjectList = Get-NimbleStorageAPIObjectList @Param
        return $ResponseObjectList
    }
  }
}

function Set-NSGroup {
  # .ExternalHelp ../NimPSSDK.psm1-help.xml
  [CmdletBinding()]
  param(

    [Parameter(ValueFromPipeline=$True, ValueFromPipelineByPropertyName=$True, Mandatory = $True, ParameterSetName='all')]
    [string]$id,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $name,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $smtp_server,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $smtp_port,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $smtp_auth_enabled,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $smtp_auth_username,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $smtp_auth_password,

    [Parameter(ParameterSetName='all')]
    [ValidateSet( 'starttls', 'none', 'ssl')]
    [string] $smtp_encrypt_type,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $autosupport_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $allow_support_tunnel,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $proxy_server,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $proxy_port,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $proxy_username,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $proxy_password,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $alert_to_email_addrs,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $send_alert_to_support,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $alert_from_email_addr,

    [Parameter(ParameterSetName='all')]
    [ValidateSet( 'critical', 'warning', 'info', 'notice')]
    [string] $alert_min_level,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $isns_enabled,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $isns_server,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $isns_port,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $snmp_trap_enabled,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $snmp_trap_host,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $snmp_trap_port,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $snmp_get_enabled,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $snmp_community,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $snmp_get_port,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $snmp_sys_contact,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $snmp_sys_location,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $domain_name,

    [Parameter(ParameterSetName='all')]
    [Object[]] $dns_servers,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $ntp_server,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $timezone,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $user_inactivity_timeout,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $syslogd_enabled,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $syslogd_server,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $syslogd_port,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $vvol_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $iscsi_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $fc_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $unique_name_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $group_target_enabled,

    [Parameter(ParameterSetName='all')]
    [ValidateSet( 'volume', 'group')]
    [string] $default_iscsi_target_scope,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $group_target_name,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $default_volume_reserve,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $default_volume_warn_level,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $default_volume_limit,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $default_snap_reserve,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $default_snap_warn_level,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $default_snap_limit,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $default_snap_limit_percent,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $alarms_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $vss_validation_timeout,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $auto_switchover_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $tlsv1_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $cc_mode_enabled,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $group_snapshot_ttl,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $autoclean_unmanaged_snapshots_ttl_unit,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $autoclean_unmanaged_snapshots_enabled,

    [Parameter(ParameterSetName='all')]
    [Object[]] $repl_throttle_list,

    [Parameter(ParameterSetName='all')]
    [Object] $encryption_config,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[long]] $date,

    [Parameter(ParameterSetName='all')]
    [AllowEmptyString()]
    [string] $login_banner_message,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $login_banner_after_auth,

    [Parameter(ParameterSetName='all')]
    
    [Nullable[bool]] $login_banner_reset

  )

    process {
        # Gather request params based on user input.
        $RequestData = @{}
        $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
        foreach ($key in $ParameterList.keys)
        {
            if ($key.ToLower() -ne 'id')
            {
                $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
                if($var -and ($PSBoundParameters.ContainsKey($key)))
                {
                    $RequestData.Add("$($var.name)", ($var.value))
                }
            }
        }
        $Params = @{
            ObjectName = 'Group'
            APIPath = 'groups'
            Id = $id
            Properties = $RequestData
        }

        $ResponseObject = Set-NimbleStorageAPIObject @Params
        return $ResponseObject
    }
}


function Reset-NSGroup {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'reboot'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Stop-NSGroup {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[bool]]$force

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'halt'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Test-NSGroupAlert {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [ValidateSet( 'critical', 'warning', 'info', 'notice')]
    [string]$level

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'test_alert'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Test-NSGroupSoftwareUpdate {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[long]]$skip_precheck_mask

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'software_update_precheck'
        ReturnType = 'NsSoftwareUpdateReturn'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Start-NSGroupSoftwareUpdate {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[long]]$skip_start_check_mask

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'software_update_start'
        ReturnType = 'NsSoftwareUpdateReturn'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Start-NSGroupSoftwareDownload {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$version,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[bool]]$force

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'software_download'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Stop-NSGroupSoftwareDownload {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'software_cancel_download'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Resume-NSGroupSoftwareUpdate {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'software_update_resume'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Get-NSGroupDiscoveredList {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    [AllowEmptyString()]
    [string]$group_name

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'get_group_discovered_list'
        ReturnType = 'NsDiscoveredGroupListReturn'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Test-NSGroupMerge {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$src_group_name,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$src_group_ip,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$src_username,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$src_password,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    [AllowEmptyString()]
    [string]$src_passphrase,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[bool]]$skip_secondary_mgmt_ip

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'validate_merge'
        ReturnType = 'NsGroupMergeReturn'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Merge-NSGroup {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$src_group_name,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$src_group_ip,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$src_username,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$src_password,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    [AllowEmptyString()]
    [string]$src_passphrase,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[bool]]$force,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[bool]]$skip_secondary_mgmt_ip

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'merge'
        ReturnType = 'NsGroupMergeReturn'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Get-NSGroupgetEULA {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    [ValidateSet( 'en')]
    [string]$locale,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    [ValidateSet( 'html', 'text')]
    [string]$format,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    [ValidateSet( 'software', 'setup')]
    [string]$phase,

    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs')]
    
    [Nullable[bool]]$force

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'get_eula'
        ReturnType = 'NsEulaReturn'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Test-NSGroupMigrate {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'check_migrate'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Move-NSGroup {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'migrate'
        ReturnType = 'void'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}
function Get-NSGroupTimeZoneList {
    # .ExternalHelp ../NimPSSDK.psm1-help.xml
    [CmdletBinding(DefaultParameterSetName='allArgs')]
    param (
    [Parameter(ValueFromPipelineByPropertyName=$True, ParameterSetName='allArgs', Mandatory = $True)]
    [AllowEmptyString()]
    [string]$id

  )

  process{
    $Params = @{
        APIPath = 'groups'
        Action = 'get_timezone_list'
        ReturnType = 'NsTimezonesReturn'
    }
    $Params.Arguments = @{}
    $ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
    foreach ($key in $ParameterList.keys)
    {
        $var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
        if($var -and ($PSBoundParameters.ContainsKey($key)))
        {
            $Params.Arguments.Add("$($var.name)", ($var.value))
        }
    }

    $ResponseObject = Invoke-NimbleStorageAPIAction @Params
    return $ResponseObject
  }
}


# SIG # Begin signature block
# MIIeLgYJKoZIhvcNAQcCoIIeHzCCHhsCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCxsyxY1HV9LnUY
# yFPyCh2gomdcw+psJs08jguugsupc6CCGSUwggPuMIIDV6ADAgECAhB+k+v7fMZO
# WepLmnfUBvw7MA0GCSqGSIb3DQEBBQUAMIGLMQswCQYDVQQGEwJaQTEVMBMGA1UE
# CBMMV2VzdGVybiBDYXBlMRQwEgYDVQQHEwtEdXJiYW52aWxsZTEPMA0GA1UEChMG
# VGhhd3RlMR0wGwYDVQQLExRUaGF3dGUgQ2VydGlmaWNhdGlvbjEfMB0GA1UEAxMW
# VGhhd3RlIFRpbWVzdGFtcGluZyBDQTAeFw0xMjEyMjEwMDAwMDBaFw0yMDEyMzAy
# MzU5NTlaMF4xCzAJBgNVBAYTAlVTMR0wGwYDVQQKExRTeW1hbnRlYyBDb3Jwb3Jh
# dGlvbjEwMC4GA1UEAxMnU3ltYW50ZWMgVGltZSBTdGFtcGluZyBTZXJ2aWNlcyBD
# QSAtIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsayzSVRLlxwS
# CtgleZEiVypv3LgmxENza8K/LlBa+xTCdo5DASVDtKHiRfTot3vDdMwi17SUAAL3
# Te2/tLdEJGvNX0U70UTOQxJzF4KLabQry5kerHIbJk1xH7Ex3ftRYQJTpqr1SSwF
# eEWlL4nO55nn/oziVz89xpLcSvh7M+R5CvvwdYhBnP/FA1GZqtdsn5Nph2Upg4XC
# YBTEyMk7FNrAgfAfDXTekiKryvf7dHwn5vdKG3+nw54trorqpuaqJxZ9YfeYcRG8
# 4lChS+Vd+uUOpyyfqmUg09iW6Mh8pU5IRP8Z4kQHkgvXaISAXWp4ZEXNYEZ+VMET
# fMV58cnBcQIDAQABo4H6MIH3MB0GA1UdDgQWBBRfmvVuXMzMdJrU3X3vP9vsTIAu
# 3TAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnRoYXd0
# ZS5jb20wEgYDVR0TAQH/BAgwBgEB/wIBADA/BgNVHR8EODA2MDSgMqAwhi5odHRw
# Oi8vY3JsLnRoYXd0ZS5jb20vVGhhd3RlVGltZXN0YW1waW5nQ0EuY3JsMBMGA1Ud
# JQQMMAoGCCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIBBjAoBgNVHREEITAfpB0wGzEZ
# MBcGA1UEAxMQVGltZVN0YW1wLTIwNDgtMTANBgkqhkiG9w0BAQUFAAOBgQADCZuP
# ee9/WTCq72i1+uMJHbtPggZdN1+mUp8WjeockglEbvVt61h8MOj5aY0jcwsSb0ep
# rjkR+Cqxm7Aaw47rWZYArc4MTbLQMaYIXCp6/OJ6HVdMqGUY6XlAYiWWbsfHN2qD
# IQiOQerd2Vc/HXdJhyoWBl6mOGoiEqNRGYN+tjCCBKMwggOLoAMCAQICEA7P9DjI
# /r81bgTYapgbGlAwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxHTAbBgNV
# BAoTFFN5bWFudGVjIENvcnBvcmF0aW9uMTAwLgYDVQQDEydTeW1hbnRlYyBUaW1l
# IFN0YW1waW5nIFNlcnZpY2VzIENBIC0gRzIwHhcNMTIxMDE4MDAwMDAwWhcNMjAx
# MjI5MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29y
# cG9yYXRpb24xNDAyBgNVBAMTK1N5bWFudGVjIFRpbWUgU3RhbXBpbmcgU2Vydmlj
# ZXMgU2lnbmVyIC0gRzQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCi
# Yws5RLi7I6dESbsO/6HwYQpTk7CY260sD0rFbv+GPFNVDxXOBD8r/amWltm+YXkL
# W8lMhnbl4ENLIpXuwitDwZ/YaLSOQE/uhTi5EcUj8mRY8BUyb05Xoa6IpALXKh7N
# S+HdY9UXiTJbsF6ZWqidKFAOF+6W22E7RVEdzxJWC5JH/Kuu9mY9R6xwcueS51/N
# ELnEg2SUGb0lgOHo0iKl0LoCeqF3k1tlw+4XdLxBhircCEyMkoyRLZ53RB9o1qh0
# d9sOWzKLVoszvdljyEmdOsXF6jML0vGjG/SLvtmzV4s73gSneiKyJK4ux3DFvk6D
# Jgj7C72pT5kI4RAocqrNAgMBAAGjggFXMIIBUzAMBgNVHRMBAf8EAjAAMBYGA1Ud
# JQEB/wQMMAoGCCsGAQUFBwMIMA4GA1UdDwEB/wQEAwIHgDBzBggrBgEFBQcBAQRn
# MGUwKgYIKwYBBQUHMAGGHmh0dHA6Ly90cy1vY3NwLndzLnN5bWFudGVjLmNvbTA3
# BggrBgEFBQcwAoYraHR0cDovL3RzLWFpYS53cy5zeW1hbnRlYy5jb20vdHNzLWNh
# LWcyLmNlcjA8BgNVHR8ENTAzMDGgL6AthitodHRwOi8vdHMtY3JsLndzLnN5bWFu
# dGVjLmNvbS90c3MtY2EtZzIuY3JsMCgGA1UdEQQhMB+kHTAbMRkwFwYDVQQDExBU
# aW1lU3RhbXAtMjA0OC0yMB0GA1UdDgQWBBRGxmmjDkoUHtVM2lJjFz9eNrwN5jAf
# BgNVHSMEGDAWgBRfmvVuXMzMdJrU3X3vP9vsTIAu3TANBgkqhkiG9w0BAQUFAAOC
# AQEAeDu0kSoATPCPYjA3eKOEJwdvGLLeJdyg1JQDqoZOJZ+aQAMc3c7jecshaAba
# tjK0bb/0LCZjM+RJZG0N5sNnDvcFpDVsfIkWxumy37Lp3SDGcQ/NlXTctlzevTcf
# Q3jmeLXNKAQgo6rxS8SIKZEOgNER/N1cdm5PXg5FRkFuDbDqOJqxOtoJcRD8HHm0
# gHusafT9nLYMFivxf1sJPZtb4hbKE4FtAC44DagpjyzhsvRaqQGvFZwsL0kb2yK7
# w/54lFHDhrGCiF3wPbRRoXkzKy57udwgCRNx62oZW8/opTBXLIlJP7nPf8m/PiJo
# Y1OavWl0rMUdPH+S4MO8HNgEdTCCBVEwggQ5oAMCAQICECqVMhjhC0t7b9FLKp7D
# DSYwDQYJKoZIhvcNAQELBQAwgb0xCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJp
# U2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazE6MDgG
# A1UECxMxKGMpIDIwMDggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1
# c2Ugb25seTE4MDYGA1UEAxMvVmVyaVNpZ24gVW5pdmVyc2FsIFJvb3QgQ2VydGlm
# aWNhdGlvbiBBdXRob3JpdHkwHhcNMTYwNTEyMDAwMDAwWhcNMjYwNTExMjM1OTU5
# WjCBkTELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5bWFudGVjIENvcnBvcmF0aW9u
# MR8wHQYDVQQLExZTeW1hbnRlYyBUcnVzdCBOZXR3b3JrMUIwQAYDVQQDEzlTeW1h
# bnRlYyBDbGFzcyAzIEV4dGVuZGVkIFZhbGlkYXRpb24gQ29kZSBTaWduaW5nIENB
# IC0gRzMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQClkJSyzhW9r1AZ
# 4MTOCmjo+GgcPOUrzgtLV96hvRp2z8efNLEAbXj5JuXMmax0xp7gbOEtkSCTh2tu
# hGzVLlIX0I/Z6uz87CDyDdo/bZwl0dv7IOzw0P9LELa5ORGN9gyiTE+4Hfd90OXP
# 91wzgGak1iJve+N4FwYF9MbGlLf+y1Yqfg/6GPNIA02nbha3FRt93C/bQw4pHtF4
# b2gYG7eCy35Yj9jSmH+QTbvHCzxx/szEy/ajQhCsHcqD/JG+LKqAr7eZaUZx05Ug
# mc1RLpX4rBIefOK0ImkuC8AXfKD97VymLiIrZf99zTGkY6zfIuWTfKJOgsITLL8c
# iyI9q2btAgMBAAGjggF1MIIBcTAuBggrBgEFBQcBAQQiMCAwHgYIKwYBBQUHMAGG
# Emh0dHA6Ly9zLnN5bWNkLmNvbTASBgNVHRMBAf8ECDAGAQH/AgEAMGAGA1UdIARZ
# MFcwVQYFZ4EMAQMwTDAjBggrBgEFBQcCARYXaHR0cHM6Ly9kLnN5bWNiLmNvbS9j
# cHMwJQYIKwYBBQUHAgIwGRoXaHR0cHM6Ly9kLnN5bWNiLmNvbS9ycGEwNgYDVR0f
# BC8wLTAroCmgJ4YlaHR0cDovL3Muc3ltY2IuY29tL3VuaXZlcnNhbC1yb290LmNy
# bDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDAzAOBgNVHQ8BAf8EBAMCAQYwKQYDVR0R
# BCIwIKQeMBwxGjAYBgNVBAMTEVN5bWFudGVjUEtJLTItMzg4MB0GA1UdDgQWBBSr
# ixFJCyoCYnVKm8UCIKCE0kv43jAfBgNVHSMEGDAWgBS2d/ppSEefUxLVwuoHMnYH
# 0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEAMDGoEX4Zrh0009LXzLAcygGhShZfaMXK
# TQVZAfT8hQqnzx+wHCBkCUEYErTj3TIzcpkTK0hdSZYRIue5xG8FME1srDO+TU8i
# YtbxZyoWe8aMjg65lgCdDmQBkmTqN/gEfhFib4wsnF0LuP/df0DM6IjynSY0SbQf
# vflbP3hzLoH6aRrzlI+VMH7CtNiVJdJ6/oo46LBv9m858M76hFYQf1anxRRgtE9a
# OYFKrOEyYEsOFKD1HqFIQ5dZkb0daGaYMACLwlnUfvaFG3p/uttlaA6tbnO2VDn0
# aAOFfKG8U7M7oYI/eCQ1AqSuhYbCBeeAdVwFkXntqo2HaSaKF4HnwzCCBY0wggN1
# oAMCAQICCmEtI8sAAAAAACEwDQYJKoZIhvcNAQEFBQAwfzELMAkGA1UEBhMCVVMx
# EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoT
# FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEpMCcGA1UEAxMgTWljcm9zb2Z0IENvZGUg
# VmVyaWZpY2F0aW9uIFJvb3QwHhcNMTEwMjIyMTk0NjM5WhcNMjEwMjIyMTk1NjM5
# WjCBvTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYD
# VQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBW
# ZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MTgwNgYDVQQD
# Ey9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
# eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMdhN16xATTbYtcVm/9Y
# WowjI9ZgjpHXkJiDeuZYGTiMxfblZIW0onH77b252s1NALTILXOlx2lxlR85PLJE
# B5zoDvpNSsQh3ylhjzIiYYLFhx9ujHxfFiBRRNFwT1fq4xzjzHnuWNgOwrNFk8As
# 55oXK3sAN3pBM3jhM+LzEBp/hyy+9vX3QuLlv4diiV8AS9/F3eR1RDJBOh5xbmnL
# C3VGCNHK0iuV0M/7uUBrZIxXTfwTEXmE7V5U9jSfCAHzECUGF0ra8R16ZmuYYGak
# 2e/SLoLx8O8J6kTJFWriA24z06yfVQDH9ghqlLlf3OAz8YRg+VsnEbT8FvK7VmqA
# JY0CAwEAAaOByzCByDARBgNVHSAECjAIMAYGBFUdIAAwDwYDVR0TAQH/BAUwAwEB
# /zALBgNVHQ8EBAMCAYYwHQYDVR0OBBYEFLZ3+mlIR59TEtXC6gcydgfRlwcZMB8G
# A1UdIwQYMBaAFGL7CiFbf0NuEdoJVFBr9dKWcfGeMFUGA1UdHwROMEwwSqBIoEaG
# RGh0dHA6Ly9jcmwubWljcm9zb2Z0LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY3Jv
# c29mdENvZGVWZXJpZlJvb3QuY3JsMA0GCSqGSIb3DQEBBQUAA4ICAQBZR1KaNEM9
# sBPEMrj4N9lVUA0qpGdnM5TJ/9j1DKyNWjmDSG2yu0OPewvzW680ek+etwjn/gE4
# Ed4vO5w+lguyUILmtVW0YJYTSO0nLSUCcjiz82VZimIzdtVs+ZX0nTVMg6DBZ/yD
# tXaTxuhSG1m5uoWUCjvRKAUbGQzzIxdlRngO2XNKwLw9wEjhpPiH5RbhVodlOOEA
# F6IeRCv2T1opPLAbuF9lS0jrapgpXlfi9WLYQ0ezLmoTQad9OCMGDfdc5n+6zWUE
# klJSJmCoozwiDa23ukwyb1Leq5txyZ7ovp9epq13120llVYqGEPCzMFu4c7fRe/+
# t1EqfJi0/maDn2ts7HTVnzIfJDtDOtEEHQBKW6XSbWZMyMFN7MMBNcG4ef3gxvao
# KaCSjT1Dd3imHkzCOARY6zqDNATGNE4TRbJbci9yak/lGnwYa0TjyFgfjnEMgGtO
# K3s8+Erjk5LEsJq8pmG303zKcPX6/80HotnoEcxsRFCfcbCC0jamWXO9twtbaYZ7
# pR/HncHSCt0uTMIxtocqjRB6+qd+PF/wsKD1RQXeeRJ6AoXxHorTmYcXKVy+dVjW
# eQEGlWM5+wUWxz1JUaz6a5gtzJdurLPDb4KcAJZ/JA3pWUBhs2TbuflBobnu2ViN
# /wRXztj+6v9nW84T/Jz89uFmzaOg3XcRsjCCBaIwggSKoAMCAQICECgySelARPT/
# zK7u5NtdMXYwDQYJKoZIhvcNAQELBQAwgZExCzAJBgNVBAYTAlVTMR0wGwYDVQQK
# ExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3Qg
# TmV0d29yazFCMEAGA1UEAxM5U3ltYW50ZWMgQ2xhc3MgMyBFeHRlbmRlZCBWYWxp
# ZGF0aW9uIENvZGUgU2lnbmluZyBDQSAtIEczMB4XDTE4MTExOTAwMDAwMFoXDTIx
# MTExODIzNTk1OVowggEjMRMwEQYLKwYBBAGCNzwCAQMTAlVTMRkwFwYLKwYBBAGC
# NzwCAQIMCERlbGF3YXJlMRkwFwYLKwYBBAGCNzwCAQEMCFNhbiBKb3NlMR0wGwYD
# VQQPExRQcml2YXRlIE9yZ2FuaXphdGlvbjEQMA4GA1UEBRMHNTY5OTI2NTELMAkG
# A1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExETAPBgNVBAcMCFNhbiBKb3Nl
# MSswKQYDVQQKDCJIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBDb21wYW55MRYw
# FAYDVQQLDA1OaW1ibGVzdG9yYWdlMSswKQYDVQQDDCJIZXdsZXR0IFBhY2thcmQg
# RW50ZXJwcmlzZSBDb21wYW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
# AQEApZKrB2yQ1oxnRf02qfhEqvYFzXfVlTmlLcVbIEY9G6ZLawW0JNp+t1n2LXFA
# vR0Xcpw0cUUECeQz8iDj5Q05H9MiUAPuyycPE3F9gbTsZfE+YCWiCgjazoJZDWaY
# uNmgk8dwapwGyMq+f2zD85nVu46MH1I8GfTayHdLYvt0WeVDUu4kNhqwvQGU7PJ7
# 2V5LKy+rKEPAyxi/crvA2nIujGLsR7jP9kG6kxljctjwXtEyDpbZocrPOoNo/9fz
# ruYuod50HporzRpBjcLgxUV86qIsdAUgbv+BVrXpo7hTWrwcNRmzBHEh6JEw5oeN
# 7xVF2G1ZRTZT4JALj9FHHUYuwwIDAQABo4IBXzCCAVswCQYDVR0TBAIwADAOBgNV
# HQ8BAf8EBAMCB4AwKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3JoLnN5bWNiLmNv
# bS9yaC5jcmwwYAYDVR0gBFkwVzBVBgVngQwBAzBMMCMGCCsGAQUFBwIBFhdodHRw
# czovL2Quc3ltY2IuY29tL2NwczAlBggrBgEFBQcCAjAZDBdodHRwczovL2Quc3lt
# Y2IuY29tL3JwYTAWBgNVHSUBAf8EDDAKBggrBgEFBQcDAzAfBgNVHSMEGDAWgBSr
# ixFJCyoCYnVKm8UCIKCE0kv43jAdBgNVHQ4EFgQULA5bT8p6B+zgEwzg4yivfm+c
# 6NMwVwYIKwYBBQUHAQEESzBJMB8GCCsGAQUFBzABhhNodHRwOi8vcmguc3ltY2Qu
# Y29tMCYGCCsGAQUFBzAChhpodHRwOi8vcmguc3ltY2IuY29tL3JoLmNydDANBgkq
# hkiG9w0BAQsFAAOCAQEAcUxJyMwdcdcm/pxmPQrCHVSmHDYN+gsvmvN05h3S9Pw8
# fdZTdbB8myyqxTovG88hCVWPvnPvc+h6B0Ngs4fY1F/EwZi7D1G77g+8ESNakk55
# XePmszzK5tyAXq3CfqGQNsjkax9orswmCi9c6CXMq5XuYKQkwdvwsNOo8TqZP3MN
# RHthFpq+HFX1iKIKdTtEtl3sfC2Ym/KAX/GTImD5dihOiVDDtkS0FVtRJxtd0OYk
# 7QFalaWQAX6AyYgGVx2hnsC/B/gN1B2n4qIMpGUwVOCnR8nu7N9NkNg/7IRiy3/X
# A2MJq/DwSgAtqRpy3v9JH/HVY/SFHmoAun+ODiB2ojGCBF8wggRbAgEBMIGmMIGR
# MQswCQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAd
# BgNVBAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxQjBABgNVBAMTOVN5bWFudGVj
# IENsYXNzIDMgRXh0ZW5kZWQgVmFsaWRhdGlvbiBDb2RlIFNpZ25pbmcgQ0EgLSBH
# MwIQKDJJ6UBE9P/Mru7k210xdjANBglghkgBZQMEAgEFAKB8MBAGCisGAQQBgjcC
# AQwxAjAAMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcCAQsx
# DjAMBgorBgEEAYI3AgEVMC8GCSqGSIb3DQEJBDEiBCCGTrSfrCyMayAWhP/1qzAh
# WjJZEa6FQeguFimGGabqJzANBgkqhkiG9w0BAQEFAASCAQA4TByUr3NyfOMc1wVe
# 4c/FvuK/W5r74bPZIQ2Sw320Cq0/gY4BO++ATWxgcnz+h2/6LJj5ZCEv0eLFb5vk
# Qk4gMvx40AuutpYOqJNff5F8u4bYfEkx5QMKzpNsXHio4P9K3hQDSyYjLzsxumUw
# pe4e8tXkCPhGNBDNaL6lM4+SQpYu11TWiR6q2MSQrSfREfgZTBV5Q3clUAgbF+ac
# hxUOHlG9GPOnM7anpZo96rAYBiPdP1cqs00JkvGo8/e9DBSwBJTNRg8Do7ZuVTda
# Egv9RmqR6LaygSVmBVlL2M+chvZJ+GIwSuHvNy4bKvYYOvesIVVBAKdjsKpqsqmY
# lum2oYICCzCCAgcGCSqGSIb3DQEJBjGCAfgwggH0AgEBMHIwXjELMAkGA1UEBhMC
# VVMxHTAbBgNVBAoTFFN5bWFudGVjIENvcnBvcmF0aW9uMTAwLgYDVQQDEydTeW1h
# bnRlYyBUaW1lIFN0YW1waW5nIFNlcnZpY2VzIENBIC0gRzICEA7P9DjI/r81bgTY
# apgbGlAwCQYFKw4DAhoFAKBdMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJ
# KoZIhvcNAQkFMQ8XDTE5MDQxMDExMTUzN1owIwYJKoZIhvcNAQkEMRYEFCAuSYjx
# 1CbT6uSKRzwkPKDjaYonMA0GCSqGSIb3DQEBAQUABIIBADWKYFABWjTAnYMEq7Fm
# DTV7FoLJ16v+bgAzS/pbNkG4YrDNbEdeMOFsUdVkNkfovuZ6bk6LY0dPgymHWAn7
# XVsHNrqdbNvRyWp9S6yFgZklADfZrbqndrzE5NSLL+pzgqqBguGWQ7l3njwRZAur
# YorQPvZrgokP0tTKYIDxOXXh8vc7u/10W2V26aZIVbzXBscFgj+U5fU7osqi2NWD
# zQnYjYwzOmUNyNncLwYRza8WJfOu2PgeJKDV+gj31EbSu4sKnjBCLlMZKpG1cY1Z
# tR8rJI2hPJWK4P8opPrWvl2PxiHUAby6ewucsYV++ATpKzZTsoD/2h8DzJVvB0cb
# cdU=
# SIG # End signature block