Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oUgZM-00023q-VB for pgsql-hackers@arkaria.postgresql.org; Sun, 04 Sep 2022 03:45:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oUgZL-0001SR-Jo for pgsql-hackers@arkaria.postgresql.org; Sun, 04 Sep 2022 03:45:11 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oUgZL-0001RD-5c for pgsql-hackers@lists.postgresql.org; Sun, 04 Sep 2022 03:45:11 +0000 Received: from mail-qt1-x836.google.com ([2607:f8b0:4864:20::836]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1oUgZH-0004KB-6y for pgsql-hackers@lists.postgresql.org; Sun, 04 Sep 2022 03:45:10 +0000 Received: by mail-qt1-x836.google.com with SMTP id g14so4212300qto.11 for ; Sat, 03 Sep 2022 20:45:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=crunchydata.com; s=google; h=user-agent:mime-version:date:organization:references:in-reply-to:cc :to:reply-to:from:subject:message-id:from:to:cc:subject:date; bh=YV4qkklrRe8n9yD/nwEe84GQb/TWKn/ar5e6P0IV0og=; b=kgt4Ob2F4HlaGo96V+WSgghIsS2tS5J84nucm2lCeNT/GtvfOoqNXUILtAAkFRsUyb xc/AYrYY2N1IfL+tqGOrwk64PPGA7S0db/q/ftwixCoJ/2tLx1MPxYn4w8Is2c3Fn0+P O7uz2fGvnJMtxaVyjMxsrCMi408Ai9WEke8CIeMbqFvgj/khgVxuK5YHgWu4CTwrKkGf OKa8YJn/8gMwDldjTlMGF2Rn/YfHUcGACKccsfeiWODSuW1Z6SydZNqnQBHdx2A/eZy/ dPCHY0Zj3NGtDL51HFkXPPEEymfBMUwLT1vs5e6s7S3zuN6rW1HXpbhWU3HfZ+E06cla sTlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=user-agent:mime-version:date:organization:references:in-reply-to:cc :to:reply-to:from:subject:message-id:x-gm-message-state:from:to:cc :subject:date; bh=YV4qkklrRe8n9yD/nwEe84GQb/TWKn/ar5e6P0IV0og=; b=43o2o7QF5fXW72PQBznSPvtwekmzIFT13D/cu4nAT9F0SBPUn20ILjKBFnUKSNZhgn LQ9PHQqr5Bgkdtipt/66VdsimQkxLOnD85rlcg4dkqicEmlCQ++xZmuRiCPM4NBL7bez XrcaAXES4vpR3UcIvKVniKhO3bK9lXKubP7sonWmMbZ7uVORYvTLIR7NCCK5joX/sNeo G3wlmn5rgY63pvJK2Nr/O19oEBBZhLrxKMd6PsKhPxugPeYKN+MmSbkN5LEI5ghg9RYR 4vdoTWome5ejBIwIG+JH84Ll6yX8SLyozsNo7p7y8vj3GwaGo8klOMUM1PfjVuQLngbD DlTg== X-Gm-Message-State: ACgBeo27ON1aS46CZ7SYFmoJ+U4IKWTJQpbFRsGPUAABdyaXgo+BW2Jn W4Wr2dt8ZXU59Uksz4aoKWIFRsP+1SNGGA== X-Google-Smtp-Source: AA6agR4FN/wnGLycsKOZKz6LQigx7G1U5IMGlrTZMhB2DRayw2yzzNbVQ64S/PsE9gsh2J7sLZjZSw== X-Received: by 2002:ac8:574e:0:b0:344:555f:cbe4 with SMTP id 14-20020ac8574e000000b00344555fcbe4mr34782190qtx.276.1662263104988; Sat, 03 Sep 2022 20:45:04 -0700 (PDT) Received: from raker.lan (cpe-24-163-67-44.nc.res.rr.com. [24.163.67.44]) by smtp.gmail.com with ESMTPSA id u17-20020a05620a431100b006b9c355ed75sm5017609qko.70.2022.09.03.20.45.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 Sep 2022 20:45:04 -0700 (PDT) Message-ID: <3178e9a1b7acbcf023fafed68ca48d76afc07907.camel@crunchydata.com> Subject: Re: Add the ability to limit the amount of memory that can be allocated to backends. From: Reid Thompson Reply-To: reid.thompson@crunchydata.com To: pgsql-hackers@lists.postgresql.org Cc: reid.thompson@crunchydata.com In-Reply-To: <20220831173457.GX31833@telsasoft.com> References: <20220831173457.GX31833@telsasoft.com> Organization: Crunchy Data Content-Type: multipart/mixed; boundary="=-0w6Cpo0aaLaBPahXMMfk" Date: Sat, 03 Sep 2022 23:40:03 -0400 MIME-Version: 1.0 User-Agent: Evolution 3.45.1 Compiled: 2022-06-07 10:22:05 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-0w6Cpo0aaLaBPahXMMfk Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, 2022-08-31 at 12:34 -0500, Justin Pryzby wrote: > You should name the patches with different prefixes, like > 001,002,003=C2=A0 Otherwise, cfbot may try to apply them in the wrong > order. > git format-patch is the usual tool for that. Thanks for the pointer. My experience with git in the past has been minimal and basic. > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Specifies a limit to the am= ount of memory (MB) that may be > > allocated to >=20 > MB are just the default unit, right ? > The user should be allowed to write max_total_backend_memory=3D'2GB' Correct. Default units are MB. Other unit types are converted to MB. > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 causing that backends curre= nt query/transaction to fail. >=20 > backend's > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 allocated exceeding the lim= it. Further requests will not >=20 > allocated, and exceed the limit >=20 > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0if (MyAuxProcType !=3D NotAn= AuxProcess) > The double negative is confusing, so could use a comment. > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0elog(WARNING, > I think it should be ereport() rather than elog(), which is > internal-only, and not-translated. Corrected/added the the above items. Attached patches with the corrections. > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 0, 0, INT_MAX, > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 NULL, NULL, NULL > I think this needs a maximum like INT_MAX/1024/1024 Is this noting that we'd set a ceiling of 2048MB? > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0for (i =3D 1; i <=3D NumBack= endStatSlots; i++) > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0{ >=20 > It's looping over every backend for each allocation. > Do you know if there's any performance impact of that ? I'm not very familiar with how to test performance impact, I'm open to suggestions. I have performed the below pgbench tests and noted the basic tps differences in the table. Test 1: branch master CFLAGS=3D"-I/usr/include/python3.8/ " /home/rthompso/src/git/postgres/confi= gure --silent --prefix=3D/home/rthompso/src/git/postgres/install/master --w= ith-openssl --with-tcl --with-tclconfig=3D/usr/lib/tcl8.6 --with-perl --wit= h-libxml --with-libxslt --with-python --with-gssapi --with-systemd --with-l= dap --enable-nls make -s -j12 && make -s install initdb default postgresql.conf settings init pgbench pgbench -U rthompso -p 5433 -h localhost -i -s 50 testpgbench 10 iterations for ctr in {1..10}; do { time pgbench -p 5433 -h localhost -c 10 -j 10= -t 50000 testpgbench; } 2>&1 | tee -a pgstatsResultsNoLimitSet; done Test 2: branch pg-stat-activity-backend-memory-allocated CFLAGS=3D"-I/usr/include/python3.8/ " /home/rthompso/src/git/postgres/confi= gure --silent --prefix=3D/home/rthompso/src/git/postgres/install/pg-stats-m= emory/ --with-openssl --with-tcl --with-tclconfig=3D/usr/lib/tcl8.6 --with-= perl --with-libxml --with-libxslt --with-python --with-gssapi --with-system= d --with-ldap --enable-nls make -s -j12 && make -s install initdb=20 default postgresql.conf settings init pgbench pgbench -U rthompso -p 5433 -h localhost -i -s 50 testpgbench 10 iterations for ctr in {1..10}; do { time pgbench -p 5433 -h localhost -c 10 -j 1= 0 -t 50000 testpgbench; } 2>&1 | tee -a pgstatsResultsPg-stats-memory; done Test 3: branch dev-max-memory CFLAGS=3D"-I/usr/include/python3.8/ " /home/rthompso/src/git/postgres/confi= gure --silent --prefix=3D/home/rthompso/src/git/postgres/install/dev-max-me= mory/ --with-openssl --with-tcl --with-tclconfig=3D/usr/lib/tcl8.6 --with-p= erl --with-libxml --with-libxslt --with-python --with-gssapi --with-systemd= --with-ldap --enable-nls make -s -j12 && make -s install initdb=20 default postgresql.conf settings init pgbench pgbench -U rthompso -p 5433 -h localhost -i -s 50 testpgbench 10 iterations for ctr in {1..10}; do { time pgbench -p 5433 -h localhost -c 10 -j 1= 0 -t 50000 testpgbench; } 2>&1 | tee -a pgstatsResultsDev-max-memory; done Test 4: branch dev-max-memory CFLAGS=3D"-I/usr/include/python3.8/ " /home/rthompso/src/git/postgres/confi= gure --silent --prefix=3D/home/rthompso/src/git/postgres/install/dev-max-me= mory/ --with-openssl --with-tcl --with-tclconfig=3D/usr/lib/tcl8.6 --with-p= erl --with-libxml --with-libxslt --with-python --with-gssapi --with-systemd= --with-ldap --enable-nls make -s -j12 && make -s install initdb=20 non-default postgresql.conf setting for max_total_backend_memory =3D 100MB init pgbench pgbench -U rthompso -p 5433 -h localhost -i -s 50 testpgbench 10 iterations for ctr in {1..10}; do { time pgbench -p 5433 -h localhost -c 10 -j 1= 0 -t 50000 testpgbench; } 2>&1 | tee -a pgstatsResultsDev-max-memory100MB; = done Laptop 11th Gen Intel(R) Core(TM) i7-11850H @ 2.50GHz 8 Cores 16 threads 32GB RAM SSD drive Averages from the 10 runs and tps difference over the 10 runs |------------------+------------------+------------------------+-----------= --------+------------------+-------------------+---------------+-----------= -------| | Test Run | Master | Track Memory Allocated | Diff from = Master | Max Mem off | Diff from Master | Max Mem 100MB | Diff from = Master | | Set 1 | Test 1 | Test 2 | = | Test 3 | | Test 4 | = | | latency average | 2.43390909090909 | 2.44327272727273 | = | 2.44381818181818 | | 2.6843 | = | | tps inc conn est | 3398.99291372727 | 3385.40984336364 | -13.583070= 363637 | 3385.08184309091 | -13.9110706363631 | 3729.5363413 | 330.543427= 57273 | | tps exc conn est | 3399.12185727273 | 3385.52527490909 | -13.596582= 3636366 | 3385.22100872727 | -13.9008485454547 | 3729.7097607 | 330.587903= 42727 | |------------------+------------------+------------------------+-----------= --------+------------------+-------------------+---------------+-----------= -------| | Set 2 | | | = | | | | = | | latency average | 2.691 | 2.6895 | 2 = | 2.69 | 3 | 2.6827 | 4 = | | tps inc conn est | 3719.56 | 3721.7587106 | 2.1987106 = | 3720.3 | .74 | 3730.86 | 11.30 = | | tps exc conn est | 3719.71 | 3721.9268465 | 2.2168465 = | 3720.47 | .76 | 3731.02 | 11.31 = | |------------------+------------------+------------------------+-----------= --------+------------------+-------------------+---------------+-----------= -------| > I think it may be necessary to track the current allocation size in > shared memory (with atomic increments?).=C2=A0 Maybe decrements would nee= d > to > be exactly accounted for, or otherwise Assert() that the value is not > negative.=C2=A0 I don't know how expensive it'd be to have conditionals > for > each decrement, but maybe the value would only be decremented at > strategic times, like at transaction commit or backend shutdown. >=20 --=20 Reid Thompson Senior Software Engineer Crunchy Data, Inc. reid.thompson@crunchydata.com www.crunchydata.com --=-0w6Cpo0aaLaBPahXMMfk Content-Disposition: attachment; filename*0=0002-Add-the-ability-to-limit-the-amount-of-memory-that-c.pat; filename*1=ch Content-Type: text/x-patch; name="0002-Add-the-ability-to-limit-the-amount-of-memory-that-c.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA1N2E3OWI1ZjcyYWY1MTBmOGM0YjllYTY1ZjVmZmI0ZmUxZmI3Nzk4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSZWlkIFRob21wc29uIDxqcmVpZHRob21wc29uQG5jLnJyLmNv bT4KRGF0ZTogU2F0LCA0IEp1biAyMDIyIDIyOjIzOjU5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAy LzJdIEFkZCB0aGUgYWJpbGl0eSB0byBsaW1pdCB0aGUgYW1vdW50IG9mIG1lbW9yeSB0aGF0IGNh biBiZQogYWxsb2NhdGVkIHRvIGJhY2tlbmRzLgoKVGhpcyBidWlsZHMgb24gdGhlIHdvcmsgdGhh dCBhZGRzIGJhY2tlbmQgbWVtb3J5IGFsbG9jYXRlZCB0byBwZ19zdGF0X2FjdGl2aXR5LgoKQWRk IEdVQyB2YXJpYWJsZSBtYXhfdG90YWxfYmFja2VuZF9tZW1vcnkuCgpTcGVjaWZpZXMgYSBsaW1p dCB0byB0aGUgYW1vdW50IG9mIG1lbW9yeSAoTUIpIHRoYXQgbWF5IGJlIGFsbG9jYXRlZCB0byBi YWNrZW5kcwppbiB0b3RhbCAoaS5lLiB0aGlzIGlzIG5vdCBhIHBlciB1c2VyIG9yIHBlciBiYWNr ZW5kIGxpbWl0KS4gSWYgdW5zZXQsIG9yIHNldCB0bwowIGl0IGlzIGRpc2FibGVkLiBJdCBpcyBp bnRlbmRlZCBhcyBhIHJlc291cmNlIHRvIGhlbHAgYXZvaWQgdGhlIE9PTSBraWxsZXIgb24KTElO VVggYW5kIG1hbmFnZSByZXNvdXJjZXMgaW4gZ2VuZXJhbC4gQSBiYWNrZW5kIHJlcXVlc3QgdGhh dCB3b3VsZCBwdXNoIHRoZQp0b3RhbCBvdmVyIHRoZSBsaW1pdCB3aWxsIGJlIGRlbmllZCB3aXRo IGFuIG91dCBvZiBtZW1vcnkgZXJyb3IgY2F1c2luZyB0aGF0CmJhY2tlbmQncyBjdXJyZW50IHF1 ZXJ5L3RyYW5zYWN0aW9uIHRvIGZhaWwuIER1ZSB0byB0aGUgZHluYW1pYyBuYXR1cmUgb2YgbWVt b3J5CmFsbG9jYXRpb25zLCB0aGlzIGxpbWl0IGlzIG5vdCBleGFjdC4gSWYgd2l0aGluIDEuNU1C IG9mIHRoZSBsaW1pdCBhbmQgdHdvCmJhY2tlbmRzIHJlcXVlc3QgMU1CIGVhY2ggYXQgdGhlIHNh bWUgdGltZSBib3RoIG1heSBiZSBhbGxvY2F0ZWQsIGFuZCBleGNlZWQgdGhlCmxpbWl0LiBGdXJ0 aGVyIHJlcXVlc3RzIHdpbGwgbm90IGJlIGFsbG9jYXRlZCB1bnRpbCBkcm9wcGluZyBiZWxvdyB0 aGUgbGltaXQuCktlZXAgdGhpcyBpbiBtaW5kIHdoZW4gc2V0dGluZyB0aGlzIHZhbHVlLiBUaGlz IGxpbWl0IGRvZXMgbm90IGFmZmVjdCBhdXhpbGlhcnkKYmFja2VuZCBwcm9jZXNzZXMuIEJhY2tl bmQgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBkaXNwbGF5ZWQgaW4gdGhlCnBnX3N0YXRfYWN0aXZp dHkgdmlldy4KLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAg ICAgfCAgMjYgKysrKysKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9pbXBsLmMgICAgICAg ICAgICB8ICAxMiArKwogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFja2VuZF9zdGF0dXMu YyAgIHwgMTA3ICsrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMu YyAgICAgICAgICAgICAgICAgIHwgIDExICsrCiBzcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3Rn cmVzcWwuY29uZi5zYW1wbGUgfCAgIDMgKwogc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9hc2V0LmMg ICAgICAgICAgICAgICAgIHwgIDE3ICsrKwogc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9nZW5lcmF0 aW9uLmMgICAgICAgICAgIHwgICA5ICsrCiBzcmMvYmFja2VuZC91dGlscy9tbWdyL3NsYWIuYyAg ICAgICAgICAgICAgICAgfCAgIDggKysKIHNyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3RhdHVz LmggICAgICAgICAgICB8ICAgMiArCiA5IGZpbGVzIGNoYW5nZWQsIDE5NSBpbnNlcnRpb25zKCsp CgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nv bmZpZy5zZ21sCmluZGV4IGE1Y2Q0ZTQ0YzcuLmU3MGVhNzFiYTEgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTIw NzksNiArMjA3OSwzMiBAQCBpbmNsdWRlX2RpciAnY29uZi5kJwogICAgICAgPC9saXN0aXRlbT4K ICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLW1heC10 b3RhbC1iYWNrZW5kLW1lbW9yeSIgeHJlZmxhYmVsPSJtYXhfdG90YWxfYmFja2VuZF9tZW1vcnki PgorICAgICAgPHRlcm0+PHZhcm5hbWU+bWF4X3RvdGFsX2JhY2tlbmRfbWVtb3J5PC92YXJuYW1l PiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmlt YXJ5Pjx2YXJuYW1lPm1heF90b3RhbF9iYWNrZW5kX21lbW9yeTwvdmFybmFtZT4gY29uZmlndXJh dGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVy bT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgU3BlY2lmaWVzIGEg bGltaXQgdG8gdGhlIGFtb3VudCBvZiBtZW1vcnkgKE1CKSB0aGF0IG1heSBiZSBhbGxvY2F0ZWQg dG8KKyAgICAgICAgYmFja2VuZHMgaW4gdG90YWwgKGkuZS4gdGhpcyBpcyBub3QgYSBwZXIgdXNl ciBvciBwZXIgYmFja2VuZCBsaW1pdCkuCisgICAgICAgIElmIHVuc2V0LCBvciBzZXQgdG8gMCBp dCBpcyBkaXNhYmxlZC4gIEEgYmFja2VuZCByZXF1ZXN0IHRoYXQgd291bGQKKyAgICAgICAgcHVz aCB0aGUgdG90YWwgb3ZlciB0aGUgbGltaXQgd2lsbCBiZSBkZW5pZWQgd2l0aCBhbiBvdXQgb2Yg bWVtb3J5CisgICAgICAgIGVycm9yIGNhdXNpbmcgdGhhdCBiYWNrZW5kJ3MgY3VycmVudCBxdWVy eS90cmFuc2FjdGlvbiB0byBmYWlsLiBEdWUgdG8KKyAgICAgICAgdGhlIGR5bmFtaWMgbmF0dXJl IG9mIG1lbW9yeSBhbGxvY2F0aW9ucywgdGhpcyBsaW1pdCBpcyBub3QgZXhhY3QuIElmCisgICAg ICAgIHdpdGhpbiAxLjVNQiBvZiB0aGUgbGltaXQgYW5kIHR3byBiYWNrZW5kcyByZXF1ZXN0IDFN QiBlYWNoIGF0IHRoZSBzYW1lCisgICAgICAgIHRpbWUgYm90aCBtYXkgYmUgYWxsb2NhdGVkLCBh bmQgZXhjZWVkIHRoZSBsaW1pdC4gRnVydGhlciByZXF1ZXN0cyB3aWxsCisgICAgICAgIG5vdCBi ZSBhbGxvY2F0ZWQgdW50aWwgZHJvcHBpbmcgYmVsb3cgdGhlIGxpbWl0LiBLZWVwIHRoaXMgaW4g bWluZCB3aGVuCisgICAgICAgIHNldHRpbmcgdGhpcyB2YWx1ZS4gVGhpcyBsaW1pdCBkb2VzIG5v dCBhZmZlY3QgYXV4aWxpYXJ5IGJhY2tlbmQKKyAgICAgICAgcHJvY2Vzc2VzIDx4cmVmIGxpbmtl bmQ9Imdsb3NzYXJ5LWF1eGlsaWFyeS1wcm9jIi8+IC4gQmFja2VuZCBtZW1vcnkKKyAgICAgICAg YWxsb2NhdGlvbnMgKDx2YXJuYW1lPmJhY2tlbmRfbWVtX2FsbG9jYXRlZDwvdmFybmFtZT4pIGFy ZSBkaXNwbGF5ZWQgaW4KKyAgICAgICAgdGhlIDxsaW5rIGxpbmtlbmQ9Im1vbml0b3JpbmctcGct c3RhdC1hY3Rpdml0eS12aWV3Ij48c3RydWN0bmFtZT5wZ19zdGF0X2FjdGl2aXR5PC9zdHJ1Y3Ru YW1lPjwvbGluaz4KKyAgICAgICAgdmlldy4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3Rp dGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICAg PC9zZWN0Mj4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtX2ltcGwu YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9pbXBsLmMKaW5kZXggMzM1NmJiNjViNS4u Y2MwNjEwNTZhMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtX2ltcGwu YworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc21faW1wbC5jCkBAIC0yNTMsNiArMjUz LDEwIEBAIGRzbV9pbXBsX3Bvc2l4KGRzbV9vcCBvcCwgZHNtX2hhbmRsZSBoYW5kbGUsIFNpemUg cmVxdWVzdF9zaXplLAogCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKKwkvKiBEbyBub3QgZXhjZWVkIG1h eGltdW0gYWxsb3dlZCBtZW1vcnkgYWxsb2NhdGlvbiAqLworCWlmIChvcCA9PSBEU01fT1BfQ1JF QVRFICYmIGV4Y2VlZHNfbWF4X3RvdGFsX2JrZW5kX21lbShyZXF1ZXN0X3NpemUpKQorCQlyZXR1 cm4gZmFsc2U7CisKIAkvKgogCSAqIENyZWF0ZSBuZXcgc2VnbWVudCBvciBvcGVuIGFuIGV4aXN0 aW5nIG9uZSBmb3IgYXR0YWNoLgogCSAqCkBAIC01MjQsNiArNTI4LDEwIEBAIGRzbV9pbXBsX3N5 c3YoZHNtX29wIG9wLCBkc21faGFuZGxlIGhhbmRsZSwgU2l6ZSByZXF1ZXN0X3NpemUsCiAJCWlu dAkJCWZsYWdzID0gSVBDUHJvdGVjdGlvbjsKIAkJc2l6ZV90CQlzZWdzaXplOwogCisJCS8qIERv IG5vdCBleGNlZWQgbWF4aW11bSBhbGxvd2VkIG1lbW9yeSBhbGxvY2F0aW9uICovCisJCWlmIChv cCA9PSBEU01fT1BfQ1JFQVRFICYmIGV4Y2VlZHNfbWF4X3RvdGFsX2JrZW5kX21lbShyZXF1ZXN0 X3NpemUpKQorCQkJcmV0dXJuIGZhbHNlOworCiAJCS8qCiAJCSAqIEFsbG9jYXRlIHRoZSBtZW1v cnkgQkVGT1JFIGFjcXVpcmluZyB0aGUgcmVzb3VyY2UsIHNvIHRoYXQgd2UgZG9uJ3QKIAkJICog bGVhayB0aGUgcmVzb3VyY2UgaWYgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHMuCkBAIC03MTgsNiAr NzI2LDEwIEBAIGRzbV9pbXBsX3dpbmRvd3MoZHNtX29wIG9wLCBkc21faGFuZGxlIGhhbmRsZSwg U2l6ZSByZXF1ZXN0X3NpemUsCiAJCXJldHVybiB0cnVlOwogCX0KIAorCS8qIERvIG5vdCBleGNl ZWQgbWF4aW11bSBhbGxvd2VkIG1lbW9yeSBhbGxvY2F0aW9uICovCisJaWYgKG9wID09IERTTV9P UF9DUkVBVEUgJiYgZXhjZWVkc19tYXhfdG90YWxfYmtlbmRfbWVtKHJlcXVlc3Rfc2l6ZSkpCisJ CXJldHVybiBmYWxzZTsKKwogCS8qIENyZWF0ZSBuZXcgc2VnbWVudCBvciBvcGVuIGFuIGV4aXN0 aW5nIG9uZSBmb3IgYXR0YWNoLiAqLwogCWlmIChvcCA9PSBEU01fT1BfQ1JFQVRFKQogCXsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tlbmRfc3RhdHVzLmMgYi9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1cy5jCmluZGV4IDQ1ZGEzYWYy MTMuLjhlZjliMGZmZDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2Jh Y2tlbmRfc3RhdHVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFja2VuZF9z dGF0dXMuYwpAQCAtNDQsNiArNDQsOCBAQAogICovCiBib29sCQlwZ3N0YXRfdHJhY2tfYWN0aXZp dGllcyA9IGZhbHNlOwogaW50CQkJcGdzdGF0X3RyYWNrX2FjdGl2aXR5X3F1ZXJ5X3NpemUgPSAx MDI0OworLyogTWF4IGJhY2tlbmQgbWVtb3J5IGFsbG9jYXRpb24gYWxsb3dlZCAoTUIpLiAwID0g ZGlzYWJsZWQgKi8KK2ludAkJCW1heF90b3RhbF9ia2VuZF9tZW0gPSAwOwogCiAKIC8qIGV4cG9z ZWQgc28gdGhhdCBiYWNrZW5kX3Byb2dyZXNzLmMgY2FuIGFjY2VzcyBpdCAqLwpAQCAtMTI1Mywz ICsxMjU1LDEwOCBAQCBwZ3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9kZWNyZWFz ZSh1aW50NjQgZGVhbGxvY2F0aW9uKQogCWJlZW50cnktPmJhY2tlbmRfbWVtX2FsbG9jYXRlZCAt PSBkZWFsbG9jYXRpb247CiAJUEdTVEFUX0VORF9XUklURV9BQ1RJVklUWShiZWVudHJ5KTsKIH0K KworLyogLS0tLS0tLS0tLQorICogcGdzdGF0X2dldF9hbGxfYmFja2VuZF9tZW1vcnlfYWxsb2Nh dGVkKCkgLQorICoKKyAqCVJldHVybiBhIHVpbnQ2NCByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQg c2hhcmVkIG1lbW9yeSBhbGxvY2F0ZWQgdG8gYWxsCisgKgliYWNrZW5kcy4gIFRoaXMgbG9va3Mg ZGlyZWN0bHkgYXQgdGhlIEJhY2tlbmRTdGF0dXNBcnJheSwgYW5kIHNvIHdpbGwKKyAqCXByb3Zp ZGUgY3VycmVudCBpbmZvcm1hdGlvbiByZWdhcmRsZXNzIG9mIHRoZSBhZ2Ugb2Ygb3VyIHRyYW5z YWN0aW9uJ3MKKyAqCXNuYXBzaG90IG9mIHRoZSBzdGF0dXMgYXJyYXkuCisgKglJbiB0aGUgZnV0 dXJlIHdlIHdpbGwgbGlrZWx5IHV0aWxpemUgYWRkaXRpb25hbCB2YWx1ZXMgLSBwZXJoYXBzIGxp bWl0CisgKgliYWNrZW5kIGFsbG9jYXRpb24gYnkgdXNlci9yb2xlLCBldGMuCisgKiAtLS0tLS0t LS0tCisgKi8KK3VpbnQ2NAorcGdzdGF0X2dldF9hbGxfYmFja2VuZF9tZW1vcnlfYWxsb2NhdGVk KHZvaWQpCit7CisJUGdCYWNrZW5kU3RhdHVzICpiZWVudHJ5OworCWludAkJCWk7CisJdWludDY0 CQlhbGxfYmFja2VuZF9tZW1vcnlfYWxsb2NhdGVkID0gMDsKKworCWJlZW50cnkgPSBCYWNrZW5k U3RhdHVzQXJyYXk7CisKKwkvKgorCSAqIFdlIHByb2JhYmx5IHNob3VsZG4ndCBnZXQgaGVyZSBi ZWZvcmUgc2hhcmVkIG1lbW9yeSBoYXMgYmVlbiBzZXQgdXAsCisJICogYnV0IGJlIHNhZmUuCisJ ICovCisJaWYgKGJlZW50cnkgPT0gTlVMTCB8fCBCYWNrZW5kQWN0aXZpdHlCdWZmZXIgPT0gTlVM TCkKKwkJcmV0dXJuIDA7CisKKwkvKgorCSAqIFdlIGluY2x1ZGUgQVVYIHByb2NzIGluIGFsbCBi YWNrZW5kIG1lbW9yeSBjYWxjdWxhdGlvbgorCSAqLworCWZvciAoaSA9IDE7IGkgPD0gTnVtQmFj a2VuZFN0YXRTbG90czsgaSsrKQorCXsKKwkJLyoKKwkJICogV2UgdXNlIGEgdm9sYXRpbGUgcG9p bnRlciBoZXJlIHRvIGVuc3VyZSB0aGUgY29tcGlsZXIgZG9lc24ndCB0cnkgdG8KKwkJICogZ2V0 IGN1dGUuCisJCSAqLworCQl2b2xhdGlsZSBQZ0JhY2tlbmRTdGF0dXMgKnZiZWVudHJ5ID0gYmVl bnRyeTsKKwkJYm9vbAkJZm91bmQ7CisJCXVpbnQ2NAkJYmFja2VuZF9tZW1fYWxsb2NhdGVkID0g MDsKKworCQlmb3IgKDs7KQorCQl7CisJCQlpbnQJCQliZWZvcmVfY2hhbmdlY291bnQ7CisJCQlp bnQJCQlhZnRlcl9jaGFuZ2Vjb3VudDsKKworCQkJcGdzdGF0X2JlZ2luX3JlYWRfYWN0aXZpdHko dmJlZW50cnksIGJlZm9yZV9jaGFuZ2Vjb3VudCk7CisKKwkJCS8qIElnbm9yZSBpbnZhbGlkIGVu dHJpZXMsIHdoaWNoIG1heSBjb250YWluIGludmFsaWQgZGF0YS4KKwkJCSAqIFNlZSBwZ3N0YXRf YmVzaHV0ZG93bl9ob29rKCkKKwkJCSAqLworCQkJaWYgKHZiZWVudHJ5LT5zdF9wcm9jcGlkID4g MCkKKwkJCQliYWNrZW5kX21lbV9hbGxvY2F0ZWQgPSB2YmVlbnRyeS0+YmFja2VuZF9tZW1fYWxs b2NhdGVkOworCisJCQlwZ3N0YXRfZW5kX3JlYWRfYWN0aXZpdHkodmJlZW50cnksIGFmdGVyX2No YW5nZWNvdW50KTsKKworCQkJaWYgKChmb3VuZCA9IHBnc3RhdF9yZWFkX2FjdGl2aXR5X2NvbXBs ZXRlKGJlZm9yZV9jaGFuZ2Vjb3VudCwKKwkJCQkJCQkJCQkJCQkgICBhZnRlcl9jaGFuZ2Vjb3Vu dCkpKQorCQkJCWJyZWFrOworCisJCQkvKiBNYWtlIHN1cmUgd2UgY2FuIGJyZWFrIG91dCBvZiBs b29wIGlmIHN0dWNrLi4uICovCisJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQl9CisKKwkJ aWYgKGZvdW5kKQorCQkJYWxsX2JhY2tlbmRfbWVtb3J5X2FsbG9jYXRlZCArPSBiYWNrZW5kX21l bV9hbGxvY2F0ZWQ7CisKKwkJYmVlbnRyeSsrOworCX0KKworCXJldHVybiBhbGxfYmFja2VuZF9t ZW1vcnlfYWxsb2NhdGVkOworfQorCisvKgorICogRGV0ZXJtaW5lIGlmIGFsbG9jYXRpb24gcmVx dWVzdCB3aWxsIGV4Y2VlZCBtYXggYmFja2VuZCBtZW1vcnkgYWxsb3dlZC4KKyAqIERvIG5vdCBh cHBseSB0byBhdXhpbGlhcnkgcHJvY2Vzc2VzLgorICovCitib29sCitleGNlZWRzX21heF90b3Rh bF9ia2VuZF9tZW0odWludDY0IGFsbG9jYXRpb25fcmVxdWVzdCkKK3sKKwlib29sIHJlc3VsdCA9 IGZhbHNlOworCisJLyogRXhjbHVkZSBhdXhpbGlhcnkgcHJvY2Vzc2VzIGZyb20gdGhlIGNoZWNr ICovCisJaWYgKE15QXV4UHJvY1R5cGUgIT0gTm90QW5BdXhQcm9jZXNzKQorCQlyZXR1cm4gcmVz dWx0OworCisJLyogQ29udmVydCBtYXhfdG90YWxfYmtlbmRfbWVtIHRvIGJ5dGVzIGZvciBjb21w YXJpc29uICovCisJaWYgKG1heF90b3RhbF9ia2VuZF9tZW0gJiYKKwkJcGdzdGF0X2dldF9hbGxf YmFja2VuZF9tZW1vcnlfYWxsb2NhdGVkKCkgKworCQlhbGxvY2F0aW9uX3JlcXVlc3QgPiAodWlu dDY0KW1heF90b3RhbF9ia2VuZF9tZW0gKiAxMDI0ICogMTAyNCkKKwl7CisJCS8qCisJCSAqIEV4 cGxpY2l0ZWx5IGlkZW50aWZ5IHRoZSBPT00gYmVpbmcgYSByZXN1bHQgb2YgdGhpcworCQkgKiBj b25maWd1cmF0aW9uIHBhcmFtZXRlciB2cyBhIHN5c3RlbSBmYWlsdXJlIHRvIGFsbG9jYXRlIE9P TS4KKwkJICovCisJCWVyZXBvcnQoV0FSTklORywKKwkJCSBlcnJtc2coInJlcXVlc3Qgd2lsbCBl eGNlZWQgcG9zdGdyZXNxbC5jb25mIGRlZmluZWQgbWF4X3RvdGFsX2JhY2tlbmRfbWVtb3J5IGxp bWl0ICglbHUgPiAlbHUpIiwKKwkJCSBwZ3N0YXRfZ2V0X2FsbF9iYWNrZW5kX21lbW9yeV9hbGxv Y2F0ZWQoKSArCisJCQkgYWxsb2NhdGlvbl9yZXF1ZXN0LCAodWludDY0KW1heF90b3RhbF9ia2Vu ZF9tZW0gKiAxMDI0ICogMTAyNCkpOworCisJCXJlc3VsdCA9IHRydWU7CisJfQorCisJcmV0dXJu IHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgYi9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCmluZGV4IDlmYmJmYjFiZTUuLmFiOGQ4M2MyMzUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWMuYwpAQCAtMzY2NCw2ICszNjY0LDE3IEBAIHN0YXRpYyBzdHJ1Y3Qg Y29uZmlnX2ludCBDb25maWd1cmVOYW1lc0ludFtdID0KIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0s CiAKKwl7CisJCXsibWF4X3RvdGFsX2JhY2tlbmRfbWVtb3J5IiwgUEdDX1NJR0hVUCwgUkVTT1VS Q0VTX01FTSwKKwkJCWdldHRleHRfbm9vcCgiUmVzdHJpY3QgdG90YWwgYmFja2VuZCBtZW1vcnkg YWxsb2NhdGlvbnMgdG8gdGhpcyBtYXguIiksCisJCQlnZXR0ZXh0X25vb3AoIjAgdHVybnMgdGhp cyBmZWF0dXJlIG9mZi4iKSwKKwkJCUdVQ19VTklUX01CCisJCX0sCisJCSZtYXhfdG90YWxfYmtl bmRfbWVtLAorCQkwLCAwLCBJTlRfTUFYLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKwogCS8q IEVuZC1vZi1saXN0IG1hcmtlciAqLwogCXsKIAkJe05VTEwsIDAsIDAsIE5VTEwsIE5VTEx9LCBO VUxMLCAwLCAwLCAwLCBOVUxMLCBOVUxMLCBOVUxMCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNj L3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggOTBiZWMwNTAyYy4uOGU5NDRmNjUxMSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtMTU1 LDYgKzE1NSw5IEBACiAJCQkJCSMgICBtbWFwCiAJCQkJCSMgKGNoYW5nZSByZXF1aXJlcyByZXN0 YXJ0KQogI21pbl9keW5hbWljX3NoYXJlZF9tZW1vcnkgPSAwTUIJIyAoY2hhbmdlIHJlcXVpcmVz IHJlc3RhcnQpCisjbWF4X3RvdGFsX2JhY2tlbmRfbWVtb3J5ID0gME1CCQkjIFJlc3RyaWN0IHRv dGFsIGJhY2tlbmQgbWVtb3J5IGFsbG9jYXRpb25zCisJCQkJCQkJCQkjIHRvIHRoaXMgbWF4IChp biBNQikuIDAgdHVybnMgdGhpcyBmZWF0dXJlCisJCQkJCQkJCQkjIG9mZi4KIAogIyAtIERpc2sg LQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL2FzZXQuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL21tZ3IvYXNldC5jCmluZGV4IGM5MWY4ZWZhNGQuLmFjOWExY2VkM2YgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvYXNldC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL21tZ3IvYXNldC5jCkBAIC00MjgsNiArNDI4LDEwIEBAIEFsbG9jU2V0Q29udGV4dENyZWF0 ZUludGVybmFsKE1lbW9yeUNvbnRleHQgcGFyZW50LAogCWVsc2UKIAkJZmlyc3RCbG9ja1NpemUg PSBNYXgoZmlyc3RCbG9ja1NpemUsIGluaXRCbG9ja1NpemUpOwogCisJLyogRG8gbm90IGV4Y2Vl ZCBtYXhpbXVtIGFsbG93ZWQgbWVtb3J5IGFsbG9jYXRpb24gKi8KKwlpZiAoZXhjZWVkc19tYXhf dG90YWxfYmtlbmRfbWVtKGZpcnN0QmxvY2tTaXplKSkKKwkJcmV0dXJuIE5VTEw7CisKIAkvKgog CSAqIEFsbG9jYXRlIHRoZSBpbml0aWFsIGJsb2NrLiAgVW5saWtlIG90aGVyIGFzZXQuYyBibG9j a3MsIGl0IHN0YXJ0cyB3aXRoCiAJICogdGhlIGNvbnRleHQgaGVhZGVyIGFuZCBpdHMgYmxvY2sg aGVhZGVyIGZvbGxvd3MgdGhhdC4KQEAgLTcyMCw2ICs3MjQsMTEgQEAgQWxsb2NTZXRBbGxvYyhN ZW1vcnlDb250ZXh0IGNvbnRleHQsIFNpemUgc2l6ZSkKIAl7CiAJCWNodW5rX3NpemUgPSBNQVhB TElHTihzaXplKTsKIAkJYmxrc2l6ZSA9IGNodW5rX3NpemUgKyBBTExPQ19CTE9DS0hEUlNaICsg QUxMT0NfQ0hVTktIRFJTWjsKKworCQkvKiBEbyBub3QgZXhjZWVkIG1heGltdW0gYWxsb3dlZCBt ZW1vcnkgYWxsb2NhdGlvbiAqLworCQlpZiAoZXhjZWVkc19tYXhfdG90YWxfYmtlbmRfbWVtKGJs a3NpemUpKQorCQkJcmV0dXJuIE5VTEw7CisKIAkJYmxvY2sgPSAoQWxsb2NCbG9jaykgbWFsbG9j KGJsa3NpemUpOwogCQlpZiAoYmxvY2sgPT0gTlVMTCkKIAkJCXJldHVybiBOVUxMOwpAQCAtOTEx LDYgKzkyMCwxMCBAQCBBbGxvY1NldEFsbG9jKE1lbW9yeUNvbnRleHQgY29udGV4dCwgU2l6ZSBz aXplKQogCQl3aGlsZSAoYmxrc2l6ZSA8IHJlcXVpcmVkX3NpemUpCiAJCQlibGtzaXplIDw8PSAx OwogCisJCS8qIERvIG5vdCBleGNlZWQgbWF4aW11bSBhbGxvd2VkIG1lbW9yeSBhbGxvY2F0aW9u ICovCisJCWlmIChleGNlZWRzX21heF90b3RhbF9ia2VuZF9tZW0oYmxrc2l6ZSkpCisJCQlyZXR1 cm4gTlVMTDsKKwogCQkvKiBUcnkgdG8gYWxsb2NhdGUgaXQgKi8KIAkJYmxvY2sgPSAoQWxsb2NC bG9jaykgbWFsbG9jKGJsa3NpemUpOwogCkBAIC0xMTMzLDYgKzExNDYsMTAgQEAgQWxsb2NTZXRS ZWFsbG9jKHZvaWQgKnBvaW50ZXIsIFNpemUgc2l6ZSkKIAkJYmxrc2l6ZSA9IGNoa3NpemUgKyBB TExPQ19CTE9DS0hEUlNaICsgQUxMT0NfQ0hVTktIRFJTWjsKIAkJb2xkYmxrc2l6ZSA9IGJsb2Nr LT5lbmRwdHIgLSAoKGNoYXIgKikgYmxvY2spOwogCisJCS8qIERvIG5vdCBleGNlZWQgbWF4aW11 bSBhbGxvd2VkIG1lbW9yeSBhbGxvY2F0aW9uICovCisJCWlmIChibGtzaXplID4gb2xkYmxrc2l6 ZSAmJiBleGNlZWRzX21heF90b3RhbF9ia2VuZF9tZW0oYmxrc2l6ZSAtIG9sZGJsa3NpemUpKQor CQkJcmV0dXJuIE5VTEw7CisKIAkJYmxvY2sgPSAoQWxsb2NCbG9jaykgcmVhbGxvYyhibG9jaywg Ymxrc2l6ZSk7CiAJCWlmIChibG9jayA9PSBOVUxMKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9tbWdyL2dlbmVyYXRpb24uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvZ2Vu ZXJhdGlvbi5jCmluZGV4IDM2ZTViM2Y5NGQuLjFkNTcyMDgzNmMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL21tZ3IvZ2VuZXJhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21t Z3IvZ2VuZXJhdGlvbi5jCkBAIC0xOTIsNiArMTkyLDkgQEAgR2VuZXJhdGlvbkNvbnRleHRDcmVh dGUoTWVtb3J5Q29udGV4dCBwYXJlbnQsCiAJZWxzZQogCQlhbGxvY1NpemUgPSBNYXgoYWxsb2NT aXplLCBpbml0QmxvY2tTaXplKTsKIAorCWlmIChleGNlZWRzX21heF90b3RhbF9ia2VuZF9tZW0o YWxsb2NTaXplKSkKKwkJcmV0dXJuIE5VTEw7CisKIAkvKgogCSAqIEFsbG9jYXRlIHRoZSBpbml0 aWFsIGJsb2NrLiAgVW5saWtlIG90aGVyIGdlbmVyYXRpb24uYyBibG9ja3MsIGl0CiAJICogc3Rh cnRzIHdpdGggdGhlIGNvbnRleHQgaGVhZGVyIGFuZCBpdHMgYmxvY2sgaGVhZGVyIGZvbGxvd3Mg dGhhdC4KQEAgLTM2MSw2ICszNjQsOSBAQCBHZW5lcmF0aW9uQWxsb2MoTWVtb3J5Q29udGV4dCBj b250ZXh0LCBTaXplIHNpemUpCiAJewogCQlTaXplCQlibGtzaXplID0gcmVxdWlyZWRfc2l6ZSAr IEdlbmVyYXRpb25fQkxPQ0tIRFJTWjsKIAorCQlpZiAoZXhjZWVkc19tYXhfdG90YWxfYmtlbmRf bWVtKGJsa3NpemUpKQorCQkJcmV0dXJuIE5VTEw7CisKIAkJYmxvY2sgPSAoR2VuZXJhdGlvbkJs b2NrICopIG1hbGxvYyhibGtzaXplKTsKIAkJaWYgKGJsb2NrID09IE5VTEwpCiAJCQlyZXR1cm4g TlVMTDsKQEAgLTQ2NCw2ICs0NzAsOSBAQCBHZW5lcmF0aW9uQWxsb2MoTWVtb3J5Q29udGV4dCBj b250ZXh0LCBTaXplIHNpemUpCiAJCQlpZiAoYmxrc2l6ZSA8IHJlcXVpcmVkX3NpemUpCiAJCQkJ Ymxrc2l6ZSA9IHBnX25leHRwb3dlcjJfc2l6ZV90KHJlcXVpcmVkX3NpemUpOwogCisJCQlpZiAo ZXhjZWVkc19tYXhfdG90YWxfYmtlbmRfbWVtKGJsa3NpemUpKQorCQkJCXJldHVybiBOVUxMOwor CiAJCQlibG9jayA9IChHZW5lcmF0aW9uQmxvY2sgKikgbWFsbG9jKGJsa3NpemUpOwogCiAJCQlp ZiAoYmxvY2sgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Ivc2xh Yi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9zbGFiLmMKaW5kZXggZTBlNjliMzk0ZS4uNjNj MDcxMjBkZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9zbGFiLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvbW1nci9zbGFiLmMKQEAgLTE3Nyw2ICsxNzcsMTAgQEAgU2xhYkNv bnRleHRDcmVhdGUoTWVtb3J5Q29udGV4dCBwYXJlbnQsCiAJaGVhZGVyU2l6ZSArPSBjaHVua3NQ ZXJCbG9jayAqIHNpemVvZihib29sKTsKICNlbmRpZgogCisJLyogRG8gbm90IGV4Y2VlZCBtYXhp bXVtIGFsbG93ZWQgbWVtb3J5IGFsbG9jYXRpb24gKi8KKwlpZiAoZXhjZWVkc19tYXhfdG90YWxf YmtlbmRfbWVtKGhlYWRlclNpemUpKQorCQlyZXR1cm4gTlVMTDsKKwogCXNsYWIgPSAoU2xhYkNv bnRleHQgKikgbWFsbG9jKGhlYWRlclNpemUpOwogCWlmIChzbGFiID09IE5VTEwpCiAJewpAQCAt MzMxLDYgKzMzNSwxMCBAQCBTbGFiQWxsb2MoTWVtb3J5Q29udGV4dCBjb250ZXh0LCBTaXplIHNp emUpCiAJICovCiAJaWYgKHNsYWItPm1pbkZyZWVDaHVua3MgPT0gMCkKIAl7CisJCS8qIERvIG5v dCBleGNlZWQgbWF4aW11bSBhbGxvd2VkIG1lbW9yeSBhbGxvY2F0aW9uICovCisJCWlmIChleGNl ZWRzX21heF90b3RhbF9ia2VuZF9tZW0oc2xhYi0+YmxvY2tTaXplKSkKKwkJCXJldHVybiBOVUxM OworCiAJCWJsb2NrID0gKFNsYWJCbG9jayAqKSBtYWxsb2Moc2xhYi0+YmxvY2tTaXplKTsKIAog CQlpZiAoYmxvY2sgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tl bmRfc3RhdHVzLmggYi9zcmMvaW5jbHVkZS91dGlscy9iYWNrZW5kX3N0YXR1cy5oCmluZGV4IDli ZGM0MTk3YmQuLjNiOTQwZmY5OGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tl bmRfc3RhdHVzLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvYmFja2VuZF9zdGF0dXMuaApAQCAt MjcwLDYgKzI3MCw3IEBAIHR5cGVkZWYgc3RydWN0IExvY2FsUGdCYWNrZW5kU3RhdHVzCiAgKi8K IGV4dGVybiBQR0RMTElNUE9SVCBib29sIHBnc3RhdF90cmFja19hY3Rpdml0aWVzOwogZXh0ZXJu IFBHRExMSU1QT1JUIGludCBwZ3N0YXRfdHJhY2tfYWN0aXZpdHlfcXVlcnlfc2l6ZTsKK2V4dGVy biBQR0RMTElNUE9SVCBpbnQgbWF4X3RvdGFsX2JrZW5kX21lbTsKIAogCiAvKiAtLS0tLS0tLS0t CkBAIC0zMjEsNiArMzIyLDcgQEAgZXh0ZXJuIGludAlwZ3N0YXRfZmV0Y2hfc3RhdF9udW1iYWNr ZW5kcyh2b2lkKTsKIGV4dGVybiBQZ0JhY2tlbmRTdGF0dXMgKnBnc3RhdF9mZXRjaF9zdGF0X2Jl ZW50cnkoaW50IGJlaWQpOwogZXh0ZXJuIExvY2FsUGdCYWNrZW5kU3RhdHVzICpwZ3N0YXRfZmV0 Y2hfc3RhdF9sb2NhbF9iZWVudHJ5KGludCBiZWlkKTsKIGV4dGVybiBjaGFyICpwZ3N0YXRfY2xp cF9hY3Rpdml0eShjb25zdCBjaGFyICpyYXdfYWN0aXZpdHkpOworZXh0ZXJuIGJvb2wgZXhjZWVk c19tYXhfdG90YWxfYmtlbmRfbWVtKHVpbnQ2NCBhbGxvY2F0aW9uX3JlcXVlc3QpOwogCiAKICNl bmRpZgkJCQkJCQkvKiBCQUNLRU5EX1NUQVRVU19IICovCi0tIAoyLjI1LjEKCg== --=-0w6Cpo0aaLaBPahXMMfk Content-Disposition: attachment; filename*0=0001-Add-tracking-of-backend-memory-allocated-to-pg_stat_.pat; filename*1=ch Content-Type: text/x-patch; name="0001-Add-tracking-of-backend-memory-allocated-to-pg_stat_.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA1ODRhMDRmMWI1Mzk0ODA0OWU3MzE2NWE0ZmZkZDU0NGM5NTBhYjBkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSZWlkIFRob21wc29uIDxqcmVpZHRob21wc29uQG5jLnJyLmNv bT4KRGF0ZTogVGh1LCAxMSBBdWcgMjAyMiAxMjowMToyNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MS8yXSBBZGQgdHJhY2tpbmcgb2YgYmFja2VuZCBtZW1vcnkgYWxsb2NhdGVkIHRvCiBwZ19zdGF0 X2FjdGl2aXR5CgpUaGlzIG5ldyBmaWVsZCBkaXNwbGF5cyB0aGUgY3VycmVudCBieXRlcyBvZiBt ZW1vcnkgYWxsb2NhdGVkIHRvIHRoZQpiYWNrZW5kIHByb2Nlc3MuIEl0IGlzIHVwZGF0ZWQgYXMg bWVtb3J5IGZvciB0aGUgcHJvY2VzcyBpcwptYWxsb2MnZC9mcmVlJ2QuIE1lbW9yeSBhbGxvY2F0 ZWQgdG8gaXRlbXMgb24gdGhlIGZyZWVsaXN0IGlzIGluY2x1ZGVkIGluCnRoZSBkaXNwbGF5ZWQg dmFsdWUuICBEeW5hbWljIHNoYXJlZCBtZW1vcnkgYWxsb2NhdGlvbnMgYXJlIGluY2x1ZGVkCm9u bHkgaW4gdGhlIHZhbHVlIGRpc3BsYXllZCBmb3IgdGhlIGJhY2tlbmQgdGhhdCBjcmVhdGVkIHRo ZW0sIHRoZXkgYXJlCm5vdCBpbmNsdWRlZCBpbiB0aGUgdmFsdWUgZm9yIGJhY2tlbmRzIHRoYXQg YXJlIGF0dGFjaGVkIHRvIHRoZW0gdG8KYXZvaWQgZG91YmxlIGNvdW50aW5nLiBPbiBvY2Nhc2lv biwgb3JwaGFuZWQgbWVtb3J5IHNlZ21lbnRzIG1heSBiZQpjbGVhbmVkIHVwIG9uIHBvc3RtYXN0 ZXIgc3RhcnR1cC4gVGhpcyBtYXkgcmVzdWx0IGluIGRlY3JlYXNpbmcgdGhlIHN1bQp3aXRob3V0 IGEgcHJpb3IgaW5jcmVtZW50LiBXZSBsaW1pdCB0aGUgZmxvb3Igb2YgYmFja2VuZF9tZW1fYWxs b2NhdGVkCnRvIHplcm8uIFVwZGF0ZWQgcGdfc3RhdF9hY3Rpdml0eSBkb2N1bWVudGF0aW9uIGZv ciB0aGUgbmV3IGNvbHVtbi4KLS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAg ICAgICAgICAgIHwgIDEyICsrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs ICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc21faW1wbC5jICAgICAg ICAgIHwgIDgwICsrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFj a2VuZF9zdGF0dXMuYyB8IDEwNSArKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3Bnc3RhdGZ1bmNzLmMgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMv bW1nci9hc2V0LmMgICAgICAgICAgICAgICB8ICAxOCArKysrCiBzcmMvYmFja2VuZC91dGlscy9t bWdyL2dlbmVyYXRpb24uYyAgICAgICAgIHwgIDE1ICsrKwogc3JjL2JhY2tlbmQvdXRpbHMvbW1n ci9zbGFiLmMgICAgICAgICAgICAgICB8ICAyMSArKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0ICAgICAgICAgICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS91dGlscy9iYWNrZW5k X3N0YXR1cy5oICAgICAgICAgIHwgICA3ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1 bGVzLm91dCAgICAgICAgIHwgICA5ICstCiAxMSBmaWxlcyBjaGFuZ2VkLCAyNjkgaW5zZXJ0aW9u cygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmlu Zy5zZ21sIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAppbmRleCAxZDk1MDlhMmY2Li40 MGFlNjM4ZjI1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKQEAgLTk0Nyw2ICs5NDcsMTggQEAgcG9zdGdy ZXMgICAyNzA5MyAgMC4wICAwLjAgIDMwMDk2ICAyNzUyID8gICAgICAgIFNzICAgMTE6MzQgICAw OjAwIHBvc3RncmVzOiBzZXIKICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgPC9yb3c+CiAKKyAg ICA8cm93PgorICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9s ZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgPHN0cnVjdGZpZWxkPmJhY2tlbmRfbWVtX2Fs bG9jYXRlZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAgICAgPC9wYXJhPgor ICAgICA8cGFyYT4KKyAgICAgIFRoZSBieXRlIGNvdW50IG9mIG1lbW9yeSBhbGxvY2F0ZWQgdG8g dGhpcyBiYWNrZW5kLiBEeW5hbWljIHNoYXJlZCBtZW1vcnkKKyAgICAgIGFsbG9jYXRpb25zIGFy ZSBpbmNsdWRlZCBvbmx5IGluIHRoZSB2YWx1ZSBkaXNwbGF5ZWQgZm9yIHRoZSBiYWNrZW5kIHRo YXQKKyAgICAgIGNyZWF0ZWQgdGhlbSwgdGhleSBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSB2YWx1 ZSBmb3IgYmFja2VuZHMgdGhhdCBhcmUKKyAgICAgIGF0dGFjaGVkIHRvIHRoZW0gdG8gYXZvaWQg ZG91YmxlIGNvdW50aW5nLgorICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICA8L3Jvdz4KKwogICAg ICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+cXVlcnk8L3N0cnVj dGZpZWxkPiA8dHlwZT50ZXh0PC90eXBlPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs CmluZGV4IDVhODQ0YjYzYTEuLmQyM2YwZTlkYmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92 aWV3cy5zcWwKQEAgLTg2Myw2ICs4NjMsNyBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X2FjdGl2aXR5 IEFTCiAgICAgICAgICAgICBTLmJhY2tlbmRfeGlkLAogICAgICAgICAgICAgcy5iYWNrZW5kX3ht aW4sCiAgICAgICAgICAgICBTLnF1ZXJ5X2lkLAorICAgICAgICAgICAgUy5iYWNrZW5kX21lbV9h bGxvY2F0ZWQsCiAgICAgICAgICAgICBTLnF1ZXJ5LAogICAgICAgICAgICAgUy5iYWNrZW5kX3R5 cGUKICAgICBGUk9NIHBnX3N0YXRfZ2V0X2FjdGl2aXR5KE5VTEwpIEFTIFMKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9pbXBsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9kc21faW1wbC5jCmluZGV4IGUxYjkwYzVkZTQuLjMzNTZiYjY1YjUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9pbXBsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvZHNtX2ltcGwuYwpAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgInBvc3RtYXN0 ZXIvcG9zdG1hc3Rlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZHNtX2ltcGwuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2ZkLmgiCisjaW5jbHVkZSAidXRpbHMvYmFja2VuZF9zdGF0dXMuaCIKICNpbmNs dWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogCkBAIC0yMzIs NiArMjMzLDEzIEBAIGRzbV9pbXBsX3Bvc2l4KGRzbV9vcCBvcCwgZHNtX2hhbmRsZSBoYW5kbGUs IFNpemUgcmVxdWVzdF9zaXplLAogCQkJCQkJCW5hbWUpKSk7CiAJCQlyZXR1cm4gZmFsc2U7CiAJ CX0KKwkJLyoKKwkJICogRGV0YWNoIGFuZCBkZXN0cm95IHBhc3MgdGhyb3VnaCBoZXJlLCBvbmx5 IGRlY3JlYXNlIHRoZSBtZW1vcnkKKwkJICogc2hvd24gYWxsb2NhdGVkIGluIHBnX3N0YXRfYWN0 aXZpdHkgd2hlbiB0aGUgY3JlYXRvciBkZXN0cm95cyB0aGUKKwkJICogYWxsb2NhdGlvbi4KKwkJ ICovCisJCWlmIChvcCA9PSBEU01fT1BfREVTVFJPWSkKKwkJCXBnc3RhdF9yZXBvcnRfYmFja2Vu ZF9tZW1fYWxsb2NhdGVkX2RlY3JlYXNlKCptYXBwZWRfc2l6ZSk7CiAJCSptYXBwZWRfYWRkcmVz cyA9IE5VTEw7CiAJCSptYXBwZWRfc2l6ZSA9IDA7CiAJCWlmIChvcCA9PSBEU01fT1BfREVTVFJP WSAmJiBzaG1fdW5saW5rKG5hbWUpICE9IDApCkBAIC0zMzIsNiArMzQwLDM2IEBAIGRzbV9pbXBs X3Bvc2l4KGRzbV9vcCBvcCwgZHNtX2hhbmRsZSBoYW5kbGUsIFNpemUgcmVxdWVzdF9zaXplLAog CQkJCQkJbmFtZSkpKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KKworCS8qCisJICogQXR0YWNoIGFu ZCBjcmVhdGUgcGFzcyB0aHJvdWdoIGhlcmUsIG9ubHkgdXBkYXRlIGJhY2tlbmQgbWVtb3J5CisJ ICogYWxsb2NhdGVkIGluIHBnX3N0YXRfYWN0aXZpdHkgZm9yIHRoZSBjcmVhdG9yIHByb2Nlc3Mu CisJICovCisJaWYgKG9wID09IERTTV9PUF9DUkVBVEUpCisJeworCQkvKgorCQkgKiBQb3NpeCBj cmVhdGlvbiBjYWxscyBkc21faW1wbF9wb3NpeF9yZXNpemUgaW1wbHlpbmcgdGhhdCByZXNpemlu ZworCQkgKiBvY2N1cnMgb3IgbWF5IGJlIGFkZGVkIGluIHRoZSBmdXR1cmUuIEFzIGltcGxlbWVu dGVkCisJCSAqIGRzbV9pbXBsX3Bvc2l4X3Jlc2l6ZSB1dGlsaXplcyBmYWxsb2NhdGUgb3IgdHJ1 bmNhdGUsIHBhc3NpbmcgdGhlCisJCSAqIHdob2xlIG5ldyBzaXplIGFzIGlucHV0LCBncm93aW5n IHRoZSBhbGxvY2F0aW9uIGFzIG5lZWRlZCAob25seQorCQkgKiB0cnVuY2F0ZSBzdXBwb3J0cyBz aHJpbmtpbmcpLiBXZSB1cGRhdGUgYnkgcmVwbGFjaW5nIHRoZSBvbGQKKwkJICogYWxsb2NhdGlv biB3aXRoIHRoZSBuZXcuCisJCSAqLworI2lmIGRlZmluZWQoSEFWRV9QT1NJWF9GQUxMT0NBVEUp ICYmIGRlZmluZWQoX19saW51eF9fKQorCQkvKgorCQkgKiBwb3NpeF9mYWxsb2NhdGUgZG9lcyBu b3Qgc2hyaW5rIGFsbG9jYXRpb25zLCBhZGp1c3Qgb25seSBvbgorCQkgKiBhbGxvY2F0aW9uIGlu Y3JlYXNlLgorCQkgKi8KKwkJaWYgKHJlcXVlc3Rfc2l6ZSA+ICptYXBwZWRfc2l6ZSkKKwkJewor CQkJcGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfZGVjcmVhc2UoKm1hcHBlZF9z aXplKTsKKwkJCXBnc3RhdF9yZXBvcnRfYmFja2VuZF9tZW1fYWxsb2NhdGVkX2luY3JlYXNlKHJl cXVlc3Rfc2l6ZSk7CisJCX0KKyNlbHNlCisJCXBnc3RhdF9yZXBvcnRfYmFja2VuZF9tZW1fYWxs b2NhdGVkX2RlY3JlYXNlKCptYXBwZWRfc2l6ZSk7CisJCXBnc3RhdF9yZXBvcnRfYmFja2VuZF9t ZW1fYWxsb2NhdGVkX2luY3JlYXNlKHJlcXVlc3Rfc2l6ZSk7CisjZW5kaWYKKwl9CiAJKm1hcHBl ZF9hZGRyZXNzID0gYWRkcmVzczsKIAkqbWFwcGVkX3NpemUgPSByZXF1ZXN0X3NpemU7CiAJY2xv c2UoZmQpOwpAQCAtNTM3LDYgKzU3NSwxNCBAQCBkc21faW1wbF9zeXN2KGRzbV9vcCBvcCwgZHNt X2hhbmRsZSBoYW5kbGUsIFNpemUgcmVxdWVzdF9zaXplLAogCQkJCQkJCW5hbWUpKSk7CiAJCQly ZXR1cm4gZmFsc2U7CiAJCX0KKworCQkvKgorCQkgKiBEZXRhY2ggYW5kIGRlc3Ryb3kgcGFzcyB0 aHJvdWdoIGhlcmUsIG9ubHkgZGVjcmVhc2UgdGhlIG1lbW9yeQorCQkgKiBzaG93biBhbGxvY2F0 ZWQgaW4gcGdfc3RhdF9hY3Rpdml0eSB3aGVuIHRoZSBjcmVhdG9yIGRlc3Ryb3lzIHRoZQorCQkg KiBhbGxvY2F0aW9uLgorCQkgKi8KKwkJaWYgKG9wID09IERTTV9PUF9ERVNUUk9ZKQorCQkJcGdz dGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfZGVjcmVhc2UoKm1hcHBlZF9zaXplKTsK IAkJKm1hcHBlZF9hZGRyZXNzID0gTlVMTDsKIAkJKm1hcHBlZF9zaXplID0gMDsKIAkJaWYgKG9w ID09IERTTV9PUF9ERVNUUk9ZICYmIHNobWN0bChpZGVudCwgSVBDX1JNSUQsIE5VTEwpIDwgMCkK QEAgLTU4NCw2ICs2MzAsMTMgQEAgZHNtX2ltcGxfc3lzdihkc21fb3Agb3AsIGRzbV9oYW5kbGUg aGFuZGxlLCBTaXplIHJlcXVlc3Rfc2l6ZSwKIAkJCQkJCW5hbWUpKSk7CiAJCXJldHVybiBmYWxz ZTsKIAl9CisKKwkvKgorCSAqIEF0dGFjaCBhbmQgY3JlYXRlIHBhc3MgdGhyb3VnaCBoZXJlLCBv bmx5IHVwZGF0ZSBiYWNrZW5kIG1lbW9yeQorCSAqIGFsbG9jYXRlZCBpbiBwZ19zdGF0X2FjdGl2 aXR5IGZvciB0aGUgY3JlYXRvciBwcm9jZXNzLgorCSAqLworCWlmIChvcCA9PSBEU01fT1BfQ1JF QVRFKQorCQlwZ3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9pbmNyZWFzZShyZXF1 ZXN0X3NpemUpOwogCSptYXBwZWRfYWRkcmVzcyA9IGFkZHJlc3M7CiAJKm1hcHBlZF9zaXplID0g cmVxdWVzdF9zaXplOwogCkBAIC02NTIsNiArNzA1LDEzIEBAIGRzbV9pbXBsX3dpbmRvd3MoZHNt X29wIG9wLCBkc21faGFuZGxlIGhhbmRsZSwgU2l6ZSByZXF1ZXN0X3NpemUsCiAJCQlyZXR1cm4g ZmFsc2U7CiAJCX0KIAorCQkvKgorCQkgKiBEZXRhY2ggYW5kIGRlc3Ryb3kgcGFzcyB0aHJvdWdo IGhlcmUsIG9ubHkgZGVjcmVhc2UgdGhlIG1lbW9yeQorCQkgKiBzaG93biBhbGxvY2F0ZWQgaW4g cGdfc3RhdF9hY3Rpdml0eSB3aGVuIHRoZSBjcmVhdG9yIGRlc3Ryb3lzIHRoZQorCQkgKiBhbGxv Y2F0aW9uLgorCQkgKi8KKwkJaWYgKG9wID09IERTTV9PUF9ERVNUUk9ZKQorCQkJcGdzdGF0X3Jl cG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfZGVjcmVhc2UoKm1hcHBlZF9zaXplKTsKIAkJKmlt cGxfcHJpdmF0ZSA9IE5VTEw7CiAJCSptYXBwZWRfYWRkcmVzcyA9IE5VTEw7CiAJCSptYXBwZWRf c2l6ZSA9IDA7CkBAIC03NjgsNiArODI4LDEyIEBAIGRzbV9pbXBsX3dpbmRvd3MoZHNtX29wIG9w LCBkc21faGFuZGxlIGhhbmRsZSwgU2l6ZSByZXF1ZXN0X3NpemUsCiAJCXJldHVybiBmYWxzZTsK IAl9CiAKKwkvKgorCSAqIEF0dGFjaCBhbmQgY3JlYXRlIHBhc3MgdGhyb3VnaCBoZXJlLCBvbmx5 IHVwZGF0ZSBiYWNrZW5kIG1lbW9yeQorCSAqIGFsbG9jYXRlZCBpbiBwZ19zdGF0X2FjdGl2aXR5 IGZvciB0aGUgY3JlYXRvciBwcm9jZXNzLgorCSAqLworCWlmIChvcCA9PSBEU01fT1BfQ1JFQVRF KQorCQlwZ3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9pbmNyZWFzZShpbmZvLlJl Z2lvblNpemUpOwogCSptYXBwZWRfYWRkcmVzcyA9IGFkZHJlc3M7CiAJKm1hcHBlZF9zaXplID0g aW5mby5SZWdpb25TaXplOwogCSppbXBsX3ByaXZhdGUgPSBobWFwOwpAQCAtODEyLDYgKzg3OCwx MyBAQCBkc21faW1wbF9tbWFwKGRzbV9vcCBvcCwgZHNtX2hhbmRsZSBoYW5kbGUsIFNpemUgcmVx dWVzdF9zaXplLAogCQkJCQkJCW5hbWUpKSk7CiAJCQlyZXR1cm4gZmFsc2U7CiAJCX0KKworCQkv KgorCQkgKiBEZXRhY2ggYW5kIGRlc3Ryb3kgcGFzcyB0aHJvdWdoIGhlcmUsIG9ubHkgZGVjcmVh c2UgdGhlIG1lbW9yeQorCQkgKiBzaG93biBhbGxvY2F0ZWQgaW4gcGdfc3RhdF9hY3Rpdml0eSB3 aGVuIHRoZSBjcmVhdG9yIGRlc3Ryb3lzIHRoZQorCQkgKiBhbGxvY2F0aW9uLgorCQkgKi8KKwkJ cGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfZGVjcmVhc2UoKm1hcHBlZF9zaXpl KTsKIAkJKm1hcHBlZF9hZGRyZXNzID0gTlVMTDsKIAkJKm1hcHBlZF9zaXplID0gMDsKIAkJaWYg KG9wID09IERTTV9PUF9ERVNUUk9ZICYmIHVubGluayhuYW1lKSAhPSAwKQpAQCAtOTMzLDYgKzEw MDYsMTMgQEAgZHNtX2ltcGxfbW1hcChkc21fb3Agb3AsIGRzbV9oYW5kbGUgaGFuZGxlLCBTaXpl IHJlcXVlc3Rfc2l6ZSwKIAkJCQkJCW5hbWUpKSk7CiAJCXJldHVybiBmYWxzZTsKIAl9CisKKwkv KgorCSAqIEF0dGFjaCBhbmQgY3JlYXRlIHBhc3MgdGhyb3VnaCBoZXJlLCBvbmx5IHVwZGF0ZSBi YWNrZW5kIG1lbW9yeQorCSAqIGFsbG9jYXRlZCBpbiBwZ19zdGF0X2FjdGl2aXR5IGZvciB0aGUg Y3JlYXRvciBwcm9jZXNzLgorCSAqLworCWlmIChvcCA9PSBEU01fT1BfQ1JFQVRFKQorCQlwZ3N0 YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9pbmNyZWFzZShyZXF1ZXN0X3NpemUpOwog CSptYXBwZWRfYWRkcmVzcyA9IGFkZHJlc3M7CiAJKm1hcHBlZF9zaXplID0gcmVxdWVzdF9zaXpl OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1 cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFja2VuZF9zdGF0dXMuYwppbmRleCBj N2VkMWU2ZDdhLi40NWRhM2FmMjEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS9iYWNrZW5kX3N0YXR1cy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2Jh Y2tlbmRfc3RhdHVzLmMKQEAgLTQ5LDYgKzQ5LDggQEAgaW50CQkJcGdzdGF0X3RyYWNrX2FjdGl2 aXR5X3F1ZXJ5X3NpemUgPSAxMDI0OwogLyogZXhwb3NlZCBzbyB0aGF0IGJhY2tlbmRfcHJvZ3Jl c3MuYyBjYW4gYWNjZXNzIGl0ICovCiBQZ0JhY2tlbmRTdGF0dXMgKk15QkVFbnRyeSA9IE5VTEw7 CiAKKy8qIE1lbW9yeSBhbGxvY2F0ZWQgdG8gdGhpcyBiYWNrZW5kIHByaW9yIHRvIHBnc3RhdHMg aW5pdGlhbGl6YXRpb24gKi8KK3VpbnQ2NAkJYmFja2VuZF9tZW1fYWxsb2NhdGVkID0gMDsKIAog c3RhdGljIFBnQmFja2VuZFN0YXR1cyAqQmFja2VuZFN0YXR1c0FycmF5ID0gTlVMTDsKIHN0YXRp YyBjaGFyICpCYWNrZW5kQXBwbmFtZUJ1ZmZlciA9IE5VTEw7CkBAIC00MDAsNiArNDAyLDEzIEBA IHBnc3RhdF9iZXN0YXJ0KHZvaWQpCiAJbGJlZW50cnkuc3RfcHJvZ3Jlc3NfY29tbWFuZF90YXJn ZXQgPSBJbnZhbGlkT2lkOwogCWxiZWVudHJ5LnN0X3F1ZXJ5X2lkID0gVUlOVDY0Q09OU1QoMCk7 CiAKKwkvKgorCSAqIE1vdmUgc3VtIG9mIG1lbW9yeSBhbGxvY2F0ZWQgcHJpb3IgdG8gcGdzdGF0 cyBpbml0aWFsaXphdGlvbiB0byBwZ3N0YXRzCisJICogYW5kIHplcm8gdGhlIGxvY2FsIHZhcmlh YmxlLgorCSAqLworCWxiZWVudHJ5LmJhY2tlbmRfbWVtX2FsbG9jYXRlZCA9IGJhY2tlbmRfbWVt X2FsbG9jYXRlZDsKKwliYWNrZW5kX21lbV9hbGxvY2F0ZWQgPSAwOworCiAJLyoKIAkgKiB3ZSBk b24ndCB6ZXJvIHN0X3Byb2dyZXNzX3BhcmFtIGhlcmUgdG8gc2F2ZSBjeWNsZXM7IG5vYm9keSBz aG91bGQKIAkgKiBleGFtaW5lIGl0IHVudGlsIHN0X3Byb2dyZXNzX2NvbW1hbmQgaGFzIGJlZW4g c2V0IHRvIHNvbWV0aGluZyBvdGhlcgpAQCAtMTE0OCwzICsxMTU3LDk5IEBAIHBnc3RhdF9jbGlw X2FjdGl2aXR5KGNvbnN0IGNoYXIgKnJhd19hY3Rpdml0eSkKIAogCXJldHVybiBhY3Rpdml0eTsK IH0KKworLyogLS0tLS0tLS0KKyAqIHBnc3RhdF9yZXBvcnRfYmFja2VuZF9tZW1fYWxsb2NhdGVk X2luY3JlYXNlKCkgLQorICoKKyAqIENhbGxlZCB0byByZXBvcnQgaW5jcmVhc2UgaW4gbWVtb3J5 IGFsbG9jYXRlZCBmb3IgdGhpcyBiYWNrZW5kCisgKiAtLS0tLS0tLQorICovCit2b2lkCitwZ3N0 YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9pbmNyZWFzZSh1aW50NjQgYWxsb2NhdGlv bikKK3sKKwl2b2xhdGlsZSBQZ0JhY2tlbmRTdGF0dXMgKmJlZW50cnkgPSBNeUJFRW50cnk7CisK KwlpZiAoIWJlZW50cnkgfHwgIXBnc3RhdF90cmFja19hY3Rpdml0aWVzKQorCXsKKwkJLyoKKwkJ ICogQWNjb3VudCBmb3IgbWVtb3J5IGJlZm9yZSBwZ3N0YXRzIGlzIGluaXRpYWxpemVkLiBUaGlz IHdpbGwgYmUKKwkJICogbWlncmF0ZWQgdG8gcGdzdGF0cyBvbiBpbml0aWFsaXphdGlvbi4KKwkJ ICovCisJCWJhY2tlbmRfbWVtX2FsbG9jYXRlZCArPSBhbGxvY2F0aW9uOworCisJCXJldHVybjsK Kwl9CisKKwkvKgorCSAqIFVwZGF0ZSBteSBzdGF0dXMgZW50cnksIGZvbGxvd2luZyB0aGUgcHJv dG9jb2wgb2YgYnVtcGluZworCSAqIHN0X2NoYW5nZWNvdW50IGJlZm9yZSBhbmQgYWZ0ZXIuICBX ZSB1c2UgYSB2b2xhdGlsZSBwb2ludGVyIGhlcmUgdG8KKwkgKiBlbnN1cmUgdGhlIGNvbXBpbGVy IGRvZXNuJ3QgdHJ5IHRvIGdldCBjdXRlLgorCSAqLworCVBHU1RBVF9CRUdJTl9XUklURV9BQ1RJ VklUWShiZWVudHJ5KTsKKwliZWVudHJ5LT5iYWNrZW5kX21lbV9hbGxvY2F0ZWQgKz0gYWxsb2Nh dGlvbjsKKwlQR1NUQVRfRU5EX1dSSVRFX0FDVElWSVRZKGJlZW50cnkpOworfQorCisvKiAtLS0t LS0tLQorICogcGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfZGVjcmVhc2UoKSAt CisgKgorICogQ2FsbGVkIHRvIHJlcG9ydCBkZWNyZWFzZSBpbiBtZW1vcnkgYWxsb2NhdGVkIGZv ciB0aGlzIGJhY2tlbmQKKyAqIC0tLS0tLS0tCisgKi8KK3ZvaWQKK3Bnc3RhdF9yZXBvcnRfYmFj a2VuZF9tZW1fYWxsb2NhdGVkX2RlY3JlYXNlKHVpbnQ2NCBkZWFsbG9jYXRpb24pCit7CisJdm9s YXRpbGUgUGdCYWNrZW5kU3RhdHVzICpiZWVudHJ5ID0gTXlCRUVudHJ5OworCisJLyoKKwkgKiBD YXNlcyBtYXkgb2NjdXIgd2hlcmUgc2hhcmVkIG1lbW9yeSBmcm9tIGEgcHJldmlvdXMgcG9zdG1h c3RlcgorCSAqIGludm9jYXRpb24gc3RpbGwgZXhpc3QuIFRoZXNlIGFyZSBjbGVhbmVkIHVwIGF0 IHN0YXJ0dXAgYnkKKwkgKiBkc21fY2xlYW51cF91c2luZ19jb250cm9sX3NlZ21lbnQuIExpbWl0 IGRlY3JlYXNpbmcgbWVtb3J5IGFsbG9jYXRlZCB0bworCSAqIHplcm8gaW4gY2FzZSBubyBjb3Jy ZXNwb25kaW5nIHByaW9yIGluY3JlYXNlIGV4aXN0cyBvciBkZWNyZWFzZSBoYXMKKwkgKiBhbHJl YWR5IGJlZW4gYWNjb3VudGVkIGZvci4KKwkgKi8KKworCWlmICghYmVlbnRyeSB8fCAhcGdzdGF0 X3RyYWNrX2FjdGl2aXRpZXMpCisJeworCQkvKgorCQkgKiBBY2NvdW50IGZvciBtZW1vcnkgYmVm b3JlIHBnc3RhdHMgaXMgaW5pdGlhbGl6ZWQuIFRoaXMgd2lsbCBiZQorCQkgKiBtaWdyYXRlZCB0 byBwZ3N0YXRzIG9uIGluaXRpYWxpemF0aW9uLiBEbyBub3QgYWxsb3cKKwkJICogYmFja2VuZF9t ZW1fYWxsb2NhdGVkIHRvIGdvIGJlbG93IHplcm8uIElmIHBnc3RhdHMgaGFzIG5vdCBiZWVuCisJ CSAqIGluaXRpYWxpemVkLCB3ZSBhcmUgaW4gc3RhcnR1cCBhbmQgd2Ugc2V0IGJhY2tlbmRfbWVt X2FsbG9jYXRlZCB0bworCQkgKiB6ZXJvIGluIGNhc2VzIHdoZXJlIGl0IHdvdWxkIGdvIG5lZ2F0 aXZlIGFuZCBza2lwIGdlbmVyYXRpbmcgYW4KKwkJICogZXJlcG9ydC4KKwkJICovCisJCWlmIChk ZWFsbG9jYXRpb24gPiBiYWNrZW5kX21lbV9hbGxvY2F0ZWQpCisJCQliYWNrZW5kX21lbV9hbGxv Y2F0ZWQgPSAwOworCQllbHNlCisJCQliYWNrZW5kX21lbV9hbGxvY2F0ZWQgLT0gZGVhbGxvY2F0 aW9uOworCisJCXJldHVybjsKKwl9CisKKwkvKgorCSAqIERvIG5vdCBhbGxvdyBiYWNrZW5kX21l bV9hbGxvY2F0ZWQgdG8gZ28gYmVsb3cgemVyby4gZXJlcG9ydCBpZiB3ZQorCSAqIHdvdWxkIGhh dmUuIFRoZXJlJ3Mgbm8gbmVlZCBmb3IgYSBsb2NrIGFyb3VuZCB0aGUgcmVhZCBoZXJlIGFzIGl0 J3MKKwkgKiBiZWluZyByZWZlcmVuY2VkIGZyb20gdGhlIHNhbWUgYmFja2VuZCB3aGljaCBtZWFu cyB0aGF0IHRoZXJlIHNob3VsZG4ndAorCSAqIGJlIGNvbmN1cnJlbnQgd3JpdGVzLiBXZSB3YW50 IHRvIGdlbmVyYXRlIGFuIGVyZXBvcnQgaW4gdGhlc2UgY2FzZXMuCisJICovCisJaWYgKGRlYWxs b2NhdGlvbiA+IGJlZW50cnktPmJhY2tlbmRfbWVtX2FsbG9jYXRlZCkKKwl7CisJCWVyZXBvcnQo TE9HLCBlcnJtc2coImRlY3JlYXNlIHJlZHVjZXMgcmVwb3J0ZWQgYmFja2VuZCBtZW1vcnkgYWxs b2NhdGVkIGJlbG93IHplcm87IHNldHRpbmcgcmVwb3J0ZWQgdG8gMCIpKTsKKworCQkvKgorCQkg KiBPdmVyd3JpdGUgZGVhbGxvY2F0aW9uIHdpdGggY3VycmVudCBiYWNrZW5kX21lbV9hbGxvY2F0 ZWQgc28gd2UgZW5kCisJCSAqIHVwIGF0IHplcm8uCisJCSAqLworCQlkZWFsbG9jYXRpb24gPSBi ZWVudHJ5LT5iYWNrZW5kX21lbV9hbGxvY2F0ZWQ7CisJfQorCisJLyoKKwkgKiBVcGRhdGUgbXkg c3RhdHVzIGVudHJ5LCBmb2xsb3dpbmcgdGhlIHByb3RvY29sIG9mIGJ1bXBpbmcKKwkgKiBzdF9j aGFuZ2Vjb3VudCBiZWZvcmUgYW5kIGFmdGVyLiAgV2UgdXNlIGEgdm9sYXRpbGUgcG9pbnRlciBo ZXJlIHRvCisJICogZW5zdXJlIHRoZSBjb21waWxlciBkb2Vzbid0IHRyeSB0byBnZXQgY3V0ZS4K KwkgKi8KKwlQR1NUQVRfQkVHSU5fV1JJVEVfQUNUSVZJVFkoYmVlbnRyeSk7CisJYmVlbnRyeS0+ YmFja2VuZF9tZW1fYWxsb2NhdGVkIC09IGRlYWxsb2NhdGlvbjsKKwlQR1NUQVRfRU5EX1dSSVRF X0FDVElWSVRZKGJlZW50cnkpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3Bnc3RhdGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwppbmRl eCA0Y2NhMzBhYWU3Li4xNTc0YWE4MDQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvcGdzdGF0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3Mu YwpAQCAtNTM2LDcgKzUzNiw3IEBAIHBnX3N0YXRfZ2V0X3Byb2dyZXNzX2luZm8oUEdfRlVOQ1RJ T05fQVJHUykKIERhdHVtCiBwZ19zdGF0X2dldF9hY3Rpdml0eShQR19GVU5DVElPTl9BUkdTKQog ewotI2RlZmluZSBQR19TVEFUX0dFVF9BQ1RJVklUWV9DT0xTCTMwCisjZGVmaW5lIFBHX1NUQVRf R0VUX0FDVElWSVRZX0NPTFMJMzEKIAlpbnQJCQludW1fYmFja2VuZHMgPSBwZ3N0YXRfZmV0Y2hf c3RhdF9udW1iYWNrZW5kcygpOwogCWludAkJCWN1cnJfYmFja2VuZDsKIAlpbnQJCQlwaWQgPSBQ R19BUkdJU05VTEwoMCkgPyAtMSA6IFBHX0dFVEFSR19JTlQzMigwKTsKQEAgLTYxMCw2ICs2MTAs OCBAQCBwZ19zdGF0X2dldF9hY3Rpdml0eShQR19GVU5DVElPTl9BUkdTKQogCQllbHNlCiAJCQlu dWxsc1sxNl0gPSB0cnVlOwogCisJCXZhbHVlc1szMF0gPSBVSW50NjRHZXREYXR1bShiZWVudHJ5 LT5iYWNrZW5kX21lbV9hbGxvY2F0ZWQpOworCiAJCS8qIFZhbHVlcyBvbmx5IGF2YWlsYWJsZSB0 byByb2xlIG1lbWJlciBvciBwZ19yZWFkX2FsbF9zdGF0cyAqLwogCQlpZiAoSEFTX1BHU1RBVF9Q RVJNSVNTSU9OUyhiZWVudHJ5LT5zdF91c2VyaWQpKQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9tbWdyL2FzZXQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvYXNldC5jCmlu ZGV4IGI2ZWViOGFiYWIuLmM5MWY4ZWZhNGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L21tZ3IvYXNldC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvYXNldC5jCkBAIC00Nyw2 ICs0Nyw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUgInBvcnQvcGdfYml0 dXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9iYWNrZW5kX3N0YXR1cy5oIgogI2luY2x1ZGUgInV0 aWxzL21lbWRlYnVnLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1 dGlscy9tZW11dGlsc19tZW1vcnljaHVuay5oIgpAQCAtNTA5LDYgKzUxMCw3IEBAIEFsbG9jU2V0 Q29udGV4dENyZWF0ZUludGVybmFsKE1lbW9yeUNvbnRleHQgcGFyZW50LAogCQkJCQkJbmFtZSk7 CiAKIAkoKE1lbW9yeUNvbnRleHQpIHNldCktPm1lbV9hbGxvY2F0ZWQgPSBmaXJzdEJsb2NrU2l6 ZTsKKwlwZ3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9pbmNyZWFzZShmaXJzdEJs b2NrU2l6ZSk7CiAKIAlyZXR1cm4gKE1lbW9yeUNvbnRleHQpIHNldDsKIH0KQEAgLTUzMiw2ICs1 MzQsNyBAQCBBbGxvY1NldFJlc2V0KE1lbW9yeUNvbnRleHQgY29udGV4dCkKIAlBbGxvY0Jsb2Nr CWJsb2NrOwogCVNpemUJCWtlZXBlcnNpemUgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZCiAJPSBz ZXQtPmtlZXBlci0+ZW5kcHRyIC0gKChjaGFyICopIHNldCk7CisJdWludDY0CQlkZWFsbG9jYXRp b24gPSAwOwogCiAJQXNzZXJ0QXJnKEFsbG9jU2V0SXNWYWxpZChzZXQpKTsKIApAQCAtNTcxLDYg KzU3NCw3IEBAIEFsbG9jU2V0UmVzZXQoTWVtb3J5Q29udGV4dCBjb250ZXh0KQogCQl7CiAJCQkv KiBOb3JtYWwgY2FzZSwgcmVsZWFzZSB0aGUgYmxvY2sgKi8KIAkJCWNvbnRleHQtPm1lbV9hbGxv Y2F0ZWQgLT0gYmxvY2stPmVuZHB0ciAtICgoY2hhciAqKSBibG9jayk7CisJCQlkZWFsbG9jYXRp b24gKz0gYmxvY2stPmVuZHB0ciAtICgoY2hhciAqKSBibG9jayk7CiAKICNpZmRlZiBDTE9CQkVS X0ZSRUVEX01FTU9SWQogCQkJd2lwZV9tZW0oYmxvY2ssIGJsb2NrLT5mcmVlcHRyIC0gKChjaGFy ICopIGJsb2NrKSk7CkBAIC01ODEsNiArNTg1LDcgQEAgQWxsb2NTZXRSZXNldChNZW1vcnlDb250 ZXh0IGNvbnRleHQpCiAJfQogCiAJQXNzZXJ0KGNvbnRleHQtPm1lbV9hbGxvY2F0ZWQgPT0ga2Vl cGVyc2l6ZSk7CisJcGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfZGVjcmVhc2Uo ZGVhbGxvY2F0aW9uKTsKIAogCS8qIFJlc2V0IGJsb2NrIHNpemUgYWxsb2NhdGlvbiBzZXF1ZW5j ZSwgdG9vICovCiAJc2V0LT5uZXh0QmxvY2tTaXplID0gc2V0LT5pbml0QmxvY2tTaXplOwpAQCAt NjAwLDYgKzYwNSw3IEBAIEFsbG9jU2V0RGVsZXRlKE1lbW9yeUNvbnRleHQgY29udGV4dCkKIAlB bGxvY0Jsb2NrCWJsb2NrID0gc2V0LT5ibG9ja3M7CiAJU2l6ZQkJa2VlcGVyc2l6ZSBQR19VU0VE X0ZPUl9BU1NFUlRTX09OTFkKIAk9IHNldC0+a2VlcGVyLT5lbmRwdHIgLSAoKGNoYXIgKikgc2V0 KTsKKwl1aW50NjQJCWRlYWxsb2NhdGlvbiA9IDA7CiAKIAlBc3NlcnRBcmcoQWxsb2NTZXRJc1Zh bGlkKHNldCkpOwogCkBAIC02MzUsMTEgKzY0MSwxMyBAQCBBbGxvY1NldERlbGV0ZShNZW1vcnlD b250ZXh0IGNvbnRleHQpCiAKIAkJCQlmcmVlbGlzdC0+Zmlyc3RfZnJlZSA9IChBbGxvY1NldENv bnRleHQgKikgb2xkc2V0LT5oZWFkZXIubmV4dGNoaWxkOwogCQkJCWZyZWVsaXN0LT5udW1fZnJl ZS0tOworCQkJCWRlYWxsb2NhdGlvbiArPSBvbGRzZXQtPmhlYWRlci5tZW1fYWxsb2NhdGVkOwog CiAJCQkJLyogQWxsIHRoYXQgcmVtYWlucyBpcyB0byBmcmVlIHRoZSBoZWFkZXIvaW5pdGlhbCBi bG9jayAqLwogCQkJCWZyZWUob2xkc2V0KTsKIAkJCX0KIAkJCUFzc2VydChmcmVlbGlzdC0+bnVt X2ZyZWUgPT0gMCk7CisJCQlwZ3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9kZWNy ZWFzZShkZWFsbG9jYXRpb24pOwogCQl9CiAKIAkJLyogTm93IGFkZCB0aGUganVzdC1kZWxldGVk IGNvbnRleHQgdG8gdGhlIGZyZWVsaXN0LiAqLwpAQCAtNjU2LDcgKzY2NCwxMCBAQCBBbGxvY1Nl dERlbGV0ZShNZW1vcnlDb250ZXh0IGNvbnRleHQpCiAJCUFsbG9jQmxvY2sJbmV4dCA9IGJsb2Nr LT5uZXh0OwogCiAJCWlmIChibG9jayAhPSBzZXQtPmtlZXBlcikKKwkJewogCQkJY29udGV4dC0+ bWVtX2FsbG9jYXRlZCAtPSBibG9jay0+ZW5kcHRyIC0gKChjaGFyICopIGJsb2NrKTsKKwkJCWRl YWxsb2NhdGlvbiArPSBibG9jay0+ZW5kcHRyIC0gKChjaGFyICopIGJsb2NrKTsKKwkJfQogCiAj aWZkZWYgQ0xPQkJFUl9GUkVFRF9NRU1PUlkKIAkJd2lwZV9tZW0oYmxvY2ssIGJsb2NrLT5mcmVl cHRyIC0gKChjaGFyICopIGJsb2NrKSk7CkBAIC02NjksNiArNjgwLDggQEAgQWxsb2NTZXREZWxl dGUoTWVtb3J5Q29udGV4dCBjb250ZXh0KQogCX0KIAogCUFzc2VydChjb250ZXh0LT5tZW1fYWxs b2NhdGVkID09IGtlZXBlcnNpemUpOworCXBnc3RhdF9yZXBvcnRfYmFja2VuZF9tZW1fYWxsb2Nh dGVkX2RlY3JlYXNlKGRlYWxsb2NhdGlvbiArCisJCQkJCQkJCQkJCQkgY29udGV4dC0+bWVtX2Fs bG9jYXRlZCk7CiAKIAkvKiBGaW5hbGx5LCBmcmVlIHRoZSBjb250ZXh0IGhlYWRlciwgaW5jbHVk aW5nIHRoZSBrZWVwZXIgYmxvY2sgKi8KIAlmcmVlKHNldCk7CkBAIC03MTIsNiArNzI1LDcgQEAg QWxsb2NTZXRBbGxvYyhNZW1vcnlDb250ZXh0IGNvbnRleHQsIFNpemUgc2l6ZSkKIAkJCXJldHVy biBOVUxMOwogCiAJCWNvbnRleHQtPm1lbV9hbGxvY2F0ZWQgKz0gYmxrc2l6ZTsKKwkJcGdzdGF0 X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfaW5jcmVhc2UoYmxrc2l6ZSk7CiAKIAkJYmxv Y2stPmFzZXQgPSBzZXQ7CiAJCWJsb2NrLT5mcmVlcHRyID0gYmxvY2stPmVuZHB0ciA9ICgoY2hh ciAqKSBibG9jaykgKyBibGtzaXplOwpAQCAtOTE2LDYgKzkzMCw3IEBAIEFsbG9jU2V0QWxsb2Mo TWVtb3J5Q29udGV4dCBjb250ZXh0LCBTaXplIHNpemUpCiAJCQlyZXR1cm4gTlVMTDsKIAogCQlj b250ZXh0LT5tZW1fYWxsb2NhdGVkICs9IGJsa3NpemU7CisJCXBnc3RhdF9yZXBvcnRfYmFja2Vu ZF9tZW1fYWxsb2NhdGVkX2luY3JlYXNlKGJsa3NpemUpOwogCiAJCWJsb2NrLT5hc2V0ID0gc2V0 OwogCQlibG9jay0+ZnJlZXB0ciA9ICgoY2hhciAqKSBibG9jaykgKyBBTExPQ19CTE9DS0hEUlNa OwpAQCAtMTAxNiw2ICsxMDMxLDcgQEAgQWxsb2NTZXRGcmVlKHZvaWQgKnBvaW50ZXIpCiAJCQli bG9jay0+bmV4dC0+cHJldiA9IGJsb2NrLT5wcmV2OwogCiAJCXNldC0+aGVhZGVyLm1lbV9hbGxv Y2F0ZWQgLT0gYmxvY2stPmVuZHB0ciAtICgoY2hhciAqKSBibG9jayk7CisJCXBnc3RhdF9yZXBv cnRfYmFja2VuZF9tZW1fYWxsb2NhdGVkX2RlY3JlYXNlKGJsb2NrLT5lbmRwdHIgLSAoKGNoYXIg KikgYmxvY2spKTsKIAogI2lmZGVmIENMT0JCRVJfRlJFRURfTUVNT1JZCiAJCXdpcGVfbWVtKGJs b2NrLCBibG9jay0+ZnJlZXB0ciAtICgoY2hhciAqKSBibG9jaykpOwpAQCAtMTEyNyw3ICsxMTQz LDkgQEAgQWxsb2NTZXRSZWFsbG9jKHZvaWQgKnBvaW50ZXIsIFNpemUgc2l6ZSkKIAogCQkvKiB1 cGRhdGVkIHNlcGFyYXRlbHksIG5vdCB0byB1bmRlcmZsb3cgd2hlbiAob2xkYmxrc2l6ZSA+IGJs a3NpemUpICovCiAJCXNldC0+aGVhZGVyLm1lbV9hbGxvY2F0ZWQgLT0gb2xkYmxrc2l6ZTsKKwkJ cGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfZGVjcmVhc2Uob2xkYmxrc2l6ZSk7 CiAJCXNldC0+aGVhZGVyLm1lbV9hbGxvY2F0ZWQgKz0gYmxrc2l6ZTsKKwkJcGdzdGF0X3JlcG9y dF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfaW5jcmVhc2UoYmxrc2l6ZSk7CiAKIAkJYmxvY2stPmZy ZWVwdHIgPSBibG9jay0+ZW5kcHRyID0gKChjaGFyICopIGJsb2NrKSArIGJsa3NpemU7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvZ2VuZXJhdGlvbi5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvbW1nci9nZW5lcmF0aW9uLmMKaW5kZXggYjM5ODk0ZWM5NC4uMzZlNWIzZjk0ZCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9nZW5lcmF0aW9uLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbW1nci9nZW5lcmF0aW9uLmMKQEAgLTM3LDYgKzM3LDcgQEAKIAogI2lu Y2x1ZGUgImxpYi9pbGlzdC5oIgogI2luY2x1ZGUgInBvcnQvcGdfYml0dXRpbHMuaCIKKyNpbmNs dWRlICJ1dGlscy9iYWNrZW5kX3N0YXR1cy5oIgogI2luY2x1ZGUgInV0aWxzL21lbWRlYnVnLmgi CiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlsc19t ZW1vcnljaHVuay5oIgpAQCAtMjU4LDYgKzI1OSw3IEBAIEdlbmVyYXRpb25Db250ZXh0Q3JlYXRl KE1lbW9yeUNvbnRleHQgcGFyZW50LAogCQkJCQkJbmFtZSk7CiAKIAkoKE1lbW9yeUNvbnRleHQp IHNldCktPm1lbV9hbGxvY2F0ZWQgPSBmaXJzdEJsb2NrU2l6ZTsKKwlwZ3N0YXRfcmVwb3J0X2Jh Y2tlbmRfbWVtX2FsbG9jYXRlZF9pbmNyZWFzZShmaXJzdEJsb2NrU2l6ZSk7CiAKIAlyZXR1cm4g KE1lbW9yeUNvbnRleHQpIHNldDsKIH0KQEAgLTI3NCw2ICsyNzYsNyBAQCBHZW5lcmF0aW9uUmVz ZXQoTWVtb3J5Q29udGV4dCBjb250ZXh0KQogewogCUdlbmVyYXRpb25Db250ZXh0ICpzZXQgPSAo R2VuZXJhdGlvbkNvbnRleHQgKikgY29udGV4dDsKIAlkbGlzdF9tdXRhYmxlX2l0ZXIgbWl0ZXI7 CisJdWludDY0CWRlYWxsb2NhdGlvbiA9IDA7CiAKIAlBc3NlcnRBcmcoR2VuZXJhdGlvbklzVmFs aWQoc2V0KSk7CiAKQEAgLTI5Niw5ICsyOTksMTQgQEAgR2VuZXJhdGlvblJlc2V0KE1lbW9yeUNv bnRleHQgY29udGV4dCkKIAkJaWYgKGJsb2NrID09IHNldC0+a2VlcGVyKQogCQkJR2VuZXJhdGlv bkJsb2NrTWFya0VtcHR5KGJsb2NrKTsKIAkJZWxzZQorCQl7CisJCQlkZWFsbG9jYXRpb24gKz0g YmxvY2stPmJsa3NpemU7CiAJCQlHZW5lcmF0aW9uQmxvY2tGcmVlKHNldCwgYmxvY2spOworCQl9 CiAJfQogCisJcGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfZGVjcmVhc2UoZGVh bGxvY2F0aW9uKTsKKwogCS8qIHNldCBpdCBzbyBuZXcgYWxsb2NhdGlvbnMgdG8gbWFrZSB1c2Ug b2YgdGhlIGtlZXBlciBibG9jayAqLwogCXNldC0+YmxvY2sgPSBzZXQtPmtlZXBlcjsKIApAQCAt MzE5LDYgKzMyNyw5IEBAIEdlbmVyYXRpb25EZWxldGUoTWVtb3J5Q29udGV4dCBjb250ZXh0KQog ewogCS8qIFJlc2V0IHRvIHJlbGVhc2UgYWxsIHJlbGVhc2FibGUgR2VuZXJhdGlvbkJsb2NrcyAq LwogCUdlbmVyYXRpb25SZXNldChjb250ZXh0KTsKKworCXBnc3RhdF9yZXBvcnRfYmFja2VuZF9t ZW1fYWxsb2NhdGVkX2RlY3JlYXNlKGNvbnRleHQtPm1lbV9hbGxvY2F0ZWQpOworCiAJLyogQW5k IGZyZWUgdGhlIGNvbnRleHQgaGVhZGVyIGFuZCBrZWVwZXIgYmxvY2sgKi8KIAlmcmVlKGNvbnRl eHQpOwogfQpAQCAtMzU1LDYgKzM2Niw3IEBAIEdlbmVyYXRpb25BbGxvYyhNZW1vcnlDb250ZXh0 IGNvbnRleHQsIFNpemUgc2l6ZSkKIAkJCXJldHVybiBOVUxMOwogCiAJCWNvbnRleHQtPm1lbV9h bGxvY2F0ZWQgKz0gYmxrc2l6ZTsKKwkJcGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0 ZWRfaW5jcmVhc2UoYmxrc2l6ZSk7CiAKIAkJLyogYmxvY2sgd2l0aCBhIHNpbmdsZSAodXNlZCkg Y2h1bmsgKi8KIAkJYmxvY2stPmNvbnRleHQgPSBzZXQ7CkBAIC00NTgsNiArNDcwLDcgQEAgR2Vu ZXJhdGlvbkFsbG9jKE1lbW9yeUNvbnRleHQgY29udGV4dCwgU2l6ZSBzaXplKQogCQkJCXJldHVy biBOVUxMOwogCiAJCQljb250ZXh0LT5tZW1fYWxsb2NhdGVkICs9IGJsa3NpemU7CisJCQlwZ3N0 YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9pbmNyZWFzZShibGtzaXplKTsKIAogCQkJ LyogaW5pdGlhbGl6ZSB0aGUgbmV3IGJsb2NrICovCiAJCQlHZW5lcmF0aW9uQmxvY2tJbml0KHNl dCwgYmxvY2ssIGJsa3NpemUpOwpAQCAtNjkxLDYgKzcwNCw4IEBAIEdlbmVyYXRpb25GcmVlKHZv aWQgKnBvaW50ZXIpCiAJZGxpc3RfZGVsZXRlKCZibG9jay0+bm9kZSk7CiAKIAlzZXQtPmhlYWRl ci5tZW1fYWxsb2NhdGVkIC09IGJsb2NrLT5ibGtzaXplOworCXBnc3RhdF9yZXBvcnRfYmFja2Vu ZF9tZW1fYWxsb2NhdGVkX2RlY3JlYXNlKGJsb2NrLT5ibGtzaXplKTsKKwogCWZyZWUoYmxvY2sp OwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3NsYWIuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL21tZ3Ivc2xhYi5jCmluZGV4IDJkNzBhZGVmMDkuLmUwZTY5YjM5NGUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3Ivc2xhYi5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL21tZ3Ivc2xhYi5jCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXMu aCIKIAogI2luY2x1ZGUgImxpYi9pbGlzdC5oIgorI2luY2x1ZGUgInV0aWxzL2JhY2tlbmRfc3Rh dHVzLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtZGVidWcuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11 dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzX21lbW9yeWNodW5rLmgiCkBAIC0yMTgs NiArMjE5LDEyIEBAIFNsYWJDb250ZXh0Q3JlYXRlKE1lbW9yeUNvbnRleHQgcGFyZW50LAogCQkJ CQkJcGFyZW50LAogCQkJCQkJbmFtZSk7CiAKKwkvKgorCSAqIElmIFNsYWJDb250ZXh0Q3JlYXRl IGlzIHVwZGF0ZWQgdG8gYWRkIGhlYWRlclNpemUgdG8KKwkgKiBjb250ZXh0LT5tZW1fYWxsb2Nh dGVkLCB0aGVuIHVwZGF0ZSBoZXJlIGFuZCBTbGFiRGVsZXRlIGFwcHJvcHJpYXRlbHkKKwkgKi8K KwlwZ3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9pbmNyZWFzZShoZWFkZXJTaXpl KTsKKwogCXJldHVybiAoTWVtb3J5Q29udGV4dCkgc2xhYjsKIH0KIApAQCAtMjMzLDYgKzI0MCw3 IEBAIFNsYWJSZXNldChNZW1vcnlDb250ZXh0IGNvbnRleHQpCiB7CiAJaW50CQkJaTsKIAlTbGFi Q29udGV4dCAqc2xhYiA9IGNhc3ROb2RlKFNsYWJDb250ZXh0LCBjb250ZXh0KTsKKwl1aW50NjQJ CWRlYWxsb2NhdGlvbiA9IDA7CiAKIAlBc3NlcnQoc2xhYik7CiAKQEAgLTI1OCw5ICsyNjYsMTEg QEAgU2xhYlJlc2V0KE1lbW9yeUNvbnRleHQgY29udGV4dCkKIAkJCWZyZWUoYmxvY2spOwogCQkJ c2xhYi0+bmJsb2Nrcy0tOwogCQkJY29udGV4dC0+bWVtX2FsbG9jYXRlZCAtPSBzbGFiLT5ibG9j a1NpemU7CisJCQlkZWFsbG9jYXRpb24gKz0gc2xhYi0+YmxvY2tTaXplOwogCQl9CiAJfQogCisJ cGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRfZGVjcmVhc2UoZGVhbGxvY2F0aW9u KTsKIAlzbGFiLT5taW5GcmVlQ2h1bmtzID0gMDsKIAogCUFzc2VydChzbGFiLT5uYmxvY2tzID09 IDApOwpAQCAtMjc0LDggKzI4NCwxNyBAQCBTbGFiUmVzZXQoTWVtb3J5Q29udGV4dCBjb250ZXh0 KQogdm9pZAogU2xhYkRlbGV0ZShNZW1vcnlDb250ZXh0IGNvbnRleHQpCiB7CisJLyoKKwkgKiBV bnRpbCBoZWFkZXIgYWxsb2NhdGlvbiBpcyBpbmNsdWRlZCBpbiBjb250ZXh0LT5tZW1fYWxsb2Nh dGVkLCBjYXN0IHRvCisJICogc2xhYiBhbmQgZGVjcmVtZW50IHRoZSBoZWFkZXJTaXplCisJICov CisJU2xhYkNvbnRleHQgKnNsYWIgPSBjYXN0Tm9kZShTbGFiQ29udGV4dCwgY29udGV4dCk7CisK IAkvKiBSZXNldCB0byByZWxlYXNlIGFsbCB0aGUgU2xhYkJsb2NrcyAqLwogCVNsYWJSZXNldChj b250ZXh0KTsKKworCXBnc3RhdF9yZXBvcnRfYmFja2VuZF9tZW1fYWxsb2NhdGVkX2RlY3JlYXNl KHNsYWItPmhlYWRlclNpemUpOworCiAJLyogQW5kIGZyZWUgdGhlIGNvbnRleHQgaGVhZGVyICov CiAJZnJlZShjb250ZXh0KTsKIH0KQEAgLTM0NCw2ICszNjMsNyBAQCBTbGFiQWxsb2MoTWVtb3J5 Q29udGV4dCBjb250ZXh0LCBTaXplIHNpemUpCiAJCXNsYWItPm1pbkZyZWVDaHVua3MgPSBzbGFi LT5jaHVua3NQZXJCbG9jazsKIAkJc2xhYi0+bmJsb2NrcyArPSAxOwogCQljb250ZXh0LT5tZW1f YWxsb2NhdGVkICs9IHNsYWItPmJsb2NrU2l6ZTsKKwkJcGdzdGF0X3JlcG9ydF9iYWNrZW5kX21l bV9hbGxvY2F0ZWRfaW5jcmVhc2Uoc2xhYi0+YmxvY2tTaXplKTsKIAl9CiAKIAkvKiBncmFiIHRo ZSBibG9jayBmcm9tIHRoZSBmcmVlbGlzdCAoZXZlbiB0aGUgbmV3IGJsb2NrIGlzIHRoZXJlKSAq LwpAQCAtNTExLDYgKzUzMSw3IEBAIFNsYWJGcmVlKHZvaWQgKnBvaW50ZXIpCiAJCWZyZWUoYmxv Y2spOwogCQlzbGFiLT5uYmxvY2tzLS07CiAJCXNsYWItPmhlYWRlci5tZW1fYWxsb2NhdGVkIC09 IHNsYWItPmJsb2NrU2l6ZTsKKwkJcGdzdGF0X3JlcG9ydF9iYWNrZW5kX21lbV9hbGxvY2F0ZWRf ZGVjcmVhc2Uoc2xhYi0+YmxvY2tTaXplKTsKIAl9CiAJZWxzZQogCQlkbGlzdF9wdXNoX2hlYWQo JnNsYWItPmZyZWVsaXN0W2Jsb2NrLT5uZnJlZV0sICZibG9jay0+bm9kZSk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdAppbmRleCBiZTQ3NTgzMTIyLi5lMWJmYjg1YjI1IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQKQEAgLTUzNDAsOSArNTM0MCw5IEBACiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0 X2FjdGl2aXR5JywgcHJvcm93cyA9PiAnMTAwJywgcHJvaXNzdHJpY3QgPT4gJ2YnLAogICBwcm9y ZXRzZXQgPT4gJ3QnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ICdyJywKICAg cHJvcmV0dHlwZSA9PiAncmVjb3JkJywgcHJvYXJndHlwZXMgPT4gJ2ludDQnLAotICBwcm9hbGxh cmd0eXBlcyA9PiAne2ludDQsb2lkLGludDQsb2lkLHRleHQsdGV4dCx0ZXh0LHRleHQsdGV4dCx0 aW1lc3RhbXB0eix0aW1lc3RhbXB0eix0aW1lc3RhbXB0eix0aW1lc3RhbXB0eixpbmV0LHRleHQs aW50NCx4aWQseGlkLHRleHQsYm9vbCx0ZXh0LHRleHQsaW50NCx0ZXh0LG51bWVyaWMsdGV4dCxi b29sLHRleHQsYm9vbCxpbnQ0LGludDh9JywKLSAgcHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG8s byxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvfScsCi0g IHByb2FyZ25hbWVzID0+ICd7cGlkLGRhdGlkLHBpZCx1c2VzeXNpZCxhcHBsaWNhdGlvbl9uYW1l LHN0YXRlLHF1ZXJ5LHdhaXRfZXZlbnRfdHlwZSx3YWl0X2V2ZW50LHhhY3Rfc3RhcnQscXVlcnlf c3RhcnQsYmFja2VuZF9zdGFydCxzdGF0ZV9jaGFuZ2UsY2xpZW50X2FkZHIsY2xpZW50X2hvc3Ru YW1lLGNsaWVudF9wb3J0LGJhY2tlbmRfeGlkLGJhY2tlbmRfeG1pbixiYWNrZW5kX3R5cGUsc3Ns LHNzbHZlcnNpb24sc3NsY2lwaGVyLHNzbGJpdHMsc3NsX2NsaWVudF9kbixzc2xfY2xpZW50X3Nl cmlhbCxzc2xfaXNzdWVyX2RuLGdzc19hdXRoLGdzc19wcmluYyxnc3NfZW5jLGxlYWRlcl9waWQs cXVlcnlfaWR9JywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3tpbnQ0LG9pZCxpbnQ0LG9pZCx0ZXh0 LHRleHQsdGV4dCx0ZXh0LHRleHQsdGltZXN0YW1wdHosdGltZXN0YW1wdHosdGltZXN0YW1wdHos dGltZXN0YW1wdHosaW5ldCx0ZXh0LGludDQseGlkLHhpZCx0ZXh0LGJvb2wsdGV4dCx0ZXh0LGlu dDQsdGV4dCxudW1lcmljLHRleHQsYm9vbCx0ZXh0LGJvb2wsaW50NCxpbnQ4LGludDh9JywKKyAg cHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8s byxvLG8sbyxvLG8sbyxvLG8sbyxvLG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3twaWQsZGF0aWQs cGlkLHVzZXN5c2lkLGFwcGxpY2F0aW9uX25hbWUsc3RhdGUscXVlcnksd2FpdF9ldmVudF90eXBl LHdhaXRfZXZlbnQseGFjdF9zdGFydCxxdWVyeV9zdGFydCxiYWNrZW5kX3N0YXJ0LHN0YXRlX2No YW5nZSxjbGllbnRfYWRkcixjbGllbnRfaG9zdG5hbWUsY2xpZW50X3BvcnQsYmFja2VuZF94aWQs YmFja2VuZF94bWluLGJhY2tlbmRfdHlwZSxzc2wsc3NsdmVyc2lvbixzc2xjaXBoZXIsc3NsYml0 cyxzc2xfY2xpZW50X2RuLHNzbF9jbGllbnRfc2VyaWFsLHNzbF9pc3N1ZXJfZG4sZ3NzX2F1dGgs Z3NzX3ByaW5jLGdzc19lbmMsbGVhZGVyX3BpZCxxdWVyeV9pZCxiYWNrZW5kX21lbV9hbGxvY2F0 ZWR9JywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9hY3Rpdml0eScgfSwKIHsgb2lkID0+ICcz MzE4JywKICAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IGluZm9ybWF0aW9uIGFib3V0IHByb2dyZXNz IG9mIGJhY2tlbmRzIHJ1bm5pbmcgbWFpbnRlbmFuY2UgY29tbWFuZCcsCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS91dGlscy9iYWNrZW5kX3N0YXR1cy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvYmFj a2VuZF9zdGF0dXMuaAppbmRleCA3NDAzYmNhMjVlLi45YmRjNDE5N2JkIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS91dGlscy9iYWNrZW5kX3N0YXR1cy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxz L2JhY2tlbmRfc3RhdHVzLmgKQEAgLTE2OCw2ICsxNjgsOSBAQCB0eXBlZGVmIHN0cnVjdCBQZ0Jh Y2tlbmRTdGF0dXMKIAogCS8qIHF1ZXJ5IGlkZW50aWZpZXIsIG9wdGlvbmFsbHkgY29tcHV0ZWQg dXNpbmcgcG9zdF9wYXJzZV9hbmFseXplX2hvb2sgKi8KIAl1aW50NjQJCXN0X3F1ZXJ5X2lkOwor CisJLyogQ3VycmVudCBtZW1vcnkgYWxsb2NhdGVkIHRvIHRoaXMgYmFja2VuZCAqLworCXVpbnQ2 NAkJYmFja2VuZF9tZW1fYWxsb2NhdGVkOwogfSBQZ0JhY2tlbmRTdGF0dXM7CiAKIApAQCAtMzA1 LDcgKzMwOCw5IEBAIGV4dGVybiBjb25zdCBjaGFyICpwZ3N0YXRfZ2V0X2JhY2tlbmRfY3VycmVu dF9hY3Rpdml0eShpbnQgcGlkLCBib29sIGNoZWNrVXNlcik7CiBleHRlcm4gY29uc3QgY2hhciAq cGdzdGF0X2dldF9jcmFzaGVkX2JhY2tlbmRfYWN0aXZpdHkoaW50IHBpZCwgY2hhciAqYnVmZmVy LAogCQkJCQkJCQkJCQkJCSAgIGludCBidWZsZW4pOwogZXh0ZXJuIHVpbnQ2NCBwZ3N0YXRfZ2V0 X215X3F1ZXJ5X2lkKHZvaWQpOwotCitleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X2JhY2tlbmRf bWVtX2FsbG9jYXRlZF9pbmNyZWFzZSh1aW50NjQgYWxsb2NhdGlvbik7CitleHRlcm4gdm9pZCBw Z3N0YXRfcmVwb3J0X2JhY2tlbmRfbWVtX2FsbG9jYXRlZF9kZWNyZWFzZSh1aW50NjQgZGVhbGxv Y2F0aW9uKTsKK2V4dGVybiB1aW50NjQgcGdzdGF0X2dldF9hbGxfYmFja2VuZF9tZW1vcnlfYWxs b2NhdGVkKHZvaWQpOwogCiAvKiAtLS0tLS0tLS0tCiAgKiBTdXBwb3J0IGZ1bmN0aW9ucyBmb3Ig dGhlIFNRTC1jYWxsYWJsZSBmdW5jdGlvbnMgdG8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5v dXQKaW5kZXggN2VjM2QyNjg4Zi4uNjc0ZTVjNmZlNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9y dWxlcy5vdXQKQEAgLTE3NTcsOSArMTc1NywxMCBAQCBwZ19zdGF0X2FjdGl2aXR5fCBTRUxFQ1Qg cy5kYXRpZCwKICAgICBzLmJhY2tlbmRfeGlkLAogICAgIHMuYmFja2VuZF94bWluLAogICAgIHMu cXVlcnlfaWQsCisgICAgcy5iYWNrZW5kX21lbV9hbGxvY2F0ZWQsCiAgICAgcy5xdWVyeSwKICAg ICBzLmJhY2tlbmRfdHlwZQotICAgRlJPTSAoKHBnX3N0YXRfZ2V0X2FjdGl2aXR5KE5VTEw6Omlu dGVnZXIpIHMoZGF0aWQsIHBpZCwgdXNlc3lzaWQsIGFwcGxpY2F0aW9uX25hbWUsIHN0YXRlLCBx dWVyeSwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50LCB4YWN0X3N0YXJ0LCBxdWVyeV9zdGFy dCwgYmFja2VuZF9zdGFydCwgc3RhdGVfY2hhbmdlLCBjbGllbnRfYWRkciwgY2xpZW50X2hvc3Ru YW1lLCBjbGllbnRfcG9ydCwgYmFja2VuZF94aWQsIGJhY2tlbmRfeG1pbiwgYmFja2VuZF90eXBl LCBzc2wsIHNzbHZlcnNpb24sIHNzbGNpcGhlciwgc3NsYml0cywgc3NsX2NsaWVudF9kbiwgc3Ns X2NsaWVudF9zZXJpYWwsIHNzbF9pc3N1ZXJfZG4sIGdzc19hdXRoLCBnc3NfcHJpbmMsIGdzc19l bmMsIGxlYWRlcl9waWQsIHF1ZXJ5X2lkKQorICAgRlJPTSAoKHBnX3N0YXRfZ2V0X2FjdGl2aXR5 KE5VTEw6OmludGVnZXIpIHMoZGF0aWQsIHBpZCwgdXNlc3lzaWQsIGFwcGxpY2F0aW9uX25hbWUs IHN0YXRlLCBxdWVyeSwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50LCB4YWN0X3N0YXJ0LCBx dWVyeV9zdGFydCwgYmFja2VuZF9zdGFydCwgc3RhdGVfY2hhbmdlLCBjbGllbnRfYWRkciwgY2xp ZW50X2hvc3RuYW1lLCBjbGllbnRfcG9ydCwgYmFja2VuZF94aWQsIGJhY2tlbmRfeG1pbiwgYmFj a2VuZF90eXBlLCBzc2wsIHNzbHZlcnNpb24sIHNzbGNpcGhlciwgc3NsYml0cywgc3NsX2NsaWVu dF9kbiwgc3NsX2NsaWVudF9zZXJpYWwsIHNzbF9pc3N1ZXJfZG4sIGdzc19hdXRoLCBnc3NfcHJp bmMsIGdzc19lbmMsIGxlYWRlcl9waWQsIHF1ZXJ5X2lkLCBiYWNrZW5kX21lbV9hbGxvY2F0ZWQp CiAgICAgIExFRlQgSk9JTiBwZ19kYXRhYmFzZSBkIE9OICgocy5kYXRpZCA9IGQub2lkKSkpCiAg ICAgIExFRlQgSk9JTiBwZ19hdXRoaWQgdSBPTiAoKHMudXNlc3lzaWQgPSB1Lm9pZCkpKTsKIHBn X3N0YXRfYWxsX2luZGV4ZXN8IFNFTEVDVCBjLm9pZCBBUyByZWxpZCwKQEAgLTE4NzEsNyArMTg3 Miw3IEBAIHBnX3N0YXRfZ3NzYXBpfCBTRUxFQ1Qgcy5waWQsCiAgICAgcy5nc3NfYXV0aCBBUyBn c3NfYXV0aGVudGljYXRlZCwKICAgICBzLmdzc19wcmluYyBBUyBwcmluY2lwYWwsCiAgICAgcy5n c3NfZW5jIEFTIGVuY3J5cHRlZAotICAgRlJPTSBwZ19zdGF0X2dldF9hY3Rpdml0eShOVUxMOjpp bnRlZ2VyKSBzKGRhdGlkLCBwaWQsIHVzZXN5c2lkLCBhcHBsaWNhdGlvbl9uYW1lLCBzdGF0ZSwg cXVlcnksIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCwgeGFjdF9zdGFydCwgcXVlcnlfc3Rh cnQsIGJhY2tlbmRfc3RhcnQsIHN0YXRlX2NoYW5nZSwgY2xpZW50X2FkZHIsIGNsaWVudF9ob3N0 bmFtZSwgY2xpZW50X3BvcnQsIGJhY2tlbmRfeGlkLCBiYWNrZW5kX3htaW4sIGJhY2tlbmRfdHlw ZSwgc3NsLCBzc2x2ZXJzaW9uLCBzc2xjaXBoZXIsIHNzbGJpdHMsIHNzbF9jbGllbnRfZG4sIHNz bF9jbGllbnRfc2VyaWFsLCBzc2xfaXNzdWVyX2RuLCBnc3NfYXV0aCwgZ3NzX3ByaW5jLCBnc3Nf ZW5jLCBsZWFkZXJfcGlkLCBxdWVyeV9pZCkKKyAgIEZST00gcGdfc3RhdF9nZXRfYWN0aXZpdHko TlVMTDo6aW50ZWdlcikgcyhkYXRpZCwgcGlkLCB1c2VzeXNpZCwgYXBwbGljYXRpb25fbmFtZSwg c3RhdGUsIHF1ZXJ5LCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQsIHhhY3Rfc3RhcnQsIHF1 ZXJ5X3N0YXJ0LCBiYWNrZW5kX3N0YXJ0LCBzdGF0ZV9jaGFuZ2UsIGNsaWVudF9hZGRyLCBjbGll bnRfaG9zdG5hbWUsIGNsaWVudF9wb3J0LCBiYWNrZW5kX3hpZCwgYmFja2VuZF94bWluLCBiYWNr ZW5kX3R5cGUsIHNzbCwgc3NsdmVyc2lvbiwgc3NsY2lwaGVyLCBzc2xiaXRzLCBzc2xfY2xpZW50 X2RuLCBzc2xfY2xpZW50X3NlcmlhbCwgc3NsX2lzc3Vlcl9kbiwgZ3NzX2F1dGgsIGdzc19wcmlu YywgZ3NzX2VuYywgbGVhZGVyX3BpZCwgcXVlcnlfaWQsIGJhY2tlbmRfbWVtX2FsbG9jYXRlZCkK ICAgV0hFUkUgKHMuY2xpZW50X3BvcnQgSVMgTk9UIE5VTEwpOwogcGdfc3RhdF9wcm9ncmVzc19h bmFseXplfCBTRUxFQ1Qgcy5waWQsCiAgICAgcy5kYXRpZCwKQEAgLTIwNTIsNyArMjA1Myw3IEBA IHBnX3N0YXRfcmVwbGljYXRpb258IFNFTEVDVCBzLnBpZCwKICAgICB3LnN5bmNfcHJpb3JpdHks CiAgICAgdy5zeW5jX3N0YXRlLAogICAgIHcucmVwbHlfdGltZQotICAgRlJPTSAoKHBnX3N0YXRf Z2V0X2FjdGl2aXR5KE5VTEw6OmludGVnZXIpIHMoZGF0aWQsIHBpZCwgdXNlc3lzaWQsIGFwcGxp Y2F0aW9uX25hbWUsIHN0YXRlLCBxdWVyeSwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50LCB4 YWN0X3N0YXJ0LCBxdWVyeV9zdGFydCwgYmFja2VuZF9zdGFydCwgc3RhdGVfY2hhbmdlLCBjbGll bnRfYWRkciwgY2xpZW50X2hvc3RuYW1lLCBjbGllbnRfcG9ydCwgYmFja2VuZF94aWQsIGJhY2tl bmRfeG1pbiwgYmFja2VuZF90eXBlLCBzc2wsIHNzbHZlcnNpb24sIHNzbGNpcGhlciwgc3NsYml0 cywgc3NsX2NsaWVudF9kbiwgc3NsX2NsaWVudF9zZXJpYWwsIHNzbF9pc3N1ZXJfZG4sIGdzc19h dXRoLCBnc3NfcHJpbmMsIGdzc19lbmMsIGxlYWRlcl9waWQsIHF1ZXJ5X2lkKQorICAgRlJPTSAo KHBnX3N0YXRfZ2V0X2FjdGl2aXR5KE5VTEw6OmludGVnZXIpIHMoZGF0aWQsIHBpZCwgdXNlc3lz aWQsIGFwcGxpY2F0aW9uX25hbWUsIHN0YXRlLCBxdWVyeSwgd2FpdF9ldmVudF90eXBlLCB3YWl0 X2V2ZW50LCB4YWN0X3N0YXJ0LCBxdWVyeV9zdGFydCwgYmFja2VuZF9zdGFydCwgc3RhdGVfY2hh bmdlLCBjbGllbnRfYWRkciwgY2xpZW50X2hvc3RuYW1lLCBjbGllbnRfcG9ydCwgYmFja2VuZF94 aWQsIGJhY2tlbmRfeG1pbiwgYmFja2VuZF90eXBlLCBzc2wsIHNzbHZlcnNpb24sIHNzbGNpcGhl ciwgc3NsYml0cywgc3NsX2NsaWVudF9kbiwgc3NsX2NsaWVudF9zZXJpYWwsIHNzbF9pc3N1ZXJf ZG4sIGdzc19hdXRoLCBnc3NfcHJpbmMsIGdzc19lbmMsIGxlYWRlcl9waWQsIHF1ZXJ5X2lkLCBi YWNrZW5kX21lbV9hbGxvY2F0ZWQpCiAgICAgIEpPSU4gcGdfc3RhdF9nZXRfd2FsX3NlbmRlcnMo KSB3KHBpZCwgc3RhdGUsIHNlbnRfbHNuLCB3cml0ZV9sc24sIGZsdXNoX2xzbiwgcmVwbGF5X2xz biwgd3JpdGVfbGFnLCBmbHVzaF9sYWcsIHJlcGxheV9sYWcsIHN5bmNfcHJpb3JpdHksIHN5bmNf c3RhdGUsIHJlcGx5X3RpbWUpIE9OICgocy5waWQgPSB3LnBpZCkpKQogICAgICBMRUZUIEpPSU4g cGdfYXV0aGlkIHUgT04gKChzLnVzZXN5c2lkID0gdS5vaWQpKSk7CiBwZ19zdGF0X3JlcGxpY2F0 aW9uX3Nsb3RzfCBTRUxFQ1Qgcy5zbG90X25hbWUsCkBAIC0yMDg2LDcgKzIwODcsNyBAQCBwZ19z dGF0X3NzbHwgU0VMRUNUIHMucGlkLAogICAgIHMuc3NsX2NsaWVudF9kbiBBUyBjbGllbnRfZG4s CiAgICAgcy5zc2xfY2xpZW50X3NlcmlhbCBBUyBjbGllbnRfc2VyaWFsLAogICAgIHMuc3NsX2lz c3Vlcl9kbiBBUyBpc3N1ZXJfZG4KLSAgIEZST00gcGdfc3RhdF9nZXRfYWN0aXZpdHkoTlVMTDo6 aW50ZWdlcikgcyhkYXRpZCwgcGlkLCB1c2VzeXNpZCwgYXBwbGljYXRpb25fbmFtZSwgc3RhdGUs IHF1ZXJ5LCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQsIHhhY3Rfc3RhcnQsIHF1ZXJ5X3N0 YXJ0LCBiYWNrZW5kX3N0YXJ0LCBzdGF0ZV9jaGFuZ2UsIGNsaWVudF9hZGRyLCBjbGllbnRfaG9z dG5hbWUsIGNsaWVudF9wb3J0LCBiYWNrZW5kX3hpZCwgYmFja2VuZF94bWluLCBiYWNrZW5kX3R5 cGUsIHNzbCwgc3NsdmVyc2lvbiwgc3NsY2lwaGVyLCBzc2xiaXRzLCBzc2xfY2xpZW50X2RuLCBz c2xfY2xpZW50X3NlcmlhbCwgc3NsX2lzc3Vlcl9kbiwgZ3NzX2F1dGgsIGdzc19wcmluYywgZ3Nz X2VuYywgbGVhZGVyX3BpZCwgcXVlcnlfaWQpCisgICBGUk9NIHBnX3N0YXRfZ2V0X2FjdGl2aXR5 KE5VTEw6OmludGVnZXIpIHMoZGF0aWQsIHBpZCwgdXNlc3lzaWQsIGFwcGxpY2F0aW9uX25hbWUs IHN0YXRlLCBxdWVyeSwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50LCB4YWN0X3N0YXJ0LCBx dWVyeV9zdGFydCwgYmFja2VuZF9zdGFydCwgc3RhdGVfY2hhbmdlLCBjbGllbnRfYWRkciwgY2xp ZW50X2hvc3RuYW1lLCBjbGllbnRfcG9ydCwgYmFja2VuZF94aWQsIGJhY2tlbmRfeG1pbiwgYmFj a2VuZF90eXBlLCBzc2wsIHNzbHZlcnNpb24sIHNzbGNpcGhlciwgc3NsYml0cywgc3NsX2NsaWVu dF9kbiwgc3NsX2NsaWVudF9zZXJpYWwsIHNzbF9pc3N1ZXJfZG4sIGdzc19hdXRoLCBnc3NfcHJp bmMsIGdzc19lbmMsIGxlYWRlcl9waWQsIHF1ZXJ5X2lkLCBiYWNrZW5kX21lbV9hbGxvY2F0ZWQp CiAgIFdIRVJFIChzLmNsaWVudF9wb3J0IElTIE5PVCBOVUxMKTsKIHBnX3N0YXRfc3Vic2NyaXB0 aW9ufCBTRUxFQ1Qgc3Uub2lkIEFTIHN1YmlkLAogICAgIHN1LnN1Ym5hbWUsCi0tIAoyLjI1LjEK Cg== --=-0w6Cpo0aaLaBPahXMMfk--