From ravishankar at redhat.com Thu Mar 3 05:50:38 2016 Content-Type: multipart/mixed; boundary="===============4719273891784977569==" MIME-Version: 1.0 From: Ravishankar N To: users at ovirt.org Subject: Re: [ovirt-users] [Gluster-users] open error -13 = sanlock Date: Thu, 03 Mar 2016 16:20:30 +0530 Message-ID: <56D816F6.6060103@redhat.com> In-Reply-To: 56D80297.6080407@email.cz --===============4719273891784977569== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable This is a multi-part message in MIME format. --------------010103050402020505080306 Content-Type: text/plain; charset=3Dutf-8; format=3Dflowed Content-Transfer-Encoding: 8bit On 03/03/2016 02:53 PM, paf1(a)email.cz wrote: > This is replica 2, only , with following settings > > Options Reconfigured: > performance.quick-read: off > performance.read-ahead: off > performance.io-cache: off > performance.stat-prefetch: off > cluster.eager-lock: enable > network.remote-dio: enable > cluster.quorum-type: fixed Not sure why you have set this option. Ideally replica 3 or arbiter volumes are recommended for gluster+ovirt = use. (client) quorum does not make sense for a 2 node setup. I have a = detailed write up here which explains things = http://gluster.readthedocs.org/en/latest/Administrator%20Guide/arbiter-volu= mes-and-quorum/ = which explains things. > cluster.server-quorum-type: none > storage.owner-uid: 36 > storage.owner-gid: 36 > cluster.quorum-count: 1 > cluster.self-heal-daemon: enable > > If I'll create "ids" file manually ( eg. " sanlock direct init -s = > 3c34ad63-6c66-4e23-ab46-084f3d70b147:0:/STORAGES/g1r5p3/GFS/3c34ad63-6c66= -4e23-ab46-084f3d70b147/dom_md/ids:0 = > " ) on both bricks, > vdsm is writing only to half of them ( that with 2 links =3D correct ) > "ids" file has correct permittions, owner, size on both bricks. > brick 1: -rw-rw---- 1 vdsm kvm 1048576 2. b=C5=99e 18.56 = > /STORAGES/g1r5p3/GFS/3c34ad63-6c66-4e23-ab46-084f3d70b147/dom_md/ids - = > not updated Okay, so this one has link count =3D1 which means the .glusterfs hardlink = is missing. Can you try deleting this file from the brick and perform a = stat on the file from the mount? That should heal (i.e recreate it ) on = this brick from the other brick with the appropriate .glusterfs hard link. > brick 2: -rw-rw---- 2 vdsm kvm 1048576 3. b=C5=99e 10.16 = > /STORAGES/g1r5p3/GFS/3c34ad63-6c66-4e23-ab46-084f3d70b147/dom_md/ids - = > is continually updated > > What happens when I'll restart vdsm ? Will oVirt storages go to = > "disable " state ??? =3D disconnect VMs storages ? No idea on this one... -Ravi > > regs.Pa. > > On 3.3.2016 02:02, Ravishankar N wrote: >> On 03/03/2016 12:43 AM, Nir Soffer wrote: >>> >>> PS: # find /STORAGES -samefile >>> /STORAGES/g1r5p3/GFS/3c34ad63-6c66-4e23-ab46-084f3d70b147/dom_md/ids >>> -print >>> /STORAGES/g1r5p3/GFS/3c34ad63-6c66-4e23-ab46-084f3d70b147/dom_md/ids >>> =3D missing "shadowfile" in " .gluster " dir. >>> How can I fix it ?? - online ! >>> >>> >>> Ravi? >> Is this the case in all 3 bricks of the replica? >> BTW, you can just stat the file on the brick and see the link count = >> (it must be 2) instead of running the more expensive find command. >> > --------------010103050402020505080306 Content-Type: text/html; charset=3Dutf-8 Content-Transfer-Encoding: 8bit
On 03/03/2016 02:53 PM, paf1(a)email.cz wrote:
This is replica 2, only , with following settings

