Repository: Azure/ARO-RP
Pull request #1101 (2020-10-28 13:57:42)

Initial refactoring to enable Azure cloud environment awareness
### Which issue this PR addresses:

Fixes [7361254](https://msazure.visualstudio.com/AzureRedHatOpenShift/_workitems/edit/7361254)

### What this PR does / why we need it:

No-op change to replace hardcoded, Azure cloud environment-specific domains with configurable ones.

### Test plan for issue:

Run existing unit and E2E tests.

### Is there any documentation that needs to be updated for this PR?

No


nilsanderselde: /azp run e2e
azure-pipelines[bot]: <samp>
Azure Pipelines successfully started running 1 pipeline(s).<br>

</samp>
nilsanderselde: /azp run e2e
azure-pipelines[bot]: <samp>
Azure Pipelines successfully started running 1 pipeline(s).<br>

</samp>
nilsanderselde: /azp run ci
azure-pipelines[bot]: <samp>
Azure Pipelines successfully started running 1 pipeline(s).<br>

</samp>
nilsanderselde: /azp run ci
azure-pipelines[bot]: <samp>
Azure Pipelines successfully started running 1 pipeline(s).<br>

</samp>
nilsanderselde: @jim-minter I think this is ready for another look

Patch:
diff --git a/cmd/aro/mirror.go b/cmd/aro/mirror.go
index b75b21381..bab4c38dd 100644
--- a/cmd/aro/mirror.go
+++ b/cmd/aro/mirror.go
@@ -17,6 +17,8 @@ import (
 	"github.com/Azure/ARO-RP/pkg/util/version"
 )
 
+const acrDomainSuffix = ".azurecr.io" // TODO: retrieve dynamically
+
 func getAuth(key string) (*types.DockerAuthConfig, error) {
 	b, err := base64.StdEncoding.DecodeString(os.Getenv(key))
 	if err != nil {
@@ -73,7 +75,7 @@ func mirror(ctx context.Context, log *logrus.Entry) error {
 	var errorOccurred bool
 	for _, release := range releases {
 		log.Printf("mirroring release %s", release.Version)
-		err = pkgmirror.Mirror(ctx, log, dstAcr+".azurecr.io", release.Payload, dstAuth, srcAuthQuay)
+		err = pkgmirror.Mirror(ctx, log, dstAcr+acrDomainSuffix, release.Payload, dstAuth, srcAuthQuay)
 		if err != nil {
 			log.Errorf("%s: %s\n", release, err)
 			errorOccurred = true
@@ -81,11 +83,11 @@ func mirror(ctx context.Context, log *logrus.Entry) error {
 	}
 
 	for _, ref := range []string{
-		version.MdsdImage("linuxgeneva-microsoft"),
-		version.MdmImage("linuxgeneva-microsoft"),
+		version.MdsdImage("linuxgeneva-microsoft" + acrDomainSuffix),
+		version.MdmImage("linuxgeneva-microsoft" + acrDomainSuffix),
 	} {
-		log.Printf("mirroring %s -> %s", ref, pkgmirror.Dest(dstAcr+".azurecr.io", ref))
-		err = pkgmirror.Copy(ctx, pkgmirror.Dest(dstAcr+".azurecr.io", ref), ref, dstAuth, srcAuthGeneva)
+		log.Printf("mirroring %s -> %s", ref, pkgmirror.Dest(dstAcr+acrDomainSuffix, ref))
+		err = pkgmirror.Copy(ctx, pkgmirror.Dest(dstAcr+acrDomainSuffix, ref), ref, dstAuth, srcAuthGeneva)
 		if err != nil {
 			log.Errorf("%s: %s\n", ref, err)
 			errorOccurred = true
@@ -96,8 +98,8 @@ func mirror(ctx context.Context, log *logrus.Entry) error {
 		"registry.redhat.io/rhel7/support-tools:latest",
 		"registry.redhat.io/rhel8/support-tools:latest",
 	} {
-		log.Printf("mirroring %s -> %s", ref, pkgmirror.Dest(dstAcr+".azurecr.io", ref))
-		err = pkgmirror.Copy(ctx, pkgmirror.Dest(dstAcr+".azurecr.io", ref), ref, dstAuth, srcAuthRedhat)
+		log.Printf("mirroring %s -> %s", ref, pkgmirror.Dest(dstAcr+acrDomainSuffix, ref))
+		err = pkgmirror.Copy(ctx, pkgmirror.Dest(dstAcr+acrDomainSuffix, ref), ref, dstAuth, srcAuthRedhat)
 		if err != nil {
 			log.Errorf("%s: %s\n", ref, err)
 			errorOccurred = true
diff --git a/deploy/rp-production.json b/deploy/rp-production.json
index e992589e2..0df67d773 100644
--- a/deploy/rp-production.json
+++ b/deploy/rp-production.json
@@ -229,7 +229,7 @@
                                     "autoUpgradeMinorVersion": true,
                                     "settings": {},
                                     "protectedSettings": {
-                                        "script": "[base64(concat(base64ToString('c2V0IC1leAoK'),'MDMFRONTENDURL=$(base64 -d \u003c\u003c\u003c''',base64(parameters('mdmFrontendUrl')),''')\n','MDSDCONFIGVERSION=$(base64 -d \u003c\u003c\u003c''',base64(parameters('mdsdConfigVersion')),''')\n','MDSDENVIRONMENT=$(base64 -d \u003c\u003c\u003c''',base64(parameters('mdsdEnvironment')),''')\n','ACRRESOURCEID=$(base64 -d \u003c\u003c\u003c''',base64(parameters('acrResourceId')),''')\n','RPIMAGE=$(base64 -d \u003c\u003c\u003c''',base64(parameters('rpImage')),''')\n','RPMODE=$(base64 -d \u003c\u003c\u003c''',base64(parameters('rpMode')),''')\n','ADMINAPICLIENTCERTCOMMONNAME=$(base64 -d \u003c\u003c\u003c''',base64(parameters('adminApiClientCertCommonName')),''')\n','ADMINAPICABUNDLE=''',parameters('adminApiCaBundle'),'''\n','MDMIMAGE=''.azurecr.io/genevamdm:master_51''\n','LOCATION=$(base64 -d \u003c\u003c\u003c''',base64(resourceGroup().location),''')\n','SUBSCRIPTIONID=$(base64 -d \u003c\u003c\u003c''',base64(subscription().subscriptionId),''')\n','RESOURCEGROUPNAME=$(base64 -d \u003c\u003c\u003c''',base64(resourceGroup().name),''')\n','\n',base64ToString('Cnl1bSAteSB1cGRhdGUgLXggV0FMaW51eEFnZW50CgojIGF2b2lkICJlcnJvcjogZGI1IGVycm9yKC0zMDk2OSkgZnJvbSBkYmVudi0+b3BlbjogQkRCMDA5MSBEQl9WRVJTSU9OX01JU01BVENIOiBEYXRhYmFzZSBlbnZpcm9ubWVudCB2ZXJzaW9uIG1pc21hdGNoIgpybSAtZiAvdmFyL2xpYi9ycG0vX19kYioKCnJwbSAtLWltcG9ydCBodHRwczovL2RsLmZlZG9yYXByb2plY3Qub3JnL3B1Yi9lcGVsL1JQTS1HUEctS0VZLUVQRUwtNwpycG0gLS1pbXBvcnQgaHR0cHM6Ly9wYWNrYWdlcy5taWNyb3NvZnQuY29tL2tleXMvbWljcm9zb2Z0LmFzYwpycG0gLS1pbXBvcnQgaHR0cHM6Ly9wYWNrYWdlcy5mbHVlbnRiaXQuaW8vZmx1ZW50Yml0LmtleQoKZm9yIGF0dGVtcHQgaW4gezEuLjV9OyBkbwogIHl1bSAteSBpbnN0YWxsIGh0dHBzOi8vZGwuZmVkb3JhcHJvamVjdC5vcmcvcHViL2VwZWwvZXBlbC1yZWxlYXNlLWxhdGVzdC03Lm5vYXJjaC5ycG0gJiYgYnJlYWsKICBpZiBbWyAke2F0dGVtcHR9IC1sdCA1IF1dOyB0aGVuIHNsZWVwIDEwOyBlbHNlIGV4aXQgMTsgZmkKZG9uZQoKY2F0ID4vZXRjL3l1bS5yZXBvcy5kL2F6dXJlLnJlcG8gPDwnRU9GJwpbYXp1cmUtY2xpXQpuYW1lPWF6dXJlLWNsaQpiYXNldXJsPWh0dHBzOi8vcGFja2FnZXMubWljcm9zb2Z0LmNvbS95dW1yZXBvcy9henVyZS1jbGkKZW5hYmxlZD15ZXMKZ3BnY2hlY2s9eWVzCgpbYXp1cmVjb3JlXQpuYW1lPWF6dXJlY29yZQpiYXNldXJsPWh0dHBzOi8vcGFja2FnZXMubWljcm9zb2Z0LmNvbS95dW1yZXBvcy9henVyZWNvcmUKZW5hYmxlZD15ZXMKZ3BnY2hlY2s9bm8KRU9GCgpjYXQgPi9ldGMveXVtLnJlcG9zLmQvdGQtYWdlbnQtYml0LnJlcG8gPDwnRU9GJwpbdGQtYWdlbnQtYml0XQpuYW1lPXRkLWFnZW50LWJpdApiYXNldXJsPWh0dHBzOi8vcGFja2FnZXMuZmx1ZW50Yml0LmlvL2NlbnRvcy83CmVuYWJsZWQ9eWVzCmdwZ2NoZWNrPXllcwpFT0YKCmZvciBhdHRlbXB0IGluIHsxLi41fTsgZG8KeXVtIC15IGluc3RhbGwgYXpzZWMtY2xhbWF2IGF6c2VjLW1vbml0b3IgYXp1cmUtY2xpLTIuMTAuMSBhenVyZS1tZHNkIGF6dXJlLXNlY3VyaXR5IGRvY2tlciB0ZC1hZ2VudC1iaXQgJiYgYnJlYWsKICBpZiBbWyAke2F0dGVtcHR9IC1sdCA1IF1dOyB0aGVuIHNsZWVwIDEwOyBlbHNlIGV4aXQgMTsgZmkKZG9uZQoKCmZpcmV3YWxsLWNtZCAtLWFkZC1wb3J0PTQ0My90Y3AgLS1wZXJtYW5lbnQKCmNhdCA+L2V0Yy90ZC1hZ2VudC1iaXQvdGQtYWdlbnQtYml0LmNvbmYgPDwnRU9GJwpbSU5QVVRdCglOYW1lIHN5c3RlbWQKCVRhZyBqb3VybmFsZAoJU3lzdGVtZF9GaWx0ZXIgX0NPTU09YXJvCgpbRklMVEVSXQoJTmFtZSBtb2RpZnkKCU1hdGNoIGpvdXJuYWxkCglSZW1vdmVfd2lsZGNhcmQgXwoJUmVtb3ZlIFRJTUVTVEFNUAoKW09VVFBVVF0KCU5hbWUgZm9yd2FyZAoJUG9ydCAyOTIzMApFT0YKCmF6IGxvZ2luIC1pCmF6IGFjY291bnQgc2V0IC1zICIkU1VCU0NSSVBUSU9OSUQiCgpzeXN0ZW1jdGwgc3RhcnQgZG9ja2VyLnNlcnZpY2UKYXogYWNyIGxvZ2luIC0tbmFtZSAiJChzZWQgLWUgJ3N8LiovfHwnIDw8PCIkQUNSUkVTT1VSQ0VJRCIpIgoKTURNSU1BR0U9IiR7UlBJTUFHRSUlLyp9LyR7TURNSU1BR0UjIyovfSIKZG9ja2VyIHB1bGwgIiRNRE1JTUFHRSIKZG9ja2VyIHB1bGwgIiRSUElNQUdFIgoKU1ZDVkFVTFRVUkk9IiQoYXoga2V5dmF1bHQgbGlzdCAtZyAiJFJFU09VUkNFR1JPVVBOQU1FIiAtLXF1ZXJ5ICJbP3RhZ3MudmF1bHQ9PSdzZXJ2aWNlJ10ucHJvcGVydGllcy52YXVsdFVyaSIgLW8gdHN2KSIKZm9yIGF0dGVtcHQgaW4gezEuLjV9OyBkbwogIGF6IGtleXZhdWx0IHNlY3JldCBkb3dubG9hZCAtLWZpbGUgL2V0Yy9tZG0ucGVtIC0taWQgIiR7U1ZDVkFVTFRVUkl9c2VjcmV0cy9ycC1tZG0iICYmIGJyZWFrCiAgaWYgW1sgJHthdHRlbXB0fSAtbHQgNSBdXTsgdGhlbiBzbGVlcCAxMDsgZWxzZSBleGl0IDE7IGZpCmRvbmUKY2htb2QgMDYwMCAvZXRjL21kbS5wZW0Kc2VkIC1pIC1uZSAnMSwvRU5EIENFUlRJRklDQVRFLyBwJyAvZXRjL21kbS5wZW0KCmF6IGtleXZhdWx0IHNlY3JldCBkb3dubG9hZCAtLWZpbGUgL2V0Yy9tZHNkLnBlbSAtLWlkICIke1NWQ1ZBVUxUVVJJfXNlY3JldHMvcnAtbWRzZCIKY2hvd24gc3lzbG9nOnN5c2xvZyAvZXRjL21kc2QucGVtCmNobW9kIDA2MDAgL2V0Yy9tZHNkLnBlbQoKYXogbG9nb3V0Cgpta2RpciAvZXRjL2Fyby1ycApiYXNlNjQgLWQgPDw8IiRBRE1JTkFQSUNBQlVORExFIiA+L2V0Yy9hcm8tcnAvYWRtaW4tY2EtYnVuZGxlLnBlbQpjaG93biAtUiAxMDAwOjEwMDAgL2V0Yy9hcm8tcnAKCm1rZGlyIC9ldGMvc3lzdGVtZC9zeXN0ZW0vbWRzZC5zZXJ2aWNlLmQKY2F0ID4vZXRjL3N5c3RlbWQvc3lzdGVtL21kc2Quc2VydmljZS5kL292ZXJyaWRlLmNvbmYgPDwnRU9GJwpbVW5pdF0KQWZ0ZXI9bmV0d29yay1vbmxpbmUudGFyZ2V0CkVPRgoKY2F0ID4vZXRjL2RlZmF1bHQvbWRzZCA8PEVPRgpNRFNEX1JPTEVfUFJFRklYPS92YXIvcnVuL21kc2QvZGVmYXVsdApNRFNEX09QVElPTlM9Ii1BIC1kIC1yIFwkTURTRF9ST0xFX1BSRUZJWCIKCmV4cG9ydCBTU0xfQ0VSVF9GSUxFPS9ldGMvcGtpL3Rscy9jZXJ0cy9jYS1idW5kbGUuY3J0CgpleHBvcnQgTU9OSVRPUklOR19HQ1NfRU5WSVJPTk1FTlQ9JyRNRFNERU5WSVJPTk1FTlQnCmV4cG9ydCBNT05JVE9SSU5HX0dDU19BQ0NPVU5UPUFST1JQTG9ncwpleHBvcnQgTU9OSVRPUklOR19HQ1NfUkVHSU9OPSckTE9DQVRJT04nCmV4cG9ydCBNT05JVE9SSU5HX0dDU19DRVJUX0NFUlRGSUxFPS9ldGMvbWRzZC5wZW0KZXhwb3J0IE1PTklUT1JJTkdfR0NTX0NFUlRfS0VZRklMRT0vZXRjL21kc2QucGVtCmV4cG9ydCBNT05JVE9SSU5HX0dDU19OQU1FU1BBQ0U9QVJPUlBMb2dzCmV4cG9ydCBNT05JVE9SSU5HX0NPTkZJR19WRVJTSU9OPSckTURTRENPTkZJR1ZFUlNJT04nCmV4cG9ydCBNT05JVE9SSU5HX1VTRV9HRU5FVkFfQ09ORklHX1NFUlZJQ0U9dHJ1ZQoKZXhwb3J0IE1PTklUT1JJTkdfVEVOQU5UPSckTE9DQVRJT04nCmV4cG9ydCBNT05JVE9SSU5HX1JPTEU9cnAKZXhwb3J0IE1PTklUT1JJTkdfUk9MRV9JTlNUQU5DRT0nJChob3N0bmFtZSknCkVPRgoKY2F0ID4vZXRjL3N5c2NvbmZpZy9tZG0gPDxFT0YKTURNRlJPTlRFTkRVUkw9JyRNRE1GUk9OVEVORFVSTCcKTURNSU1BR0U9JyRNRE1JTUFHRScKTURNU09VUkNFRU5WSVJPTk1FTlQ9JyRMT0NBVElPTicKTURNU09VUkNFUk9MRT1ycApNRE1TT1VSQ0VST0xFSU5TVEFOQ0U9JyQoaG9zdG5hbWUpJwpFT0YKCm1rZGlyIC92YXIvZXR3CmNhdCA+L2V0Yy9zeXN0ZW1kL3N5c3RlbS9tZG0uc2VydmljZSA8PCdFT0YnCltVbml0XQpBZnRlcj1kb2NrZXIuc2VydmljZQpSZXF1aXJlcz1kb2NrZXIuc2VydmljZQoKW1NlcnZpY2VdCkVudmlyb25tZW50RmlsZT0vZXRjL3N5c2NvbmZpZy9tZG0KRXhlY1N0YXJ0UHJlPS0vdXNyL2Jpbi9kb2NrZXIgcm0gLWYgJU4KRXhlY1N0YXJ0PS91c3IvYmluL2RvY2tlciBydW4gXAogIC0tZW50cnlwb2ludCAvdXNyL3NiaW4vTWV0cmljc0V4dGVuc2lvbiBcCiAgLS1ob3N0bmFtZSAlSCBcCiAgLS1uYW1lICVOIFwKICAtLXJtIFwKICAtbSAyZyBcCiAgLXYgL2V0Yy9tZG0ucGVtOi9ldGMvbWRtLnBlbSBcCiAgLXYgL3Zhci9ldHc6L3Zhci9ldHc6eiBcCiAgJE1ETUlNQUdFIFwKICAtQ2VydEZpbGUgL2V0Yy9tZG0ucGVtIFwKICAtRnJvbnRFbmRVcmwgJE1ETUZST05URU5EVVJMIFwKICAtTG9nZ2VyIENvbnNvbGUgXAogIC1Mb2dMZXZlbCBXYXJuaW5nIFwKICAtUHJpdmF0ZUtleUZpbGUgL2V0Yy9tZG0ucGVtIFwKICAtU291cmNlRW52aXJvbm1lbnQgJE1ETVNPVVJDRUVOVklST05NRU5UIFwKICAtU291cmNlUm9sZSAkTURNU09VUkNFUk9MRSBcCiAgLVNvdXJjZVJvbGVJbnN0YW5jZSAkTURNU09VUkNFUk9MRUlOU1RBTkNFCkV4ZWNTdG9wPS91c3IvYmluL2RvY2tlciBzdG9wICVOClJlc3RhcnQ9YWx3YXlzClJlc3RhcnRTZWM9MQpTdGFydExpbWl0SW50ZXJ2YWw9MAoKW0luc3RhbGxdCldhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CkVPRgoKY2F0ID4vZXRjL3N5c2NvbmZpZy9hcm8tcnAgPDxFT0YKTURNX0FDQ09VTlQ9QXp1cmVSZWRIYXRPcGVuU2hpZnRSUApNRE1fTkFNRVNQQUNFPVJQCkFDUl9SRVNPVVJDRV9JRD0nJEFDUlJFU09VUkNFSUQnCkFETUlOX0FQSV9DTElFTlRfQ0VSVF9DT01NT05fTkFNRT0nJEFETUlOQVBJQ0xJRU5UQ0VSVENPTU1PTk5BTUUnClJQSU1BR0U9JyRSUElNQUdFJwpSUF9NT0RFPSckUlBNT0RFJwpFT0YKCmNhdCA+L2V0Yy9zeXN0ZW1kL3N5c3RlbS9hcm8tcnAuc2VydmljZSA8PCdFT0YnCltVbml0XQpBZnRlcj1kb2NrZXIuc2VydmljZQpSZXF1aXJlcz1kb2NrZXIuc2VydmljZQoKW1NlcnZpY2VdCkVudmlyb25tZW50RmlsZT0vZXRjL3N5c2NvbmZpZy9hcm8tcnAKRXhlY1N0YXJ0UHJlPS0vdXNyL2Jpbi9kb2NrZXIgcm0gLWYgJU4KRXhlY1N0YXJ0PS91c3IvYmluL2RvY2tlciBydW4gXAogIC0taG9zdG5hbWUgJUggXAogIC0tbmFtZSAlTiBcCiAgLS1ybSBcCiAgLWUgTURNX0FDQ09VTlQgXAogIC1lIE1ETV9OQU1FU1BBQ0UgXAogIC1lIEFETUlOX0FQSV9DTElFTlRfQ0VSVF9DT01NT05fTkFNRSBcCiAgLWUgUlBfTU9ERSBcCiAgLWUgQUNSX1JFU09VUkNFX0lEIFwKICAtbSAyZyBcCiAgLXAgNDQzOjg0NDMgXAogIC12IC9ldGMvYXJvLXJwOi9ldGMvYXJvLXJwIFwKICAtdiAvcnVuL3N5c3RlbWQvam91cm5hbDovcnVuL3N5c3RlbWQvam91cm5hbCBcCiAgLXYgL3Zhci9ldHc6L3Zhci9ldHc6eiBcCiAgJFJQSU1BR0UgXAogIHJwCkV4ZWNTdG9wPS91c3IvYmluL2RvY2tlciBzdG9wIC10IDM2MDAgJU4KVGltZW91dFN0b3BTZWM9MzYwMApSZXN0YXJ0PWFsd2F5cwpSZXN0YXJ0U2VjPTEKU3RhcnRMaW1pdEludGVydmFsPTAKCltJbnN0YWxsXQpXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldApFT0YKCmNhdCA+L2V0Yy9zeXNjb25maWcvYXJvLW1vbml0b3IgPDxFT0YKTURNX0FDQ09VTlQ9QXp1cmVSZWRIYXRPcGVuU2hpZnRSUApNRE1fTkFNRVNQQUNFPUJCTQpDTFVTVEVSX01ETV9BQ0NPVU5UPUF6dXJlUmVkSGF0T3BlblNoaWZ0Q2x1c3RlcgpDTFVTVEVSX01ETV9OQU1FU1BBQ0U9QkJNClJQSU1BR0U9JyRSUElNQUdFJwpSUF9NT0RFPSckUlBNT0RFJwpFT0YKCmNhdCA+L2V0Yy9zeXN0ZW1kL3N5c3RlbS9hcm8tbW9uaXRvci5zZXJ2aWNlIDw8J0VPRicKW1VuaXRdCkFmdGVyPWRvY2tlci5zZXJ2aWNlClJlcXVpcmVzPWRvY2tlci5zZXJ2aWNlCgpbU2VydmljZV0KRW52aXJvbm1lbnRGaWxlPS9ldGMvc3lzY29uZmlnL2Fyby1tb25pdG9yCkV4ZWNTdGFydFByZT0tL3Vzci9iaW4vZG9ja2VyIHJtIC1mICVOCkV4ZWNTdGFydD0vdXNyL2Jpbi9kb2NrZXIgcnVuIFwKICAtLWhvc3RuYW1lICVIIFwKICAtLW5hbWUgJU4gXAogIC0tcm0gXAogIC1lIENMVVNURVJfTURNX0FDQ09VTlQgXAogIC1lIENMVVNURVJfTURNX05BTUVTUEFDRSBcCiAgLWUgTURNX0FDQ09VTlQgXAogIC1lIE1ETV9OQU1FU1BBQ0UgXAogIC1lIFJQX01PREUgXAogIC1tIDJnIFwKICAtdiAvcnVuL3N5c3RlbWQvam91cm5hbDovcnVuL3N5c3RlbWQvam91cm5hbCBcCiAgLXYgL3Zhci9ldHc6L3Zhci9ldHc6eiBcCiAgJFJQSU1BR0UgXAogIG1vbml0b3IKUmVzdGFydD1hbHdheXMKUmVzdGFydFNlYz0xClN0YXJ0TGltaXRJbnRlcnZhbD0wCgpbSW5zdGFsbF0KV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKRU9GCgpjaGNvbiAtUiBzeXN0ZW1fdTpvYmplY3Rfcjp2YXJfbG9nX3Q6czAgL3Zhci9vcHQvbWljcm9zb2Z0L2xpbnV4bW9uYWdlbnQKCmZvciBzZXJ2aWNlIGluIGFyby1tb25pdG9yIGFyby1ycCBhdW9tcyBhenNlY2QgYXpzZWNtb25kIG1kc2QgbWRtIGNocm9ueWQgdGQtYWdlbnQtYml0OyBkbwogIHN5c3RlbWN0bCBlbmFibGUgJHNlcnZpY2Uuc2VydmljZQpkb25lCgpmb3Igc2NhbiBpbiBiYXNlbGluZSBjbGFtYXYgc29mdHdhcmU7IGRvCiAgL3Vzci9sb2NhbC9iaW4vYXpzZWNkIGNvbmZpZyAtcyAkc2NhbiAtZCBQMUQKZG9uZQoKKHNsZWVwIDMwOyByZWJvb3QpICYK')))]"
+                                        "script": "[base64(concat(base64ToString('c2V0IC1leAoK'),'MDMFRONTENDURL=$(base64 -d \u003c\u003c\u003c''',base64(parameters('mdmFrontendUrl')),''')\n','MDSDCONFIGVERSION=$(base64 -d \u003c\u003c\u003c''',base64(parameters('mdsdConfigVersion')),''')\n','MDSDENVIRONMENT=$(base64 -d \u003c\u003c\u003c''',base64(parameters('mdsdEnvironment')),''')\n','ACRRESOURCEID=$(base64 -d \u003c\u003c\u003c''',base64(parameters('acrResourceId')),''')\n','RPIMAGE=$(base64 -d \u003c\u003c\u003c''',base64(parameters('rpImage')),''')\n','RPMODE=$(base64 -d \u003c\u003c\u003c''',base64(parameters('rpMode')),''')\n','ADMINAPICLIENTCERTCOMMONNAME=$(base64 -d \u003c\u003c\u003c''',base64(parameters('adminApiClientCertCommonName')),''')\n','ADMINAPICABUNDLE=''',parameters('adminApiCaBundle'),'''\n','MDMIMAGE=''/genevamdm:master_51''\n','LOCATION=$(base64 -d \u003c\u003c\u003c''',base64(resourceGroup().location),''')\n','SUBSCRIPTIONID=$(base64 -d \u003c\u003c\u003c''',base64(subscription().subscriptionId),''')\n','RESOURCEGROUPNAME=$(base64 -d \u003c\u003c\u003c''',base64(resourceGroup().name),''')\n','\n',base64ToString('Cnl1bSAteSB1cGRhdGUgLXggV0FMaW51eEFnZW50CgojIGF2b2lkICJlcnJvcjogZGI1IGVycm9yKC0zMDk2OSkgZnJvbSBkYmVudi0+b3BlbjogQkRCMDA5MSBEQl9WRVJTSU9OX01JU01BVENIOiBEYXRhYmFzZSBlbnZpcm9ubWVudCB2ZXJzaW9uIG1pc21hdGNoIgpybSAtZiAvdmFyL2xpYi9ycG0vX19kYioKCnJwbSAtLWltcG9ydCBodHRwczovL2RsLmZlZG9yYXByb2plY3Qub3JnL3B1Yi9lcGVsL1JQTS1HUEctS0VZLUVQRUwtNwpycG0gLS1pbXBvcnQgaHR0cHM6Ly9wYWNrYWdlcy5taWNyb3NvZnQuY29tL2tleXMvbWljcm9zb2Z0LmFzYwpycG0gLS1pbXBvcnQgaHR0cHM6Ly9wYWNrYWdlcy5mbHVlbnRiaXQuaW8vZmx1ZW50Yml0LmtleQoKZm9yIGF0dGVtcHQgaW4gezEuLjV9OyBkbwogIHl1bSAteSBpbnN0YWxsIGh0dHBzOi8vZGwuZmVkb3JhcHJvamVjdC5vcmcvcHViL2VwZWwvZXBlbC1yZWxlYXNlLWxhdGVzdC03Lm5vYXJjaC5ycG0gJiYgYnJlYWsKICBpZiBbWyAke2F0dGVtcHR9IC1sdCA1IF1dOyB0aGVuIHNsZWVwIDEwOyBlbHNlIGV4aXQgMTsgZmkKZG9uZQoKY2F0ID4vZXRjL3l1bS5yZXBvcy5kL2F6dXJlLnJlcG8gPDwnRU9GJwpbYXp1cmUtY2xpXQpuYW1lPWF6dXJlLWNsaQpiYXNldXJsPWh0dHBzOi8vcGFja2FnZXMubWljcm9zb2Z0LmNvbS95dW1yZXBvcy9henVyZS1jbGkKZW5hYmxlZD15ZXMKZ3BnY2hlY2s9eWVzCgpbYXp1cmVjb3JlXQpuYW1lPWF6dXJlY29yZQpiYXNldXJsPWh0dHBzOi8vcGFja2FnZXMubWljcm9zb2Z0LmNvbS95dW1yZXBvcy9henVyZWNvcmUKZW5hYmxlZD15ZXMKZ3BnY2hlY2s9bm8KRU9GCgpjYXQgPi9ldGMveXVtLnJlcG9zLmQvdGQtYWdlbnQtYml0LnJlcG8gPDwnRU9GJwpbdGQtYWdlbnQtYml0XQpuYW1lPXRkLWFnZW50LWJpdApiYXNldXJsPWh0dHBzOi8vcGFja2FnZXMuZmx1ZW50Yml0LmlvL2NlbnRvcy83CmVuYWJsZWQ9eWVzCmdwZ2NoZWNrPXllcwpFT0YKCmZvciBhdHRlbXB0IGluIHsxLi41fTsgZG8KeXVtIC15IGluc3RhbGwgYXpzZWMtY2xhbWF2IGF6c2VjLW1vbml0b3IgYXp1cmUtY2xpLTIuMTAuMSBhenVyZS1tZHNkIGF6dXJlLXNlY3VyaXR5IGRvY2tlciB0ZC1hZ2VudC1iaXQgJiYgYnJlYWsKICBpZiBbWyAke2F0dGVtcHR9IC1sdCA1IF1dOyB0aGVuIHNsZWVwIDEwOyBlbHNlIGV4aXQgMTsgZmkKZG9uZQoKCmZpcmV3YWxsLWNtZCAtLWFkZC1wb3J0PTQ0My90Y3AgLS1wZXJtYW5lbnQKCmNhdCA+L2V0Yy90ZC1hZ2VudC1iaXQvdGQtYWdlbnQtYml0LmNvbmYgPDwnRU9GJwpbSU5QVVRdCglOYW1lIHN5c3RlbWQKCVRhZyBqb3VybmFsZAoJU3lzdGVtZF9GaWx0ZXIgX0NPTU09YXJvCgpbRklMVEVSXQoJTmFtZSBtb2RpZnkKCU1hdGNoIGpvdXJuYWxkCglSZW1vdmVfd2lsZGNhcmQgXwoJUmVtb3ZlIFRJTUVTVEFNUAoKW09VVFBVVF0KCU5hbWUgZm9yd2FyZAoJUG9ydCAyOTIzMApFT0YKCmF6IGxvZ2luIC1pCmF6IGFjY291bnQgc2V0IC1zICIkU1VCU0NSSVBUSU9OSUQiCgpzeXN0ZW1jdGwgc3RhcnQgZG9ja2VyLnNlcnZpY2UKYXogYWNyIGxvZ2luIC0tbmFtZSAiJChzZWQgLWUgJ3N8LiovfHwnIDw8PCIkQUNSUkVTT1VSQ0VJRCIpIgoKTURNSU1BR0U9IiR7UlBJTUFHRSUlLyp9LyR7TURNSU1BR0UjIyovfSIKZG9ja2VyIHB1bGwgIiRNRE1JTUFHRSIKZG9ja2VyIHB1bGwgIiRSUElNQUdFIgoKU1ZDVkFVTFRVUkk9IiQoYXoga2V5dmF1bHQgbGlzdCAtZyAiJFJFU09VUkNFR1JPVVBOQU1FIiAtLXF1ZXJ5ICJbP3RhZ3MudmF1bHQ9PSdzZXJ2aWNlJ10ucHJvcGVydGllcy52YXVsdFVyaSIgLW8gdHN2KSIKZm9yIGF0dGVtcHQgaW4gezEuLjV9OyBkbwogIGF6IGtleXZhdWx0IHNlY3JldCBkb3dubG9hZCAtLWZpbGUgL2V0Yy9tZG0ucGVtIC0taWQgIiR7U1ZDVkFVTFRVUkl9c2VjcmV0cy9ycC1tZG0iICYmIGJyZWFrCiAgaWYgW1sgJHthdHRlbXB0fSAtbHQgNSBdXTsgdGhlbiBzbGVlcCAxMDsgZWxzZSBleGl0IDE7IGZpCmRvbmUKY2htb2QgMDYwMCAvZXRjL21kbS5wZW0Kc2VkIC1pIC1uZSAnMSwvRU5EIENFUlRJRklDQVRFLyBwJyAvZXRjL21kbS5wZW0KCmF6IGtleXZhdWx0IHNlY3JldCBkb3dubG9hZCAtLWZpbGUgL2V0Yy9tZHNkLnBlbSAtLWlkICIke1NWQ1ZBVUxUVVJJfXNlY3JldHMvcnAtbWRzZCIKY2hvd24gc3lzbG9nOnN5c2xvZyAvZXRjL21kc2QucGVtCmNobW9kIDA2MDAgL2V0Yy9tZHNkLnBlbQoKYXogbG9nb3V0Cgpta2RpciAvZXRjL2Fyby1ycApiYXNlNjQgLWQgPDw8IiRBRE1JTkFQSUNBQlVORExFIiA+L2V0Yy9hcm8tcnAvYWRtaW4tY2EtYnVuZGxlLnBlbQpjaG93biAtUiAxMDAwOjEwMDAgL2V0Yy9hcm8tcnAKCm1rZGlyIC9ldGMvc3lzdGVtZC9zeXN0ZW0vbWRzZC5zZXJ2aWNlLmQKY2F0ID4vZXRjL3N5c3RlbWQvc3lzdGVtL21kc2Quc2VydmljZS5kL292ZXJyaWRlLmNvbmYgPDwnRU9GJwpbVW5pdF0KQWZ0ZXI9bmV0d29yay1vbmxpbmUudGFyZ2V0CkVPRgoKY2F0ID4vZXRjL2RlZmF1bHQvbWRzZCA8PEVPRgpNRFNEX1JPTEVfUFJFRklYPS92YXIvcnVuL21kc2QvZGVmYXVsdApNRFNEX09QVElPTlM9Ii1BIC1kIC1yIFwkTURTRF9ST0xFX1BSRUZJWCIKCmV4cG9ydCBTU0xfQ0VSVF9GSUxFPS9ldGMvcGtpL3Rscy9jZXJ0cy9jYS1idW5kbGUuY3J0CgpleHBvcnQgTU9OSVRPUklOR19HQ1NfRU5WSVJPTk1FTlQ9JyRNRFNERU5WSVJPTk1FTlQnCmV4cG9ydCBNT05JVE9SSU5HX0dDU19BQ0NPVU5UPUFST1JQTG9ncwpleHBvcnQgTU9OSVRPUklOR19HQ1NfUkVHSU9OPSckTE9DQVRJT04nCmV4cG9ydCBNT05JVE9SSU5HX0dDU19DRVJUX0NFUlRGSUxFPS9ldGMvbWRzZC5wZW0KZXhwb3J0IE1PTklUT1JJTkdfR0NTX0NFUlRfS0VZRklMRT0vZXRjL21kc2QucGVtCmV4cG9ydCBNT05JVE9SSU5HX0dDU19OQU1FU1BBQ0U9QVJPUlBMb2dzCmV4cG9ydCBNT05JVE9SSU5HX0NPTkZJR19WRVJTSU9OPSckTURTRENPTkZJR1ZFUlNJT04nCmV4cG9ydCBNT05JVE9SSU5HX1VTRV9HRU5FVkFfQ09ORklHX1NFUlZJQ0U9dHJ1ZQoKZXhwb3J0IE1PTklUT1JJTkdfVEVOQU5UPSckTE9DQVRJT04nCmV4cG9ydCBNT05JVE9SSU5HX1JPTEU9cnAKZXhwb3J0IE1PTklUT1JJTkdfUk9MRV9JTlNUQU5DRT0nJChob3N0bmFtZSknCkVPRgoKY2F0ID4vZXRjL3N5c2NvbmZpZy9tZG0gPDxFT0YKTURNRlJPTlRFTkRVUkw9JyRNRE1GUk9OVEVORFVSTCcKTURNSU1BR0U9JyRNRE1JTUFHRScKTURNU09VUkNFRU5WSVJPTk1FTlQ9JyRMT0NBVElPTicKTURNU09VUkNFUk9MRT1ycApNRE1TT1VSQ0VST0xFSU5TVEFOQ0U9JyQoaG9zdG5hbWUpJwpFT0YKCm1rZGlyIC92YXIvZXR3CmNhdCA+L2V0Yy9zeXN0ZW1kL3N5c3RlbS9tZG0uc2VydmljZSA8PCdFT0YnCltVbml0XQpBZnRlcj1kb2NrZXIuc2VydmljZQpSZXF1aXJlcz1kb2NrZXIuc2VydmljZQoKW1NlcnZpY2VdCkVudmlyb25tZW50RmlsZT0vZXRjL3N5c2NvbmZpZy9tZG0KRXhlY1N0YXJ0UHJlPS0vdXNyL2Jpbi9kb2NrZXIgcm0gLWYgJU4KRXhlY1N0YXJ0PS91c3IvYmluL2RvY2tlciBydW4gXAogIC0tZW50cnlwb2ludCAvdXNyL3NiaW4vTWV0cmljc0V4dGVuc2lvbiBcCiAgLS1ob3N0bmFtZSAlSCBcCiAgLS1uYW1lICVOIFwKICAtLXJtIFwKICAtbSAyZyBcCiAgLXYgL2V0Yy9tZG0ucGVtOi9ldGMvbWRtLnBlbSBcCiAgLXYgL3Zhci9ldHc6L3Zhci9ldHc6eiBcCiAgJE1ETUlNQUdFIFwKICAtQ2VydEZpbGUgL2V0Yy9tZG0ucGVtIFwKICAtRnJvbnRFbmRVcmwgJE1ETUZST05URU5EVVJMIFwKICAtTG9nZ2VyIENvbnNvbGUgXAogIC1Mb2dMZXZlbCBXYXJuaW5nIFwKICAtUHJpdmF0ZUtleUZpbGUgL2V0Yy9tZG0ucGVtIFwKICAtU291cmNlRW52aXJvbm1lbnQgJE1ETVNPVVJDRUVOVklST05NRU5UIFwKICAtU291cmNlUm9sZSAkTURNU09VUkNFUk9MRSBcCiAgLVNvdXJjZVJvbGVJbnN0YW5jZSAkTURNU09VUkNFUk9MRUlOU1RBTkNFCkV4ZWNTdG9wPS91c3IvYmluL2RvY2tlciBzdG9wICVOClJlc3RhcnQ9YWx3YXlzClJlc3RhcnRTZWM9MQpTdGFydExpbWl0SW50ZXJ2YWw9MAoKW0luc3RhbGxdCldhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CkVPRgoKY2F0ID4vZXRjL3N5c2NvbmZpZy9hcm8tcnAgPDxFT0YKTURNX0FDQ09VTlQ9QXp1cmVSZWRIYXRPcGVuU2hpZnRSUApNRE1fTkFNRVNQQUNFPVJQCkFDUl9SRVNPVVJDRV9JRD0nJEFDUlJFU09VUkNFSUQnCkFETUlOX0FQSV9DTElFTlRfQ0VSVF9DT01NT05fTkFNRT0nJEFETUlOQVBJQ0xJRU5UQ0VSVENPTU1PTk5BTUUnClJQSU1BR0U9JyRSUElNQUdFJwpSUF9NT0RFPSckUlBNT0RFJwpFT0YKCmNhdCA+L2V0Yy9zeXN0ZW1kL3N5c3RlbS9hcm8tcnAuc2VydmljZSA8PCdFT0YnCltVbml0XQpBZnRlcj1kb2NrZXIuc2VydmljZQpSZXF1aXJlcz1kb2NrZXIuc2VydmljZQoKW1NlcnZpY2VdCkVudmlyb25tZW50RmlsZT0vZXRjL3N5c2NvbmZpZy9hcm8tcnAKRXhlY1N0YXJ0UHJlPS0vdXNyL2Jpbi9kb2NrZXIgcm0gLWYgJU4KRXhlY1N0YXJ0PS91c3IvYmluL2RvY2tlciBydW4gXAogIC0taG9zdG5hbWUgJUggXAogIC0tbmFtZSAlTiBcCiAgLS1ybSBcCiAgLWUgTURNX0FDQ09VTlQgXAogIC1lIE1ETV9OQU1FU1BBQ0UgXAogIC1lIEFETUlOX0FQSV9DTElFTlRfQ0VSVF9DT01NT05fTkFNRSBcCiAgLWUgUlBfTU9ERSBcCiAgLWUgQUNSX1JFU09VUkNFX0lEIFwKICAtbSAyZyBcCiAgLXAgNDQzOjg0NDMgXAogIC12IC9ldGMvYXJvLXJwOi9ldGMvYXJvLXJwIFwKICAtdiAvcnVuL3N5c3RlbWQvam91cm5hbDovcnVuL3N5c3RlbWQvam91cm5hbCBcCiAgLXYgL3Zhci9ldHc6L3Zhci9ldHc6eiBcCiAgJFJQSU1BR0UgXAogIHJwCkV4ZWNTdG9wPS91c3IvYmluL2RvY2tlciBzdG9wIC10IDM2MDAgJU4KVGltZW91dFN0b3BTZWM9MzYwMApSZXN0YXJ0PWFsd2F5cwpSZXN0YXJ0U2VjPTEKU3RhcnRMaW1pdEludGVydmFsPTAKCltJbnN0YWxsXQpXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldApFT0YKCmNhdCA+L2V0Yy9zeXNjb25maWcvYXJvLW1vbml0b3IgPDxFT0YKTURNX0FDQ09VTlQ9QXp1cmVSZWRIYXRPcGVuU2hpZnRSUApNRE1fTkFNRVNQQUNFPUJCTQpDTFVTVEVSX01ETV9BQ0NPVU5UPUF6dXJlUmVkSGF0T3BlblNoaWZ0Q2x1c3RlcgpDTFVTVEVSX01ETV9OQU1FU1BBQ0U9QkJNClJQSU1BR0U9JyRSUElNQUdFJwpSUF9NT0RFPSckUlBNT0RFJwpFT0YKCmNhdCA+L2V0Yy9zeXN0ZW1kL3N5c3RlbS9hcm8tbW9uaXRvci5zZXJ2aWNlIDw8J0VPRicKW1VuaXRdCkFmdGVyPWRvY2tlci5zZXJ2aWNlClJlcXVpcmVzPWRvY2tlci5zZXJ2aWNlCgpbU2VydmljZV0KRW52aXJvbm1lbnRGaWxlPS9ldGMvc3lzY29uZmlnL2Fyby1tb25pdG9yCkV4ZWNTdGFydFByZT0tL3Vzci9iaW4vZG9ja2VyIHJtIC1mICVOCkV4ZWNTdGFydD0vdXNyL2Jpbi9kb2NrZXIgcnVuIFwKICAtLWhvc3RuYW1lICVIIFwKICAtLW5hbWUgJU4gXAogIC0tcm0gXAogIC1lIENMVVNURVJfTURNX0FDQ09VTlQgXAogIC1lIENMVVNURVJfTURNX05BTUVTUEFDRSBcCiAgLWUgTURNX0FDQ09VTlQgXAogIC1lIE1ETV9OQU1FU1BBQ0UgXAogIC1lIFJQX01PREUgXAogIC1tIDJnIFwKICAtdiAvcnVuL3N5c3RlbWQvam91cm5hbDovcnVuL3N5c3RlbWQvam91cm5hbCBcCiAgLXYgL3Zhci9ldHc6L3Zhci9ldHc6eiBcCiAgJFJQSU1BR0UgXAogIG1vbml0b3IKUmVzdGFydD1hbHdheXMKUmVzdGFydFNlYz0xClN0YXJ0TGltaXRJbnRlcnZhbD0wCgpbSW5zdGFsbF0KV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKRU9GCgpjaGNvbiAtUiBzeXN0ZW1fdTpvYmplY3Rfcjp2YXJfbG9nX3Q6czAgL3Zhci9vcHQvbWljcm9zb2Z0L2xpbnV4bW9uYWdlbnQKCmZvciBzZXJ2aWNlIGluIGFyby1tb25pdG9yIGFyby1ycCBhdW9tcyBhenNlY2QgYXpzZWNtb25kIG1kc2QgbWRtIGNocm9ueWQgdGQtYWdlbnQtYml0OyBkbwogIHN5c3RlbWN0bCBlbmFibGUgJHNlcnZpY2Uuc2VydmljZQpkb25lCgpmb3Igc2NhbiBpbiBiYXNlbGluZSBjbGFtYXYgc29mdHdhcmU7IGRvCiAgL3Vzci9sb2NhbC9iaW4vYXpzZWNkIGNvbmZpZyAtcyAkc2NhbiAtZCBQMUQKZG9uZQoKKHNsZWVwIDMwOyByZWJvb3QpICYK')))]"
                                     }
                                 }
                             }
diff --git a/pkg/api/validate/openshiftcluster_validatedynamic.go b/pkg/api/validate/openshiftcluster_validatedynamic.go
index d2d571ff6..bbd26506f 100644
--- a/pkg/api/validate/openshiftcluster_validatedynamic.go
+++ b/pkg/api/validate/openshiftcluster_validatedynamic.go
@@ -39,7 +39,7 @@ type OpenShiftClusterDynamicValidator interface {
 
 // NewOpenShiftClusterDynamicValidator creates a new OpenShiftClusterDynamicValidator
 func NewOpenShiftClusterDynamicValidator(log *logrus.Entry, env env.Interface, oc *api.OpenShiftCluster, subscriptionDoc *api.SubscriptionDocument) (OpenShiftClusterDynamicValidator, error) {
-	fpAuthorizer, err := env.FPAuthorizer(subscriptionDoc.Subscription.Properties.TenantID, azure.PublicCloud.ResourceManagerEndpoint)
+	fpAuthorizer, err := env.FPAuthorizer(subscriptionDoc.Subscription.Properties.TenantID, env.Environment().ResourceManagerEndpoint)
 	if err != nil {
 		return nil, err
 	}
@@ -159,7 +159,7 @@ func (dv *openShiftClusterDynamicValidator) Dynamic(ctx context.Context) error {
 func (dv *openShiftClusterDynamicValidator) validateServicePrincipalProfile(ctx context.Context) (refreshable.Authorizer, error) {
 	dv.log.Print("validateServicePrincipalProfile")
 
-	token, err := aad.GetToken(ctx, dv.log, dv.oc, azure.PublicCloud.ResourceManagerEndpoint)
+	token, err := aad.GetToken(ctx, dv.log, dv.oc, dv.env.Environment().ResourceManagerEndpoint)
 	if err != nil {
 		return nil, err
 	}
diff --git a/pkg/backend/openshiftcluster/create.go b/pkg/backend/openshiftcluster/create.go
index 01b4fb1d9..12bf3bda4 100644
--- a/pkg/backend/openshiftcluster/create.go
+++ b/pkg/backend/openshiftcluster/create.go
@@ -269,19 +269,19 @@ func (m *manager) Create(ctx context.Context) error {
 				{
 					Source: "quay.io/openshift-release-dev/ocp-release",
 					Mirrors: []string{
-						fmt.Sprintf("%s.azurecr.io/openshift-release-dev/ocp-release", m.env.ACRName()),
+						fmt.Sprintf("%s/openshift-release-dev/ocp-release", m.env.ACRDomain()),
 					},
 				},
 				{
 					Source: "quay.io/openshift-release-dev/ocp-release-nightly",
 					Mirrors: []string{
-						fmt.Sprintf("%s.azurecr.io/openshift-release-dev/ocp-release-nightly", m.env.ACRName()),
+						fmt.Sprintf("%s/openshift-release-dev/ocp-release-nightly", m.env.ACRDomain()),
 					},
 				},
 				{
 					Source: "quay.io/openshift-release-dev/ocp-v4.0-art-dev",
 					Mirrors: []string{
-						fmt.Sprintf("%s.azurecr.io/openshift-release-dev/ocp-v4.0-art-dev", m.env.ACRName()),
+						fmt.Sprintf("%s/openshift-release-dev/ocp-v4.0-art-dev", m.env.ACRDomain()),
 					},
 				},
 			},
diff --git a/pkg/backend/openshiftcluster/openshiftcluster.go b/pkg/backend/openshiftcluster/openshiftcluster.go
index 90a4bad70..eb614f416 100644
--- a/pkg/backend/openshiftcluster/openshiftcluster.go
+++ b/pkg/backend/openshiftcluster/openshiftcluster.go
@@ -7,7 +7,6 @@ import (
 	"context"
 
 	"github.com/Azure/go-autorest/autorest"
-	"github.com/Azure/go-autorest/autorest/azure"
 	"github.com/sirupsen/logrus"
 
 	"github.com/Azure/ARO-RP/pkg/api"
@@ -60,17 +59,17 @@ type manager struct {
 
 // NewManager returns a new openshiftcluster Manager
 func NewManager(log *logrus.Entry, _env env.Interface, db database.OpenShiftClusters, cipher encryption.Cipher, billing billing.Manager, doc *api.OpenShiftClusterDocument, subscriptionDoc *api.SubscriptionDocument) (Manager, error) {
-	localFPAuthorizer, err := _env.FPAuthorizer(_env.TenantID(), azure.PublicCloud.ResourceManagerEndpoint)
+	localFPAuthorizer, err := _env.FPAuthorizer(_env.TenantID(), _env.Environment().ResourceManagerEndpoint)
 	if err != nil {
 		return nil, err
 	}
 
-	localFPKVAuthorizer, err := _env.FPAuthorizer(_env.TenantID(), azure.PublicCloud.ResourceIdentifiers.KeyVault)
+	localFPKVAuthorizer, err := _env.FPAuthorizer(_env.TenantID(), _env.Environment().ResourceIdentifiers.KeyVault)
 	if err != nil {
 		return nil, err
 	}
 
-	fpAuthorizer, err := _env.FPAuthorizer(subscriptionDoc.Subscription.Properties.TenantID, azure.PublicCloud.ResourceManagerEndpoint)
+	fpAuthorizer, err := _env.FPAuthorizer(subscriptionDoc.Subscription.Properties.TenantID, _env.Environment().ResourceManagerEndpoint)
 	if err != nil {
 		return nil, err
 	}
diff --git a/pkg/bootstraplogging/bootstraplogging.go b/pkg/bootstraplogging/bootstraplogging.go
index 5e8ff69a0..0be812c93 100644
--- a/pkg/bootstraplogging/bootstraplogging.go
+++ b/pkg/bootstraplogging/bootstraplogging.go
@@ -45,7 +45,7 @@ func GetConfig(env env.Interface, doc *api.OpenShiftClusterDocument) (*bootstrap
 		SubscriptionID:    r.SubscriptionID,
 		ResourceName:      r.ResourceName,
 		ResourceGroupName: r.ResourceGroup,
-		MdsdImage:         version.MdsdImage(env.ACRName()),
-		FluentbitImage:    version.FluentbitImage(env.ACRName()),
+		MdsdImage:         version.MdsdImage(env.ACRDomain()),
+		FluentbitImage:    version.FluentbitImage(env.ACRDomain()),
 	}, nil
 }
diff --git a/pkg/cluster/blobservice.go b/pkg/cluster/blobservice.go
index ac44ae1ea..026527ed0 100644
--- a/pkg/cluster/blobservice.go
+++ b/pkg/cluster/blobservice.go
@@ -10,7 +10,6 @@ import (
 
 	mgmtstorage "github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2019-04-01/storage"
 	azstorage "github.com/Azure/azure-sdk-for-go/storage"
-	"github.com/Azure/go-autorest/autorest/azure"
 	"github.com/Azure/go-autorest/autorest/date"
 
 	"github.com/Azure/ARO-RP/pkg/util/stringutils"
@@ -37,7 +36,7 @@ func (m *manager) getBlobService(ctx context.Context, p mgmtstorage.Permissions,
 		return nil, err
 	}
 
-	c := azstorage.NewAccountSASClient("cluster"+m.doc.OpenShiftCluster.Properties.StorageSuffix, v, azure.PublicCloud).GetBlobService()
+	c := azstorage.NewAccountSASClient("cluster"+m.doc.OpenShiftCluster.Properties.StorageSuffix, v, *m.env.Environment()).GetBlobService()
 
 	return &c, nil
 }
diff --git a/pkg/cluster/cluster.go b/pkg/cluster/cluster.go
index 52b5bef88..825622a11 100644
--- a/pkg/cluster/cluster.go
+++ b/pkg/cluster/cluster.go
@@ -92,17 +92,17 @@ func New(ctx context.Context, log *logrus.Entry, _env env.Interface, db database
 		return nil, err
 	}
 
-	localFPAuthorizer, err := _env.FPAuthorizer(_env.TenantID(), azure.PublicCloud.ResourceManagerEndpoint)
+	localFPAuthorizer, err := _env.FPAuthorizer(_env.TenantID(), _env.Environment().ResourceManagerEndpoint)
 	if err != nil {
 		return nil, err
 	}
 
-	localFPKVAuthorizer, err := _env.FPAuthorizer(_env.TenantID(), azure.PublicCloud.ResourceIdentifiers.KeyVault)
+	localFPKVAuthorizer, err := _env.FPAuthorizer(_env.TenantID(), _env.Environment().ResourceIdentifiers.KeyVault)
 	if err != nil {
 		return nil, err
 	}
 
-	fpAuthorizer, err := _env.FPAuthorizer(doc.OpenShiftCluster.Properties.ServicePrincipalProfile.TenantID, azure.PublicCloud.ResourceManagerEndpoint)
+	fpAuthorizer, err := _env.FPAuthorizer(doc.OpenShiftCluster.Properties.ServicePrincipalProfile.TenantID, _env.Environment().ResourceManagerEndpoint)
 	if err != nil {
 		return nil, err
 	}
diff --git a/pkg/cluster/deploystorage.go b/pkg/cluster/deploystorage.go
index 917bca9b3..ffaf63039 100644
--- a/pkg/cluster/deploystorage.go
+++ b/pkg/cluster/deploystorage.go
@@ -49,7 +49,7 @@ func (m *manager) clusterSPObjectID(ctx context.Context) (string, error) {
 	var clusterSPObjectID string
 	spp := &m.doc.OpenShiftCluster.Properties.ServicePrincipalProfile
 
-	token, err := aad.GetToken(ctx, m.log, m.doc.OpenShiftCluster, azure.PublicCloud.GraphEndpoint)
+	token, err := aad.GetToken(ctx, m.log, m.doc.OpenShiftCluster, m.env.Environment().GraphEndpoint)
 	if err != nil {
 		return "", err
 	}
diff --git a/pkg/database/database.go b/pkg/database/database.go
index ee85201fe..b96ef6df4 100644
--- a/pkg/database/database.go
+++ b/pkg/database/database.go
@@ -12,7 +12,6 @@ import (
 	"reflect"
 	"time"
 
-	"github.com/Azure/go-autorest/autorest/azure"
 	"github.com/sirupsen/logrus"
 	"github.com/ugorji/go/codec"
 
@@ -85,7 +84,7 @@ func databaseName(deploymentMode deployment.Mode) (string, error) {
 }
 
 func find(ctx context.Context, env env.Core) (string, string, error) {
-	rpAuthorizer, err := env.NewRPAuthorizer(azure.PublicCloud.ResourceManagerEndpoint)
+	rpAuthorizer, err := env.NewRPAuthorizer(env.Environment().ResourceManagerEndpoint)
 	if err != nil {
 		return "", "", err
 	}
diff --git a/pkg/deploy/bindata.go b/pkg/deploy/bindata.go
index 45b3ce3f6..d64e89c86 100644
--- a/pkg/deploy/bindata.go
+++ b/pkg/deploy/bindata.go
@@ -371,7 +371,7 @@ func rpProductionSubscriptionJson() (*asset, error) {
 	return a, nil
 }
 
-var _rpProductionJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x69\x6f\xe2\xca\xb6\x3f\xfc\xfe\x7c\x8a\x28\xcf\x95\xb2\xfb\xb9\x9d\xc4\x36\xa1\x13\x1f\xe9\xbe\x00\x83\x8d\x0d\x18\x3c\x1b\x9f\x7b\x74\xe4\xa1\x30\x8e\xcb\xc3\xf1\x00\x21\x57\xe7\xbb\xff\x55\x1e\x98\xa7\x0c\xdd\xbb\xf7\xde\x4d\x4b\xad\x80\xab\x56\xad\x5a\xc3\x6f\xad\x1a\xfd\x7f\x7f\xbb\xba\xba\xba\xba\xfe\xaf\xd4\x9e\x81\xc0\xbc\xfe\xfb\xd5\xf5\x2c\xcb\xe2\xf4\xef\xf7\xf7\xe5\x2f\x77\x81\x19\x9a\x2e\x08\x40\x98\xdd\x99\xaf\x79\x02\xee\xec\x28\xa8\x9e\xa5\xf7\x04\x86\x37\x6f\x31\xfc\x16\xc3\xef\x1d\x10\xc3\x68\x89\xca\xc9\x20\x88\xa1\x99\x81\xbb\xe7\x34\x0a\xff\xbf\xeb\xaf\x65\x0b\x76\x14\x66\x20\xcc\x54\x90\xa4\x5e\x14\xa2\x86\xf0\x3b\x0c\xfd\xab\x0b\xc4\x66\x62\x06\x20\x03\x49\x7a\xfd\xf7\xab\x92\xad\xe2\x77\xd3\x4e\x44\x90\x46\x79\x62\x03\xd6\xd9\x7a\x54\x3c\xce\x96\x31\x40\xd4\xd2\x2c\xf1\x42\xf7\x7a\xf5\xf0\x3f\x5f\x37\x48\x38\x81\x17\xb6\x62\x8f\x32\xdb\x79\xe8\x40\xf0\x41\x2a\xd0\x03\x61\x46\x81\x24\xa3\xa2\x20\x88\x42\xde\x0c\xde\x49\xd1\x31\x33\xd3\x32\x53\xd0\xb2\xed\x28\x0f\xb3\x0f\x10\x8a\x02\xd3\xfb\x00\x23\xe0\x25\x4b\x4c\x2a\x4a\x83\x28\xed\xb4\xd9\x71\x7a\x96\xca\xd7\xed\xa7\x0e\x98\x9a\x39\xcc\x54\x13\xe6\x45\xa9\xc3\xad\x4c\x63\x09\x24\x73\xcf\x06\xe3\xc4\x0b\x6d\x2f\x36\xe1\x7b\x15\x3a\xcd\x21\xec\x14\x06\x77\xbc\xbe\x15\x45\xf0\x0c\x9f\x53\x13\xa6\xe0\x60\x03\x81\x13\xd0\x49\x61\xb1\x8e\x92\xc0\xf7\x31\x19\x38\xa9\x43\x45\xe1\xd4\x73\xd7\x46\xff\x4e\x32\xdd\x70\xee\x25\x51\x88\xbc\xeb\x7d\x44\x92\x98\x0d\x4c\xf7\x9d\xd6\x91\xc4\xc3\xc8\x39\x5f\xf7\x5d\x36\x91\x7c\x9a\x4d\xa4\xe9\x6c\x9c\x5b\xd0\xb3\xfb\xe0\x84\x55\x9c\xa4\x90\x45\x89\xe9\x7e\xdc\x1b\xd3\xdc\x4a\xed\xc4\x8b\x33\x2f\x0a\x6b\xe8\x62\x92\x28\x8f\xdf\x4f\x72\x1e\x48\xde\xeb\x87\x55\x20\x65\x66\xe8\x98\x89\xf3\xaf\x0e\x91\xfe\x6b\xde\x38\xd6\x54\x9a\xbe\x91\xd1\xbf\x6d\xd0\xb8\x4e\xaa\x1e\x23\x10\xf9\xc7\xaa\xcc\x0e\xa9\xd4\xcf\xf7\xe8\x17\x0f\xc2\xb2\xe5\x15\xab\xd7\x5b\x45\xfe\xb3\xd3\xc1\x38\x89\x62\x90\x64\x1e\xd8\x47\xac\xf2\x79\x61\x10\xec\xb8\x05\x61\x64\x9b\x48\x1f\x43\x90\xcd\x22\xa7\x6a\x21\xf3\xec\xd3\xf4\x6b\x6e\x92\xf8\x36\xf6\xe2\x5d\xf1\xd6\xf2\x18\x7a\x76\x12\xa5\xd1\x34\xbb\xe3\x41\xb6\x88\x12\xff\x7e\xd5\xae\xe3\x24\x20\x4d\x41\xba\x5b\xb5\x66\x07\x55\xff\x47\xb2\x69\x23\xbf\x7d\xb9\xab\x1f\xfe\x73\xb7\x96\x1d\x85\x8e\xb7\xaa\xb6\x0e\x98\xbf\xdd\xac\x01\xf1\xe6\xcb\x5e\x35\x33\xf6\x36\xc2\x2e\x81\xe1\xe4\x2d\xf6\x78\x8b\xe1\x07\xf5\xff\xfb\x28\x6a\x5a\x81\x2d\x3b\x2e\x11\x33\x4f\x0a\x09\x6c\xdb\xd0\xe6\x67\x9f\xc6\xa5\x6d\x6d\x97\xdd\x56\xd4\xd9\x0a\x45\x25\xcf\xd9\x52\x1b\xeb\xfc\x76\x73\x81\x09\xdc\x7c\xbd\xba\x29\xed\x68\x5f\x45\x07\x9b\xc9\x4c\x17\x31\x14\xe6\x10\x9e\x2c\xfc\x9f\xa3\x4f\xff\x73\xbc\x95\x4d\xd3\xae\x85\x7f\x7d\xb0\xf4\x3e\xf9\x7f\xee\x93\xbd\xb6\x4c\xdb\x07\xa1\x53\xf5\x76\x1c\x45\xf0\x5d\xba\xdb\xe0\xaa\xa2\xf8\x11\xa6\x60\x64\x3a\x6d\x13\x9a\xa1\xed\x85\xae\x98\x43\xf0\xdd\xed\xe9\x88\x1d\x7f\xa2\x5d\xad\xfb\x04\x92\xf4\xfe\x98\xdf\x54\xc6\x06\xad\xea\x8f\xba\x1c\x32\xbd\xd3\xc6\x74\xda\x30\x0f\xe8\xf9\xbb\xf5\xed\x80\x49\xed\x76\xab\x2a\xf2\xe1\x5e\xc5\x49\x64\xed\x07\xbc\xcf\xea\x48\x41\x7d\x8f\xf7\xe2\xd7\xcf\xe0\x3c\x8b\xec\x42\x0b\xd7\xb2\xbd\x1b\xa2\xf6\x8a\x23\xc6\x3a\x1e\x0a\xe0\x56\x5e\x07\x92\x4e\x99\x25\x9c\xab\x5a\x9b\xd0\x38\x4a\x50\x12\xfa\xf0\xd0\xb8\xcc\x54\xd6\xe5\x3f\x8a\x53\xd0\x4a\x72\x08\x3e\x02\x08\xa5\x26\xbe\x7b\x50\xd9\xd0\x49\x0f\x8d\xa6\xcf\x89\x36\xbe\x54\xa4\x61\x1e\x58\x20\x19\x4d\xc7\x75\x3f\x88\x33\x15\x12\xf0\xef\x1c\xa4\xd9\xd8\xcc\x66\x88\x9b\xfb\x19\x30\x61\x36\x7b\xbd\x4f\x80\xe9\x2c\x8f\x5b\xde\x85\x0a\x29\xdd\xe6\x52\x7d\x5c\x9a\x69\x41\xeb\xf2\x44\x6b\xcb\xd1\x7e\xce\x24\x6b\x2f\x27\x8f\x41\xe8\xa4\xa3\xf0\xa0\x15\x7e\x30\xab\xf8\xdb\x61\x81\x7f\x20\xbd\xdb\x12\x40\x39\x0a\x39\x9c\xbe\x5c\x67\x1e\x48\xb6\x12\xc2\x03\x65\x6c\x33\x36\x6d\x2f\x43\xe3\xb3\xc6\x87\xf2\xc5\x3c\x76\x13\xd3\x01\xe3\x08\x7a\xf6\xfe\x68\x6f\x55\x2c\x28\xc7\xad\xd7\x43\x33\xcc\x4d\xb8\x6f\xa9\x07\xec\xfc\x7a\xee\x25\x59\x6e\xc2\xa1\x69\xcf\xbc\x10\x8c\x93\x68\xea\x1d\x98\x31\x5a\x15\x8f\xd2\x73\x45\xca\x9e\x47\x41\x9c\x67\x20\x41\x23\xab\x71\x02\xa6\xde\x4b\x21\x5d\x3b\x0a\x6d\x33\xfb\x0d\xa9\xf0\xe6\xeb\xd5\xb6\xac\xcb\x61\xd8\xcd\x97\xaf\x57\x37\xb7\xa7\x53\xc6\x72\x6a\x4a\x49\x41\x52\xab\xcd\x86\x51\xee\xdc\xe6\x29\x48\x4e\x55\x83\x5e\x98\xbf\xbc\x2d\x51\xb9\x76\xbc\xd4\xb4\x20\x18\x9b\x69\xba\x88\x12\xa7\x95\x67\x33\x10\x66\xde\xca\xd3\xb2\x24\x07\x67\x40\x29\x4d\x67\x97\xc5\xda\xb8\x1e\xcf\x1f\x87\xec\xdd\xcf\x79\xaa\x6b\xea\x2b\x50\x8c\x02\x70\xbf\x96\xd8\xfd\x5d\x9a\xce\xee\xcd\x3c\x9b\x45\x89\xf7\x0a\x9c\x7f\xf9\x88\x81\xf3\x09\xfb\x8a\xb0\x0f\x96\x1d\x33\x33\xf7\xdc\x67\x73\x86\xe2\x6c\xe0\xaf\x3f\xc7\xb3\xfb\xfa\xf3\xcf\xf7\x8e\x0e\x0e\x03\xf7\xe1\x8e\xd6\x93\x23\x17\x19\xbb\x17\x98\x2e\x10\xc1\x14\x24\x20\xb4\xcf\xe7\x55\xa5\x9e\xd3\x59\x89\x1f\x22\x70\x7a\xe6\xd9\x6c\x24\x9a\x4e\xab\xe2\xbd\xee\xe0\x5c\xe1\x12\xe5\xae\x1f\x6f\x07\xea\xf0\x5c\xd9\xf9\x1a\xc4\x1f\xef\xc8\x3b\x02\x23\x30\x1c\xc3\x70\xfc\xdb\xfb\xa2\x65\x94\x76\xbc\xd4\x3f\x2f\x02\x3b\x01\x66\x06\x46\x71\x1d\x78\xe8\x24\x0a\xca\x29\xbb\x33\xfc\x96\xf3\xf3\xce\x45\xad\x5c\xed\xcf\x72\xc9\x55\x68\x1d\x27\x20\xf0\xf2\xe0\x5f\x03\x51\x3a\x93\x90\x7e\x92\x3d\x85\x65\x44\xbb\xc8\x9e\xca\xac\x65\x7c\x51\x92\xfe\x23\x13\xf4\x93\x69\x52\xd9\x12\x1b\x66\x20\x99\x9a\x36\xb8\x70\x5e\xa3\xfe\x5c\xa0\xc8\x8d\x94\x09\x05\x8b\xdb\xd0\xb3\x2f\x99\x56\x78\x43\x26\xbb\x51\xc7\x0b\xcc\x64\x79\x11\xbc\xaf\x2a\x79\xf1\x1b\xfb\xbc\xf9\xb9\x1c\xc7\xaf\x0e\xc9\xc2\x8b\xed\xa2\xed\x37\xc0\xf6\xd5\x3b\x85\xb3\x55\x3f\xcd\xad\x10\xec\xcf\xd1\x5f\x5c\xff\x22\xe3\xad\x32\x94\xea\x6b\x7a\x5f\x36\x5a\xdb\xef\x3c\x04\x59\xf5\x67\xf9\xe0\xe2\x50\xb3\xf9\x39\x33\xee\x3c\xc8\xfc\x7b\xac\x64\x9b\xc0\x76\x76\xfb\xf6\x29\x94\x83\x54\x77\x6d\x23\xf6\xe2\x1f\x23\x8f\x4d\x90\x69\xbf\x61\x7e\xec\xdc\xe7\x7d\x72\xb8\xfa\xfd\xa7\x61\x8e\x7d\xce\xe7\x38\xbb\x9f\xd3\x39\xcf\xfb\xe9\x5f\x56\xf2\x7c\xeb\xa7\xe9\x1c\x7f\x7a\x98\xf2\xb1\x18\xea\x78\xa6\x1b\x46\x69\xe6\xd9\x97\x0d\x42\xac\x28\xca\x3a\xeb\x3a\xe7\x63\x29\x08\x51\xae\xef\x5c\x98\xd6\x97\x89\x85\x92\x78\x5b\x43\x9b\x7a\x3f\xc1\xce\xf8\x66\x7f\xb1\xad\x18\xe9\xdc\x59\x30\xb2\xee\xec\x28\x01\x77\x0b\x2f\x74\xa2\x45\x7a\x17\x82\xec\xfe\x74\x18\x7e\x93\xd0\xc0\x4b\x06\x42\x94\xe2\x5d\x24\xb2\x55\xe9\xef\x12\xb2\xed\xf4\x5c\x7e\x77\xf5\xee\x90\xbd\x99\x53\xaf\x7d\xbc\x55\xec\xe1\xe8\xae\x7b\x75\x61\x30\xaf\xa7\x60\xa8\x3c\xcd\xa2\x40\x2a\x96\x37\xdf\x52\xb7\x67\x86\x0e\x04\xc9\xe6\x14\xc9\x6a\xeb\xc7\x59\x02\x66\x9e\x45\x4a\x39\xe2\x1f\x7a\x61\xb4\x41\xe5\x0d\xe9\x48\x0a\xb2\xcc\x0b\x8b\x25\x95\xff\xbb\x10\xcd\x8b\x99\x3c\x60\x67\xc0\x91\x36\x2a\x5f\x3e\x10\x2c\x57\x81\x0b\x6f\xb0\xcc\x14\x7c\x7b\xf8\xad\x72\x8a\xf2\x9b\x1c\x49\xc5\x4a\xea\x6f\x37\x36\xa1\x62\x2c\x85\x43\xd0\x8a\xfa\x37\x5f\xbe\xde\x0c\x3b\x43\x5a\x1c\xf1\x72\x97\xef\x28\xe2\xe0\x7f\xfe\xab\xaa\x70\x75\xeb\x5c\xfd\x6f\x8e\x61\x0d\x7b\xf3\xff\x9b\x9b\x9b\xaf\x15\xf9\x4d\x07\xdb\xde\xc2\x70\xf3\xe5\xcb\xd7\x9b\x9b\x9b\x2f\xff\x1b\xde\x20\xf2\x52\x87\x1a\xf1\x34\xcb\xa8\x5d\x51\x62\x47\xfc\x7b\x5b\xd8\xd9\xe0\xb0\xd7\x48\x97\x57\x59\x71\xc4\x0f\xbb\xbc\xfc\xfe\x26\x36\x36\x3f\x6c\x35\xd0\xa2\x44\xb1\x2b\x8d\x14\x91\xea\xb2\x9d\xf7\x91\xdf\xda\x5b\xb4\x45\x5c\x1c\xb3\xc3\x16\xd3\x7d\x1f\xd9\x6a\xb7\xc5\x0e\xc1\xe1\xa8\xf3\x6e\x7a\xc3\xc8\xd9\x26\xd7\xea\x0c\x59\xbe\x35\x66\xa9\x01\xdb\xe5\x65\xaa\x2b\xca\xd4\x68\x38\x1c\xf1\x7c\x6b\xf8\xce\x46\x4e\x6d\x6f\x3a\xdc\x74\xab\xad\xf0\x9d\x41\xf7\x7f\x10\xc1\x83\x94\xaa\xed\x56\x37\x45\xe5\xca\x28\x86\xa5\x5c\x6f\x6e\xca\xed\x64\x76\x72\xe7\x45\xf7\x2e\x08\xc1\xdc\x0c\x9c\xe0\xef\x81\x99\x66\x20\xf9\x57\x13\xaf\x2a\x0c\x46\x54\x4b\x7e\x93\x85\x1e\x9b\xe8\xdd\xe8\x81\xa4\xb4\x25\x4a\x64\xc7\x88\xf0\x5b\x4c\x67\x73\x63\xc7\x6f\x5f\xee\x36\xbf\xb2\xce\xa6\xae\x2b\xb3\x64\xc4\x91\x32\x7e\x9b\x46\x76\xb9\x47\x11\x63\x83\x32\xfa\x6f\x17\x3c\xa8\x10\xe2\x96\xd4\xca\x80\xd4\xc6\x6d\x46\x9c\x39\x8c\xe2\x0e\x74\xd7\x55\x31\x7a\x68\x6a\x4d\x1c\x74\xe9\xd0\xd0\x9a\x18\xe5\x46\xcf\x2c\x43\x13\x16\x01\x7d\x96\xe2\xa0\x1d\x72\x73\xfb\x39\x72\x0d\x86\xc5\x59\x46\x5d\xda\x01\xb9\xec\x53\xd8\xeb\xb0\xe3\x13\x23\xc9\x77\x8d\x90\x9b\x5b\x52\xdb\x9f\x04\x6a\xee\x78\xd8\x7f\x5b\x8d\x36\xb4\x9e\x23\x57\xf0\x45\x6a\xd8\x69\x35\x87\x52\xbb\x2b\x40\x52\x13\x55\x4e\x96\x14\x72\xa4\x63\x38\xa7\x60\x78\x5b\xed\xf2\xec\xc8\x6b\x77\x27\xba\x38\x9b\x04\xf4\xab\x21\xb5\xa1\x15\x1a\xb1\x1d\x90\xb9\xa5\xa9\xb9\x43\xb5\x09\x43\xe7\x5e\x4d\x8d\xcc\x59\x06\x8f\x6d\x02\x9f\x39\x0c\x1f\xb1\x6e\xbc\x44\xfd\x30\xbc\xd6\xdc\x09\xe8\xe5\x80\x78\x89\x27\x1e\xb9\xb4\x19\x6c\xae\xe3\xa4\x3f\xf1\xa2\x3e\x15\x72\x0b\x54\x66\xa0\xc1\xcc\x66\xc8\xa5\x43\xb5\x23\xa7\x27\x2e\xec\xd7\x68\x3e\x20\xc4\x74\x10\x18\xd0\x60\xc8\xe5\x44\x6f\x2f\x2d\x22\x86\x93\x86\x90\x5b\x0d\x2e\x1c\x34\xda\xf8\xc4\x23\xa1\xcd\xa8\xe9\x00\xe7\x04\x59\xc2\x7b\x4a\xd7\xce\x24\x4c\x35\x06\x8a\x2a\x88\xca\x22\xe3\x17\x31\x6a\xcb\x1d\x48\x78\x6c\xe9\xed\xb9\x1d\x0a\xae\xd9\x13\x31\xbb\x37\xfc\x36\x58\x92\x8b\x89\xc6\x27\x13\xcd\x81\xf6\xb2\x99\x99\x1a\xbf\xb4\x1a\xfc\xdc\x08\x85\x7c\x42\x90\xd9\x80\xc8\x20\xd0\x87\x73\x4b\x83\xcf\x76\x40\xbe\x5a\x84\x81\x0d\x02\xfa\x75\x72\x39\xcd\xc0\xea\xa9\xd0\x0a\x45\xcf\xd4\x85\xdc\xd4\x9e\xe6\x46\xf0\x82\x23\xbd\x4d\x02\x88\x0d\x82\x0c\x02\x21\xea\x1b\x01\xb9\x64\x19\x1a\x73\x18\x35\xb3\x7b\x82\x6b\x6a\x0f\x2e\x78\xed\xe6\x83\x67\x95\x1c\x2d\xdb\xbe\xb5\x88\x5c\xb6\xb7\xb2\x87\xd8\x0a\x79\x6c\xa2\xbd\xa4\x2c\x33\xc3\x9c\x5e\xfb\x75\xe4\x3d\xcd\x0d\x66\x91\x1b\x81\xea\x5b\x0d\x6e\x66\xf7\xb8\xb9\x19\xa8\xcf\x0e\xd5\x9c\xdb\x81\x3d\xb7\x7b\xaa\x37\x20\xd4\x85\xa1\x2d\xe6\x86\xde\x86\x16\x85\x2f\x0d\xed\x05\x4e\x74\x1e\x0e\xb4\x97\x99\xc3\xa8\xaf\x0e\x85\x35\x06\x41\x73\x3e\xd1\xb9\x67\x93\x6a\x16\xfd\xe3\xbc\x89\x3b\x09\x39\x38\xd1\xd2\x3e\x4b\xb5\x63\xc3\x6b\x5b\xda\xb2\xe5\x03\xa2\xe6\x55\x24\x59\x0a\x4f\x1d\xaa\x85\xb3\x34\xee\x8c\x96\x6d\xcc\x64\xd4\x9c\xed\xf1\xa9\xa1\xa9\x0b\xb6\xd3\x5d\x8c\x96\x6d\x68\xf5\x78\xc8\x32\xea\x83\xa9\x0b\xee\x50\x4e\x5d\x23\xf0\xfb\x06\x43\xe6\x86\x10\xf5\x27\x04\x8d\xb1\x9d\x87\xb9\xa1\x8b\xcf\x83\x06\xea\x63\x73\x69\x20\x99\x2e\x9b\xfe\x80\xa0\xbf\x39\x3a\x07\x07\x21\x07\x6d\xe6\xc9\x1d\x77\x16\xa1\xa8\x90\x0c\xb7\x88\xad\x89\x1e\xe3\x76\xa0\x64\x13\xe2\x25\xd6\x85\x38\x9f\x68\x38\x1c\x6b\x55\x79\x8d\x4f\x4d\x21\xf6\x50\xff\x1c\x9d\x4b\xc7\xda\x5a\x4e\x36\x43\x3f\x9b\x04\x1d\x1a\xfa\x30\xdf\xd6\x2b\x3f\xb7\x24\xb2\xe9\x68\x78\xd5\x3e\x39\x03\xa1\xba\x34\x24\xfc\xd9\x62\xfc\xbe\xa1\x35\x67\x93\xe0\x05\x1a\x1d\xbc\x69\xe8\xc3\xbe\xd1\x68\x87\x13\x62\x06\x27\x44\x4a\x02\x4d\x7d\xa5\xdc\x9a\x27\xf5\xd9\x6a\x70\x70\x97\xa7\x09\x41\x2e\x8d\xcf\xe2\x49\xe3\xe7\x76\xa0\x9c\xe4\xc9\x0a\x9e\xfa\x48\x56\x94\x1b\x3f\x4f\x74\xc1\x1d\x7b\x24\x74\x98\xe1\x1c\xe8\x6a\x56\xca\x93\x7c\x1d\x04\xc2\xdc\x61\x84\x0c\xd9\xaa\x15\x0a\x59\x61\x93\x07\x64\xbd\x5b\x66\xd5\x37\x5d\xf4\x07\x5a\x89\x43\x03\x8d\x8b\x9d\xd6\xf9\xfe\x6d\xdb\x3f\x9c\x0f\x08\x1e\xf9\xc7\xdc\x5e\x3e\x35\xa8\x40\xcd\x27\x1a\x97\x1a\x9a\x50\xca\x34\x70\x16\x06\xc1\x47\x86\xc6\x27\x63\x1d\x42\x7b\x11\xd3\x32\x36\xe9\x53\x81\x31\xb7\xbd\xf6\xcc\xe9\x89\xd0\xd2\xdb\x18\xcb\xc0\x9c\xed\xa5\x2f\x03\xef\x01\x9f\x22\xfb\x62\x9e\xfa\xa8\x9f\x2c\x85\x37\xd1\x33\xbb\x21\xce\x2c\x66\xe1\x4e\xf4\xf8\xd5\xd0\x86\xc8\x66\x66\x96\x46\x13\x2c\x43\x7f\xb3\x09\xf5\x79\xa0\xe1\x73\x2b\x80\x98\xd5\x60\xdd\x4d\xbb\x1a\xc8\x6c\x3e\x94\x5b\xf9\x50\x6a\xd7\xb6\x90\x19\x3d\xde\x47\xf5\x0a\x3b\xd3\x79\x38\x69\xa8\x4b\x53\x17\x9b\x2c\x23\xce\x27\x44\x06\x6d\xaf\x8d\x19\x14\x3e\x33\x08\x84\x89\x38\xf2\xfb\x1f\xe2\x47\x54\x80\xb0\x58\x6d\x20\x5c\x18\x68\x7c\x66\x50\x08\x4f\x69\xdf\xa0\xf0\x85\xd5\xe0\xb0\xb1\x2c\x60\xc3\x25\x89\x4d\x1a\x2d\x84\x5b\x0b\x43\xe7\xb2\x89\xd6\x44\x3a\xed\x53\x01\x3f\x73\xa8\xd6\x7f\x0f\x08\x15\x9b\x2c\xc9\x5d\xfe\xf7\x6d\x04\xd9\x65\x30\xd9\xb2\x11\x49\x69\x0a\xaa\x2a\x3a\x94\x0b\x47\xc8\x36\xd8\x1e\xdf\xb4\x1b\x22\xb4\x34\xa1\x4f\xa9\xe2\xcc\x58\xb6\xff\x6d\x35\xd4\xa5\x15\xd0\xa9\xd1\x8a\x38\xa5\x01\x5f\x51\xdf\x0d\x9a\x64\x4c\xed\x05\x33\x74\xd6\xd5\x31\x7e\x2c\x2b\x18\x39\xd1\xb9\x39\xf2\x27\xd1\x87\x43\xb5\xab\x4a\xba\x10\x71\x72\x40\x67\x86\xd4\xce\x2c\x42\x8c\x8d\xd0\xef\x53\x4a\x15\x5f\x98\x78\xee\xe8\x5c\x3e\xd1\x5e\x7c\xca\x85\x92\xa1\xe1\x73\x27\x50\xa7\x0e\x01\x53\x83\xe1\x67\x76\x20\xb8\xfa\x22\xe2\x94\x40\xcd\xac\x86\x01\x59\x5a\xe4\x64\x45\x95\xd5\x2e\xcd\x2b\xad\xa8\xaf\x61\xa4\xaa\xd2\x6d\x55\xa5\xb1\x3e\xa5\x34\x67\x96\xa6\xb8\x08\x8f\x1d\x82\x5e\x16\x7c\x16\xf1\xa8\xb5\x1c\xc9\xec\xeb\xb0\x55\xdb\x1f\xfd\x8d\x65\x5e\xe6\x06\x01\x73\x96\xc2\xe3\xf2\x3b\xfd\x3c\x21\x48\xdc\x0a\x05\xb7\x4a\xfc\x5f\x59\x8a\xf5\x15\x5c\xa5\x14\x8c\x97\x24\xb5\xad\xa0\x78\x2a\x29\x82\x47\xb9\xf1\x2b\xd0\x79\xcc\xd0\xf0\x67\x87\x59\xb8\xc8\x3e\x51\x0c\x31\x18\xf2\xd9\x24\xd4\xe5\x20\xe4\xa1\x1d\x1a\xf1\x84\x50\xfa\x13\x3d\x72\x27\x1a\xbf\x5c\xb7\x87\x65\x56\x21\x8b\x96\xc7\x51\xb3\x57\x43\x13\xdc\x81\xa6\xb8\x5c\x83\x7f\x1a\x78\xd1\x7c\xda\x5b\x84\x6c\x67\xf1\x34\xa6\x58\x5f\x50\x78\x49\xf1\x55\x59\xc6\x55\x49\xc0\x54\x4e\xa4\xd8\x98\x75\xa3\xbe\xac\x88\xbc\xa4\xe0\x6d\x11\x53\x48\xd6\x13\x1f\x15\xd8\xe6\x64\x85\xee\x89\x92\x02\x07\xcb\x98\x1c\x2c\xc5\xc7\x8d\x32\xcf\xec\x32\x9a\x4f\x25\xb6\x5f\xf3\xc7\xf6\xda\x38\xf2\x27\xd6\x13\x79\xb1\x8b\x57\x75\x0f\x3e\x97\x94\x2e\xe4\x05\xc5\xa1\x51\xbb\x0a\x6e\x74\x54\x9f\x56\x65\x5a\x54\x15\xdf\x27\x59\x4f\x88\x50\xff\x4c\x42\x6d\x3a\x01\x8d\x5b\x3d\xc1\xb5\x18\xf8\xea\x50\xad\xcc\x58\xb6\x3c\x8e\xe6\x68\x05\x23\x55\xc5\xe7\x69\x11\xe7\xc6\xaa\xda\x1e\x09\x0a\x4e\xb3\x5e\x2b\x1b\xe8\x34\x6e\xe8\x5c\x93\xa5\x38\x6b\xdc\x10\x67\x46\x63\x98\x57\x34\xc8\xb1\xe4\xbc\x1a\x3a\x47\x98\x1a\x0f\x39\x1c\xcb\x51\x3c\xb4\x19\x75\xe9\x30\x10\xc5\x64\x62\xa2\xab\xa9\x43\xab\x4b\x53\x62\xdd\x81\xf6\xe4\x3a\x3d\x9e\xe8\x23\xfe\x2f\x89\xc3\x0c\xd2\x35\xca\x0b\x8c\x99\xa3\xbd\x60\x6c\x0f\x61\x00\x07\x1d\xaa\xed\x5b\x0d\x27\xb7\x18\x72\x56\xfa\x9e\x11\x5b\x28\x67\x2b\x7d\x2a\x33\x18\x2c\xb7\x19\x84\x49\x58\x66\x6a\x82\x5b\xc8\x7d\x4b\x1e\x90\x44\x58\x64\x07\x2a\x66\x2f\xc9\xa5\x4d\xe1\xa8\x8e\xc7\x52\x93\x80\x65\xb8\xa5\xa1\xd1\x09\xe5\xb5\x5c\x53\x9b\xb8\x1a\x9e\xba\x5c\x2f\x5b\xe1\xdf\x54\x6a\x65\x48\x76\xbc\xd4\x76\x74\x39\x75\x1d\x66\x06\x2d\xaf\xfd\x6a\x31\x2a\xb4\xa9\xd6\xcb\xb0\x93\xba\x86\xf6\x52\xe4\x6c\x80\x81\x18\xdb\xe9\x3e\xb2\x8c\x11\x53\x81\x38\xb7\x02\xa5\x3f\x21\x66\x99\x45\x08\xee\xb0\x33\x59\x0c\xa9\x56\x19\x8b\x09\xdc\xb7\xa4\xe6\xc2\xd0\xb0\xbe\x4d\xa8\x3e\xb2\x73\x96\xc2\x73\x43\x6a\x85\x43\x69\x31\x17\x95\x66\x97\xed\xf2\xb4\x02\x45\x4e\xf4\x61\x47\x50\x45\x7a\xb0\x6c\x2f\xb8\xe5\x7e\xfd\xd2\x3f\xde\x21\xb3\x1e\xef\x0f\xc2\x36\xac\x72\x43\x1f\xf9\x13\xc0\x79\x4d\xc0\x8d\xb6\xaa\xbc\x28\xaa\xca\x71\x53\xbd\xa2\xd5\x1b\xce\xed\xb0\x95\x59\x9a\xf8\x6a\x50\x2c\xea\xd3\xdc\x21\x1e\x5c\xbb\x01\x5f\x2d\x86\x0c\x47\x21\xdf\xb4\x89\x97\xb9\xb1\xc1\x9f\x4d\x08\x85\x4e\xa8\x80\x8f\x2c\x8d\xf4\xd9\x4e\x8b\x18\x76\x5a\xfb\xed\xa3\x3c\x45\x8f\x5c\x44\xc7\x6a\xa8\x18\xe5\xc6\x99\x49\x88\xb1\xed\xd5\xb4\xe8\xa5\xb5\xc4\x97\x76\x15\xff\xf8\x67\xe4\x93\x02\xc2\xc7\x27\xd6\x13\xdb\x85\x8f\xf8\xb4\x20\x29\x7c\x5b\x80\xea\x48\xec\xbe\x20\x1b\xae\xf1\x76\x66\x07\x4f\x99\x1d\xb6\xe6\x13\x4d\xcc\x4c\xed\x21\x9b\x10\xdd\x6c\x12\xaa\xb9\xc1\xbc\xc0\xb2\xfd\xf8\xd9\x64\xc8\x86\xe5\xb5\x32\xc5\x43\xfa\x6c\x2d\x46\xcf\xdd\xc5\x06\xaf\x35\x8d\x3e\x15\xe0\x89\xc1\xc0\x25\x4b\x95\xf1\xde\xae\x71\x96\x22\x2b\xcc\xc1\xe6\xa5\x8c\x9a\x2b\x1f\x19\x04\xc2\x4e\x1e\xb6\xc2\xee\x55\xfd\x95\xbc\x08\x75\xe9\x04\xf0\xd9\x90\x50\x7e\x46\xa2\x9c\x7f\x69\x6a\x22\x3c\x14\x13\x54\xad\x19\x3b\x34\xd6\x17\x34\x03\xe1\x3b\x69\x05\x2a\xe6\x10\xe4\xd2\x5c\xa2\x78\xfb\x12\x5b\x81\x92\x3b\x0c\xbd\x34\x08\x15\xa3\x7c\x75\x2c\xba\x3b\xf9\x20\x21\x42\xa3\xf4\xe9\x8a\xe7\xd6\xd3\xb8\x8b\xca\xc5\xbc\x48\xf3\x5d\x1d\xe7\xc6\x72\x57\x9d\x2a\x34\x47\x8b\x3e\x9c\x8c\x25\x92\x98\xe8\xec\xdc\x0e\xd5\xbc\xe2\x77\x6e\x30\x6a\x50\xf8\x7b\xab\xaa\x83\x91\x82\xda\x85\x63\x19\x0e\x49\xd6\xc3\xdb\x2c\x85\x23\xdb\x5e\xb2\xf4\xc2\x97\x15\x51\x16\x69\x52\x92\xb1\x17\x5a\xc7\xdb\x92\xa8\x18\x9c\x46\xb1\x7d\x2a\x50\x1f\xaa\x71\x89\xac\x60\x2f\x53\x01\x53\x25\x95\x26\x19\x49\x79\xa1\xc7\x52\x25\x67\x26\x8b\x07\x0d\x31\xb5\x97\xe4\xb3\xa1\x73\xc8\x87\x9f\x27\x12\xee\x39\x5a\xd3\xb7\x18\x25\x9f\x34\x38\x64\x37\x10\xf4\xca\xf1\x82\x8c\x62\x81\x2a\x8e\x15\x1f\x8e\x44\x9c\xec\x09\x38\x3f\x15\x95\xa6\x26\xa9\xdc\x58\xf6\x71\x5a\x86\x02\xc9\x2d\xc5\x82\xe7\x9d\xdf\xc3\x0d\x7e\x78\x19\x6b\x72\x6a\x97\x94\x24\xa5\xd9\xd3\x31\xa7\xa3\xe0\x64\x5b\xc0\xf8\xb1\xaa\x34\x95\xb1\x42\x4b\x32\x1a\x17\x31\x64\x68\x2f\x4e\xb7\xad\xf8\x6a\x0f\xc5\xa7\xb1\x64\xfb\x72\x97\x44\xfe\xcc\xc9\xd8\xc3\xb9\xb6\x3a\xa2\xca\x29\x3a\x56\xe0\xc0\x96\x3c\x2a\x1b\x2b\xfc\xdf\xd0\x67\x45\x0e\xc2\x76\xf1\xb1\xec\x43\x45\xc6\x39\x4e\xf6\x9d\xa9\x88\xf1\x72\x55\x77\x8a\xc6\x6c\x28\xde\x8b\x32\x76\xc0\x3f\x4f\xf2\x50\xc4\x04\x05\x6f\xb7\x05\x4c\x21\x05\x95\x1b\x2b\xb0\x3d\xb4\x08\xe7\xf5\x78\x3d\x7e\x2c\xfb\x06\x27\xe2\xeb\x71\x6e\xd1\x6f\xa4\xff\x6e\xfd\xcc\xa0\x15\xc8\x9f\x96\x01\xae\xca\xa2\x4a\xf6\x44\xa5\x49\xab\x3e\x3d\x15\x30\x72\x24\xfa\xb0\xa7\xe3\xa8\x4f\x06\x87\xf8\x71\x7a\x1c\x8e\xf2\xb3\x63\x32\x50\xbb\xea\x48\x40\xba\xba\x54\xee\x85\xcd\x2b\x24\xf2\xf5\x63\x34\x15\x9f\x1c\x8a\x2a\xc9\xc9\x90\x57\x04\xa5\xd9\x11\x65\x2c\xe4\xa8\x59\x64\x35\x78\xac\xcc\x1d\xfc\xf0\xa0\xbf\x21\xbf\x27\x90\x1f\x1b\xb1\x51\xc6\x2c\x77\xdc\x79\x29\x72\x1e\x94\x0f\x88\x90\x1b\xcb\x50\xa4\x65\x1f\xc5\xab\x45\x69\x9f\x5d\x9c\x51\x7c\x72\x84\xfa\x21\xd2\xaa\x24\x53\xf6\x56\x7e\x51\x95\xa9\x72\x84\xf2\xd9\x2a\xa6\xef\xdb\xfb\x50\xc6\xf8\x76\xe1\x9f\xde\x76\xd9\xa2\x4f\x72\x81\xb1\x88\x5e\x9d\xd3\x14\xbe\x2a\x29\x4d\x94\xcf\x8d\x84\xa2\x3d\x21\x32\x19\xf2\xd5\x61\x8a\x5c\x2e\xe6\x56\x63\x86\x15\x2e\x16\x18\x61\xe8\x62\x63\x27\xef\xad\x73\x32\x7f\x85\x7f\x52\x15\xb7\x57\x98\xd7\x7a\x1a\x53\x0e\xa2\x17\x52\x30\x53\xad\x72\x2c\xd4\x36\x42\x11\xda\xcf\xb8\x6f\x11\x7c\x62\xe8\xec\xba\xbc\x10\x4b\x86\x4e\xe3\xa6\xce\x41\xfb\xf5\xd0\xf3\xa8\xaf\xe1\x75\xae\xa7\x3a\x94\xaf\xe6\x4e\x00\x97\x16\xd1\xcc\xd0\x18\x49\x0c\x60\x6a\xd4\xfe\xb0\xaf\x9b\xbe\xa8\xcf\xe0\x04\xe7\xb1\x89\xce\x61\x4a\x8f\x83\x63\x09\x9b\x3b\x3a\xbf\x1c\x10\x5c\x6c\x79\x64\xdd\x9e\x6b\x07\x98\x3b\xd0\x26\x2e\xa7\x3c\x6c\xd5\x19\x4b\x24\x6e\x37\xd8\xf9\x24\x80\xf9\x80\x58\x8d\x5f\x96\x8e\xf6\xe0\xea\xad\xc8\x45\xb9\x0a\xe2\xc3\x0e\xe1\xc2\x22\x60\xee\x50\xad\x92\x7e\x83\xf7\x4c\xed\x61\x2e\x6b\x2a\x66\x07\xf0\xd9\xc6\xd4\x07\x87\x51\x73\x9b\x80\x73\xcb\x6b\xdb\x28\x4f\x19\x48\xf8\x86\xbd\xb5\xa0\x44\xad\x7e\x2f\xc6\x8e\x2c\xa5\x8e\x58\x7a\xd1\x67\x51\xdc\xd7\xb9\xac\xfe\xdb\x92\x5a\x4b\x63\x59\x95\xd5\x27\x7b\xf9\xd3\xc8\x5b\xe1\x4b\x56\xe6\x06\x1b\x65\x1b\xc6\xcc\x46\xcf\x7b\xf6\xb7\xcd\xbf\x41\xc5\x13\xd7\xc5\xbb\xb2\x52\xe5\xa3\x55\x7b\x02\xd2\x45\xf7\x48\xae\x56\x95\x11\x43\x6e\x6e\x85\x22\x6d\x05\xa2\x6a\x07\x8b\x8a\x8e\x21\xc9\x58\x53\x41\x79\x90\xaa\x72\xc3\xba\x2c\xc2\x5a\x03\xe5\xc0\x5d\x7e\x6e\x85\xfc\x1c\xd1\x2d\x65\x89\x23\x4c\x1a\x1a\xba\x01\x2d\xaa\xad\x4f\x74\x2e\x37\xb5\x66\x58\xd7\x53\x7a\x5c\xec\x04\x34\x66\x28\x19\x04\xca\x69\x7e\x14\x82\xc4\xed\x80\x87\xa2\xd6\x24\x4c\x9d\x9b\x5b\x01\x8e\xc6\x66\x25\x5f\x2a\x3f\x56\x55\xae\x23\x2a\xea\x48\xf5\x21\xe2\x91\x17\x95\xa6\xb2\x5b\x57\x09\xc8\xd4\x90\x5a\xfe\x9e\x8f\xd5\xf2\x54\x79\x34\xae\x7a\x36\x54\x6e\x6e\x31\x2a\x57\xce\x39\x35\x9f\x0f\xd6\x51\xe0\x48\xc1\xc5\xb6\xec\xf3\x34\xe5\xab\x0f\x86\xc6\xcb\x0e\x43\x2e\x8e\xd8\xd7\x2b\x7a\x86\xf4\x4f\x41\x0e\x56\x63\x1f\x72\xa2\xbd\x34\x26\x3a\x7c\x5d\xff\x26\xca\x86\x36\x24\x87\x42\x2c\xa3\x1c\xc1\xe9\xbe\xc4\x96\x06\x31\x49\x6b\x62\x28\x6f\x99\x68\x0b\x72\x58\x8c\xdf\xea\xf1\xfd\x8b\x43\x41\x67\x66\x85\x22\x34\xba\x5c\x73\xac\xe1\xb8\xd5\x13\xe3\x81\xae\xbe\x22\x9f\x3b\x99\x67\x6c\xfb\x56\x9d\x4b\x6d\x61\x9f\x8e\xd1\x1d\x01\x23\x55\x84\x53\x42\x39\xcf\x23\x19\x9a\xc8\x4e\x74\x71\x6c\x33\x6a\xae\x10\xb3\xd8\x08\x45\x49\x29\xf1\x69\x2a\xfb\x34\x2f\xaa\xbc\x20\x28\x3c\x3d\x56\x39\x81\xf2\xe9\x8e\x02\x49\x49\xac\xf5\xa3\x92\x9c\xd8\xc1\x42\xae\x8b\x7e\x5f\x8f\x73\x24\x45\x08\x29\x9f\x46\x76\x3a\xd2\x31\x5a\x90\x54\xb2\x23\x77\x21\x2d\x43\xb1\xce\x3b\x3a\x32\x86\xa3\x98\x50\xb6\x21\x17\x34\x8a\xf2\x82\xda\xe6\x04\xec\x85\x43\xfa\x2e\xca\xa2\x58\xa6\xa0\xd8\xd0\x6c\xcb\x8a\x12\x52\x90\x13\x36\x70\x79\x35\x36\xe3\x16\xb1\xa4\xd0\x24\x2f\x63\x22\x8d\xe2\x90\x02\xdb\xc5\xdf\x6b\xec\x3c\x8b\x93\xb5\xcc\x7e\x46\xac\x5c\xe5\xc6\x3f\x02\x2f\x37\x62\x8f\xcb\x29\xee\xea\xf7\x1a\x07\xe5\x35\x3e\x2e\x57\xd8\xa5\x29\xee\x8e\x8d\xd5\x98\x01\xd9\xc2\xa7\xb7\x72\x9c\x8d\x67\x6f\xb0\x93\x8d\xb6\x14\xd8\x9e\xca\x0a\xd9\xdd\xfc\x4d\x50\x78\x49\xc7\xd7\x76\xa8\x63\xb0\x7b\x18\x93\x5b\x2e\xdf\x11\x5e\x47\xcf\x2e\xc6\x77\x86\x35\x2f\x44\x3d\xde\x98\xe8\xdc\x7c\xa0\x73\x8b\x1a\xa7\xeb\xef\x35\x2d\xc7\x6b\x95\xf9\xf9\xc6\x18\xc3\x0c\x10\x26\x35\x67\x56\x27\x3a\xfe\x8c\x7a\x03\xce\xd3\x2b\x3b\x2f\xf9\xeb\x71\x8b\xcb\x71\x09\xc7\xd8\xce\xb0\x18\x07\x22\xfd\xab\x0c\xcc\x0c\x8d\xc4\x1d\x9a\xc7\xac\x46\xbb\xc4\xa4\xd7\xc9\x62\xd8\x42\xf6\x5a\xd9\x85\x46\xa7\x0e\x41\x37\xed\xc5\xfa\x37\x85\x50\x9f\xc7\x72\xb7\xaf\x94\x58\x36\x34\x35\x3c\x76\xba\x30\x77\x18\x64\xcf\x74\x3a\x96\x5b\x7d\x0a\x66\x5c\x3d\x97\xaf\x0b\xb1\x3e\x41\xd8\xa6\x89\x14\x90\xf1\x0c\x8d\x93\x4d\x09\xc7\xed\x62\x3e\x48\x9c\xd9\x81\x03\x9d\xd6\x51\x7f\x7c\xb6\x88\x66\x60\x6a\x76\x29\xef\x8d\xf9\xcc\x4f\xc3\x30\x85\xa3\x64\x21\xee\xc8\xb4\x2a\x17\x73\x72\x58\x61\x97\x9b\x63\x8d\x62\x4e\x54\x09\x54\x5f\x62\x68\x4c\x6e\xb4\xa1\x05\xf9\xc8\xd4\x0c\x4c\x20\x5e\x70\xa4\x4f\xdb\xdd\xab\xbf\x9d\xbb\xfb\x1c\xff\xbd\x31\xca\xd2\xc8\xdc\xd4\xc5\xb9\xed\xad\xc7\xbf\x6c\x67\xf1\xc4\x61\xea\x58\xf4\xec\xbe\x86\xab\xe8\xb9\x43\xf9\x74\x80\x74\x35\xd6\x6a\xfb\x58\x97\x2f\x62\x94\xae\xc6\x76\xa0\xbe\x1e\x7c\xee\xc6\x96\x52\xe3\x96\x8a\xf5\xb7\xe3\xb4\xc8\x98\xda\x0b\x5c\x8d\x1b\x1b\xf0\x75\x42\x90\xb9\x11\xc0\xb0\x9a\x47\xc8\x2c\xa2\x19\x3b\x0c\xb9\x5c\xdb\x2c\xbd\x74\xe8\xf6\xd2\x90\xb1\x6c\xd0\x50\x5f\x6d\x8f\x2c\xf2\xaf\xf5\x7c\x1b\x97\xb1\x14\x1e\x14\x31\x75\xb3\x4e\xe7\x08\xbe\x85\x6a\xbe\xca\xbd\xb4\xd9\xdc\x6e\x88\x75\x4e\xc6\xae\x7f\xaf\x31\x6c\x8d\x6d\x08\x17\xd7\xd8\xc3\x0f\x55\x95\x57\x44\x95\x9b\x1e\xc7\xae\xdd\x32\x28\x0e\xa9\xb2\xd2\xa5\x3b\xe2\x47\xb1\x8f\xe6\x04\x1d\xc3\xc7\x62\x77\xf5\x5b\xc6\x76\xb8\xf0\x77\xc5\x19\x66\xe5\x77\x7d\x25\x50\x5f\x4b\x1d\xe0\x33\xab\xe7\xcc\x80\x3e\x5c\xff\x46\xf3\x70\xf2\x8a\xbd\x50\xb0\xc4\x0a\x99\x81\x99\xa9\x8b\x1c\xca\x5d\xec\xd0\x98\x59\x1d\x6c\x81\x6c\x48\xd2\x9a\xa8\x7c\x6a\xd1\x58\x5f\x25\x68\x84\x1d\xbe\x10\xfa\xa4\xa5\xab\xa9\xc3\xf8\x99\xa3\xf3\xc8\xee\x10\x8d\xd0\xd0\x85\xd5\x7a\x8f\xc9\xf0\xf3\x72\xae\xa8\x5d\xfb\xc1\xd4\x91\xe3\xf9\x24\x88\xe1\xa4\x21\x4e\xed\xe7\x98\x98\xe8\xdc\xd4\x62\xc8\x50\x6f\x08\xdf\xec\xd7\x56\xdd\xd7\xb9\x5d\xcc\xb5\x6c\xac\x41\x11\x2f\xb1\x15\xaa\x0f\xc8\x6f\xaa\x35\x80\x7a\xfd\x65\xed\x3f\x0c\xcc\x59\x66\xdb\x76\xab\xef\x4b\x9b\x6a\xcf\x1c\x8d\xcc\xec\x65\x7b\x06\x42\x1e\x4e\x08\xa1\x5a\x87\xe1\x51\x59\x9f\x65\x8a\x71\xbe\x8b\xf2\x79\x96\xe1\x23\x3b\x20\x73\xa0\x09\xee\xee\x9a\xc3\x7a\x1d\xb4\xd6\x19\x8f\x59\x54\x1b\x5a\x01\xed\xa1\x5c\x99\xeb\xad\xe6\xcc\x37\x73\x0a\xdf\x22\x9a\xc8\x1f\x03\x84\x85\x36\xc1\xcf\x2c\xaf\x1d\x5b\x5e\xbb\x98\xa7\xb3\x18\x98\x1b\x52\xfb\xd9\x62\xe8\x6c\xa2\x4f\x5c\x9b\x20\x03\xa7\xe7\xcc\xec\x40\x79\x64\x19\x71\x5e\xd8\x41\xe9\x6f\xa9\x85\xea\x52\xa5\xdf\x55\xfc\xfb\x2c\x53\xe7\x18\xad\xcc\x5e\xb6\xfc\x92\x7e\x2b\x33\xa8\xb6\x30\x54\x84\xd5\xda\x4c\x7f\xb5\x8e\x33\x5c\x8c\x96\xed\xa5\xa1\x71\x73\xab\x21\xc4\x2c\x35\xe9\xdf\x7c\xf9\xf2\x79\x87\x46\x3e\x79\x83\xe2\x45\x27\xab\xa2\x39\x48\xe2\x24\x9a\x7b\xd5\xe6\xad\xed\xeb\x57\x0e\xd4\xba\xf6\x1c\x10\x66\xe5\x79\xb1\x03\x87\xc0\xea\x3d\x69\x4a\x0a\x92\x56\x9a\x7a\x6e\x08\x0e\x9e\x3a\xcb\x37\x9e\xb3\x25\xc5\x53\x5b\xe9\x8e\x6d\x8f\x1d\x96\x27\x2d\x2a\x0a\xcb\xfb\xc3\x64\x6f\xbe\x5e\xd5\x3b\x1f\xcd\x24\xba\x2d\x0f\x76\x1d\xdd\x93\xf2\xe5\x9f\xc5\x76\xb4\x7d\xf1\x5d\x74\x58\x72\xf3\xf8\x58\xb1\x9f\xf0\xe8\x19\xb2\xfd\xf3\x8a\xfb\x67\x2a\xa9\xf2\x88\xda\xfd\xf6\x01\x38\xc9\x36\x21\x90\x40\xf6\x49\xa7\x2b\x0f\x1d\x93\x6c\x7c\xda\x31\xc9\x56\x75\x68\xab\x68\xfb\x3e\x89\x20\x28\x15\x14\x80\xb0\xd8\x1f\xef\xe6\x9e\xb3\xb7\xc5\xc6\x73\xb6\xa5\x76\xe8\x4a\x9a\x62\x6f\xaa\x38\xbe\xba\xbf\x12\x81\xe9\x80\xe4\x80\x44\x4f\xf1\x75\x64\xe7\xfe\xe6\x8e\xfd\x77\xd1\xdb\xda\xa9\xbd\xde\x95\xfd\x26\x5a\x52\xb9\x11\xf7\x7e\x7b\x43\x6e\x7a\xc1\x76\xdd\xef\x72\xe0\x74\x75\x47\xcd\xde\x49\xa4\x5d\x2f\x78\x9f\x01\x1e\x3c\xd8\x7a\xa8\x77\x17\x78\xcc\x11\xd1\x7d\xc7\x13\xc5\x0f\x17\x5e\xdb\x72\xee\xfc\x6c\x0a\xe6\x20\x29\x81\xf5\xc0\x11\xf2\xb3\xfb\xbe\xaf\x53\x3b\x8a\x4f\x1c\xa4\x7f\xbf\xdd\xee\x91\x3b\x74\x8c\x1f\xcc\x4d\x98\x17\xea\xa5\x8b\x03\xee\x61\x71\x06\xf8\x7a\x2c\x37\x0f\x1d\xef\xbb\x2e\x37\x92\x57\x17\x28\x1d\x2d\x95\x99\x89\x0b\xb2\x7a\x3b\xa8\xfc\xae\x23\xe7\x57\xe5\x51\x3e\x2f\x03\x89\x67\x1e\x0f\x30\x26\x84\xa3\xe9\xc9\xfd\xe4\x67\xf6\xe5\x23\xe5\x9a\x59\x54\xec\xed\x1e\x80\x34\x95\x67\x66\x78\xee\xa0\x60\x36\x4b\x40\x3a\x8b\x20\xd2\x6a\x03\x3b\x53\xb8\xe5\x94\x16\x6b\xc2\xf1\xa6\x25\x85\x39\x84\xe7\xae\x28\xa8\xfc\xab\xb7\x3e\xb3\x47\xcd\x80\xed\x9f\x3d\xc7\x08\xb2\xc4\xb3\xab\x8b\xa7\xae\x3b\x5e\xdc\x9a\x9b\x1e\x34\x2d\x0f\x22\x33\xbd\xb8\x72\x1a\x9b\xc5\x89\xd3\xeb\x60\xa5\xb8\xf0\x42\xc5\x6d\x4b\xcb\x0b\x40\xcb\x75\x13\xe0\xae\x30\xa6\x35\x07\xc9\x05\x07\x32\x2b\xf5\x47\x61\x6d\x42\xe5\x45\x53\x72\x2d\x7e\xaa\x7e\xfe\xd6\x03\x0d\x07\x3c\xe1\xea\x5d\xba\xba\x8e\x1c\x33\x33\xef\xf6\xf1\xac\x3c\x1c\x30\x8c\x42\x2f\x8b\x92\x3b\xc9\x0b\x5d\x08\x6a\x87\x18\xe6\x30\xf3\x62\x08\x86\x85\xa8\xa9\xda\xc6\x2f\x4a\xfc\xcc\x3c\x8b\x86\x5e\xe6\xb9\x66\x06\x8e\x63\x8a\x69\xbf\xfb\xca\xa7\xb2\x6a\x81\xfd\xec\xde\x09\xa7\x2d\xa0\x3f\x75\x35\x5b\x11\xe4\xd7\xd2\x60\xc3\xd4\x73\x67\x59\x7a\xbf\x41\xbd\x06\xab\xf2\x44\xea\xad\xe9\x9e\x39\x98\xbf\x00\x56\x2f\x8a\xfc\x3d\xc5\x5c\x98\x45\x5f\x76\x67\xc6\x66\x1a\x68\x6e\x78\xcd\xad\x09\x41\x92\x9d\xcc\x3f\x2f\x08\x72\x2b\x31\x94\x4e\xd6\x42\x34\x4f\x26\x83\x2e\x8c\x2c\x73\xef\xea\xc5\xcf\x0a\x82\x4f\x9f\x99\x2f\xbe\x31\x1e\x5d\x92\xe0\xbc\x21\xf2\x1e\xb8\xed\xe5\x0f\x1b\x79\xf1\xcb\x42\xef\xb7\xde\x5f\x3d\xf4\x7e\x7b\xfc\x15\x7a\x7f\x85\xde\x5f\xa1\xf7\xcf\x17\x7a\x1d\x50\x9c\x50\x74\x7e\x85\xdd\xd5\xe3\x9f\x32\xec\xfe\x1a\xf0\x96\xa5\xfe\x4a\x51\xb7\x71\xee\x66\xbd\xdf\x3b\xea\xaa\xbf\xa2\xee\xde\xe7\x57\xd4\x3d\x26\xaf\x5f\x51\x77\xbd\xee\x11\x82\xec\x57\xc4\x5d\x3d\xfe\x71\x11\x77\x57\x19\x9b\x3d\x3d\xf0\x62\x8b\xc2\xd6\xee\x8f\x2d\xd5\xec\xae\xcd\x6c\x73\xdf\x89\xec\x3c\x00\x61\xd6\x69\xdf\xef\x50\xde\x5d\xa6\x38\xd8\x30\x6a\x99\x7c\xc4\x1e\x49\xc2\x6a\xde\x3e\x3e\x12\xd8\xed\x83\x35\x6d\xde\x9a\x8d\x46\xf3\x76\x8a\x37\x01\xf9\x68\x3f\x02\xa2\x69\xde\x5c\x7d\xbd\xba\x69\x7b\x10\x7a\xa1\x7b\x75\x7f\xb5\x6e\xf5\xaa\x22\x77\x45\x45\x61\x79\x75\x6e\x74\x68\x05\xe8\x80\x4d\x9d\xe0\xfc\xbe\x58\x0a\x75\x40\x92\xee\x2e\x54\xed\x92\x3d\x9b\xdb\xa0\xdc\xe4\xc4\xbd\x3e\x1f\x15\xdf\xc1\xd5\x24\xc4\x73\x07\x4c\xbd\xd0\x2b\x8f\xbf\x17\xed\x1f\x42\x9b\x73\x2b\x74\x6b\x22\x85\x41\x36\x2d\x87\xb4\x9d\xa7\xa7\xdb\x29\x78\x68\xde\x3e\x10\xf8\xb7\x5b\xb2\xf1\x64\xdd\x4e\xc9\xc7\x87\xc6\x23\xc0\x9b\x0f\x4d\xec\xc8\x02\x57\xbc\xf5\x0a\x89\xeb\x7f\x5c\xa6\xf4\xd3\xa4\x56\x31\x6d\x67\x49\xf0\xf4\xd2\xd4\x27\x62\x00\x79\x8b\xe1\xb7\x71\x02\xe6\x1e\x58\x7c\x0e\x16\x7c\xdc\x1c\x3e\x98\x9d\x1f\x85\xf5\xad\xb6\x57\xaf\xb4\xb9\x68\x29\xae\x06\x38\x27\x4c\x8d\x28\x3c\xfd\xc2\x85\xef\x8e\xdb\xcd\x4f\x5a\xa5\x33\xcb\x3b\xb7\xa4\x2a\xc5\x3b\x96\x5c\x57\x37\x73\x15\xb7\xca\x9e\x18\xa3\x14\x85\x71\xac\x7c\xeb\xd2\x3d\xf1\x70\x38\x1d\xdb\xdf\xe0\x71\x28\xc1\xa9\xae\x9c\xfb\xde\x37\x69\x6f\x75\x0d\xc9\x77\x93\xfd\x73\x79\x79\x69\x11\x12\xb0\x73\x34\xf0\x2b\x32\x82\x4f\xbc\xe2\xfd\x10\xf9\x3a\xa2\x86\xe9\x99\x34\x69\xd5\xd4\xc5\xef\x78\x38\x77\xf7\x56\x09\x4f\xdd\xd0\x89\x23\x2f\x3c\xa1\x98\xcd\xcf\x85\x37\x49\x55\xb4\xb7\xfd\xad\x0f\x96\xea\x05\xb7\xc6\xaf\x88\xd4\xfe\xf7\xb6\x5b\xef\xae\xff\xff\xcb\xf6\x3b\x5d\x70\x21\xdb\x79\x3e\x3f\x22\x8e\x62\x20\x51\xbf\x40\xeb\x0f\x23\x93\x93\x25\x8e\xd7\xbf\xf0\x76\xf8\xea\x2e\xcc\x4f\xcd\xfc\xab\x84\xff\xf2\x78\xb0\xb3\xe3\xe6\xe7\xbc\x22\xfe\x27\x0e\x15\x0f\x08\x6b\x89\x3f\x6c\xa8\xa8\xd8\xff\x79\x43\x45\x0c\x7e\x87\x68\x11\x27\xde\xdc\xcc\x56\xd1\xa2\xe2\xb3\xb8\x4c\xbf\x94\xf5\x75\xa7\xbc\xe5\xfd\xc8\xdb\x77\xce\xb4\xb1\xf5\x8a\x08\xf0\xbd\x70\x20\x06\xe5\xd8\x1f\xdb\x1f\x23\xff\x82\x03\x13\xc2\x68\xa1\x6e\x75\xb6\x65\xdb\xe5\x1b\xae\x8e\xcd\x46\xa1\x2a\x74\x94\x2c\xcc\xc4\x01\x8e\x9c\x98\xd3\xa9\x67\x9f\x29\xce\x98\x19\x58\x98\x4b\x39\x31\xc3\xd4\xcb\xea\x2d\xbd\x07\x4a\xe7\x29\x10\x41\x10\x65\xa0\xaa\x91\x9e\x28\x9b\x14\x05\xb7\x99\x3f\x0e\x69\xef\xb9\x31\x79\xed\x7b\xb5\x05\x1d\x9c\x89\xbf\x6c\x13\x6e\x15\x92\xee\x63\x00\x12\x2f\x74\x6f\x3f\xc9\x34\x77\xbe\x8f\x4b\xea\xdf\x73\x6f\xe1\xe7\xbf\xad\xe4\xb3\xb7\xbb\xbe\x5d\x8d\xff\x7c\x9f\x83\xff\xf2\xc0\x1f\xe3\x81\xf3\x63\xd7\x93\x5f\xec\x7a\x1b\xca\xdf\xf4\xc0\x0f\x25\x89\x7f\x5e\xd7\xdb\x71\x95\xcf\xf2\xc0\x83\x6a\xfc\x7e\xae\xe7\x7b\x61\x61\x72\x4c\x31\x8f\xb3\x9e\xce\x7a\xeb\xbc\xa9\x1d\x85\xa9\x97\x66\x20\xb4\x97\xe7\x5e\x24\x54\xbd\x49\x95\x5a\xd7\x18\x80\x39\x80\xe5\x6a\x57\x12\x6d\xbe\x0d\xf5\x00\xff\x7b\x32\x78\x57\x36\x5c\x57\xae\x97\x0c\x2f\x11\xe2\x16\x43\xfb\xb9\xd6\x01\x16\x77\xe6\xfc\x46\xd3\x29\x48\x36\x16\xf6\x8e\xbe\xda\xc9\x8b\x45\x33\x74\x01\xed\xc1\xac\xbc\x73\x7a\xb5\x48\x83\x63\x0f\x77\x0f\xc4\x1d\x4e\x36\xef\x48\xe2\xeb\x03\x76\xf7\xf8\xed\xae\xf9\x70\x87\x37\xf0\xaf\x4d\xe2\x0e\x7f\xfc\x76\xf7\xed\xae\x81\x15\x7f\x7f\x23\xef\x9a\xd8\xdd\x43\xb3\xf8\xf2\xf4\x78\x87\x3f\x3d\xdc\x11\xdf\x6e\xbe\x5e\x79\xd3\xdf\xc0\xbf\x73\x13\xa6\x5b\xcb\x0c\xbb\xaf\xad\x2e\xd6\x18\xca\xff\xbe\x5e\xdd\x7c\x45\x7f\x9d\x2e\x7e\xd8\x07\xbc\x74\x1b\xfa\xca\x3e\x75\xcf\x6d\x11\xd8\xf6\x8d\x77\xbf\x6e\xf2\x87\xbe\x02\xe2\x42\x9b\x28\x47\x03\x7d\xb0\x6c\x9b\x29\x70\x86\x20\x33\x91\x99\x68\x89\x97\x81\xad\xa0\x76\x11\x6a\xff\xe3\xec\x14\xf3\xc7\x16\x56\x3e\x27\xa9\xaf\xc6\x5a\x07\x60\xa3\xc2\x82\xee\x4b\x0c\x12\xaf\x7a\xc1\xd1\x35\x15\x25\xe0\xea\x37\x49\x18\x7c\xf9\x31\x2b\x03\xe4\x2d\xf6\xf4\x83\xf3\xb5\x6d\x74\xff\x84\x14\xa9\x66\xe6\x6c\x6a\x71\xd3\x12\x47\x37\x87\xb2\x84\x03\xb6\x1a\xc5\x35\xc0\x1e\xa1\x99\xcd\x92\x28\x77\x67\x71\x5e\x5c\xcc\xde\xc4\xb0\xf7\x66\x1f\x6f\x5a\xf8\x44\xb2\x44\xbd\xf8\xe8\xa2\x61\xfa\x6f\xd8\xa9\x7e\xfb\xf9\x46\xaf\x9f\x67\x91\xbf\xfb\x1a\xd5\xfb\xad\xb5\x95\x2e\x43\x7b\x54\xec\x57\x3a\xf1\x82\x85\xeb\xd8\x4c\xb2\x42\xec\x87\x5e\x57\xbf\x53\x32\x9b\x9d\x9f\x22\xbe\xbe\xf7\x4e\xcc\xd6\x1c\xd9\x4a\x73\xb5\x99\x4e\xf5\xcc\x74\x76\x24\x4a\x1c\xe9\x43\x85\x84\x72\x86\x12\xa1\x6f\xd8\xc3\x13\x86\xbd\xd5\x47\xbf\xa3\xab\xa1\xbf\x77\x94\xf1\xa9\xee\x77\x6f\x47\x61\x66\x7a\xe1\xcf\xf8\xe6\xd1\x1f\xe2\x89\x5b\xd2\xb8\xc4\x2d\x8f\x61\xe0\x3b\xdb\xff\xd9\x91\xa0\xda\x4a\xf2\xa7\x40\x80\x9f\xcc\xaf\x2b\xd1\xfe\xf2\xe7\x5f\xfe\x7c\xc0\xc6\xbe\x93\x3f\x57\xfb\x44\xff\x3a\x21\xfd\x16\xff\xc9\xdc\xbe\xd6\xc0\x2f\xbf\xff\xe5\xf7\x07\x8c\xec\x3b\xf9\xfd\x28\x06\xa1\x34\xf3\xa6\x19\x05\xf3\x34\x3b\xbe\x97\xfe\x3b\x00\xc0\x16\xc5\x1f\x0c\x05\x79\xe8\xfd\x3b\x07\x7d\x70\x6e\x72\x74\xbb\xf0\xa7\xbc\x27\xef\x32\xf1\xac\x8a\xdf\xfb\xa7\xa4\x53\x7f\xce\xbc\x27\xfb\xf4\x9a\xf9\x77\x60\xda\x2e\xad\x69\x6b\x57\x3e\xeb\x9c\x54\x74\xfd\xf9\xf9\xba\xe2\x81\x30\xfb\x1c\xe6\x8f\x5b\xf9\x1f\x22\x33\xdd\x03\x8b\x5f\xb1\xea\x57\xac\x3a\x60\x6d\xdf\x29\x56\x49\x1b\x3b\xf0\xff\x1c\x89\xea\x4f\xe6\xdf\x5b\x02\xfe\xe5\xdb\xbf\x7c\xfb\x80\xa5\x1d\x3b\x29\xf5\x89\xd7\xcf\x5d\x60\x77\x27\x2f\xc3\xfb\xf8\x19\xa3\x35\xff\x3f\xf4\x7c\x90\x69\x3b\xce\x23\x61\x3e\xde\x36\x1a\x4f\xcd\xdb\x87\x27\x30\xbd\xb5\x9c\x07\xe2\x76\xfa\x0d\xfb\x36\xb5\xcc\x27\xdc\x04\x8f\x17\x9e\x0f\x3a\x2f\xf5\x3f\xd2\xd9\xa0\x4f\x31\xc4\x1b\x1a\x19\x59\xb5\x00\xb8\x7d\xdc\xed\x2f\x6b\x71\x0f\x0e\xf9\x68\x91\x4f\xd6\x2d\xee\x3c\x4c\x6f\x1f\x1e\x9f\x1e\x6f\x4d\x82\xc4\x6f\xed\x6f\x8f\x4f\x8d\x07\x87\xc0\x89\x77\x59\xdc\xf4\x2f\x65\x71\x7f\x84\x43\xa2\x97\xa3\xf0\xaf\xa3\xa1\x7f\xf0\xa3\xa1\x7f\x2e\xe8\xff\xa3\x2e\xb9\x9f\x44\x87\x8d\xf3\x9f\xef\x07\x85\xdd\x63\xa1\xbb\x3d\xd9\x68\xe4\x4b\x1d\xfd\x3a\xbc\x74\x85\x0a\xbf\xdd\xa5\x77\x5b\xfb\x71\x7e\xfc\x96\x7e\xfe\x50\x9f\xb5\xc0\x14\x4c\x4d\x0c\xbf\x25\x4c\x82\xbc\x7d\xc0\xc9\xc7\xdb\xa7\x86\xf9\x74\x4b\x3c\x12\xd3\x69\xa3\x61\x83\x06\xfe\xf0\x97\x0c\x9e\x9f\xba\x71\xeb\x32\xb5\x1f\xf3\xcf\xbf\x95\xdf\xff\xf3\xb7\xff\x17\x00\x00\xff\xff\x96\xa7\x1d\x8e\x0d\xa6\x00\x00")
+var _rpProductionJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x69\x6f\xe2\xca\xb6\x3f\xfc\xfe\x7c\x8a\x28\xcf\x95\xb2\xfb\xb9\x9d\xc4\x36\xa1\x13\x1f\xe9\xbe\x00\x83\x8d\x0d\x18\x3c\x1b\x9f\x7b\x74\xe4\xa1\x30\x8e\xcb\xc3\xf1\x00\x21\x57\xe7\xbb\xff\x55\x1e\x98\xa7\x0c\xdd\xbb\xf7\xde\x4d\x4b\xad\x80\xab\x56\xad\x5a\xc3\x6f\xad\x1a\xfd\x7f\x7f\xbb\xba\xba\xba\xba\xfe\xaf\xd4\x9e\x81\xc0\xbc\xfe\xfb\xd5\xf5\x2c\xcb\xe2\xf4\xef\xf7\xf7\xe5\x2f\x77\x81\x19\x9a\x2e\x08\x40\x98\xdd\x99\xaf\x79\x02\xee\xec\x28\xa8\x9e\xa5\xf7\x04\x86\x37\x6f\x31\xfc\x16\xc3\xef\x1d\x10\xc3\x68\x89\xca\xc9\x20\x88\xa1\x99\x81\xbb\xe7\x34\x0a\xff\xbf\xeb\xaf\x65\x0b\x76\x14\x66\x20\xcc\x54\x90\xa4\x5e\x14\xa2\x86\xf0\x3b\x0c\xfd\xab\x0b\xc4\x66\x62\x06\x20\x03\x49\x7a\xfd\xf7\xab\x92\xad\xe2\x77\xd3\x4e\x44\x90\x46\x79\x62\x03\xd6\xd9\x7a\x54\x3c\xce\x96\x31\x40\xd4\xd2\x2c\xf1\x42\xf7\x7a\xf5\xf0\x3f\x5f\x37\x48\x38\x81\x17\xb6\x62\x8f\x32\xdb\x79\xe8\x40\xf0\x41\x2a\xd0\x03\x61\x46\x81\x24\xa3\xa2\x20\x88\x42\xde\x0c\xde\x49\xd1\x31\x33\xd3\x32\x53\xd0\xb2\xed\x28\x0f\xb3\x0f\x10\x8a\x02\xd3\xfb\x00\x23\xe0\x25\x4b\x4c\x2a\x4a\x83\x28\xed\xb4\xd9\x71\x7a\x96\xca\xd7\xed\xa7\x0e\x98\x9a\x39\xcc\x54\x13\xe6\x45\xa9\xc3\xad\x4c\x63\x09\x24\x73\xcf\x06\xe3\xc4\x0b\x6d\x2f\x36\xe1\x7b\x15\x3a\xcd\x21\xec\x14\x06\x77\xbc\xbe\x15\x45\xf0\x0c\x9f\x53\x13\xa6\xe0\x60\x03\x81\x13\xd0\x49\x61\xb1\x8e\x92\xc0\xf7\x31\x19\x38\xa9\x43\x45\xe1\xd4\x73\xd7\x46\xff\x4e\x32\xdd\x70\xee\x25\x51\x88\xbc\xeb\x7d\x44\x92\x98\x0d\x4c\xf7\x9d\xd6\x91\xc4\xc3\xc8\x39\x5f\xf7\x5d\x36\x91\x7c\x9a\x4d\xa4\xe9\x6c\x9c\x5b\xd0\xb3\xfb\xe0\x84\x55\x9c\xa4\x90\x45\x89\xe9\x7e\xdc\x1b\xd3\xdc\x4a\xed\xc4\x8b\x33\x2f\x0a\x6b\xe8\x62\x92\x28\x8f\xdf\x4f\x72\x1e\x48\xde\xeb\x87\x55\x20\x65\x66\xe8\x98\x89\xf3\xaf\x0e\x91\xfe\x6b\xde\x38\xd6\x54\x9a\xbe\x91\xd1\xbf\x6d\xd0\xb8\x4e\xaa\x1e\x23\x10\xf9\xc7\xaa\xcc\x0e\xa9\xd4\xcf\xf7\xe8\x17\x0f\xc2\xb2\xe5\x15\xab\xd7\x5b\x45\xfe\xb3\xd3\xc1\x38\x89\x62\x90\x64\x1e\xd8\x47\xac\xf2\x79\x61\x10\xec\xb8\x05\x61\x64\x9b\x48\x1f\x43\x90\xcd\x22\xa7\x6a\x21\xf3\xec\xd3\xf4\x6b\x6e\x92\xf8\x36\xf6\xe2\x5d\xf1\xd6\xf2\x18\x7a\x76\x12\xa5\xd1\x34\xbb\xe3\x41\xb6\x88\x12\xff\x7e\xd5\xae\xe3\x24\x20\x4d\x41\xba\x5b\xb5\x66\x07\x55\xff\x47\xb2\x69\x23\xbf\x7d\xb9\xab\x1f\xfe\x73\xb7\x96\x1d\x85\x8e\xb7\xaa\xb6\x0e\x98\xbf\xdd\xac\x01\xf1\xe6\xcb\x5e\x35\x33\xf6\x36\xc2\x2e\x81\xe1\xe4\x2d\xf6\x78\x8b\xe1\x07\xf5\xff\xfb\x28\x6a\x5a\x81\x2d\x3b\x2e\x11\x33\x4f\x0a\x09\x6c\xdb\xd0\xe6\x67\x9f\xc6\xa5\x6d\x6d\x97\xdd\x56\xd4\xd9\x0a\x45\x25\xcf\xd9\x52\x1b\xeb\xfc\x76\x73\x81\x09\xdc\x7c\xbd\xba\x29\xed\x68\x5f\x45\x07\x9b\xc9\x4c\x17\x31\x14\xe6\x10\x9e\x2c\xfc\x9f\xa3\x4f\xff\x73\xbc\x95\x4d\xd3\xae\x85\x7f\x7d\xb0\xf4\x3e\xf9\x7f\xee\x93\xbd\xb6\x4c\xdb\x07\xa1\x53\xf5\x76\x1c\x45\xf0\x5d\xba\xdb\xe0\xaa\xa2\xf8\x11\xa6\x60\x64\x3a\x6d\x13\x9a\xa1\xed\x85\xae\x98\x43\xf0\xdd\xed\xe9\x88\x1d\x7f\xa2\x5d\xad\xfb\x04\x92\xf4\xfe\x98\xdf\x54\xc6\x06\xad\xea\x8f\xba\x1c\x32\xbd\xd3\xc6\x74\xda\x30\x0f\xe8\xf9\xbb\xf5\xed\x80\x49\xed\x76\xab\x2a\xf2\xe1\x5e\xc5\x49\x64\xed\x07\xbc\xcf\xea\x48\x41\x7d\x8f\xf7\xe2\xd7\xcf\xe0\x3c\x8b\xec\x42\x0b\xd7\xb2\xbd\x1b\xa2\xf6\x8a\x23\xc6\x3a\x1e\x0a\xe0\x56\x5e\x07\x92\x4e\x99\x25\x9c\xab\x5a\x9b\xd0\x38\x4a\x50\x12\xfa\xf0\xd0\xb8\xcc\x54\xd6\xe5\x3f\x8a\x53\xd0\x4a\x72\x08\x3e\x02\x08\xa5\x26\xbe\x7b\x50\xd9\xd0\x49\x0f\x8d\xa6\xcf\x89\x36\xbe\x54\xa4\x61\x1e\x58\x20\x19\x4d\xc7\x75\x3f\x88\x33\x15\x12\xf0\xef\x1c\xa4\xd9\xd8\xcc\x66\x88\x9b\xfb\x19\x30\x61\x36\x7b\xbd\x4f\x80\xe9\x2c\x8f\x5b\xde\x85\x0a\x29\xdd\xe6\x52\x7d\x5c\x9a\x69\x41\xeb\xf2\x44\x6b\xcb\xd1\x7e\xce\x24\x6b\x2f\x27\x8f\x41\xe8\xa4\xa3\xf0\xa0\x15\x7e\x30\xab\xf8\xdb\x61\x81\x7f\x20\xbd\xdb\x12\x40\x39\x0a\x39\x9c\xbe\x5c\x67\x1e\x48\xb6\x12\xc2\x03\x65\x6c\x33\x36\x6d\x2f\x43\xe3\xb3\xc6\x87\xf2\xc5\x3c\x76\x13\xd3\x01\xe3\x08\x7a\xf6\xfe\x68\x6f\x55\x2c\x28\xc7\xad\xd7\x43\x33\xcc\x4d\xb8\x6f\xa9\x07\xec\xfc\x7a\xee\x25\x59\x6e\xc2\xa1\x69\xcf\xbc\x10\x8c\x93\x68\xea\x1d\x98\x31\x5a\x15\x8f\xd2\x73\x45\xca\x9e\x47\x41\x9c\x67\x20\x41\x23\xab\x71\x02\xa6\xde\x4b\x21\x5d\x3b\x0a\x6d\x33\xfb\x0d\xa9\xf0\xe6\xeb\xd5\xb6\xac\xcb\x61\xd8\xcd\x97\xaf\x57\x37\xb7\xa7\x53\xc6\x72\x6a\x4a\x49\x41\x52\xab\xcd\x86\x51\xee\xdc\xe6\x29\x48\x4e\x55\x83\x5e\x98\xbf\xbc\x2d\x51\xb9\x76\xbc\xd4\xb4\x20\x18\x9b\x69\xba\x88\x12\xa7\x95\x67\x33\x10\x66\xde\xca\xd3\xb2\x24\x07\x67\x40\x29\x4d\x67\x97\xc5\xda\xb8\x1e\xcf\x1f\x87\xec\xdd\xcf\x79\xaa\x6b\xea\x2b\x50\x8c\x02\x70\xbf\x96\xd8\xfd\x5d\x9a\xce\xee\xcd\x3c\x9b\x45\x89\xf7\x0a\x9c\x7f\xf9\x88\x81\xf3\x09\xfb\x8a\xb0\x0f\x96\x1d\x33\x33\xf7\xdc\x67\x73\x86\xe2\x6c\xe0\xaf\x3f\xc7\xb3\xfb\xfa\xf3\xcf\xf7\x8e\x0e\x0e\x03\xf7\xe1\x8e\xd6\x93\x23\x17\x19\xbb\x17\x98\x2e\x10\xc1\x14\x24\x20\xb4\xcf\xe7\x55\xa5\x9e\xd3\x59\x89\x1f\x22\x70\x7a\xe6\xd9\x6c\x24\x9a\x4e\xab\xe2\xbd\xee\xe0\x5c\xe1\x12\xe5\xae\x1f\x6f\x07\xea\xf0\x5c\xd9\xf9\x1a\xc4\x1f\xef\xc8\x3b\x02\x23\x30\x1c\xc3\x70\xfc\xdb\xfb\xa2\x65\x94\x76\xbc\xd4\x3f\x2f\x02\x3b\x01\x66\x06\x46\x71\x1d\x78\xe8\x24\x0a\xca\x29\xbb\x33\xfc\x96\xf3\xf3\xce\x45\xad\x5c\xed\xcf\x72\xc9\x55\x68\x1d\x27\x20\xf0\xf2\xe0\x5f\x03\x51\x3a\x93\x90\x7e\x92\x3d\x85\x65\x44\xbb\xc8\x9e\xca\xac\x65\x7c\x51\x92\xfe\x23\x13\xf4\x93\x69\x52\xd9\x12\x1b\x66\x20\x99\x9a\x36\xb8\x70\x5e\xa3\xfe\x5c\xa0\xc8\x8d\x94\x09\x05\x8b\xdb\xd0\xb3\x2f\x99\x56\x78\x43\x26\xbb\x51\xc7\x0b\xcc\x64\x79\x11\xbc\xaf\x2a\x79\xf1\x1b\xfb\xbc\xf9\xb9\x1c\xc7\xaf\x0e\xc9\xc2\x8b\xed\xa2\xed\x37\xc0\xf6\xd5\x3b\x85\xb3\x55\x3f\xcd\xad\x10\xec\xcf\xd1\x5f\x5c\xff\x22\xe3\xad\x32\x94\xea\x6b\x7a\x5f\x36\x5a\xdb\xef\x3c\x04\x59\xf5\x67\xf9\xe0\xe2\x50\xb3\xf9\x39\x33\xee\x3c\xc8\xfc\x7b\xac\x64\x9b\xc0\x76\x76\xfb\xf6\x29\x94\x83\x54\x77\x6d\x23\xf6\xe2\x1f\x23\x8f\x4d\x90\x69\xbf\x61\x7e\xec\xdc\xe7\x7d\x72\xb8\xfa\xfd\xa7\x61\x8e\x7d\xce\xe7\x38\xbb\x9f\xd3\x39\xcf\xfb\xe9\x5f\x56\xf2\x7c\xeb\xa7\xe9\x1c\x7f\x7a\x98\xf2\xb1\x18\xea\x78\xa6\x1b\x46\x69\xe6\xd9\x97\x0d\x42\xac\x28\xca\x3a\xeb\x3a\xe7\x63\x29\x08\x51\xae\xef\x5c\x98\xd6\x97\x89\x85\x92\x78\x5b\x43\x9b\x7a\x3f\xc1\xce\xf8\x66\x7f\xb1\xad\x18\xe9\xdc\x59\x30\xb2\xee\xec\x28\x01\x77\x0b\x2f\x74\xa2\x45\x7a\x17\x82\xec\xfe\x74\x18\x7e\x93\xd0\xc0\x4b\x06\x42\x94\xe2\x5d\x24\xb2\x55\xe9\xef\x12\xb2\xed\xf4\x5c\x7e\x77\xf5\xee\x90\xbd\x99\x53\xaf\x7d\xbc\x55\xec\xe1\xe8\xae\x7b\x75\x61\x30\xaf\xa7\x60\xa8\x3c\xcd\xa2\x40\x2a\x96\x37\xdf\x52\xb7\x67\x86\x0e\x04\xc9\xe6\x14\xc9\x6a\xeb\xc7\x59\x02\x66\x9e\x45\x4a\x39\xe2\x1f\x7a\x61\xb4\x41\xe5\x0d\xe9\x48\x0a\xb2\xcc\x0b\x8b\x25\x95\xff\xbb\x10\xcd\x8b\x99\x3c\x60\x67\xc0\x91\x36\x2a\x5f\x3e\x10\x2c\x57\x81\x0b\x6f\xb0\xcc\x14\x7c\x7b\xf8\xad\x72\x8a\xf2\x9b\x1c\x49\xc5\x4a\xea\x6f\x37\x36\xa1\x62\x2c\x85\x43\xd0\x8a\xfa\x37\x5f\xbe\xde\x0c\x3b\x43\x5a\x1c\xf1\x72\x97\xef\x28\xe2\xe0\x7f\xfe\xab\xaa\x70\x75\xeb\x5c\xfd\x6f\x8e\x61\x0d\x7b\xf3\xff\x9b\x9b\x9b\xaf\x15\xf9\x4d\x07\xdb\xde\xc2\x70\xf3\xe5\xcb\xd7\x9b\x9b\x9b\x2f\xff\x1b\xde\x20\xf2\x52\x87\x1a\xf1\x34\xcb\xa8\x5d\x51\x62\x47\xfc\x7b\x5b\xd8\xd9\xe0\xb0\xd7\x48\x97\x57\x59\x71\xc4\x0f\xbb\xbc\xfc\xfe\x26\x36\x36\x3f\x6c\x35\xd0\xa2\x44\xb1\x2b\x8d\x14\x91\xea\xb2\x9d\xf7\x91\xdf\xda\x5b\xb4\x45\x5c\x1c\xb3\xc3\x16\xd3\x7d\x1f\xd9\x6a\xb7\xc5\x0e\xc1\xe1\xa8\xf3\x6e\x7a\xc3\xc8\xd9\x26\xd7\xea\x0c\x59\xbe\x35\x66\xa9\x01\xdb\xe5\x65\xaa\x2b\xca\xd4\x68\x38\x1c\xf1\x7c\x6b\xf8\xce\x46\x4e\x6d\x6f\x3a\xdc\x74\xab\xad\xf0\x9d\x41\xf7\x7f\x10\xc1\x83\x94\xaa\xed\x56\x37\x45\xe5\xca\x28\x86\xa5\x5c\x6f\x6e\xee\x5d\x10\x82\xb9\x19\x38\xc1\xdf\x03\x33\xcd\x40\xf2\xaf\x26\x5e\x95\x1a\x8c\xa8\x96\xfc\x26\xb3\x3c\x36\xbb\xbb\xc1\xb6\xa4\xb4\x25\x4a\x64\xc7\x88\xf0\x5b\xec\x65\x73\x37\xc7\x6f\x5f\xee\x36\xbf\xb2\xce\xa6\x82\x2b\x5b\x64\xc4\x91\x32\x7e\x9b\x1a\x76\xb9\x47\x61\x62\x83\x32\xfa\x6f\x17\x31\xa8\x10\xe2\x96\xd4\xca\x80\xd4\xc6\x6d\x46\x9c\x39\x8c\xe2\x0e\x74\xd7\x55\x31\x7a\x68\x6a\x4d\x1c\x74\xe9\xd0\xd0\x9a\x18\xe5\x46\xcf\x2c\x43\x13\x16\x01\x7d\x96\xe2\xa0\x1d\x72\x73\xfb\x39\x72\x0d\x86\xc5\x59\x46\x5d\xda\x01\xb9\xec\x53\xd8\xeb\xb0\xe3\x13\x23\xc9\x77\x8d\x90\x9b\x5b\x52\xdb\x9f\x04\x6a\xee\x78\xd8\x7f\x5b\x8d\x36\xb4\x9e\x23\x57\xf0\x45\x6a\xd8\x69\x35\x87\x52\xbb\x2b\x40\x52\x13\x55\x4e\x96\x14\x72\xa4\x63\x38\xa7\x60\x78\x5b\xed\xf2\xec\xc8\x6b\x77\x27\xba\x38\x9b\x04\xf4\xab\x21\xb5\xa1\x15\x1a\xb1\x1d\x90\xb9\xa5\xa9\xb9\x43\xb5\x09\x43\xe7\x5e\x4d\x8d\xcc\x59\x06\x8f\x6d\x02\x9f\x39\x0c\x1f\xb1\x6e\xbc\x44\xfd\x30\xbc\xd6\xdc\x09\xe8\xe5\x80\x78\x89\x27\x1e\xb9\xb4\x19\x6c\xae\xe3\xa4\x3f\xf1\xa2\x3e\x15\x72\x0b\x54\x66\xa0\xc1\xcc\x66\xc8\xa5\x43\xb5\x23\xa7\x27\x2e\xec\xd7\x68\x3e\x20\xc4\x74\x10\x18\xd0\x60\xc8\xe5\x44\x6f\x2f\x2d\x22\x86\x93\x86\x90\x5b\x0d\x2e\x1c\x34\xda\xf8\xc4\x23\xa1\xcd\xa8\xe9\x00\xe7\x04\x59\xc2\x7b\x4a\xd7\xce\x24\x4c\x35\x06\x8a\x2a\x88\xca\x22\xe3\x17\x31\x6a\xcb\x1d\x48\x78\x6c\xe9\xed\xb9\x1d\x0a\xae\xd9\x13\x31\xbb\x37\xfc\x36\x58\x92\x8b\x89\xc6\x27\x13\xcd\x81\xf6\xb2\x99\x99\x1a\xbf\xb4\x1a\xfc\xdc\x08\x85\x7c\x42\x90\xd9\x80\xc8\x20\xd0\x87\x73\x4b\x83\xcf\x76\x40\xbe\x5a\x84\x81\x0d\x02\xfa\x75\x72\x39\xcd\xc0\xea\xa9\xd0\x0a\x45\xcf\xd4\x85\xdc\xd4\x9e\xe6\x46\xf0\x82\x23\xbd\x4d\x02\x88\x0d\x82\x0c\x02\x21\xea\x1b\x01\xb9\x64\x19\x1a\x73\x18\x35\xb3\x7b\x82\x6b\x6a\x0f\x2e\x78\xed\xe6\x83\x67\x95\x1c\x2d\xdb\xbe\xb5\x88\x5c\xb6\xb7\xb2\x87\xd8\x0a\x79\x6c\xa2\xbd\xa4\x2c\x33\xc3\x9c\x5e\xfb\x75\xe4\x3d\xcd\x0d\x66\x91\x1b\x81\xea\x5b\x0d\x6e\x66\xf7\xb8\xb9\x19\xa8\xcf\x0e\xd5\x9c\xdb\x81\x3d\xb7\x7b\xaa\x37\x20\xd4\x85\xa1\x2d\xe6\x86\xde\x86\x16\x85\x2f\x0d\xed\x05\x4e\x74\x1e\x0e\xb4\x97\x99\xc3\xa8\xaf\x0e\x85\x35\x06\x41\x73\x3e\xd1\xb9\x67\x93\x6a\x16\xfd\xe3\xbc\x89\x3b\x09\x39\x38\xd1\xd2\x3e\x4b\xb5\x63\xc3\x6b\x5b\xda\xb2\xe5\x03\xa2\xe6\x55\x24\x59\x0a\x4f\x1d\xaa\x85\xb3\x34\xee\x8c\x96\x6d\xcc\x64\xd4\x9c\xed\xf1\xa9\xa1\xa9\x0b\xb6\xd3\x5d\x8c\x96\x6d\x68\xf5\x78\xc8\x32\xea\x83\xa9\x0b\xee\x50\x4e\x5d\x23\xf0\xfb\x06\x43\xe6\x86\x10\xf5\x27\x04\x8d\xb1\x9d\x87\xb9\xa1\x8b\xcf\x83\x06\xea\x63\x73\x69\x20\x99\x2e\x9b\xfe\x80\xa0\xbf\x39\x3a\x07\x07\x21\x07\x6d\xe6\xc9\x1d\x77\x16\xa1\xa8\x90\x0c\xb7\x88\xad\x89\x1e\xe3\x76\xa0\x64\x13\xe2\x25\xd6\x85\x38\x9f\x68\x38\x1c\x6b\x55\x79\x8d\x4f\x4d\x21\xf6\x50\xff\x1c\x9d\x4b\xc7\xda\x5a\x4e\x36\x43\x3f\x9b\x04\x1d\x1a\xfa\x30\xdf\xd6\x2b\x3f\xb7\x24\xb2\xe9\x68\x78\xd5\x3e\x39\x03\xa1\xba\x34\x24\xfc\xd9\x62\xfc\xbe\xa1\x35\x67\x93\xe0\x05\x1a\x1d\xbc\x69\xe8\xc3\xbe\xd1\x68\x87\x13\x62\x06\x27\x44\x4a\x02\x4d\x7d\xa5\xdc\x9a\x27\xf5\xd9\x6a\x70\x70\x97\xa7\x09\x41\x2e\x8d\xcf\xe2\x49\xe3\xe7\x76\xa0\x9c\xe4\xc9\x0a\x9e\xfa\x48\x56\x94\x1b\x3f\x4f\x74\xc1\x1d\x7b\x24\x74\x98\xe1\x1c\xe8\x6a\x56\xca\x93\x7c\x1d\x04\xc2\xdc\x61\x84\x0c\xd9\xaa\x15\x0a\x59\x61\x93\x07\x64\xbd\x5b\x66\xd5\x37\x5d\xf4\x07\x5a\x89\x43\x03\x8d\x8b\x9d\xd6\xf9\xfe\x6d\xdb\x3f\x9c\x0f\x08\x1e\xf9\xc7\xdc\x5e\x3e\x35\xa8\x40\xcd\x27\x1a\x97\x1a\x9a\x50\xca\x34\x70\x16\x06\xc1\x47\x86\xc6\x27\x63\x1d\x42\x7b\x11\xd3\x32\x36\xe9\x53\x81\x31\xb7\xbd\xf6\xcc\xe9\x89\xd0\xd2\xdb\x18\xcb\xc0\x9c\xed\xa5\x2f\x03\xef\x01\x9f\x22\xfb\x62\x9e\xfa\xa8\x9f\x2c\x85\x37\xd1\x33\xbb\x21\xce\x2c\x66\xe1\x4e\xf4\xf8\xd5\xd0\x86\xc8\x66\x66\x96\x46\x13\x2c\x43\x7f\xb3\x09\xf5\x79\xa0\xe1\x73\x2b\x80\x98\xd5\x60\xdd\x4d\xbb\x1a\xc8\x6c\x3e\x94\x5b\xf9\x50\x6a\xd7\xb6\x90\x19\x3d\xde\x47\xf5\x0a\x3b\xd3\x79\x38\x69\xa8\x4b\x53\x17\x9b\x2c\x23\xce\x27\x44\x06\x6d\xaf\x8d\x19\x14\x3e\x33\x08\x84\x89\x38\xf2\xfb\x1f\xe2\x47\x54\x80\xb0\x58\x6d\x20\x5c\x18\x68\x7c\x66\x50\x08\x4f\x69\xdf\xa0\xf0\x85\xd5\xe0\xb0\xb1\x2c\x60\xc3\x25\x89\x4d\x1a\x2d\x84\x5b\x0b\x43\xe7\xb2\x89\xd6\x44\x3a\xed\x53\x01\x3f\x73\xa8\xd6\x7f\x0f\x08\x15\x9b\x2c\xc9\x5d\xfe\xf7\x6d\x04\xd9\x65\x30\xd9\xb2\x11\x49\x69\x0a\xaa\x2a\x3a\x94\x0b\x47\xc8\x36\xd8\x1e\xdf\xb4\x1b\x22\xb4\x34\xa1\x4f\xa9\xe2\xcc\x58\xb6\xff\x6d\x35\xd4\xa5\x15\xd0\xa9\xd1\x8a\x38\xa5\x01\x5f\x51\xdf\x0d\x9a\x64\x4c\xed\x05\x33\x74\xd6\xd5\x31\x7e\x2c\x2b\x18\x39\xd1\xb9\x39\xf2\x27\xd1\x87\x43\xb5\xab\x4a\xba\x10\x71\x72\x40\x67\x86\xd4\xce\x2c\x42\x8c\x8d\xd0\xef\x53\x4a\x15\x5f\x98\x78\xee\xe8\x5c\x3e\xd1\x5e\x7c\xca\x85\x92\xa1\xe1\x73\x27\x50\xa7\x0e\x01\x53\x83\xe1\x67\x76\x20\xb8\xfa\x22\xe2\x94\x40\xcd\xac\x86\x01\x59\x5a\xe4\x64\x45\x95\xd5\x2e\xcd\x2b\xad\xa8\xaf\x61\xa4\xaa\xd2\x6d\x55\xa5\xb1\x3e\xa5\x34\x67\x96\xa6\xb8\x08\x8f\x1d\x82\x5e\x16\x7c\x16\xf1\xa8\xb5\x1c\xc9\xec\xeb\xb0\x55\xdb\x1f\xfd\x8d\x65\x5e\xe6\x06\x01\x73\x96\xc2\xe3\xf2\x3b\xfd\x3c\x21\x48\xdc\x0a\x05\xb7\xca\xf6\x5f\x59\x8a\xf5\x15\x5c\xa5\x14\x8c\x97\x24\xb5\xad\xa0\x78\x2a\x29\x82\x47\xb9\xf1\x2b\xd0\x79\xcc\xd0\xf0\x67\x87\x59\xb8\xc8\x3e\x51\x0c\x31\x18\xf2\xd9\x24\xd4\xe5\x20\xe4\xa1\x1d\x1a\xf1\x84\x50\xfa\x13\x3d\x72\x27\x1a\xbf\x5c\xb7\x87\x65\x56\x21\x8b\x96\xc7\x51\xb3\x57\x43\x13\xdc\x81\xa6\xb8\x5c\x83\x7f\x1a\x78\xd1\x7c\xda\x5b\x84\x6c\x67\xf1\x34\xa6\x58\x5f\x50\x78\x49\xf1\x55\x59\xc6\x55\x49\xc0\x54\x4e\xa4\xd8\x98\x75\xa3\xbe\xac\x88\xbc\xa4\xe0\x6d\x11\x53\x48\xd6\x13\x1f\x15\xd8\xe6\x64\x85\xee\x89\x92\x02\x07\xcb\x98\x1c\x2c\xc5\xc7\x8d\x32\xcf\xec\x32\x9a\x4f\x25\xb6\x5f\xf3\xc7\xf6\xda\x38\xf2\x27\xd6\x13\x79\xb1\x8b\x57\x75\x0f\x3e\x97\x94\x2e\xe4\x05\xc5\xa1\x51\xbb\x0a\x6e\x74\x54\x9f\x56\x65\x5a\x54\x15\xdf\x27\x59\x4f\x88\x50\xff\x4c\x42\x6d\x3a\x01\x8d\x5b\x3d\xc1\xb5\x18\xf8\xea\x50\xad\xcc\x58\xb6\x3c\x8e\xe6\x68\x05\x23\x55\xc5\xe7\x69\x11\xe7\xc6\xaa\xda\x1e\x09\x0a\x4e\xb3\x5e\x2b\x1b\xe8\x34\x6e\xe8\x5c\x93\xa5\x38\x6b\xdc\x10\x67\x46\x63\x98\x57\x34\xc8\xb1\xe4\xbc\x1a\x3a\x47\x98\x1a\x0f\x39\x1c\xcb\x51\x3c\xb4\x19\x75\xe9\x30\x10\xc5\x64\x62\xa2\xab\xa9\x43\xab\x4b\x53\x62\xdd\x81\xf6\xe4\x3a\x3d\x9e\xe8\x23\xfe\x2f\x89\xc3\x0c\xd2\x35\xca\x0b\x8c\x99\xa3\xbd\x60\x6c\x0f\x61\x00\x07\x1d\xaa\xed\x5b\x0d\x27\xb7\x18\x72\x56\xfa\x9e\x11\x5b\x28\x67\x2b\x7d\x2a\x33\x18\x2c\xb7\x19\x84\x49\x58\x66\x6a\x82\x5b\xc8\x7d\x4b\x1e\x90\x44\x58\x64\x07\x2a\x66\x2f\xc9\xa5\x4d\xe1\xa8\x8e\xc7\x52\x93\x80\x65\xb8\xa5\xa1\xd1\x09\xe5\xb5\x5c\x53\x9b\xb8\x1a\x9e\xba\x5c\x2f\x5b\xe1\xdf\x54\x6a\x65\x48\x76\xbc\xd4\x76\x74\x39\x75\x1d\x66\x06\x2d\xaf\xfd\x6a\x31\x2a\xb4\xa9\xd6\xcb\xb0\x93\xba\x86\xf6\x52\xe4\x6c\x80\x81\x18\xdb\xe9\x3e\xb2\x8c\x11\x53\x81\x38\xb7\x02\xa5\x3f\x21\x66\x99\x45\x08\xee\xb0\x33\x59\x0c\xa9\x56\x19\x8b\x09\xdc\xb7\xa4\xe6\xc2\xd0\xb0\xbe\x4d\xa8\x3e\xb2\x73\x96\xc2\x73\x43\x6a\x85\x43\x69\x31\x17\x95\x66\x97\xed\xf2\xb4\x02\x45\x4e\xf4\x61\x47\x50\x45\x7a\xb0\x6c\x2f\xb8\xe5\x7e\xfd\xd2\x3f\xde\x21\xb3\x1e\xef\x0f\xc2\x36\xac\x72\x43\x1f\xf9\x13\xc0\x79\x4d\xc0\x8d\xb6\xaa\xbc\x28\xaa\xca\x71\x53\xbd\xa2\xd5\x1b\xce\xed\xb0\x95\x59\x9a\xf8\x6a\x50\x2c\xea\xd3\xdc\x21\x1e\x5c\xbb\x01\x5f\x2d\x86\x0c\x47\x21\xdf\xb4\x89\x97\xb9\xb1\xc1\x9f\x4d\x08\x85\x4e\xa8\x80\x8f\x2c\x8d\xf4\xd9\x4e\x8b\x18\x76\x5a\xfb\xed\xa3\x3c\x45\x8f\x5c\x44\xc7\x6a\xa8\x18\xe5\xc6\x99\x49\x88\xb1\xed\xd5\xb4\xe8\xa5\xb5\xc4\x97\x76\x15\xff\xf8\x67\xe4\x93\x02\xc2\xc7\x27\xd6\x13\xdb\x85\x8f\xf8\xb4\x20\x29\x7c\x5b\x80\xea\x48\xec\xbe\x20\x1b\xae\xf1\x76\x66\x07\x4f\x99\x1d\xb6\xe6\x13\x4d\xcc\x4c\xed\x21\x9b\x10\xdd\x6c\x12\xaa\xb9\xc1\xbc\xc0\xb2\xfd\xf8\xd9\x64\xc8\x86\xe5\xb5\x32\xc5\x43\xfa\x6c\x2d\x46\xcf\xdd\xc5\x06\xaf\x35\x8d\x3e\x15\xe0\x89\xc1\xc0\x25\x4b\x95\xf1\xde\xae\x71\x96\x22\x2b\xcc\xc1\xe6\xa5\x8c\x9a\x2b\x1f\x19\x04\xc2\x4e\x1e\xb6\xc2\xee\x55\xfd\x95\xbc\x08\x75\xe9\x04\xf0\xd9\x90\x50\x7e\x46\xa2\x9c\x7f\x69\x6a\x22\x3c\x14\x13\x54\xad\x19\x3b\x34\xd6\x17\x34\x03\xe1\x3b\x69\x05\x2a\xe6\x10\xe4\xd2\x5c\xa2\x78\xfb\x12\x5b\x81\x92\x3b\x0c\xbd\x34\x08\x15\xa3\x7c\x75\x2c\xba\x3b\xf9\x20\x21\x42\xa3\xf4\xe9\x8a\xe7\xd6\xd3\xb8\x8b\xca\xc5\xbc\x48\xf3\x5d\x1d\xe7\xc6\x72\x57\x9d\x2a\x34\x47\x8b\x3e\x9c\x8c\x25\x92\x98\xe8\xec\xdc\x0e\xd5\xbc\xe2\x77\x6e\x30\x6a\x50\xf8\x7b\xab\xaa\x83\x91\x82\xda\x85\x63\x19\x0e\x49\xd6\xc3\xdb\x2c\x85\x23\xdb\x5e\xb2\xf4\xc2\x97\x15\x51\x16\x69\x52\x92\xb1\x17\x5a\xc7\xdb\x92\xa8\x18\x9c\x46\xb1\x7d\x2a\x50\x1f\xaa\x71\x89\xac\x60\x2f\x53\x01\x53\x25\x95\x26\x19\x49\x79\xa1\xc7\x52\x25\x67\x26\x8b\x07\x0d\x31\xb5\x97\xe4\xb3\xa1\x73\xc8\x87\x9f\x27\x12\xee\x39\x5a\xd3\xb7\x18\x25\x9f\x34\x38\x64\x37\x10\xf4\xca\xf1\x82\x8c\x62\x81\x2a\x8e\x15\x1f\x8e\x44\x9c\xec\x09\x38\x3f\x15\x95\xa6\x26\xa9\xdc\x58\xf6\x71\x5a\x86\x02\xc9\x2d\xc5\x82\xe7\x9d\xdf\xc3\x0d\x7e\x78\x19\x6b\x72\x6a\x97\x94\x24\xa5\xd9\xd3\x31\xa7\xa3\xe0\x64\x5b\xc0\xf8\xb1\xaa\x34\x95\xb1\x42\x4b\x32\x1a\x17\x31\x64\x68\x2f\x4e\xb7\xad\xf8\x6a\x0f\xc5\xa7\xb1\x64\xfb\x72\x97\x44\xfe\xcc\xc9\xd8\xc3\xb9\xb6\x3a\xa2\xca\x29\x3a\x56\xe0\xc0\x96\x3c\x2a\x1b\x2b\xfc\xdf\xd0\x67\x45\x0e\xc2\x76\xf1\xb1\xec\x43\x45\xc6\x39\x4e\xf6\x9d\xa9\x88\xf1\x72\x55\x77\x8a\xc6\x6c\x28\xde\x8b\x32\x76\xc0\x3f\x4f\xf2\x50\xc4\x04\x05\x6f\xb7\x05\x4c\x21\x05\x95\x1b\x2b\xb0\x3d\xb4\x08\xe7\xf5\x78\x3d\x7e\x2c\xfb\x06\x27\xe2\xeb\x71\x6e\xd1\x6f\xa4\xff\x6e\xfd\xcc\xa0\x15\xc8\x9f\x96\x01\xae\xca\xa2\x4a\xf6\x44\xa5\x49\xab\x3e\x3d\x15\x30\x72\x24\xfa\xb0\xa7\xe3\xa8\x4f\x06\x87\xf8\x71\x7a\x1c\x8e\xf2\xb3\x63\x32\x50\xbb\xea\x48\x40\xba\xba\x54\xee\x85\xcd\x2b\x24\xf2\xf5\x63\x34\x15\x9f\x1c\x8a\x2a\xc9\xc9\x90\x57\x04\xa5\xd9\x11\x65\x2c\xe4\xa8\x59\x64\x35\x78\xac\xcc\x1d\xfc\xf0\xa0\xbf\x21\xbf\x27\x90\x1f\x1b\xb1\x51\xc6\x2c\x77\xdc\x79\x29\x72\x1e\x94\x0f\x88\x90\x1b\xcb\x50\xa4\x65\x1f\xc5\xab\x45\x69\x9f\x5d\x9c\x51\x7c\x72\x84\xfa\x21\xd2\xaa\x24\x53\xf6\x56\x7e\x51\x95\xa9\x72\x84\xf2\xd9\x2a\xa6\xef\xdb\xfb\x50\xc6\xf8\x76\xe1\x9f\xde\x76\xd9\xa2\x4f\x72\x81\xb1\x88\x5e\x9d\xd3\x14\xbe\x2a\x29\x4d\x94\xcf\x8d\x84\xa2\x3d\x21\x32\x19\xf2\xd5\x61\x8a\x5c\x2e\xe6\x56\x63\x86\x15\x2e\x16\x18\x61\xe8\x62\x63\x27\xef\xad\x73\x32\x7f\x85\x7f\x52\x15\xb7\x57\x98\xd7\x7a\x1a\x53\x0e\xa2\x17\x52\x30\x53\xad\x72\x2c\xd4\x36\x42\x11\xda\xcf\xb8\x6f\x11\x7c\x62\xe8\xec\xba\xbc\x10\x4b\x86\x4e\xe3\xa6\xce\x41\xfb\xf5\xd0\xf3\xa8\xaf\xe1\x75\xae\xa7\x3a\x94\xaf\xe6\x4e\x00\x97\x16\xd1\xcc\xd0\x18\x49\x0c\x60\x6a\xd4\xfe\xb0\xaf\x9b\xbe\xa8\xcf\xe0\x04\xe7\xb1\x89\xce\x61\x4a\x8f\x83\x63\x09\x9b\x3b\x3a\xbf\x1c\x10\x5c\x6c\x79\x64\xdd\x9e\x6b\x07\x98\x3b\xd0\x26\x2e\xa7\x3c\x6c\xd5\x19\x4b\x24\x6e\x37\xd8\xf9\x24\x80\xf9\x80\x58\x8d\x5f\x96\x8e\xf6\xe0\xea\xad\xc8\x45\xb9\x0a\xe2\xc3\x0e\xe1\xc2\x22\x60\xee\x50\xad\x92\x7e\x83\xf7\x4c\xed\x61\x2e\x6b\x2a\x66\x07\xf0\xd9\xc6\xd4\x07\x87\x51\x73\x9b\x80\x73\xcb\x6b\xdb\x28\x4f\x19\x48\xf8\x86\xbd\xb5\xa0\x44\xad\x7e\x2f\xc6\x8e\x2c\xa5\x8e\x58\x7a\xd1\x67\x51\xdc\xd7\xb9\xac\xfe\xdb\x92\x5a\x4b\x63\x59\x95\xd5\x27\x7b\xf9\xd3\xc8\x5b\xe1\x4b\x56\xe6\x06\x1b\x65\x1b\xc6\xcc\x46\xcf\x7b\xf6\xb7\xcd\xbf\x41\xc5\x13\xd7\xc5\xbb\xb2\x52\xe5\xa3\x55\x7b\x02\xd2\x45\xf7\x48\xae\x56\x95\x11\x43\x6e\x6e\x85\x22\x6d\x05\xa2\x6a\x07\x8b\x8a\x8e\x21\xc9\x58\x53\x41\x79\x90\xaa\x72\xc3\xba\x2c\xc2\x5a\x03\xe5\xc0\x5d\x7e\x6e\x85\xfc\x1c\xd1\x2d\x65\x89\x23\x4c\x1a\x1a\xba\x01\x2d\xaa\xad\x4f\x74\x2e\x37\xb5\x66\x58\xd7\x53\x7a\x5c\xec\x04\x34\x66\x28\x19\x04\xca\x69\x7e\x14\x82\xc4\xed\x80\x87\xa2\xd6\x24\x4c\x9d\x9b\x5b\x01\x8e\xc6\x66\x25\x5f\x2a\x3f\x56\x55\xae\x23\x2a\xea\x48\xf5\x21\xe2\x91\x17\x95\xa6\xb2\x5b\x57\x09\xc8\xd4\x90\x5a\xfe\x9e\x8f\xd5\xf2\x54\x79\x34\xae\x7a\x36\x54\x6e\x6e\x31\x2a\x57\xce\x39\x35\x9f\x0f\xd6\x51\xe0\x48\xc1\xc5\xb6\xec\xf3\x34\xe5\xab\x0f\x86\xc6\xcb\x0e\x43\x2e\x8e\xd8\xd7\x2b\x7a\x86\xf4\x4f\x41\x0e\x56\x63\x1f\x72\xa2\xbd\x34\x26\x3a\x7c\x5d\xff\x26\xca\x86\x36\x24\x87\x42\x2c\xa3\x1c\xc1\xe9\xbe\xc4\x96\x06\x31\x49\x6b\x62\x28\x6f\x99\x68\x0b\x72\x58\x8c\xdf\xea\xf1\xfd\x8b\x43\x41\x67\x66\x85\x22\x34\xba\x5c\x73\xac\xe1\xb8\xd5\x13\xe3\x81\xae\xbe\x22\x9f\x3b\x99\x67\x6c\xfb\x56\x9d\x4b\x6d\x61\x9f\x8e\xd1\x1d\x01\x23\x55\x84\x53\x42\x39\xcf\x23\x19\x9a\xc8\x4e\x74\x71\x6c\x33\x6a\xae\x10\xb3\xd8\x08\x45\x49\x29\xf1\x69\x2a\xfb\x34\x2f\xaa\xbc\x20\x28\x3c\x3d\x56\x39\x81\xf2\xe9\x8e\x02\x49\x49\xac\xf5\xa3\x92\x9c\xd8\xc1\x42\xae\x8b\x7e\x5f\x8f\x73\x24\x45\x08\x29\x9f\x46\x76\x3a\xd2\x31\x5a\x90\x54\xb2\x23\x77\x21\x2d\x43\xb1\xce\x3b\x3a\x32\x86\xa3\x98\x50\xb6\x21\x17\x34\x8a\xf2\x82\xda\xe6\x04\xec\x85\x43\xfa\x2e\xca\xa2\x58\xa6\xa0\xd8\xd0\x6c\xcb\x8a\x12\x52\x90\x13\x36\x70\x79\x35\x36\xe3\x16\xb1\xa4\xd0\x24\x2f\x63\x22\x8d\xe2\x90\x02\xdb\xc5\xdf\x6b\xec\x3c\x8b\x93\xb5\xcc\x7e\x46\xac\x5c\xe5\xc6\x3f\x02\x2f\x37\x62\x8f\xcb\x29\xee\xea\xf7\x1a\x07\xe5\x35\x3e\x2e\x57\xd8\xa5\x29\xee\x8e\x8d\xd5\x98\x01\xd9\xc2\xa7\xb7\x72\x9c\x8d\x67\x6f\xb0\x93\x8d\xb6\x14\xd8\x9e\xca\x0a\xd9\xdd\xfc\x4d\x50\x78\x49\xc7\xd7\x76\xa8\x63\xb0\x7b\x18\x93\x5b\x2e\xdf\x11\x5e\x47\xcf\x2e\xc6\x77\x86\x35\x2f\x44\x3d\xde\x98\xe8\xdc\x7c\xa0\x73\x8b\x1a\xa7\xeb\xef\x35\x2d\xc7\x6b\x95\xf9\xf9\xc6\x18\xc3\x0c\x10\x26\x35\x67\x56\x27\x3a\xfe\x8c\x7a\x03\xce\xd3\x2b\x3b\x2f\xf9\xeb\x71\x8b\xcb\x71\x09\xc7\xd8\xce\xb0\x18\x07\x22\xfd\xab\x0c\xcc\x0c\x8d\xc4\x1d\x9a\xc7\xac\x46\xbb\xc4\xa4\xd7\xc9\x62\xd8\x42\xf6\x5a\xd9\x85\x46\xa7\x0e\x41\x37\xed\xc5\xfa\x37\x85\x50\x9f\xc7\x72\xb7\xaf\x94\x58\x36\x34\x35\x3c\x76\xba\x30\x77\x18\x64\xcf\x74\x3a\x96\x5b\x7d\x0a\x66\x5c\x3d\x97\xaf\x0b\xb1\x3e\x41\xd8\xa6\x89\x14\x90\xf1\x0c\x8d\x93\x4d\x09\xc7\xed\x62\x3e\x48\x9c\xd9\x81\x03\x9d\xd6\x51\x7f\x7c\xb6\x88\x66\x60\x6a\x76\x29\xef\x8d\xf9\xcc\x4f\xc3\x30\x85\xa3\x64\x21\xee\xc8\xb4\x2a\x17\x73\x72\x58\x61\x97\x9b\x63\x8d\x62\x4e\x54\x09\x54\x5f\x62\x68\x4c\x6e\xb4\xa1\x05\xf9\xc8\xd4\x0c\x4c\x20\x5e\x70\xa4\x4f\xdb\xdd\xab\xbf\x9d\xbb\xfb\x1c\xff\xbd\x31\xca\xd2\xc8\xdc\xd4\xc5\xb9\xed\xad\xc7\xbf\x6c\x67\xf1\xc4\x61\xea\x58\xf4\xec\xbe\x86\xab\xe8\xb9\x43\xf9\x74\x80\x74\x35\xd6\x6a\xfb\x58\x97\x2f\x62\x94\xae\xc6\x76\xa0\xbe\x1e\x7c\xee\xc6\x96\x52\xe3\x96\x8a\xf5\xb7\xe3\xb4\xc8\x98\xda\x0b\x5c\x8d\x1b\x1b\xf0\x75\x42\x90\xb9\x11\xc0\xb0\x9a\x47\xc8\x2c\xa2\x19\x3b\x0c\xb9\x5c\xdb\x2c\xbd\x74\xe8\xf6\xd2\x90\xb1\x6c\xd0\x50\x5f\x6d\x8f\x2c\xf2\xaf\xf5\x7c\x1b\x97\xb1\x14\x1e\x14\x31\x75\xb3\x4e\xe7\x08\xbe\x85\x6a\xbe\xca\xbd\xb4\xd9\xdc\x6e\x88\x75\x4e\xc6\xae\x7f\xaf\x31\x6c\x8d\x6d\x08\x17\xd7\xd8\xc3\x0f\x55\x95\x57\x44\x95\x9b\x1e\xc7\xae\xdd\x32\x28\x0e\xa9\xb2\xd2\xa5\x3b\xe2\x47\xb1\x8f\xe6\x04\x1d\xc3\xc7\x62\x77\xf5\x5b\xc6\x76\xb8\xf0\x77\xc5\x19\x66\xe5\x77\x7d\x25\x50\x5f\x4b\x1d\xe0\x33\xab\xe7\xcc\x80\x3e\x5c\xff\x46\xf3\x70\xf2\x8a\xbd\x50\xb0\xc4\x0a\x99\x81\x99\xa9\x8b\x1c\xca\x5d\xec\xd0\x98\x59\x1d\x6c\x81\x6c\x48\xd2\x9a\xa8\x7c\x6a\xd1\x58\x5f\x25\x68\x84\x1d\xbe\x10\xfa\xa4\xa5\xab\xa9\xc3\xf8\x99\xa3\xf3\xc8\xee\x10\x8d\xd0\xd0\x85\xd5\x7a\x8f\xc9\xf0\xf3\x72\xae\xa8\x5d\xfb\xc1\xd4\x91\xe3\xf9\x24\x88\xe1\xa4\x21\x4e\xed\xe7\x98\x98\xe8\xdc\xd4\x62\xc8\x50\x6f\x08\xdf\xec\xd7\x56\xdd\xd7\xb9\x5d\xcc\xb5\x6c\xac\x41\x11\x2f\xb1\x15\xaa\x0f\xc8\x6f\xaa\x35\x80\x7a\xfd\x65\xed\x3f\x0c\xcc\x59\x66\xdb\x76\xab\xef\x4b\x9b\x6a\xcf\x1c\x8d\xcc\xec\x65\x7b\x06\x42\x1e\x4e\x08\xa1\x5a\x87\xe1\x51\x59\x9f\x65\x8a\x71\xbe\x8b\xf2\x79\x96\xe1\x23\x3b\x20\x73\xa0\x09\xee\xee\x9a\xc3\x7a\x1d\xb4\xd6\x19\x8f\x59\x54\x1b\x5a\x01\xed\xa1\x5c\x99\xeb\xad\xe6\xcc\x37\x73\x0a\xdf\x22\x9a\xc8\x1f\x03\x84\x85\x36\xc1\xcf\x2c\xaf\x1d\x5b\x5e\xbb\x98\xa7\xb3\x18\x98\x1b\x52\xfb\xd9\x62\xe8\x6c\xa2\x4f\x5c\x9b\x20\x03\xa7\xe7\xcc\xec\x40\x79\x64\x19\x71\x5e\xd8\x41\xe9\x6f\xa9\x85\xea\x52\xa5\xdf\x55\xfc\xfb\x2c\x53\xe7\x18\xad\xcc\x5e\xb6\xfc\x92\x7e\x2b\x33\xa8\xb6\x30\x54\x84\xd5\xda\x4c\x7f\xb5\x8e\x33\x5c\x8c\x96\xed\xa5\xa1\x71\x73\xab\x21\xc4\x2c\x35\xe9\xdf\x7c\xf9\xf2\x79\x27\x45\x3e\x79\x57\xe2\x45\xc7\xa9\xa2\x39\x48\xe2\x24\x9a\x7b\xd5\x8e\xad\xed\x3b\x57\x0e\xd4\xba\xf6\x1c\x10\x66\xe5\x21\xb1\x03\x27\xbf\xea\x8d\x68\x4a\x0a\x92\x56\x9a\x7a\x6e\x08\x0e\x1e\x35\xcb\x37\x9e\xb3\x25\xc5\x53\xfb\xe7\x8e\xed\x89\x1d\x96\xc7\x2b\x2a\x0a\xcb\xfb\xc3\x64\x6f\xbe\x5e\xd5\xdb\x1d\xcd\x24\xba\x2d\x4f\x73\x1d\xdd\x93\xf2\xe5\x9f\xc5\x1e\xb4\x7d\xf1\x5d\x74\x42\x72\xf3\xcc\x58\xb1\x89\xf0\xe8\xc1\xb1\xfd\x43\x8a\xfb\x07\x29\xa9\xf2\x5c\xda\xfd\xf6\xa9\x37\xc9\x36\x21\x90\x40\xf6\x49\x47\x2a\x0f\x9d\x8d\x6c\x7c\xda\xd9\xc8\x56\x75\x52\xab\x68\xfb\x3e\x89\x20\x28\x15\x14\x80\xb0\xd8\x14\xef\xe6\x9e\xb3\xb7\xc5\xc6\x73\xb6\xa5\x76\xe8\x1e\x9a\x62\x43\xaa\x38\xbe\xba\xbf\x12\x81\xe9\x80\xe4\x80\x44\x4f\xf1\x75\x64\xbb\xfe\xe6\x36\xfd\x77\xd1\xdb\xda\x9e\xbd\xde\x8a\xfd\x26\x5a\x52\xb9\xfb\xf6\x7e\x7b\x17\x6e\x7a\xc1\x1e\xdd\xef\x72\xca\x74\x75\x31\xcd\xde\xf1\xa3\x5d\x2f\x78\x9f\x01\x1e\x3c\xcd\x7a\xa8\x77\x17\x78\xcc\x11\xd1\x7d\xc7\x63\xc4\x0f\x17\xde\xd5\x72\xee\xd0\x6c\x0a\xe6\x20\x29\x81\xf5\xc0\xb9\xf1\xb3\x9b\xbd\xaf\x53\x3b\x8a\x4f\x9c\x9e\x7f\xbf\xdd\xee\x91\x3b\x74\x76\x1f\xcc\x4d\x98\x17\xea\xa5\x8b\x53\xed\x61\x71\xf0\xf7\x7a\x2c\x37\x0f\x9d\xe9\xbb\x2e\x77\x8f\x57\xb7\x26\x1d\x2d\x95\x99\x89\x0b\xb2\x7a\x0f\xa8\xfc\xae\x73\xe6\x57\xe5\xf9\x3d\x2f\x03\x89\x67\x1e\x0f\x30\x26\x84\xa3\xe9\xc9\x4d\xe4\x67\x36\xe3\x23\xe5\x9a\x59\x54\x6c\xe8\x1e\x80\x34\x95\x67\x66\x78\xee\x74\x60\x36\x4b\x40\x3a\x8b\x20\xd2\x6a\x03\x3b\x53\xb8\xe5\x94\x16\x6b\xc2\xf1\xa6\x25\x85\x39\x84\xe7\xee\x25\xa8\xfc\xab\xb7\x3e\xa8\x47\xcd\x80\xed\x9f\x3d\xbc\x08\xb2\xc4\xb3\xab\xdb\xa6\xae\x3b\x5e\xdc\x9a\x9b\x1e\x34\x2d\x0f\x22\x33\xbd\xb8\x72\x1a\x9b\xc5\x31\xd3\xeb\x60\xa5\xb8\xf0\x42\xc5\x6d\x4b\xcb\x0b\x40\xcb\x75\x13\xe0\xae\x30\xa6\x35\x07\xc9\x05\xa7\x30\x2b\xf5\x47\x61\x6d\x42\xe5\xed\x52\x72\x2d\x7e\xaa\x7e\xfe\xd6\x53\x0c\x07\x3c\xe1\xea\x5d\xba\xba\x8e\x1c\x33\x33\xef\xf6\xf1\xac\x3c\x11\x30\x8c\x42\x2f\x8b\x92\x3b\xc9\x0b\x5d\x08\x6a\x87\x18\xe6\x30\xf3\x62\x08\x86\x85\xa8\xa9\xda\xc6\x2f\x4a\xfc\xcc\x3c\x8b\x86\x5e\xe6\xb9\x66\x06\x8e\x63\x8a\x69\xbf\xfb\x9e\xa7\xb2\x6a\x81\xfd\xec\xde\xb1\xa6\x2d\xa0\x3f\x75\x1f\x5b\x11\xe4\xd7\xd2\x60\xc3\xd4\x73\x67\x59\x7a\xbf\x41\xbd\x06\xab\xf2\x18\xea\xad\xe9\x9e\x39\x8d\xbf\x00\x56\x2f\x8a\xfc\x3d\xc5\x5c\x98\x45\x5f\x76\x51\xc6\x66\x1a\x68\x6e\x78\xcd\xad\x09\x41\x92\x9d\xcc\x3f\x2f\x08\x72\x2b\x31\x94\x4e\xd6\x42\x34\x4f\x26\x83\x2e\x8c\x2c\x73\xef\xbe\xc5\xcf\x0a\x82\x4f\x9f\x99\x2f\xbe\x31\x1e\x5d\x92\xe0\xbc\x21\xf2\x1e\xb8\xe2\xe5\x0f\x1b\x79\xf1\xcb\x42\xef\xb7\xde\x5f\x3d\xf4\x7e\x7b\xfc\x15\x7a\x7f\x85\xde\x5f\xa1\xf7\xcf\x17\x7a\x1d\x50\x1c\x4b\x74\x7e\x85\xdd\xd5\xe3\x9f\x32\xec\xfe\x1a\xf0\x96\xa5\xfe\x4a\x51\xb7\x71\xee\x3a\xbd\xdf\x3b\xea\xaa\xbf\xa2\xee\xde\xe7\x57\xd4\x3d\x26\xaf\x5f\x51\x77\xbd\xee\x11\x82\xec\x57\xc4\x5d\x3d\xfe\x71\x11\x77\x57\x19\x9b\x3d\x3d\xf0\x36\x8b\xc2\xd6\xee\x8f\x2d\xd5\xec\xae\xcd\x6c\x73\xdf\x89\xec\x3c\x00\x61\xd6\x69\xdf\xef\x50\xde\x5d\xa6\x38\xd8\x30\x6a\x99\x7c\xc4\x1e\x49\xc2\x6a\xde\x3e\x3e\x12\xd8\xed\x83\x35\x6d\xde\x9a\x8d\x46\xf3\x76\x8a\x37\x01\xf9\x68\x3f\x02\xa2\x69\xde\x5c\x7d\xbd\xba\x69\x7b\x10\x7a\xa1\x7b\x75\x7f\xb5\x6e\xf5\xaa\x22\x77\x45\x45\x61\x79\x5f\x6e\x74\x68\x05\xe8\x80\x4d\x9d\xe0\xfc\xbe\x58\x0a\x75\x40\x92\xee\x2e\x54\xed\x92\x3d\x9b\xdb\xa0\xdc\xe4\xc4\x65\x3e\x1f\x15\xdf\xc1\xd5\x24\xc4\x73\x07\x4c\xbd\xd0\x2b\x8f\xbf\x17\xed\x1f\x42\x9b\x73\x2b\x74\x6b\x22\x85\x41\x36\x2d\x87\xb4\x9d\xa7\xa7\xdb\x29\x78\x68\xde\x3e\x10\xf8\xb7\x5b\xb2\xf1\x64\xdd\x4e\xc9\xc7\x87\xc6\x23\xc0\x9b\x0f\x4d\xec\xc8\x02\x57\xbc\xf5\xde\x88\xeb\x7f\x5c\xa6\xf4\xd3\xa4\x56\x31\x6d\x67\x49\xf0\xf4\xd2\xd4\x27\x62\x00\x79\x8b\xe1\xb7\x71\x02\xe6\x1e\x58\x7c\x0e\x16\x7c\xdc\x1c\x3e\x98\x9d\x1f\x85\xf5\xad\xb6\x57\xef\xb1\xb9\x68\x29\xae\x06\x38\x27\x4c\x8d\x28\x3c\xfd\x96\x85\xef\x8e\xdb\xcd\x4f\x5a\xa5\x33\xcb\x8b\xb6\xa4\x2a\xc5\x3b\x96\x5c\x57\xd7\x71\x15\x57\xc9\x9e\x18\xa3\x14\x85\x71\xac\x7c\xd5\xd2\x3d\xf1\x70\x38\x1d\xdb\xdf\xe0\x71\x28\xc1\xa9\xee\x99\xfb\xde\xd7\x67\x6f\x75\x0d\xc9\x77\x93\xfd\x73\x79\x79\x69\x11\x12\xb0\x73\x34\xf0\x2b\x32\x82\x4f\xbc\xd7\xfd\x10\xf9\x3a\xa2\x86\xe9\x99\x34\x69\xd5\xd4\xc5\x2f\x76\x38\x77\xe1\x56\x09\x4f\xdd\xd0\x89\x23\x2f\x3c\xa1\x98\xcd\xcf\x85\xd7\x47\x55\xb4\xb7\xfd\xad\x0f\x96\xea\x05\x57\xc5\xaf\x88\xd4\xfe\xf7\xb6\xab\xee\xae\xff\xff\xcb\xf6\x3b\x5d\x70\x0b\xdb\x79\x3e\x3f\x22\x8e\x62\x20\x51\xbf\x35\xeb\x0f\x23\x93\x93\x25\x8e\xd7\xbf\xf0\x4a\xf8\xea\x02\xcc\x4f\xcd\xfc\xab\x84\xff\xf2\x78\xb0\xb3\xe3\xe6\xe7\xbc\x17\xfe\x27\x0e\x15\x0f\x08\x6b\x89\x3f\x6c\xa8\xa8\xd8\xff\x79\x43\x45\x0c\x7e\x87\x68\x11\x27\xde\xdc\xcc\x56\xd1\xa2\xe2\xb3\xb8\x41\xbf\x94\xf5\x75\xa7\xbc\xda\xfd\xc8\x2b\x77\xce\xb4\xb1\xf5\x5e\x08\xf0\xbd\x70\x20\x06\xe5\xd8\x1f\xdb\x1f\x23\xff\x82\x03\x13\xc2\x68\xa1\x6e\x75\xb6\x65\xdb\xe5\x6b\xad\x8e\xcd\x46\xa1\x2a\x74\x94\x2c\xcc\xc4\x01\x8e\x9c\x98\xd3\xa9\x67\x9f\x29\xce\x98\x19\x58\x98\x4b\x39\x31\xc3\xd4\xcb\xea\x2d\xbd\x07\x4a\xe7\x29\x10\x41\x10\x65\xa0\xaa\x91\x9e\x28\x9b\x14\x05\xb7\x99\x3f\x0e\x69\xef\xb9\x26\x79\xed\x7b\xb5\x05\x1d\x9c\x89\xbf\x6c\x13\x6e\x15\x92\xee\x63\x00\x12\x2f\x74\x6f\x3f\xc9\x34\x77\xbe\x8f\x4b\xea\xdf\x73\x6f\xe1\xe7\xbf\xa2\xe4\xb3\xb7\xbb\xbe\x5d\x8d\xff\x7c\x9f\x83\xff\xf2\xc0\x1f\xe3\x81\xf3\x63\x77\x92\x5f\xec\x7a\x1b\xca\xdf\xf4\xc0\x0f\x25\x89\x7f\x5e\xd7\xdb\x71\x95\xcf\xf2\xc0\x83\x6a\xfc\x7e\xae\xe7\x7b\x61\x61\x72\x4c\x31\x8f\xb3\x9e\xce\x7a\xeb\xbc\xa9\x1d\x85\xa9\x97\x66\x20\xb4\x97\xe7\xde\x1e\x54\xbd\x3e\x95\x5a\xd7\x18\x80\x39\x80\xe5\x6a\x57\x12\x6d\xbe\x02\xf5\x00\xff\x7b\x32\x78\x57\x36\x5c\x57\xae\x97\x0c\x2f\x11\xe2\x16\x43\xfb\xb9\xd6\x01\x16\x77\xe6\xfc\x46\xd3\x29\x48\x36\x16\xf6\x8e\xbe\xcf\xc9\x8b\x45\x33\x74\x01\xed\xc1\xac\xbc\x68\x7a\xb5\x48\x83\x63\x0f\x77\x0f\xc4\x1d\x4e\x36\xef\x48\xe2\xeb\x03\x76\xf7\xf8\xed\xae\xf9\x70\x87\x37\xf0\xaf\x4d\xe2\x0e\x7f\xfc\x76\xf7\xed\xae\x81\x15\x7f\x7f\x23\xef\x9a\xd8\xdd\x43\xb3\xf8\xf2\xf4\x78\x87\x3f\x3d\xdc\x11\xdf\x6e\xbe\x5e\x79\xd3\xdf\xc0\xbf\x73\x13\xa6\x5b\xcb\x0c\xbb\xef\xaa\x2e\xd6\x18\xca\xff\xbe\x5e\xdd\x7c\x45\x7f\x9d\x2e\x7e\xd8\x07\xbc\x74\x1b\xfa\xca\x3e\x75\xcf\x6d\x11\xd8\xf6\x8d\x77\xbf\x63\xf2\x87\xbe\xf7\xe1\x42\x9b\x28\x47\x03\x7d\xb0\x6c\x9b\x29\x70\x86\x20\x33\x91\x99\x68\x89\x97\x81\xad\xa0\x76\x11\x6a\xff\xe3\xec\x14\xf3\xc7\x16\x56\x3e\x27\xa9\xaf\xc6\x5a\x07\x60\xa3\xc2\x82\xee\x4b\x0c\x12\xaf\x7a\xab\xd1\x35\x15\x25\xe0\xea\x37\x49\x18\x7c\xf9\x31\x2b\x03\xe4\x2d\xf6\xf4\x83\xf3\xb5\x6d\x74\xff\x84\x14\xa9\x66\xe6\x6c\x6a\x71\xd3\x12\x47\x37\x87\xb2\x84\x03\xb6\x1a\xc5\x35\xc0\x1e\xa1\x99\xcd\x92\x28\x77\x67\x71\x5e\xdc\xc6\xde\xc4\xb0\xf7\x66\x1f\x6f\x5a\xf8\x44\xb2\x44\xbd\xf8\xe8\xa2\x61\xfa\x6f\xd8\xa9\x7e\xfb\xf9\x46\xaf\x9f\x67\x91\xbf\xfb\x1a\xd5\xfb\xad\xb5\x95\x2e\x43\x7b\x54\xec\x57\x3a\xf1\x56\x85\xeb\xd8\x4c\xb2\x42\xec\x87\xde\x51\xbf\x53\x32\x9b\x9d\x9f\x22\xbe\xbe\xf7\x4e\xcc\xd6\x1c\xd9\x4a\x73\xb5\x99\x4e\xf5\xcc\x74\x76\x24\x4a\x1c\xe9\x43\x85\x84\x72\x86\x12\xa1\x6f\xd8\xc3\x13\x86\xbd\xd5\x47\xbf\xa3\xab\xa1\xbf\x77\x94\xf1\xa9\xee\x77\x6f\x47\x61\x66\x7a\xe1\xcf\xf8\xba\xd1\x1f\xe2\x89\x5b\xd2\xb8\xc4\x2d\x8f\x61\xe0\x3b\xdb\xff\xd9\x91\xa0\xda\x4a\xf2\xa7\x40\x80\x9f\xcc\xaf\x2b\xd1\xfe\xf2\xe7\x5f\xfe\x7c\xc0\xc6\xbe\x93\x3f\x57\xfb\x44\xff\x3a\x21\xfd\x16\xff\xc9\xdc\xbe\xd6\xc0\x2f\xbf\xff\xe5\xf7\x07\x8c\xec\x3b\xf9\xfd\x28\x06\xa1\x34\xf3\xa6\x19\x05\xf3\x34\x3b\xbe\x97\xfe\x3b\x00\xc0\x16\xc5\x1f\x0c\x05\x79\xe8\xfd\x3b\x07\x7d\x70\x6e\x72\x74\xbb\xf0\xa7\xbc\x1c\xef\x32\xf1\xac\x8a\xdf\xfb\xa7\xa4\x53\x7f\xce\xbc\x1c\xfb\xf4\x9a\xf9\x77\x60\xda\x2e\xad\x69\x6b\x57\x3e\xeb\x9c\x54\x74\xfd\xf9\xf9\xba\xe2\x81\x30\xfb\x1c\xe6\x8f\x5b\xf9\x1f\x22\x33\xdd\x03\x8b\x5f\xb1\xea\x57\xac\x3a\x60\x6d\xdf\x29\x56\x49\x1b\x3b\xf0\xff\x1c\x89\xea\x4f\xe6\xdf\x5b\x02\xfe\xe5\xdb\xbf\x7c\xfb\x80\xa5\x1d\x3b\x29\xf5\x89\xd7\xcf\x5d\x60\x77\x27\x2f\xc3\xfb\xf8\x19\xa3\x35\xff\x3f\xf4\x7c\x90\x69\x3b\xce\x23\x61\x3e\xde\x36\x1a\x4f\xcd\xdb\x87\x27\x30\xbd\xb5\x9c\x07\xe2\x76\xfa\x0d\xfb\x36\xb5\xcc\x27\xdc\x04\x8f\x17\x9e\x0f\x3a\x2f\xf5\x3f\xd2\xd9\xa0\x4f\x31\xc4\x1b\x1a\x19\x59\xb5\x00\xb8\x7d\xdc\xed\x2f\x6b\x71\x0f\x0e\xf9\x68\x91\x4f\xd6\x2d\xee\x3c\x4c\x6f\x1f\x1e\x9f\x1e\x6f\x4d\x82\xc4\x6f\xed\x6f\x8f\x4f\x8d\x07\x87\xc0\x89\x77\x59\xdc\xf4\x2f\x65\x71\x7f\x84\x43\xa2\x97\xa3\xf0\xaf\xa3\xa1\x7f\xf0\xa3\xa1\x7f\x2e\xe8\xff\xa3\x2e\xb9\x9f\x44\x87\x8d\xf3\x9f\xef\x07\x85\xdd\x63\xa1\xbb\x3d\xd9\x68\xe4\x4b\x1d\xfd\x3a\xbc\x74\x85\x0a\xbf\xdd\xa5\x77\x5b\xfb\x71\x7e\xfc\x96\x7e\xfe\x50\x9f\xb5\xc0\x14\x4c\x4d\x0c\xbf\x25\x4c\x82\xbc\x7d\xc0\xc9\xc7\xdb\xa7\x86\xf9\x74\x4b\x3c\x12\xd3\x69\xa3\x61\x83\x06\xfe\xf0\x97\x0c\x9e\x9f\xba\x71\xeb\x32\xb5\x1f\xf3\xcf\xbf\x95\xdf\xff\xf3\xb7\xff\x17\x00\x00\xff\xff\xd8\x0d\xd9\x17\x02\xa6\x00\x00")
 
 func rpProductionJsonBytes() ([]byte, error) {
 	return bindataRead(
diff --git a/pkg/env/core.go b/pkg/env/core.go
index cd4ca00ae..dd63ba46b 100644
--- a/pkg/env/core.go
+++ b/pkg/env/core.go
@@ -8,7 +8,6 @@ import (
 	"crypto/rsa"
 	"crypto/x509"
 
-	"github.com/Azure/go-autorest/autorest/azure"
 	"github.com/sirupsen/logrus"
 
 	"github.com/Azure/ARO-RP/pkg/deploy/generator"
@@ -61,7 +60,7 @@ func NewCore(ctx context.Context, log *logrus.Entry) (Core, error) {
 		return nil, err
 	}
 
-	rpKVAuthorizer, err := rpauthorizer.NewRPAuthorizer(azure.PublicCloud.ResourceIdentifiers.KeyVault)
+	rpKVAuthorizer, err := rpauthorizer.NewRPAuthorizer(instancemetadata.Environment().ResourceIdentifiers.KeyVault)
 	if err != nil {
 		return nil, err
 	}
diff --git a/pkg/env/dev.go b/pkg/env/dev.go
index 3918afd6e..45d7c5d07 100644
--- a/pkg/env/dev.go
+++ b/pkg/env/dev.go
@@ -66,14 +66,14 @@ func newDev(ctx context.Context, log *logrus.Entry) (*dev, error) {
 	d.prod.clustersGenevaLoggingEnvironment = "Test"
 	d.prod.clustersGenevaLoggingConfigVersion = "2.3"
 
-	fpGraphAuthorizer, err := d.FPAuthorizer(d.TenantID(), azure.PublicCloud.GraphEndpoint)
+	fpGraphAuthorizer, err := d.FPAuthorizer(d.TenantID(), d.Environment().GraphEndpoint)
 	if err != nil {
 		return nil, err
 	}
 
 	d.applications = graphrbac.NewApplicationsClient(d.TenantID(), fpGraphAuthorizer)
 
-	fpAuthorizer, err := d.FPAuthorizer(d.TenantID(), azure.PublicCloud.ResourceManagerEndpoint)
+	fpAuthorizer, err := d.FPAuthorizer(d.TenantID(), d.Environment().ResourceManagerEndpoint)
 	if err != nil {
 		return nil, err
 	}
@@ -97,7 +97,7 @@ func (d *dev) AROOperatorImage() string {
 		return override
 	}
 
-	return fmt.Sprintf("%s.azurecr.io/aro:%s", d.acrName, version.GitCommit)
+	return fmt.Sprintf("%s/aro:%s", d.ACRDomain(), version.GitCommit)
 }
 
 func (d *dev) Listen() (net.Listener, error) {
diff --git a/pkg/env/env.go b/pkg/env/env.go
index 9faac6612..3e5e65318 100644
--- a/pkg/env/env.go
+++ b/pkg/env/env.go
@@ -44,7 +44,7 @@ type Interface interface {
 	Listen() (net.Listener, error)
 	Zones(vmSize string) ([]string, error)
 	ACRResourceID() string
-	ACRName() string
+	ACRDomain() string
 	AROOperatorImage() string
 }
 
diff --git a/pkg/env/prod.go b/pkg/env/prod.go
index f5397fb76..659fce19a 100644
--- a/pkg/env/prod.go
+++ b/pkg/env/prod.go
@@ -34,7 +34,7 @@ type prod struct {
 	armClientAuthorizer   clientauthorizer.ClientAuthorizer
 	adminClientAuthorizer clientauthorizer.ClientAuthorizer
 
-	acrName             string
+	acrDomain           string
 	clustersKeyvaultURI string
 	domain              string
 	zones               map[string][]string
@@ -72,7 +72,7 @@ func newProd(ctx context.Context, log *logrus.Entry) (*prod, error) {
 		log: log,
 	}
 
-	rpAuthorizer, err := p.NewRPAuthorizer(azure.PublicCloud.ResourceManagerEndpoint)
+	rpAuthorizer, err := p.NewRPAuthorizer(p.Environment().ResourceManagerEndpoint)
 	if err != nil {
 		return nil, err
 	}
@@ -114,9 +114,9 @@ func newProd(ctx context.Context, log *logrus.Entry) (*prod, error) {
 		if err != nil {
 			return nil, err
 		}
-		p.acrName = acrResource.ResourceName
+		p.acrDomain = acrResource.ResourceName + "." + p.Environment().ContainerRegistryDNSSuffix
 	} else {
-		p.acrName = "arointsvc"
+		p.acrDomain = "arointsvc" + "." + p.Environment().ContainerRegistryDNSSuffix
 	}
 
 	return p, nil
@@ -150,12 +150,12 @@ func (p *prod) ACRResourceID() string {
 	return os.Getenv("ACR_RESOURCE_ID")
 }
 
-func (p *prod) ACRName() string {
-	return p.acrName
+func (p *prod) ACRDomain() string {
+	return p.acrDomain
 }
 
 func (p *prod) AROOperatorImage() string {
-	return fmt.Sprintf("%s.azurecr.io/aro:%s", p.acrName, version.GitCommit)
+	return fmt.Sprintf("%s/aro:%s", p.acrDomain, version.GitCommit)
 }
 
 func (p *prod) populateDomain(ctx context.Context, rpAuthorizer autorest.Authorizer) error {
@@ -222,7 +222,7 @@ func (p *prod) Domain() string {
 }
 
 func (p *prod) FPAuthorizer(tenantID, resource string) (refreshable.Authorizer, error) {
-	oauthConfig, err := adal.NewOAuthConfig(azure.PublicCloud.ActiveDirectoryEndpoint, tenantID)
+	oauthConfig, err := adal.NewOAuthConfig(p.Environment().ActiveDirectoryEndpoint, tenantID)
 	if err != nil {
 		return nil, err
 	}
diff --git a/pkg/frontend/adminactions/adminactions.go b/pkg/frontend/adminactions/adminactions.go
index 6902b6399..133c82730 100644
--- a/pkg/frontend/adminactions/adminactions.go
+++ b/pkg/frontend/adminactions/adminactions.go
@@ -7,7 +7,6 @@ import (
 	"context"
 	"net/http"
 
-	"github.com/Azure/go-autorest/autorest/azure"
 	configclient "github.com/openshift/client-go/config/clientset/versioned"
 	"github.com/sirupsen/logrus"
 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
@@ -78,7 +77,7 @@ func New(log *logrus.Entry, env env.Interface, oc *api.OpenShiftCluster,
 	}
 
 	fpAuth, err := env.FPAuthorizer(subscriptionDoc.Subscription.Properties.TenantID,
-		azure.PublicCloud.ResourceManagerEndpoint)
+		env.Environment().ResourceManagerEndpoint)
 	if err != nil {
 		return nil, err
 	}
diff --git a/pkg/frontend/adminactions/serialtool.go b/pkg/frontend/adminactions/serialtool.go
index 96f355849..110449b6b 100644
--- a/pkg/frontend/adminactions/serialtool.go
+++ b/pkg/frontend/adminactions/serialtool.go
@@ -15,7 +15,6 @@ import (
 	mgmtcompute "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-03-01/compute"
 	mgmtstorage "github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2019-04-01/storage"
 	azstorage "github.com/Azure/azure-sdk-for-go/storage"
-	"github.com/Azure/go-autorest/autorest/azure"
 	"github.com/Azure/go-autorest/autorest/date"
 	"github.com/sirupsen/logrus"
 
@@ -65,7 +64,7 @@ func (a *adminactions) VMSerialConsole(ctx context.Context, w http.ResponseWrite
 	}
 
 	blobService := azstorage.NewAccountSASClient(
-		"cluster"+a.oc.Properties.StorageSuffix, v, azure.PublicCloud).GetBlobService()
+		"cluster"+a.oc.Properties.StorageSuffix, v, *a.env.Environment()).GetBlobService()
 
 	c := blobService.GetContainerReference(parts[1])
 
diff --git a/pkg/operator/apis/aro.openshift.io/v1alpha1/cluster_types.go b/pkg/operator/apis/aro.openshift.io/v1alpha1/cluster_types.go
index 2b1e62c01..168ea1cee 100644
--- a/pkg/operator/apis/aro.openshift.io/v1alpha1/cluster_types.go
+++ b/pkg/operator/apis/aro.openshift.io/v1alpha1/cluster_types.go
@@ -35,6 +35,7 @@ type ClusterSpec struct {
 	// ResourceID is the Azure resourceId of the cluster
 	ResourceID      string              `json:"resourceId,omitempty"`
 	ACRName         string              `json:"acrName,omitempty"`
+	ACRDomain       string              `json:"acrDomain,omitempty"`
 	Location        string              `json:"location,omitempty"`
 	GenevaLogging   GenevaLoggingSpec   `json:"genevaLogging,omitempty"`
 	InternetChecker InternetCheckerSpec `json:"internetChecker,omitempty"`
diff --git a/pkg/operator/controllers/genevalogging/genevalogging.go b/pkg/operator/controllers/genevalogging/genevalogging.go
index 639ce9091..3bd8ec4e4 100644
--- a/pkg/operator/controllers/genevalogging/genevalogging.go
+++ b/pkg/operator/controllers/genevalogging/genevalogging.go
@@ -69,6 +69,7 @@ func (g *genevaLogging) securityContextConstraints(ctx context.Context, name, se
 }
 
 func (g *genevaLogging) daemonset(r azure.Resource) *appsv1.DaemonSet {
+
 	return &appsv1.DaemonSet{
 		ObjectMeta: metav1.ObjectMeta{
 			Name:      "mdsd",
@@ -142,7 +143,7 @@ func (g *genevaLogging) daemonset(r azure.Resource) *appsv1.DaemonSet {
 					Containers: []v1.Container{
 						{
 							Name:  "fluentbit-journal",
-							Image: version.FluentbitImage(g.cluster.Spec.ACRName),
+							Image: version.FluentbitImage(g.cluster.Spec.ACRDomain),
 							Command: []string{
 								"/opt/td-agent-bit/bin/td-agent-bit",
 							},
@@ -179,7 +180,7 @@ func (g *genevaLogging) daemonset(r azure.Resource) *appsv1.DaemonSet {
 						},
 						{
 							Name:  "fluentbit-containers",
-							Image: version.FluentbitImage(g.cluster.Spec.ACRName),
+							Image: version.FluentbitImage(g.cluster.Spec.ACRDomain),
 							Command: []string{
 								"/opt/td-agent-bit/bin/td-agent-bit",
 							},
@@ -216,7 +217,7 @@ func (g *genevaLogging) daemonset(r azure.Resource) *appsv1.DaemonSet {
 						},
 						{
 							Name:  "fluentbit-audit",
-							Image: version.FluentbitImage(g.cluster.Spec.ACRName),
+							Image: version.FluentbitImage(g.cluster.Spec.ACRDomain),
 							Command: []string{
 								"/opt/td-agent-bit/bin/td-agent-bit",
 							},
@@ -253,7 +254,7 @@ func (g *genevaLogging) daemonset(r azure.Resource) *appsv1.DaemonSet {
 						},
 						{
 							Name:  "mdsd",
-							Image: version.MdsdImage(g.cluster.Spec.ACRName),
+							Image: version.MdsdImage(g.cluster.Spec.ACRDomain),
 							Command: []string{
 								"/usr/sbin/mdsd",
 							},
diff --git a/pkg/operator/controllers/routefix/routefix.go b/pkg/operator/controllers/routefix/routefix.go
index 020f92fdf..e0ed42376 100644
--- a/pkg/operator/controllers/routefix/routefix.go
+++ b/pkg/operator/controllers/routefix/routefix.go
@@ -75,7 +75,7 @@ func (r *RouteFixReconciler) resources(ctx context.Context, cluster *arov1alpha1
 						Containers: []v1.Container{
 							{
 								Name:  kubeName,
-								Image: version.RouteFixImage(cluster.Spec.ACRName),
+								Image: version.RouteFixImage(cluster.Spec.ACRDomain),
 								Args: []string{
 									"sh",
 									"-c",
diff --git a/pkg/operator/deploy/bindata.go b/pkg/operator/deploy/bindata.go
index 3023f4a80..1bd20a549 100644
--- a/pkg/operator/deploy/bindata.go
+++ b/pkg/operator/deploy/bindata.go
@@ -86,7 +86,7 @@ func (fi bindataFileInfo) Sys() interface{} {
 	return nil
 }
 
-var _aroOpenshiftIo_clustersYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x58\xcd\x72\xe3\xc8\x0d\xbe\xeb\x29\x50\xce\xc1\x87\x58\xf4\x4c\xed\x25\xd1\x6d\xca\xb3\x49\xb9\xb2\xd9\xb8\xc6\xae\xb9\xac\xf7\x00\x35\x21\x12\x71\xb3\x9b\x41\x83\xf6\x68\x52\x79\xf7\x14\xba\x49\x89\x92\xa5\xd8\xbb\x55\xd1\x45\x45\x34\xfe\x1a\x3f\x1f\x40\x2e\x96\xcb\xe5\x02\x7b\xfe\x4a\x92\x38\x86\x15\x60\xcf\xf4\x4d\x29\xd8\x53\xaa\x9e\xfe\x94\x2a\x8e\xd7\xcf\x1f\xd7\xa4\xf8\x71\xf1\xc4\xa1\x5e\xc1\xcd\x90\x34\x76\x5f\x28\xc5\x41\x1c\x7d\xa6\x0d\x07\x56\x8e\x61\xd1\x91\x62\x8d\x8a\xab\x05\x00\x86\x10\x15\x8d\x9c\xec\x11\xc0\xc5\xa0\x12\xbd\x27\x59\x36\x14\xaa\xa7\x61\x4d\xeb\x81\x7d\x4d\x92\x2d\x4c\xf6\x9f\x3f\x54\x3f\x54\x1f\x16\x00\x4e\x28\x8b\x3f\x70\x47\x49\xb1\xeb\x57\x10\x06\xef\x17\x00\x01\x3b\x5a\x81\xf3\x43\x52\x92\x54\xa1\xc4\x2a\xf6\x14\x52\xcb\x1b\xad\x38\x2e\x52\x4f\xce\x6c\x36\x12\x87\x7e\x05\xaf\xce\x8b\x86\xd1\xad\xf1\x4a\x45\x59\xa6\x78\x4e\xfa\xb7\x39\xf5\x27\x4e\x9a\x4f\x7a\x3f\x08\xfa\xbd\xe9\x4c\x4c\x1c\x9a\xc1\xa3\xec\xc8\x0b\x80\xe4\x62\x4f\x73\xad\x69\x58\xcb\x18\xaf\xd1\x6e\x52\xd4\x21\xad\xe0\xdf\xff\x59\x00\x3c\xa3\xe7\x3a\xdf\xb6\x1c\x9a\xbb\x9f\xee\x6e\xbf\xfe\x70\xef\x5a\xea\xb0\x10\x01\x6a\x4a\x4e\xb8\xcf\x7c\x93\x72\xe0\x04\xda\x12\x14\x4e\xd8\x44\xc9\x8f\x93\x8b\xf0\xe9\xee\x76\x94\xee\x25\xf6\x24\xca\x93\x07\xf6\x9b\x65\x7e\x47\x3b\xb2\x73\x69\x8e\x14\x1e\xa8\x2d\xd7\x54\x0c\x8e\x19\xa3\x1a\x52\x31\x1d\x37\xa0\x2d\x27\x10\xea\x85\x12\x85\x92\x7d\x23\x63\x80\xb8\xfe\x27\x39\xad\xe0\x9e\xc4\x04\x21\xb5\x71\xf0\xb5\x15\xc5\x33\x89\x82\x90\x8b\x4d\xe0\xef\x3b\x6d\x09\x34\x66\x33\x1e\x95\x92\x02\x07\x25\x09\xe8\x2d\x54\x03\x5d\x01\x86\x1a\x3a\xdc\x82\x90\xe9\x85\x21\xcc\x34\x64\x96\x54\xc1\xdf\xa3\x10\x70\xd8\xc4\x15\xb4\xaa\x7d\x5a\x5d\x5f\x37\xac\x53\x4d\xbb\xd8\x75\x43\x60\xdd\x5e\xe7\xca\xe4\xf5\xa0\x51\xd2\x75\x4d\xcf\xe4\xaf\x13\x37\x4b\x14\xd7\xb2\x92\xd3\x41\xe8\x1a\x7b\x5e\x66\x67\x43\x2e\xe9\xaa\xab\xff\xb0\x4b\xe8\xe5\x2c\x74\xba\xb5\xc4\x27\x15\x0e\xcd\x8e\x9c\x6b\xec\x6c\x7c\xad\xd6\x2c\x8b\x38\x8a\x15\xff\xf7\x61\x34\x92\x45\xe2\xcb\x8f\xf7\x0f\x30\x19\x2d\xa1\x2e\x51\xdd\xb3\xa6\x7d\x80\x2d\x38\x1c\x36\x24\x85\x73\x23\xb1\xcb\x5a\x28\xd4\x7d\xe4\xa0\x63\x95\x30\x05\xb5\xea\xec\x58\x2d\x73\xff\x1a\x28\xa9\xc5\xbe\x82\x9b\xdc\xc1\xb0\x26\x18\xfa\x1a\x95\xea\x0a\x6e\x03\xdc\x60\x47\xfe\x06\x13\xfd\xdf\xc3\x6b\x91\x4c\x4b\x0b\xdd\xdb\x01\x9e\x03\xcf\x21\x63\x89\xd0\x8e\x3c\x41\xc3\xc9\x4c\x8c\x1d\x75\xdf\x93\x3b\xa8\xf4\x9a\x12\x8b\x55\xa6\xa2\x92\xd5\xf3\x1c\x2d\xce\xf7\x56\xee\x2f\x27\x3f\x1b\x5a\x1d\x10\xcf\x5c\xc2\x7e\x0d\x05\x7a\xc6\x9f\x62\xd3\x70\x68\x8e\xa5\xce\x19\x81\x82\xae\x1b\x6e\x4e\xf4\xf2\x4e\x18\xd5\x3a\x68\x05\x97\xbf\x7c\x58\xfe\xf9\xd7\x3f\x56\xe5\xef\xf2\x04\xeb\x59\xef\x72\xa8\x63\x60\x8d\x76\xf4\xd7\x9b\xfb\x1f\xc3\x33\x4b\x0c\x1d\x05\x3d\x65\x93\xc2\xd0\x9d\xa2\x2f\xe1\x33\x63\x13\x62\x52\x76\xe9\x4e\x62\x7d\x92\xe7\x81\x92\xfe\x36\xef\x4e\xa6\xdc\x7e\x05\x3d\x48\x6f\x5a\x72\x4f\x24\xbf\x25\xb0\x83\xf8\x13\x54\x00\x56\xea\x4e\x1e\xbc\x11\xbf\xe9\x18\x45\x70\xfb\x5e\xff\x7d\x74\xb3\xe9\xf0\x0e\x4b\x13\x4c\xdc\xd6\xc7\x22\x07\x15\x3f\xcd\xf0\xdb\xcf\xd3\x18\xf9\xf4\x7d\x10\x9a\x89\x17\x54\xa7\xd9\x6c\x7b\x87\xfd\xd3\xad\x57\x06\xde\x5b\xcd\x97\xb9\x0e\xda\x2f\xae\x93\x61\xda\xef\xea\x3f\x17\x43\xcd\xb3\x25\xe4\x9c\xf1\x1d\xdb\x08\xc4\xa4\xd9\xce\x44\x06\x0e\x49\x31\x38\x4a\xd5\x91\x9a\x33\x65\x70\xa0\xfd\x62\xaf\x67\x8f\xd4\x65\x28\xda\xcd\x5e\x8f\xc9\xcb\x54\xee\x5a\xcd\x1d\x43\x21\xe3\xd8\x2d\x67\xd0\x91\x6b\x31\x70\xea\x72\x79\x87\x9a\x6a\x9b\x99\x86\xd7\x89\x6a\x78\x69\x29\x8c\xe8\xa5\xc8\x3e\xed\x0c\xec\x4d\x9a\x46\x83\x78\x84\x5e\x38\x0a\xc3\x53\x88\x2f\x01\xa2\xc0\x4b\x1e\xce\xf9\xac\xef\xfd\xd6\xf4\xa2\xf7\xfb\x28\x64\x65\xd0\xf0\x33\x05\xb0\xf1\x55\xc1\x63\x98\xfb\x3a\x4e\xf7\x35\x01\xd6\xa3\x5f\xf4\xad\xf7\xec\x58\xfd\xb6\x0c\xfd\xed\x2c\x67\xa0\x2d\xaa\xb9\x2d\x29\x0f\x76\x17\xbb\x3e\x86\x1c\x25\x97\xaf\xbd\x8e\x83\x82\xa0\xb6\x79\x9c\x61\xc8\x93\x8a\xa5\x4c\xc6\x98\xe8\x40\x57\x8e\x41\x1e\x7d\x06\xda\x79\xf0\xc5\x2c\x39\xbb\x7b\xaa\xe0\x1f\xc1\xd1\x58\x67\xf5\x55\x8e\x54\x47\x18\x4c\x65\xbe\xdc\x3e\x67\x0e\x03\x8c\x93\xd0\x02\xde\x50\x0d\x28\x6b\x56\x41\x61\xbf\x85\x25\xb0\x9d\xb9\xd8\x51\x82\x1e\x45\xa7\x96\xf9\x74\x77\x5b\xf6\x94\x16\x4b\x21\x27\xec\x08\xd6\xe8\x9e\x5e\x50\xea\xb4\xcc\x67\x9b\x28\xe5\xc9\xee\x8c\xca\x6b\xf6\xac\x39\x44\x8e\x24\x8c\x59\xdb\x8e\x17\x38\xd2\x5e\x5d\xbc\xaa\xbb\xff\x85\x64\x00\x1e\x93\x3e\x08\x86\xc4\xd3\x62\x7d\x1a\xc0\x36\x51\x3a\xd4\x15\xd8\xd8\x5f\x2a\x77\xf4\x7b\x60\xae\xa3\x94\xb0\x39\x63\xe1\x0d\x59\x21\x4c\xa7\xc7\xd8\xb9\xc6\xfd\x92\x25\xac\x7b\x8f\x9a\x01\x21\x06\x5a\xbe\x44\xa9\xaf\xf6\xcb\xcb\x89\x1d\x35\x83\x1c\x2a\x35\x51\xb6\xf6\xec\x70\x48\xb4\x3b\x18\x44\xf2\xa2\x94\xd1\xa9\x82\x5b\x3d\x61\x29\xb7\x1d\x87\x9c\x3b\x36\xd9\x41\xfb\x41\xaf\x20\x0d\xae\x05\x4c\xd9\x0f\xcf\x81\xc0\x5e\x7d\x9c\x7a\x68\x0c\x65\x46\x26\xab\x05\x0e\x90\x86\xae\x43\xe1\xef\xb9\x0c\x5d\x31\x3b\xf6\x5b\x76\xe8\x15\xfe\xbc\x2b\x9c\xaf\xa1\xf7\xdd\xa2\xf9\xf8\xed\x3c\xec\x21\xee\x61\xdb\xd3\x34\x4c\x4c\x78\x17\xc2\x5d\x3f\x61\x59\x77\x75\xdb\xb3\x43\xef\xb7\xd6\x6c\x53\x62\x6a\xb0\x4c\x19\x04\xa5\x36\x8a\x42\xdf\x4a\xde\x35\xe7\xf0\x92\xd5\xee\x30\x86\x43\xcd\x96\xb7\x71\x3a\x70\x01\xbd\xc7\x0b\x5c\x07\xab\x62\xbf\x54\x19\xe8\xf1\x02\xfa\xe8\x51\x58\xb7\x15\xfc\x25\x0a\xd0\x37\xec\x7a\x4f\x57\xc0\xc7\xde\x4d\xfa\x52\x41\x50\x34\x41\x76\xdb\x92\xef\xfc\x9e\x76\x35\x5a\xe0\x54\xde\xdb\x1e\x2f\xc0\x59\x4d\x71\xb2\xf6\x5b\xe3\xda\x00\xb3\x35\x68\x95\xee\x0a\x52\x3c\x32\xb0\xc7\x46\xbb\x3d\xd5\xf0\x78\x71\x1b\x46\x45\x27\x3a\xfa\xcd\x1c\x15\x28\xa4\x57\x83\xde\x56\xa8\x92\xf8\x13\x07\xa6\xf1\x15\xf9\xec\xfa\x71\x7e\x67\x31\xb4\x41\x8d\x72\x66\xf1\x7c\xff\x7e\x70\x44\xda\x7f\x0e\xf8\x88\xbe\x6f\xf1\xe3\x9e\x96\xeb\x78\x39\x7e\x04\x98\x1d\x03\x94\x35\x61\x05\x96\xf1\xf1\x1d\x3b\x8a\x41\x50\xa1\xec\xbb\x00\x9d\xa3\x5e\xa9\xfe\xf9\xf8\x33\xc0\xc5\xc5\xc1\x7b\x7e\x7e\x9c\xad\x10\xf0\xcb\xaf\x8b\xa2\x95\xea\xaf\x93\x37\x46\xfc\x6f\x00\x00\x00\xff\xff\xac\x35\x89\x99\x46\x11\x00\x00")
+var _aroOpenshiftIo_clustersYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x58\xcd\x72\xe3\xc8\x0d\xbe\xeb\x29\x50\xce\xc1\x87\x58\xf4\x4c\xed\x25\xd1\x6d\xca\xb3\x49\xb9\xb2\xd9\xb8\xc6\xae\xb9\xac\xf7\x00\x35\x21\x12\x71\xb3\x9b\x41\x83\xf6\x68\x52\x79\xf7\x14\xba\x49\x89\x92\xa5\xd8\xbb\x55\xd1\x45\x45\x34\xfe\x1a\x3f\x1f\x40\x2e\x96\xcb\xe5\x02\x7b\xfe\x4a\x92\x38\x86\x15\x60\xcf\xf4\x4d\x29\xd8\x53\xaa\x9e\xfe\x94\x2a\x8e\xd7\xcf\x1f\xd7\xa4\xf8\x71\xf1\xc4\xa1\x5e\xc1\xcd\x90\x34\x76\x5f\x28\xc5\x41\x1c\x7d\xa6\x0d\x07\x56\x8e\x61\xd1\x91\x62\x8d\x8a\xab\x05\x00\x86\x10\x15\x8d\x9c\xec\x11\xc0\xc5\xa0\x12\xbd\x27\x59\x36\x14\xaa\xa7\x61\x4d\xeb\x81\x7d\x4d\x92\x2d\x4c\xf6\x9f\x3f\x54\x3f\x54\x1f\x16\x00\x4e\x28\x8b\x3f\x70\x47\x49\xb1\xeb\x57\x10\x06\xef\x17\x00\x01\x3b\x5a\x81\xf3\x43\x52\x92\x54\xa1\xc4\x2a\xf6\x14\x52\xcb\x1b\xad\x38\x2e\x52\x4f\xce\x6c\x36\x12\x87\x7e\x05\xaf\xce\x8b\x86\xd1\xad\xf1\x4a\x45\x59\xa6\x78\x4e\xfa\xb7\x39\xf5\x27\x4e\x9a\x4f\x7a\x3f\x08\xfa\xbd\xe9\x4c\x4c\x1c\x9a\xc1\xa3\xec\xc8\x0b\x80\xe4\x62\x4f\x73\xad\x69\x58\xcb\x18\xaf\xd1\x6e\x52\xd4\x21\xad\xe0\xdf\xff\x59\x00\x3c\xa3\xe7\x3a\xdf\xb6\x1c\x9a\xbb\x9f\xee\x6e\xbf\xfe\x70\xef\x5a\xea\xb0\x10\x01\x6a\x4a\x4e\xb8\xcf\x7c\x93\x72\xe0\x04\xda\x12\x14\x4e\xd8\x44\xc9\x8f\x93\x8b\xf0\xe9\xee\x76\x94\xee\x25\xf6\x24\xca\x93\x07\xf6\x9b\x65\x7e\x47\x3b\xb2\x73\x69\x8e\x14\x1e\xa8\x2d\xd7\x54\x0c\x8e\x19\xa3\x1a\x52\x31\x1d\x37\xa0\x2d\x27\x10\xea\x85\x12\x85\x92\x7d\x23\x63\x80\xb8\xfe\x27\x39\xad\xe0\x9e\xc4\x04\x21\xb5\x71\xf0\xb5\x15\xc5\x33\x89\x82\x90\x8b\x4d\xe0\xef\x3b\x6d\x09\x34\x66\x33\x1e\x95\x92\x02\x07\x25\x09\xe8\x2d\x54\x03\x5d\x01\x86\x1a\x3a\xdc\x82\x90\xe9\x85\x21\xcc\x34\x64\x96\x54\xc1\xdf\xa3\x10\x70\xd8\xc4\x15\xb4\xaa\x7d\x5a\x5d\x5f\x37\xac\x53\x4d\xbb\xd8\x75\x43\x60\xdd\x5e\xe7\xca\xe4\xf5\xa0\x51\xd2\x75\x4d\xcf\xe4\xaf\x13\x37\x4b\x14\xd7\xb2\x92\xd3\x41\xe8\x1a\x7b\x5e\x66\x67\x43\x2e\xe9\xaa\xab\xff\xb0\x4b\xe8\xe5\x2c\x74\xba\xb5\xc4\x27\x15\x0e\xcd\x8e\x9c\x6b\xec\x6c\x7c\xad\xd6\x2c\x8b\x38\x8a\x15\xff\xf7\x61\x34\x92\x45\xe2\xcb\x8f\xf7\x0f\x30\x19\x2d\xa1\x2e\x51\xdd\xb3\xa6\x7d\x80\x2d\x38\x1c\x36\x24\x85\x73\x23\xb1\xcb\x5a\x28\xd4\x7d\xe4\xa0\x63\x95\x30\x05\xb5\xea\xec\x58\x2d\x73\xff\x1a\x28\xa9\xc5\xbe\x82\x9b\xdc\xc1\xb0\x26\x18\xfa\x1a\x95\xea\x0a\x6e\x03\xdc\x60\x47\xfe\x06\x13\xfd\xdf\xc3\x6b\x91\x4c\x4b\x0b\xdd\xdb\x01\x9e\x03\xcf\x21\x63\x89\xd0\x8e\x3c\x41\xc3\xc9\x4c\x8c\x1d\x75\xdf\x93\x3b\xa8\xf4\x9a\x12\x8b\x55\xa6\xa2\x92\xd5\xf3\x1c\x2d\xce\xf7\x56\xee\x2f\x27\x9f\x63\x87\x1c\x0e\xc9\x67\xae\x31\x4a\xfc\x6c\xf8\xf6\x5e\xfe\x86\x02\x3d\xe3\x4f\xb1\x69\x38\x34\xc7\x52\xe7\xdc\x82\x82\xc7\x1b\x6e\x4e\x74\xff\x4e\x18\xd5\x7a\x6e\x05\x97\xbf\x7c\x58\xfe\xf9\xd7\x3f\x56\xe5\xef\xf2\x04\xeb\x59\xef\xec\xd7\xc5\xc0\x1a\xed\xe8\xaf\x37\xf7\x3f\x86\x67\x96\x18\x3a\x0a\x7a\xca\x26\x85\xa1\x3b\x45\x5f\xc2\x67\xc6\x26\xc4\xa4\xec\xd2\x9d\xc4\xfa\x24\xcf\x03\x25\xfd\x6d\xde\x9d\x2c\x12\xfb\x15\xbc\x21\xbd\x69\xc9\x3d\x91\xfc\x96\xc0\x0e\xe2\x4f\x50\x01\x58\xa9\x3b\x79\xf0\x46\xfc\xa6\x63\x14\xc1\xed\x7b\xfd\xf7\xd1\xcd\xe6\xc9\x3b\x2c\x4d\xc0\x72\x5b\x1f\x8b\x1c\xf4\xc8\x34\xf5\x6f\x3f\x4f\x83\xe7\xd3\xf7\x41\x68\x26\x5e\xe6\x00\xcd\xa6\xe1\x3b\xec\x9f\x6e\xd6\x32\x22\xdf\x6a\xd7\xcc\x75\xd0\xb0\x71\x9d\x0c\x05\x7f\x57\xc7\xba\x18\x6a\x9e\xad\x2d\xe7\x8c\xef\xd8\x46\xe8\x26\xcd\x76\x26\x32\x70\x48\x8a\xc1\x51\xaa\x8e\xd4\x9c\x29\x83\x03\xed\x17\x7b\x3d\x7b\x6c\x2f\x63\xd4\x6e\xf6\x7a\xb0\x5e\xa6\x72\xd7\x6a\xee\x18\x0a\x19\xc7\x6e\x9d\x83\x8e\x5c\x8b\x81\x53\x97\xcb\x3b\xd4\x54\xdb\x94\x35\x84\x4f\x54\xc3\x4b\x4b\x61\xc4\x3b\x45\xf6\x69\x67\x60\x6f\xd2\x34\xda\x50\x40\xe8\x85\xa3\x30\x3c\x85\xf8\x12\x20\x0a\xbc\xe4\x71\x9e\xcf\xfa\xde\x6f\x4d\x2f\x7a\xbf\x8f\x42\x56\x06\x0d\x3f\x53\x00\x1b\x78\x15\x3c\x86\xb9\xaf\xe3\x3e\xb0\x26\xc0\x7a\xf4\x8b\xbe\xf5\x9e\x1d\xab\xdf\x96\x35\x61\x3b\xcb\x19\x68\x8b\x6a\x6e\x4b\xca\xab\x80\x8b\x5d\x1f\x43\x8e\x92\xcb\xd7\x5e\xc7\x41\x41\x50\xdb\x3c\x00\x31\xe4\xd9\xc6\x52\x66\x69\x4c\x74\xa0\x2b\xc7\x20\x0f\x4b\x83\xf9\x3c\x2a\x63\x96\x9c\xdd\x3d\x55\xf0\x8f\xe0\x68\xac\xb3\xfa\x2a\x47\xaa\x23\x0c\xa6\x32\x5f\x6e\x9f\x33\x87\x01\xc6\xd9\x69\x01\x6f\xa8\x06\x94\x35\xab\xa0\xb0\xdf\xc2\x12\xd8\xce\x5c\xec\x28\x41\x8f\xa2\x53\xcb\x7c\xba\xbb\x2d\x9b\x4d\x8b\xa5\x90\x13\x76\x04\x6b\x74\x4f\x2f\x28\x75\x5a\xe6\xb3\x4d\x94\xf2\x64\x77\x46\xe5\x35\x7b\xd6\x1c\x22\x47\x12\xc6\xac\x6d\xc7\x0b\x1c\x69\xaf\x2e\x5e\xd5\xdd\xff\x42\x32\x00\x8f\x49\x1f\x04\x43\xe2\x69\x15\x3f\x0d\x60\x9b\x28\x1d\xea\x0a\x6c\x51\x58\x2a\x77\xf4\x7b\x60\xae\xa3\x94\xb0\x39\x63\xe1\x0d\x59\x21\x4c\xa7\xc7\xd8\xb9\xc6\xfd\x92\x25\xac\x7b\x8f\x9a\x01\x21\x06\x5a\xbe\x44\xa9\xaf\xf6\xeb\xce\x89\xad\x36\x83\x1c\x2a\x35\x51\xb6\xf6\xec\x70\x48\xb4\x3b\x18\x44\xf2\x6a\x95\xd1\xa9\x82\x5b\x3d\x61\x29\xb7\x1d\x87\x9c\x3b\x36\xd9\x41\xfb\x41\xaf\x20\x0d\xae\x05\x4c\xd9\x0f\xcf\x81\xc0\x5e\x96\x9c\x7a\x68\x0c\x65\x46\x26\xab\x05\x0e\x90\x86\xae\x43\xe1\xef\xb9\x0c\x5d\x31\x3b\xf6\x5b\x76\xe8\x15\xfe\xbc\x2b\x9c\xaf\xa1\xf7\xdd\xa2\xf9\xf8\xed\x3c\xec\x21\xee\x61\xdb\xd3\x34\x4c\x4c\x78\x17\xc2\x5d\x3f\x61\x59\x90\x75\xdb\xb3\x43\xef\xb7\xd6\x6c\x53\x62\x6a\xb0\x4c\x19\x04\xa5\x36\x8a\x42\xdf\x4a\xde\x4e\xe7\xf0\x92\xd5\xee\x30\x86\x43\xcd\x96\xb7\x71\x3a\x70\x01\xbd\xc7\x0b\x5c\x07\xab\x62\xbf\x54\x19\xe8\xf1\x02\xfa\xe8\x51\x58\xb7\x15\xfc\x25\x0a\xd0\x37\xec\x7a\x4f\x57\xc0\xc7\xde\x4d\xfa\x52\x41\x50\x34\x41\x76\xdb\x92\xef\xfc\x66\x77\x35\x5a\xe0\x54\xde\xf4\x1e\x2f\xc0\x59\x4d\x71\xb2\xf6\x5b\xe3\xda\x00\xb3\x35\x68\x95\xee\x0a\x52\x3c\x32\xb0\xc7\x46\xbb\x3d\xd5\xf0\x78\x71\x1b\x46\x45\x27\x3a\xfa\xcd\x1c\x15\x28\xa4\x57\x83\xde\x56\xa8\x92\xf8\x13\x07\xa6\xf1\x15\xf9\xec\xfa\x71\x7e\x67\x31\xb4\x41\x8d\x72\x66\xf1\x7c\xff\x7e\x70\x44\xda\x7f\x40\xf8\x88\xbe\x6f\xf1\xe3\x9e\x96\xeb\x78\x39\x7e\x36\x98\x1d\x03\x94\x35\x61\x05\x96\xf1\xf1\xad\x3c\x8a\x41\x50\xa1\xec\xbb\x00\x9d\xa3\x5e\xa9\xfe\xf9\xf8\xc3\xc1\xc5\xc5\xc1\x97\x81\xfc\x38\x5b\x21\xe0\x97\x5f\x17\x45\x2b\xd5\x5f\x27\x6f\x8c\xf8\xdf\x00\x00\x00\xff\xff\x86\x5b\x86\x9c\x78\x11\x00\x00")
 
 func aroOpenshiftIo_clustersYamlBytes() ([]byte, error) {
 	return bindataRead(
diff --git a/pkg/operator/deploy/deploy.go b/pkg/operator/deploy/deploy.go
index b1be7e62a..0c11ae6b8 100644
--- a/pkg/operator/deploy/deploy.go
+++ b/pkg/operator/deploy/deploy.go
@@ -5,9 +5,11 @@ package deploy
 
 import (
 	"context"
+	"fmt"
 	"sort"
 	"time"
 
+	"github.com/Azure/go-autorest/autorest/azure"
 	"github.com/sirupsen/logrus"
 	appsv1 "k8s.io/api/apps/v1"
 	corev1 "k8s.io/api/core/v1"
@@ -128,6 +130,16 @@ func (o *operator) resources() ([]runtime.Object, error) {
 		return nil, err
 	}
 
+	var monitoringEndpoint string
+	switch o.env.Environment().Name {
+	case azure.PublicCloud.Name:
+		monitoringEndpoint = "https://gcs.prod.monitoring.core.windows.net/"
+	case azure.USGovernmentCloud.Name:
+		monitoringEndpoint = "https://gcs.monitoring.core.usgovcloudapi.net/"
+	default:
+		return nil, fmt.Errorf("unsupported cloud environment")
+	}
+
 	// create a secret here for genevalogging, later we will copy it to
 	// the genevalogging namespace.
 	return append(results,
@@ -148,7 +160,7 @@ func (o *operator) resources() ([]runtime.Object, error) {
 			},
 			Spec: arov1alpha1.ClusterSpec{
 				ResourceID: o.oc.ID,
-				ACRName:    o.env.ACRName(),
+				ACRDomain:  o.env.ACRDomain(),
 				Location:   o.env.Location(),
 				GenevaLogging: arov1alpha1.GenevaLoggingSpec{
 					ConfigVersion:            o.env.ClustersGenevaLoggingConfigVersion(),
@@ -156,10 +168,10 @@ func (o *operator) resources() ([]runtime.Object, error) {
 				},
 				InternetChecker: arov1alpha1.InternetCheckerSpec{
 					URLs: []string{
-						"https://arosvc.azurecr.io/",
-						"https://login.microsoftonline.com/",
-						"https://management.azure.com/",
-						"https://gcs.prod.monitoring.core.windows.net/",
+						fmt.Sprintf("https://%s/", o.env.ACRDomain()),
+						o.env.Environment().ActiveDirectoryEndpoint,
+						o.env.Environment().ResourceManagerEndpoint,
+						monitoringEndpoint,
 					},
 				},
 			},
diff --git a/pkg/operator/deploy/staticresources/aro.openshift.io_clusters.yaml b/pkg/operator/deploy/staticresources/aro.openshift.io_clusters.yaml
index 7f6ca5e50..581ff3a73 100644
--- a/pkg/operator/deploy/staticresources/aro.openshift.io_clusters.yaml
+++ b/pkg/operator/deploy/staticresources/aro.openshift.io_clusters.yaml
@@ -32,6 +32,8 @@ spec:
         spec:
           description: ClusterSpec defines the desired state of Cluster
           properties:
+            acrDomain:
+              type: string
             acrName:
               type: string
             genevaLogging:
diff --git a/pkg/util/acrtoken/acrtoken.go b/pkg/util/acrtoken/acrtoken.go
index ffc1537fd..b1593a9ad 100644
--- a/pkg/util/acrtoken/acrtoken.go
+++ b/pkg/util/acrtoken/acrtoken.go
@@ -5,6 +5,7 @@ package acrtoken
 
 import (
 	"context"
+	"fmt"
 	"net/http"
 
 	mgmtcontainerregistry "github.com/Azure/azure-sdk-for-go/services/containerregistry/mgmt/2019-06-01-preview/containerregistry"
@@ -53,7 +54,7 @@ func NewManager(env env.Interface, localFPAuthorizer autorest.Authorizer) (Manag
 
 func (m *manager) GetRegistryProfile(oc *api.OpenShiftCluster) *api.RegistryProfile {
 	for i, rp := range oc.Properties.RegistryProfiles {
-		if rp.Name == m.r.ResourceName+".azurecr.io" {
+		if rp.Name == fmt.Sprintf("%s.%s", m.r.ResourceName, m.env.Environment().ContainerRegistryDNSSuffix) {
 			return oc.Properties.RegistryProfiles[i]
 		}
 	}
@@ -63,7 +64,7 @@ func (m *manager) GetRegistryProfile(oc *api.OpenShiftCluster) *api.RegistryProf
 
 func (m *manager) NewRegistryProfile(oc *api.OpenShiftCluster) *api.RegistryProfile {
 	return &api.RegistryProfile{
-		Name:     m.r.ResourceName + ".azurecr.io",
+		Name:     fmt.Sprintf("%s.%s", m.r.ResourceName, m.env.Environment().ContainerRegistryDNSSuffix),
 		Username: "token-" + uuid.NewV4().String(),
 	}
 }
diff --git a/pkg/util/billing/billing.go b/pkg/util/billing/billing.go
index c32aa9752..914cec59b 100644
--- a/pkg/util/billing/billing.go
+++ b/pkg/util/billing/billing.go
@@ -84,7 +84,7 @@ func storageClient(_env env.Interface, billing database.Billing, sub database.Su
 		storageAccountName = intE2EStorageAccountName
 	}
 
-	localFPAuthorizer, err := _env.FPAuthorizer(_env.TenantID(), azure.PublicCloud.ResourceManagerEndpoint)
+	localFPAuthorizer, err := _env.FPAuthorizer(_env.TenantID(), _env.Environment().ResourceManagerEndpoint)
 	if err != nil {
 		return nil, err
 	}
diff --git a/pkg/util/instancemetadata/dev.go b/pkg/util/instancemetadata/dev.go
index 807973958..55807d36d 100644
--- a/pkg/util/instancemetadata/dev.go
+++ b/pkg/util/instancemetadata/dev.go
@@ -6,6 +6,8 @@ package instancemetadata
 import (
 	"fmt"
 	"os"
+
+	"github.com/Azure/go-autorest/autorest/azure"
 )
 
 func NewDev() (InstanceMetadata, error) {
@@ -20,10 +22,20 @@ func NewDev() (InstanceMetadata, error) {
 		}
 	}
 
+	environment := azure.PublicCloud
+	if value, found := os.LookupEnv("AZURE_ENVIRONMENT"); found {
+		var err error
+		environment, err = azure.EnvironmentFromName(value)
+		if err != nil {
+			return nil, err
+		}
+	}
+
 	return &instanceMetadata{
 		tenantID:       os.Getenv("AZURE_TENANT_ID"),
 		subscriptionID: os.Getenv("AZURE_SUBSCRIPTION_ID"),
 		location:       os.Getenv("LOCATION"),
 		resourceGroup:  os.Getenv("RESOURCEGROUP"),
+		environment:    &environment,
 	}, nil
 }
diff --git a/pkg/util/instancemetadata/instancemetadata.go b/pkg/util/instancemetadata/instancemetadata.go
index 564c44789..63ce3fb1e 100644
--- a/pkg/util/instancemetadata/instancemetadata.go
+++ b/pkg/util/instancemetadata/instancemetadata.go
@@ -6,6 +6,8 @@ package instancemetadata
 import (
 	"context"
 
+	"github.com/Azure/go-autorest/autorest/azure"
+
 	"github.com/Azure/ARO-RP/pkg/util/deployment"
 )
 
@@ -14,6 +16,7 @@ type InstanceMetadata interface {
 	SubscriptionID() string
 	Location() string
 	ResourceGroup() string
+	Environment() *azure.Environment
 }
 
 type instanceMetadata struct {
@@ -21,6 +24,7 @@ type instanceMetadata struct {
 	subscriptionID string
 	location       string
 	resourceGroup  string
+	environment    *azure.Environment
 }
 
 func (im *instanceMetadata) TenantID() string {
@@ -39,6 +43,10 @@ func (im *instanceMetadata) ResourceGroup() string {
 	return im.resourceGroup
 }
 
+func (im *instanceMetadata) Environment() *azure.Environment {
+	return im.environment
+}
+
 func New(ctx context.Context, deploymentMode deployment.Mode) (InstanceMetadata, error) {
 	if deploymentMode == deployment.Development {
 		return NewDev()
diff --git a/pkg/util/instancemetadata/prod.go b/pkg/util/instancemetadata/prod.go
index 8cefe763a..0b2b1a36f 100644
--- a/pkg/util/instancemetadata/prod.go
+++ b/pkg/util/instancemetadata/prod.go
@@ -43,12 +43,12 @@ func newProd(ctx context.Context) (InstanceMetadata, error) {
 		},
 	}
 
-	err := p.populateTenantIDFromMSI(ctx)
+	err := p.populateInstanceMetadata()
 	if err != nil {
 		return nil, err
 	}
 
-	err = p.populateInstanceMetadata()
+	err = p.populateTenantIDFromMSI(ctx)
 	if err != nil {
 		return nil, err
 	}
@@ -62,7 +62,7 @@ func (p *prod) populateTenantIDFromMSI(ctx context.Context) error {
 		return err
 	}
 
-	token, err := p.newServicePrincipalTokenFromMSI(msiEndpoint, azure.PublicCloud.ResourceManagerEndpoint)
+	token, err := p.newServicePrincipalTokenFromMSI(msiEndpoint, p.Environment().ResourceManagerEndpoint)
 	if err != nil {
 		return err
 	}
@@ -109,6 +109,7 @@ func (p *prod) populateInstanceMetadata() error {
 		Location          string `json:"location,omitempty"`
 		ResourceGroupName string `json:"resourceGroupName,omitempty"`
 		SubscriptionID    string `json:"subscriptionId,omitempty"`
+		AzEnvironment     string `json:"azEnvironment,omitempty"`
 	}
 
 	err = json.NewDecoder(resp.Body).Decode(&m)
@@ -116,6 +117,11 @@ func (p *prod) populateInstanceMetadata() error {
 		return err
 	}
 
+	environment, err := azure.EnvironmentFromName(m.AzEnvironment)
+	if err != nil {
+		return err
+	}
+	p.environment = &environment
 	p.subscriptionID = m.SubscriptionID
 	p.location = m.Location
 	p.resourceGroup = m.ResourceGroupName
diff --git a/pkg/util/keyvault/find.go b/pkg/util/keyvault/find.go
index 464706408..678c544c6 100644
--- a/pkg/util/keyvault/find.go
+++ b/pkg/util/keyvault/find.go
@@ -7,8 +7,6 @@ import (
 	"context"
 	"fmt"
 
-	"github.com/Azure/go-autorest/autorest/azure"
-
 	"github.com/Azure/ARO-RP/pkg/deploy/generator"
 	"github.com/Azure/ARO-RP/pkg/util/azureclient/mgmt/keyvault"
 	"github.com/Azure/ARO-RP/pkg/util/instancemetadata"
@@ -16,7 +14,7 @@ import (
 )
 
 func Find(ctx context.Context, instancemetadata instancemetadata.InstanceMetadata, rpauthorizer rpauthorizer.RPAuthorizer, tagValue string) (string, error) {
-	rpAuthorizer, err := rpauthorizer.NewRPAuthorizer(azure.PublicCloud.ResourceManagerEndpoint)
+	rpAuthorizer, err := rpauthorizer.NewRPAuthorizer(instancemetadata.Environment().ResourceManagerEndpoint)
 	if err != nil {
 		return "", err
 	}
diff --git a/pkg/util/mocks/env/env.go b/pkg/util/mocks/env/env.go
index e34537cf3..0ad6e1b85 100644
--- a/pkg/util/mocks/env/env.go
+++ b/pkg/util/mocks/env/env.go
@@ -12,6 +12,7 @@ import (
 	reflect "reflect"
 
 	autorest "github.com/Azure/go-autorest/autorest"
+	azure "github.com/Azure/go-autorest/autorest/azure"
 	gomock "github.com/golang/mock/gomock"
 
 	clientauthorizer "github.com/Azure/ARO-RP/pkg/util/clientauthorizer"
@@ -42,18 +43,18 @@ func (m *MockInterface) EXPECT() *MockInterfaceMockRecorder {
 	return m.recorder
 }
 
-// ACRName mocks base method
-func (m *MockInterface) ACRName() string {
+// ACRDomain mocks base method
+func (m *MockInterface) ACRDomain() string {
 	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "ACRName")
+	ret := m.ctrl.Call(m, "ACRDomain")
 	ret0, _ := ret[0].(string)
 	return ret0
 }
 
-// ACRName indicates an expected call of ACRName
-func (mr *MockInterfaceMockRecorder) ACRName() *gomock.Call {
+// ACRDomain indicates an expected call of ACRDomain
+func (mr *MockInterfaceMockRecorder) ACRDomain() *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ACRName", reflect.TypeOf((*MockInterface)(nil).ACRName))
+	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ACRDomain", reflect.TypeOf((*MockInterface)(nil).ACRDomain))
 }
 
 // ACRResourceID mocks base method
@@ -226,6 +227,20 @@ func (mr *MockInterfaceMockRecorder) Domain() *gomock.Call {
 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Domain", reflect.TypeOf((*MockInterface)(nil).Domain))
 }
 
+// Environment mocks base method
+func (m *MockInterface) Environment() *azure.Environment {
+	m.ctrl.T.Helper()
+	ret := m.ctrl.Call(m, "Environment")
+	ret0, _ := ret[0].(*azure.Environment)
+	return ret0
+}
+
+// Environment indicates an expected call of Environment
+func (mr *MockInterfaceMockRecorder) Environment() *gomock.Call {
+	mr.mock.ctrl.T.Helper()
+	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Environment", reflect.TypeOf((*MockInterface)(nil).Environment))
+}
+
 // FPAuthorizer mocks base method
 func (m *MockInterface) FPAuthorizer(arg0, arg1 string) (refreshable.Authorizer, error) {
 	m.ctrl.T.Helper()
diff --git a/pkg/util/version/const.go b/pkg/util/version/const.go
index 70f0ad59b..e9860b515 100644
--- a/pkg/util/version/const.go
+++ b/pkg/util/version/const.go
@@ -33,20 +33,20 @@ var (
 )
 
 // FluentbitImage contains the location of the Fluentbit container image
-func FluentbitImage(acr string) string {
-	return acr + ".azurecr.io/fluentbit:1.3.9-1"
+func FluentbitImage(acrDomain string) string {
+	return acrDomain + "/fluentbit:1.3.9-1"
 }
 
 // MdmImage contains the location of the MDM container image
-func MdmImage(acr string) string {
-	return acr + ".azurecr.io/genevamdm:master_51"
+func MdmImage(acrDomain string) string {
+	return acrDomain + "/genevamdm:master_51"
 }
 
 // MdsdImage contains the location of the MDSD container image
-func MdsdImage(acr string) string {
-	return acr + ".azurecr.io/genevamdsd:master_330"
+func MdsdImage(acrDomain string) string {
+	return acrDomain + "/genevamdsd:master_330"
 }
 
-func RouteFixImage(acr string) string {
-	return acr + ".azurecr.io/routefix:c5c4a5db"
+func RouteFixImage(acrDomain string) string {
+	return acrDomain + "/routefix:c5c4a5db"
 }


Test patch:
diff --git a/pkg/util/instancemetadata/prod_test.go b/pkg/util/instancemetadata/prod_test.go
index 513ac036f..285dcc85c 100644
--- a/pkg/util/instancemetadata/prod_test.go
+++ b/pkg/util/instancemetadata/prod_test.go
@@ -10,9 +10,11 @@ import (
 	"fmt"
 	"io/ioutil"
 	"net/http"
+	"reflect"
 	"strings"
 	"testing"
 
+	"github.com/Azure/go-autorest/autorest/azure"
 	"github.com/golang/mock/gomock"
 
 	mock_instancemetadata "github.com/Azure/ARO-RP/pkg/util/mocks/instancemetadata"
@@ -25,10 +27,11 @@ func TestPopulateInstanceMetadata(t *testing.T) {
 		wantSubscriptionID string
 		wantLocation       string
 		wantResourceGroup  string
+		wantEnvironment    *azure.Environment
 		wantErr            string
 	}{
 		{
-			name: "valid",
+			name: "valid (Public Cloud)",
 			do: func(*http.Request) (*http.Response, error) {
 				return &http.Response{
 					StatusCode: http.StatusOK,
@@ -39,7 +42,8 @@ func TestPopulateInstanceMetadata(t *testing.T) {
 						`{
 							"subscriptionId": "rpSubscriptionId",
 							"location": "eastus",
-							"resourceGroupName": "rpResourceGroup"
+							"resourceGroupName": "rpResourceGroup",
+							"azEnvironment": "AzurePublicCloud"
 						}`,
 					)),
 				}, nil
@@ -47,6 +51,30 @@ func TestPopulateInstanceMetadata(t *testing.T) {
 			wantSubscriptionID: "rpSubscriptionId",
 			wantLocation:       "eastus",
 			wantResourceGroup:  "rpResourceGroup",
+			wantEnvironment:    &azure.PublicCloud,
+		},
+		{
+			name: "valid (US Government Cloud)",
+			do: func(*http.Request) (*http.Response, error) {
+				return &http.Response{
+					StatusCode: http.StatusOK,
+					Header: http.Header{
+						"Content-Type": []string{"application/json; charset=utf-8"},
+					},
+					Body: ioutil.NopCloser(strings.NewReader(
+						`{
+							"subscriptionId": "rpSubscriptionId",
+							"location": "eastus",
+							"resourceGroupName": "rpResourceGroup",
+							"azEnvironment": "AzureUSGovernmentCloud"
+						}`,
+					)),
+				}, nil
+			},
+			wantSubscriptionID: "rpSubscriptionId",
+			wantLocation:       "eastus",
+			wantResourceGroup:  "rpResourceGroup",
+			wantEnvironment:    &azure.USGovernmentCloud,
 		},
 		{
 			name: "invalid JSON",
@@ -112,7 +140,7 @@ func TestPopulateInstanceMetadata(t *testing.T) {
 
 			if err != nil && err.Error() != tt.wantErr ||
 				err == nil && tt.wantErr != "" {
-				t.Error(err)
+				t.Fatal(err)
 			}
 
 			if p.subscriptionID != tt.wantSubscriptionID {
@@ -126,6 +154,10 @@ func TestPopulateInstanceMetadata(t *testing.T) {
 			if p.resourceGroup != tt.wantResourceGroup {
 				t.Error(p.resourceGroup)
 			}
+
+			if !reflect.DeepEqual(p.environment, tt.wantEnvironment) {
+				t.Error(p.environment)
+			}
 		})
 	}
 }
@@ -195,13 +227,16 @@ func TestPopulateTenantIDFromMSI(t *testing.T) {
 					}
 					return token, nil
 				},
+				instanceMetadata: instanceMetadata{
+					environment: &azure.PublicCloud,
+				},
 			}
 
 			err := p.populateTenantIDFromMSI(ctx)
 
 			if err != nil && err.Error() != tt.wantErr ||
 				err == nil && tt.wantErr != "" {
-				t.Error(err)
+				t.Fatal(err)
 			}
 
 			if p.tenantID != tt.wantTenantID {