From alinefm at linux.vnet.ibm.com Wed Sep 16 15:23:58 2015 Content-Type: multipart/mixed; boundary="===============9173340434375884773==" MIME-Version: 1.0 From: Aline Manera To: kimchi-devel at ovirt.org Subject: Re: [Kimchi-devel] [PATCH 5/7] [WOK] Adding new-ui libraries after merge conflict Date: Wed, 16 Sep 2015 16:23:33 -0300 Message-ID: <55F9C1B5.5030502@linux.vnet.ibm.com> In-Reply-To: be811694d4ae40108a6c06f725cf1354@serv031.corp.eldorado.org.br --===============9173340434375884773== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On 16/09/2015 16:05, Samuel Henrique De Oliveira Guimaraes wrote: > -----Original Message----- > From: kimchi-devel-bounces(a)ovirt.org = > [mailto:kimchi-devel-bounces(a)ovirt.org] On Behalf Of Aline Manera > Sent: quarta-feira, 16 de setembro de 2015 13:09 > To: sguimaraes943(a)gmail.com; Kimchi Devel > Subject: Re: [Kimchi-devel] [PATCH 5/7] [WOK] Adding new-ui libraries = > after merge conflict > On 15/09/2015 16:56, sguimaraes943(a)gmail.com = > wrote: > > From: samhenri > > > > > Adding new-ui libraries again after merge conflict. > > > > Signed-off-by: samhenri > > > --- > > ui/libs/bootstrap.js | 2345 ++++ > > ui/libs/jquery-ui.js | 16617 ++++++++++++++++++++= +++++++++ > > ui/libs/modernizr.js | 1406 +++ > Is this file imported from somewhere? From which project? > TL;DR; - jQuery-UI was already in Kimchi, Bootstrap is necessary for = > the new-ui widgets and modernizr is used to detect browser features. = > They are all in this structure because that's the way Gulp and Bower = > manages them. > Some background: These files are ready for =E2=80=9Cproduction=E2=80=9D, = I create and = > edit the CSS & JS files in a separate project managed by these = > automation tools running in NodeJS (_https://nodejs.org/en/_): > Yeoman - _http://yeoman.io/_ - Html5 webapp generator that scaffolds = > everything that is necessary to build the new-ui. > This webapp generator includes the following tools: > a) Bower - _http://bower.io/_ - A package manager for web apps > b) Libsass - _http://sass-lang.com/_ - _http://sass-lang.com/libsass_ = > - A CSS pre-processor > c) Gulp JS - _http://gulpjs.com/_ - A workflow automation tool that is = > responsible for running a development static webserver and run tasks = > like compiling sources from imported libraries, testing, minifying and = > exporting assets. > This generated webapp that I used as "canvas" to write the widgets and = > mockups calls Bower commands to manage common libraries such as: > *jQuery (was already manually included in Kimchi) > *jQuery UI (same as above) > *jQuery UI i18n plugin (same as above) > *Twitter Bootstrap (Sass version) - = > _https://github.com/twbs/bootstrap-sass_ - Requires libsass to build > *Modernizr - _https://modernizr.com/_ - (MIT License) A JS library = > that detects all the supported features in a browser and wraps a css = > class in the tag. This is much better than do a simple browser = > version check that can lead to false or incorrect user agent strings. > *Es5-shim - _https://github.com/es-shims/es5-shim_ - Library that = > contain EcmaScript5 methods (Chrome and Firefox don't need this, = > Safari does) > *Json2 - JSON encoders/decoders for old browsers (Chrome and Firefox = > don't need this, Safari does) > *Base64 - _https://github.com/mathiasbynens/base64_ - JS Base64 = > encoder/decoder > *Chai Assertion Library - _http://chaijs.com/_ (dev dependency) > *Mocha js - _https://mochajs.org/_ - (dev dependency) > *FontAwesome - _http://fontawesome.io_ - (Imported just the Sass files = > since we are handling font files in a different way) > As a best practice in front-end development, we use Bower do manage = > the external/vendor libraries like the ones listed above. In the main = > mockup folder there's a json file that handles all the dependencies = > and their correct versions: > { > "name": "wok", > "private": true, > "dependencies": { > "modernizr": "~2.8.1", > "bootstrap-sass-official": "~3.3.5", > "bootstrap-select-sass": "~1.6.3", > "compass-mixins": "~1.0.2", > "es5-shim": "~4.1.10", > "json2": "*", > "base64": "~0.3.0", > "jquery": "~1.11.3", > "jquery-ui": "~1.11.4", > "jquery-i18n": "~1.1.1", > "font-awesome": "~4.4.0" > }, > "overrides": { > "bootstrap-sass-official": { > "main": [ > "assets/stylesheets/_bootstrap.scss", > "assets/javascripts/bootstrap.js" > ] > } > }, > "devDependencies": { > "chai": "~3.2.0", > "mocha": "~2.2.5" > } > } > Note that chai and mocha are dev-dependencies that are required by = > Gulp so they were not included in the compiled/exported assets. Bower = > creates a non-versioned folder called bower_components and store all = > the libraries original sources and assets in there (it basically does = > a git clone). > Then I use Gulp.JS to act as a development webserver that runs all the = > front-end tasks that I have programmed or that have been included by = > Yeoman generator such as JavaScript validation, Sass compilation, CSS = > and JS minification. When this server is running, it points directly = > to the original sources in bower_components so I can make changes on = > the fly instead of having to stop server / recompile sources / start = > server again. Once I'm done developing these assets, I run a task to = > "build" and optimize these files and export them to Kimchi/Wok project. > The sass files references the original Bootstrap source inside = > bower_components folder. Once I compile our sass files, Gulp = > automatically merges the referenced files with them. The same goes for = > jQuery-UI theme and font-awesome (which I programmatically removed the = > *.ttf and *.svg files). > > ui/libs/themes/base/bootstrap.custom.css | 8502 +++++++++++++++ > > ui/libs/themes/base/jquery-ui.custom.css | 203 + > > ui/libs/vendor.js | 5523 ++++++++++ > > ui/pages/browserconfig.xml | 12 + > > ui/pages/manifest.json | 41 + > The same I asked before. > It is better to group the files according to its project due license = > issues. > Example: > ui/libs/bootstrap/ =3D> to hold all the bootstrap files = > ui/libs/jquery-ui/ =3D> to hold all the jquery-ui files > TL; DR; bowersconfig.xml and manifest.json are necessary for Android = > drawer and Windows 8/10 tiles; vendor.js is es5-shim, json2 and base64 = > minified in one single file by Gulp. Bootstrap.custom.css is where I'm = > putting the CSS files that I'm removing form css/themes-default and = > converting/adapting to Bootstrap markup/widgets =E2=80=93 this is the ne= w-ui = > main CSS. I kept separated from css folder because this file has to be = > loaded after the other css files (due to how css cascading works). > As I was explaining, Gulp merges the referenced libraries assets, so = > the original Bootstrap files are combined with whichever file that has = > referenced them. This is something that we can change but I don't = > think it is a good idea to keep the original Bootstrap CSS in one = > folder and then load our custom CSS over it because it already = > includes classes with the same rules and some of them with the same = > properties and values from Bootstrap, i.e. including Bootstrap = > original css is code duplication. > For now I've included bootstrap.custom.css in ui/libs/theme/base/ = > folder while I still need some old files from ui/css/ for reference = > and compatibility with screens that I haven=E2=80=99t worked yet. Once I = > remove the unused CSS files in theme-default I'm planning to put = > bootstrap.custom.css there. > For the JS files: Bootstrap source has a single JS file for each = > component / widget. Using bower and gulp we can reference only the = > components that we have used and compile a minified version. For now = > I'm importing the full package but I think we won't need all of them. > vendors.js is basically es5-shim, json2 and base64 minified in one = > file. I'll send another patch removing typeahead.js and bag.js that = > were also included but we don't need them anymore. > The whole idea of using Bower and Gulp is to optimize, minify and put = > all the files ready to production in one single place. I don't like that "one sinlge place" because of the license issues. We need to properly identify which files are imported from other = projects and properly point in Kimchi COPYING file. Because that, I want to have a specific directory for each imported code. Is there a way to configure Bower/Gulp to do that instead of having one = single directory to all dependencies? > We also need to update the COPYING file according to those changes. > All bower packages must have a License file but since they have = > different format, I would have to manually copy them in the same = > folder or append in the minified version. > As we have discussed in other mails / chat, It would be nice to = > include this workflow and reference these dependencies (node, gulp, = > bower) in the repository so in the future we separate UI code and = > development from production environment. In other words, if we want to = > update a JS file, it would be required to pass the validation tests by = > JSlint task in Gulp; If we have to fix a CSS issue, it would have to = > be done in the Sass file, then compiled and then minified. This would = > ensure code quality and that the UI dependencies are always using the = > correct versions. > So, should I change the folder structure and copy the license files or = > keep this way and once I complete the new-ui integration add the ui = > sources as well as the dependencies? I'd say to change the folder structure to have the imported code = separated by project to avoid legal issues. And if needed we can change = it later to use Bower/Gulp as you are already using. > > 8 files changed, 34649 insertions(+) > > create mode 100644 ui/libs/bootstrap.js > > create mode 100644 ui/libs/jquery-ui.js > > create mode 100644 ui/libs/modernizr.js > > create mode 100755 ui/libs/themes/base/bootstrap.custom.css > > create mode 100644 ui/libs/themes/base/jquery-ui.custom.css > > create mode 100644 ui/libs/vendor.js > > create mode 100644 ui/pages/browserconfig.xml > > create mode 100644 ui/pages/manifest.json > > > > > _______________________________________________ > Kimchi-devel mailing list > Kimchi-devel(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/kimchi-devel --===============9173340434375884773== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGh0bWw+CiAgPGhlYWQ+CiAgICA8bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2lu ZG93cy0xMjUyIgogICAgICBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiPgogIDwvaGVhZD4KICA8 Ym9keSBiZ2NvbG9yPSIjRkZGRkZGIiB0ZXh0PSIjMDAwMDAwIj4KICAgIDxicj4KICAgIDxicj4K ICAgIDxkaXYgY2xhc3M9Im1vei1jaXRlLXByZWZpeCI+T24gMTYvMDkvMjAxNSAxNjowNSwgU2Ft dWVsIEhlbnJpcXVlIERlCiAgICAgIE9saXZlaXJhIEd1aW1hcmFlcyB3cm90ZTo8YnI+CiAgICA8 L2Rpdj4KICAgIDxibG9ja3F1b3RlCiAgICAgIGNpdGU9Im1pZDpiZTgxMTY5NGQ0YWU0MDEwOGE2 YzA2ZjcyNWNmMTM1NEBzZXJ2MDMxLmNvcnAuZWxkb3JhZG8ub3JnLmJyIgogICAgICB0eXBlPSJj aXRlIj4KICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0 L2h0bWw7CiAgICAgICAgY2hhcnNldD13aW5kb3dzLTEyNTIiPgogICAgICA8bWV0YSBuYW1lPSJH ZW5lcmF0b3IiIGNvbnRlbnQ9Ik1pY3Jvc29mdCBFeGNoYW5nZSBTZXJ2ZXIiPgogICAgICA8IS0t IGNvbnZlcnRlZCBmcm9tIHJ0ZiAtLT4KICAgICAgPHN0eWxlPjwhLS0gLkVtYWlsUXVvdGUgeyBt YXJnaW4tbGVmdDogMXB0OyBwYWRkaW5nLWxlZnQ6IDRwdDsgYm9yZGVyLWxlZnQ6ICM4MDAwMDAg MnB4IHNvbGlkOyB9IC0tPjwvc3R5bGU+CiAgICAgIDxmb250IHNpemU9IjIiIGZhY2U9IkNhbGli cmkiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTFwdDsiPgogICAgICAgICAgPGRpdj6gPC9kaXY+ CiAgICAgICAgICA8ZGl2PqA8L2Rpdj4KICAgICAgICAgIDxkaXY+LS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS08YnI+CiAgICAgICAgICAgIEZyb206IDxhIGNsYXNzPSJtb3otdHh0LWxpbmstYWJi cmV2aWF0ZWQiIGhyZWY9Im1haWx0bzpraW1jaGktZGV2ZWwtYm91bmNlc0BvdmlydC5vcmciPmtp bWNoaS1kZXZlbC1ib3VuY2VzQG92aXJ0Lm9yZzwvYT4gWzxhCiAgICAgICAgICAgICAgbW96LWRv LW5vdC1zZW5kPSJ0cnVlIgogICAgICAgICAgICAgIGhyZWY9Im1haWx0bzpraW1jaGktZGV2ZWwt Ym91bmNlc0BvdmlydC5vcmciPm1haWx0bzpraW1jaGktZGV2ZWwtYm91bmNlc0BvdmlydC5vcmc8 L2E+XQogICAgICAgICAgICBPbiBCZWhhbGYgT2YgQWxpbmUgTWFuZXJhPGJyPgogICAgICAgICAg ICBTZW50OiBxdWFydGEtZmVpcmEsIDE2IGRlIHNldGVtYnJvIGRlIDIwMTUgMTM6MDk8YnI+CiAg ICAgICAgICAgIFRvOiA8YSBjbGFzcz0ibW96LXR4dC1saW5rLWFiYnJldmlhdGVkIiBocmVmPSJt YWlsdG86c2d1aW1hcmFlczk0M0BnbWFpbC5jb20iPnNndWltYXJhZXM5NDNAZ21haWwuY29tPC9h PjsgS2ltY2hpIERldmVsCiAgICAgICAgICAgIDxhIGNsYXNzPSJtb3otdHh0LWxpbmstcmZjMjM5 NkUiIGhyZWY9Im1haWx0bzpraW1jaGktZGV2ZWxAb3ZpcnQub3JnIj4mbHQ7a2ltY2hpLWRldmVs QG92aXJ0Lm9yZyZndDs8L2E+PGJyPgogICAgICAgICAgICBTdWJqZWN0OiBSZTogW0tpbWNoaS1k ZXZlbF0gW1BBVENIIDUvN10gW1dPS10gQWRkaW5nIG5ldy11aQogICAgICAgICAgICBsaWJyYXJp ZXMgYWZ0ZXIgbWVyZ2UgY29uZmxpY3Q8L2Rpdj4KICAgICAgICAgIDxkaXY+oDwvZGl2PgogICAg ICAgICAgPGRpdj6gPC9kaXY+CiAgICAgICAgICA8ZGl2PqA8L2Rpdj4KICAgICAgICAgIDxkaXY+ T24gMTUvMDkvMjAxNSAxNjo1NiwgPGEgbW96LWRvLW5vdC1zZW5kPSJ0cnVlIgogICAgICAgICAg ICAgIGhyZWY9Im1haWx0bzpzZ3VpbWFyYWVzOTQzQGdtYWlsLmNvbSI+c2d1aW1hcmFlczk0M0Bn bWFpbC5jb208L2E+CiAgICAgICAgICAgIHdyb3RlOjwvZGl2PgogICAgICAgICAgPGRpdj4mZ3Q7 IEZyb206IHNhbWhlbnJpICZsdDs8YSBtb3otZG8tbm90LXNlbmQ9InRydWUiCiAgICAgICAgICAg ICAgaHJlZj0ibWFpbHRvOnNhbXVlbC5ndWltYXJhZXNAZWxkb3JhZG8ub3JnLmJyIj5zYW11ZWwu Z3VpbWFyYWVzQGVsZG9yYWRvLm9yZy5icjwvYT4mZ3Q7PC9kaXY+CiAgICAgICAgICA8ZGl2PiZn dDs8L2Rpdj4KICAgICAgICAgIDxkaXY+Jmd0OyBBZGRpbmcgbmV3LXVpIGxpYnJhcmllcyBhZ2Fp biBhZnRlciBtZXJnZSBjb25mbGljdC48L2Rpdj4KICAgICAgICAgIDxkaXY+Jmd0OzwvZGl2Pgog ICAgICAgICAgPGRpdj4mZ3Q7IFNpZ25lZC1vZmYtYnk6IHNhbWhlbnJpICZsdDs8YQogICAgICAg ICAgICAgIG1vei1kby1ub3Qtc2VuZD0idHJ1ZSIKICAgICAgICAgICAgICBocmVmPSJtYWlsdG86 c2FtdWVsLmd1aW1hcmFlc0BlbGRvcmFkby5vcmcuYnIiPnNhbXVlbC5ndWltYXJhZXNAZWxkb3Jh ZG8ub3JnLmJyPC9hPiZndDs8L2Rpdj4KICAgICAgICAgIDxkaXY+Jmd0OyAtLS08L2Rpdj4KICAg ICAgICAgIDxkaXY+Jmd0O6CgIHVpL2xpYnMvYm9vdHN0cmFwLmpzoKCgoKCgoKCgoKCgoKCgoKCg oKAgfKAgMjM0NQogICAgICAgICAgICArKysrPC9kaXY+CiAgICAgICAgICA8ZGl2PiZndDugoCB1 aS9saWJzL2pxdWVyeS11aS5qc6CgoKCgoKCgoKCgoKCgoKCgoKCgIHwgMTY2MTcKICAgICAgICAg ICAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKys8L2Rpdj4KICAgICAgICAgIDxkaXY+oDwv ZGl2PgogICAgICAgICAgPGRpdj4mZ3Q7oKAgdWkvbGlicy9tb2Rlcm5penIuanOgoKCgoKCgoKCg oKCgoKCgoKCgoCB8oCAxNDA2CiAgICAgICAgICAgICsrKzwvZGl2PgogICAgICAgICAgPGRpdj6g PC9kaXY+CiAgICAgICAgICA8ZGl2PklzIHRoaXMgZmlsZSBpbXBvcnRlZCBmcm9tIHNvbWV3aGVy ZT8gRnJvbSB3aGljaCBwcm9qZWN0PzwvZGl2PgogICAgICAgICAgPGRpdj6gPC9kaXY+CiAgICAg ICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRF NzkiPlRMO0RSOwogICAgICAgICAgICAgIC0galF1ZXJ5LVVJIHdhcyBhbHJlYWR5IGluIEtpbWNo aSwgQm9vdHN0cmFwIGlzIG5lY2Vzc2FyeQogICAgICAgICAgICAgIGZvciB0aGUgbmV3LXVpIHdp ZGdldHMgYW5kIG1vZGVybml6ciBpcyB1c2VkIHRvIGRldGVjdAogICAgICAgICAgICAgIGJyb3dz ZXIgZmVhdHVyZXMuIFRoZXkgYXJlIGFsbCBpbiB0aGlzIHN0cnVjdHVyZSBiZWNhdXNlCiAgICAg ICAgICAgICAgdGhhdCdzIHRoZSB3YXkgR3VscCBhbmQKICAgICAgICAgICAgICBCb3dlciBtYW5h Z2VzIHRoZW0uPC9mb250PjwvZGl2PgogICAgICAgICAgPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0 OjM1LjRwdDsiPjxmb250IGNvbG9yPSIjMUY0RTc5Ij6gPC9mb250PjwvZGl2PgogICAgICAgICAg PGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjM1LjRwdDsiPjxmb250IGNvbG9yPSIjMUY0RTc5Ij5T b21lCiAgICAgICAgICAgICAgYmFja2dyb3VuZDogVGhlc2UgZmlsZXMgYXJlIHJlYWR5IGZvciCT cHJvZHVjdGlvbpQsIEkKICAgICAgICAgICAgICBjcmVhdGUgYW5kIGVkaXQgdGhlIENTUyAmYW1w OyBKUyBmaWxlcyBpbiBhIHNlcGFyYXRlCiAgICAgICAgICAgICAgcHJvamVjdCBtYW5hZ2VkIGJ5 IHRoZXNlIGF1dG9tYXRpb24gdG9vbHMgcnVubmluZyBpbgogICAgICAgICAgICAgIE5vZGVKUyAo PGEgbW96LWRvLW5vdC1zZW5kPSJ0cnVlIgogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9u b2RlanMub3JnL2VuLyI+PHU+aHR0cHM6Ly9ub2RlanMub3JnL2VuLzwvdT48L2E+KTo8L2ZvbnQ+ PC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQg Y29sb3I9IiMxRjRFNzkiPqA8L2ZvbnQ+PC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRk aW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPlllb21hbgogICAgICAgICAg ICAgIC0gPGEgbW96LWRvLW5vdC1zZW5kPSJ0cnVlIiBocmVmPSJodHRwOi8veWVvbWFuLmlvLyI+ PHU+aHR0cDovL3llb21hbi5pby88L3U+PC9hPgogICAgICAgICAgICAgIC0gSHRtbDUgd2ViYXBw IGdlbmVyYXRvciB0aGF0IHNjYWZmb2xkcyBldmVyeXRoaW5nIHRoYXQgaXMKICAgICAgICAgICAg ICBuZWNlc3NhcnkgdG8gYnVpbGQgdGhlIG5ldy11aS48L2ZvbnQ+PC9kaXY+CiAgICAgICAgICA8 ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPlRo aXMKICAgICAgICAgICAgICB3ZWJhcHAgZ2VuZXJhdG9yIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcg dG9vbHM6PC9mb250PjwvZGl2PgogICAgICAgICAgPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjM1 LjRwdDsiPjxmb250IGNvbG9yPSIjMUY0RTc5Ij6gPC9mb250PjwvZGl2PgogICAgICAgICAgPGRp diBzdHlsZT0icGFkZGluZy1sZWZ0OjcwLjhwdDsiPjxmb250IGNvbG9yPSIjMUY0RTc5Ij5hKQog ICAgICAgICAgICAgIEJvd2VyIC0gPGEgbW96LWRvLW5vdC1zZW5kPSJ0cnVlIiBocmVmPSJodHRw Oi8vYm93ZXIuaW8vIj48dT5odHRwOi8vYm93ZXIuaW8vPC91PjwvYT4KICAgICAgICAgICAgICAt IEEgcGFja2FnZSBtYW5hZ2VyIGZvciB3ZWIgYXBwczwvZm9udD48L2Rpdj4KICAgICAgICAgIDxk aXYgc3R5bGU9InBhZGRpbmctbGVmdDo3MC44cHQ7Ij48Zm9udCBjb2xvcj0iIzFGNEU3OSI+YikK ICAgICAgICAgICAgICBMaWJzYXNzIC0gPGEgbW96LWRvLW5vdC1zZW5kPSJ0cnVlIgogICAgICAg ICAgICAgICAgaHJlZj0iaHR0cDovL3Nhc3MtbGFuZy5jb20vIj48dT5odHRwOi8vc2Fzcy1sYW5n LmNvbS88L3U+PC9hPgogICAgICAgICAgICAgIC0gPGEgbW96LWRvLW5vdC1zZW5kPSJ0cnVlIgog ICAgICAgICAgICAgICAgaHJlZj0iaHR0cDovL3Nhc3MtbGFuZy5jb20vbGlic2FzcyI+PHU+aHR0 cDovL3Nhc3MtbGFuZy5jb20vbGlic2FzczwvdT48L2E+CiAgICAgICAgICAgICAgLSBBIENTUyBw cmUtcHJvY2Vzc29yPC9mb250PjwvZGl2PgogICAgICAgICAgPGRpdiBzdHlsZT0icGFkZGluZy1s ZWZ0OjcwLjhwdDsiPjxmb250IGNvbG9yPSIjMUY0RTc5Ij5jKQogICAgICAgICAgICAgIEd1bHAg SlMgLSA8YSBtb3otZG8tbm90LXNlbmQ9InRydWUiCiAgICAgICAgICAgICAgICBocmVmPSJodHRw Oi8vZ3VscGpzLmNvbS8iPjx1Pmh0dHA6Ly9ndWxwanMuY29tLzwvdT48L2E+CiAgICAgICAgICAg ICAgLSBBIHdvcmtmbG93IGF1dG9tYXRpb24gdG9vbCB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvcgog ICAgICAgICAgICAgIHJ1bm5pbmcgYSBkZXZlbG9wbWVudCBzdGF0aWMgd2Vic2VydmVyIGFuZCBy dW4gdGFza3MgbGlrZQogICAgICAgICAgICAgIGNvbXBpbGluZyBzb3VyY2VzCiAgICAgICAgICAg ICAgZnJvbSBpbXBvcnRlZCBsaWJyYXJpZXMsIHRlc3RpbmcsIG1pbmlmeWluZyBhbmQgZXhwb3J0 aW5nCiAgICAgICAgICAgICAgYXNzZXRzLjwvZm9udD48L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5 bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9udCBjb2xvcj0iIzFGNEU3OSI+oDwvZm9udD48 L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9udCBj b2xvcj0iIzFGNEU3OSI+VGhpcwogICAgICAgICAgICAgIGdlbmVyYXRlZCB3ZWJhcHAgdGhhdCBJ IHVzZWQgYXMgImNhbnZhcyIgdG8gd3JpdGUgdGhlCiAgICAgICAgICAgICAgd2lkZ2V0cyBhbmQg bW9ja3VwcyBjYWxscyBCb3dlciBjb21tYW5kcyB0byBtYW5hZ2UgY29tbW9uCiAgICAgICAgICAg ICAgbGlicmFyaWVzIHN1Y2ggYXM6PC9mb250PjwvZGl2PgogICAgICAgICAgPGRpdiBzdHlsZT0i cGFkZGluZy1sZWZ0OjM1LjRwdDsiPjxmb250IGNvbG9yPSIjMUY0RTc5Ij6gPC9mb250PjwvZGl2 PgogICAgICAgICAgPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjcwLjhwdDsiPjxmb250IGNvbG9y PSIjMUY0RTc5Ij4qalF1ZXJ5CiAgICAgICAgICAgICAgKHdhcyBhbHJlYWR5IG1hbnVhbGx5IGlu Y2x1ZGVkIGluIEtpbWNoaSk8L2ZvbnQ+PC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRk aW5nLWxlZnQ6NzAuOHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPipqUXVlcnkKICAgICAgICAg ICAgICBVSSAoc2FtZSBhcyBhYm92ZSk8L2ZvbnQ+PC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxl PSJwYWRkaW5nLWxlZnQ6NzAuOHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPipqUXVlcnkKICAg ICAgICAgICAgICBVSSBpMThuIHBsdWdpbiAoc2FtZSBhcyBhYm92ZSk8L2ZvbnQ+PC9kaXY+CiAg ICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6NzAuOHB0OyI+PGZvbnQgY29sb3I9IiMx RjRFNzkiPipUd2l0dGVyCiAgICAgICAgICAgICAgQm9vdHN0cmFwIChTYXNzIHZlcnNpb24pIC0g PGEgbW96LWRvLW5vdC1zZW5kPSJ0cnVlIgogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9n aXRodWIuY29tL3R3YnMvYm9vdHN0cmFwLXNhc3MiPjx1Pmh0dHBzOi8vZ2l0aHViLmNvbS90d2Jz L2Jvb3RzdHJhcC1zYXNzPC91PjwvYT4KICAgICAgICAgICAgICAtIFJlcXVpcmVzIGxpYnNhc3Mg dG8gYnVpbGQ8L2ZvbnQ+PC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6 NzAuOHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPipNb2Rlcm5penIKICAgICAgICAgICAgICAt IDxhIG1vei1kby1ub3Qtc2VuZD0idHJ1ZSIgaHJlZj0iaHR0cHM6Ly9tb2Rlcm5penIuY29tLyI+ PHU+aHR0cHM6Ly9tb2Rlcm5penIuY29tLzwvdT48L2E+CiAgICAgICAgICAgICAgLSAoTUlUIExp Y2Vuc2UpIEEgSlMgbGlicmFyeSB0aGF0IGRldGVjdHMgYWxsIHRoZQogICAgICAgICAgICAgIHN1 cHBvcnRlZCBmZWF0dXJlcyBpbiBhIGJyb3dzZXIgYW5kIHdyYXBzIGEgY3NzIGNsYXNzIGluCiAg ICAgICAgICAgICAgdGhlICZsdDtodG1sJmd0OyB0YWcuCiAgICAgICAgICAgICAgVGhpcyBpcyBt dWNoIGJldHRlciB0aGFuIGRvIGEgc2ltcGxlIGJyb3dzZXIgdmVyc2lvbiBjaGVjawogICAgICAg ICAgICAgIHRoYXQgY2FuIGxlYWQgdG8gZmFsc2Ugb3IgaW5jb3JyZWN0IHVzZXIgYWdlbnQgc3Ry aW5ncy48L2ZvbnQ+PC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6NzAu OHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPipFczUtc2hpbQogICAgICAgICAgICAgIC0gPGEg bW96LWRvLW5vdC1zZW5kPSJ0cnVlIgogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRo dWIuY29tL2VzLXNoaW1zL2VzNS1zaGltIj48dT5odHRwczovL2dpdGh1Yi5jb20vZXMtc2hpbXMv ZXM1LXNoaW08L3U+PC9hPgogICAgICAgICAgICAgIC0gTGlicmFyeSB0aGF0IGNvbnRhaW4gRWNt YVNjcmlwdDUgbWV0aG9kcyAoQ2hyb21lIGFuZAogICAgICAgICAgICAgIEZpcmVmb3ggZG9uJ3Qg bmVlZCB0aGlzLCBTYWZhcmkgZG9lcyk8L2ZvbnQ+PC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxl PSJwYWRkaW5nLWxlZnQ6NzAuOHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPipKc29uMgogICAg ICAgICAgICAgIC0gSlNPTiBlbmNvZGVycy9kZWNvZGVycyBmb3Igb2xkIGJyb3dzZXJzIChDaHJv bWUgYW5kCiAgICAgICAgICAgICAgRmlyZWZveCBkb24ndCBuZWVkIHRoaXMsIFNhZmFyaSBkb2Vz KTwvZm9udD48L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDo3MC44cHQ7 Ij48Zm9udCBjb2xvcj0iIzFGNEU3OSI+KkJhc2U2NAogICAgICAgICAgICAgIC0gPGEgbW96LWRv LW5vdC1zZW5kPSJ0cnVlIgogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29t L21hdGhpYXNieW5lbnMvYmFzZTY0Ij48dT5odHRwczovL2dpdGh1Yi5jb20vbWF0aGlhc2J5bmVu cy9iYXNlNjQ8L3U+PC9hPgogICAgICAgICAgICAgIC0gSlMgQmFzZTY0IGVuY29kZXIvZGVjb2Rl cjwvZm9udD48L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDo3MC44cHQ7 Ij48Zm9udCBjb2xvcj0iIzFGNEU3OSI+KkNoYWkKICAgICAgICAgICAgICBBc3NlcnRpb24gTGli cmFyeSAtIDxhIG1vei1kby1ub3Qtc2VuZD0idHJ1ZSIKICAgICAgICAgICAgICAgIGhyZWY9Imh0 dHA6Ly9jaGFpanMuY29tLyI+PHU+aHR0cDovL2NoYWlqcy5jb20vPC91PjwvYT4KICAgICAgICAg ICAgICAoZGV2IGRlcGVuZGVuY3kpPC9mb250PjwvZGl2PgogICAgICAgICAgPGRpdiBzdHlsZT0i cGFkZGluZy1sZWZ0OjcwLjhwdDsiPjxmb250IGNvbG9yPSIjMUY0RTc5Ij4qTW9jaGEKICAgICAg ICAgICAgICBqcyAtIDxhIG1vei1kby1ub3Qtc2VuZD0idHJ1ZSIKICAgICAgICAgICAgICAgIGhy ZWY9Imh0dHBzOi8vbW9jaGFqcy5vcmcvIj48dT5odHRwczovL21vY2hhanMub3JnLzwvdT48L2E+ CiAgICAgICAgICAgICAgLSAoZGV2IGRlcGVuZGVuY3kpPC9mb250PjwvZGl2PgogICAgICAgICAg PGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjcwLjhwdDsiPjxmb250IGNvbG9yPSIjMUY0RTc5Ij4q Rm9udEF3ZXNvbWUKICAgICAgICAgICAgICAtIDxhIG1vei1kby1ub3Qtc2VuZD0idHJ1ZSIgaHJl Zj0iaHR0cDovL2ZvbnRhd2Vzb21lLmlvIj48dT5odHRwOi8vZm9udGF3ZXNvbWUuaW88L3U+PC9h PgogICAgICAgICAgICAgIC0gKEltcG9ydGVkIGp1c3QgdGhlIFNhc3MgZmlsZXMgc2luY2Ugd2Ug YXJlIGhhbmRsaW5nIGZvbnQKICAgICAgICAgICAgICBmaWxlcyBpbiBhIGRpZmZlcmVudCB3YXkp PC9mb250PjwvZGl2PgogICAgICAgICAgPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjM1LjRwdDsi Pjxmb250IGNvbG9yPSIjMUY0RTc5Ij6gPC9mb250PjwvZGl2PgogICAgICAgICAgPGRpdiBzdHls ZT0icGFkZGluZy1sZWZ0OjM1LjRwdDsiPjxmb250IGNvbG9yPSIjMUY0RTc5Ij5BcyBhCiAgICAg ICAgICAgICAgYmVzdCBwcmFjdGljZSBpbiBmcm9udC1lbmQgZGV2ZWxvcG1lbnQsIHdlIHVzZSBC b3dlciBkbwogICAgICAgICAgICAgIG1hbmFnZSB0aGUgZXh0ZXJuYWwvdmVuZG9yIGxpYnJhcmll cyBsaWtlIHRoZSBvbmVzIGxpc3RlZAogICAgICAgICAgICAgIGFib3ZlLiBJbiB0aGUgbWFpbiBt b2NrdXAgZm9sZGVyIHRoZXJlJ3MgYSBqc29uIGZpbGUgdGhhdAogICAgICAgICAgICAgIGhhbmRs ZXMgYWxsIHRoZSBkZXBlbmRlbmNpZXMKICAgICAgICAgICAgICBhbmQgdGhlaXIgY29ycmVjdCB2 ZXJzaW9uczo8L2ZvbnQ+PC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6 MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPqA8L2ZvbnQ+PC9kaXY+CiAgICAgICAgICA8 ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiCiAg ICAgICAgICAgICAgZmFjZT0iQ291cmllciBOZXciPns8L2ZvbnQ+PC9kaXY+CiAgICAgICAgICA8 ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiCiAg ICAgICAgICAgICAgZmFjZT0iQ291cmllciBOZXciPqAgIm5hbWUiOiAid29rIiw8L2ZvbnQ+PC9k aXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29s b3I9IiMxRjRFNzkiCiAgICAgICAgICAgICAgZmFjZT0iQ291cmllciBOZXciPqAgInByaXZhdGUi OiB0cnVlLDwvZm9udD48L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDoz NS40cHQ7Ij48Zm9udCBjb2xvcj0iIzFGNEU3OSIKICAgICAgICAgICAgICBmYWNlPSJDb3VyaWVy IE5ldyI+oCAiZGVwZW5kZW5jaWVzIjogezwvZm9udD48L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5 bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9udCBjb2xvcj0iIzFGNEU3OSIKICAgICAgICAg ICAgICBmYWNlPSJDb3VyaWVyIE5ldyI+oKCgICJtb2Rlcm5penIiOiAifjIuOC4xIiw8L2ZvbnQ+ PC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQg Y29sb3I9IiMxRjRFNzkiCiAgICAgICAgICAgICAgZmFjZT0iQ291cmllciBOZXciPqCgoCAiYm9v dHN0cmFwLXNhc3Mtb2ZmaWNpYWwiOgogICAgICAgICAgICAgICJ+My4zLjUiLDwvZm9udD48L2Rp dj4KICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9udCBjb2xv cj0iIzFGNEU3OSIKICAgICAgICAgICAgICBmYWNlPSJDb3VyaWVyIE5ldyI+oKCgICJib290c3Ry YXAtc2VsZWN0LXNhc3MiOiAifjEuNi4zIiw8L2ZvbnQ+PC9kaXY+CiAgICAgICAgICA8ZGl2IHN0 eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiCiAgICAgICAg ICAgICAgZmFjZT0iQ291cmllciBOZXciPqCgoCAiY29tcGFzcy1taXhpbnMiOiAifjEuMC4yIiw8 L2ZvbnQ+PC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+ PGZvbnQgY29sb3I9IiMxRjRFNzkiCiAgICAgICAgICAgICAgZmFjZT0iQ291cmllciBOZXciPqCg oCAiZXM1LXNoaW0iOiAifjQuMS4xMCIsPC9mb250PjwvZGl2PgogICAgICAgICAgPGRpdiBzdHls ZT0icGFkZGluZy1sZWZ0OjM1LjRwdDsiPjxmb250IGNvbG9yPSIjMUY0RTc5IgogICAgICAgICAg ICAgIGZhY2U9IkNvdXJpZXIgTmV3Ij6goKAgImpzb24yIjogIioiLDwvZm9udD48L2Rpdj4KICAg ICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9udCBjb2xvcj0iIzFG NEU3OSIKICAgICAgICAgICAgICBmYWNlPSJDb3VyaWVyIE5ldyI+oKCgICJiYXNlNjQiOiAifjAu My4wIiw8L2ZvbnQ+PC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUu NHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiCiAgICAgICAgICAgICAgZmFjZT0iQ291cmllciBO ZXciPqCgoCAianF1ZXJ5IjogIn4xLjExLjMiLDwvZm9udD48L2Rpdj4KICAgICAgICAgIDxkaXYg c3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9udCBjb2xvcj0iIzFGNEU3OSIKICAgICAg ICAgICAgICBmYWNlPSJDb3VyaWVyIE5ldyI+oKCgICJqcXVlcnktdWkiOiAifjEuMTEuNCIsPC9m b250PjwvZGl2PgogICAgICAgICAgPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjM1LjRwdDsiPjxm b250IGNvbG9yPSIjMUY0RTc5IgogICAgICAgICAgICAgIGZhY2U9IkNvdXJpZXIgTmV3Ij6goKAg ImpxdWVyeS1pMThuIjogIn4xLjEuMSIsPC9mb250PjwvZGl2PgogICAgICAgICAgPGRpdiBzdHls ZT0icGFkZGluZy1sZWZ0OjM1LjRwdDsiPjxmb250IGNvbG9yPSIjMUY0RTc5IgogICAgICAgICAg ICAgIGZhY2U9IkNvdXJpZXIgTmV3Ij6goKAgImZvbnQtYXdlc29tZSI6ICJ+NC40LjAiPC9mb250 PjwvZGl2PgogICAgICAgICAgPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjM1LjRwdDsiPjxmb250 IGNvbG9yPSIjMUY0RTc5IgogICAgICAgICAgICAgIGZhY2U9IkNvdXJpZXIgTmV3Ij6gIH0sPC9m b250PjwvZGl2PgogICAgICAgICAgPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjM1LjRwdDsiPjxm b250IGNvbG9yPSIjMUY0RTc5IgogICAgICAgICAgICAgIGZhY2U9IkNvdXJpZXIgTmV3Ij6gICJv dmVycmlkZXMiOiB7PC9mb250PjwvZGl2PgogICAgICAgICAgPGRpdiBzdHlsZT0icGFkZGluZy1s ZWZ0OjM1LjRwdDsiPjxmb250IGNvbG9yPSIjMUY0RTc5IgogICAgICAgICAgICAgIGZhY2U9IkNv dXJpZXIgTmV3Ij6goKAgImJvb3RzdHJhcC1zYXNzLW9mZmljaWFsIjogezwvZm9udD48L2Rpdj4K ICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9udCBjb2xvcj0i IzFGNEU3OSIKICAgICAgICAgICAgICBmYWNlPSJDb3VyaWVyIE5ldyI+oKCgoKAgIm1haW4iOiBb PC9mb250PjwvZGl2PgogICAgICAgICAgPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjM1LjRwdDsi Pjxmb250IGNvbG9yPSIjMUY0RTc5IgogICAgICAgICAgICAgIGZhY2U9IkNvdXJpZXIgTmV3Ij6g oKCgoKCgCiAgICAgICAgICAgICAgImFzc2V0cy9zdHlsZXNoZWV0cy9fYm9vdHN0cmFwLnNjc3Mi LDwvZm9udD48L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7 Ij48Zm9udCBjb2xvcj0iIzFGNEU3OSIKICAgICAgICAgICAgICBmYWNlPSJDb3VyaWVyIE5ldyI+ oKCgoKCgoAogICAgICAgICAgICAgICJhc3NldHMvamF2YXNjcmlwdHMvYm9vdHN0cmFwLmpzIjwv Zm9udD48L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48 Zm9udCBjb2xvcj0iIzFGNEU3OSIKICAgICAgICAgICAgICBmYWNlPSJDb3VyaWVyIE5ldyI+oKCg oKAgXTwvZm9udD48L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40 cHQ7Ij48Zm9udCBjb2xvcj0iIzFGNEU3OSIKICAgICAgICAgICAgICBmYWNlPSJDb3VyaWVyIE5l dyI+oKCgIH08L2ZvbnQ+PC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6 MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiCiAgICAgICAgICAgICAgZmFjZT0iQ291cmll ciBOZXciPqAgfSw8L2ZvbnQ+PC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nLWxl ZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiCiAgICAgICAgICAgICAgZmFjZT0iQ291 cmllciBOZXciPqAgImRldkRlcGVuZGVuY2llcyI6IHs8L2ZvbnQ+PC9kaXY+CiAgICAgICAgICA8 ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiCiAg ICAgICAgICAgICAgZmFjZT0iQ291cmllciBOZXciPqCgoCAiY2hhaSI6ICJ+My4yLjAiLDwvZm9u dD48L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9u dCBjb2xvcj0iIzFGNEU3OSIKICAgICAgICAgICAgICBmYWNlPSJDb3VyaWVyIE5ldyI+oKCgICJt b2NoYSI6ICJ+Mi4yLjUiPC9mb250PjwvZGl2PgogICAgICAgICAgPGRpdiBzdHlsZT0icGFkZGlu Zy1sZWZ0OjM1LjRwdDsiPjxmb250IGNvbG9yPSIjMUY0RTc5IgogICAgICAgICAgICAgIGZhY2U9 IkNvdXJpZXIgTmV3Ij6gIH08L2ZvbnQ+PC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRk aW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiCiAgICAgICAgICAgICAgZmFj ZT0iQ291cmllciBOZXciPn08L2ZvbnQ+PC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRk aW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPqA8L2ZvbnQ+PC9kaXY+CiAg ICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMx RjRFNzkiPk5vdGUKICAgICAgICAgICAgICB0aGF0IGNoYWkgYW5kIG1vY2hhIGFyZSBkZXYtZGVw ZW5kZW5jaWVzIHRoYXQgYXJlIHJlcXVpcmVkCiAgICAgICAgICAgICAgYnkgR3VscCBzbyB0aGV5 IHdlcmUgbm90IGluY2x1ZGVkIGluIHRoZSBjb21waWxlZC9leHBvcnRlZAogICAgICAgICAgICAg IGFzc2V0cy4gQm93ZXIgY3JlYXRlcyBhIG5vbi12ZXJzaW9uZWQgZm9sZGVyIGNhbGxlZAogICAg ICAgICAgICAgIGJvd2VyX2NvbXBvbmVudHMgYW5kIHN0b3JlCiAgICAgICAgICAgICAgYWxsIHRo ZSBsaWJyYXJpZXMgb3JpZ2luYWwgc291cmNlcyBhbmQgYXNzZXRzIGluIHRoZXJlIChpdAogICAg ICAgICAgICAgIGJhc2ljYWxseSBkb2VzIGEgZ2l0IGNsb25lKS48L2ZvbnQ+PC9kaXY+CiAgICAg ICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRF NzkiPqA8L2ZvbnQ+PC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUu NHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPlRoZW4gSQogICAgICAgICAgICAgIHVzZSBHdWxw LkpTIHRvIGFjdCBhcyBhIGRldmVsb3BtZW50IHdlYnNlcnZlciB0aGF0IHJ1bnMKICAgICAgICAg ICAgICBhbGwgdGhlIGZyb250LWVuZCB0YXNrcyB0aGF0IEkgaGF2ZSBwcm9ncmFtbWVkIG9yIHRo YXQKICAgICAgICAgICAgICBoYXZlIGJlZW4gaW5jbHVkZWQgYnkgWWVvbWFuIGdlbmVyYXRvciBz dWNoIGFzIEphdmFTY3JpcHQKICAgICAgICAgICAgICB2YWxpZGF0aW9uLCBTYXNzIGNvbXBpbGF0 aW9uLAogICAgICAgICAgICAgIENTUyBhbmQgSlMgbWluaWZpY2F0aW9uLiBXaGVuIHRoaXMgc2Vy dmVyIGlzIHJ1bm5pbmcsIGl0CiAgICAgICAgICAgICAgcG9pbnRzIGRpcmVjdGx5IHRvIHRoZSBv cmlnaW5hbCBzb3VyY2VzIGluCiAgICAgICAgICAgICAgYm93ZXJfY29tcG9uZW50cyBzbyBJIGNh biBtYWtlIGNoYW5nZXMgb24gdGhlIGZseSBpbnN0ZWFkCiAgICAgICAgICAgICAgb2YgaGF2aW5n IHRvIHN0b3Agc2VydmVyIC8gcmVjb21waWxlIHNvdXJjZXMgLyBzdGFydAogICAgICAgICAgICAg IHNlcnZlciBhZ2Fpbi4gT25jZSBJJ20gZG9uZSBkZXZlbG9waW5nIHRoZXNlIGFzc2V0cywKICAg ICAgICAgICAgICBJIHJ1biBhIHRhc2sgdG8gImJ1aWxkIiBhbmQgb3B0aW1pemUgdGhlc2UgZmls ZXMgYW5kCiAgICAgICAgICAgICAgZXhwb3J0IHRoZW0gdG8gS2ltY2hpL1dvayBwcm9qZWN0Ljwv Zm9udD48L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48 Zm9udCBjb2xvcj0iIzFGNEU3OSI+oDwvZm9udD48L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5bGU9 InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9udCBjb2xvcj0iIzFGNEU3OSI+VGhlCiAgICAgICAg ICAgICAgc2FzcyBmaWxlcyByZWZlcmVuY2VzIHRoZSBvcmlnaW5hbCBCb290c3RyYXAgc291cmNl IGluc2lkZQogICAgICAgICAgICAgIGJvd2VyX2NvbXBvbmVudHMgZm9sZGVyLiBPbmNlIEkgY29t cGlsZSBvdXIgc2FzcyBmaWxlcywKICAgICAgICAgICAgICBHdWxwIGF1dG9tYXRpY2FsbHkgbWVy Z2VzIHRoZSByZWZlcmVuY2VkIGZpbGVzIHdpdGggdGhlbS4KICAgICAgICAgICAgICBUaGUgc2Ft ZSBnb2VzIGZvciBqUXVlcnktVUkKICAgICAgICAgICAgICB0aGVtZSBhbmQgZm9udC1hd2Vzb21l ICh3aGljaCBJIHByb2dyYW1tYXRpY2FsbHkgcmVtb3ZlZAogICAgICAgICAgICAgIHRoZSAqLnR0 ZiBhbmQgKi5zdmcgZmlsZXMpLjwvZm9udD48L2Rpdj4KICAgICAgICAgIDxkaXY+oDwvZGl2Pgog ICAgICAgICAgPGRpdj4mZ3Q7oKAgdWkvbGlicy90aGVtZXMvYmFzZS9ib290c3RyYXAuY3VzdG9t LmNzcyB8oCA4NTAyCiAgICAgICAgICAgICsrKysrKysrKysrKysrKzwvZGl2PgogICAgICAgICAg PGRpdj4mZ3Q7oKAgdWkvbGlicy90aGVtZXMvYmFzZS9qcXVlcnktdWkuY3VzdG9tLmNzcyB8oKAg MjAzICs8L2Rpdj4KICAgICAgICAgIDxkaXY+oDwvZGl2PgogICAgICAgICAgPGRpdj4mZ3Q7oKAg dWkvbGlicy92ZW5kb3IuanOgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCB8oCA1NTIzCiAgICAgICAg ICAgICsrKysrKysrKys8L2Rpdj4KICAgICAgICAgIDxkaXY+Jmd0O6CgIHVpL3BhZ2VzL2Jyb3dz ZXJjb25maWcueG1soKCgoKCgoKCgoKCgoKAgfKCgoCAxMiArPC9kaXY+CiAgICAgICAgICA8ZGl2 PiZndDugoCB1aS9wYWdlcy9tYW5pZmVzdC5qc29uoKCgoKCgoKCgoKCgoKCgoKCgIHygoKAgNDEg KzwvZGl2PgogICAgICAgICAgPGRpdj6gPC9kaXY+CiAgICAgICAgICA8ZGl2PlRoZSBzYW1lIEkg YXNrZWQgYmVmb3JlLjwvZGl2PgogICAgICAgICAgPGRpdj6gPC9kaXY+CiAgICAgICAgICA8ZGl2 Pkl0IGlzIGJldHRlciB0byBncm91cCB0aGUgZmlsZXMgYWNjb3JkaW5nIHRvIGl0cyBwcm9qZWN0 CiAgICAgICAgICAgIGR1ZSBsaWNlbnNlIGlzc3Vlcy48L2Rpdj4KICAgICAgICAgIDxkaXY+oDwv ZGl2PgogICAgICAgICAgPGRpdj5FeGFtcGxlOjwvZGl2PgogICAgICAgICAgPGRpdj6gPC9kaXY+ CiAgICAgICAgICA8ZGl2PnVpL2xpYnMvYm9vdHN0cmFwLyA9Jmd0OyB0byBob2xkIGFsbCB0aGUg Ym9vdHN0cmFwIGZpbGVzCiAgICAgICAgICAgIHVpL2xpYnMvanF1ZXJ5LXVpL6AgPSZndDsgdG8g aG9sZCBhbGwgdGhlIGpxdWVyeS11aSBmaWxlczwvZGl2PgogICAgICAgICAgPGRpdj6gPC9kaXY+ CiAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9 IiMxRjRFNzkiPlRMOwogICAgICAgICAgICAgIERSOyBib3dlcnNjb25maWcueG1sIGFuZCBtYW5p ZmVzdC5qc29uIGFyZSBuZWNlc3NhcnkgZm9yCiAgICAgICAgICAgICAgQW5kcm9pZCBkcmF3ZXIg YW5kIFdpbmRvd3MgOC8xMCB0aWxlczsgdmVuZG9yLmpzIGlzCiAgICAgICAgICAgICAgZXM1LXNo aW0sIGpzb24yIGFuZCBiYXNlNjQgbWluaWZpZWQgaW4gb25lIHNpbmdsZSBmaWxlIGJ5CiAgICAg ICAgICAgICAgR3VscC4gQm9vdHN0cmFwLmN1c3RvbS5jc3MgaXMKICAgICAgICAgICAgICB3aGVy ZSBJJ20gcHV0dGluZyB0aGUgQ1NTIGZpbGVzIHRoYXQgSSdtIHJlbW92aW5nIGZvcm0KICAgICAg ICAgICAgICBjc3MvdGhlbWVzLWRlZmF1bHQgYW5kIGNvbnZlcnRpbmcvYWRhcHRpbmcgdG8gQm9v dHN0cmFwCiAgICAgICAgICAgICAgbWFya3VwL3dpZGdldHMgliB0aGlzIGlzoCB0aGUgbmV3LXVp IG1haW4gQ1NTLiBJIGtlcHQKICAgICAgICAgICAgICBzZXBhcmF0ZWQgZnJvbSBjc3MgZm9sZGVy IGJlY2F1c2UgdGhpcyBmaWxlIGhhcyB0byBiZQogICAgICAgICAgICAgIGxvYWRlZCBhZnRlciB0 aGUgb3RoZXIgY3NzIGZpbGVzIChkdWUKICAgICAgICAgICAgICB0byBob3cgY3NzIGNhc2NhZGlu ZyB3b3JrcykuPC9mb250PjwvZGl2PgogICAgICAgICAgPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0 OjM1LjRwdDsiPjxmb250IGNvbG9yPSIjMUY0RTc5Ij6gPC9mb250PjwvZGl2PgogICAgICAgICAg PGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjM1LjRwdDsiPjxmb250IGNvbG9yPSIjMUY0RTc5Ij5B cyBJCiAgICAgICAgICAgICAgd2FzIGV4cGxhaW5pbmcsIEd1bHAgbWVyZ2VzIHRoZSByZWZlcmVu Y2VkIGxpYnJhcmllcwogICAgICAgICAgICAgIGFzc2V0cywgc28gdGhlIG9yaWdpbmFsIEJvb3Rz dHJhcCBmaWxlcyBhcmUgY29tYmluZWQgd2l0aAogICAgICAgICAgICAgIHdoaWNoZXZlciBmaWxl IHRoYXQgaGFzIHJlZmVyZW5jZWQgdGhlbS4gVGhpcyBpcyBzb21ldGhpbmcKICAgICAgICAgICAg ICB0aGF0IHdlIGNhbiBjaGFuZ2UgYnV0IEkgZG9uJ3QKICAgICAgICAgICAgICB0aGluayBpdCBp cyBhIGdvb2QgaWRlYSB0byBrZWVwIHRoZSBvcmlnaW5hbCBCb290c3RyYXAgQ1NTCiAgICAgICAg ICAgICAgaW4gb25lIGZvbGRlciBhbmQgdGhlbiBsb2FkIG91ciBjdXN0b20gQ1NTIG92ZXIgaXQg YmVjYXVzZQogICAgICAgICAgICAgIGl0IGFscmVhZHkgaW5jbHVkZXMgY2xhc3NlcyB3aXRoIHRo ZSBzYW1lIHJ1bGVzIGFuZCBzb21lCiAgICAgICAgICAgICAgb2YgdGhlbSB3aXRoIHRoZSBzYW1l IHByb3BlcnRpZXMgYW5kIHZhbHVlcyBmcm9tCiAgICAgICAgICAgICAgQm9vdHN0cmFwLCBpLmUu IGluY2x1ZGluZyBCb290c3RyYXAKICAgICAgICAgICAgICBvcmlnaW5hbCBjc3MgaXMgY29kZSBk dXBsaWNhdGlvbi48L2ZvbnQ+PC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nLWxl ZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPqA8L2ZvbnQ+PC9kaXY+CiAgICAgICAg ICA8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzki PkZvcgogICAgICAgICAgICAgIG5vdyBJJ3ZlIGluY2x1ZGVkIGJvb3RzdHJhcC5jdXN0b20uY3Nz IGluCiAgICAgICAgICAgICAgdWkvbGlicy90aGVtZS9iYXNlLyBmb2xkZXIgd2hpbGUgSSBzdGls bCBuZWVkIHNvbWUgb2xkCiAgICAgICAgICAgICAgZmlsZXMgZnJvbSB1aS9jc3MvIGZvciByZWZl cmVuY2UgYW5kIGNvbXBhdGliaWxpdHkgd2l0aAogICAgICAgICAgICAgIHNjcmVlbnMgdGhhdCBJ IGhhdmVuknQgd29ya2VkIHlldC4gT25jZSBJIHJlbW92ZQogICAgICAgICAgICAgIHRoZSB1bnVz ZWQgQ1NTIGZpbGVzIGluIHRoZW1lLWRlZmF1bHQgSSdtIHBsYW5uaW5nIHRvIHB1dAogICAgICAg ICAgICAgIGJvb3RzdHJhcC5jdXN0b20uY3NzIHRoZXJlLjwvZm9udD48L2Rpdj4KICAgICAgICAg IDxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9udCBjb2xvcj0iIzFGNEU3OSI+ oDwvZm9udD48L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7 Ij48Zm9udCBjb2xvcj0iIzFGNEU3OSI+Rm9yCiAgICAgICAgICAgICAgdGhlIEpTIGZpbGVzOiBC b290c3RyYXAgc291cmNlIGhhcyBhIHNpbmdsZSBKUyBmaWxlIGZvcgogICAgICAgICAgICAgIGVh Y2ggY29tcG9uZW50IC8gd2lkZ2V0LiBVc2luZyBib3dlciBhbmQgZ3VscCB3ZSBjYW4KICAgICAg ICAgICAgICByZWZlcmVuY2Ugb25seSB0aGUgY29tcG9uZW50cyB0aGF0IHdlIGhhdmUgdXNlZCBh bmQKICAgICAgICAgICAgICBjb21waWxlIGEgbWluaWZpZWQgdmVyc2lvbi4gRm9yIG5vdwogICAg ICAgICAgICAgIEknbSBpbXBvcnRpbmcgdGhlIGZ1bGwgcGFja2FnZSBidXQgSSB0aGluayB3ZSB3 b24ndCBuZWVkCiAgICAgICAgICAgICAgYWxsIG9mIHRoZW0uPC9mb250PjwvZGl2PgogICAgICAg ICAgPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjM1LjRwdDsiPjxmb250IGNvbG9yPSIjMUY0RTc5 Ij6gPC9mb250PjwvZGl2PgogICAgICAgICAgPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjM1LjRw dDsiPjxmb250IGNvbG9yPSIjMUY0RTc5Ij52ZW5kb3JzLmpzCiAgICAgICAgICAgICAgaXMgYmFz aWNhbGx5IGVzNS1zaGltLCBqc29uMiBhbmQgYmFzZTY0IG1pbmlmaWVkIGluIG9uZQogICAgICAg ICAgICAgIGZpbGUuIEknbGwgc2VuZCBhbm90aGVyIHBhdGNoIHJlbW92aW5nIHR5cGVhaGVhZC5q cyBhbmQKICAgICAgICAgICAgICBiYWcuanMgdGhhdCB3ZXJlIGFsc28gaW5jbHVkZWQgYnV0IHdl IGRvbid0IG5lZWQgdGhlbQogICAgICAgICAgICAgIGFueW1vcmUuIDwvZm9udD48L2Rpdj4KICAg ICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9udCBjb2xvcj0iIzFG NEU3OSI+oDwvZm9udD48L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDoz NS40cHQ7Ij48Zm9udCBjb2xvcj0iIzFGNEU3OSI+VGhlCiAgICAgICAgICAgICAgd2hvbGUgaWRl YSBvZiB1c2luZyBCb3dlciBhbmQgR3VscCBpcyB0byBvcHRpbWl6ZSwgbWluaWZ5CiAgICAgICAg ICAgICAgYW5kIHB1dCBhbGwgdGhlIGZpbGVzIHJlYWR5IHRvIHByb2R1Y3Rpb24gaW4gb25lIHNp bmdsZQogICAgICAgICAgICAgIHBsYWNlLjwvZm9udD48L2Rpdj4KICAgICAgICA8L3NwYW4+PC9m b250PjwvYmxvY2txdW90ZT4KICAgIDxicj4KICAgIEkgZG9uJ3QgbGlrZSB0aGF0ICJvbmUgc2lu bGdlIHBsYWNlIiBiZWNhdXNlIG9mIHRoZSBsaWNlbnNlIGlzc3Vlcy48YnI+CiAgICBXZSBuZWVk IHRvIHByb3Blcmx5IGlkZW50aWZ5IHdoaWNoIGZpbGVzIGFyZSBpbXBvcnRlZCBmcm9tIG90aGVy CiAgICBwcm9qZWN0cyBhbmQgcHJvcGVybHkgcG9pbnQgaW4gS2ltY2hpIENPUFlJTkcgZmlsZS48 YnI+CiAgICA8YnI+CiAgICBCZWNhdXNlIHRoYXQsIEkgd2FudCB0byBoYXZlIGEgc3BlY2lmaWMg ZGlyZWN0b3J5IGZvciBlYWNoIGltcG9ydGVkCiAgICBjb2RlLiA8YnI+CiAgICA8YnI+CiAgICBJ cyB0aGVyZSBhIHdheSB0byBjb25maWd1cmUgQm93ZXIvR3VscCB0byBkbyB0aGF0IGluc3RlYWQg b2YgaGF2aW5nCiAgICBvbmUgc2luZ2xlIGRpcmVjdG9yeSB0byBhbGwgZGVwZW5kZW5jaWVzPzxi cj4KICAgIDxicj4KICAgIDxibG9ja3F1b3RlCiAgICAgIGNpdGU9Im1pZDpiZTgxMTY5NGQ0YWU0 MDEwOGE2YzA2ZjcyNWNmMTM1NEBzZXJ2MDMxLmNvcnAuZWxkb3JhZG8ub3JnLmJyIgogICAgICB0 eXBlPSJjaXRlIj48Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIj48c3BhbgogICAgICAgICAg c3R5bGU9ImZvbnQtc2l6ZToxMXB0OyI+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nLWxl ZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPqA8L2ZvbnQ+PC9kaXY+CiAgICAgICAg ICA8ZGl2PldlIGFsc28gbmVlZCB0byB1cGRhdGUgdGhlIENPUFlJTkcgZmlsZSBhY2NvcmRpbmcg dG8KICAgICAgICAgICAgdGhvc2UgY2hhbmdlcy48L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5bGU9 InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9udCBjb2xvcj0iIzFGNEU3OSI+oDwvZm9udD48L2Rp dj4KICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9udCBjb2xv cj0iIzFGNEU3OSI+QWxsCiAgICAgICAgICAgICAgYm93ZXIgcGFja2FnZXMgbXVzdCBoYXZlIGEg TGljZW5zZSBmaWxlIGJ1dCBzaW5jZSB0aGV5CiAgICAgICAgICAgICAgaGF2ZSBkaWZmZXJlbnQg Zm9ybWF0LCBJIHdvdWxkIGhhdmUgdG8gbWFudWFsbHkgY29weSB0aGVtCiAgICAgICAgICAgICAg aW4gdGhlIHNhbWUgZm9sZGVyIG9yIGFwcGVuZCBpbiB0aGUgbWluaWZpZWQgdmVyc2lvbi48L2Zv bnQ+PC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZv bnQgY29sb3I9IiMxRjRFNzkiPqA8L2ZvbnQ+PC9kaXY+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJw YWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPkFzIHdlCiAgICAgICAg ICAgICAgaGF2ZSBkaXNjdXNzZWQgaW4gb3RoZXIgbWFpbHMgLyBjaGF0LCBJdCB3b3VsZCBiZSBu aWNlIHRvCiAgICAgICAgICAgICAgaW5jbHVkZSB0aGlzIHdvcmtmbG93IGFuZCByZWZlcmVuY2Ug dGhlc2UgZGVwZW5kZW5jaWVzCiAgICAgICAgICAgICAgKG5vZGUsIGd1bHAsIGJvd2VyKSBpbiB0 aGUgcmVwb3NpdG9yeSBzbyBpbiB0aGUgZnV0dXJlIHdlCiAgICAgICAgICAgICAgc2VwYXJhdGUg VUkgY29kZSBhbmQgZGV2ZWxvcG1lbnQKICAgICAgICAgICAgICBmcm9tIHByb2R1Y3Rpb24gZW52 aXJvbm1lbnQuIEluIG90aGVyIHdvcmRzLCBpZiB3ZSB3YW50IHRvCiAgICAgICAgICAgICAgdXBk YXRlIGEgSlMgZmlsZSwgaXQgd291bGQgYmUgcmVxdWlyZWQgdG8gcGFzcyB0aGUKICAgICAgICAg ICAgICB2YWxpZGF0aW9uIHRlc3RzIGJ5IEpTbGludCB0YXNrIGluIEd1bHA7IElmIHdlIGhhdmUg dG8gZml4CiAgICAgICAgICAgICAgYSBDU1MgaXNzdWUsIGl0IHdvdWxkIGhhdmUgdG8gYmUgZG9u ZSBpbiB0aGUgU2FzcyBmaWxlLAogICAgICAgICAgICAgIHRoZW4gY29tcGlsZWQgYW5kIHRoZW4g bWluaWZpZWQuCiAgICAgICAgICAgICAgVGhpcyB3b3VsZCBlbnN1cmUgY29kZSBxdWFsaXR5IGFu ZCB0aGF0IHRoZSBVSQogICAgICAgICAgICAgIGRlcGVuZGVuY2llcyBhcmUgYWx3YXlzIHVzaW5n IHRoZSBjb3JyZWN0IHZlcnNpb25zLjwvZm9udD48L2Rpdj4KICAgICAgICAgIDxkaXYgc3R5bGU9 InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9udCBjb2xvcj0iIzFGNEU3OSI+oDwvZm9udD48L2Rp dj4KICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9udCBjb2xv cj0iIzFGNEU3OSI+U28sCiAgICAgICAgICAgICAgc2hvdWxkIEkgY2hhbmdlIHRoZSBmb2xkZXIg c3RydWN0dXJlIGFuZCBjb3B5IHRoZSBsaWNlbnNlCiAgICAgICAgICAgICAgZmlsZXMgb3Iga2Vl cCB0aGlzIHdheSBhbmQgb25jZSBJIGNvbXBsZXRlIHRoZSBuZXctdWkKICAgICAgICAgICAgICBp bnRlZ3JhdGlvbiBhZGQgdGhlIHVpIHNvdXJjZXMgYXMgd2VsbCBhcyB0aGUKICAgICAgICAgICAg ICBkZXBlbmRlbmNpZXM/PC9mb250PjwvZGl2PgogICAgICAgICAgPGRpdj6gPC9kaXY+CiAgICAg ICAgPC9zcGFuPjwvZm9udD48L2Jsb2NrcXVvdGU+CiAgICA8YnI+CiAgICBJJ2Qgc2F5IHRvIGNo YW5nZSB0aGUgZm9sZGVyIHN0cnVjdHVyZSB0byBoYXZlIHRoZSBpbXBvcnRlZCBjb2RlCiAgICBz ZXBhcmF0ZWQgYnkgcHJvamVjdCB0byBhdm9pZCBsZWdhbCBpc3N1ZXMuIEFuZCBpZiBuZWVkZWQg d2UgY2FuCiAgICBjaGFuZ2UgaXQgbGF0ZXIgdG8gdXNlIEJvd2VyL0d1bHAgYXMgeW91IGFyZSBh bHJlYWR5IHVzaW5nLjxicj4KICAgIDxicj4KICAgIDxibG9ja3F1b3RlCiAgICAgIGNpdGU9Im1p ZDpiZTgxMTY5NGQ0YWU0MDEwOGE2YzA2ZjcyNWNmMTM1NEBzZXJ2MDMxLmNvcnAuZWxkb3JhZG8u b3JnLmJyIgogICAgICB0eXBlPSJjaXRlIj48Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIj48 c3BhbgogICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxMXB0OyI+CiAgICAgICAgICA8ZGl2PiZn dDugoCA4IGZpbGVzIGNoYW5nZWQsIDM0NjQ5IGluc2VydGlvbnMoKyk8L2Rpdj4KICAgICAgICAg IDxkaXY+Jmd0O6CgIGNyZWF0ZSBtb2RlIDEwMDY0NCB1aS9saWJzL2Jvb3RzdHJhcC5qczwvZGl2 PgogICAgICAgICAgPGRpdj4mZ3Q7oKAgY3JlYXRlIG1vZGUgMTAwNjQ0IHVpL2xpYnMvanF1ZXJ5 LXVpLmpzPC9kaXY+CiAgICAgICAgICA8ZGl2PiZndDugoCBjcmVhdGUgbW9kZSAxMDA2NDQgdWkv bGlicy9tb2Rlcm5penIuanM8L2Rpdj4KICAgICAgICAgIDxkaXY+Jmd0O6CgIGNyZWF0ZSBtb2Rl IDEwMDc1NQogICAgICAgICAgICB1aS9saWJzL3RoZW1lcy9iYXNlL2Jvb3RzdHJhcC5jdXN0b20u Y3NzPC9kaXY+CiAgICAgICAgICA8ZGl2PiZndDugoCBjcmVhdGUgbW9kZSAxMDA2NDQKICAgICAg ICAgICAgdWkvbGlicy90aGVtZXMvYmFzZS9qcXVlcnktdWkuY3VzdG9tLmNzczwvZGl2PgogICAg ICAgICAgPGRpdj4mZ3Q7oKAgY3JlYXRlIG1vZGUgMTAwNjQ0IHVpL2xpYnMvdmVuZG9yLmpzPC9k aXY+CiAgICAgICAgICA8ZGl2PiZndDugoCBjcmVhdGUgbW9kZSAxMDA2NDQgdWkvcGFnZXMvYnJv d3NlcmNvbmZpZy54bWw8L2Rpdj4KICAgICAgICAgIDxkaXY+Jmd0O6CgIGNyZWF0ZSBtb2RlIDEw MDY0NCB1aS9wYWdlcy9tYW5pZmVzdC5qc29uPC9kaXY+CiAgICAgICAgICA8ZGl2PiZndDs8L2Rp dj4KICAgICAgICAgIDxkaXY+Jmd0OzwvZGl2PgogICAgICAgICAgPGRpdj6gPC9kaXY+CiAgICAg ICAgICA8ZGl2Pl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f PC9kaXY+CiAgICAgICAgICA8ZGl2PktpbWNoaS1kZXZlbCBtYWlsaW5nIGxpc3Q8L2Rpdj4KICAg ICAgICAgIDxkaXY+PGEgbW96LWRvLW5vdC1zZW5kPSJ0cnVlIgogICAgICAgICAgICAgIGhyZWY9 Im1haWx0bzpLaW1jaGktZGV2ZWxAb3ZpcnQub3JnIj5LaW1jaGktZGV2ZWxAb3ZpcnQub3JnPC9h PjwvZGl2PgogICAgICAgICAgPGRpdj48YSBtb3otZG8tbm90LXNlbmQ9InRydWUiCiAgICAgICAg ICAgICAgaHJlZj0iaHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2tpbWNo aS1kZXZlbCI+aHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2tpbWNoaS1k ZXZlbDwvYT48L2Rpdj4KICAgICAgICAgIDxkaXY+oDwvZGl2PgogICAgICAgIDwvc3Bhbj48L2Zv bnQ+CiAgICA8L2Jsb2NrcXVvdGU+CiAgICA8YnI+CiAgPC9ib2R5Pgo8L2h0bWw+Cg== --===============9173340434375884773==--