Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w9gjs-001eRK-1J for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Apr 2026 09:59:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w9gjq-007hN6-25 for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Apr 2026 09:59:23 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w9gjq-007hMt-0C for pgsql-hackers@lists.postgresql.org; Mon, 06 Apr 2026 09:59:22 +0000 Received: from mail-qv1-xf2a.google.com ([2607:f8b0:4864:20::f2a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w9gjm-00000000scB-2bcg for pgsql-hackers@lists.postgresql.org; Mon, 06 Apr 2026 09:59:21 +0000 Received: by mail-qv1-xf2a.google.com with SMTP id 6a1803df08f44-8a5800772f3so33158326d6.2 for ; Mon, 06 Apr 2026 02:59:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775469557; cv=none; d=google.com; s=arc-20240605; b=lTq3kXfy3bgk2VspIJYPNI3mtLkMROAnwyGgoYuwAd5XRkTl+RxGc6RfZXrNm19XqR WIl4ckDSDaoiiW4B/HNCeO0zw7O15NNM+VKqA8BN10ur5MJnKnC2r2BQ25oCeyG6B0Rn 5JvEG4wVGHfD4fnFIEIO8VUnNkCVxeJbp+jA3wOCPdXeWdjHqUjHgRQfbRDriHMNOAEg ELpn6a66guePYR6wj7Yh1eSXaRcICriWdZae1qbJDW0pCzaO6GxpVemsQk2UfEc8gFGc GFh3OQSMnSBiX5RtQB8X2S18uOJrQjc7rWtDnG93NFLpv23faPriqWNxsm+cetxNQmQ7 v6iA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=j2KVGHnz5Wy5iMg/9yl92Ywu+8xOAJqsiU98dWezQ9A=; fh=vuFZMGFIXanMekR5mD8O3HvuyUDf13d0vBNpDLBA8Ls=; b=YLnJLq/yT3msahg3Y3NfJEtrUAEfVqYQpgZcvXtKqdYftMtcQMWBYOCcFzfEaIhwVd UlbyT8f+7WBQJzCPn2ndJbbeBoSGvwlCASfeY3+uym5xfcTyUjUvb/HQ94IBSuznOTzd zrO2xVwXOYgczlKL7ylbVVghFyh6CFz5CQfhuDk/aBTjUXY4jR6i7/MDxMPbWA7tL3gJ 9VgUxjHL8/k8c0lrPMvF5bs2EzXzrzh2K+WL8vWol1tJLZpww8ullSLzrHY6NzDLpsV6 a2YRwGeHr83DIiYQhTbKUIE7nYzHMkgp/NKJO/Phinv0SGtrZ9srpdEC6P1mY7k71S3w 4D2w==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fittl.com; s=google; t=1775469557; x=1776074357; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=j2KVGHnz5Wy5iMg/9yl92Ywu+8xOAJqsiU98dWezQ9A=; b=LtULjyDPOszaAmW+JjeOIe97mV/q2amW2ngO397mT/5U3xB+BMrtrj5iU0aPqbSnHf 7mqYQv5znf9sQXwDCoVuiS2Dz3LWdyrWx9E0Geg47fCG/i9VLazUaHU3SKuyIE+8ig9C nTIffnugGai5OV0iIUMdJqK3A4pKUp3iUM1Gw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775469557; x=1776074357; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=j2KVGHnz5Wy5iMg/9yl92Ywu+8xOAJqsiU98dWezQ9A=; b=bvasUZL8v6jao5+8WkpJKauaM+LmQYvws/rruoH3DozEjMYeO/FfaW4spsK05DtbLj iwSG+bIECAf0LT+hRPHJ4V14fZVVolAlA2IgIj29CqtGq2K18ug62kEzEFqu9FrBru3d LjJ52r71qP8F4gKgWnnsqgCWPMhNnLDAKpp087aPlwbZonLSv+8Mg8IoAm0PNp0j27B3 Ilp2mrHDOoZFhmHfAJxHJx2t2fOA8hiEPWyRtz9Czi37ujK7oa2nuKfaAB2uofQyGR4X lmjqXeRgI6+keVwnz8IzaG3ZhLrM815axp815HgxIymbNeBqVawb7tF5KEtCFnjELapW IoAQ== X-Forwarded-Encrypted: i=1; AJvYcCUnjfFPqKAKjwSY5XsPcqW2s2Qq8ZcZjkCX3MLfdYyj+7aLR24ZGINy92ww+0Zgn6zdx3TuJWgS5NlToGie@lists.postgresql.org X-Gm-Message-State: AOJu0YxbiSGdCiyc3iVyI/UtvPbm1jGaA0JN6nssfg+e27TnmVBO0MB0 6/XLHtQFfEMj690WDX/m5PNTaISDCXpiX6yrEb6X0IGDoD7lwx7JGuyoJfByau2KFqB0mUw/hWU eQnmpWbblTrtjeU92tl3yRT3US1e1NxwEF3DLl5Lx X-Gm-Gg: AeBDietPTWDkGi7d6cBIuGwGbAnYQflvlWPNSEShSoB8B43gd+5f7+BnJlTYwLoGm/8 gQKO6DErEMW6Z4XhLw6JQwDZN8X/X+5fu+qgh4XMZ1j4T+R+21x+fcVc0AOG3zok99nKHnsZwDy 3TJWu7AhyzVs18/BwyLOaf4mXdaoAs3/ar8YteeaveVe1FZauuBTo+boK/9rr54VrUpB/6gvOZh iNXNhjryrnM0Yz0RSrDDG7KZSzWPbEuysFhkGnFgjjCNWVTC7CWZCc5eMLDH82Mp+mrf4Gv2ozs rW3lWlqkPfLUeLzVsfPbVPpDZWM5uxlr9o3+OCz/ X-Received: by 2002:a05:6214:2583:b0:89f:4a69:4498 with SMTP id 6a1803df08f44-8a703651aa7mr204123506d6.25.1775469557225; Mon, 06 Apr 2026 02:59:17 -0700 (PDT) MIME-Version: 1.0 References: <57biou6l65r7gr4nunoe6lignz2x6m3w45gihoypaez4pc46di@txj3bakhj66l> <3xbje45m5knff52mye5dfnrjdnwv7it2bzmqac3jqe66fvop4a@xvhy6zx7n6sb> In-Reply-To: <3xbje45m5knff52mye5dfnrjdnwv7it2bzmqac3jqe66fvop4a@xvhy6zx7n6sb> From: Lukas Fittl Date: Mon, 6 Apr 2026 02:58:39 -0700 X-Gm-Features: AQROBzDEEiSGLxCAGgGalhpwVh67mbQPu8NFJWMSMxUgowF65ABdNHzb2r4gXiA Message-ID: Subject: Re: Stack-based tracking of per-node WAL/buffer usage To: Andres Freund Cc: Heikki Linnakangas , PostgreSQL Hackers , Zsolt Parragi , Tomas Vondra , Peter Smith Content-Type: multipart/mixed; boundary="00000000000045175b064ec7b858" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000045175b064ec7b858 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Apr 5, 2026 at 4:12=E2=80=AFPM Andres Freund w= rote: > > Hi, > > On 2026-04-05 17:02:28 -0400, Andres Freund wrote: > > With that I pushed 0001. > > For 0002 I: > - fixed a few comments still refering to node in the generic Instr* funct= ions > - added comment about the async_mode buglet to the commit message > - added an async_mode argument to InstrInitNode(), as its callsite alread= y > needed to be touched, and it felt wrong that InstrAllocNode() could do > things that were not possible with InstrInitNode() > - Deduplicated the code between InstrStop() and InstrStotNode() by introd= ucing > InstrStopCommon() > > After those (and some testing) I pushed this. > Thanks for pushing these two! And appreciate the refinements, they make sense to me. Attached v15. Quick summary: 0001 converts direct users of pgBufferUsage/pgWalUsage to the new general purpose Instrumentation just pushed. 0002 introduces the macros needed for the stack-based instrumentation, same as before. 0003 adds additional test coverage for buffer usage, same as before. 0004 is new, and adds queryDesc->totaltime_options for extensions to request a certain level of totaltime measurement (this solves the problem Andres noted in a review comment) 0005 is the stack-based instrumentation commit, now smaller and more digestible, with the same performance benefits. -- if we get up to here, we get the main benefit -- 0006 is the parallel instrumentation cleanup. I don't think we need this right now unless the EXPLAIN (IO) work changes course. 0007 is the same ExecProcNodeInstr change as before (this one we could simplify by simply moving the function, getting about half the possible speedup) 0008 is the table-specific buffer measurement for index scans (for current master) 0009 is the test module for top level instrumentation data. I've also attached an alternate for 0008, that works on top of the index prefetch work (v23) - the change actually gets smaller because heap fetches are better encapsulated then. Thanks, Lukas --=20 Lukas Fittl --00000000000045175b064ec7b858 Content-Type: application/octet-stream; name="nocfbot-0008-post-index-prefetch-Index-scans-Show-table-buffer-accesses-separately.patch" Content-Disposition: attachment; filename="nocfbot-0008-post-index-prefetch-Index-scans-Show-table-buffer-accesses-separately.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnmzxbpu0 RnJvbSBlY2JhODc1MmQwNjBmMTlmNDNlZDMyOTdhZjViODMxNGUyNmE3NzY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMTE6NDY6MTkgLTA4MDAKU3ViamVjdDogW1BBVENIIHYwIDEvMl0gSW5k ZXggc2NhbnM6IFNob3cgdGFibGUgYnVmZmVyIGFjY2Vzc2VzIHNlcGFyYXRlbHkgaW4KIEVYUExB SU4gQU5BTFlaRQoKVGhpcyBzZXRzIHVwIGEgc2VwYXJhdGUgaW5zdHJ1bWVudGF0aW9uIHN0YWNr IHRoYXQgaXMgdXNlZCB3aGlsc3QgYW4KSW5kZXggU2NhbiBvciBJbmRleCBPbmx5IFNjYW4gZG9l cyBzY2FubmluZyBvbiB0aGUgdGFibGUsIGZvciBleGFtcGxlIGR1ZQp0byBhZGRpdGlvbmFsIGRh dGEgYmVpbmcgbmVlZGVkLgoKRVhQTEFJTiBBTkFMWVpFIHdpbGwgbm93IHNob3cgIlRhYmxlIEJ1 ZmZlcnMiIHRoYXQgcmVwcmVzZW50IHN1Y2ggYWN0aXZpdHkuClRoZSBhY3Rpdml0eSBpcyBhbHNv IGluY2x1ZGVkIGluIHJlZ3VsYXIgIkJ1ZmZlcnMiIHRvZ2V0aGVyIHdpdGggaW5kZXgKYWN0aXZp dHkgYW5kIHRoYXQgb2YgYW55IGNoaWxkIG5vZGVzLgoKQXV0aG9yOiBMdWthcyBGaXR0bCA8bHVr YXNAZml0dGwuY29tPgpTdWdnZXN0ZWQtYnk6IEFuZHJlcyBGcmV1bmQgPGFuZHJlc0BhbmFyYXpl bC5kZT4KUmV2aWV3ZWQtYnk6IFpzb2x0IFBhcnJhZ2kgPHpzb2x0LnBhcnJhZ2lAcGVyY29uYS5j b20+IChpbiBhbiBlYXJsaWVyIHZlcnNpb24pClJldmlld2VkLWJ5OiBUb21hcyBWb25kcmEgPHRv bWFzQHZvbmRyYS5tZT4gKGluIGFuIGVhcmxpZXIgdmVyc2lvbikKRGlzY3Vzc2lvbjogaHR0cHM6 Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0L0NBUDUzUGt4cm1wRUN6VkZwZWVF RUhER2U2dTYyNXMlMkJZa21WdjUtZ3czTF9ORFNmYmlBJTQwbWFpbC5nbWFpbC5jb20jY2I1ODNh MDhlOGUwOTZhYTFmMDkzYmIxNzg5MDYxNzMKLS0tCiBkb2Mvc3JjL3NnbWwvcGVyZm9ybS5zZ21s ICAgICAgICAgICAgICAgICAgfCAxMyArKysrLS0KIGRvYy9zcmMvc2dtbC9yZWYvZXhwbGFpbi5z Z21sICAgICAgICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9p bmRleHNjYW4uYyB8IDE2ICsrKysrKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMg ICAgICAgICAgICAgfCA0OCArKysrKysrKysrKysrKysrKystLS0tCiBzcmMvYmFja2VuZC9leGVj dXRvci9leGVjUHJvY25vZGUuYyAgICAgICAgfCA0NiArKysrKysrKysrKysrKysrKysrKysKIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYyB8ICAyICstCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jICAgfCAyNCArKysrKysrKysrLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jICAgICAgIHwgMjQgKysrKysrKysrKy0K IHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnRfbm9kZS5oICAgICB8ICA1ICsrKwogOSBm aWxlcyBjaGFuZ2VkLCAxNjIgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3BlcmZvcm0uc2dtbCBiL2RvYy9zcmMvc2dtbC9wZXJmb3JtLnNn bWwKaW5kZXggNjA0ZTg1NzhhOGQuLmQyOGY0ZjIyNTM1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvcGVyZm9ybS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9wZXJmb3JtLnNnbWwKQEAgLTczNCw2 ICs3MzQsNyBAQCBXSEVSRSB0MS51bmlxdWUxICZsdDsgMTAgQU5EIHQxLnVuaXF1ZTIgPSB0Mi51 bmlxdWUyOwogICAgLSZndDsgIEluZGV4IFNjYW4gdXNpbmcgdGVuazJfdW5pcXVlMiBvbiB0ZW5r MiB0MiAgKGNvc3Q9MC4yOS4uNy45MCByb3dzPTEgd2lkdGg9MjQ0KSAoYWN0dWFsIHRpbWU9MC4w MDMuLjAuMDAzIHJvd3M9MS4wMCBsb29wcz0xMCkKICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlx dWUyID0gdDEudW5pcXVlMikKICAgICAgICAgIEluZGV4IFNlYXJjaGVzOiAxMAorICAgICAgICAg VGFibGUgQnVmZmVyczogc2hhcmVkIGhpdD0xMAogICAgICAgICAgQnVmZmVyczogc2hhcmVkIGhp dD0yNCByZWFkPTYKICBQbGFubmluZzoKICAgIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MTUgZGlydGll ZD05CkBAIC0xMDA1LDcgKzEwMDYsOCBAQCBFWFBMQUlOIEFOQUxZWkUgU0VMRUNUICogRlJPTSBw b2x5Z29uX3RibCBXSEVSRSBmMSBAJmd0OyBwb2x5Z29uICcoMC41LDIuMCknOwogICAgSW5kZXgg Q29uZDogKGYxIEAmZ3Q7ICcoKDAuNSwyKSknOjpwb2x5Z29uKQogICAgUm93cyBSZW1vdmVkIGJ5 IEluZGV4IFJlY2hlY2s6IDEKICAgIEluZGV4IFNlYXJjaGVzOiAxCi0gICBCdWZmZXJzOiBzaGFy ZWQgaGl0PTEKKyAgIFRhYmxlIEJ1ZmZlcnM6IHNoYXJlZCBoaXQ9MQorICAgQnVmZmVyczogc2hh cmVkIGhpdD0yCiAgUGxhbm5pbmcgVGltZTogMC4wMzkgbXMKICBFeGVjdXRpb24gVGltZTogMC4w OTggbXMKIDwvc2NyZWVuPgpAQCAtMTAxNCw3ICsxMDE2LDkgQEAgRVhQTEFJTiBBTkFMWVpFIFNF TEVDVCAqIEZST00gcG9seWdvbl90YmwgV0hFUkUgZjEgQCZndDsgcG9seWdvbiAnKDAuNSwyLjAp JzsKICAgICB0aGVuIHJlamVjdGVkIGJ5IGEgcmVjaGVjayBvZiB0aGUgaW5kZXggY29uZGl0aW9u LiAgVGhpcyBoYXBwZW5zIGJlY2F1c2UgYQogICAgIEdpU1QgaW5kZXggaXMgPHF1b3RlPmxvc3N5 PC9xdW90ZT4gZm9yIHBvbHlnb24gY29udGFpbm1lbnQgdGVzdHM6IGl0IGFjdHVhbGx5CiAgICAg cmV0dXJucyB0aGUgcm93cyB3aXRoIHBvbHlnb25zIHRoYXQgb3ZlcmxhcCB0aGUgdGFyZ2V0LCBh bmQgdGhlbiB3ZSBoYXZlCi0gICAgdG8gZG8gdGhlIGV4YWN0IGNvbnRhaW5tZW50IHRlc3Qgb24g dGhvc2Ugcm93cy4KKyAgICB0byBkbyB0aGUgZXhhY3QgY29udGFpbm1lbnQgdGVzdCBvbiB0aG9z ZSByb3dzLiBUaGUgPGxpdGVyYWw+VGFibGUgQnVmZmVyczwvbGl0ZXJhbD4KKyAgICBjb3VudHMg aW5kaWNhdGUgaG93IG1hbnkgb3BlcmF0aW9ucyB3ZXJlIHBlcmZvcm1lZCBvbiB0aGUgdGFibGUg aW5zdGVhZCBvZgorICAgIHRoZSBpbmRleC4gVGhpcyBudW1iZXIgaXMgaW5jbHVkZWQgaW4gdGhl IDxsaXRlcmFsPkJ1ZmZlcnM8L2xpdGVyYWw+IGNvdW50cy4KICAgIDwvcGFyYT4KIAogICAgPHBh cmE+CkBAIC0xMjAzLDEzICsxMjA3LDE0IEBAIEVYUExBSU4gQU5BTFlaRSBTRUxFQ1QgKiBGUk9N IHRlbmsxIFdIRVJFIHVuaXF1ZTEgJmx0OyAxMDAgQU5EIHVuaXF1ZTIgJmd0OyA5MDAwCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSZ6d3NwOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIExpbWl0ICAoY29zdD0wLjI5Li4xNC4zMyBy b3dzPTIgd2lkdGg9MjQ0KSAoYWN0dWFsIHRpbWU9MC4wNTEuLjAuMDcxIHJvd3M9Mi4wMCBsb29w cz0xKQotICAgQnVmZmVyczogc2hhcmVkIGhpdD0xNgorICAgQnVmZmVyczogc2hhcmVkIGhpdD0x NAogICAgLSZndDsgIEluZGV4IFNjYW4gdXNpbmcgdGVuazFfdW5pcXVlMiBvbiB0ZW5rMSAgKGNv c3Q9MC4yOS4uNzAuNTAgcm93cz0xMCB3aWR0aD0yNDQpIChhY3R1YWwgdGltZT0wLjA1MS4uMC4w NzAgcm93cz0yLjAwIGxvb3BzPTEpCiAgICAgICAgICBJbmRleCBDb25kOiAodW5pcXVlMiAmZ3Q7 IDkwMDApCiAgICAgICAgICBGaWx0ZXI6ICh1bmlxdWUxICZsdDsgMTAwKQogICAgICAgICAgUm93 cyBSZW1vdmVkIGJ5IEZpbHRlcjogMjg3CiAgICAgICAgICBJbmRleCBTZWFyY2hlczogMQotICAg ICAgICAgQnVmZmVyczogc2hhcmVkIGhpdD0xNgorICAgICAgICAgVGFibGUgQnVmZmVyczogc2hh cmVkIGhpdD0xMQorICAgICAgICAgQnVmZmVyczogc2hhcmVkIGhpdD0xNAogIFBsYW5uaW5nIFRp bWU6IDAuMDc3IG1zCiAgRXhlY3V0aW9uIFRpbWU6IDAuMDg2IG1zCiA8L3NjcmVlbj4KZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvZXhwbGFpbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9l eHBsYWluLnNnbWwKaW5kZXggNWI4YjUyMTgwMmUuLjcxMDcwNzM2YWNiIDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcmVmL2V4cGxhaW4uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2V4cGxh aW4uc2dtbApAQCAtNTA5LDYgKzUwOSw3IEBAIEVYUExBSU4gQU5BTFlaRSBFWEVDVVRFIHF1ZXJ5 KDEwMCwgMjAwKTsKICAgIC0mZ3Q7ICBJbmRleCBTY2FuIHVzaW5nIHRlc3RfcGtleSBvbiB0ZXN0 ICAoY29zdD0wLjI5Li4xMC4yNyByb3dzPTk5IHdpZHRoPTgpIChhY3R1YWwgdGltZT0wLjAwOS4u MC4wMjUgcm93cz05OS4wMCBsb29wcz0xKQogICAgICAgICAgSW5kZXggQ29uZDogKChpZCAmZ3Q7 IDEwMCkgQU5EIChpZCAmbHQ7IDIwMCkpCiAgICAgICAgICBJbmRleCBTZWFyY2hlczogMQorICAg ICAgICAgVGFibGUgQnVmZmVyczogc2hhcmVkIGhpdD0xCiAgICAgICAgICBCdWZmZXJzOiBzaGFy ZWQgaGl0PTQKICBQbGFubmluZyBUaW1lOiAwLjI0NCBtcwogIEV4ZWN1dGlvbiBUaW1lOiAwLjA3 MyBtcwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2luZGV4c2Nh bi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2luZGV4c2Nhbi5jCmluZGV4IGZk NzBhZDViYzJjLi43MDI0MTljYmFiZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2luZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bV9pbmRleHNjYW4uYwpAQCAtNTcyLDExICs1NzIsMTQgQEAgaGVhcGFtX2luZGV4X2ZldGNoX3R1 cGxlKFJlbGF0aW9uIHJlbCwKIHN0YXRpYyBwZ19hdHRyaWJ1dGVfYWx3YXlzX2lubGluZSBib29s CiBoZWFwYW1faW5kZXhfZmV0Y2hfaGVhcF9pdGVtKEluZGV4U2NhbkRlc2Mgc2NhbiwgSW5kZXhG ZXRjaEhlYXBEYXRhICpoc2NhbiwKIAkJCQkJCQkgVHVwbGVUYWJsZVNsb3QgKnNsb3QsIGJvb2wg KmhlYXBfY29udGludWUsCi0JCQkJCQkJIGJvb2wgYW1nZXRiYXRjaCkKKwkJCQkJCQkgYm9vbCBh bWdldGJhdGNoLCBJbnN0cnVtZW50YXRpb24gKnRhYmxlX2luc3RyKQogewogCWJvb2wJCWFsbF9k ZWFkID0gZmFsc2U7CiAJYm9vbAkJZm91bmQ7CiAKKwlpZiAodGFibGVfaW5zdHIpCisJCUluc3Ry UHVzaFN0YWNrKHRhYmxlX2luc3RyKTsKKwogCWZvdW5kID0gaGVhcGFtX2luZGV4X2ZldGNoX3R1 cGxlKHNjYW4tPmhlYXBSZWxhdGlvbiwgaHNjYW4sCiAJCQkJCQkJCQkgJnNjYW4tPnhzX2hlYXB0 aWQsCiAJCQkJCQkJCQkgc2Nhbi0+eHNfc25hcHNob3QsIHNsb3QsCkBAIC02MDcsNiArNjEwLDkg QEAgaGVhcGFtX2luZGV4X2ZldGNoX2hlYXBfaXRlbShJbmRleFNjYW5EZXNjIHNjYW4sIEluZGV4 RmV0Y2hIZWFwRGF0YSAqaHNjYW4sCiAJCX0KIAl9CiAKKwlpZiAodGFibGVfaW5zdHIpCisJCUlu c3RyUG9wU3RhY2sodGFibGVfaW5zdHIpOworCiAJcmV0dXJuIGZvdW5kOwogfQogCkBAIC0xMzkw LDYgKzEzOTYsMTAgQEAgaGVhcGFtX2luZGV4X2dldG5leHRfc2xvdChJbmRleFNjYW5EZXNjIHNj YW4sIFNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uLAogCUJsb2NrTnVtYmVyIGxhc3RfdmlzaXRlZF9i bG9jayA9IEludmFsaWRCbG9ja051bWJlcjsKIAl1aW50OAkJbl92aXNpdGVkX3BhZ2VzID0gMDsK IAlJdGVtUG9pbnRlciB0aWQgPSBOVUxMOworCUluc3RydW1lbnRhdGlvbiAqdGFibGVfaW5zdHIg PSBOVUxMOworCisJaWYgKHNjYW4tPmluc3RydW1lbnQgJiYgc2Nhbi0+aW5zdHJ1bWVudC0+dGFi bGVfaW5zdHIubmVlZF9zdGFjaykKKwkJdGFibGVfaW5zdHIgPSAmc2Nhbi0+aW5zdHJ1bWVudC0+ dGFibGVfaW5zdHI7CiAKIAlmb3IgKDs7KQogCXsKQEAgLTE0MzQsNyArMTQ0NCw3IEBAIGhlYXBh bV9pbmRleF9nZXRuZXh0X3Nsb3QoSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRp cmVjdGlvbiwKIAkJCQkJc2Nhbi0+aW5zdHJ1bWVudC0+bnRhYmxldHVwbGVmZXRjaGVzKys7CiAK IAkJCQlpZiAoIWhlYXBhbV9pbmRleF9mZXRjaF9oZWFwX2l0ZW0oc2NhbiwgaHNjYW4sIHNsb3Qs Ci0JCQkJCQkJCQkJCQkgIGhlYXBfY29udGludWUsIGFtZ2V0YmF0Y2gpKQorCQkJCQkJCQkJCQkJ ICBoZWFwX2NvbnRpbnVlLCBhbWdldGJhdGNoLCB0YWJsZV9pbnN0cikpCiAJCQkJewogCQkJCQkv KgogCQkJCQkgKiBObyB2aXNpYmxlIHR1cGxlLiAgSWYgY2FsbGVyIHNldCBhIHZpc2l0ZWQtcGFn ZXMgbGltaXQKQEAgLTE0OTQsNyArMTUwNCw3IEBAIGhlYXBhbV9pbmRleF9nZXRuZXh0X3Nsb3Qo SW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbiwKIAkJCSAqIG5leHQg VElEIGZyb20gdGhlIGluZGV4LgogCQkJICovCiAJCQlpZiAoaGVhcGFtX2luZGV4X2ZldGNoX2hl YXBfaXRlbShzY2FuLCBoc2Nhbiwgc2xvdCwgaGVhcF9jb250aW51ZSwKLQkJCQkJCQkJCQkJIGFt Z2V0YmF0Y2gpKQorCQkJCQkJCQkJCQkgYW1nZXRiYXRjaCwgdGFibGVfaW5zdHIpKQogCQkJCXJl dHVybiB0cnVlOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhw bGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IGFlMzI1OGIzZjVj Li42NDdiZTVkMTI4NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtMTQ0LDcgKzE0NCw3IEBA IHN0YXRpYyB2b2lkIHNob3dfaW5zdHJ1bWVudGF0aW9uX2NvdW50KGNvbnN0IGNoYXIgKnFsYWJl bCwgaW50IHdoaWNoLAogc3RhdGljIHZvaWQgc2hvd19mb3JlaWduc2Nhbl9pbmZvKEZvcmVpZ25T Y2FuU3RhdGUgKmZzc3RhdGUsIEV4cGxhaW5TdGF0ZSAqZXMpOwogc3RhdGljIGNvbnN0IGNoYXIg KmV4cGxhaW5fZ2V0X2luZGV4X25hbWUoT2lkIGluZGV4SWQpOwogc3RhdGljIGJvb2wgcGVla19i dWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdlKTsK LXN0YXRpYyB2b2lkIHNob3dfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IEJ1 ZmZlclVzYWdlICp1c2FnZSk7CitzdGF0aWMgdm9pZCBzaG93X2J1ZmZlcl91c2FnZShFeHBsYWlu U3RhdGUgKmVzLCBjb25zdCBCdWZmZXJVc2FnZSAqdXNhZ2UsIGNvbnN0IGNoYXIgKnRpdGxlKTsK IHN0YXRpYyB2b2lkIHNob3dfd2FsX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IFdhbFVz YWdlICp1c2FnZSk7CiBzdGF0aWMgdm9pZCBzaG93X21lbW9yeV9jb3VudGVycyhFeHBsYWluU3Rh dGUgKmVzLAogCQkJCQkJCQkgY29uc3QgTWVtb3J5Q29udGV4dENvdW50ZXJzICptZW1fY291bnRl cnMpOwpAQCAtNjExLDcgKzYxMSw3IEBAIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFu bmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJfQogCiAJCWlm IChidWZ1c2FnZSkKLQkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCBidWZ1c2FnZSk7CisJCQlzaG93 X2J1ZmZlcl91c2FnZShlcywgYnVmdXNhZ2UsIE5VTEwpOwogCiAJCWlmIChtZW1fY291bnRlcnMp CiAJCQlzaG93X21lbW9yeV9jb3VudGVycyhlcywgbWVtX2NvdW50ZXJzKTsKQEAgLTEwMjgsNyAr MTAyOCw3IEBAIEV4cGxhaW5QcmludFNlcmlhbGl6ZShFeHBsYWluU3RhdGUgKmVzLCBTZXJpYWxp emVNZXRyaWNzICptZXRyaWNzKQogCQlpZiAoZXMtPmJ1ZmZlcnMgJiYgcGVla19idWZmZXJfdXNh Z2UoZXMsICZtZXRyaWNzLT5pbnN0ci5idWZ1c2FnZSkpCiAJCXsKIAkJCWVzLT5pbmRlbnQrKzsK LQkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmbWV0cmljcy0+aW5zdHIuYnVmdXNhZ2UpOworCQkJ c2hvd19idWZmZXJfdXNhZ2UoZXMsICZtZXRyaWNzLT5pbnN0ci5idWZ1c2FnZSwgTlVMTCk7CiAJ CQllcy0+aW5kZW50LS07CiAJCX0KIAl9CkBAIC0xMDQyLDcgKzEwNDIsNyBAQCBFeHBsYWluUHJp bnRTZXJpYWxpemUoRXhwbGFpblN0YXRlICplcywgU2VyaWFsaXplTWV0cmljcyAqbWV0cmljcykK IAkJCQkJCQkJQllURVNfVE9fS0lMT0JZVEVTKG1ldHJpY3MtPmJ5dGVzU2VudCksIGVzKTsKIAkJ RXhwbGFpblByb3BlcnR5VGV4dCgiRm9ybWF0IiwgZm9ybWF0LCBlcyk7CiAJCWlmIChlcy0+YnVm ZmVycykKLQkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmbWV0cmljcy0+aW5zdHIuYnVmdXNhZ2Up OworCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMsICZtZXRyaWNzLT5pbnN0ci5idWZ1c2FnZSwgTlVM TCk7CiAJfQogCiAJRXhwbGFpbkNsb3NlR3JvdXAoIlNlcmlhbGl6YXRpb24iLCAiU2VyaWFsaXph dGlvbiIsIHRydWUsIGVzKTsKQEAgLTIyODcsNyArMjI4Nyw3IEBAIEV4cGxhaW5Ob2RlKFBsYW5T dGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAKIAkvKiBTaG93IGJ1ZmZlci9XQUwg dXNhZ2UgKi8KIAlpZiAoZXMtPmJ1ZmZlcnMgJiYgcGxhbnN0YXRlLT5pbnN0cnVtZW50KQotCQlz aG93X2J1ZmZlcl91c2FnZShlcywgJnBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+aW5zdHIuYnVmdXNh Z2UpOworCQlzaG93X2J1ZmZlcl91c2FnZShlcywgJnBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+aW5z dHIuYnVmdXNhZ2UsIE5VTEwpOwogCWlmIChlcy0+d2FsICYmIHBsYW5zdGF0ZS0+aW5zdHJ1bWVu dCkKIAkJc2hvd193YWxfdXNhZ2UoZXMsICZwbGFuc3RhdGUtPmluc3RydW1lbnQtPmluc3RyLndh bHVzYWdlKTsKIApAQCAtMjMwNiw3ICsyMzA2LDcgQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpw bGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAogCQkJRXhwbGFpbk9wZW5Xb3JrZXIobiwgZXMp OwogCQkJaWYgKGVzLT5idWZmZXJzKQotCQkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmaW5zdHJ1 bWVudC0+aW5zdHIuYnVmdXNhZ2UpOworCQkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmaW5zdHJ1 bWVudC0+aW5zdHIuYnVmdXNhZ2UsIE5VTEwpOwogCQkJaWYgKGVzLT53YWwpCiAJCQkJc2hvd193 YWxfdXNhZ2UoZXMsICZpbnN0cnVtZW50LT5pbnN0ci53YWx1c2FnZSk7CiAJCQlFeHBsYWluQ2xv c2VXb3JrZXIobiwgZXMpOwpAQCAtMzg2Miw2ICszODYyLDcgQEAgc2hvd19pbmRleHNjYW5faW5m byhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRXhwbGFpblN0YXRlICplcykKIHsKIAlQbGFuCSAgICpw bGFuID0gcGxhbnN0YXRlLT5wbGFuOwogCVNoYXJlZEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbiAq U2hhcmVkSW5mbyA9IE5VTEw7CisJSW5zdHJ1bWVudGF0aW9uICp0YWJsZV9pbnN0ciA9IE5VTEw7 CiAJdWludDY0CQluc2VhcmNoZXMgPSAwLAogCQkJCW50YWJsZXR1cGxlZmV0Y2hlcyA9IDA7CiAK QEAgLTM4NzcsNiArMzg3OCw3IEBAIHNob3dfaW5kZXhzY2FuX2luZm8oUGxhblN0YXRlICpwbGFu c3RhdGUsIEV4cGxhaW5TdGF0ZSAqZXMpCiAKIAkJCQluc2VhcmNoZXMgPSBpbmRleHN0YXRlLT5p c3NfSW5zdHJ1bWVudC0+bnNlYXJjaGVzOwogCQkJCVNoYXJlZEluZm8gPSBpbmRleHN0YXRlLT5p c3NfU2hhcmVkSW5mbzsKKwkJCQl0YWJsZV9pbnN0ciA9ICZpbmRleHN0YXRlLT5pc3NfSW5zdHJ1 bWVudC0+dGFibGVfaW5zdHI7CiAJCQkJYnJlYWs7CiAJCQl9CiAJCWNhc2UgVF9JbmRleE9ubHlT Y2FuOgpAQCAtMzg4Niw2ICszODg4LDcgQEAgc2hvd19pbmRleHNjYW5faW5mbyhQbGFuU3RhdGUg KnBsYW5zdGF0ZSwgRXhwbGFpblN0YXRlICplcykKIAkJCQluc2VhcmNoZXMgPSBpbmRleHN0YXRl LT5pb3NzX0luc3RydW1lbnQtPm5zZWFyY2hlczsKIAkJCQludGFibGV0dXBsZWZldGNoZXMgPSBp bmRleHN0YXRlLT5pb3NzX0luc3RydW1lbnQtPm50YWJsZXR1cGxlZmV0Y2hlczsKIAkJCQlTaGFy ZWRJbmZvID0gaW5kZXhzdGF0ZS0+aW9zc19TaGFyZWRJbmZvOworCQkJCXRhYmxlX2luc3RyID0g JmluZGV4c3RhdGUtPmlvc3NfSW5zdHJ1bWVudC0+dGFibGVfaW5zdHI7CiAJCQkJYnJlYWs7CiAJ CQl9CiAJCWNhc2UgVF9CaXRtYXBJbmRleFNjYW46CkBAIC0zODk0LDYgKzM4OTcsNyBAQCBzaG93 X2luZGV4c2Nhbl9pbmZvKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFeHBsYWluU3RhdGUgKmVzKQog CiAJCQkJbnNlYXJjaGVzID0gaW5kZXhzdGF0ZS0+Ymlzc19JbnN0cnVtZW50LT5uc2VhcmNoZXM7 CiAJCQkJU2hhcmVkSW5mbyA9IGluZGV4c3RhdGUtPmJpc3NfU2hhcmVkSW5mbzsKKwkJCQl0YWJs ZV9pbnN0ciA9ICZpbmRleHN0YXRlLT5iaXNzX0luc3RydW1lbnQtPnRhYmxlX2luc3RyOwogCQkJ CWJyZWFrOwogCQkJfQogCQlkZWZhdWx0OgpAQCAtMzkxNiw2ICszOTIwLDkgQEAgc2hvd19pbmRl eHNjYW5faW5mbyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRXhwbGFpblN0YXRlICplcykKIAkJRXhw bGFpblByb3BlcnR5VUludGVnZXIoIkhlYXAgRmV0Y2hlcyIsIE5VTEwsIG50YWJsZXR1cGxlZmV0 Y2hlcywgZXMpOwogCiAJRXhwbGFpblByb3BlcnR5VUludGVnZXIoIkluZGV4IFNlYXJjaGVzIiwg TlVMTCwgbnNlYXJjaGVzLCBlcyk7CisKKwlpZiAoZXMtPmJ1ZmZlcnMgJiYgdGFibGVfaW5zdHIp CisJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmdGFibGVfaW5zdHItPmJ1ZnVzYWdlLCAiVGFibGUi KTsKIH0KIAogLyoKQEAgLTQxMTIsNyArNDExOSw3IEBAIHBlZWtfYnVmZmVyX3VzYWdlKEV4cGxh aW5TdGF0ZSAqZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1c2FnZSkKICAqIFNob3cgYnVmZmVyIHVz YWdlIGRldGFpbHMuICBUaGlzIGJldHRlciBiZSBzeW5jIHdpdGggcGVla19idWZmZXJfdXNhZ2Uu CiAgKi8KIHN0YXRpYyB2b2lkCi1zaG93X2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBj b25zdCBCdWZmZXJVc2FnZSAqdXNhZ2UpCitzaG93X2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUg KmVzLCBjb25zdCBCdWZmZXJVc2FnZSAqdXNhZ2UsIGNvbnN0IGNoYXIgKnRpdGxlKQogewogCWlm IChlcy0+Zm9ybWF0ID09IEVYUExBSU5fRk9STUFUX1RFWFQpCiAJewpAQCAtNDEzNyw2ICs0MTQ0 LDggQEAgc2hvd19idWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgQnVmZmVyVXNh Z2UgKnVzYWdlKQogCQlpZiAoaGFzX3NoYXJlZCB8fCBoYXNfbG9jYWwgfHwgaGFzX3RlbXApCiAJ CXsKIAkJCUV4cGxhaW5JbmRlbnRUZXh0KGVzKTsKKwkJCWlmICh0aXRsZSkKKwkJCQlhcHBlbmRT dHJpbmdJbmZvKGVzLT5zdHIsICIlcyAiLCB0aXRsZSk7CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKGVzLT5zdHIsICJCdWZmZXJzOiIpOwogCiAJCQlpZiAoaGFzX3NoYXJlZCkKQEAgLTQxOTIs NiArNDIwMSw4IEBAIHNob3dfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IEJ1 ZmZlclVzYWdlICp1c2FnZSkKIAkJaWYgKGhhc19zaGFyZWRfdGltaW5nIHx8IGhhc19sb2NhbF90 aW1pbmcgfHwgaGFzX3RlbXBfdGltaW5nKQogCQl7CiAJCQlFeHBsYWluSW5kZW50VGV4dChlcyk7 CisJCQlpZiAodGl0bGUpCisJCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiJXMgIiwgdGl0 bGUpOwogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhlcy0+c3RyLCAiSS9PIFRpbWluZ3M6Iik7 CiAKIAkJCWlmIChoYXNfc2hhcmVkX3RpbWluZykKQEAgLTQyMzMsNiArNDI0NCwxNCBAQCBzaG93 X2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBCdWZmZXJVc2FnZSAqdXNhZ2Up CiAJfQogCWVsc2UKIAl7CisJCWNoYXIJICAgKmJ1ZmZlcnNfdGl0bGUgPSBOVUxMOworCisJCWlm ICh0aXRsZSkKKwkJeworCQkJYnVmZmVyc190aXRsZSA9IHBzcHJpbnRmKCIlcyBCdWZmZXJzIiwg dGl0bGUpOworCQkJRXhwbGFpbk9wZW5Hcm91cChidWZmZXJzX3RpdGxlLCBidWZmZXJzX3RpdGxl LCB0cnVlLCBlcyk7CisJCX0KKwogCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJTaGFyZWQgSGl0 IEJsb2NrcyIsIE5VTEwsCiAJCQkJCQkJICAgdXNhZ2UtPnNoYXJlZF9ibGtzX2hpdCwgZXMpOwog CQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJTaGFyZWQgUmVhZCBCbG9ja3MiLCBOVUxMLApAQCAt NDI1Myw4ICs0MjcyLDIwIEBAIHNob3dfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNv bnN0IEJ1ZmZlclVzYWdlICp1c2FnZSkKIAkJCQkJCQkgICB1c2FnZS0+dGVtcF9ibGtzX3JlYWQs IGVzKTsKIAkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiVGVtcCBXcml0dGVuIEJsb2NrcyIsIE5V TEwsCiAJCQkJCQkJICAgdXNhZ2UtPnRlbXBfYmxrc193cml0dGVuLCBlcyk7CisKKwkJaWYgKGJ1 ZmZlcnNfdGl0bGUpCisJCQlFeHBsYWluQ2xvc2VHcm91cChidWZmZXJzX3RpdGxlLCBidWZmZXJz X3RpdGxlLCB0cnVlLCBlcyk7CisKIAkJaWYgKHRyYWNrX2lvX3RpbWluZykKIAkJeworCQkJY2hh cgkgICAqdGltaW5nc190aXRsZSA9IE5VTEw7CisKKwkJCWlmICh0aXRsZSkKKwkJCXsKKwkJCQl0 aW1pbmdzX3RpdGxlID0gcHNwcmludGYoIiVzIEkvTyBUaW1pbmdzIiwgdGl0bGUpOworCQkJCUV4 cGxhaW5PcGVuR3JvdXAodGltaW5nc190aXRsZSwgdGltaW5nc190aXRsZSwgdHJ1ZSwgZXMpOwor CQkJfQorCiAJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgiU2hhcmVkIEkvTyBSZWFkIFRpbWUiLCAi bXMiLAogCQkJCQkJCQkgSU5TVFJfVElNRV9HRVRfTUlMTElTRUModXNhZ2UtPnNoYXJlZF9ibGtf cmVhZF90aW1lKSwKIAkJCQkJCQkJIDMsIGVzKTsKQEAgLTQyNzMsNiArNDMwNCw5IEBAIHNob3df YnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1c2FnZSkK IAkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KCJUZW1wIEkvTyBXcml0ZSBUaW1lIiwgIm1zIiwKIAkJ CQkJCQkJIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHVzYWdlLT50ZW1wX2Jsa193cml0ZV90aW1l KSwKIAkJCQkJCQkJIDMsIGVzKTsKKworCQkJaWYgKHRpbWluZ3NfdGl0bGUpCisJCQkJRXhwbGFp bkNsb3NlR3JvdXAodGltaW5nc190aXRsZSwgdGltaW5nc190aXRsZSwgdHJ1ZSwgZXMpOwogCQl9 CiAJfQogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYwppbmRleCBhYzQwMDY3MGZlYS4u MjhmMWY2NjZhM2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9k ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCkBAIC04NDcsNiAr ODQ3LDIwIEBAIEV4ZWNGaW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRpb25fd2Fsa2VyKFBsYW5TdGF0 ZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKIAlwbGFuc3RhdGVfdHJlZV93YWxrZXIobm9kZSwgRXhl Y0ZpbmFsaXplTm9kZUluc3RydW1lbnRhdGlvbl93YWxrZXIsCiAJCQkJCQkgICZub2RlLT5pbnN0 cnVtZW50LT5pbnN0cik7CiAKKwkvKiBJbmRleFNjYW4vSW5kZXhPbmx5U2NhbiBoYXZlIGEgc2Vw YXJhdGUgZW50cnkgdG8gdHJhY2sgdGFibGUgYWNjZXNzICovCisJaWYgKElzQShub2RlLCBJbmRl eFNjYW5TdGF0ZSkpCisJeworCQlJbmRleFNjYW5TdGF0ZSAqaXNzID0gY2FzdE5vZGUoSW5kZXhT Y2FuU3RhdGUsIG5vZGUpOworCisJCUluc3RyRmluYWxpemVDaGlsZCgmaXNzLT5pc3NfSW5zdHJ1 bWVudC0+dGFibGVfaW5zdHIsICZub2RlLT5pbnN0cnVtZW50LT5pbnN0cik7CisJfQorCWVsc2Ug aWYgKElzQShub2RlLCBJbmRleE9ubHlTY2FuU3RhdGUpKQorCXsKKwkJSW5kZXhPbmx5U2NhblN0 YXRlICppb3NzID0gY2FzdE5vZGUoSW5kZXhPbmx5U2NhblN0YXRlLCBub2RlKTsKKworCQlJbnN0 ckZpbmFsaXplQ2hpbGQoJmlvc3MtPmlvc3NfSW5zdHJ1bWVudC0+dGFibGVfaW5zdHIsICZub2Rl LT5pbnN0cnVtZW50LT5pbnN0cik7CisJfQorCiAJSW5zdHJGaW5hbGl6ZUNoaWxkKCZub2RlLT5p bnN0cnVtZW50LT5pbnN0ciwgcGFyZW50KTsKIAogCXJldHVybiBmYWxzZTsKQEAgLTg5Miw2ICs5 MDYsMzggQEAgRXhlY0ZpbmFsaXplV29ya2VySW5zdHJ1bWVudGF0aW9uX3dhbGtlcihQbGFuU3Rh dGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpCiAKIAludW1fd29ya2VycyA9IG5vZGUtPndvcmtlcl9p bnN0cnVtZW50LT5udW1fd29ya2VyczsKIAorCS8qCisJICogRm9sZCBwZXItd29ya2VyIEluZGV4 U2Nhbi9JbmRleE9ubHlTY2FuIHRhYmxlIGJ1ZmZlciBzdGF0cyBpbnRvIHRoZQorCSAqIHBlci13 b3JrZXIgbm9kZSBzdGF0cywgbWF0Y2hpbmcgd2hhdCBFeGVjRmluYWxpemVOb2RlSW5zdHJ1bWVu dGF0aW9uCisJICogZG9lcyBmb3IgdGhlIGxlYWRlci4KKwkgKi8KKwlpZiAoSXNBKG5vZGUsIElu ZGV4U2NhblN0YXRlKSkKKwl7CisJCUluZGV4U2NhblN0YXRlICppc3MgPSBjYXN0Tm9kZShJbmRl eFNjYW5TdGF0ZSwgbm9kZSk7CisKKwkJaWYgKGlzcy0+aXNzX1NoYXJlZEluZm8pCisJCXsKKwkJ CWludAkJCW53b3JrZXJzID0gTWluKG51bV93b3JrZXJzLCBpc3MtPmlzc19TaGFyZWRJbmZvLT5u dW1fd29ya2Vycyk7CisKKwkJCWZvciAoaW50IG4gPSAwOyBuIDwgbndvcmtlcnM7IG4rKykKKwkJ CQlJbnN0ckFjY3VtU3RhY2soJm5vZGUtPndvcmtlcl9pbnN0cnVtZW50LT5pbnN0cnVtZW50W25d Lmluc3RyLAorCQkJCQkJCQkmaXNzLT5pc3NfU2hhcmVkSW5mby0+d2luc3RydW1lbnRbbl0udGFi bGVfaW5zdHIpOworCQl9CisJfQorCWVsc2UgaWYgKElzQShub2RlLCBJbmRleE9ubHlTY2FuU3Rh dGUpKQorCXsKKwkJSW5kZXhPbmx5U2NhblN0YXRlICppb3NzID0gY2FzdE5vZGUoSW5kZXhPbmx5 U2NhblN0YXRlLCBub2RlKTsKKworCQlpZiAoaW9zcy0+aW9zc19TaGFyZWRJbmZvKQorCQl7CisJ CQlpbnQJCQlud29ya2VycyA9IE1pbihudW1fd29ya2VycywgaW9zcy0+aW9zc19TaGFyZWRJbmZv LT5udW1fd29ya2Vycyk7CisKKwkJCWZvciAoaW50IG4gPSAwOyBuIDwgbndvcmtlcnM7IG4rKykK KwkJCQlJbnN0ckFjY3VtU3RhY2soJm5vZGUtPndvcmtlcl9pbnN0cnVtZW50LT5pbnN0cnVtZW50 W25dLmluc3RyLAorCQkJCQkJCQkmaW9zcy0+aW9zc19TaGFyZWRJbmZvLT53aW5zdHJ1bWVudFtu XS50YWJsZV9pbnN0cik7CisJCX0KKwl9CisKIAkvKiBBY2N1bXVsYXRlIHRoaXMgbm9kZSdzIHBl ci13b3JrZXIgc3RhdHMgdG8gcGFyZW50J3MgcGVyLXdvcmtlciBzdGF0cyAqLwogCWlmIChwYXJl bnQgJiYgcGFyZW50LT53b3JrZXJfaW5zdHJ1bWVudCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlQml0bWFwSW5kZXhzY2FuLmMKaW5kZXggYTlhM2QyZmIxNDkuLmZmODAyYjg2NDQ2IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jCkBAIC0yNzcsNyAr Mjc3LDcgQEAgRXhlY0luaXRCaXRtYXBJbmRleFNjYW4oQml0bWFwSW5kZXhTY2FuICpub2RlLCBF U3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCS8qIFNldCB1cCBpbnN0cnVtZW50YXRpb24g b2YgYml0bWFwIGluZGV4IHNjYW5zIGlmIHJlcXVlc3RlZCAqLwogCWlmIChlc3RhdGUtPmVzX2lu c3RydW1lbnQpCi0JCWluZGV4c3RhdGUtPmJpc3NfSW5zdHJ1bWVudCA9IHBhbGxvYzBfb2JqZWN0 KEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbik7CisJCWluZGV4c3RhdGUtPmJpc3NfSW5zdHJ1bWVu dCA9IE1lbW9yeUNvbnRleHRBbGxvY1plcm8oZXN0YXRlLT5lc19xdWVyeV9pbnN0ci0+aW5zdHJf Y3h0LCBzaXplb2YoSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uKSk7CiAKIAkvKiBPcGVuIHRoZSBp bmRleCByZWxhdGlvbi4gKi8KIAlsb2NrbW9kZSA9IGV4ZWNfcnRfZmV0Y2gobm9kZS0+c2Nhbi5z Y2FucmVsaWQsIGVzdGF0ZSktPnJlbGxvY2ttb2RlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJ bmRleG9ubHlzY2FuLmMKaW5kZXggYjZiOWRiZDEwNzUuLjlmZjc3YTI1YTk1IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKQEAgLTM0Nyw2ICszNDcsNyBAQCBFeGVj RW5kSW5kZXhPbmx5U2NhbihJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUpCiAJCSAqLwogCQl3aW5z dHJ1bWVudC0+bnNlYXJjaGVzICs9IG5vZGUtPmlvc3NfSW5zdHJ1bWVudC0+bnNlYXJjaGVzOwog CQl3aW5zdHJ1bWVudC0+bnRhYmxldHVwbGVmZXRjaGVzICs9IG5vZGUtPmlvc3NfSW5zdHJ1bWVu dC0+bnRhYmxldHVwbGVmZXRjaGVzOworCQlJbnN0ckFjY3VtU3RhY2soJndpbnN0cnVtZW50LT50 YWJsZV9pbnN0ciwgJm5vZGUtPmlvc3NfSW5zdHJ1bWVudC0+dGFibGVfaW5zdHIpOwogCX0KIAog CS8qCkBAIC01MjEsNyArNTIyLDIxIEBAIEV4ZWNJbml0SW5kZXhPbmx5U2NhbihJbmRleE9ubHlT Y2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCS8qIFNldCB1cCBpbnN0 cnVtZW50YXRpb24gb2YgaW5kZXgtb25seSBzY2FucyBpZiByZXF1ZXN0ZWQgKi8KIAlpZiAoZXN0 YXRlLT5lc19pbnN0cnVtZW50KQotCQlpbmRleHN0YXRlLT5pb3NzX0luc3RydW1lbnQgPSBwYWxs b2MwX29iamVjdChJbmRleFNjYW5JbnN0cnVtZW50YXRpb24pOworCXsKKwkJaW5kZXhzdGF0ZS0+ aW9zc19JbnN0cnVtZW50ID0gTWVtb3J5Q29udGV4dEFsbG9jWmVybyhlc3RhdGUtPmVzX3F1ZXJ5 X2luc3RyLT5pbnN0cl9jeHQsIHNpemVvZihJbmRleFNjYW5JbnN0cnVtZW50YXRpb24pKTsKKwor CQkvKgorCQkgKiBUcmFjayB0YWJsZSBhbmQgaW5kZXggYWNjZXNzIHNlcGFyYXRlbHkuIFdlIGlu dGVudGlvbmFsbHkgZG9uJ3QKKwkJICogY29sbGVjdCB0aW1pbmcgKGV2ZW4gaWYgZW5hYmxlZCks IHNpbmNlIHdlIGRvbid0IG5lZWQgaXQsIGFuZAorCQkgKiBJbmRleE9ubHlOZXh0IGNhbGxzIElu c3RyUHVzaFN0YWNrIC8gSW5zdHJQb3BTdGFjayAoaW5zdGVhZCBvZiB0aGUKKwkJICogZnVsbCBJ bnN0ck5vZGUqKSB0byByZWR1Y2Ugb3ZlcmhlYWQuCisJCSAqLworCQlpZiAoKGVzdGF0ZS0+ZXNf aW5zdHJ1bWVudCAmIElOU1RSVU1FTlRfQlVGRkVSUykgIT0gMCkKKwkJeworCQkJSW5zdHJJbml0 T3B0aW9ucygmaW5kZXhzdGF0ZS0+aW9zc19JbnN0cnVtZW50LT50YWJsZV9pbnN0ciwgSU5TVFJV TUVOVF9CVUZGRVJTKTsKKwkJCUluc3RyUXVlcnlSZW1lbWJlckNoaWxkKGVzdGF0ZS0+ZXNfcXVl cnlfaW5zdHIsICZpbmRleHN0YXRlLT5pb3NzX0luc3RydW1lbnQtPnRhYmxlX2luc3RyKTsKKwkJ fQorCX0KIAogCS8qIE9wZW4gdGhlIGluZGV4IHJlbGF0aW9uLiAqLwogCWxvY2ttb2RlID0gZXhl Y19ydF9mZXRjaChub2RlLT5zY2FuLnNjYW5yZWxpZCwgZXN0YXRlKS0+cmVsbG9ja21vZGU7CkBA IC04MTEsNCArODI2LDExIEBAIEV4ZWNJbmRleE9ubHlTY2FuUmV0cmlldmVJbnN0cnVtZW50YXRp b24oSW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQogCQlTaGFyZWRJbmZvLT5udW1fd29ya2VycyAq IHNpemVvZihJbmRleFNjYW5JbnN0cnVtZW50YXRpb24pOwogCW5vZGUtPmlvc3NfU2hhcmVkSW5m byA9IHBhbGxvYyhzaXplKTsKIAltZW1jcHkobm9kZS0+aW9zc19TaGFyZWRJbmZvLCBTaGFyZWRJ bmZvLCBzaXplKTsKKworCS8qIEFnZ3JlZ2F0ZSB3b3JrZXJzJyB0YWJsZSBidWZmZXIvV0FMIHVz YWdlIGludG8gbGVhZGVyJ3MgZW50cnkgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IG5vZGUtPmlv c3NfU2hhcmVkSW5mby0+bnVtX3dvcmtlcnM7IGkrKykKKwl7CisJCUluc3RyQWNjdW1TdGFjaygm bm9kZS0+aW9zc19JbnN0cnVtZW50LT50YWJsZV9pbnN0ciwKKwkJCQkJCSZub2RlLT5pb3NzX1No YXJlZEluZm8tPndpbnN0cnVtZW50W2ldLnRhYmxlX2luc3RyKTsKKwl9CiB9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlSW5kZXhzY2FuLmMKaW5kZXggMmFjODU0ZGE0NjguLmQzYWU0ZDAxNmM0IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCkBAIC04MjEsNiArODIxLDcgQEAgRXhlY0Vu ZEluZGV4U2NhbihJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkJICovCiAJCXdpbnN0cnVtZW50LT5u c2VhcmNoZXMgKz0gbm9kZS0+aXNzX0luc3RydW1lbnQtPm5zZWFyY2hlczsKIAkJQXNzZXJ0KG5v ZGUtPmlzc19JbnN0cnVtZW50LT5udGFibGV0dXBsZWZldGNoZXMgPT0gMCk7CisJCUluc3RyQWNj dW1TdGFjaygmd2luc3RydW1lbnQtPnRhYmxlX2luc3RyLCAmbm9kZS0+aXNzX0luc3RydW1lbnQt PnRhYmxlX2luc3RyKTsKIAl9CiAKIAkvKgpAQCAtOTgzLDcgKzk4NCwyMSBAQCBFeGVjSW5pdElu ZGV4U2NhbihJbmRleFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJ LyogU2V0IHVwIGluc3RydW1lbnRhdGlvbiBvZiBpbmRleCBzY2FucyBpZiByZXF1ZXN0ZWQgKi8K IAlpZiAoZXN0YXRlLT5lc19pbnN0cnVtZW50KQotCQlpbmRleHN0YXRlLT5pc3NfSW5zdHJ1bWVu dCA9IHBhbGxvYzBfb2JqZWN0KEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbik7CisJeworCQlpbmRl eHN0YXRlLT5pc3NfSW5zdHJ1bWVudCA9IE1lbW9yeUNvbnRleHRBbGxvY1plcm8oZXN0YXRlLT5l c19xdWVyeV9pbnN0ci0+aW5zdHJfY3h0LCBzaXplb2YoSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9u KSk7CisKKwkJLyoKKwkJICogVHJhY2sgdGFibGUgYW5kIGluZGV4IGFjY2VzcyBzZXBhcmF0ZWx5 LiBXZSBpbnRlbnRpb25hbGx5IGRvbid0CisJCSAqIGNvbGxlY3QgdGltaW5nIChldmVuIGlmIGVu YWJsZWQpLCBzaW5jZSB3ZSBkb24ndCBuZWVkIGl0LCBhbmQKKwkJICogSW5kZXhOZXh0IC8gSW5k ZXhOZXh0V2l0aFJlb3JkZXIgY2FsbCBJbnN0clB1c2hTdGFjayAvCisJCSAqIEluc3RyUG9wU3Rh Y2sgKGluc3RlYWQgb2YgdGhlIGZ1bGwgSW5zdHJOb2RlKikgdG8gcmVkdWNlIG92ZXJoZWFkLgor CQkgKi8KKwkJaWYgKChlc3RhdGUtPmVzX2luc3RydW1lbnQgJiBJTlNUUlVNRU5UX0JVRkZFUlMp ICE9IDApCisJCXsKKwkJCUluc3RySW5pdE9wdGlvbnMoJmluZGV4c3RhdGUtPmlzc19JbnN0cnVt ZW50LT50YWJsZV9pbnN0ciwgSU5TVFJVTUVOVF9CVUZGRVJTKTsKKwkJCUluc3RyUXVlcnlSZW1l bWJlckNoaWxkKGVzdGF0ZS0+ZXNfcXVlcnlfaW5zdHIsICZpbmRleHN0YXRlLT5pc3NfSW5zdHJ1 bWVudC0+dGFibGVfaW5zdHIpOworCQl9CisJfQogCiAJLyogT3BlbiB0aGUgaW5kZXggcmVsYXRp b24uICovCiAJbG9ja21vZGUgPSBleGVjX3J0X2ZldGNoKG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBl c3RhdGUpLT5yZWxsb2NrbW9kZTsKQEAgLTE4MzksNCArMTg1NCwxMSBAQCBFeGVjSW5kZXhTY2Fu UmV0cmlldmVJbnN0cnVtZW50YXRpb24oSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAJCVNoYXJlZElu Zm8tPm51bV93b3JrZXJzICogc2l6ZW9mKEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbik7CiAJbm9k ZS0+aXNzX1NoYXJlZEluZm8gPSBwYWxsb2Moc2l6ZSk7CiAJbWVtY3B5KG5vZGUtPmlzc19TaGFy ZWRJbmZvLCBTaGFyZWRJbmZvLCBzaXplKTsKKworCS8qIEFnZ3JlZ2F0ZSB3b3JrZXJzJyB0YWJs ZSBidWZmZXIvV0FMIHVzYWdlIGludG8gbGVhZGVyJ3MgZW50cnkgKi8KKwlmb3IgKGludCBpID0g MDsgaSA8IG5vZGUtPmlzc19TaGFyZWRJbmZvLT5udW1fd29ya2VyczsgaSsrKQorCXsKKwkJSW5z dHJBY2N1bVN0YWNrKCZub2RlLT5pc3NfSW5zdHJ1bWVudC0+dGFibGVfaW5zdHIsCisJCQkJCQkm bm9kZS0+aXNzX1NoYXJlZEluZm8tPndpbnN0cnVtZW50W2ldLnRhYmxlX2luc3RyKTsKKwl9CiB9 CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50X25vZGUuaCBiL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnRfbm9kZS5oCmluZGV4IDc4ZjgxMGFhYmFmLi5i ZjBjNDQxNmRhZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudF9u b2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmgKQEAgLTE4 LDYgKzE4LDggQEAKICNpZm5kZWYgSU5TVFJVTUVOVF9OT0RFX0gKICNkZWZpbmUgSU5TVFJVTUVO VF9OT0RFX0gKIAorI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKKwogCiAvKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqCUluc3RydW1lbnRhdGlvbiBpbmZvcm1hdGlvbiBmb3IgYWdn cmVnYXRlIGZ1bmN0aW9uIGV4ZWN1dGlvbgpAQCAtNTEsNiArNTMsOSBAQCB0eXBlZGVmIHN0cnVj dCBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24KIAogCS8qIFRhYmxlIHR1cGxlcyBmZXRjaGVkIGNv dW50IChpbmNyZW1lbnRlZCBkdXJpbmcgaW5kZXgtb25seSBzY2FucykgKi8KIAl1aW50NjQJCW50 YWJsZXR1cGxlZmV0Y2hlczsKKworCS8qIEluc3RydW1lbnRhdGlvbiB1dGlsaXplZCBmb3IgdHJh Y2tpbmcgYnVmZmVyIHVzYWdlIGR1cmluZyB0YWJsZSBhY2Nlc3MgKi8KKwlJbnN0cnVtZW50YXRp b24gdGFibGVfaW5zdHI7CiB9IEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbjsKIAogLyoKLS0gCjIu NDcuMQoK --00000000000045175b064ec7b858 Content-Type: application/octet-stream; name="v15-0003-instrumentation-Add-additional-regression-tests-.patch" Content-Disposition: attachment; filename="v15-0003-instrumentation-Add-additional-regression-tests-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnmzxbq33 RnJvbSA5NzY4MTQ4MWZiOTZhNTkwNzgzMGQ0MDVlZDVjMjU2NGJhZGRiODcyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT dW4sIDUgQXByIDIwMjYgMDM6NDg6MzIgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxNSAzLzldIGlu c3RydW1lbnRhdGlvbjogQWRkIGFkZGl0aW9uYWwgcmVncmVzc2lvbiB0ZXN0cwogY292ZXJpbmcg YnVmZmVyIHVzYWdlCgpUaGlzIGFkZHMgcmVncmVzc2lvbiB0ZXN0cyB0aGF0IGNvdmVyIHNvbWUg b2YgdGhlIGV4cGVjdGVkIGJlaGF2aW91cgphcm91bmQgdGhlIGJ1ZmZlciBzdGF0aXN0aWNzIHJl cG9ydGVkIGluIEVYUExBSU4gQU5BTFlaRSwgc3BlY2lmaWNhbGx5CmhvdyB0aGV5IGJlaGF2ZSBp biBwYXJhbGxlbCBxdWVyeSwgbmVzdGVkIGZ1bmN0aW9uIGNhbGxzIGFuZCBhYm9ydApzaXR1YXRp b25zLgoKVGVzdGluZyB0aGlzIGlzIGNoYWxsZW5naW5nIGJlY2F1c2UgdGhlcmUgY2FuIGJlIGRp ZmZlcmVudCBzb3VyY2VzIG9mCmJ1ZmZlciBhY3Rpdml0eSwgc28gd2UgcmVseSBvbiB0ZW1wb3Jh cnkgdGFibGVzIHdoZXJlIHdlIGNhbiB0byBwcm92ZQp0aGF0IGFjdGl2aXR5IHdhcyBjYXB0dXJl ZCBhbmQgbm90IGxvc3QuIFRoaXMgc3VwcG9ydHMgYSBmdXR1cmUgY29tbWl0CnRoYXQgd2lsbCBy ZXdvcmsgc29tZSBvZiB0aGUgaW5zdHJ1bWVudGF0aW9uIGxvZ2ljIHRoYXQgY291bGQgY2F1c2UK YXJlYXMgY292ZXJlZCBieSB0aGVzZSB0ZXN0cyB0byBmYWlsLgoKQXV0aG9yOiBMdWthcyBGaXR0 bCA8bHVrYXNAZml0dGwuY29tPgpSZXZpZXdlZC1ieToKRGlzY3Vzc2lvbjoKLS0tCiAuLi4vcGdf c3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3V0aWxpdHkub3V0ICAgfCAgNzAgKysrKysrKwogY29u dHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvd2FsLm91dCAgIHwgIDQ4ICsrKysrCiBj b250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvdXRpbGl0eS5zcWwgICAgfCAgNTYgKysrKysr CiBjb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvd2FsLnNxbCAgICAgICAgfCAgMzMgKysr CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0ICAgICAgICAgfCAxODggKysr KysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWluLnNxbCAgICAgICAg ICAgICAgfCAxODggKysrKysrKysrKysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDU4MyBpbnNl cnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0 ZWQvdXRpbGl0eS5vdXQgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC91dGls aXR5Lm91dAppbmRleCBlNGQ2NTY0ZWE1Yi4uY2JhNDg3ZjZiZTUgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3V0aWxpdHkub3V0CisrKyBiL2NvbnRyaWIv cGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3V0aWxpdHkub3V0CkBAIC0yODksNiArMjg5LDc2 IEBAIFNFTEVDVCBjYWxscywgcm93cywgcXVlcnkgRlJPTSBwZ19zdGF0X3N0YXRlbWVudHMgT1JE RVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CiAgICAgIDEgfCAgICAxIHwgU0VMRUNUIHBnX3N0YXRf c3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQKICgzIHJvd3MpCiAKKy0tIEJ1ZmZl ciBzdGF0cyBzaG91bGQgZmxvdyB0aHJvdWdoIEVYUExBSU4gQU5BTFlaRQorQ1JFQVRFIFRFTVAg VEFCTEUgZmxvd190aHJvdWdoX3Rlc3QgKGEgaW50LCBiIGNoYXIoMjAwKSk7CitJTlNFUlQgSU5U TyBmbG93X3Rocm91Z2hfdGVzdCBTRUxFQ1QgaSwgcmVwZWF0KCd4JywgMjAwKSBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA1MDAwKSBBUyBpOworQ1JFQVRFIEZVTkNUSU9OIHJ1bl9leHBsYWluX2J1 ZmZlcnNfdGVzdCgpIFJFVFVSTlMgdm9pZCBBUyAkJAorREVDTEFSRQorQkVHSU4KKyAgICBFWEVD VVRFICdFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTKSBTRUxFQ1QgKiBGUk9NIGZsb3dfdGhyb3Vn aF90ZXN0JzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitTRUxFQ1QgcGdfc3RhdF9zdGF0 ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdDsKKyB0IAorLS0tCisgdAorKDEgcm93KQor CitTRUxFQ1QgcnVuX2V4cGxhaW5fYnVmZmVyc190ZXN0KCk7CisgcnVuX2V4cGxhaW5fYnVmZmVy c190ZXN0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworLS0gRVhQ TEFJTiBlbnRyaWVzIHNob3VsZCBoYXZlIG5vbi16ZXJvIGJ1ZmZlciBzdGF0cworU0VMRUNUIHF1 ZXJ5LCBsb2NhbF9ibGtzX2hpdCArIGxvY2FsX2Jsa3NfcmVhZCA+IDAgYXMgaGFzX2J1ZmZlcl9z dGF0cworRlJPTSBwZ19zdGF0X3N0YXRlbWVudHMKK1dIRVJFIHF1ZXJ5IExJS0UgJ1NFTEVDVCBy dW5fZXhwbGFpbl9idWZmZXJzX3Rlc3QlJworT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7Cisg ICAgICAgICAgICAgICBxdWVyeSAgICAgICAgICAgICAgIHwgaGFzX2J1ZmZlcl9zdGF0cyAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIFNF TEVDVCBydW5fZXhwbGFpbl9idWZmZXJzX3Rlc3QoKSB8IHQKKygxIHJvdykKKworRFJPUCBGVU5D VElPTiBydW5fZXhwbGFpbl9idWZmZXJzX3Rlc3Q7CitEUk9QIFRBQkxFIGZsb3dfdGhyb3VnaF90 ZXN0OworLS0gVmFsaWRhdGUgYnVmZmVyL1dBTCBjb3VudGluZyBkdXJpbmcgYWJvcnQKK1NFVCBw Z19zdGF0X3N0YXRlbWVudHMudHJhY2sgPSAnYWxsJzsKK0NSRUFURSBURU1QIFRBQkxFIHBnc3Nf Y2FsbF90YWIgKGEgaW50LCBiIGNoYXIoMjApKTsKK0NSRUFURSBURU1QIFRBQkxFIHBnc3NfY2Fs bF90YWIyIChhIGludCwgYiBjaGFyKDIwKSk7CitJTlNFUlQgSU5UTyBwZ3NzX2NhbGxfdGFiIFZB TFVFUyAoMCwgJ3p6eicpOworQ1JFQVRFIFBST0NFRFVSRSBwZ3NzX2NhbGxfcm9sbGJhY2tfcHJv YygpIEFTICQkCitERUNMQVJFCisgICAgdiBpbnQ7CitCRUdJTgorICAgIEVYUExBSU4gQU5BTFla RSBXSVRIIGlucyBBUyAoSU5TRVJUIElOVE8gcGdzc19jYWxsX3RhYjIgU0VMRUNUICogRlJPTSBw Z3NzX2NhbGxfdGFiIFJFVFVSTklORyBhKQorICAgIFNFTEVDVCBhIC8gMCBJTlRPIHYgRlJPTSBp bnM7CitFWENFUFRJT04gV0hFTiBkaXZpc2lvbl9ieV96ZXJvIFRIRU4KK0VORDsKKyQkIExBTkdV QUdFIHBscGdzcWw7CitTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5V TEwgQVMgdDsKKyB0IAorLS0tCisgdAorKDEgcm93KQorCitDQUxMIHBnc3NfY2FsbF9yb2xsYmFj a19wcm9jKCk7CitTRUxFQ1QgcXVlcnksIGNhbGxzLAorbG9jYWxfYmxrc19oaXQgKyBsb2NhbF9i bGtzX3JlYWQgPiAwIGFzIGxvY2FsX2hpdHJlYWQsCit3YWxfYnl0ZXMgPiAwIGFzIHdhbF9ieXRl c19nZW5lcmF0ZWQsCit3YWxfcmVjb3JkcyA+IDAgYXMgd2FsX3JlY29yZHNfZ2VuZXJhdGVkCitG Uk9NIHBnX3N0YXRfc3RhdGVtZW50cworV0hFUkUgcXVlcnkgTElLRSAnJXBnc3NfY2FsbF9yb2xs YmFja19wcm9jJScKK09SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOworICAgICAgICAgICAgIHF1 ZXJ5ICAgICAgICAgICAgICB8IGNhbGxzIHwgbG9jYWxfaGl0cmVhZCB8IHdhbF9ieXRlc19nZW5l cmF0ZWQgfCB3YWxfcmVjb3Jkc19nZW5lcmF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDQUxMIHBnc3NfY2FsbF9yb2xsYmFja19wcm9jKCkgfCAg ICAgMSB8IHQgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgICAgIHwgdAorKDEgcm93KQor CitEUk9QIFRBQkxFIHBnc3NfY2FsbF90YWIyOworRFJPUCBUQUJMRSBwZ3NzX2NhbGxfdGFiOwor RFJPUCBQUk9DRURVUkUgcGdzc19jYWxsX3JvbGxiYWNrX3Byb2M7CitTRVQgcGdfc3RhdF9zdGF0 ZW1lbnRzLnRyYWNrID0gJ3RvcCc7CiAtLSBDQUxMCiBDUkVBVEUgT1IgUkVQTEFDRSBQUk9DRURV UkUgc3VtX29uZShpIGludCkgQVMgJCQKIERFQ0xBUkUKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdf c3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL3dhbC5vdXQgYi9jb250cmliL3BnX3N0YXRfc3RhdGVt ZW50cy9leHBlY3RlZC93YWwub3V0CmluZGV4IDk3N2UzODJkODQ4Li42MTEyMTNkYWVmNiAxMDA2 NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvd2FsLm91dAorKysg Yi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC93YWwub3V0CkBAIC0yOCwzICsy OCw1MSBAQCBTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMg dDsKICB0CiAoMSByb3cpCiAKKy0tCistLSBWYWxpZGF0ZSBidWZmZXIvV0FMIGNvdW50aW5nIHdp dGggY2F1Z2h0IGV4Y2VwdGlvbiBpbiBQTC9wZ1NRTAorLS0KK0NSRUFURSBURU1QIFRBQkxFIHBn c3NfZXJyb3JfdGFiIChhIGludCwgYiBjaGFyKDIwKSk7CitJTlNFUlQgSU5UTyBwZ3NzX2Vycm9y X3RhYiBWQUxVRVMgKDAsICd6enonKTsKK0NSRUFURSBGVU5DVElPTiBwZ3NzX2Vycm9yX2Z1bmMo KSBSRVRVUk5TIHZvaWQgQVMgJCQKK0RFQ0xBUkUKKyAgICB2IGludDsKK0JFR0lOCisgICAgV0lU SCBpbnMgQVMgKElOU0VSVCBJTlRPIHBnc3NfZXJyb3JfdGFiIFZBTFVFUyAoMSwgJ2FhYScpIFJF VFVSTklORyBhKQorICAgIFNFTEVDVCBhIC8gMCBJTlRPIHYgRlJPTSBpbnM7CitFWENFUFRJT04g V0hFTiBkaXZpc2lvbl9ieV96ZXJvIFRIRU4KKyAgICBOVUxMOworRU5EOworJCQgTEFOR1VBR0Ug cGxwZ3NxbDsKK1NFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBB UyB0OworIHQgCistLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBwZ3NzX2Vycm9yX2Z1bmMoKTsK KyBwZ3NzX2Vycm9yX2Z1bmMgCistLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCistLSBC dWZmZXIvV0FMIHVzYWdlIGZyb20gdGhlIHdDVEUgSU5TRVJUIHNob3VsZCBzdXJ2aXZlIHRoZSBl eGNlcHRpb24KK1NFTEVDVCBxdWVyeSwgY2FsbHMsCitsb2NhbF9ibGtzX2hpdCArIGxvY2FsX2Js a3NfcmVhZCA+IDAgYXMgbG9jYWxfaGl0cmVhZCwKK3dhbF9ieXRlcyA+IDAgYXMgd2FsX2J5dGVz X2dlbmVyYXRlZCwKK3dhbF9yZWNvcmRzID4gMCBhcyB3YWxfcmVjb3Jkc19nZW5lcmF0ZWQKK0ZS T00gcGdfc3RhdF9zdGF0ZW1lbnRzCitXSEVSRSBxdWVyeSBMSUtFICclcGdzc19lcnJvcl9mdW5j JScKK09SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOworICAgICAgICAgIHF1ZXJ5ICAgICAgICAg ICB8IGNhbGxzIHwgbG9jYWxfaGl0cmVhZCB8IHdhbF9ieXRlc19nZW5lcmF0ZWQgfCB3YWxfcmVj b3Jkc19nZW5lcmF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBTRUxFQ1QgcGdzc19lcnJvcl9mdW5jKCkgfCAgICAgMSB8IHQgICAgICAgICAgICAgfCB0ICAg ICAgICAgICAgICAgICAgIHwgdAorKDEgcm93KQorCitEUk9QIFRBQkxFIHBnc3NfZXJyb3JfdGFi OworRFJPUCBGVU5DVElPTiBwZ3NzX2Vycm9yX2Z1bmM7CitTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1l bnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdDsKKyB0IAorLS0tCisgdAorKDEgcm93KQorCmRp ZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvdXRpbGl0eS5zcWwgYi9j b250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvdXRpbGl0eS5zcWwKaW5kZXggZGQ5NzIwM2My MTAuLjc1NDBlNDljNzNjIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9z cWwvdXRpbGl0eS5zcWwKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3V0aWxp dHkuc3FsCkBAIC0xNTIsNiArMTUyLDYyIEBAIEVYUExBSU4gKGNvc3RzIG9mZikgU0VMRUNUIGEg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgQVMgdGFiKGEpIFdIRVJFIGEgPSA3OwogCiBTRUxF Q1QgY2FsbHMsIHJvd3MsIHF1ZXJ5IEZST00gcGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1 ZXJ5IENPTExBVEUgIkMiOwogCistLSBCdWZmZXIgc3RhdHMgc2hvdWxkIGZsb3cgdGhyb3VnaCBF WFBMQUlOIEFOQUxZWkUKK0NSRUFURSBURU1QIFRBQkxFIGZsb3dfdGhyb3VnaF90ZXN0IChhIGlu dCwgYiBjaGFyKDIwMCkpOworSU5TRVJUIElOVE8gZmxvd190aHJvdWdoX3Rlc3QgU0VMRUNUIGks IHJlcGVhdCgneCcsIDIwMCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgQVMgaTsKKwor Q1JFQVRFIEZVTkNUSU9OIHJ1bl9leHBsYWluX2J1ZmZlcnNfdGVzdCgpIFJFVFVSTlMgdm9pZCBB UyAkJAorREVDTEFSRQorQkVHSU4KKyAgICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBCVUZG RVJTKSBTRUxFQ1QgKiBGUk9NIGZsb3dfdGhyb3VnaF90ZXN0JzsKK0VORDsKKyQkIExBTkdVQUdF IHBscGdzcWw7CisKK1NFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVM TCBBUyB0OworCitTRUxFQ1QgcnVuX2V4cGxhaW5fYnVmZmVyc190ZXN0KCk7CisKKy0tIEVYUExB SU4gZW50cmllcyBzaG91bGQgaGF2ZSBub24temVybyBidWZmZXIgc3RhdHMKK1NFTEVDVCBxdWVy eSwgbG9jYWxfYmxrc19oaXQgKyBsb2NhbF9ibGtzX3JlYWQgPiAwIGFzIGhhc19idWZmZXJfc3Rh dHMKK0ZST00gcGdfc3RhdF9zdGF0ZW1lbnRzCitXSEVSRSBxdWVyeSBMSUtFICdTRUxFQ1QgcnVu X2V4cGxhaW5fYnVmZmVyc190ZXN0JScKK09SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOworCitE Uk9QIEZVTkNUSU9OIHJ1bl9leHBsYWluX2J1ZmZlcnNfdGVzdDsKK0RST1AgVEFCTEUgZmxvd190 aHJvdWdoX3Rlc3Q7CisKKy0tIFZhbGlkYXRlIGJ1ZmZlci9XQUwgY291bnRpbmcgZHVyaW5nIGFi b3J0CitTRVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNrID0gJ2FsbCc7CitDUkVBVEUgVEVNUCBU QUJMRSBwZ3NzX2NhbGxfdGFiIChhIGludCwgYiBjaGFyKDIwKSk7CitDUkVBVEUgVEVNUCBUQUJM RSBwZ3NzX2NhbGxfdGFiMiAoYSBpbnQsIGIgY2hhcigyMCkpOworSU5TRVJUIElOVE8gcGdzc19j YWxsX3RhYiBWQUxVRVMgKDAsICd6enonKTsKKworQ1JFQVRFIFBST0NFRFVSRSBwZ3NzX2NhbGxf cm9sbGJhY2tfcHJvYygpIEFTICQkCitERUNMQVJFCisgICAgdiBpbnQ7CitCRUdJTgorICAgIEVY UExBSU4gQU5BTFlaRSBXSVRIIGlucyBBUyAoSU5TRVJUIElOVE8gcGdzc19jYWxsX3RhYjIgU0VM RUNUICogRlJPTSBwZ3NzX2NhbGxfdGFiIFJFVFVSTklORyBhKQorICAgIFNFTEVDVCBhIC8gMCBJ TlRPIHYgRlJPTSBpbnM7CitFWENFUFRJT04gV0hFTiBkaXZpc2lvbl9ieV96ZXJvIFRIRU4KK0VO RDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK1NFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVz ZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworQ0FMTCBwZ3NzX2NhbGxfcm9sbGJhY2tfcHJvYygpOwor CitTRUxFQ1QgcXVlcnksIGNhbGxzLAorbG9jYWxfYmxrc19oaXQgKyBsb2NhbF9ibGtzX3JlYWQg PiAwIGFzIGxvY2FsX2hpdHJlYWQsCit3YWxfYnl0ZXMgPiAwIGFzIHdhbF9ieXRlc19nZW5lcmF0 ZWQsCit3YWxfcmVjb3JkcyA+IDAgYXMgd2FsX3JlY29yZHNfZ2VuZXJhdGVkCitGUk9NIHBnX3N0 YXRfc3RhdGVtZW50cworV0hFUkUgcXVlcnkgTElLRSAnJXBnc3NfY2FsbF9yb2xsYmFja19wcm9j JScKK09SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOworCitEUk9QIFRBQkxFIHBnc3NfY2FsbF90 YWIyOworRFJPUCBUQUJMRSBwZ3NzX2NhbGxfdGFiOworRFJPUCBQUk9DRURVUkUgcGdzc19jYWxs X3JvbGxiYWNrX3Byb2M7CitTRVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNrID0gJ3RvcCc7CisK IC0tIENBTEwKIENSRUFURSBPUiBSRVBMQUNFIFBST0NFRFVSRSBzdW1fb25lKGkgaW50KSBBUyAk JAogREVDTEFSRQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL3dh bC5zcWwgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvd2FsLnNxbAppbmRleCAxZGMx NTUyYTgxZS4uNDY3ZTMyMWIyMDYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1l bnRzL3NxbC93YWwuc3FsCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC93YWwu c3FsCkBAIC0xOCwzICsxOCwzNiBAQCB3YWxfcmVjb3JkcyA+IDAgYXMgd2FsX3JlY29yZHNfZ2Vu ZXJhdGVkLAogd2FsX3JlY29yZHMgPj0gcm93cyBhcyB3YWxfcmVjb3Jkc19nZV9yb3dzCiBGUk9N IHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKIFNFTEVDVCBw Z19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworCistLQorLS0gVmFs aWRhdGUgYnVmZmVyL1dBTCBjb3VudGluZyB3aXRoIGNhdWdodCBleGNlcHRpb24gaW4gUEwvcGdT UUwKKy0tCitDUkVBVEUgVEVNUCBUQUJMRSBwZ3NzX2Vycm9yX3RhYiAoYSBpbnQsIGIgY2hhcigy MCkpOworSU5TRVJUIElOVE8gcGdzc19lcnJvcl90YWIgVkFMVUVTICgwLCAnenp6Jyk7CisKK0NS RUFURSBGVU5DVElPTiBwZ3NzX2Vycm9yX2Z1bmMoKSBSRVRVUk5TIHZvaWQgQVMgJCQKK0RFQ0xB UkUKKyAgICB2IGludDsKK0JFR0lOCisgICAgV0lUSCBpbnMgQVMgKElOU0VSVCBJTlRPIHBnc3Nf ZXJyb3JfdGFiIFZBTFVFUyAoMSwgJ2FhYScpIFJFVFVSTklORyBhKQorICAgIFNFTEVDVCBhIC8g MCBJTlRPIHYgRlJPTSBpbnM7CitFWENFUFRJT04gV0hFTiBkaXZpc2lvbl9ieV96ZXJvIFRIRU4K KyAgICBOVUxMOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworU0VMRUNUIHBnX3N0YXRf c3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7CitTRUxFQ1QgcGdzc19lcnJvcl9m dW5jKCk7CisKKy0tIEJ1ZmZlci9XQUwgdXNhZ2UgZnJvbSB0aGUgd0NURSBJTlNFUlQgc2hvdWxk IHN1cnZpdmUgdGhlIGV4Y2VwdGlvbgorU0VMRUNUIHF1ZXJ5LCBjYWxscywKK2xvY2FsX2Jsa3Nf aGl0ICsgbG9jYWxfYmxrc19yZWFkID4gMCBhcyBsb2NhbF9oaXRyZWFkLAord2FsX2J5dGVzID4g MCBhcyB3YWxfYnl0ZXNfZ2VuZXJhdGVkLAord2FsX3JlY29yZHMgPiAwIGFzIHdhbF9yZWNvcmRz X2dlbmVyYXRlZAorRlJPTSBwZ19zdGF0X3N0YXRlbWVudHMKK1dIRVJFIHF1ZXJ5IExJS0UgJyVw Z3NzX2Vycm9yX2Z1bmMlJworT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisKK0RST1AgVEFC TEUgcGdzc19lcnJvcl90YWI7CitEUk9QIEZVTkNUSU9OIHBnc3NfZXJyb3JfZnVuYzsKK1NFTEVD VCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBsYWluLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQKaW5kZXggN2MxZjI2YjE4MmMuLjVmZjk2NDkxYjBhIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0CisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQKQEAgLTgyMiwzICs4MjIsMTkxIEBA IHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSxidWZmZXJzIG9mZixjb3N0 cyBvZmYpIHNlbGVjdCBzdW0obikgb3ZlCiAoOSByb3dzKQogCiByZXNldCB3b3JrX21lbTsKKy0t IEVYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMpIHNob3VsZCByZXBvcnQgYnVmZmVyIHVzYWdlIGZy b20gUEwvcGdTUUwKKy0tIEVYQ0VQVElPTiBibG9ja3MsIGV2ZW4gYWZ0ZXIgc3VidHJhbnNhY3Rp b24gcm9sbGJhY2suCitDUkVBVEUgVEVNUCBUQUJMRSBleHBsYWluX2V4Y190YWIgKGEgaW50LCBi IGNoYXIoMjApKTsKK0lOU0VSVCBJTlRPIGV4cGxhaW5fZXhjX3RhYiBWQUxVRVMgKDAsICd6enon KTsKK0NSRUFURSBGVU5DVElPTiBleHBsYWluX2V4Y19mdW5jKCkgUkVUVVJOUyB2b2lkIEFTICQk CitERUNMQVJFCisgICAgdiBpbnQ7CitCRUdJTgorICAgIFdJVEggaW5zIEFTIChJTlNFUlQgSU5U TyBleHBsYWluX2V4Y190YWIgVkFMVUVTICgxLCAnYWFhJykgUkVUVVJOSU5HIGEpCisgICAgU0VM RUNUIGEgLyAwIElOVE8gdiBGUk9NIGluczsKK0VYQ0VQVElPTiBXSEVOIGRpdmlzaW9uX2J5X3pl cm8gVEhFTgorICAgIE5VTEw7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworQ1JFQVRFIEZV TkNUSU9OIGNoZWNrX2V4cGxhaW5fZXhjZXB0aW9uX2J1ZmZlcnMoKSBSRVRVUk5TIGJvb2xlYW4g QVMgJCQKK0RFQ0xBUkUKKyAgICBwbGFuX2pzb24ganNvbjsKKyAgICBub2RlIGpzb247CisgICAg dG90YWxfYnVmZmVycyBpbnQ7CitCRUdJTgorICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUs IEJVRkZFUlMsIENPU1RTIE9GRiwgRk9STUFUIEpTT04pCisgICAgICAgIFNFTEVDVCBleHBsYWlu X2V4Y19mdW5jKCknIElOVE8gcGxhbl9qc29uOworICAgIG5vZGUgOj0gcGxhbl9qc29uLT4wLT4n UGxhbic7CisgICAgdG90YWxfYnVmZmVycyA6PQorICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidM b2NhbCBIaXQgQmxvY2tzJyk6OmludCwgMCkgKworICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidM b2NhbCBSZWFkIEJsb2NrcycpOjppbnQsIDApOworICAgIFJFVFVSTiB0b3RhbF9idWZmZXJzID4g MDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitTRUxFQ1QgY2hlY2tfZXhwbGFpbl9leGNl cHRpb25fYnVmZmVycygpIEFTIGV4Y2VwdGlvbl9idWZmZXJzX3Zpc2libGU7CisgZXhjZXB0aW9u X2J1ZmZlcnNfdmlzaWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJv dykKKworLS0gQWxzbyB0ZXN0IHdpdGggbmVzdGVkIEVYUExBSU4gQU5BTFlaRSAodHdvIGxldmVs cyBvZiBpbnN0cnVtZW50YXRpb24pCitDUkVBVEUgRlVOQ1RJT04gY2hlY2tfZXhwbGFpbl9leGNl cHRpb25fYnVmZmVyc19uZXN0ZWQoKSBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0RFQ0xBUkUKKyAg ICBwbGFuX2pzb24ganNvbjsKKyAgICBub2RlIGpzb247CisgICAgdG90YWxfYnVmZmVycyBpbnQ7 CitCRUdJTgorICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMsIENPU1RTIE9G RiwgRk9STUFUIEpTT04pCisgICAgICAgIFNFTEVDVCBjaGVja19leHBsYWluX2V4Y2VwdGlvbl9i dWZmZXJzKCknIElOVE8gcGxhbl9qc29uOworICAgIG5vZGUgOj0gcGxhbl9qc29uLT4wLT4nUGxh bic7CisgICAgdG90YWxfYnVmZmVycyA6PQorICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidMb2Nh bCBIaXQgQmxvY2tzJyk6OmludCwgMCkgKworICAgICAgICBDT0FMRVNDRSgobm9kZS0+PidMb2Nh bCBSZWFkIEJsb2NrcycpOjppbnQsIDApOworICAgIFJFVFVSTiB0b3RhbF9idWZmZXJzID4gMDsK K0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitTRUxFQ1QgY2hlY2tfZXhwbGFpbl9leGNlcHRp b25fYnVmZmVyc19uZXN0ZWQoKSBBUyBleGNlcHRpb25fYnVmZmVyc19uZXN0ZWRfdmlzaWJsZTsK KyBleGNlcHRpb25fYnVmZmVyc19uZXN0ZWRfdmlzaWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK0RST1AgRlVOQ1RJT04gY2hlY2tfZXhwbGFp bl9leGNlcHRpb25fYnVmZmVyc19uZXN0ZWQ7CitEUk9QIEZVTkNUSU9OIGNoZWNrX2V4cGxhaW5f ZXhjZXB0aW9uX2J1ZmZlcnM7CitEUk9QIEZVTkNUSU9OIGV4cGxhaW5fZXhjX2Z1bmM7CitEUk9Q IFRBQkxFIGV4cGxhaW5fZXhjX3RhYjsKKy0tIEN1cnNvciBpbnN0cnVtZW50YXRpb24gdGVzdC4K Ky0tIFZlcmlmeSB0aGF0IGJ1ZmZlciB1c2FnZSBpcyBjb3JyZWN0bHkgdHJhY2tlZCB0aHJvdWdo IGN1cnNvciBleGVjdXRpb24gcGF0aHMuCistLSBOb24tc2Nyb2xsYWJsZSBjdXJzb3JzIGV4ZXJj aXNlIEV4ZWNTaHV0ZG93bk5vZGUgYWZ0ZXIgZWFjaCBFeGVjdXRvclJ1bgorLS0gKEVYRUNfRkxB R19CQUNLV0FSRCBpcyBub3Qgc2V0KSwgd2hpbGUgc2Nyb2xsYWJsZSBjdXJzb3JzIG9ubHkgc2h1 dCBkb3duCistLSBub2RlcyBpbiBFeGVjdXRvckZpbmlzaC4gSW4gYm90aCBjYXNlcywgYnVmZmVy IHVzYWdlIGZyb20gdGhlIGlubmVyIGN1cnNvcgorLS0gc2NhbiBzaG91bGQgYmUgY29ycmVjdGx5 IHJlcG9ydGVkLgorQ1JFQVRFIFRFTVAgVEFCTEUgY3Vyc29yX2J1Zl90ZXN0IEFTIFNFTEVDVCAq IEZST00gdGVuazE7CitDUkVBVEUgRlVOQ1RJT04gY3Vyc29yX25vc2Nyb2xsX3NjYW4oKSBSRVRV Uk5TIGJpZ2ludCBBUyAkJAorREVDTEFSRQorICAgIGN1ciBOTyBTQ1JPTEwgQ1VSU09SIEZPUiBT RUxFQ1QgKiBGUk9NIGN1cnNvcl9idWZfdGVzdDsKKyAgICByZWMgUkVDT1JEOworICAgIGNudCBi aWdpbnQgOj0gMDsKK0JFR0lOCisgICAgT1BFTiBjdXI7CisgICAgTE9PUAorICAgICAgICBGRVRD SCBORVhUIEZST00gY3VyIElOVE8gcmVjOworICAgICAgICBFWElUIFdIRU4gTk9UIEZPVU5EOwor ICAgICAgICBjbnQgOj0gY250ICsgMTsKKyAgICBFTkQgTE9PUDsKKyAgICBDTE9TRSBjdXI7Cisg ICAgUkVUVVJOIGNudDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitDUkVBVEUgRlVOQ1RJ T04gY3Vyc29yX3Njcm9sbF9zY2FuKCkgUkVUVVJOUyBiaWdpbnQgQVMgJCQKK0RFQ0xBUkUKKyAg ICBjdXIgU0NST0xMIENVUlNPUiBGT1IgU0VMRUNUICogRlJPTSBjdXJzb3JfYnVmX3Rlc3Q7Cisg ICAgcmVjIFJFQ09SRDsKKyAgICBjbnQgYmlnaW50IDo9IDA7CitCRUdJTgorICAgIE9QRU4gY3Vy OworICAgIExPT1AKKyAgICAgICAgRkVUQ0ggTkVYVCBGUk9NIGN1ciBJTlRPIHJlYzsKKyAgICAg ICAgRVhJVCBXSEVOIE5PVCBGT1VORDsKKyAgICAgICAgY250IDo9IGNudCArIDE7CisgICAgRU5E IExPT1A7CisgICAgQ0xPU0UgY3VyOworICAgIFJFVFVSTiBjbnQ7CitFTkQ7CiskJCBMQU5HVUFH RSBwbHBnc3FsOworQ1JFQVRFIEZVTkNUSU9OIGNoZWNrX2N1cnNvcl9leHBsYWluX2J1ZmZlcnMo KSBSRVRVUk5TIFRBQkxFKG5vc2Nyb2xsX29rIGJvb2xlYW4sIHNjcm9sbF9vayBib29sZWFuKSBB UyAkJAorREVDTEFSRQorICAgIHBsYW5fanNvbiBqc29uOworICAgIG5vZGUganNvbjsKKyAgICBk aXJlY3RfYnVmIGludDsKKyAgICBub3Njcm9sbF9idWYgaW50OworICAgIHNjcm9sbF9idWYgaW50 OworQkVHSU4KKyAgICAtLSBEaXJlY3Qgc2NhbjogZ2V0IGxlYWYgU2VxIFNjYW4gbm9kZSBidWZm ZXJzIGFzIGJhc2VsaW5lCisgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywg Q09TVFMgT0ZGLCBGT1JNQVQgSlNPTikKKyAgICAgICAgU0VMRUNUICogRlJPTSBjdXJzb3JfYnVm X3Rlc3QnIElOVE8gcGxhbl9qc29uOworICAgIG5vZGUgOj0gcGxhbl9qc29uLT4wLT4nUGxhbic7 CisgICAgV0hJTEUgbm9kZS0+J1BsYW5zJyBJUyBOT1QgTlVMTCBMT09QCisgICAgICAgIG5vZGUg Oj0gbm9kZS0+J1BsYW5zJy0+MDsKKyAgICBFTkQgTE9PUDsKKyAgICBkaXJlY3RfYnVmIDo9Cisg ICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xvY2FsIEhpdCBCbG9ja3MnKTo6aW50LCAwKSArCisg ICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xvY2FsIFJlYWQgQmxvY2tzJyk6OmludCwgMCk7CisK KyAgICAtLSBOb24tc2Nyb2xsYWJsZSBjdXJzb3IgcGF0aDogRXhlY1NodXRkb3duTm9kZSBydW5z IGFmdGVyIGVhY2ggRXhlY3V0b3JSdW4KKyAgICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBC VUZGRVJTLCBDT1NUUyBPRkYsIEZPUk1BVCBKU09OKQorICAgICAgICBTRUxFQ1QgY3Vyc29yX25v c2Nyb2xsX3NjYW4oKScgSU5UTyBwbGFuX2pzb247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAt PidQbGFuJzsKKyAgICBub3Njcm9sbF9idWYgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4n TG9jYWwgSGl0IEJsb2NrcycpOjppbnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4n TG9jYWwgUmVhZCBCbG9ja3MnKTo6aW50LCAwKTsKKworICAgIC0tIFNjcm9sbGFibGUgY3Vyc29y IHBhdGg6IEV4ZWNTaHV0ZG93bk5vZGUgaXMgc2tpcHBlZAorICAgIEVYRUNVVEUgJ0VYUExBSU4g KEFOQUxZWkUsIEJVRkZFUlMsIENPU1RTIE9GRiwgRk9STUFUIEpTT04pCisgICAgICAgIFNFTEVD VCBjdXJzb3Jfc2Nyb2xsX3NjYW4oKScgSU5UTyBwbGFuX2pzb247CisgICAgbm9kZSA6PSBwbGFu X2pzb24tPjAtPidQbGFuJzsKKyAgICBzY3JvbGxfYnVmIDo9CisgICAgICAgIENPQUxFU0NFKChu b2RlLT4+J0xvY2FsIEhpdCBCbG9ja3MnKTo6aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChu b2RlLT4+J0xvY2FsIFJlYWQgQmxvY2tzJyk6OmludCwgMCk7CisKKyAgICAtLSBCb3RoIGN1cnNv ciBwYXRocyBzaG91bGQgcmVwb3J0IGJ1ZmZlciBjb3VudHMgYWJvdXQgYXMgaGlnaCBhcworICAg IC0tIHRoZSBkaXJlY3Qgc2NhbiAoc2FtZSBkYXRhIHBsdXMgbWlub3IgY2F0YWxvZyBvdmVyaGVh ZCksIGFuZCBub3QKKyAgICAtLSBkb3VibGUtY291bnRlZCAoPCAyeCB0aGUgZGlyZWN0IHNjYW4p CisgICAgUkVUVVJOIFFVRVJZIFNFTEVDVAorICAgICAgICAobm9zY3JvbGxfYnVmID49IGRpcmVj dF9idWYgKiAwLjUgQU5EIG5vc2Nyb2xsX2J1ZiA8IGRpcmVjdF9idWYgKiAyKSwKKyAgICAgICAg KHNjcm9sbF9idWYgPj0gZGlyZWN0X2J1ZiAqIDAuNSBBTkQgc2Nyb2xsX2J1ZiA8IGRpcmVjdF9i dWYgKiAyKTsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitTRUxFQ1QgKiBGUk9NIGNoZWNr X2N1cnNvcl9leHBsYWluX2J1ZmZlcnMoKTsKKyBub3Njcm9sbF9vayB8IHNjcm9sbF9vayAKKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgICB8IHQKKygxIHJvdykKKworRFJP UCBGVU5DVElPTiBjaGVja19jdXJzb3JfZXhwbGFpbl9idWZmZXJzOworRFJPUCBGVU5DVElPTiBj dXJzb3Jfbm9zY3JvbGxfc2NhbjsKK0RST1AgRlVOQ1RJT04gY3Vyc29yX3Njcm9sbF9zY2FuOwor RFJPUCBUQUJMRSBjdXJzb3JfYnVmX3Rlc3Q7CistLSBUZXN0IHRyaWdnZXIgaW5zdHJ1bWVudGF0 aW9uLgorQ1JFQVRFIFRFTVAgVEFCTEUgdHJpZ190ZXN0X3RhYiAoYSBpbnQpOworQ1JFQVRFIFRF TVAgVEFCTEUgdHJpZ193b3JrX3RhYiAoYSBpbnQpOworSU5TRVJUIElOVE8gdHJpZ193b3JrX3Rh YiBWQUxVRVMgKDEpOworQ1JFQVRFIEZVTkNUSU9OIHRyaWdfdGVzdF9mdW5jKCkgUkVUVVJOUyB0 cmlnZ2VyIEFTICQkCitCRUdJTgorICAgIFBFUkZPUk0gKiBGUk9NIHRyaWdfd29ya190YWI7Cisg ICAgUkVUVVJOIE5FVzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitDUkVBVEUgVFJJR0dF UiB0cmlnX3Rlc3RfdHJpZworICAgIEJFRk9SRSBJTlNFUlQgT04gdHJpZ190ZXN0X3RhYgorICAg IEZPUiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdfdGVzdF9mdW5jKCk7CitDUkVBVEUg RlVOQ1RJT04gY2hlY2tfdHJpZ2dlcl9leHBsYWluX2J1ZmZlcnMoKSBSRVRVUk5TIGJvb2xlYW4g QVMgJCQKK0RFQ0xBUkUKKyAgICBwbGFuX2pzb24ganNvbjsKKyAgICB0cmlnIGpzb247CitCRUdJ TgorICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMsIENPU1RTIE9GRiwgRk9S TUFUIEpTT04pCisgICAgICAgIElOU0VSVCBJTlRPIHRyaWdfdGVzdF90YWIgVkFMVUVTICgxKScg SU5UTyBwbGFuX2pzb247CisgICAgdHJpZyA6PSBwbGFuX2pzb24tPjAtPidUcmlnZ2VycyctPjA7 CisgICAgUkVUVVJOIENPQUxFU0NFKCh0cmlnLT4+J0NhbGxzJyk6OmludCwgMCkgPiAwOworRU5E OworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK1NFTEVDVCBjaGVja190cmlnZ2VyX2V4cGxhaW5fYnVm ZmVycygpIEFTIHRyaWdnZXJfYnVmZmVyc192aXNpYmxlOworIHRyaWdnZXJfYnVmZmVyc192aXNp YmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworRFJPUCBGVU5D VElPTiBjaGVja190cmlnZ2VyX2V4cGxhaW5fYnVmZmVyczsKK0RST1AgVFJJR0dFUiB0cmlnX3Rl c3RfdHJpZyBPTiB0cmlnX3Rlc3RfdGFiOworRFJPUCBGVU5DVElPTiB0cmlnX3Rlc3RfZnVuYzsK K0RST1AgVEFCTEUgdHJpZ190ZXN0X3RhYjsKK0RST1AgVEFCTEUgdHJpZ193b3JrX3RhYjsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvZXhwbGFpbi5zcWwKaW5kZXggZWJkYWI0MjYwNGIuLjlmMGU4NTI0NDk3IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWluLnNxbAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9leHBsYWluLnNxbApAQCAtMTg4LDMgKzE4OCwxOTEgQEAgc2VsZWN0IGV4cGxh aW5fZmlsdGVyKCdleHBsYWluIChhbmFseXplLGJ1ZmZlcnMgb2ZmLGNvc3RzIG9mZikgc2VsZWN0 IHN1bShuKSBvdmUKIC0tIFRlc3QgdHVwbGVzdG9yZSBzdG9yYWdlIHVzYWdlIGluIFdpbmRvdyBh Z2dyZWdhdGUgKG1lbW9yeSBhbmQgZGlzayBjYXNlLCBmaW5hbCByZXN1bHQgaXMgZGlzaykKIHNl bGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYW5hbHl6ZSxidWZmZXJzIG9mZixjb3N0cyBv ZmYpIHNlbGVjdCBzdW0obikgb3ZlcihwYXJ0aXRpb24gYnkgbSkgZnJvbSAoU0VMRUNUIG4gPCAz IGFzIG0sIG4gZnJvbSBnZW5lcmF0ZV9zZXJpZXMoMSwyNTAwKSBhKG4pKScpOwogcmVzZXQgd29y a19tZW07CisKKy0tIEVYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMpIHNob3VsZCByZXBvcnQgYnVm ZmVyIHVzYWdlIGZyb20gUEwvcGdTUUwKKy0tIEVYQ0VQVElPTiBibG9ja3MsIGV2ZW4gYWZ0ZXIg c3VidHJhbnNhY3Rpb24gcm9sbGJhY2suCitDUkVBVEUgVEVNUCBUQUJMRSBleHBsYWluX2V4Y190 YWIgKGEgaW50LCBiIGNoYXIoMjApKTsKK0lOU0VSVCBJTlRPIGV4cGxhaW5fZXhjX3RhYiBWQUxV RVMgKDAsICd6enonKTsKKworQ1JFQVRFIEZVTkNUSU9OIGV4cGxhaW5fZXhjX2Z1bmMoKSBSRVRV Uk5TIHZvaWQgQVMgJCQKK0RFQ0xBUkUKKyAgICB2IGludDsKK0JFR0lOCisgICAgV0lUSCBpbnMg QVMgKElOU0VSVCBJTlRPIGV4cGxhaW5fZXhjX3RhYiBWQUxVRVMgKDEsICdhYWEnKSBSRVRVUk5J TkcgYSkKKyAgICBTRUxFQ1QgYSAvIDAgSU5UTyB2IEZST00gaW5zOworRVhDRVBUSU9OIFdIRU4g ZGl2aXNpb25fYnlfemVybyBUSEVOCisgICAgTlVMTDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdz cWw7CisKK0NSRUFURSBGVU5DVElPTiBjaGVja19leHBsYWluX2V4Y2VwdGlvbl9idWZmZXJzKCkg UkVUVVJOUyBib29sZWFuIEFTICQkCitERUNMQVJFCisgICAgcGxhbl9qc29uIGpzb247CisgICAg bm9kZSBqc29uOworICAgIHRvdGFsX2J1ZmZlcnMgaW50OworQkVHSU4KKyAgICBFWEVDVVRFICdF WFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYsIEZPUk1BVCBKU09OKQorICAgICAg ICBTRUxFQ1QgZXhwbGFpbl9leGNfZnVuYygpJyBJTlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9 IHBsYW5fanNvbi0+MC0+J1BsYW4nOworICAgIHRvdGFsX2J1ZmZlcnMgOj0KKyAgICAgICAgQ09B TEVTQ0UoKG5vZGUtPj4nTG9jYWwgSGl0IEJsb2NrcycpOjppbnQsIDApICsKKyAgICAgICAgQ09B TEVTQ0UoKG5vZGUtPj4nTG9jYWwgUmVhZCBCbG9ja3MnKTo6aW50LCAwKTsKKyAgICBSRVRVUk4g dG90YWxfYnVmZmVycyA+IDA7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitTRUxFQ1Qg Y2hlY2tfZXhwbGFpbl9leGNlcHRpb25fYnVmZmVycygpIEFTIGV4Y2VwdGlvbl9idWZmZXJzX3Zp c2libGU7CisKKy0tIEFsc28gdGVzdCB3aXRoIG5lc3RlZCBFWFBMQUlOIEFOQUxZWkUgKHR3byBs ZXZlbHMgb2YgaW5zdHJ1bWVudGF0aW9uKQorQ1JFQVRFIEZVTkNUSU9OIGNoZWNrX2V4cGxhaW5f ZXhjZXB0aW9uX2J1ZmZlcnNfbmVzdGVkKCkgUkVUVVJOUyBib29sZWFuIEFTICQkCitERUNMQVJF CisgICAgcGxhbl9qc29uIGpzb247CisgICAgbm9kZSBqc29uOworICAgIHRvdGFsX2J1ZmZlcnMg aW50OworQkVHSU4KKyAgICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTLCBDT1NU UyBPRkYsIEZPUk1BVCBKU09OKQorICAgICAgICBTRUxFQ1QgY2hlY2tfZXhwbGFpbl9leGNlcHRp b25fYnVmZmVycygpJyBJTlRPIHBsYW5fanNvbjsKKyAgICBub2RlIDo9IHBsYW5fanNvbi0+MC0+ J1BsYW4nOworICAgIHRvdGFsX2J1ZmZlcnMgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4n TG9jYWwgSGl0IEJsb2NrcycpOjppbnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4n TG9jYWwgUmVhZCBCbG9ja3MnKTo6aW50LCAwKTsKKyAgICBSRVRVUk4gdG90YWxfYnVmZmVycyA+ IDA7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitTRUxFQ1QgY2hlY2tfZXhwbGFpbl9l eGNlcHRpb25fYnVmZmVyc19uZXN0ZWQoKSBBUyBleGNlcHRpb25fYnVmZmVyc19uZXN0ZWRfdmlz aWJsZTsKKworRFJPUCBGVU5DVElPTiBjaGVja19leHBsYWluX2V4Y2VwdGlvbl9idWZmZXJzX25l c3RlZDsKK0RST1AgRlVOQ1RJT04gY2hlY2tfZXhwbGFpbl9leGNlcHRpb25fYnVmZmVyczsKK0RS T1AgRlVOQ1RJT04gZXhwbGFpbl9leGNfZnVuYzsKK0RST1AgVEFCTEUgZXhwbGFpbl9leGNfdGFi OworCistLSBDdXJzb3IgaW5zdHJ1bWVudGF0aW9uIHRlc3QuCistLSBWZXJpZnkgdGhhdCBidWZm ZXIgdXNhZ2UgaXMgY29ycmVjdGx5IHRyYWNrZWQgdGhyb3VnaCBjdXJzb3IgZXhlY3V0aW9uIHBh dGhzLgorLS0gTm9uLXNjcm9sbGFibGUgY3Vyc29ycyBleGVyY2lzZSBFeGVjU2h1dGRvd25Ob2Rl IGFmdGVyIGVhY2ggRXhlY3V0b3JSdW4KKy0tIChFWEVDX0ZMQUdfQkFDS1dBUkQgaXMgbm90IHNl dCksIHdoaWxlIHNjcm9sbGFibGUgY3Vyc29ycyBvbmx5IHNodXQgZG93bgorLS0gbm9kZXMgaW4g RXhlY3V0b3JGaW5pc2guIEluIGJvdGggY2FzZXMsIGJ1ZmZlciB1c2FnZSBmcm9tIHRoZSBpbm5l ciBjdXJzb3IKKy0tIHNjYW4gc2hvdWxkIGJlIGNvcnJlY3RseSByZXBvcnRlZC4KKworQ1JFQVRF IFRFTVAgVEFCTEUgY3Vyc29yX2J1Zl90ZXN0IEFTIFNFTEVDVCAqIEZST00gdGVuazE7CisKK0NS RUFURSBGVU5DVElPTiBjdXJzb3Jfbm9zY3JvbGxfc2NhbigpIFJFVFVSTlMgYmlnaW50IEFTICQk CitERUNMQVJFCisgICAgY3VyIE5PIFNDUk9MTCBDVVJTT1IgRk9SIFNFTEVDVCAqIEZST00gY3Vy c29yX2J1Zl90ZXN0OworICAgIHJlYyBSRUNPUkQ7CisgICAgY250IGJpZ2ludCA6PSAwOworQkVH SU4KKyAgICBPUEVOIGN1cjsKKyAgICBMT09QCisgICAgICAgIEZFVENIIE5FWFQgRlJPTSBjdXIg SU5UTyByZWM7CisgICAgICAgIEVYSVQgV0hFTiBOT1QgRk9VTkQ7CisgICAgICAgIGNudCA6PSBj bnQgKyAxOworICAgIEVORCBMT09QOworICAgIENMT1NFIGN1cjsKKyAgICBSRVRVUk4gY250Owor RU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworQ1JFQVRFIEZVTkNUSU9OIGN1cnNvcl9zY3Jv bGxfc2NhbigpIFJFVFVSTlMgYmlnaW50IEFTICQkCitERUNMQVJFCisgICAgY3VyIFNDUk9MTCBD VVJTT1IgRk9SIFNFTEVDVCAqIEZST00gY3Vyc29yX2J1Zl90ZXN0OworICAgIHJlYyBSRUNPUkQ7 CisgICAgY250IGJpZ2ludCA6PSAwOworQkVHSU4KKyAgICBPUEVOIGN1cjsKKyAgICBMT09QCisg ICAgICAgIEZFVENIIE5FWFQgRlJPTSBjdXIgSU5UTyByZWM7CisgICAgICAgIEVYSVQgV0hFTiBO T1QgRk9VTkQ7CisgICAgICAgIGNudCA6PSBjbnQgKyAxOworICAgIEVORCBMT09QOworICAgIENM T1NFIGN1cjsKKyAgICBSRVRVUk4gY250OworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKwor Q1JFQVRFIEZVTkNUSU9OIGNoZWNrX2N1cnNvcl9leHBsYWluX2J1ZmZlcnMoKSBSRVRVUk5TIFRB QkxFKG5vc2Nyb2xsX29rIGJvb2xlYW4sIHNjcm9sbF9vayBib29sZWFuKSBBUyAkJAorREVDTEFS RQorICAgIHBsYW5fanNvbiBqc29uOworICAgIG5vZGUganNvbjsKKyAgICBkaXJlY3RfYnVmIGlu dDsKKyAgICBub3Njcm9sbF9idWYgaW50OworICAgIHNjcm9sbF9idWYgaW50OworQkVHSU4KKyAg ICAtLSBEaXJlY3Qgc2NhbjogZ2V0IGxlYWYgU2VxIFNjYW4gbm9kZSBidWZmZXJzIGFzIGJhc2Vs aW5lCisgICAgRVhFQ1VURSAnRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGLCBG T1JNQVQgSlNPTikKKyAgICAgICAgU0VMRUNUICogRlJPTSBjdXJzb3JfYnVmX3Rlc3QnIElOVE8g cGxhbl9qc29uOworICAgIG5vZGUgOj0gcGxhbl9qc29uLT4wLT4nUGxhbic7CisgICAgV0hJTEUg bm9kZS0+J1BsYW5zJyBJUyBOT1QgTlVMTCBMT09QCisgICAgICAgIG5vZGUgOj0gbm9kZS0+J1Bs YW5zJy0+MDsKKyAgICBFTkQgTE9PUDsKKyAgICBkaXJlY3RfYnVmIDo9CisgICAgICAgIENPQUxF U0NFKChub2RlLT4+J0xvY2FsIEhpdCBCbG9ja3MnKTo6aW50LCAwKSArCisgICAgICAgIENPQUxF U0NFKChub2RlLT4+J0xvY2FsIFJlYWQgQmxvY2tzJyk6OmludCwgMCk7CisKKyAgICAtLSBOb24t c2Nyb2xsYWJsZSBjdXJzb3IgcGF0aDogRXhlY1NodXRkb3duTm9kZSBydW5zIGFmdGVyIGVhY2gg RXhlY3V0b3JSdW4KKyAgICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTLCBDT1NU UyBPRkYsIEZPUk1BVCBKU09OKQorICAgICAgICBTRUxFQ1QgY3Vyc29yX25vc2Nyb2xsX3NjYW4o KScgSU5UTyBwbGFuX2pzb247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAtPidQbGFuJzsKKyAg ICBub3Njcm9sbF9idWYgOj0KKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgSGl0IEJs b2NrcycpOjppbnQsIDApICsKKyAgICAgICAgQ09BTEVTQ0UoKG5vZGUtPj4nTG9jYWwgUmVhZCBC bG9ja3MnKTo6aW50LCAwKTsKKworICAgIC0tIFNjcm9sbGFibGUgY3Vyc29yIHBhdGg6IEV4ZWNT aHV0ZG93bk5vZGUgaXMgc2tpcHBlZAorICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJV RkZFUlMsIENPU1RTIE9GRiwgRk9STUFUIEpTT04pCisgICAgICAgIFNFTEVDVCBjdXJzb3Jfc2Ny b2xsX3NjYW4oKScgSU5UTyBwbGFuX2pzb247CisgICAgbm9kZSA6PSBwbGFuX2pzb24tPjAtPidQ bGFuJzsKKyAgICBzY3JvbGxfYnVmIDo9CisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xvY2Fs IEhpdCBCbG9ja3MnKTo6aW50LCAwKSArCisgICAgICAgIENPQUxFU0NFKChub2RlLT4+J0xvY2Fs IFJlYWQgQmxvY2tzJyk6OmludCwgMCk7CisKKyAgICAtLSBCb3RoIGN1cnNvciBwYXRocyBzaG91 bGQgcmVwb3J0IGJ1ZmZlciBjb3VudHMgYWJvdXQgYXMgaGlnaCBhcworICAgIC0tIHRoZSBkaXJl Y3Qgc2NhbiAoc2FtZSBkYXRhIHBsdXMgbWlub3IgY2F0YWxvZyBvdmVyaGVhZCksIGFuZCBub3QK KyAgICAtLSBkb3VibGUtY291bnRlZCAoPCAyeCB0aGUgZGlyZWN0IHNjYW4pCisgICAgUkVUVVJO IFFVRVJZIFNFTEVDVAorICAgICAgICAobm9zY3JvbGxfYnVmID49IGRpcmVjdF9idWYgKiAwLjUg QU5EIG5vc2Nyb2xsX2J1ZiA8IGRpcmVjdF9idWYgKiAyKSwKKyAgICAgICAgKHNjcm9sbF9idWYg Pj0gZGlyZWN0X2J1ZiAqIDAuNSBBTkQgc2Nyb2xsX2J1ZiA8IGRpcmVjdF9idWYgKiAyKTsKK0VO RDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK1NFTEVDVCAqIEZST00gY2hlY2tfY3Vyc29yX2V4 cGxhaW5fYnVmZmVycygpOworCitEUk9QIEZVTkNUSU9OIGNoZWNrX2N1cnNvcl9leHBsYWluX2J1 ZmZlcnM7CitEUk9QIEZVTkNUSU9OIGN1cnNvcl9ub3Njcm9sbF9zY2FuOworRFJPUCBGVU5DVElP TiBjdXJzb3Jfc2Nyb2xsX3NjYW47CitEUk9QIFRBQkxFIGN1cnNvcl9idWZfdGVzdDsKKworLS0g VGVzdCB0cmlnZ2VyIGluc3RydW1lbnRhdGlvbi4KK0NSRUFURSBURU1QIFRBQkxFIHRyaWdfdGVz dF90YWIgKGEgaW50KTsKK0NSRUFURSBURU1QIFRBQkxFIHRyaWdfd29ya190YWIgKGEgaW50KTsK K0lOU0VSVCBJTlRPIHRyaWdfd29ya190YWIgVkFMVUVTICgxKTsKKworQ1JFQVRFIEZVTkNUSU9O IHRyaWdfdGVzdF9mdW5jKCkgUkVUVVJOUyB0cmlnZ2VyIEFTICQkCitCRUdJTgorICAgIFBFUkZP Uk0gKiBGUk9NIHRyaWdfd29ya190YWI7CisgICAgUkVUVVJOIE5FVzsKK0VORDsKKyQkIExBTkdV QUdFIHBscGdzcWw7CisKK0NSRUFURSBUUklHR0VSIHRyaWdfdGVzdF90cmlnCisgICAgQkVGT1JF IElOU0VSVCBPTiB0cmlnX3Rlc3RfdGFiCisgICAgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJ T04gdHJpZ190ZXN0X2Z1bmMoKTsKKworQ1JFQVRFIEZVTkNUSU9OIGNoZWNrX3RyaWdnZXJfZXhw bGFpbl9idWZmZXJzKCkgUkVUVVJOUyBib29sZWFuIEFTICQkCitERUNMQVJFCisgICAgcGxhbl9q c29uIGpzb247CisgICAgdHJpZyBqc29uOworQkVHSU4KKyAgICBFWEVDVVRFICdFWFBMQUlOIChB TkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYsIEZPUk1BVCBKU09OKQorICAgICAgICBJTlNFUlQg SU5UTyB0cmlnX3Rlc3RfdGFiIFZBTFVFUyAoMSknIElOVE8gcGxhbl9qc29uOworICAgIHRyaWcg Oj0gcGxhbl9qc29uLT4wLT4nVHJpZ2dlcnMnLT4wOworICAgIFJFVFVSTiBDT0FMRVNDRSgodHJp Zy0+PidDYWxscycpOjppbnQsIDApID4gMDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisK K1NFTEVDVCBjaGVja190cmlnZ2VyX2V4cGxhaW5fYnVmZmVycygpIEFTIHRyaWdnZXJfYnVmZmVy c192aXNpYmxlOworCitEUk9QIEZVTkNUSU9OIGNoZWNrX3RyaWdnZXJfZXhwbGFpbl9idWZmZXJz OworRFJPUCBUUklHR0VSIHRyaWdfdGVzdF90cmlnIE9OIHRyaWdfdGVzdF90YWI7CitEUk9QIEZV TkNUSU9OIHRyaWdfdGVzdF9mdW5jOworRFJPUCBUQUJMRSB0cmlnX3Rlc3RfdGFiOworRFJPUCBU QUJMRSB0cmlnX3dvcmtfdGFiOwotLSAKMi40Ny4xCgo= --00000000000045175b064ec7b858 Content-Type: application/octet-stream; name="v15-0004-instrumentation-Allocate-queryDesc-totaltime-in-.patch" Content-Disposition: attachment; filename="v15-0004-instrumentation-Allocate-queryDesc-totaltime-in-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnmzxbq54 RnJvbSBkNDQ0ZGNkZDQ4ZjU3MTJjZmNhZTdlN2Y0Y2M4MDU1ZjFjMzNmOTAyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBU dWUsIDkgU2VwIDIwMjUgMDI6MTY6NTkgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxNSA0LzldIGlu c3RydW1lbnRhdGlvbjogQWxsb2NhdGUgcXVlcnlEZXNjLT50b3RhbHRpbWUgaW4KIEV4ZWN1dG9y U3RhcnQgaWYgbmVlZGVkCgpUaGlzIGludHJvZHVjZXMgYSBuZXcgZmllbGQsIHF1ZXJ5RGVzYy0+ dG90YWx0aW1lX29wdGlvbnMsIHRoYXQgZXh0ZW5zaW9ucwpjYW4gdXNlIHRvIGluZGljYXRlIHdo ZXRoZXIgdGhleSBuZWVkIHF1ZXJ5RGVzYy0+dG90YWx0aW1lIHBvcHVsYXRlZCwKYW5kIHdpdGgg d2hpY2ggaW5zdHJ1bWVudGF0aW9uIG9wdGlvbnMuIEV4dGVuc2lvbnMgc2hvdWxkIHRha2UgY2Fy ZSB0bwpvbmx5IGFkZCBvcHRpb25zIHRoZXkgbmVlZCwgaW5zdGVhZCBvZiByZXBsYWNpbmcgdGhl IG9wdGlvbnMgb2Ygb3RoZXJzLgoKVGhpcyByZXBsYWNlcyB0aGUgcHJhY3RpY2Ugb2YgZXh0ZW5z aW9ucyBhbGxvY2F0aW5nIHF1ZXJ5RGVzYy0+dG90YWx0aW1lCnRoZW1zZWx2ZXMsIHdoaWNoIHJl cXVpcmVkIHRoZW0gdG8gYWx3YXlzIHVzZSBJTlNUUlVNRU5UX0FMTCBmb3IgdGhlCm9wdGlvbnMg YXJndW1lbnQuIElmIHRoZXkgd291bGRuJ3QgaGF2ZSwgYW5vdGhlciBleHRlbnNpb24gY291bGQg c2lsZW50bHkKYmUgaW1wYWN0ZWQgYnkgaXQuIEl0IGFsc28gdW5uZWNlc3NhcmlseSBtYWRlIGV4 dGVuc2lvbnMgaG9va3Mgd29ycnkKYWJvdXQgYmVpbmcgc3VyZSB0byBhbGxvY2F0ZSBpbiB0aGUg cGVyLXF1ZXJ5IG1lbW9yeSBjb250ZXh0LgoKQWRqdXN0IHBnX3N0YXRfc3RhdGVtZW50cyBhbmQg YXV0b19leHBsYWluIHRvIG1hdGNoLCBhbmQgbG93ZXIgdGhlCnJlcXVlc3RlZCBpbnN0cnVtZW50 YXRpb24gbGV2ZWwgZm9yIGF1dG9fZXhwbGFpbiB0byBJTlNUUlVNRU5UX1RJTUVSLApzaW5jZSB0 aGUgc3VtbWFyeSBpbnN0cnVtZW50YXRpb24gaXQgbmVlZHMgaXMgb25seSBydW50aW1lLgoKQXV0 aG9yOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpSZXZpZXdlZC1ieToKRGlzY3Vzc2lv bjoKLS0tCiBjb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYyAgICAgICAgICAgfCAy MCArKystLS0tLS0tLS0tLS0KIC4uLi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1l bnRzLmMgICB8IDI1ICsrKysrKy0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMgICAgICAgICAgICAgICB8ICA5ICsrKysrKysKIHNyYy9iYWNrZW5kL3Rjb3AvcHF1 ZXJ5LmMgICAgICAgICAgICAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWNkZXNjLmggICAgICAgICAgICAgICB8ICA0ICsrLQogNSBmaWxlcyBjaGFuZ2VkLCAyMyBpbnNl cnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL2F1dG9fZXhw bGFpbi9hdXRvX2V4cGxhaW4uYyBiL2NvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5j CmluZGV4IDM5YmYyNTQzYjcwLi4yZjg4MjAyNmI1MCAxMDA2NDQKLS0tIGEvY29udHJpYi9hdXRv X2V4cGxhaW4vYXV0b19leHBsYWluLmMKKysrIGIvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19l eHBsYWluLmMKQEAgLTI4NCw2ICsyODQsOSBAQCBleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlE ZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAKIAlpZiAoYXV0b19leHBsYWluX2VuYWJsZWQo KSkKIAl7CisJCS8qIFdlJ3JlIGFsd2F5cyBpbnRlcmVzdGVkIGluIHJ1bnRpbWUgKi8KKwkJcXVl cnlEZXNjLT50b3RhbHRpbWVfb3B0aW9ucyB8PSBJTlNUUlVNRU5UX1RJTUVSOworCiAJCS8qIEVu YWJsZSBwZXItbm9kZSBpbnN0cnVtZW50YXRpb24gaWZmIGxvZ19hbmFseXplIGlzIHJlcXVpcmVk LiAqLwogCQlpZiAoYXV0b19leHBsYWluX2xvZ19hbmFseXplICYmIChlZmxhZ3MgJiBFWEVDX0ZM QUdfRVhQTEFJTl9PTkxZKSA9PSAwKQogCQl7CkBAIC0zMDIsMjMgKzMwNSw2IEBAIGV4cGxhaW5f RXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJcHJldl9F eGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKIAllbHNlCiAJCXN0YW5kYXJkX0V4ZWN1 dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwotCi0JaWYgKGF1dG9fZXhwbGFpbl9lbmFibGVk KCkpCi0JewotCQkvKgotCQkgKiBTZXQgdXAgdG8gdHJhY2sgdG90YWwgZWxhcHNlZCB0aW1lIGlu IEV4ZWN1dG9yUnVuLiAgTWFrZSBzdXJlIHRoZQotCQkgKiBzcGFjZSBpcyBhbGxvY2F0ZWQgaW4g dGhlIHBlci1xdWVyeSBjb250ZXh0IHNvIGl0IHdpbGwgZ28gYXdheSBhdAotCQkgKiBFeGVjdXRv ckVuZC4KLQkJICovCi0JCWlmIChxdWVyeURlc2MtPnRvdGFsdGltZSA9PSBOVUxMKQotCQl7Ci0J CQlNZW1vcnlDb250ZXh0IG9sZGN4dDsKLQotCQkJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19xdWVyeV9jeHQpOwotCQkJcXVlcnlEZXNjLT50b3Rh bHRpbWUgPSBJbnN0ckFsbG9jKElOU1RSVU1FTlRfQUxMKTsKLQkJCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRjeHQpOwotCQl9Ci0JfQogfQogCiAvKgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19z dGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMgYi9jb250cmliL3BnX3N0YXRfc3Rh dGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwppbmRleCBiNjg2MzQ3OWU5Zi4uMzQ2YWRiNTU5 OWYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVt ZW50cy5jCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50 cy5jCkBAIC05ODMsMTEgKzk4Myw2IEBAIHBnc3NfcGxhbm5lcihRdWVyeSAqcGFyc2UsCiBzdGF0 aWMgdm9pZAogcGdzc19FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZs YWdzKQogewotCWlmIChwcmV2X0V4ZWN1dG9yU3RhcnQpCi0JCXByZXZfRXhlY3V0b3JTdGFydChx dWVyeURlc2MsIGVmbGFncyk7Ci0JZWxzZQotCQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5 RGVzYywgZWZsYWdzKTsKLQogCS8qCiAJICogSWYgcXVlcnkgaGFzIHF1ZXJ5SWQgemVybywgZG9u J3QgdHJhY2sgaXQuICBUaGlzIHByZXZlbnRzIGRvdWJsZQogCSAqIGNvdW50aW5nIG9mIG9wdGlt aXphYmxlIHN0YXRlbWVudHMgdGhhdCBhcmUgZGlyZWN0bHkgY29udGFpbmVkIGluCkBAIC05OTUs MjAgKzk5MCwxNCBAQCBwZ3NzX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGlu dCBlZmxhZ3MpCiAJICovCiAJaWYgKHBnc3NfZW5hYmxlZChuZXN0aW5nX2xldmVsKSAmJiBxdWVy eURlc2MtPnBsYW5uZWRzdG10LT5xdWVyeUlkICE9IElOVDY0Q09OU1QoMCkpCiAJewotCQkvKgot CQkgKiBTZXQgdXAgdG8gdHJhY2sgdG90YWwgZWxhcHNlZCB0aW1lIGluIEV4ZWN1dG9yUnVuLiAg TWFrZSBzdXJlIHRoZQotCQkgKiBzcGFjZSBpcyBhbGxvY2F0ZWQgaW4gdGhlIHBlci1xdWVyeSBj b250ZXh0IHNvIGl0IHdpbGwgZ28gYXdheSBhdAotCQkgKiBFeGVjdXRvckVuZC4KLQkJICovCi0J CWlmIChxdWVyeURlc2MtPnRvdGFsdGltZSA9PSBOVUxMKQotCQl7Ci0JCQlNZW1vcnlDb250ZXh0 IG9sZGN4dDsKLQotCQkJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHF1ZXJ5RGVzYy0+ ZXN0YXRlLT5lc19xdWVyeV9jeHQpOwotCQkJcXVlcnlEZXNjLT50b3RhbHRpbWUgPSBJbnN0ckFs bG9jKElOU1RSVU1FTlRfQUxMKTsKLQkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwot CQl9CisJCS8qIFJlcXVlc3QgYWxsIHN1bW1hcnkgaW5zdHJ1bWVudGF0aW9uLCBpLmUuIHRpbWlu ZywgYnVmZmVycyBhbmQgV0FMICovCisJCXF1ZXJ5RGVzYy0+dG90YWx0aW1lX29wdGlvbnMgfD0g SU5TVFJVTUVOVF9BTEw7CiAJfQorCisJaWYgKHByZXZfRXhlY3V0b3JTdGFydCkKKwkJcHJldl9F eGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwllbHNlCisJCXN0YW5kYXJkX0V4ZWN1 dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWlu LmMKaW5kZXggYjBmNjM2YmY4YjYuLjdkNzRmNmRhNDAyIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWlu LmMKQEAgLTI1MCw2ICsyNTAsMTUgQEAgc3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2Mg KnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAllc3RhdGUtPmVzX2luc3RydW1lbnQgPSBxdWVyeURl c2MtPmluc3RydW1lbnRfb3B0aW9uczsKIAllc3RhdGUtPmVzX2ppdF9mbGFncyA9IHF1ZXJ5RGVz Yy0+cGxhbm5lZHN0bXQtPmppdEZsYWdzOwogCisJLyoKKwkgKiBTZXQgdXAgcXVlcnktbGV2ZWwg aW5zdHJ1bWVudGF0aW9uIGlmIGV4dGVuc2lvbnMgaGF2ZSByZXF1ZXN0ZWQgaXQgdmlhCisJICog dG90YWx0aW1lX29wdGlvbnMuIEVuc3VyZSBhbiBleHRlbnNpb24gaGFzIG5vdCBhbGxvY2F0ZWQg dG90YWx0aW1lCisJICogaXRzZWxmLgorCSAqLworCUFzc2VydChxdWVyeURlc2MtPnRvdGFsdGlt ZSA9PSBOVUxMKTsKKwlpZiAocXVlcnlEZXNjLT50b3RhbHRpbWVfb3B0aW9ucykKKwkJcXVlcnlE ZXNjLT50b3RhbHRpbWUgPSBJbnN0clF1ZXJ5QWxsb2MocXVlcnlEZXNjLT50b3RhbHRpbWVfb3B0 aW9ucyk7CisKIAkvKgogCSAqIFNldCB1cCBhbiBBRlRFUi10cmlnZ2VyIHN0YXRlbWVudCBjb250 ZXh0LCB1bmxlc3MgdG9sZCBub3QgdG8sIG9yCiAJICogdW5sZXNzIGl0J3MgRVhQTEFJTi1vbmx5 IG1vZGUgKHdoZW4gRXhlY3V0b3JGaW5pc2ggd29uJ3QgYmUgY2FsbGVkKS4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCmlu ZGV4IGQ4ZmM3NWQwYmI5Li5lMjdmMjZlY2Q4MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNv cC9wcXVlcnkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCkBAIC04Niw2ICs4Niw3 IEBAIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCiAJcWQtPnBhcmFt cyA9IHBhcmFtczsJCS8qIHBhcmFtZXRlciB2YWx1ZXMgcGFzc2VkIGludG8gcXVlcnkgKi8KIAlx ZC0+cXVlcnlFbnYgPSBxdWVyeUVudjsKIAlxZC0+aW5zdHJ1bWVudF9vcHRpb25zID0gaW5zdHJ1 bWVudF9vcHRpb25zOwkvKiBpbnN0cnVtZW50YXRpb24gd2FudGVkPyAqLworCXFkLT50b3RhbHRp bWVfb3B0aW9ucyA9IDA7CiAKIAkvKiBudWxsIHRoZXNlIGZpZWxkcyB1bnRpbCBzZXQgYnkgRXhl Y3V0b3JTdGFydCAqLwogCXFkLT50dXBEZXNjID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5o CmluZGV4IGQzYTU3MjQyODQ0Li4wZDc2YTFjMTczZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY2Rlc2MuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5o CkBAIC00Miw2ICs0Miw4IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCVBhcmFtTGlzdElu Zm8gcGFyYW1zOwkJLyogcGFyYW0gdmFsdWVzIGJlaW5nIHBhc3NlZCBpbiAqLwogCVF1ZXJ5RW52 aXJvbm1lbnQgKnF1ZXJ5RW52OyAvKiBxdWVyeSBlbnZpcm9ubWVudCBwYXNzZWQgaW4gKi8KIAlp bnQJCQlpbnN0cnVtZW50X29wdGlvbnM7IC8qIE9SIG9mIEluc3RydW1lbnRPcHRpb24gZmxhZ3Mg Ki8KKwlpbnQJCQl0b3RhbHRpbWVfb3B0aW9uczsJLyogT1Igb2YgSW5zdHJ1bWVudE9wdGlvbiBm bGFncyBmb3IKKwkJCQkJCQkJCSAqIHRvdGFsdGltZSAqLwogCiAJLyogVGhlc2UgZmllbGRzIGFy ZSBzZXQgYnkgRXhlY3V0b3JTdGFydCAqLwogCVR1cGxlRGVzYwl0dXBEZXNjOwkJLyogZGVzY3Jp cHRvciBmb3IgcmVzdWx0IHR1cGxlcyAqLwpAQCAtNTEsNyArNTMsNyBAQCB0eXBlZGVmIHN0cnVj dCBRdWVyeURlc2MKIAkvKiBUaGlzIGZpZWxkIGlzIHNldCBieSBFeGVjdXRlUGxhbiAqLwogCWJv b2wJCWFscmVhZHlfZXhlY3V0ZWQ7CS8qIHRydWUgaWYgcHJldmlvdXNseSBleGVjdXRlZCAqLwog Ci0JLyogVGhpcyBpcyBhbHdheXMgc2V0IE5VTEwgYnkgdGhlIGNvcmUgc3lzdGVtLCBidXQgcGx1 Z2lucyBjYW4gY2hhbmdlIGl0ICovCisJLyogVGhpcyBmaWVsZCBpcyBhbGxvY2F0ZWQgYnkgRXhl Y3V0b3JSdW4gaWYgbmVlZGVkICovCiAJc3RydWN0IEluc3RydW1lbnRhdGlvbiAqdG90YWx0aW1l OwkvKiB0b3RhbCB0aW1lIHNwZW50IGluIEV4ZWN1dG9yUnVuICovCiB9IFF1ZXJ5RGVzYzsKIAot LSAKMi40Ny4xCgo= --00000000000045175b064ec7b858 Content-Type: application/octet-stream; name="v15-0002-instrumentation-Replace-direct-changes-of-pgBuff.patch" Content-Disposition: attachment; filename="v15-0002-instrumentation-Replace-direct-changes-of-pgBuff.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnmzxbq12 RnJvbSAzOGQ5MmI1MzJkMDBkMDc4YjBiODMzM2IxNzQxMTU4NWE4MWI4Mjg5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBU aHUsIDI2IE1hciAyMDI2IDIzOjMxOjA0IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MTUgMi85XSBp bnN0cnVtZW50YXRpb246IFJlcGxhY2UgZGlyZWN0IGNoYW5nZXMgb2YKIHBnQnVmZmVyVXNhZ2Uv cGdXYWxVc2FnZSB3aXRoIElOU1RSXyogbWFjcm9zCgpUaGlzIGVuY2Fwc3VsYXRlcyB0aGUgb3du ZXJzaGlwIG9mIHRoZXNlIGdsb2JhbHMgYmV0dGVyLCBhbmQgd2lsbCBhbGxvdwphIHN1YnNlcXVl bnQgcmVmYWN0b3JpbmcuCgpBdXRob3I6IEx1a2FzIEZpdHRsIDxsdWthc0BmaXR0bC5jb20+ClJl dmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJldmlld2VkLWJ5 OiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEuY29tPgpEaXNjdXNzaW9uOiBo dHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvQ0FQNTNQa3paM1VvdG5S cnJuWFdBdiUzREY0YXZScTlNUTh6VSUyQmJ4b045dHBvdkV1NmZHUSU0MG1haWwuZ21haWwuY29t I2ZjNzE0MGU4YWYyMWUwN2E5MGEwOWQ3ZTc2YjMwMGM0Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jICAgICAgfCAxMCArKysrKy0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdl L2J1ZmZlci9idWZtZ3IuYyAgICB8IDIwICsrKysrKysrKystLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9zdG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jICB8ICA2ICsrKy0tLQogc3JjL2JhY2tlbmQvc3Rv cmFnZS9maWxlL2J1ZmZpbGUuYyAgICAgfCAgOCArKysrLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvcGdzdGF0X2lvLmMgfCAgOCArKysrLS0tLQogc3JjL2luY2x1ZGUvZXhlY3V0b3Iv aW5zdHJ1bWVudC5oICAgICAgfCAxOSArKysrKysrKysrKysrKysrKysrCiA2IGZpbGVzIGNoYW5n ZWQsIDQ1IGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2cuYwppbmRleCBiODJhZjlhODVjMC4uNDcwMTEwZjY3NzQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9nLmMKQEAgLTExMTUsMTAgKzExMTUsMTAgQEAgWExvZ0luc2VydFJlY29yZChYTG9n UmVjRGF0YSAqcmRhdGEsCiAJLyogUmVwb3J0IFdBTCB0cmFmZmljIHRvIHRoZSBpbnN0cnVtZW50 YXRpb24uICovCiAJaWYgKGluc2VydGVkKQogCXsKLQkJcGdXYWxVc2FnZS53YWxfYnl0ZXMgKz0g cmVjaGRyLT54bF90b3RfbGVuOwotCQlwZ1dhbFVzYWdlLndhbF9yZWNvcmRzKys7Ci0JCXBnV2Fs VXNhZ2Uud2FsX2ZwaSArPSBudW1fZnBpOwotCQlwZ1dhbFVzYWdlLndhbF9mcGlfYnl0ZXMgKz0g ZnBpX2J5dGVzOworCQlJTlNUUl9XQUxVU0FHRV9BREQod2FsX2J5dGVzLCByZWNoZHItPnhsX3Rv dF9sZW4pOworCQlJTlNUUl9XQUxVU0FHRV9JTkNSKHdhbF9yZWNvcmRzKTsKKwkJSU5TVFJfV0FM VVNBR0VfQUREKHdhbF9mcGksIG51bV9mcGkpOworCQlJTlNUUl9XQUxVU0FHRV9BREQod2FsX2Zw aV9ieXRlcywgZnBpX2J5dGVzKTsKIAogCQkvKiBSZXF1aXJlZCBmb3IgdGhlIGZsdXNoIG9mIHBl bmRpbmcgc3RhdHMgV0FMIGRhdGEgKi8KIAkJcGdzdGF0X3JlcG9ydF9maXhlZCA9IHRydWU7CkBA IC0yMDk3LDcgKzIwOTcsNyBAQCBBZHZhbmNlWExJbnNlcnRCdWZmZXIoWExvZ1JlY1B0ciB1cHRv LCBUaW1lTGluZUlEIHRsaSwgYm9vbCBvcHBvcnR1bmlzdGljKQogCQkJCQlXcml0ZVJxc3QuRmx1 c2ggPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAkJCQkJWExvZ1dyaXRlKFdyaXRlUnFzdCwgdGxpLCBm YWxzZSk7CiAJCQkJCUxXTG9ja1JlbGVhc2UoV0FMV3JpdGVMb2NrKTsKLQkJCQkJcGdXYWxVc2Fn ZS53YWxfYnVmZmVyc19mdWxsKys7CisJCQkJCUlOU1RSX1dBTFVTQUdFX0lOQ1Iod2FsX2J1ZmZl cnNfZnVsbCk7CiAJCQkJCVRSQUNFX1BPU1RHUkVTUUxfV0FMX0JVRkZFUl9XUklURV9ESVJUWV9E T05FKCk7CiAKIAkJCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVy L2J1Zm1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKaW5kZXggM2Nj MGIwYmRkOTIuLjNlMWMzOTE2MGRiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1 ZmZlci9idWZtZ3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwpA QCAtODQwLDcgKzg0MCw3IEBAIFJlYWRSZWNlbnRCdWZmZXIoUmVsRmlsZUxvY2F0b3IgcmxvY2F0 b3IsIEZvcmtOdW1iZXIgZm9ya051bSwgQmxvY2tOdW1iZXIgYmxvY2tOCiAJCXsKIAkJCVBpbkxv Y2FsQnVmZmVyKGJ1ZkhkciwgdHJ1ZSk7CiAKLQkJCXBnQnVmZmVyVXNhZ2UubG9jYWxfYmxrc19o aXQrKzsKKwkJCUlOU1RSX0JVRlVTQUdFX0lOQ1IobG9jYWxfYmxrc19oaXQpOwogCiAJCQlyZXR1 cm4gdHJ1ZTsKIAkJfQpAQCAtODYxLDcgKzg2MSw3IEBAIFJlYWRSZWNlbnRCdWZmZXIoUmVsRmls ZUxvY2F0b3IgcmxvY2F0b3IsIEZvcmtOdW1iZXIgZm9ya051bSwgQmxvY2tOdW1iZXIgYmxvY2tO CiAJCXsKIAkJCWlmIChCdWZmZXJUYWdzRXF1YWwoJnRhZywgJmJ1Zkhkci0+dGFnKSkKIAkJCXsK LQkJCQlwZ0J1ZmZlclVzYWdlLnNoYXJlZF9ibGtzX2hpdCsrOworCQkJCUlOU1RSX0JVRlVTQUdF X0lOQ1Ioc2hhcmVkX2Jsa3NfaGl0KTsKIAkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCVVucGlu QnVmZmVyKGJ1Zkhkcik7CkBAIC0xNjg0LDkgKzE2ODQsOSBAQCBUcmFja0J1ZmZlckhpdChJT09i amVjdCBpb19vYmplY3QsIElPQ29udGV4dCBpb19jb250ZXh0LAogCQkJCQkJCQkJICB0cnVlKTsK IAogCWlmIChwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QKQotCQlwZ0J1ZmZlclVz YWdlLmxvY2FsX2Jsa3NfaGl0ICs9IDE7CisJCUlOU1RSX0JVRlVTQUdFX0lOQ1IobG9jYWxfYmxr c19oaXQpOwogCWVsc2UKLQkJcGdCdWZmZXJVc2FnZS5zaGFyZWRfYmxrc19oaXQgKz0gMTsKKwkJ SU5TVFJfQlVGVVNBR0VfSU5DUihzaGFyZWRfYmxrc19oaXQpOwogCiAJcGdzdGF0X2NvdW50X2lv X29wKGlvX29iamVjdCwgaW9fY29udGV4dCwgSU9PUF9ISVQsIDEsIDApOwogCkBAIC0yMTQ4LDkg KzIxNDgsOSBAQCBBc3luY1JlYWRCdWZmZXJzKFJlYWRCdWZmZXJzT3BlcmF0aW9uICpvcGVyYXRp b24sIGludCAqbmJsb2Nrc19wcm9ncmVzcykKIAkJCQkJCQlpb19zdGFydCwgMSwgaW9fYnVmZmVy c19sZW4gKiBCTENLU1opOwogCiAJaWYgKHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RF TVApCi0JCXBnQnVmZmVyVXNhZ2UubG9jYWxfYmxrc19yZWFkICs9IGlvX2J1ZmZlcnNfbGVuOwor CQlJTlNUUl9CVUZVU0FHRV9BREQobG9jYWxfYmxrc19yZWFkLCBpb19idWZmZXJzX2xlbik7CiAJ ZWxzZQotCQlwZ0J1ZmZlclVzYWdlLnNoYXJlZF9ibGtzX3JlYWQgKz0gaW9fYnVmZmVyc19sZW47 CisJCUlOU1RSX0JVRlVTQUdFX0FERChzaGFyZWRfYmxrc19yZWFkLCBpb19idWZmZXJzX2xlbik7 CiAKIAkvKgogCSAqIFRyYWNrIHZhY3V1bSBjb3N0IHdoZW4gaXNzdWluZyBJTywgbm90IGFmdGVy IHdhaXRpbmcgZm9yIGl0LiBPdGhlcndpc2UKQEAgLTMwNDMsNyArMzA0Myw3IEBAIEV4dGVuZEJ1 ZmZlcmVkUmVsU2hhcmVkKEJ1ZmZlck1hbmFnZXJSZWxhdGlvbiBibXIsCiAJCVRlcm1pbmF0ZUJ1 ZmZlcklPKGJ1Zl9oZHIsIGZhbHNlLCBCTV9WQUxJRCwgdHJ1ZSwgZmFsc2UpOwogCX0KIAotCXBn QnVmZmVyVXNhZ2Uuc2hhcmVkX2Jsa3Nfd3JpdHRlbiArPSBleHRlbmRfYnk7CisJSU5TVFJfQlVG VVNBR0VfQUREKHNoYXJlZF9ibGtzX3dyaXR0ZW4sIGV4dGVuZF9ieSk7CiAKIAkqZXh0ZW5kZWRf YnkgPSBleHRlbmRfYnk7CiAKQEAgLTMxODksNyArMzE4OSw3IEBAIE1hcmtCdWZmZXJEaXJ0eShC dWZmZXIgYnVmZmVyKQogCSAqLwogCWlmICghKG9sZF9idWZfc3RhdGUgJiBCTV9ESVJUWSkpCiAJ ewotCQlwZ0J1ZmZlclVzYWdlLnNoYXJlZF9ibGtzX2RpcnRpZWQrKzsKKwkJSU5TVFJfQlVGVVNB R0VfSU5DUihzaGFyZWRfYmxrc19kaXJ0aWVkKTsKIAkJaWYgKFZhY3V1bUNvc3RBY3RpdmUpCiAJ CQlWYWN1dW1Db3N0QmFsYW5jZSArPSBWYWN1dW1Db3N0UGFnZURpcnR5OwogCX0KQEAgLTQ2MDEs NyArNDYwMSw3IEBAIEZsdXNoQnVmZmVyKEJ1ZmZlckRlc2MgKmJ1ZiwgU01nclJlbGF0aW9uIHJl bG4sIElPT2JqZWN0IGlvX29iamVjdCwKIAlwZ3N0YXRfY291bnRfaW9fb3BfdGltZShJT09CSkVD VF9SRUxBVElPTiwgaW9fY29udGV4dCwKIAkJCQkJCQlJT09QX1dSSVRFLCBpb19zdGFydCwgMSwg QkxDS1NaKTsKIAotCXBnQnVmZmVyVXNhZ2Uuc2hhcmVkX2Jsa3Nfd3JpdHRlbisrOworCUlOU1RS X0JVRlVTQUdFX0lOQ1Ioc2hhcmVkX2Jsa3Nfd3JpdHRlbik7CiAKIAkvKgogCSAqIE1hcmsgdGhl IGJ1ZmZlciBhcyBjbGVhbiBhbmQgZW5kIHRoZSBCTV9JT19JTl9QUk9HUkVTUyBzdGF0ZS4KQEAg LTU3OTYsNyArNTc5Niw3IEBAIE1hcmtTaGFyZWRCdWZmZXJEaXJ0eUhpbnQoQnVmZmVyIGJ1ZmZl ciwgQnVmZmVyRGVzYyAqYnVmSGRyLCB1aW50NjQgbG9ja3N0YXRlLAogCQkJVW5sb2NrQnVmSGRy KGJ1Zkhkcik7CiAJCX0KIAotCQlwZ0J1ZmZlclVzYWdlLnNoYXJlZF9ibGtzX2RpcnRpZWQrKzsK KwkJSU5TVFJfQlVGVVNBR0VfSU5DUihzaGFyZWRfYmxrc19kaXJ0aWVkKTsKIAkJaWYgKFZhY3V1 bUNvc3RBY3RpdmUpCiAJCQlWYWN1dW1Db3N0QmFsYW5jZSArPSBWYWN1dW1Db3N0UGFnZURpcnR5 OwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2xvY2FsYnVmLmMg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jCmluZGV4IDM5NmRhODRiMjVj Li44NTFiOTkwNTZkNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9j YWxidWYuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9sb2NhbGJ1Zi5jCkBAIC0y MTgsNyArMjE4LDcgQEAgRmx1c2hMb2NhbEJ1ZmZlcihCdWZmZXJEZXNjICpidWZIZHIsIFNNZ3JS ZWxhdGlvbiByZWxuKQogCS8qIE1hcmsgbm90LWRpcnR5ICovCiAJVGVybWluYXRlTG9jYWxCdWZm ZXJJTyhidWZIZHIsIHRydWUsIDAsIGZhbHNlKTsKIAotCXBnQnVmZmVyVXNhZ2UubG9jYWxfYmxr c193cml0dGVuKys7CisJSU5TVFJfQlVGVVNBR0VfSU5DUihsb2NhbF9ibGtzX3dyaXR0ZW4pOwog fQogCiBzdGF0aWMgQnVmZmVyCkBAIC00NzksNyArNDc5LDcgQEAgRXh0ZW5kQnVmZmVyZWRSZWxM b2NhbChCdWZmZXJNYW5hZ2VyUmVsYXRpb24gYm1yLAogCiAJKmV4dGVuZGVkX2J5ID0gZXh0ZW5k X2J5OwogCi0JcGdCdWZmZXJVc2FnZS5sb2NhbF9ibGtzX3dyaXR0ZW4gKz0gZXh0ZW5kX2J5Owor CUlOU1RSX0JVRlVTQUdFX0FERChsb2NhbF9ibGtzX3dyaXR0ZW4sIGV4dGVuZF9ieSk7CiAKIAly ZXR1cm4gZmlyc3RfYmxvY2s7CiB9CkBAIC01MTAsNyArNTEwLDcgQEAgTWFya0xvY2FsQnVmZmVy RGlydHkoQnVmZmVyIGJ1ZmZlcikKIAlidWZfc3RhdGUgPSBwZ19hdG9taWNfcmVhZF91NjQoJmJ1 Zkhkci0+c3RhdGUpOwogCiAJaWYgKCEoYnVmX3N0YXRlICYgQk1fRElSVFkpKQotCQlwZ0J1ZmZl clVzYWdlLmxvY2FsX2Jsa3NfZGlydGllZCsrOworCQlJTlNUUl9CVUZVU0FHRV9JTkNSKGxvY2Fs X2Jsa3NfZGlydGllZCk7CiAKIAlidWZfc3RhdGUgfD0gQk1fRElSVFk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9idWZmaWxlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2ZpbGUvYnVmZmlsZS5jCmluZGV4IGM0YWZlNGQzNjhhLi44YjUwMWRmY2FkZCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2J1ZmZpbGUuYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2ZpbGUvYnVmZmlsZS5jCkBAIC00NzUsMTMgKzQ3NSwxMyBAQCBCdWZGaWxlTG9hZEJ1 ZmZlcihCdWZGaWxlICpmaWxlKQogCWlmICh0cmFja19pb190aW1pbmcpCiAJewogCQlJTlNUUl9U SU1FX1NFVF9DVVJSRU5UKGlvX3RpbWUpOwotCQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYocGdCdWZm ZXJVc2FnZS50ZW1wX2Jsa19yZWFkX3RpbWUsIGlvX3RpbWUsIGlvX3N0YXJ0KTsKKwkJSU5TVFJf QlVGVVNBR0VfVElNRV9BQ0NVTV9ESUZGKHRlbXBfYmxrX3JlYWRfdGltZSwgaW9fdGltZSwgaW9f c3RhcnQpOwogCX0KIAogCS8qIHdlIGNob29zZSBub3QgdG8gYWR2YW5jZSBjdXJPZmZzZXQgaGVy ZSAqLwogCiAJaWYgKGZpbGUtPm5ieXRlcyA+IDApCi0JCXBnQnVmZmVyVXNhZ2UudGVtcF9ibGtz X3JlYWQrKzsKKwkJSU5TVFJfQlVGVVNBR0VfSU5DUih0ZW1wX2Jsa3NfcmVhZCk7CiB9CiAKIC8q CkBAIC01NDksMTMgKzU0OSwxMyBAQCBCdWZGaWxlRHVtcEJ1ZmZlcihCdWZGaWxlICpmaWxlKQog CQlpZiAodHJhY2tfaW9fdGltaW5nKQogCQl7CiAJCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGlv X3RpbWUpOwotCQkJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKHBnQnVmZmVyVXNhZ2UudGVtcF9ibGtf d3JpdGVfdGltZSwgaW9fdGltZSwgaW9fc3RhcnQpOworCQkJSU5TVFJfQlVGVVNBR0VfVElNRV9B Q0NVTV9ESUZGKHRlbXBfYmxrX3dyaXRlX3RpbWUsIGlvX3RpbWUsIGlvX3N0YXJ0KTsKIAkJfQog CiAJCWZpbGUtPmN1ck9mZnNldCArPSBieXRlc3Rvd3JpdGU7CiAJCXdwb3MgKz0gYnl0ZXN0b3dy aXRlOwogCi0JCXBnQnVmZmVyVXNhZ2UudGVtcF9ibGtzX3dyaXR0ZW4rKzsKKwkJSU5TVFJfQlVG VVNBR0VfSU5DUih0ZW1wX2Jsa3Nfd3JpdHRlbik7CiAJfQogCWZpbGUtPmRpcnR5ID0gZmFsc2U7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2lvLmMKaW5kZXggMmJlMjZlOTIyODMu LmUzODI5ZDdmZTdjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0 YXRfaW8uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8uYwpAQCAt MTM1LDE3ICsxMzUsMTcgQEAgcGdzdGF0X2NvdW50X2lvX29wX3RpbWUoSU9PYmplY3QgaW9fb2Jq ZWN0LCBJT0NvbnRleHQgaW9fY29udGV4dCwgSU9PcCBpb19vcCwKIAkJCXsKIAkJCQlwZ3N0YXRf Y291bnRfYnVmZmVyX3dyaXRlX3RpbWUoSU5TVFJfVElNRV9HRVRfTUlDUk9TRUMoaW9fdGltZSkp OwogCQkJCWlmIChpb19vYmplY3QgPT0gSU9PQkpFQ1RfUkVMQVRJT04pCi0JCQkJCUlOU1RSX1RJ TUVfQUREKHBnQnVmZmVyVXNhZ2Uuc2hhcmVkX2Jsa193cml0ZV90aW1lLCBpb190aW1lKTsKKwkJ CQkJSU5TVFJfQlVGVVNBR0VfVElNRV9BREQoc2hhcmVkX2Jsa193cml0ZV90aW1lLCBpb190aW1l KTsKIAkJCQllbHNlIGlmIChpb19vYmplY3QgPT0gSU9PQkpFQ1RfVEVNUF9SRUxBVElPTikKLQkJ CQkJSU5TVFJfVElNRV9BREQocGdCdWZmZXJVc2FnZS5sb2NhbF9ibGtfd3JpdGVfdGltZSwgaW9f dGltZSk7CisJCQkJCUlOU1RSX0JVRlVTQUdFX1RJTUVfQUREKGxvY2FsX2Jsa193cml0ZV90aW1l LCBpb190aW1lKTsKIAkJCX0KIAkJCWVsc2UgaWYgKGlvX29wID09IElPT1BfUkVBRCkKIAkJCXsK IAkJCQlwZ3N0YXRfY291bnRfYnVmZmVyX3JlYWRfdGltZShJTlNUUl9USU1FX0dFVF9NSUNST1NF Qyhpb190aW1lKSk7CiAJCQkJaWYgKGlvX29iamVjdCA9PSBJT09CSkVDVF9SRUxBVElPTikKLQkJ CQkJSU5TVFJfVElNRV9BREQocGdCdWZmZXJVc2FnZS5zaGFyZWRfYmxrX3JlYWRfdGltZSwgaW9f dGltZSk7CisJCQkJCUlOU1RSX0JVRlVTQUdFX1RJTUVfQUREKHNoYXJlZF9ibGtfcmVhZF90aW1l LCBpb190aW1lKTsKIAkJCQllbHNlIGlmIChpb19vYmplY3QgPT0gSU9PQkpFQ1RfVEVNUF9SRUxB VElPTikKLQkJCQkJSU5TVFJfVElNRV9BREQocGdCdWZmZXJVc2FnZS5sb2NhbF9ibGtfcmVhZF90 aW1lLCBpb190aW1lKTsKKwkJCQkJSU5TVFJfQlVGVVNBR0VfVElNRV9BREQobG9jYWxfYmxrX3Jl YWRfdGltZSwgaW9fdGltZSk7CiAJCQl9CiAJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvaW5zdHJ1bWVudC5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5o CmluZGV4IGNjOWZiYjBlMmYwLi41MjYxMzU2ZGJhNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvaW5zdHJ1bWVudC5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1l bnQuaApAQCAtMTU0LDQgKzE1NCwyMyBAQCBleHRlcm4gdm9pZCBCdWZmZXJVc2FnZUFjY3VtRGlm ZihCdWZmZXJVc2FnZSAqZHN0LAogZXh0ZXJuIHZvaWQgV2FsVXNhZ2VBY2N1bURpZmYoV2FsVXNh Z2UgKmRzdCwgY29uc3QgV2FsVXNhZ2UgKmFkZCwKIAkJCQkJCQkgIGNvbnN0IFdhbFVzYWdlICpz dWIpOwogCisjZGVmaW5lIElOU1RSX0JVRlVTQUdFX0lOQ1IoZmxkKSBkbyB7IFwKKwkJcGdCdWZm ZXJVc2FnZS5mbGQrKzsgXAorCX0gd2hpbGUoMCkKKyNkZWZpbmUgSU5TVFJfQlVGVVNBR0VfQURE KGZsZCx2YWwpIGRvIHsgXAorCQlwZ0J1ZmZlclVzYWdlLmZsZCArPSAodmFsKTsgXAorCX0gd2hp bGUoMCkKKyNkZWZpbmUgSU5TVFJfQlVGVVNBR0VfVElNRV9BREQoZmxkLHZhbCkgZG8geyBcCisJ SU5TVFJfVElNRV9BREQocGdCdWZmZXJVc2FnZS5mbGQsIHZhbCk7IFwKKwl9IHdoaWxlICgwKQor I2RlZmluZSBJTlNUUl9CVUZVU0FHRV9USU1FX0FDQ1VNX0RJRkYoZmxkLGVuZHZhbCxzdGFydHZh bCkgZG8geyBcCisJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKHBnQnVmZmVyVXNhZ2UuZmxkLCBlbmR2 YWwsIHN0YXJ0dmFsKTsgXAorCX0gd2hpbGUgKDApCisjZGVmaW5lIElOU1RSX1dBTFVTQUdFX0lO Q1IoZmxkKSBkbyB7IFwKKwkJcGdXYWxVc2FnZS5mbGQrKzsgXAorCX0gd2hpbGUoMCkKKyNkZWZp bmUgSU5TVFJfV0FMVVNBR0VfQUREKGZsZCx2YWwpIGRvIHsgXAorCQlwZ1dhbFVzYWdlLmZsZCAr PSAodmFsKTsgXAorCX0gd2hpbGUoMCkKKwogI2VuZGlmCQkJCQkJCS8qIElOU1RSVU1FTlRfSCAq LwotLSAKMi40Ny4xCgo= --00000000000045175b064ec7b858 Content-Type: application/octet-stream; name="v15-0001-instrumentation-Use-Instrumentation-instead-of-m.patch" Content-Disposition: attachment; filename="v15-0001-instrumentation-Use-Instrumentation-instead-of-m.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnmzxbpz1 RnJvbSBhZTQzODNlNzg2NTk5YTA2ZDk1OTI0Mjc2YTBlNDE0ZjEzMWQzNDRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT dW4sIDUgQXByIDIwMjYgMDU6MDg6MjMgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxNSAxLzldIGlu c3RydW1lbnRhdGlvbjogVXNlIEluc3RydW1lbnRhdGlvbiBpbnN0ZWFkIG9mCiBtYW51YWwgYnVm ZmVyIHRyYWNraW5nCgpUaGlzIHJlcGxhY2VzIGRpZmZlcmVudCByZXBlYXRlZCBjb2RlIGJsb2Nr cyB0aGF0IHJlYWQgcGdCdWZmZXJVc2FnZSAvCnBnV2FsVXNhZ2UsIGFuZCBtYXkgaGF2ZSBhbHNv IGJlZW4gcnVubmluZyBhIHRpbWVyIHRvIG1lYXN1cmUgYWN0aXZpdHksCndpdGggdGhlIG5ldyBJ bnN0cnVtZW50YXRpb24gc3RydWN0IGFuZCBhc3NvY2lhdGVkIGhlbHBlcnMuCgpBdXRob3I6IEx1 a2FzIEZpdHRsIDxsdWthc0BmaXR0bC5jb20+ClJldmlld2VkLWJ5OgpEaXNjdXNzaW9uOgotLS0K IC4uLi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMgICB8IDYyICsrKysr LS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAg ICAgICB8IDE1ICsrKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMgICAgICAgICAg ICAgICAgfCAzMSArKysrKy0tLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAg ICAgICAgICAgICAgfCA0NCArKysrKysrLS0tLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBs YWluX2RyLmMgICAgICAgICAgICAgfCA1MyArKysrKystLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9j b21tYW5kcy9wcmVwYXJlLmMgICAgICAgICAgICAgICAgfCAyOCArKysrLS0tLS0KIHNyYy9pbmNs dWRlL2NvbW1hbmRzL2V4cGxhaW5fZHIuaCAgICAgICAgICAgICB8ICA1ICstCiA3IGZpbGVzIGNo YW5nZWQsIDkxIGluc2VydGlvbnMoKyksIDE0NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9j b250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyBiL2NvbnRyaWIv cGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCmluZGV4IDAyNTIxNWZjYzkw Li5iNjg2MzQ3OWU5ZiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdf c3RhdF9zdGF0ZW1lbnRzLmMKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3Rh dF9zdGF0ZW1lbnRzLmMKQEAgLTkwNiwyMiArOTA2LDE2IEBAIHBnc3NfcGxhbm5lcihRdWVyeSAq cGFyc2UsCiAJCSYmIHBnc3NfdHJhY2tfcGxhbm5pbmcgJiYgcXVlcnlfc3RyaW5nCiAJCSYmIHBh cnNlLT5xdWVyeUlkICE9IElOVDY0Q09OU1QoMCkpCiAJewotCQlpbnN0cl90aW1lCXN0YXJ0Owot CQlpbnN0cl90aW1lCWR1cmF0aW9uOwotCQlCdWZmZXJVc2FnZSBidWZ1c2FnZV9zdGFydCwKLQkJ CQkJYnVmdXNhZ2U7Ci0JCVdhbFVzYWdlCXdhbHVzYWdlX3N0YXJ0LAotCQkJCQl3YWx1c2FnZTsK LQotCQkvKiBXZSBuZWVkIHRvIHRyYWNrIGJ1ZmZlciB1c2FnZSBhcyB0aGUgcGxhbm5lciBjYW4g YWNjZXNzIHRoZW0uICovCi0JCWJ1ZnVzYWdlX3N0YXJ0ID0gcGdCdWZmZXJVc2FnZTsKKwkJSW5z dHJ1bWVudGF0aW9uIGluc3RyID0gezB9OwogCiAJCS8qCisJCSAqIFdlIG5lZWQgdG8gdHJhY2sg YnVmZmVyIHVzYWdlIGFzIHRoZSBwbGFubmVyIGNhbiBhY2Nlc3MgdGhlbS4KKwkJICoKIAkJICog U2ltaWxhcmx5IHRoZSBwbGFubmVyIGNvdWxkIHdyaXRlIHNvbWUgV0FMIHJlY29yZHMgaW4gc29t ZSBjYXNlcwogCQkgKiAoZS5nLiBzZXR0aW5nIGEgaGludCBiaXQgd2l0aCB0aG9zZSBiZWluZyBX QUwtbG9nZ2VkKQogCQkgKi8KLQkJd2FsdXNhZ2Vfc3RhcnQgPSBwZ1dhbFVzYWdlOwotCQlJTlNU Ul9USU1FX1NFVF9DVVJSRU5UKHN0YXJ0KTsKKwkJSW5zdHJJbml0T3B0aW9ucygmaW5zdHIsIElO U1RSVU1FTlRfQUxMKTsKKwkJSW5zdHJTdGFydCgmaW5zdHIpOwogCiAJCW5lc3RpbmdfbGV2ZWwr KzsKIAkJUEdfVFJZKCk7CkBAIC05MzksMjYgKzkzMywxNyBAQCBwZ3NzX3BsYW5uZXIoUXVlcnkg KnBhcnNlLAogCQl9CiAJCVBHX0VORF9UUlkoKTsKIAotCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5U KGR1cmF0aW9uKTsKLQkJSU5TVFJfVElNRV9TVUJUUkFDVChkdXJhdGlvbiwgc3RhcnQpOwotCi0J CS8qIGNhbGMgZGlmZmVyZW5jZXMgb2YgYnVmZmVyIGNvdW50ZXJzLiAqLwotCQltZW1zZXQoJmJ1 ZnVzYWdlLCAwLCBzaXplb2YoQnVmZmVyVXNhZ2UpKTsKLQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYo JmJ1ZnVzYWdlLCAmcGdCdWZmZXJVc2FnZSwgJmJ1ZnVzYWdlX3N0YXJ0KTsKLQotCQkvKiBjYWxj IGRpZmZlcmVuY2VzIG9mIFdBTCBjb3VudGVycy4gKi8KLQkJbWVtc2V0KCZ3YWx1c2FnZSwgMCwg c2l6ZW9mKFdhbFVzYWdlKSk7Ci0JCVdhbFVzYWdlQWNjdW1EaWZmKCZ3YWx1c2FnZSwgJnBnV2Fs VXNhZ2UsICZ3YWx1c2FnZV9zdGFydCk7CisJCUluc3RyU3RvcCgmaW5zdHIpOwogCiAJCXBnc3Nf c3RvcmUocXVlcnlfc3RyaW5nLAogCQkJCSAgIHBhcnNlLT5xdWVyeUlkLAogCQkJCSAgIHBhcnNl LT5zdG10X2xvY2F0aW9uLAogCQkJCSAgIHBhcnNlLT5zdG10X2xlbiwKIAkJCQkgICBQR1NTX1BM QU4sCi0JCQkJICAgSU5TVFJfVElNRV9HRVRfTUlMTElTRUMoZHVyYXRpb24pLAorCQkJCSAgIElO U1RSX1RJTUVfR0VUX01JTExJU0VDKGluc3RyLnRvdGFsKSwKIAkJCQkgICAwLAotCQkJCSAgICZi dWZ1c2FnZSwKLQkJCQkgICAmd2FsdXNhZ2UsCisJCQkJICAgJmluc3RyLmJ1ZnVzYWdlLAorCQkJ CSAgICZpbnN0ci53YWx1c2FnZSwKIAkJCQkgICBOVUxMLAogCQkJCSAgIE5VTEwsCiAJCQkJICAg MCwKQEAgLTExNTEsMTcgKzExMzYsMTEgQEAgcGdzc19Qcm9jZXNzVXRpbGl0eShQbGFubmVkU3Rt dCAqcHN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkhSXNBKHBhcnNldHJlZSwgRXhl Y3V0ZVN0bXQpICYmCiAJCSFJc0EocGFyc2V0cmVlLCBQcmVwYXJlU3RtdCkpCiAJewotCQlpbnN0 cl90aW1lCXN0YXJ0OwotCQlpbnN0cl90aW1lCWR1cmF0aW9uOwogCQl1aW50NjQJCXJvd3M7Ci0J CUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlX3N0YXJ0LAotCQkJCQlidWZ1c2FnZTsKLQkJV2FsVXNhZ2UJ d2FsdXNhZ2Vfc3RhcnQsCi0JCQkJCXdhbHVzYWdlOworCQlJbnN0cnVtZW50YXRpb24gaW5zdHIg PSB7MH07CiAKLQkJYnVmdXNhZ2Vfc3RhcnQgPSBwZ0J1ZmZlclVzYWdlOwotCQl3YWx1c2FnZV9z dGFydCA9IHBnV2FsVXNhZ2U7Ci0JCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoc3RhcnQpOworCQlJ bnN0ckluaXRPcHRpb25zKCZpbnN0ciwgSU5TVFJVTUVOVF9BTEwpOworCQlJbnN0clN0YXJ0KCZp bnN0cik7CiAKIAkJbmVzdGluZ19sZXZlbCsrOwogCQlQR19UUlkoKTsKQEAgLTExOTEsOCArMTE3 MCw3IEBAIHBnc3NfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LCBjb25zdCBjaGFy ICpxdWVyeVN0cmluZywKIAkJICogZm9ybWVyIHZhbHVlLCB3aGljaCdkIG90aGVyd2lzZSBiZSBh IGdvb2QgaWRlYS4KIAkJICovCiAKLQkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChkdXJhdGlvbik7 Ci0JCUlOU1RSX1RJTUVfU1VCVFJBQ1QoZHVyYXRpb24sIHN0YXJ0KTsKKwkJSW5zdHJTdG9wKCZp bnN0cik7CiAKIAkJLyoKIAkJICogVHJhY2sgdGhlIHRvdGFsIG51bWJlciBvZiByb3dzIHJldHJp ZXZlZCBvciBhZmZlY3RlZCBieSB0aGUgdXRpbGl0eQpAQCAtMTIwNSwyMyArMTE4MywxNSBAQCBw Z3NzX1Byb2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwgY29uc3QgY2hhciAqcXVlcnlT dHJpbmcsCiAJCQkJCSAgIHFjLT5jb21tYW5kVGFnID09IENNRFRBR19SRUZSRVNIX01BVEVSSUFM SVpFRF9WSUVXKSkgPwogCQkJcWMtPm5wcm9jZXNzZWQgOiAwOwogCi0JCS8qIGNhbGMgZGlmZmVy ZW5jZXMgb2YgYnVmZmVyIGNvdW50ZXJzLiAqLwotCQltZW1zZXQoJmJ1ZnVzYWdlLCAwLCBzaXpl b2YoQnVmZmVyVXNhZ2UpKTsKLQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYoJmJ1ZnVzYWdlLCAmcGdC dWZmZXJVc2FnZSwgJmJ1ZnVzYWdlX3N0YXJ0KTsKLQotCQkvKiBjYWxjIGRpZmZlcmVuY2VzIG9m IFdBTCBjb3VudGVycy4gKi8KLQkJbWVtc2V0KCZ3YWx1c2FnZSwgMCwgc2l6ZW9mKFdhbFVzYWdl KSk7Ci0JCVdhbFVzYWdlQWNjdW1EaWZmKCZ3YWx1c2FnZSwgJnBnV2FsVXNhZ2UsICZ3YWx1c2Fn ZV9zdGFydCk7Ci0KIAkJcGdzc19zdG9yZShxdWVyeVN0cmluZywKIAkJCQkgICBzYXZlZF9xdWVy eUlkLAogCQkJCSAgIHNhdmVkX3N0bXRfbG9jYXRpb24sCiAJCQkJICAgc2F2ZWRfc3RtdF9sZW4s CiAJCQkJICAgUEdTU19FWEVDLAotCQkJCSAgIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGR1cmF0 aW9uKSwKKwkJCQkgICBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhpbnN0ci50b3RhbCksCiAJCQkJ ICAgcm93cywKLQkJCQkgICAmYnVmdXNhZ2UsCi0JCQkJICAgJndhbHVzYWdlLAorCQkJCSAgICZp bnN0ci5idWZ1c2FnZSwKKwkJCQkgICAmaW5zdHIud2FsdXNhZ2UsCiAJCQkJICAgTlVMTCwKIAkJ CQkgICBOVUxMLAogCQkJCSAgIDAsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5k ZXggODhjNzFjZDg1YjYuLjMwZjU4OWM5MjA3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCkBAIC02MzcsOCArNjM3LDcgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwg Y29uc3QgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJVGltZXN0YW1wVHogc3RhcnR0aW1lID0gMDsK IAlQZ1N0YXRfQ291bnRlciBzdGFydHJlYWR0aW1lID0gMCwKIAkJCQlzdGFydHdyaXRldGltZSA9 IDA7Ci0JV2FsVXNhZ2UJc3RhcnR3YWx1c2FnZSA9IHBnV2FsVXNhZ2U7Ci0JQnVmZmVyVXNhZ2Ug c3RhcnRidWZmZXJ1c2FnZSA9IHBnQnVmZmVyVXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9uICppbnN0 ciA9IE5VTEw7CiAJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CiAJY2hhcgkgICoq aW5kbmFtZXMgPSBOVUxMOwogCVNpemUJCWRlYWRfaXRlbXNfbWF4X2J5dGVzID0gMDsKQEAgLTY1 NCw2ICs2NTMsOCBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBjb25zdCBWYWN1dW1Q YXJhbXMgKnBhcmFtcywKIAkJCXN0YXJ0cmVhZHRpbWUgPSBwZ1N0YXRCbG9ja1JlYWRUaW1lOwog CQkJc3RhcnR3cml0ZXRpbWUgPSBwZ1N0YXRCbG9ja1dyaXRlVGltZTsKIAkJfQorCQlpbnN0ciA9 IEluc3RyQWxsb2MoSU5TVFJVTUVOVF9CVUZGRVJTIHwgSU5TVFJVTUVOVF9XQUwpOworCQlJbnN0 clN0YXJ0KGluc3RyKTsKIAl9CiAKIAkvKiBVc2VkIGZvciBpbnN0cnVtZW50YXRpb24gYW5kIHN0 YXRzIHJlcG9ydCAqLwpAQCAtOTg0LDE0ICs5ODUsMTQgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0 aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJewogCQlUaW1lc3RhbXBUeiBl bmR0aW1lID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwogCisJCUluc3RyU3RvcChpbnN0cik7CisK IAkJaWYgKHZlcmJvc2UgfHwgcGFyYW1zLT5sb2dfdmFjdXVtX21pbl9kdXJhdGlvbiA9PSAwIHx8 CiAJCQlUaW1lc3RhbXBEaWZmZXJlbmNlRXhjZWVkcyhzdGFydHRpbWUsIGVuZHRpbWUsCiAJCQkJ CQkJCQkgICBwYXJhbXMtPmxvZ192YWN1dW1fbWluX2R1cmF0aW9uKSkKIAkJewogCQkJbG9uZwkJ c2Vjc19kdXI7CiAJCQlpbnQJCQl1c2Vjc19kdXI7Ci0JCQlXYWxVc2FnZQl3YWx1c2FnZTsKLQkJ CUJ1ZmZlclVzYWdlIGJ1ZmZlcnVzYWdlOwogCQkJU3RyaW5nSW5mb0RhdGEgYnVmOwogCQkJY2hh cgkgICAqbXNnZm10OwogCQkJaW50MzIJCWRpZmY7CkBAIC0xMDAwLDEyICsxMDAxLDEwIEBAIGhl YXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1zLAog CQkJaW50NjQJCXRvdGFsX2Jsa3NfaGl0OwogCQkJaW50NjQJCXRvdGFsX2Jsa3NfcmVhZDsKIAkJ CWludDY0CQl0b3RhbF9ibGtzX2RpcnRpZWQ7CisJCQlCdWZmZXJVc2FnZSBidWZmZXJ1c2FnZSA9 IGluc3RyLT5idWZ1c2FnZTsKKwkJCVdhbFVzYWdlCXdhbHVzYWdlID0gaW5zdHItPndhbHVzYWdl OwogCiAJCQlUaW1lc3RhbXBEaWZmZXJlbmNlKHN0YXJ0dGltZSwgZW5kdGltZSwgJnNlY3NfZHVy LCAmdXNlY3NfZHVyKTsKLQkJCW1lbXNldCgmd2FsdXNhZ2UsIDAsIHNpemVvZihXYWxVc2FnZSkp OwotCQkJV2FsVXNhZ2VBY2N1bURpZmYoJndhbHVzYWdlLCAmcGdXYWxVc2FnZSwgJnN0YXJ0d2Fs dXNhZ2UpOwotCQkJbWVtc2V0KCZidWZmZXJ1c2FnZSwgMCwgc2l6ZW9mKEJ1ZmZlclVzYWdlKSk7 Ci0JCQlCdWZmZXJVc2FnZUFjY3VtRGlmZigmYnVmZmVydXNhZ2UsICZwZ0J1ZmZlclVzYWdlLCAm c3RhcnRidWZmZXJ1c2FnZSk7CiAKIAkJCXRvdGFsX2Jsa3NfaGl0ID0gYnVmZmVydXNhZ2Uuc2hh cmVkX2Jsa3NfaGl0ICsKIAkJCQlidWZmZXJ1c2FnZS5sb2NhbF9ibGtzX2hpdDsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2FuYWx5emUuYwppbmRleCA0OWE1Y2RmNTc5Yy4uODQ3MmZjMGMyODAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9h bmFseXplLmMKQEAgLTMwOSw5ICszMDksNyBAQCBkb19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVy ZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCU9pZAkJCXNhdmVfdXNlcmlkOwogCWlu dAkJCXNhdmVfc2VjX2NvbnRleHQ7CiAJaW50CQkJc2F2ZV9uZXN0bGV2ZWw7Ci0JV2FsVXNhZ2UJ c3RhcnR3YWx1c2FnZSA9IHBnV2FsVXNhZ2U7Ci0JQnVmZmVyVXNhZ2Ugc3RhcnRidWZmZXJ1c2Fn ZSA9IHBnQnVmZmVyVXNhZ2U7Ci0JQnVmZmVyVXNhZ2UgYnVmZmVydXNhZ2U7CisJSW5zdHJ1bWVu dGF0aW9uICppbnN0ciA9IE5VTEw7CiAJUGdTdGF0X0NvdW50ZXIgc3RhcnRyZWFkdGltZSA9IDA7 CiAJUGdTdGF0X0NvdW50ZXIgc3RhcnR3cml0ZXRpbWUgPSAwOwogCkBAIC0zNjIsNiArMzYwLDkg QEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgKnBh cmFtcywKIAkJfQogCiAJCXBnX3J1c2FnZV9pbml0KCZydTApOworCisJCWluc3RyID0gSW5zdHJB bGxvYyhJTlNUUlVNRU5UX0JVRkZFUlMgfCBJTlNUUlVNRU5UX1dBTCk7CisJCUluc3RyU3RhcnQo aW5zdHIpOwogCX0KIAogCS8qIFVzZWQgZm9yIGluc3RydW1lbnRhdGlvbiBhbmQgc3RhdHMgcmVw b3J0ICovCkBAIC03NDIsMTIgKzc0MywxMyBAQCBkb19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVy ZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCXsKIAkJVGltZXN0YW1wVHogZW5kdGlt ZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKIAorCQlJbnN0clN0b3AoaW5zdHIpOworCiAJCWlm ICh2ZXJib3NlIHx8IHBhcmFtcy0+bG9nX2FuYWx5emVfbWluX2R1cmF0aW9uID09IDAgfHwKIAkJ CVRpbWVzdGFtcERpZmZlcmVuY2VFeGNlZWRzKHN0YXJ0dGltZSwgZW5kdGltZSwKIAkJCQkJCQkJ CSAgIHBhcmFtcy0+bG9nX2FuYWx5emVfbWluX2R1cmF0aW9uKSkKIAkJewogCQkJbG9uZwkJZGVs YXlfaW5fbXM7Ci0JCQlXYWxVc2FnZQl3YWx1c2FnZTsKIAkJCWRvdWJsZQkJcmVhZF9yYXRlID0g MDsKIAkJCWRvdWJsZQkJd3JpdGVfcmF0ZSA9IDA7CiAJCQljaGFyCSAgICptc2dmbXQ7CkBAIC03 NTUsMTggKzc1NywxNSBAQCBkb19hbmFseXplX3JlbChSZWxhdGlvbiBvbmVyZWwsIGNvbnN0IFZh Y3V1bVBhcmFtcyAqcGFyYW1zLAogCQkJaW50NjQJCXRvdGFsX2Jsa3NfaGl0OwogCQkJaW50NjQJ CXRvdGFsX2Jsa3NfcmVhZDsKIAkJCWludDY0CQl0b3RhbF9ibGtzX2RpcnRpZWQ7Ci0KLQkJCW1l bXNldCgmYnVmZmVydXNhZ2UsIDAsIHNpemVvZihCdWZmZXJVc2FnZSkpOwotCQkJQnVmZmVyVXNh Z2VBY2N1bURpZmYoJmJ1ZmZlcnVzYWdlLCAmcGdCdWZmZXJVc2FnZSwgJnN0YXJ0YnVmZmVydXNh Z2UpOwotCQkJbWVtc2V0KCZ3YWx1c2FnZSwgMCwgc2l6ZW9mKFdhbFVzYWdlKSk7Ci0JCQlXYWxV c2FnZUFjY3VtRGlmZigmd2FsdXNhZ2UsICZwZ1dhbFVzYWdlLCAmc3RhcnR3YWx1c2FnZSk7Ci0K LQkJCXRvdGFsX2Jsa3NfaGl0ID0gYnVmZmVydXNhZ2Uuc2hhcmVkX2Jsa3NfaGl0ICsKLQkJCQli dWZmZXJ1c2FnZS5sb2NhbF9ibGtzX2hpdDsKLQkJCXRvdGFsX2Jsa3NfcmVhZCA9IGJ1ZmZlcnVz YWdlLnNoYXJlZF9ibGtzX3JlYWQgKwotCQkJCWJ1ZmZlcnVzYWdlLmxvY2FsX2Jsa3NfcmVhZDsK LQkJCXRvdGFsX2Jsa3NfZGlydGllZCA9IGJ1ZmZlcnVzYWdlLnNoYXJlZF9ibGtzX2RpcnRpZWQg KwotCQkJCWJ1ZmZlcnVzYWdlLmxvY2FsX2Jsa3NfZGlydGllZDsKKwkJCUJ1ZmZlclVzYWdlIGJ1 ZnVzYWdlID0gaW5zdHItPmJ1ZnVzYWdlOworCQkJV2FsVXNhZ2UJd2FsdXNhZ2UgPSBpbnN0ci0+ d2FsdXNhZ2U7CisKKwkJCXRvdGFsX2Jsa3NfaGl0ID0gYnVmdXNhZ2Uuc2hhcmVkX2Jsa3NfaGl0 ICsKKwkJCQlidWZ1c2FnZS5sb2NhbF9ibGtzX2hpdDsKKwkJCXRvdGFsX2Jsa3NfcmVhZCA9IGJ1 ZnVzYWdlLnNoYXJlZF9ibGtzX3JlYWQgKworCQkJCWJ1ZnVzYWdlLmxvY2FsX2Jsa3NfcmVhZDsK KwkJCXRvdGFsX2Jsa3NfZGlydGllZCA9IGJ1ZnVzYWdlLnNoYXJlZF9ibGtzX2RpcnRpZWQgKwor CQkJCWJ1ZnVzYWdlLmxvY2FsX2Jsa3NfZGlydGllZDsKIAogCQkJLyoKIAkJCSAqIFdlIGRvIG5v dCBleHBlY3QgYW4gYW5hbHl6ZSB0byB0YWtlID4gMjUgZGF5cyBhbmQgaXQgc2ltcGxpZmllcwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IDczZWFhZjE3NmFjLi5kNmRjNzI2ODQzOCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW4uYwpAQCAtMzI0LDE0ICszMjQsMTcgQEAgc3RhbmRhcmRfRXhwbGFpbk9u ZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJCQkJCQkgUXVlcnlFbnZp cm9ubWVudCAqcXVlcnlFbnYpCiB7CiAJUGxhbm5lZFN0bXQgKnBsYW47Ci0JaW5zdHJfdGltZQlw bGFuc3RhcnQsCi0JCQkJcGxhbmR1cmF0aW9uOwotCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlX3N0YXJ0 LAotCQkJCWJ1ZnVzYWdlOworCUluc3RydW1lbnRhdGlvbiBwbGFuX2luc3RyID0gezB9OworCWlu dAkJCWluc3RydW1lbnRfb3B0aW9ucyA9IElOU1RSVU1FTlRfVElNRVI7CiAJTWVtb3J5Q29udGV4 dENvdW50ZXJzIG1lbV9jb3VudGVyczsKIAlNZW1vcnlDb250ZXh0IHBsYW5uZXJfY3R4ID0gTlVM TDsKIAlNZW1vcnlDb250ZXh0IHNhdmVkX2N0eCA9IE5VTEw7CiAKKwlpZiAoZXMtPmJ1ZmZlcnMp CisJCWluc3RydW1lbnRfb3B0aW9ucyB8PSBJTlNUUlVNRU5UX0JVRkZFUlM7CisKKwlJbnN0cklu aXRPcHRpb25zKCZwbGFuX2luc3RyLCBpbnN0cnVtZW50X29wdGlvbnMpOworCiAJaWYgKGVzLT5t ZW1vcnkpCiAJewogCQkvKgpAQCAtMzQ4LDE1ICszNTEsMTIgQEAgc3RhbmRhcmRfRXhwbGFpbk9u ZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJCXNhdmVkX2N0eCA9IE1l bW9yeUNvbnRleHRTd2l0Y2hUbyhwbGFubmVyX2N0eCk7CiAJfQogCi0JaWYgKGVzLT5idWZmZXJz KQotCQlidWZ1c2FnZV9zdGFydCA9IHBnQnVmZmVyVXNhZ2U7Ci0JSU5TVFJfVElNRV9TRVRfQ1VS UkVOVChwbGFuc3RhcnQpOworCUluc3RyU3RhcnQoJnBsYW5faW5zdHIpOwogCiAJLyogcGxhbiB0 aGUgcXVlcnkgKi8KIAlwbGFuID0gcGdfcGxhbl9xdWVyeShxdWVyeSwgcXVlcnlTdHJpbmcsIGN1 cnNvck9wdGlvbnMsIHBhcmFtcywgZXMpOwogCi0JSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChwbGFu ZHVyYXRpb24pOwotCUlOU1RSX1RJTUVfU1VCVFJBQ1QocGxhbmR1cmF0aW9uLCBwbGFuc3RhcnQp OworCUluc3RyU3RvcCgmcGxhbl9pbnN0cik7CiAKIAlpZiAoZXMtPm1lbW9yeSkKIAl7CkBAIC0z NjQsMTYgKzM2NCw5IEBAIHN0YW5kYXJkX0V4cGxhaW5PbmVRdWVyeShRdWVyeSAqcXVlcnksIGlu dCBjdXJzb3JPcHRpb25zLAogCQlNZW1vcnlDb250ZXh0TWVtQ29uc3VtZWQocGxhbm5lcl9jdHgs ICZtZW1fY291bnRlcnMpOwogCX0KIAotCS8qIGNhbGMgZGlmZmVyZW5jZXMgb2YgYnVmZmVyIGNv dW50ZXJzLiAqLwotCWlmIChlcy0+YnVmZmVycykKLQl7Ci0JCW1lbXNldCgmYnVmdXNhZ2UsIDAs IHNpemVvZihCdWZmZXJVc2FnZSkpOwotCQlCdWZmZXJVc2FnZUFjY3VtRGlmZigmYnVmdXNhZ2Us ICZwZ0J1ZmZlclVzYWdlLCAmYnVmdXNhZ2Vfc3RhcnQpOwotCX0KLQogCS8qIHJ1biBpdCAoaWYg bmVlZGVkKSBhbmQgcHJvZHVjZSBvdXRwdXQgKi8KIAlFeHBsYWluT25lUGxhbihwbGFuLCBpbnRv LCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVlcnlFbnYsCi0JCQkJICAgJnBsYW5kdXJhdGlv biwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCksCisJCQkJICAgJnBsYW5faW5zdHIu dG90YWwsIChlcy0+YnVmZmVycyA/ICZwbGFuX2luc3RyLmJ1ZnVzYWdlIDogTlVMTCksCiAJCQkJ ICAgZXMtPm1lbW9yeSA/ICZtZW1fY291bnRlcnMgOiBOVUxMKTsKIH0KIApAQCAtNTkwLDcgKzU4 MywxMiBAQCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1 c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAKIAkvKiBncmFiIHNlcmlhbGl6YXRpb24gbWV0 cmljcyBiZWZvcmUgd2UgZGVzdHJveSB0aGUgRGVzdFJlY2VpdmVyICovCiAJaWYgKGVzLT5zZXJp YWxpemUgIT0gRVhQTEFJTl9TRVJJQUxJWkVfTk9ORSkKLQkJc2VyaWFsaXplTWV0cmljcyA9IEdl dFNlcmlhbGl6YXRpb25NZXRyaWNzKGRlc3QpOworCXsKKwkJU2VyaWFsaXplTWV0cmljcyAqbWV0 cmljcyA9IEdldFNlcmlhbGl6YXRpb25NZXRyaWNzKGRlc3QpOworCisJCWlmIChtZXRyaWNzKQor CQkJbWVtY3B5KCZzZXJpYWxpemVNZXRyaWNzLCBtZXRyaWNzLCBzaXplb2YoU2VyaWFsaXplTWV0 cmljcykpOworCX0KIAogCS8qIGNhbGwgdGhlIERlc3RSZWNlaXZlcidzIGRlc3Ryb3kgbWV0aG9k IGV2ZW4gZHVyaW5nIGV4cGxhaW4gKi8KIAlkZXN0LT5yRGVzdHJveShkZXN0KTsKQEAgLTEwMTks NyArMTAxNyw3IEBAIEV4cGxhaW5QcmludFNlcmlhbGl6ZShFeHBsYWluU3RhdGUgKmVzLCBTZXJp YWxpemVNZXRyaWNzICptZXRyaWNzKQogCQlFeHBsYWluSW5kZW50VGV4dChlcyk7CiAJCWlmIChl cy0+dGltaW5nKQogCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiU2VyaWFsaXphdGlvbjog dGltZT0lLjNmIG1zICBvdXRwdXQ9IiBVSU5UNjRfRk9STUFUICJrQiAgZm9ybWF0PSVzXG4iLAot CQkJCQkJCSAxMDAwLjAgKiBJTlNUUl9USU1FX0dFVF9ET1VCTEUobWV0cmljcy0+dGltZVNwZW50 KSwKKwkJCQkJCQkgMTAwMC4wICogSU5TVFJfVElNRV9HRVRfRE9VQkxFKG1ldHJpY3MtPmluc3Ry LnRvdGFsKSwKIAkJCQkJCQkgQllURVNfVE9fS0lMT0JZVEVTKG1ldHJpY3MtPmJ5dGVzU2VudCks CiAJCQkJCQkJIGZvcm1hdCk7CiAJCWVsc2UKQEAgLTEwMjcsMTAgKzEwMjUsMTAgQEAgRXhwbGFp blByaW50U2VyaWFsaXplKEV4cGxhaW5TdGF0ZSAqZXMsIFNlcmlhbGl6ZU1ldHJpY3MgKm1ldHJp Y3MpCiAJCQkJCQkJIEJZVEVTX1RPX0tJTE9CWVRFUyhtZXRyaWNzLT5ieXRlc1NlbnQpLAogCQkJ CQkJCSBmb3JtYXQpOwogCi0JCWlmIChlcy0+YnVmZmVycyAmJiBwZWVrX2J1ZmZlcl91c2FnZShl cywgJm1ldHJpY3MtPmJ1ZmZlclVzYWdlKSkKKwkJaWYgKGVzLT5idWZmZXJzICYmIHBlZWtfYnVm ZmVyX3VzYWdlKGVzLCAmbWV0cmljcy0+aW5zdHIuYnVmdXNhZ2UpKQogCQl7CiAJCQllcy0+aW5k ZW50Kys7Ci0JCQlzaG93X2J1ZmZlcl91c2FnZShlcywgJm1ldHJpY3MtPmJ1ZmZlclVzYWdlKTsK KwkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmbWV0cmljcy0+aW5zdHIuYnVmdXNhZ2UpOwogCQkJ ZXMtPmluZGVudC0tOwogCQl9CiAJfQpAQCAtMTAzOCwxMyArMTAzNiwxMyBAQCBFeHBsYWluUHJp bnRTZXJpYWxpemUoRXhwbGFpblN0YXRlICplcywgU2VyaWFsaXplTWV0cmljcyAqbWV0cmljcykK IAl7CiAJCWlmIChlcy0+dGltaW5nKQogCQkJRXhwbGFpblByb3BlcnR5RmxvYXQoIlRpbWUiLCAi bXMiLAotCQkJCQkJCQkgMTAwMC4wICogSU5TVFJfVElNRV9HRVRfRE9VQkxFKG1ldHJpY3MtPnRp bWVTcGVudCksCisJCQkJCQkJCSAxMDAwLjAgKiBJTlNUUl9USU1FX0dFVF9ET1VCTEUobWV0cmlj cy0+aW5zdHIudG90YWwpLAogCQkJCQkJCQkgMywgZXMpOwogCQlFeHBsYWluUHJvcGVydHlVSW50 ZWdlcigiT3V0cHV0IFZvbHVtZSIsICJrQiIsCiAJCQkJCQkJCUJZVEVTX1RPX0tJTE9CWVRFUyht ZXRyaWNzLT5ieXRlc1NlbnQpLCBlcyk7CiAJCUV4cGxhaW5Qcm9wZXJ0eVRleHQoIkZvcm1hdCIs IGZvcm1hdCwgZXMpOwogCQlpZiAoZXMtPmJ1ZmZlcnMpCi0JCQlzaG93X2J1ZmZlcl91c2FnZShl cywgJm1ldHJpY3MtPmJ1ZmZlclVzYWdlKTsKKwkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAmbWV0 cmljcy0+aW5zdHIuYnVmdXNhZ2UpOwogCX0KIAogCUV4cGxhaW5DbG9zZUdyb3VwKCJTZXJpYWxp emF0aW9uIiwgIlNlcmlhbGl6YXRpb24iLCB0cnVlLCBlcyk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9leHBsYWluX2RyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu X2RyLmMKaW5kZXggM2M5NjA2MWNmMzIuLmRmNWFlNWY0NTY5IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9leHBsYWluX2RyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhw bGFpbl9kci5jCkBAIC0xMTAsMTUgKzExMCwxMCBAQCBzZXJpYWxpemVBbmFseXplUmVjZWl2ZShU dXBsZVRhYmxlU2xvdCAqc2xvdCwgRGVzdFJlY2VpdmVyICpzZWxmKQogCU1lbW9yeUNvbnRleHQg b2xkY29udGV4dDsKIAlTdHJpbmdJbmZvCWJ1ZiA9ICZteVN0YXRlLT5idWY7CiAJaW50CQkJbmF0 dHMgPSB0eXBlaW5mby0+bmF0dHM7Ci0JaW5zdHJfdGltZQlzdGFydCwKLQkJCQllbmQ7Ci0JQnVm ZmVyVXNhZ2UgaW5zdHJfc3RhcnQ7CisJSW5zdHJ1bWVudGF0aW9uICppbnN0ciA9ICZteVN0YXRl LT5tZXRyaWNzLmluc3RyOwogCi0JLyogb25seSBtZWFzdXJlIHRpbWUsIGJ1ZmZlcnMgaWYgcmVx dWVzdGVkICovCi0JaWYgKG15U3RhdGUtPmVzLT50aW1pbmcpCi0JCUlOU1RSX1RJTUVfU0VUX0NV UlJFTlQoc3RhcnQpOwotCWlmIChteVN0YXRlLT5lcy0+YnVmZmVycykKLQkJaW5zdHJfc3RhcnQg PSBwZ0J1ZmZlclVzYWdlOworCS8qIFN0YXJ0IHBlci10dXBsZSBtZWFzdXJlbWVudCAqLworCUlu c3RyU3RhcnQoaW5zdHIpOwogCiAJLyogU2V0IG9yIHVwZGF0ZSBteSBkZXJpdmVkIGF0dHJpYnV0 ZSBpbmZvLCBpZiBuZWVkZWQgKi8KIAlpZiAobXlTdGF0ZS0+YXR0cmluZm8gIT0gdHlwZWluZm8g fHwgbXlTdGF0ZS0+bmF0dHJzICE9IG5hdHRzKQpAQCAtMTg2LDE4ICsxODEsOCBAQCBzZXJpYWxp emVBbmFseXplUmVjZWl2ZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgRGVzdFJlY2VpdmVyICpzZWxm KQogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAlNZW1vcnlDb250ZXh0UmVz ZXQobXlTdGF0ZS0+dG1wY29udGV4dCk7CiAKLQkvKiBVcGRhdGUgdGltaW5nIGRhdGEgKi8KLQlp ZiAobXlTdGF0ZS0+ZXMtPnRpbWluZykKLQl7Ci0JCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoZW5k KTsKLQkJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKG15U3RhdGUtPm1ldHJpY3MudGltZVNwZW50LCBl bmQsIHN0YXJ0KTsKLQl9Ci0KLQkvKiBVcGRhdGUgYnVmZmVyIG1ldHJpY3MgKi8KLQlpZiAobXlT dGF0ZS0+ZXMtPmJ1ZmZlcnMpCi0JCUJ1ZmZlclVzYWdlQWNjdW1EaWZmKCZteVN0YXRlLT5tZXRy aWNzLmJ1ZmZlclVzYWdlLAotCQkJCQkJCSAmcGdCdWZmZXJVc2FnZSwKLQkJCQkJCQkgJmluc3Ry X3N0YXJ0KTsKKwkvKiBTdG9wIHBlci10dXBsZSBtZWFzdXJlbWVudCAqLworCUluc3RyU3RvcChp bnN0cik7CiAKIAlyZXR1cm4gdHJ1ZTsKIH0KQEAgLTIwOSw2ICsxOTQsNyBAQCBzdGF0aWMgdm9p ZAogc2VyaWFsaXplQW5hbHl6ZVN0YXJ0dXAoRGVzdFJlY2VpdmVyICpzZWxmLCBpbnQgb3BlcmF0 aW9uLCBUdXBsZURlc2MgdHlwZWluZm8pCiB7CiAJU2VyaWFsaXplRGVzdFJlY2VpdmVyICpyZWNl aXZlciA9IChTZXJpYWxpemVEZXN0UmVjZWl2ZXIgKikgc2VsZjsKKwlpbnQJCQlpbnN0cnVtZW50 X29wdGlvbnMgPSAwOwogCiAJQXNzZXJ0KHJlY2VpdmVyLT5lcyAhPSBOVUxMKTsKIApAQCAtMjMz LDkgKzIxOSwxMyBAQCBzZXJpYWxpemVBbmFseXplU3RhcnR1cChEZXN0UmVjZWl2ZXIgKnNlbGYs IGludCBvcGVyYXRpb24sIFR1cGxlRGVzYyB0eXBlaW5mbykKIAkvKiBUaGUgb3V0cHV0IGJ1ZmZl ciBpcyByZS11c2VkIGFjcm9zcyByb3dzLCBhcyBpbiBwcmludHR1cC5jICovCiAJaW5pdFN0cmlu Z0luZm8oJnJlY2VpdmVyLT5idWYpOwogCi0JLyogSW5pdGlhbGl6ZSByZXN1bHRzIGNvdW50ZXJz ICovCisJLyogSW5pdGlhbGl6ZSBtZXRyaWNzIGFuZCBwZXItdHVwbGUgaW5zdHJ1bWVudGF0aW9u ICovCiAJbWVtc2V0KCZyZWNlaXZlci0+bWV0cmljcywgMCwgc2l6ZW9mKFNlcmlhbGl6ZU1ldHJp Y3MpKTsKLQlJTlNUUl9USU1FX1NFVF9aRVJPKHJlY2VpdmVyLT5tZXRyaWNzLnRpbWVTcGVudCk7 CisJaWYgKHJlY2VpdmVyLT5lcy0+dGltaW5nKQorCQlpbnN0cnVtZW50X29wdGlvbnMgfD0gSU5T VFJVTUVOVF9USU1FUjsKKwlpZiAocmVjZWl2ZXItPmVzLT5idWZmZXJzKQorCQlpbnN0cnVtZW50 X29wdGlvbnMgfD0gSU5TVFJVTUVOVF9CVUZGRVJTOworCUluc3RySW5pdE9wdGlvbnMoJnJlY2Vp dmVyLT5tZXRyaWNzLmluc3RyLCBpbnN0cnVtZW50X29wdGlvbnMpOwogfQogCiAvKgpAQCAtMjkw LDIyICsyODAsMTcgQEAgQ3JlYXRlRXhwbGFpblNlcmlhbGl6ZURlc3RSZWNlaXZlcihFeHBsYWlu U3RhdGUgKmVzKQogfQogCiAvKgotICogR2V0U2VyaWFsaXphdGlvbk1ldHJpY3MgLSBjb2xsZWN0 IG1ldHJpY3MKKyAqIEdldFNlcmlhbGl6YXRpb25NZXRyaWNzIC0gZ2V0IHNlcmlhbGl6YXRpb24g bWV0cmljcwogICoKLSAqIFdlIGhhdmUgdG8gYmUgY2FyZWZ1bCBoZXJlIHNpbmNlIHRoZSByZWNl aXZlciBjb3VsZCBiZSBhbiBJbnRvUmVsCi0gKiByZWNlaXZlciBpZiB0aGUgc3ViamVjdCBzdGF0 ZW1lbnQgaXMgQ1JFQVRFIFRBQkxFIEFTLiAgSW4gdGhhdAotICogY2FzZSwgcmV0dXJuIGFsbC16 ZXJvZXMgc3RhdHMuCisgKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgU2VyaWFsaXplTWV0cmlj cyBpbnNpZGUgdGhlIGRlc3QgcmVjZWl2ZXIsCisgKiBvciBOVUxMIGlmIHRoZSByZWNlaXZlciBp cyBub3QgYSBTZXJpYWxpemVEZXN0UmVjZWl2ZXIgKGUuZy4gYW4gSW50b1JlbAorICogcmVjZWl2 ZXIgZm9yIENSRUFURSBUQUJMRSBBUykuCiAgKi8KLVNlcmlhbGl6ZU1ldHJpY3MKK1NlcmlhbGl6 ZU1ldHJpY3MgKgogR2V0U2VyaWFsaXphdGlvbk1ldHJpY3MoRGVzdFJlY2VpdmVyICpkZXN0KQog ewotCVNlcmlhbGl6ZU1ldHJpY3MgZW1wdHk7Ci0KIAlpZiAoZGVzdC0+bXlkZXN0ID09IERlc3RF eHBsYWluU2VyaWFsaXplKQotCQlyZXR1cm4gKChTZXJpYWxpemVEZXN0UmVjZWl2ZXIgKikgZGVz dCktPm1ldHJpY3M7Ci0KLQltZW1zZXQoJmVtcHR5LCAwLCBzaXplb2YoU2VyaWFsaXplTWV0cmlj cykpOwotCUlOU1RSX1RJTUVfU0VUX1pFUk8oZW1wdHkudGltZVNwZW50KTsKKwkJcmV0dXJuICYo KFNlcmlhbGl6ZURlc3RSZWNlaXZlciAqKSBkZXN0KS0+bWV0cmljczsKIAotCXJldHVybiBlbXB0 eTsKKwlyZXR1cm4gTlVMTDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3By ZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCA4NzZhYWQyMTAw YS4uYmY5ZjJlYjYxNDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTIyLDYgKzIyLDcgQEAK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9jcmVhdGVh cy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2V4cGxhaW4uaCIKKyNpbmNsdWRlICJleGVjdXRvci9p bnN0cnVtZW50LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZXhwbGFpbl9mb3JtYXQuaCIKICNpbmNs dWRlICJjb21tYW5kcy9leHBsYWluX3N0YXRlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHJlcGFy ZS5oIgpAQCAtNTgwLDE0ICs1ODEsMTcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3Rt dCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJTGlzdENl bGwgICAqcDsKIAlQYXJhbUxpc3RJbmZvIHBhcmFtTEkgPSBOVUxMOwogCUVTdGF0ZQkgICAqZXN0 YXRlID0gTlVMTDsKLQlpbnN0cl90aW1lCXBsYW5zdGFydDsKLQlpbnN0cl90aW1lCXBsYW5kdXJh dGlvbjsKLQlCdWZmZXJVc2FnZSBidWZ1c2FnZV9zdGFydCwKLQkJCQlidWZ1c2FnZTsKKwlJbnN0 cnVtZW50YXRpb24gcGxhbl9pbnN0ciA9IHswfTsKKwlpbnQJCQlpbnN0cnVtZW50X29wdGlvbnMg PSBJTlNUUlVNRU5UX1RJTUVSOwogCU1lbW9yeUNvbnRleHRDb3VudGVycyBtZW1fY291bnRlcnM7 CiAJTWVtb3J5Q29udGV4dCBwbGFubmVyX2N0eCA9IE5VTEw7CiAJTWVtb3J5Q29udGV4dCBzYXZl ZF9jdHggPSBOVUxMOwogCisJaWYgKGVzLT5idWZmZXJzKQorCQlpbnN0cnVtZW50X29wdGlvbnMg fD0gSU5TVFJVTUVOVF9CVUZGRVJTOworCisJSW5zdHJJbml0T3B0aW9ucygmcGxhbl9pbnN0ciwg aW5zdHJ1bWVudF9vcHRpb25zKTsKKwogCWlmIChlcy0+bWVtb3J5KQogCXsKIAkJLyogU2VlIEV4 cGxhaW5PbmVRdWVyeSBhYm91dCB0aGlzICovCkBAIC01OTgsOSArNjAyLDcgQEAgRXhwbGFpbkV4 ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxh aW5TdGF0ZSAqZXMsCiAJCXNhdmVkX2N0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwbGFubmVy X2N0eCk7CiAJfQogCi0JaWYgKGVzLT5idWZmZXJzKQotCQlidWZ1c2FnZV9zdGFydCA9IHBnQnVm ZmVyVXNhZ2U7Ci0JSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChwbGFuc3RhcnQpOworCUluc3RyU3Rh cnQoJnBsYW5faW5zdHIpOwogCiAJLyogTG9vayBpdCB1cCBpbiB0aGUgaGFzaCB0YWJsZSAqLwog CWVudHJ5ID0gRmV0Y2hQcmVwYXJlZFN0YXRlbWVudChleGVjc3RtdC0+bmFtZSwgdHJ1ZSk7CkBA IC02MzUsOCArNjM3LDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0 bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJY3BsYW4gPSBHZXRDYWNo ZWRQbGFuKGVudHJ5LT5wbGFuc291cmNlLCBwYXJhbUxJLAogCQkJCQkJICBDdXJyZW50UmVzb3Vy Y2VPd25lciwgcHN0YXRlLT5wX3F1ZXJ5RW52KTsKIAotCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQo cGxhbmR1cmF0aW9uKTsKLQlJTlNUUl9USU1FX1NVQlRSQUNUKHBsYW5kdXJhdGlvbiwgcGxhbnN0 YXJ0KTsKKwlJbnN0clN0b3AoJnBsYW5faW5zdHIpOwogCiAJaWYgKGVzLT5tZW1vcnkpCiAJewpA QCAtNjQ0LDEzICs2NDUsNiBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVj c3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJTWVtb3J5Q29udGV4 dE1lbUNvbnN1bWVkKHBsYW5uZXJfY3R4LCAmbWVtX2NvdW50ZXJzKTsKIAl9CiAKLQkvKiBjYWxj IGRpZmZlcmVuY2VzIG9mIGJ1ZmZlciBjb3VudGVycy4gKi8KLQlpZiAoZXMtPmJ1ZmZlcnMpCi0J ewotCQltZW1zZXQoJmJ1ZnVzYWdlLCAwLCBzaXplb2YoQnVmZmVyVXNhZ2UpKTsKLQkJQnVmZmVy VXNhZ2VBY2N1bURpZmYoJmJ1ZnVzYWdlLCAmcGdCdWZmZXJVc2FnZSwgJmJ1ZnVzYWdlX3N0YXJ0 KTsKLQl9Ci0KIAlwbGFuX2xpc3QgPSBjcGxhbi0+c3RtdF9saXN0OwogCiAJLyogRXhwbGFpbiBl YWNoIHF1ZXJ5ICovCkBAIC02NjAsNyArNjU0LDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVj dXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAK IAkJaWYgKHBzdG10LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSkKIAkJCUV4cGxhaW5PbmVQ bGFuKHBzdG10LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLCBwc3RhdGUtPnBfcXVl cnlFbnYsCi0JCQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2Ug OiBOVUxMKSwKKwkJCQkJCSAgICZwbGFuX2luc3RyLnRvdGFsLCAoZXMtPmJ1ZmZlcnMgPyAmcGxh bl9pbnN0ci5idWZ1c2FnZSA6IE5VTEwpLAogCQkJCQkJICAgZXMtPm1lbW9yeSA/ICZtZW1fY291 bnRlcnMgOiBOVUxMKTsKIAkJZWxzZQogCQkJRXhwbGFpbk9uZVV0aWxpdHkocHN0bXQtPnV0aWxp dHlTdG10LCBpbnRvLCBlcywgcHN0YXRlLCBwYXJhbUxJKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2V4cGxhaW5fZHIuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW5f ZHIuaAppbmRleCBmOThlYWFlMTg2NC4uYWI1YzUzMDIzZTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2V4cGxhaW5fZHIuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBs YWluX2RyLmgKQEAgLTIzLDExICsyMywxMCBAQCB0eXBlZGVmIHN0cnVjdCBFeHBsYWluU3RhdGUg RXhwbGFpblN0YXRlOwogdHlwZWRlZiBzdHJ1Y3QgU2VyaWFsaXplTWV0cmljcwogewogCXVpbnQ2 NAkJYnl0ZXNTZW50OwkJLyogIyBvZiBieXRlcyBzZXJpYWxpemVkICovCi0JaW5zdHJfdGltZQl0 aW1lU3BlbnQ7CQkvKiB0aW1lIHNwZW50IHNlcmlhbGl6aW5nICovCi0JQnVmZmVyVXNhZ2UgYnVm ZmVyVXNhZ2U7CS8qIGJ1ZmZlcnMgYWNjZXNzZWQgZHVyaW5nIHNlcmlhbGl6YXRpb24gKi8KKwlJ bnN0cnVtZW50YXRpb24gaW5zdHI7CQkvKiB0aW1lIGFuZCBidWZmZXIgdXNhZ2UgKi8KIH0gU2Vy aWFsaXplTWV0cmljczsKIAogZXh0ZXJuIERlc3RSZWNlaXZlciAqQ3JlYXRlRXhwbGFpblNlcmlh bGl6ZURlc3RSZWNlaXZlcihFeHBsYWluU3RhdGUgKmVzKTsKLWV4dGVybiBTZXJpYWxpemVNZXRy aWNzIEdldFNlcmlhbGl6YXRpb25NZXRyaWNzKERlc3RSZWNlaXZlciAqZGVzdCk7CitleHRlcm4g U2VyaWFsaXplTWV0cmljcyAqR2V0U2VyaWFsaXphdGlvbk1ldHJpY3MoRGVzdFJlY2VpdmVyICpk ZXN0KTsKIAogI2VuZGlmCi0tIAoyLjQ3LjEKCg== --00000000000045175b064ec7b858 Content-Type: application/octet-stream; name="v15-0007-instrumentation-Optimize-ExecProcNodeInstr-instr.patch" Content-Disposition: attachment; filename="v15-0007-instrumentation-Optimize-ExecProcNodeInstr-instr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnmzxbqa7 RnJvbSA5ZTUyNzk0N2Q0OWJlNzcxNWNiMDFhZGRkYTI4OTBmZjU0ZWQ1YzE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT dW4sIDUgQXByIDIwMjYgMTk6MzA6NTYgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxNSA3LzldIGlu c3RydW1lbnRhdGlvbjogT3B0aW1pemUgRXhlY1Byb2NOb2RlSW5zdHIKIGluc3RydWN0aW9ucyBi eSBpbmxpbmluZwoKRm9yIG1vc3QgcXVlcmllcywgdGhlIGJ1bGsgb2YgdGhlIG92ZXJoZWFkIG9m IEVYUExBSU4gQU5BTFlaRSBoYXBwZW5zIGluCkV4ZWNQcm9jTm9kZUluc3RyIHdoZW4gc3RhcnRp bmcvc3RvcHBpbmcgaW5zdHJ1bWVudGF0aW9uIGZvciB0aGF0IG5vZGUuCgpQcmV2aW91c2x5IGVh Y2ggRXhlY1Byb2NOb2RlSW5zdHIgd291bGQgY2hlY2sgd2hpY2ggaW5zdHJ1bWVudGF0aW9uCm9w dGlvbnMgYXJlIGFjdGl2ZSBpbiB0aGUgSW5zdHJTdGFydE5vZGUvSW5zdHJTdG9wTm9kZSBjYWxs cywgYW5kIGRvIHRoZQpjb3JyZXNwb25kaW5nIHdvcmsgKHRpbWVycywgaW5zdHJ1bWVudGF0aW9u IHN0YWNrLCBldGMuKS4gVGhlc2UKY29uZGl0aW9uYWxzIGJlaW5nIGNoZWNrZWQgZm9yIGVhY2gg dHVwbGUgYmVpbmcgZW1pdHRlZCBhZGQgdXAsIGFuZCBjYXVzZQpub24tb3B0aW1hbCBzZXQgb2Yg aW5zdHJ1Y3Rpb25zIHRvIGJlIGdlbmVyYXRlZCBieSB0aGUgY29tcGlsZXIuCgpCZWNhdXNlIHdl IGFscmVhZHkgaGF2ZSBhbiBleGlzdGluZyBtZWNoYW5pc20gdG8gc3BlY2lmeSBhIGZ1bmN0aW9u CnBvaW50ZXIgd2hlbiBpbnN0cnVtZW50YXRpb24gaXMgZW5hYmxlZCwgd2UgY2FuIGluc3RlYWQg Y3JlYXRlIHNwZWNpYWxpemVkCmZ1bmN0aW9ucyB0aGF0IGFyZSB0YWlsb3JlZCB0byB0aGUgaW5z dHJ1bWVudGF0aW9uIG9wdGlvbnMgZW5hYmxlZCwgYW5kCmF2b2lkIGNvbmRpdGlvbmFscyBvbiBz dWJzZXF1ZW50IEV4ZWNQcm9jTm9kZUluc3RyIGNhbGxzLiBUaGlzIHJlc3VsdHMgaW4KdGhlIG92 ZXJoZWFkIGZvciBFWFBMQUlOIChBTkFMWVpFLCBUSU1JTkcgT0ZGLCBCVUZGRVJTIE9GRikgZm9y IGEgc3RyZXNzCnRlc3Qgd2l0aCBhIGxhcmdlIENPVU5UKCopIHRoYXQgZG9lcyBtYW55IEV4ZWNQ cm9jTm9kZSBjYWxscyBmcm9tIH4gMjAlIG9uCnRvcCBvZiBhY3R1YWwgcnVudGltZSB0byB+IDMl LiBXaGVuIHVzaW5nIEJVRkZFUlMgT04gdGhlIHNhbWUgcXVlcnkgZ29lcwpmcm9tIH4gMjAlIHRv IH4gMTAlIG9uIHRvcCBvZiBhY3R1YWwgcnVudGltZS4KCkF1dGhvcjogTHVrYXMgRml0dGwgPGx1 a2FzQGZpdHRsLmNvbT4KUmV2aWV3ZWQtYnk6IFpzb2x0IFBhcnJhZ2kgPHpzb2x0LnBhcnJhZ2lA cGVyY29uYS5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3Nh Z2UtaWQvZmxhdC9DQVA1M1BreEZQN2k3LXd5OThabUVKMTFlZFlxLVJyUHZKb2E0a3pHaEJCakVS QTROeXclNDBtYWlsLmdtYWlsLmNvbSNlOGRmZDAxOGEwN2Q3ZjhkNDE1NjVhMDc5ZDQwYzU2NAot LS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jIHwgIDIyICstLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMgICB8IDE0NCArKysrKysrKysrKysrKysrKysr KysrKystLS0tCiBzcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmggICB8ICAgNSArCiAz IGZpbGVzIGNoYW5nZWQsIDEzMCBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCmluZGV4IGYwMDY5MzFjOTRkLi5hYzQwMDY3MGZlYSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKQEAgLTEyMSw3ICsxMjEsNiBAQAogI2lu Y2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgogCiBzdGF0aWMgVHVwbGVUYWJsZVNsb3QgKkV4ZWNQ cm9jTm9kZUZpcnN0KFBsYW5TdGF0ZSAqbm9kZSk7Ci1zdGF0aWMgVHVwbGVUYWJsZVNsb3QgKkV4 ZWNQcm9jTm9kZUluc3RyKFBsYW5TdGF0ZSAqbm9kZSk7CiBzdGF0aWMgYm9vbCBFeGVjU2h1dGRv d25Ob2RlX3dhbGtlcihQbGFuU3RhdGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpOwogc3RhdGljIGJv b2wgRXhlY0ZpbmFsaXplTm9kZUluc3RydW1lbnRhdGlvbl93YWxrZXIoUGxhblN0YXRlICpub2Rl LCB2b2lkICpjb250ZXh0KTsKIHN0YXRpYyBib29sIEV4ZWNGaW5hbGl6ZVdvcmtlckluc3RydW1l bnRhdGlvbl93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lkICpjb250ZXh0KTsKQEAgLTQ2Niw3 ICs0NjUsNyBAQCBFeGVjUHJvY05vZGVGaXJzdChQbGFuU3RhdGUgKm5vZGUpCiAJICogaGF2ZSBF eGVjUHJvY05vZGUoKSBkaXJlY3RseSBjYWxsIHRoZSByZWxldmFudCBmdW5jdGlvbiBmcm9tIG5v dyBvbi4KIAkgKi8KIAlpZiAobm9kZS0+aW5zdHJ1bWVudCkKLQkJbm9kZS0+RXhlY1Byb2NOb2Rl ID0gRXhlY1Byb2NOb2RlSW5zdHI7CisJCW5vZGUtPkV4ZWNQcm9jTm9kZSA9IEluc3RyTm9kZVNl dHVwRXhlY1Byb2NOb2RlKG5vZGUtPmluc3RydW1lbnQpOwogCWVsc2UKIAkJbm9kZS0+RXhlY1By b2NOb2RlID0gbm9kZS0+RXhlY1Byb2NOb2RlUmVhbDsKIApAQCAtNDc0LDI1ICs0NzMsNiBAQCBF eGVjUHJvY05vZGVGaXJzdChQbGFuU3RhdGUgKm5vZGUpCiB9CiAKIAotLyoKLSAqIEV4ZWNQcm9j Tm9kZSB3cmFwcGVyIHRoYXQgcGVyZm9ybXMgaW5zdHJ1bWVudGF0aW9uIGNhbGxzLiAgQnkga2Vl cGluZwotICogdGhpcyBhIHNlcGFyYXRlIGZ1bmN0aW9uLCB3ZSBhdm9pZCBvdmVyaGVhZCBpbiB0 aGUgbm9ybWFsIGNhc2Ugd2hlcmUKLSAqIG5vIGluc3RydW1lbnRhdGlvbiBpcyB3YW50ZWQuCi0g Ki8KLXN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqCi1FeGVjUHJvY05vZGVJbnN0cihQbGFuU3RhdGUg Km5vZGUpCi17Ci0JVHVwbGVUYWJsZVNsb3QgKnJlc3VsdDsKLQotCUluc3RyU3RhcnROb2RlKG5v ZGUtPmluc3RydW1lbnQpOwotCi0JcmVzdWx0ID0gbm9kZS0+RXhlY1Byb2NOb2RlUmVhbChub2Rl KTsKLQotCUluc3RyU3RvcE5vZGUobm9kZS0+aW5zdHJ1bWVudCwgVHVwSXNOdWxsKHJlc3VsdCkg PyAwLjAgOiAxLjApOwotCi0JcmV0dXJuIHJlc3VsdDsKLX0KLQogCiAvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJ TXVsdGlFeGVjUHJvY05vZGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3Ry dW1lbnQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYwppbmRleCBjZmVkYmFk MGViYS4uNWExN2JlOWFhNTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3Ry dW1lbnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKQEAgLTY2LDE5 ICs2NiwyNSBAQCBJbnN0ckluaXRPcHRpb25zKEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGludCBp bnN0cnVtZW50X29wdGlvbnMpCiAJaW5zdHItPm5lZWRfdGltZXIgPSAoaW5zdHJ1bWVudF9vcHRp b25zICYgSU5TVFJVTUVOVF9USU1FUikgIT0gMDsKIH0KIAotdm9pZAotSW5zdHJTdGFydChJbnN0 cnVtZW50YXRpb24gKmluc3RyKQorc3RhdGljIGlubGluZSB2b2lkCitJbnN0clN0YXJ0VGltZXIo SW5zdHJ1bWVudGF0aW9uICppbnN0cikKIHsKLQlpZiAoaW5zdHItPm5lZWRfdGltZXIpCi0Jewot CQlpZiAoIUlOU1RSX1RJTUVfSVNfWkVSTyhpbnN0ci0+c3RhcnR0aW1lKSkKLQkJCWVsb2coRVJS T1IsICJJbnN0clN0YXJ0IGNhbGxlZCB0d2ljZSBpbiBhIHJvdyIpOwotCQllbHNlCi0JCQlJTlNU Ul9USU1FX1NFVF9DVVJSRU5UKGluc3RyLT5zdGFydHRpbWUpOwotCX0KKwlBc3NlcnQoSU5TVFJf VElNRV9JU19aRVJPKGluc3RyLT5zdGFydHRpbWUpKTsKIAotCWlmIChpbnN0ci0+bmVlZF9zdGFj aykKLQkJSW5zdHJQdXNoU3RhY2soaW5zdHIpOworCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoaW5z dHItPnN0YXJ0dGltZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorSW5zdHJTdG9wVGltZXIo SW5zdHJ1bWVudGF0aW9uICppbnN0ciwgaW5zdHJfdGltZSAqYWNjdW1fdGltZSkKK3sKKwlpbnN0 cl90aW1lCWVuZHRpbWU7CisKKwlBc3NlcnQoIUlOU1RSX1RJTUVfSVNfWkVSTyhpbnN0ci0+c3Rh cnR0aW1lKSk7CisKKwlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKGVuZHRpbWUpOworCUlOU1RSX1RJ TUVfQUNDVU1fRElGRigqYWNjdW1fdGltZSwgZW5kdGltZSwgaW5zdHItPnN0YXJ0dGltZSk7CisK KwlJTlNUUl9USU1FX1NFVF9aRVJPKGluc3RyLT5zdGFydHRpbWUpOwogfQogCiAvKgpAQCAtODgs MTggKzk0LDEzIEBAIEluc3RyU3RhcnQoSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIHN0YXRpYyBp bmxpbmUgdm9pZAogSW5zdHJTdG9wQ29tbW9uKEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGluc3Ry X3RpbWUgKmFjY3VtX3RpbWUpCiB7Ci0JaW5zdHJfdGltZQllbmR0aW1lOwotCiAJLyogdXBkYXRl IHRoZSB0aW1lIG9ubHkgaWYgdGhlIHRpbWVyIHdhcyByZXF1ZXN0ZWQgKi8KIAlpZiAoaW5zdHIt Pm5lZWRfdGltZXIpCiAJewogCQlpZiAoSU5TVFJfVElNRV9JU19aRVJPKGluc3RyLT5zdGFydHRp bWUpKQogCQkJZWxvZyhFUlJPUiwgIkluc3RyU3RvcCBjYWxsZWQgd2l0aG91dCBzdGFydCIpOwog Ci0JCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoZW5kdGltZSk7Ci0JCUlOU1RSX1RJTUVfQUNDVU1f RElGRigqYWNjdW1fdGltZSwgZW5kdGltZSwgaW5zdHItPnN0YXJ0dGltZSk7Ci0KLQkJSU5TVFJf VElNRV9TRVRfWkVSTyhpbnN0ci0+c3RhcnR0aW1lKTsKKwkJSW5zdHJTdG9wVGltZXIoaW5zdHIs IGFjY3VtX3RpbWUpOwogCX0KIAogCS8qIHBvcCB0aGUgc3RhY2ssIHVubGVzcyBJbnN0clN0b3BG aW5hbGl6ZSBwcmV2aW91c2x5IGNsZWFuZWQgdXAgKi8KQEAgLTEwNyw2ICsxMDgsMTYgQEAgSW5z dHJTdG9wQ29tbW9uKEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGluc3RyX3RpbWUgKmFjY3VtX3Rp bWUpCiAJCUluc3RyUG9wU3RhY2soaW5zdHIpOwogfQogCit2b2lkCitJbnN0clN0YXJ0KEluc3Ry dW1lbnRhdGlvbiAqaW5zdHIpCit7CisJaWYgKGluc3RyLT5uZWVkX3RpbWVyKQorCQlJbnN0clN0 YXJ0VGltZXIoaW5zdHIpOworCisJaWYgKGluc3RyLT5uZWVkX3N0YWNrKQorCQlJbnN0clB1c2hT dGFjayhpbnN0cik7Cit9CisKIHZvaWQKIEluc3RyU3RvcChJbnN0cnVtZW50YXRpb24gKmluc3Ry KQogewpAQCAtMzk4LDE1ICs0MDksMTQgQEAgSW5zdHJJbml0Tm9kZShOb2RlSW5zdHJ1bWVudGF0 aW9uICppbnN0ciwgaW50IGluc3RydW1lbnRfb3B0aW9ucywgYm9vbCBhc3luY19tb2QKIAlpbnN0 ci0+YXN5bmNfbW9kZSA9IGFzeW5jX21vZGU7CiB9CiAKLS8qIEVudHJ5IHRvIGEgcGxhbiBub2Rl ICovCisvKiBFbnRyeSB0byBhIHBsYW4gbm9kZS4gSWYgeW91IG1vZGlmeSB0aGlzLCBjaGVjayBJ bnN0ck5vZGVTZXR1cEV4ZWNQcm9jTm9kZS4gKi8KIHZvaWQKIEluc3RyU3RhcnROb2RlKE5vZGVJ bnN0cnVtZW50YXRpb24gKmluc3RyKQogewogCUluc3RyU3RhcnQoJmluc3RyLT5pbnN0cik7CiB9 CiAKLQotLyogRXhpdCBmcm9tIGEgcGxhbiBub2RlICovCisvKiBFeGl0IGZyb20gYSBwbGFuIG5v ZGUuIElmIHlvdSBtb2RpZnkgdGhpcywgY2hlY2sgSW5zdHJOb2RlU2V0dXBFeGVjUHJvY05vZGUu ICovCiB2b2lkCiBJbnN0clN0b3BOb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyLCBkb3Vi bGUgblR1cGxlcykKIHsKQEAgLTQ5NSw2ICs1MDUsMTAwIEBAIEluc3RyQWdnTm9kZShOb2RlSW5z dHJ1bWVudGF0aW9uICpkc3QsIE5vZGVJbnN0cnVtZW50YXRpb24gKmFkZCkKIAkJSW5zdHJBY2N1 bVN0YWNrKCZkc3QtPmluc3RyLCAmYWRkLT5pbnN0cik7CiB9CiAKKy8qCisgKiBTcGVjaWFsaXpl ZCBoYW5kbGluZyBvZiBpbnN0cnVtZW50ZWQgRXhlY1Byb2NOb2RlCisgKgorICogVGhlc2UgZnVu Y3Rpb25zIGFyZSBlcXVpdmFsZW50IHRvIHJ1bm5pbmcgRXhlY1Byb2NOb2RlUmVhbCB3cmFwcGVk IGluCisgKiBJbnN0clN0YXJ0Tm9kZSBhbmQgSW5zdHJTdG9wTm9kZSwgYnV0IGF2b2lkIHRoZSBj b25kaXRpb25hbHMgaW4gdGhlIGhvdCBwYXRoCisgKiBieSBjaGVja2luZyB0aGUgaW5zdHJ1bWVu dGF0aW9uIG9wdGlvbnMgd2hlbiB0aGUgRXhlY1Byb2NOb2RlIHBvaW50ZXIgZ2V0cworICogZmly c3Qgc2V0LCBhbmQgdGhlbiB1c2luZyBhIHNwZWNpYWwtcHVycG9zZSBmdW5jdGlvbiBmb3IgZWFj aC4gVGhpcyByZXN1bHRzCisgKiBpbiBhIG1vcmUgb3B0aW1pemVkIHNldCBvZiBjb21waWxlZCBp bnN0cnVjdGlvbnMuCisgKi8KKworI2luY2x1ZGUgImV4ZWN1dG9yL3R1cHRhYmxlLmgiCisjaW5j bHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCisKKy8qIFNpbXBsaWZpZWQgcG9wOiByZXN0b3JlIHNh dmVkIHN0YXRlIGluc3RlYWQgb2YgcmUtZGVyaXZpbmcgZnJvbSBhcnJheSAqLworc3RhdGljIGlu bGluZSB2b2lkCitJbnN0clBvcFN0YWNrVG8oSW5zdHJ1bWVudGF0aW9uICpwcmV2KQoreworCUFz c2VydChpbnN0cl9zdGFjay5zdGFja19zaXplID4gMCk7CisJQXNzZXJ0KGluc3RyX3N0YWNrLnN0 YWNrX3NpemUgPiAxID8gaW5zdHJfc3RhY2suZW50cmllc1tpbnN0cl9zdGFjay5zdGFja19zaXpl IC0gMl0gPT0gcHJldiA6ICZpbnN0cl90b3AgPT0gcHJldik7CisJaW5zdHJfc3RhY2suZW50cmll c1tpbnN0cl9zdGFjay5zdGFja19zaXplIC0gMV0tPm9uX3N0YWNrID0gZmFsc2U7CisJaW5zdHJf c3RhY2suc3RhY2tfc2l6ZS0tOworCWluc3RyX3N0YWNrLmN1cnJlbnQgPSBwcmV2OworfQorCitz dGF0aWMgcGdfYXR0cmlidXRlX2Fsd2F5c19pbmxpbmUgVHVwbGVUYWJsZVNsb3QgKgorRXhlY1By b2NOb2RlSW5zdHIoUGxhblN0YXRlICpub2RlLCBib29sIG5lZWRfdGltZXIsIGJvb2wgbmVlZF9z dGFjaykKK3sKKwlOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IG5vZGUtPmluc3RydW1lbnQ7 CisJSW5zdHJ1bWVudGF0aW9uICpwcmV2ID0gaW5zdHJfc3RhY2suY3VycmVudDsKKwlUdXBsZVRh YmxlU2xvdCAqcmVzdWx0OworCisJaWYgKG5lZWRfc3RhY2spCisJCUluc3RyUHVzaFN0YWNrKCZp bnN0ci0+aW5zdHIpOworCWlmIChuZWVkX3RpbWVyKQorCQlJbnN0clN0YXJ0VGltZXIoJmluc3Ry LT5pbnN0cik7CisKKwlyZXN1bHQgPSBub2RlLT5FeGVjUHJvY05vZGVSZWFsKG5vZGUpOworCisJ aWYgKG5lZWRfdGltZXIpCisJCUluc3RyU3RvcFRpbWVyKCZpbnN0ci0+aW5zdHIsICZpbnN0ci0+ Y291bnRlcik7CisJaWYgKG5lZWRfc3RhY2spCisJCUluc3RyUG9wU3RhY2tUbyhwcmV2KTsKKwor CWluc3RyLT5ydW5uaW5nID0gdHJ1ZTsKKwlpZiAoIVR1cElzTnVsbChyZXN1bHQpKQorCQlpbnN0 ci0+dHVwbGVjb3VudCArPSAxLjA7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgVHVw bGVUYWJsZVNsb3QgKgorRXhlY1Byb2NOb2RlSW5zdHJGdWxsKFBsYW5TdGF0ZSAqbm9kZSkKK3sK KwlyZXR1cm4gRXhlY1Byb2NOb2RlSW5zdHIobm9kZSwgdHJ1ZSwgdHJ1ZSk7Cit9CisKK3N0YXRp YyBUdXBsZVRhYmxlU2xvdCAqCitFeGVjUHJvY05vZGVJbnN0clJvd3NTdGFja09ubHkoUGxhblN0 YXRlICpub2RlKQoreworCXJldHVybiBFeGVjUHJvY05vZGVJbnN0cihub2RlLCBmYWxzZSwgdHJ1 ZSk7Cit9CisKK3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAqCitFeGVjUHJvY05vZGVJbnN0clJvd3NU aW1lck9ubHkoUGxhblN0YXRlICpub2RlKQoreworCXJldHVybiBFeGVjUHJvY05vZGVJbnN0cihu b2RlLCB0cnVlLCBmYWxzZSk7Cit9CisKK3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAqCitFeGVjUHJv Y05vZGVJbnN0clJvd3NPbmx5KFBsYW5TdGF0ZSAqbm9kZSkKK3sKKwlyZXR1cm4gRXhlY1Byb2NO b2RlSW5zdHIobm9kZSwgZmFsc2UsIGZhbHNlKTsKK30KKworLyoKKyAqIFJldHVybnMgYW4gRXhl Y1Byb2NOb2RlIHdyYXBwZXIgdGhhdCBwZXJmb3JtcyBpbnN0cnVtZW50YXRpb24gY2FsbHMsCisg KiB0YWlsb3JlZCB0byB0aGUgaW5zdHJ1bWVudGF0aW9uIG9wdGlvbnMgZW5hYmxlZCBmb3IgdGhl IG5vZGUuCisgKi8KK0V4ZWNQcm9jTm9kZU10ZAorSW5zdHJOb2RlU2V0dXBFeGVjUHJvY05vZGUo Tm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIpCit7CisJYm9vbAkJbmVlZF90aW1lciA9IGluc3Ry LT5pbnN0ci5uZWVkX3RpbWVyOworCWJvb2wJCW5lZWRfc3RhY2sgPSBpbnN0ci0+aW5zdHIubmVl ZF9zdGFjazsKKworCWlmIChuZWVkX3RpbWVyICYmIG5lZWRfc3RhY2spCisJCXJldHVybiBFeGVj UHJvY05vZGVJbnN0ckZ1bGw7CisJZWxzZSBpZiAobmVlZF9zdGFjaykKKwkJcmV0dXJuIEV4ZWNQ cm9jTm9kZUluc3RyUm93c1N0YWNrT25seTsKKwllbHNlIGlmIChuZWVkX3RpbWVyKQorCQlyZXR1 cm4gRXhlY1Byb2NOb2RlSW5zdHJSb3dzVGltZXJPbmx5OworCWVsc2UKKwkJcmV0dXJuIEV4ZWNQ cm9jTm9kZUluc3RyUm93c09ubHk7Cit9CisKIC8qIFRyaWdnZXIgaW5zdHJ1bWVudGF0aW9uIGhh bmRsaW5nICovCiBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICoKIEluc3RyQWxsb2NUcmlnZ2VyKFF1 ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIsIGludCBpbnN0cnVtZW50X29wdGlvbnMsIGludCBu KQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oIGIvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCmluZGV4IDViYjY5OGQ2ODZkLi5iZDQ4MWFmZDBk ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCisrKyBiL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaApAQCAtMzAwLDYgKzMwMCwxMSBAQCBleHRl cm4gdm9pZCBJbnN0clVwZGF0ZVR1cGxlQ291bnQoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIs IGRvdWJsZSBuVHVwbGVzKTsKIGV4dGVybiB2b2lkIEluc3RyRW5kTG9vcChOb2RlSW5zdHJ1bWVu dGF0aW9uICppbnN0cik7CiBleHRlcm4gdm9pZCBJbnN0ckFnZ05vZGUoTm9kZUluc3RydW1lbnRh dGlvbiAqZHN0LCBOb2RlSW5zdHJ1bWVudGF0aW9uICphZGQpOwogCit0eXBlZGVmIHN0cnVjdCBU dXBsZVRhYmxlU2xvdCBUdXBsZVRhYmxlU2xvdDsKK3R5cGVkZWYgc3RydWN0IFBsYW5TdGF0ZSBQ bGFuU3RhdGU7Cit0eXBlZGVmIFR1cGxlVGFibGVTbG90ICooKkV4ZWNQcm9jTm9kZU10ZCkgKFBs YW5TdGF0ZSAqcHN0YXRlKTsKK2V4dGVybiBFeGVjUHJvY05vZGVNdGQgSW5zdHJOb2RlU2V0dXBF eGVjUHJvY05vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIpOworCiBleHRlcm4gVHJpZ2dl ckluc3RydW1lbnRhdGlvbiAqSW5zdHJBbGxvY1RyaWdnZXIoUXVlcnlJbnN0cnVtZW50YXRpb24g KnFpbnN0ciwKIAkJCQkJCQkJCQkJCSBpbnQgaW5zdHJ1bWVudF9vcHRpb25zLCBpbnQgbik7CiBl eHRlcm4gdm9pZCBJbnN0clN0YXJ0VHJpZ2dlcihUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2lu c3RyKTsKLS0gCjIuNDcuMQoK --00000000000045175b064ec7b858 Content-Type: application/octet-stream; name="v15-0006-instrumentation-Use-Instrumentation-struct-for-p.patch" Content-Disposition: attachment; filename="v15-0006-instrumentation-Use-Instrumentation-struct-for-p.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnmzxbq86 RnJvbSA5MDEyOGFkMDMyMTZmYWIwYTBkNjJhMzUyMTY5NGY5ZGMxYTkzYjUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT dW4sIDE1IE1hciAyMDI2IDIxOjQ0OjU4IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MTUgNi85XSBp bnN0cnVtZW50YXRpb246IFVzZSBJbnN0cnVtZW50YXRpb24gc3RydWN0IGZvcgogcGFyYWxsZWwg d29ya2VycwoKVGhpcyBzaW1wbGlmaWVzIHRoZSBEU00gYWxsb2NhdGlvbnMgYSBiaXQgc2luY2Ug d2UgZG9uJ3QgbmVlZCB0bwpzZXBhcmF0ZWx5IGFsbG9jYXRlIFdBTCBhbmQgYnVmZmVyIHVzYWdl LCBhbmQgYWxsb3dzIHRoZSBlYXNpZXIgZnV0dXJlCmFkZGl0aW9uIG9mIGEgdGhpcmQgc3RhY2st YmFzZWQgc3RydWN0IGJlaW5nIGRpc2N1c3NlZC4KCkF1dGhvcjogTHVrYXMgRml0dGwgPGx1a2Fz QGZpdHRsLmNvbT4KUmV2aWV3ZWQtYnk6CkRpc2N1c3Npb246Ci0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2JyaW4vYnJpbi5jICAgICAgICB8IDQzICsrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jICAgIHwgNDMgKysrKysrLS0tLS0tLS0tLS0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jICAgfCA0MyArKysrKystLS0tLS0tLS0tLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyB8IDUyICsrKysrKysrLS0tLS0t LS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICB8IDY2ICsrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5j ICAgICB8IDE0ICsrKy0tLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmggICB8 ICA1ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmggICAgIHwgIDQgKy0KIDgg ZmlsZXMgY2hhbmdlZCwgOTkgaW5zZXJ0aW9ucygrKSwgMTcxIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW4uYwppbmRleCAzYTUxNzZjNzZjNy4uOWU1NDViNGVmMGUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv YnJpbi9icmluLmMKQEAgLTUxLDggKzUxLDcgQEAKICNkZWZpbmUgUEFSQUxMRUxfS0VZX0JSSU5f U0hBUkVECQlVSU5UNjRDT05TVCgweEIwMDAwMDAwMDAwMDAwMDEpCiAjZGVmaW5lIFBBUkFMTEVM X0tFWV9UVVBMRVNPUlQJCQlVSU5UNjRDT05TVCgweEIwMDAwMDAwMDAwMDAwMDIpCiAjZGVmaW5l IFBBUkFMTEVMX0tFWV9RVUVSWV9URVhUCQkJVUlOVDY0Q09OU1QoMHhCMDAwMDAwMDAwMDAwMDAz KQotI2RlZmluZSBQQVJBTExFTF9LRVlfV0FMX1VTQUdFCQkJVUlOVDY0Q09OU1QoMHhCMDAwMDAw MDAwMDAwMDA0KQotI2RlZmluZSBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFCQlVSU5UNjRDT05T VCgweEIwMDAwMDAwMDAwMDAwMDUpCisjZGVmaW5lIFBBUkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJ T04JVUlOVDY0Q09OU1QoMHhCMDAwMDAwMDAwMDAwMDA0KQogCiAvKgogICogU3RhdHVzIGZvciBp bmRleCBidWlsZHMgcGVyZm9ybWVkIGluIHBhcmFsbGVsLiAgVGhpcyBpcyBhbGxvY2F0ZWQgaW4g YQpAQCAtMTQ4LDggKzE0Nyw3IEBAIHR5cGVkZWYgc3RydWN0IEJyaW5MZWFkZXIKIAlCcmluU2hh cmVkICpicmluc2hhcmVkOwogCVNoYXJlZHNvcnQgKnNoYXJlZHNvcnQ7CiAJU25hcHNob3QJc25h cHNob3Q7Ci0JV2FsVXNhZ2UgICAqd2FsdXNhZ2U7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdl OworCUluc3RydW1lbnRhdGlvbiAqaW5zdHI7CiB9IEJyaW5MZWFkZXI7CiAKIC8qCkBAIC0yMzg3 LDggKzIzODUsNyBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRz dGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJQnJpblNoYXJlZCAqYnJpbnNo YXJlZDsKIAlTaGFyZWRzb3J0ICpzaGFyZWRzb3J0OwogCUJyaW5MZWFkZXIgKmJyaW5sZWFkZXIg PSBwYWxsb2MwX29iamVjdChCcmluTGVhZGVyKTsKLQlXYWxVc2FnZSAgICp3YWx1c2FnZTsKLQlC dWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9uICppbnN0cjsKIAlib29s CQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOwogCWludAkJCXF1ZXJ5bGVuOwogCkBAIC0yNDMw LDE4ICsyNDI3LDE0IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWls ZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAlzaG1fdG9jX2VzdGltYXRl X2tleXMoJnBjeHQtPmVzdGltYXRvciwgMik7CiAKIAkvKgotCSAqIEVzdGltYXRlIHNwYWNlIGZv ciBXYWxVc2FnZSBhbmQgQnVmZmVyVXNhZ2UgLS0gUEFSQUxMRUxfS0VZX1dBTF9VU0FHRQotCSAq IGFuZCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLgorCSAqIEVzdGltYXRlIHNwYWNlIGZvciBJ bnN0cnVtZW50YXRpb24gLS0gUEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRBVElPTi4KIAkgKgogCSAq IElmIHRoZXJlIGFyZSBubyBleHRlbnNpb25zIGxvYWRlZCB0aGF0IGNhcmUsIHdlIGNvdWxkIHNr aXAgdGhpcy4gIFdlCiAJICogaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdz IGxvb2tpbmcgYXQgaW5zdHJ1bWVudGF0aW9uLCBzbwogCSAqIGRvIGl0IHVuY29uZGl0aW9uYWxs eS4KIAkgKi8KIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCi0JCQkJ CQkgICBtdWxfc2l6ZShzaXplb2YoV2FsVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwotCXNobV90 b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKLQlzaG1fdG9jX2VzdGltYXRl X2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCi0JCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoQnVmZmVy VXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOworCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKEluc3Ry dW1lbnRhdGlvbiksIHBjeHQtPm53b3JrZXJzKSk7CiAJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZw Y3h0LT5lc3RpbWF0b3IsIDEpOwogCiAJLyogRmluYWxseSwgZXN0aW1hdGUgUEFSQUxMRUxfS0VZ X1FVRVJZX1RFWFQgc3BhY2UgKi8KQEAgLTI1MTQsMTUgKzI1MDcsMTIgQEAgX2JyaW5fYmVnaW5f cGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0 aW9uIGluZGV4LAogCX0KIAogCS8qCi0JICogQWxsb2NhdGUgc3BhY2UgZm9yIGVhY2ggd29ya2Vy J3MgV2FsVXNhZ2UgYW5kIEJ1ZmZlclVzYWdlOyBubyBuZWVkIHRvCisJICogQWxsb2NhdGUgc3Bh Y2UgZm9yIGVhY2ggd29ya2VyJ3MgSW5zdHJ1bWVudGF0aW9uOyBubyBuZWVkIHRvCiAJICogaW5p dGlhbGl6ZS4KIAkgKi8KLQl3YWx1c2FnZSA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLAot CQkJCQkJCQltdWxfc2l6ZShzaXplb2YoV2FsVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwotCXNo bV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgd2FsdXNhZ2Up OwotCWJ1ZmZlcnVzYWdlID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsCi0JCQkJCQkJCSAg IG11bF9zaXplKHNpemVvZihCdWZmZXJVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7Ci0Jc2htX3Rv Y19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBidWZmZXJ1c2Fn ZSk7CisJaW5zdHIgPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywKKwkJCQkJCQkgbXVsX3Np emUoc2l6ZW9mKEluc3RydW1lbnRhdGlvbiksIHBjeHQtPm53b3JrZXJzKSk7CisJc2htX3RvY19p bnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfSU5TVFJVTUVOVEFUSU9OLCBpbnN0cik7CiAK IAkvKiBMYXVuY2ggd29ya2Vycywgc2F2aW5nIHN0YXR1cyBmb3IgbGVhZGVyL2NhbGxlciAqLwog CUxhdW5jaFBhcmFsbGVsV29ya2VycyhwY3h0KTsKQEAgLTI1MzMsOCArMjUyMyw3IEBAIF9icmlu X2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwKIAlicmlubGVhZGVyLT5icmluc2hhcmVkID0gYnJpbnNoYXJlZDsK IAlicmlubGVhZGVyLT5zaGFyZWRzb3J0ID0gc2hhcmVkc29ydDsKIAlicmlubGVhZGVyLT5zbmFw c2hvdCA9IHNuYXBzaG90OwotCWJyaW5sZWFkZXItPndhbHVzYWdlID0gd2FsdXNhZ2U7Ci0JYnJp bmxlYWRlci0+YnVmZmVydXNhZ2UgPSBidWZmZXJ1c2FnZTsKKwlicmlubGVhZGVyLT5pbnN0ciA9 IGluc3RyOwogCiAJLyogSWYgbm8gd29ya2VycyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVuY2hlZCwg YmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+bndvcmtlcnNfbGF1bmNo ZWQgPT0gMCkKQEAgLTI1NzMsNyArMjU2Miw3IEBAIF9icmluX2VuZF9wYXJhbGxlbChCcmluTGVh ZGVyICpicmlubGVhZGVyLCBCcmluQnVpbGRTdGF0ZSAqc3RhdGUpCiAJICogb3Igd2UgbWlnaHQg Z2V0IGluY29tcGxldGUgZGF0YS4pCiAJICovCiAJZm9yIChpID0gMDsgaSA8IGJyaW5sZWFkZXIt PnBjeHQtPm53b3JrZXJzX2xhdW5jaGVkOyBpKyspCi0JCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5 KCZicmlubGVhZGVyLT5idWZmZXJ1c2FnZVtpXSwgJmJyaW5sZWFkZXItPndhbHVzYWdlW2ldKTsK KwkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJmJyaW5sZWFkZXItPmluc3RyW2ldKTsKIAogCS8q IEZyZWUgbGFzdCByZWZlcmVuY2UgdG8gTVZDQyBzbmFwc2hvdCwgaWYgb25lIHdhcyB1c2VkICov CiAJaWYgKElzTVZDQ1NuYXBzaG90KGJyaW5sZWFkZXItPnNuYXBzaG90KSkKQEAgLTI4ODgsOCAr Mjg3Nyw3IEBAIF9icmluX3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2ht X3RvYyAqdG9jKQogCUxPQ0tNT0RFCWhlYXBMb2NrbW9kZTsKIAlMT0NLTU9ERQlpbmRleExvY2tt b2RlOwogCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0cjsKLQlXYWxVc2FnZSAgICp3YWx1c2Fn ZTsKLQlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9uICp3b3JrZXJf aW5zdHI7CiAJaW50CQkJc29ydG1lbTsKIAogCS8qCkBAIC0yOTUwLDExICsyOTM4LDggQEAgX2Jy aW5fcGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJ CQkJCQkJCSAgaGVhcFJlbCwgaW5kZXhSZWwsIHNvcnRtZW0sIGZhbHNlKTsKIAogCS8qIFJlcG9y dCBXQUwvYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBleGVjdXRpb24gKi8KLQlidWZmZXJ1 c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRSwgZmFs c2UpOwotCXdhbHVzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfV0FMX1VT QUdFLCBmYWxzZSk7Ci0JSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KGluc3RyLAotCQkJCQkJICAmYnVm ZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAotCQkJCQkJICAmd2FsdXNhZ2VbUGFyYWxs ZWxXb3JrZXJOdW1iZXJdKTsKKwl3b3JrZXJfaW5zdHIgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBB UkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJT04sIGZhbHNlKTsKKwlJbnN0ckVuZFBhcmFsbGVsUXVl cnkoaW5zdHIsICZ3b3JrZXJfaW5zdHJbUGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsKIAogCWluZGV4 X2Nsb3NlKGluZGV4UmVsLCBpbmRleExvY2ttb2RlKTsKIAl0YWJsZV9jbG9zZShoZWFwUmVsLCBo ZWFwTG9ja21vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNl cnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKaW5kZXggMGQ4MGY3MmEw YjAuLmYzZGU2MmNlN2YzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmlu c2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKQEAgLTQ1LDgg KzQ1LDcgQEAKICNkZWZpbmUgUEFSQUxMRUxfS0VZX0dJTl9TSEFSRUQJCQlVSU5UNjRDT05TVCgw eEIwMDAwMDAwMDAwMDAwMDEpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9UVVBMRVNPUlQJCQlVSU5U NjRDT05TVCgweEIwMDAwMDAwMDAwMDAwMDIpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9RVUVSWV9U RVhUCQkJVUlOVDY0Q09OU1QoMHhCMDAwMDAwMDAwMDAwMDAzKQotI2RlZmluZSBQQVJBTExFTF9L RVlfV0FMX1VTQUdFCQkJVUlOVDY0Q09OU1QoMHhCMDAwMDAwMDAwMDAwMDA0KQotI2RlZmluZSBQ QVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFCQlVSU5UNjRDT05TVCgweEIwMDAwMDAwMDAwMDAwMDUp CisjZGVmaW5lIFBBUkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJT04JVUlOVDY0Q09OU1QoMHhCMDAw MDAwMDAwMDAwMDA0KQogCiAvKgogICogU3RhdHVzIGZvciBpbmRleCBidWlsZHMgcGVyZm9ybWVk IGluIHBhcmFsbGVsLiAgVGhpcyBpcyBhbGxvY2F0ZWQgaW4gYQpAQCAtMTM4LDggKzEzNyw3IEBA IHR5cGVkZWYgc3RydWN0IEdpbkxlYWRlcgogCUdpbkJ1aWxkU2hhcmVkICpnaW5zaGFyZWQ7CiAJ U2hhcmVkc29ydCAqc2hhcmVkc29ydDsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKLQlXYWxVc2FnZSAg ICp3YWx1c2FnZTsKLQlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9u ICppbnN0cjsKIH0gR2luTGVhZGVyOwogCiB0eXBlZGVmIHN0cnVjdApAQCAtOTQ1LDggKzk0Myw3 IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRp b24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJR2luQnVpbGRTaGFyZWQgKmdpbnNoYXJlZDsKIAlT aGFyZWRzb3J0ICpzaGFyZWRzb3J0OwogCUdpbkxlYWRlciAgKmdpbmxlYWRlciA9IHBhbGxvYzBf b2JqZWN0KEdpbkxlYWRlcik7Ci0JV2FsVXNhZ2UgICAqd2FsdXNhZ2U7Ci0JQnVmZmVyVXNhZ2Ug KmJ1ZmZlcnVzYWdlOworCUluc3RydW1lbnRhdGlvbiAqaW5zdHI7CiAJYm9vbAkJbGVhZGVycGFy dGljaXBhdGVzID0gdHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsKIApAQCAtOTg3LDE4ICs5ODQsMTQg QEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlv biBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVz dGltYXRvciwgMik7CiAKIAkvKgotCSAqIEVzdGltYXRlIHNwYWNlIGZvciBXYWxVc2FnZSBhbmQg QnVmZmVyVXNhZ2UgLS0gUEFSQUxMRUxfS0VZX1dBTF9VU0FHRQotCSAqIGFuZCBQQVJBTExFTF9L RVlfQlVGRkVSX1VTQUdFLgorCSAqIEVzdGltYXRlIHNwYWNlIGZvciBJbnN0cnVtZW50YXRpb24g LS0gUEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRBVElPTi4KIAkgKgogCSAqIElmIHRoZXJlIGFyZSBu byBleHRlbnNpb25zIGxvYWRlZCB0aGF0IGNhcmUsIHdlIGNvdWxkIHNraXAgdGhpcy4gIFdlCiAJ ICogaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdzIGxvb2tpbmcgYXQgaW5z dHJ1bWVudGF0aW9uLCBzbwogCSAqIGRvIGl0IHVuY29uZGl0aW9uYWxseS4KIAkgKi8KIAlzaG1f dG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCi0JCQkJCQkgICBtdWxfc2l6ZShz aXplb2YoV2FsVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwotCXNobV90b2NfZXN0aW1hdGVfa2V5 cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKLQlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5l c3RpbWF0b3IsCi0JCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoQnVmZmVyVXNhZ2UpLCBwY3h0LT5u d29ya2VycykpOworCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKEluc3RydW1lbnRhdGlvbiksIHBj eHQtPm53b3JrZXJzKSk7CiAJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3Is IDEpOwogCiAJLyogRmluYWxseSwgZXN0aW1hdGUgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQgc3Bh Y2UgKi8KQEAgLTEwNjYsMTUgKzEwNTksMTIgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWls ZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAl9CiAK IAkvKgotCSAqIEFsbG9jYXRlIHNwYWNlIGZvciBlYWNoIHdvcmtlcidzIFdhbFVzYWdlIGFuZCBC dWZmZXJVc2FnZTsgbm8gbmVlZCB0bworCSAqIEFsbG9jYXRlIHNwYWNlIGZvciBlYWNoIHdvcmtl cidzIEluc3RydW1lbnRhdGlvbjsgbm8gbmVlZCB0bwogCSAqIGluaXRpYWxpemUuCiAJICovCi0J d2FsdXNhZ2UgPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywKLQkJCQkJCQkJbXVsX3NpemUo c2l6ZW9mKFdhbFVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKLQlzaG1fdG9jX2luc2VydChwY3h0 LT50b2MsIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UsIHdhbHVzYWdlKTsKLQlidWZmZXJ1c2FnZSA9 IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLAotCQkJCQkJCQkgICBtdWxfc2l6ZShzaXplb2Yo QnVmZmVyVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwotCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRv YywgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRSwgYnVmZmVydXNhZ2UpOworCWluc3RyID0gc2ht X3RvY19hbGxvY2F0ZShwY3h0LT50b2MsCisJCQkJCQkJIG11bF9zaXplKHNpemVvZihJbnN0cnVt ZW50YXRpb24pLCBwY3h0LT5ud29ya2VycykpOworCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywg UEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRBVElPTiwgaW5zdHIpOwogCiAJLyogTGF1bmNoIHdvcmtl cnMsIHNhdmluZyBzdGF0dXMgZm9yIGxlYWRlci9jYWxsZXIgKi8KIAlMYXVuY2hQYXJhbGxlbFdv cmtlcnMocGN4dCk7CkBAIC0xMDg1LDggKzEwNzUsNyBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdp bkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAog CWdpbmxlYWRlci0+Z2luc2hhcmVkID0gZ2luc2hhcmVkOwogCWdpbmxlYWRlci0+c2hhcmVkc29y dCA9IHNoYXJlZHNvcnQ7CiAJZ2lubGVhZGVyLT5zbmFwc2hvdCA9IHNuYXBzaG90OwotCWdpbmxl YWRlci0+d2FsdXNhZ2UgPSB3YWx1c2FnZTsKLQlnaW5sZWFkZXItPmJ1ZmZlcnVzYWdlID0gYnVm ZmVydXNhZ2U7CisJZ2lubGVhZGVyLT5pbnN0ciA9IGluc3RyOwogCiAJLyogSWYgbm8gd29ya2Vy cyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVuY2hlZCwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkg Ki8KIAlpZiAocGN4dC0+bndvcmtlcnNfbGF1bmNoZWQgPT0gMCkKQEAgLTExMjUsNyArMTExNCw3 IEBAIF9naW5fZW5kX3BhcmFsbGVsKEdpbkxlYWRlciAqZ2lubGVhZGVyLCBHaW5CdWlsZFN0YXRl ICpzdGF0ZSkKIAkgKiBvciB3ZSBtaWdodCBnZXQgaW5jb21wbGV0ZSBkYXRhLikKIAkgKi8KIAlm b3IgKGkgPSAwOyBpIDwgZ2lubGVhZGVyLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZDsgaSsrKQot CQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmZ2lubGVhZGVyLT5idWZmZXJ1c2FnZVtpXSwgJmdp bmxlYWRlci0+d2FsdXNhZ2VbaV0pOworCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmZ2lubGVh ZGVyLT5pbnN0cltpXSk7CiAKIAkvKiBGcmVlIGxhc3QgcmVmZXJlbmNlIHRvIE1WQ0Mgc25hcHNo b3QsIGlmIG9uZSB3YXMgdXNlZCAqLwogCWlmIChJc01WQ0NTbmFwc2hvdChnaW5sZWFkZXItPnNu YXBzaG90KSkKQEAgLTIxMTksOCArMjEwOCw3IEBAIF9naW5fcGFyYWxsZWxfYnVpbGRfbWFpbihk c21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJTE9DS01PREUJaGVhcExvY2ttb2RlOwog CUxPQ0tNT0RFCWluZGV4TG9ja21vZGU7CiAJUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyOwot CVdhbFVzYWdlICAgKndhbHVzYWdlOwotCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKKwlJbnN0 cnVtZW50YXRpb24gKndvcmtlcl9pbnN0cjsKIAlpbnQJCQlzb3J0bWVtOwogCiAJLyoKQEAgLTIy MDAsMTEgKzIxODgsOCBAQCBfZ2luX3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNl Zywgc2htX3RvYyAqdG9jKQogCQkJCQkJCQkgaGVhcFJlbCwgaW5kZXhSZWwsIHNvcnRtZW0sIGZh bHNlKTsKIAogCS8qIFJlcG9ydCBXQUwvYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBleGVj dXRpb24gKi8KLQlidWZmZXJ1c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZ X0JVRkZFUl9VU0FHRSwgZmFsc2UpOwotCXdhbHVzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQ QVJBTExFTF9LRVlfV0FMX1VTQUdFLCBmYWxzZSk7Ci0JSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KGlu c3RyLAotCQkJCQkJICAmYnVmZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAotCQkJCQkJ ICAmd2FsdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsKKwl3b3JrZXJfaW5zdHIgPSBzaG1f dG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJT04sIGZhbHNlKTsKKwlJ bnN0ckVuZFBhcmFsbGVsUXVlcnkoaW5zdHIsICZ3b3JrZXJfaW5zdHJbUGFyYWxsZWxXb3JrZXJO dW1iZXJdKTsKIAogCWluZGV4X2Nsb3NlKGluZGV4UmVsLCBpbmRleExvY2ttb2RlKTsKIAl0YWJs ZV9jbG9zZShoZWFwUmVsLCBoZWFwTG9ja21vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNv cnQuYwppbmRleCAyZDdiN2NlZjkxMi4uY2IyMzhmODYyYTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRy ZWUvbmJ0c29ydC5jCkBAIC02Niw4ICs2Niw3IEBACiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9UVVBM RVNPUlQJCQlVSU5UNjRDT05TVCgweEEwMDAwMDAwMDAwMDAwMDIpCiAjZGVmaW5lIFBBUkFMTEVM X0tFWV9UVVBMRVNPUlRfU1BPT0wyCVVJTlQ2NENPTlNUKDB4QTAwMDAwMDAwMDAwMDAwMykKICNk ZWZpbmUgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQJCQlVSU5UNjRDT05TVCgweEEwMDAwMDAwMDAw MDAwMDQpCi0jZGVmaW5lIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UJCQlVSU5UNjRDT05TVCgweEEw MDAwMDAwMDAwMDAwMDUpCi0jZGVmaW5lIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UJCVVJTlQ2 NENPTlNUKDB4QTAwMDAwMDAwMDAwMDAwNikKKyNkZWZpbmUgUEFSQUxMRUxfS0VZX0lOU1RSVU1F TlRBVElPTglVSU5UNjRDT05TVCgweEEwMDAwMDAwMDAwMDAwMDUpCiAKIC8qCiAgKiBESVNBQkxF X0xFQURFUl9QQVJUSUNJUEFUSU9OIGRpc2FibGVzIHRoZSBsZWFkZXIncyBwYXJ0aWNpcGF0aW9u IGluCkBAIC0xOTUsOCArMTk0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQlRMZWFkZXIKIAlTaGFyZWRz b3J0ICpzaGFyZWRzb3J0OwogCVNoYXJlZHNvcnQgKnNoYXJlZHNvcnQyOwogCVNuYXBzaG90CXNu YXBzaG90OwotCVdhbFVzYWdlICAgKndhbHVzYWdlOwotCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2Fn ZTsKKwlJbnN0cnVtZW50YXRpb24gKmluc3RyOwogfSBCVExlYWRlcjsKIAogLyoKQEAgLTE0MDgs OCArMTQwNiw3IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs IGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAlTaGFyZWRzb3J0ICpzaGFyZWRzb3J0 MjsKIAlCVFNwb29sICAgICpidHNwb29sID0gYnVpbGRzdGF0ZS0+c3Bvb2w7CiAJQlRMZWFkZXIg ICAqYnRsZWFkZXIgPSBwYWxsb2MwX29iamVjdChCVExlYWRlcik7Ci0JV2FsVXNhZ2UgICAqd2Fs dXNhZ2U7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOworCUluc3RydW1lbnRhdGlvbiAqaW5z dHI7CiAJYm9vbAkJbGVhZGVycGFydGljaXBhdGVzID0gdHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsK IApAQCAtMTQ2MiwxOCArMTQ1OSwxNCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRl ICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJfQogCiAJLyoK LQkgKiBFc3RpbWF0ZSBzcGFjZSBmb3IgV2FsVXNhZ2UgYW5kIEJ1ZmZlclVzYWdlIC0tIFBBUkFM TEVMX0tFWV9XQUxfVVNBR0UKLQkgKiBhbmQgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRS4KKwkg KiBFc3RpbWF0ZSBzcGFjZSBmb3IgSW5zdHJ1bWVudGF0aW9uIC0tIFBBUkFMTEVMX0tFWV9JTlNU UlVNRU5UQVRJT04uCiAJICoKIAkgKiBJZiB0aGVyZSBhcmUgbm8gZXh0ZW5zaW9ucyBsb2FkZWQg dGhhdCBjYXJlLCB3ZSBjb3VsZCBza2lwIHRoaXMuICBXZQogCSAqIGhhdmUgbm8gd2F5IG9mIGtu b3dpbmcgd2hldGhlciBhbnlvbmUncyBsb29raW5nIGF0IGluc3RydW1lbnRhdGlvbiwgc28KIAkg KiBkbyBpdCB1bmNvbmRpdGlvbmFsbHkuCiAJICovCiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygm cGN4dC0+ZXN0aW1hdG9yLAotCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKFdhbFVzYWdlKSwgcGN4 dC0+bndvcmtlcnMpKTsKLQlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwg MSk7Ci0Jc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLAotCQkJCQkJICAg bXVsX3NpemUoc2l6ZW9mKEJ1ZmZlclVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKKwkJCQkJCSAg IG11bF9zaXplKHNpemVvZihJbnN0cnVtZW50YXRpb24pLCBwY3h0LT5ud29ya2VycykpOwogCXNo bV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKIAogCS8qIEZpbmFsbHks IGVzdGltYXRlIFBBUkFMTEVMX0tFWV9RVUVSWV9URVhUIHNwYWNlICovCkBAIC0xNTYwLDE1ICsx NTUzLDEyIEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJv b2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAl9CiAKIAkvKgotCSAqIEFsbG9jYXRlIHNw YWNlIGZvciBlYWNoIHdvcmtlcidzIFdhbFVzYWdlIGFuZCBCdWZmZXJVc2FnZTsgbm8gbmVlZCB0 bworCSAqIEFsbG9jYXRlIHNwYWNlIGZvciBlYWNoIHdvcmtlcidzIEluc3RydW1lbnRhdGlvbjsg bm8gbmVlZCB0bwogCSAqIGluaXRpYWxpemUuCiAJICovCi0Jd2FsdXNhZ2UgPSBzaG1fdG9jX2Fs bG9jYXRlKHBjeHQtPnRvYywKLQkJCQkJCQkJbXVsX3NpemUoc2l6ZW9mKFdhbFVzYWdlKSwgcGN4 dC0+bndvcmtlcnMpKTsKLQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9X QUxfVVNBR0UsIHdhbHVzYWdlKTsKLQlidWZmZXJ1c2FnZSA9IHNobV90b2NfYWxsb2NhdGUocGN4 dC0+dG9jLAotCQkJCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoQnVmZmVyVXNhZ2UpLCBwY3h0LT5u d29ya2VycykpOwotCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX0JVRkZF Ul9VU0FHRSwgYnVmZmVydXNhZ2UpOworCWluc3RyID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50 b2MsCisJCQkJCQkJIG11bF9zaXplKHNpemVvZihJbnN0cnVtZW50YXRpb24pLCBwY3h0LT5ud29y a2VycykpOworCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZX0lOU1RSVU1F TlRBVElPTiwgaW5zdHIpOwogCiAJLyogTGF1bmNoIHdvcmtlcnMsIHNhdmluZyBzdGF0dXMgZm9y IGxlYWRlci9jYWxsZXIgKi8KIAlMYXVuY2hQYXJhbGxlbFdvcmtlcnMocGN4dCk7CkBAIC0xNTgw LDggKzE1NzAsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRl LCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJYnRsZWFkZXItPnNoYXJlZHNvcnQg PSBzaGFyZWRzb3J0OwogCWJ0bGVhZGVyLT5zaGFyZWRzb3J0MiA9IHNoYXJlZHNvcnQyOwogCWJ0 bGVhZGVyLT5zbmFwc2hvdCA9IHNuYXBzaG90OwotCWJ0bGVhZGVyLT53YWx1c2FnZSA9IHdhbHVz YWdlOwotCWJ0bGVhZGVyLT5idWZmZXJ1c2FnZSA9IGJ1ZmZlcnVzYWdlOworCWJ0bGVhZGVyLT5p bnN0ciA9IGluc3RyOwogCiAJLyogSWYgbm8gd29ya2VycyB3ZXJlIHN1Y2Nlc3NmdWxseSBsYXVu Y2hlZCwgYmFjayBvdXQgKGRvIHNlcmlhbCBidWlsZCkgKi8KIAlpZiAocGN4dC0+bndvcmtlcnNf bGF1bmNoZWQgPT0gMCkKQEAgLTE2MjAsNyArMTYwOSw3IEBAIF9idF9lbmRfcGFyYWxsZWwoQlRM ZWFkZXIgKmJ0bGVhZGVyKQogCSAqIG9yIHdlIG1pZ2h0IGdldCBpbmNvbXBsZXRlIGRhdGEuKQog CSAqLwogCWZvciAoaSA9IDA7IGkgPCBidGxlYWRlci0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQ7 IGkrKykKLQkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJmJ0bGVhZGVyLT5idWZmZXJ1c2FnZVtp XSwgJmJ0bGVhZGVyLT53YWx1c2FnZVtpXSk7CisJCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZi dGxlYWRlci0+aW5zdHJbaV0pOwogCiAJLyogRnJlZSBsYXN0IHJlZmVyZW5jZSB0byBNVkNDIHNu YXBzaG90LCBpZiBvbmUgd2FzIHVzZWQgKi8KIAlpZiAoSXNNVkNDU25hcHNob3QoYnRsZWFkZXIt PnNuYXBzaG90KSkKQEAgLTE3NTQsOCArMTc0Myw3IEBAIF9idF9wYXJhbGxlbF9idWlsZF9tYWlu KGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlMT0NLTU9ERQloZWFwTG9ja21vZGU7 CiAJTE9DS01PREUJaW5kZXhMb2NrbW9kZTsKIAlRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHI7 Ci0JV2FsVXNhZ2UgICAqd2FsdXNhZ2U7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOworCUlu c3RydW1lbnRhdGlvbiAqd29ya2VyX2luc3RyOwogCWludAkJCXNvcnRtZW07CiAKICNpZmRlZiBC VFJFRV9CVUlMRF9TVEFUUwpAQCAtMTgzNywxMSArMTgyNSw4IEBAIF9idF9wYXJhbGxlbF9idWls ZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAkJCQkJCQkgICBzaGFyZWRz b3J0Miwgc29ydG1lbSwgZmFsc2UpOwogCiAJLyogUmVwb3J0IFdBTC9idWZmZXIgdXNhZ2UgZHVy aW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwotCWJ1ZmZlcnVzYWdlID0gc2htX3RvY19sb29rdXAo dG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7Ci0Jd2FsdXNhZ2UgPSBzaG1f dG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UsIGZhbHNlKTsKLQlJbnN0ckVu ZFBhcmFsbGVsUXVlcnkoaW5zdHIsCi0JCQkJCQkgICZidWZmZXJ1c2FnZVtQYXJhbGxlbFdvcmtl ck51bWJlcl0sCi0JCQkJCQkgICZ3YWx1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0pOworCXdv cmtlcl9pbnN0ciA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX0lOU1RSVU1FTlRB VElPTiwgZmFsc2UpOworCUluc3RyRW5kUGFyYWxsZWxRdWVyeShpbnN0ciwgJndvcmtlcl9pbnN0 cltQYXJhbGxlbFdvcmtlck51bWJlcl0pOwogCiAjaWZkZWYgQlRSRUVfQlVJTERfU1RBVFMKIAlp ZiAobG9nX2J0cmVlX2J1aWxkX3N0YXRzKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdmFjdXVtcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVs LmMKaW5kZXggYzMzMGM4OTFjMDMuLmI1ZmVkNTRmYjg1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Zh Y3V1bXBhcmFsbGVsLmMKQEAgLTQ3LDkgKzQ3LDggQEAKICAqLwogI2RlZmluZSBQQVJBTExFTF9W QUNVVU1fS0VZX1NIQVJFRAkJCTEKICNkZWZpbmUgUEFSQUxMRUxfVkFDVVVNX0tFWV9RVUVSWV9U RVhUCQkyCi0jZGVmaW5lIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfQlVGRkVSX1VTQUdFCTMKLSNkZWZp bmUgUEFSQUxMRUxfVkFDVVVNX0tFWV9XQUxfVVNBR0UJCTQKLSNkZWZpbmUgUEFSQUxMRUxfVkFD VVVNX0tFWV9JTkRFWF9TVEFUUwkJNQorI2RlZmluZSBQQVJBTExFTF9WQUNVVU1fS0VZX0lOU1RS VU1FTlRBVElPTgkzCisjZGVmaW5lIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfSU5ERVhfU1RBVFMJCTQK IAogLyoKICAqIFNoYXJlZCBpbmZvcm1hdGlvbiBhbW9uZyBwYXJhbGxlbCB3b3JrZXJzLiAgU28g dGhpcyBpcyBhbGxvY2F0ZWQgaW4gdGhlIERTTQpAQCAtMTg4LDExICsxODcsOCBAQCBzdHJ1Y3Qg UGFyYWxsZWxWYWN1dW1TdGF0ZQogCS8qIFNoYXJlZCBkZWFkIGl0ZW1zIHNwYWNlIGFtb25nIHBh cmFsbGVsIHZhY3V1bSB3b3JrZXJzICovCiAJVGlkU3RvcmUgICAqZGVhZF9pdGVtczsKIAotCS8q IFBvaW50cyB0byBidWZmZXIgdXNhZ2UgYXJlYSBpbiBEU00gKi8KLQlCdWZmZXJVc2FnZSAqYnVm ZmVyX3VzYWdlOwotCi0JLyogUG9pbnRzIHRvIFdBTCB1c2FnZSBhcmVhIGluIERTTSAqLwotCVdh bFVzYWdlICAgKndhbF91c2FnZTsKKwkvKiBQb2ludHMgdG8gaW5zdHJ1bWVudGF0aW9uIGFyZWEg aW4gRFNNICovCisJSW5zdHJ1bWVudGF0aW9uICppbnN0cjsKIAogCS8qCiAJICogRmFsc2UgaWYg dGhlIGluZGV4IGlzIHRvdGFsbHkgdW5zdWl0YWJsZSB0YXJnZXQgZm9yIGFsbCBwYXJhbGxlbApA QCAtMjUwLDggKzI0Niw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9pbml0KFJlbGF0aW9uIHJlbCwgUmVs YXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywKIAlQVlNoYXJlZCAgICpzaGFyZWQ7CiAJVGlk U3RvcmUgICAqZGVhZF9pdGVtczsKIAlQVkluZFN0YXRzICppbmRzdGF0czsKLQlCdWZmZXJVc2Fn ZSAqYnVmZmVyX3VzYWdlOwotCVdhbFVzYWdlICAgKndhbF91c2FnZTsKKwlJbnN0cnVtZW50YXRp b24gKmluc3RyOwogCWJvb2wJICAgKndpbGxfcGFyYWxsZWxfdmFjdXVtOwogCVNpemUJCWVzdF9p bmRzdGF0c19sZW47CiAJU2l6ZQkJZXN0X3NoYXJlZF9sZW47CkBAIC0zMDQsMTggKzI5OSwxNSBA QCBwYXJhbGxlbF92YWN1dW1faW5pdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uICppbmRyZWxzLCBp bnQgbmluZGV4ZXMsCiAJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEp OwogCiAJLyoKLQkgKiBFc3RpbWF0ZSBzcGFjZSBmb3IgQnVmZmVyVXNhZ2UgYW5kIFdhbFVzYWdl IC0tCi0JICogUEFSQUxMRUxfVkFDVVVNX0tFWV9CVUZGRVJfVVNBR0UgYW5kIFBBUkFMTEVMX1ZB Q1VVTV9LRVlfV0FMX1VTQUdFLgorCSAqIEVzdGltYXRlIHNwYWNlIGZvciBJbnN0cnVtZW50YXRp b24gLS0KKwkgKiBQQVJBTExFTF9WQUNVVU1fS0VZX0lOU1RSVU1FTlRBVElPTi4KIAkgKgogCSAq IElmIHRoZXJlIGFyZSBubyBleHRlbnNpb25zIGxvYWRlZCB0aGF0IGNhcmUsIHdlIGNvdWxkIHNr aXAgdGhpcy4gIFdlCiAJICogaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdz IGxvb2tpbmcgYXQgaW5zdHJ1bWVudGF0aW9uLCBzbwogCSAqIGRvIGl0IHVuY29uZGl0aW9uYWxs eS4KIAkgKi8KIAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCi0JCQkJ CQkgICBtdWxfc2l6ZShzaXplb2YoQnVmZmVyVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwotCXNo bV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKLQlzaG1fdG9jX2VzdGlt YXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCi0JCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoV2Fs VXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOworCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKEluc3Ry dW1lbnRhdGlvbiksIHBjeHQtPm53b3JrZXJzKSk7CiAJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZw Y3h0LT5lc3RpbWF0b3IsIDEpOwogCiAJLyogRmluYWxseSwgZXN0aW1hdGUgUEFSQUxMRUxfVkFD VVVNX0tFWV9RVUVSWV9URVhUIHNwYWNlICovCkBAIC0zOTYsMTcgKzM4OCwxMyBAQCBwYXJhbGxl bF92YWN1dW1faW5pdChSZWxhdGlvbiByZWwsIFJlbGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4 ZXMsCiAJcHZzLT5zaGFyZWQgPSBzaGFyZWQ7CiAKIAkvKgotCSAqIEFsbG9jYXRlIHNwYWNlIGZv ciBlYWNoIHdvcmtlcidzIEJ1ZmZlclVzYWdlIGFuZCBXYWxVc2FnZTsgbm8gbmVlZCB0bwotCSAq IGluaXRpYWxpemUKKwkgKiBBbGxvY2F0ZSBzcGFjZSBmb3IgZWFjaCB3b3JrZXIncyBJbnN0cnVt ZW50YXRpb247IG5vIG5lZWQgdG8KKwkgKiBpbml0aWFsaXplLgogCSAqLwotCWJ1ZmZlcl91c2Fn ZSA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLAotCQkJCQkJCQkJbXVsX3NpemUoc2l6ZW9m KEJ1ZmZlclVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKLQlzaG1fdG9jX2luc2VydChwY3h0LT50 b2MsIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfQlVGRkVSX1VTQUdFLCBidWZmZXJfdXNhZ2UpOwotCXB2 cy0+YnVmZmVyX3VzYWdlID0gYnVmZmVyX3VzYWdlOwotCXdhbF91c2FnZSA9IHNobV90b2NfYWxs b2NhdGUocGN4dC0+dG9jLAotCQkJCQkJCQkgbXVsX3NpemUoc2l6ZW9mKFdhbFVzYWdlKSwgcGN4 dC0+bndvcmtlcnMpKTsKLQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX1ZBQ1VV TV9LRVlfV0FMX1VTQUdFLCB3YWxfdXNhZ2UpOwotCXB2cy0+d2FsX3VzYWdlID0gd2FsX3VzYWdl OworCWluc3RyID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsCisJCQkJCQkJIG11bF9zaXpl KHNpemVvZihJbnN0cnVtZW50YXRpb24pLCBwY3h0LT5ud29ya2VycykpOworCXNobV90b2NfaW5z ZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfVkFDVVVNX0tFWV9JTlNUUlVNRU5UQVRJT04sIGluc3Ry KTsKKwlwdnMtPmluc3RyID0gaW5zdHI7CiAKIAkvKiBTdG9yZSBxdWVyeSBzdHJpbmcgZm9yIHdv cmtlcnMgKi8KIAlpZiAoZGVidWdfcXVlcnlfc3RyaW5nKQpAQCAtNzQ5LDcgKzczNyw3IEBAIHBh cmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2 cywgaW50IG51bV9pbmRleF9zY2FuCiAJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0ZpbmlzaChw dnMtPnBjeHQpOwogCiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcHZzLT5wY3h0LT5ud29ya2Vyc19s YXVuY2hlZDsgaSsrKQotCQkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJnB2cy0+YnVmZmVyX3Vz YWdlW2ldLCAmcHZzLT53YWxfdXNhZ2VbaV0pOworCQkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnko JnB2cy0+aW5zdHJbaV0pOwogCX0KIAogCS8qCkBAIC0xMDA3LDggKzk5NSw3IEBAIHBhcmFsbGVs X3ZhY3V1bV9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlQVlNoYXJlZCAg ICpzaGFyZWQ7CiAJVGlkU3RvcmUgICAqZGVhZF9pdGVtczsKIAlRdWVyeUluc3RydW1lbnRhdGlv biAqaW5zdHI7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZmZlcl91c2FnZTsKLQlXYWxVc2FnZSAgICp3YWxf dXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9uICp3b3JrZXJfaW5zdHI7CiAJaW50CQkJbmluZGV4ZXM7 CiAJY2hhcgkgICAqc2hhcmVkcXVlcnk7CiAJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJh Y2s7CkBAIC0xMTAyLDExICsxMDg5LDggQEAgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21l bnQgKnNlZywgc2htX3RvYyAqdG9jKQogCXBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX3NhZmVfaW5k ZXhlcygmcHZzKTsKIAogCS8qIFJlcG9ydCBidWZmZXIvV0FMIHVzYWdlIGR1cmluZyBwYXJhbGxl bCBleGVjdXRpb24gKi8KLQlidWZmZXJfdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFM TEVMX1ZBQ1VVTV9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7Ci0Jd2FsX3VzYWdlID0gc2htX3Rv Y19sb29rdXAodG9jLCBQQVJBTExFTF9WQUNVVU1fS0VZX1dBTF9VU0FHRSwgZmFsc2UpOwotCUlu c3RyRW5kUGFyYWxsZWxRdWVyeShpbnN0ciwKLQkJCQkJCSAgJmJ1ZmZlcl91c2FnZVtQYXJhbGxl bFdvcmtlck51bWJlcl0sCi0JCQkJCQkgICZ3YWxfdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJd KTsKKwl3b3JrZXJfaW5zdHIgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX1ZBQ1VVTV9L RVlfSU5TVFJVTUVOVEFUSU9OLCBmYWxzZSk7CisJSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KGluc3Ry LCAmd29ya2VyX2luc3RyW1BhcmFsbGVsV29ya2VyTnVtYmVyXSk7CiAKIAkvKiBSZXBvcnQgYW55 IHJlbWFpbmluZyBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSB0aW1lICovCiAJaWYgKHRyYWNrX2Nv c3RfZGVsYXlfdGltaW5nKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Bh cmFsbGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCBhOTll MzdjOThlMi4uYzA5ZDUxNDI4YTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBA IC02MCwxMyArNjAsMTIgQEAKICNkZWZpbmUgUEFSQUxMRUxfS0VZX0VYRUNVVE9SX0ZJWEVECQlV SU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDEpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9QTEFO TkVEU1RNVAkJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDAyKQogI2RlZmluZSBQQVJBTExF TF9LRVlfUEFSQU1MSVNUSU5GTwkJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDAzKQotI2Rl ZmluZSBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFCQlVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAw MDAwMDQpCisjZGVmaW5lIFBBUkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJT04JVUlOVDY0Q09OU1Qo MHhFMDAwMDAwMDAwMDAwMDA0KQogI2RlZmluZSBQQVJBTExFTF9LRVlfVFVQTEVfUVVFVUUJCVVJ TlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAwMDAwNSkKLSNkZWZpbmUgUEFSQUxMRUxfS0VZX0lOU1RS VU1FTlRBVElPTglVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDYpCisjZGVmaW5lIFBBUkFM TEVMX0tFWV9OT0RFX0lOU1RSVU1FTlRBVElPTiBVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAw MDYpCiAjZGVmaW5lIFBBUkFMTEVMX0tFWV9EU0EJCQkJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAw MDAwMDA3KQogI2RlZmluZSBQQVJBTExFTF9LRVlfUVVFUllfVEVYVAkJVUlOVDY0Q09OU1QoMHhF MDAwMDAwMDAwMDAwMDA4KQogI2RlZmluZSBQQVJBTExFTF9LRVlfSklUX0lOU1RSVU1FTlRBVElP TiBVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMDkpCi0jZGVmaW5lIFBBUkFMTEVMX0tFWV9X QUxfVVNBR0UJCQlVSU5UNjRDT05TVCgweEUwMDAwMDAwMDAwMDAwMEEpCiAKICNkZWZpbmUgUEFS QUxMRUxfVFVQTEVfUVVFVUVfU0laRQkJNjU1MzYKIApAQCAtNjMxLDggKzYzMCw2IEBAIEV4ZWNJ bml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAlj aGFyCSAgICpwc3RtdF9kYXRhOwogCWNoYXIJICAgKnBzdG10X3NwYWNlOwogCWNoYXIJICAgKnBh cmFtbGlzdGluZm9fc3BhY2U7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlX3NwYWNlOwotCVdhbFVz YWdlICAgKndhbHVzYWdlX3NwYWNlOwogCVNoYXJlZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9uICpp bnN0cnVtZW50YXRpb24gPSBOVUxMOwogCVNoYXJlZEppdEluc3RydW1lbnRhdGlvbiAqaml0X2lu c3RydW1lbnRhdGlvbiA9IE5VTEw7CiAJaW50CQkJcHN0bXRfbGVuOwpAQCAtNjk2LDIxICs2OTMs MTQgQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAq ZXN0YXRlLAogCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKIAog CS8qCi0JICogRXN0aW1hdGUgc3BhY2UgZm9yIEJ1ZmZlclVzYWdlLgorCSAqIEVzdGltYXRlIHNw YWNlIGZvciBJbnN0cnVtZW50YXRpb24uCiAJICoKIAkgKiBJZiBFWFBMQUlOIGlzIG5vdCBpbiB1 c2UgYW5kIHRoZXJlIGFyZSBubyBleHRlbnNpb25zIGxvYWRlZCB0aGF0IGNhcmUsCiAJICogd2Ug Y291bGQgc2tpcCB0aGlzLiAgQnV0IHdlIGhhdmUgbm8gd2F5IG9mIGtub3dpbmcgd2hldGhlciBh bnlvbmUncwogCSAqIGxvb2tpbmcgYXQgaW5zdHJ1bWVudGF0aW9uLCBzbyBkbyBpdCB1bmNvbmRp dGlvbmFsbHkuCiAJICovCiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9y LAotCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKEJ1ZmZlclVzYWdlKSwgcGN4dC0+bndvcmtlcnMp KTsKLQlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwgMSk7Ci0KLQkvKgot CSAqIFNhbWUgdGhpbmcgZm9yIFdhbFVzYWdlLgotCSAqLwotCXNobV90b2NfZXN0aW1hdGVfY2h1 bmsoJnBjeHQtPmVzdGltYXRvciwKLQkJCQkJCSAgIG11bF9zaXplKHNpemVvZihXYWxVc2FnZSks IHBjeHQtPm53b3JrZXJzKSk7CisJCQkJCQkgICBtdWxfc2l6ZShzaXplb2YoSW5zdHJ1bWVudGF0 aW9uKSwgcGN4dC0+bndvcmtlcnMpKTsKIAlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVz dGltYXRvciwgMSk7CiAKIAkvKiBFc3RpbWF0ZSBzcGFjZSBmb3IgdHVwbGUgcXVldWVzLiAqLwpA QCAtNzk2LDE3ICs3ODYsMTggQEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFu c3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxM RUxfS0VZX1BBUkFNTElTVElORk8sIHBhcmFtbGlzdGluZm9fc3BhY2UpOwogCVNlcmlhbGl6ZVBh cmFtTGlzdChlc3RhdGUtPmVzX3BhcmFtX2xpc3RfaW5mbywgJnBhcmFtbGlzdGluZm9fc3BhY2Up OwogCi0JLyogQWxsb2NhdGUgc3BhY2UgZm9yIGVhY2ggd29ya2VyJ3MgQnVmZmVyVXNhZ2U7IG5v IG5lZWQgdG8gaW5pdGlhbGl6ZS4gKi8KLQlidWZ1c2FnZV9zcGFjZSA9IHNobV90b2NfYWxsb2Nh dGUocGN4dC0+dG9jLAotCQkJCQkJCQkJICBtdWxfc2l6ZShzaXplb2YoQnVmZmVyVXNhZ2UpLCBw Y3h0LT5ud29ya2VycykpOwotCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZ X0JVRkZFUl9VU0FHRSwgYnVmdXNhZ2Vfc3BhY2UpOwotCXBlaS0+YnVmZmVyX3VzYWdlID0gYnVm dXNhZ2Vfc3BhY2U7CisJLyoKKwkgKiBBbGxvY2F0ZSBzcGFjZSBmb3IgZWFjaCB3b3JrZXIncyBJ bnN0cnVtZW50YXRpb247IG5vIG5lZWQgdG8KKwkgKiBpbml0aWFsaXplLgorCSAqLworCXsKKwkJ SW5zdHJ1bWVudGF0aW9uICppbnN0cjsKIAotCS8qIFNhbWUgZm9yIFdhbFVzYWdlLiAqLwotCXdh bHVzYWdlX3NwYWNlID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsCi0JCQkJCQkJCQkgIG11 bF9zaXplKHNpemVvZihXYWxVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7Ci0Jc2htX3RvY19pbnNl cnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfV0FMX1VTQUdFLCB3YWx1c2FnZV9zcGFjZSk7Ci0J cGVpLT53YWxfdXNhZ2UgPSB3YWx1c2FnZV9zcGFjZTsKKwkJaW5zdHIgPSBzaG1fdG9jX2FsbG9j YXRlKHBjeHQtPnRvYywKKwkJCQkJCQkJIG11bF9zaXplKHNpemVvZihJbnN0cnVtZW50YXRpb24p LCBwY3h0LT5ud29ya2VycykpOworCQlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVM X0tFWV9JTlNUUlVNRU5UQVRJT04sIGluc3RyKTsKKwkJcGVpLT5pbnN0cnVtZW50YXRpb24gPSBp bnN0cjsKKwl9CiAKIAkvKiBTZXQgdXAgdGhlIHR1cGxlIHF1ZXVlcyB0aGF0IHRoZSB3b3JrZXJz IHdpbGwgd3JpdGUgaW50by4gKi8KIAlwZWktPnRxdWV1ZSA9IEV4ZWNQYXJhbGxlbFNldHVwVHVw bGVRdWV1ZXMocGN4dCwgZmFsc2UpOwpAQCAtODMyLDkgKzgyMyw5IEBAIEV4ZWNJbml0UGFyYWxs ZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAkJaW5zdHJ1bWVu dCA9IEdldEluc3RydW1lbnRhdGlvbkFycmF5KGluc3RydW1lbnRhdGlvbik7CiAJCWZvciAoaSA9 IDA7IGkgPCBud29ya2VycyAqIGUubm5vZGVzOyArK2kpCiAJCQlJbnN0ckluaXROb2RlKCZpbnN0 cnVtZW50W2ldLCBlc3RhdGUtPmVzX2luc3RydW1lbnQsIGZhbHNlKTsKLQkJc2htX3RvY19pbnNl cnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfSU5TVFJVTUVOVEFUSU9OLAorCQlzaG1fdG9jX2lu c2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9OT0RFX0lOU1RSVU1FTlRBVElPTiwKIAkJCQkJ ICAgaW5zdHJ1bWVudGF0aW9uKTsKLQkJcGVpLT5pbnN0cnVtZW50YXRpb24gPSBpbnN0cnVtZW50 YXRpb247CisJCXBlaS0+bm9kZV9pbnN0cnVtZW50YXRpb24gPSBpbnN0cnVtZW50YXRpb247CiAK IAkJaWYgKGVzdGF0ZS0+ZXNfaml0X2ZsYWdzICE9IFBHSklUX05PTkUpCiAJCXsKQEAgLTEyMzYs NyArMTIyNyw3IEBAIEV4ZWNQYXJhbGxlbEZpbmlzaChQYXJhbGxlbEV4ZWN1dG9ySW5mbyAqcGVp KQogCSAqIGZpbmlzaCwgb3Igd2UgbWlnaHQgZ2V0IGluY29tcGxldGUgZGF0YS4pCiAJICovCiAJ Zm9yIChpID0gMDsgaSA8IG53b3JrZXJzOyBpKyspCi0JCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5 KCZwZWktPmJ1ZmZlcl91c2FnZVtpXSwgJnBlaS0+d2FsX3VzYWdlW2ldKTsKKwkJSW5zdHJBY2N1 bVBhcmFsbGVsUXVlcnkoJnBlaS0+aW5zdHJ1bWVudGF0aW9uW2ldKTsKIAogCXBlaS0+ZmluaXNo ZWQgPSB0cnVlOwogfQpAQCAtMTI1MCwxMSArMTI0MSwxMSBAQCBFeGVjUGFyYWxsZWxGaW5pc2go UGFyYWxsZWxFeGVjdXRvckluZm8gKnBlaSkKIHZvaWQKIEV4ZWNQYXJhbGxlbENsZWFudXAoUGFy YWxsZWxFeGVjdXRvckluZm8gKnBlaSkKIHsKLQkvKiBBY2N1bXVsYXRlIGluc3RydW1lbnRhdGlv biwgaWYgYW55LiAqLwotCWlmIChwZWktPmluc3RydW1lbnRhdGlvbikKKwkvKiBBY2N1bXVsYXRl IG5vZGUgaW5zdHJ1bWVudGF0aW9uLCBpZiBhbnkuICovCisJaWYgKHBlaS0+bm9kZV9pbnN0cnVt ZW50YXRpb24pCiAJewogCQlFeGVjUGFyYWxsZWxSZXRyaWV2ZUluc3RydW1lbnRhdGlvbihwZWkt PnBsYW5zdGF0ZSwKLQkJCQkJCQkJCQkJcGVpLT5pbnN0cnVtZW50YXRpb24pOworCQkJCQkJCQkJ CQlwZWktPm5vZGVfaW5zdHJ1bWVudGF0aW9uKTsKIAogCQlFeGVjRmluYWxpemVXb3JrZXJJbnN0 cnVtZW50YXRpb24ocGVpLT5wbGFuc3RhdGUpOwogCX0KQEAgLTE0ODEsOCArMTQ3Miw2IEBAIFBh cmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIHsKIAlGaXhl ZFBhcmFsbGVsRXhlY3V0b3JTdGF0ZSAqZnBlczsKIAlRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5z dHI7Ci0JQnVmZmVyVXNhZ2UgKmJ1ZmZlcl91c2FnZTsKLQlXYWxVc2FnZSAgICp3YWxfdXNhZ2U7 CiAJRGVzdFJlY2VpdmVyICpyZWNlaXZlcjsKIAlRdWVyeURlc2MgICpxdWVyeURlc2M7CiAJU2hh cmVkRXhlY3V0b3JJbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnRhdGlvbjsKQEAgLTE0OTcsNyAr MTQ4Niw3IEBAIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRv YykKIAogCS8qIFNldCB1cCBEZXN0UmVjZWl2ZXIsIFNoYXJlZEV4ZWN1dG9ySW5zdHJ1bWVudGF0 aW9uLCBhbmQgUXVlcnlEZXNjLiAqLwogCXJlY2VpdmVyID0gRXhlY1BhcmFsbGVsR2V0UmVjZWl2 ZXIoc2VnLCB0b2MpOwotCWluc3RydW1lbnRhdGlvbiA9IHNobV90b2NfbG9va3VwKHRvYywgUEFS QUxMRUxfS0VZX0lOU1RSVU1FTlRBVElPTiwgdHJ1ZSk7CisJaW5zdHJ1bWVudGF0aW9uID0gc2ht X3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfTk9ERV9JTlNUUlVNRU5UQVRJT04sIHRydWUp OwogCWlmIChpbnN0cnVtZW50YXRpb24gIT0gTlVMTCkKIAkJaW5zdHJ1bWVudF9vcHRpb25zID0g aW5zdHJ1bWVudGF0aW9uLT5pbnN0cnVtZW50X29wdGlvbnM7CiAJaml0X2luc3RydW1lbnRhdGlv biA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX0pJVF9JTlNUUlVNRU5UQVRJT04s CkBAIC0xNTU1LDExICsxNTQ0LDEyIEBAIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpz ZWcsIHNobV90b2MgKnRvYykKIAlFeGVjdXRvckZpbmlzaChxdWVyeURlc2MpOwogCiAJLyogUmVw b3J0IGJ1ZmZlci9XQUwgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbi4gKi8KLQlidWZm ZXJfdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0Us IGZhbHNlKTsKLQl3YWxfdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9X QUxfVVNBR0UsIGZhbHNlKTsKLQlJbnN0ckVuZFBhcmFsbGVsUXVlcnkoaW5zdHIsCi0JCQkJCQkg ICZidWZmZXJfdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAotCQkJCQkJICAmd2FsX3VzYWdl W1BhcmFsbGVsV29ya2VyTnVtYmVyXSk7CisJeworCQlJbnN0cnVtZW50YXRpb24gKndvcmtlcl9p bnN0cjsKKworCQl3b3JrZXJfaW5zdHIgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tF WV9JTlNUUlVNRU5UQVRJT04sIGZhbHNlKTsKKwkJSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KGluc3Ry LCAmd29ya2VyX2luc3RyW1BhcmFsbGVsV29ya2VyTnVtYmVyXSk7CisJfQogCiAJLyogUmVwb3J0 IGluc3RydW1lbnRhdGlvbiBkYXRhIGlmIGFueSBpbnN0cnVtZW50YXRpb24gb3B0aW9ucyBhcmUg c2V0LiAqLwogCWlmIChpbnN0cnVtZW50YXRpb24gIT0gTlVMTCkKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3Ry dW1lbnQuYwppbmRleCBiODRjNTUyYzZmOC4uY2ZlZGJhZDBlYmEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9p bnN0cnVtZW50LmMKQEAgLTM0NSwxMSArMzQ1LDEyIEBAIEluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5 KHZvaWQpCiAKIC8qIHJlcG9ydCB1c2FnZSBhZnRlciBwYXJhbGxlbCBleGVjdXRvciBzaHV0ZG93 biAqLwogdm9pZAotSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpx aW5zdHIsIEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKQorSW5zdHJF bmRQYXJhbGxlbFF1ZXJ5KFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIsIEluc3RydW1lbnRh dGlvbiAqZHN0KQogewogCUluc3RyUXVlcnlTdG9wRmluYWxpemUocWluc3RyKTsKLQltZW1jcHko YnVmdXNhZ2UsICZxaW5zdHItPmluc3RyLmJ1ZnVzYWdlLCBzaXplb2YoQnVmZmVyVXNhZ2UpKTsK LQltZW1jcHkod2FsdXNhZ2UsICZxaW5zdHItPmluc3RyLndhbHVzYWdlLCBzaXplb2YoV2FsVXNh Z2UpKTsKKwlkc3QtPm5lZWRfc3RhY2sgPSBxaW5zdHItPmluc3RyLm5lZWRfc3RhY2s7CisJbWVt Y3B5KCZkc3QtPmJ1ZnVzYWdlLCAmcWluc3RyLT5pbnN0ci5idWZ1c2FnZSwgc2l6ZW9mKEJ1ZmZl clVzYWdlKSk7CisJbWVtY3B5KCZkc3QtPndhbHVzYWdlLCAmcWluc3RyLT5pbnN0ci53YWx1c2Fn ZSwgc2l6ZW9mKFdhbFVzYWdlKSk7CiB9CiAKIC8qCkBAIC0zNjUsMTIgKzM2NiwxMSBAQCBJbnN0 ckVuZFBhcmFsbGVsUXVlcnkoUXVlcnlJbnN0cnVtZW50YXRpb24gKnFpbnN0ciwgQnVmZmVyVXNh Z2UgKmJ1ZnVzYWdlLCBXYWxVcwogICogYWN0aXZpdHkgaXMgYWNjdW11bGF0ZWQuCiAgKi8KIHZv aWQKLUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXNh Z2UgKndhbHVzYWdlKQorSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoSW5zdHJ1bWVudGF0aW9uICpp bnN0cikKIHsKLQlCdWZmZXJVc2FnZUFkZCgmaW5zdHJfc3RhY2suY3VycmVudC0+YnVmdXNhZ2Us IGJ1ZnVzYWdlKTsKLQlXYWxVc2FnZUFkZCgmaW5zdHJfc3RhY2suY3VycmVudC0+d2FsdXNhZ2Us IHdhbHVzYWdlKTsKKwlJbnN0ckFjY3VtU3RhY2soaW5zdHJfc3RhY2suY3VycmVudCwgaW5zdHIp OwogCi0JV2FsVXNhZ2VBZGQoJnBnV2FsVXNhZ2UsIHdhbHVzYWdlKTsKKwlXYWxVc2FnZUFkZCgm cGdXYWxVc2FnZSwgJmluc3RyLT53YWx1c2FnZSk7CiB9CiAKIC8qIE5vZGUgaW5zdHJ1bWVudGF0 aW9uIGhhbmRsaW5nICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFy YWxsZWwuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5oCmluZGV4IDVhMjAz NDgxMWQ1Li42YzhiNjAyZDA3ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y1BhcmFsbGVsLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmgKQEAg LTI1LDkgKzI1LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxFeGVjdXRvckluZm8KIHsKIAlQ bGFuU3RhdGUgICpwbGFuc3RhdGU7CQkvKiBwbGFuIHN1YnRyZWUgd2UncmUgcnVubmluZyBpbiBw YXJhbGxlbCAqLwogCVBhcmFsbGVsQ29udGV4dCAqcGN4dDsJCS8qIHBhcmFsbGVsIGNvbnRleHQg d2UncmUgdXNpbmcgKi8KLQlCdWZmZXJVc2FnZSAqYnVmZmVyX3VzYWdlOwkvKiBwb2ludHMgdG8g YnVmdXNhZ2UgYXJlYSBpbiBEU00gKi8KLQlXYWxVc2FnZSAgICp3YWxfdXNhZ2U7CQkvKiB3YWx1 c2FnZSBhcmVhIGluIERTTSAqLwotCVNoYXJlZEV4ZWN1dG9ySW5zdHJ1bWVudGF0aW9uICppbnN0 cnVtZW50YXRpb247IC8qIG9wdGlvbmFsICovCisJSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50 YXRpb247CS8qIGluc3RydW1lbnRhdGlvbiBhcmVhIGluIERTTSAqLworCVNoYXJlZEV4ZWN1dG9y SW5zdHJ1bWVudGF0aW9uICpub2RlX2luc3RydW1lbnRhdGlvbjsJLyogb3B0aW9uYWwgKi8KIAlz dHJ1Y3QgU2hhcmVkSml0SW5zdHJ1bWVudGF0aW9uICpqaXRfaW5zdHJ1bWVudGF0aW9uOwkvKiBv cHRpb25hbCAqLwogCWRzYV9hcmVhICAgKmFyZWE7CQkJLyogcG9pbnRzIHRvIERTQSBhcmVhIGlu IERTTSAqLwogCWRzYV9wb2ludGVyIHBhcmFtX2V4ZWM7CQkvKiBzZXJpYWxpemVkIFBBUkFNX0VY RUMgcGFyYW1ldGVycyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1 bWVudC5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCmluZGV4IGY1Y2M2ZmI2 NjJiLi41YmI2OThkNjg2ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1 bWVudC5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaApAQCAtMjg2LDgg KzI4Niw4IEBAIGV4dGVybiB2b2lkIEluc3RyUXVlcnlTdG9wRmluYWxpemUoUXVlcnlJbnN0cnVt ZW50YXRpb24gKmluc3RyKTsKIGV4dGVybiB2b2lkIEluc3RyUXVlcnlSZW1lbWJlckNoaWxkKFF1 ZXJ5SW5zdHJ1bWVudGF0aW9uICpwYXJlbnQsIEluc3RydW1lbnRhdGlvbiAqaW5zdHIpOwogCiBw Z19ub2Rpc2NhcmQgZXh0ZXJuIFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpJbnN0clN0YXJ0UGFyYWxs ZWxRdWVyeSh2b2lkKTsKLWV4dGVybiB2b2lkIEluc3RyRW5kUGFyYWxsZWxRdWVyeShRdWVyeUlu c3RydW1lbnRhdGlvbiAqcWluc3RyLCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3 YWx1c2FnZSk7Ci1leHRlcm4gdm9pZCBJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeShCdWZmZXJVc2Fn ZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3YWx1c2FnZSk7CitleHRlcm4gdm9pZCBJbnN0ckVuZFBh cmFsbGVsUXVlcnkoUXVlcnlJbnN0cnVtZW50YXRpb24gKnFpbnN0ciwgSW5zdHJ1bWVudGF0aW9u ICpkc3QpOworZXh0ZXJuIHZvaWQgSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoSW5zdHJ1bWVudGF0 aW9uICppbnN0cik7CiAKIGV4dGVybiBOb2RlSW5zdHJ1bWVudGF0aW9uICpJbnN0ckFsbG9jTm9k ZShRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyLAogCQkJCQkJCQkJCSAgIGludCBpbnN0cnVt ZW50X29wdGlvbnMsCi0tIAoyLjQ3LjEKCg== --00000000000045175b064ec7b858 Content-Type: application/octet-stream; name="v15-0008-Index-scans-Show-table-buffer-accesses-separatel.patch" Content-Disposition: attachment; filename="v15-0008-Index-scans-Show-table-buffer-accesses-separatel.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnmzxbqc8 RnJvbSA5YTM1MmQ0OWUxOWY1NjE0YWVkYzk1MTE1MjdiOTJiZWUzYzZhMzhjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMTE6NDY6MTkgLTA4MDAKU3ViamVjdDogW1BBVENIIHYxNSA4LzldIElu ZGV4IHNjYW5zOiBTaG93IHRhYmxlIGJ1ZmZlciBhY2Nlc3NlcyBzZXBhcmF0ZWx5IGluCiBFWFBM QUlOIEFOQUxZWkUKClRoaXMgc2V0cyB1cCBhIHNlcGFyYXRlIGluc3RydW1lbnRhdGlvbiBzdGFj ayB0aGF0IGlzIHVzZWQgd2hpbHN0IGFuCkluZGV4IFNjYW4gb3IgSW5kZXggT25seSBTY2FuIGRv ZXMgc2Nhbm5pbmcgb24gdGhlIHRhYmxlLCBmb3IgZXhhbXBsZSBkdWUKdG8gYWRkaXRpb25hbCBk YXRhIGJlaW5nIG5lZWRlZC4KCkVYUExBSU4gQU5BTFlaRSB3aWxsIG5vdyBzaG93ICJUYWJsZSBC dWZmZXJzIiB0aGF0IHJlcHJlc2VudCBzdWNoIGFjdGl2aXR5LgpUaGUgYWN0aXZpdHkgaXMgYWxz byBpbmNsdWRlZCBpbiByZWd1bGFyICJCdWZmZXJzIiB0b2dldGhlciB3aXRoIGluZGV4CmFjdGl2 aXR5IGFuZCB0aGF0IG9mIGFueSBjaGlsZCBub2Rlcy4KCkF1dGhvcjogTHVrYXMgRml0dGwgPGx1 a2FzQGZpdHRsLmNvbT4KU3VnZ2VzdGVkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6 ZWwuZGU+ClJldmlld2VkLWJ5OiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEu Y29tPgpSZXZpZXdlZC1ieTogVG9tYXMgVm9uZHJhIDx0b21hc0B2b25kcmEubWU+CkRpc2N1c3Np b246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC9DQVA1M1BreHJt cEVDelZGcGVlRUVIREdlNnU2MjVzJTJCWWttVnY1LWd3M0xfTkRTZmJpQSU0MG1haWwuZ21haWwu Y29tI2NiNTgzYTA4ZThlMDk2YWExZjA5M2JiMTc4OTA2MTczCgpBY3R1YWxseSBwb3B1bGF0ZSBJ KE8pUyB0YWJsZSBzdGFjayBwcmUgaW5kZXggcHJlZmV0Y2hpbmcgbWVyZ2UKLS0tCiBkb2Mvc3Jj L3NnbWwvcGVyZm9ybS5zZ21sICAgICAgICAgICAgICAgICAgfCAgMTMgKystCiBkb2Mvc3JjL3Nn bWwvcmVmL2V4cGxhaW4uc2dtbCAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29t bWFuZHMvZXhwbGFpbi5jICAgICAgICAgICAgIHwgIDQ3ICsrKysrKy0tCiBzcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUHJvY25vZGUuYyAgICAgICAgfCAgNDYgKysrKysrKysKIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYyB8ICAgMiArLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYyAgIHwgIDQxICsrKysrKy0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVJbmRleHNjYW4uYyAgICAgICB8IDEyNyArKysrKysrKysrKysrKysrKy0tLS0K IHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnRfbm9kZS5oICAgICB8ICAgNSArCiA4IGZp bGVzIGNoYW5nZWQsIDI0NCBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvcGVyZm9ybS5zZ21sIGIvZG9jL3NyYy9zZ21sL3BlcmZvcm0uc2dt bAppbmRleCA2MDRlODU3OGE4ZC4uZDI4ZjRmMjI1MzUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9wZXJmb3JtLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3BlcmZvcm0uc2dtbApAQCAtNzM0LDYg KzczNCw3IEBAIFdIRVJFIHQxLnVuaXF1ZTEgJmx0OyAxMCBBTkQgdDEudW5pcXVlMiA9IHQyLnVu aXF1ZTI7CiAgICAtJmd0OyAgSW5kZXggU2NhbiB1c2luZyB0ZW5rMl91bmlxdWUyIG9uIHRlbmsy IHQyICAoY29zdD0wLjI5Li43LjkwIHJvd3M9MSB3aWR0aD0yNDQpIChhY3R1YWwgdGltZT0wLjAw My4uMC4wMDMgcm93cz0xLjAwIGxvb3BzPTEwKQogICAgICAgICAgSW5kZXggQ29uZDogKHVuaXF1 ZTIgPSB0MS51bmlxdWUyKQogICAgICAgICAgSW5kZXggU2VhcmNoZXM6IDEwCisgICAgICAgICBU YWJsZSBCdWZmZXJzOiBzaGFyZWQgaGl0PTEwCiAgICAgICAgICBCdWZmZXJzOiBzaGFyZWQgaGl0 PTI0IHJlYWQ9NgogIFBsYW5uaW5nOgogICAgQnVmZmVyczogc2hhcmVkIGhpdD0xNSBkaXJ0aWVk PTkKQEAgLTEwMDUsNyArMTAwNiw4IEBAIEVYUExBSU4gQU5BTFlaRSBTRUxFQ1QgKiBGUk9NIHBv bHlnb25fdGJsIFdIRVJFIGYxIEAmZ3Q7IHBvbHlnb24gJygwLjUsMi4wKSc7CiAgICBJbmRleCBD b25kOiAoZjEgQCZndDsgJygoMC41LDIpKSc6OnBvbHlnb24pCiAgICBSb3dzIFJlbW92ZWQgYnkg SW5kZXggUmVjaGVjazogMQogICAgSW5kZXggU2VhcmNoZXM6IDEKLSAgIEJ1ZmZlcnM6IHNoYXJl ZCBoaXQ9MQorICAgVGFibGUgQnVmZmVyczogc2hhcmVkIGhpdD0xCisgICBCdWZmZXJzOiBzaGFy ZWQgaGl0PTIKICBQbGFubmluZyBUaW1lOiAwLjAzOSBtcwogIEV4ZWN1dGlvbiBUaW1lOiAwLjA5 OCBtcwogPC9zY3JlZW4+CkBAIC0xMDE0LDcgKzEwMTYsOSBAQCBFWFBMQUlOIEFOQUxZWkUgU0VM RUNUICogRlJPTSBwb2x5Z29uX3RibCBXSEVSRSBmMSBAJmd0OyBwb2x5Z29uICcoMC41LDIuMCkn OwogICAgIHRoZW4gcmVqZWN0ZWQgYnkgYSByZWNoZWNrIG9mIHRoZSBpbmRleCBjb25kaXRpb24u ICBUaGlzIGhhcHBlbnMgYmVjYXVzZSBhCiAgICAgR2lTVCBpbmRleCBpcyA8cXVvdGU+bG9zc3k8 L3F1b3RlPiBmb3IgcG9seWdvbiBjb250YWlubWVudCB0ZXN0czogaXQgYWN0dWFsbHkKICAgICBy ZXR1cm5zIHRoZSByb3dzIHdpdGggcG9seWdvbnMgdGhhdCBvdmVybGFwIHRoZSB0YXJnZXQsIGFu ZCB0aGVuIHdlIGhhdmUKLSAgICB0byBkbyB0aGUgZXhhY3QgY29udGFpbm1lbnQgdGVzdCBvbiB0 aG9zZSByb3dzLgorICAgIHRvIGRvIHRoZSBleGFjdCBjb250YWlubWVudCB0ZXN0IG9uIHRob3Nl IHJvd3MuIFRoZSA8bGl0ZXJhbD5UYWJsZSBCdWZmZXJzPC9saXRlcmFsPgorICAgIGNvdW50cyBp bmRpY2F0ZSBob3cgbWFueSBvcGVyYXRpb25zIHdlcmUgcGVyZm9ybWVkIG9uIHRoZSB0YWJsZSBp bnN0ZWFkIG9mCisgICAgdGhlIGluZGV4LiBUaGlzIG51bWJlciBpcyBpbmNsdWRlZCBpbiB0aGUg PGxpdGVyYWw+QnVmZmVyczwvbGl0ZXJhbD4gY291bnRzLgogICAgPC9wYXJhPgogCiAgICA8cGFy YT4KQEAgLTEyMDMsMTMgKzEyMDcsMTQgQEAgRVhQTEFJTiBBTkFMWVpFIFNFTEVDVCAqIEZST00g dGVuazEgV0hFUkUgdW5pcXVlMSAmbHQ7IDEwMCBBTkQgdW5pcXVlMiAmZ3Q7IDkwMDAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tJnp3c3A7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgTGltaXQgIChjb3N0PTAuMjkuLjE0LjMzIHJv d3M9MiB3aWR0aD0yNDQpIChhY3R1YWwgdGltZT0wLjA1MS4uMC4wNzEgcm93cz0yLjAwIGxvb3Bz PTEpCi0gICBCdWZmZXJzOiBzaGFyZWQgaGl0PTE2CisgICBCdWZmZXJzOiBzaGFyZWQgaGl0PTE0 CiAgICAtJmd0OyAgSW5kZXggU2NhbiB1c2luZyB0ZW5rMV91bmlxdWUyIG9uIHRlbmsxICAoY29z dD0wLjI5Li43MC41MCByb3dzPTEwIHdpZHRoPTI0NCkgKGFjdHVhbCB0aW1lPTAuMDUxLi4wLjA3 MCByb3dzPTIuMDAgbG9vcHM9MSkKICAgICAgICAgIEluZGV4IENvbmQ6ICh1bmlxdWUyICZndDsg OTAwMCkKICAgICAgICAgIEZpbHRlcjogKHVuaXF1ZTEgJmx0OyAxMDApCiAgICAgICAgICBSb3dz IFJlbW92ZWQgYnkgRmlsdGVyOiAyODcKICAgICAgICAgIEluZGV4IFNlYXJjaGVzOiAxCi0gICAg ICAgICBCdWZmZXJzOiBzaGFyZWQgaGl0PTE2CisgICAgICAgICBUYWJsZSBCdWZmZXJzOiBzaGFy ZWQgaGl0PTExCisgICAgICAgICBCdWZmZXJzOiBzaGFyZWQgaGl0PTE0CiAgUGxhbm5pbmcgVGlt ZTogMC4wNzcgbXMKICBFeGVjdXRpb24gVGltZTogMC4wODYgbXMKIDwvc2NyZWVuPgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9leHBsYWluLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2V4 cGxhaW4uc2dtbAppbmRleCA1YjhiNTIxODAyZS4uNzEwNzA3MzZhY2IgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9yZWYvZXhwbGFpbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvZXhwbGFp bi5zZ21sCkBAIC01MDksNiArNTA5LDcgQEAgRVhQTEFJTiBBTkFMWVpFIEVYRUNVVEUgcXVlcnko MTAwLCAyMDApOwogICAgLSZndDsgIEluZGV4IFNjYW4gdXNpbmcgdGVzdF9wa2V5IG9uIHRlc3Qg IChjb3N0PTAuMjkuLjEwLjI3IHJvd3M9OTkgd2lkdGg9OCkgKGFjdHVhbCB0aW1lPTAuMDA5Li4w LjAyNSByb3dzPTk5LjAwIGxvb3BzPTEpCiAgICAgICAgICBJbmRleCBDb25kOiAoKGlkICZndDsg MTAwKSBBTkQgKGlkICZsdDsgMjAwKSkKICAgICAgICAgIEluZGV4IFNlYXJjaGVzOiAxCisgICAg ICAgICBUYWJsZSBCdWZmZXJzOiBzaGFyZWQgaGl0PTEKICAgICAgICAgIEJ1ZmZlcnM6IHNoYXJl ZCBoaXQ9NAogIFBsYW5uaW5nIFRpbWU6IDAuMjQ0IG1zCiAgRXhlY3V0aW9uIFRpbWU6IDAuMDcz IG1zCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggYzkzZTRjYmVlOTcuLmU1ZWQyNTI0OTA0IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0xNDQsNyArMTQ0LDcgQEAgc3RhdGljIHZvaWQgc2hv d19pbnN0cnVtZW50YXRpb25fY291bnQoY29uc3QgY2hhciAqcWxhYmVsLCBpbnQgd2hpY2gsCiBz dGF0aWMgdm9pZCBzaG93X2ZvcmVpZ25zY2FuX2luZm8oRm9yZWlnblNjYW5TdGF0ZSAqZnNzdGF0 ZSwgRXhwbGFpblN0YXRlICplcyk7CiBzdGF0aWMgY29uc3QgY2hhciAqZXhwbGFpbl9nZXRfaW5k ZXhfbmFtZShPaWQgaW5kZXhJZCk7CiBzdGF0aWMgYm9vbCBwZWVrX2J1ZmZlcl91c2FnZShFeHBs YWluU3RhdGUgKmVzLCBjb25zdCBCdWZmZXJVc2FnZSAqdXNhZ2UpOwotc3RhdGljIHZvaWQgc2hv d19idWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdl KTsKK3N0YXRpYyB2b2lkIHNob3dfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0 IEJ1ZmZlclVzYWdlICp1c2FnZSwgY29uc3QgY2hhciAqdGl0bGUpOwogc3RhdGljIHZvaWQgc2hv d193YWxfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgV2FsVXNhZ2UgKnVzYWdlKTsKIHN0 YXRpYyB2b2lkIHNob3dfbWVtb3J5X2NvdW50ZXJzKEV4cGxhaW5TdGF0ZSAqZXMsCiAJCQkJCQkJ CSBjb25zdCBNZW1vcnlDb250ZXh0Q291bnRlcnMgKm1lbV9jb3VudGVycyk7CkBAIC02MTEsNyAr NjExLDcgQEAgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xh dXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQl9CiAKIAkJaWYgKGJ1ZnVzYWdlKQotCQkJ c2hvd19idWZmZXJfdXNhZ2UoZXMsIGJ1ZnVzYWdlKTsKKwkJCXNob3dfYnVmZmVyX3VzYWdlKGVz LCBidWZ1c2FnZSwgTlVMTCk7CiAKIAkJaWYgKG1lbV9jb3VudGVycykKIAkJCXNob3dfbWVtb3J5 X2NvdW50ZXJzKGVzLCBtZW1fY291bnRlcnMpOwpAQCAtMTAyOCw3ICsxMDI4LDcgQEAgRXhwbGFp blByaW50U2VyaWFsaXplKEV4cGxhaW5TdGF0ZSAqZXMsIFNlcmlhbGl6ZU1ldHJpY3MgKm1ldHJp Y3MpCiAJCWlmIChlcy0+YnVmZmVycyAmJiBwZWVrX2J1ZmZlcl91c2FnZShlcywgJm1ldHJpY3Mt Pmluc3RyLmJ1ZnVzYWdlKSkKIAkJewogCQkJZXMtPmluZGVudCsrOwotCQkJc2hvd19idWZmZXJf dXNhZ2UoZXMsICZtZXRyaWNzLT5pbnN0ci5idWZ1c2FnZSk7CisJCQlzaG93X2J1ZmZlcl91c2Fn ZShlcywgJm1ldHJpY3MtPmluc3RyLmJ1ZnVzYWdlLCBOVUxMKTsKIAkJCWVzLT5pbmRlbnQtLTsK IAkJfQogCX0KQEAgLTEwNDIsNyArMTA0Miw3IEBAIEV4cGxhaW5QcmludFNlcmlhbGl6ZShFeHBs YWluU3RhdGUgKmVzLCBTZXJpYWxpemVNZXRyaWNzICptZXRyaWNzKQogCQkJCQkJCQlCWVRFU19U T19LSUxPQllURVMobWV0cmljcy0+Ynl0ZXNTZW50KSwgZXMpOwogCQlFeHBsYWluUHJvcGVydHlU ZXh0KCJGb3JtYXQiLCBmb3JtYXQsIGVzKTsKIAkJaWYgKGVzLT5idWZmZXJzKQotCQkJc2hvd19i dWZmZXJfdXNhZ2UoZXMsICZtZXRyaWNzLT5pbnN0ci5idWZ1c2FnZSk7CisJCQlzaG93X2J1ZmZl cl91c2FnZShlcywgJm1ldHJpY3MtPmluc3RyLmJ1ZnVzYWdlLCBOVUxMKTsKIAl9CiAKIAlFeHBs YWluQ2xvc2VHcm91cCgiU2VyaWFsaXphdGlvbiIsICJTZXJpYWxpemF0aW9uIiwgdHJ1ZSwgZXMp OwpAQCAtMTk3Miw2ICsxOTcyLDkgQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUs IExpc3QgKmFuY2VzdG9ycywKIAkJCQlzaG93X2luc3RydW1lbnRhdGlvbl9jb3VudCgiUm93cyBS ZW1vdmVkIGJ5IEZpbHRlciIsIDEsCiAJCQkJCQkJCQkJICAgcGxhbnN0YXRlLCBlcyk7CiAJCQlz aG93X2luZGV4c2VhcmNoZXNfaW5mbyhwbGFuc3RhdGUsIGVzKTsKKworCQkJaWYgKGVzLT5idWZm ZXJzICYmIHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCkKKwkJCQlzaG93X2J1ZmZlcl91c2FnZShlcywg JigoSW5kZXhTY2FuU3RhdGUgKikgcGxhbnN0YXRlKS0+aXNzX0luc3RydW1lbnQtPnRhYmxlX2lu c3RyLmJ1ZnVzYWdlLCAiVGFibGUiKTsKIAkJCWJyZWFrOwogCQljYXNlIFRfSW5kZXhPbmx5U2Nh bjoKIAkJCXNob3dfc2Nhbl9xdWFsKCgoSW5kZXhPbmx5U2NhbiAqKSBwbGFuKS0+aW5kZXhxdWFs LApAQCAtMTk4OSw2ICsxOTkyLDkgQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUs IExpc3QgKmFuY2VzdG9ycywKIAkJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgiSGVhcCBGZXRjaGVz IiwgTlVMTCwKIAkJCQkJCQkJCSBwbGFuc3RhdGUtPmluc3RydW1lbnQtPm50dXBsZXMyLCAwLCBl cyk7CiAJCQlzaG93X2luZGV4c2VhcmNoZXNfaW5mbyhwbGFuc3RhdGUsIGVzKTsKKworCQkJaWYg KGVzLT5idWZmZXJzICYmIHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCkKKwkJCQlzaG93X2J1ZmZlcl91 c2FnZShlcywgJigoSW5kZXhPbmx5U2NhblN0YXRlICopIHBsYW5zdGF0ZSktPmlvc3NfSW5zdHJ1 bWVudC0+dGFibGVfaW5zdHIuYnVmdXNhZ2UsICJUYWJsZSIpOwogCQkJYnJlYWs7CiAJCWNhc2Ug VF9CaXRtYXBJbmRleFNjYW46CiAJCQlzaG93X3NjYW5fcXVhbCgoKEJpdG1hcEluZGV4U2NhbiAq KSBwbGFuKS0+aW5kZXhxdWFsb3JpZywKQEAgLTIyOTAsNyArMjI5Niw3IEBAIEV4cGxhaW5Ob2Rl KFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAKIAkvKiBTaG93IGJ1ZmZl ci9XQUwgdXNhZ2UgKi8KIAlpZiAoZXMtPmJ1ZmZlcnMgJiYgcGxhbnN0YXRlLT5pbnN0cnVtZW50 KQotCQlzaG93X2J1ZmZlcl91c2FnZShlcywgJnBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+aW5zdHIu YnVmdXNhZ2UpOworCQlzaG93X2J1ZmZlcl91c2FnZShlcywgJnBsYW5zdGF0ZS0+aW5zdHJ1bWVu dC0+aW5zdHIuYnVmdXNhZ2UsIE5VTEwpOwogCWlmIChlcy0+d2FsICYmIHBsYW5zdGF0ZS0+aW5z dHJ1bWVudCkKIAkJc2hvd193YWxfdXNhZ2UoZXMsICZwbGFuc3RhdGUtPmluc3RydW1lbnQtPmlu c3RyLndhbHVzYWdlKTsKIApAQCAtMjMwOSw3ICsyMzE1LDcgQEAgRXhwbGFpbk5vZGUoUGxhblN0 YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAogCQkJRXhwbGFpbk9wZW5Xb3JrZXIo biwgZXMpOwogCQkJaWYgKGVzLT5idWZmZXJzKQotCQkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAm aW5zdHJ1bWVudC0+aW5zdHIuYnVmdXNhZ2UpOworCQkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCAm aW5zdHJ1bWVudC0+aW5zdHIuYnVmdXNhZ2UsIE5VTEwpOwogCQkJaWYgKGVzLT53YWwpCiAJCQkJ c2hvd193YWxfdXNhZ2UoZXMsICZpbnN0cnVtZW50LT5pbnN0ci53YWx1c2FnZSk7CiAJCQlFeHBs YWluQ2xvc2VXb3JrZXIobiwgZXMpOwpAQCAtNDEwOSw3ICs0MTE1LDcgQEAgcGVla19idWZmZXJf dXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdlKQogICogU2hv dyBidWZmZXIgdXNhZ2UgZGV0YWlscy4gIFRoaXMgYmV0dGVyIGJlIHN5bmMgd2l0aCBwZWVrX2J1 ZmZlcl91c2FnZS4KICAqLwogc3RhdGljIHZvaWQKLXNob3dfYnVmZmVyX3VzYWdlKEV4cGxhaW5T dGF0ZSAqZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1c2FnZSkKK3Nob3dfYnVmZmVyX3VzYWdlKEV4 cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1c2FnZSwgY29uc3QgY2hhciAqdGl0 bGUpCiB7CiAJaWYgKGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVYVCkKIAl7CkBAIC00 MTM0LDYgKzQxNDAsOCBAQCBzaG93X2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25z dCBCdWZmZXJVc2FnZSAqdXNhZ2UpCiAJCWlmIChoYXNfc2hhcmVkIHx8IGhhc19sb2NhbCB8fCBo YXNfdGVtcCkKIAkJewogCQkJRXhwbGFpbkluZGVudFRleHQoZXMpOworCQkJaWYgKHRpdGxlKQor CQkJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwgIiVzICIsIHRpdGxlKTsKIAkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoZXMtPnN0ciwgIkJ1ZmZlcnM6Iik7CiAKIAkJCWlmIChoYXNfc2hhcmVk KQpAQCAtNDE4OSw2ICs0MTk3LDggQEAgc2hvd19idWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRlICpl cywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdlKQogCQlpZiAoaGFzX3NoYXJlZF90aW1pbmcgfHwg aGFzX2xvY2FsX3RpbWluZyB8fCBoYXNfdGVtcF90aW1pbmcpCiAJCXsKIAkJCUV4cGxhaW5JbmRl bnRUZXh0KGVzKTsKKwkJCWlmICh0aXRsZSkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIs ICIlcyAiLCB0aXRsZSk7CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGVzLT5zdHIsICJJL08g VGltaW5nczoiKTsKIAogCQkJaWYgKGhhc19zaGFyZWRfdGltaW5nKQpAQCAtNDIzMCw2ICs0MjQw LDE0IEBAIHNob3dfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IEJ1ZmZlclVz YWdlICp1c2FnZSkKIAl9CiAJZWxzZQogCXsKKwkJY2hhcgkgICAqYnVmZmVyc190aXRsZSA9IE5V TEw7CisKKwkJaWYgKHRpdGxlKQorCQl7CisJCQlidWZmZXJzX3RpdGxlID0gcHNwcmludGYoIiVz IEJ1ZmZlcnMiLCB0aXRsZSk7CisJCQlFeHBsYWluT3Blbkdyb3VwKGJ1ZmZlcnNfdGl0bGUsIGJ1 ZmZlcnNfdGl0bGUsIHRydWUsIGVzKTsKKwkJfQorCiAJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIo IlNoYXJlZCBIaXQgQmxvY2tzIiwgTlVMTCwKIAkJCQkJCQkgICB1c2FnZS0+c2hhcmVkX2Jsa3Nf aGl0LCBlcyk7CiAJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIlNoYXJlZCBSZWFkIEJsb2NrcyIs IE5VTEwsCkBAIC00MjUwLDggKzQyNjgsMjAgQEAgc2hvd19idWZmZXJfdXNhZ2UoRXhwbGFpblN0 YXRlICplcywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdlKQogCQkJCQkJCSAgIHVzYWdlLT50ZW1w X2Jsa3NfcmVhZCwgZXMpOwogCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJUZW1wIFdyaXR0ZW4g QmxvY2tzIiwgTlVMTCwKIAkJCQkJCQkgICB1c2FnZS0+dGVtcF9ibGtzX3dyaXR0ZW4sIGVzKTsK KworCQlpZiAoYnVmZmVyc190aXRsZSkKKwkJCUV4cGxhaW5DbG9zZUdyb3VwKGJ1ZmZlcnNfdGl0 bGUsIGJ1ZmZlcnNfdGl0bGUsIHRydWUsIGVzKTsKKwogCQlpZiAodHJhY2tfaW9fdGltaW5nKQog CQl7CisJCQljaGFyCSAgICp0aW1pbmdzX3RpdGxlID0gTlVMTDsKKworCQkJaWYgKHRpdGxlKQor CQkJeworCQkJCXRpbWluZ3NfdGl0bGUgPSBwc3ByaW50ZigiJXMgSS9PIFRpbWluZ3MiLCB0aXRs ZSk7CisJCQkJRXhwbGFpbk9wZW5Hcm91cCh0aW1pbmdzX3RpdGxlLCB0aW1pbmdzX3RpdGxlLCB0 cnVlLCBlcyk7CisJCQl9CisKIAkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KCJTaGFyZWQgSS9PIFJl YWQgVGltZSIsICJtcyIsCiAJCQkJCQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyh1c2FnZS0+ c2hhcmVkX2Jsa19yZWFkX3RpbWUpLAogCQkJCQkJCQkgMywgZXMpOwpAQCAtNDI3MCw2ICs0MzAw LDkgQEAgc2hvd19idWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgQnVmZmVyVXNh Z2UgKnVzYWdlKQogCQkJRXhwbGFpblByb3BlcnR5RmxvYXQoIlRlbXAgSS9PIFdyaXRlIFRpbWUi LCAibXMiLAogCQkJCQkJCQkgSU5TVFJfVElNRV9HRVRfTUlMTElTRUModXNhZ2UtPnRlbXBfYmxr X3dyaXRlX3RpbWUpLAogCQkJCQkJCQkgMywgZXMpOworCisJCQlpZiAodGltaW5nc190aXRsZSkK KwkJCQlFeHBsYWluQ2xvc2VHcm91cCh0aW1pbmdzX3RpdGxlLCB0aW1pbmdzX3RpdGxlLCB0cnVl LCBlcyk7CiAJCX0KIAl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UHJvY25vZGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCmluZGV4IGFj NDAwNjcwZmVhLi4yOGYxZjY2NmEzYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1Byb2Nub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMK QEAgLTg0Nyw2ICs4NDcsMjAgQEAgRXhlY0ZpbmFsaXplTm9kZUluc3RydW1lbnRhdGlvbl93YWxr ZXIoUGxhblN0YXRlICpub2RlLCB2b2lkICpjb250ZXh0KQogCXBsYW5zdGF0ZV90cmVlX3dhbGtl cihub2RlLCBFeGVjRmluYWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uX3dhbGtlciwKIAkJCQkJCSAg Jm5vZGUtPmluc3RydW1lbnQtPmluc3RyKTsKIAorCS8qIEluZGV4U2Nhbi9JbmRleE9ubHlTY2Fu IGhhdmUgYSBzZXBhcmF0ZSBlbnRyeSB0byB0cmFjayB0YWJsZSBhY2Nlc3MgKi8KKwlpZiAoSXNB KG5vZGUsIEluZGV4U2NhblN0YXRlKSkKKwl7CisJCUluZGV4U2NhblN0YXRlICppc3MgPSBjYXN0 Tm9kZShJbmRleFNjYW5TdGF0ZSwgbm9kZSk7CisKKwkJSW5zdHJGaW5hbGl6ZUNoaWxkKCZpc3Mt Pmlzc19JbnN0cnVtZW50LT50YWJsZV9pbnN0ciwgJm5vZGUtPmluc3RydW1lbnQtPmluc3RyKTsK Kwl9CisJZWxzZSBpZiAoSXNBKG5vZGUsIEluZGV4T25seVNjYW5TdGF0ZSkpCisJeworCQlJbmRl eE9ubHlTY2FuU3RhdGUgKmlvc3MgPSBjYXN0Tm9kZShJbmRleE9ubHlTY2FuU3RhdGUsIG5vZGUp OworCisJCUluc3RyRmluYWxpemVDaGlsZCgmaW9zcy0+aW9zc19JbnN0cnVtZW50LT50YWJsZV9p bnN0ciwgJm5vZGUtPmluc3RydW1lbnQtPmluc3RyKTsKKwl9CisKIAlJbnN0ckZpbmFsaXplQ2hp bGQoJm5vZGUtPmluc3RydW1lbnQtPmluc3RyLCBwYXJlbnQpOwogCiAJcmV0dXJuIGZhbHNlOwpA QCAtODkyLDYgKzkwNiwzOCBAQCBFeGVjRmluYWxpemVXb3JrZXJJbnN0cnVtZW50YXRpb25fd2Fs a2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKIAogCW51bV93b3JrZXJzID0gbm9k ZS0+d29ya2VyX2luc3RydW1lbnQtPm51bV93b3JrZXJzOwogCisJLyoKKwkgKiBGb2xkIHBlci13 b3JrZXIgSW5kZXhTY2FuL0luZGV4T25seVNjYW4gdGFibGUgYnVmZmVyIHN0YXRzIGludG8gdGhl CisJICogcGVyLXdvcmtlciBub2RlIHN0YXRzLCBtYXRjaGluZyB3aGF0IEV4ZWNGaW5hbGl6ZU5v ZGVJbnN0cnVtZW50YXRpb24KKwkgKiBkb2VzIGZvciB0aGUgbGVhZGVyLgorCSAqLworCWlmIChJ c0Eobm9kZSwgSW5kZXhTY2FuU3RhdGUpKQorCXsKKwkJSW5kZXhTY2FuU3RhdGUgKmlzcyA9IGNh c3ROb2RlKEluZGV4U2NhblN0YXRlLCBub2RlKTsKKworCQlpZiAoaXNzLT5pc3NfU2hhcmVkSW5m bykKKwkJeworCQkJaW50CQkJbndvcmtlcnMgPSBNaW4obnVtX3dvcmtlcnMsIGlzcy0+aXNzX1No YXJlZEluZm8tPm51bV93b3JrZXJzKTsKKworCQkJZm9yIChpbnQgbiA9IDA7IG4gPCBud29ya2Vy czsgbisrKQorCQkJCUluc3RyQWNjdW1TdGFjaygmbm9kZS0+d29ya2VyX2luc3RydW1lbnQtPmlu c3RydW1lbnRbbl0uaW5zdHIsCisJCQkJCQkJCSZpc3MtPmlzc19TaGFyZWRJbmZvLT53aW5zdHJ1 bWVudFtuXS50YWJsZV9pbnN0cik7CisJCX0KKwl9CisJZWxzZSBpZiAoSXNBKG5vZGUsIEluZGV4 T25seVNjYW5TdGF0ZSkpCisJeworCQlJbmRleE9ubHlTY2FuU3RhdGUgKmlvc3MgPSBjYXN0Tm9k ZShJbmRleE9ubHlTY2FuU3RhdGUsIG5vZGUpOworCisJCWlmIChpb3NzLT5pb3NzX1NoYXJlZElu Zm8pCisJCXsKKwkJCWludAkJCW53b3JrZXJzID0gTWluKG51bV93b3JrZXJzLCBpb3NzLT5pb3Nz X1NoYXJlZEluZm8tPm51bV93b3JrZXJzKTsKKworCQkJZm9yIChpbnQgbiA9IDA7IG4gPCBud29y a2VyczsgbisrKQorCQkJCUluc3RyQWNjdW1TdGFjaygmbm9kZS0+d29ya2VyX2luc3RydW1lbnQt Pmluc3RydW1lbnRbbl0uaW5zdHIsCisJCQkJCQkJCSZpb3NzLT5pb3NzX1NoYXJlZEluZm8tPndp bnN0cnVtZW50W25dLnRhYmxlX2luc3RyKTsKKwkJfQorCX0KKwogCS8qIEFjY3VtdWxhdGUgdGhp cyBub2RlJ3MgcGVyLXdvcmtlciBzdGF0cyB0byBwYXJlbnQncyBwZXItd29ya2VyIHN0YXRzICov CiAJaWYgKHBhcmVudCAmJiBwYXJlbnQtPndvcmtlcl9pbnN0cnVtZW50KQogCXsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYwppbmRleCA3MGM1NWVlNmQ2MS4uNjU3 ZWUyZDA2NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRl eHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMK QEAgLTI3Niw3ICsyNzYsNyBAQCBFeGVjSW5pdEJpdG1hcEluZGV4U2NhbihCaXRtYXBJbmRleFNj YW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJLyogU2V0IHVwIGluc3Ry dW1lbnRhdGlvbiBvZiBiaXRtYXAgaW5kZXggc2NhbnMgaWYgcmVxdWVzdGVkICovCiAJaWYgKGVz dGF0ZS0+ZXNfaW5zdHJ1bWVudCkKLQkJaW5kZXhzdGF0ZS0+Ymlzc19JbnN0cnVtZW50ID0gcGFs bG9jMF9vYmplY3QoSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uKTsKKwkJaW5kZXhzdGF0ZS0+Ymlz c19JbnN0cnVtZW50ID0gTWVtb3J5Q29udGV4dEFsbG9jWmVybyhlc3RhdGUtPmVzX3F1ZXJ5X2lu c3RyLT5pbnN0cl9jeHQsIHNpemVvZihJbmRleFNjYW5JbnN0cnVtZW50YXRpb24pKTsKIAogCS8q IE9wZW4gdGhlIGluZGV4IHJlbGF0aW9uLiAqLwogCWxvY2ttb2RlID0gZXhlY19ydF9mZXRjaChu b2RlLT5zY2FuLnNjYW5yZWxpZCwgZXN0YXRlKS0+cmVsbG9ja21vZGU7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwppbmRleCBkZTYxNTRmZDU0MS4uZDkxODU3MGU2ODQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwpAQCAtNjcsNiArNjcs NyBAQCBJbmRleE9ubHlOZXh0KEluZGV4T25seVNjYW5TdGF0ZSAqbm9kZSkKIAlJbmRleFNjYW5E ZXNjIHNjYW5kZXNjOwogCVR1cGxlVGFibGVTbG90ICpzbG90OwogCUl0ZW1Qb2ludGVyIHRpZDsK KwlJbnN0cnVtZW50YXRpb24gKnRhYmxlX2luc3RyID0gTlVMTDsKIAogCS8qCiAJICogZXh0cmFj dCBuZWNlc3NhcnkgaW5mb3JtYXRpb24gZnJvbSBpbmRleCBzY2FuIG5vZGUKQEAgLTgzLDYgKzg0 LDkgQEAgSW5kZXhPbmx5TmV4dChJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUpCiAJZWNvbnRleHQg PSBub2RlLT5zcy5wcy5wc19FeHByQ29udGV4dDsKIAlzbG90ID0gbm9kZS0+c3Muc3NfU2NhblR1 cGxlU2xvdDsKIAorCWlmIChub2RlLT5pb3NzX0luc3RydW1lbnQgJiYgbm9kZS0+aW9zc19JbnN0 cnVtZW50LT50YWJsZV9pbnN0ci5uZWVkX3N0YWNrKQorCQl0YWJsZV9pbnN0ciA9ICZub2RlLT5p b3NzX0luc3RydW1lbnQtPnRhYmxlX2luc3RyOworCiAJaWYgKHNjYW5kZXNjID09IE5VTEwpCiAJ ewogCQkvKgpAQCAtMTY1LDExICsxNjksMjIgQEAgSW5kZXhPbmx5TmV4dChJbmRleE9ubHlTY2Fu U3RhdGUgKm5vZGUpCiAJCQkJCQkJSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcih0aWQpLAogCQkJ CQkJCSZub2RlLT5pb3NzX1ZNQnVmZmVyKSkKIAkJeworCQkJYm9vbAkJZm91bmQ7CisKIAkJCS8q CiAJCQkgKiBSYXRzLCB3ZSBoYXZlIHRvIHZpc2l0IHRoZSBoZWFwIHRvIGNoZWNrIHZpc2liaWxp dHkuCiAJCQkgKi8KIAkJCUluc3RyQ291bnRUdXBsZXMyKG5vZGUsIDEpOwotCQkJaWYgKCFpbmRl eF9mZXRjaF9oZWFwKHNjYW5kZXNjLCBub2RlLT5pb3NzX1RhYmxlU2xvdCkpCisKKwkJCWlmICh0 YWJsZV9pbnN0cikKKwkJCQlJbnN0clB1c2hTdGFjayh0YWJsZV9pbnN0cik7CisKKwkJCWZvdW5k ID0gaW5kZXhfZmV0Y2hfaGVhcChzY2FuZGVzYywgbm9kZS0+aW9zc19UYWJsZVNsb3QpOworCisJ CQlpZiAodGFibGVfaW5zdHIpCisJCQkJSW5zdHJQb3BTdGFjayh0YWJsZV9pbnN0cik7CisKKwkJ CWlmICghZm91bmQpCiAJCQkJY29udGludWU7CQkvKiBubyB2aXNpYmxlIHR1cGxlLCB0cnkgbmV4 dCBpbmRleCBlbnRyeSAqLwogCiAJCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5pb3NzX1RhYmxlU2xv dCk7CkBAIC00MzYsNiArNDUxLDcgQEAgRXhlY0VuZEluZGV4T25seVNjYW4oSW5kZXhPbmx5U2Nh blN0YXRlICpub2RlKQogCQkgKiB3aGljaCB3aWxsIGhhdmUgYSBuZXcgSW5kZXhPbmx5U2NhblN0 YXRlIGFuZCB6ZXJvZWQgc3RhdHMuCiAJCSAqLwogCQl3aW5zdHJ1bWVudC0+bnNlYXJjaGVzICs9 IG5vZGUtPmlvc3NfSW5zdHJ1bWVudC0+bnNlYXJjaGVzOworCQlJbnN0ckFjY3VtU3RhY2soJndp bnN0cnVtZW50LT50YWJsZV9pbnN0ciwgJm5vZGUtPmlvc3NfSW5zdHJ1bWVudC0+dGFibGVfaW5z dHIpOwogCX0KIAogCS8qCkBAIC02MTAsNyArNjI2LDIxIEBAIEV4ZWNJbml0SW5kZXhPbmx5U2Nh bihJbmRleE9ubHlTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCS8q IFNldCB1cCBpbnN0cnVtZW50YXRpb24gb2YgaW5kZXgtb25seSBzY2FucyBpZiByZXF1ZXN0ZWQg Ki8KIAlpZiAoZXN0YXRlLT5lc19pbnN0cnVtZW50KQotCQlpbmRleHN0YXRlLT5pb3NzX0luc3Ry dW1lbnQgPSBwYWxsb2MwX29iamVjdChJbmRleFNjYW5JbnN0cnVtZW50YXRpb24pOworCXsKKwkJ aW5kZXhzdGF0ZS0+aW9zc19JbnN0cnVtZW50ID0gTWVtb3J5Q29udGV4dEFsbG9jWmVybyhlc3Rh dGUtPmVzX3F1ZXJ5X2luc3RyLT5pbnN0cl9jeHQsIHNpemVvZihJbmRleFNjYW5JbnN0cnVtZW50 YXRpb24pKTsKKworCQkvKgorCQkgKiBUcmFjayB0YWJsZSBhbmQgaW5kZXggYWNjZXNzIHNlcGFy YXRlbHkuIFdlIGludGVudGlvbmFsbHkgZG9uJ3QKKwkJICogY29sbGVjdCB0aW1pbmcgKGV2ZW4g aWYgZW5hYmxlZCksIHNpbmNlIHdlIGRvbid0IG5lZWQgaXQsIGFuZAorCQkgKiBJbmRleE9ubHlO ZXh0IGNhbGxzIEluc3RyUHVzaFN0YWNrIC8gSW5zdHJQb3BTdGFjayAoaW5zdGVhZCBvZiB0aGUK KwkJICogZnVsbCBJbnN0ck5vZGUqKSB0byByZWR1Y2Ugb3ZlcmhlYWQuCisJCSAqLworCQlpZiAo KGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCAmIElOU1RSVU1FTlRfQlVGRkVSUykgIT0gMCkKKwkJewor CQkJSW5zdHJJbml0T3B0aW9ucygmaW5kZXhzdGF0ZS0+aW9zc19JbnN0cnVtZW50LT50YWJsZV9p bnN0ciwgSU5TVFJVTUVOVF9CVUZGRVJTKTsKKwkJCUluc3RyUXVlcnlSZW1lbWJlckNoaWxkKGVz dGF0ZS0+ZXNfcXVlcnlfaW5zdHIsICZpbmRleHN0YXRlLT5pb3NzX0luc3RydW1lbnQtPnRhYmxl X2luc3RyKTsKKwkJfQorCX0KIAogCS8qIE9wZW4gdGhlIGluZGV4IHJlbGF0aW9uLiAqLwogCWxv Y2ttb2RlID0gZXhlY19ydF9mZXRjaChub2RlLT5zY2FuLnNjYW5yZWxpZCwgZXN0YXRlKS0+cmVs bG9ja21vZGU7CkBAIC04OTksNCArOTI5LDExIEBAIEV4ZWNJbmRleE9ubHlTY2FuUmV0cmlldmVJ bnN0cnVtZW50YXRpb24oSW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQogCQlTaGFyZWRJbmZvLT5u dW1fd29ya2VycyAqIHNpemVvZihJbmRleFNjYW5JbnN0cnVtZW50YXRpb24pOwogCW5vZGUtPmlv c3NfU2hhcmVkSW5mbyA9IHBhbGxvYyhzaXplKTsKIAltZW1jcHkobm9kZS0+aW9zc19TaGFyZWRJ bmZvLCBTaGFyZWRJbmZvLCBzaXplKTsKKworCS8qIEFnZ3JlZ2F0ZSB3b3JrZXJzJyB0YWJsZSBi dWZmZXIvV0FMIHVzYWdlIGludG8gbGVhZGVyJ3MgZW50cnkgKi8KKwlmb3IgKGludCBpID0gMDsg aSA8IG5vZGUtPmlvc3NfU2hhcmVkSW5mby0+bnVtX3dvcmtlcnM7IGkrKykKKwl7CisJCUluc3Ry QWNjdW1TdGFjaygmbm9kZS0+aW9zc19JbnN0cnVtZW50LT50YWJsZV9pbnN0ciwKKwkJCQkJCSZu b2RlLT5pb3NzX1NoYXJlZEluZm8tPndpbnN0cnVtZW50W2ldLnRhYmxlX2luc3RyKTsKKwl9CiB9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKaW5kZXggMTYyMGQxNDYwNzEuLjUwNDEy NjY5ODRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCkBAIC04NSw3ICs4NSwx MCBAQCBJbmRleE5leHQoSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAJRXhwckNvbnRleHQgKmVjb250 ZXh0OwogCVNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uOwogCUluZGV4U2NhbkRlc2Mgc2NhbmRlc2M7 CisJSXRlbVBvaW50ZXIgdGlkOwogCVR1cGxlVGFibGVTbG90ICpzbG90OworCWJvb2wJCWZvdW5k OworCUluc3RydW1lbnRhdGlvbiAqdGFibGVfaW5zdHIgPSBOVUxMOwogCiAJLyoKIAkgKiBleHRy YWN0IG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBmcm9tIGluZGV4IHNjYW4gbm9kZQpAQCAtMTAyLDYg KzEwNSw5IEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAllY29udGV4dCA9IG5v ZGUtPnNzLnBzLnBzX0V4cHJDb250ZXh0OwogCXNsb3QgPSBub2RlLT5zcy5zc19TY2FuVHVwbGVT bG90OwogCisJaWYgKG5vZGUtPmlzc19JbnN0cnVtZW50ICYmIG5vZGUtPmlzc19JbnN0cnVtZW50 LT50YWJsZV9pbnN0ci5uZWVkX3N0YWNrKQorCQl0YWJsZV9pbnN0ciA9ICZub2RlLT5pc3NfSW5z dHJ1bWVudC0+dGFibGVfaW5zdHI7CisKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7CiAJCS8q CkBAIC0xMzIsOCArMTM4LDI0IEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkv KgogCSAqIG9rLCBub3cgdGhhdCB3ZSBoYXZlIHdoYXQgd2UgbmVlZCwgZmV0Y2ggdGhlIG5leHQg dHVwbGUuCiAJICovCi0Jd2hpbGUgKGluZGV4X2dldG5leHRfc2xvdChzY2FuZGVzYywgZGlyZWN0 aW9uLCBzbG90KSkKKwl3aGlsZSAoKHRpZCA9IGluZGV4X2dldG5leHRfdGlkKHNjYW5kZXNjLCBk aXJlY3Rpb24pKSAhPSBOVUxMKQogCXsKKwkJaWYgKHRhYmxlX2luc3RyKQorCQkJSW5zdHJQdXNo U3RhY2sodGFibGVfaW5zdHIpOworCisJCWZvciAoOzspCisJCXsKKwkJCWZvdW5kID0gaW5kZXhf ZmV0Y2hfaGVhcChzY2FuZGVzYywgc2xvdCk7CisJCQlpZiAoZm91bmQgfHwgIXNjYW5kZXNjLT54 c19oZWFwX2NvbnRpbnVlKQorCQkJCWJyZWFrOworCQl9CisKKwkJaWYgKHRhYmxlX2luc3RyKQor CQkJSW5zdHJQb3BTdGFjayh0YWJsZV9pbnN0cik7CisKKwkJaWYgKHVubGlrZWx5KCFmb3VuZCkp CisJCQljb250aW51ZTsKKwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJCS8qCkBAIC0x ODEsNiArMjAzLDcgQEAgSW5kZXhOZXh0V2l0aFJlb3JkZXIoSW5kZXhTY2FuU3RhdGUgKm5vZGUp CiAJRGF0dW0JICAgKmxhc3RmZXRjaGVkX3ZhbHM7CiAJYm9vbAkgICAqbGFzdGZldGNoZWRfbnVs bHM7CiAJaW50CQkJY21wOworCUluc3RydW1lbnRhdGlvbiAqdGFibGVfaW5zdHIgPSBOVUxMOwog CiAJZXN0YXRlID0gbm9kZS0+c3MucHMuc3RhdGU7CiAKQEAgLTIwMCw2ICsyMjMsOSBAQCBJbmRl eE5leHRXaXRoUmVvcmRlcihJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAllY29udGV4dCA9IG5vZGUt PnNzLnBzLnBzX0V4cHJDb250ZXh0OwogCXNsb3QgPSBub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90 OwogCisJaWYgKG5vZGUtPmlzc19JbnN0cnVtZW50ICYmIG5vZGUtPmlzc19JbnN0cnVtZW50LT50 YWJsZV9pbnN0ci5uZWVkX3N0YWNrKQorCQl0YWJsZV9pbnN0ciA9ICZub2RlLT5pc3NfSW5zdHJ1 bWVudC0+dGFibGVfaW5zdHI7CisKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7CiAJCS8qCkBA IC0yNjMsMzYgKzI4OSw2NyBAQCBJbmRleE5leHRXaXRoUmVvcmRlcihJbmRleFNjYW5TdGF0ZSAq bm9kZSkKIAkJfQogCiAJCS8qCi0JCSAqIEZldGNoIG5leHQgdHVwbGUgZnJvbSB0aGUgaW5kZXgu CisJCSAqIEZldGNoIG5leHQgdmFsaWQgdHVwbGUgZnJvbSB0aGUgaW5kZXguCiAJCSAqLwotbmV4 dF9pbmRleHR1cGxlOgotCQlpZiAoIWluZGV4X2dldG5leHRfc2xvdChzY2FuZGVzYywgRm9yd2Fy ZFNjYW5EaXJlY3Rpb24sIHNsb3QpKQorCQlmb3IgKDs7KQogCQl7CisJCQlJdGVtUG9pbnRlciB0 aWQ7CisJCQlib29sCQlmb3VuZDsKKworCQkJLyogVGltZSB0byBmZXRjaCB0aGUgbmV4dCBUSUQg ZnJvbSB0aGUgaW5kZXggKi8KKwkJCXRpZCA9IGluZGV4X2dldG5leHRfdGlkKHNjYW5kZXNjLCBG b3J3YXJkU2NhbkRpcmVjdGlvbik7CisKKwkJCS8qIElmIHdlJ3JlIG91dCBvZiBpbmRleCBlbnRy aWVzLCB3ZSdyZSBkb25lICovCisJCQlpZiAodGlkID09IE5VTEwpCisJCQl7CisJCQkJLyoKKwkJ CQkgKiBObyBtb3JlIHR1cGxlcyBmcm9tIHRoZSBpbmRleC4gIEJ1dCB3ZSBzdGlsbCBuZWVkIHRv IGRyYWluCisJCQkJICogYW55IHJlbWFpbmluZyB0dXBsZXMgZnJvbSB0aGUgcXVldWUgYmVmb3Jl IHdlJ3JlIGRvbmUuCisJCQkJICovCisJCQkJbm9kZS0+aXNzX1JlYWNoZWRFbmQgPSB0cnVlOwor CQkJCWJyZWFrOworCQkJfQorCisJCQlBc3NlcnQoSXRlbVBvaW50ZXJFcXVhbHModGlkLCAmc2Nh bmRlc2MtPnhzX2hlYXB0aWQpKTsKKworCQkJaWYgKHRhYmxlX2luc3RyKQorCQkJCUluc3RyUHVz aFN0YWNrKHRhYmxlX2luc3RyKTsKKworCQkJZm9yICg7OykKKwkJCXsKKwkJCQlmb3VuZCA9IGlu ZGV4X2ZldGNoX2hlYXAoc2NhbmRlc2MsIHNsb3QpOworCQkJCWlmIChmb3VuZCB8fCAhc2NhbmRl c2MtPnhzX2hlYXBfY29udGludWUpCisJCQkJCWJyZWFrOworCQkJfQorCisJCQlpZiAodGFibGVf aW5zdHIpCisJCQkJSW5zdHJQb3BTdGFjayh0YWJsZV9pbnN0cik7CisKIAkJCS8qCi0JCQkgKiBO byBtb3JlIHR1cGxlcyBmcm9tIHRoZSBpbmRleC4gIEJ1dCB3ZSBzdGlsbCBuZWVkIHRvIGRyYWlu IGFueQotCQkJICogcmVtYWluaW5nIHR1cGxlcyBmcm9tIHRoZSBxdWV1ZSBiZWZvcmUgd2UncmUg ZG9uZS4KKwkJCSAqIElmIHRoZSBpbmRleCB3YXMgbG9zc3ksIHdlIGhhdmUgdG8gcmVjaGVjayB0 aGUgaW5kZXggcXVhbHMgYW5kCisJCQkgKiBPUkRFUiBCWSBleHByZXNzaW9ucyB1c2luZyB0aGUg ZmV0Y2hlZCB0dXBsZS4KIAkJCSAqLwotCQkJbm9kZS0+aXNzX1JlYWNoZWRFbmQgPSB0cnVlOwot CQkJY29udGludWU7Ci0JCX0KLQotCQkvKgotCQkgKiBJZiB0aGUgaW5kZXggd2FzIGxvc3N5LCB3 ZSBoYXZlIHRvIHJlY2hlY2sgdGhlIGluZGV4IHF1YWxzIGFuZAotCQkgKiBPUkRFUiBCWSBleHBy ZXNzaW9ucyB1c2luZyB0aGUgZmV0Y2hlZCB0dXBsZS4KLQkJICovCi0JCWlmIChzY2FuZGVzYy0+ eHNfcmVjaGVjaykKLQkJewotCQkJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gc2xvdDsKLQkJ CWlmICghRXhlY1F1YWxBbmRSZXNldChub2RlLT5pbmRleHF1YWxvcmlnLCBlY29udGV4dCkpCisJ CQlpZiAoZm91bmQgJiYgc2NhbmRlc2MtPnhzX3JlY2hlY2spCiAJCQl7Ci0JCQkJLyogRmFpbHMg cmVjaGVjaywgc28gZHJvcCBpdCBhbmQgbG9vcCBiYWNrIGZvciBhbm90aGVyICovCi0JCQkJSW5z dHJDb3VudEZpbHRlcmVkMihub2RlLCAxKTsKLQkJCQkvKiBhbGxvdyB0aGlzIGxvb3AgdG8gYmUg Y2FuY2VsbGFibGUgKi8KLQkJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwotCQkJCWdvdG8gbmV4 dF9pbmRleHR1cGxlOworCQkJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNsb3Q7CisJCQkJ aWYgKCFFeGVjUXVhbEFuZFJlc2V0KG5vZGUtPmluZGV4cXVhbG9yaWcsIGVjb250ZXh0KSkKKwkJ CQl7CisJCQkJCS8qIEZhaWxzIHJlY2hlY2ssIHNvIGRyb3AgaXQgYW5kIGxvb3AgYmFjayBmb3Ig YW5vdGhlciAqLworCQkJCQlJbnN0ckNvdW50RmlsdGVyZWQyKG5vZGUsIDEpOworCQkJCQkvKiBh bGxvdyB0aGlzIGxvb3AgdG8gYmUgY2FuY2VsbGFibGUgKi8KKwkJCQkJQ0hFQ0tfRk9SX0lOVEVS UlVQVFMoKTsKKwkJCQkJY29udGludWU7CisJCQkJfQogCQkJfQorCisJCQlpZiAoZm91bmQpCisJ CQkJYnJlYWs7CiAJCX0KIAorCQkvKiBObyBtb3JlIGluZGV4IGVudHJpZXMsIHJlLXJ1biB0byBj bGVhciB0aGUgcmVvcmRlciBxdWV1ZSAqLworCQlpZiAobm9kZS0+aXNzX1JlYWNoZWRFbmQpCisJ CQljb250aW51ZTsKKwogCQlpZiAoc2NhbmRlc2MtPnhzX3JlY2hlY2tvcmRlcmJ5KQogCQl7CiAJ CQllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBzbG90OwpAQCAtODE4LDYgKzg3NSw3IEBAIEV4 ZWNFbmRJbmRleFNjYW4oSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAJCSAqIHdoaWNoIHdpbGwgaGF2 ZSBhIG5ldyBJbmRleE9ubHlTY2FuU3RhdGUgYW5kIHplcm9lZCBzdGF0cy4KIAkJICovCiAJCXdp bnN0cnVtZW50LT5uc2VhcmNoZXMgKz0gbm9kZS0+aXNzX0luc3RydW1lbnQtPm5zZWFyY2hlczsK KwkJSW5zdHJBY2N1bVN0YWNrKCZ3aW5zdHJ1bWVudC0+dGFibGVfaW5zdHIsICZub2RlLT5pc3Nf SW5zdHJ1bWVudC0+dGFibGVfaW5zdHIpOwogCX0KIAogCS8qCkBAIC05ODAsNyArMTAzOCwyMSBA QCBFeGVjSW5pdEluZGV4U2NhbihJbmRleFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCiAJLyogU2V0IHVwIGluc3RydW1lbnRhdGlvbiBvZiBpbmRleCBzY2FucyBpZiBy ZXF1ZXN0ZWQgKi8KIAlpZiAoZXN0YXRlLT5lc19pbnN0cnVtZW50KQotCQlpbmRleHN0YXRlLT5p c3NfSW5zdHJ1bWVudCA9IHBhbGxvYzBfb2JqZWN0KEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbik7 CisJeworCQlpbmRleHN0YXRlLT5pc3NfSW5zdHJ1bWVudCA9IE1lbW9yeUNvbnRleHRBbGxvY1pl cm8oZXN0YXRlLT5lc19xdWVyeV9pbnN0ci0+aW5zdHJfY3h0LCBzaXplb2YoSW5kZXhTY2FuSW5z dHJ1bWVudGF0aW9uKSk7CisKKwkJLyoKKwkJICogVHJhY2sgdGFibGUgYW5kIGluZGV4IGFjY2Vz cyBzZXBhcmF0ZWx5LiBXZSBpbnRlbnRpb25hbGx5IGRvbid0CisJCSAqIGNvbGxlY3QgdGltaW5n IChldmVuIGlmIGVuYWJsZWQpLCBzaW5jZSB3ZSBkb24ndCBuZWVkIGl0LCBhbmQKKwkJICogSW5k ZXhOZXh0IC8gSW5kZXhOZXh0V2l0aFJlb3JkZXIgY2FsbCBJbnN0clB1c2hTdGFjayAvCisJCSAq IEluc3RyUG9wU3RhY2sgKGluc3RlYWQgb2YgdGhlIGZ1bGwgSW5zdHJOb2RlKikgdG8gcmVkdWNl IG92ZXJoZWFkLgorCQkgKi8KKwkJaWYgKChlc3RhdGUtPmVzX2luc3RydW1lbnQgJiBJTlNUUlVN RU5UX0JVRkZFUlMpICE9IDApCisJCXsKKwkJCUluc3RySW5pdE9wdGlvbnMoJmluZGV4c3RhdGUt Pmlzc19JbnN0cnVtZW50LT50YWJsZV9pbnN0ciwgSU5TVFJVTUVOVF9CVUZGRVJTKTsKKwkJCUlu c3RyUXVlcnlSZW1lbWJlckNoaWxkKGVzdGF0ZS0+ZXNfcXVlcnlfaW5zdHIsICZpbmRleHN0YXRl LT5pc3NfSW5zdHJ1bWVudC0+dGFibGVfaW5zdHIpOworCQl9CisJfQogCiAJLyogT3BlbiB0aGUg aW5kZXggcmVsYXRpb24uICovCiAJbG9ja21vZGUgPSBleGVjX3J0X2ZldGNoKG5vZGUtPnNjYW4u c2NhbnJlbGlkLCBlc3RhdGUpLT5yZWxsb2NrbW9kZTsKQEAgLTE4MzQsNCArMTkwNiwxMSBAQCBF eGVjSW5kZXhTY2FuUmV0cmlldmVJbnN0cnVtZW50YXRpb24oSW5kZXhTY2FuU3RhdGUgKm5vZGUp CiAJCVNoYXJlZEluZm8tPm51bV93b3JrZXJzICogc2l6ZW9mKEluZGV4U2Nhbkluc3RydW1lbnRh dGlvbik7CiAJbm9kZS0+aXNzX1NoYXJlZEluZm8gPSBwYWxsb2Moc2l6ZSk7CiAJbWVtY3B5KG5v ZGUtPmlzc19TaGFyZWRJbmZvLCBTaGFyZWRJbmZvLCBzaXplKTsKKworCS8qIEFnZ3JlZ2F0ZSB3 b3JrZXJzJyB0YWJsZSBidWZmZXIvV0FMIHVzYWdlIGludG8gbGVhZGVyJ3MgZW50cnkgKi8KKwlm b3IgKGludCBpID0gMDsgaSA8IG5vZGUtPmlzc19TaGFyZWRJbmZvLT5udW1fd29ya2VyczsgaSsr KQorCXsKKwkJSW5zdHJBY2N1bVN0YWNrKCZub2RlLT5pc3NfSW5zdHJ1bWVudC0+dGFibGVfaW5z dHIsCisJCQkJCQkmbm9kZS0+aXNzX1NoYXJlZEluZm8tPndpbnN0cnVtZW50W2ldLnRhYmxlX2lu c3RyKTsKKwl9CiB9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50 X25vZGUuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnRfbm9kZS5oCmluZGV4IDJh MGZmMzc3YTczLi5lMjMxNWNlZjM4NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv aW5zdHJ1bWVudF9ub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudF9u b2RlLmgKQEAgLTE4LDYgKzE4LDggQEAKICNpZm5kZWYgSU5TVFJVTUVOVF9OT0RFX0gKICNkZWZp bmUgSU5TVFJVTUVOVF9OT0RFX0gKIAorI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQuaCIK KwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCUluc3RydW1lbnRhdGlvbiBpbmZvcm1h dGlvbiBmb3IgYWdncmVnYXRlIGZ1bmN0aW9uIGV4ZWN1dGlvbgpAQCAtNDgsNiArNTAsOSBAQCB0 eXBlZGVmIHN0cnVjdCBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24KIHsKIAkvKiBJbmRleCBzZWFy Y2ggY291bnQgKGluY3JlbWVudGVkIHdpdGggcGdzdGF0X2NvdW50X2luZGV4X3NjYW4gY2FsbCkg Ki8KIAl1aW50NjQJCW5zZWFyY2hlczsKKworCS8qIEluc3RydW1lbnRhdGlvbiB1dGlsaXplZCBm b3IgdHJhY2tpbmcgYnVmZmVyIHVzYWdlIGR1cmluZyB0YWJsZSBhY2Nlc3MgKi8KKwlJbnN0cnVt ZW50YXRpb24gdGFibGVfaW5zdHI7CiB9IEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbjsKIAogLyoK LS0gCjIuNDcuMQoK --00000000000045175b064ec7b858 Content-Type: application/octet-stream; name="v15-0005-Optimize-measuring-WAL-buffer-usage-through-stac.patch" Content-Disposition: attachment; filename="v15-0005-Optimize-measuring-WAL-buffer-usage-through-stac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnmzxbq75 RnJvbSBiZjhjMzAzYzg1YTZkYTUzZTQ3MzViNDI3MWEwNjQ4YThmMmE1NGQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBN b24sIDYgQXByIDIwMjYgMDE6MjA6NDUgLTA3MDAKU3ViamVjdDogW1BBVENIIHYxNSA1LzldIE9w dGltaXplIG1lYXN1cmluZyBXQUwvYnVmZmVyIHVzYWdlIHRocm91Z2gKIHN0YWNrLWJhc2VkIGlu c3RydW1lbnRhdGlvbgoKUHJldmlvdXNseSwgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIHRoZSBidWZm ZXIvV0FMIHVzYWdlIG9mIGEgZ2l2ZW4gY29kZQpzZWN0aW9uLCB3ZSB1dGlsaXplZCBjb250aW51 b3VzbHkgaW5jcmVtZW50aW5nIGdsb2JhbCBjb3VudGVycyB0aGF0IGdldAp1cGRhdGVkIHdoZW4g dGhlIGFjdHVhbCBhY3Rpdml0eSAoZS5nLiBzaGFyZWQgYmxvY2sgcmVhZCkgb2NjdXJyZWQsIGFu ZAp0aGVuIGNhbGN1bGF0ZWQgYSBkaWZmIHdoZW4gdGhlIGNvZGUgc2VjdGlvbiBlbmRlZC4gVGhp cyByZXN1bHRlZCBpbiBhCmJvdHRsZW5lY2sgZm9yIGV4ZWN1dG9yIG5vZGUgaW5zdHJ1bWVudGF0 aW9uIHNwZWNpZmljYWxseSwgd2l0aCB0aGUKZnVuY3Rpb24gQnVmZmVyVXNhZ2VBY2N1bURpZmYg c2hvd2luZyB1cCBpbiBwcm9maWxlcyBhbmQgaW4gc29tZSBjYXNlcwphZGRpbmcgdXAgdG8gMTAl IG92ZXJoZWFkIHRvIGFuIEVYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMpIHJ1bi4KCkluc3RlYWQs IGludHJvZHVjZSBhIHN0YWNrLWJhc2VkIG1lY2hhbmlzbSwgd2hlcmUgdGhlIGFjdHVhbCBhY3Rp dml0eQp3cml0ZXMgaW50byB0aGUgY3VycmVudCBzdGFjayBlbnRyeS4gSW4gdGhlIGNhc2Ugb2Yg ZXhlY3V0b3Igbm9kZXMsIHRoaXMKbWVhbnMgdGhhdCBlYWNoIG5vZGUgZ2V0cyBpdHMgb3duIHN0 YWNrIGVudHJ5IHRoYXQgaXMgcHVzaGVkIGF0Ckluc3RyU3RhcnROb2RlLCBhbmQgcG9wcGVkIGF0 IEluc3RyRW5kTm9kZS4gU3RhY2sgZW50cmllcyBhcmUgemVybwppbml0aWFsaXplZCAoYXZvaWRp bmcgdGhlIGRpZmYgbWVjaGFuaXNtKSBhbmQgZ2V0IGFkZGVkIHRvIHRoZWlyIHBhcmVudAplbnRy eSB3aGVuIHRoZXkgYXJlIGZpbmFsaXplZCwgaS5lLiBubyBtb3JlIG1vZGlmaWNhdGlvbnMgY2Fu IG9jY3VyLgoKVG8gY29ycmVjdGx5IGhhbmRsZSBhYm9ydCBzaXR1YXRpb25zLCBhbnkgdXNlIG9m IGluc3RydW1lbnRhdGlvbiBzdGFja3MKbXVzdCBpbnZvbHZlIGVpdGhlciBhIHRvcC1sZXZlbCBR dWVyeUluc3RydW1lbnRhdGlvbiBzdHJ1Y3QsIGFuZCBpdHMKYXNzb2NpYXRlZCBJbnN0clF1ZXJ5 U3RhcnQvSW5zdHJRdWVyeVN0b3AgaGVscGVycyAod2hpY2ggdXNlIHJlc291cmNlCm93bmVycyB0 byBoYW5kbGUgYWJvcnRzKSwgb3IgdGhlIEluc3RydW1lbnRhdGlvbiBzdHJ1Y3QgaXRzZWxmIHdp dGgKZGVkaWNhdGVkIFBHX1RSWS9QR19GSU5BTExZIGNhbGxzIHRoYXQgZW5zdXJlIHRoZSBzdGFj ayBpcyBpbiBhCmNvbnNpc3RlbnQgc3RhdGUgYWZ0ZXIgYW4gYWJvcnQuCgpJbiB0ZXN0cywgdGhl IHN0YWNrLWJhc2VkIGluc3RydW1lbnRhdGlvbiBtZWNoYW5pc20gcmVkdWNlcyB0aGUgb3Zlcmhl YWQKb2YgRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPTiwgVElNSU5HIE9GRikgZm9yIGEgbGFy Z2UgQ09VTlQoKikgcXVlcnkKZnJvbSBhYm91dCA1MCUgdG8gMjIlIG9uIHRvcCBvZiB0aGUgYWN0 dWFsIHJ1bnRpbWUuCgpUaGlzIGFsc28gZHJvcHMgdGhlIGdsb2JhbCBwZ0J1ZmZlclVzYWdlLCBh bnkgY2FsbGVycyBpbnRlcmVzdGVkIGluCm1lYXN1cmluZyBidWZmZXIgYWN0aXZpdHkgc2hvdWxk IGluc3RlYWQgdXRpbGl6ZSBJbnN0clN0YXJ0L0luc3RyU3RvcC4KClRoZSByZWxhdGVkIGdsb2Jh bCBwZ1dhbFVzYWdlIGlzIGtlcHQgZm9yIG5vdyBkdWUgdG8gaXRzIHVzZSBpbiBwZ3N0YXQKdG8g dHJhY2sgYWdncmVnYXRlIFdBTCBhY3Rpdml0eSBhbmQgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVl emUgZm9yCm1lYXN1cmluZyBGUElzLgoKQXV0aG9yOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwu Y29tPgpSZXZpZXdlZC1ieTogWnNvbHQgUGFycmFnaSA8enNvbHQucGFycmFnaUBwZXJjb25hLmNv bT4KUmV2aWV3ZWQtYnk6IEhlaWtraSBMaW5uYWthbmdhcyA8aGxpbm5ha2FAaWtpLmZpPgpEaXNj dXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvQ0FQNTNQ a3hybXBFQ3pWRnBlZUVFSERHZTZ1NjI1cyUyQllrbVZ2NS1ndzNMX05EU2ZiaUElNDBtYWlsLmdt YWlsLmNvbSNjYjU4M2EwOGU4ZTA5NmFhMWYwOTNiYjE3ODkwNjE3MwotLS0KIC4uLi9wZ19zdGF0 X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMgICB8ICAgNiArLQogc3JjL2JhY2tlbmQv YWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9h Y2Nlc3MvZ2luL2dpbmluc2VydC5jICAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9jb21t YW5kcy9hbmFseXplLmMgICAgICAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9iYWNrZW5kL2NvbW1h bmRzL2V4cGxhaW4uYyAgICAgICAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbl9kci5jICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRz L3ByZXBhcmUuYyAgICAgICAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy92 YWN1dW1wYXJhbGxlbC5jICAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL1JF QURNRS5pbnN0cnVtZW50ICAgICAgICB8IDIzNyArKysrKysrKysrCiBzcmMvYmFja2VuZC9leGVj dXRvci9leGVjTWFpbi5jICAgICAgICAgICAgICAgfCAgOTQgKysrLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgICAgICAgIHwgIDMyICstCiBzcmMvYmFja2VuZC9leGVj dXRvci9leGVjUGFydGl0aW9uLmMgICAgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNQcm9jbm9kZS5jICAgICAgICAgICB8IDEwNiArKysrLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1V0aWxzLmMgICAgICAgICAgICAgIHwgIDEzICstCiBzcmMvYmFja2VuZC9leGVj dXRvci9pbnN0cnVtZW50LmMgICAgICAgICAgICAgfCA0MjkgKysrKysrKysrKysrKystLS0tCiBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAgIDIgKy0KIHNy Yy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jICAgICAgICAgICB8ICAgNiArLQogc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2lvLmMgICAgICAgIHwgICA2ICstCiBzcmMv aW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9p bmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaCAgICAgICAgICAgICB8IDE5OSArKysrKysrLQog c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgICAyICsKIHNy Yy9pbmNsdWRlL3V0aWxzL3Jlc293bmVyLmggICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDIgKwogMjYgZmls ZXMgY2hhbmdlZCwgMTA0NCBpbnNlcnRpb25zKCspLCAxOTMgZGVsZXRpb25zKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FLmluc3RydW1lbnQKCmRpZmYg LS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyBi L2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCmluZGV4IDM0 NmFkYjU1OTlmLi40ZmRkNWVmODg5OCAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRl bWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVu dHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKQEAgLTkyOSwxMiArOTI5LDExIEBAIHBnc3NfcGxhbm5l cihRdWVyeSAqcGFyc2UsCiAJCX0KIAkJUEdfRklOQUxMWSgpOwogCQl7CisJCQlJbnN0clN0b3BG aW5hbGl6ZSgmaW5zdHIpOwogCQkJbmVzdGluZ19sZXZlbC0tOwogCQl9CiAJCVBHX0VORF9UUlko KTsKIAotCQlJbnN0clN0b3AoJmluc3RyKTsKLQogCQlwZ3NzX3N0b3JlKHF1ZXJ5X3N0cmluZywK IAkJCQkgICBwYXJzZS0+cXVlcnlJZCwKIAkJCQkgICBwYXJzZS0+c3RtdF9sb2NhdGlvbiwKQEAg LTExNDUsNiArMTE0NCw3IEBAIHBnc3NfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10 LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJfQogCQlQR19GSU5BTExZKCk7CiAJCXsKKwkJ CUluc3RyU3RvcEZpbmFsaXplKCZpbnN0cik7CiAJCQluZXN0aW5nX2xldmVsLS07CiAJCX0KIAkJ UEdfRU5EX1RSWSgpOwpAQCAtMTE1OSw4ICsxMTU5LDYgQEAgcGdzc19Qcm9jZXNzVXRpbGl0eShQ bGFubmVkU3RtdCAqcHN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkgKiBmb3JtZXIg dmFsdWUsIHdoaWNoJ2Qgb3RoZXJ3aXNlIGJlIGEgZ29vZCBpZGVhLgogCQkgKi8KIAotCQlJbnN0 clN0b3AoJmluc3RyKTsKLQogCQkvKgogCQkgKiBUcmFjayB0aGUgdG90YWwgbnVtYmVyIG9mIHJv d3MgcmV0cmlldmVkIG9yIGFmZmVjdGVkIGJ5IHRoZSB1dGlsaXR5CiAJCSAqIHN0YXRlbWVudHMg b2YgQ09QWSwgRkVUQ0gsIENSRUFURSBUQUJMRSBBUywgQ1JFQVRFIE1BVEVSSUFMSVpFRApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2JyaW4vYnJpbi5jCmluZGV4IGJkYjMwNzUyZTA5Li4zYTUxNzZjNzZjNyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW4uYwpAQCAtMjQzNCw4ICsyNDM0LDggQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwo QnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4 LAogCSAqIGFuZCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLgogCSAqCiAJICogSWYgdGhlcmUg YXJlIG5vIGV4dGVuc2lvbnMgbG9hZGVkIHRoYXQgY2FyZSwgd2UgY291bGQgc2tpcCB0aGlzLiAg V2UKLQkgKiBoYXZlIG5vIHdheSBvZiBrbm93aW5nIHdoZXRoZXIgYW55b25lJ3MgbG9va2luZyBh dCBwZ1dhbFVzYWdlIG9yCi0JICogcGdCdWZmZXJVc2FnZSwgc28gZG8gaXQgdW5jb25kaXRpb25h bGx5LgorCSAqIGhhdmUgbm8gd2F5IG9mIGtub3dpbmcgd2hldGhlciBhbnlvbmUncyBsb29raW5n IGF0IGluc3RydW1lbnRhdGlvbiwgc28KKwkgKiBkbyBpdCB1bmNvbmRpdGlvbmFsbHkuCiAJICov CiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLAogCQkJCQkJICAgbXVs X3NpemUoc2l6ZW9mKFdhbFVzYWdlKSwgcGN4dC0+bndvcmtlcnMpKTsKQEAgLTI4ODcsNiArMjg4 Nyw3IEBAIF9icmluX3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3Rv YyAqdG9jKQogCVJlbGF0aW9uCWluZGV4UmVsOwogCUxPQ0tNT0RFCWhlYXBMb2NrbW9kZTsKIAlM T0NLTU9ERQlpbmRleExvY2ttb2RlOworCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0cjsKIAlX YWxVc2FnZSAgICp3YWx1c2FnZTsKIAlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CiAJaW50CQkJ c29ydG1lbTsKQEAgLTI5MzYsNyArMjkzNyw3IEBAIF9icmluX3BhcmFsbGVsX2J1aWxkX21haW4o ZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCXR1cGxlc29ydF9hdHRhY2hfc2hhcmVk KHNoYXJlZHNvcnQsIHNlZyk7CiAKIAkvKiBQcmVwYXJlIHRvIHRyYWNrIGJ1ZmZlciB1c2FnZSBk dXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uICovCi0JSW5zdHJTdGFydFBhcmFsbGVsUXVlcnkoKTsK KwlpbnN0ciA9IEluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KCk7CiAKIAkvKgogCSAqIE1pZ2h0IGFz IHdlbGwgdXNlIHJlbGlhYmxlIGZpZ3VyZSB3aGVuIGRvbGluZyBvdXQgbWFpbnRlbmFuY2Vfd29y a19tZW0KQEAgLTI5NTEsNyArMjk1Miw4IEBAIF9icmluX3BhcmFsbGVsX2J1aWxkX21haW4oZHNt X3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCS8qIFJlcG9ydCBXQUwvYnVmZmVyIHVzYWdl IGR1cmluZyBwYXJhbGxlbCBleGVjdXRpb24gKi8KIAlidWZmZXJ1c2FnZSA9IHNobV90b2NfbG9v a3VwKHRvYywgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRSwgZmFsc2UpOwogCXdhbHVzYWdlID0g c2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfV0FMX1VTQUdFLCBmYWxzZSk7Ci0JSW5z dHJFbmRQYXJhbGxlbFF1ZXJ5KCZidWZmZXJ1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCisJ SW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KGluc3RyLAorCQkJCQkJICAmYnVmZmVydXNhZ2VbUGFyYWxs ZWxXb3JrZXJOdW1iZXJdLAogCQkJCQkJICAmd2FsdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJd KTsKIAogCWluZGV4X2Nsb3NlKGluZGV4UmVsLCBpbmRleExvY2ttb2RlKTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2luL2dpbmluc2VydC5jCmluZGV4IDlkODNhNDk1Nzc1Li4wZDgwZjcyYTBiMCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2luL2dpbmluc2VydC5jCkBAIC05OTEsOCArOTkxLDggQEAgX2dpbl9iZWdpbl9wYXJh bGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBp bmRleCwKIAkgKiBhbmQgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRS4KIAkgKgogCSAqIElmIHRo ZXJlIGFyZSBubyBleHRlbnNpb25zIGxvYWRlZCB0aGF0IGNhcmUsIHdlIGNvdWxkIHNraXAgdGhp cy4gIFdlCi0JICogaGF2ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdzIGxvb2tp bmcgYXQgcGdXYWxVc2FnZSBvcgotCSAqIHBnQnVmZmVyVXNhZ2UsIHNvIGRvIGl0IHVuY29uZGl0 aW9uYWxseS4KKwkgKiBoYXZlIG5vIHdheSBvZiBrbm93aW5nIHdoZXRoZXIgYW55b25lJ3MgbG9v a2luZyBhdCBpbnN0cnVtZW50YXRpb24sIHNvCisJICogZG8gaXQgdW5jb25kaXRpb25hbGx5Lgog CSAqLwogCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBjeHQtPmVzdGltYXRvciwKIAkJCQkJCSAg IG11bF9zaXplKHNpemVvZihXYWxVc2FnZSksIHBjeHQtPm53b3JrZXJzKSk7CkBAIC0yMTE4LDYg KzIxMTgsNyBAQCBfZ2luX3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2ht X3RvYyAqdG9jKQogCVJlbGF0aW9uCWluZGV4UmVsOwogCUxPQ0tNT0RFCWhlYXBMb2NrbW9kZTsK IAlMT0NLTU9ERQlpbmRleExvY2ttb2RlOworCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0cjsK IAlXYWxVc2FnZSAgICp3YWx1c2FnZTsKIAlCdWZmZXJVc2FnZSAqYnVmZmVydXNhZ2U7CiAJaW50 CQkJc29ydG1lbTsKQEAgLTIxODYsNyArMjE4Nyw3IEBAIF9naW5fcGFyYWxsZWxfYnVpbGRfbWFp bihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJdHVwbGVzb3J0X2F0dGFjaF9zaGFy ZWQoc2hhcmVkc29ydCwgc2VnKTsKIAogCS8qIFByZXBhcmUgdG8gdHJhY2sgYnVmZmVyIHVzYWdl IGR1cmluZyBwYXJhbGxlbCBleGVjdXRpb24gKi8KLQlJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSgp OworCWluc3RyID0gSW5zdHJTdGFydFBhcmFsbGVsUXVlcnkoKTsKIAogCS8qCiAJICogTWlnaHQg YXMgd2VsbCB1c2UgcmVsaWFibGUgZmlndXJlIHdoZW4gZG9saW5nIG91dCBtYWludGVuYW5jZV93 b3JrX21lbQpAQCAtMjIwMSw3ICsyMjAyLDggQEAgX2dpbl9wYXJhbGxlbF9idWlsZF9tYWluKGRz bV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAkvKiBSZXBvcnQgV0FML2J1ZmZlciB1c2Fn ZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uICovCiAJYnVmZmVydXNhZ2UgPSBzaG1fdG9jX2xv b2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKIAl3YWx1c2FnZSA9 IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgZmFsc2UpOwotCUlu c3RyRW5kUGFyYWxsZWxRdWVyeSgmYnVmZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAor CUluc3RyRW5kUGFyYWxsZWxRdWVyeShpbnN0ciwKKwkJCQkJCSAgJmJ1ZmZlcnVzYWdlW1BhcmFs bGVsV29ya2VyTnVtYmVyXSwKIAkJCQkJCSAgJndhbHVzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVy XSk7CiAKIAlpbmRleF9jbG9zZShpbmRleFJlbCwgaW5kZXhMb2NrbW9kZSk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggMzBmNTg5YzkyMDcuLjI5MWQ5ZDY3YmMyIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC02MzcsNyArNjM3LDcgQEAgaGVhcF92 YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zICpwYXJhbXMsCiAJVGlt ZXN0YW1wVHogc3RhcnR0aW1lID0gMDsKIAlQZ1N0YXRfQ291bnRlciBzdGFydHJlYWR0aW1lID0g MCwKIAkJCQlzdGFydHdyaXRldGltZSA9IDA7Ci0JSW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IE5V TEw7CisJUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyID0gTlVMTDsKIAlFcnJvckNvbnRleHRD YWxsYmFjayBlcnJjYWxsYmFjazsKIAljaGFyCSAgKippbmRuYW1lcyA9IE5VTEw7CiAJU2l6ZQkJ ZGVhZF9pdGVtc19tYXhfYnl0ZXMgPSAwOwpAQCAtNjUzLDggKzY1Myw4IEBAIGhlYXBfdmFjdXVt X3JlbChSZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCQkJc3RhcnRy ZWFkdGltZSA9IHBnU3RhdEJsb2NrUmVhZFRpbWU7CiAJCQlzdGFydHdyaXRldGltZSA9IHBnU3Rh dEJsb2NrV3JpdGVUaW1lOwogCQl9Ci0JCWluc3RyID0gSW5zdHJBbGxvYyhJTlNUUlVNRU5UX0JV RkZFUlMgfCBJTlNUUlVNRU5UX1dBTCk7Ci0JCUluc3RyU3RhcnQoaW5zdHIpOworCQlpbnN0ciA9 IEluc3RyUXVlcnlBbGxvYyhJTlNUUlVNRU5UX0JVRkZFUlMgfCBJTlNUUlVNRU5UX1dBTCk7CisJ CUluc3RyUXVlcnlTdGFydChpbnN0cik7CiAJfQogCiAJLyogVXNlZCBmb3IgaW5zdHJ1bWVudGF0 aW9uIGFuZCBzdGF0cyByZXBvcnQgKi8KQEAgLTk4NSw3ICs5ODUsNyBAQCBoZWFwX3ZhY3V1bV9y ZWwoUmVsYXRpb24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywKIAl7CiAJCVRpbWVz dGFtcFR6IGVuZHRpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CiAKLQkJSW5zdHJTdG9wKGlu c3RyKTsKKwkJSW5zdHJRdWVyeVN0b3BGaW5hbGl6ZShpbnN0cik7CiAKIAkJaWYgKHZlcmJvc2Ug fHwgcGFyYW1zLT5sb2dfdmFjdXVtX21pbl9kdXJhdGlvbiA9PSAwIHx8CiAJCQlUaW1lc3RhbXBE aWZmZXJlbmNlRXhjZWVkcyhzdGFydHRpbWUsIGVuZHRpbWUsCkBAIC0xMDAxLDggKzEwMDEsOCBA QCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFt cywKIAkJCWludDY0CQl0b3RhbF9ibGtzX2hpdDsKIAkJCWludDY0CQl0b3RhbF9ibGtzX3JlYWQ7 CiAJCQlpbnQ2NAkJdG90YWxfYmxrc19kaXJ0aWVkOwotCQkJQnVmZmVyVXNhZ2UgYnVmZmVydXNh Z2UgPSBpbnN0ci0+YnVmdXNhZ2U7Ci0JCQlXYWxVc2FnZQl3YWx1c2FnZSA9IGluc3RyLT53YWx1 c2FnZTsKKwkJCUJ1ZmZlclVzYWdlIGJ1ZmZlcnVzYWdlID0gaW5zdHItPmluc3RyLmJ1ZnVzYWdl OworCQkJV2FsVXNhZ2UJd2FsdXNhZ2UgPSBpbnN0ci0+aW5zdHIud2FsdXNhZ2U7CiAKIAkJCVRp bWVzdGFtcERpZmZlcmVuY2Uoc3RhcnR0aW1lLCBlbmR0aW1lLCAmc2Vjc19kdXIsICZ1c2Vjc19k dXIpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCmluZGV4IDc1NmRmYTNkY2Y0Li4y ZDdiN2NlZjkxMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0 LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKQEAgLTE0NjYsOCAr MTQ2Niw4IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJv b2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAkgKiBhbmQgUEFSQUxMRUxfS0VZX0JVRkZF Ul9VU0FHRS4KIAkgKgogCSAqIElmIHRoZXJlIGFyZSBubyBleHRlbnNpb25zIGxvYWRlZCB0aGF0 IGNhcmUsIHdlIGNvdWxkIHNraXAgdGhpcy4gIFdlCi0JICogaGF2ZSBubyB3YXkgb2Yga25vd2lu ZyB3aGV0aGVyIGFueW9uZSdzIGxvb2tpbmcgYXQgcGdXYWxVc2FnZSBvcgotCSAqIHBnQnVmZmVy VXNhZ2UsIHNvIGRvIGl0IHVuY29uZGl0aW9uYWxseS4KKwkgKiBoYXZlIG5vIHdheSBvZiBrbm93 aW5nIHdoZXRoZXIgYW55b25lJ3MgbG9va2luZyBhdCBpbnN0cnVtZW50YXRpb24sIHNvCisJICog ZG8gaXQgdW5jb25kaXRpb25hbGx5LgogCSAqLwogCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJnBj eHQtPmVzdGltYXRvciwKIAkJCQkJCSAgIG11bF9zaXplKHNpemVvZihXYWxVc2FnZSksIHBjeHQt Pm53b3JrZXJzKSk7CkBAIC0xNzUzLDYgKzE3NTMsNyBAQCBfYnRfcGFyYWxsZWxfYnVpbGRfbWFp bihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJUmVsYXRpb24JaW5kZXhSZWw7CiAJ TE9DS01PREUJaGVhcExvY2ttb2RlOwogCUxPQ0tNT0RFCWluZGV4TG9ja21vZGU7CisJUXVlcnlJ bnN0cnVtZW50YXRpb24gKmluc3RyOwogCVdhbFVzYWdlICAgKndhbHVzYWdlOwogCUJ1ZmZlclVz YWdlICpidWZmZXJ1c2FnZTsKIAlpbnQJCQlzb3J0bWVtOwpAQCAtMTgyOCw3ICsxODI5LDcgQEAg X2J0X3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQog CX0KIAogCS8qIFByZXBhcmUgdG8gdHJhY2sgYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBl eGVjdXRpb24gKi8KLQlJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSgpOworCWluc3RyID0gSW5zdHJT dGFydFBhcmFsbGVsUXVlcnkoKTsKIAogCS8qIFBlcmZvcm0gc29ydGluZyBvZiBzcG9vbCwgYW5k IHBvc3NpYmx5IGEgc3Bvb2wyICovCiAJc29ydG1lbSA9IG1haW50ZW5hbmNlX3dvcmtfbWVtIC8g YnRzaGFyZWQtPnNjYW50dXBsZXNvcnRzdGF0ZXM7CkBAIC0xODM4LDcgKzE4MzksOCBAQCBfYnRf cGFyYWxsZWxfYnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJLyog UmVwb3J0IFdBTC9idWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwogCWJ1 ZmZlcnVzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdF LCBmYWxzZSk7CiAJd2FsdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9X QUxfVVNBR0UsIGZhbHNlKTsKLQlJbnN0ckVuZFBhcmFsbGVsUXVlcnkoJmJ1ZmZlcnVzYWdlW1Bh cmFsbGVsV29ya2VyTnVtYmVyXSwKKwlJbnN0ckVuZFBhcmFsbGVsUXVlcnkoaW5zdHIsCisJCQkJ CQkgICZidWZmZXJ1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCiAJCQkJCQkgICZ3YWx1c2Fn ZVtQYXJhbGxlbFdvcmtlck51bWJlcl0pOwogCiAjaWZkZWYgQlRSRUVfQlVJTERfU1RBVFMKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2FuYWx5emUuYwppbmRleCA4NDcyZmMwYzI4MC4uMTBmOGEyZGM4MWMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9hbmFseXplLmMKQEAgLTMwOSw3ICszMDksNyBAQCBkb19hbmFseXplX3JlbChSZWxhdGlv biBvbmVyZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCU9pZAkJCXNhdmVfdXNlcmlk OwogCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CiAJaW50CQkJc2F2ZV9uZXN0bGV2ZWw7Ci0JSW5z dHJ1bWVudGF0aW9uICppbnN0ciA9IE5VTEw7CisJUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3Ry ID0gTlVMTDsKIAlQZ1N0YXRfQ291bnRlciBzdGFydHJlYWR0aW1lID0gMDsKIAlQZ1N0YXRfQ291 bnRlciBzdGFydHdyaXRldGltZSA9IDA7CiAKQEAgLTM2MSw4ICszNjEsOCBAQCBkb19hbmFseXpl X3JlbChSZWxhdGlvbiBvbmVyZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCiAJCXBn X3J1c2FnZV9pbml0KCZydTApOwogCi0JCWluc3RyID0gSW5zdHJBbGxvYyhJTlNUUlVNRU5UX0JV RkZFUlMgfCBJTlNUUlVNRU5UX1dBTCk7Ci0JCUluc3RyU3RhcnQoaW5zdHIpOworCQlpbnN0ciA9 IEluc3RyUXVlcnlBbGxvYyhJTlNUUlVNRU5UX0JVRkZFUlMgfCBJTlNUUlVNRU5UX1dBTCk7CisJ CUluc3RyUXVlcnlTdGFydChpbnN0cik7CiAJfQogCiAJLyogVXNlZCBmb3IgaW5zdHJ1bWVudGF0 aW9uIGFuZCBzdGF0cyByZXBvcnQgKi8KQEAgLTc0Myw3ICs3NDMsNyBAQCBkb19hbmFseXplX3Jl bChSZWxhdGlvbiBvbmVyZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1zLAogCXsKIAkJVGlt ZXN0YW1wVHogZW5kdGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKIAotCQlJbnN0clN0b3Ao aW5zdHIpOworCQlJbnN0clF1ZXJ5U3RvcEZpbmFsaXplKGluc3RyKTsKIAogCQlpZiAodmVyYm9z ZSB8fCBwYXJhbXMtPmxvZ19hbmFseXplX21pbl9kdXJhdGlvbiA9PSAwIHx8CiAJCQlUaW1lc3Rh bXBEaWZmZXJlbmNlRXhjZWVkcyhzdGFydHRpbWUsIGVuZHRpbWUsCkBAIC03NTcsOCArNzU3LDgg QEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgKnBh cmFtcywKIAkJCWludDY0CQl0b3RhbF9ibGtzX2hpdDsKIAkJCWludDY0CQl0b3RhbF9ibGtzX3Jl YWQ7CiAJCQlpbnQ2NAkJdG90YWxfYmxrc19kaXJ0aWVkOwotCQkJQnVmZmVyVXNhZ2UgYnVmdXNh Z2UgPSBpbnN0ci0+YnVmdXNhZ2U7Ci0JCQlXYWxVc2FnZQl3YWx1c2FnZSA9IGluc3RyLT53YWx1 c2FnZTsKKwkJCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlID0gaW5zdHItPmluc3RyLmJ1ZnVzYWdlOwor CQkJV2FsVXNhZ2UJd2FsdXNhZ2UgPSBpbnN0ci0+aW5zdHIud2FsdXNhZ2U7CiAKIAkJCXRvdGFs X2Jsa3NfaGl0ID0gYnVmdXNhZ2Uuc2hhcmVkX2Jsa3NfaGl0ICsKIAkJCQlidWZ1c2FnZS5sb2Nh bF9ibGtzX2hpdDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCBkNmRjNzI2ODQzOC4uYzkzZTRj YmVlOTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTMyNCw3ICszMjQsNyBAQCBzdGFuZGFy ZF9FeHBsYWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0aW9ucywKIAkJCQkJ CSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudikKIHsKIAlQbGFubmVkU3RtdCAqcGxhbjsKLQlJ bnN0cnVtZW50YXRpb24gcGxhbl9pbnN0ciA9IHswfTsKKwlRdWVyeUluc3RydW1lbnRhdGlvbiAq cGxhbl9pbnN0ciA9IE5VTEw7CiAJaW50CQkJaW5zdHJ1bWVudF9vcHRpb25zID0gSU5TVFJVTUVO VF9USU1FUjsKIAlNZW1vcnlDb250ZXh0Q291bnRlcnMgbWVtX2NvdW50ZXJzOwogCU1lbW9yeUNv bnRleHQgcGxhbm5lcl9jdHggPSBOVUxMOwpAQCAtMzMzLDcgKzMzMyw3IEBAIHN0YW5kYXJkX0V4 cGxhaW5PbmVRdWVyeShRdWVyeSAqcXVlcnksIGludCBjdXJzb3JPcHRpb25zLAogCWlmIChlcy0+ YnVmZmVycykKIAkJaW5zdHJ1bWVudF9vcHRpb25zIHw9IElOU1RSVU1FTlRfQlVGRkVSUzsKIAot CUluc3RySW5pdE9wdGlvbnMoJnBsYW5faW5zdHIsIGluc3RydW1lbnRfb3B0aW9ucyk7CisJcGxh bl9pbnN0ciA9IEluc3RyUXVlcnlBbGxvYyhpbnN0cnVtZW50X29wdGlvbnMpOwogCiAJaWYgKGVz LT5tZW1vcnkpCiAJewpAQCAtMzUxLDEyICszNTEsMTIgQEAgc3RhbmRhcmRfRXhwbGFpbk9uZVF1 ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJCXNhdmVkX2N0eCA9IE1lbW9y eUNvbnRleHRTd2l0Y2hUbyhwbGFubmVyX2N0eCk7CiAJfQogCi0JSW5zdHJTdGFydCgmcGxhbl9p bnN0cik7CisJSW5zdHJRdWVyeVN0YXJ0KHBsYW5faW5zdHIpOwogCiAJLyogcGxhbiB0aGUgcXVl cnkgKi8KIAlwbGFuID0gcGdfcGxhbl9xdWVyeShxdWVyeSwgcXVlcnlTdHJpbmcsIGN1cnNvck9w dGlvbnMsIHBhcmFtcywgZXMpOwogCi0JSW5zdHJTdG9wKCZwbGFuX2luc3RyKTsKKwlJbnN0clF1 ZXJ5U3RvcEZpbmFsaXplKHBsYW5faW5zdHIpOwogCiAJaWYgKGVzLT5tZW1vcnkpCiAJewpAQCAt MzY2LDcgKzM2Niw3IEBAIHN0YW5kYXJkX0V4cGxhaW5PbmVRdWVyeShRdWVyeSAqcXVlcnksIGlu dCBjdXJzb3JPcHRpb25zLAogCiAJLyogcnVuIGl0IChpZiBuZWVkZWQpIGFuZCBwcm9kdWNlIG91 dHB1dCAqLwogCUV4cGxhaW5PbmVQbGFuKHBsYW4sIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFy YW1zLCBxdWVyeUVudiwKLQkJCQkgICAmcGxhbl9pbnN0ci50b3RhbCwgKGVzLT5idWZmZXJzID8g JnBsYW5faW5zdHIuYnVmdXNhZ2UgOiBOVUxMKSwKKwkJCQkgICAmcGxhbl9pbnN0ci0+aW5zdHIu dG90YWwsIChlcy0+YnVmZmVycyA/ICZwbGFuX2luc3RyLT5pbnN0ci5idWZ1c2FnZSA6IE5VTEwp LAogCQkJCSAgIGVzLT5tZW1vcnkgPyAmbWVtX2NvdW50ZXJzIDogTlVMTCk7CiB9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW5fZHIuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW5fZHIuYwppbmRleCBkZjVhZTVmNDU2OS4uODM2Mzk1ZDY5OTIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW5fZHIuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9leHBsYWluX2RyLmMKQEAgLTIzNiw2ICsyMzYsOCBAQCBzZXJpYWxpemVBbmFs eXplU2h1dGRvd24oRGVzdFJlY2VpdmVyICpzZWxmKQogewogCVNlcmlhbGl6ZURlc3RSZWNlaXZl ciAqcmVjZWl2ZXIgPSAoU2VyaWFsaXplRGVzdFJlY2VpdmVyICopIHNlbGY7CiAKKwlJbnN0ckZp bmFsaXplQ2hpbGQoJnJlY2VpdmVyLT5tZXRyaWNzLmluc3RyLCBpbnN0cl9zdGFjay5jdXJyZW50 KTsKKwogCWlmIChyZWNlaXZlci0+ZmluZm9zKQogCQlwZnJlZShyZWNlaXZlci0+ZmluZm9zKTsK IAlyZWNlaXZlci0+ZmluZm9zID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCBiZjlm MmViNjE0OS4uZWU4MTEzNTc1ODggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3By ZXBhcmUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTU4MSw3ICs1 ODEsNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0Ns YXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAlMaXN0Q2VsbCAgICpwOwogCVBhcmFtTGlz dEluZm8gcGFyYW1MSSA9IE5VTEw7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBOVUxMOwotCUluc3Ry dW1lbnRhdGlvbiBwbGFuX2luc3RyID0gezB9OworCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpwbGFu X2luc3RyID0gTlVMTDsKIAlpbnQJCQlpbnN0cnVtZW50X29wdGlvbnMgPSBJTlNUUlVNRU5UX1RJ TUVSOwogCU1lbW9yeUNvbnRleHRDb3VudGVycyBtZW1fY291bnRlcnM7CiAJTWVtb3J5Q29udGV4 dCBwbGFubmVyX2N0eCA9IE5VTEw7CkBAIC01OTAsNyArNTkwLDcgQEAgRXhwbGFpbkV4ZWN1dGVR dWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0 ZSAqZXMsCiAJaWYgKGVzLT5idWZmZXJzKQogCQlpbnN0cnVtZW50X29wdGlvbnMgfD0gSU5TVFJV TUVOVF9CVUZGRVJTOwogCi0JSW5zdHJJbml0T3B0aW9ucygmcGxhbl9pbnN0ciwgaW5zdHJ1bWVu dF9vcHRpb25zKTsKKwlwbGFuX2luc3RyID0gSW5zdHJRdWVyeUFsbG9jKGluc3RydW1lbnRfb3B0 aW9ucyk7CiAKIAlpZiAoZXMtPm1lbW9yeSkKIAl7CkBAIC02MDIsNyArNjAyLDcgQEAgRXhwbGFp bkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4 cGxhaW5TdGF0ZSAqZXMsCiAJCXNhdmVkX2N0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwbGFu bmVyX2N0eCk7CiAJfQogCi0JSW5zdHJTdGFydCgmcGxhbl9pbnN0cik7CisJSW5zdHJRdWVyeVN0 YXJ0KHBsYW5faW5zdHIpOwogCiAJLyogTG9vayBpdCB1cCBpbiB0aGUgaGFzaCB0YWJsZSAqLwog CWVudHJ5ID0gRmV0Y2hQcmVwYXJlZFN0YXRlbWVudChleGVjc3RtdC0+bmFtZSwgdHJ1ZSk7CkBA IC02MzcsNyArNjM3LDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0 bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJY3BsYW4gPSBHZXRDYWNo ZWRQbGFuKGVudHJ5LT5wbGFuc291cmNlLCBwYXJhbUxJLAogCQkJCQkJICBDdXJyZW50UmVzb3Vy Y2VPd25lciwgcHN0YXRlLT5wX3F1ZXJ5RW52KTsKIAotCUluc3RyU3RvcCgmcGxhbl9pbnN0cik7 CisJSW5zdHJRdWVyeVN0b3BGaW5hbGl6ZShwbGFuX2luc3RyKTsKIAogCWlmIChlcy0+bWVtb3J5 KQogCXsKQEAgLTY1NCw3ICs2NTQsNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10 ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAogCQlpZiAo cHN0bXQtPmNvbW1hbmRUeXBlICE9IENNRF9VVElMSVRZKQogCQkJRXhwbGFpbk9uZVBsYW4ocHN0 bXQsIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFtTEksIHBzdGF0ZS0+cF9xdWVyeUVudiwK LQkJCQkJCSAgICZwbGFuX2luc3RyLnRvdGFsLCAoZXMtPmJ1ZmZlcnMgPyAmcGxhbl9pbnN0ci5i dWZ1c2FnZSA6IE5VTEwpLAorCQkJCQkJICAgJnBsYW5faW5zdHItPmluc3RyLnRvdGFsLCAoZXMt PmJ1ZmZlcnMgPyAmcGxhbl9pbnN0ci0+aW5zdHIuYnVmdXNhZ2UgOiBOVUxMKSwKIAkJCQkJCSAg IGVzLT5tZW1vcnkgPyAmbWVtX2NvdW50ZXJzIDogTlVMTCk7CiAJCWVsc2UKIAkJCUV4cGxhaW5P bmVVdGlsaXR5KHBzdG10LT51dGlsaXR5U3RtdCwgaW50bywgZXMsIHBzdGF0ZSwgcGFyYW1MSSk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDBjZTJlODFmOWMyLi45ZmVhMDE5YzM5ZSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTIxMzksNyArMjEzOSw3IEBAIEV4ZWN1dGVU cnVuY2F0ZUd1dHMoTGlzdCAqZXhwbGljaXRfcmVscywKIAkJCQkJCSAgcmVsLAogCQkJCQkJICAw LAkvKiBkdW1teSByYW5nZXRhYmxlIGluZGV4ICovCiAJCQkJCQkgIE5VTEwsCi0JCQkJCQkgIDAp OworCQkJCQkJICAwLCBOVUxMKTsKIAkJZXN0YXRlLT5lc19vcGVuZWRfcmVzdWx0X3JlbGF0aW9u cyA9CiAJCQlsYXBwZW5kKGVzdGF0ZS0+ZXNfb3BlbmVkX3Jlc3VsdF9yZWxhdGlvbnMsIHJlc3Vs dFJlbEluZm8pOwogCQlyZXN1bHRSZWxJbmZvKys7CkBAIC02MzM3LDcgKzYzMzcsOCBAQCBBVFJl d3JpdGVUYWJsZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIE9pZCBPSUROZXdIZWFwKQogCQkJCQkJ CSAgb2xkcmVsLAogCQkJCQkJCSAgMCwJLyogZHVtbXkgcmFuZ2V0YWJsZSBpbmRleCAqLwogCQkJ CQkJCSAgTlVMTCwKLQkJCQkJCQkgIGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCk7CisJCQkJCQkJICBl c3RhdGUtPmVzX2luc3RydW1lbnQsCisJCQkJCQkJICBlc3RhdGUtPmVzX3F1ZXJ5X2luc3RyKTsK IAkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAkJfQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRleCA3NzgzNGI5NmEyMS4uYzMzMGM4OTFjMDMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwpAQCAtMzA4LDggKzMwOCw4IEBAIHBh cmFsbGVsX3ZhY3V1bV9pbml0KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gKmluZHJlbHMsIGludCBu aW5kZXhlcywKIAkgKiBQQVJBTExFTF9WQUNVVU1fS0VZX0JVRkZFUl9VU0FHRSBhbmQgUEFSQUxM RUxfVkFDVVVNX0tFWV9XQUxfVVNBR0UuCiAJICoKIAkgKiBJZiB0aGVyZSBhcmUgbm8gZXh0ZW5z aW9ucyBsb2FkZWQgdGhhdCBjYXJlLCB3ZSBjb3VsZCBza2lwIHRoaXMuICBXZQotCSAqIGhhdmUg bm8gd2F5IG9mIGtub3dpbmcgd2hldGhlciBhbnlvbmUncyBsb29raW5nIGF0IHBnQnVmZmVyVXNh Z2Ugb3IKLQkgKiBwZ1dhbFVzYWdlLCBzbyBkbyBpdCB1bmNvbmRpdGlvbmFsbHkuCisJICogaGF2 ZSBubyB3YXkgb2Yga25vd2luZyB3aGV0aGVyIGFueW9uZSdzIGxvb2tpbmcgYXQgaW5zdHJ1bWVu dGF0aW9uLCBzbworCSAqIGRvIGl0IHVuY29uZGl0aW9uYWxseS4KIAkgKi8KIAlzaG1fdG9jX2Vz dGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsCiAJCQkJCQkgICBtdWxfc2l6ZShzaXplb2Yo QnVmZmVyVXNhZ2UpLCBwY3h0LT5ud29ya2VycykpOwpAQCAtMTAwNiw2ICsxMDA2LDcgQEAgcGFy YWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCVBWSW5k U3RhdHMgKmluZHN0YXRzOwogCVBWU2hhcmVkICAgKnNoYXJlZDsKIAlUaWRTdG9yZSAgICpkZWFk X2l0ZW1zOworCVF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0cjsKIAlCdWZmZXJVc2FnZSAqYnVm ZmVyX3VzYWdlOwogCVdhbFVzYWdlICAgKndhbF91c2FnZTsKIAlpbnQJCQluaW5kZXhlczsKQEAg LTEwOTUsNyArMTA5Niw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9tYWluKGRzbV9zZWdtZW50ICpzZWcs IHNobV90b2MgKnRvYykKIAllcnJvcl9jb250ZXh0X3N0YWNrID0gJmVycmNhbGxiYWNrOwogCiAJ LyogUHJlcGFyZSB0byB0cmFjayBidWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlv biAqLwotCUluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KCk7CisJaW5zdHIgPSBJbnN0clN0YXJ0UGFy YWxsZWxRdWVyeSgpOwogCiAJLyogUHJvY2VzcyBpbmRleGVzIHRvIHBlcmZvcm0gdmFjdXVtL2Ns ZWFudXAgKi8KIAlwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19zYWZlX2luZGV4ZXMoJnB2cyk7CkBA IC0xMTAzLDcgKzExMDQsOCBAQCBwYXJhbGxlbF92YWN1dW1fbWFpbihkc21fc2VnbWVudCAqc2Vn LCBzaG1fdG9jICp0b2MpCiAJLyogUmVwb3J0IGJ1ZmZlci9XQUwgdXNhZ2UgZHVyaW5nIHBhcmFs bGVsIGV4ZWN1dGlvbiAqLwogCWJ1ZmZlcl91c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFS QUxMRUxfVkFDVVVNX0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKIAl3YWxfdXNhZ2UgPSBzaG1f dG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfV0FMX1VTQUdFLCBmYWxzZSk7Ci0J SW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KCZidWZmZXJfdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJd LAorCUluc3RyRW5kUGFyYWxsZWxRdWVyeShpbnN0ciwKKwkJCQkJCSAgJmJ1ZmZlcl91c2FnZVtQ YXJhbGxlbFdvcmtlck51bWJlcl0sCiAJCQkJCQkgICZ3YWxfdXNhZ2VbUGFyYWxsZWxXb3JrZXJO dW1iZXJdKTsKIAogCS8qIFJlcG9ydCBhbnkgcmVtYWluaW5nIGNvc3QtYmFzZWQgdmFjdXVtIGRl bGF5IHRpbWUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRS5pbnN0 cnVtZW50IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FLmluc3RydW1lbnQKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdkZjgzN2RiYzc3Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FLmluc3RydW1lbnQKQEAgLTAsMCArMSwy MzcgQEAKK3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRS5pbnN0cnVtZW50CisKK0luc3RydW1l bnRhdGlvbgorPT09PT09PT09PT09PT09CisKK1RoZSBpbnN0cnVtZW50YXRpb24gc3Vic3lzdGVt IG1lYXN1cmVzIHRpbWUsIGJ1ZmZlciB1c2FnZSBhbmQgV0FMIGFjdGl2aXR5CitkdXJpbmcgcXVl cnkgZXhlY3V0aW9uIGFuZCBvdGhlciBzaW1pbGFyIGFjdGl2aXRpZXMuICBJdCBpcyB1c2VkIGJ5 CitFWFBMQUlOIEFOQUxZWkUsIHBnX3N0YXRfc3RhdGVtZW50cywgYW5kIG90aGVyIGNvbnN1bWVy cyB0aGF0IG5lZWQKK2FjdGl2aXR5IGFuZC9vciB0aW1pbmcgbWV0cmljcyBvdmVyIGEgc2VjdGlv biBvZiBjb2RlLgorCitUaGUgZGVzaWduIGhhcyB0d28gY2VudHJhbCBnb2FsczoKKworKiBNYWtl IGl0IGNoZWFwIHRvIG1lYXN1cmUgYWN0aXZpdHkgaW4gYSBzZWN0aW9uIG9mIGNvZGUsIGV2ZW4g d2hlbgorICB0aGF0IHNlY3Rpb24gaXMgY2FsbGVkIG1hbnkgdGltZXMgYW5kIHRoZSBhZ2dyZWdh dGUgaXMgd2hhdCBpcyB1c2VkCisgIChhcyBpcyB0aGUgY2FzZSB3aXRoIHBlci1ub2RlIGluc3Ry dW1lbnRhdGlvbiBpbiB0aGUgZXhlY3V0b3IpCisKKyogRW5zdXJlIG5lc3RlZCBpbnN0cnVtZW50 YXRpb24gYWNjdXJhdGVseSBtZWFzdXJlcyBhY3Rpdml0eS90aW1pbmcsCisgIGV2ZW4gd2hlbiBl eGVjdXRpb24gaXMgYWJvcnRlZCBkdWUgdG8gZXJyb3JzIGJlaW5nIHRocm93bi4KKworVGhlIGtl eSBkYXRhIHN0cnVjdHVyZXMgYXJlIGRlZmluZWQgaW4gc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5z dHJ1bWVudC5oCithbmQgdGhlIGltcGxlbWVudGF0aW9uIGxpdmVzIGluIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL2luc3RydW1lbnQuYy4KKworCitJbnN0cnVtZW50YXRpb24gT3B0aW9ucworLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKworQ2FsbGVycyBzcGVjaWZ5IHdoYXQgdG8gbWVhc3VyZSB3aXRo IGEgYml0bWFzayBvZiBJbnN0cnVtZW50T3B0aW9uIGZsYWdzOgorCisgIElOU1RSVU1FTlRfUk9X UyAgICAgLS0gcm93IGNvdW50cyBvbmx5ICh1c2VkIHdpdGggTm9kZUluc3RydW1lbnRhdGlvbikK KyAgSU5TVFJVTUVOVF9USU1FUiAgICAtLSB3YWxsLWNsb2NrIHRpbWluZyBhbmQgcm93IGNvdW50 cworICBJTlNUUlVNRU5UX0JVRkZFUlMgIC0tIGJ1ZmZlciBoaXQvcmVhZC9kaXJ0aWVkL3dyaXR0 ZW4gY291bnRzIGFuZCBJL08gdGltZQorICBJTlNUUlVNRU5UX1dBTCAgICAgIC0tIFdBTCByZWNv cmRzLCBGUEksIGJ5dGVzCisKK0lOU1RSVU1FTlRfQlVGRkVSUyBhbmQgSU5TVFJVTUVOVF9XQUwg dXRpbGl6ZSB0aGUgaW5zdHJ1bWVudGF0aW9uIHN0YWNrCisoZGVzY3JpYmVkIGJlbG93KSBmb3Ig ZWZmaWNpZW50IGhhbmRsaW5nIG9mIGNvdW50ZXIgdmFsdWVzLgorCisKK1N0cnVjdCBIaWVyYXJj aHkKKy0tLS0tLS0tLS0tLS0tLS0KKworVGhlcmUgYXJlIHRoZSBmb2xsb3dpbmcgaW5zdHJ1bWVu dGF0aW9uIHN0cnVjdHMsIGVhY2ggc3BlY2lhbGl6ZWQgZm9yIGEKK2RpZmZlcmVudCBzY29wZToK KworSW5zdHJ1bWVudGF0aW9uICAgICAgICBCYXNlIHN0cnVjdC4gIEhvbGRzIHRpbWluZyBhbmQg YnVmZmVyL1dBTCBjb3VudGVycy4KKworUXVlcnlJbnN0cnVtZW50YXRpb24gICBFeHRlbmRzIElu c3RydW1lbnRhdGlvbiBmb3IgcXVlcnktbGV2ZWwgdHJhY2tpbmcuICBXaGVuCisgICAgICAgICAg ICAgICAgICAgICAgIHN0YWNrLWJhc2VkIHRyYWNraW5nIGlzIGVuYWJsZWQsIGl0IG93bnMgYSBk ZWRpY2F0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5Q29udGV4dCBhbmQgdXNlcyB0 aGUgUmVzb3VyY2VPd25lciBtZWNoYW5pc20gZm9yCisgICAgICAgICAgICAgICAgICAgICAgIGFi b3J0IGNsZWFudXAuCisKK05vZGVJbnN0cnVtZW50YXRpb24gICAgRXh0ZW5kcyBJbnN0cnVtZW50 YXRpb24gZm9yIHBlci1wbGFuLW5vZGUgc3RhdGlzdGljcworICAgICAgICAgICAgICAgICAgICAg ICAoc3RhcnR1cCB0aW1lLCB0dXBsZSBjb3VudHMsIGxvb3AgY291bnRzLCBldGMpLgorCitUcmln Z2VySW5zdHJ1bWVudGF0aW9uIEV4dGVuZHMgSW5zdHJ1bWVudGF0aW9uIHdpdGggYSBmaXJpbmcg Y291bnQuCisKKworU3RhY2stYmFzZWQgaW5zdHJ1bWVudGF0aW9uCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKworRm9yIHRyYWNraW5nIFdBTCBvciBidWZmZXIgdXNhZ2UgY291bnRlcnMs IHRoZSBzcGVjaWFsaXplZCBzdGFjay1iYXNlZAoraW5zdHJ1bWVudGF0aW9uIGlzIHVzZWQuCisK K0Egc2ltcGxlIGFwcHJvYWNoIHRvIG1lYXN1cmluZyBidWZmZXIvV0FMIGFjdGl2aXR5IGluIGEg Y29kZSBzZWN0aW9uIGNvdWxkIGJlCit0byBoYXZlIGEgc2V0IG9mIGdsb2JhbCBjb3VudGVycywg c25hcHNob3QgYWxsIHRoZSBjb3VudGVycyBhdCB0aGUgc3RhcnQsIGFuZAorZGlmZiB0aGVtIGF0 IHRoZSBlbmQuIEJ1dCwgdGhpcyBpcyBleHBlbnNpdmUgaW4gcHJhY3RpY2U6IEJ1ZmZlclVzYWdl IGFsb25lCitoYXMgbWFueSBmaWVsZHMsIGFuZCB0aGUgZGlmZiBtdXN0IGJlIGNvbXB1dGVkIGZv ciBldmVyeSBJbnN0clN0YXJ0Tm9kZSAvCitJbnN0clN0b3BOb2RlIGN5Y2xlLgorCitBbiBhbHRl cm5hdGl2ZSBpcyB0byB3cml0ZSBjb3VudGVyIHVwZGF0ZXMgZGlyZWN0bHkgaW50byB0aGUgc3Ry dWN0IHRoYXQKK3Nob3VsZCByZWNlaXZlIHRoZW0sIGF2b2lkaW5nIHRoZSBkaWZmLiAgQnV0IHRo YXQgaGFzIHR3byBjb21wbGV4aXRpZXM6IExvdy1sZXZlbAorY29kZSBzdWNoIGFzIHRoZSBidWZm ZXIgbWFuYWdlciwgaGFzIG5vIGRpcmVjdCBwb2ludGVycyB0byBoaWdoZXIgbGV2ZWwKK3N0cnVj dHMsIHN1Y2ggYXMgcGxhbiBub2RlcyB0cmFja2luZyBidWZmZXIgdXNhZ2UuIEFuZCBpbnN0cnVt ZW50YXRpb24gaXMgb2Z0ZW4KK25lc3RlZDogV2UgbWlnaHQgYm90aCBiZSBpbnRlcmVzdGVkIGlu IHRoZSBhZ2dyZWdhdGUgYnVmZmVyIHVzYWdlIG9mIGEgcXVlcnksIGFuZAordGhlIGluZGl2aWR1 YWwgcGVyLW5vZGUgZGV0YWlscy4gU3RhY2stYmFzZWQgaW5zdHJ1bWVudGF0aW9uIHNvbHZlcyBm b3IgdGhhdDoKKworQXQgYWxsIHRpbWVzLCB0aGVyZSBpcyBhIHN0YWNrIHRoYXQgdHJhY2tzIHdo aWNoIEluc3RydW1lbnRhdGlvbiBpcyBjdXJyZW50bHkKK2FjdGl2ZS4gIFRoZSBzdGFjayBpcyBy ZXByZXNlbnRlZCBieSBpbnN0cl9zdGFjaywgYSBwZXItYmFja2VuZCBnbG9iYWwKK3RoYXQgaG9s ZHMgYSBkeW5hbWljIGFycmF5IG9mIEluc3RydW1lbnRhdGlvbiBwb2ludGVycy4gIFRoZSBmaWVs ZAoraW5zdHJfc3RhY2suY3VycmVudCBhbHdheXMgcG9pbnRzIHRvIHRoZSBjdXJyZW50IHN0YWNr IGVudHJ5IHRoYXQgc2hvdWxkCitiZSB1cGRhdGVkIHdoZW4gYWN0aXZpdHkgb2NjdXJzLiAgV2hl biB0aGUgc3RhY2sgYXJyYXkgaXMgZW1wdHksIHRoZQorY3VycmVudCBzdGFjayBwb2ludHMgdG8g aW5zdHJfdG9wLgorCitGb3IgZXhhbXBsZSwgaWYgYSBiYWNrZW5kIGhhcyB0d28gcG9ydGFscyBv cGVuLCB0aGUgb3ZlcmFsbCBuZXN0aW5nIG9mCitJbnN0cnVtZW50YXRpb24gYW5kIHRoZWlyIHJl c3BlY3RpdmUgSW5zdHJTdGFydC9JbnN0clN0b3AgY2FsbHMgY3JlYXRlcyBhCit0cmVlLWxpa2Ug c3RydWN0dXJlIGxpa2UgdGhpczoKKworICAgIFNlc3Npb24gKGluc3RyX3RvcCkKKyAgICAgfAor ICAgICArLS0gUXVlcnkgQSAoUXVlcnlJbnN0cnVtZW50YXRpb24pCisgICAgIHwgICAgfAorICAg ICB8ICAgICstLSBOZXN0TG9vcCAoTm9kZUluc3RydW1lbnRhdGlvbikKKyAgICAgfCAgICAgICAg IHwKKyAgICAgfCAgICAgICAgICstLSBTZXEgU2NhbiBBIChOb2RlSW5zdHJ1bWVudGF0aW9uKQor ICAgICB8ICAgICAgICAgKy0tIFNlcSBTY2FuIEIgKE5vZGVJbnN0cnVtZW50YXRpb24pCisgICAg IHwKKyAgICAgKy0tIFF1ZXJ5IEIgKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uKQorICAgICAgICAgIHwK KyAgICAgICAgICArLS0gU2VxIFNjYW4gQyAoTm9kZUluc3RydW1lbnRhdGlvbikKKworV2hpbGUg ZXhlY3V0aW5nIFNlcSBTY2FuIEIsIHRoZSBzdGFjayBsb29rcyBsaWtlOgorCisgICAgaW5zdHJf dG9wICAgICAgICAgICAgICAoaW1wbGljaXQgYm90dG9tLCBub3QgaW4gdGhlIGVudHJpZXMgYXJy YXkpCisgICAgMDogUXVlcnkgQQorICAgIDE6IE5lc3RMb29wCisgICAgMjogU2VxIFNjYW4gQiAg ICAgICAgICA8LS0gaW5zdHJfc3RhY2suY3VycmVudAorCitXaGVuIG5vIHF1ZXJ5IGlzIHJ1bm5p bmcsIHRoZSBzdGFjayBpcyBlbXB0eSAoc3RhY2tfc2l6ZSA9PSAwKSBhbmQKK2luc3RyX3N0YWNr LmN1cnJlbnQgcG9pbnRzIHRvIGluc3RyX3RvcC4KKworQW55IGJ1ZmZlciBvciBXQUwgY291bnRl ciB1cGRhdGUgKHZpYSB0aGUgSU5TVFJfQlVGVVNBR0VfKiBhbmQKK0lOU1RSX1dBTFVTQUdFXyog bWFjcm9zIGluIHRoZSBidWZmZXIgbWFuYWdlciwgV0FMIGluc2VydGlvbiBjb2RlLCBldGMuKQor d3JpdGVzIGRpcmVjdGx5IGludG8gaW5zdHJfc3RhY2suY3VycmVudC4gIEVhY2ggaW5zdHJ1bWVu dGF0aW9uIG5vZGUgc3RhcnRzCit6ZXJvZWQsIHNvIHRoZSB2YWx1ZXMgaXQgYWNjdW11bGF0ZXMg d2hpbGUgb24gdG9wIG9mIHRoZSBzdGFjayByZXByZXNlbnQKK2V4YWN0bHkgdGhlIGFjdGl2aXR5 IHRoYXQgb2NjdXJyZWQgZHVyaW5nIHRoYXQgdGltZS4KKworRXZlcnkgSW5zdHJ1bWVudGF0aW9u IG5vZGUgKGV4Y2VwdCBmb3IgaW5zdHJfdG9wKSBoYXMgYSB0YXJnZXQsIG9yIHBhcmVudCwgaXQK K3dpbGwgYmUgYWNjdW11bGF0ZWQgaW50bywgd2hpY2ggaXMgdHlwaWNhbGx5IHRoZSBJbnN0cnVt ZW50YXRpb24gdGhhdCB3YXMgdGhlCitjdXJyZW50IHN0YWNrIGVudHJ5IHdoZW4gaXQgd2FzIGNy ZWF0ZWQuCisKK0ZvciBleGFtcGxlLCB3aGVuIFNlcSBTY2FuIEEgZ2V0cyBmaW5hbGl6ZWQgaW4g cmVndWxhciBleGVjdXRpb24gdmlhIEV4ZWN1dG9yRmluaXNoLAoraXRzIGluc3RydW1lbnRhdGlv biBkYXRhIGdldHMgYWRkZWQgdG8gdGhlIGltbWVkaWF0ZSBwYXJlbnQgaW4KK3RoZSBleGVjdXRp b24gdHJlZSwgdGhlIE5lc3RMb29wLCB3aGljaCB3aWxsIHRoZW4gZ2V0IGFkZGVkIHRvIFF1ZXJ5 IEEncworUXVlcnlJbnN0cnVtZW50YXRpb24sIHdoaWNoIHRoZW4gYWNjdW11bGF0ZXMgdG8gdGhl IHBhcmVudC4KKworV2hpbGUgd2UgY2FuIHR5cGljYWxseSB0aGluayBvZiB0aGlzIGFzIGEgdHJl ZSwgdGhlIE5vZGVJbnN0cnVtZW50YXRpb24KK3VuZGVybmVhdGggYSBwYXJ0aWN1bGFyIFF1ZXJ5 SW5zdHJ1bWVudGF0aW9uIGNvdWxkIGJlaGF2ZSBkaWZmZXJlbnRseSAtLQorZm9yIGV4YW1wbGUs IGl0IGNvdWxkIHByb3BhZ2F0ZSBkaXJlY3RseSB0byB0aGUgUXVlcnlJbnN0cnVtZW50YXRpb24s IGluCitvcmRlciB0byBub3Qgc2hvdyBjdW11bGF0aXZlIG51bWJlcnMgaW4gRVhQTEFJTiBBTkFM WVpFLgorCitOb3RlIHRoZXNlIHJlbGF0aW9uc2hpcHMgYXJlIHBhcnRpYWxseSBpbXBsaWNpdCwg ZXNwZWNpYWxseSB3aGVuIGl0IGNvbWVzCit0byBOb2RlSW5zdHJ1bWVudGF0aW9uLiBFYWNoIFF1 ZXJ5SW5zdHJ1bWVudGF0aW9uIG1haW50YWlucyBhIGxpc3Qgb2YgaXRzCit1bmZpbmFsaXplZCBj aGlsZCBub2Rlcy4gIFRoZSBwYXJlbnQgb2YgYSBRdWVyeUluc3RydW1lbnRhdGlvbiBpdHNlbGYg aXMKK2RldGVybWluZWQgYnkgdGhlIHN0YWNrIChzZWUgYmVsb3cpOiB3aGVuIGEgcXVlcnkgaXMg ZmluYWxpemVkIG9yIGNsZWFuZWQKK3VwIG9uIGFib3J0LCBpdHMgY291bnRlcnMgYXJlIGFjY3Vt dWxhdGVkIHRvIHdoYXRldmVyIGVudHJ5IGlzIHRoZW4gY3VycmVudAorb24gdGhlIHN0YWNrLCB3 aGljaCBpcyB0eXBpY2FsbHkgaW5zdHJfdG9wLgorCisKK0ZpbmFsaXphdGlvbiBhbmQgQWJvcnQg U2FmZXR5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaW5hbGl6YXRpb24gaXMg dGhlIHByb2Nlc3Mgb2Ygcm9sbGluZyB1cCBhIG5vZGUncyBidWZmZXIvV0FMIGNvdW50ZXJzIHRv CitpdHMgcGFyZW50LiAgSW4gbm9ybWFsIGV4ZWN1dGlvbiwgbm9kZXMgYXJlIHB1c2hlZCBvbnRv IHRoZSBzdGFjayB3aGVuIHRoZXkKK3N0YXJ0IGFuZCBwb3BwZWQgd2hlbiB0aGV5IHN0b3A7IGF0 IGZpbmFsaXphdGlvbiB0aW1lIHRoZWlyIGFjY3VtdWxhdGVkCitjb3VudGVycyBhcmUgYWRkZWQg dG8gdGhlIHBhcmVudC4KKworRHVlIHRvIHRoZSB1c2Ugb2YgbG9uZ2ptcCBmb3IgZXJyb3IgaGFu ZGxpbmcsIGZ1bmN0aW9ucyBjYW4gZXhpdCBhYnJ1cHRseQord2l0aG91dCBleGVjdXRpbmcgdGhl aXIgbm9ybWFsIGNsZWFudXAgY29kZS4gIE9uIGFib3J0LCB0d28gdGhpbmdzIG5lZWQKK3RvIGhh cHBlbjoKKworMS4gVGhlIHN0YWNrIGlzIHJlc2V0IHRvIHRoZSBsZXZlbCBzYXZlZCBhdCB0aGUg c3RhcnQgb2YgdGhlIGFib3J0aW5nCisgICAoc3ViLSl0cmFuc2FjdGlvbiBsZXZlbC4gIFRoaXMg ZW5zdXJlcyB0aGF0IHdlIGRvbid0IGxhdGVyIHRyeSB0byB1cGRhdGUKKyAgIGNvdW50ZXJzIG9u IGEgZnJlZWQgc3RhY2sgZW50cnkuICBXZSBhbHNvIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHN0 YWNrCisgICBlbnRyeSB0aGF0IHdhcyBjdXJyZW50IGJlZm9yZSBhIHBhcnRpY3VsYXIgSW5zdHJ1 bWVudGF0aW9uIHN0YXJ0ZWQsIGlzCisgICBjdXJyZW50IGFnYWluIGFmdGVyIGl0IHN0b3BzLgor CisyLiBGaW5hbGl6ZSBhbGwgYWZmZWN0ZWQgSW5zdHJ1bWVudGF0aW9uIG5vZGVzLCByb2xsaW5n IHVwIHRoZWlyIGNvdW50ZXJzCisgICB0byB0aGUgaW5uZXJtb3N0IHN1cnZpdmluZyBJbnN0cnVt ZW50YXRpb24sIHNvIHRoYXQgZGF0YSBpcyBub3QgbG9zdC4KKworRm9yIGV4YW1wbGUsIGlmIFNl cSBTY2FuIEIgYWJvcnRzIHdoaWxlIHRoZSBzdGFjayBpczoKKworICAgIGluc3RyX3RvcCAgICAg ICAgICAgICAgKGltcGxpY2l0IGJvdHRvbSkKKyAgICAwOiBRdWVyeSBBCisgICAgMTogTmVzdExv b3AKKyAgICAyOiBTZXEgU2NhbiBCCisKK1RoZSBhYm9ydCBoYW5kbGVyIGZvciBRdWVyeSBBIGFj Y3VtdWxhdGVzIGFsbCB1bmZpbmFsaXplZCBjaGlsZHJlbiAoU2VxCitTY2FuIEEsIFNlcSBTY2Fu IEIsIE5lc3RMb29wKSBkaXJlY3RseSBpbnRvIFF1ZXJ5IEEncyBjb3VudGVycywgdGhlbgordW53 aW5kcyB0aGUgaW5zdHJ1bWVudGF0aW9uIHN0YWNrIGFuZCBhY2N1bXVsYXRlcyBRdWVyeSBBJ3Mg Y291bnRlcnMgdG8KK2luc3RyX3RvcC4KKworTm90ZSB0aGF0IG9uIGFib3J0IHRoZSBjaGlsZHJl biBkbyBub3QgYWNjdW11bGF0ZSB0aHJvdWdoIGVhY2ggb3RoZXIgKFNlcQorU2NhbiBCIC0+IE5l c3RMb29wIC0+IFF1ZXJ5IEEpOyB0aGV5IGFsbCBhY2N1bXVsYXRlIGRpcmVjdGx5IHRvIHRoZWly CitwYXJlbnQgUXVlcnlJbnN0cnVtZW50YXRpb24uICBUaGlzIG1lYW5zIHRoZSBvcmRlciBpbiB3 aGljaCBjaGlsZHJlbiBhcmUKK3JlbGVhc2VkIGRvZXMgbm90IG1hdHRlciAtLSB0aGlzIGlzIGlt cG9ydGFudCBiZWNhdXNlIFJlc291cmNlT3duZXIgY2xlYW51cAorZG9lcyBub3QgZ3VhcmFudGVl IGEgcGFydGljdWxhciByZWxlYXNlIG9yZGVyLiAgVGhlIHBlci1ub2RlIGJyZWFrZG93biBpcyBs b3N0LAorYnV0IHRoZSBpbnN0cnVtZW50YXRpb24gYWN0aXZlIHdoZW4gdGhlIHF1ZXJ5IHdhcyBz dGFydGVkIChpbnN0cl90b3AgaW4gdGhlCithYm92ZSBleGFtcGxlKSBzdXJ2aXZlcyB0aGUgYWJv cnQsIGFuZCBpdHMgY291bnRlcnMgaW5jbHVkZSB0aGUgYWN0aXZpdHkuCisKK0lmIG11bHRpcGxl IFF1ZXJ5SW5zdHJ1bWVudGF0aW9ucyBhcmUgYWN0aXZlIG9uIHRoZSBzdGFjayAoZS5nLiBuZXN0 ZWQKK3BvcnRhbHMpLCB0aGUgYWJvcnQgaGFuZGxlciBvZiBlYWNoIHVzZXMgSW5zdHJTdG9wRmlu YWxpemUoKSB0byBhY2N1bXVsYXRlCit0aGUgc3RhdGlzdGljcyB0byB0aGUgcGFyZW50IGVudHJ5 IG9mIGVpdGhlciB0aGUgZW50cnkgYmVpbmcgcmVsZWFzZWQsIG9yIGEKK3ByZXZpb3VzbHkgcmVs ZWFzZWQgZW50cnkgaWYgaXQgd2FzIGhpZ2hlciB1cCBpbiB0aGUgc3RhY2ssIHNvIHRoZXkgY29t cG9zZQorY29ycmVjdGx5IHJlZ2FyZGxlc3Mgb2YgcmVsZWFzZSBvcmRlci4KKworVGhlcmUgYXJl IHR3byBtZWNoYW5pc21zIGZvciBhY2hpZXZpbmcgYWJvcnQgc2FmZXR5OgorCisqIFJlc291cmNl IE93bmVyIChRdWVyeUluc3RydW1lbnRhdGlvbik6IHJlZ2lzdGVycyB3aXRoIHRoZSBjdXJyZW50 CisgIFJlc291cmNlT3duZXIgYXQgc3RhcnQuICBPbiB0cmFuc2FjdGlvbiBhYm9ydCwgdGhlIHJl c291cmNlIG93bmVyIHN5c3RlbQorICBjYWxscyB0aGUgcmVsZWFzZSBjYWxsYmFjaywgd2hpY2gg d2Fsa3MgdW5maW5hbGl6ZWQgY2hpbGQgZW50cmllcywKKyAgYWNjdW11bGF0ZXMgdGhlaXIgZGF0 YSwgdW53aW5kcyB0aGUgc3RhY2ssIGFuZCBkZXN0cm95cyB0aGUgZGVkaWNhdGVkCisgIG1lbW9y eSBjb250ZXh0IChmcmVlaW5nIHRoZSBRdWVyeUluc3RydW1lbnRhdGlvbiBhbmQgYWxsIGNoaWxk CisgIGFsbG9jYXRpb25zIGFzIGEgdW5pdCkuICBUaGlzIGlzIHRoZSByZWNvbW1lbmRlZCBhcHBy b2FjaCB3aGVuIHRoZQorICBpbnN0cnVtZW50ZWQgY29kZSBhbHJlYWR5IGhhcyBhbiBhcHByb3By aWF0ZSByZXNvdXJjZSBvd25lciAoZS5nLiBpdAorICBydW5zIGluc2lkZSBhIHBvcnRhbCkuICBU aGUgcXVlcnkgZXhlY3V0b3IgdXNlcyB0aGlzIHBhdGguCisKKyogUEdfRklOQUxMWSAoYmFzZSBJ bnN0cnVtZW50YXRpb24pOiB3aGVuIG5vIHN1aXRhYmxlIHJlc291cmNlIG93bmVyCisgIGV4aXN0 cywgb3Igd2hlbiB0aGUgY2FsbGVyIHdhbnRzIHRvIGluc3BlY3QgdGhlIGluc3RydW1lbnRhdGlv biBkYXRhCisgIGV2ZW4gYWZ0ZXIgYW4gZXJyb3IsIHRoZSBiYXNlIEluc3RydW1lbnRhdGlvbiBj YW4gYmUgdXNlZCB3aXRoIGEKKyAgUEdfVFJZL1BHX0ZJTkFMTFkgYmxvY2sgdGhhdCBjYWxscyBJ bnN0clN0b3BGaW5hbGl6ZSgpLgorCitCb3RoIG1lY2hhbmlzbXMgYWRkIG92ZXJoZWFkLCBzbyBu ZWl0aGVyIGlzIHN1aXRhYmxlIGZvciBoaWdoLWZyZXF1ZW5jeQoraW5zdHJ1bWVudGF0aW9uIGxp a2UgcGVyLW5vZGUgbWVhc3VyZW1lbnRzIGluIHRoZSBleGVjdXRvci4gIEluc3RlYWQsCitwbGFu IG5vZGUgYW5kIHRyaWdnZXIgY2hpbGRyZW4gcmVseSBvbiB0aGVpciBwYXJlbnQgUXVlcnlJbnN0 cnVtZW50YXRpb24KK2ZvciBhYm9ydCBzYWZldHk6IHRoZXkgYXJlIGFsbG9jYXRlZCBpbiB0aGUg cGFyZW50J3MgbWVtb3J5IGNvbnRleHQgYW5kCityZWdpc3RlcmVkIGluIGl0cyB1bmZpbmFsaXpl ZC1lbnRyaWVzIGxpc3QsIHNvIHRoZSBwYXJlbnQncyBhYm9ydCBoYW5kbGVyCityZWNvdmVycyB0 aGVpciBkYXRhIGF1dG9tYXRpY2FsbHkuICBJbiBub3JtYWwgZXhlY3V0aW9uLCBjaGlsZHJlbiBh cmUKK2ZpbmFsaXplZCBleHBsaWNpdGx5IGJ5IHRoZSBjYWxsZXIuCisKK1BhcmFsbGVsIFF1ZXJ5 CistLS0tLS0tLS0tLS0tLQorCitQYXJhbGxlbCB3b3JrZXJzIGdldCB0aGVpciBvd24gUXVlcnlJ bnN0cnVtZW50YXRpb24gc28gdGhleSBjYW4gbWVhc3VyZQorYnVmZmVyIGFuZCBXQUwgYWN0aXZp dHkgaW5kZXBlbmRlbnRseSwgdGhlbiBjb3B5IHRoZSB0b3RhbHMgaW50byBkeW5hbWljCitzaGFy ZWQgbWVtb3J5IGF0IHdvcmtlciBzaHV0ZG93bi4gIFRoZSBsZWFkZXIgYWNjdW11bGF0ZXMgdGhl c2UgaW50byBpdHMKK293biBzdGFjay4KKworV2hlbiBwZXItbm9kZSBpbnN0cnVtZW50YXRpb24g aXMgYWN0aXZlLCBwYXJhbGxlbCB3b3JrZXJzIHNraXAgcGVyLW5vZGUKK2ZpbmFsaXphdGlvbiBh dCBzaHV0ZG93biB0byBhdm9pZCBkb3VibGUtY291bnRpbmc7IHRoZSBwZXItbm9kZSBkYXRhIGlz CithZ2dyZWdhdGVkIHNlcGFyYXRlbHkgdGhyb3VnaCBJbnN0ckFnZ05vZGUoKS4KKworCitNZW1v cnkgSGFuZGxpbmcKKz09PT09PT09PT09PT09PQorCitJbnN0cnVtZW50YXRpb24gb2JqZWN0cyB0 aGF0IHVzZSB0aGUgc3RhY2sgbXVzdCBzdXJ2aXZlIHVudGlsIGZpbmFsaXphdGlvbgorcnVucywg aW5jbHVkaW5nIHRoZSBhYm9ydCBjYXNlLiAgVG8gZW5zdXJlIHRoaXMsIFF1ZXJ5SW5zdHJ1bWVu dGF0aW9uCitjcmVhdGVzIGEgZGVkaWNhdGVkICJJbnN0cnVtZW50YXRpb24iIE1lbW9yeUNvbnRl eHQgKGluc3RyX2N4dCkgYXMgYSBjaGlsZAorb2YgVG9wTWVtb3J5Q29udGV4dC4gIEFsbCBjaGls ZCBpbnN0cnVtZW50YXRpb24gKG5vZGVzLCB0cmlnZ2Vycykgc2hvdWxkIGJlCithbGxvY2F0ZWQg aW4gdGhpcyBjb250ZXh0LgorCitPbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24sIGluc3RyX2N4dCBp cyByZXBhcmVudGVkIHRvIEN1cnJlbnRNZW1vcnlDb250ZXh0CitzbyBpdHMgbGlmZXRpbWUgaXMg dGllZCB0byB0aGUgY2FsbGVyJ3MgY29udGV4dC4gIE9uIGFib3J0LCB0aGUKK1Jlc291cmNlT3du ZXIgY2xlYW51cCBmcmVlcyBpdCBhZnRlciBhY2N1bXVsYXRpbmcgdGhlIGluc3RydW1lbnRhdGlv biBkYXRhCit0byB0aGUgY3VycmVudCBzdGFjayBlbnRyeSBhZnRlciByZXNldHRpbmcgdGhlIHN0 YWNrLgorCitXaGVuIHRoZSBzdGFjayBpcyBub3QgbmVlZGVkICh0aW1lci9yb3dzIG9ubHkpLCBJ bnN0cnVtZW50YXRpb24gYWxsb2NhdGlvbnMKK2hhcHBlbiBpbiBDdXJyZW50TWVtb3J5Q29udGV4 dCBpbnN0ZWFkIG9mIFRvcE1lbW9yeUNvbnRleHQuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRl eCA3ZDc0ZjZkYTQwMi4uNDRkNGZlYTc2ZWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAt NzgsNiArNzgsNyBAQCBFeGVjdXRvckNoZWNrUGVybXNfaG9va190eXBlIEV4ZWN1dG9yQ2hlY2tQ ZXJtc19ob29rID0gTlVMTDsKIC8qIGRlY2xzIGZvciBsb2NhbCByb3V0aW5lcyBvbmx5IHVzZWQg d2l0aGluIHRoaXMgbW9kdWxlICovCiBzdGF0aWMgdm9pZCBJbml0UGxhbihRdWVyeURlc2MgKnF1 ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBzdGF0aWMgdm9pZCBDaGVja1ZhbGlkUm93TWFya1JlbChS ZWxhdGlvbiByZWwsIFJvd01hcmtUeXBlIG1hcmtUeXBlKTsKK3N0YXRpYyB2b2lkIEV4ZWNGaW5h bGl6ZVRyaWdnZXJJbnN0cnVtZW50YXRpb24oRVN0YXRlICplc3RhdGUpOwogc3RhdGljIHZvaWQg RXhlY1Bvc3Rwcm9jZXNzUGxhbihFU3RhdGUgKmVzdGF0ZSk7CiBzdGF0aWMgdm9pZCBFeGVjRW5k UGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUpOwogc3RhdGljIHZvaWQg RXhlY3V0ZVBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCkBAIC0yNTQsMTAgKzI1NSwxOCBAQCBz dGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQog CSAqIFNldCB1cCBxdWVyeS1sZXZlbCBpbnN0cnVtZW50YXRpb24gaWYgZXh0ZW5zaW9ucyBoYXZl IHJlcXVlc3RlZCBpdCB2aWEKIAkgKiB0b3RhbHRpbWVfb3B0aW9ucy4gRW5zdXJlIGFuIGV4dGVu c2lvbiBoYXMgbm90IGFsbG9jYXRlZCB0b3RhbHRpbWUKIAkgKiBpdHNlbGYuCisJICoKKwkgKiBB bHRlcm5hdGl2ZWx5LCBhbHNvIHNldCBpdCB1cCB3aGVuIHJ1bm5pbmcgRVhQTEFJTiAoQU5BTFla RSksIGFzIHdlCisJICogdXRpbGl6ZSB0b3RhbHRpbWUgYXMgdGhlIHBhcmVudCBmb3Igbm9kZSBh bmQgdHJpZ2dlciBpbnN0cnVtZW50YXRpb24uCiAJICovCiAJQXNzZXJ0KHF1ZXJ5RGVzYy0+dG90 YWx0aW1lID09IE5VTEwpOwotCWlmIChxdWVyeURlc2MtPnRvdGFsdGltZV9vcHRpb25zKQotCQlx dWVyeURlc2MtPnRvdGFsdGltZSA9IEluc3RyUXVlcnlBbGxvYyhxdWVyeURlc2MtPnRvdGFsdGlt ZV9vcHRpb25zKTsKKwlpZiAocXVlcnlEZXNjLT50b3RhbHRpbWVfb3B0aW9ucyB8fCBxdWVyeURl c2MtPmluc3RydW1lbnRfb3B0aW9ucykKKwl7CisJCWVzdGF0ZS0+ZXNfcXVlcnlfaW5zdHIgPSBJ bnN0clF1ZXJ5QWxsb2MocXVlcnlEZXNjLT5pbnN0cnVtZW50X29wdGlvbnMgfAorCQkJCQkJCQkJ CQkJIHF1ZXJ5RGVzYy0+dG90YWx0aW1lX29wdGlvbnMpOworCisJCXF1ZXJ5RGVzYy0+dG90YWx0 aW1lID0gJmVzdGF0ZS0+ZXNfcXVlcnlfaW5zdHItPmluc3RyOworCX0KIAogCS8qCiAJICogU2V0 IHVwIGFuIEFGVEVSLXRyaWdnZXIgc3RhdGVtZW50IGNvbnRleHQsIHVubGVzcyB0b2xkIG5vdCB0 bywgb3IKQEAgLTM0MCw5ICszNDksOSBAQCBzdGFuZGFyZF9FeGVjdXRvclJ1bihRdWVyeURlc2Mg KnF1ZXJ5RGVzYywKIAkgKi8KIAlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVz dGF0ZS0+ZXNfcXVlcnlfY3h0KTsKIAotCS8qIEFsbG93IGluc3RydW1lbnRhdGlvbiBvZiBFeGVj dXRvciBvdmVyYWxsIHJ1bnRpbWUgKi8KLQlpZiAocXVlcnlEZXNjLT50b3RhbHRpbWUpCi0JCUlu c3RyU3RhcnQocXVlcnlEZXNjLT50b3RhbHRpbWUpOworCS8qIFN0YXJ0IHVwIGluc3RydW1lbnRh dGlvbiBmb3IgdGhpcyBleGVjdXRpb24gcnVuICovCisJaWYgKGVzdGF0ZS0+ZXNfcXVlcnlfaW5z dHIpCisJCUluc3RyUXVlcnlTdGFydChlc3RhdGUtPmVzX3F1ZXJ5X2luc3RyKTsKIAogCS8qCiAJ ICogZXh0cmFjdCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBxdWVyeSBkZXNjcmlwdG9yIGFuZCB0aGUg cXVlcnkgZmVhdHVyZS4KQEAgLTM5Myw4ICs0MDIsOCBAQCBzdGFuZGFyZF9FeGVjdXRvclJ1bihR dWVyeURlc2MgKnF1ZXJ5RGVzYywKIAlpZiAoc2VuZFR1cGxlcykKIAkJZGVzdC0+clNodXRkb3du KGRlc3QpOwogCi0JaWYgKHF1ZXJ5RGVzYy0+dG90YWx0aW1lKQotCQlJbnN0clN0b3AocXVlcnlE ZXNjLT50b3RhbHRpbWUpOworCWlmIChlc3RhdGUtPmVzX3F1ZXJ5X2luc3RyKQorCQlJbnN0clF1 ZXJ5U3RvcChlc3RhdGUtPmVzX3F1ZXJ5X2luc3RyKTsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjb250ZXh0KTsKIH0KQEAgLTQ0Myw4ICs0NTIsOCBAQCBzdGFuZGFyZF9FeGVjdXRvckZp bmlzaChRdWVyeURlc2MgKnF1ZXJ5RGVzYykKIAlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3 aXRjaFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKIAogCS8qIEFsbG93IGluc3RydW1lbnRhdGlv biBvZiBFeGVjdXRvciBvdmVyYWxsIHJ1bnRpbWUgKi8KLQlpZiAocXVlcnlEZXNjLT50b3RhbHRp bWUpCi0JCUluc3RyU3RhcnQocXVlcnlEZXNjLT50b3RhbHRpbWUpOworCWlmIChlc3RhdGUtPmVz X3F1ZXJ5X2luc3RyKQorCQlJbnN0clF1ZXJ5U3RhcnQoZXN0YXRlLT5lc19xdWVyeV9pbnN0cik7 CiAKIAkvKiBSdW4gTW9kaWZ5VGFibGUgbm9kZXMgdG8gY29tcGxldGlvbiAqLwogCUV4ZWNQb3N0 cHJvY2Vzc1BsYW4oZXN0YXRlKTsKQEAgLTQ1Myw4ICs0NjIsMjkgQEAgc3RhbmRhcmRfRXhlY3V0 b3JGaW5pc2goUXVlcnlEZXNjICpxdWVyeURlc2MpCiAJaWYgKCEoZXN0YXRlLT5lc190b3BfZWZs YWdzICYgRVhFQ19GTEFHX1NLSVBfVFJJR0dFUlMpKQogCQlBZnRlclRyaWdnZXJFbmRRdWVyeShl c3RhdGUpOwogCi0JaWYgKHF1ZXJ5RGVzYy0+dG90YWx0aW1lKQotCQlJbnN0clN0b3AocXVlcnlE ZXNjLT50b3RhbHRpbWUpOworCWlmIChlc3RhdGUtPmVzX3F1ZXJ5X2luc3RyKQorCXsKKwkJLyoK KwkJICogQWNjdW11bGF0ZSBwZXItbm9kZSBhbmQgdHJpZ2dlciBzdGF0aXN0aWNzIHRvIHRoZWly IHJlc3BlY3RpdmUKKwkJICogcGFyZW50IGluc3RydW1lbnRhdGlvbiBzdGFja3MuCisJCSAqCisJ CSAqIFdlIHNraXAgdGhpcyBpbiBwYXJhbGxlbCB3b3JrZXJzIGJlY2F1c2UgdGhlaXIgcGVyLW5v ZGUgc3RhdHMgYXJlCisJCSAqIHJlcG9ydGVkIGluZGl2aWR1YWxseSB2aWEgRXhlY1BhcmFsbGVs UmVwb3J0SW5zdHJ1bWVudGF0aW9uLCBhbmQKKwkJICogdGhlIGxlYWRlcidzIG93biBFeGVjRmlu YWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uIGhhbmRsZXMKKwkJICogcHJvcGFnYXRpb24uICBJZiB3 ZSBhY2N1bXVsYXRlZCBoZXJlLCB0aGUgbGVhZGVyIHdvdWxkCisJCSAqIGRvdWJsZS1jb3VudDog d29ya2VyIHBhcmVudCBub2RlcyB3b3VsZCBhbHJlYWR5IGluY2x1ZGUgdGhlaXIKKwkJICogY2hp bGRyZW4ncyBzdGF0cywgYW5kIHRoZW4gdGhlIGxlYWRlcidzIGFjY3VtdWxhdGlvbiB3b3VsZCBh ZGQgdGhlCisJCSAqIGNoaWxkcmVuIGFnYWluLgorCQkgKi8KKwkJaWYgKCFJc1BhcmFsbGVsV29y a2VyKCkgJiYgZXN0YXRlLT5lc19pbnN0cnVtZW50KQorCQl7CisJCQlFeGVjRmluYWxpemVOb2Rl SW5zdHJ1bWVudGF0aW9uKHF1ZXJ5RGVzYy0+cGxhbnN0YXRlKTsKKworCQkJRXhlY0ZpbmFsaXpl VHJpZ2dlckluc3RydW1lbnRhdGlvbihlc3RhdGUpOworCQl9CisKKwkJSW5zdHJRdWVyeVN0b3BG aW5hbGl6ZShlc3RhdGUtPmVzX3F1ZXJ5X2luc3RyKTsKKwl9CiAKIAlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY29udGV4dCk7CiAKQEAgLTEyNzIsNyArMTMwMiw4IEBAIEluaXRSZXN1bHRSZWxJ bmZvKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCQkJICBSZWxhdGlvbiByZXN1bHRS ZWxhdGlvbkRlc2MsCiAJCQkJICBJbmRleCByZXN1bHRSZWxhdGlvbkluZGV4LAogCQkJCSAgUmVz dWx0UmVsSW5mbyAqcGFydGl0aW9uX3Jvb3RfcnJpLAotCQkJCSAgaW50IGluc3RydW1lbnRfb3B0 aW9ucykKKwkJCQkgIGludCBpbnN0cnVtZW50X29wdGlvbnMsCisJCQkJICBRdWVyeUluc3RydW1l bnRhdGlvbiAqcWluc3RyKQogewogCU1lbVNldChyZXN1bHRSZWxJbmZvLCAwLCBzaXplb2YoUmVz dWx0UmVsSW5mbykpOwogCXJlc3VsdFJlbEluZm8tPnR5cGUgPSBUX1Jlc3VsdFJlbEluZm87CkBA IC0xMjkzLDggKzEzMjQsOCBAQCBJbml0UmVzdWx0UmVsSW5mbyhSZXN1bHRSZWxJbmZvICpyZXN1 bHRSZWxJbmZvLAogCQkJcGFsbG9jMF9hcnJheShGbWdySW5mbywgbik7CiAJCXJlc3VsdFJlbElu Zm8tPnJpX1RyaWdXaGVuRXhwcnMgPSAoRXhwclN0YXRlICoqKQogCQkJcGFsbG9jMF9hcnJheShF eHByU3RhdGUgKiwgbik7Ci0JCWlmIChpbnN0cnVtZW50X29wdGlvbnMpCi0JCQlyZXN1bHRSZWxJ bmZvLT5yaV9UcmlnSW5zdHJ1bWVudCA9IEluc3RyQWxsb2NUcmlnZ2VyKG4sIGluc3RydW1lbnRf b3B0aW9ucyk7CisJCWlmIChxaW5zdHIpCisJCQlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnSW5zdHJ1 bWVudCA9IEluc3RyQWxsb2NUcmlnZ2VyKHFpbnN0ciwgaW5zdHJ1bWVudF9vcHRpb25zLCBuKTsK IAl9CiAJZWxzZQogCXsKQEAgLTEzNjcsNiArMTM5OCwxMCBAQCBJbml0UmVzdWx0UmVsSW5mbyhS ZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogICogYWxzbyBwcm92aWRlcyBhIHdheSBmb3Ig RVhQTEFJTiBBTkFMWVpFIHRvIHJlcG9ydCB0aGUgcnVudGltZXMgb2Ygc3VjaAogICogdHJpZ2dl cnMuKSAgU28gd2UgbWFrZSBhZGRpdGlvbmFsIFJlc3VsdFJlbEluZm8ncyBhcyBuZWVkZWQsIGFu ZCBzYXZlIHRoZW0KICAqIGluIGVzX3RyaWdfdGFyZ2V0X3JlbGF0aW9ucy4KKyAqCisgKiBOb3Rl OiBpZiBuZXcgcmVsYXRpb24gbGlzdHMgYXJlIHNlYXJjaGVkIGhlcmUsIHRoZXkgbXVzdCBhbHNv IGJlIGFkZGVkIHRvCisgKiBFeGVjRmluYWxpemVUcmlnZ2VySW5zdHJ1bWVudGF0aW9uIHNvIHRo YXQgdHJpZ2dlciBpbnN0cnVtZW50YXRpb24gZGF0YQorICogaXMgcHJvcGVybHkgYWNjdW11bGF0 ZWQuCiAgKi8KIFJlc3VsdFJlbEluZm8gKgogRXhlY0dldFRyaWdnZXJSZXN1bHRSZWwoRVN0YXRl ICplc3RhdGUsIE9pZCByZWxpZCwKQEAgLTE0MzMsNyArMTQ2OCw4IEBAIEV4ZWNHZXRUcmlnZ2Vy UmVzdWx0UmVsKEVTdGF0ZSAqZXN0YXRlLCBPaWQgcmVsaWQsCiAJCQkJCSAgcmVsLAogCQkJCQkg IDAsCQkvKiBkdW1teSByYW5nZXRhYmxlIGluZGV4ICovCiAJCQkJCSAgcm9vdFJlbEluZm8sCi0J CQkJCSAgZXN0YXRlLT5lc19pbnN0cnVtZW50KTsKKwkJCQkJICBlc3RhdGUtPmVzX2luc3RydW1l bnQsCisJCQkJCSAgZXN0YXRlLT5lc19xdWVyeV9pbnN0cik7CiAJZXN0YXRlLT5lc190cmlnX3Rh cmdldF9yZWxhdGlvbnMgPQogCQlsYXBwZW5kKGVzdGF0ZS0+ZXNfdHJpZ190YXJnZXRfcmVsYXRp b25zLCBySW5mbyk7CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwpAQCAtMTQ5 Niw3ICsxNTMyLDggQEAgRXhlY0dldEFuY2VzdG9yUmVzdWx0UmVscyhFU3RhdGUgKmVzdGF0ZSwg UmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbykKIAogCQkJLyogZHVtbXkgcmFuZ2V0YWJsZSBp bmRleCAqLwogCQkJSW5pdFJlc3VsdFJlbEluZm8ockluZm8sIGFuY1JlbCwgMCwgTlVMTCwKLQkJ CQkJCQkgIGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCk7CisJCQkJCQkJICBlc3RhdGUtPmVzX2luc3Ry dW1lbnQsCisJCQkJCQkJICBlc3RhdGUtPmVzX3F1ZXJ5X2luc3RyKTsKIAkJCWFuY1Jlc3VsdFJl bHMgPSBsYXBwZW5kKGFuY1Jlc3VsdFJlbHMsIHJJbmZvKTsKIAkJfQogCQlhbmNSZXN1bHRSZWxz ID0gbGFwcGVuZChhbmNSZXN1bHRSZWxzLCByb290UmVsSW5mbyk7CkBAIC0xNTA5LDYgKzE1NDYs MzAgQEAgRXhlY0dldEFuY2VzdG9yUmVzdWx0UmVscyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVs SW5mbyAqcmVzdWx0UmVsSW5mbykKIAlyZXR1cm4gcmVzdWx0UmVsSW5mby0+cmlfYW5jZXN0b3JS ZXN1bHRSZWxzOwogfQogCitzdGF0aWMgdm9pZAorRXhlY0ZpbmFsaXplVHJpZ2dlckluc3RydW1l bnRhdGlvbihFU3RhdGUgKmVzdGF0ZSkKK3sKKwlMaXN0CSAgICpyZWxzID0gTklMOworCisJcmVs cyA9IGxpc3RfY29uY2F0KHJlbHMsIGVzdGF0ZS0+ZXNfdHVwbGVfcm91dGluZ19yZXN1bHRfcmVs YXRpb25zKTsKKwlyZWxzID0gbGlzdF9jb25jYXQocmVscywgZXN0YXRlLT5lc19vcGVuZWRfcmVz dWx0X3JlbGF0aW9ucyk7CisJcmVscyA9IGxpc3RfY29uY2F0KHJlbHMsIGVzdGF0ZS0+ZXNfdHJp Z190YXJnZXRfcmVsYXRpb25zKTsKKworCWZvcmVhY2hfbm9kZShSZXN1bHRSZWxJbmZvLCBySW5m bywgcmVscykKKwl7CisJCVRyaWdnZXJJbnN0cnVtZW50YXRpb24gKnRpID0gckluZm8tPnJpX1Ry aWdJbnN0cnVtZW50OworCisJCWlmICh0aSA9PSBOVUxMIHx8IHJJbmZvLT5yaV9UcmlnRGVzYyA9 PSBOVUxMKQorCQkJY29udGludWU7CisKKwkJZm9yIChpbnQgbnQgPSAwOyBudCA8IHJJbmZvLT5y aV9UcmlnRGVzYy0+bnVtdHJpZ2dlcnM7IG50KyspCisJCXsKKwkJCWlmICh0aVtudF0uaW5zdHIu bmVlZF9zdGFjaykKKwkJCQlJbnN0ckFjY3VtU3RhY2soJmVzdGF0ZS0+ZXNfcXVlcnlfaW5zdHIt Pmluc3RyLCAmdGlbbnRdLmluc3RyKTsKKwkJfQorCX0KK30KKwogLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4 ZWNQb3N0cHJvY2Vzc1BsYW4KICAqCkBAIC0zMDY2LDYgKzMxMjcsNyBAQCBFdmFsUGxhblF1YWxT dGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKQogCS8qIGVzX3RyaWdfdGFy Z2V0X3JlbGF0aW9ucyBtdXN0IE5PVCBiZSBjb3BpZWQgKi8KIAlyY2VzdGF0ZS0+ZXNfdG9wX2Vm bGFncyA9IHBhcmVudGVzdGF0ZS0+ZXNfdG9wX2VmbGFnczsKIAlyY2VzdGF0ZS0+ZXNfaW5zdHJ1 bWVudCA9IHBhcmVudGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudDsKKwlyY2VzdGF0ZS0+ZXNfcXVlcnlf aW5zdHIgPSBwYXJlbnRlc3RhdGUtPmVzX3F1ZXJ5X2luc3RyOwogCS8qIGVzX2F1eG1vZGlmeXRh YmxlcyBtdXN0IE5PVCBiZSBjb3BpZWQgKi8KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJh bGxlbC5jCmluZGV4IDVlNGE0YTk3NDBjLi5hOTllMzdjOThlMiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1BhcmFsbGVsLmMKQEAgLTcwMCw3ICs3MDAsNyBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQ bGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJICoKIAkgKiBJZiBFWFBMQUlO IGlzIG5vdCBpbiB1c2UgYW5kIHRoZXJlIGFyZSBubyBleHRlbnNpb25zIGxvYWRlZCB0aGF0IGNh cmUsCiAJICogd2UgY291bGQgc2tpcCB0aGlzLiAgQnV0IHdlIGhhdmUgbm8gd2F5IG9mIGtub3dp bmcgd2hldGhlciBhbnlvbmUncwotCSAqIGxvb2tpbmcgYXQgcGdCdWZmZXJVc2FnZSwgc28gZG8g aXQgdW5jb25kaXRpb25hbGx5LgorCSAqIGxvb2tpbmcgYXQgaW5zdHJ1bWVudGF0aW9uLCBzbyBk byBpdCB1bmNvbmRpdGlvbmFsbHkuCiAJICovCiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4 dC0+ZXN0aW1hdG9yLAogCQkJCQkJICAgbXVsX3NpemUoc2l6ZW9mKEJ1ZmZlclVzYWdlKSwgcGN4 dC0+bndvcmtlcnMpKTsKQEAgLTEwODEsMTQgKzEwODEsMjggQEAgRXhlY1BhcmFsbGVsUmV0cmll dmVJbnN0cnVtZW50YXRpb24oUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJaW5zdHJ1bWVudCA9IEdl dEluc3RydW1lbnRhdGlvbkFycmF5KGluc3RydW1lbnRhdGlvbik7CiAJaW5zdHJ1bWVudCArPSBp ICogaW5zdHJ1bWVudGF0aW9uLT5udW1fd29ya2VyczsKIAlmb3IgKG4gPSAwOyBuIDwgaW5zdHJ1 bWVudGF0aW9uLT5udW1fd29ya2VyczsgKytuKQorCXsKIAkJSW5zdHJBZ2dOb2RlKHBsYW5zdGF0 ZS0+aW5zdHJ1bWVudCwgJmluc3RydW1lbnRbbl0pOwogCisJCS8qCisJCSAqIEFsc28gYWRkIHdv cmtlciBXQUwgdXNhZ2UgdG8gdGhlIGdsb2JhbCBwZ1dhbFVzYWdlIGNvdW50ZXIuCisJCSAqCisJ CSAqIFdoZW4gcGVyLW5vZGUgaW5zdHJ1bWVudGF0aW9uIGlzIGFjdGl2ZSwgcGFyYWxsZWwgd29y a2VycyBza2lwCisJCSAqIEV4ZWNGaW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRpb24gKHRvIGF2b2lk IGRvdWJsZS1jb3VudGluZyBpbgorCQkgKiBFWFBMQUlOKSwgc28gcGVyLW5vZGUgV0FMIGFjdGl2 aXR5IGlzIG5vdCByb2xsZWQgdXAgaW50byB0aGUKKwkJICogcXVlcnktbGV2ZWwgc3RhdHMgdGhh dCBJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSByZWNlaXZlcy4gV2l0aG91dAorCQkgKiB0aGlzLCBw Z1dhbFVzYWdlIHdvdWxkIHVuZGVyLXJlcG9ydCBXQUwgZ2VuZXJhdGVkIGJ5IHBhcmFsbGVsCisJ CSAqIHdvcmtlcnMgd2hlbiBpbnN0cnVtZW50YXRpb24gaXMgYWN0aXZlLgorCQkgKi8KKwkJV2Fs VXNhZ2VBZGQoJnBnV2FsVXNhZ2UsICZpbnN0cnVtZW50W25dLmluc3RyLndhbHVzYWdlKTsKKwl9 CisKIAkvKgogCSAqIEFsc28gc3RvcmUgdGhlIHBlci13b3JrZXIgZGV0YWlsLgogCSAqCi0JICog V29ya2VyIGluc3RydW1lbnRhdGlvbiBzaG91bGQgYmUgYWxsb2NhdGVkIGluIHRoZSBzYW1lIGNv bnRleHQgYXMgdGhlCi0JICogcmVndWxhciBpbnN0cnVtZW50YXRpb24gaW5mb3JtYXRpb24sIHdo aWNoIGlzIHRoZSBwZXItcXVlcnkgY29udGV4dC4KLQkgKiBTd2l0Y2ggaW50byBwZXItcXVlcnkg bWVtb3J5IGNvbnRleHQuCisJICogRW5zdXJlIHdvcmtlciBpbnN0cnVtZW50YXRpb24gaXMgYWxs b2NhdGVkIGluIHRoZSBwZXItcXVlcnkgY29udGV4dC4gV2UKKwkgKiBkb24ndCBuZWVkIHRvIHBs YWNlIHRoaXMgaW4gdGhlIGluc3RydW1lbnRhdGlvbiBjb250ZXh0IHNpbmNlIG5vIG1vcmUKKwkg KiBzdGFjay1iYXNlZCBpbnN0cnVtZW50YXRpb24gd29yayBpcyBiZWluZyBkb25lLgogCSAqLwog CW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocGxhbnN0YXRlLT5zdGF0ZS0+ZXNf cXVlcnlfY3h0KTsKIAlpYnl0ZXMgPSBtdWxfc2l6ZShpbnN0cnVtZW50YXRpb24tPm51bV93b3Jr ZXJzLCBzaXplb2YoTm9kZUluc3RydW1lbnRhdGlvbikpOwpAQCAtMTIzOCw5ICsxMjUyLDEzIEBA IEV4ZWNQYXJhbGxlbENsZWFudXAoUGFyYWxsZWxFeGVjdXRvckluZm8gKnBlaSkKIHsKIAkvKiBB Y2N1bXVsYXRlIGluc3RydW1lbnRhdGlvbiwgaWYgYW55LiAqLwogCWlmIChwZWktPmluc3RydW1l bnRhdGlvbikKKwl7CiAJCUV4ZWNQYXJhbGxlbFJldHJpZXZlSW5zdHJ1bWVudGF0aW9uKHBlaS0+ cGxhbnN0YXRlLAogCQkJCQkJCQkJCQlwZWktPmluc3RydW1lbnRhdGlvbik7CiAKKwkJRXhlY0Zp bmFsaXplV29ya2VySW5zdHJ1bWVudGF0aW9uKHBlaS0+cGxhbnN0YXRlKTsKKwl9CisKIAkvKiBB Y2N1bXVsYXRlIEpJVCBpbnN0cnVtZW50YXRpb24sIGlmIGFueS4gKi8KIAlpZiAocGVpLT5qaXRf aW5zdHJ1bWVudGF0aW9uKQogCQlFeGVjUGFyYWxsZWxSZXRyaWV2ZUppdEluc3RydW1lbnRhdGlv bihwZWktPnBsYW5zdGF0ZSwKQEAgLTE0NjIsNiArMTQ4MCw3IEBAIHZvaWQKIFBhcmFsbGVsUXVl cnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIHsKIAlGaXhlZFBhcmFsbGVs RXhlY3V0b3JTdGF0ZSAqZnBlczsKKwlRdWVyeUluc3RydW1lbnRhdGlvbiAqaW5zdHI7CiAJQnVm ZmVyVXNhZ2UgKmJ1ZmZlcl91c2FnZTsKIAlXYWxVc2FnZSAgICp3YWxfdXNhZ2U7CiAJRGVzdFJl Y2VpdmVyICpyZWNlaXZlcjsKQEAgLTE1MjIsNyArMTU0MSw3IEBAIFBhcmFsbGVsUXVlcnlNYWlu KGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAkgKiBsZWFkZXIsIHdoaWNoIGFsc28g ZG9lc24ndCBjb3VudCBidWZmZXIgYWNjZXNzZXMgYW5kIFdBTCBhY3Rpdml0eSB0aGF0CiAJICog b2NjdXIgZHVyaW5nIGV4ZWN1dG9yIHN0YXJ0dXAuCiAJICovCi0JSW5zdHJTdGFydFBhcmFsbGVs UXVlcnkoKTsKKwlpbnN0ciA9IEluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KCk7CiAKIAkvKgogCSAq IFJ1biB0aGUgcGxhbi4gIElmIHdlIHNwZWNpZmllZCBhIHR1cGxlIGJvdW5kLCBiZSBjYXJlZnVs IG5vdCB0byBkZW1hbmQKQEAgLTE1MzgsNyArMTU1Nyw4IEBAIFBhcmFsbGVsUXVlcnlNYWluKGRz bV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAkvKiBSZXBvcnQgYnVmZmVyL1dBTCB1c2Fn ZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uLiAqLwogCWJ1ZmZlcl91c2FnZSA9IHNobV90b2Nf bG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRSwgZmFsc2UpOwogCXdhbF91c2Fn ZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgZmFsc2UpOwot CUluc3RyRW5kUGFyYWxsZWxRdWVyeSgmYnVmZmVyX3VzYWdlW1BhcmFsbGVsV29ya2VyTnVtYmVy XSwKKwlJbnN0ckVuZFBhcmFsbGVsUXVlcnkoaW5zdHIsCisJCQkJCQkgICZidWZmZXJfdXNhZ2Vb UGFyYWxsZWxXb3JrZXJOdW1iZXJdLAogCQkJCQkJICAmd2FsX3VzYWdlW1BhcmFsbGVsV29ya2Vy TnVtYmVyXSk7CiAKIAkvKiBSZXBvcnQgaW5zdHJ1bWVudGF0aW9uIGRhdGEgaWYgYW55IGluc3Ry dW1lbnRhdGlvbiBvcHRpb25zIGFyZSBzZXQuICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0 aW9uLmMKaW5kZXggZDk2ZDRmOTk0N2IuLjY4ODhmYmU0Mjc4IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1BhcnRpdGlvbi5jCkBAIC01ODYsNyArNTg2LDggQEAgRXhlY0luaXRQYXJ0aXRpb25JbmZv KE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCQkJCQkgIHBhcnRy ZWwsCiAJCQkJCSAgMCwKIAkJCQkJICByb290UmVzdWx0UmVsSW5mbywKLQkJCQkJICBlc3RhdGUt PmVzX2luc3RydW1lbnQpOworCQkJCQkgIGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCwKKwkJCQkJICBl c3RhdGUtPmVzX3F1ZXJ5X2luc3RyKTsKIAogCS8qCiAJICogVmVyaWZ5IHJlc3VsdCByZWxhdGlv biBpcyBhIHZhbGlkIHRhcmdldCBmb3IgYW4gSU5TRVJULiAgQW4gVVBEQVRFIG9mIGEKQEAgLTEz ODEsNyArMTM4Miw3IEBAIEV4ZWNJbml0UGFydGl0aW9uRGlzcGF0Y2hJbmZvKEVTdGF0ZSAqZXN0 YXRlLAogCXsKIAkJUmVzdWx0UmVsSW5mbyAqcnJpID0gbWFrZU5vZGUoUmVzdWx0UmVsSW5mbyk7 CiAKLQkJSW5pdFJlc3VsdFJlbEluZm8ocnJpLCByZWwsIDAsIHJvb3RSZXN1bHRSZWxJbmZvLCAw KTsKKwkJSW5pdFJlc3VsdFJlbEluZm8ocnJpLCByZWwsIDAsIHJvb3RSZXN1bHRSZWxJbmZvLCAw LCBOVUxMKTsKIAkJcHJvdXRlLT5ub25sZWFmX3BhcnRpdGlvbnNbZGlzcGF0Y2hpZHhdID0gcnJp OwogCX0KIAllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25v ZGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCmluZGV4IDEzMmZlMzdl ZjYwLi5mMDA2OTMxYzk0ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1By b2Nub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKQEAgLTEy Myw2ICsxMjMsOCBAQAogc3RhdGljIFR1cGxlVGFibGVTbG90ICpFeGVjUHJvY05vZGVGaXJzdChQ bGFuU3RhdGUgKm5vZGUpOwogc3RhdGljIFR1cGxlVGFibGVTbG90ICpFeGVjUHJvY05vZGVJbnN0 cihQbGFuU3RhdGUgKm5vZGUpOwogc3RhdGljIGJvb2wgRXhlY1NodXRkb3duTm9kZV93YWxrZXIo UGxhblN0YXRlICpub2RlLCB2b2lkICpjb250ZXh0KTsKK3N0YXRpYyBib29sIEV4ZWNGaW5hbGl6 ZU5vZGVJbnN0cnVtZW50YXRpb25fd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4 dCk7CitzdGF0aWMgYm9vbCBFeGVjRmluYWxpemVXb3JrZXJJbnN0cnVtZW50YXRpb25fd2Fsa2Vy KFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCk7CiAKIAogLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CkBAIC00MTQsNyArNDE2LDggQEAgRXhlY0luaXROb2RlKFBsYW4gKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogCiAJLyogU2V0IHVwIGluc3RydW1lbnRhdGlvbiBmb3IgdGhpcyBu b2RlIGlmIHJlcXVlc3RlZCAqLwogCWlmIChlc3RhdGUtPmVzX2luc3RydW1lbnQpCi0JCXJlc3Vs dC0+aW5zdHJ1bWVudCA9IEluc3RyQWxsb2NOb2RlKGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCwKKwkJ cmVzdWx0LT5pbnN0cnVtZW50ID0gSW5zdHJBbGxvY05vZGUoZXN0YXRlLT5lc19xdWVyeV9pbnN0 ciwKKwkJCQkJCQkJCQkJZXN0YXRlLT5lc19pbnN0cnVtZW50LAogCQkJCQkJCQkJCQlyZXN1bHQt PmFzeW5jX2NhcGFibGUpOwogCiAJcmV0dXJuIHJlc3VsdDsKQEAgLTc4OCwxMCArNzkxLDEwIEBA IEV4ZWNTaHV0ZG93bk5vZGVfd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCkK IAkgKiBhdCBsZWFzdCBvbmNlIGFscmVhZHkuICBXZSBkb24ndCBleHBlY3QgbXVjaCBDUFUgY29u c3VtcHRpb24gZHVyaW5nCiAJICogbm9kZSBzaHV0ZG93biwgYnV0IGluIHRoZSBjYXNlIG9mIEdh dGhlciBvciBHYXRoZXIgTWVyZ2UsIHdlIG1heSBzaHV0CiAJICogZG93biB3b3JrZXJzIGF0IHRo aXMgc3RhZ2UuICBJZiBzbywgdGhlaXIgYnVmZmVyIHVzYWdlIHdpbGwgZ2V0Ci0JICogcHJvcGFn YXRlZCBpbnRvIHBnQnVmZmVyVXNhZ2UgYXQgdGhpcyBwb2ludCwgYW5kIHdlIHdhbnQgdG8gbWFr ZSBzdXJlCi0JICogdGhhdCBpdCBnZXRzIGFzc29jaWF0ZWQgd2l0aCB0aGUgR2F0aGVyIG5vZGUu ICBXZSBza2lwIHRoaXMgaWYgdGhlIG5vZGUKLQkgKiBoYXMgbmV2ZXIgYmVlbiBleGVjdXRlZCwg c28gYXMgdG8gYXZvaWQgaW5jb3JyZWN0bHkgbWFraW5nIGl0IGFwcGVhcgotCSAqIHRoYXQgaXQg aGFzLgorCSAqIHByb3BhZ2F0ZWQgaW50byB0aGUgY3VycmVudCBpbnN0cnVtZW50YXRpb24gc3Rh Y2sgZW50cnkgYXQgdGhpcyBwb2ludCwKKwkgKiBhbmQgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhh dCBpdCBnZXRzIGFzc29jaWF0ZWQgd2l0aCB0aGUgR2F0aGVyIG5vZGUuCisJICogV2Ugc2tpcCB0 aGlzIGlmIHRoZSBub2RlIGhhcyBuZXZlciBiZWVuIGV4ZWN1dGVkLCBzbyBhcyB0byBhdm9pZAor CSAqIGluY29ycmVjdGx5IG1ha2luZyBpdCBhcHBlYXIgdGhhdCBpdCBoYXMuCiAJICovCiAJaWYg KG5vZGUtPmluc3RydW1lbnQgJiYgbm9kZS0+aW5zdHJ1bWVudC0+cnVubmluZykKIAkJSW5zdHJT dGFydE5vZGUobm9kZS0+aW5zdHJ1bWVudCk7CkBAIC04MjksNiArODMyLDk5IEBAIEV4ZWNTaHV0 ZG93bk5vZGVfd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKIAlyZXR1cm4g ZmFsc2U7CiB9CiAKKy8qCisgKiBFeGVjRmluYWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uCisgKgor ICogQWNjdW11bGF0ZSBpbnN0cnVtZW50YXRpb24gc3RhdHMgZnJvbSBhbGwgZXhlY3V0aW9uIG5v ZGVzIHRvIHRoZWlyIHJlc3BlY3RpdmUKKyAqIHBhcmVudHMgKG9yIHRoZSBvcmlnaW5hbCBwYXJl bnQgaW5zdHJ1bWVudGF0aW9uKS4KKyAqCisgKiBUaGlzIG11c3QgcnVuIGFmdGVyIHRoZSBjbGVh bnVwIGRvbmUgYnkgRXhlY1NodXRkb3duTm9kZSwgYW5kIG5vdCByZWx5IG9uIGFueQorICogcmVz b3VyY2VzIGNsZWFuZWQgdXAgYnkgaXQuIFdlIGFsc28gZXhwZWN0IHNodXRkb3duIGFjdGlvbnMg dG8gaGF2ZSBvY2N1cnJlZCwKKyAqIGUuZy4gcGFyYWxsZWwgd29ya2VyIGluc3RydW1lbnRhdGlv biB0byBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIGxlYWRlci4KKyAqLwordm9pZAorRXhlY0ZpbmFs aXplTm9kZUluc3RydW1lbnRhdGlvbihQbGFuU3RhdGUgKm5vZGUpCit7CisJKHZvaWQpIEV4ZWNG aW5hbGl6ZU5vZGVJbnN0cnVtZW50YXRpb25fd2Fsa2VyKG5vZGUsIGluc3RyX3N0YWNrLmN1cnJl bnQpOworfQorCitzdGF0aWMgYm9vbAorRXhlY0ZpbmFsaXplTm9kZUluc3RydW1lbnRhdGlvbl93 YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lkICpjb250ZXh0KQoreworCUluc3RydW1lbnRhdGlv biAqcGFyZW50ID0gKEluc3RydW1lbnRhdGlvbiAqKSBjb250ZXh0OworCisJQXNzZXJ0KHBhcmVu dCAhPSBOVUxMKTsKKworCWlmIChub2RlID09IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKworCUFz c2VydChub2RlLT5pbnN0cnVtZW50ICE9IE5VTEwpOworCisJLyoKKwkgKiBSZWN1cnNlIGludG8g Y2hpbGRyZW4gZmlyc3QgKGJvdHRvbS11cCBhY2N1bXVsYXRpb24pLCBhbmQgYWNjdW1tdWxhdGUK KwkgKiB0byB0aGlzIG5vZGVzIGluc3RydW1lbnRhdGlvbiBhcyB0aGUgcGFyZW50IGNvbnRleHQu CisJICovCisJcGxhbnN0YXRlX3RyZWVfd2Fsa2VyKG5vZGUsIEV4ZWNGaW5hbGl6ZU5vZGVJbnN0 cnVtZW50YXRpb25fd2Fsa2VyLAorCQkJCQkJICAmbm9kZS0+aW5zdHJ1bWVudC0+aW5zdHIpOwor CisJSW5zdHJGaW5hbGl6ZUNoaWxkKCZub2RlLT5pbnN0cnVtZW50LT5pbnN0ciwgcGFyZW50KTsK KworCXJldHVybiBmYWxzZTsKK30KKworLyoKKyAqIEV4ZWNGaW5hbGl6ZVdvcmtlckluc3RydW1l bnRhdGlvbgorICoKKyAqIEFjY3VtdWxhdGUgcGVyLXdvcmtlciBpbnN0cnVtZW50YXRpb24gc3Rh dHMgZnJvbSBjaGlsZCBub2RlcyBpbnRvIHRoZWlyCisgKiBwYXJlbnRzLCBtaXJyb3Jpbmcgd2hh dCBFeGVjRmluYWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uIGRvZXMgZm9yIHRoZQorICogbGVhZGVy J3Mgb3duIHN0YXRzLiAgV2l0aG91dCB0aGlzLCBwZXItd29ya2VyIGJ1ZmZlci9XQUwgc3RhdHMg c2hvd24gYnkKKyAqIEVYUExBSU4gKEFOQUxZWkUsIFZFUkJPU0UpIHdvdWxkIG9ubHkgcmVmbGVj dCBlYWNoIG5vZGUncyBvd24gZGlyZWN0CisgKiBhY3Rpdml0eSwgbm90IGluY2x1ZGluZyBjaGls ZHJlbi4KKyAqCisgKiBUaGlzIG11c3QgcnVuIGFmdGVyIEV4ZWNQYXJhbGxlbFJldHJpZXZlSW5z dHJ1bWVudGF0aW9uIGhhcyBwb3B1bGF0ZWQKKyAqIHdvcmtlcl9pbnN0cnVtZW50IGZvciBhbGwg bm9kZXMgaW4gdGhlIHBhcmFsbGVsIHN1YnRyZWUuCisgKi8KK3ZvaWQKK0V4ZWNGaW5hbGl6ZVdv cmtlckluc3RydW1lbnRhdGlvbihQbGFuU3RhdGUgKm5vZGUpCit7CisJKHZvaWQpIEV4ZWNGaW5h bGl6ZVdvcmtlckluc3RydW1lbnRhdGlvbl93YWxrZXIobm9kZSwgTlVMTCk7Cit9CisKK3N0YXRp YyBib29sCitFeGVjRmluYWxpemVXb3JrZXJJbnN0cnVtZW50YXRpb25fd2Fsa2VyKFBsYW5TdGF0 ZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKK3sKKwlQbGFuU3RhdGUgICpwYXJlbnQgPSAoUGxhblN0 YXRlICopIGNvbnRleHQ7CisJaW50CQkJbnVtX3dvcmtlcnM7CisKKwlpZiAobm9kZSA9PSBOVUxM KQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIFJlY3Vyc2UgaW50byBjaGlsZHJlbiBmaXJz dCAoYm90dG9tLXVwIGFjY3VtdWxhdGlvbiksIHBhc3NpbmcgdGhpcyBub2RlCisJICogYXMgcGFy ZW50IGNvbnRleHQgaWYgaXQgaGFzIHdvcmtlcl9pbnN0cnVtZW50LCBvdGhlcndpc2UgcGFzcyB0 aHJvdWdoCisJICogdGhlIHByZXZpb3VzIHBhcmVudC4KKwkgKi8KKwlwbGFuc3RhdGVfdHJlZV93 YWxrZXIobm9kZSwgRXhlY0ZpbmFsaXplV29ya2VySW5zdHJ1bWVudGF0aW9uX3dhbGtlciwKKwkJ CQkJCSAgbm9kZS0+d29ya2VyX2luc3RydW1lbnQgPyAodm9pZCAqKSBub2RlIDogY29udGV4dCk7 CisKKwlpZiAoIW5vZGUtPndvcmtlcl9pbnN0cnVtZW50KQorCQlyZXR1cm4gZmFsc2U7CisKKwlu dW1fd29ya2VycyA9IG5vZGUtPndvcmtlcl9pbnN0cnVtZW50LT5udW1fd29ya2VyczsKKworCS8q IEFjY3VtdWxhdGUgdGhpcyBub2RlJ3MgcGVyLXdvcmtlciBzdGF0cyB0byBwYXJlbnQncyBwZXIt d29ya2VyIHN0YXRzICovCisJaWYgKHBhcmVudCAmJiBwYXJlbnQtPndvcmtlcl9pbnN0cnVtZW50 KQorCXsKKwkJaW50CQkJcGFyZW50X3dvcmtlcnMgPSBwYXJlbnQtPndvcmtlcl9pbnN0cnVtZW50 LT5udW1fd29ya2VyczsKKworCQlmb3IgKGludCBuID0gMDsgbiA8IE1pbihudW1fd29ya2Vycywg cGFyZW50X3dvcmtlcnMpOyBuKyspCisJCQlJbnN0ckFjY3VtU3RhY2soJnBhcmVudC0+d29ya2Vy X2luc3RydW1lbnQtPmluc3RydW1lbnRbbl0uaW5zdHIsCisJCQkJCQkJJm5vZGUtPndvcmtlcl9p bnN0cnVtZW50LT5pbnN0cnVtZW50W25dLmluc3RyKTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9 CisKIC8qCiAgKiBFeGVjU2V0VHVwbGVCb3VuZAogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMK aW5kZXggMWViNmI5ZjFmNDAuLjhkYjJiNzBlNWZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMu YwpAQCAtMTUxLDYgKzE1MSw3IEBAIENyZWF0ZUV4ZWN1dG9yU3RhdGUodm9pZCkKIAogCWVzdGF0 ZS0+ZXNfdG9wX2VmbGFncyA9IDA7CiAJZXN0YXRlLT5lc19pbnN0cnVtZW50ID0gMDsKKwllc3Rh dGUtPmVzX3F1ZXJ5X2luc3RyID0gTlVMTDsKIAllc3RhdGUtPmVzX2ZpbmlzaGVkID0gZmFsc2U7 CiAKIAllc3RhdGUtPmVzX2V4cHJjb250ZXh0cyA9IE5JTDsKQEAgLTIyNyw2ICsyMjgsMTUgQEAg RnJlZUV4ZWN1dG9yU3RhdGUoRVN0YXRlICplc3RhdGUpCiAJCWVzdGF0ZS0+ZXNfcGFydGl0aW9u X2RpcmVjdG9yeSA9IE5VTEw7CiAJfQogCisJLyoKKwkgKiBNYWtlIHN1cmUgdGhlIGluc3RydW1l bnRhdGlvbiBjb250ZXh0IGdldHMgZnJlZWQuIFRoaXMgdXN1YWxseSBnZXRzCisJICogcmUtcGFy ZW50ZWQgdW5kZXIgdGhlIHBlci1xdWVyeSBjb250ZXh0IGluIEluc3RyUXVlcnlTdG9wRmluYWxp emUsIGJ1dAorCSAqIHRoYXQgd29uJ3QgaGFwcGVuIGR1cmluZyBFWFBMQUlOIChCVUZGRVJTKSBz aW5jZSBFeGVjdXRvckZpbmlzaCBuZXZlcgorCSAqIGdldHMgY2FsbGVkLCBzbyB3ZSB3b3VsZCBv dGhlcndpc2UgbGVhayBpdCBpbiBUb3BNZW1vcnlDb250ZXh0LgorCSAqLworCWlmIChlc3RhdGUt PmVzX3F1ZXJ5X2luc3RyICYmIGVzdGF0ZS0+ZXNfcXVlcnlfaW5zdHItPmluc3RyLm5lZWRfc3Rh Y2spCisJCU1lbW9yeUNvbnRleHREZWxldGUoZXN0YXRlLT5lc19xdWVyeV9pbnN0ci0+aW5zdHJf Y3h0KTsKKwogCS8qCiAJICogRnJlZSB0aGUgcGVyLXF1ZXJ5IG1lbW9yeSBjb250ZXh0LCB0aGVy ZWJ5IHJlbGVhc2luZyBhbGwgd29ya2luZwogCSAqIG1lbW9yeSwgaW5jbHVkaW5nIHRoZSBFU3Rh dGUgbm9kZSBpdHNlbGYuCkBAIC05MTMsNyArOTIzLDggQEAgRXhlY0luaXRSZXN1bHRSZWxhdGlv bihFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCQkJICBy ZXN1bHRSZWxhdGlvbkRlc2MsCiAJCQkJCSAgcnRpLAogCQkJCQkgIE5VTEwsCi0JCQkJCSAgZXN0 YXRlLT5lc19pbnN0cnVtZW50KTsKKwkJCQkJICBlc3RhdGUtPmVzX2luc3RydW1lbnQsCisJCQkJ CSAgZXN0YXRlLT5lc19xdWVyeV9pbnN0cik7CiAKIAlpZiAoZXN0YXRlLT5lc19yZXN1bHRfcmVs YXRpb25zID09IE5VTEwpCiAJCWVzdGF0ZS0+ZXNfcmVzdWx0X3JlbGF0aW9ucyA9IChSZXN1bHRS ZWxJbmZvICoqKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCmluZGV4IDAxMWE5Njg0ZGYwLi5i ODRjNTUyYzZmOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYwpAQCAtMTYsMzEgKzE2LDUz IEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50 LmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9yZXNvd25l ci5oIgogCi1CdWZmZXJVc2FnZSBwZ0J1ZmZlclVzYWdlOwotc3RhdGljIEJ1ZmZlclVzYWdlIHNh dmVfcGdCdWZmZXJVc2FnZTsKIFdhbFVzYWdlCXBnV2FsVXNhZ2U7Ci1zdGF0aWMgV2FsVXNhZ2Ug c2F2ZV9wZ1dhbFVzYWdlOworSW5zdHJ1bWVudGF0aW9uIGluc3RyX3RvcDsKK0luc3RyU3RhY2tT dGF0ZSBpbnN0cl9zdGFjayA9IHsKKwkuc3RhY2tfc3BhY2UgPSAwLAorCS5zdGFja19zaXplID0g MCwKKwkuZW50cmllcyA9IE5VTEwsCisJLmN1cnJlbnQgPSAmaW5zdHJfdG9wLAorfTsKIAotc3Rh dGljIHZvaWQgQnVmZmVyVXNhZ2VBZGQoQnVmZmVyVXNhZ2UgKmRzdCwgY29uc3QgQnVmZmVyVXNh Z2UgKmFkZCk7Ci1zdGF0aWMgdm9pZCBXYWxVc2FnZUFkZChXYWxVc2FnZSAqZHN0LCBXYWxVc2Fn ZSAqYWRkKTsKK3ZvaWQKK0luc3RyU3RhY2tHcm93KHZvaWQpCit7CisJaW50CQkJc3BhY2UgPSBp bnN0cl9zdGFjay5zdGFja19zcGFjZTsKKworCUFzc2VydChpbnN0cl9zdGFjay5zdGFja19zaXpl ID49IGluc3RyX3N0YWNrLnN0YWNrX3NwYWNlKTsKKworCWlmIChpbnN0cl9zdGFjay5lbnRyaWVz ID09IE5VTEwpCisJeworCQlzcGFjZSA9IDEwOwkJCQkvKiBBbGxvY2F0ZSBzdWZmaWNpZW50IGlu aXRpYWwgc3BhY2UgZm9yCisJCQkJCQkJCSAqIHR5cGljYWwgYWN0aXZpdHkgKi8KKwkJaW5zdHJf c3RhY2suZW50cmllcyA9IE1lbW9yeUNvbnRleHRBbGxvYyhUb3BNZW1vcnlDb250ZXh0LAorCQkJ CQkJCQkJCQkJIHNpemVvZihJbnN0cnVtZW50YXRpb24gKikgKiBzcGFjZSk7CisJfQorCWVsc2UK Kwl7CisJCXNwYWNlICo9IDI7CisJCWluc3RyX3N0YWNrLmVudHJpZXMgPSByZXBhbGxvY19hcnJh eShpbnN0cl9zdGFjay5lbnRyaWVzLCBJbnN0cnVtZW50YXRpb24gKiwgc3BhY2UpOworCX0KIAor CS8qIFVwZGF0ZSBzdGFjayBzcGFjZSBhZnRlciBhbGxvY2F0aW9uIHN1Y2NlZWRlZCB0byBwcm90 ZWN0IGFnYWluc3QgT09NcyAqLworCWluc3RyX3N0YWNrLnN0YWNrX3NwYWNlID0gc3BhY2U7Cit9 CiAKIC8qIEdlbmVyYWwgcHVycG9zZSBpbnN0cnVtZW50YXRpb24gaGFuZGxpbmcgKi8KLUluc3Ry dW1lbnRhdGlvbiAqCi1JbnN0ckFsbG9jKGludCBpbnN0cnVtZW50X29wdGlvbnMpCitzdGF0aWMg aW5saW5lIGJvb2wKK0luc3RyTmVlZFN0YWNrKGludCBpbnN0cnVtZW50X29wdGlvbnMpCiB7Ci0J SW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IHBhbGxvYzBfb2JqZWN0KEluc3RydW1lbnRhdGlvbik7 Ci0KLQlJbnN0ckluaXRPcHRpb25zKGluc3RyLCBpbnN0cnVtZW50X29wdGlvbnMpOwotCXJldHVy biBpbnN0cjsKKwlyZXR1cm4gKGluc3RydW1lbnRfb3B0aW9ucyAmIChJTlNUUlVNRU5UX0JVRkZF UlMgfCBJTlNUUlVNRU5UX1dBTCkpICE9IDA7CiB9CiAKIHZvaWQKIEluc3RySW5pdE9wdGlvbnMo SW5zdHJ1bWVudGF0aW9uICppbnN0ciwgaW50IGluc3RydW1lbnRfb3B0aW9ucykKIHsKLQlpbnN0 ci0+bmVlZF9idWZ1c2FnZSA9IChpbnN0cnVtZW50X29wdGlvbnMgJiBJTlNUUlVNRU5UX0JVRkZF UlMpICE9IDA7Ci0JaW5zdHItPm5lZWRfd2FsdXNhZ2UgPSAoaW5zdHJ1bWVudF9vcHRpb25zICYg SU5TVFJVTUVOVF9XQUwpICE9IDA7CisJaW5zdHItPm5lZWRfc3RhY2sgPSBJbnN0ck5lZWRTdGFj ayhpbnN0cnVtZW50X29wdGlvbnMpOwogCWluc3RyLT5uZWVkX3RpbWVyID0gKGluc3RydW1lbnRf b3B0aW9ucyAmIElOU1RSVU1FTlRfVElNRVIpICE9IDA7CiB9CiAKQEAgLTU1LDEyICs3Nyw4IEBA IEluc3RyU3RhcnQoSW5zdHJ1bWVudGF0aW9uICppbnN0cikKIAkJCUlOU1RSX1RJTUVfU0VUX0NV UlJFTlQoaW5zdHItPnN0YXJ0dGltZSk7CiAJfQogCi0JLyogc2F2ZSBidWZmZXIgdXNhZ2UgdG90 YWxzIGF0IHN0YXJ0LCBpZiBuZWVkZWQgKi8KLQlpZiAoaW5zdHItPm5lZWRfYnVmdXNhZ2UpCi0J CWluc3RyLT5idWZ1c2FnZV9zdGFydCA9IHBnQnVmZmVyVXNhZ2U7Ci0KLQlpZiAoaW5zdHItPm5l ZWRfd2FsdXNhZ2UpCi0JCWluc3RyLT53YWx1c2FnZV9zdGFydCA9IHBnV2FsVXNhZ2U7CisJaWYg KGluc3RyLT5uZWVkX3N0YWNrKQorCQlJbnN0clB1c2hTdGFjayhpbnN0cik7CiB9CiAKIC8qCkBA IC04NCwxNCArMTAyLDkgQEAgSW5zdHJTdG9wQ29tbW9uKEluc3RydW1lbnRhdGlvbiAqaW5zdHIs IGluc3RyX3RpbWUgKmFjY3VtX3RpbWUpCiAJCUlOU1RSX1RJTUVfU0VUX1pFUk8oaW5zdHItPnN0 YXJ0dGltZSk7CiAJfQogCi0JLyogQWRkIGRlbHRhIG9mIGJ1ZmZlciB1c2FnZSBzaW5jZSBJbnN0 clN0YXJ0IHRvIHRoZSB0b3RhbHMgKi8KLQlpZiAoaW5zdHItPm5lZWRfYnVmdXNhZ2UpCi0JCUJ1 ZmZlclVzYWdlQWNjdW1EaWZmKCZpbnN0ci0+YnVmdXNhZ2UsCi0JCQkJCQkJICZwZ0J1ZmZlclVz YWdlLCAmaW5zdHItPmJ1ZnVzYWdlX3N0YXJ0KTsKLQotCWlmIChpbnN0ci0+bmVlZF93YWx1c2Fn ZSkKLQkJV2FsVXNhZ2VBY2N1bURpZmYoJmluc3RyLT53YWx1c2FnZSwKLQkJCQkJCSAgJnBnV2Fs VXNhZ2UsICZpbnN0ci0+d2FsdXNhZ2Vfc3RhcnQpOworCS8qIHBvcCB0aGUgc3RhY2ssIHVubGVz cyBJbnN0clN0b3BGaW5hbGl6ZSBwcmV2aW91c2x5IGNsZWFuZWQgdXAgKi8KKwlpZiAoaW5zdHIt Pm9uX3N0YWNrKQorCQlJbnN0clBvcFN0YWNrKGluc3RyKTsKIH0KIAogdm9pZApAQCAtMTAwLDE2 ICsxMTMsMjc5IEBAIEluc3RyU3RvcChJbnN0cnVtZW50YXRpb24gKmluc3RyKQogCUluc3RyU3Rv cENvbW1vbihpbnN0ciwgJmluc3RyLT50b3RhbCk7CiB9CiAKKy8qCisgKiBTdG9wcyBpbnN0cnVt ZW50YXRpb24sIGZpbmFsaXplcyB0aGUgc3RhY2sgZW50cnkgYW5kIGFjY3VtdWxhdGVzIHRvIGl0 cyBwYXJlbnQuCisgKgorICogTm90ZSB0aGF0IHRoaXMgaW50ZW50aW9uYWxseSBhbGxvd3MgcGFz c2luZyBhIHN0YWNrIHRoYXQgaXMgbm90IHRoZSBjdXJyZW50CisgKiB0b3AsIGFzIGNhbiBoYXBw ZW4gd2l0aCBQR19GSU5BTExZLCBvciByZXNvdXJjZSBvd25lcnMsIHdoaWNoIGRvbid0IGhhdmUg YQorICogZ3VhcmFudGVlZCBjbGVhbnVwIG9yZGVyLgorICovCit2b2lkCitJbnN0clN0b3BGaW5h bGl6ZShJbnN0cnVtZW50YXRpb24gKmluc3RyKQoreworCS8qCisJICogSWYgb3VyIGN1cnJlbnQg bm9kZSBpcyBvbiB0aGUgc3RhY2ssIG1ha2Ugc3VyZSB3ZSByZXNldCB0aGUgc3RhY2sgdG8KKwkg KiB0aGUgcGFyZW50IG9mIHdoaWNoZXZlciBvZiB0aGUgcmVsZWFzZWQgc3RhY2sgZW50cmllcyBo YXMgdGhlIGxvd2VzdAorCSAqIGluZGV4CisJICovCisJaWYgKGluc3RyLT5vbl9zdGFjaykKKwl7 CisJCWludAkJCWlkeCA9IC0xOworCisJCWZvciAoaW50IGkgPSBpbnN0cl9zdGFjay5zdGFja19z aXplIC0gMTsgaSA+PSAwOyBpLS0pCisJCXsKKwkJCWlmIChpbnN0cl9zdGFjay5lbnRyaWVzW2ld ID09IGluc3RyKQorCQkJeworCQkJCWlkeCA9IGk7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwor CQlpZiAoaWR4IDwgMCkKKwkJCWVsb2coRVJST1IsICJpbnN0cnVtZW50YXRpb24gZW50cnkgbm90 IGZvdW5kIG9uIHN0YWNrIik7CisKKwkJLyogQ2xlYXIgb25fc3RhY2sgZm9yIGFueSBpbnRlcm1l ZGlhdGUgZW50cmllcyB3ZSdyZSBza2lwcGluZyBvdmVyICovCisJCWZvciAoaW50IGkgPSBpbnN0 cl9zdGFjay5zdGFja19zaXplIC0gMTsgaSA+IGlkeDsgaS0tKQorCQkJaW5zdHJfc3RhY2suZW50 cmllc1tpXS0+b25fc3RhY2sgPSBmYWxzZTsKKworCQl3aGlsZSAoaW5zdHJfc3RhY2suc3RhY2tf c2l6ZSA+IGlkeCArIDEpCisJCQlpbnN0cl9zdGFjay5zdGFja19zaXplLS07CisJfQorCisJSW5z dHJTdG9wKGluc3RyKTsKKworCS8qCisJICogQWNjdW11bGF0ZSBhbGwgaW5zdHJ1bWVudGF0aW9u IHRvIHRoZSBjdXJyZW50bHkgYWN0aXZlIGluc3RydW1lbnRhdGlvbiwKKwkgKiBzbyB0aGF0IGNh bGxlcnMgZ2V0IGEgY29tcGxldGUgcGljdHVyZSBvZiBhY3Rpdml0eSwgZXZlbiBhZnRlciBhbiBh Ym9ydAorCSAqLworCUluc3RyQWNjdW1TdGFjayhpbnN0cl9zdGFjay5jdXJyZW50LCBpbnN0cik7 Cit9CisKKy8qCisgKiBGaW5hbGl6ZSBjaGlsZCBpbnN0cnVtZW50YXRpb24gYnkgYWNjdW11bGF0 aW5nIGJ1ZmZlci9XQUwgdXNhZ2UgdG8gdGhlCisgKiBwcm92aWRlZCBpbnN0cnVtZW50YXRpb24s IHdoaWNoIG1heSBiZSB0aGUgY3VycmVudCBlbnRyeSwgb3Igb25lIHRoZSBjYWxsZXIKKyAqIHRy ZWF0cyBhcyBhIHBhcmVudCBhbmQgd2lsbCBhZGQgdG8gdGhlIHRvdGFscyBsYXRlci4KKyAqCisg KiBBbHNvIGRlbGV0ZXMgdGhlIHVuZmluYWxpemVkIGVudHJ5IHRvIGF2b2lkIGRvdWJsZSBjb3Vu dGluZyBpbiBhbiBhYm9ydAorICogc2l0dWF0aW9uLCBlLmcuIGR1cmluZyBleGVjdXRvciBmaW5p c2guCisgKi8KK3ZvaWQKK0luc3RyRmluYWxpemVDaGlsZChJbnN0cnVtZW50YXRpb24gKmluc3Ry LCBJbnN0cnVtZW50YXRpb24gKnBhcmVudCkKK3sKKwlpZiAoaW5zdHItPm5lZWRfc3RhY2spCisJ eworCQlpZiAoIWRsaXN0X25vZGVfaXNfZGV0YWNoZWQoJmluc3RyLT51bmZpbmFsaXplZF9lbnRy eSkpCisJCQlkbGlzdF9kZWxldGVfdGhvcm91Z2hseSgmaW5zdHItPnVuZmluYWxpemVkX2VudHJ5 KTsKKworCQlJbnN0ckFjY3VtU3RhY2socGFyZW50LCBpbnN0cik7CisJfQorfQorCisKKy8qIFF1 ZXJ5IGluc3RydW1lbnRhdGlvbiBoYW5kbGluZyAqLworCisvKgorICogVXNlIFJlc291cmNlT3du ZXIgbWVjaGFuaXNtIHRvIGNvcnJlY3RseSByZXNldCBpbnN0cl9zdGFjayBvbiBhYm9ydC4KKyAq Lworc3RhdGljIHZvaWQgUmVzT3duZXJSZWxlYXNlSW5zdHJ1bWVudGF0aW9uKERhdHVtIHJlcyk7 CitzdGF0aWMgY29uc3QgUmVzb3VyY2VPd25lckRlc2MgaW5zdHJ1bWVudGF0aW9uX3Jlc293bmVy X2Rlc2MgPQoreworCS5uYW1lID0gImluc3RydW1lbnRhdGlvbiIsCisJLnJlbGVhc2VfcGhhc2Ug PSBSRVNPVVJDRV9SRUxFQVNFX0FGVEVSX0xPQ0tTLAorCS5yZWxlYXNlX3ByaW9yaXR5ID0gUkVM RUFTRV9QUklPX0lOU1RSVU1FTlRBVElPTiwKKwkuUmVsZWFzZVJlc291cmNlID0gUmVzT3duZXJS ZWxlYXNlSW5zdHJ1bWVudGF0aW9uLAorCS5EZWJ1Z1ByaW50ID0gTlVMTCwJCQkvKiBkZWZhdWx0 IG1lc3NhZ2UgaXMgZmluZSAqLworfTsKKworc3RhdGljIGlubGluZSB2b2lkCitSZXNvdXJjZU93 bmVyUmVtZW1iZXJJbnN0cnVtZW50YXRpb24oUmVzb3VyY2VPd25lciBvd25lciwgUXVlcnlJbnN0 cnVtZW50YXRpb24gKnFpbnN0cikKK3sKKwlSZXNvdXJjZU93bmVyUmVtZW1iZXIob3duZXIsIFBv aW50ZXJHZXREYXR1bShxaW5zdHIpLCAmaW5zdHJ1bWVudGF0aW9uX3Jlc293bmVyX2Rlc2MpOwor fQorCitzdGF0aWMgaW5saW5lIHZvaWQKK1Jlc291cmNlT3duZXJGb3JnZXRJbnN0cnVtZW50YXRp b24oUmVzb3VyY2VPd25lciBvd25lciwgUXVlcnlJbnN0cnVtZW50YXRpb24gKnFpbnN0cikKK3sK KwlSZXNvdXJjZU93bmVyRm9yZ2V0KG93bmVyLCBQb2ludGVyR2V0RGF0dW0ocWluc3RyKSwgJmlu c3RydW1lbnRhdGlvbl9yZXNvd25lcl9kZXNjKTsKK30KKworc3RhdGljIHZvaWQKK1Jlc093bmVy UmVsZWFzZUluc3RydW1lbnRhdGlvbihEYXR1bSByZXMpCit7CisJUXVlcnlJbnN0cnVtZW50YXRp b24gKnFpbnN0ciA9IChRdWVyeUluc3RydW1lbnRhdGlvbiAqKSBEYXR1bUdldFBvaW50ZXIocmVz KTsKKwlNZW1vcnlDb250ZXh0IGluc3RyX2N4dCA9IHFpbnN0ci0+aW5zdHJfY3h0OworCWRsaXN0 X211dGFibGVfaXRlciBpdGVyOworCisJLyogQWNjdW11bGF0ZSBkYXRhIGZyb20gYWxsIHVuZmlu YWxpemVkIGNoaWxkIGVudHJpZXMgKG5vZGVzLCB0cmlnZ2VycykgKi8KKwlkbGlzdF9mb3JlYWNo X21vZGlmeShpdGVyLCAmcWluc3RyLT51bmZpbmFsaXplZF9lbnRyaWVzKQorCXsKKwkJSW5zdHJ1 bWVudGF0aW9uICpjaGlsZCA9IGRsaXN0X2NvbnRhaW5lcihJbnN0cnVtZW50YXRpb24sIHVuZmlu YWxpemVkX2VudHJ5LCBpdGVyLmN1cik7CisKKwkJSW5zdHJBY2N1bVN0YWNrKCZxaW5zdHItPmlu c3RyLCBjaGlsZCk7CisJfQorCisJLyogRW5zdXJlIHRoZSBzdGFjayBpcyByZXNldCBhcyBleHBl Y3RlZCwgYW5kIHdlIGFjY3VtdWxhdGUgdG8gdGhlIHBhcmVudCAqLworCUluc3RyU3RvcEZpbmFs aXplKCZxaW5zdHItPmluc3RyKTsKKworCS8qCisJICogRGVzdHJveSB0aGUgZGVkaWNhdGVkIGlu c3RydW1lbnRhdGlvbiBjb250ZXh0LCB3aGljaCBmcmVlcyB0aGUKKwkgKiBRdWVyeUluc3RydW1l bnRhdGlvbiBhbmQgYWxsIGNoaWxkIGFsbG9jYXRpb25zLgorCSAqLworCU1lbW9yeUNvbnRleHRE ZWxldGUoaW5zdHJfY3h0KTsKK30KKworUXVlcnlJbnN0cnVtZW50YXRpb24gKgorSW5zdHJRdWVy eUFsbG9jKGludCBpbnN0cnVtZW50X29wdGlvbnMpCit7CisJUXVlcnlJbnN0cnVtZW50YXRpb24g Kmluc3RyOworCU1lbW9yeUNvbnRleHQgaW5zdHJfY3h0OworCisJLyoKKwkgKiBXaGVuIHRoZSBp bnN0cnVtZW50YXRpb24gc3RhY2sgaXMgdXNlZCwgY3JlYXRlIGEgZGVkaWNhdGVkIG1lbW9yeQor CSAqIGNvbnRleHQgZm9yIHRoaXMgcXVlcnkncyBpbnN0cnVtZW50YXRpb24gYWxsb2NhdGlvbnMu IFRoaXMgY29udGV4dCBpcyBhCisJICogY2hpbGQgb2YgVG9wTWVtb3J5Q29udGV4dCBzbyBpdCBz dXJ2aXZlcyB0cmFuc2FjdGlvbiBhYm9ydCDigJQKKwkgKiBSZXNvdXJjZU93bmVyIHJlbGVhc2Ug bmVlZHMgdG8gYWNjZXNzIGl0LgorCSAqCisJICogRm9yIHNpbXBsZXIgY2FzZXMgKHRpbWVyL3Jv d3Mgb25seSksIHVzZSB0aGUgY3VycmVudCBtZW1vcnkgY29udGV4dC4KKwkgKgorCSAqIEFsbCBj aGlsZCBpbnN0cnVtZW50YXRpb24gYWxsb2NhdGlvbnMgKG5vZGVzLCB0cmlnZ2VycywgZXRjKSBt dXN0IGJlCisJICogYWxsb2NhdGVkIHdpdGhpbiB0aGlzIGNvbnRleHQgdG8gZW5zdXJlIGNvcnJl Y3QgY2xlYW4gdXAgb24gYWJvcnQuCisJICovCisJaWYgKEluc3RyTmVlZFN0YWNrKGluc3RydW1l bnRfb3B0aW9ucykpCisJCWluc3RyX2N4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BNZW1v cnlDb250ZXh0LAorCQkJCQkJCQkJCSAgIkluc3RydW1lbnRhdGlvbiIsCisJCQkJCQkJCQkJICBB TExPQ1NFVF9TTUFMTF9TSVpFUyk7CisJZWxzZQorCQlpbnN0cl9jeHQgPSBDdXJyZW50TWVtb3J5 Q29udGV4dDsKKworCWluc3RyID0gTWVtb3J5Q29udGV4dEFsbG9jWmVybyhpbnN0cl9jeHQsIHNp emVvZihRdWVyeUluc3RydW1lbnRhdGlvbikpOworCWluc3RyLT5pbnN0cnVtZW50X29wdGlvbnMg PSBpbnN0cnVtZW50X29wdGlvbnM7CisJaW5zdHItPmluc3RyX2N4dCA9IGluc3RyX2N4dDsKKwor CUluc3RySW5pdE9wdGlvbnMoJmluc3RyLT5pbnN0ciwgaW5zdHJ1bWVudF9vcHRpb25zKTsKKwlk bGlzdF9pbml0KCZpbnN0ci0+dW5maW5hbGl6ZWRfZW50cmllcyk7CisKKwlyZXR1cm4gaW5zdHI7 Cit9CisKK3ZvaWQKK0luc3RyUXVlcnlTdGFydChRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3Ry KQoreworCUluc3RyU3RhcnQoJnFpbnN0ci0+aW5zdHIpOworCisJaWYgKHFpbnN0ci0+aW5zdHIu bmVlZF9zdGFjaykKKwl7CisJCUFzc2VydChDdXJyZW50UmVzb3VyY2VPd25lciAhPSBOVUxMKTsK KwkJcWluc3RyLT5vd25lciA9IEN1cnJlbnRSZXNvdXJjZU93bmVyOworCisJCVJlc291cmNlT3du ZXJFbmxhcmdlKHFpbnN0ci0+b3duZXIpOworCQlSZXNvdXJjZU93bmVyUmVtZW1iZXJJbnN0cnVt ZW50YXRpb24ocWluc3RyLT5vd25lciwgcWluc3RyKTsKKwl9Cit9CisKK3ZvaWQKK0luc3RyUXVl cnlTdG9wKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIpCit7CisJSW5zdHJTdG9wKCZxaW5z dHItPmluc3RyKTsKKworCWlmIChxaW5zdHItPmluc3RyLm5lZWRfc3RhY2spCisJeworCQlBc3Nl cnQocWluc3RyLT5vd25lciAhPSBOVUxMKTsKKwkJUmVzb3VyY2VPd25lckZvcmdldEluc3RydW1l bnRhdGlvbihxaW5zdHItPm93bmVyLCBxaW5zdHIpOworCQlxaW5zdHItPm93bmVyID0gTlVMTDsK Kwl9Cit9CisKK3ZvaWQKK0luc3RyUXVlcnlTdG9wRmluYWxpemUoUXVlcnlJbnN0cnVtZW50YXRp b24gKnFpbnN0cikKK3sKKwlJbnN0clN0b3BGaW5hbGl6ZSgmcWluc3RyLT5pbnN0cik7CisKKwlp ZiAoIXFpbnN0ci0+aW5zdHIubmVlZF9zdGFjaykKKwl7CisJCUFzc2VydChxaW5zdHItPm93bmVy ID09IE5VTEwpOworCQlyZXR1cm47CisJfQorCisJQXNzZXJ0KHFpbnN0ci0+b3duZXIgIT0gTlVM TCk7CisJUmVzb3VyY2VPd25lckZvcmdldEluc3RydW1lbnRhdGlvbihxaW5zdHItPm93bmVyLCBx aW5zdHIpOworCXFpbnN0ci0+b3duZXIgPSBOVUxMOworCisJLyoKKwkgKiBSZXBhcmVudCB0aGUg ZGVkaWNhdGVkIGluc3RydW1lbnRhdGlvbiBjb250ZXh0IHVuZGVyIHRoZSBjdXJyZW50IG1lbW9y eQorCSAqIGNvbnRleHQsIHNvIHRoYXQgaXRzIGxpZmV0aW1lIGlzIG5vdyB0aWVkIHRvIHRoZSBj YWxsZXIncyBjb250ZXh0CisJICogcmF0aGVyIHRoYW4gVG9wTWVtb3J5Q29udGV4dC4KKwkgKi8K KwlNZW1vcnlDb250ZXh0U2V0UGFyZW50KHFpbnN0ci0+aW5zdHJfY3h0LCBDdXJyZW50TWVtb3J5 Q29udGV4dCk7Cit9CisKKy8qCisgKiBSZWdpc3RlciBhIGNoaWxkIEluc3RydW1lbnRhdGlvbiBl bnRyeSBmb3IgYWJvcnQgcHJvY2Vzc2luZy4KKyAqCisgKiBPbiBhYm9ydCwgUmVzT3duZXJSZWxl YXNlSW5zdHJ1bWVudGF0aW9uIHdpbGwgd2FsayB0aGUgcGFyZW50J3MgbGlzdCB0bworICogcmVj b3ZlciBidWZmZXIvV0FMIGRhdGEgZnJvbSBlbnRyaWVzIHRoYXQgd2VyZSBuZXZlciBmaW5hbGl6 ZWQsIGluIG9yZGVyIGZvcgorICogYWdncmVnYXRlIHRvdGFscyB0byBiZSBhY2N1cmF0ZSBkZXNw aXRlIHRoZSBxdWVyeSBlcnJvcmluZyBvdXQuCisgKi8KK3ZvaWQKK0luc3RyUXVlcnlSZW1lbWJl ckNoaWxkKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpwYXJlbnQsIEluc3RydW1lbnRhdGlvbiAqY2hp bGQpCit7CisJaWYgKGNoaWxkLT5uZWVkX3N0YWNrKQorCQlkbGlzdF9wdXNoX2hlYWQoJnBhcmVu dC0+dW5maW5hbGl6ZWRfZW50cmllcywgJmNoaWxkLT51bmZpbmFsaXplZF9lbnRyeSk7Cit9CisK Ky8qIHN0YXJ0IGluc3RydW1lbnRhdGlvbiBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0b3Igc3RhcnR1 cCAqLworUXVlcnlJbnN0cnVtZW50YXRpb24gKgorSW5zdHJTdGFydFBhcmFsbGVsUXVlcnkodm9p ZCkKK3sKKwlRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyID0gSW5zdHJRdWVyeUFsbG9jKElO U1RSVU1FTlRfQlVGRkVSUyB8IElOU1RSVU1FTlRfV0FMKTsKKworCUluc3RyUXVlcnlTdGFydChx aW5zdHIpOworCXJldHVybiBxaW5zdHI7Cit9CisKKy8qIHJlcG9ydCB1c2FnZSBhZnRlciBwYXJh bGxlbCBleGVjdXRvciBzaHV0ZG93biAqLwordm9pZAorSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KFF1 ZXJ5SW5zdHJ1bWVudGF0aW9uICpxaW5zdHIsIEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXNh Z2UgKndhbHVzYWdlKQoreworCUluc3RyUXVlcnlTdG9wRmluYWxpemUocWluc3RyKTsKKwltZW1j cHkoYnVmdXNhZ2UsICZxaW5zdHItPmluc3RyLmJ1ZnVzYWdlLCBzaXplb2YoQnVmZmVyVXNhZ2Up KTsKKwltZW1jcHkod2FsdXNhZ2UsICZxaW5zdHItPmluc3RyLndhbHVzYWdlLCBzaXplb2YoV2Fs VXNhZ2UpKTsKK30KKworLyoKKyAqIEFjY3VtdWxhdGUgd29yayBkb25lIGJ5IHBhcmFsbGVsIHdv cmtlcnMgaW4gdGhlIGxlYWRlcidzIHN0YXRzLgorICoKKyAqIE5vdGUgdGhhdCB3aGF0IGdldHMg YWRkZWQgaGVyZSBlZmZlY3RpdmVseSBkZXBlbmRzIG9uIHdoZXRoZXIgcGVyLW5vZGUKKyAqIGlu c3RydW1lbnRhdGlvbiBpcyBhY3RpdmUuIElmIGl0J3MgYWN0aXZlIHRoZSBwYXJhbGxlbCB3b3Jr ZXIgaW50ZW50aW9uYWxseQorICogc2tpcHMgRXhlY0ZpbmFsaXplTm9kZUluc3RydW1lbnRhdGlv biBvbiBleGVjdXRvciBzaHV0ZG93biwgYmVjYXVzZSBpdCB3b3VsZAorICogY2F1c2UgZG91Ymxl IGNvdW50aW5nLiBJbnN0ZWFkLCB0aGlzIG9ubHkgYWNjdW11bGF0ZXMgYW55IGV4dHJhIGFjdGl2 aXR5CisgKiBvdXRzaWRlIG9mIG5vZGVzLgorICoKKyAqIE90aGVyd2lzZSB0aGlzIGlzIHJlc3Bv bnNpYmxlIGZvciBtYWtpbmcgc3VyZSB0aGF0IHRoZSBjb21wbGV0ZSBxdWVyeQorICogYWN0aXZp dHkgaXMgYWNjdW11bGF0ZWQuCisgKi8KK3ZvaWQKK0luc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KEJ1 ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKQoreworCUJ1ZmZlclVzYWdl QWRkKCZpbnN0cl9zdGFjay5jdXJyZW50LT5idWZ1c2FnZSwgYnVmdXNhZ2UpOworCVdhbFVzYWdl QWRkKCZpbnN0cl9zdGFjay5jdXJyZW50LT53YWx1c2FnZSwgd2FsdXNhZ2UpOworCisJV2FsVXNh Z2VBZGQoJnBnV2FsVXNhZ2UsIHdhbHVzYWdlKTsKK30KKwogLyogTm9kZSBpbnN0cnVtZW50YXRp b24gaGFuZGxpbmcgKi8KIAogLyogQWxsb2NhdGUgbmV3IG5vZGUgaW5zdHJ1bWVudGF0aW9uIHN0 cnVjdHVyZSAqLwogTm9kZUluc3RydW1lbnRhdGlvbiAqCi1JbnN0ckFsbG9jTm9kZShpbnQgaW5z dHJ1bWVudF9vcHRpb25zLCBib29sIGFzeW5jX21vZGUpCitJbnN0ckFsbG9jTm9kZShRdWVyeUlu c3RydW1lbnRhdGlvbiAqcWluc3RyLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zLAorCQkJICAgYm9v bCBhc3luY19tb2RlKQogewotCU5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyID0gcGFsbG9jX29i amVjdChOb2RlSW5zdHJ1bWVudGF0aW9uKTsKKwlOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciA9 IE1lbW9yeUNvbnRleHRBbGxvYyhxaW5zdHItPmluc3RyX2N4dCwgc2l6ZW9mKE5vZGVJbnN0cnVt ZW50YXRpb24pKTsKIAogCUluc3RySW5pdE5vZGUoaW5zdHIsIGluc3RydW1lbnRfb3B0aW9ucywg YXN5bmNfbW9kZSk7CiAKKwlJbnN0clF1ZXJ5UmVtZW1iZXJDaGlsZChxaW5zdHIsICZpbnN0ci0+ aW5zdHIpOworCiAJcmV0dXJuIGluc3RyOwogfQogCkBAIC0xMjksNiArNDA1LDcgQEAgSW5zdHJT dGFydE5vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiAJSW5zdHJTdGFydCgmaW5zdHIt Pmluc3RyKTsKIH0KIAorCiAvKiBFeGl0IGZyb20gYSBwbGFuIG5vZGUgKi8KIHZvaWQKIEluc3Ry U3RvcE5vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKQpAQCAt MTgwLDggKzQ1Nyw4IEBAIEluc3RyRW5kTG9vcChOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cikK IAlpZiAoIWluc3RyLT5ydW5uaW5nKQogCQlyZXR1cm47CiAKLQlpZiAoIUlOU1RSX1RJTUVfSVNf WkVSTyhpbnN0ci0+aW5zdHIuc3RhcnR0aW1lKSkKLQkJZWxvZyhFUlJPUiwgIkluc3RyRW5kTG9v cCBjYWxsZWQgb24gcnVubmluZyBub2RlIik7CisJLyogRW5zdXJlIEluc3RyTm9kZVN0b3Agd2Fz IGNhbGxlZCAqLworCUFzc2VydChJTlNUUl9USU1FX0lTX1pFUk8oaW5zdHItPmluc3RyLnN0YXJ0 dGltZSkpOwogCiAJLyogQWNjdW11bGF0ZSBwZXItY3ljbGUgc3RhdGlzdGljcyBpbnRvIHRvdGFs cyAqLwogCUlOU1RSX1RJTUVfQUREKGluc3RyLT5zdGFydHVwLCBpbnN0ci0+Zmlyc3R0dXBsZSk7 CkBAIC0yMTQsMjIgKzQ5MSwzMCBAQCBJbnN0ckFnZ05vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAq ZHN0LCBOb2RlSW5zdHJ1bWVudGF0aW9uICphZGQpCiAJZHN0LT5uZmlsdGVyZWQxICs9IGFkZC0+ bmZpbHRlcmVkMTsKIAlkc3QtPm5maWx0ZXJlZDIgKz0gYWRkLT5uZmlsdGVyZWQyOwogCi0JaWYg KGRzdC0+aW5zdHIubmVlZF9idWZ1c2FnZSkKLQkJQnVmZmVyVXNhZ2VBZGQoJmRzdC0+aW5zdHIu YnVmdXNhZ2UsICZhZGQtPmluc3RyLmJ1ZnVzYWdlKTsKLQotCWlmIChkc3QtPmluc3RyLm5lZWRf d2FsdXNhZ2UpCi0JCVdhbFVzYWdlQWRkKCZkc3QtPmluc3RyLndhbHVzYWdlLCAmYWRkLT5pbnN0 ci53YWx1c2FnZSk7CisJaWYgKGRzdC0+aW5zdHIubmVlZF9zdGFjaykKKwkJSW5zdHJBY2N1bVN0 YWNrKCZkc3QtPmluc3RyLCAmYWRkLT5pbnN0cik7CiB9CiAKIC8qIFRyaWdnZXIgaW5zdHJ1bWVu dGF0aW9uIGhhbmRsaW5nICovCiBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICoKLUluc3RyQWxsb2NU cmlnZ2VyKGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKQorSW5zdHJBbGxvY1RyaWdnZXIo UXVlcnlJbnN0cnVtZW50YXRpb24gKnFpbnN0ciwgaW50IGluc3RydW1lbnRfb3B0aW9ucywgaW50 IG4pCiB7Ci0JVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqdGdpbnN0ciA9IHBhbGxvYzBfYXJyYXko VHJpZ2dlckluc3RydW1lbnRhdGlvbiwgbik7CisJVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqdGdp bnN0cjsKIAlpbnQJCQlpOwogCisJLyoKKwkgKiBBbGxvY2F0ZSBpbiB0aGUgcXVlcnkncyBkZWRp Y2F0ZWQgaW5zdHJ1bWVudGF0aW9uIGNvbnRleHQgc28gYWxsCisJICogaW5zdHJ1bWVudGF0aW9u IGRhdGEgaXMgZ3JvdXBlZCB0b2dldGhlciBhbmQgY2xlYW5lZCB1cCBhcyBhIHVuaXQuCisJICov CisJQXNzZXJ0KHFpbnN0ciAhPSBOVUxMICYmIHFpbnN0ci0+aW5zdHJfY3h0ICE9IE5VTEwpOwor CXRnaW5zdHIgPSBNZW1vcnlDb250ZXh0QWxsb2NaZXJvKHFpbnN0ci0+aW5zdHJfY3h0LAorCQkJ CQkJCQkJIG4gKiBzaXplb2YoVHJpZ2dlckluc3RydW1lbnRhdGlvbikpOworCiAJZm9yIChpID0g MDsgaSA8IG47IGkrKykKKwl7CiAJCUluc3RySW5pdE9wdGlvbnMoJnRnaW5zdHJbaV0uaW5zdHIs IGluc3RydW1lbnRfb3B0aW9ucyk7CisJCUluc3RyUXVlcnlSZW1lbWJlckNoaWxkKHFpbnN0ciwg JnRnaW5zdHJbaV0uaW5zdHIpOworCX0KIAogCXJldHVybiB0Z2luc3RyOwogfQpAQCAtMjQzLDM4 ICs1MjgsMzAgQEAgSW5zdHJTdGFydFRyaWdnZXIoVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqdGdp bnN0cikKIHZvaWQKIEluc3RyU3RvcFRyaWdnZXIoVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqdGdp bnN0ciwgaW50NjQgZmlyaW5ncykKIHsKKwkvKgorCSAqIFRoaXMgdHJpZ2dlciBtYXkgYmUgY2Fs bGVkIGFnYWluLCBzbyB3ZSBkb24ndCBmaW5hbGl6ZSBpbnN0cnVtZW50YXRpb24KKwkgKiBoZXJl LiBBY2N1bXVsYXRpb24gdG8gdGhlIHBhcmVudCBoYXBwZW5zIGF0IEV4ZWN1dG9yRmluaXNoIHRo cm91Z2gKKwkgKiBFeGVjRmluYWxpemVUcmlnZ2VySW5zdHJ1bWVudGF0aW9uLgorCSAqLwogCUlu c3RyU3RvcCgmdGdpbnN0ci0+aW5zdHIpOwogCXRnaW5zdHItPmZpcmluZ3MgKz0gZmlyaW5nczsK IH0KIAotLyogbm90ZSBjdXJyZW50IHZhbHVlcyBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0b3Igc3Rh cnR1cCAqLwogdm9pZAotSW5zdHJTdGFydFBhcmFsbGVsUXVlcnkodm9pZCkKK0luc3RyQWNjdW1T dGFjayhJbnN0cnVtZW50YXRpb24gKmRzdCwgSW5zdHJ1bWVudGF0aW9uICphZGQpCiB7Ci0Jc2F2 ZV9wZ0J1ZmZlclVzYWdlID0gcGdCdWZmZXJVc2FnZTsKLQlzYXZlX3BnV2FsVXNhZ2UgPSBwZ1dh bFVzYWdlOwotfQorCUFzc2VydChkc3QgIT0gTlVMTCk7CisJQXNzZXJ0KGFkZCAhPSBOVUxMKTsK IAotLyogcmVwb3J0IHVzYWdlIGFmdGVyIHBhcmFsbGVsIGV4ZWN1dG9yIHNodXRkb3duICovCi12 b2lkCi1JbnN0ckVuZFBhcmFsbGVsUXVlcnkoQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2Fn ZSAqd2FsdXNhZ2UpCi17Ci0JbWVtc2V0KGJ1ZnVzYWdlLCAwLCBzaXplb2YoQnVmZmVyVXNhZ2Up KTsKLQlCdWZmZXJVc2FnZUFjY3VtRGlmZihidWZ1c2FnZSwgJnBnQnVmZmVyVXNhZ2UsICZzYXZl X3BnQnVmZmVyVXNhZ2UpOwotCW1lbXNldCh3YWx1c2FnZSwgMCwgc2l6ZW9mKFdhbFVzYWdlKSk7 Ci0JV2FsVXNhZ2VBY2N1bURpZmYod2FsdXNhZ2UsICZwZ1dhbFVzYWdlLCAmc2F2ZV9wZ1dhbFVz YWdlKTsKLX0KKwlpZiAoIWFkZC0+bmVlZF9zdGFjaykKKwkJcmV0dXJuOwogCi0vKiBhY2N1bXVs YXRlIHdvcmsgZG9uZSBieSB3b3JrZXJzIGluIGxlYWRlcidzIHN0YXRzICovCi12b2lkCi1JbnN0 ckFjY3VtUGFyYWxsZWxRdWVyeShCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3YWx1 c2FnZSkKLXsKLQlCdWZmZXJVc2FnZUFkZCgmcGdCdWZmZXJVc2FnZSwgYnVmdXNhZ2UpOwotCVdh bFVzYWdlQWRkKCZwZ1dhbFVzYWdlLCB3YWx1c2FnZSk7CisJQnVmZmVyVXNhZ2VBZGQoJmRzdC0+ YnVmdXNhZ2UsICZhZGQtPmJ1ZnVzYWdlKTsKKwlXYWxVc2FnZUFkZCgmZHN0LT53YWx1c2FnZSwg JmFkZC0+d2FsdXNhZ2UpOwogfQogCiAvKiBkc3QgKz0gYWRkICovCi1zdGF0aWMgdm9pZAordm9p ZAogQnVmZmVyVXNhZ2VBZGQoQnVmZmVyVXNhZ2UgKmRzdCwgY29uc3QgQnVmZmVyVXNhZ2UgKmFk ZCkKIHsKIAlkc3QtPnNoYXJlZF9ibGtzX2hpdCArPSBhZGQtPnNoYXJlZF9ibGtzX2hpdDsKQEAg LTI5NSwzOSArNTcyLDkgQEAgQnVmZmVyVXNhZ2VBZGQoQnVmZmVyVXNhZ2UgKmRzdCwgY29uc3Qg QnVmZmVyVXNhZ2UgKmFkZCkKIAlJTlNUUl9USU1FX0FERChkc3QtPnRlbXBfYmxrX3dyaXRlX3Rp bWUsIGFkZC0+dGVtcF9ibGtfd3JpdGVfdGltZSk7CiB9CiAKLS8qIGRzdCArPSBhZGQgLSBzdWIg Ki8KKy8qIGRzdCArPSBhZGQgKi8KIHZvaWQKLUJ1ZmZlclVzYWdlQWNjdW1EaWZmKEJ1ZmZlclVz YWdlICpkc3QsCi0JCQkJCSBjb25zdCBCdWZmZXJVc2FnZSAqYWRkLAotCQkJCQkgY29uc3QgQnVm ZmVyVXNhZ2UgKnN1YikKLXsKLQlkc3QtPnNoYXJlZF9ibGtzX2hpdCArPSBhZGQtPnNoYXJlZF9i bGtzX2hpdCAtIHN1Yi0+c2hhcmVkX2Jsa3NfaGl0OwotCWRzdC0+c2hhcmVkX2Jsa3NfcmVhZCAr PSBhZGQtPnNoYXJlZF9ibGtzX3JlYWQgLSBzdWItPnNoYXJlZF9ibGtzX3JlYWQ7Ci0JZHN0LT5z aGFyZWRfYmxrc19kaXJ0aWVkICs9IGFkZC0+c2hhcmVkX2Jsa3NfZGlydGllZCAtIHN1Yi0+c2hh cmVkX2Jsa3NfZGlydGllZDsKLQlkc3QtPnNoYXJlZF9ibGtzX3dyaXR0ZW4gKz0gYWRkLT5zaGFy ZWRfYmxrc193cml0dGVuIC0gc3ViLT5zaGFyZWRfYmxrc193cml0dGVuOwotCWRzdC0+bG9jYWxf Ymxrc19oaXQgKz0gYWRkLT5sb2NhbF9ibGtzX2hpdCAtIHN1Yi0+bG9jYWxfYmxrc19oaXQ7Ci0J ZHN0LT5sb2NhbF9ibGtzX3JlYWQgKz0gYWRkLT5sb2NhbF9ibGtzX3JlYWQgLSBzdWItPmxvY2Fs X2Jsa3NfcmVhZDsKLQlkc3QtPmxvY2FsX2Jsa3NfZGlydGllZCArPSBhZGQtPmxvY2FsX2Jsa3Nf ZGlydGllZCAtIHN1Yi0+bG9jYWxfYmxrc19kaXJ0aWVkOwotCWRzdC0+bG9jYWxfYmxrc193cml0 dGVuICs9IGFkZC0+bG9jYWxfYmxrc193cml0dGVuIC0gc3ViLT5sb2NhbF9ibGtzX3dyaXR0ZW47 Ci0JZHN0LT50ZW1wX2Jsa3NfcmVhZCArPSBhZGQtPnRlbXBfYmxrc19yZWFkIC0gc3ViLT50ZW1w X2Jsa3NfcmVhZDsKLQlkc3QtPnRlbXBfYmxrc193cml0dGVuICs9IGFkZC0+dGVtcF9ibGtzX3dy aXR0ZW4gLSBzdWItPnRlbXBfYmxrc193cml0dGVuOwotCUlOU1RSX1RJTUVfQUNDVU1fRElGRihk c3QtPnNoYXJlZF9ibGtfcmVhZF90aW1lLAotCQkJCQkJICBhZGQtPnNoYXJlZF9ibGtfcmVhZF90 aW1lLCBzdWItPnNoYXJlZF9ibGtfcmVhZF90aW1lKTsKLQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYo ZHN0LT5zaGFyZWRfYmxrX3dyaXRlX3RpbWUsCi0JCQkJCQkgIGFkZC0+c2hhcmVkX2Jsa193cml0 ZV90aW1lLCBzdWItPnNoYXJlZF9ibGtfd3JpdGVfdGltZSk7Ci0JSU5TVFJfVElNRV9BQ0NVTV9E SUZGKGRzdC0+bG9jYWxfYmxrX3JlYWRfdGltZSwKLQkJCQkJCSAgYWRkLT5sb2NhbF9ibGtfcmVh ZF90aW1lLCBzdWItPmxvY2FsX2Jsa19yZWFkX3RpbWUpOwotCUlOU1RSX1RJTUVfQUNDVU1fRElG Rihkc3QtPmxvY2FsX2Jsa193cml0ZV90aW1lLAotCQkJCQkJICBhZGQtPmxvY2FsX2Jsa193cml0 ZV90aW1lLCBzdWItPmxvY2FsX2Jsa193cml0ZV90aW1lKTsKLQlJTlNUUl9USU1FX0FDQ1VNX0RJ RkYoZHN0LT50ZW1wX2Jsa19yZWFkX3RpbWUsCi0JCQkJCQkgIGFkZC0+dGVtcF9ibGtfcmVhZF90 aW1lLCBzdWItPnRlbXBfYmxrX3JlYWRfdGltZSk7Ci0JSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGRz dC0+dGVtcF9ibGtfd3JpdGVfdGltZSwKLQkJCQkJCSAgYWRkLT50ZW1wX2Jsa193cml0ZV90aW1l LCBzdWItPnRlbXBfYmxrX3dyaXRlX3RpbWUpOwotfQotCi0vKiBoZWxwZXIgZnVuY3Rpb25zIGZv ciBXQUwgdXNhZ2UgYWNjdW11bGF0aW9uICovCi1zdGF0aWMgdm9pZAotV2FsVXNhZ2VBZGQoV2Fs VXNhZ2UgKmRzdCwgV2FsVXNhZ2UgKmFkZCkKK1dhbFVzYWdlQWRkKFdhbFVzYWdlICpkc3QsIGNv bnN0IFdhbFVzYWdlICphZGQpCiB7CiAJZHN0LT53YWxfYnl0ZXMgKz0gYWRkLT53YWxfYnl0ZXM7 CiAJZHN0LT53YWxfcmVjb3JkcyArPSBhZGQtPndhbF9yZWNvcmRzOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggYjM4MTcwZjBmYmUuLmE4MjlkZGY1YWNiIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTkwNCw3ICs5MDQs NyBAQCBjcmVhdGVfZWRhdGFfZm9yX3JlbGF0aW9uKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVs KQogCSAqIFVzZSBSZWxhdGlvbiBvcGVuZWQgYnkgbG9naWNhbHJlcF9yZWxfb3BlbigpIGluc3Rl YWQgb2Ygb3BlbmluZyBpdAogCSAqIGFnYWluLgogCSAqLwotCUluaXRSZXN1bHRSZWxJbmZvKHJl c3VsdFJlbEluZm8sIHJlbC0+bG9jYWxyZWwsIDEsIE5VTEwsIDApOworCUluaXRSZXN1bHRSZWxJ bmZvKHJlc3VsdFJlbEluZm8sIHJlbC0+bG9jYWxyZWwsIDEsIE5VTEwsIDAsIE5VTEwpOwogCiAJ LyoKIAkgKiBXZSBwdXQgdGhlIFJlc3VsdFJlbEluZm8gaW4gdGhlIGVzX29wZW5lZF9yZXN1bHRf cmVsYXRpb25zIGxpc3QsIGV2ZW4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVm ZmVyL2J1Zm1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKaW5kZXgg M2UxYzM5MTYwZGIuLmNmNGY0MjQ2Y2EyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2J1ZmZlci9idWZtZ3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3Iu YwpAQCAtMTI2Niw5ICsxMjY2LDkgQEAgUGluQnVmZmVyRm9yQmxvY2soUmVsYXRpb24gcmVsLAog CWlmIChyZWwpCiAJewogCQkvKgotCQkgKiBXaGlsZSBwZ0J1ZmZlclVzYWdlJ3MgInJlYWQiIGNv dW50ZXIgaXNuJ3QgYnVtcGVkIHVubGVzcyB3ZSByZWFjaAotCQkgKiBXYWl0UmVhZEJ1ZmZlcnMo KSAoc28sIG5vdCBmb3IgaGl0cywgYW5kIG5vdCBmb3IgYnVmZmVycyB0aGF0IGFyZQotCQkgKiB6 ZXJvZWQgaW5zdGVhZCksIHRoZSBwZXItcmVsYXRpb24gc3RhdHMgYWx3YXlzIGNvdW50IHRoZW0u CisJCSAqIFdoaWxlIHRoZSBjdXJyZW50IGJ1ZmZlciB1c2FnZSAicmVhZCIgY291bnRlciBpc24n dCBidW1wZWQgdW5sZXNzCisJCSAqIHdlIHJlYWNoIFdhaXRSZWFkQnVmZmVycygpIChzbywgbm90 IGZvciBoaXRzLCBhbmQgbm90IGZvciBidWZmZXJzCisJCSAqIHRoYXQgYXJlIHplcm9lZCBpbnN0 ZWFkKSwgdGhlIHBlci1yZWxhdGlvbiBzdGF0cyBhbHdheXMgY291bnQgdGhlbS4KIAkJICovCiAJ CXBnc3RhdF9jb3VudF9idWZmZXJfcmVhZChyZWwpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvcGdzdGF0X2lvLmMKaW5kZXggZTM4MjlkN2ZlN2MuLmU3ZmM3ZjA3MWQ4IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8uYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8uYwpAQCAtMTE0LDkgKzExNCw5IEBAIHBnc3RhdF9w cmVwYXJlX2lvX3RpbWUoYm9vbCB0cmFja19pb19ndWMpCiAgKiBwZ19zdGF0X2RhdGFiYXNlIG9u bHkgY291bnRzIGJsb2NrIHJlYWQgYW5kIHdyaXRlIHRpbWVzLCB0aGVzZSBhcmUgZG9uZSBmb3IK ICAqIElPT1BfUkVBRCwgSU9PUF9XUklURSBhbmQgSU9PUF9FWFRFTkQuCiAgKgotICogcGdCdWZm ZXJVc2FnZSBpcyB1c2VkIGZvciBFWFBMQUlOLiAgcGdCdWZmZXJVc2FnZSBoYXMgd3JpdGUgYW5k IHJlYWQgc3RhdHMKLSAqIGZvciBzaGFyZWQsIGxvY2FsIGFuZCB0ZW1wb3JhcnkgYmxvY2tzLiAg cGdfc3RhdF9pbyBkb2VzIG5vdCB0cmFjayB0aGUKLSAqIGFjdGl2aXR5IG9mIHRlbXBvcmFyeSBi bG9ja3MsIHNvIHRoZXNlIGFyZSBpZ25vcmVkIGhlcmUuCisgKiBFeGVjdXRvciBpbnN0cnVtZW50 YXRpb24gaXMgdXNlZCBmb3IgRVhQTEFJTi4gQnVmZmVyIHVzYWdlIHRyYWNrZWQgdGhlcmUgaGFz CisgKiB3cml0ZSBhbmQgcmVhZCBzdGF0cyBmb3Igc2hhcmVkLCBsb2NhbCBhbmQgdGVtcG9yYXJ5 IGJsb2Nrcy4gcGdfc3RhdF9pbworICogZG9lcyBub3QgdHJhY2sgdGhlIGFjdGl2aXR5IG9mIHRl bXBvcmFyeSBibG9ja3MsIHNvIHRoZXNlIGFyZSBpZ25vcmVkIGhlcmUuCiAgKi8KIHZvaWQKIHBn c3RhdF9jb3VudF9pb19vcF90aW1lKElPT2JqZWN0IGlvX29iamVjdCwgSU9Db250ZXh0IGlvX2Nv bnRleHQsIElPT3AgaW9fb3AsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVj dXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCA0OTFjNDg4NjUw Ni4uNzg5NjFhZTA1OGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9y LmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApAQCAtMjMzLDYgKzIzMyw3 IEBAIEV4ZWNHZXRKdW5rQXR0cmlidXRlKFR1cGxlVGFibGVTbG90ICpzbG90LCBBdHRyTnVtYmVy IGF0dG5vLCBib29sICppc051bGwpCiAvKgogICogcHJvdG90eXBlcyBmcm9tIGZ1bmN0aW9ucyBp biBleGVjTWFpbi5jCiAgKi8KK3R5cGVkZWYgc3RydWN0IFF1ZXJ5SW5zdHJ1bWVudGF0aW9uIFF1 ZXJ5SW5zdHJ1bWVudGF0aW9uOwogZXh0ZXJuIHZvaWQgRXhlY3V0b3JTdGFydChRdWVyeURlc2Mg KnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBleHRlcm4gdm9pZCBzdGFuZGFyZF9FeGVjdXRvclN0 YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIGV4dGVybiB2b2lkIEV4ZWN1 dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLApAQCAtMjU0LDcgKzI1NSw4IEBAIGV4dGVybiB2 b2lkIEluaXRSZXN1bHRSZWxJbmZvKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCQkJ CQkJICBSZWxhdGlvbiByZXN1bHRSZWxhdGlvbkRlc2MsCiAJCQkJCQkJICBJbmRleCByZXN1bHRS ZWxhdGlvbkluZGV4LAogCQkJCQkJCSAgUmVzdWx0UmVsSW5mbyAqcGFydGl0aW9uX3Jvb3RfcnJp LAotCQkJCQkJCSAgaW50IGluc3RydW1lbnRfb3B0aW9ucyk7CisJCQkJCQkJICBpbnQgaW5zdHJ1 bWVudF9vcHRpb25zLAorCQkJCQkJCSAgUXVlcnlJbnN0cnVtZW50YXRpb24gKnFpbnN0cik7CiBl eHRlcm4gUmVzdWx0UmVsSW5mbyAqRXhlY0dldFRyaWdnZXJSZXN1bHRSZWwoRVN0YXRlICplc3Rh dGUsIE9pZCByZWxpZCwKIAkJCQkJCQkJCQkJICBSZXN1bHRSZWxJbmZvICpyb290UmVsSW5mbyk7 CiBleHRlcm4gTGlzdCAqRXhlY0dldEFuY2VzdG9yUmVzdWx0UmVscyhFU3RhdGUgKmVzdGF0ZSwg UmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbyk7CkBAIC0zMDEsNiArMzAzLDggQEAgZXh0ZXJu IHZvaWQgRXhlY1NldEV4ZWNQcm9jTm9kZShQbGFuU3RhdGUgKm5vZGUsIEV4ZWNQcm9jTm9kZU10 ZCBmdW5jdGlvbik7CiBleHRlcm4gTm9kZSAqTXVsdGlFeGVjUHJvY05vZGUoUGxhblN0YXRlICpu b2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNFbmROb2RlKFBsYW5TdGF0ZSAqbm9kZSk7CiBleHRlcm4g dm9pZCBFeGVjU2h1dGRvd25Ob2RlKFBsYW5TdGF0ZSAqbm9kZSk7CitleHRlcm4gdm9pZCBFeGVj RmluYWxpemVOb2RlSW5zdHJ1bWVudGF0aW9uKFBsYW5TdGF0ZSAqbm9kZSk7CitleHRlcm4gdm9p ZCBFeGVjRmluYWxpemVXb3JrZXJJbnN0cnVtZW50YXRpb24oUGxhblN0YXRlICpub2RlKTsKIGV4 dGVybiB2b2lkIEV4ZWNTZXRUdXBsZUJvdW5kKGludDY0IHR1cGxlc19uZWVkZWQsIFBsYW5TdGF0 ZSAqY2hpbGRfbm9kZSk7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5z dHJ1bWVudC5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCmluZGV4IDUyNjEz NTZkYmE2Li5mNWNjNmZiNjYyYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5z dHJ1bWVudC5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaApAQCAtMTMs NiArMTMsNyBAQAogI2lmbmRlZiBJTlNUUlVNRU5UX0gKICNkZWZpbmUgSU5TVFJVTUVOVF9ICiAK KyNpbmNsdWRlICJsaWIvaWxpc3QuaCIKICNpbmNsdWRlICJwb3J0YWJpbGl0eS9pbnN0cl90aW1l LmgiCiAKIApAQCAtNjgsMjkgKzY5LDkyIEBAIHR5cGVkZWYgZW51bSBJbnN0cnVtZW50T3B0aW9u CiB9IEluc3RydW1lbnRPcHRpb247CiAKIC8qCi0gKiBHZW5lcmFsIHB1cnBvc2UgaW5zdHJ1bWVu dGF0aW9uIHRoYXQgY2FuIGNhcHR1cmUgdGltZSBhbmQgV0FML2J1ZmZlciB1c2FnZQorICogSW5z dHJ1bWVudGF0aW9uIGJhc2UgY2xhc3MgZm9yIGNhcHR1cmluZyB0aW1lIGFuZCBXQUwvYnVmZmVy IHVzYWdlCiAgKgotICogSW5pdGlhbGl6ZWQgdGhyb3VnaCBJbnN0ckFsbG9jLCBmb2xsb3dlZCBi eSBvbmUgb3IgbW9yZSBjYWxscyB0byBhIHBhaXIgb2YKLSAqIEluc3RyU3RhcnQvSW5zdHJTdG9w IChhY3Rpdml0eSBpcyBtZWFzdXJlZCBpbiBiZXR3ZWVuKS4KKyAqIElmIHVzZWQgZGlyZWN0bHk6 CisgKiAtIEFsbG9jYXRlIG9uIHRoZSBzdGFjayBhbmQgemVybyBpbml0aWFsaXplIHRoZSBzdHJ1 Y3QKKyAqIC0gQ2FsbCBJbnN0ckluaXRPcHRpb25zIHRvIHNldCBpbnN0cnVtZW50YXRpb24gb3B0 aW9ucworICogLSBDYWxsIEluc3RyU3RhcnQgYmVmb3JlIHRoZSBhY3Rpdml0eSB5b3Ugd2FudCB0 byBtZWFzdXJlCisgKiAtIENhbGwgSW5zdHJTdG9wIC8gSW5zdHJTdG9wRmluYWxpemUgYWZ0ZXIg dGhlIGFjdGl2aXR5IHRvIGNhcHR1cmUgdG90YWxzCisgKgorICogSW5zdHJTdGFydC9JbnN0clN0 b3AgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcy4gVGhlIGxhc3Qgc3RvcCBjYWxsIG11c3QK KyAqIGJlIHRvIEluc3RyU3RvcEZpbmFsaXplIHRvIGVuc3VyZSBwYXJlbnQgc3RhY2sgZW50cmll cyBnZXQgdGhlIGFjY3VtdWxhdGVkCisgKiB0b3RhbHMuIElmIHRoZXJlIGlzIHJpc2sgb2YgdHJh bnNhY3Rpb24gYWJvcnRzIHlvdSBtdXN0IGNhbGwKKyAqIEluc3RyU3RvcEZpbmFsaXplIGluIGEg UEdfVFJZL1BHX0ZJTkFMTFkgYmxvY2sgdG8gYXZvaWQgY29ycnVwdGluZyB0aGUKKyAqIGluc3Ry dW1lbnRhdGlvbiBzdGFjay4KKyAqCisgKiBJbiBhIHF1ZXJ5IGNvbnRleHQgdXNlIFF1ZXJ5SW5z dHJ1bWVudGF0aW9uIGluc3RlYWQsIHdoaWNoIGhhbmRsZXMgYWJvcnRzCisgKiB1c2luZyB0aGUg cmVzb3VyY2Ugb3duZXIgbG9naWMuCiAgKi8KIHR5cGVkZWYgc3RydWN0IEluc3RydW1lbnRhdGlv bgogewogCS8qIFBhcmFtZXRlcnMgc2V0IGF0IGNyZWF0aW9uOiAqLwogCWJvb2wJCW5lZWRfdGlt ZXI7CQkvKiB0cnVlIGlmIHdlIG5lZWQgdGltZXIgZGF0YSAqLwotCWJvb2wJCW5lZWRfYnVmdXNh Z2U7CS8qIHRydWUgaWYgd2UgbmVlZCBidWZmZXIgdXNhZ2UgZGF0YSAqLwotCWJvb2wJCW5lZWRf d2FsdXNhZ2U7CS8qIHRydWUgaWYgd2UgbmVlZCBXQUwgdXNhZ2UgZGF0YSAqLworCWJvb2wJCW5l ZWRfc3RhY2s7CQkvKiB0cnVlIGlmIHdlIG5lZWQgV0FML2J1ZmZlciB1c2FnZSBkYXRhICovCiAJ LyogSW50ZXJuYWwgc3RhdGUga2VlcGluZzogKi8KKwlib29sCQlvbl9zdGFjazsJCS8qIHRydWUg aWYgY3VycmVudGx5IG9uIGluc3RyX3N0YWNrICovCiAJaW5zdHJfdGltZQlzdGFydHRpbWU7CQkv KiBzdGFydCB0aW1lIG9mIGxhc3QgSW5zdHJTdGFydCAqLwotCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdl X3N0YXJ0OyAvKiBidWZmZXIgdXNhZ2UgYXQgc3RhcnQgKi8KLQlXYWxVc2FnZQl3YWx1c2FnZV9z dGFydDsgLyogV0FMIHVzYWdlIGF0IHN0YXJ0ICovCiAJLyogQWNjdW11bGF0ZWQgc3RhdGlzdGlj czogKi8KIAlpbnN0cl90aW1lCXRvdGFsOwkJCS8qIHRvdGFsIHJ1bnRpbWUgKi8KIAlCdWZmZXJV c2FnZSBidWZ1c2FnZTsJCS8qIHRvdGFsIGJ1ZmZlciB1c2FnZSAqLwogCVdhbFVzYWdlCXdhbHVz YWdlOwkJLyogdG90YWwgV0FMIHVzYWdlICovCisJLyogQWJvcnQgaGFuZGxpbmc6IGxpbmsgaW4g cGFyZW50IFF1ZXJ5SW5zdHJ1bWVudGF0aW9uJ3MgdW5maW5hbGl6ZWQgbGlzdCAqLworCWRsaXN0 X25vZGUJdW5maW5hbGl6ZWRfZW50cnk7CiB9IEluc3RydW1lbnRhdGlvbjsKIAorLyoKKyAqIFF1 ZXJ5LXJlbGF0ZWQgaW5zdHJ1bWVudGF0aW9uIHRyYWNraW5nLgorICoKKyAqIFVzYWdlOgorICog LSBBbGxvY2F0ZSBvbiB0aGUgaGVhcCB1c2luZyBJbnN0clF1ZXJ5QWxsb2MgKHJlcXVpcmVkIGZv ciBhYm9ydCBoYW5kbGluZykKKyAqIC0gQ2FsbCBJbnN0clF1ZXJ5U3RhcnQgYmVmb3JlIHRoZSBh Y3Rpdml0eSB5b3Ugd2FudCB0byBtZWFzdXJlCisgKiAtIENhbGwgSW5zdHJRdWVyeVN0b3AgLyBJ bnN0clF1ZXJ5U3RvcEZpbmFsaXplIGFmdGVyd2FyZHMgdG8gY2FwdHVyZSB0b3RhbHMKKyAqCisg KiBJbnN0clF1ZXJ5U3RhcnQvSW5zdHJRdWVyeVN0b3AgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0 aW1lcy4gVGhlIGxhc3Qgc3RvcAorICogY2FsbCBtdXN0IGJlIHRvIEluc3RyUXVlcnlTdG9wRmlu YWxpemUgdG8gZW5zdXJlIHBhcmVudCBzdGFjayBlbnRyaWVzIGdldAorICogdGhlIGFjY3VtdWxh dGVkIHRvdGFscy4KKyAqCisgKiBVc2VzIHJlc291cmNlIG93bmVyIG1lY2hhbmlzbSBmb3IgaGFu ZGxpbmcgYWJvcnRzLCBhcyBzdWNoLCB0aGUgY2FsbGVyCisgKiAqbXVzdCogbm90IGV4aXQgb3V0 IG9mIHRoZSB0b3AgbGV2ZWwgdHJhbnNhY3Rpb24gYWZ0ZXIgaGF2aW5nIGNhbGxlZAorICogSW5z dHJRdWVyeVN0YXJ0LCB3aXRob3V0IGZpcnN0IGNhbGxpbmcgSW5zdHJRdWVyeVN0b3Agb3IKKyAq IEluc3RyUXVlcnlTdG9wRmluYWxpemUuIEluIHRoZSBjYXNlIG9mIGEgdHJhbnNhY3Rpb24gYWJv cnQsIGxvZ2ljIGVxdWl2YWxlbnQKKyAqIHRvIEluc3RyUXVlcnlTdG9wRmluYWxpemUgd2lsbCBi ZSBjYWxsZWQgYXV0b21hdGljYWxseS4KKyAqLworc3RydWN0IFJlc291cmNlT3duZXJEYXRhOwor dHlwZWRlZiBzdHJ1Y3QgUXVlcnlJbnN0cnVtZW50YXRpb24KK3sKKwlJbnN0cnVtZW50YXRpb24g aW5zdHI7CisKKwkvKiBPcmlnaW5hbCBpbnN0cnVtZW50X29wdGlvbnMgZmxhZ3MgdXNlZCB0byBj cmVhdGUgdGhpcyBpbnN0cnVtZW50YXRpb24gKi8KKwlpbnQJCQlpbnN0cnVtZW50X29wdGlvbnM7 CisKKwkvKiBSZXNvdXJjZSBvd25lciB1c2VkIGZvciBjbGVhbnVwIGZvciBhYm9ydHMgYmV0d2Vl biBJbnN0clN0YXJ0L0luc3RyU3RvcCAqLworCXN0cnVjdCBSZXNvdXJjZU93bmVyRGF0YSAqb3du ZXI7CisKKwkvKgorCSAqIERlZGljYXRlZCBtZW1vcnkgY29udGV4dCBmb3IgYWxsIGluc3RydW1l bnRhdGlvbiBhbGxvY2F0aW9ucyBiZWxvbmdpbmcKKwkgKiB0byB0aGlzIHF1ZXJ5IChub2RlIGlu c3RydW1lbnRhdGlvbiwgdHJpZ2dlciBpbnN0cnVtZW50YXRpb24sIGV0Yy4pLgorCSAqIEluaXRp YWxseSBhIGNoaWxkIG9mIFRvcE1lbW9yeUNvbnRleHQgc28gaXQgc3Vydml2ZXMgdHJhbnNhY3Rp b24gYWJvcnQKKwkgKiBmb3IgUmVzb3VyY2VPd25lciBjbGVhbnVwLCB3aGljaCBpcyB0aGVuIHJl YXNzaWduZWQgdG8gdGhlIGN1cnJlbnQKKwkgKiBtZW1vcnkgY29udGV4dCBvbiBJbnN0clF1ZXJ5 U3RvcEZpbmFsaXplLgorCSAqLworCU1lbW9yeUNvbnRleHQgaW5zdHJfY3h0OworCisJLyoKKwkg KiBDaGlsZCBlbnRyaWVzIHRoYXQgbmVlZCB0byBiZSBjbGVhbmVkIHVwIG9uIGFib3J0LCBzaW5j ZSB0aGV5IGFyZSBub3QKKwkgKiByZWdpc3RlcmVkIGFzIGEgcmVzb3VyY2Ugb3duZXIgdGhlbXNl bHZlcy4gQ29udGFpbnMgYm90aCBub2RlIGFuZAorCSAqIHRyaWdnZXIgaW5zdHJ1bWVudGF0aW9u IGVudHJpZXMgbGlua2VkIHZpYSBpbnN0ci51bmZpbmFsaXplZF9lbnRyeS4KKwkgKi8KKwlkbGlz dF9oZWFkCXVuZmluYWxpemVkX2VudHJpZXM7Cit9IFF1ZXJ5SW5zdHJ1bWVudGF0aW9uOworCiAv KgogICogU3BlY2lhbGl6ZWQgaW5zdHJ1bWVudGF0aW9uIGZvciBwZXItbm9kZSBleGVjdXRpb24g c3RhdGlzdGljcworICoKKyAqIFJlbGllcyBvbiBhbiBvdXRlciBRdWVyeUluc3RydW1lbnRhdGlv biBoYXZpbmcgYmVlbiBzZXQgdXAgdG8gaGFuZGxlIHRoZQorICogc3RhY2sgdXNlZCBmb3IgV0FM L2J1ZmZlciB1c2FnZSBzdGF0aXN0aWNzLCBhbmQgcmVsaWVzIG9uIGl0IGZvciBtYW5hZ2luZwor ICogYWJvcnRzLiBTb2xlbHkgaW50ZW5kZWQgZm9yIHRoZSBleGVjdXRvciBhbmQgYW55b25lIHJl cG9ydGluZyBhYm91dCBpdHMKKyAqIGFjdGl2aXRpZXMgKGUuZy4gRVhQTEFJTiBBTkFMWVpFKS4K ICAqLwogdHlwZWRlZiBzdHJ1Y3QgTm9kZUluc3RydW1lbnRhdGlvbgogewpAQCAtMTExLDYgKzE3 NSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBOb2RlSW5zdHJ1bWVudGF0aW9uCiAJZG91YmxlCQluZmls dGVyZWQyOwkJLyogIyBvZiB0dXBsZXMgcmVtb3ZlZCBieSAib3RoZXIiIHF1YWxzICovCiB9IE5v ZGVJbnN0cnVtZW50YXRpb247CiAKKy8qCisgKiBDYXJlIG11c3QgYmUgdGFrZW4gd2l0aCBhbnkg cG9pbnRlcnMgY29udGFpbmVkIHdpdGhpbiB0aGlzIHN0cnVjdCwgYXMgdGhpcworICogZ2V0cyBj b3BpZWQgYWNyb3NzIHByb2Nlc3NlcyBkdXJpbmcgcGFyYWxsZWwgcXVlcnkgZXhlY3V0aW9uLgor ICovCiB0eXBlZGVmIHN0cnVjdCBXb3JrZXJOb2RlSW5zdHJ1bWVudGF0aW9uCiB7CiAJaW50CQkJ bnVtX3dvcmtlcnM7CS8qICMgb2Ygc3RydWN0dXJlcyB0aGF0IGZvbGxvdyAqLwpAQCAtMTI0LDE1 ICsxOTIsMTA1IEBAIHR5cGVkZWYgc3RydWN0IFRyaWdnZXJJbnN0cnVtZW50YXRpb24KIAkJCQkJ CQkJICogd2FzIGZpcmVkICovCiB9IFRyaWdnZXJJbnN0cnVtZW50YXRpb247CiAKLWV4dGVybiBQ R0RMTElNUE9SVCBCdWZmZXJVc2FnZSBwZ0J1ZmZlclVzYWdlOworLyoKKyAqIER5bmFtaWMgYXJy YXktYmFzZWQgc3RhY2sgZm9yIHRyYWNraW5nIGN1cnJlbnQgV0FML2J1ZmZlciB1c2FnZSBjb250 ZXh0LgorICoKKyAqIFdoZW4gdGhlIHN0YWNrIGlzIGVtcHR5LCAnY3VycmVudCcgcG9pbnRzIHRv IGluc3RyX3RvcCB3aGljaCBhY2N1bXVsYXRlcworICogc2Vzc2lvbi1sZXZlbCB0b3RhbHMuCisg Ki8KK3R5cGVkZWYgc3RydWN0IEluc3RyU3RhY2tTdGF0ZQoreworCWludAkJCXN0YWNrX3NwYWNl OwkvKiBhbGxvY2F0ZWQgY2FwYWNpdHkgb2YgZW50cmllcyBhcnJheSAqLworCWludAkJCXN0YWNr X3NpemU7CQkvKiBjdXJyZW50IG51bWJlciBvZiBlbnRyaWVzICovCisKKwlJbnN0cnVtZW50YXRp b24gKiplbnRyaWVzOwkvKiBkeW5hbWljIGFycmF5IG9mIHBvaW50ZXJzICovCisJSW5zdHJ1bWVu dGF0aW9uICpjdXJyZW50OwkvKiB0b3Agb2Ygc3RhY2ssIG9yICZpbnN0cl90b3Agd2hlbiBlbXB0 eSAqLworfSBJbnN0clN0YWNrU3RhdGU7CisKIGV4dGVybiBQR0RMTElNUE9SVCBXYWxVc2FnZSBw Z1dhbFVzYWdlOwogCi1leHRlcm4gSW5zdHJ1bWVudGF0aW9uICpJbnN0ckFsbG9jKGludCBpbnN0 cnVtZW50X29wdGlvbnMpOworLyoKKyAqIFRoZSB0b3AgaW5zdHJ1bWVudGF0aW9uIHJlcHJlc2Vu dHMgYSBydW5uaW5nIHRvdGFsIG9mIHRoZSBjdXJyZW50IGJhY2tlbmQKKyAqIFdBTC9idWZmZXIg dXNhZ2UgaW5mb3JtYXRpb24uIFRoaXMgd2lsbCBub3QgYmUgdXBkYXRlZCBpbW1lZGlhdGVseSwg YnV0CisgKiByYXRoZXIgd2hlbiB0aGUgY3VycmVudCBzdGFjayBlbnRyeSBnZXRzIGFjY3VtdWxh dGVkIHdoaWNoIHR5cGljYWxseSBoYXBwZW5zCisgKiBhdCBxdWVyeSBlbmQuCisgKgorICogQ2Fy ZSBtdXN0IGJlIHRha2VuIHdoZW4gdXRpbGl6aW5nIHRoaXMgaW4gdGhlIHBhcmFsbGVsIHdvcmtl ciBjb250ZXh0OgorICogUGFyYWxsZWwgd29ya2VycyB3aWxsIHJlcG9ydCBiYWNrIHRoZWlyIGlu c3RydW1lbnRhdGlvbiB0byB0aGUgY2FsbGVyLAorICogYW5kIHRoaXMgZ2V0cyBhZGRlZCB0byB0 aGUgY2FsbGVyJ3Mgc3RhY2suIElmIHRoaXMgd2VyZSB0byBiZSB1c2VkIGluIHRoZQorICogc2hh cmVkIG1lbW9yeSBzdGF0cyBpbmZyYXN0cnVjdHVyZSBpdCB3b3VsZCBuZWVkIHRvIGJlIHNraXBw ZWQgb24gcGFyYWxsZWwKKyAqIHdvcmtlcnMgdG8gYXZvaWQgZG91YmxlIGNvdW50aW5nLgorICov CitleHRlcm4gUEdETExJTVBPUlQgSW5zdHJ1bWVudGF0aW9uIGluc3RyX3RvcDsKKworLyoKKyAq IFRoZSBpbnN0cnVtZW50YXRpb24gc3RhY2sgc3RhdGUuIFRoZSAnY3VycmVudCcgZmllbGQgcG9p bnRzIHRvIHRoZQorICogY3VycmVudGx5IGFjdGl2ZSBzdGFjayBlbnRyeSB0aGF0IGlzIGdldHRp bmcgdXBkYXRlZCBhcyBhY3Rpdml0eSBoYXBwZW5zLAorICogYW5kIHdpbGwgYmUgYWNjdW11bGF0 ZWQgdG8gcGFyZW50IHN0YWNrcyB3aGVuIGl0IGdldHMgZmluYWxpemVkIGJ5CisgKiBJbnN0clN0 b3AgKGZvciBub24tZXhlY3V0b3IgdXNlIGNhc2VzKSwgRXhlY0ZpbmFsaXplTm9kZUluc3RydW1l bnRhdGlvbgorICogKGV4ZWN1dG9yIGZpbmlzaCkgb3IgUmVzT3duZXJSZWxlYXNlSW5zdHJ1bWVu dGF0aW9uIG9uIGFib3J0LgorICovCitleHRlcm4gUEdETExJTVBPUlQgSW5zdHJTdGFja1N0YXRl IGluc3RyX3N0YWNrOworCitleHRlcm4gdm9pZCBJbnN0clN0YWNrR3Jvdyh2b2lkKTsKKworLyoK KyAqIFB1c2hlcyB0aGUgc3RhY2sgc28gdGhhdCBhbGwgV0FML2J1ZmZlciB1c2FnZSB1cGRhdGVz IGdvIHRvIHRoZSBwYXNzZWQgaW4KKyAqIGluc3RydW1lbnRhdGlvbiBlbnRyeS4KKyAqCisgKiBT ZWUgbm90ZSBvbiBJbnN0clBvcFN0YWNrIHJlZ2FyZGluZyBzYWZlIHVzZSBvZiB0aGVzZSBmdW5j dGlvbnMuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorSW5zdHJQdXNoU3RhY2soSW5zdHJ1bWVu dGF0aW9uICppbnN0cikKK3sKKwlpZiAodW5saWtlbHkoaW5zdHJfc3RhY2suc3RhY2tfc2l6ZSA9 PSBpbnN0cl9zdGFjay5zdGFja19zcGFjZSkpCisJCUluc3RyU3RhY2tHcm93KCk7CisKKwlpbnN0 cl9zdGFjay5lbnRyaWVzW2luc3RyX3N0YWNrLnN0YWNrX3NpemUrK10gPSBpbnN0cjsKKwlpbnN0 cl9zdGFjay5jdXJyZW50ID0gaW5zdHI7CisJaW5zdHItPm9uX3N0YWNrID0gdHJ1ZTsKK30KKwor LyoKKyAqIFBvcHMgdGhlIHN0YWNrIGVudHJ5IGJhY2sgdG8gdGhlIHByZXZpb3VzIG9uZSB0aGF0 IHdhcyBlZmZlY3RpdmUgYXQKKyAqIEluc3RyUHVzaFN0YWNrLgorICoKKyAqIENhbGxlcnMgbXVz dCBlbnN1cmUgdGhhdCBubyBpbnRlcm1lZGlhdGUgc3RhY2sgZW50cmllcyBhcmUgc2tpcHBlZCwg dG8KKyAqIGhhbmRsZSBhYm9ydHMgY29ycmVjdGx5LiBJZiB5b3UncmUgdGhpbmtpbmcgb2YgY2Fs bGluZyB0aGlzIGluIGEgUEdfRklOQUxMWQorICogYmxvY2ssIGNvbnNpZGVyIGluc3RlYWQgdXNp bmcgSW5zdHJTdGFydCArIEluc3RyU3RvcEZpbmFsaXplIHdoaWNoIGNhbiBza2lwCisgKiBpbnRl cm1lZGlhdGUgc3RhY2sgZW50cmllcy4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitJbnN0clBv cFN0YWNrKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCit7CisJQXNzZXJ0KGluc3RyX3N0YWNrLnN0 YWNrX3NpemUgPiAwKTsKKwlBc3NlcnQoaW5zdHJfc3RhY2suZW50cmllc1tpbnN0cl9zdGFjay5z dGFja19zaXplIC0gMV0gPT0gaW5zdHIpOworCWluc3RyX3N0YWNrLnN0YWNrX3NpemUtLTsKKwlp bnN0cl9zdGFjay5jdXJyZW50ID0gaW5zdHJfc3RhY2suc3RhY2tfc2l6ZSA+IDAKKwkJPyBpbnN0 cl9zdGFjay5lbnRyaWVzW2luc3RyX3N0YWNrLnN0YWNrX3NpemUgLSAxXQorCQk6ICZpbnN0cl90 b3A7CisJaW5zdHItPm9uX3N0YWNrID0gZmFsc2U7Cit9CisKIGV4dGVybiB2b2lkIEluc3RySW5p dE9wdGlvbnMoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgaW50IGluc3RydW1lbnRfb3B0aW9ucyk7 CiBleHRlcm4gdm9pZCBJbnN0clN0YXJ0KEluc3RydW1lbnRhdGlvbiAqaW5zdHIpOwogZXh0ZXJu IHZvaWQgSW5zdHJTdG9wKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpOworZXh0ZXJuIHZvaWQgSW5z dHJTdG9wRmluYWxpemUoSW5zdHJ1bWVudGF0aW9uICppbnN0cik7CitleHRlcm4gdm9pZCBJbnN0 ckZpbmFsaXplQ2hpbGQoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgSW5zdHJ1bWVudGF0aW9uICpw YXJlbnQpOworZXh0ZXJuIHZvaWQgSW5zdHJBY2N1bVN0YWNrKEluc3RydW1lbnRhdGlvbiAqZHN0 LCBJbnN0cnVtZW50YXRpb24gKmFkZCk7CiAKLWV4dGVybiBOb2RlSW5zdHJ1bWVudGF0aW9uICpJ bnN0ckFsbG9jTm9kZShpbnQgaW5zdHJ1bWVudF9vcHRpb25zLAorZXh0ZXJuIFF1ZXJ5SW5zdHJ1 bWVudGF0aW9uICpJbnN0clF1ZXJ5QWxsb2MoaW50IGluc3RydW1lbnRfb3B0aW9ucyk7CitleHRl cm4gdm9pZCBJbnN0clF1ZXJ5U3RhcnQoUXVlcnlJbnN0cnVtZW50YXRpb24gKmluc3RyKTsKK2V4 dGVybiB2b2lkIEluc3RyUXVlcnlTdG9wKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICppbnN0cik7Citl eHRlcm4gdm9pZCBJbnN0clF1ZXJ5U3RvcEZpbmFsaXplKFF1ZXJ5SW5zdHJ1bWVudGF0aW9uICpp bnN0cik7CitleHRlcm4gdm9pZCBJbnN0clF1ZXJ5UmVtZW1iZXJDaGlsZChRdWVyeUluc3RydW1l bnRhdGlvbiAqcGFyZW50LCBJbnN0cnVtZW50YXRpb24gKmluc3RyKTsKKworcGdfbm9kaXNjYXJk IGV4dGVybiBRdWVyeUluc3RydW1lbnRhdGlvbiAqSW5zdHJTdGFydFBhcmFsbGVsUXVlcnkodm9p ZCk7CitleHRlcm4gdm9pZCBJbnN0ckVuZFBhcmFsbGVsUXVlcnkoUXVlcnlJbnN0cnVtZW50YXRp b24gKnFpbnN0ciwgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2FnZSAqd2FsdXNhZ2UpOwor ZXh0ZXJuIHZvaWQgSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdl LCBXYWxVc2FnZSAqd2FsdXNhZ2UpOworCitleHRlcm4gTm9kZUluc3RydW1lbnRhdGlvbiAqSW5z dHJBbGxvY05vZGUoUXVlcnlJbnN0cnVtZW50YXRpb24gKnFpbnN0ciwKKwkJCQkJCQkJCQkgICBp bnQgaW5zdHJ1bWVudF9vcHRpb25zLAogCQkJCQkJCQkJCSAgIGJvb2wgYXN5bmNfbW9kZSk7CiBl eHRlcm4gdm9pZCBJbnN0ckluaXROb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RyLCBpbnQg aW5zdHJ1bWVudF9vcHRpb25zLAogCQkJCQkJICBib29sIGFzeW5jX21vZGUpOwpAQCAtMTQyLDM1 ICszMDAsMzYgQEAgZXh0ZXJuIHZvaWQgSW5zdHJVcGRhdGVUdXBsZUNvdW50KE5vZGVJbnN0cnVt ZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcyk7CiBleHRlcm4gdm9pZCBJbnN0ckVuZExv b3AoTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHIpOwogZXh0ZXJuIHZvaWQgSW5zdHJBZ2dOb2Rl KE5vZGVJbnN0cnVtZW50YXRpb24gKmRzdCwgTm9kZUluc3RydW1lbnRhdGlvbiAqYWRkKTsKIAot ZXh0ZXJuIFRyaWdnZXJJbnN0cnVtZW50YXRpb24gKkluc3RyQWxsb2NUcmlnZ2VyKGludCBuLCBp bnQgaW5zdHJ1bWVudF9vcHRpb25zKTsKK2V4dGVybiBUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICpJ bnN0ckFsbG9jVHJpZ2dlcihRdWVyeUluc3RydW1lbnRhdGlvbiAqcWluc3RyLAorCQkJCQkJCQkJ CQkJIGludCBpbnN0cnVtZW50X29wdGlvbnMsIGludCBuKTsKIGV4dGVybiB2b2lkIEluc3RyU3Rh cnRUcmlnZ2VyKFRyaWdnZXJJbnN0cnVtZW50YXRpb24gKnRnaW5zdHIpOwogZXh0ZXJuIHZvaWQg SW5zdHJTdG9wVHJpZ2dlcihUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2luc3RyLCBpbnQ2NCBm aXJpbmdzKTsKIAotZXh0ZXJuIHZvaWQgSW5zdHJTdGFydFBhcmFsbGVsUXVlcnkodm9pZCk7Ci1l eHRlcm4gdm9pZCBJbnN0ckVuZFBhcmFsbGVsUXVlcnkoQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBX YWxVc2FnZSAqd2FsdXNhZ2UpOwotZXh0ZXJuIHZvaWQgSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnko QnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2FnZSAqd2FsdXNhZ2UpOwotZXh0ZXJuIHZvaWQg QnVmZmVyVXNhZ2VBY2N1bURpZmYoQnVmZmVyVXNhZ2UgKmRzdCwKLQkJCQkJCQkJIGNvbnN0IEJ1 ZmZlclVzYWdlICphZGQsIGNvbnN0IEJ1ZmZlclVzYWdlICpzdWIpOworZXh0ZXJuIHZvaWQgQnVm ZmVyVXNhZ2VBZGQoQnVmZmVyVXNhZ2UgKmRzdCwgY29uc3QgQnVmZmVyVXNhZ2UgKmFkZCk7Citl eHRlcm4gdm9pZCBXYWxVc2FnZUFkZChXYWxVc2FnZSAqZHN0LCBjb25zdCBXYWxVc2FnZSAqYWRk KTsKIGV4dGVybiB2b2lkIFdhbFVzYWdlQWNjdW1EaWZmKFdhbFVzYWdlICpkc3QsIGNvbnN0IFdh bFVzYWdlICphZGQsCiAJCQkJCQkJICBjb25zdCBXYWxVc2FnZSAqc3ViKTsKIAogI2RlZmluZSBJ TlNUUl9CVUZVU0FHRV9JTkNSKGZsZCkgZG8geyBcCi0JCXBnQnVmZmVyVXNhZ2UuZmxkKys7IFwK KwkJaW5zdHJfc3RhY2suY3VycmVudC0+YnVmdXNhZ2UuZmxkKys7IFwKIAl9IHdoaWxlKDApCiAj ZGVmaW5lIElOU1RSX0JVRlVTQUdFX0FERChmbGQsdmFsKSBkbyB7IFwKLQkJcGdCdWZmZXJVc2Fn ZS5mbGQgKz0gKHZhbCk7IFwKKwkJaW5zdHJfc3RhY2suY3VycmVudC0+YnVmdXNhZ2UuZmxkICs9 ICh2YWwpOyBcCiAJfSB3aGlsZSgwKQogI2RlZmluZSBJTlNUUl9CVUZVU0FHRV9USU1FX0FERChm bGQsdmFsKSBkbyB7IFwKLQlJTlNUUl9USU1FX0FERChwZ0J1ZmZlclVzYWdlLmZsZCwgdmFsKTsg XAorCUlOU1RSX1RJTUVfQUREKGluc3RyX3N0YWNrLmN1cnJlbnQtPmJ1ZnVzYWdlLmZsZCwgdmFs KTsgXAogCX0gd2hpbGUgKDApCiAjZGVmaW5lIElOU1RSX0JVRlVTQUdFX1RJTUVfQUNDVU1fRElG RihmbGQsZW5kdmFsLHN0YXJ0dmFsKSBkbyB7IFwKLQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYocGdC dWZmZXJVc2FnZS5mbGQsIGVuZHZhbCwgc3RhcnR2YWwpOyBcCisJSU5TVFJfVElNRV9BQ0NVTV9E SUZGKGluc3RyX3N0YWNrLmN1cnJlbnQtPmJ1ZnVzYWdlLmZsZCwgZW5kdmFsLCBzdGFydHZhbCk7 IFwKIAl9IHdoaWxlICgwKQorCiAjZGVmaW5lIElOU1RSX1dBTFVTQUdFX0lOQ1IoZmxkKSBkbyB7 IFwKIAkJcGdXYWxVc2FnZS5mbGQrKzsgXAorCQlpbnN0cl9zdGFjay5jdXJyZW50LT53YWx1c2Fn ZS5mbGQrKzsgXAogCX0gd2hpbGUoMCkKICNkZWZpbmUgSU5TVFJfV0FMVVNBR0VfQUREKGZsZCx2 YWwpIGRvIHsgXAogCQlwZ1dhbFVzYWdlLmZsZCArPSAodmFsKTsgXAorCQlpbnN0cl9zdGFjay5j dXJyZW50LT53YWx1c2FnZS5mbGQgKz0gKHZhbCk7IFwKIAl9IHdoaWxlKDApCiAKICNlbmRpZgkJ CQkJCQkvKiBJTlNUUlVNRU5UX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggM2VjYWU3NTUy ZmMuLjQ5MWM0ZTI3MmQ4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNTQsNiArNTQsNyBAQCB0 eXBlZGVmIHN0cnVjdCBJbnN0cnVtZW50YXRpb24gSW5zdHJ1bWVudGF0aW9uOwogdHlwZWRlZiBz dHJ1Y3QgcGFpcmluZ2hlYXAgcGFpcmluZ2hlYXA7CiB0eXBlZGVmIHN0cnVjdCBQbGFuU3RhdGUg UGxhblN0YXRlOwogdHlwZWRlZiBzdHJ1Y3QgUXVlcnlFbnZpcm9ubWVudCBRdWVyeUVudmlyb25t ZW50OwordHlwZWRlZiBzdHJ1Y3QgUXVlcnlJbnN0cnVtZW50YXRpb24gUXVlcnlJbnN0cnVtZW50 YXRpb247CiB0eXBlZGVmIHN0cnVjdCBSZWxhdGlvbkRhdGEgKlJlbGF0aW9uOwogdHlwZWRlZiBS ZWxhdGlvbiAqUmVsYXRpb25QdHI7CiB0eXBlZGVmIHN0cnVjdCBTY2FuS2V5RGF0YSBTY2FuS2V5 RGF0YTsKQEAgLTc1NCw2ICs3NTUsNyBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAogCWludAkJ CWVzX3RvcF9lZmxhZ3M7CS8qIGVmbGFncyBwYXNzZWQgdG8gRXhlY3V0b3JTdGFydCAqLwogCWlu dAkJCWVzX2luc3RydW1lbnQ7CS8qIE9SIG9mIEluc3RydW1lbnRPcHRpb24gZmxhZ3MgKi8KKwlR dWVyeUluc3RydW1lbnRhdGlvbiAqZXNfcXVlcnlfaW5zdHI7CS8qIHF1ZXJ5LWxldmVsIGluc3Ry dW1lbnRhdGlvbiAqLwogCWJvb2wJCWVzX2ZpbmlzaGVkOwkvKiB0cnVlIHdoZW4gRXhlY3V0b3JG aW5pc2ggaXMgZG9uZSAqLwogCiAJTGlzdAkgICAqZXNfZXhwcmNvbnRleHRzOwkvKiBMaXN0IG9m IEV4cHJDb250ZXh0cyB3aXRoaW4gRVN0YXRlICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91 dGlscy9yZXNvd25lci5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVzb3duZXIuaAppbmRleCBlYjYw MzNiNGZkYi4uNTQ2M2JjOTIxZjAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3Jlc293 bmVyLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVzb3duZXIuaApAQCAtNzUsNiArNzUsNyBA QCB0eXBlZGVmIHVpbnQzMiBSZXNvdXJjZVJlbGVhc2VQcmlvcml0eTsKICNkZWZpbmUgUkVMRUFT RV9QUklPX1NOQVBTSE9UX1JFRlMJCQk1MDAKICNkZWZpbmUgUkVMRUFTRV9QUklPX0ZJTEVTCQkJ CQk2MDAKICNkZWZpbmUgUkVMRUFTRV9QUklPX1dBSVRFVkVOVFNFVFMJCQk3MDAKKyNkZWZpbmUg UkVMRUFTRV9QUklPX0lOU1RSVU1FTlRBVElPTgkJODAwCiAKIC8qIDAgaXMgY29uc2lkZXJlZCBp bnZhbGlkICovCiAjZGVmaW5lIFJFTEVBU0VfUFJJT19GSVJTVAkJCQkJMQpkaWZmIC0tZ2l0IGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdAppbmRleCAzNWFjZGE1OTg1MS4uYjYzOWMzNjBjZWEgMTAwNjQ0Ci0tLSBhL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CkBAIC0xMzU3LDYgKzEzNTcsNyBAQCBJbmplY3Rpb25Qb2ludFNoYXJlZFN0 YXRlCiBJbmplY3Rpb25Qb2ludHNDdGwKIElubGluZUNvZGVCbG9jawogSW5zZXJ0U3RtdAorSW5z dHJTdGFja1N0YXRlCiBJbnN0cnVtZW50YXRpb24KIEludDEyOEFnZ1N0YXRlCiBJbnQ4VHJhbnNU eXBlRGF0YQpAQCAtMjQ3OSw2ICsyNDgwLDcgQEAgUXVlcnlDb21wbGV0aW9uCiBRdWVyeURlc2MK IFF1ZXJ5RW52aXJvbm1lbnQKIFF1ZXJ5SW5mbworUXVlcnlJbnN0cnVtZW50YXRpb24KIFF1ZXJ5 SXRlbQogUXVlcnlJdGVtVHlwZQogUXVlcnlNb2RlCi0tIAoyLjQ3LjEKCg== --00000000000045175b064ec7b858 Content-Type: application/octet-stream; name="v15-0009-Add-test_session_buffer_usage-test-module.patch" Content-Disposition: attachment; filename="v15-0009-Add-test_session_buffer_usage-test-module.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnmzxbqd9 RnJvbSBjOTVmMDI0NmIyM2YxNDIwNWJiNWViNjgwMTRiOGQwODBjMDFjYzAzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDcgTWFyIDIwMjYgMTE6NDY6NDEgLTA4MDAKU3ViamVjdDogW1BBVENIIHYxNSA5LzldIEFk ZCB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlIHRlc3QgbW9kdWxlCgpUaGlzIGlzIGludGVuZGVk IGZvciB0ZXN0aW5nIGluc3RydW1lbnRhdGlvbiByZWxhdGVkIGxvZ2ljIGFzIGl0IHBlcnRhaW5z CnRvIHRoZSB0b3AgbGV2ZWwgc3RhY2sgdGhhdCBpcyBtYWludGFpbmVkIGFzIGEgcnVubmluZyB0 b3RhbC4gVGhlcmUgaXMKY3VycmVudGx5IG5vIGluLWNvcmUgdXNlciB0aGF0IHV0aWxpemVzIHRo ZSB0b3AtbGV2ZWwgdmFsdWVzIGluIHRoaXMKbWFubmVyLCBhbmQgZXNwZWNpYWxseSBkdXJpbmcg YWJvcnQgc2l0dWF0aW9ucyB0aGlzIGhlbHBzIGVuc3VyZSB3ZSBkb24ndApsb3NlIGFjdGl2aXR5 IGR1ZSB0byBpbmNvcnJlY3QgaGFuZGxpbmcgb2YgdW5maW5hbGl6ZWQgbm9kZSBzdGFja3MuCi0t LQogc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICB8ICAgMSArCiAu Li4vdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS9NYWtlZmlsZSAgICAgICAgfCAgMjMgKysKIC4u Li9leHBlY3RlZC90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLm91dCAgICB8IDM0MiArKysrKysr KysrKysrKysrKysKIC4uLi90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL21lc29uLmJ1aWxkICAg ICB8ICAzMyArKwogLi4uL3NxbC90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLnNxbCAgICAgICAg IHwgMjQ1ICsrKysrKysrKysrKysKIC4uLi90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLS0xLjAu c3FsICAgICAgICB8ICAzMSArKwogLi4uL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UuYyAgICAg ICAgICAgICAgIHwgIDk1ICsrKysrCiAuLi4vdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS5jb250 cm9sICAgICAgICAgfCAgIDUgKwogOSBmaWxlcyBjaGFuZ2VkLCA3NzYgaW5zZXJ0aW9ucygrKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1ZmZlcl91 c2FnZS9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9z ZXNzaW9uX2J1ZmZlcl91c2FnZS9leHBlY3RlZC90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLm91 dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1ZmZl cl91c2FnZS9tZXNvbi5idWlsZAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMv dGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS9zcWwvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS5z cWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2Vzc2lvbl9idWZm ZXJfdXNhZ2UvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS0tMS4wLnNxbAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS90ZXN0X3Nl c3Npb25fYnVmZmVyX3VzYWdlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVz L3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS5jb250 cm9sCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZSBiL3NyYy90ZXN0L21v ZHVsZXMvTWFrZWZpbGUKaW5kZXggZjFiMDRjOTk5NjkuLmU3NGUzMjc3MDFiIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZp bGUKQEAgLTQ4LDYgKzQ4LDcgQEAgU1VCRElSUyA9IFwKIAkJICB0ZXN0X3Jlc293bmVyIFwKIAkJ ICB0ZXN0X3Jsc19ob29rcyBcCiAJCSAgdGVzdF9zYXNscHJlcCBcCisJCSAgdGVzdF9zZXNzaW9u X2J1ZmZlcl91c2FnZSBcCiAJCSAgdGVzdF9zaG1lbSBcCiAJCSAgdGVzdF9zaG1fbXEgXAogCQkg IHRlc3Rfc2xydSBcCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkIGIv c3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZAppbmRleCBmYzk5NTUyZDlhYi4uNWM0NmVjMTM5 MTggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rl c3QvbW9kdWxlcy9tZXNvbi5idWlsZApAQCAtNDksNiArNDksNyBAQCBzdWJkaXIoJ3Rlc3RfcmVn ZXgnKQogc3ViZGlyKCd0ZXN0X3Jlc293bmVyJykKIHN1YmRpcigndGVzdF9ybHNfaG9va3MnKQog c3ViZGlyKCd0ZXN0X3Nhc2xwcmVwJykKK3N1YmRpcigndGVzdF9zZXNzaW9uX2J1ZmZlcl91c2Fn ZScpCiBzdWJkaXIoJ3Rlc3Rfc2htZW0nKQogc3ViZGlyKCd0ZXN0X3NobV9tcScpCiBzdWJkaXIo J3Rlc3Rfc2xydScpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2Vzc2lvbl9i dWZmZXJfdXNhZ2UvTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2Vzc2lvbl9idWZm ZXJfdXNhZ2UvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LjEyNTJiMjIyY2I5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nl c3Npb25fYnVmZmVyX3VzYWdlL01ha2VmaWxlCkBAIC0wLDAgKzEsMjMgQEAKKyMgc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL01ha2VmaWxlCisKK01PRFVMRV9iaWcg PSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlCitPQkpTID0gXAorCSQoV0lOMzJSRVMpIFwKKwl0 ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLm8KKworRVhURU5TSU9OID0gdGVzdF9zZXNzaW9uX2J1 ZmZlcl91c2FnZQorREFUQSA9IHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UtLTEuMC5zcWwKK1BH RklMRURFU0MgPSAidGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSAtIHNob3cgYnVmZmVyIHVzYWdl IHN0YXRpc3RpY3MgZm9yIHRoZSBjdXJyZW50IHNlc3Npb24iCisKK1JFR1JFU1MgPSB0ZXN0X3Nl c3Npb25fYnVmZmVyX3VzYWdlCisKK2lmZGVmIFVTRV9QR1hTCitQR19DT05GSUcgPSBwZ19jb25m aWcKK1BHWFMgOj0gJChzaGVsbCAkKFBHX0NPTkZJRykgLS1wZ3hzKQoraW5jbHVkZSAkKFBHWFMp CitlbHNlCitzdWJkaXIgPSBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNh Z2UKK3RvcF9idWlsZGRpciA9IC4uLy4uLy4uLy4uCitpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9z cmMvTWFrZWZpbGUuZ2xvYmFsCitpbmNsdWRlICQodG9wX3NyY2RpcikvY29udHJpYi9jb250cmli LWdsb2JhbC5taworZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNz aW9uX2J1ZmZlcl91c2FnZS9leHBlY3RlZC90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLm91dCBi L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS9leHBlY3RlZC90ZXN0 X3Nlc3Npb25fYnVmZmVyX3VzYWdlLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uNWY3ZDM0OTg3MWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvZXhwZWN0ZWQvdGVzdF9zZXNzaW9uX2J1ZmZlcl91 c2FnZS5vdXQKQEAgLTAsMCArMSwzNDIgQEAKK0xPQUQgJ3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNh Z2UnOworQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlOworLS0gVmVy aWZ5IGFsbCBjb2x1bW5zIGFyZSBub24tbmVnYXRpdmUKK1NFTEVDVCBjb3VudCgqKSA9IDEgQVMg b2sgRlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCkKK1dIRVJFIHNoYXJlZF9ibGtzX2hp dCA+PSAwIEFORCBzaGFyZWRfYmxrc19yZWFkID49IDAKKyAgQU5EIHNoYXJlZF9ibGtzX2RpcnRp ZWQgPj0gMCBBTkQgc2hhcmVkX2Jsa3Nfd3JpdHRlbiA+PSAwCisgIEFORCBsb2NhbF9ibGtzX2hp dCA+PSAwIEFORCBsb2NhbF9ibGtzX3JlYWQgPj0gMAorICBBTkQgbG9jYWxfYmxrc19kaXJ0aWVk ID49IDAgQU5EIGxvY2FsX2Jsa3Nfd3JpdHRlbiA+PSAwCisgIEFORCB0ZW1wX2Jsa3NfcmVhZCA+ PSAwIEFORCB0ZW1wX2Jsa3Nfd3JpdHRlbiA+PSAwCisgIEFORCBzaGFyZWRfYmxrX3JlYWRfdGlt ZSA+PSAwIEFORCBzaGFyZWRfYmxrX3dyaXRlX3RpbWUgPj0gMAorICBBTkQgbG9jYWxfYmxrX3Jl YWRfdGltZSA+PSAwIEFORCBsb2NhbF9ibGtfd3JpdGVfdGltZSA+PSAwCisgIEFORCB0ZW1wX2Js a19yZWFkX3RpbWUgPj0gMCBBTkQgdGVtcF9ibGtfd3JpdGVfdGltZSA+PSAwOworIG9rIAorLS0t LQorIHQKKygxIHJvdykKKworLS0gVmVyaWZ5IGNvdW50ZXJzIGluY3JlYXNlIGFmdGVyIGJ1ZmZl ciBhY3Rpdml0eQorU0VMRUNUIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKKyB0 ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKK0NSRUFURSBURU1QIFRBQkxFIHRlc3RfYnVmX2FjdGl2 aXR5IChpZCBpbnQsIGRhdGEgdGV4dCk7CitJTlNFUlQgSU5UTyB0ZXN0X2J1Zl9hY3Rpdml0eSBT RUxFQ1QgaSwgcmVwZWF0KCd4JywgMTAwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBB UyBpOworU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF9idWZfYWN0aXZpdHk7CisgY291bnQgCist LS0tLS0tCisgIDEwMDAKKygxIHJvdykKKworU0VMRUNUIGxvY2FsX2Jsa3NfaGl0ICsgbG9jYWxf Ymxrc19yZWFkID4gMCBBUyBibG9ja3NfaW5jcmVhc2VkCitGUk9NIHRlc3Rfc2Vzc2lvbl9idWZm ZXJfdXNhZ2UoKTsKKyBibG9ja3NfaW5jcmVhc2VkIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgdAor KDEgcm93KQorCitEUk9QIFRBQkxFIHRlc3RfYnVmX2FjdGl2aXR5OworLS0gUGFyYWxsZWwgcXVl cnkgdGVzdAorQ1JFQVRFIFRBQkxFIHBhcl9kY190YWIgKGEgaW50LCBiIGNoYXIoMjAwKSk7CitJ TlNFUlQgSU5UTyBwYXJfZGNfdGFiIFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAyMDApIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDUwMDApIEFTIGk7CitTRUxFQ1QgY291bnQoKikgRlJPTSBwYXJfZGNf dGFiOworIGNvdW50IAorLS0tLS0tLQorICA1MDAwCisoMSByb3cpCisKKy0tIE1lYXN1cmUgc2Vy aWFsIHNjYW4gZGVsdGEgKGxlYWRlciBkb2VzIGFsbCB0aGUgd29yaykKK1NFVCBtYXhfcGFyYWxs ZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKK1NFTEVDVCB0ZXN0X3Nlc3Npb25fYnVmZmVyX3Vz YWdlX3Jlc2V0KCk7CisgdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikg RlJPTSBwYXJfZGNfdGFiOworIGNvdW50IAorLS0tLS0tLQorICA1MDAwCisoMSByb3cpCisKK0NS RUFURSBURU1QIFRBQkxFIGRjX3NlcmlhbF9yZXN1bHQgQVMKK1NFTEVDVCBzaGFyZWRfYmxrc19o aXQgQVMgc2VyaWFsX2RlbHRhIEZST00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOworLS0g TWVhc3VyZSBwYXJhbGxlbCBzY2FuIGRlbHRhIHdpdGggbGVhZGVyIE5PVCBwYXJ0aWNpcGF0aW5n IGluIHNjYW5uaW5nLgorLS0gV29ya2VycyBkbyBhbGwgdGFibGUgc2Nhbm5pbmc7IGxlYWRlciBv bmx5IHJ1bnMgdGhlIEdhdGhlciBub2RlLgorU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOwor U0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3QgPSAwOworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2Fu X3NpemUgPSAwOworU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworU0VU IHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uID0gb2ZmOworU0VMRUNUIHRlc3Rfc2Vzc2lv bl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKKyB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0 IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVD VCBjb3VudCgqKSBGUk9NIHBhcl9kY190YWI7CisgY291bnQgCistLS0tLS0tCisgIDUwMDAKKygx IHJvdykKKworLS0gQ29uZmlybSB3ZSBnb3QgYSBzaW1pbGFyIGhpdCBjb3VudGVyIHRocm91Z2gg cGFyYWxsZWwgd29ya2VyIGFjY3VtdWxhdGlvbgorU0VMRUNUIHNoYXJlZF9ibGtzX2hpdCA+IHMu c2VyaWFsX2RlbHRhIC8gMiBBTkQgc2hhcmVkX2Jsa3NfaGl0IDwgcy5zZXJpYWxfZGVsdGEgKiAy CisgICAgICAgQVMgbGVhZGVyX2J1ZmZlcnNfbWF0Y2gKK0ZST00gdGVzdF9zZXNzaW9uX2J1ZmZl cl91c2FnZSgpLCBkY19zZXJpYWxfcmVzdWx0IHM7CisgbGVhZGVyX2J1ZmZlcnNfbWF0Y2ggCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitSRVNFVCBwYXJhbGxlbF9zZXR1 cF9jb3N0OworUkVTRVQgcGFyYWxsZWxfdHVwbGVfY29zdDsKK1JFU0VUIG1pbl9wYXJhbGxlbF90 YWJsZV9zY2FuX3NpemU7CitSRVNFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyOwor UkVTRVQgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb247CitEUk9QIFRBQkxFIHBhcl9kY190 YWIsIGRjX3NlcmlhbF9yZXN1bHQ7CistLQorLS0gQWJvcnQvZXhjZXB0aW9uIHRlc3RzOiB2ZXJp ZnkgYnVmZmVyIHVzYWdlIHN1cnZpdmVzIHZhcmlvdXMgZXJyb3IgcGF0aHMuCistLQorLS0gUm9s bGVkLWJhY2sgZGl2aWRlLWJ5LXplcm8gdW5kZXIgRVhQTEFJTiBBTkFMWVpFCitDUkVBVEUgVEVN UCBUQUJMRSBleGNfdGFiIChhIGludCwgYiBjaGFyKDIwKSk7CitTRUxFQ1QgdGVzdF9zZXNzaW9u X2J1ZmZlcl91c2FnZV9yZXNldCgpOworIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGKQorICAgICAgICBXSVRIIGlucyBBUyAoSU5T RVJUIElOVE8gZXhjX3RhYiBWQUxVRVMgKDEsICdhYWEnKSBSRVRVUk5JTkcgYSkKKyAgICAgICAg U0VMRUNUIGEgLyAwIEZST00gaW5zOworRVJST1I6ICBkaXZpc2lvbiBieSB6ZXJvCitTRUxFQ1Qg bG9jYWxfYmxrc19kaXJ0aWVkID4gMCBBUyBleGNlcHRpb25fYnVmZmVyc192aXNpYmxlCitGUk9N IHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKTsKKyBleGNlcHRpb25fYnVmZmVyc192aXNpYmxl IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitEUk9QIFRBQkxF IGV4Y190YWI7CistLSBVbmlxdWUgY29uc3RyYWludCB2aW9sYXRpb24gaW4gcmVndWxhciBxdWVy eQorQ1JFQVRFIFRFTVAgVEFCTEUgdW5pcXVlX3RhYiAoYSBpbnQgVU5JUVVFLCBiIGNoYXIoMjAp KTsKK0lOU0VSVCBJTlRPIHVuaXF1ZV90YWIgVkFMVUVTICgxLCAnZmlyc3QnKTsKK1NFTEVDVCB0 ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CisgdGVzdF9zZXNzaW9uX2J1ZmZlcl91 c2FnZV9yZXNldCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitJTlNFUlQgSU5UTyB1bmlxdWVfdGFiIFZBTFVFUyAoMSwgJ2R1cGxpY2F0ZScpOworRVJS T1I6ICBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50ICJ1bmlx dWVfdGFiX2Ffa2V5IgorREVUQUlMOiAgS2V5IChhKT0oMSkgYWxyZWFkeSBleGlzdHMuCitTRUxF Q1QgbG9jYWxfYmxrc19oaXQgPiAwIEFTIHVuaXF1ZV92aW9sYXRpb25fYnVmZmVyc192aXNpYmxl CitGUk9NIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKTsKKyB1bmlxdWVfdmlvbGF0aW9uX2J1 ZmZlcnNfdmlzaWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0Ciso MSByb3cpCisKK0RST1AgVEFCTEUgdW5pcXVlX3RhYjsKKy0tIENhdWdodCBleGNlcHRpb24gaW4g UEwvcGdTUUwgc3VidHJhbnNhY3Rpb24gKEJFR0lOLi4uRVhDRVBUSU9OKQorQ1JFQVRFIFRFTVAg VEFCTEUgc3VieGFjdF90YWIgKGEgaW50LCBiIGNoYXIoMjApKTsKK0NSRUFURSBGVU5DVElPTiBz dWJ4YWN0X2V4Y19mdW5jKCkgUkVUVVJOUyB0ZXh0IEFTICQkCitCRUdJTgorICAgIEJFR0lOCisg ICAgICAgIEVYRUNVVEUgJ0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMsIENPU1RTIE9GRikKKyAg ICAgICAgICAgIFdJVEggaW5zIEFTIChJTlNFUlQgSU5UTyBzdWJ4YWN0X3RhYiBWQUxVRVMgKDEs ICcnYWFhJycpIFJFVFVSTklORyBhKQorICAgICAgICAgICAgU0VMRUNUIGEgLyAwIEZST00gaW5z JzsKKyAgICBFWENFUFRJT04gV0hFTiBkaXZpc2lvbl9ieV96ZXJvIFRIRU4KKyAgICAgICAgUkVU VVJOICdjYXVnaHQnOworICAgIEVORDsKKyAgICBSRVRVUk4gJ25vdCByZWFjaGVkJzsKK0VORDsK KyQkIExBTkdVQUdFIHBscGdzcWw7CitTRUxFQ1QgdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9y ZXNldCgpOworIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIHN1YnhhY3RfZXhjX2Z1 bmMoKTsKKyBzdWJ4YWN0X2V4Y19mdW5jIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgY2F1Z2h0Ciso MSByb3cpCisKK1NFTEVDVCBsb2NhbF9ibGtzX2RpcnRpZWQgPiAwIEFTIHN1YnhhY3RfYnVmZmVy c192aXNpYmxlCitGUk9NIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKTsKKyBzdWJ4YWN0X2J1 ZmZlcnNfdmlzaWJsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisK K0RST1AgRlVOQ1RJT04gc3VieGFjdF9leGNfZnVuYzsKK0RST1AgVEFCTEUgc3VieGFjdF90YWI7 CistLSBDdXJzb3IgKEZPUiBsb29wKSBpbiBhYm9ydGVkIHN1YnRyYW5zYWN0aW9uOyB2ZXJpZnkg cG9zdC1leGNlcHRpb24gdHJhY2tpbmcKK0NSRUFURSBURU1QIFRBQkxFIGN1cnNvcl90YWIgKGEg aW50LCBiIGNoYXIoMjAwKSk7CitJTlNFUlQgSU5UTyBjdXJzb3JfdGFiIFNFTEVDVCBpLCByZXBl YXQoJ3gnLCAyMDApIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgaTsKK0NSRUFURSBG VU5DVElPTiBjdXJzb3JfZXhjX2Z1bmMoKSBSRVRVUk5TIHRleHQgQVMgJCQKK0RFQ0xBUkUKKyAg ICByZWMgcmVjb3JkOworICAgIGNudCBpbnQgOj0gMDsKK0JFR0lOCisgICAgQkVHSU4KKyAgICAg ICAgRk9SIHJlYyBJTiBTRUxFQ1QgKiBGUk9NIGN1cnNvcl90YWIgTE9PUAorICAgICAgICAgICAg Y250IDo9IGNudCArIDE7CisgICAgICAgICAgICBJRiBjbnQgPSAyNTAgVEhFTgorICAgICAgICAg ICAgICAgIFBFUkZPUk0gMSAvIDA7CisgICAgICAgICAgICBFTkQgSUY7CisgICAgICAgIEVORCBM T09QOworICAgIEVYQ0VQVElPTiBXSEVOIGRpdmlzaW9uX2J5X3plcm8gVEhFTgorICAgICAgICBS RVRVUk4gJ2NhdWdodCBhZnRlciAnIHx8IGNudCB8fCAnIHJvd3MnOworICAgIEVORDsKKyAgICBS RVRVUk4gJ25vdCByZWFjaGVkJzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitTRUxFQ1Qg dGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworIHRlc3Rfc2Vzc2lvbl9idWZmZXJf dXNhZ2VfcmVzZXQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJv dykKKworU0VMRUNUIGN1cnNvcl9leGNfZnVuYygpOworICAgIGN1cnNvcl9leGNfZnVuYyAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgY2F1Z2h0IGFmdGVyIDI1MCByb3dzCisoMSByb3cp CisKK1NFTEVDVCBsb2NhbF9ibGtzX2hpdCArIGxvY2FsX2Jsa3NfcmVhZCA+IDAKKyAgICAgICBB UyBjdXJzb3Jfc3VieGFjdF9idWZmZXJzX3Zpc2libGUKK0ZST00gdGVzdF9zZXNzaW9uX2J1ZmZl cl91c2FnZSgpOworIGN1cnNvcl9zdWJ4YWN0X2J1ZmZlcnNfdmlzaWJsZSAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitEUk9QIEZVTkNUSU9OIGN1cnNv cl9leGNfZnVuYzsKK0RST1AgVEFCTEUgY3Vyc29yX3RhYjsKKy0tIFRyaWdnZXIgYWJvcnQgdW5k ZXIgRVhQTEFJTiBBTkFMWVpFOiB2ZXJpZnkgdGhhdCBidWZmZXIgYWN0aXZpdHkgZnJvbSBhCist LSB0cmlnZ2VyIHRoYXQgdGhyb3dzIGFuIGVycm9yIGlzIHN0aWxsIHByb3Blcmx5IHByb3BhZ2F0 ZWQuCitDUkVBVEUgVEVNUCBUQUJMRSB0cmlnX2Vycl90YWIgKGEgaW50KTsKK0NSRUFURSBURU1Q IFRBQkxFIHRyaWdfd29ya190YWIgKGEgaW50LCBiIGNoYXIoMjAwKSk7CitJTlNFUlQgSU5UTyB0 cmlnX3dvcmtfdGFiIFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAyMDApIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDUwMCkgQVMgaTsKKy0tIFdhcm0gbG9jYWwgYnVmZmVycyBzbyB0cmlnX3dvcmtfdGFi IHJlYWRzIGJlY29tZSBoaXRzCitTRUxFQ1QgY291bnQoKikgRlJPTSB0cmlnX3dvcmtfdGFiOwor IGNvdW50IAorLS0tLS0tLQorICAgNTAwCisoMSByb3cpCisKK0NSRUFURSBGVU5DVElPTiB0cmln X2Vycl9mdW5jKCkgUkVUVVJOUyB0cmlnZ2VyIEFTICQkCitCRUdJTgorICAgIFBFUkZPUk0gY291 bnQoKikgRlJPTSB0cmlnX3dvcmtfdGFiOworICAgIFJBSVNFIEVYQ0VQVElPTiAndHJpZ2dlciBl cnJvcic7CisgICAgUkVUVVJOIE5FVzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CitDUkVB VEUgVFJJR0dFUiB0cmlnX2VyciBCRUZPUkUgSU5TRVJUIE9OIHRyaWdfZXJyX3RhYgorICAgIEZP UiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdfZXJyX2Z1bmMoKTsKKy0tIE1lYXN1cmUg aG93IG1hbnkgbG9jYWwgYnVmZmVyIGhpdHMgYSBzY2FuIG9mIHRyaWdfd29ya190YWIgcHJvZHVj ZXMKK1NFTEVDVCB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CisgdGVzdF9zZXNz aW9uX2J1ZmZlcl91c2FnZV9yZXNldCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgRlJPTSB0cmlnX3dvcmtfdGFiOworIGNv dW50IAorLS0tLS0tLQorICAgNTAwCisoMSByb3cpCisKK0NSRUFURSBURU1QIFRBQkxFIHRyaWdf c2VyaWFsX3Jlc3VsdCBBUworU0VMRUNUIGxvY2FsX2Jsa3NfaGl0IEFTIHNlcmlhbF9oaXRzIEZS T00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOworLS0gTm93IHRyaWdnZXIgdGhlIHNhbWUg c2NhbiB2aWEgYSB0cmlnZ2VyIHRoYXQgZXJyb3JzCitTRUxFQ1QgdGVzdF9zZXNzaW9uX2J1ZmZl cl91c2FnZV9yZXNldCgpOworIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworRVhQTEFJTiAoQU5B TFlaRSwgQlVGRkVSUywgQ09TVFMgT0ZGKQorICAgIElOU0VSVCBJTlRPIHRyaWdfZXJyX3RhYiBW QUxVRVMgKDEpOworRVJST1I6ICB0cmlnZ2VyIGVycm9yCitDT05URVhUOiAgUEwvcGdTUUwgZnVu Y3Rpb24gdHJpZ19lcnJfZnVuYygpIGxpbmUgNCBhdCBSQUlTRQorLS0gVGhlIHRyaWdnZXIgc2Nh bm5lZCB0cmlnX3dvcmtfdGFiIGJ1dCBlcnJvcmVkIGJlZm9yZSBJbnN0clN0b3BUcmlnZ2VyIHJh bi4KKy0tIEluc3RyU3RvcEZpbmFsaXplIGluIHRoZSBQR19DQVRDSCBlbnN1cmVzIGJ1ZmZlciBk YXRhIGlzIHN0aWxsIHByb3BhZ2F0ZWQuCitTRUxFQ1QgbG9jYWxfYmxrc19oaXQgPj0gcy5zZXJp YWxfaGl0cyAvIDIKKyAgICAgICBBUyB0cmlnZ2VyX2Fib3J0X2J1ZmZlcnNfcHJvcGFnYXRlZAor RlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCksIHRyaWdfc2VyaWFsX3Jlc3VsdCBzOwor IHRyaWdnZXJfYWJvcnRfYnVmZmVyc19wcm9wYWdhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworRFJPUCBUQUJMRSB0cmlnX2Vycl90YWIsIHRy aWdfd29ya190YWIsIHRyaWdfc2VyaWFsX3Jlc3VsdDsKK0RST1AgRlVOQ1RJT04gdHJpZ19lcnJf ZnVuYzsKKy0tIFBhcmFsbGVsIHdvcmtlciBhYm9ydDogd29ya2VyIGJ1ZmZlciBhY3Rpdml0eSBp cyBjdXJyZW50bHkgTk9UIHByb3BhZ2F0ZWQgb24gYWJvcnQuCistLQorLS0gV2hlbiBhIHBhcmFs bGVsIHdvcmtlciBhYm9ydHMsIEluc3RyRW5kUGFyYWxsZWxRdWVyeSBhbmQKKy0tIEV4ZWNQYXJh bGxlbFJlcG9ydEluc3RydW1lbnRhdGlvbiBuZXZlciBydW4sIHNvIHRoZSB3b3JrZXIncyBidWZm ZXIKKy0tIGFjdGl2aXR5IGlzIG5ldmVyIHdyaXR0ZW4gdG8gc2hhcmVkIG1lbW9yeSwgZGVzcGl0 ZSB0aGUgaW5mb3JtYXRpb24gaGF2aW5nIGJlZW4KKy0tIGNhcHR1cmVkIGJ5IHRoZSByZXMgb3du ZXIgcmVsZWFzZSBpbnN0cnVtZW50YXRpb24gaGFuZGxpbmcuCitDUkVBVEUgVEFCTEUgcGFyX2Fi b3J0X3RhYiAoYSBpbnQsIGIgY2hhcigyMDApKTsKK0lOU0VSVCBJTlRPIHBhcl9hYm9ydF90YWIg U0VMRUNUIGksIHJlcGVhdCgneCcsIDIwMCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkg QVMgaTsKKy0tIFdhcm0gc2hhcmVkIGJ1ZmZlcnMgc28gYWxsIHJlYWRzIGJlY29tZSBoaXRzCitT RUxFQ1QgY291bnQoKikgRlJPTSBwYXJfYWJvcnRfdGFiOworIGNvdW50IAorLS0tLS0tLQorICA1 MDAwCisoMSByb3cpCisKKy0tIE1lYXN1cmUgc2VyaWFsIHNjYW4gZGVsdGEgYXMgYSByZWZlcmVu Y2UgKGxlYWRlciByZWFkcyBhbGwgYmxvY2tzKQorU0VUIG1heF9wYXJhbGxlbF93b3JrZXJzX3Bl cl9nYXRoZXIgPSAwOworU0VMRUNUIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsK KyB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBiOjppbnQyIEZST00gcGFyX2Fib3J0 X3RhYiBXSEVSRSBhID4gMTAwMDsKK0VSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5 cGUgc21hbGxpbnQ6ICJ4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eCIKK0NSRUFURSBUQUJM RSBwYXJfYWJvcnRfc2VyaWFsX3Jlc3VsdCBBUworU0VMRUNUIHNoYXJlZF9ibGtzX2hpdCBBUyBz ZXJpYWxfZGVsdGEgRlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCk7CistLSBOb3cgZm9y Y2UgcGFyYWxsZWwgd2l0aCBsZWFkZXIgTk9UIHBhcnRpY2lwYXRpbmcgaW4gc2Nhbm5pbmcKK1NF VCBwYXJhbGxlbF9zZXR1cF9jb3N0ID0gMDsKK1NFVCBwYXJhbGxlbF90dXBsZV9jb3N0ID0gMDsK K1NFVCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0gMDsKK1NFVCBtYXhfcGFyYWxsZWxf d29ya2Vyc19wZXJfZ2F0aGVyID0gMjsKK1NFVCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBhdGlv biA9IG9mZjsKK1NFVCBkZWJ1Z19wYXJhbGxlbF9xdWVyeSA9IG9uOyAtLSBFbnN1cmUgd2UgZ2V0 IENPTlRFWFQgbGluZSBjb25zaXN0ZW50bHkKK1NFTEVDVCB0ZXN0X3Nlc3Npb25fYnVmZmVyX3Vz YWdlX3Jlc2V0KCk7CisgdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgYjo6aW50MiBG Uk9NIHBhcl9hYm9ydF90YWIgV0hFUkUgYSA+IDEwMDA7CitFUlJPUjogIGludmFsaWQgaW5wdXQg c3ludGF4IGZvciB0eXBlIHNtYWxsaW50OiAieHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHgi CitDT05URVhUOiAgcGFyYWxsZWwgd29ya2VyCitSRVNFVCBkZWJ1Z19wYXJhbGxlbF9xdWVyeTsK Ky0tIFdvcmtlcnMgc2Nhbm5lZCB0aGUgdGFibGUgYnV0IGFib3J0ZWQgYmVmb3JlIHJlcG9ydGlu ZyBzdGF0cyBiYWNrLgorLS0gVGhlIGxlYWRlcidzIGRlbHRhIHNob3VsZCBiZSBtdWNoIGxlc3Mg dGhhbiBhIHNlcmlhbCBzY2FuLCBkb2N1bWVudGluZworLS0gdGhhdCB3b3JrZXIgYnVmZmVyIGFj dGl2aXR5IGlzIGxvc3Qgb24gYWJvcnQuCitTRUxFQ1Qgc2hhcmVkX2Jsa3NfaGl0IDwgcy5zZXJp YWxfZGVsdGEgLyAyCisgICAgICAgQVMgd29ya2VyX2Fib3J0X2J1ZmZlcnNfbm90X3Byb3BhZ2F0 ZWQKK0ZST00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpLCBwYXJfYWJvcnRfc2VyaWFsX3Jl c3VsdCBzOworIHdvcmtlcl9hYm9ydF9idWZmZXJzX25vdF9wcm9wYWdhdGVkIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworUkVTRVQgcGFyYWxs ZWxfc2V0dXBfY29zdDsKK1JFU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3Q7CitSRVNFVCBtaW5fcGFy YWxsZWxfdGFibGVfc2Nhbl9zaXplOworUkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dh dGhlcjsKK1JFU0VUIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uOworRFJPUCBUQUJMRSBw YXJfYWJvcnRfdGFiLCBwYXJfYWJvcnRfc2VyaWFsX3Jlc3VsdDsKKy0tIENsZWFudXAKK0RST1Ag RVhURU5TSU9OIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2U7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvbWVzb24uYnVpbGQgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UvbWVzb24uYnVpbGQKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI5NmY2N2RjN2ZlCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL21lc29uLmJ1 aWxkCkBAIC0wLDAgKzEsMzMgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAorCit0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3NvdXJj ZXMgPSBmaWxlcygKKyAgJ3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UuYycsCispCisKK2lmIGhv c3Rfc3lzdGVtID09ICd3aW5kb3dzJworICB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3NvdXJj ZXMgKz0gcmNfbGliX2dlbi5wcm9jZXNzKHdpbjMydmVyX3JjLCBleHRyYV9hcmdzOiBbCisgICAg Jy0tTkFNRScsICd0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlJywKKyAgICAnLS1GSUxFREVTQycs ICd0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlIC0gc2hvdyBidWZmZXIgdXNhZ2Ugc3RhdGlzdGlj cyBmb3IgdGhlIGN1cnJlbnQgc2Vzc2lvbicsXSkKK2VuZGlmCisKK3Rlc3Rfc2Vzc2lvbl9idWZm ZXJfdXNhZ2UgPSBzaGFyZWRfbW9kdWxlKCd0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlJywKKyAg dGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9zb3VyY2VzLAorICBrd2FyZ3M6IHBnX3Rlc3RfbW9k X2FyZ3MsCispCit0ZXN0X2luc3RhbGxfbGlicyArPSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdl CisKK3Rlc3RfaW5zdGFsbF9kYXRhICs9IGZpbGVzKAorICAndGVzdF9zZXNzaW9uX2J1ZmZlcl91 c2FnZS5jb250cm9sJywKKyAgJ3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UtLTEuMC5zcWwnLAor KQorCit0ZXN0cyArPSB7CisgICduYW1lJzogJ3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UnLAor ICAnc2QnOiBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKKyAgJ2JkJzogbWVzb24uY3VycmVu dF9idWlsZF9kaXIoKSwKKyAgJ3JlZ3Jlc3MnOiB7CisgICAgJ3NxbCc6IFsKKyAgICAgICd0ZXN0 X3Nlc3Npb25fYnVmZmVyX3VzYWdlJywKKyAgICBdLAorICB9LAorfQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3NxbC90ZXN0X3Nlc3Npb25f YnVmZmVyX3VzYWdlLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1ZmZlcl91 c2FnZS9zcWwvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRhZjIxNTljNGE2Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3NxbC90ZXN0X3Nlc3Npb25f YnVmZmVyX3VzYWdlLnNxbApAQCAtMCwwICsxLDI0NSBAQAorTE9BRCAndGVzdF9zZXNzaW9uX2J1 ZmZlcl91c2FnZSc7CitDUkVBVEUgRVhURU5TSU9OIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2U7 CisKKy0tIFZlcmlmeSBhbGwgY29sdW1ucyBhcmUgbm9uLW5lZ2F0aXZlCitTRUxFQ1QgY291bnQo KikgPSAxIEFTIG9rIEZST00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpCitXSEVSRSBzaGFy ZWRfYmxrc19oaXQgPj0gMCBBTkQgc2hhcmVkX2Jsa3NfcmVhZCA+PSAwCisgIEFORCBzaGFyZWRf Ymxrc19kaXJ0aWVkID49IDAgQU5EIHNoYXJlZF9ibGtzX3dyaXR0ZW4gPj0gMAorICBBTkQgbG9j YWxfYmxrc19oaXQgPj0gMCBBTkQgbG9jYWxfYmxrc19yZWFkID49IDAKKyAgQU5EIGxvY2FsX2Js a3NfZGlydGllZCA+PSAwIEFORCBsb2NhbF9ibGtzX3dyaXR0ZW4gPj0gMAorICBBTkQgdGVtcF9i bGtzX3JlYWQgPj0gMCBBTkQgdGVtcF9ibGtzX3dyaXR0ZW4gPj0gMAorICBBTkQgc2hhcmVkX2Js a19yZWFkX3RpbWUgPj0gMCBBTkQgc2hhcmVkX2Jsa193cml0ZV90aW1lID49IDAKKyAgQU5EIGxv Y2FsX2Jsa19yZWFkX3RpbWUgPj0gMCBBTkQgbG9jYWxfYmxrX3dyaXRlX3RpbWUgPj0gMAorICBB TkQgdGVtcF9ibGtfcmVhZF90aW1lID49IDAgQU5EIHRlbXBfYmxrX3dyaXRlX3RpbWUgPj0gMDsK KworLS0gVmVyaWZ5IGNvdW50ZXJzIGluY3JlYXNlIGFmdGVyIGJ1ZmZlciBhY3Rpdml0eQorU0VM RUNUIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKKworQ1JFQVRFIFRFTVAgVEFC TEUgdGVzdF9idWZfYWN0aXZpdHkgKGlkIGludCwgZGF0YSB0ZXh0KTsKK0lOU0VSVCBJTlRPIHRl c3RfYnVmX2FjdGl2aXR5IFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAxMDApIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDEwMDApIEFTIGk7CitTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X2J1Zl9hY3Rp dml0eTsKKworU0VMRUNUIGxvY2FsX2Jsa3NfaGl0ICsgbG9jYWxfYmxrc19yZWFkID4gMCBBUyBi bG9ja3NfaW5jcmVhc2VkCitGUk9NIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UoKTsKKworRFJP UCBUQUJMRSB0ZXN0X2J1Zl9hY3Rpdml0eTsKKworLS0gUGFyYWxsZWwgcXVlcnkgdGVzdAorQ1JF QVRFIFRBQkxFIHBhcl9kY190YWIgKGEgaW50LCBiIGNoYXIoMjAwKSk7CitJTlNFUlQgSU5UTyBw YXJfZGNfdGFiIFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAyMDApIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDUwMDApIEFTIGk7CisKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHBhcl9kY190YWI7CisKKy0t IE1lYXN1cmUgc2VyaWFsIHNjYW4gZGVsdGEgKGxlYWRlciBkb2VzIGFsbCB0aGUgd29yaykKK1NF VCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID0gMDsKKworU0VMRUNUIHRlc3Rfc2Vz c2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHBhcl9kY190 YWI7CisKK0NSRUFURSBURU1QIFRBQkxFIGRjX3NlcmlhbF9yZXN1bHQgQVMKK1NFTEVDVCBzaGFy ZWRfYmxrc19oaXQgQVMgc2VyaWFsX2RlbHRhIEZST00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2Fn ZSgpOworCistLSBNZWFzdXJlIHBhcmFsbGVsIHNjYW4gZGVsdGEgd2l0aCBsZWFkZXIgTk9UIHBh cnRpY2lwYXRpbmcgaW4gc2Nhbm5pbmcuCistLSBXb3JrZXJzIGRvIGFsbCB0YWJsZSBzY2Fubmlu ZzsgbGVhZGVyIG9ubHkgcnVucyB0aGUgR2F0aGVyIG5vZGUuCitTRVQgcGFyYWxsZWxfc2V0dXBf Y29zdCA9IDA7CitTRVQgcGFyYWxsZWxfdHVwbGVfY29zdCA9IDA7CitTRVQgbWluX3BhcmFsbGVs X3RhYmxlX3NjYW5fc2l6ZSA9IDA7CitTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhl ciA9IDI7CitTRVQgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb24gPSBvZmY7CisKK1NFTEVD VCB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7CitTRUxFQ1QgY291bnQoKikgRlJP TSBwYXJfZGNfdGFiOworCistLSBDb25maXJtIHdlIGdvdCBhIHNpbWlsYXIgaGl0IGNvdW50ZXIg dGhyb3VnaCBwYXJhbGxlbCB3b3JrZXIgYWNjdW11bGF0aW9uCitTRUxFQ1Qgc2hhcmVkX2Jsa3Nf aGl0ID4gcy5zZXJpYWxfZGVsdGEgLyAyIEFORCBzaGFyZWRfYmxrc19oaXQgPCBzLnNlcmlhbF9k ZWx0YSAqIDIKKyAgICAgICBBUyBsZWFkZXJfYnVmZmVyc19tYXRjaAorRlJPTSB0ZXN0X3Nlc3Np b25fYnVmZmVyX3VzYWdlKCksIGRjX3NlcmlhbF9yZXN1bHQgczsKKworUkVTRVQgcGFyYWxsZWxf c2V0dXBfY29zdDsKK1JFU0VUIHBhcmFsbGVsX3R1cGxlX2Nvc3Q7CitSRVNFVCBtaW5fcGFyYWxs ZWxfdGFibGVfc2Nhbl9zaXplOworUkVTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhl cjsKK1JFU0VUIHBhcmFsbGVsX2xlYWRlcl9wYXJ0aWNpcGF0aW9uOworCitEUk9QIFRBQkxFIHBh cl9kY190YWIsIGRjX3NlcmlhbF9yZXN1bHQ7CisKKy0tCistLSBBYm9ydC9leGNlcHRpb24gdGVz dHM6IHZlcmlmeSBidWZmZXIgdXNhZ2Ugc3Vydml2ZXMgdmFyaW91cyBlcnJvciBwYXRocy4KKy0t CisKKy0tIFJvbGxlZC1iYWNrIGRpdmlkZS1ieS16ZXJvIHVuZGVyIEVYUExBSU4gQU5BTFlaRQor Q1JFQVRFIFRFTVAgVEFCTEUgZXhjX3RhYiAoYSBpbnQsIGIgY2hhcigyMCkpOworCitTRUxFQ1Qg dGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworCitFWFBMQUlOIChBTkFMWVpFLCBC VUZGRVJTLCBDT1NUUyBPRkYpCisgICAgICAgIFdJVEggaW5zIEFTIChJTlNFUlQgSU5UTyBleGNf dGFiIFZBTFVFUyAoMSwgJ2FhYScpIFJFVFVSTklORyBhKQorICAgICAgICBTRUxFQ1QgYSAvIDAg RlJPTSBpbnM7CisKK1NFTEVDVCBsb2NhbF9ibGtzX2RpcnRpZWQgPiAwIEFTIGV4Y2VwdGlvbl9i dWZmZXJzX3Zpc2libGUKK0ZST00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOworCitEUk9Q IFRBQkxFIGV4Y190YWI7CisKKy0tIFVuaXF1ZSBjb25zdHJhaW50IHZpb2xhdGlvbiBpbiByZWd1 bGFyIHF1ZXJ5CitDUkVBVEUgVEVNUCBUQUJMRSB1bmlxdWVfdGFiIChhIGludCBVTklRVUUsIGIg Y2hhcigyMCkpOworSU5TRVJUIElOVE8gdW5pcXVlX3RhYiBWQUxVRVMgKDEsICdmaXJzdCcpOwor CitTRUxFQ1QgdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworSU5TRVJUIElOVE8g dW5pcXVlX3RhYiBWQUxVRVMgKDEsICdkdXBsaWNhdGUnKTsKKworU0VMRUNUIGxvY2FsX2Jsa3Nf aGl0ID4gMCBBUyB1bmlxdWVfdmlvbGF0aW9uX2J1ZmZlcnNfdmlzaWJsZQorRlJPTSB0ZXN0X3Nl c3Npb25fYnVmZmVyX3VzYWdlKCk7CisKK0RST1AgVEFCTEUgdW5pcXVlX3RhYjsKKworLS0gQ2F1 Z2h0IGV4Y2VwdGlvbiBpbiBQTC9wZ1NRTCBzdWJ0cmFuc2FjdGlvbiAoQkVHSU4uLi5FWENFUFRJ T04pCitDUkVBVEUgVEVNUCBUQUJMRSBzdWJ4YWN0X3RhYiAoYSBpbnQsIGIgY2hhcigyMCkpOwor CitDUkVBVEUgRlVOQ1RJT04gc3VieGFjdF9leGNfZnVuYygpIFJFVFVSTlMgdGV4dCBBUyAkJAor QkVHSU4KKyAgICBCRUdJTgorICAgICAgICBFWEVDVVRFICdFWFBMQUlOIChBTkFMWVpFLCBCVUZG RVJTLCBDT1NUUyBPRkYpCisgICAgICAgICAgICBXSVRIIGlucyBBUyAoSU5TRVJUIElOVE8gc3Vi eGFjdF90YWIgVkFMVUVTICgxLCAnJ2FhYScnKSBSRVRVUk5JTkcgYSkKKyAgICAgICAgICAgIFNF TEVDVCBhIC8gMCBGUk9NIGlucyc7CisgICAgRVhDRVBUSU9OIFdIRU4gZGl2aXNpb25fYnlfemVy byBUSEVOCisgICAgICAgIFJFVFVSTiAnY2F1Z2h0JzsKKyAgICBFTkQ7CisgICAgUkVUVVJOICdu b3QgcmVhY2hlZCc7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitTRUxFQ1QgdGVzdF9z ZXNzaW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworU0VMRUNUIHN1YnhhY3RfZXhjX2Z1bmMoKTsK KworU0VMRUNUIGxvY2FsX2Jsa3NfZGlydGllZCA+IDAgQVMgc3VieGFjdF9idWZmZXJzX3Zpc2li bGUKK0ZST00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOworCitEUk9QIEZVTkNUSU9OIHN1 YnhhY3RfZXhjX2Z1bmM7CitEUk9QIFRBQkxFIHN1YnhhY3RfdGFiOworCistLSBDdXJzb3IgKEZP UiBsb29wKSBpbiBhYm9ydGVkIHN1YnRyYW5zYWN0aW9uOyB2ZXJpZnkgcG9zdC1leGNlcHRpb24g dHJhY2tpbmcKK0NSRUFURSBURU1QIFRBQkxFIGN1cnNvcl90YWIgKGEgaW50LCBiIGNoYXIoMjAw KSk7CitJTlNFUlQgSU5UTyBjdXJzb3JfdGFiIFNFTEVDVCBpLCByZXBlYXQoJ3gnLCAyMDApIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgaTsKKworQ1JFQVRFIEZVTkNUSU9OIGN1cnNv cl9leGNfZnVuYygpIFJFVFVSTlMgdGV4dCBBUyAkJAorREVDTEFSRQorICAgIHJlYyByZWNvcmQ7 CisgICAgY250IGludCA6PSAwOworQkVHSU4KKyAgICBCRUdJTgorICAgICAgICBGT1IgcmVjIElO IFNFTEVDVCAqIEZST00gY3Vyc29yX3RhYiBMT09QCisgICAgICAgICAgICBjbnQgOj0gY250ICsg MTsKKyAgICAgICAgICAgIElGIGNudCA9IDI1MCBUSEVOCisgICAgICAgICAgICAgICAgUEVSRk9S TSAxIC8gMDsKKyAgICAgICAgICAgIEVORCBJRjsKKyAgICAgICAgRU5EIExPT1A7CisgICAgRVhD RVBUSU9OIFdIRU4gZGl2aXNpb25fYnlfemVybyBUSEVOCisgICAgICAgIFJFVFVSTiAnY2F1Z2h0 IGFmdGVyICcgfHwgY250IHx8ICcgcm93cyc7CisgICAgRU5EOworICAgIFJFVFVSTiAnbm90IHJl YWNoZWQnOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworU0VMRUNUIHRlc3Rfc2Vzc2lv bl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKK1NFTEVDVCBjdXJzb3JfZXhjX2Z1bmMoKTsKKworU0VM RUNUIGxvY2FsX2Jsa3NfaGl0ICsgbG9jYWxfYmxrc19yZWFkID4gMAorICAgICAgIEFTIGN1cnNv cl9zdWJ4YWN0X2J1ZmZlcnNfdmlzaWJsZQorRlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdl KCk7CisKK0RST1AgRlVOQ1RJT04gY3Vyc29yX2V4Y19mdW5jOworRFJPUCBUQUJMRSBjdXJzb3Jf dGFiOworCistLSBUcmlnZ2VyIGFib3J0IHVuZGVyIEVYUExBSU4gQU5BTFlaRTogdmVyaWZ5IHRo YXQgYnVmZmVyIGFjdGl2aXR5IGZyb20gYQorLS0gdHJpZ2dlciB0aGF0IHRocm93cyBhbiBlcnJv ciBpcyBzdGlsbCBwcm9wZXJseSBwcm9wYWdhdGVkLgorQ1JFQVRFIFRFTVAgVEFCTEUgdHJpZ19l cnJfdGFiIChhIGludCk7CitDUkVBVEUgVEVNUCBUQUJMRSB0cmlnX3dvcmtfdGFiIChhIGludCwg YiBjaGFyKDIwMCkpOworSU5TRVJUIElOVE8gdHJpZ193b3JrX3RhYiBTRUxFQ1QgaSwgcmVwZWF0 KCd4JywgMjAwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDApIEFTIGk7CisKKy0tIFdhcm0g bG9jYWwgYnVmZmVycyBzbyB0cmlnX3dvcmtfdGFiIHJlYWRzIGJlY29tZSBoaXRzCitTRUxFQ1Qg Y291bnQoKikgRlJPTSB0cmlnX3dvcmtfdGFiOworCitDUkVBVEUgRlVOQ1RJT04gdHJpZ19lcnJf ZnVuYygpIFJFVFVSTlMgdHJpZ2dlciBBUyAkJAorQkVHSU4KKyAgICBQRVJGT1JNIGNvdW50KCop IEZST00gdHJpZ193b3JrX3RhYjsKKyAgICBSQUlTRSBFWENFUFRJT04gJ3RyaWdnZXIgZXJyb3In OworICAgIFJFVFVSTiBORVc7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworCitDUkVBVEUg VFJJR0dFUiB0cmlnX2VyciBCRUZPUkUgSU5TRVJUIE9OIHRyaWdfZXJyX3RhYgorICAgIEZPUiBF QUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIHRyaWdfZXJyX2Z1bmMoKTsKKworLS0gTWVhc3VyZSBo b3cgbWFueSBsb2NhbCBidWZmZXIgaGl0cyBhIHNjYW4gb2YgdHJpZ193b3JrX3RhYiBwcm9kdWNl cworU0VMRUNUIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoKTsKK1NFTEVDVCBjb3Vu dCgqKSBGUk9NIHRyaWdfd29ya190YWI7CisKK0NSRUFURSBURU1QIFRBQkxFIHRyaWdfc2VyaWFs X3Jlc3VsdCBBUworU0VMRUNUIGxvY2FsX2Jsa3NfaGl0IEFTIHNlcmlhbF9oaXRzIEZST00gdGVz dF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpOworCistLSBOb3cgdHJpZ2dlciB0aGUgc2FtZSBzY2Fu IHZpYSBhIHRyaWdnZXIgdGhhdCBlcnJvcnMKK1NFTEVDVCB0ZXN0X3Nlc3Npb25fYnVmZmVyX3Vz YWdlX3Jlc2V0KCk7CitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTLCBDT1NUUyBPRkYpCisgICAg SU5TRVJUIElOVE8gdHJpZ19lcnJfdGFiIFZBTFVFUyAoMSk7CisKKy0tIFRoZSB0cmlnZ2VyIHNj YW5uZWQgdHJpZ193b3JrX3RhYiBidXQgZXJyb3JlZCBiZWZvcmUgSW5zdHJTdG9wVHJpZ2dlciBy YW4uCistLSBJbnN0clN0b3BGaW5hbGl6ZSBpbiB0aGUgUEdfQ0FUQ0ggZW5zdXJlcyBidWZmZXIg ZGF0YSBpcyBzdGlsbCBwcm9wYWdhdGVkLgorU0VMRUNUIGxvY2FsX2Jsa3NfaGl0ID49IHMuc2Vy aWFsX2hpdHMgLyAyCisgICAgICAgQVMgdHJpZ2dlcl9hYm9ydF9idWZmZXJzX3Byb3BhZ2F0ZWQK K0ZST00gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgpLCB0cmlnX3NlcmlhbF9yZXN1bHQgczsK KworRFJPUCBUQUJMRSB0cmlnX2Vycl90YWIsIHRyaWdfd29ya190YWIsIHRyaWdfc2VyaWFsX3Jl c3VsdDsKK0RST1AgRlVOQ1RJT04gdHJpZ19lcnJfZnVuYzsKKworLS0gUGFyYWxsZWwgd29ya2Vy IGFib3J0OiB3b3JrZXIgYnVmZmVyIGFjdGl2aXR5IGlzIGN1cnJlbnRseSBOT1QgcHJvcGFnYXRl ZCBvbiBhYm9ydC4KKy0tCistLSBXaGVuIGEgcGFyYWxsZWwgd29ya2VyIGFib3J0cywgSW5zdHJF bmRQYXJhbGxlbFF1ZXJ5IGFuZAorLS0gRXhlY1BhcmFsbGVsUmVwb3J0SW5zdHJ1bWVudGF0aW9u IG5ldmVyIHJ1biwgc28gdGhlIHdvcmtlcidzIGJ1ZmZlcgorLS0gYWN0aXZpdHkgaXMgbmV2ZXIg d3JpdHRlbiB0byBzaGFyZWQgbWVtb3J5LCBkZXNwaXRlIHRoZSBpbmZvcm1hdGlvbiBoYXZpbmcg YmVlbgorLS0gY2FwdHVyZWQgYnkgdGhlIHJlcyBvd25lciByZWxlYXNlIGluc3RydW1lbnRhdGlv biBoYW5kbGluZy4KK0NSRUFURSBUQUJMRSBwYXJfYWJvcnRfdGFiIChhIGludCwgYiBjaGFyKDIw MCkpOworSU5TRVJUIElOVE8gcGFyX2Fib3J0X3RhYiBTRUxFQ1QgaSwgcmVwZWF0KCd4JywgMjAw KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBBUyBpOworCistLSBXYXJtIHNoYXJlZCBi dWZmZXJzIHNvIGFsbCByZWFkcyBiZWNvbWUgaGl0cworU0VMRUNUIGNvdW50KCopIEZST00gcGFy X2Fib3J0X3RhYjsKKworLS0gTWVhc3VyZSBzZXJpYWwgc2NhbiBkZWx0YSBhcyBhIHJlZmVyZW5j ZSAobGVhZGVyIHJlYWRzIGFsbCBibG9ja3MpCitTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVy X2dhdGhlciA9IDA7CisKK1NFTEVDVCB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCk7 CitTRUxFQ1QgYjo6aW50MiBGUk9NIHBhcl9hYm9ydF90YWIgV0hFUkUgYSA+IDEwMDA7CisKK0NS RUFURSBUQUJMRSBwYXJfYWJvcnRfc2VyaWFsX3Jlc3VsdCBBUworU0VMRUNUIHNoYXJlZF9ibGtz X2hpdCBBUyBzZXJpYWxfZGVsdGEgRlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCk7CisK Ky0tIE5vdyBmb3JjZSBwYXJhbGxlbCB3aXRoIGxlYWRlciBOT1QgcGFydGljaXBhdGluZyBpbiBz Y2FubmluZworU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3QgPSAwOworU0VUIHBhcmFsbGVsX3R1cGxl X2Nvc3QgPSAwOworU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemUgPSAwOworU0VUIG1h eF9wYXJhbGxlbF93b3JrZXJzX3Blcl9nYXRoZXIgPSAyOworU0VUIHBhcmFsbGVsX2xlYWRlcl9w YXJ0aWNpcGF0aW9uID0gb2ZmOworU0VUIGRlYnVnX3BhcmFsbGVsX3F1ZXJ5ID0gb247IC0tIEVu c3VyZSB3ZSBnZXQgQ09OVEVYVCBsaW5lIGNvbnNpc3RlbnRseQorCitTRUxFQ1QgdGVzdF9zZXNz aW9uX2J1ZmZlcl91c2FnZV9yZXNldCgpOworU0VMRUNUIGI6OmludDIgRlJPTSBwYXJfYWJvcnRf dGFiIFdIRVJFIGEgPiAxMDAwOworCitSRVNFVCBkZWJ1Z19wYXJhbGxlbF9xdWVyeTsKKworLS0g V29ya2VycyBzY2FubmVkIHRoZSB0YWJsZSBidXQgYWJvcnRlZCBiZWZvcmUgcmVwb3J0aW5nIHN0 YXRzIGJhY2suCistLSBUaGUgbGVhZGVyJ3MgZGVsdGEgc2hvdWxkIGJlIG11Y2ggbGVzcyB0aGFu IGEgc2VyaWFsIHNjYW4sIGRvY3VtZW50aW5nCistLSB0aGF0IHdvcmtlciBidWZmZXIgYWN0aXZp dHkgaXMgbG9zdCBvbiBhYm9ydC4KK1NFTEVDVCBzaGFyZWRfYmxrc19oaXQgPCBzLnNlcmlhbF9k ZWx0YSAvIDIKKyAgICAgICBBUyB3b3JrZXJfYWJvcnRfYnVmZmVyc19ub3RfcHJvcGFnYXRlZAor RlJPTSB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlKCksIHBhcl9hYm9ydF9zZXJpYWxfcmVzdWx0 IHM7CisKK1JFU0VUIHBhcmFsbGVsX3NldHVwX2Nvc3Q7CitSRVNFVCBwYXJhbGxlbF90dXBsZV9j b3N0OworUkVTRVQgbWluX3BhcmFsbGVsX3RhYmxlX3NjYW5fc2l6ZTsKK1JFU0VUIG1heF9wYXJh bGxlbF93b3JrZXJzX3Blcl9nYXRoZXI7CitSRVNFVCBwYXJhbGxlbF9sZWFkZXJfcGFydGljaXBh dGlvbjsKKworRFJPUCBUQUJMRSBwYXJfYWJvcnRfdGFiLCBwYXJfYWJvcnRfc2VyaWFsX3Jlc3Vs dDsKKworLS0gQ2xlYW51cAorRFJPUCBFWFRFTlNJT04gdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2Fn ZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2Fn ZS90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLS0xLjAuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UtLTEuMC5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU5ODMzYmU0NzBhCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3Vz YWdlL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UtLTEuMC5zcWwKQEAgLTAsMCArMSwzMSBAQAor Lyogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3Rlc3Rfc2Vzc2lv bl9idWZmZXJfdXNhZ2UtLTEuMC5zcWwgKi8KKworLS0gY29tcGxhaW4gaWYgc2NyaXB0IGlzIHNv dXJjZWQgaW4gcHNxbCwgcmF0aGVyIHRoYW4gdmlhIENSRUFURSBFWFRFTlNJT04KK1xlY2hvIFVz ZSAiQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlIiB0byBsb2FkIHRo aXMgZmlsZS4gXHF1aXQKKworQ1JFQVRFIEZVTkNUSU9OIHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNh Z2UoCisgICAgT1VUIHNoYXJlZF9ibGtzX2hpdCBiaWdpbnQsCisgICAgT1VUIHNoYXJlZF9ibGtz X3JlYWQgYmlnaW50LAorICAgIE9VVCBzaGFyZWRfYmxrc19kaXJ0aWVkIGJpZ2ludCwKKyAgICBP VVQgc2hhcmVkX2Jsa3Nfd3JpdHRlbiBiaWdpbnQsCisgICAgT1VUIGxvY2FsX2Jsa3NfaGl0IGJp Z2ludCwKKyAgICBPVVQgbG9jYWxfYmxrc19yZWFkIGJpZ2ludCwKKyAgICBPVVQgbG9jYWxfYmxr c19kaXJ0aWVkIGJpZ2ludCwKKyAgICBPVVQgbG9jYWxfYmxrc193cml0dGVuIGJpZ2ludCwKKyAg ICBPVVQgdGVtcF9ibGtzX3JlYWQgYmlnaW50LAorICAgIE9VVCB0ZW1wX2Jsa3Nfd3JpdHRlbiBi aWdpbnQsCisgICAgT1VUIHNoYXJlZF9ibGtfcmVhZF90aW1lIGRvdWJsZSBwcmVjaXNpb24sCisg ICAgT1VUIHNoYXJlZF9ibGtfd3JpdGVfdGltZSBkb3VibGUgcHJlY2lzaW9uLAorICAgIE9VVCBs b2NhbF9ibGtfcmVhZF90aW1lIGRvdWJsZSBwcmVjaXNpb24sCisgICAgT1VUIGxvY2FsX2Jsa193 cml0ZV90aW1lIGRvdWJsZSBwcmVjaXNpb24sCisgICAgT1VUIHRlbXBfYmxrX3JlYWRfdGltZSBk b3VibGUgcHJlY2lzaW9uLAorICAgIE9VVCB0ZW1wX2Jsa193cml0ZV90aW1lIGRvdWJsZSBwcmVj aXNpb24KKykKK1JFVFVSTlMgcmVjb3JkCitBUyAnTU9EVUxFX1BBVEhOQU1FJywgJ3Rlc3Rfc2Vz c2lvbl9idWZmZXJfdXNhZ2UnCitMQU5HVUFHRSBDIFBBUkFMTEVMIFJFU1RSSUNURUQ7CisKK0NS RUFURSBGVU5DVElPTiB0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jlc2V0KCkKK1JFVFVSTlMg dm9pZAorQVMgJ01PRFVMRV9QQVRITkFNRScsICd0ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlX3Jl c2V0JworTEFOR1VBR0UgQyBQQVJBTExFTCBSRVNUUklDVEVEOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3Rlc3Rfc2Vzc2lvbl9idWZmZXJf dXNhZ2UuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZS90ZXN0 X3Nlc3Npb25fYnVmZmVyX3VzYWdlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjUwZWIxYTJmZmU2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3Rlc3Rfc2Vzc2lvbl9idWZmZXJfdXNhZ2UuYwpAQCAt MCwwICsxLDk1IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB0ZXN0X3Nlc3Npb25fYnVm ZmVyX3VzYWdlLmMKKyAqCSAgc2hvdyBidWZmZXIgdXNhZ2Ugc3RhdGlzdGljcyBmb3IgdGhlIGN1 cnJlbnQgc2Vzc2lvbgorICoKKyAqIENvcHlyaWdodCAoYykgMjAyNiwgUG9zdGdyZVNRTCBHbG9i YWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKgkgIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNz aW9uX2J1ZmZlcl91c2FnZS90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLmMKKyAqLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImFjY2Vzcy9o dHVwX2RldGFpbHMuaCIKKyNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCisjaW5jbHVk ZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInV0aWxzL21l bXV0aWxzLmgiCisKK1BHX01PRFVMRV9NQUdJQ19FWFQoCisJCQkJCS5uYW1lID0gInRlc3Rfc2Vz c2lvbl9idWZmZXJfdXNhZ2UiLAorCQkJCQkudmVyc2lvbiA9IFBHX1ZFUlNJT04KKyk7CisKKyNk ZWZpbmUgTlVNX0JVRkZFUl9VU0FHRV9DT0xVTU5TIDE2CisKK1BHX0ZVTkNUSU9OX0lORk9fVjEo dGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSk7CitQR19GVU5DVElPTl9JTkZPX1YxKHRlc3Rfc2Vz c2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQpOworCisjZGVmaW5lIEhBVkVfSU5TVFJfU1RBQ0sgMQkJ LyogQ2hhbmdlIHRvIDAgd2hlbiB0ZXN0aW5nIGJlZm9yZSBzdGFjaworCQkJCQkJCQkgKiBjaGFu Z2UgKi8KKworLyoKKyAqIFNRTCBmdW5jdGlvbjogdGVzdF9zZXNzaW9uX2J1ZmZlcl91c2FnZSgp CisgKgorICogUmV0dXJucyBhIHNpbmdsZSByb3cgd2l0aCBhbGwgQnVmZmVyVXNhZ2UgY291bnRl cnMgYWNjdW11bGF0ZWQgc2luY2UgdGhlCisgKiBzdGFydCBvZiB0aGUgc2Vzc2lvbi4gRXhjbHVk ZXMgYW55IHVzYWdlIG5vdCB5ZXQgYWRkZWQgdG8gdGhlIHRvcCBvZiB0aGUKKyAqIHN0YWNrIChl LmcuIGlmIHRoaXMgZ2V0cyBjYWxsZWQgaW5zaWRlIGEgc3RhdGVtZW50IHRoYXQgYWxzbyBoYWQg YnVmZmVyCisgKiBhY3Rpdml0eSkuCisgKi8KK0RhdHVtCit0ZXN0X3Nlc3Npb25fYnVmZmVyX3Vz YWdlKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJVHVwbGVEZXNjCXR1cGRlc2M7CisJRGF0dW0JCXZh bHVlc1tOVU1fQlVGRkVSX1VTQUdFX0NPTFVNTlNdOworCWJvb2wJCW51bGxzW05VTV9CVUZGRVJf VVNBR0VfQ09MVU1OU107CisJQnVmZmVyVXNhZ2UgKnVzYWdlOworCisJaWYgKGdldF9jYWxsX3Jl c3VsdF90eXBlKGZjaW5mbywgTlVMTCwgJnR1cGRlc2MpICE9IFRZUEVGVU5DX0NPTVBPU0lURSkK KwkJZWxvZyhFUlJPUiwgInJldHVybiB0eXBlIG11c3QgYmUgYSByb3cgdHlwZSIpOworCisJbWVt c2V0KG51bGxzLCAwLCBzaXplb2YobnVsbHMpKTsKKworI2lmIEhBVkVfSU5TVFJfU1RBQ0sKKwl1 c2FnZSA9ICZpbnN0cl90b3AuYnVmdXNhZ2U7CisjZWxzZQorCXVzYWdlID0gJnBnQnVmZmVyVXNh Z2U7CisjZW5kaWYKKworCXZhbHVlc1swXSA9IEludDY0R2V0RGF0dW0odXNhZ2UtPnNoYXJlZF9i bGtzX2hpdCk7CisJdmFsdWVzWzFdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+c2hhcmVkX2Jsa3Nf cmVhZCk7CisJdmFsdWVzWzJdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+c2hhcmVkX2Jsa3NfZGly dGllZCk7CisJdmFsdWVzWzNdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+c2hhcmVkX2Jsa3Nfd3Jp dHRlbik7CisJdmFsdWVzWzRdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+bG9jYWxfYmxrc19oaXQp OworCXZhbHVlc1s1XSA9IEludDY0R2V0RGF0dW0odXNhZ2UtPmxvY2FsX2Jsa3NfcmVhZCk7CisJ dmFsdWVzWzZdID0gSW50NjRHZXREYXR1bSh1c2FnZS0+bG9jYWxfYmxrc19kaXJ0aWVkKTsKKwl2 YWx1ZXNbN10gPSBJbnQ2NEdldERhdHVtKHVzYWdlLT5sb2NhbF9ibGtzX3dyaXR0ZW4pOworCXZh bHVlc1s4XSA9IEludDY0R2V0RGF0dW0odXNhZ2UtPnRlbXBfYmxrc19yZWFkKTsKKwl2YWx1ZXNb OV0gPSBJbnQ2NEdldERhdHVtKHVzYWdlLT50ZW1wX2Jsa3Nfd3JpdHRlbik7CisJdmFsdWVzWzEw XSA9IEZsb2F0OEdldERhdHVtKElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHVzYWdlLT5zaGFyZWRf YmxrX3JlYWRfdGltZSkpOworCXZhbHVlc1sxMV0gPSBGbG9hdDhHZXREYXR1bShJTlNUUl9USU1F X0dFVF9NSUxMSVNFQyh1c2FnZS0+c2hhcmVkX2Jsa193cml0ZV90aW1lKSk7CisJdmFsdWVzWzEy XSA9IEZsb2F0OEdldERhdHVtKElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHVzYWdlLT5sb2NhbF9i bGtfcmVhZF90aW1lKSk7CisJdmFsdWVzWzEzXSA9IEZsb2F0OEdldERhdHVtKElOU1RSX1RJTUVf R0VUX01JTExJU0VDKHVzYWdlLT5sb2NhbF9ibGtfd3JpdGVfdGltZSkpOworCXZhbHVlc1sxNF0g PSBGbG9hdDhHZXREYXR1bShJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyh1c2FnZS0+dGVtcF9ibGtf cmVhZF90aW1lKSk7CisJdmFsdWVzWzE1XSA9IEZsb2F0OEdldERhdHVtKElOU1RSX1RJTUVfR0VU X01JTExJU0VDKHVzYWdlLT50ZW1wX2Jsa193cml0ZV90aW1lKSk7CisKKwlQR19SRVRVUk5fREFU VU0oSGVhcFR1cGxlR2V0RGF0dW0oaGVhcF9mb3JtX3R1cGxlKHR1cGRlc2MsIHZhbHVlcywgbnVs bHMpKSk7Cit9CisKKy8qCisgKiBTUUwgZnVuY3Rpb246IHRlc3Rfc2Vzc2lvbl9idWZmZXJfdXNh Z2VfcmVzZXQoKQorICoKKyAqIFJlc2V0cyBhbGwgQnVmZmVyVXNhZ2UgY291bnRlcnMgb24gdGhl IHRvcCBpbnN0cnVtZW50YXRpb24gc3RhY2sgdG8gemVyby4KKyAqIFVzZWZ1bCBpbiB0ZXN0cyB0 byBhdm9pZCB0aGUgYmFzZWxpbmUvZGVsdGEgcGF0dGVybi4KKyAqLworRGF0dW0KK3Rlc3Rfc2Vz c2lvbl9idWZmZXJfdXNhZ2VfcmVzZXQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKyNpZiBIQVZFX0lO U1RSX1NUQUNLCisJbWVtc2V0KCZpbnN0cl90b3AuYnVmdXNhZ2UsIDAsIHNpemVvZihCdWZmZXJV c2FnZSkpOworI2Vsc2UKKwltZW1zZXQoJnBnQnVmZmVyVXNhZ2UsIDAsIHNpemVvZihCdWZmZXJV c2FnZSkpOworI2VuZGlmCisKKwlQR19SRVRVUk5fVk9JRCgpOworfQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3Rlc3Rfc2Vzc2lvbl9idWZm ZXJfdXNhZ2UuY29udHJvbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zZXNzaW9uX2J1ZmZlcl91 c2FnZS90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlLmNvbnRyb2wKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQxY2ZiMTVhNzY1Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlL3Rlc3Rfc2Vzc2lvbl9idWZm ZXJfdXNhZ2UuY29udHJvbApAQCAtMCwwICsxLDUgQEAKKyMgdGVzdF9zZXNzaW9uX2J1ZmZlcl91 c2FnZSBleHRlbnNpb24KK2NvbW1lbnQgPSAnc2hvdyBidWZmZXIgdXNhZ2Ugc3RhdGlzdGljcyBm b3IgdGhlIGN1cnJlbnQgc2Vzc2lvbicKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjAnCittb2R1bGVf cGF0aG5hbWUgPSAnJGxpYmRpci90ZXN0X3Nlc3Npb25fYnVmZmVyX3VzYWdlJworcmVsb2NhdGFi bGUgPSB0cnVlCi0tIAoyLjQ3LjEKCg== --00000000000045175b064ec7b858--