public/GetExternalItemPermissions.ps1

function Write-PermissionBatchToOutputFile {
    param (
        [Parameter(Mandatory = $true)]
        [PSObject]
        $PermissionBatch,

        [Parameter(Mandatory = $true)]
        [string]
        $FileName,

        [Parameter(Mandatory = $true)]
        [string]
        $PageNumber
    )

    try {
        # Append JSON content to the output file
        $PermissionBatch | ConvertTo-Json -Depth 10 | Add-Content -Path $FileName
    } catch {
        Write-Error "Failed to write permission batch for page number $PageNumber to output file. Error: $_"
    }
}

function Get-ExternalItemPermissions {
    param(
        # Connection Id
        [Parameter(Mandatory = $true)]
        [string]
        $ConnectionId,

        # Page Id
        [Parameter(Mandatory = $true)]
        [string]
        $PageId,

        # Output File Location for logging
        [Parameter(Mandatory = $false)]
        [string]
        $OutputFile,

        # Tenant Id
        [Parameter(Mandatory = $false)]
        [string]
        $TenantId,

        # Torus Check
        [Parameter(Mandatory = $false)]
        [switch]
        $Torus
    )

    try {
        $CommandType = "Get-ExternalItemPermissions"

        # Get the item ID from the Page ID
        $ItemId = Get-ItemId -InputString $PageId

        Write-Host "Item id calculated is $ItemId"

        # Start logging and initialize output file
        $OutputFile = Start-TranscriptLog -CommandType $CommandType -OutputFile $OutputFile -ConnectionId $ConnectionId
        $OutputFile = "$OutputFile.json"

        # Get OAuth token
        $TokenInfoObj = GetOAuthToken -TenantId $TenantId -Torus:$Torus
        $Token = $TokenInfoObj.Token

        $PageNumber = 1
        $HasData = $true

        while ($HasData) {
            try {
                # Construct URL path
                $UrlPath = "/v1.0/admin/item/connections/$ConnectionId/items/$ItemId/acls?page=$PageNumber&pageSize=45"

                # Call API to get permissions
                $ItemPermissionBatchResponse = Call-Url -CommandType $CommandType -Token $Token -Method "Get" -UrlPath $UrlPath -TenantId $TokenInfoObj.TenantId | ConvertFrom-Json

                if (-not $ItemPermissionBatchResponse) {
                    Write-Host "No more permissions found. Exiting loop."
                    $HasData = $false
                    break
                }

                Write-Host "Processing permissions batch for page $PageNumber."

                # Write permissions to output file
                Write-PermissionBatchToOutputFile -PermissionBatch $ItemPermissionBatchResponse -FileName $OutputFile -PageNumber $PageNumber

                # Increment page number
                $PageNumber++
            } catch {
                Write-Error "Error while fetching permissions for page $PageNumber. Error: $_"
                $HasData = $false
            }
        }
    } catch {
        Write-Error "Error occurred during execution of Get-ExternalItemPermissions. Error: $_"
    } finally {
        Stop-Transcript
    }
}

