Remove-GSheetSheetRowColumnV2.ps1

<#
    Stashing this work, could never really get it to work because google removed lines and re-indexed too fast. Also if the endIndex of one array was the same as the startIndex of another
    google's api would ignore it.
#>

#region Remove-GSheetSheetRowColumn
function Remove-GSheetSheetRowColumn
{
    <#
        .Synopsis
            Remove row(s) or column(s)
 
        .DESCRIPTION
            Remove row(s) or column(s)
 
        .PARAMETER accessToken
            access token used for authentication. Get from Get-GOAuthTokenUser or Get-GOAuthTokenService
 
        .PARAMETER indexes
            Array of Arrays containing Index of row or column to start deleting
         
            .PARAMETER startIndex
            Index of row or column to start deleting
 
        .PARAMETER endIndex
            Index of row or column to stop deleting
 
        .PARAMETER dimension
            Remove Rows or Columns
 
        .PARAMETER sheetName
            Name of sheet in spreadSheet
 
        .PARAMETER spreadSheetID
            ID for the target Spreadsheet. This is returned when a new sheet is created or use Get-GSheetSpreadSheetID
 
        .EXAMPLE Remove-GSheetSheetRowColumn -accessToken $accessToken -sheetName "Sheet1" -spreadSheetID $spreadSheetID -dimension ROWS -startIndex 5 -endIndex 10
         
    #>

    [CmdletBinding()]
    Param
    (
        [Parameter(Mandatory)]
        [string]$accessToken,
        
        [Parameter(Mandatory,ParameterSetName='Single')]
        [int]$startIndex,

        [Parameter(Mandatory,ParameterSetName='Single')]
        [int]$endIndex,

        [Parameter(Mandatory,ParameterSetName='Multiple')]
        [array]$indexes,

        [Parameter(Mandatory)]
        [ValidateSet("COLUMNS", "ROWS")]
        [string]$dimension,

        [Parameter(Mandatory)]
        [string]$sheetName,

        [Parameter(Mandatory)]
        [string]$spreadSheetID
    )

    Begin
    {
        $sheetID = Get-GSheetSheetID -accessToken $accessToken -spreadSheetID $spreadSheetID -sheetName $sheetName            
    }

    Process
    {
        [System.Collections.ArrayList]$requestArray = @()
        if ($indexes)
        {
            foreach ($index in $indexes)
            {
                if ($index[0] -eq $index[1]){$index[1]++}
                [void]$requestArray.add(@{"deleteDimension" = @{"range" = @{"sheetId" = $sheetID; "dimension" = $dimension; "startIndex" = $index[0]; "endIndex" = $index[1]}}})
            }
        }
        else
        {
            if ($startIndex -eq $endIndex){$endIndex++}
            [void]$requestArray.add(@{"deleteDimension" = @{"range" = @{"sheetId" = $sheetID; "dimension" = $dimension; "startIndex" = $startIndex; "endIndex" = $endIndex}}})
        }
        $json = @{requests=$requestArray} | ConvertTo-Json -Depth 20
        $suffix = "$spreadSheetID" + ":batchUpdate"
        $uri = "https://sheets.googleapis.com/v4/spreadsheets/$suffix"
        write-verbose -Message $json
        Invoke-RestMethod -Method Post -Uri $uri -Body $json -ContentType "application/json" -Headers @{"Authorization"="Bearer $accessToken"}
    }
    
    End{}
}
#endregion
# SIG # Begin signature block
# MIIlNQYJKoZIhvcNAQcCoIIlJjCCJSICAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUPjxqtPiQDa7Et7Q5ImNCtUop
# Fvmggh8eMIIFgTCCBGmgAwIBAgIQOXJEOvkit1HX02wQ3TE1lTANBgkqhkiG9w0B
# AQwFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVy
# MRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEh
# MB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTE5MDMxMjAwMDAw
# MFoXDTI4MTIzMTIzNTk1OVowgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcg
# SmVyc2V5MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJU
# UlVTVCBOZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRp
# b24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAgBJl
# FzYOw9sIs9CsVw127c0n00ytUINh4qogTQktZAnczomfzD2p7PbPwdzx07HWezco
# EStH2jnGvDoZtF+mvX2do2NCtnbyqTsrkfjib9DsFiCQCT7i6HTJGLSR1GJk23+j
# BvGIGGqQIjy8/hPwhxR79uQfjtTkUcYRZ0YIUcuGFFQ/vDP+fmyc/xadGL1RjjWm
# p2bIcmfbIWax1Jt4A8BQOujM8Ny8nkz+rwWWNR9XWrf/zvk9tyy29lTdyOcSOk2u
# TIq3XJq0tyA9yn8iNK5+O2hmAUTnAU5GU5szYPeUvlM3kHND8zLDU+/bqv50TmnH
# a4xgk97Exwzf4TKuzJM7UXiVZ4vuPVb+DNBpDxsP8yUmazNt925H+nND5X4OpWax
# KXwyhGNVicQNwZNUMBkTrNN9N6frXTpsNVzbQdcS2qlJC9/YgIoJk2KOtWbPJYjN
# hLixP6Q5D9kCnusSTJV882sFqV4Wg8y4Z+LoE53MW4LTTLPtW//e5XOsIzstAL81
# VXQJSdhJWBp/kjbmUZIO8yZ9HE0XvMnsQybQv0FfQKlERPSZ51eHnlAfV1SoPv10
# Yy+xUGUJ5lhCLkMaTLTwJUdZ+gQek9QmRkpQgbLevni3/GcV4clXhB4PY9bpYrrW
# X1Uu6lzGKAgEJTm4Diup8kyXHAc/DVL17e8vgg8CAwEAAaOB8jCB7zAfBgNVHSME
# GDAWgBSgEQojPpbxB+zirynvgqV/0DCktDAdBgNVHQ4EFgQUU3m/WqorSs9UgOHY
# m8Cd8rIDZsswDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0g
# BAowCDAGBgRVHSAAMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwuY29tb2Rv
# Y2EuY29tL0FBQUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDQGCCsGAQUFBwEBBCgw
# JjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMA0GCSqGSIb3
# DQEBDAUAA4IBAQAYh1HcdCE9nIrgJ7cz0C7M7PDmy14R3iJvm3WOnnL+5Nb+qh+c
# li3vA0p+rvSNb3I8QzvAP+u431yqqcau8vzY7qN7Q/aGNnwU4M309z/+3ri0ivCR
# lv79Q2R+/czSAaF9ffgZGclCKxO/WIu6pKJmBHaIkU4MiRTOok3JMrO66BQavHHx
# W/BBC5gACiIDEOUMsfnNkjcZ7Tvx5Dq2+UUTJnWvu6rvP3t3O9LEApE9GQDTF1w5
# 2z97GA1FzZOFli9d31kWTz9RvdVFGD/tSo7oBmF0Ixa1DVBzJ0RHfxBdiSprhTEU
# xOipakyAvGp4z7h/jnZymQyd/teRCBaho1+VMIIFrDCCBJSgAwIBAgIQck1eIBPV
# wpFAVfN8VIlUcTANBgkqhkiG9w0BAQsFADB8MQswCQYDVQQGEwJVUzELMAkGA1UE
# CBMCTUkxEjAQBgNVBAcTCUFubiBBcmJvcjESMBAGA1UEChMJSW50ZXJuZXQyMREw
# DwYDVQQLEwhJbkNvbW1vbjElMCMGA1UEAxMcSW5Db21tb24gUlNBIENvZGUgU2ln
# bmluZyBDQTAeFw0xNzEyMTQwMDAwMDBaFw0yMDEyMTMyMzU5NTlaMIHLMQswCQYD
# VQQGEwJVUzEOMAwGA1UEEQwFNTU0NTUxEjAQBgNVBAgMCU1pbm5lc290YTEUMBIG
# A1UEBwwLTWlubmVhcG9saXMxGDAWBgNVBAkMDzEwMCBVbmlvbiBTdCBTRTEgMB4G
# A1UECgwXVW5pdmVyc2l0eSBvZiBNaW5uZXNvdGExJDAiBgNVBAsMG0NvbXB1dGVy
# IGFuZCBEZXZpY2UgU3VwcG9ydDEgMB4GA1UEAwwXVW5pdmVyc2l0eSBvZiBNaW5u
# ZXNvdGEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDCTqQsT2761a/Q
# lSQglKfmlZ9rT2DpyoUu5wJeiY2P01iPy34l8+dreALose/c5ABQMc6gLkf7w3d5
# rupUZgiLA9EfNc4aob+1VqJTmzmEbe8GF9FfxbX/aDj+GmB5dTOvFif/ZzlI4YbL
# QxTVknJRIUR2yNccRXsdcriqYUZX1EnG2ItkfWpSV0KCXFyPvPDRCdR0bqgDGnBM
# J5WnTnv9ZduchHxrSA+x77L+d7Dn4IFQZMC+vDorYGslBWx0ghWf+r4FtxnGH0+l
# 5l9O2yLqWCS/LRtRa2XmxKl3vn6G/DhKXccBpZm2hY3ss+ZsNttVE7YCu/h2iHgK
# Gh3jAnnFAgMBAAGjggHYMIIB1DAfBgNVHSMEGDAWgBSuNSMX//8GPZxQ4IwkZTMe
# cBCIojAdBgNVHQ4EFgQUXgsSESVVS9Pyfm3E4lI0BzOihIAwDgYDVR0PAQH/BAQD
# AgeAMAwGA1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwMwEQYJYIZIAYb4
# QgEBBAQDAgQQMGYGA1UdIARfMF0wWwYMKwYBBAGuIwEEAwIBMEswSQYIKwYBBQUH
# AgEWPWh0dHBzOi8vd3d3LmluY29tbW9uLm9yZy9jZXJ0L3JlcG9zaXRvcnkvY3Bz
# X2NvZGVfc2lnbmluZy5wZGYwSQYDVR0fBEIwQDA+oDygOoY4aHR0cDovL2NybC5p
# bmNvbW1vbi1yc2Eub3JnL0luQ29tbW9uUlNBQ29kZVNpZ25pbmdDQS5jcmwwfgYI
# KwYBBQUHAQEEcjBwMEQGCCsGAQUFBzAChjhodHRwOi8vY3J0LmluY29tbW9uLXJz
# YS5vcmcvSW5Db21tb25SU0FDb2RlU2lnbmluZ0NBLmNydDAoBggrBgEFBQcwAYYc
# aHR0cDovL29jc3AuaW5jb21tb24tcnNhLm9yZzAZBgNVHREEEjAQgQ5vaXRtcHRA
# dW1uLmVkdTANBgkqhkiG9w0BAQsFAAOCAQEAQ1GV6wwqYFpnSDryW21gQy1o+LP4
# No2k6VcGzWAfrpqCEHVo/qKJElwVVqwYtRUWdx0bXFvDnTctOsFRzk8QIxUNUXso
# oJ8cDU54VX285bK91WBt7eloPLWyPgIAM7YPSCfFwaJmgWERmIGRO9KyPhLcZdkS
# +gUcnEkvDaS90ufPLSAf9v9v/JuXADV8pfDiWhxSkMzqpPAztKIqCRDlbv/bzQRi
# 7wEjpzyumImaozW1ktymzC5q8HTRPnZj5lmbPe0wxWAUef2kUWW1ivezdsR6Tsjq
# lTy6chJuLJDPGqEhQpoGLyHLwuChjlScaNfmMewi8g3Oaz4lfki3LTawvTCCBesw
# ggPToAMCAQICEGXh4uPV3lBFhfMmJIAF4tQwDQYJKoZIhvcNAQENBQAwgYgxCzAJ
# BgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQHEwtKZXJzZXkg
# Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMS4wLAYDVQQDEyVV
# U0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTE0MDkxOTAw
# MDAwMFoXDTI0MDkxODIzNTk1OVowfDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAk1J
# MRIwEAYDVQQHEwlBbm4gQXJib3IxEjAQBgNVBAoTCUludGVybmV0MjERMA8GA1UE
# CxMISW5Db21tb24xJTAjBgNVBAMTHEluQ29tbW9uIFJTQSBDb2RlIFNpZ25pbmcg
# Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDAoC+LHnq7anWs+D7c
# o7o5Isrzo3bkv30wJ+a605gyViNcBoaXDYDo7aKBNesL9l5+qT5oc/2d1Gd5zqrq
# aLcZ2xx2OlmHXV6Zx6GyuKmEcwzMq4dGHGrH7zklvqfd2iw1cDYdIi4gO93jHA4/
# NJ/lff5VgFsGfIJXhFXzOPvyDDapuV6yxYFHI30SgaDAASg+A/k4l6OtAvICaP3V
# Aav11VFNUNMXIkblcxjgOuQ3d1HInn1Sik+A3Ca5wEzK/FH6EAkRelcqc8TgISps
# wlS9HD6D+FupLPH623jP2YmabaP/Dac/fkxWI9YJvuGlHYsHxb/j31iq76SvgssF
# +AoJAgMBAAGjggFaMIIBVjAfBgNVHSMEGDAWgBRTeb9aqitKz1SA4dibwJ3ysgNm
# yzAdBgNVHQ4EFgQUrjUjF///Bj2cUOCMJGUzHnAQiKIwDgYDVR0PAQH/BAQDAgGG
# MBIGA1UdEwEB/wQIMAYBAf8CAQAwEwYDVR0lBAwwCgYIKwYBBQUHAwMwEQYDVR0g
# BAowCDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRy
# dXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2
# BggrBgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0
# LmNvbS9VU0VSVHJ1c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0
# cDovL29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0BAQ0FAAOCAgEARiy2f2pO
# JWa9nGqmqtCevQ+uTjX88DgnwcedBMmCNNuG4RP3wZaNMEQT0jXtefdXXJOmEldt
# q3mXwSZk38lcy8M2om2TI6HbqjACa+q4wIXWkqJBbK4MOWXFH0wQKnrEXjCcfUxy
# zhZ4s6tA/L4LmRYTmCD/srpz0bVU3AuSX+mj05E+WPEop4WE+D35OLcnMcjFbst3
# KWN99xxaK40VHnX8EkcBkipQPDcuyt1hbOCDjHTq2Ay84R/SchN6WkVPGpW8y0mG
# c59lul1dlDmjVOynF9MRU5ACynTkdQ0JfKHOeVUuvQlo2Qzt52CTn3OZ1NtIZ0yr
# xm267pXKuK86UxI9aZrLkyO/BPO42itvAG/QMv7tzJkGns1hmi74OgZ3WUVk3SNT
# kixAqCbf7TSmecnrtyt0XB/P/xurcyFOIo5YRvTgVPc5lWn6PO9oKEdYtDyBsI5G
# AKVpmrUfdqojsl5GRYQQSnpO/hYBWyv+LsuhdTvaA5vwIDM8WrAjgTFx2vGnQjg5
# dsQIeUOpTixMierCUzCh+bF47i73jX3qoiolCX7xLKSXTpWS2oy7HzgjDdlAsfTw
# nwton5YNTJxzg6NjrUjsUbEIORtJB/eeld5EWbQgGfwaJb5NEOTonZckUtYS1Vma
# FugWUEuhSWodQIq7RA6FT/4AQ6qdj3yPbNEwggbsMIIE1KADAgECAhAwD2+s3WaY
# dHypRjaneC25MA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UE
# CBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoTFVRo
# ZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBDZXJ0
# aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xOTA1MDIwMDAwMDBaFw0zODAxMTgyMzU5
# NTlaMH0xCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIx
# EDAOBgNVBAcTB1NhbGZvcmQxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDElMCMG
# A1UEAxMcU2VjdGlnbyBSU0EgVGltZSBTdGFtcGluZyBDQTCCAiIwDQYJKoZIhvcN
# AQEBBQADggIPADCCAgoCggIBAMgbAa/ZLH6ImX0BmD8gkL2cgCFUk7nPoD5T77Na
# wHbWGgSlzkeDtevEzEk0y/NFZbn5p2QWJgn71TJSeS7JY8ITm7aGPwEFkmZvIavV
# cRB5h/RGKs3EWsnb111JTXJWD9zJ41OYOioe/M5YSdO/8zm7uaQjQqzQFcN/nqJc
# 1zjxFrJw06PE37PFcqwuCnf8DZRSt/wflXMkPQEovA8NT7ORAY5unSd1VdEXOzQh
# e5cBlK9/gM/REQpXhMl/VuC9RpyCvpSdv7QgsGB+uE31DT/b0OqFjIpWcdEtlEzI
# jDzTFKKcvSb/01Mgx2Bpm1gKVPQF5/0xrPnIhRfHuCkZpCkvRuPd25Ffnz82Pg4w
# ZytGtzWvlr7aTGDMqLufDRTUGMQwmHSCIc9iVrUhcxIe/arKCFiHd6QV6xlV/9A5
# VC0m7kUaOm/N14Tw1/AoxU9kgwLU++Le8bwCKPRt2ieKBtKWh97oaw7wW33pdmmT
# IBxKlyx3GSuTlZicl57rjsF4VsZEJd8GEpoGLZ8DXv2DolNnyrH6jaFkyYiSWcuo
# RsDJ8qb/fVfbEnb6ikEk1Bv8cqUUotStQxykSYtBORQDHin6G6UirqXDTYLQjdpr
# t9v3GEBXc/Bxo/tKfUU2wfeNgvq5yQ1TgH36tjlYMu9vGFCJ10+dM70atZ2h3pVB
# eqeDAgMBAAGjggFaMIIBVjAfBgNVHSMEGDAWgBRTeb9aqitKz1SA4dibwJ3ysgNm
# yzAdBgNVHQ4EFgQUGqH4YRkgD8NBd0UojtE1XwYSBFUwDgYDVR0PAQH/BAQDAgGG
# MBIGA1UdEwEB/wQIMAYBAf8CAQAwEwYDVR0lBAwwCgYIKwYBBQUHAwgwEQYDVR0g
# BAowCDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRy
# dXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2
# BggrBgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0
# LmNvbS9VU0VSVHJ1c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0
# cDovL29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAbVSBpTNd
# FuG1U4GRdd8DejILLSWEEbKw2yp9KgX1vDsn9FqguUlZkClsYcu1UNviffmfAO9A
# w63T4uRW+VhBz/FC5RB9/7B0H4/GXAn5M17qoBwmWFzztBEP1dXD4rzVWHi/SHbh
# RGdtj7BDEA+N5Pk4Yr8TAcWFo0zFzLJTMJWk1vSWVgi4zVx/AZa+clJqO0I3fBZ4
# OZOTlJux3LJtQW1nzclvkD1/RXLBGyPWwlWEZuSzxWYG9vPWS16toytCiiGS/qhv
# WiVwYoFzY16gu9jc10rTPa+DBjgSHSSHLeT8AtY+dwS8BDa153fLnC6NIxi5o8JH
# HfBd1qFzVwVomqfJN2Udvuq82EKDQwWli6YJ/9GhlKZOqj0J9QVst9JkWtgqIsJL
# nfE5XkzeSD2bNJaaCV+O/fexUpHOP4n2HKG1qXUfcb9bQ11lPVCBbqvw0NP8srMf
# tpmWJvQ8eYtcZMzN7iea5aDADHKHwW5NWtMe6vBE5jJvHOsXTpTDeGUgOw9Bqh/p
# oUGd/rG4oGUqNODeqPk85sEwu8CgYyz8XBYAqNDEf+oRnR4GxqZtMl20OAkrSQeq
# /eww2vGnL8+3/frQo4TZJ577AWZ3uVYQ4SBuxq6x+ba6yDVdM3aO8XwgDCp3rrWi
# Aoa6Ke60WgCxjKvj+QrJVF3UuWp0nr1IrpgwggcGMIIE7qADAgECAhA9GjVyMBWC
# YzDQE3F+gkEIMA0GCSqGSIb3DQEBDAUAMH0xCzAJBgNVBAYTAkdCMRswGQYDVQQI
# ExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGDAWBgNVBAoT
# D1NlY3RpZ28gTGltaXRlZDElMCMGA1UEAxMcU2VjdGlnbyBSU0EgVGltZSBTdGFt
# cGluZyBDQTAeFw0xOTA1MDIwMDAwMDBaFw0zMDA4MDEyMzU5NTlaMIGEMQswCQYD
# VQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdT
# YWxmb3JkMRgwFgYDVQQKDA9TZWN0aWdvIExpbWl0ZWQxLDAqBgNVBAMMI1NlY3Rp
# Z28gUlNBIFRpbWUgU3RhbXBpbmcgU2lnbmVyICMxMIICIjANBgkqhkiG9w0BAQEF
# AAOCAg8AMIICCgKCAgEAy1FQ/1b+/HhjcAGTWp4Y9DtT9gevIWz1og99HXAthHRI
# i5yKlQU9WYT5kYB5USzZirfBC5q6CorNZk8DiwG7MMqrvdvATxJe/ArM4kWwATiK
# u03n1BxUmO05WM9bwi9FmDEK+TU4uDEubbQeOXLhuCq+n4yMGqVGrgsrTJn+LEv8
# KLkiOmYX0KpWiiHA85YktNCFJmu68G9kmHmmrb1c2FNrKwrWcoqFRuMNGAbaxntB
# VjabFT7xahGg92b1GNCAVWOHaGbrDnlVglyj7Um4cYaekzewa6PqYmyjrpbouf2L
# q8b2WVsAPFcgGC1wA6ec75LreaHHXex8tI9L3+td/KMg3ZI45WpROmuFnEygmAhp
# WwbnKhnQlZOLO2uKBQkp2Nba2+Ny+lxKL3sVVoYyv38FCZ0tKs9Q4eZhINvHBoBc
# ThRGvq5XcaKqbDCTHH53ywbpV82R9dUzchzh2spu6/MP7Hlbuyee6B7+L/K7f+nl
# 0GfruA18pCtZA4uV7SIozfosO8cWEa/j1rFQZ2nFjvV50K3/h8z4f6r5ou1h+MiN
# adqx9FGR62dX0WQR62TLA71JVTpFQxgsJWzRLwwtb/VBNSSg8mNZFl/ZpOksTtu7
# MRLGbfhbbgPcyxWPG41y7NsPFZDWEk7u4gAxJZM1b2pbpRJjQAGKuWmIOoi4DxkC
# AwEAAaOCAXgwggF0MB8GA1UdIwQYMBaAFBqh+GEZIA/DQXdFKI7RNV8GEgRVMB0G
# A1UdDgQWBBRvTYYH2DInniwp0tATA4CB3QWDKTAOBgNVHQ8BAf8EBAMCBsAwDAYD
# VR0TAQH/BAIwADAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDBABgNVHSAEOTA3MDUG
# DCsGAQQBsjEBAgEDCDAlMCMGCCsGAQUFBwIBFhdodHRwczovL3NlY3RpZ28uY29t
# L0NQUzBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vY3JsLnNlY3RpZ28uY29tL1Nl
# Y3RpZ29SU0FUaW1lU3RhbXBpbmdDQS5jcmwwdAYIKwYBBQUHAQEEaDBmMD8GCCsG
# AQUFBzAChjNodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3RpZ29SU0FUaW1lU3Rh
# bXBpbmdDQS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLnNlY3RpZ28uY29t
# MA0GCSqGSIb3DQEBDAUAA4ICAQDAaO2z2NRQm+/TdcsPO/ck03o3RY0s7xb7Uaks
# H7UltYqfXQvCGyB0jWYPNsuq9jYND36PS0p0Q2WsDSr2Cu1rbcUJOO0AG/jl3KYK
# QAVH74TKCbxDZoO/n+3bjj3RQWSxcAItA1dbGG8cLMsesgDougkvW4EENbmpY22O
# CMUY0eEhrPkSChTAEtt+JZ2sHRDAWqWD0h8aZlX8myri7DdXjuXfljD4wJMLQxj5
# Am+pUa+4VwrzHAdpOY83nG3Xka6lLknpSt6z0Iy/OZANwIHO8CoHOgymLVHScvNT
# xvm97+8MaUl3nyxWxOmhCD0HrsUe1oQix7x9QxtYOGJO0QUlhMVC+B8v9tv6q4xU
# 7EWKbBJNMFpS5aQXCSLm72/1X4ZD36EtvUpGkqCBlixhl39Ab9g/jDVaq9HGoDuF
# ZlSA7x8a9fGbsKEnfbLnC8/2LZxYE5SphvxFUqIobX90D1KRSXrpEvipO7CS/X2R
# FOlbbUiU8siW7gU4s8XsMD/hByAEsdiLvP2zPm/yAlMG9KDtyZpyo5dfAPvLY9Do
# zXT9dcnUNkW6exJZcu3n8npQAHj4Q5pG2N+/VNRescfRvBuD9CvnC+hHyFOezBqs
# 9vqKdVNsIIWp1bhquiSOiisIkZ83BBz2b6LdNKqR/8YVLh5CGgkpT/TGzeKRotNA
# DI544zGCBYEwggV9AgEBMIGQMHwxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJNSTES
# MBAGA1UEBxMJQW5uIEFyYm9yMRIwEAYDVQQKEwlJbnRlcm5ldDIxETAPBgNVBAsT
# CEluQ29tbW9uMSUwIwYDVQQDExxJbkNvbW1vbiBSU0EgQ29kZSBTaWduaW5nIENB
# AhByTV4gE9XCkUBV83xUiVRxMAkGBSsOAwIaBQCgeDAYBgorBgEEAYI3AgEMMQow
# CKACgAChAoAAMBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcC
# AQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBQvZvTxjpd9YVcJgbNk
# KSq2AsiffDANBgkqhkiG9w0BAQEFAASCAQC3p4ciuwtt3usuVXSxi/J+J3FEa38S
# qioyqOLA2tG2V2OiAde3K7lf1ZeHqGDfDf9cHEnrZzMt2iXQ+jfMbh+gjyU/uivo
# C5yHmg4CRF4FXtMySJIFocXxfQpONCVVJImvZJrdBHFf02/lU59GVhn8bOQilAGl
# EdTj54RmjZBARKJE+mPRGCyqOopp1eRoo9BKyzDYhYUFBbVXMGCdn9IJEKTycHtb
# QW6OomM7BHMu/CorPAMCyEEBvsGYnH5xnVxUAshe1QKsFIU/AMp2VA5DoRSQCRFr
# sGeNSxxgEZIpVUv95qeDfrhTPvf30oyM6rEQpt3BGLOrtHLFS2h9PKCEoYIDSzCC
# A0cGCSqGSIb3DQEJBjGCAzgwggM0AgEBMIGRMH0xCzAJBgNVBAYTAkdCMRswGQYD
# VQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGDAWBgNV
# BAoTD1NlY3RpZ28gTGltaXRlZDElMCMGA1UEAxMcU2VjdGlnbyBSU0EgVGltZSBT
# dGFtcGluZyBDQQIQPRo1cjAVgmMw0BNxfoJBCDANBglghkgBZQMEAgIFAKB5MBgG
# CSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIwMDczMTE2
# MjAyOVowPwYJKoZIhvcNAQkEMTIEMHRO/QZq0zGJxH6Pg+iKrOhgU2jG74ArGD2o
# 41Ac3CXL3enBQnbYU8jEqEoKgMRafDANBgkqhkiG9w0BAQEFAASCAgCx/Wtq6L2k
# CiI2Dm+Gl4D5WZcJGNEtB8UE2clMrJ1tXvptxJn1X78pSSpg9AZzEDjGRggv9zOv
# /m9tOzoUxFkKnoLHaQyaOV1nZ7ott5/cqYx+vFWa9pZJN4XFwPA34TVF3v2DpoVA
# 8OY6HoJ+po54X6K3Ckwchb6u/vtVRCEfrmVcdANZRx33kpaVPoMXvN+ZPnzP2FQI
# GmUguM0ykZoeACKi/Me3u5772Cxxpki59vFaTQjVqKhLpl3bU+DLR1ISUX6zsJ6H
# /ZMT+Z2aBaSmFIp4X+L235fMMHmRVM+rCiADuTImnlbyJxaX7uzpYIduFh7jxaB1
# x6Mhs3Gy0FXzdyRpk8l3CEsGGdxPDITGLuTMRGdnaklH+kb274tBaiL5Lm4xyq+0
# fRs1Ee/J0lRgkDVPg65MzI7XK5HaB7g6HY6NP5kDG+MaqdVCjyWSa+WKAWAdUc52
# 7eKRQy0/mOCnp2igDmbmflOTvpfPyfpvsZtTuqOJPIjiCAqFqrDeZz0fXZAvfqYV
# J5j2w2Bbv0KXmLZK8POfjR7nllfNQ5UrZWeI69VGTkElAJ6AICRN0tLtf2d4z51g
# fIqlu04zVvWITmklWMSX/Kzu+7VFjuHcfkHmdYpMbhLtA/5ukO5WQTGgkxbNbT2O
# TYOlXu17aP5s9lWt3TALsI/nGpB4xLMuYw==
# SIG # End signature block