From theute at redhat.com Mon Jan 11 09:16:12 2010 Content-Type: multipart/mixed; boundary="===============8531053424822585078==" MIME-Version: 1.0 From: Thomas Heute To: gatein-dev at lists.jboss.org Subject: Re: [gatein-dev] Sugestions Date: Mon, 11 Jan 2010 15:16:09 +0100 Message-ID: <4B4B32A9.9080505@redhat.com> In-Reply-To: f71ba8d81001040522v26401ab5ya061bcd986cf0612@mail.gmail.com --===============8531053424822585078== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Thank you Rafael ! First we should keep portal and WCM discussions seperated, GateIn is = about the portal so I leave the WCM part apart. > > Overall > > * > > Change messages from the default popup (error/warning/info). It > seems messy since there's already JavaScript's alerts and is not > ergonomic. JSF-like messages are much better (they appear in a > box above the form). The user only wants to correct his fields, > the don't want to click any annoying popup. > > o > > eXo: request forwarded to Portal Team > Agreed, do you know if a Jira was opened ? I don't think there is one on = GTNPORTAL, we should keep this requirement for furture evolution of = WebUI so feel free to add a Jira. > * > > There's already a Groovy cache, to save compilation AFAIK. There > could be also a HTML cache, that would cache the whole page, not > a per portlet thing. > There are already multiple layers of cache, what would be interesting = would be to return the correct Last-Modified on HTTP Response but it's = tricky to get. How do you see your HTML cache working with invalidation ? > > > Language > > * > > The Language Settings should use the locales-config.xml > definitions (output-encoding and input-encoding) to encode > request parameters. There are a lot of encoding problems through > eXo (try to login with a fake username with accents, for instance) > > o > > eXo: request forwarded to Portal Team > If there are encoding issues, please report them. > > Portlets and HTML rendering > > * > > Don't render the div tags like VIEW-PAGEBODY, META-DATA-BLOCK, > PORTLET-FRAGMENT, etc (or render the minimum required) with > "display: none". That pollutes the code, makes the downloading > slower, loads the browser and confuses us with eXo's CSS. Rather > these tags should not be shown by default but only in Edit Site, > Edit Mode, etc. If that was done this way because of AJAX, it's > much preferable for the web-designer to have a refresh than a > end-user to have a bloated HTML. > > o > > eXo: Such a thing will be discussed internally in the new > GateIn project as I would like in WCM a "production" site > without this code. > Not sure if they are required, looks like semantic info > * > > A decorator container. Something like a wrapper that would have > a before and an after field that would surround it's contents. > > o > > eXo: don't understand that point. > > o > > Rliu: Just like there are column, rows, tab and mixed > container, it would be useful to have a "decorator > container". A container that would decorate it's content. > Imagine (I had to do that) that I wan a PageBody with > rounded corners. There are a lot of methods to do rounded > corners in HTML/CSS, but only a few are applicable because > there's no way to surround PageBody's content (a simple > case: imagine I want a
tag before and a
after > page content. Or a
or , etc) > A wrapper around a page ? around a content of a layout ? Not sure I = understand neither :-/ > > * > > Editing class/style tag of portlet's div is really useful (used > a lot of times in this project I'm in). There should be a field > for each of these (and maybe width/height would be unnecessary) > in Portlet Settings tab. > > o > > eXo: that's also part of WCM requirements for > accessibility : I'd like to add a class property for each > portlet instance and we have to remove the portlet id > property for w3c compliance. We're on the same wave ? > This is the dreaded issue of the admin portal, the problem is to draw = the line between administrators and developers. Some people will want = limited but easy to understand UI and others will want advanced UI, that = leads to your introduction and you are 100% right. > * > > Portlet's id should be editable. Then I could use it as CSS > selector and have meaningful id's in my HTML. > > o > > eXo: agreed, see previous answer. > True. > > * > > Navigation, Breadcrumb and Site Map should be done with > server-side scripting. > > o > > This is much less error-prone (another JavaScript error > wouldn't break my script) > > o > > We could use caching > > o > > We could use IDE goodies > > o > > And I think it's prettier, much more maintainable and the > concept of versioning gets more reasonable. > This is already the case in portal AFAIK. Thomas. On 01/04/2010 02:22 PM, rafael liu wrote: > Hey, guys > > I'm an outsider, since I use GateIn/eXo a lot, I subscribed to this = > list. Some time ago I wrote to both Benjamin about some suggestions = > regarding the products I was using. > > I'm forwarding the document we exchanged with comments by exo and me. = > I believe the suggestions concerning the Portal is pretty much valid = > still. > > Could you give me a feedback for further discussions? > > BTW, nice work. GateIn is looking amazing. > > -- = > Rafael Liu > +55 61 9608-7722 > http://rafaelliu.net > > > _______________________________________________ > gatein-dev mailing list > gatein-dev(a)lists.jboss.org > https://lists.jboss.org/mailman/listinfo/gatein-dev > = --===============8531053424822585078== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFs Ly9FTiI+CjxodG1sPgo8aGVhZD4KICA8bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9 SVNPLTg4NTktMSIKIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSI+CjwvaGVhZD4KPGJvZHkgdGV4 dD0iIzAwMDAwMCIgYmdjb2xvcj0iI2ZmZmZmZiI+Cjxicj4KVGhhbmsgeW91IFJhZmFlbCAhPGJy Pgo8YnI+CkZpcnN0IHdlIHNob3VsZCBrZWVwIHBvcnRhbCBhbmQgV0NNIGRpc2N1c3Npb25zIHNl cGVyYXRlZCwgR2F0ZUluIGlzCmFib3V0IHRoZSBwb3J0YWwgc28gSSBsZWF2ZSB0aGUgV0NNIHBh cnQgYXBhcnQuPGJyPgo8YnI+CjxtZXRhIGh0dHAtZXF1aXY9IkNPTlRFTlQtVFlQRSIgY29udGVu dD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPgo8dGl0bGU+PC90aXRsZT4KPG1ldGEg bmFtZT0iR0VORVJBVE9SIiBjb250ZW50PSJPcGVuT2ZmaWNlLm9yZyAzLjEgIChMaW51eCkiPgo8 c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJPCEtLQoJCUBwYWdlIHsgbWFyZ2luOiAwLjc5aW4gfQoJ CVAgeyBtYXJnaW4tYm90dG9tOiAwLjA4aW4gfQoJCUgyIHsgbWFyZ2luLWxlZnQ6IDAuNGluOyB0 ZXh0LWluZGVudDogLTAuNGluOyBtYXJnaW4tYm90dG9tOiAwLjA4aW4gfQoJCUgyLndlc3Rlcm4g eyBmb250LWZhbWlseTogIkFsYmFueSBBTVQiLCAiQXJpYWwiOyBmb250LXNpemU6IDE0cHQ7IGZv bnQtc3R5bGU6IGl0YWxpYyB9CgkJSDIuY2prIHsgZm9udC1mYW1pbHk6ICJEZWphVnUgU2FucyIs ICJUaW1lcyBOZXcgUm9tYW4iOyBmb250LXNpemU6IDE0cHQ7IGZvbnQtc3R5bGU6IGl0YWxpYyB9 CgkJSDIuY3RsIHsgZm9udC1mYW1pbHk6ICJUYWhvbWEiOyBmb250LXNpemU6IDE0cHQ7IGZvbnQt c3R5bGU6IGl0YWxpYyB9CgktLT48L3N0eWxlPgo8YmxvY2txdW90ZSB0eXBlPSJjaXRlIj4KICA8 bWV0YSBodHRwLWVxdWl2PSJDT05URU5ULVRZUEUiCiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz ZXQ9SVNPLTg4NTktMSI+CiAgPHRpdGxlPjwvdGl0bGU+CiAgPG1ldGEgbmFtZT0iR0VORVJBVE9S IiBjb250ZW50PSJPcGVuT2ZmaWNlLm9yZyAzLjEgIChMaW51eCkiPgogIDxzdHlsZSB0eXBlPSJ0 ZXh0L2NzcyI+Cgk8IS0tCgkJQHBhZ2UgeyBtYXJnaW46IDAuNzlpbiB9CgkJUCB7IG1hcmdpbi1i b3R0b206IDAuMDhpbiB9CgkJSDIgeyBtYXJnaW4tbGVmdDogMC40aW47IHRleHQtaW5kZW50OiAt MC40aW47IG1hcmdpbi1ib3R0b206IDAuMDhpbiB9CgkJSDIud2VzdGVybiB7IGZvbnQtZmFtaWx5 OiAiQWxiYW55IEFNVCIsICJBcmlhbCI7IGZvbnQtc2l6ZTogMTRwdDsgZm9udC1zdHlsZTogaXRh bGljIH0KCQlIMi5jamsgeyBmb250LWZhbWlseTogIkRlamFWdSBTYW5zIiwgIlRpbWVzIE5ldyBS b21hbiI7IGZvbnQtc2l6ZTogMTRwdDsgZm9udC1zdHlsZTogaXRhbGljIH0KCQlIMi5jdGwgeyBm b250LWZhbWlseTogIlRhaG9tYSI7IGZvbnQtc2l6ZTogMTRwdDsgZm9udC1zdHlsZTogaXRhbGlj IH0KCS0tPgoJPC9zdHlsZT4KICA8aDIgY2xhc3M9Indlc3Rlcm4iPk92ZXJhbGw8L2gyPgogIDx1 bD4KICAgIDxsaT4KICAgICAgPHA+Q2hhbmdlIG1lc3NhZ2VzIGZyb20gdGhlIGRlZmF1bHQgcG9w dXAgKGVycm9yL3dhcm5pbmcvaW5mbykuCkl0IHNlZW1zIG1lc3N5IHNpbmNlIHRoZXJlJ3MgYWxy ZWFkeSBKYXZhU2NyaXB0J3MgYWxlcnRzIGFuZCBpcyBub3QKZXJnb25vbWljLiBKU0YtbGlrZSBt ZXNzYWdlcyBhcmUgbXVjaCBiZXR0ZXIgKHRoZXkgYXBwZWFyIGluIGEgYm94CmFib3ZlIHRoZSBm b3JtKS4gVGhlIHVzZXIgb25seSB3YW50cyB0byBjb3JyZWN0IGhpcyBmaWVsZHMsIHRoZSBkb24n dAp3YW50IHRvIGNsaWNrIGFueSBhbm5veWluZyBwb3B1cC48L3A+CiAgICAgIDx1bD4KICAgICAg ICA8bGk+CiAgICAgICAgICA8cD5lWG86IHJlcXVlc3QgZm9yd2FyZGVkIHRvIFBvcnRhbCBUZWFt PC9wPgogICAgICAgIDwvbGk+CiAgICAgIDwvdWw+CiAgICA8L2xpPgogIDwvdWw+CjwvYmxvY2tx dW90ZT4KPGJyPgpBZ3JlZWQsIGRvIHlvdSBrbm93IGlmIGEgSmlyYSB3YXMgb3BlbmVkID8gSSBk b24ndCB0aGluayB0aGVyZSBpcyBvbmUKb24gR1ROUE9SVEFMLCB3ZSBzaG91bGQga2VlcCB0aGlz IHJlcXVpcmVtZW50IGZvciBmdXJ0dXJlIGV2b2x1dGlvbiBvZgpXZWJVSSBzbyBmZWVsIGZyZWUg dG8gYWRkIGEgSmlyYS48YnI+Cjxicj4KPG1ldGEgaHR0cC1lcXVpdj0iQ09OVEVOVC1UWVBFIiBj b250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+Cjx0aXRsZT48L3RpdGxlPgo8 bWV0YSBuYW1lPSJHRU5FUkFUT1IiIGNvbnRlbnQ9Ik9wZW5PZmZpY2Uub3JnIDMuMSAgKExpbnV4 KSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgk8IS0tCgkJQHBhZ2UgeyBtYXJnaW46IDAuNzlp biB9CgkJUCB7IG1hcmdpbi1ib3R0b206IDAuMDhpbiB9CgktLT48L3N0eWxlPgo8YmxvY2txdW90 ZSB0eXBlPSJjaXRlIj4KICA8bWV0YSBodHRwLWVxdWl2PSJDT05URU5ULVRZUEUiCiBjb250ZW50 PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+CiAgPHRpdGxlPjwvdGl0bGU+CiAgPG1l dGEgbmFtZT0iR0VORVJBVE9SIiBjb250ZW50PSJPcGVuT2ZmaWNlLm9yZyAzLjEgIChMaW51eCki PgogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgk8IS0tCgkJQHBhZ2UgeyBtYXJnaW46IDAuNzlp biB9CgkJUCB7IG1hcmdpbi1ib3R0b206IDAuMDhpbiB9CgktLT4KCTwvc3R5bGU+CiAgPHVsPgog ICAgPGxpPgogICAgICA8cD5UaGVyZSdzIGFscmVhZHkgYSBHcm9vdnkgY2FjaGUsIHRvIHNhdmUg Y29tcGlsYXRpb24gQUZBSUsuClRoZXJlIGNvdWxkIGJlIGFsc28gYSBIVE1MIGNhY2hlLCB0aGF0 IHdvdWxkIGNhY2hlIHRoZSB3aG9sZSBwYWdlLCBub3QKYSBwZXIgcG9ydGxldCB0aGluZy48L3A+ CiAgICA8L2xpPgogIDwvdWw+CjwvYmxvY2txdW90ZT4KVGhlcmUgYXJlIGFscmVhZHkgbXVsdGlw bGUgbGF5ZXJzIG9mIGNhY2hlLCB3aGF0IHdvdWxkIGJlIGludGVyZXN0aW5nCndvdWxkIGJlIHRv IHJldHVybiB0aGUgY29ycmVjdCBMYXN0LU1vZGlmaWVkIG9uIEhUVFAgUmVzcG9uc2UgYnV0IGl0 J3MKdHJpY2t5IHRvIGdldC4gSG93IGRvIHlvdSBzZWUgeW91ciBIVE1MIGNhY2hlIHdvcmtpbmcg d2l0aCBpbnZhbGlkYXRpb24KPzxicj4KPGJsb2NrcXVvdGUgdHlwZT0iY2l0ZSI+CiAgPG1ldGEg aHR0cC1lcXVpdj0iQ09OVEVOVC1UWVBFIgogY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlT Ty04ODU5LTEiPgogIDx0aXRsZT48L3RpdGxlPgogIDxtZXRhIG5hbWU9IkdFTkVSQVRPUiIgY29u dGVudD0iT3Blbk9mZmljZS5vcmcgMy4xICAoTGludXgpIj4KICA8c3R5bGUgdHlwZT0idGV4dC9j c3MiPgoJPCEtLQoJCUBwYWdlIHsgbWFyZ2luOiAwLjc5aW4gfQoJCVAgeyBtYXJnaW4tYm90dG9t OiAwLjA4aW4gfQoJCUgyIHsgbWFyZ2luLWxlZnQ6IDAuNGluOyB0ZXh0LWluZGVudDogLTAuNGlu OyBtYXJnaW4tYm90dG9tOiAwLjA4aW4gfQoJCUgyLndlc3Rlcm4geyBmb250LWZhbWlseTogIkFs YmFueSBBTVQiLCAiQXJpYWwiOyBmb250LXNpemU6IDE0cHQ7IGZvbnQtc3R5bGU6IGl0YWxpYyB9 CgkJSDIuY2prIHsgZm9udC1mYW1pbHk6ICJEZWphVnUgU2FucyIsICJUaW1lcyBOZXcgUm9tYW4i OyBmb250LXNpemU6IDE0cHQ7IGZvbnQtc3R5bGU6IGl0YWxpYyB9CgkJSDIuY3RsIHsgZm9udC1m YW1pbHk6ICJUYWhvbWEiOyBmb250LXNpemU6IDE0cHQ7IGZvbnQtc3R5bGU6IGl0YWxpYyB9Cgkt LT4KCTwvc3R5bGU+CiAgPGgyIGNsYXNzPSJ3ZXN0ZXJuIj5MYW5ndWFnZTwvaDI+CiAgPHVsPgog ICAgPGxpPgogICAgICA8cD5UaGUgTGFuZ3VhZ2UgU2V0dGluZ3Mgc2hvdWxkIHVzZSB0aGUgbG9j YWxlcy1jb25maWcueG1sCmRlZmluaXRpb25zIChvdXRwdXQtZW5jb2RpbmcgYW5kIGlucHV0LWVu Y29kaW5nKSB0byBlbmNvZGUgcmVxdWVzdApwYXJhbWV0ZXJzLiBUaGVyZSBhcmUgYSBsb3Qgb2Yg ZW5jb2RpbmcgcHJvYmxlbXMgdGhyb3VnaCBlWG8gKHRyeSB0bwpsb2dpbiB3aXRoIGEgZmFrZSB1 c2VybmFtZSB3aXRoIGFjY2VudHMsIGZvciBpbnN0YW5jZSk8L3A+CiAgICAgIDx1bD4KICAgICAg ICA8bGk+CiAgICAgICAgICA8cD5lWG86IHJlcXVlc3QgZm9yd2FyZGVkIHRvIFBvcnRhbCBUZWFt PC9wPgogICAgICAgIDwvbGk+CiAgICAgIDwvdWw+CiAgICA8L2xpPgogIDwvdWw+CjwvYmxvY2tx dW90ZT4KPGJyPgpJZiB0aGVyZSBhcmUgZW5jb2RpbmcgaXNzdWVzLCBwbGVhc2UgcmVwb3J0IHRo ZW0uPGJyPgo8YnI+CjxibG9ja3F1b3RlIHR5cGU9ImNpdGUiPgogIDxtZXRhIGh0dHAtZXF1aXY9 IkNPTlRFTlQtVFlQRSIKIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4K ICA8dGl0bGU+PC90aXRsZT4KICA8bWV0YSBuYW1lPSJHRU5FUkFUT1IiIGNvbnRlbnQ9Ik9wZW5P ZmZpY2Uub3JnIDMuMSAgKExpbnV4KSI+CiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCTwhLS0K CQlAcGFnZSB7IG1hcmdpbjogMC43OWluIH0KCQlQIHsgbWFyZ2luLWJvdHRvbTogMC4wOGluIH0K CQlIMiB7IG1hcmdpbi1sZWZ0OiAwLjRpbjsgdGV4dC1pbmRlbnQ6IC0wLjRpbjsgbWFyZ2luLWJv dHRvbTogMC4wOGluIH0KCQlIMi53ZXN0ZXJuIHsgZm9udC1mYW1pbHk6ICJBbGJhbnkgQU1UIiwg IkFyaWFsIjsgZm9udC1zaXplOiAxNHB0OyBmb250LXN0eWxlOiBpdGFsaWMgfQoJCUgyLmNqayB7 IGZvbnQtZmFtaWx5OiAiRGVqYVZ1IFNhbnMiLCAiVGltZXMgTmV3IFJvbWFuIjsgZm9udC1zaXpl OiAxNHB0OyBmb250LXN0eWxlOiBpdGFsaWMgfQoJCUgyLmN0bCB7IGZvbnQtZmFtaWx5OiAiVGFo b21hIjsgZm9udC1zaXplOiAxNHB0OyBmb250LXN0eWxlOiBpdGFsaWMgfQoJLS0+Cgk8L3N0eWxl PgogIDxoMiBjbGFzcz0id2VzdGVybiI+UG9ydGxldHMgYW5kIEhUTUwgcmVuZGVyaW5nPC9oMj4K ICA8dWw+CiAgICA8bGk+CiAgICAgIDxwPjxhIG5hbWU9ImxpbmUyMDI2Ij48L2E+RG9uJ3QgcmVu ZGVyIHRoZSBkaXYgdGFncyBsaWtlClZJRVctUEFHRUJPRFksIE1FVEEtREFUQS1CTE9DSywgUE9S VExFVC1GUkFHTUVOVCwgZXRjIChvciByZW5kZXIgdGhlCm1pbmltdW0gcmVxdWlyZWQpIHdpdGgg JiM4MjIwO2Rpc3BsYXk6IG5vbmUmIzgyMjE7LiBUaGF0IHBvbGx1dGVzIHRoZSBjb2RlLCBtYWtl cwp0aGUgZG93bmxvYWRpbmcgc2xvd2VyLCBsb2FkcyB0aGUgYnJvd3NlciBhbmQgY29uZnVzZXMg dXMgd2l0aCBlWG8ncwpDU1MuIFJhdGhlciB0aGVzZSB0YWdzIHNob3VsZCBub3QgYmUgc2hvd24g YnkgZGVmYXVsdCBidXQgb25seSBpbiBFZGl0ClNpdGUsIEVkaXQgTW9kZSwgZXRjLiBJZiB0aGF0 IHdhcyBkb25lIHRoaXMgd2F5IGJlY2F1c2Ugb2YgQUpBWCwgaXQncwptdWNoIHByZWZlcmFibGUg Zm9yIHRoZSB3ZWItZGVzaWduZXIgdG8gaGF2ZSBhIHJlZnJlc2ggdGhhbiBhIGVuZC11c2VyCnRv IGhhdmUgYSBibG9hdGVkIEhUTUwuPC9wPgogICAgICA8dWw+CiAgICAgICAgPGxpPgogICAgICAg ICAgPHA+ZVhvOiBTdWNoIGEgdGhpbmcgd2lsbCBiZSBkaXNjdXNzZWQgaW50ZXJuYWxseSBpbiB0 aGUgbmV3CkdhdGVJbiBwcm9qZWN0IGFzIEkgd291bGQgbGlrZSBpbiBXQ00gYSAmIzgyMjA7cHJv ZHVjdGlvbiYjODIyMTsgc2l0ZSB3aXRob3V0IHRoaXMKY29kZS48L3A+CiAgICAgICAgPC9saT4K ICAgICAgPC91bD4KICAgIDwvbGk+CiAgPC91bD4KPC9ibG9ja3F1b3RlPgpOb3Qgc3VyZSBpZiB0 aGV5IGFyZSByZXF1aXJlZCwgbG9va3MgbGlrZSBzZW1hbnRpYyBpbmZvPGJyPgo8YnI+CjxibG9j a3F1b3RlIHR5cGU9ImNpdGUiPgogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgk8IS0tCgkJQHBh Z2UgeyBtYXJnaW46IDAuNzlpbiB9CgkJUCB7IG1hcmdpbi1ib3R0b206IDAuMDhpbiB9CgktLT4K CTwvc3R5bGU+CiAgPHVsPgogICAgPGxpPgogICAgICA8cD5BIGRlY29yYXRvciBjb250YWluZXIu IFNvbWV0aGluZyBsaWtlIGEgd3JhcHBlciB0aGF0IHdvdWxkCmhhdmUgYSBiZWZvcmUgYW5kIGFu IGFmdGVyIGZpZWxkIHRoYXQgd291bGQgc3Vycm91bmQgaXQncyBjb250ZW50cy48L3A+CiAgICAg IDx1bD4KICAgICAgICA8bGk+CiAgICAgICAgICA8cD5lWG86IGRvbiYjODIxNzt0IHVuZGVyc3Rh bmQgdGhhdCBwb2ludC48L3A+CiAgICAgICAgPC9saT4KICAgICAgICA8bGk+CiAgICAgICAgICA8 cD5SbGl1OiBKdXN0IGxpa2UgdGhlcmUgYXJlIGNvbHVtbiwgcm93cywgdGFiIGFuZCBtaXhlZApj b250YWluZXIsIGl0IHdvdWxkIGJlIHVzZWZ1bCB0byBoYXZlIGEgJiM4MjIwO2RlY29yYXRvciBj b250YWluZXImIzgyMjE7LiBBCmNvbnRhaW5lciB0aGF0IHdvdWxkIGRlY29yYXRlIGl0J3MgY29u dGVudC4gSW1hZ2luZSAoSSBoYWQgdG8gZG8gdGhhdCkKdGhhdCBJIHdhbiBhIFBhZ2VCb2R5IHdp dGggcm91bmRlZCBjb3JuZXJzLiBUaGVyZSBhcmUgYSBsb3Qgb2YgbWV0aG9kcwp0byBkbyByb3Vu ZGVkIGNvcm5lcnMgaW4gSFRNTC9DU1MsIGJ1dCBvbmx5IGEgZmV3IGFyZSBhcHBsaWNhYmxlCmJl Y2F1c2UgdGhlcmUncyBubyB3YXkgdG8gc3Vycm91bmQgUGFnZUJvZHkncyBjb250ZW50IChhIHNp bXBsZSBjYXNlOgppbWFnaW5lIEkgd2FudCBhICZsdDtkaXYmZ3Q7IHRhZyBiZWZvcmUgYW5kIGEg Jmx0Oy9kaXYmZ3Q7IGFmdGVyIHBhZ2UKY29udGVudC4gT3IgYSAmbHQ7Y2VudGVyJmd0OyBvciAm bHQ7dGFibGUmZ3Q7LCBldGMpPC9wPgogICAgICAgIDwvbGk+CiAgICAgIDwvdWw+CiAgICA8L2xp PgogIDwvdWw+CjwvYmxvY2txdW90ZT4KQSB3cmFwcGVyIGFyb3VuZCBhIHBhZ2UgPyBhcm91bmQg YSBjb250ZW50IG9mIGEgbGF5b3V0ID8gTm90IHN1cmUgSQp1bmRlcnN0YW5kIG5laXRoZXIgOi0v PGJyPgo8YmxvY2txdW90ZSB0eXBlPSJjaXRlIj4KICA8bWV0YSBodHRwLWVxdWl2PSJDT05URU5U LVRZUEUiCiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+CiAgPHRpdGxl PjwvdGl0bGU+CiAgPG1ldGEgbmFtZT0iR0VORVJBVE9SIiBjb250ZW50PSJPcGVuT2ZmaWNlLm9y ZyAzLjEgIChMaW51eCkiPgogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgk8IS0tCgkJQHBhZ2Ug eyBtYXJnaW46IDAuNzlpbiB9CgkJUCB7IG1hcmdpbi1ib3R0b206IDAuMDhpbiB9CgktLT4KCTwv c3R5bGU+CiAgPHVsPgogICAgPGxpPgogICAgICA8cD5FZGl0aW5nIGNsYXNzL3N0eWxlIHRhZyBv ZiBwb3J0bGV0J3MgZGl2IGlzIHJlYWxseSB1c2VmdWwKKHVzZWQgYSBsb3Qgb2YgdGltZXMgaW4g dGhpcyBwcm9qZWN0IEknbSBpbikuIFRoZXJlIHNob3VsZCBiZSBhIGZpZWxkCmZvciBlYWNoIG9m IHRoZXNlIChhbmQgbWF5YmUgd2lkdGgvaGVpZ2h0IHdvdWxkIGJlIHVubmVjZXNzYXJ5KSBpbgpQ b3J0bGV0IFNldHRpbmdzIHRhYi48L3A+CiAgICAgIDx1bD4KICAgICAgICA8bGk+CiAgICAgICAg ICA8cD5lWG86IHRoYXQmIzgyMTc7cyBhbHNvIHBhcnQgb2YgV0NNIHJlcXVpcmVtZW50cyBmb3IK YWNjZXNzaWJpbGl0eSA6IEkmIzgyMTc7ZCBsaWtlIHRvIGFkZCBhIGNsYXNzIHByb3BlcnR5IGZv ciBlYWNoIHBvcnRsZXQKaW5zdGFuY2UgYW5kIHdlIGhhdmUgdG8gcmVtb3ZlIHRoZSBwb3J0bGV0 IGlkIHByb3BlcnR5IGZvciB3M2MKY29tcGxpYW5jZS4gV2UmIzgyMTc7cmUgb24gdGhlIHNhbWUg d2F2ZSA8Zm9udCBmYWNlPSJXaW5nZGluZ3MiPiYjNjE1MTQ7PC9mb250PjwvcD4KICAgICAgICA8 L2xpPgogICAgICA8L3VsPgogICAgPC9saT4KICA8L3VsPgo8L2Jsb2NrcXVvdGU+Cjxicj4KVGhp cyBpcyB0aGUgZHJlYWRlZCBpc3N1ZSBvZiB0aGUgYWRtaW4gcG9ydGFsLCB0aGUgcHJvYmxlbSBp cyB0byBkcmF3CnRoZSBsaW5lIGJldHdlZW4gYWRtaW5pc3RyYXRvcnMgYW5kIGRldmVsb3BlcnMu IFNvbWUgcGVvcGxlIHdpbGwgd2FudApsaW1pdGVkIGJ1dCBlYXN5IHRvIHVuZGVyc3RhbmQgVUkg YW5kIG90aGVycyB3aWxsIHdhbnQgYWR2YW5jZWQgVUksCnRoYXQgbGVhZHMgdG8geW91ciBpbnRy b2R1Y3Rpb24gYW5kIHlvdSBhcmUgMTAwJSByaWdodC48YnI+Cjxicj4KPGJsb2NrcXVvdGUgdHlw ZT0iY2l0ZSI+CiAgPG1ldGEgaHR0cC1lcXVpdj0iQ09OVEVOVC1UWVBFIgogY29udGVudD0idGV4 dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPgogIDx0aXRsZT48L3RpdGxlPgogIDxtZXRhIG5h bWU9IkdFTkVSQVRPUiIgY29udGVudD0iT3Blbk9mZmljZS5vcmcgMy4xICAoTGludXgpIj4KICA8 c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJPCEtLQoJCUBwYWdlIHsgbWFyZ2luOiAwLjc5aW4gfQoJ CVAgeyBtYXJnaW4tYm90dG9tOiAwLjA4aW4gfQoJLS0+Cgk8L3N0eWxlPgogIDx1bD4KICAgIDxs aT4KICAgICAgPHA+UG9ydGxldCdzIGlkIHNob3VsZCBiZSBlZGl0YWJsZS4gVGhlbiBJIGNvdWxk IHVzZSBpdCBhcyBDU1MKc2VsZWN0b3IgYW5kIGhhdmUgbWVhbmluZ2Z1bCBpZCdzIGluIG15IEhU TUwuPC9wPgogICAgICA8dWw+CiAgICAgICAgPGxpPgogICAgICAgICAgPHA+ZVhvOiBhZ3JlZWQs IHNlZSBwcmV2aW91cyBhbnN3ZXIuPC9wPgogICAgICAgIDwvbGk+CiAgICAgIDwvdWw+CiAgICA8 L2xpPgogIDwvdWw+CjwvYmxvY2txdW90ZT4KVHJ1ZS48YnI+CjxibG9ja3F1b3RlIHR5cGU9ImNp dGUiPgogIDxtZXRhIGh0dHAtZXF1aXY9IkNPTlRFTlQtVFlQRSIKIGNvbnRlbnQ9InRleHQvaHRt bDsgY2hhcnNldD1JU08tODg1OS0xIj4KICA8dGl0bGU+PC90aXRsZT4KICA8bWV0YSBuYW1lPSJH RU5FUkFUT1IiIGNvbnRlbnQ9Ik9wZW5PZmZpY2Uub3JnIDMuMSAgKExpbnV4KSI+CiAgPHN0eWxl IHR5cGU9InRleHQvY3NzIj4KCTwhLS0KCQlAcGFnZSB7IG1hcmdpbjogMC43OWluIH0KCQlQIHsg bWFyZ2luLWJvdHRvbTogMC4wOGluIH0KCS0tPgoJPC9zdHlsZT4KICA8dWw+CiAgICA8bGk+CiAg ICAgIDxwPk5hdmlnYXRpb24sIEJyZWFkY3J1bWIgYW5kIFNpdGUgTWFwIHNob3VsZCBiZSBkb25l IHdpdGgKc2VydmVyLXNpZGUgc2NyaXB0aW5nLjwvcD4KICAgIDwvbGk+CiAgICA8dWw+CiAgICAg IDxsaT4KICAgICAgICA8cD5UaGlzIGlzIG11Y2ggbGVzcyBlcnJvci1wcm9uZSAoYW5vdGhlciBK YXZhU2NyaXB0IGVycm9yCndvdWxkbid0IGJyZWFrIG15IHNjcmlwdCk8L3A+CiAgICAgIDwvbGk+ CiAgICAgIDxsaT4KICAgICAgICA8cD5XZSBjb3VsZCB1c2UgY2FjaGluZzwvcD4KICAgICAgPC9s aT4KICAgICAgPGxpPgogICAgICAgIDxwPldlIGNvdWxkIHVzZSBJREUgZ29vZGllczwvcD4KICAg ICAgPC9saT4KICAgICAgPGxpPgogICAgICAgIDxwPkFuZCBJIHRoaW5rIGl0J3MgcHJldHRpZXIs IG11Y2ggbW9yZSBtYWludGFpbmFibGUgYW5kIHRoZQpjb25jZXB0IG9mIHZlcnNpb25pbmcgZ2V0 cyBtb3JlIHJlYXNvbmFibGUuPC9wPgogICAgICA8L2xpPgogICAgPC91bD4KICA8L3VsPgo8L2Js b2NrcXVvdGU+CjxtZXRhIGh0dHAtZXF1aXY9IkNPTlRFTlQtVFlQRSIgY29udGVudD0idGV4dC9o dG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPgo8dGl0bGU+PC90aXRsZT4KPG1ldGEgbmFtZT0iR0VO RVJBVE9SIiBjb250ZW50PSJPcGVuT2ZmaWNlLm9yZyAzLjEgIChMaW51eCkiPgo8c3R5bGUgdHlw ZT0idGV4dC9jc3MiPgoJPCEtLQoJCUBwYWdlIHsgbWFyZ2luOiAwLjc5aW4gfQoJCVAgeyBtYXJn aW4tYm90dG9tOiAwLjA4aW4gfQoJLS0+Cgk8L3N0eWxlPgo8YnI+ClRoaXMgaXMgYWxyZWFkeSB0 aGUgY2FzZSBpbiBwb3J0YWwgQUZBSUsuPGJyPgo8YnI+ClRob21hcy48YnI+Cjxicj4KPGJyPgo8 YnI+Cjxicj4KPGJyPgo8YnI+Cjxicj4KPGJyPgpPbiAwMS8wNC8yMDEwIDAyOjIyIFBNLCByYWZh ZWwgbGl1IHdyb3RlOgo8YmxvY2txdW90ZQogY2l0ZT0ibWlkOmY3MWJhOGQ4MTAwMTA0MDUyMnYy NjQwMWFiNXlhMDYxYmNkOTg2Y2YwNjEyQG1haWwuZ21haWwuY29tIgogdHlwZT0iY2l0ZSI+SGV5 LCBndXlzPGJyPgogIDxicj4KSSdtIGFuIG91dHNpZGVyLCBzaW5jZSBJIHVzZSBHYXRlSW4vZVhv IGEgbG90LCBJIHN1YnNjcmliZWQgdG8gdGhpcwpsaXN0LiBTb21lIHRpbWUgYWdvIEkgd3JvdGUg dG8gYm90aCBCZW5qYW1pbiBhYm91dCBzb21lIHN1Z2dlc3Rpb25zCnJlZ2FyZGluZyB0aGUgcHJv ZHVjdHMgSSB3YXMgdXNpbmcuPGJyPgogIDxicj4KSSdtIGZvcndhcmRpbmcgdGhlIGRvY3VtZW50 IHdlIGV4Y2hhbmdlZCB3aXRoIGNvbW1lbnRzIGJ5IGV4byBhbmQgbWUuIEkKYmVsaWV2ZSB0aGUg c3VnZ2VzdGlvbnMgY29uY2VybmluZyB0aGUgUG9ydGFsIGlzIHByZXR0eSBtdWNoIHZhbGlkCnN0 aWxsLjxicj4KICA8YnI+CkNvdWxkIHlvdSBnaXZlIG1lIGEgZmVlZGJhY2sgZm9yIGZ1cnRoZXIg ZGlzY3Vzc2lvbnM/PGJyPgogIDxicj4KQlRXLCBuaWNlIHdvcmsuIEdhdGVJbiBpcyBsb29raW5n IGFtYXppbmcuPGJyIGNsZWFyPSJhbGwiPgogIDxicj4KLS0gPGJyPgpSYWZhZWwgTGl1PGJyPgor NTUgNjEgOTYwOC03NzIyPGJyPgogIDxhIG1vei1kby1ub3Qtc2VuZD0idHJ1ZSIgaHJlZj0iaHR0 cDovL3JhZmFlbGxpdS5uZXQiPmh0dHA6Ly9yYWZhZWxsaXUubmV0PC9hPjxicj4KICA8cHJlIHdy YXA9IiI+CjxmaWVsZHNldCBjbGFzcz0ibWltZUF0dGFjaG1lbnRIZWFkZXIiPjwvZmllbGRzZXQ+ Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmdhdGVpbi1k ZXYgbWFpbGluZyBsaXN0CjxhIGNsYXNzPSJtb3otdHh0LWxpbmstYWJicmV2aWF0ZWQiIGhyZWY9 Im1haWx0bzpnYXRlaW4tZGV2QGxpc3RzLmpib3NzLm9yZyI+Z2F0ZWluLWRldkBsaXN0cy5qYm9z cy5vcmc8L2E+CjxhIGNsYXNzPSJtb3otdHh0LWxpbmstZnJlZXRleHQiIGhyZWY9Imh0dHBzOi8v bGlzdHMuamJvc3Mub3JnL21haWxtYW4vbGlzdGluZm8vZ2F0ZWluLWRldiI+aHR0cHM6Ly9saXN0 cy5qYm9zcy5vcmcvbWFpbG1hbi9saXN0aW5mby9nYXRlaW4tZGV2PC9hPgogIDwvcHJlPgo8L2Js b2NrcXVvdGU+Cjxicj4KPC9ib2R5Pgo8L2h0bWw+Cg== --===============8531053424822585078==--