# SIG # Begin signature block
# MIIoYQYJKoZIhvcNAQcCoIIoUjCCKE4CAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCD9iCbJVpNyCR1b
# 4WxPu2jWfP4wTH62KnthgG719P8e+qCCDXYwggX0MIID3KADAgECAhMzAAAEBGx0
# Bv9XKydyAAAAAAQEMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD
# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p
# bmcgUENBIDIwMTEwHhcNMjQwOTEyMjAxMTE0WhcNMjUwOTExMjAxMTE0WjB0MQsw
# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u
# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
# AQC0KDfaY50MDqsEGdlIzDHBd6CqIMRQWW9Af1LHDDTuFjfDsvna0nEuDSYJmNyz
# NB10jpbg0lhvkT1AzfX2TLITSXwS8D+mBzGCWMM/wTpciWBV/pbjSazbzoKvRrNo
# DV/u9omOM2Eawyo5JJJdNkM2d8qzkQ0bRuRd4HarmGunSouyb9NY7egWN5E5lUc3
# a2AROzAdHdYpObpCOdeAY2P5XqtJkk79aROpzw16wCjdSn8qMzCBzR7rvH2WVkvF
# HLIxZQET1yhPb6lRmpgBQNnzidHV2Ocxjc8wNiIDzgbDkmlx54QPfw7RwQi8p1fy
# 4byhBrTjv568x8NGv3gwb0RbAgMBAAGjggFzMIIBbzAfBgNVHSUEGDAWBgorBgEE
# AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQU8huhNbETDU+ZWllL4DNMPCijEU4w
# RQYDVR0RBD4wPKQ6MDgxHjAcBgNVBAsTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEW
# MBQGA1UEBRMNMjMwMDEyKzUwMjkyMzAfBgNVHSMEGDAWgBRIbmTlUAXTgqoXNzci
# tW2oynUClTBUBgNVHR8ETTBLMEmgR6BFhkNodHRwOi8vd3d3Lm1pY3Jvc29mdC5j
# b20vcGtpb3BzL2NybC9NaWNDb2RTaWdQQ0EyMDExXzIwMTEtMDctMDguY3JsMGEG
# CCsGAQUFBwEBBFUwUzBRBggrBgEFBQcwAoZFaHR0cDovL3d3dy5taWNyb3NvZnQu
# Y29tL3BraW9wcy9jZXJ0cy9NaWNDb2RTaWdQQ0EyMDExXzIwMTEtMDctMDguY3J0
# MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQELBQADggIBAIjmD9IpQVvfB1QehvpC
# Ge7QeTQkKQ7j3bmDMjwSqFL4ri6ae9IFTdpywn5smmtSIyKYDn3/nHtaEn0X1NBj
# L5oP0BjAy1sqxD+uy35B+V8wv5GrxhMDJP8l2QjLtH/UglSTIhLqyt8bUAqVfyfp
# h4COMRvwwjTvChtCnUXXACuCXYHWalOoc0OU2oGN+mPJIJJxaNQc1sjBsMbGIWv3
# cmgSHkCEmrMv7yaidpePt6V+yPMik+eXw3IfZ5eNOiNgL1rZzgSJfTnvUqiaEQ0X
# dG1HbkDv9fv6CTq6m4Ty3IzLiwGSXYxRIXTxT4TYs5VxHy2uFjFXWVSL0J2ARTYL
# E4Oyl1wXDF1PX4bxg1yDMfKPHcE1Ijic5lx1KdK1SkaEJdto4hd++05J9Bf9TAmi
# u6EK6C9Oe5vRadroJCK26uCUI4zIjL/qG7mswW+qT0CW0gnR9JHkXCWNbo8ccMk1
# sJatmRoSAifbgzaYbUz8+lv+IXy5GFuAmLnNbGjacB3IMGpa+lbFgih57/fIhamq
# 5VhxgaEmn/UjWyr+cPiAFWuTVIpfsOjbEAww75wURNM1Imp9NJKye1O24EspEHmb
# DmqCUcq7NqkOKIG4PVm3hDDED/WQpzJDkvu4FrIbvyTGVU01vKsg4UfcdiZ0fQ+/
# V0hf8yrtq9CkB8iIuk5bBxuPMIIHejCCBWKgAwIBAgIKYQ6Q0gAAAAAAAzANBgkq
# hkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x
# EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv
# bjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
# IDIwMTEwHhcNMTEwNzA4MjA1OTA5WhcNMjYwNzA4MjEwOTA5WjB+MQswCQYDVQQG
# EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG
# A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQg
# Q29kZSBTaWduaW5nIFBDQSAyMDExMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
# CgKCAgEAq/D6chAcLq3YbqqCEE00uvK2WCGfQhsqa+laUKq4BjgaBEm6f8MMHt03
# a8YS2AvwOMKZBrDIOdUBFDFC04kNeWSHfpRgJGyvnkmc6Whe0t+bU7IKLMOv2akr
# rnoJr9eWWcpgGgXpZnboMlImEi/nqwhQz7NEt13YxC4Ddato88tt8zpcoRb0Rrrg
# OGSsbmQ1eKagYw8t00CT+OPeBw3VXHmlSSnnDb6gE3e+lD3v++MrWhAfTVYoonpy
# 4BI6t0le2O3tQ5GD2Xuye4Yb2T6xjF3oiU+EGvKhL1nkkDstrjNYxbc+/jLTswM9
# sbKvkjh+0p2ALPVOVpEhNSXDOW5kf1O6nA+tGSOEy/S6A4aN91/w0FK/jJSHvMAh
# dCVfGCi2zCcoOCWYOUo2z3yxkq4cI6epZuxhH2rhKEmdX4jiJV3TIUs+UsS1Vz8k
# A/DRelsv1SPjcF0PUUZ3s/gA4bysAoJf28AVs70b1FVL5zmhD+kjSbwYuER8ReTB
# w3J64HLnJN+/RpnF78IcV9uDjexNSTCnq47f7Fufr/zdsGbiwZeBe+3W7UvnSSmn
# Eyimp31ngOaKYnhfsi+E11ecXL93KCjx7W3DKI8sj0A3T8HhhUSJxAlMxdSlQy90
# lfdu+HggWCwTXWCVmj5PM4TasIgX3p5O9JawvEagbJjS4NaIjAsCAwEAAaOCAe0w
# ggHpMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBRIbmTlUAXTgqoXNzcitW2o
# ynUClTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYwDwYD
# VR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBRyLToCMZBDuRQFTuHqp8cx0SOJNDBa
# BgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2Ny
# bC9wcm9kdWN0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFfMDNfMjIuY3JsMF4GCCsG
# AQUFBwEBBFIwUDBOBggrBgEFBQcwAoZCaHR0cDovL3d3dy5taWNyb3NvZnQuY29t
# L3BraS9jZXJ0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFfMDNfMjIuY3J0MIGfBgNV
# HSAEgZcwgZQwgZEGCSsGAQQBgjcuAzCBgzA/BggrBgEFBQcCARYzaHR0cDovL3d3
# dy5taWNyb3NvZnQuY29tL3BraW9wcy9kb2NzL3ByaW1hcnljcHMuaHRtMEAGCCsG
# AQUFBwICMDQeMiAdAEwAZQBnAGEAbABfAHAAbwBsAGkAYwB5AF8AcwB0AGEAdABl
# AG0AZQBuAHQALiAdMA0GCSqGSIb3DQEBCwUAA4ICAQBn8oalmOBUeRou09h0ZyKb
# C5YR4WOSmUKWfdJ5DJDBZV8uLD74w3LRbYP+vj/oCso7v0epo/Np22O/IjWll11l
# hJB9i0ZQVdgMknzSGksc8zxCi1LQsP1r4z4HLimb5j0bpdS1HXeUOeLpZMlEPXh6
# I/MTfaaQdION9MsmAkYqwooQu6SpBQyb7Wj6aC6VoCo/KmtYSWMfCWluWpiW5IP0
# wI/zRive/DvQvTXvbiWu5a8n7dDd8w6vmSiXmE0OPQvyCInWH8MyGOLwxS3OW560
# STkKxgrCxq2u5bLZ2xWIUUVYODJxJxp/sfQn+N4sOiBpmLJZiWhub6e3dMNABQam
# ASooPoI/E01mC8CzTfXhj38cbxV9Rad25UAqZaPDXVJihsMdYzaXht/a8/jyFqGa
# J+HNpZfQ7l1jQeNbB5yHPgZ3BtEGsXUfFL5hYbXw3MYbBL7fQccOKO7eZS/sl/ah
# XJbYANahRr1Z85elCUtIEJmAH9AAKcWxm6U/RXceNcbSoqKfenoi+kiVH6v7RyOA
# 9Z74v2u3S5fi63V4GuzqN5l5GEv/1rMjaHXmr/r8i+sLgOppO6/8MO0ETI7f33Vt
# Y5E90Z1WTk+/gFcioXgRMiF670EKsT/7qMykXcGhiJtXcVZOSEXAQsmbdlsKgEhr
# /Xmfwb1tbWrJUnMTDXpQzTGCGkEwgho9AgEBMIGVMH4xCzAJBgNVBAYTAlVTMRMw
# EQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVN
# aWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNp
# Z25pbmcgUENBIDIwMTECEzMAAAQEbHQG/1crJ3IAAAAABAQwDQYJYIZIAWUDBAIB
# BQCggeYwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEO
# MAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIBWsEeFv6Gojmi0YKxiIk0cX
# RJU1/1RLP60MKoks5EYhMHoGCisGAQQBgjcCAQwxbDBqoEyASgBNAGkAYwByAG8A
# cwBvAGYAdAAuAEcAcgBhAHAAaAAuAEMAbwBuAG4AZQBjAHQAbwByAHMALgBDAG0A
# ZABsAGUAdAAuAGQAbABsoRqAGGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbTANBgkq
# hkiG9w0BAQEFAASCAQAD1BevzlDGXu6pJSrOMIIUAs6q/cXOJHcW8j6yy2pSavqa
# t9D2E7UkLtyOO3ltElxeBSbmRHQNa0m2oDQe+4mCTkr60IB3skUhtt+UQoSl3aG/
# 2Nv3Qrkt5d5iNXzmOZJQxYTbieDuqtK4Rw8tLtuArI9yvZ00/p2C3CLLhmuSadNK
# LGDCmplQ913vni79eS0izoTHAsPh6JcuKERbxINkaMP3jcWv08QylmsxxToJ96Kl
# Ae8WnQkyE3Twfecks7HH6dePITTxRGiZ2PXG89kZN+pJYMQOhNFYp/cIia+Dkha9
# L2scumDOQClHkWOrfBcMuQqmQsiTW+fZMtA6W5AMoYIXkzCCF48GCisGAQQBgjcD
# AwExghd/MIIXewYJKoZIhvcNAQcCoIIXbDCCF2gCAQMxDzANBglghkgBZQMEAgEF
# ADCCAVEGCyqGSIb3DQEJEAEEoIIBQASCATwwggE4AgEBBgorBgEEAYRZCgMBMDEw
# DQYJYIZIAWUDBAIBBQAEIL6odqLXvsuxelcxzab+kWvarjHbkNRmJ6Efx6zjS1As
# AgZoS0FYdfMYEjIwMjUwNzA3MTIzMjIwLjAxWjAEgAIB9KCB0aSBzjCByzELMAkG
# A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx
# HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjElMCMGA1UECxMcTWljcm9z
# b2Z0IEFtZXJpY2EgT3BlcmF0aW9uczEnMCUGA1UECxMeblNoaWVsZCBUU1MgRVNO
# OkYwMDItMDVFMC1EOTQ3MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBT
# ZXJ2aWNloIIR6jCCByAwggUIoAMCAQICEzMAAAIFPHVsgkSHzf4AAQAAAgUwDQYJ
# KoZIhvcNAQELBQAwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24x
# EDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv
# bjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwHhcNMjUw
# MTMwMTk0MjQ5WhcNMjYwNDIyMTk0MjQ5WjCByzELMAkGA1UEBhMCVVMxEzARBgNV
# BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jv
# c29mdCBDb3Jwb3JhdGlvbjElMCMGA1UECxMcTWljcm9zb2Z0IEFtZXJpY2EgT3Bl
# cmF0aW9uczEnMCUGA1UECxMeblNoaWVsZCBUU1MgRVNOOkYwMDItMDVFMC1EOTQ3
# MSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFtcCBTZXJ2aWNlMIICIjANBgkq
# hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAkpLy33e4Bda9sBncvOQhWFx1AvMsBMg+
# C0S79FmBF3nmdLuWLiu6dnF1c0JmTzh0zfE1qhtkj5VG/uz5XcxQwwJUd71PKYjo
# 5obvax1uNzNnW6K/Y5fYJboc8FHdknIlRmu3/beu7TNyhSkUjFxbRyhdysAQe2la
# Pm9asuafQ1paNjeRRqwahzBFZTcs63h2KAyy/pvH0rKjLv4mFKscyuReEuyGOTXp
# gAfAfgN0IMFSIuuCiSH3imVHoligk3+KHVID9wEIpcYePD+s+wE+CANHTBLSoWCx
# bOFvyjQzLGK+yqUDylQnAuRPLgx3SnsLm8s3p5E8cuH39Td4PMoaOT4vQX40dFcr
# a5JqQ33qfCT8HG+ATTiFzqNaX3R2fBL50eyRWRUIqqTGRZTuQgLk2B/Lo3OT1B5W
# jACfDRGvUxSUzkgawez0YHof+jSdsbvcsT4f5FTfQRrLPdzAulI6aMXjOMe9G8G8
# IivEjRyDvA/HKpe1Unr1GG4zeDaIBRcIQQpYaHRP83hj6usuosQ+M+uSB2N88BUG
# wVV/8Pi/1RzZ/wTBrNjxh55UYzvypPDSKTeLIZBUKgNXzNPH66w0jRGPVSg7abFK
# QBedWNaEOrSYVjNXd53gl4em/+jfl3hzkQsJ2PNyvqRTDIYPIrF0G+ikZeuZIPF2
# AXeCcJGyqFUCAwEAAaOCAUkwggFFMB0GA1UdDgQWBBR0elq7Nu2+vsid2xGfaOTX
# S9Wy8DAfBgNVHSMEGDAWgBSfpxVdAF5iXYP05dJlpxtTNRnpcjBfBgNVHR8EWDBW
# MFSgUqBQhk5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NybC9NaWNy
# b3NvZnQlMjBUaW1lLVN0YW1wJTIwUENBJTIwMjAxMCgxKS5jcmwwbAYIKwYBBQUH
# AQEEYDBeMFwGCCsGAQUFBzAChlBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtp
# b3BzL2NlcnRzL01pY3Jvc29mdCUyMFRpbWUtU3RhbXAlMjBQQ0ElMjAyMDEwKDEp
# LmNydDAMBgNVHRMBAf8EAjAAMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMA4GA1Ud
# DwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEADrsZOO29Yu+VfNU8esaNdMTS
# K+M2cWFX5BeUxatpJ3Tx4M1ci57LMPxypBGUQoGVaZChCemOI7xubboDIvlo7e4V
# DEoqZPkaQeYBUL4dcZgBC9n5XoM01hLJ49MKxEqZSOWd74H9nhlwK/0XKho0qaLh
# 2w9h2PWNxdDpehUQwlfxxBikR859jOa0KRRko2nE+A5KlWJnpvwKzn0r1aI5yhCF
# vdeFMRrboSUq/YzqOUak1+xiKm7bze84VpXfot18XYXTXH5UM/WIaBakHsQXp6CE
# YADwLcB+vMXM6/SzAt5fQCxKZ7LztEYij1xeJdtvzn3BX32qYZ5f0w8JIiX8TsgD
# H1Bd8SPft4s09Vl9ghbNkWjgKt3XKIcicPsURtBPMJAh6pFeewW1ARMy1/C/ZRid
# Q6MWDaaA1+4kMyfUHZMqYuX7++9xNwofAPraMXhaehYn0GcgnPCHCAZR8mpOjG0+
# mE1UDYEP4fBRfkuTqj+whAhbyB9irdj9BpTrvQtAX2rIZ046HZrWRWbKbVL4q5P9
# hziy4wYjIw8CbEABQMybs+GbU8qK67xEddBpf5m5lYh6obzQAn08z4i34w4Mr6fb
# O/2x7vwmpSpnoiVCxo4f5cAI+d9faYILBiam4SeBWxXPqFOc3325v6yo1WfJMTQ9
# 4ptdEKeNZ9rf6qcj+hEwggdxMIIFWaADAgECAhMzAAAAFcXna54Cm0mZAAAAAAAV
# MA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGlu
# Z3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv
# cmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRo
# b3JpdHkgMjAxMDAeFw0yMTA5MzAxODIyMjVaFw0zMDA5MzAxODMyMjVaMHwxCzAJ
# BgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k
# MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jv
# c29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
# MIICCgKCAgEA5OGmTOe0ciELeaLL1yR5vQ7VgtP97pwHB9KpbE51yMo1V/YBf2xK
# 4OK9uT4XYDP/XE/HZveVU3Fa4n5KWv64NmeFRiMMtY0Tz3cywBAY6GB9alKDRLem
# jkZrBxTzxXb1hlDcwUTIcVxRMTegCjhuje3XD9gmU3w5YQJ6xKr9cmmvHaus9ja+
# NSZk2pg7uhp7M62AW36MEBydUv626GIl3GoPz130/o5Tz9bshVZN7928jaTjkY+y
# OSxRnOlwaQ3KNi1wjjHINSi947SHJMPgyY9+tVSP3PoFVZhtaDuaRr3tpK56KTes
# y+uDRedGbsoy1cCGMFxPLOJiss254o2I5JasAUq7vnGpF1tnYN74kpEeHT39IM9z
# fUGaRnXNxF803RKJ1v2lIH1+/NmeRd+2ci/bfV+AutuqfjbsNkz2K26oElHovwUD
# o9Fzpk03dJQcNIIP8BDyt0cY7afomXw/TNuvXsLz1dhzPUNOwTM5TI4CvEJoLhDq
# hFFG4tG9ahhaYQFzymeiXtcodgLiMxhy16cg8ML6EgrXY28MyTZki1ugpoMhXV8w
# dJGUlNi5UPkLiWHzNgY1GIRH29wb0f2y1BzFa/ZcUlFdEtsluq9QBXpsxREdcu+N
# +VLEhReTwDwV2xo3xwgVGD94q0W29R6HXtqPnhZyacaue7e3PmriLq0CAwEAAaOC
# Ad0wggHZMBIGCSsGAQQBgjcVAQQFAgMBAAEwIwYJKwYBBAGCNxUCBBYEFCqnUv5k
# xJq+gpE8RjUpzxD/LwTuMB0GA1UdDgQWBBSfpxVdAF5iXYP05dJlpxtTNRnpcjBc
# BgNVHSAEVTBTMFEGDCsGAQQBgjdMg30BATBBMD8GCCsGAQUFBwIBFjNodHRwOi8v
# d3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL0RvY3MvUmVwb3NpdG9yeS5odG0wEwYD
# VR0lBAwwCgYIKwYBBQUHAwgwGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwCwYD
# VR0PBAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU1fZWy4/oolxi
# aNE9lJBb186aGMQwVgYDVR0fBE8wTTBLoEmgR4ZFaHR0cDovL2NybC5taWNyb3Nv
# ZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMu
# Y3JsMFoGCCsGAQUFBwEBBE4wTDBKBggrBgEFBQcwAoY+aHR0cDovL3d3dy5taWNy
# b3NvZnQuY29tL3BraS9jZXJ0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcnQw
# DQYJKoZIhvcNAQELBQADggIBAJ1VffwqreEsH2cBMSRb4Z5yS/ypb+pcFLY+Tkdk
# eLEGk5c9MTO1OdfCcTY/2mRsfNB1OW27DzHkwo/7bNGhlBgi7ulmZzpTTd2YurYe
# eNg2LpypglYAA7AFvonoaeC6Ce5732pvvinLbtg/SHUB2RjebYIM9W0jVOR4U3Uk
# V7ndn/OOPcbzaN9l9qRWqveVtihVJ9AkvUCgvxm2EhIRXT0n4ECWOKz3+SmJw7wX
# sFSFQrP8DJ6LGYnn8AtqgcKBGUIZUnWKNsIdw2FzLixre24/LAl4FOmRsqlb30mj
# dAy87JGA0j3mSj5mO0+7hvoyGtmW9I/2kQH2zsZ0/fZMcm8Qq3UwxTSwethQ/gpY
# 3UA8x1RtnWN0SCyxTkctwRQEcb9k+SS+c23Kjgm9swFXSVRk2XPXfx5bRAGOWhmR
# aw2fpCjcZxkoJLo4S5pu+yFUa2pFEUep8beuyOiJXk+d0tBMdrVXVAmxaQFEfnyh
# YWxz/gq77EFmPWn9y8FBSX5+k77L+DvktxW/tM4+pTFRhLy/AsGConsXHRWJjXD+
# 57XQKBqJC4822rpM+Zv/Cuk0+CQ1ZyvgDbjmjJnW4SLq8CdCPSWU5nR0W2rRnj7t
# fqAxM328y+l7vzhwRNGQ8cirOoo6CGJ/2XBjU02N7oJtpQUQwXEGahC0HVUzWLOh
# cGbyoYIDTTCCAjUCAQEwgfmhgdGkgc4wgcsxCzAJBgNVBAYTAlVTMRMwEQYDVQQI
# EwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3Nv
# ZnQgQ29ycG9yYXRpb24xJTAjBgNVBAsTHE1pY3Jvc29mdCBBbWVyaWNhIE9wZXJh
# dGlvbnMxJzAlBgNVBAsTHm5TaGllbGQgVFNTIEVTTjpGMDAyLTA1RTAtRDk0NzEl
# MCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZaIjCgEBMAcGBSsO
# AwIaAxUA1bB/adbSZ/pK8AjL6joVb1623rSggYMwgYCkfjB8MQswCQYDVQQGEwJV
# UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UE
# ChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGlt
# ZS1TdGFtcCBQQ0EgMjAxMDANBgkqhkiG9w0BAQsFAAIFAOwWCowwIhgPMjAyNTA3
# MDcwODU3NDhaGA8yMDI1MDcwODA4NTc0OFowdDA6BgorBgEEAYRZCgQBMSwwKjAK
# AgUA7BYKjAIBADAHAgEAAgIGyzAHAgEAAgISkTAKAgUA7BdcDAIBADA2BgorBgEE
# AYRZCgQCMSgwJjAMBgorBgEEAYRZCgMCoAowCAIBAAIDB6EgoQowCAIBAAIDAYag
# MA0GCSqGSIb3DQEBCwUAA4IBAQCiE3S8Gpr892R/LyLuhPsbCA33Lcuz6nEivagy
# LeQ1mAgfNZ++m8xof65BacfvxonoLxcWpBcWpQkW62Pq3nvlAnBvjeTslYF2B4Vy
# etHB/Ir4fCBGMTPmQFxpBlG1kt/+ptGhaRdsDJ+aST5ap/1/+yGB1JzswzrwejmK
# DMGyGNHaGOMD5iRr+bf6f/JOa9BkKOjyFnatsrsxdJhke+Tsya5Yng2WwkJShADk
# thH86aM/N4pwurR2OWXUQsT+mo5o06vzuEMBarbkkcVVq5vXGMeOVtgfS74VfIqp
# wdftCF5AKLi673pTxueG/mbZWwSjA7lLyQ/xg0YpSaG1nNI4MYIEDTCCBAkCAQEw
# gZMwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT
# B1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UE
# AxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTACEzMAAAIFPHVsgkSHzf4A
# AQAAAgUwDQYJYIZIAWUDBAIBBQCgggFKMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0B
# CRABBDAvBgkqhkiG9w0BCQQxIgQgJBRXFyCgj0iodp2DL+AOE5En+JyWLNMbtw5g
# TmJiqd4wgfoGCyqGSIb3DQEJEAIvMYHqMIHnMIHkMIG9BCCADQM93HmNLpoXVi0d
# rCaatDj6rSQ0wGEZox1ZMBFvSDCBmDCBgKR+MHwxCzAJBgNVBAYTAlVTMRMwEQYD
# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1w
# IFBDQSAyMDEwAhMzAAACBTx1bIJEh83+AAEAAAIFMCIEIFJl0QDH7638JEN57/E9
# 9MC0eRB18TuOlipETbdJ1nJmMA0GCSqGSIb3DQEBCwUABIICAABiPj+VC9THB2rm
# B45OJnIqj5PeMSqYuIRHv1AXML2aiXHH6IL8L51XYNNZgPMOs6Jy1Sa2B9cgVA5Y
# Md5vrpQhSBV2a9Cqydc9IoHjiSQ0IdHmtPo70qQuvr/s0gVg2WLZamVWAzh8ln+9
# zdfYOq4HeqF48m+63YH5cBwTzAZRKm4GONqpfzVJ53bDaCWMF3vzdoX4L1ijymQb
# MvrVnSw1msXIoT9PDtqLMRTbRm2HvDyvkO7H40suCXwaC+zyCid06vkbQypvoN1Z
# VJtSVwESyo6RZjjmnvy6Z+Hq5czXFK6OiuJHMrCpLDEp+qrzBvnWHb7t9tSteKz7
# yuQquwjVlmon5FpKkWgVzvotiDyu8DpxTJZToDBHn7Zremjm3T6c3X6zQfwSetwp
# tYfWrNo0ej73w46hsvANczHTO/KYuuDRedbqb5PXfFzCWP6qi2cEsX1K1LLtheWJ
# BvAPby+9QZIMENViCIlvEJHhgdAP01/gGqym2p5elZxfO/8gQWqAnwhJBcI5CwHE
# i1nNMlhlOmanyYmEIfD0Rz+c1ZlIHsN6/NK6ih72rQ1NZo8Fymfiv/c6GTQVstDo
# 5vJkwECeJ/L9OU7JkXQfors2nfx7pOIOKqF3Ik6pWQe0816L9y3B55bUyNwmL3rE
# MYVy1EhAoyvh4FN92JM5FO98Ts2R
# SIG # End signature block