From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail4-relais-sop.national.inria.fr (mail4-relais-sop.national.inria.fr [192.134.164.105]) by walapai.inria.fr (8.13.6/8.13.6) with ESMTP id q34ArM6d030820 for ; Wed, 4 Apr 2012 12:53:24 +0200 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AokCADcnfE/RVdK2mGdsb2JhbABFryUBiG8IIgEBAQEBCAkNBxQnggkBAQEDARICBg0ZARsdAQMBCwYFCw0uAiABEQEFARwGExsHh2IFC5wsCowWgnGEXj+IdgEFC5BJBI5ogSOFWIERjT89hAw X-IronPort-AV: E=Sophos;i="4.75,367,1330902000"; d="txt'?scan'208";a="139031007" Received: from mail-iy0-f182.google.com ([209.85.210.182]) by mail4-smtp-sop.national.inria.fr with ESMTP/TLS/RC4-SHA; 04 Apr 2012 12:53:23 +0200 Received: by iahk25 with SMTP id k25so299858iah.27 for ; Wed, 04 Apr 2012 03:53:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=1nl6NO/gFeuMZ77PzNgDZtCQg2fhrYFCnMImkVcrGrE=; b=Zct1uKxzgC5/RBWQ+HVmSGbGeCujqVnT9bVt9wHRIQn/Vr812tIatH+Zv83kgQHDpU zs6QlMJxqOJbzHoNQF7CPQQ6xYLH76dIowxwSl9caQsmUk7kX12BJiMDJPkTrvXA8TYL dVK2dxOHgaQEKX29t0htY/Ud/tM8CPbP3bVc843Dl3/uG5N1UZCW6CT8Ou5yhPX5JZLN CVlc20+OfIDHEYtrblaHmT+dFB+4947AHxpWJRk39nFEiduj5gO7YcKqPi/SXSrApY1j wWXLFi92WLxZGay/6cs1gy0kqZQKGEaZUPJ+328JWrLg/ZH55qJWwr9g1CZqnm7F48Gs jDIg== MIME-Version: 1.0 Received: by 10.50.194.133 with SMTP id hw5mr1021218igc.57.1333536801990; Wed, 04 Apr 2012 03:53:21 -0700 (PDT) Received: by 10.42.117.67 with HTTP; Wed, 4 Apr 2012 03:53:21 -0700 (PDT) In-Reply-To: <20120403121327.GA29159@pps.jussieu.fr> References: <20120401195733.GB15870@annexia.org> <20120403121327.GA29159@pps.jussieu.fr> Date: Wed, 4 Apr 2012 12:53:21 +0200 Message-ID: From: Hans Ole Rafaelsen To: Jerome Vouillon Cc: Gerd Stolpmann , "Richard W.M. Jones" , caml-list@inria.fr Content-Type: multipart/mixed; boundary=14dae93411e160a98404bcd83b61 Subject: Re: [Caml-list] Strategies for finding memory leaks --14dae93411e160a98404bcd83b61 Content-Type: multipart/alternative; boundary=14dae93411e160a98004bcd83b5f --14dae93411e160a98004bcd83b5f Content-Type: text/plain; charset=ISO-8859-1 Hi, Thanks for your suggestions. I tried to patch lablgtk2 with: --- src/ml_gdkpixbuf.c.orig 2012-04-03 13:56:29.618264702 +0200 +++ src/ml_gdkpixbuf.c 2012-04-03 13:56:58.106263510 +0200 @@ -119,7 +119,7 @@ value ret; if (pb == NULL) ml_raise_null_pointer(); ret = alloc_custom (&ml_custom_GdkPixbuf, sizeof pb, - 100, 1000); + 0, 1); p = Data_custom_val (ret); *p = ref ? g_object_ref (pb) : pb; return ret; --- src/ml_gobject.c.orig 2012-04-03 15:40:11.002004506 +0200 +++ src/ml_gobject.c 2012-04-03 15:41:04.938002250 +0200 @@ -219,7 +219,7 @@ CAMLprim value ml_g_value_new(void) { value ret = alloc_custom(&ml_custom_GValue, sizeof(value)+sizeof(GValue), - 20, 1000); + 0, 1); /* create an MLPointer */ Field(ret,1) = (value)2; ((GValue*)&Field(ret,2))->g_type = 0; @@ -272,14 +272,14 @@ custom_serialize_default, custom_deserialize_default }; CAMLprim value Val_gboxed(GType t, gpointer p) { - value ret = alloc_custom(&ml_custom_gboxed, 2*sizeof(value), 10, 1000); + value ret = alloc_custom(&ml_custom_gboxed, 2*sizeof(value), 0, 1); Store_pointer(ret, g_boxed_copy (t,p)); Field(ret,2) = (value)t; return ret; } CAMLprim value Val_gboxed_new(GType t, gpointer p) { - value ret = alloc_custom(&ml_custom_gboxed, 2*sizeof(value), 10, 1000); + value ret = alloc_custom(&ml_custom_gboxed, 2*sizeof(value), 0, 1); Store_pointer(ret, p); Field(ret,2) = (value)t; return ret; At startup is uses top - 16:40:27 up 1 day, 7:01, 28 users, load average: 0.47, 0.50, 0.35 Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie Cpu(s): 4.8%us, 1.3%sy, 0.0%ni, 93.6%id, 0.2%wa, 0.0%hi, 0.1%si, 0.0%st Mem: 4004736k total, 3617960k used, 386776k free, 130704k buffers Swap: 4070396k total, 9244k used, 4061152k free, 1730344k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 10275 hans 20 0 529m 77m 13m S 14 2.0 0:01.66 vc_client.nativ and 12 hours later top - 04:40:07 up 1 day, 19:01, 35 users, load average: 0.00, 0.01, 0.05 Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie Cpu(s): 20.2%us, 3.4%sy, 0.0%ni, 76.1%id, 0.1%wa, 0.0%hi, 0.2%si, 0.0%st Mem: 4004736k total, 3828308k used, 176428k free, 143928k buffers Swap: 4070396k total, 10708k used, 4059688k free, 1756524k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 10275 hans 20 0 534m 82m 13m S 17 2.1 110:11.19 vc_client.nativ Without the patch top - 22:05:38 up 1 day, 12:26, 34 users, load average: 0.35, 0.16, 0.13 Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie Cpu(s): 5.6%us, 1.5%sy, 0.0%ni, 92.6%id, 0.2%wa, 0.0%hi, 0.1%si, 0.0%st Mem: 4004736k total, 3868136k used, 136600k free, 140900k buffers Swap: 4070396k total, 9680k used, 4060716k free, 1837500k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 25111 hans 20 0 453m 76m 13m S 14 2.0 0:13.68 vc_client_old.n top - 10:05:19 up 2 days, 26 min, 35 users, load average: 0.01, 0.04, 0.05 Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie Cpu(s): 20.4%us, 3.2%sy, 0.0%ni, 75.8%id, 0.4%wa, 0.0%hi, 0.2%si, 0.0%st Mem: 4004736k total, 3830596k used, 174140k free, 261692k buffers Swap: 4070396k total, 13640k used, 4056756k free, 1640452k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 25111 hans 20 0 453m 76m 13m S 49 2.0 263:05.34 vc_client_old.n So from this it seems that with the patch it still uses more and more CPU, but at a much lower rate. However, it seems to increase memory usage with the patch. I also tried to patch the wrappers.h file, but the memory consumption just exploded. So it is working better, but still not good enough. Is there some way to prevent this kind of behavior? That is, no extra memory usage and no extra CPU usage. I have attached some additional profiling if that would be of any interest. In short it seems to be that it is the GC that is consuming the CPU. Best, Hans Ole On Tue, Apr 3, 2012 at 2:13 PM, Jerome Vouillon wrote: > On Tue, Apr 03, 2012 at 12:42:08PM +0200, Gerd Stolpmann wrote: > > This reminds me of a problem I had with a specific C binding (for mysql), > > years ago. That binding allocated custom blocks with badly chosen > > parameters used/max (see the docs for caml_alloc_custom in > > http://caml.inria.fr/pub/docs/manual-ocaml/manual032.html#toc144). If > the > > ratio used/max is > 0, these parameters accelerate the GC. If the custom > > blocks are frequently allocated, this can have a dramatic effect, even > for > > quite small used/max ratios. The solution was to change the code, and to > > set used=0 and max=1. > > > > This type of problem would match your observation that the GC works more > > and more the longer the program runs, i.e. the more custom blocks have > > been allocated. > > > > The problem basically also exists with bigarrays - with > > used= and max=256M (hardcoded). > > I have also observed this with input-output channels (in_channel and > out_channel), where used = 1 and max = 1000. A full major GC is > performed every time a thousand files are opened, which can result on > a significant overhead when you open lot of files and the heap is > large. > > -- Jerome > --14dae93411e160a98004bcd83b5f Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hi,

Thanks for your suggestions. I tried to patch lablgtk2 with:
=
--- src/ml_gdkpixbuf.c.orig=A0=A0=A0=A0 2012-04-03 13:56:29.618264702 += 0200
+++ src/ml_gdkpixbuf.c=A0 2012-04-03 13:56:58.106263510 +0200
@@= -119,7 +119,7 @@
=A0=A0 value ret;
=A0=A0 if (pb =3D=3D NULL) ml_raise_null_pointer(); <= br>=A0=A0 ret =3D alloc_custom (&ml_custom_GdkPixbuf, sizeof pb,
-= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 100, 1000);+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 0, 1);
= =A0=A0 p =3D Data_custom_val (ret);
=A0=A0 *p =3D ref ? g_object_ref (pb) : pb;
=A0=A0 return ret;

-= -- src/ml_gobject.c.orig=A0=A0=A0=A0=A0=A0 2012-04-03 15:40:11.002004506 +0= 200
+++ src/ml_gobject.c=A0=A0=A0 2012-04-03 15:41:04.938002250 +0200@@ -219,7 +219,7 @@
=A0CAMLprim value ml_g_value_new(void)
=A0{
=A0=A0=A0=A0 value ret = =3D alloc_custom(&ml_custom_GValue, sizeof(value)+sizeof(GValue),
-= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0 20, 1000);
+=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 0, 1);
=A0=A0=A0=A0 /* create an ML= Pointer */
=A0=A0=A0=A0 Field(ret,1) =3D (value)2;
=A0=A0=A0=A0 ((GValue*)&Fiel= d(ret,2))->g_type =3D 0;
@@ -272,14 +272,14 @@
=A0=A0 custom_seria= lize_default, custom_deserialize_default };
=A0CAMLprim value Val_gboxed= (GType t, gpointer p)
=A0{
-=A0=A0=A0 value ret =3D alloc_custom(&ml_custom_gboxed, 2*size= of(value), 10, 1000);
+=A0=A0=A0 value ret =3D alloc_custom(&ml_cust= om_gboxed, 2*sizeof(value), 0, 1);
=A0=A0=A0=A0 Store_pointer(ret, g_box= ed_copy (t,p));
=A0=A0=A0=A0 Field(ret,2) =3D (value)t;
=A0=A0=A0=A0 return ret;
=A0}
=A0CAMLprim value Val_gboxed_new(GType = t, gpointer p)
=A0{
-=A0=A0=A0 value ret =3D alloc_custom(&ml_cus= tom_gboxed, 2*sizeof(value), 10, 1000);
+=A0=A0=A0 value ret =3D alloc_c= ustom(&ml_custom_gboxed, 2*sizeof(value), 0, 1);
=A0=A0=A0=A0 Store_pointer(ret, p);
=A0=A0=A0=A0 Field(ret,2) =3D (value= )t;
=A0=A0=A0=A0 return ret;



At startup is uses
top - = 16:40:27 up 1 day,=A0 7:01, 28 users,=A0 load average: 0.47, 0.50, 0.35
= Tasks:=A0=A0 1 total,=A0=A0 0 running,=A0=A0 1 sleeping,=A0=A0 0 stopped,= =A0=A0 0 zombie
Cpu(s):=A0 4.8%us,=A0 1.3%sy,=A0 0.0%ni, 93.6%id,=A0 0.2%wa,=A0 0.0%hi,=A0 = 0.1%si,=A0 0.0%st
Mem:=A0=A0 4004736k total,=A0 3617960k used,=A0=A0 386= 776k free,=A0=A0 130704k buffers
Swap:=A0 4070396k total,=A0=A0=A0=A0 92= 44k used,=A0 4061152k free,=A0 1730344k cached

=A0 PID USER=A0=A0=A0=A0=A0 PR=A0 NI=A0 VIRT=A0 RES=A0 SHR S %CPU %MEM= =A0=A0=A0 TIME+=A0 COMMAND=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0
10275 hans= =A0=A0=A0=A0=A0 20=A0=A0 0=A0 529m=A0 77m=A0 13m S=A0=A0 14=A0 2.0=A0=A0 0:= 01.66 vc_client.nativ=A0=A0=A0

and 12 hours later
top - 04:40:07= up 1 day, 19:01, 35 users,=A0 load average: 0.00, 0.01, 0.05
Tasks:=A0=A0 1 total,=A0=A0 0 running,=A0=A0 1 sleeping,=A0=A0 0 stopped,= =A0=A0 0 zombie
Cpu(s): 20.2%us,=A0 3.4%sy,=A0 0.0%ni, 76.1%id,=A0 0.1%w= a,=A0 0.0%hi,=A0 0.2%si,=A0 0.0%st
Mem:=A0=A0 4004736k total,=A0 3828308= k used,=A0=A0 176428k free,=A0=A0 143928k buffers
Swap:=A0 4070396k total,=A0=A0=A0 10708k used,=A0 4059688k free,=A0 1756524= k cached

=A0 PID USER=A0=A0=A0=A0=A0 PR=A0 NI=A0 VIRT=A0 RES=A0 SHR = S %CPU %MEM=A0=A0=A0 TIME+=A0 COMMAND=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0
= 10275 hans=A0=A0=A0=A0=A0 20=A0=A0 0=A0 534m=A0 82m=A0 13m S=A0=A0 17=A0 2.= 1 110:11.19 vc_client.nativ=A0=A0=A0

Without the patch
top - 22:05:38 up 1 day, 12:26, 34 users,=A0 load = average: 0.35, 0.16, 0.13
Tasks:=A0=A0 1 total,=A0=A0 0 running,=A0=A0 1= sleeping,=A0=A0 0 stopped,=A0=A0 0 zombie
Cpu(s):=A0 5.6%us,=A0 1.5%sy,= =A0 0.0%ni, 92.6%id,=A0 0.2%wa,=A0 0.0%hi,=A0 0.1%si,=A0 0.0%st
Mem:=A0=A0 4004736k total,=A0 3868136k used,=A0=A0 136600k free,=A0=A0 1409= 00k buffers
Swap:=A0 4070396k total,=A0=A0=A0=A0 9680k used,=A0 4060716k= free,=A0 1837500k cached

=A0 PID USER=A0=A0=A0=A0=A0 PR=A0 NI=A0 VI= RT=A0 RES=A0 SHR S %CPU %MEM=A0=A0=A0 TIME+=A0 COMMAND=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0
25111 hans=A0=A0=A0=A0=A0 20=A0=A0 0=A0 453m=A0 76m=A0 13m S=A0=A0 14=A0 2.= 0=A0=A0 0:13.68 vc_client_old.n

top - 10:05:19 up 2 days, 26 min, 3= 5 users,=A0 load average: 0.01, 0.04, 0.05
Tasks:=A0=A0 1 total,=A0=A0 0= running,=A0=A0 1 sleeping,=A0=A0 0 stopped,=A0=A0 0 zombie
Cpu(s): 20.4%us,=A0 3.2%sy,=A0 0.0%ni, 75.8%id,=A0 0.4%wa,=A0 0.0%hi,=A0 0.= 2%si,=A0 0.0%st
Mem:=A0=A0 4004736k total,=A0 3830596k used,=A0=A0 17414= 0k free,=A0=A0 261692k buffers
Swap:=A0 4070396k total,=A0=A0=A0 13640k = used,=A0 4056756k free,=A0 1640452k cached

=A0 PID USER=A0=A0=A0=A0=A0 PR=A0 NI=A0 VIRT=A0 RES=A0 SHR S %CPU %MEM= =A0=A0=A0 TIME+=A0 COMMAND=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0
25111 hans= =A0=A0=A0=A0=A0 20=A0=A0 0=A0 453m=A0 76m=A0 13m S=A0=A0 49=A0 2.0 263:05.3= 4 vc_client_old.n=A0=A0

So from this it seems that with the patch i= t still uses more and more CPU, but at a much lower rate. However, it seems= to increase memory usage with the patch. I also tried to patch the wrapper= s.h file, but the memory consumption just exploded.

So it is working better, but still not good enough. Is there some way t= o prevent this kind of behavior? That is, no extra memory usage and no extr= a CPU usage.

I have attached some additional profiling if that would= be of any interest. In short it seems to be that it is the GC that is cons= uming the CPU.

Best,

Hans Ole

On Tue, Apr 3, = 2012 at 2:13 PM, Jerome Vouillon <vouillon@pps.jussieu.fr> wrote:
On Tue, Apr 03, 2012 at 12:42:08PM +0200, Gerd Stolpmann = wrote:
> This reminds me of a problem I had with a specific C binding (for mysq= l),
> years ago. That binding allocated custom blocks with badly chosen
> parameters used/max (see the docs for caml_alloc_custom in
> http://caml.inria.fr/pub/docs/manual-ocaml/manual0= 32.html#toc144). If the
> ratio used/max is > 0, these parameters accelerate the GC. If the c= ustom
> blocks are frequently allocated, this can have a dramatic effect, even= for
> quite small used/max ratios. The solution was to change the code, and = to
> set used=3D0 and max=3D1.
>
> This type of problem would match your observation that the GC works mo= re
> and more the longer the program runs, i.e. the more custom blocks have=
> been allocated.
>
> The problem basically also exists with bigarrays - with
> used=3D<size_of_bigarary> and max=3D256M (hardcoded).

I have also observed this with input-output channels (in_channel and<= br> out_channel), where used =3D 1 and max =3D 1000. A full major GC is
performed every time a thousand files are opened, which can result on
a significant overhead when you open lot of files and the heap is
large.

-- Jerome

--14dae93411e160a98004bcd83b5f-- --14dae93411e160a98404bcd83b61 Content-Type: text/plain; charset=US-ASCII; name="MemoryProfiling.txt" Content-Disposition: attachment; filename="MemoryProfiling.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h0m91ndz0 dmNfY2xpZW50Lm5hdGl2ZSBoYXMgcnVuIGZvciBhYm91dCAxOSBob3Vycwp2 Y19jbGllbnRfb2xkLm5hdGl2ZSBoYXMgZm9yIGFib3V0IDE0IGhvdXJzCgpU YXNrczogMjcyIHRvdGFsLCAgIDMgcnVubmluZywgMjY5IHNsZWVwaW5nLCAg IDAgc3RvcHBlZCwgICAwIHpvbWJpZQpDcHUocyk6IDIwLjIldXMsICAzLjIl c3ksICAwLjAlbmksIDc2LjMlaWQsICAwLjAld2EsICAwLjAlaGksICAwLjMl c2ksICAwLjAlc3QKTWVtOiAgIDQwMDQ3MzZrIHRvdGFsLCAgMzYzMzY3Mmsg dXNlZCwgICAzNzEwNjRrIGZyZWUsICAgMjYyOTE2ayBidWZmZXJzClN3YXA6 ICA0MDcwMzk2ayB0b3RhbCwgICAgMTQxNjBrIHVzZWQsICA0MDU2MjM2ayBm cmVlLCAgMTQxNzA4OGsgY2FjaGVkCgogIFBJRCBVU0VSICAgICAgUFIgIE5J ICBWSVJUICBSRVMgIFNIUiBTICVDUFUgJU1FTSAgICBUSU1FKyAgQ09NTUFO RCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCjI1MTExIGhh bnMgICAgICAyMCAgIDAgIDQ1M20gIDc2bSAgMTNtIFIgICA1MCAgMi4wIDMx OTowNC44NiB2Y19jbGllbnRfb2xkLm4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCjEwMjc1IGhhbnMgICAgICAyMCAgIDAgIDU1M20gIDk5bSAgMTNt IFMgICAxOSAgMi41IDE4ODozMC41MCAKdmNfY2xpZW50Lm5hdGl2ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCgoKCnZjX2NsaWVudF9vbGQubmF0aXZl CkNQVTogSW50ZWwgU2FuZHkgQnJpZGdlIG1pY3JvYXJjaGl0ZWN0dXJlLCBz cGVlZCAyLjIwMWUrMDYgTUh6IChlc3RpbWF0ZWQpCkNvdW50ZWQgQ1BVX0NM S19VTkhBTFRFRCBldmVudHMgKENsb2NrIGN5Y2xlcyB3aGVuIG5vdCBoYWx0 ZWQpIHdpdGggYSB1bml0IG1hc2sgb2YgMHgwMCAoTm8gdW5pdCBtYXNrKSBj b3VudCAxMDAwMDAKc2FtcGxlcyAgJSAgICAgICAgaW1hZ2UgbmFtZSAgICAg ICAgICAgICAgIHN5bWJvbCBuYW1lCjIzMDA5MyAgIDUxLjg1NzEgIHZjX2Ns aWVudF9vbGQubmF0aXZlICAgICBtYXJrX3NsaWNlCjk5NjU5ICAgIDIyLjQ2 MDYgIHZjX2NsaWVudF9vbGQubmF0aXZlICAgICBzd2VlcF9zbGljZQo3NjU2 MyAgICAxNy4yNTUzICB2Y19jbGllbnRfb2xkLm5hdGl2ZSAgICAgY2FtbF9w YWdlX3RhYmxlX2xvb2t1cAoxMzIxNSAgICAgMi45NzgzICB2Y19jbGllbnRf b2xkLm5hdGl2ZSAgICAgY2FtbF9mbF9tZXJnZV9ibG9jawoxODE0ICAgICAg MC40MDg4ICB2Y19jbGllbnRfb2xkLm5hdGl2ZSAgICAgdHJ1bmNhdGVfZmxw CjEwMTMgICAgICAwLjIyODMgIHZjX2NsaWVudF9vbGQubmF0aXZlICAgICBj YW1sX2djX3N0YXQKNzg0ICAgICAgIDAuMTc2NyAgdmNfY2xpZW50X29sZC5u YXRpdmUgICAgIGNhbWxfaXRlcmF0ZV9nbG9iYWxfcm9vdHMKNzc1ICAgICAg IDAuMTc0NyAgdmNfY2xpZW50X29sZC5uYXRpdmUgICAgIGNhbWxfZmxfYWxs b2NhdGUKNTY0ICAgICAgIDAuMTI3MSAgdmNfY2xpZW50X29sZC5uYXRpdmUg ICAgIGNhbWxMaXZpZGlzdmNfX05hbGJ1Zl90b29sc19fcmVwbGFjZV9wYXR0 ZXJuXzEwMzMKNTQ1ICAgICAgIDAuMTIyOCAgdmNfY2xpZW50X29sZC5uYXRp dmUgICAgIGNhbWxfb2xkaWZ5X2xvY2FsX3Jvb3RzCjUwMyAgICAgICAwLjEx MzQgIHZjX2NsaWVudF9vbGQubmF0aXZlICAgICBjYW1sX21vZGlmeQo0NTMg ICAgICAgMC4xMDIxICB2Y19jbGllbnRfb2xkLm5hdGl2ZSAgICAgY2FtbExp dmlkaXN2Y19fTmFsYnVmX2J5dGVzdHJlYW1fX3NlYXJjaF8xMDQ3CjQ0NiAg ICAgICAwLjEwMDUgIHZjX2NsaWVudF9vbGQubmF0aXZlICAgICBjYW1sX2Rl bGV0ZV9nbG9iYWxfcm9vdAo0MTIgICAgICAgMC4wOTI5ICB2Y19jbGllbnRf b2xkLm5hdGl2ZSAgICAgY2FtbF9kb19yb290cwozNDMgICAgICAgMC4wNzcz ICB2Y19jbGllbnRfb2xkLm5hdGl2ZSAgICAgY2FtbF9kYXJrZW4KMzA2ICAg ICAgIDAuMDY5MCAgdmNfY2xpZW50X29sZC5uYXRpdmUgICAgIGx3dF9nbGli X2dldF9zb3VyY2VzCjI5NyAgICAgICAwLjA2NjkgIHZjX2NsaWVudF9vbGQu bmF0aXZlICAgICBjYW1sX2luc2VydF9nbG9iYWxfcm9vdAoyNTAgICAgICAg MC4wNTYzICB2Y19jbGllbnRfb2xkLm5hdGl2ZSAgICAgY2FtbFVxX2d0a19f ZnVuXzE0ODQKMjEzICAgICAgIDAuMDQ4MCAgdmNfY2xpZW50X29sZC5uYXRp dmUgICAgIGNhbWxIYXNodGJsX19maW5kXzEwOTMKMjA1ICAgICAgIDAuMDQ2 MiAgdmNfY2xpZW50X29sZC5uYXRpdmUgICAgIGNvbXBhcmVfdmFsCjE5NSAg ICAgICAwLjA0MzkgIHZjX2NsaWVudF9vbGQubmF0aXZlICAgICBjYW1sTHd0 X2dsaWJfX2VudGVyXzEwNzkKMTkxICAgICAgIDAuMDQzMCAgW3Zkc29dICh0 Z2lkOjI1MTExIHJhbmdlOjB4N2ZmZjEyZGZmMDAwLTB4N2ZmZjEyZTAwMDAw KSBbdmRzb10gKHRnaWQ6MjUxMTEgcmFuZ2U6MHg3ZmZmMTJkZmYwMDAtMHg3 ZmZmMTJlMDAwMDApCjE5MCAgICAgICAwLjA0MjggIHZjX2NsaWVudF9vbGQu bmF0aXZlICAgICBjYW1sX3N0YXNoX2JhY2t0cmFjZQoxODggICAgICAgMC4w NDI0ICB2Y19jbGllbnRfb2xkLm5hdGl2ZSAgICAgY2FtbF9vbGRpZnlfb25l CjE4NSAgICAgICAwLjA0MTcgIHZjX2NsaWVudF9vbGQubmF0aXZlICAgICBj YW1sSGFzaHRibF9fcmVwbGFjZV8xMTEyCjE3OSAgICAgICAwLjA0MDMgIHZj X2NsaWVudF9vbGQubmF0aXZlICAgICBjYW1sX2FsbG9jX3N0cmluZwoxNzYg ICAgICAgMC4wMzk3ICB2Y19jbGllbnRfb2xkLm5hdGl2ZSAgICAgY2FtbE1l ZGlhX2N0cmxfX2Z1bl8zMDU1CjE3NiAgICAgICAwLjAzOTcgIHZjX2NsaWVu dF9vbGQubmF0aXZlICAgICBjYW1sX2NfY2FsbAoxNzMgICAgICAgMC4wMzkw ICB2Y19jbGllbnRfb2xkLm5hdGl2ZSAgICAgY2FtbExpc3RfX2l0ZXJfMTA3 NAoxNzEgICAgICAgMC4wMzg1ICB2Y19jbGllbnRfb2xkLm5hdGl2ZSAgICAg Y2FtbF9hcHBseTIKMTY0ICAgICAgIDAuMDM3MCAgdmNfY2xpZW50X29sZC5u YXRpdmUgICAgIGNhbWxfb2JqX2R1cAoxNTkgICAgICAgMC4wMzU4ICB2Y19j bGllbnRfb2xkLm5hdGl2ZSAgICAgY2FtbF9zZW5kMAoKCnZjX2NsaWVudC5u YXRpdmUKQ1BVOiBJbnRlbCBTYW5keSBCcmlkZ2UgbWljcm9hcmNoaXRlY3R1 cmUsIHNwZWVkIDIuMjAxZSswNiBNSHogKGVzdGltYXRlZCkKQ291bnRlZCBD UFVfQ0xLX1VOSEFMVEVEIGV2ZW50cyAoQ2xvY2sgY3ljbGVzIHdoZW4gbm90 IGhhbHRlZCkgd2l0aCBhIHVuaXQgbWFzayBvZiAweDAwIChObyB1bml0IG1h c2spIGNvdW50IDEwMDAwMApzYW1wbGVzICAlICAgICAgICBpbWFnZSBuYW1l ICAgICAgICAgICAgICAgc3ltYm9sIG5hbWUKNTAyOTUgICAgNDUuMzI1OSAg dmNfY2xpZW50Lm5hdGl2ZSAgICAgICAgIG1hcmtfc2xpY2UKMTc5NjQgICAg MTYuMTg5MiAgdmNfY2xpZW50Lm5hdGl2ZSAgICAgICAgIHN3ZWVwX3NsaWNl CjE0NDUwICAgIDEzLjAyMjQgIHZjX2NsaWVudC5uYXRpdmUgICAgICAgICBj YW1sX3BhZ2VfdGFibGVfbG9va3VwCjIxMzcgICAgICAxLjkyNTkgIHZjX2Ns aWVudC5uYXRpdmUgICAgICAgICBjYW1sX2ZsX21lcmdlX2Jsb2NrCjEzOTcg ICAgICAxLjI1OTAgIHZjX2NsaWVudC5uYXRpdmUgICAgICAgICBjYW1sX2Zs X2FsbG9jYXRlCjEzMDUgICAgICAxLjE3NjEgIHZjX2NsaWVudC5uYXRpdmUg ICAgICAgICBjYW1sX2djX3N0YXQKNTk5ICAgICAgIDAuNTM5OCAgdmNfY2xp ZW50Lm5hdGl2ZSAgICAgICAgIGNhbWxMaXZpZGlzdmNfX05hbGJ1Zl90b29s c19fcmVwbGFjZV9wYXR0ZXJuXzEwMzMKNTQ2ICAgICAgIDAuNDkyMSAgdmNf Y2xpZW50Lm5hdGl2ZSAgICAgICAgIGNhbWxMaXZpZGlzdmNfX05hbGJ1Zl9i eXRlc3RyZWFtX19zZWFyY2hfMTA0Nwo1NDQgICAgICAgMC40OTAzICB2Y19j bGllbnQubmF0aXZlICAgICAgICAgY2FtbF9tb2RpZnkKNTQwICAgICAgIDAu NDg2NiAgdmNfY2xpZW50Lm5hdGl2ZSAgICAgICAgIGNhbWxfZGVsZXRlX2ds b2JhbF9yb290CjQyMiAgICAgICAwLjM4MDMgIHZjX2NsaWVudC5uYXRpdmUg ICAgICAgICBjYW1sX2l0ZXJhdGVfZ2xvYmFsX3Jvb3RzCjQwNCAgICAgICAw LjM2NDEgIHZjX2NsaWVudC5uYXRpdmUgICAgICAgICB0cnVuY2F0ZV9mbHAK MzM5ICAgICAgIDAuMzA1NSAgdmNfY2xpZW50Lm5hdGl2ZSAgICAgICAgIGNh bWxVcV9ndGtfX2Z1bl8xNDg0CjMyNyAgICAgICAwLjI5NDcgIHZjX2NsaWVu dC5uYXRpdmUgICAgICAgICBjYW1sSGFzaHRibF9fZmluZF8xMDkzCjMxMSAg ICAgICAwLjI4MDMgIHZjX2NsaWVudC5uYXRpdmUgICAgICAgICBjYW1sX2lu c2VydF9nbG9iYWxfcm9vdAoyOTAgICAgICAgMC4yNjEzICB2Y19jbGllbnQu bmF0aXZlICAgICAgICAgbHd0X2dsaWJfZ2V0X3NvdXJjZXMKMjg0ICAgICAg IDAuMjU1OSAgdmNfY2xpZW50Lm5hdGl2ZSAgICAgICAgIGNhbWxfb2xkaWZ5 X2xvY2FsX3Jvb3RzCjI2MCAgICAgICAwLjIzNDMgIHZjX2NsaWVudC5uYXRp dmUgICAgICAgICBjYW1sTWVkaWFfY3RybF9fZnVuXzMwNTUKMjYwICAgICAg IDAuMjM0MyAgdmNfY2xpZW50Lm5hdGl2ZSAgICAgICAgIGNhbWxVbml4cXVl dWVfc2VsZWN0X19mdW5fMjM2NgoyNDggICAgICAgMC4yMjM1ICB2Y19jbGll bnQubmF0aXZlICAgICAgICAgY29tcGFyZV92YWwKMjM5ICAgICAgIDAuMjE1 NCAgdmNfY2xpZW50Lm5hdGl2ZSAgICAgICAgIGNhbWxfc3Rhc2hfYmFja3Ry YWNlCjIyMCAgICAgICAwLjE5ODMgIFt2ZHNvXSAodGdpZDoxMDI3NSByYW5n ZToweDdmZmZlYTUzNDAwMC0weDdmZmZlYTUzNTAwMCkgW3Zkc29dICh0Z2lk OjEwMjc1IHJhbmdlOjB4N2ZmZmVhNTM0MDAwLTB4N2ZmZmVhNTM1MDAwKQoy MTkgICAgICAgMC4xOTc0ICB2Y19jbGllbnQubmF0aXZlICAgICAgICAgY2Ft bEx3dF9nbGliX19lbnRlcl8xMDc5CjIwNiAgICAgICAwLjE4NTYgIHZjX2Ns aWVudC5uYXRpdmUgICAgICAgICBjYW1sTGlzdF9faXRlcl8xMDc0CjIwMiAg ICAgICAwLjE4MjAgIHZjX2NsaWVudC5uYXRpdmUgICAgICAgICBjYW1sX2Fw cGx5MgoxOTYgICAgICAgMC4xNzY2ICB2Y19jbGllbnQubmF0aXZlICAgICAg ICAgY2FtbF9jX2NhbGwKMTk0ICAgICAgIDAuMTc0OCAgdmNfY2xpZW50Lm5h dGl2ZSAgICAgICAgIGNhbWxfc2VuZDAKMTgwICAgICAgIDAuMTYyMiAgdmNf Y2xpZW50Lm5hdGl2ZSAgICAgICAgIGNhbWxIYXNodGJsX19yZXBsYWNlXzEx MTIKMTgwICAgICAgIDAuMTYyMiAgdmNfY2xpZW50Lm5hdGl2ZSAgICAgICAg IGNhbWxfYWxsb2Nfc3RyaW5nCjE3NiAgICAgICAwLjE1ODYgIHZjX2NsaWVu dC5uYXRpdmUgICAgICAgICBjYW1sX29ial9kdXAKMTc2ICAgICAgIDAuMTU4 NiAgdmNfY2xpZW50Lm5hdGl2ZSAgICAgICAgIGNhbWxfb2xkaWZ5X29uZQox NzMgICAgICAgMC4xNTU5ICB2Y19jbGllbnQubmF0aXZlICAgICAgICAgY2Ft bF9yZW1vdmVfZ2VuZXJhdGlvbmFsX2dsb2JhbF9yb290CjE3MSAgICAgICAw LjE1NDEgIHZjX2NsaWVudC5uYXRpdmUgICAgICAgICBjYW1sX2N1cnJ5M18y CgoKCgp2Y19jbGllbnQubmF0aXZlCkNQVTogSW50ZWwgU2FuZHkgQnJpZGdl IG1pY3JvYXJjaGl0ZWN0dXJlLCBzcGVlZCAyLjIwMWUrMDYgTUh6IChlc3Rp bWF0ZWQpCkNvdW50ZWQgTExDX01JU1NFUyBldmVudHMgKExhc3QgbGV2ZWwg Y2FjaGUgZGVtYW5kIHJlcXVlc3RzIGZyb20gdGhpcyBjb3JlIHRoYXQgbWlz c2VkIHRoZSBMTEMpIHdpdGggYSB1bml0IAptYXNrIG9mIDB4NDEgKE5vIHVu aXQgbWFzaykgY291bnQgMTAwMDAwCnNhbXBsZXMgICUgICAgICAgIGltYWdl IG5hbWUgICAgICAgICAgICAgICBzeW1ib2wgbmFtZQo1OTggICAgICA1My4z NDUyICB2Y19jbGllbnQubmF0aXZlICAgICAgICAgbWFya19zbGljZQoyNjEg ICAgICAyMy4yODI4ICB2Y19jbGllbnQubmF0aXZlICAgICAgICAgY2FtbF9w YWdlX3RhYmxlX2xvb2t1cAoyMyAgICAgICAgMi4wNTE3ICB2Y19jbGllbnQu bmF0aXZlICAgICAgICAgc3dlZXBfc2xpY2UKMTMgICAgICAgIDEuMTU5NyAg dmNfY2xpZW50Lm5hdGl2ZSAgICAgICAgIGNhbWxfZmxfYWxsb2NhdGUKNiAg ICAgICAgIDAuNTM1MiAgdmNfY2xpZW50Lm5hdGl2ZSAgICAgICAgIGNhbWxV cV9ndGtfX2Z1bl8xNDg0CjUgICAgICAgICAwLjQ0NjAgIHZjX2NsaWVudC5u YXRpdmUgICAgICAgICBjYW1sX2RlbGV0ZV9nbG9iYWxfcm9vdAo0ICAgICAg ICAgMC4zNTY4ICB2Y19jbGllbnQubmF0aXZlICAgICAgICAgY2FtbEVxdWV1 ZV9fcnVuXzExMTkKNCAgICAgICAgIDAuMzU2OCAgdmNfY2xpZW50Lm5hdGl2 ZSAgICAgICAgIGNhbWxIYXNodGJsX19maW5kXzEwOTMKNCAgICAgICAgIDAu MzU2OCAgdmNfY2xpZW50Lm5hdGl2ZSAgICAgICAgIGNhbWxMaXZpZGlzdmNf X05hbGJ1Zl9ieXRlc3RyZWFtX19zZWFyY2hfMTA0Nwo0ICAgICAgICAgMC4z NTY4ICB2Y19jbGllbnQubmF0aXZlICAgICAgICAgY2FtbE1lZGlhX2N0cmxf X2Z1bl8zMDU1CjQgICAgICAgICAwLjM1NjggIHZjX2NsaWVudC5uYXRpdmUg ICAgICAgICBjYW1sVW5peHF1ZXVlX3NlbGVjdF9fbWV0aG9kX3J1bl8xNjYy CjQgICAgICAgICAwLjM1NjggIHZjX2NsaWVudC5uYXRpdmUgICAgICAgICBj YW1sX2NhbGxiYWNrX2V4bgo0ICAgICAgICAgMC4zNTY4ICB2Y19jbGllbnQu bmF0aXZlICAgICAgICAgY2FtbF9pdGVyYXRlX2dsb2JhbF9yb290cwo0ICAg ICAgICAgMC4zNTY4ICB2Y19jbGllbnQubmF0aXZlICAgICAgICAgY2FtbF9t b2RpZnkKMyAgICAgICAgIDAuMjY3NiAgdmNfY2xpZW50Lm5hdGl2ZSAgICAg ICAgIGNhbWxBdWRpb19lbmNvZGVyX190cmFuc2Zlcl9hdWRpb19mcmFtZV8x MDUyCjMgICAgICAgICAwLjI2NzYgIHZjX2NsaWVudC5uYXRpdmUgICAgICAg ICBjYW1sQml0c3RyaW5nX3N0cnVjdHNfX3N0cmluZ19vZl9ydHBfZXh0XzEw MzAKMyAgICAgICAgIDAuMjY3NiAgdmNfY2xpZW50Lm5hdGl2ZSAgICAgICAg IGNhbWxIYXNodGJsX19yZXBsYWNlXzExMTIKMyAgICAgICAgIDAuMjY3NiAg dmNfY2xpZW50Lm5hdGl2ZSAgICAgICAgIGNhbWxMd3RfZ2xpYl9fbGVhdmVf MTA4NQozICAgICAgICAgMC4yNjc2ICB2Y19jbGllbnQubmF0aXZlICAgICAg ICAgY2FtbFNlcXVlbmNlcl9fc2VyaWFsaXplX2hlYWRlcl8yMjMxCjMgICAg ICAgICAwLjI2NzYgIHZjX2NsaWVudC5uYXRpdmUgICAgICAgICBjYW1sVW5p eHF1ZXVlX3NlbGVjdF9fZnVuXzIzNjYKMyAgICAgICAgIDAuMjY3NiAgdmNf Y2xpZW50Lm5hdGl2ZSAgICAgICAgIGNhbWxVcV9ndGtfX2NvZGVfYmVnaW4K MyAgICAgICAgIDAuMjY3NiAgdmNfY2xpZW50Lm5hdGl2ZSAgICAgICAgIGNh bWxfYXBwbHkyCjMgICAgICAgICAwLjI2NzYgIHZjX2NsaWVudC5uYXRpdmUg ICAgICAgICBjYW1sX2N1cnJ5M18yCjMgICAgICAgICAwLjI2NzYgIHZjX2Ns aWVudC5uYXRpdmUgICAgICAgICBjYW1sX2djX3N0YXQKMyAgICAgICAgIDAu MjY3NiAgdmNfY2xpZW50Lm5hdGl2ZSAgICAgICAgIGNhbWxfaGFzaF91bml2 X3BhcmFtCjMgICAgICAgICAwLjI2NzYgIHZjX2NsaWVudC5uYXRpdmUgICAg ICAgICBjYW1sX3NlbmQwCjMgICAgICAgICAwLjI2NzYgIHZjX2NsaWVudC5u YXRpdmUgICAgICAgICBjb21wYXJlX3ZhbAoyICAgICAgICAgMC4xNzg0ICB2 Y19jbGllbnQubmF0aXZlICAgICAgICAgY2FtbEJ1ZmZlcl9fY3JlYXRlXzEw MzkKMiAgICAgICAgIDAuMTc4NCAgdmNfY2xpZW50Lm5hdGl2ZSAgICAgICAg IGNhbWxMaXN0X19pdGVyXzEwNzQKMiAgICAgICAgIDAuMTc4NCAgdmNfY2xp ZW50Lm5hdGl2ZSAgICAgICAgIGNhbWxMd3RfX3dhaXRfMTI5MAoyICAgICAg ICAgMC4xNzg0ICB2Y19jbGllbnQubmF0aXZlICAgICAgICAgY2FtbEx3dF9z ZXF1ZW5jZV9fbG9vcF8xMDk4CjIgICAgICAgICAwLjE3ODQgIHZjX2NsaWVu dC5uYXRpdmUgICAgICAgICBjYW1sTWVkaWFfY3RybF9fZnVuXzMwODUKMiAg ICAgICAgIDAuMTc4NCAgdmNfY2xpZW50Lm5hdGl2ZSAgICAgICAgIGNhbWxN ZWRpYV9jdHJsX19yZWNlaXZlcl9jYmZ1bl8yMTIzCjIgICAgICAgICAwLjE3 ODQgIHZjX2NsaWVudC5uYXRpdmUgICAgICAgICBjYW1sUGVydmFzaXZlc19f bWluXzEwMjIKMiAgICAgICAgIDAuMTc4NCAgdmNfY2xpZW50Lm5hdGl2ZSAg ICAgICAgIGNhbWxQcm9maWxlc19fZmVjX3BlcmNlbnRhZ2VfMTIzMgoyICAg ICAgICAgMC4xNzg0ICB2Y19jbGllbnQubmF0aXZlICAgICAgICAgY2FtbFNj YW5mX19zY2FuXzE3MDIKMiAgICAgICAgIDAuMTc4NCAgdmNfY2xpZW50Lm5h dGl2ZSAgICAgICAgIGNhbWxTY2FuZl9fc2Nhbl9mb3JtYXRfMTY4NQoyICAg ICAgICAgMC4xNzg0ICB2Y19jbGllbnQubmF0aXZlICAgICAgICAgY2FtbFNl cXVlbmNlcl9fbXlfcHVzaF8yMjYwCjIgICAgICAgICAwLjE3ODQgIHZjX2Ns aWVudC5uYXRpdmUgICAgICAgICBjYW1sVW5peHF1ZXVlX3NlbGVjdF9fZnVu XzE4NjQKMiAgICAgICAgIDAuMTc4NCAgdmNfY2xpZW50Lm5hdGl2ZSAgICAg ICAgIGNhbWxVbml4cXVldWVfc2VsZWN0X19tZXRob2RfcHJvdGVjdF8xODAw CjIgICAgICAgICAwLjE3ODQgIHZjX2NsaWVudC5uYXRpdmUgICAgICAgICBj YW1sVW5peHF1ZXVlX3NlbGVjdF9fbWV0aG9kX3VxX2hhbmRsZXJfMTcyNgoy ICAgICAgICAgMC4xNzg0ICB2Y19jbGllbnQubmF0aXZlICAgICAgICAgY2Ft bF9jdXJyeTRfMQoyICAgICAgICAgMC4xNzg0ICB2Y19jbGllbnQubmF0aXZl ICAgICAgICAgY2FtbF9pbnNlcnRfZ2xvYmFsX3Jvb3QKCnZjX2NsaWVudF9v bGQubmF0aXZlCkNQVTogSW50ZWwgU2FuZHkgQnJpZGdlIG1pY3JvYXJjaGl0 ZWN0dXJlLCBzcGVlZCAyLjIwMWUrMDYgTUh6IChlc3RpbWF0ZWQpCkNvdW50 ZWQgTExDX01JU1NFUyBldmVudHMgKExhc3QgbGV2ZWwgY2FjaGUgZGVtYW5k IHJlcXVlc3RzIGZyb20gdGhpcyBjb3JlIHRoYXQgbWlzc2VkIHRoZSBMTEMp IHdpdGggYSB1bml0IG1hc2sgb2YgMHg0MSAoTm8gdW5pdCBtYXNrKSBjb3Vu dCAxMDAwMDAKc2FtcGxlcyAgJSAgICAgICAgc3ltYm9sIG5hbWUKMjQxMSAg ICAgNjUuODU2MyAgbWFya19zbGljZQo5MjMgICAgICAyNS4yMTE3ICBjYW1s X3BhZ2VfdGFibGVfbG9va3VwCjEwMSAgICAgICAyLjc1ODggIHN3ZWVwX3Ns aWNlCjEwICAgICAgICAwLjI3MzEgIGNhbWxfaXRlcmF0ZV9nbG9iYWxfcm9v dHMKOCAgICAgICAgIDAuMjE4NSAgY2FtbF9vbGRpZnlfbG9jYWxfcm9vdHMK NyAgICAgICAgIDAuMTkxMiAgY2FtbF9mbF9hbGxvY2F0ZQo3ICAgICAgICAg MC4xOTEyICBjYW1sX2ZsX21lcmdlX2Jsb2NrCjUgICAgICAgICAwLjEzNjYg IGNhbWxIYXNodGJsX19yZXBsYWNlXzExMTIKNSAgICAgICAgIDAuMTM2NiAg Y2FtbExpdmlkaXN2Y19fTmFsYnVmX2J5dGVzdHJlYW1fX3NlYXJjaF8xMDQ3 CjUgICAgICAgICAwLjEzNjYgIGNhbWxVcV9ndGtfX2Z1bl8xNDg0CjUgICAg ICAgICAwLjEzNjYgIGNhbWxfZGVsZXRlX2dsb2JhbF9yb290CjQgICAgICAg ICAwLjEwOTMgIGNhbWxMd3RfZ2xpYl9fZW50ZXJfMTA3OQo0ICAgICAgICAg MC4xMDkzICBjYW1sX2Rhcmtlbgo0ICAgICAgICAgMC4xMDkzICBjYW1sX3Nl bmQyCjMgICAgICAgICAwLjA4MTkgIGNhbWxCaXRzdHJpbmdfX19hZGRfYml0 c18xNTMyCjMgICAgICAgICAwLjA4MTkgIGNhbWxFcXVldWVfX3J1bl8xMTE5 CjMgICAgICAgICAwLjA4MTkgIGNhbWxMd3Rfc2VxdWVuY2VfX2xvb3BfMTA5 OAozICAgICAgICAgMC4wODE5ICBjYW1sU3Vic3RyZWFtX3NlcW51bV9fY29k ZV9iZWdpbgozICAgICAgICAgMC4wODE5ICBjYW1sX2FsbG9jX3N0cmluZwoz ICAgICAgICAgMC4wODE5ICBjb21wYXJlX3ZhbAozICAgICAgICAgMC4wODE5 ICBsd3RfZ2xpYl9nZXRfc291cmNlcwoyICAgICAgICAgMC4wNTQ2ICBjYW1s Qml0c3RyaW5nX19hZGRfYnl0ZV8xNTE1CjIgICAgICAgICAwLjA1NDYgIGNh bWxCdWZmZXJfX2NyZWF0ZV8xMDM5CjIgICAgICAgICAwLjA1NDYgIGNhbWxH T2JqX19tZXRob2RfZHJhd18zMzI1CjIgICAgICAgICAwLjA1NDYgIGNhbWxI YXNodGJsX19maW5kXzEwOTMKMiAgICAgICAgIDAuMDU0NiAgY2FtbEhhc2h0 YmxfX2ZpbmRfMTE5OAoyICAgICAgICAgMC4wNTQ2ICBjYW1sSGFzaHRibF9f aXRlcl8xMTI5CjIgICAgICAgICAwLjA1NDYgIGNhbWxMaXN0X19pdGVyXzEw NzQKMiAgICAgICAgIDAuMDU0NiAgY2FtbExpdmlkaWNvcmVfX0ZpbHRlcl9f ZXZhbF90cmVlXzExMTAKMiAgICAgICAgIDAuMDU0NiAgY2FtbE1jc3ZjX3R5 cGVzX19hZGRfaGVhZGVyXzExNzUKMiAgICAgICAgIDAuMDU0NiAgY2FtbE1l ZGlhX2N0cmxfX2Z1bl8zMDg1CjIgICAgICAgICAwLjA1NDYgIGNhbWxQZXJ2 YXNpdmVzX18kNWVfMTExMgoyICAgICAgICAgMC4wNTQ2ICBjYW1sU3Vic3Ry ZWFtX3NlcW51bV9fbXlfcHVzaF8xMTk3CjIgICAgICAgICAwLjA1NDYgIGNh bWxVbml4cXVldWVfc2VsZWN0X19mdW5fMjMxNAoyICAgICAgICAgMC4wNTQ2 ICBjYW1sVW5peHF1ZXVlX3V0aWxfX2Rsb2dyXzEwNjAKMiAgICAgICAgIDAu MDU0NiAgY2FtbF9hcHBseTIKMiAgICAgICAgIDAuMDU0NiAgY2FtbF9hcHBs eTMKMiAgICAgICAgIDAuMDU0NiAgY2FtbF9jX2NhbGwKMiAgICAgICAgIDAu MDU0NiAgY2FtbF9jdXJyeTNfMQoyICAgICAgICAgMC4wNTQ2ICBjYW1sX2Rv X3Jvb3RzCjIgICAgICAgICAwLjA1NDYgIGNhbWxfZ2Nfc3RhdAoyICAgICAg ICAgMC4wNTQ2ICBjYW1sX2hhc2hfdW5pdl9wYXJhbQoyICAgICAgICAgMC4w NTQ2ICBjYW1sX21vZGlmeQoyICAgICAgICAgMC4wNTQ2ICBmZGxpc3RfdG9f ZmRzZXQKCgphdCBzdGFydHVwIGl0IGxvb2tzIGxpa2UgdGhpczoKdG9wIC0g MTI6MTY6MDMgdXAgMiBkYXlzLCAgMjozNywgMzUgdXNlcnMsICBsb2FkIGF2 ZXJhZ2U6IDAuMDIsIDAuMDIsIDAuMDUKVGFza3M6ICAgMSB0b3RhbCwgICAw IHJ1bm5pbmcsICAgMSBzbGVlcGluZywgICAwIHN0b3BwZWQsICAgMCB6b21i aWUKQ3B1KHMpOiAxOS43JXVzLCAgNC4xJXN5LCAgMC4wJW5pLCA3NS43JWlk LCAgMC4yJXdhLCAgMC4wJWhpLCAgMC4zJXNpLCAgMC4wJXN0Ck1lbTogICA0 MDA0NzM2ayB0b3RhbCwgIDM2MzQ0ODRrIHVzZWQsICAgMzcwMjUyayBmcmVl LCAgIDI2Mzk3NmsgYnVmZmVycwpTd2FwOiAgNDA3MDM5NmsgdG90YWwsICAg IDE0MTYwayB1c2VkLCAgNDA1NjIzNmsgZnJlZSwgIDE0MjQyMTZrIGNhY2hl ZAoKICBQSUQgVVNFUiAgICAgIFBSICBOSSAgVklSVCAgUkVTICBTSFIgUyAl Q1BVICVNRU0gICAgVElNRSsgIENPTU1BTkQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKMTI5MDYgaGFucyAgICAgIDIwICAgMCAgNDUz bSAgNzZtICAxM20gUyAgIDE0ICAyLjAgICAwOjE0LjYyIHZjX2NsaWVudF9v bGQubiAgICAKCkNQVTogSW50ZWwgU2FuZHkgQnJpZGdlIG1pY3JvYXJjaGl0 ZWN0dXJlLCBzcGVlZCAyLjIwMWUrMDYgTUh6IChlc3RpbWF0ZWQpCkNvdW50 ZWQgQ1BVX0NMS19VTkhBTFRFRCBldmVudHMgKENsb2NrIGN5Y2xlcyB3aGVu IG5vdCBoYWx0ZWQpIHdpdGggYSB1bml0IG1hc2sgb2YgMHgwMCAoTm8gdW5p dCBtYXNrKSBjb3VudCAxMDAwMDAKc2FtcGxlcyAgJSAgICAgICAgaW1hZ2Ug bmFtZSAgICAgICAgICAgICAgIHN5bWJvbCBuYW1lCjEyMDQ2ICAgIDI1LjIw NDUgIHZjX2NsaWVudF9vbGQubmF0aXZlICAgICBtYXJrX3NsaWNlCjg1OTAg ICAgIDE3Ljk3MzMgIHZjX2NsaWVudF9vbGQubmF0aXZlICAgICBjYW1sX3Bh Z2VfdGFibGVfbG9va3VwCjYzMTEgICAgIDEzLjIwNDkgIHZjX2NsaWVudF9v bGQubmF0aXZlICAgICBzd2VlcF9zbGljZQo3MTggICAgICAgMS41MDIzICB2 Y19jbGllbnRfb2xkLm5hdGl2ZSAgICAgY2FtbExpdmlkaXN2Y19fTmFsYnVm X3Rvb2xzX19yZXBsYWNlX3BhdHRlcm5fMTAzMwo2MzMgICAgICAgMS4zMjQ1 ICB2Y19jbGllbnRfb2xkLm5hdGl2ZSAgICAgY2FtbF9mbF9hbGxvY2F0ZQo1 MzYgICAgICAgMS4xMjE1ICB2Y19jbGllbnRfb2xkLm5hdGl2ZSAgICAgY2Ft bF9tb2RpZnkKNTA1ICAgICAgIDEuMDU2NiAgdmNfY2xpZW50X29sZC5uYXRp dmUgICAgIGNhbWxfZG9fcm9vdHMKNDg0ICAgICAgIDEuMDEyNyAgdmNfY2xp ZW50X29sZC5uYXRpdmUgICAgIGNhbWxMaXZpZGlzdmNfX05hbGJ1Zl9ieXRl c3RyZWFtX19zZWFyY2hfMTA0Nwo0ODMgICAgICAgMS4wMTA2ICB2Y19jbGll bnRfb2xkLm5hdGl2ZSAgICAgY2FtbF9pdGVyYXRlX2dsb2JhbF9yb290cwo0 NzEgICAgICAgMC45ODU1ICB2Y19jbGllbnRfb2xkLm5hdGl2ZSAgICAgY2Ft bF9kYXJrZW4KNDEyICAgICAgIDAuODYyMSAgdmNfY2xpZW50X29sZC5uYXRp dmUgICAgIGNhbWxfZGVsZXRlX2dsb2JhbF9yb290CjM3MSAgICAgICAwLjc3 NjMgIHZjX2NsaWVudF9vbGQubmF0aXZlICAgICBjYW1sX29sZGlmeV9sb2Nh bF9yb290cwozMjMgICAgICAgMC42NzU4ICB2Y19jbGllbnRfb2xkLm5hdGl2 ZSAgICAgY2FtbF9pbnNlcnRfZ2xvYmFsX3Jvb3QKMzA0ICAgICAgIDAuNjM2 MSAgdmNfY2xpZW50X29sZC5uYXRpdmUgICAgIGNhbWxfZmxfbWVyZ2VfYmxv Y2sKMjkxICAgICAgIDAuNjA4OSAgdmNfY2xpZW50X29sZC5uYXRpdmUgICAg IGx3dF9nbGliX2dldF9zb3VyY2VzCjI2NiAgICAgICAwLjU1NjYgIHZjX2Ns aWVudF9vbGQubmF0aXZlICAgICBjYW1sSGFzaHRibF9fZmluZF8xMDkzCjIx NiAgICAgICAwLjQ1MTkgIFt2ZHNvXSAodGdpZDoxMjkwNiByYW5nZToweDdm ZmZiYTVmYzAwMC0weDdmZmZiYTVmZDAwMCkgW3Zkc29dICh0Z2lkOjEyOTA2 IHJhbmdlOjB4N2ZmZmJhNWZjMDAwLTB4N2ZmZmJhNWZkMDAwKQoyMTYgICAg ICAgMC40NTE5ICB2Y19jbGllbnRfb2xkLm5hdGl2ZSAgICAgY29tcGFyZV92 YWwKMjE1ICAgICAgIDAuNDQ5OSAgdmNfY2xpZW50X29sZC5uYXRpdmUgICAg IGNhbWxMd3RfZ2xpYl9fZW50ZXJfMTA3OQoyMDUgICAgICAgMC40Mjg5ICB2 Y19jbGllbnRfb2xkLm5hdGl2ZSAgICAgY2FtbFVxX2d0a19fZnVuXzE0ODQK MjAyICAgICAgIDAuNDIyNyAgdmNfY2xpZW50X29sZC5uYXRpdmUgICAgIGNh bWxfYWxsb2Nfc3RyaW5nCjIwMCAgICAgICAwLjQxODUgIHZjX2NsaWVudF9v bGQubmF0aXZlICAgICBjYW1sX2NfY2FsbAoxOTMgICAgICAgMC40MDM4ICB2 Y19jbGllbnRfb2xkLm5hdGl2ZSAgICAgY2FtbF9vbGRpZnlfb25lCjE5MiAg ICAgICAwLjQwMTcgIHZjX2NsaWVudF9vbGQubmF0aXZlICAgICBjYW1sX3N0 YXNoX2JhY2t0cmFjZQoxODcgICAgICAgMC4zOTEzICB2Y19jbGllbnRfb2xk Lm5hdGl2ZSAgICAgY2FtbE1lZGlhX2N0cmxfX2Z1bl8zMDU1CgoK --14dae93411e160a98404bcd83b61--