Re: Re: Turbine 2.3.3 and layouts
"Georg Kallidis" <[email protected]> Mon, 22 Oct 2018 11:59:41 +0200
| Newsgroups | gmane.comp.jakarta.turbine.user |
|---|---|
| Message-ID | <OF1D7DE99A.D2E39A48-ONC125832E.002FA01B-C125832E.0036E81D@cedis.fu-berlin.de> |
---------z59743_boundary_sign Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: quoted-printable Hi Wayne, if the question is, what's the layout, which gets actually called, is, it=20 might be best to find first this and then, if any, the one, which you want = to be used instead. In general: a) investigate your logs (set DEBUG level to e.g.=20 org.apache.turbine.services.template, org.apache.turbine.modules.layouts)=20 for this call. b) locate any hints in the template layout/screen or in in java, e.g.=20 /screens/, setLayoutTemplate, setScreen .. c) check upstream configuration - it might be at another place e.g. in=20 /templates/layout/json/default.vm, additonally check=20 TurbineResource.properties. d) check, if the right screen is called, as it might or might not reset=20 the layout to null (as o.a.t.modules.screen.Rawscreen does). This and all other things are quite as Jeffery describes, you might check=20 his descriptions thoroughly.=20 As an alternative, you might want to omit velocity entirely and build your = own JSON screen (similar to T5 screen:=20 /turbine/src/java/org/apache/turbine/modules/screens/PlainJSONSecureAnnotat= edScreen.java),=20 which extends from RawScreen. Fulcrum-Json is entirely about using JSON libraries (Jackson, Gson) in=20 Turbine, so this might be a second step, if you want to use JSON in more=20 than one place .. Best regards, Georg Von: Jeffery Painter <[email protected]> An: [email protected] Datum: 19.10.2018 22:35 Betreff: Re: Turbine 2.3.3 and layouts Hi Wayne, I think I understand where you are coming from. I have typed up my notes on how I basically did the same thing you guys are doing (I think so anyway - yet to be seen!). I only took one small subset of my code base to walk through a simple implementation. I am not using jQuery (it seemed overly complicated and heavy to me), but I think the overall workflow/concepts are good here. Georg, I think it would be great if you can review my notes and see how these steps could be simplified (possibly) using the fulcrum-json API.=20 I admit, I still have not dug into it thoroughly. Also Wayne, I can tell you from my experience, updating from Turbine 2.3.1 to 2.3.3, I would suggest going ahead and moving to Turbine 4.0.1. I have done this now with quite a few apps of mine, and it was pretty painless once you figure out where the major issues are (mostly changes from RunData to PipelineData you need to make in screens and actions, but you can mostly do a global search/replace on that). There may be a few more "gotchas" but I can't think of them all at the moment. I updated most all of mine a little over 2 years ago, and now I am using Turbine 5.0 from SVN (it is not yet released). It is working very nicely. The changes to migrate from 4.0 to 5.0 will be even less work for you :-) that is if you want to keep these apps going anyway. So having said all that, here is a link to what I just wrote up. I hope you find it helpful. And hopefully Georg will tell me I am doing it all wrong and there is a much simpler path :-) I do like how easy it is to manage security access with the process I developed though. I will be curious to see if you guys *Wayne* did something similar or took a completely different approach. https://dev.jivecast.com/turbine/turbine=5Fjson.html --=20 Jeff Painter CEO and Founder of JiveCast Software and analytics, made together https://jivecast.com 301 Fayetteville St. Unit 2301, Raleigh, NC 27601 (919) 533-9024 On 10/19/18 1:39 PM, Wayne Johnson wrote: > Hello all, > I've inherited a set of web services that use Turbine 2.3.1 and=20 Velocity-1.3.1. I know it's pretty old, but it is what it is. > I found that one of our web pages is sending a jQuery back to the web=20 site asking for additional information. In the production system=20 (Turbine-2.3.1), it's returning a response in simple JSON from a velocity=20 template file. We've been working on some updates and now find that this=20 $.post is returning the JSON response, but it's wrappered in one of the=20 many layouts we have defined in the system. Of course the JSON parser is=20 choking. > We have many changes in our test systems, including an upgrade to=20 Turbine-2.3.3 and putting the webapps into a war. None of the other=20 changes (as far as I can tell) have anything to do with this one request. = > So how does Turbine select the appropriate Layout (if any) to use for=20 any specific web page? Why is it now, all of a sudden including a layout=20 when it didn't before. =20 > > Thanks. > > ---=20 > Wayne Johnson, | There are two kinds of people: Those=20 > | who say to God, "Thy will be done,"=20 > | and those to whom God says, "All right,=20 > | then, have it your way." --C.S. Lewis > [Anhang "signature.asc" gel=F6scht von Georg Kallidis/CeDiS/FU-Berlin/DE]=20 ---------z59743_boundary_sign Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature 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 ZWMuZGUvcmwvRFRfUk9PVF9DQV8yLmNybDB4BggrBgEFBQcBAQRsMGowLAYIKwYBBQUHMAGGIGh0 dHA6Ly9vY3NwMDMzNi50ZWxlc2VjLmRlL29jc3ByMDoGCCsGAQUFBzAChi5odHRwOi8vcGtpMDMz Ni50ZWxlc2VjLmRlL2NydC9EVF9ST09UX0NBXzIuY2VyMA0GCSqGSIb3DQEBCwUAA4IBAQBjICj9 nCGGcr45Rlk5MiW8qQGbDczKfUGchm0KbiyzE1l1sTOSG2EnFv/DstU1gvuEKgFJvWa7Zi+ywgZd bj9u4wFaW8pDY1yVtuExpx/VB19N5mWCTjL5w3x6S81NXHTuIfJ1AuxSPtLJatOQI25JZzW+f01W pOzML8+3oZeocj7JvEDWWqQIPda8gsO3tzKOsSyOam23NQIZz/U5RFhjpyQAELC7/E6vbi84u6VX ST/YblBvLJeW3B1GmmWJz67M8uXZn1OzPqEvkqnYC8aEHwTG6x7on321e6UC8STFJGMRNMxakyAq eYg6JUKQqWU7fIbTEhUjKfws2sw5W1QXMIIE1TCCA72gAwIBAgIIUE7G9T0RtGQwDQYJKoZIhvcN AQELBQAwcTELMAkGA1UEBhMCREUxHDAaBgNVBAoTE0RldXRzY2hlIFRlbGVrb20gQUcxHzAdBgNV BAsTFlQtVGVsZVNlYyBUcnVzdCBDZW50ZXIxIzAhBgNVBAMTGkRldXRzY2hlIFRlbGVrb20gUm9v dCBDQSAyMB4XDTE0MDcyMjEyMDgyNloXDTE5MDcwOTIzNTkwMFowWjELMAkGA1UEBhMCREUxEzAR BgNVBAoTCkRGTi1WZXJlaW4xEDAOBgNVBAsTB0RGTi1QS0kxJDAiBgNVBAMTG0RGTi1WZXJlaW4g UENBIEdsb2JhbCAtIEcwMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOmbw2eF+Q2u 9Y1Uw5ZQNT1i6W5M7ZTXAFuVInTUIOs0j9bswDEEC5mB4qYU0lKgKCOEi3SJBF5b4OJ4wXjLFsso NTl7LZBF0O2gAHp8v0oOGwDDhulcKzERewzzgiRDjBw4i2poAJru3E94q9LGE5t2re7eJujvAa90 D8EJovZrzr3TzRQwT/Xl46TIYpuCGgMnMA0CZWBN7dEJIyqWNVgn03bGcbaQHcTt/zWGfW8zs9sP xRHCioOhlF1Ba9jSEPVM/cpRrNm975KDu9rrixZWVkPP4dUTPaYfJzDNSVTbyRM0mnF1xWzqpwuY +SGdJ68+ozk5SGqMrcmZ+8MS8r0CAwEAAaOCAYYwggGCMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4E FgQUSbfGz+g9H3/qRHsTKffxCnA+3mQwHwYDVR0jBBgwFoAUMcN5G7r1U9cX4Il6LRdsCrMrnTMw EgYDVR0TAQH/BAgwBgEB/wIBAjBiBgNVHSAEWzBZMBEGDysGAQQBga0hgiwBAQQCAjARBg8rBgEE AYGtIYIsAQEEAwAwEQYPKwYBBAGBrSGCLAEBBAMBMA8GDSsGAQQBga0hgiwBAQQwDQYLKwYBBAGB rSGCLB4wPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL3BraTAzMzYudGVsZXNlYy5kZS9ybC9EVF9S T09UX0NBXzIuY3JsMHgGCCsGAQUFBwEBBGwwajAsBggrBgEFBQcwAYYgaHR0cDovL29jc3AwMzM2 LnRlbGVzZWMuZGUvb2NzcHIwOgYIKwYBBQUHMAKGLmh0dHA6Ly9wa2kwMzM2LnRlbGVzZWMuZGUv Y3J0L0RUX1JPT1RfQ0FfMi5jZXIwDQYJKoZIhvcNAQELBQADggEBAGMgKP2cIYZyvjlGWTkyJbyp AZsNzMp9QZyGbQpuLLMTWXWxM5IbYScW/8Oy1TWC+4QqAUm9ZrtmL7LCBl1uP27jAVpbykNjXJW2 4TGnH9UHX03mZYJOMvnDfHpLzU1cdO4h8nUC7FI+0slq05AjbklnNb5/TVak7Mwvz7ehl6hyPsm8 QNZapAg91ryCw7e3Mo6xLI5qbbc1AhnP9TlEWGOnJAAQsLv8Tq9uLzi7pVdJP9huUG8sl5bcHUaa ZYnPrszy5dmfU7M+oS+SqdgLxoQfBMbrHuiffbV7pQLxJMUkYxE0zFqTICp5iDolQpCpZTt8htMS FSMp/CzazDlbVBcwggWPMIIEd6ADAgECAgcXkGDM+bluMA0GCSqGSIb3DQEBCwUAMFoxCzAJBgNV BAYTAkRFMRMwEQYDVQQKEwpERk4tVmVyZWluMRAwDgYDVQQLEwdERk4tUEtJMSQwIgYDVQQDExtE Rk4tVmVyZWluIFBDQSBHbG9iYWwgLSBHMDEwHhcNMTQwNTEyMTUwNTMyWhcNMTkwNzA5MjM1OTAw WjCBtTELMAkGA1UEBhMCREUxDzANBgNVBAgTBkJlcmxpbjEPMA0GA1UEBxMGQmVybGluMSIwIAYD VQQKExlGcmVpZSBVbml2ZXJzaXRhZXQgQmVybGluMQ4wDAYDVQQLEwVaRURBVDEwMC4GA1UEAxMn RnJlaWUgVW5pdmVyc2l0YWV0IEJlcmxpbiAtIEZVLUNBIC0gRzAxMR4wHAYJKoZIhvcNAQkBFg9j YUBGVS1CZXJsaW4uREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCNhQjTTjzMM16+ SZeKkIONKkiv6wRuGJc/NadmcKeSYs6sQwVo0NYNfqRxVDVU/vWikR8a5Hku1bQ/o34kzwTzLkdd 1qnrZsPhh+DQpASaWH2+kxDvkFyRF5bvBEof821yuDyDCf3t3XsezyGBEaTxykFECzm/mFypFlyN HreYoKKyayOV3oxV1ZI1iFkmGlydvR1XMxrcDtF/U6xcfANeuG6wI2mHX49rO7DZdsgpZIKwVLiq WEc6PlADfvmqTkiOOxSfDYWqWMuLOK73EHj+OFLHV/Pr7lFWdN7lNv0YxuTlFVH5289OfMX3pP/J bkOqwUgv7EFhDyO4WgFCiDczAgMBAAGjggH8MIIB+DASBgNVHRMBAf8ECDAGAQH/AgEBMA4GA1Ud DwEB/wQEAwIBBjARBgNVHSAECjAIMAYGBFUdIAAwHQYDVR0OBBYEFAbhPfRv9DC3ejtXsDEFiXsN WFpsMB8GA1UdIwQYMBaAFEm3xs/oPR9/6kR7Eyn38QpwPt5kMBoGA1UdEQQTMBGBD2NhQEZVLUJl cmxpbi5ERTCBiAYDVR0fBIGAMH4wPaA7oDmGN2h0dHA6Ly9jZHAxLnBjYS5kZm4uZGUvZ2xvYmFs LXJvb3QtY2EvcHViL2NybC9jYWNybC5jcmwwPaA7oDmGN2h0dHA6Ly9jZHAyLnBjYS5kZm4uZGUv Z2xvYmFsLXJvb3QtY2EvcHViL2NybC9jYWNybC5jcmwwgdcGCCsGAQUFBwEBBIHKMIHHMDMGCCsG AQUFBzABhidodHRwOi8vb2NzcC5wY2EuZGZuLmRlL09DU1AtU2VydmVyL09DU1AwRwYIKwYBBQUH MAKGO2h0dHA6Ly9jZHAxLnBjYS5kZm4uZGUvZ2xvYmFsLXJvb3QtY2EvcHViL2NhY2VydC9jYWNl cnQuY3J0MEcGCCsGAQUFBzAChjtodHRwOi8vY2RwMi5wY2EuZGZuLmRlL2dsb2JhbC1yb290LWNh L3B1Yi9jYWNlcnQvY2FjZXJ0LmNydDANBgkqhkiG9w0BAQsFAAOCAQEANHLfxu5mOt8M3yZmK6QS OWzH7qz8MqPlhhZoC9QHmSqEvZMznxs/KrixgBUINYAuJ8CTXUbHj9GnU8s0V3i2ehFxCx+A3zLA QKlYFuARI4Lve19rplI8Rjy5njJSTSjafDGSBTRXf9vv/nVcunlMDmAF4vdphyNhDXtA3XgyHXYy JcWnlVs8ENMeSKdRe3fXoDxCPT3Amccw6O3kz5kOfzZhgLu8UPOM2Q2bDjo9EveFk59lvUhL5+FW VHh5bQUEuqYaD7hjtjgoqvAFwErc7MwTmM3vUuR027WWQHjc59P5g4xP6mpmnWXRToMZlrdJnLnF 9ZjcQvkFhUzzEB+hmDCCBY8wggR3oAMCAQICBxeQYMz5uW4wDQYJKoZIhvcNAQELBQAwWjELMAkG A1UEBhMCREUxEzARBgNVBAoTCkRGTi1WZXJlaW4xEDAOBgNVBAsTB0RGTi1QS0kxJDAiBgNVBAMT G0RGTi1WZXJlaW4gUENBIEdsb2JhbCAtIEcwMTAeFw0xNDA1MTIxNTA1MzJaFw0xOTA3MDkyMzU5 MDBaMIG1MQswCQYDVQQGEwJERTEPMA0GA1UECBMGQmVybGluMQ8wDQYDVQQHEwZCZXJsaW4xIjAg BgNVBAoTGUZyZWllIFVuaXZlcnNpdGFldCBCZXJsaW4xDjAMBgNVBAsTBVpFREFUMTAwLgYDVQQD EydGcmVpZSBVbml2ZXJzaXRhZXQgQmVybGluIC0gRlUtQ0EgLSBHMDExHjAcBgkqhkiG9w0BCQEW D2NhQEZVLUJlcmxpbi5ERTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAI2FCNNOPMwz Xr5Jl4qQg40qSK/rBG4Ylz81p2Zwp5JizqxDBWjQ1g1+pHFUNVT+9aKRHxrkeS7VtD+jfiTPBPMu R13Wqetmw+GH4NCkBJpYfb6TEO+QXJEXlu8ESh/zbXK4PIMJ/e3dex7PIYERpPHKQUQLOb+YXKkW XI0et5igorJrI5XejFXVkjWIWSYaXJ29HVczGtwO0X9TrFx8A164brAjaYdfj2s7sNl2yClkgrBU uKpYRzo+UAN++apOSI47FJ8NhapYy4s4rvcQeP44UsdX8+vuUVZ03uU2/RjG5OUVUfnbz058xfek /8luQ6rBSC/sQWEPI7haAUKINzMCAwEAAaOCAfwwggH4MBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYD VR0PAQH/BAQDAgEGMBEGA1UdIAQKMAgwBgYEVR0gADAdBgNVHQ4EFgQUBuE99G/0MLd6O1ewMQWJ ew1YWmwwHwYDVR0jBBgwFoAUSbfGz+g9H3/qRHsTKffxCnA+3mQwGgYDVR0RBBMwEYEPY2FARlUt QmVybGluLkRFMIGIBgNVHR8EgYAwfjA9oDugOYY3aHR0cDovL2NkcDEucGNhLmRmbi5kZS9nbG9i YWwtcm9vdC1jYS9wdWIvY3JsL2NhY3JsLmNybDA9oDugOYY3aHR0cDovL2NkcDIucGNhLmRmbi5k ZS9nbG9iYWwtcm9vdC1jYS9wdWIvY3JsL2NhY3JsLmNybDCB1wYIKwYBBQUHAQEEgcowgccwMwYI KwYBBQUHMAGGJ2h0dHA6Ly9vY3NwLnBjYS5kZm4uZGUvT0NTUC1TZXJ2ZXIvT0NTUDBHBggrBgEF BQcwAoY7aHR0cDovL2NkcDEucGNhLmRmbi5kZS9nbG9iYWwtcm9vdC1jYS9wdWIvY2FjZXJ0L2Nh Y2VydC5jcnQwRwYIKwYBBQUHMAKGO2h0dHA6Ly9jZHAyLnBjYS5kZm4uZGUvZ2xvYmFsLXJvb3Qt Y2EvcHViL2NhY2VydC9jYWNlcnQuY3J0MA0GCSqGSIb3DQEBCwUAA4IBAQA0ct/G7mY63wzfJmYr pBI5bMfurPwyo+WGFmgL1AeZKoS9kzOfGz8quLGAFQg1gC4nwJNdRseP0adTyzRXeLZ6EXELH4Df MsBAqVgW4BEjgu97X2umUjxGPLmeMlJNKNp8MZIFNFd/2+/+dVy6eUwOYAXi92mHI2ENe0DdeDId djIlxaeVWzwQ0x5Ip1F7d9egPEI9PcCZxzDo7eTPmQ5/NmGAu7xQ84zZDZsOOj0S94WTn2W9SEvn 4VZUeHltBQS6phoPuGO2OCiq8AXAStzszBOYze9S5HTbtZZAeNzn0/mDjE/qamadZdFOgxmWt0mc ucX1mNxC+QWFTPMQH6GYMIIF5zCCBM+gAwIBAgIMHC6uiJZ1f/0kI0iMMA0GCSqGSIb3DQEBCwUA MIG1MQswCQYDVQQGEwJERTEPMA0GA1UECBMGQmVybGluMQ8wDQYDVQQHEwZCZXJsaW4xIjAgBgNV BAoTGUZyZWllIFVuaXZlcnNpdGFldCBCZXJsaW4xDjAMBgNVBAsTBVpFREFUMTAwLgYDVQQDEydG cmVpZSBVbml2ZXJzaXRhZXQgQmVybGluIC0gRlUtQ0EgLSBHMDExHjAcBgkqhkiG9w0BCQEWD2Nh QEZVLUJlcmxpbi5ERTAeFw0xNjEwMjUxMDE2MjRaFw0xOTA3MDkyMzU5MDBaMHwxCzAJBgNVBAYT AkRFMQ8wDQYDVQQIDAZCZXJsaW4xDzANBgNVBAcMBkJlcmxpbjEiMCAGA1UECgwZRnJlaWUgVW5p dmVyc2l0YWV0IEJlcmxpbjEOMAwGA1UECwwFQ2VEaVMxFzAVBgNVBAMMDkdlb3JnIEthbGxpZGlz MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA29DfHsX0cmsLubtM7DPAhNwiEyH+q5Cn 33G/jDs3cPFiICXmpcO+Wm7qtgnEbmu/nXlp/nZL+2T6vd4NkdZeB01sM/6hMMDbSgG392obxCal fTnAx5Pcw6H/VPFtaEPZ2Ij4c5bcbFPtCXDdJnes/4RmqRhyVFG9cEh4r2dB879B6sl0d6qw3ZUC Mo/f9aH/oJiJYTwbW/rqMrvN83oVpjpWNxH3J7wRKQCWtcqf6Bb5iTm6g9zbIBHHUsLDWK1Yqqal kIAU+O4m8ashkU64L3fY0IuqxRKT+bXUu2RDpoGhgwJU9SRv9YUwRHxwamrfPdLGE3/El8O/Kpbk UO+quwIDAQABo4ICLTCCAikwQAYDVR0gBDkwNzARBg8rBgEEAYGtIYIsAQEEAwUwEQYPKwYBBAGB rSGCLAIBBAMBMA8GDSsGAQQBga0hgiwBAQQwCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMCBeAwHQYD VR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMB0GA1UdDgQWBBTYUigFcVH/COOEq0mMkHkPbq9/ TzAfBgNVHSMEGDAWgBQG4T30b/Qwt3o7V7AxBYl7DVhabDAsBgNVHREEJTAjgSFnZW9yZy5rYWxs aWRpc0BjZWRpcy5mdS1iZXJsaW4uZGUwdQYDVR0fBG4wbDA0oDKgMIYuaHR0cDovL2NkcDEucGNh LmRmbi5kZS9mdS1jYS9wdWIvY3JsL2NhY3JsLmNybDA0oDKgMIYuaHR0cDovL2NkcDIucGNhLmRm bi5kZS9mdS1jYS9wdWIvY3JsL2NhY3JsLmNybDCBxQYIKwYBBQUHAQEEgbgwgbUwMwYIKwYBBQUH MAGGJ2h0dHA6Ly9vY3NwLnBjYS5kZm4uZGUvT0NTUC1TZXJ2ZXIvT0NTUDA+BggrBgEFBQcwAoYy aHR0cDovL2NkcDEucGNhLmRmbi5kZS9mdS1jYS9wdWIvY2FjZXJ0L2NhY2VydC5jcnQwPgYIKwYB BQUHMAKGMmh0dHA6Ly9jZHAyLnBjYS5kZm4uZGUvZnUtY2EvcHViL2NhY2VydC9jYWNlcnQuY3J0 MA0GCSqGSIb3DQEBCwUAA4IBAQAtZpNjEYQicPWBaRT8Ye7V9Lq4BO54wWdCcZWofWpqVsmTc2Xb ubTyur7UIecojV1O9r7tLvZThVTggG1Q0yYenFGXNeqL9P4G4hHUsafinyh3cyx31G7lD0BcjAQw m6HTFcIv2J2b9Im2aC7dJ9FqSL94n/pu4nZErfmrYGzPW/60GcsIl+PtWTAYNig87kg12XnTxd7b jyFfUoGoChUf8OKCmHppJDy9/BRP3dTAsVa2NPB0UqKPNkhkNgqbYaQw4VGvizQWtME+kOA4i6KB 4pMLQED7NeRdjLprKorLnQ9AiMsoRk15oUD9ilp8vMWPOCWmJjHP/NoNpDSgp0G/MIIF5zCCBM+g AwIBAgIMHC6uiJZ1f/0kI0iMMA0GCSqGSIb3DQEBCwUAMIG1MQswCQYDVQQGEwJERTEPMA0GA1UE CBMGQmVybGluMQ8wDQYDVQQHEwZCZXJsaW4xIjAgBgNVBAoTGUZyZWllIFVuaXZlcnNpdGFldCBC ZXJsaW4xDjAMBgNVBAsTBVpFREFUMTAwLgYDVQQDEydGcmVpZSBVbml2ZXJzaXRhZXQgQmVybGlu IC0gRlUtQ0EgLSBHMDExHjAcBgkqhkiG9w0BCQEWD2NhQEZVLUJlcmxpbi5ERTAeFw0xNjEwMjUx MDE2MjRaFw0xOTA3MDkyMzU5MDBaMHwxCzAJBgNVBAYTAkRFMQ8wDQYDVQQIDAZCZXJsaW4xDzAN BgNVBAcMBkJlcmxpbjEiMCAGA1UECgwZRnJlaWUgVW5pdmVyc2l0YWV0IEJlcmxpbjEOMAwGA1UE CwwFQ2VEaVMxFzAVBgNVBAMMDkdlb3JnIEthbGxpZGlzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEA29DfHsX0cmsLubtM7DPAhNwiEyH+q5Cn33G/jDs3cPFiICXmpcO+Wm7qtgnEbmu/ nXlp/nZL+2T6vd4NkdZeB01sM/6hMMDbSgG392obxCalfTnAx5Pcw6H/VPFtaEPZ2Ij4c5bcbFPt CXDdJnes/4RmqRhyVFG9cEh4r2dB879B6sl0d6qw3ZUCMo/f9aH/oJiJYTwbW/rqMrvN83oVpjpW NxH3J7wRKQCWtcqf6Bb5iTm6g9zbIBHHUsLDWK1YqqalkIAU+O4m8ashkU64L3fY0IuqxRKT+bXU u2RDpoGhgwJU9SRv9YUwRHxwamrfPdLGE3/El8O/KpbkUO+quwIDAQABo4ICLTCCAikwQAYDVR0g BDkwNzARBg8rBgEEAYGtIYIsAQEEAwUwEQYPKwYBBAGBrSGCLAIBBAMBMA8GDSsGAQQBga0hgiwB AQQwCQYDVR0TBAIwADAOBgNVHQ8BAf8EBAMCBeAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUF BwMEMB0GA1UdDgQWBBTYUigFcVH/COOEq0mMkHkPbq9/TzAfBgNVHSMEGDAWgBQG4T30b/Qwt3o7 V7AxBYl7DVhabDAsBgNVHREEJTAjgSFnZW9yZy5rYWxsaWRpc0BjZWRpcy5mdS1iZXJsaW4uZGUw dQYDVR0fBG4wbDA0oDKgMIYuaHR0cDovL2NkcDEucGNhLmRmbi5kZS9mdS1jYS9wdWIvY3JsL2Nh Y3JsLmNybDA0oDKgMIYuaHR0cDovL2NkcDIucGNhLmRmbi5kZS9mdS1jYS9wdWIvY3JsL2NhY3Js LmNybDCBxQYIKwYBBQUHAQEEgbgwgbUwMwYIKwYBBQUHMAGGJ2h0dHA6Ly9vY3NwLnBjYS5kZm4u ZGUvT0NTUC1TZXJ2ZXIvT0NTUDA+BggrBgEFBQcwAoYyaHR0cDovL2NkcDEucGNhLmRmbi5kZS9m dS1jYS9wdWIvY2FjZXJ0L2NhY2VydC5jcnQwPgYIKwYBBQUHMAKGMmh0dHA6Ly9jZHAyLnBjYS5k Zm4uZGUvZnUtY2EvcHViL2NhY2VydC9jYWNlcnQuY3J0MA0GCSqGSIb3DQEBCwUAA4IBAQAtZpNj EYQicPWBaRT8Ye7V9Lq4BO54wWdCcZWofWpqVsmTc2XbubTyur7UIecojV1O9r7tLvZThVTggG1Q 0yYenFGXNeqL9P4G4hHUsafinyh3cyx31G7lD0BcjAQwm6HTFcIv2J2b9Im2aC7dJ9FqSL94n/pu 4nZErfmrYGzPW/60GcsIl+PtWTAYNig87kg12XnTxd7bjyFfUoGoChUf8OKCmHppJDy9/BRP3dTA sVa2NPB0UqKPNkhkNgqbYaQw4VGvizQWtME+kOA4i6KB4pMLQED7NeRdjLprKorLnQ9AiMsoRk15 oUD9ilp8vMWPOCWmJjHP/NoNpDSgp0G/MYIDgDCCA3wCAQEwgcYwgbUxCzAJBgNVBAYTAkRFMQ8w DQYDVQQIEwZCZXJsaW4xDzANBgNVBAcTBkJlcmxpbjEiMCAGA1UEChMZRnJlaWUgVW5pdmVyc2l0 YWV0IEJlcmxpbjEOMAwGA1UECxMFWkVEQVQxMDAuBgNVBAMTJ0ZyZWllIFVuaXZlcnNpdGFldCBC ZXJsaW4gLSBGVS1DQSAtIEcwMTEeMBwGCSqGSIb3DQEJARYPY2FARlUtQmVybGluLkRFAgwcLq6I lnV//SQjSIwwDQYJYIZIAWUDBAIBBQCgggGKMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJ KoZIhvcNAQkFMQ8XDTE4MTAyMjA5NTk0M1owLwYJKoZIhvcNAQkEMSIEIIk71NoDN+0tInBYpS8y E4bjuaZ7T8Az0DPkzwMWUsU6MEMGCSqGSIb3DQEJDzE2MDQwBwYFKw4DAh0wDgYIKoZIhvcNAwIC AgCAMAoGCCqGSIb3DQMHMA0GCCqGSIb3DQMCAgEoMIHZBgsqhkiG9w0BCRACCzGByaCBxjCBtTEL MAkGA1UEBhMCREUxDzANBgNVBAgTBkJlcmxpbjEPMA0GA1UEBxMGQmVybGluMSIwIAYDVQQKExlG cmVpZSBVbml2ZXJzaXRhZXQgQmVybGluMQ4wDAYDVQQLEwVaRURBVDEwMC4GA1UEAxMnRnJlaWUg VW5pdmVyc2l0YWV0IEJlcmxpbiAtIEZVLUNBIC0gRzAxMR4wHAYJKoZIhvcNAQkBFg9jYUBGVS1C ZXJsaW4uREUCDBwuroiWdX/9JCNIjDANBgkqhkiG9w0BAQEFAASCAQAymiOuvccfTPYi0XV6Qo5j lEGjBV/V+KjVrfEswJKefXrngL/tDY1+icgkMeWSO2pclBZls6YrHB1TyflicKXGwI6y6p/PIuTr 3YwTW6vuMBqnJi98H2mtLm5CTst+S4Zns5l5z2u9tAWnXIVoP55g3TuIX4ABRpx3jSANdO7x8Dy6 OZKuFbswfCjxUE7862QtOS8+e0RDLAwz68hFPkWrcrscAXfZOsAaSjDvbafKT4V7O5jKIcGqJJaK gi9V7W5RxytMtc7JtZDNYGR91N5d+PRqHxpXd9fm4xz3FLD0zo6/kDPemvUZTP+g0AQi6p0IQEZQ WK1sJ6gbkOuLcoprAAAAAA== ---------z59743_boundary_sign--