From aditya.mamidwar at gmail.com Sat Mar 15 08:30:40 2014 Content-Type: multipart/mixed; boundary="===============6109042751845937105==" MIME-Version: 1.0 From: Aditya Mamidwar To: devel at ovirt.org Subject: Re: [Engine-devel] [Users] adding scripts Date: Sat, 15 Mar 2014 18:00:21 +0530 Message-ID: <532447ee.a70e440a.3ce3.ffffd5f5@mx.google.com> --===============6109042751845937105== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable --_D8651FB6-46F9-4DF8-98DD-D992EE03B3E3_ Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=3D"utf-8" Hey thanks on the previous issue. Also is there a way i can access WebAdmin.Html to add custom buttons and ma= =3D ke few tweaks for personal use? I just cant find that file after using git. Aditya Mamidwar -----Original Message----- From: "Einav Cohen" Sent: =3DE2=3D80=3D8E14-=3DE2=3D80=3D8E03-=3DE2=3D80=3D8E2014 01:21 To: "aditya mamidwar" ; "Vojtech Szocs" Cc: "users(a)ovirt.org" ; "engine-devel(a)ovirt.org" Subject: Re: [Users] adding scripts if you are trying to hook into UI-specific events, it sounds=3D20 like you will need to write an oVirt UI Plugin [1] in order to=3D20 do that. However, I believe that the oVirt UI Plugins=3D20 infrastructure doesn't support hooking to events such as "tab=3D20 x was selected" and/or "button b was clicked".=3D20 It does allow you to add new (custom) tabs/sub-tabs/buttons of=3D20 your own, and there is a chance that it allows you to hook=3D20 into events such as 'row x was selected in the grid'.=3D20 @Vojtech will know better. Vojtech? if you are trying to hook into engine events (e.g. you want to=3D20 run a script every time a VM is started in oVirt, no matter if=3D20 the user started it by clicking the 'run' button in the oVirt- engine webadmin, or invoked a REST API request, or an SDK=3D20 command), then it will require some sort of an "engine-plugin"=3D20 infrastructure that we don't have at the moment AFAIK.=3D20 there is a chance that for some of the events you will be able=3D20 to utilize the VDSM hooks (at the Host level) [2]. ---- Thanks, Einav [1] http://www.ovirt.org/Features/UIPlugins [2] http://www.ovirt.org/VDSM-Hooks ----- Original Message ----- > From: "aditya mamidwar" > To: users(a)ovirt.org, engine-devel(a)ovirt.org > Sent: Thursday, March 13, 2014 11:23:35 AM > Subject: [Users] adding scripts >=3D20 >=3D20 > I want to commit changes to the engine by adding some bash scripts. > the scripts should be invoked once a button or tab is selected in the > webadmin portal by the user. >=3D20 > can someone guide on achieving this. >=3D20 > -- > -Aditya Mamidwar >=3D20 > _______________________________________________ > Users mailing list > Users(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/users >=3D20 --_D8651FB6-46F9-4DF8-98DD-D992EE03B3E3_ Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=3D"utf-8"
Hey thank= s =3D on the previous issue.
Also is there a way i can access WebAdmin.Html to= =3D add custom buttons and make few tweaks for personal use?
I just cant fi= =3D nd that file after using git.

Aditya Mamidwar

From: Einav Cohen=
=3D Sent: =3DE2=3D80=3D8E14-=3DE2=3D80=3D8E03-=3DE2=3D80=3D8E2014 01:21
aditya mamidwar; Vojtech Szocs
Cc: users(a)ovirt.org; engine-devel(a)ovirt.org
Subject: Re: [= Us=3D ers] adding scripts

if you are trying to hook into UI-s= =3D pecific events, it sounds
like you will need to write an oVirt UI Plugi= =3D n [1] in order to
do that. However, I believe that the oVirt UI Plugins= =3D
infrastructure doesn't support hooking to events such as "tab
x wa= =3D s selected" and/or "button b was clicked".
It does allow you to add new= =3D (custom) tabs/sub-tabs/buttons of
your own, and there is a chance that= =3D it allows you to hook
into events such as 'row x was selected in the g= =3D rid'.

@Vojtech will know better. Vojtech?