Options Reconfigured:
performance.quick-read: off
performance.read-ahead: off
performance.io-cache: off
performance.stat-prefetch: off
cluster.eager-lock: enable
network.remote-dio: enable
cluster.quorum-type: fixed
Not sure why you have set this option.
Ideally replica 3 or arbiter volumes are recommended for gluster+ovirt use.=C2=A0 (client) quorum does not make sense for a 2 no= de setup. I have a detailed write up here which explains things http://glus= ter.readthedocs.org/en/latest/Administrator%20Guide/arbiter-volumes-and-quo= rum/ which explains things.

cluster.server-quorum-type: none
storage.owner-uid: 36
storage.owner-gid: 36
cluster.quorum-count: 1
cluster.self-heal-daemon: enable

If I'll create "ids" file manually (=C2=A0 eg. " sanlock direct init = -s 3c34ad63-6c66-4e23-ab46-084f3d70b147:0:/STORAGES/g1r5p3/GFS/3c34ad63-= 6c66-4e23-ab46-084f3d70b147/dom_md/ids:0 " ) on both bricks,
vdsm is writing only to half of them ( that with 2 links =3D correct )
"ids" file has correct permittions, owner, size=C2=A0 on both bricks.=
brick 1:=C2=A0 -rw-rw---- 1 vdsm kvm 1048576=C2=A0 2.=C2=A0b=C5=99e 1= 8.56 /STORAGES/g1r5p3/GFS/3c34ad63-6c66-4e23-ab46-084f3d70b147/dom_md/ids - not updated

Okay, so this one has link count =3D1 which means the .glusterfs hardlink is missing.=C2=A0 Can you try deleting this file from the brick and perform a stat on the file from the mount? That should heal (i.e recreate it ) on this brick from the other brick with the appropriate .glusterfs hard link.


bri= ck 2:=C2=A0 -rw-rw---- 2 vdsm kvm 1048576=C2=A0 3.=C2=A0b=C5=99e 10.16 /STORAGES/g1r5p3/GFS/3c34ad63-6c66-4e23-ab46-084f3d70b147/dom_md/ids - is continually updated

What happens when I'll restart vdsm ? Will oVirt storages go to "disable " state ??? =3D disconnect VMs storages ?

No idea on this one...
-Ravi

regs.Pa.

On 3.3.2016 02:02, Ravishankar N wrote:
On 03/03/2016 12:43 AM, Nir Soffer wrote:
PS:=C2=A0 # find /STO= RAGES -samefile /STORAGES/g1r5p3/GFS/3c34ad63-6c66-4e23-ab46-084f3d70b147/dom= _md/ids -print
/STORAGES/g1r5p3/GFS/3c34ad63-6c66-4e23-ab46-084f3d70b147/dom_md/ids
=3D missing "shadowfile" in " .gluster " dir.
How can I fix it ?? - online !

Ravi?
Is this the case in all 3 bricks of the replica?
BTW, you can just stat the file on the brick and see the link count (it must be 2) instead of running the more expensive find command.