if you are trying = =3D to hook into engine events (e.g. you want to
run a script every time a = =3D VM is started in oVirt, no matter if
the user started it by clicking th= =3D e 'run' button in the oVirt-
engine webadmin, or invoked a REST API requ= =3D est, or an SDK
command), then it will require some sort of an "engine-p= =3D lugin"
infrastructure that we don't have at the moment AFAIK.
there= =3D is a chance that for some of the events you will be able
to utilize th= =3D e VDSM hooks (at the Host level) [2].

----
Thanks,
Einav
[1] http://www.ovirt.org/Features/UIPlugins

[2] http://www.ovirt.o= =3D rg/VDSM-Hooks


----- Original Message -----
> From: "aditya= =3D mamidwar" <aditya.mamidwar(a)gmail.com>
> To: users(a)ovirt.or= g, e=3D ngine-devel(a)ovirt.org
> Sent: Thursday, March 13, 2014 11:23:35 AM<= BR=3D >> Subject: [Users] adding scripts
>
>
> I want to c= =3D ommit changes to the engine by adding some bash scripts.
> the script= =3D s should be invoked once a button or tab is selected in the
> webadmi= =3D n portal by the user.
>
> can someone guide on achieving this.= =3D
>
> --
> -Aditya Mamidwar
>
> ____________= =3D ___________________________________
> Users mailing list
> User= =3D s(a)ovirt.org
> http://lists.ovirt.org/mailman/listinfo/users
>= <=3D BR>=3D --_D8651FB6-46F9-4DF8-98DD-D992EE03B3E3_-- --===============6109042751845937105== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS1fRDg2NTFGQjYtNDZGOS00REY4LTk4REQtRDk5MkVFMDNCM0UzXwpDb250ZW50LVRyYW5zZmVy LUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hh cnNldD0idXRmLTgiCgpIZXkgdGhhbmtzIG9uIHRoZSBwcmV2aW91cyBpc3N1ZS4KQWxzbyBpcyB0 aGVyZSBhIHdheSBpIGNhbiBhY2Nlc3MgV2ViQWRtaW4uSHRtbCB0byBhZGQgY3VzdG9tIGJ1dHRv bnMgYW5kIG1hPQprZSBmZXcgdHdlYWtzIGZvciBwZXJzb25hbCB1c2U/CkkganVzdCBjYW50IGZp bmQgdGhhdCBmaWxlIGFmdGVyIHVzaW5nIGdpdC4KCkFkaXR5YSBNYW1pZHdhcgoKLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0KRnJvbTogIkVpbmF2IENvaGVuIiA8ZWNvaGVuQHJlZGhhdC5jb20+ ClNlbnQ6ID1FMj04MD04RTE0LT1FMj04MD04RTAzLT1FMj04MD04RTIwMTQgMDE6MjEKVG86ICJh ZGl0eWEgbWFtaWR3YXIiIDxhZGl0eWEubWFtaWR3YXJAZ21haWwuY29tPjsgIlZvanRlY2ggU3pv Y3MiIDx2c3pvY3NAPQpyZWRoYXQuY29tPgpDYzogInVzZXJzQG92aXJ0Lm9yZyIgPHVzZXJzQG92 aXJ0Lm9yZz47ICJlbmdpbmUtZGV2ZWxAb3ZpcnQub3JnIiA8ZW5naW5lLWQ9CmV2ZWxAb3ZpcnQu b3JnPgpTdWJqZWN0OiBSZTogW1VzZXJzXSBhZGRpbmcgc2NyaXB0cwoKaWYgeW91IGFyZSB0cnlp bmcgdG8gaG9vayBpbnRvIFVJLXNwZWNpZmljIGV2ZW50cywgaXQgc291bmRzPTIwCmxpa2UgeW91 IHdpbGwgbmVlZCB0byB3cml0ZSBhbiBvVmlydCBVSSBQbHVnaW4gWzFdIGluIG9yZGVyIHRvPTIw CmRvIHRoYXQuIEhvd2V2ZXIsIEkgYmVsaWV2ZSB0aGF0IHRoZSBvVmlydCBVSSBQbHVnaW5zPTIw CmluZnJhc3RydWN0dXJlIGRvZXNuJ3Qgc3VwcG9ydCBob29raW5nIHRvIGV2ZW50cyBzdWNoIGFz ICJ0YWI9MjAKeCB3YXMgc2VsZWN0ZWQiIGFuZC9vciAiYnV0dG9uIGIgd2FzIGNsaWNrZWQiLj0y MApJdCBkb2VzIGFsbG93IHlvdSB0byBhZGQgbmV3IChjdXN0b20pIHRhYnMvc3ViLXRhYnMvYnV0 dG9ucyBvZj0yMAp5b3VyIG93biwgYW5kIHRoZXJlIGlzIGEgY2hhbmNlIHRoYXQgaXQgYWxsb3dz IHlvdSB0byBob29rPTIwCmludG8gZXZlbnRzIHN1Y2ggYXMgJ3JvdyB4IHdhcyBzZWxlY3RlZCBp biB0aGUgZ3JpZCcuPTIwCgpAVm9qdGVjaCB3aWxsIGtub3cgYmV0dGVyLiBWb2p0ZWNoPwoKaWYg eW91IGFyZSB0cnlpbmcgdG8gaG9vayBpbnRvIGVuZ2luZSBldmVudHMgKGUuZy4geW91IHdhbnQg dG89MjAKcnVuIGEgc2NyaXB0IGV2ZXJ5IHRpbWUgYSBWTSBpcyBzdGFydGVkIGluIG9WaXJ0LCBu byBtYXR0ZXIgaWY9MjAKdGhlIHVzZXIgc3RhcnRlZCBpdCBieSBjbGlja2luZyB0aGUgJ3J1bicg YnV0dG9uIGluIHRoZSBvVmlydC0KZW5naW5lIHdlYmFkbWluLCBvciBpbnZva2VkIGEgUkVTVCBB UEkgcmVxdWVzdCwgb3IgYW4gU0RLPTIwCmNvbW1hbmQpLCB0aGVuIGl0IHdpbGwgcmVxdWlyZSBz b21lIHNvcnQgb2YgYW4gImVuZ2luZS1wbHVnaW4iPTIwCmluZnJhc3RydWN0dXJlIHRoYXQgd2Ug ZG9uJ3QgaGF2ZSBhdCB0aGUgbW9tZW50IEFGQUlLLj0yMAp0aGVyZSBpcyBhIGNoYW5jZSB0aGF0 IGZvciBzb21lIG9mIHRoZSBldmVudHMgeW91IHdpbGwgYmUgYWJsZT0yMAp0byB1dGlsaXplIHRo ZSBWRFNNIGhvb2tzIChhdCB0aGUgSG9zdCBsZXZlbCkgWzJdLgoKLS0tLQpUaGFua3MsCkVpbmF2 CgpbMV0gaHR0cDovL3d3dy5vdmlydC5vcmcvRmVhdHVyZXMvVUlQbHVnaW5zCgpbMl0gaHR0cDov L3d3dy5vdmlydC5vcmcvVkRTTS1Ib29rcwoKCi0tLS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0K PiBGcm9tOiAiYWRpdHlhIG1hbWlkd2FyIiA8YWRpdHlhLm1hbWlkd2FyQGdtYWlsLmNvbT4KPiBU bzogdXNlcnNAb3ZpcnQub3JnLCBlbmdpbmUtZGV2ZWxAb3ZpcnQub3JnCj4gU2VudDogVGh1cnNk YXksIE1hcmNoIDEzLCAyMDE0IDExOjIzOjM1IEFNCj4gU3ViamVjdDogW1VzZXJzXSBhZGRpbmcg c2NyaXB0cwo+PTIwCj49MjAKPiBJIHdhbnQgdG8gY29tbWl0IGNoYW5nZXMgdG8gdGhlIGVuZ2lu ZSBieSBhZGRpbmcgc29tZSBiYXNoIHNjcmlwdHMuCj4gdGhlIHNjcmlwdHMgc2hvdWxkIGJlIGlu dm9rZWQgb25jZSBhIGJ1dHRvbiBvciB0YWIgaXMgc2VsZWN0ZWQgaW4gdGhlCj4gd2ViYWRtaW4g cG9ydGFsIGJ5IHRoZSB1c2VyLgo+PTIwCj4gY2FuIHNvbWVvbmUgZ3VpZGUgb24gYWNoaWV2aW5n IHRoaXMuCj49MjAKPiAtLQo+IC1BZGl0eWEgTWFtaWR3YXIKPj0yMAo+IF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gVXNlcnMgbWFpbGluZyBsaXN0Cj4g VXNlcnNAb3ZpcnQub3JnCj4gaHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv L3VzZXJzCj49MjAKCi0tX0Q4NjUxRkI2LTQ2RjktNERGOC05OERELUQ5OTJFRTAzQjNFM18KQ29u dGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQpDb250ZW50LVR5cGU6IHRl eHQvaHRtbDsgY2hhcnNldD0idXRmLTgiCgo8SFRNTD48SEVBRD4KPE1FVEEgY29udGVudD0zRCJ0 ZXh0L2h0bWw7IGNoYXJzZXQ9M0R1dGYtOCIgaHR0cC1lcXVpdj0zRENvbnRlbnQtVHlwZT48L0hF PQpBRD4KPEJPRFk+CjxESVY+CjxESVYgc3R5bGU9M0QiRk9OVC1TSVpFOiAxMXB0OyBGT05ULUZB TUlMWTogQ2FsaWJyaSxzYW5zLXNlcmlmIj5IZXkgdGhhbmtzID0Kb24gdGhlIHByZXZpb3VzIGlz c3VlLjxCUj5BbHNvIGlzIHRoZXJlIGEgd2F5IGkgY2FuIGFjY2VzcyBXZWJBZG1pbi5IdG1sIHRv PQogYWRkIGN1c3RvbSBidXR0b25zIGFuZCBtYWtlIGZldyB0d2Vha3MgZm9yIHBlcnNvbmFsIHVz ZT88QlI+SSBqdXN0IGNhbnQgZmk9Cm5kIHRoYXQgZmlsZSBhZnRlciB1c2luZyBnaXQuPEJSPjxC Uj5BZGl0eWEgTWFtaWR3YXI8L0RJVj48L0RJVj4KPERJViBkaXI9M0RsdHI+CjxIUj4KPFNQQU4g c3R5bGU9M0QiRk9OVC1TSVpFOiAxMXB0OyBGT05ULUZBTUlMWTogQ2FsaWJyaSxzYW5zLXNlcmlm OyBGT05ULVdFSUdIPQpUOiBib2xkIj5Gcm9tOiA8L1NQQU4+PFNQQU4gc3R5bGU9M0QiRk9OVC1T SVpFOiAxMXB0OyBGT05ULUZBTUlMWTogQ2FsaWJyaSw9CnNhbnMtc2VyaWYiPjxBIGhyZWY9M0Qi bWFpbHRvOmVjb2hlbkByZWRoYXQuY29tIj5FaW5hdiBDb2hlbjwvQT48L1NQQU4+PEJSPj0KPFNQ QU4gc3R5bGU9M0QiRk9OVC1TSVpFOiAxMXB0OyBGT05ULUZBTUlMWTogQ2FsaWJyaSxzYW5zLXNl cmlmOyBGT05ULVdFSUdIPQpUOiBib2xkIj5TZW50OiA8L1NQQU4+PFNQQU4gc3R5bGU9M0QiRk9O VC1TSVpFOiAxMXB0OyBGT05ULUZBTUlMWTogQ2FsaWJyaSw9CnNhbnMtc2VyaWYiPj1FMj04MD04 RTE0LT1FMj04MD04RTAzLT1FMj04MD04RTIwMTQgMDE6MjE8L1NQQU4+PEJSPjxTUEFOIHN0eT0K bGU9M0QiRk9OVC1TSVpFOiAxMXB0OyBGT05ULUZBTUlMWTogQ2FsaWJyaSxzYW5zLXNlcmlmOyBG T05ULVdFSUdIVDogYm9sZCI+PQpUbzogPC9TUEFOPjxTUEFOIHN0eWxlPTNEIkZPTlQtU0laRTog MTFwdDsgRk9OVC1GQU1JTFk6IENhbGlicmksc2Fucy1zZXJpZiI9Cj48QSBocmVmPTNEIm1haWx0 bzphZGl0eWEubWFtaWR3YXJAZ21haWwuY29tIj5hZGl0eWEgbWFtaWR3YXI8L0E+OyA8QSBocmVm PQo9M0QibWFpbHRvOnZzem9jc0ByZWRoYXQuY29tIj5Wb2p0ZWNoIFN6b2NzPC9BPjwvU1BBTj48 QlI+PFNQQU4gc3R5bGU9M0QiRk89Ck5ULVNJWkU6IDExcHQ7IEZPTlQtRkFNSUxZOiBDYWxpYnJp LHNhbnMtc2VyaWY7IEZPTlQtV0VJR0hUOiBib2xkIj5DYzogPC9TUD0KQU4+PFNQQU4gc3R5bGU9 M0QiRk9OVC1TSVpFOiAxMXB0OyBGT05ULUZBTUlMWTogQ2FsaWJyaSxzYW5zLXNlcmlmIj48QSBo cmVmPQo9M0QibWFpbHRvOnVzZXJzQG92aXJ0Lm9yZyI+dXNlcnNAb3ZpcnQub3JnPC9BPjsgPEEg aHJlZj0zRCJtYWlsdG86ZW5naW5lLWQ9CmV2ZWxAb3ZpcnQub3JnIj5lbmdpbmUtZGV2ZWxAb3Zp cnQub3JnPC9BPjwvU1BBTj48QlI+PFNQQU4gc3R5bGU9M0QiRk9OVC1TST0KWkU6IDExcHQ7IEZP TlQtRkFNSUxZOiBDYWxpYnJpLHNhbnMtc2VyaWY7IEZPTlQtV0VJR0hUOiBib2xkIj5TdWJqZWN0 OiA8L1NQPQpBTj48U1BBTiBzdHlsZT0zRCJGT05ULVNJWkU6IDExcHQ7IEZPTlQtRkFNSUxZOiBD YWxpYnJpLHNhbnMtc2VyaWYiPlJlOiBbVXM9CmVyc10gYWRkaW5nIHNjcmlwdHM8L1NQQU4+PEJS PjxCUj48L0RJVj5pZiB5b3UgYXJlIHRyeWluZyB0byBob29rIGludG8gVUktcz0KcGVjaWZpYyBl dmVudHMsIGl0IHNvdW5kcyA8QlI+bGlrZSB5b3Ugd2lsbCBuZWVkIHRvIHdyaXRlIGFuIG9WaXJ0 IFVJIFBsdWdpPQpuIFsxXSBpbiBvcmRlciB0byA8QlI+ZG8gdGhhdC4gSG93ZXZlciwgSSBiZWxp ZXZlIHRoYXQgdGhlIG9WaXJ0IFVJIFBsdWdpbnM9CiA8QlI+aW5mcmFzdHJ1Y3R1cmUgZG9lc24n dCBzdXBwb3J0IGhvb2tpbmcgdG8gZXZlbnRzIHN1Y2ggYXMgInRhYiA8QlI+eCB3YT0KcyBzZWxl Y3RlZCIgYW5kL29yICJidXR0b24gYiB3YXMgY2xpY2tlZCIuIDxCUj5JdCBkb2VzIGFsbG93IHlv dSB0byBhZGQgbmV3PQogKGN1c3RvbSkgdGFicy9zdWItdGFicy9idXR0b25zIG9mIDxCUj55b3Vy IG93biwgYW5kIHRoZXJlIGlzIGEgY2hhbmNlIHRoYXQ9CiBpdCBhbGxvd3MgeW91IHRvIGhvb2sg PEJSPmludG8gZXZlbnRzIHN1Y2ggYXMgJ3JvdyB4IHdhcyBzZWxlY3RlZCBpbiB0aGUgZz0Kcmlk Jy4gPEJSPjxCUj5AVm9qdGVjaCB3aWxsIGtub3cgYmV0dGVyLiBWb2p0ZWNoPzxCUj48QlI+aWYg eW91IGFyZSB0cnlpbmcgPQp0byBob29rIGludG8gZW5naW5lIGV2ZW50cyAoZS5nLiB5b3Ugd2Fu dCB0byA8QlI+cnVuIGEgc2NyaXB0IGV2ZXJ5IHRpbWUgYSA9ClZNIGlzIHN0YXJ0ZWQgaW4gb1Zp cnQsIG5vIG1hdHRlciBpZiA8QlI+dGhlIHVzZXIgc3RhcnRlZCBpdCBieSBjbGlja2luZyB0aD0K ZSAncnVuJyBidXR0b24gaW4gdGhlIG9WaXJ0LTxCUj5lbmdpbmUgd2ViYWRtaW4sIG9yIGludm9r ZWQgYSBSRVNUIEFQSSByZXF1PQplc3QsIG9yIGFuIFNESyA8QlI+Y29tbWFuZCksIHRoZW4gaXQg d2lsbCByZXF1aXJlIHNvbWUgc29ydCBvZiBhbiAiZW5naW5lLXA9Cmx1Z2luIiA8QlI+aW5mcmFz dHJ1Y3R1cmUgdGhhdCB3ZSBkb24ndCBoYXZlIGF0IHRoZSBtb21lbnQgQUZBSUsuIDxCUj50aGVy ZT0KIGlzIGEgY2hhbmNlIHRoYXQgZm9yIHNvbWUgb2YgdGhlIGV2ZW50cyB5b3Ugd2lsbCBiZSBh YmxlIDxCUj50byB1dGlsaXplIHRoPQplIFZEU00gaG9va3MgKGF0IHRoZSBIb3N0IGxldmVsKSBb Ml0uPEJSPjxCUj4tLS0tPEJSPlRoYW5rcyw8QlI+RWluYXY8QlI+PEI9ClI+WzFdIGh0dHA6Ly93 d3cub3ZpcnQub3JnL0ZlYXR1cmVzL1VJUGx1Z2luczxCUj48QlI+WzJdIGh0dHA6Ly93d3cub3Zp cnQubz0KcmcvVkRTTS1Ib29rczxCUj48QlI+PEJSPi0tLS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0t LS08QlI+Jmd0OyBGcm9tOiAiYWRpdHlhPQogbWFtaWR3YXIiICZsdDthZGl0eWEubWFtaWR3YXJA Z21haWwuY29tJmd0OzxCUj4mZ3Q7IFRvOiB1c2Vyc0BvdmlydC5vcmcsIGU9Cm5naW5lLWRldmVs QG92aXJ0Lm9yZzxCUj4mZ3Q7IFNlbnQ6IFRodXJzZGF5LCBNYXJjaCAxMywgMjAxNCAxMToyMzoz NSBBTTxCUj0KPiZndDsgU3ViamVjdDogW1VzZXJzXSBhZGRpbmcgc2NyaXB0czxCUj4mZ3Q7IDxC Uj4mZ3Q7IDxCUj4mZ3Q7IEkgd2FudCB0byBjPQpvbW1pdCBjaGFuZ2VzIHRvIHRoZSBlbmdpbmUg YnkgYWRkaW5nIHNvbWUgYmFzaCBzY3JpcHRzLjxCUj4mZ3Q7IHRoZSBzY3JpcHQ9CnMgc2hvdWxk IGJlIGludm9rZWQgb25jZSBhIGJ1dHRvbiBvciB0YWIgaXMgc2VsZWN0ZWQgaW4gdGhlPEJSPiZn dDsgd2ViYWRtaT0KbiBwb3J0YWwgYnkgdGhlIHVzZXIuPEJSPiZndDsgPEJSPiZndDsgY2FuIHNv bWVvbmUgZ3VpZGUgb24gYWNoaWV2aW5nIHRoaXMuPQo8QlI+Jmd0OyA8QlI+Jmd0OyAtLTxCUj4m Z3Q7IC1BZGl0eWEgTWFtaWR3YXI8QlI+Jmd0OyA8QlI+Jmd0OyBfX19fX19fX19fX189Cl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPEJSPiZndDsgVXNlcnMgbWFpbGluZyBsaXN0 PEJSPiZndDsgVXNlcj0Kc0BvdmlydC5vcmc8QlI+Jmd0OyBodHRwOi8vbGlzdHMub3ZpcnQub3Jn L21haWxtYW4vbGlzdGluZm8vdXNlcnM8QlI+Jmd0OyA8PQpCUj48L0JPRFk+PC9IVE1MPj0KCi0t X0Q4NjUxRkI2LTQ2RjktNERGOC05OERELUQ5OTJFRTAzQjNFM18tLQoK --===============6109042751845937105==--