--------------010103050402020505080306-- --===============4719273891784977569== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" VGhpcyBpcyBhIG11bHRpLXBhcnQgbWVzc2FnZSBpbiBNSU1FIGZvcm1hdC4KLS0tLS0tLS0tLS0t LS0wMTAxMDMwNTA0MDIwMjA1MDUwODAzMDYKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFy c2V0PXV0Zi04OyBmb3JtYXQ9Zmxvd2VkCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQK Ck9uIDAzLzAzLzIwMTYgMDI6NTMgUE0sIHBhZjFAZW1haWwuY3ogd3JvdGU6Cj4gVGhpcyBpcyBy ZXBsaWNhIDIsIG9ubHkgLCB3aXRoIGZvbGxvd2luZyBzZXR0aW5ncwo+Cj4gT3B0aW9ucyBSZWNv bmZpZ3VyZWQ6Cj4gcGVyZm9ybWFuY2UucXVpY2stcmVhZDogb2ZmCj4gcGVyZm9ybWFuY2UucmVh ZC1haGVhZDogb2ZmCj4gcGVyZm9ybWFuY2UuaW8tY2FjaGU6IG9mZgo+IHBlcmZvcm1hbmNlLnN0 YXQtcHJlZmV0Y2g6IG9mZgo+IGNsdXN0ZXIuZWFnZXItbG9jazogZW5hYmxlCj4gbmV0d29yay5y ZW1vdGUtZGlvOiBlbmFibGUKPiBjbHVzdGVyLnF1b3J1bS10eXBlOiBmaXhlZApOb3Qgc3VyZSB3 aHkgeW91IGhhdmUgc2V0IHRoaXMgb3B0aW9uLgpJZGVhbGx5IHJlcGxpY2EgMyBvciBhcmJpdGVy IHZvbHVtZXMgYXJlIHJlY29tbWVuZGVkIGZvciBnbHVzdGVyK292aXJ0IAp1c2UuICAoY2xpZW50 KSBxdW9ydW0gZG9lcyBub3QgbWFrZSBzZW5zZSBmb3IgYSAyIG5vZGUgc2V0dXAuIEkgaGF2ZSBh IApkZXRhaWxlZCB3cml0ZSB1cCBoZXJlIHdoaWNoIGV4cGxhaW5zIHRoaW5ncyAKaHR0cDovL2ds dXN0ZXIucmVhZHRoZWRvY3Mub3JnL2VuL2xhdGVzdC9BZG1pbmlzdHJhdG9yJTIwR3VpZGUvYXJi aXRlci12b2x1bWVzLWFuZC1xdW9ydW0vIAp3aGljaCBleHBsYWlucyB0aGluZ3MuCgo+IGNsdXN0 ZXIuc2VydmVyLXF1b3J1bS10eXBlOiBub25lCj4gc3RvcmFnZS5vd25lci11aWQ6IDM2Cj4gc3Rv cmFnZS5vd25lci1naWQ6IDM2Cj4gY2x1c3Rlci5xdW9ydW0tY291bnQ6IDEKPiBjbHVzdGVyLnNl bGYtaGVhbC1kYWVtb246IGVuYWJsZQo+Cj4gSWYgSSdsbCBjcmVhdGUgImlkcyIgZmlsZSBtYW51 YWxseSAoICBlZy4gIiBzYW5sb2NrIGRpcmVjdCBpbml0IC1zIAo+IDNjMzRhZDYzLTZjNjYtNGUy My1hYjQ2LTA4NGYzZDcwYjE0NzowOi9TVE9SQUdFUy9nMXI1cDMvR0ZTLzNjMzRhZDYzLTZjNjYt NGUyMy1hYjQ2LTA4NGYzZDcwYjE0Ny9kb21fbWQvaWRzOjAgCj4gIiApIG9uIGJvdGggYnJpY2tz LAo+IHZkc20gaXMgd3JpdGluZyBvbmx5IHRvIGhhbGYgb2YgdGhlbSAoIHRoYXQgd2l0aCAyIGxp bmtzID0gY29ycmVjdCApCj4gImlkcyIgZmlsZSBoYXMgY29ycmVjdCBwZXJtaXR0aW9ucywgb3du ZXIsIHNpemUgIG9uIGJvdGggYnJpY2tzLgo+IGJyaWNrIDE6ICAtcnctcnctLS0tIDEgdmRzbSBr dm0gMTA0ODU3NiAgMi4gYsWZZSAxOC41NiAKPiAvU1RPUkFHRVMvZzFyNXAzL0dGUy8zYzM0YWQ2 My02YzY2LTRlMjMtYWI0Ni0wODRmM2Q3MGIxNDcvZG9tX21kL2lkcyAtIAo+IG5vdCB1cGRhdGVk CgpPa2F5LCBzbyB0aGlzIG9uZSBoYXMgbGluayBjb3VudCA9MSB3aGljaCBtZWFucyB0aGUgLmds dXN0ZXJmcyBoYXJkbGluayAKaXMgbWlzc2luZy4gIENhbiB5b3UgdHJ5IGRlbGV0aW5nIHRoaXMg ZmlsZSBmcm9tIHRoZSBicmljayBhbmQgcGVyZm9ybSBhIApzdGF0IG9uIHRoZSBmaWxlIGZyb20g dGhlIG1vdW50PyBUaGF0IHNob3VsZCBoZWFsIChpLmUgcmVjcmVhdGUgaXQgKSBvbiAKdGhpcyBi cmljayBmcm9tIHRoZSBvdGhlciBicmljayB3aXRoIHRoZSBhcHByb3ByaWF0ZSAuZ2x1c3RlcmZz IGhhcmQgbGluay4KCgo+IGJyaWNrIDI6ICAtcnctcnctLS0tIDIgdmRzbSBrdm0gMTA0ODU3NiAg My4gYsWZZSAxMC4xNiAKPiAvU1RPUkFHRVMvZzFyNXAzL0dGUy8zYzM0YWQ2My02YzY2LTRlMjMt YWI0Ni0wODRmM2Q3MGIxNDcvZG9tX21kL2lkcyAtIAo+IGlzIGNvbnRpbnVhbGx5IHVwZGF0ZWQK Pgo+IFdoYXQgaGFwcGVucyB3aGVuIEknbGwgcmVzdGFydCB2ZHNtID8gV2lsbCBvVmlydCBzdG9y YWdlcyBnbyB0byAKPiAiZGlzYWJsZSAiIHN0YXRlID8/PyA9IGRpc2Nvbm5lY3QgVk1zIHN0b3Jh Z2VzID8KCk5vIGlkZWEgb24gdGhpcyBvbmUuLi4KLVJhdmkKPgo+IHJlZ3MuUGEuCj4KPiBPbiAz LjMuMjAxNiAwMjowMiwgUmF2aXNoYW5rYXIgTiB3cm90ZToKPj4gT24gMDMvMDMvMjAxNiAxMjo0 MyBBTSwgTmlyIFNvZmZlciB3cm90ZToKPj4+Cj4+PiAgICAgUFM6ICAjIGZpbmQgL1NUT1JBR0VT IC1zYW1lZmlsZQo+Pj4gICAgIC9TVE9SQUdFUy9nMXI1cDMvR0ZTLzNjMzRhZDYzLTZjNjYtNGUy My1hYjQ2LTA4NGYzZDcwYjE0Ny9kb21fbWQvaWRzCj4+PiAgICAgLXByaW50Cj4+PiAgICAgL1NU T1JBR0VTL2cxcjVwMy9HRlMvM2MzNGFkNjMtNmM2Ni00ZTIzLWFiNDYtMDg0ZjNkNzBiMTQ3L2Rv bV9tZC9pZHMKPj4+ICAgICA9IG1pc3NpbmcgInNoYWRvd2ZpbGUiIGluICIgLmdsdXN0ZXIgIiBk aXIuCj4+PiAgICAgSG93IGNhbiBJIGZpeCBpdCA/PyAtIG9ubGluZSAhCj4+Pgo+Pj4KPj4+IFJh dmk/Cj4+IElzIHRoaXMgdGhlIGNhc2UgaW4gYWxsIDMgYnJpY2tzIG9mIHRoZSByZXBsaWNhPwo+ PiBCVFcsIHlvdSBjYW4ganVzdCBzdGF0IHRoZSBmaWxlIG9uIHRoZSBicmljayBhbmQgc2VlIHRo ZSBsaW5rIGNvdW50IAo+PiAoaXQgbXVzdCBiZSAyKSBpbnN0ZWFkIG9mIHJ1bm5pbmcgdGhlIG1v cmUgZXhwZW5zaXZlIGZpbmQgY29tbWFuZC4KPj4KPgoKCgotLS0tLS0tLS0tLS0tLTAxMDEwMzA1 MDQwMjAyMDUwNTA4MDMwNgpDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD11dGYtOApD b250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Cgo8aHRtbD4KICA8aGVhZD4KICAgIDxtZXRh IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgaHR0cC1lcXVpdj0iQ29udGVudC1U eXBlIj4KICA8L2hlYWQ+CiAgPGJvZHkgdGV4dD0iIzAwMDAwMCIgYmdjb2xvcj0iI0ZGRkZGRiI+ CiAgICA8ZGl2IGNsYXNzPSJtb3otY2l0ZS1wcmVmaXgiPk9uIDAzLzAzLzIwMTYgMDI6NTMgUE0s IDxhIGNsYXNzPSJtb3otdHh0LWxpbmstYWJicmV2aWF0ZWQiIGhyZWY9Im1haWx0bzpwYWYxQGVt YWlsLmN6Ij5wYWYxQGVtYWlsLmN6PC9hPgogICAgICB3cm90ZTo8YnI+CiAgICA8L2Rpdj4KICAg IDxibG9ja3F1b3RlIGNpdGU9Im1pZDo1NkQ4MDI5Ny42MDgwNDA3QGVtYWlsLmN6IiB0eXBlPSJj aXRlIj4KICAgICAgPG1ldGEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiBodHRw LWVxdWl2PSJDb250ZW50LVR5cGUiPgogICAgICBUaGlzIGlzIHJlcGxpY2EgMiwgb25seSAsIHdp dGggZm9sbG93aW5nIHNldHRpbmdzPGJyPgogICAgICA8YnI+CiAgICAgIE9wdGlvbnMgUmVjb25m aWd1cmVkOjxicj4KICAgICAgcGVyZm9ybWFuY2UucXVpY2stcmVhZDogb2ZmPGJyPgogICAgICBw ZXJmb3JtYW5jZS5yZWFkLWFoZWFkOiBvZmY8YnI+CiAgICAgIHBlcmZvcm1hbmNlLmlvLWNhY2hl OiBvZmY8YnI+CiAgICAgIHBlcmZvcm1hbmNlLnN0YXQtcHJlZmV0Y2g6IG9mZjxicj4KICAgICAg Y2x1c3Rlci5lYWdlci1sb2NrOiBlbmFibGU8YnI+CiAgICAgIG5ldHdvcmsucmVtb3RlLWRpbzog ZW5hYmxlPGJyPgogICAgICBjbHVzdGVyLnF1b3J1bS10eXBlOiBmaXhlZDxicj4KICAgIDwvYmxv Y2txdW90ZT4KICAgIE5vdCBzdXJlIHdoeSB5b3UgaGF2ZSBzZXQgdGhpcyBvcHRpb24uPGJyPgog ICAgSWRlYWxseSByZXBsaWNhIDMgb3IgYXJiaXRlciB2b2x1bWVzIGFyZSByZWNvbW1lbmRlZCBm b3IKICAgIGdsdXN0ZXIrb3ZpcnQgdXNlLsKgIChjbGllbnQpIHF1b3J1bSBkb2VzIG5vdCBtYWtl IHNlbnNlIGZvciBhIDIgbm9kZQogICAgc2V0dXAuIEkgaGF2ZSBhIGRldGFpbGVkIHdyaXRlIHVw IGhlcmUgd2hpY2ggZXhwbGFpbnMgdGhpbmdzCiAgICA8YSBjbGFzcz0ibW96LXR4dC1saW5rLWZy ZWV0ZXh0IiBocmVmPSJodHRwOi8vZ2x1c3Rlci5yZWFkdGhlZG9jcy5vcmcvZW4vbGF0ZXN0L0Fk bWluaXN0cmF0b3IlMjBHdWlkZS9hcmJpdGVyLXZvbHVtZXMtYW5kLXF1b3J1bS8iPmh0dHA6Ly9n bHVzdGVyLnJlYWR0aGVkb2NzLm9yZy9lbi9sYXRlc3QvQWRtaW5pc3RyYXRvciUyMEd1aWRlL2Fy Yml0ZXItdm9sdW1lcy1hbmQtcXVvcnVtLzwvYT4KICAgIHdoaWNoIGV4cGxhaW5zIHRoaW5ncy48 YnI+CiAgICA8YnI+CiAgICA8YmxvY2txdW90ZSBjaXRlPSJtaWQ6NTZEODAyOTcuNjA4MDQwN0Bl bWFpbC5jeiIgdHlwZT0iY2l0ZSI+CiAgICAgIGNsdXN0ZXIuc2VydmVyLXF1b3J1bS10eXBlOiBu b25lPGJyPgogICAgICBzdG9yYWdlLm93bmVyLXVpZDogMzY8YnI+CiAgICAgIHN0b3JhZ2Uub3du ZXItZ2lkOiAzNjxicj4KICAgICAgY2x1c3Rlci5xdW9ydW0tY291bnQ6IDE8YnI+CiAgICAgIGNs dXN0ZXIuc2VsZi1oZWFsLWRhZW1vbjogZW5hYmxlPGJyPgogICAgICA8YnI+CiAgICAgIElmIEkn bGwgY3JlYXRlICJpZHMiIGZpbGUgbWFudWFsbHkgKMKgIGVnLiAiIHNhbmxvY2sgZGlyZWN0IGlu aXQgLXMKICAgICAgM2MzNGFkNjMtNmM2Ni00ZTIzLWFiNDYtMDg0ZjNkNzBiMTQ3OjA6L1NUT1JB R0VTL2cxcjVwMy9HRlMvM2MzNGFkNjMtNmM2Ni00ZTIzLWFiNDYtMDg0ZjNkNzBiMTQ3L2RvbV9t ZC9pZHM6MAoKICAgICAgIiApIG9uIGJvdGggYnJpY2tzLDxicj4KICAgICAgdmRzbSBpcyB3cml0 aW5nIG9ubHkgdG8gaGFsZiBvZiB0aGVtICggdGhhdCB3aXRoIDIgbGlua3MgPSBjb3JyZWN0CiAg ICAgICk8YnI+CiAgICAgICJpZHMiIGZpbGUgaGFzIGNvcnJlY3QgcGVybWl0dGlvbnMsIG93bmVy LCBzaXplwqAgb24gYm90aCBicmlja3MuPGJyPgogICAgICBicmljayAxOsKgIC1ydy1ydy0tLS0g MSB2ZHNtIGt2bSAxMDQ4NTc2wqAgMi7CoGLFmWUgMTguNTYKICAgICAgL1NUT1JBR0VTL2cxcjVw My9HRlMvM2MzNGFkNjMtNmM2Ni00ZTIzLWFiNDYtMDg0ZjNkNzBiMTQ3L2RvbV9tZC9pZHMKICAg ICAgLSBub3QgdXBkYXRlZDxicj4KICAgIDwvYmxvY2txdW90ZT4KICAgIDxicj4KICAgIE9rYXks IHNvIHRoaXMgb25lIGhhcyBsaW5rIGNvdW50ID0xIHdoaWNoIG1lYW5zIHRoZSAuZ2x1c3RlcmZz CiAgICBoYXJkbGluayBpcyBtaXNzaW5nLsKgIENhbiB5b3UgdHJ5IGRlbGV0aW5nIHRoaXMgZmls ZSBmcm9tIHRoZSBicmljawogICAgYW5kIHBlcmZvcm0gYSBzdGF0IG9uIHRoZSBmaWxlIGZyb20g dGhlIG1vdW50PyBUaGF0IHNob3VsZCBoZWFsIChpLmUKICAgIHJlY3JlYXRlIGl0ICkgb24gdGhp cyBicmljayBmcm9tIHRoZSBvdGhlciBicmljayB3aXRoIHRoZQogICAgYXBwcm9wcmlhdGUgLmds dXN0ZXJmcyBoYXJkIGxpbmsuPGJyPgogICAgPGJyPgogICAgPGJyPgogICAgPGJsb2NrcXVvdGUg Y2l0ZT0ibWlkOjU2RDgwMjk3LjYwODA0MDdAZW1haWwuY3oiIHR5cGU9ImNpdGUiPiBicmljawog ICAgICAyOsKgIC1ydy1ydy0tLS0gMiB2ZHNtIGt2bSAxMDQ4NTc2wqAgMy7CoGLFmWUgMTAuMTYK ICAgICAgL1NUT1JBR0VTL2cxcjVwMy9HRlMvM2MzNGFkNjMtNmM2Ni00ZTIzLWFiNDYtMDg0ZjNk NzBiMTQ3L2RvbV9tZC9pZHMKICAgICAgLSBpcyBjb250aW51YWxseSB1cGRhdGVkPGJyPgogICAg ICA8YnI+CiAgICAgIFdoYXQgaGFwcGVucyB3aGVuIEknbGwgcmVzdGFydCB2ZHNtID8gV2lsbCBv VmlydCBzdG9yYWdlcyBnbyB0bwogICAgICAiZGlzYWJsZSAiIHN0YXRlID8/PyA9IGRpc2Nvbm5l Y3QgVk1zIHN0b3JhZ2VzID88YnI+CiAgICA8L2Jsb2NrcXVvdGU+CiAgICA8YnI+CiAgICBObyBp ZGVhIG9uIHRoaXMgb25lLi4uPGJyPgogICAgLVJhdmk8YnI+CiAgICA8YmxvY2txdW90ZSBjaXRl PSJtaWQ6NTZEODAyOTcuNjA4MDQwN0BlbWFpbC5jeiIgdHlwZT0iY2l0ZSI+IDxicj4KICAgICAg cmVncy5QYS48YnI+CiAgICAgIDxicj4KICAgICAgPGRpdiBjbGFzcz0ibW96LWNpdGUtcHJlZml4 Ij5PbiAzLjMuMjAxNiAwMjowMiwgUmF2aXNoYW5rYXIgTgogICAgICAgIHdyb3RlOjxicj4KICAg ICAgPC9kaXY+CiAgICAgIDxibG9ja3F1b3RlIGNpdGU9Im1pZDo1NkQ3OEQzQi45MDYwMTAxQHJl ZGhhdC5jb20iIHR5cGU9ImNpdGUiPgogICAgICAgIDxtZXRhIGNvbnRlbnQ9InRleHQvaHRtbDsg Y2hhcnNldD11dGYtOCIKICAgICAgICAgIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSI+CiAgICAg ICAgPGRpdiBjbGFzcz0ibW96LWNpdGUtcHJlZml4Ij5PbiAwMy8wMy8yMDE2IDEyOjQzIEFNLCBO aXIgU29mZmVyCiAgICAgICAgICB3cm90ZTo8YnI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGJs b2NrcXVvdGUKY2l0ZT0ibWlkOkNBTVJieXlzRnFKd2tlOHZkbVlMN05HVXV6cEZOSnBwWkMzcmlM UjhqQzdwZDMzRFZkUUBtYWlsLmdtYWlsLmNvbSIKICAgICAgICAgIHR5cGU9ImNpdGUiPgogICAg ICAgICAgPGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAw CiAgICAgICAgICAgIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0 OjFleCI+CiAgICAgICAgICAgIDxkaXYgdGV4dD0iIzAwMDA2NiIgYmdjb2xvcj0iI0ZGRkZGRiI+ UFM6wqAgIyBmaW5kIC9TVE9SQUdFUwogICAgICAgICAgICAgIC1zYW1lZmlsZQogICAgICAgICAg ICAgIC9TVE9SQUdFUy9nMXI1cDMvR0ZTLzNjMzRhZDYzLTZjNjYtNGUyMy1hYjQ2LTA4NGYzZDcw YjE0Ny9kb21fbWQvaWRzCiAgICAgICAgICAgICAgLXByaW50PGJyPgovU1RPUkFHRVMvZzFyNXAz L0dGUy8zYzM0YWQ2My02YzY2LTRlMjMtYWI0Ni0wODRmM2Q3MGIxNDcvZG9tX21kL2lkczxicj4K ICAgICAgICAgICAgICA9IG1pc3NpbmcgInNoYWRvd2ZpbGUiIGluICIgLmdsdXN0ZXIgIiBkaXIu PGJyPgogICAgICAgICAgICAgIEhvdyBjYW4gSSBmaXggaXQgPz8gLSBvbmxpbmUgITwvZGl2Pgog ICAgICAgICAgPC9ibG9ja3F1b3RlPgogICAgICAgICAgPGRpdj48YnI+CiAgICAgICAgICA8L2Rp dj4KICAgICAgICAgIDxkaXY+UmF2aT88L2Rpdj4KICAgICAgICA8L2Jsb2NrcXVvdGU+CiAgICAg ICAgSXMgdGhpcyB0aGUgY2FzZSBpbiBhbGwgMyBicmlja3Mgb2YgdGhlIHJlcGxpY2E/IDxicj4K ICAgICAgICBCVFcsIHlvdSBjYW4ganVzdCBzdGF0IHRoZSBmaWxlIG9uIHRoZSBicmljayBhbmQg c2VlIHRoZSBsaW5rCiAgICAgICAgY291bnQgKGl0IG11c3QgYmUgMikgaW5zdGVhZCBvZiBydW5u aW5nIHRoZSBtb3JlIGV4cGVuc2l2ZSBmaW5kCiAgICAgICAgY29tbWFuZC48YnI+CiAgICAgICAg PGJyPgogICAgICA8L2Jsb2NrcXVvdGU+CiAgICAgIDxicj4KICAgIDwvYmxvY2txdW90ZT4KICAg IDxicj4KICAgIDxicj4KICA8L2JvZHk+CjwvaHRtbD4KCi0tLS0tLS0tLS0tLS0tMDEwMTAzMDUw NDAyMDIwNTA1MDgwMzA2LS0K --===============4719273891784977569==--