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 1vsJNp-00G05L-0c for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Feb 2026 11:36:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vsJNn-009yF3-2i for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Feb 2026 11:36:47 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vsJNm-009yEv-2r for pgsql-hackers@lists.postgresql.org; Tue, 17 Feb 2026 11:36:47 +0000 Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vsJNe-0000000137K-3m1o for pgsql-hackers@postgresql.org; Tue, 17 Feb 2026 11:36:46 +0000 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-4362197d174so2754222f8f.3 for ; Tue, 17 Feb 2026 03:36:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771328198; cv=none; d=google.com; s=arc-20240605; b=dbYK4BJ9KOnNMH2DnelVOquVB9fngpXmc18eUyiVM9sZmxDsncGNbABtR+3JaIstAD 72H3FfKYIYEUKNAQiLIIlzOsIDdAWSgX+1YCdkf7sfcJyPhieSHCdrTRwlxtGWt95YAa qeC/E6OMr1soBr6mF8lbEzVmSQC+fnSc6+JmIMW2SswztxDSHnXJslXDA79PlnrA/+tl R23yhYpgFqDa1MEht1108W0+zExtk+kprCyNsFgW7Q5IhlxhI1lJtahLhBN6RPSXHRb9 AjIRUW6lTfAEvod15ZAl24Jh1evlW/ddJIWVQLzZig8xOe4PCk5MI0/5wy7rEYBycz21 ehmg== 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=AfgGUzqKlMstBqzOmJtonWtvqfZhy0liGuJMB+MnXoI=; fh=N9gJFGKoQ1twCkRipetoZYxj2v24yAHJGaw1ssiihHc=; b=cAND4ZBFwqd0f9UmdnknrJn8gll8sQ9GPFXNhPcrCj3kGaa7oYp1UfbpMsrjfPvXYX dVHyBbmBW1ispDwP0uPRaPYQYYmISjtgMCYsdFPVYDw/ea1nTy3N7Wu0uUmQETx0sv2+ 8Ktey0BX5Af2ZlLzgEBd7aAsAR2m1pavUzAuyGWpndsid2jaM08Ye7/a463AopKApr6C BixLR28CBmtDQhdpYcLokcOfcINm3KuupPBlvVVfxiLnFOFbM/y6qXnQoSJ2tKjwsyws SEiqTikixyCJqGg/FjSKJ5I2V2uL2XDYHvgXKAJ/fL/jNsw6QbPSU5ke78J17RiUqAi3 BTqA==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771328198; x=1771932998; darn=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=AfgGUzqKlMstBqzOmJtonWtvqfZhy0liGuJMB+MnXoI=; b=MopvgeoPXHvEUG5yg06HXmsWIudqE6JjOCvt9gF5Rka5JK8LOEPK+Fbj/MUg/jVm1G 8CwJny+Cw6onYmaAnIwYl5GUbePjKgxgK7pjfPK8ZMsOEIpQC0ggD/m4f8laLBSohEoB 5Xhr5FW5U4fxFr9XPHYK0QqY4i/zOhN8MTyMnEM3ZDronTWIZbmpWjJEZpat7W5t9ZnT efdjzEF8l74xmg/YwVAhjwgeMhrLQ71j6R9YTqvLwqmIcK5WR+Z6f1GJOOlCuDKz989p HVdV8ki19c78+Jj5JNhVi0vmSsnklzu8/rsZ4s8InLPej8CiNLJvIHlY6KaHqavWNG9/ cXUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771328198; x=1771932998; 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=AfgGUzqKlMstBqzOmJtonWtvqfZhy0liGuJMB+MnXoI=; b=pS9fiGEfyTcHoCqMK5JXyLEAwSYSKMPs6st7gRGUxY7L28YG2A442FjgJ0AQL0RmkH AfgbGI17sPSeKei+HU98lFvMRPRLXlGPnnGMEIM+Eu1qYrFdE+H9uE1yM+OLHRWOYdps gXP8TrpzpPGmjNZMJXX47HXTjtfW9TSzI/YMWyKtAcK5dpaD8WX2DFggFTDeFRbhAavn gDt8X0RgwDEAFF038BkzPFZxBtLkQD+arB9PPJasUuaYfJxkdizT/aavkR+O1RucZcWM GruwuFqDFOLDpGoV1XFH/moz8P5ImnX4G72NDu8WEmXad4so4XmCnY1H6GSQlDXrITAc q39w== X-Gm-Message-State: AOJu0Ywj37ASlmYXsgLraYuTv64b/vryyhkLx+CUFPeY1DfI8LnYoiSk 3XPichic3Sr8YkVRqOMTqN+d1HTuygsxE0RMYOmKq7Nupg4qMCVgSYoRZAMax08C+RN9fveCxml 46hRCsSNYCuJLVArPTAw3JP9WZDBOSCo= X-Gm-Gg: AZuq6aLoU9CoHLpJXDZcK41Q1bpArHLiB4Dcdn4YllKYBBuKqDk/8ObuVOyPlq1AxMw qCirMUmUoUUUiaGPTGIHomyYeolpC7Ju0ktgBR9UHjZ5qdRZNJnTRBcQyE0dWP+kxOqdZ0OrNoE L8Wq81NtY24FxZOM3Hz/Pji4ZZD0cU/UJJPb+gBiZqq2CLky6at6RN7fzntMeLBd5ILAd9nwuR1 0+klb6xf6YxvCi0OyZlf3TwgzE2gc4VxGYN1OlQOK95QHeRFivHzWbBiH8zLfDlOiljcoTc1iN2 l0A9a2Mfxg9kjVt9saDPbpdUAka8t+XyxWgWCO5w8LeYiqTuPA== X-Received: by 2002:a05:6000:1447:b0:436:1a24:df81 with SMTP id ffacd0b85a97d-437978c0a34mr22362331f8f.2.1771328197946; Tue, 17 Feb 2026 03:36:37 -0800 (PST) MIME-Version: 1.0 References: <5a37c2e3-619d-4816-84d7-0b27e3e6797f@iki.fi> In-Reply-To: From: Ashutosh Bapat Date: Tue, 17 Feb 2026 17:06:24 +0530 X-Gm-Features: AaiRm507K2aCU7M8vml9nE1wZIt9oJVCvztCaUrUIQfvKkrcqdvd44qqm1tGDDc Message-ID: Subject: Re: Better shared data structure management and resizable shared data structures To: Andres Freund , Heikki Linnakangas Cc: pgsql-hackers , chaturvedipalak1911@gmail.com Content-Type: multipart/mixed; boundary="000000000000051ac9064b037c6f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000051ac9064b037c6f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Feb 16, 2026 at 11:26=E2=80=AFPM Andres Freund = wrote: > > I think we *do* want the MADV_POPULATE_WRITE, at least when using huge pa= ges, > because otherwise you'll get a SIGBUS when accessing the memory if there = is no > huge page available anymore. > Ok. Jakub's experiments [1] showed that fallocate()ing shared memory would slow down postmaster start on a slow machine. I suppose the same thing applies to MADV_POPULATE_WRITE. And we don't do that today even in the case of huge pages; so we already have that problem. If we perform MADV_POPULATE_WRITE, do we want it only for resizable shared memory structures or all the structures in the shared memory? On Mon, Feb 16, 2026 at 11:02=E2=80=AFPM Heikki Linnakangas wrote: > > On 16/02/2026 16:52, Ashutosh Bapat wrote: > > 2. to use madvise() the address needs to be backed by a file, so > > memfd_create is a must. > > It seems to work fine for anonymous mmapped memory here. See attached > test program. On Mon, Feb 16, 2026 at 11:26=E2=80=AFPM Andres Freund = wrote: > > 2. to use madvise() the address needs to be backed by a file, so > > memfd_create is a must. > > I am quite sure that that is not true. I hacked this up with today's > postgres, and the madvise works with the mmap() backed allocation from > sysv_shmem.c, which is anonymous. > > What made you conclude that that is the case? > You are right. I was misled by the following sentence in the `man madvise`: "but since Linux 3.5, any filesystem which supports the fallocate(2) FALLOC_FL_PUNCH_HOLE mode also supports MADV_REMOVE. Filesystems which do not support MADV_REMOVE fail with the error EOPNOTSUPP." And in a subsequent experiment I dropped MAP_ANONYMOUS from mmap() and used madvise() which didn't work obviously. My bad. In the attached patches, I have got rid of memfd_create. That simplifies co= de. > > > 4. the address and length passed to madvise needs to be page aligned, > > but that passed to fallocate() needn't be. `man fallocate` says > > "Specifying the FALLOC_FL_PUNCH_HOLE flag (available since Linux > > 2.6.38) in mode deallocates space (i.e., creates a hole) in the byte > > range starting at offset and continuing for len bytes. Within the > > specified range, partial filesystem blocks are zeroed, and whole > > filesystem blocks are removed from the file.". It seems to be > > automatically taking care of the page size. So using fallocate() > > simplifies logic. Further `man madvise` says "but since Linux 3.5, any > > filesystem which supports the fallocate(2) FALLOC_FL_PUNCH_HOLE mode > > also supports MADV_REMOVE." fallocate with FALLOC_FL_PUNCH_HOLE is > > guaranteed to be available on a system which supports MADV_REMOVE. > > I think it makes no sense to support resizing below page size > granularity. What's the point of doing that? > No point really. But we can not control the extensions which want to specify a maximum size smaller than a page size. They wouldn't know what page size the underlying machine will have, especially with huge pages which have a wide range of sizes. Even in the case of shared buffers, a value of max_shared_buffers may cause buffer blocks to span pages but other structures may fit a page. In the attached patches, if a resizable structure is such that its max_size is smaller than a page size, it is treated as a fixed structure with size =3D max_size. Any request to resize such structures will simply update the metadata without actual madvise operation. Only the structures whose max_size > page_size would be treated as truly resizable and will use madvise. You bring another interesting point. If a resizable structure has a maximum size higher than the page size, but it is allocated such that the initial part of it is on a partially allocated page and the last part of it is on another partially allocated page, those pages are never freed because of adjoining structures. Per the logic in the attached patches, all the fixed (or pseudo-resizable structures) are packed together. The resizable structures start on a page boundary and their max_sizes are adjusted to be page aligned. That way we can release pages when the structure shrinks more than a page. > > > Using fallocate() (or madvise()) to free memory, we don't need > > multiple segments. So much less code churn compared to the multiple > > mappings approach. However, there is one drawback. In the multiple > > mapping approach access beyond the current size of the structure would > > result in segfault or bus error. But in the fallocate/madvise approach > > such an access does not cause a crash. A write beyond the pages that > > fit the current size of the structure causes more memory to be > > allocated silently. A read returns 0s. So, there's a possibility that > > bugs in size calculations might go unnoticed. I think that's how it > > works even today, access in the yet un-allocated part of the shared > > memory will simply go unnoticed. > > If that's something you care about, you can mprotect(PROT_NONE) the relev= ant > regions. I am fine, if we let go of this protection while getting rid of multiple segments, if we all agree to do so. I could be wrong, but mprotect needs to be executed in every backend where the memory is mapped and then a new backend needs to inherit it from the postmaster. Makes resizing complex since it has to touch every backend. So avoiding mprotect is better. [1] https://www.postgresql.org/message-id/CAKZiRmwxVqEbp7JgOed%3DBCT6cq8RNu= Hk3N0vuwro65Tsw9E8NA%40mail.gmail.com PFA patches. --=20 Best Wishes, Ashutosh Bapat --000000000000051ac9064b037c6f Content-Type: text/x-patch; charset="US-ASCII"; name="0002-Get-rid-of-global-shared-memory-pointer-mac-20260217.patch" Content-Disposition: attachment; filename="0002-Get-rid-of-global-shared-memory-pointer-mac-20260217.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlqilc1m1 RnJvbSAzOTVhOTVlOTkzNDI4Njg2OWIxZmU4ZDQ1ZGM1YTE1NWVhOWJlMDMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAxMCBGZWIgMjAyNiAyMDoyNjozMSArMDUzMApTdWJqZWN0OiBb UEFUQ0ggMi8zXSBHZXQgcmlkIG9mIGdsb2JhbCBzaGFyZWQgbWVtb3J5IHBvaW50ZXIgbWFjcm8K IGRlY2xhcmF0aW9ucwoKLS0tCiAuLi4vcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVt ZW50cy5jICAgfCAxMCArKysrLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS92YXJzdXAu YyAgICAgICAgICAgfCAgNSArKysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc20uYyAgICAg ICAgICAgICAgICAgfCAgNSArKy0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc21fcmVnaXN0 cnkuYyAgICAgICAgfCAgNCArKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Btc2lnbmFsLmMg ICAgICAgICAgICB8IDE4ICsrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJv Y2FycmF5LmMgICAgICAgICAgIHwgMTMgKysrKystLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9wcm9jc2lnbmFsLmMgICAgICAgICAgfCAgNCArKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3NobWVtLmMgICAgICAgICAgICAgICB8IDI5ICsrKysrKysrKysrKy0tLS0tLS0KIHNyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbGFkdC5jICAgICAgICAgICB8ICA3ICsrKy0tCiBzcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jICAgICAgICAgICAgICAgfCAyNSArKysrKysrKysrLS0t LS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdHJhbnNhbS5oICAgICAgICAgICAgICAgICAgfCAgMiAr LQogc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oICAgICAgICAgICAgICAgICAgIHwgIDYgKyst LQogMTIgZmlsZXMgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgNTEgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRz LmMgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwppbmRl eCA3MWRlYmM4YjQ3Zi4uNzNmZGY1NjE0MTkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9z dGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0 ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCkBAIC0yNTgsMjQgKzI1OCwyNiBAQCB0eXBlZGVm IHN0cnVjdCBwZ3NzU2hhcmVkU3RhdGUKIAlwZ3NzR2xvYmFsU3RhdHMgc3RhdHM7CQkvKiBnbG9i YWwgc3RhdGlzdGljcyBmb3IgcGdzcyAqLwogfSBwZ3NzU2hhcmVkU3RhdGU7CiAKKy8qIExpbmtz IHRvIHNoYXJlZCBtZW1vcnkgc3RhdGUgKi8KK3Bnc3NTaGFyZWRTdGF0ZSAqcGdzcyA9IE5VTEw7 CitIVEFCICpwZ3NzX2hhc2ggPSBOVUxMOworCiBzdGF0aWMgdm9pZCBwZ3NzX3NobWVtX2luaXQo dm9pZCAqYXJnKTsKIAogc3RhdGljIFNobWVtU3RydWN0RGVzYyBwZ3NzU2hhcmVkU3RhdGVTaG1l bURlc2MgPSB7CiAJLm5hbWUgPSAicGdfc3RhdF9zdGF0ZW1lbnRzIiwKIAkuc2l6ZSA9IHNpemVv ZihwZ3NzU2hhcmVkU3RhdGUpLAogCS5pbml0X2ZuID0gcGdzc19zaG1lbV9pbml0LAorCS5wdHIg PSAodm9pZCAqKSAmcGdzcywKIH07CiAKIHN0YXRpYyBTaG1lbUhhc2hEZXNjIHBnc3NTaGFyZWRI YXNoRGVzYyA9IHsKIAkubmFtZSA9ICJwZ19zdGF0X3N0YXRlbWVudHMgaGFzaCIsCiAJLmluaXRf c2l6ZSA9IDAsCQkvKiBzZXQgZnJvbSAncGdzc19tYXgnICovCiAJLm1heF9zaXplID0gMCwJCS8q IHNldCBmcm9tICdwZ3NzX21heCcgKi8KKwkucHRyID0gJnBnc3NfaGFzaCwKIH07CiAKLS8qIExp bmtzIHRvIHNoYXJlZCBtZW1vcnkgc3RhdGUgKi8KLSNkZWZpbmUgcGdzcyAoKHBnc3NTaGFyZWRT dGF0ZSAqKSBwZ3NzU2hhcmVkU3RhdGVTaG1lbURlc2MucHRyKQotI2RlZmluZSBwZ3NzX2hhc2gg KHBnc3NTaGFyZWRIYXNoRGVzYy5wdHIpCi0KIAogLyotLS0tIExvY2FsIHZhcmlhYmxlcyAtLS0t Ki8KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdmFyc3VwLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS92YXJzdXAuYwppbmRleCAxMWFkOTBlNzM3Mi4uM2Rm ZGE4NzVlODAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3ZhcnN1cC5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3ZhcnN1cC5jCkBAIC0zMiwxMCArMzIs MTQgQEAKIAogc3RhdGljIHZvaWQgVmFyc3VwU2htZW1Jbml0KHZvaWQgKmFyZyk7CiAKKy8qIHBv aW50ZXIgdG8gdmFyaWFibGVzIHN0cnVjdCBpbiBzaGFyZWQgbWVtb3J5ICovCitUcmFuc2FtVmFy aWFibGVzRGF0YSAqVHJhbnNhbVZhcmlhYmxlcyA9IE5VTEw7CisKIFNobWVtU3RydWN0RGVzYyBU cmFuc2FtVmFyaWFibGVzU2htZW1EZXNjID0gewogCS5uYW1lID0gIlRyYW5zYW1WYXJpYWJsZXMi LAogCS5zaXplID0gc2l6ZW9mKFRyYW5zYW1WYXJpYWJsZXNEYXRhKSwKIAkuaW5pdF9mbiA9IFZh cnN1cFNobWVtSW5pdCwKKwkucHRyID0gKHZvaWQgKiopICZUcmFuc2FtVmFyaWFibGVzLAogfTsK IAogLyoKQEAgLTQ5LDYgKzUzLDcgQEAgVmFyc3VwU2htZW1SZWdpc3Rlcih2b2lkKQogCiBzdGF0 aWMgdm9pZAogVmFyc3VwU2htZW1Jbml0KHZvaWQgKmFyZykKKwogewogCW1lbXNldChUcmFuc2Ft VmFyaWFibGVzLCAwLCBzaXplb2YoVHJhbnNhbVZhcmlhYmxlc0RhdGEpKTsKIH0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvZHNtLmMKaW5kZXggNTVmNDZjNzY4N2UuLjczNjQ0ZWMzYmJiIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9kc20uYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9k c20uYwpAQCAtMTEwLDE0ICsxMTAsMTUgQEAgc3RhdGljIGJvb2wgZHNtX2luaXRfZG9uZSA9IGZh bHNlOwogLyogUHJlYWxsb2NhdGVkIERTTSBzcGFjZSBpbiB0aGUgbWFpbiBzaGFyZWQgbWVtb3J5 IHJlZ2lvbi4gKi8KIHN0YXRpYyB2b2lkIGRzbV9tYWluX3NwYWNlX2luaXQodm9pZCAqKTsKIAor c3RhdGljIHZvaWQgKmRzbV9tYWluX3NwYWNlX2JlZ2luID0gTlVMTDsKKwogc3RhdGljIFNobWVt U3RydWN0RGVzYyBkc21fbWFpbl9zcGFjZV9zaG1lbV9kZXNjID0gewogCS5uYW1lID0gIlByZWFs bG9jYXRlZCBEU00iLAogCS5zaXplID0gMCwgLyogZHluYW1pYyAqLwogCS5pbml0X2ZuID0gZHNt X21haW5fc3BhY2VfaW5pdCwKKwkucHRyID0gJmRzbV9tYWluX3NwYWNlX2JlZ2luLAogfTsKIAot I2RlZmluZSBkc21fbWFpbl9zcGFjZV9iZWdpbiAoZHNtX21haW5fc3BhY2Vfc2htZW1fZGVzYy5w dHIpCi0KIC8qCiAgKiBMaXN0IG9mIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50cyB1c2Vk IGJ5IHRoaXMgYmFja2VuZC4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9kc21fcmVnaXN0cnkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9yZWdpc3RyeS5j CmluZGV4IDg4MmFmODNiN2IyLi4xNjU5ZTFkZDcxZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvZHNtX3JlZ2lzdHJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv ZHNtX3JlZ2lzdHJ5LmMKQEAgLTU2LDEzICs1NiwxNSBAQCB0eXBlZGVmIHN0cnVjdCBEU01SZWdp c3RyeUN0eFN0cnVjdAogCiBzdGF0aWMgdm9pZCBEU01SZWdpc3RyeUN0eFNobWVtSW5pdCh2b2lk ICphcmcpOwogCitEU01SZWdpc3RyeUN0eFN0cnVjdCAqRFNNUmVnaXN0cnlDdHggPSBOVUxMOwor CiBzdGF0aWMgU2htZW1TdHJ1Y3REZXNjIERTTVJlZ2lzdHJ5Q3R4U2htZW1EZXNjID0gewogCS5u YW1lID0gIkRTTSBSZWdpc3RyeSBEYXRhIiwKIAkuc2l6ZSA9IHNpemVvZihEU01SZWdpc3RyeUN0 eFN0cnVjdCksCiAJLmluaXRfZm4gPSBEU01SZWdpc3RyeUN0eFNobWVtSW5pdCwKKwkucHRyID0g KHZvaWQgKiopICZEU01SZWdpc3RyeUN0eCwKIH07CiAKLSNkZWZpbmUgRFNNUmVnaXN0cnlDdHgg KChEU01SZWdpc3RyeUN0eFN0cnVjdCAqKSBEU01SZWdpc3RyeUN0eFNobWVtRGVzYy5wdHIpCiAK IHR5cGVkZWYgc3RydWN0IE5hbWVkRFNNU3RhdGUKIHsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3Btc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wbXNpZ25h bC5jCmluZGV4IDIzNzUyNTAwZDE2Li4zYWEwMzgwZWFkZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvcG1zaWduYWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9w bXNpZ25hbC5jCkBAIC04MiwyMSArODIsMTcgQEAgc3RydWN0IFBNU2lnbmFsRGF0YQogCiBzdGF0 aWMgdm9pZCBQTVNpZ25hbFNobWVtSW5pdCh2b2lkICopOwogCi1zdGF0aWMgU2htZW1TdHJ1Y3RE ZXNjIFBNU2lnbmFsU2htZW1EZXNjID0gewotCS5uYW1lID0gIlBNU2lnbmFsU3RhdGUiLAotCS5z aXplID0gMCwgLyogZHluYW1pYyAqLwotCS5pbml0X2ZuID0gUE1TaWduYWxTaG1lbUluaXQsCi19 OwotCiAvKgogICogUE1TaWduYWxTdGF0ZSBwb2ludGVyIGlzIHZhbGlkIGluIGJvdGggcG9zdG1h c3RlciBhbmQgY2hpbGQgcHJvY2Vzc2VzCi0gKgotICogVGhpcyBpcyBhIHN0YW5kLWFsb25lIHZh cmlhYmxlIHJhdGhlciB0aGFuIGp1c3QgYSAjZGVmaW5lIG92ZXIKLSAqIFBNU2lnbmFsU2htZW1E ZXNjLnB0ciBiZWNhdXNlIGl0IGlzIG5lZWRlZCBlYXJseSBhdCBiYWNrZW5kIHN0YXJ0dXAgYW5k Ci0gKiBwYXNzZWQgYXMgYSBiYWNrZW5kIHBhcmFtZXRlciBpbiBFWEVDX0JBQ0tFTkQgbW9kZQog ICovCiBOT05fRVhFQ19TVEFUSUMgdm9sYXRpbGUgUE1TaWduYWxEYXRhICpQTVNpZ25hbFN0YXRl ID0gTlVMTDsKIAorc3RhdGljIFNobWVtU3RydWN0RGVzYyBQTVNpZ25hbFNobWVtRGVzYyA9IHsK KwkubmFtZSA9ICJQTVNpZ25hbFN0YXRlIiwKKwkuc2l6ZSA9IDAsIC8qIGR5bmFtaWMgKi8KKwku aW5pdF9mbiA9IFBNU2lnbmFsU2htZW1Jbml0LAorCS5wdHIgPSAodm9pZCAqKikgJlBNU2lnbmFs U3RhdGUsCit9OwogCiAvKgogICogTG9jYWwgY29weSBvZiBQTVNpZ25hbFN0YXRlLT5udW1fY2hp bGRfZmxhZ3MsIG9ubHkgdmFsaWQgaW4gdGhlCkBAIC0xNTYsNyArMTUyLDcgQEAgc3RhdGljIHZv aWQKIFBNU2lnbmFsU2htZW1Jbml0KHZvaWQgKmFyZykKIHsKIAkvKiBpbml0aWFsaXplIGFsbCBm bGFncyB0byB6ZXJvZXMgKi8KLQlQTVNpZ25hbFN0YXRlID0gUE1TaWduYWxTaG1lbURlc2MucHRy OworCUFzc2VydChQTVNpZ25hbFN0YXRlKTsKIAlNZW1TZXQodW52b2xhdGl6ZShQTVNpZ25hbERh dGEgKiwgUE1TaWduYWxTdGF0ZSksIDAsIFBNU2lnbmFsU2htZW1EZXNjLnNpemUpOwogCW51bV9j aGlsZF9mbGFncyA9IE1heExpdmVQb3N0bWFzdGVyQ2hpbGRyZW4oKTsKIAlQTVNpZ25hbFN0YXRl LT5udW1fY2hpbGRfZmxhZ3MgPSBudW1fY2hpbGRfZmxhZ3M7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3By b2NhcnJheS5jCmluZGV4IDA4YzYzYmNiMmE3Li43MzY1MDRkM2EzZSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvcHJvY2FycmF5LmMKQEAgLTEwNCwxNSArMTA0LDE2IEBAIHR5cGVkZWYgc3RydWN0IFBy b2NBcnJheVN0cnVjdAogc3RhdGljIHZvaWQgUHJvY0FycmF5U2htZW1Jbml0KHZvaWQgKmFyZyk7 CiBzdGF0aWMgdm9pZCBQcm9jQXJyYXlTaG1lbUF0dGFjaCh2b2lkICphcmcpOwogCitQcm9jQXJy YXlTdHJ1Y3QgKnByb2NBcnJheSA9IE5VTEw7CisKIHN0YXRpYyBTaG1lbVN0cnVjdERlc2MgUHJv Y0FycmF5U2htZW1EZXNjID0gewogCS5uYW1lID0gIlByb2MgQXJyYXkiLAogCS5zaXplID0gMCwg LyogZHluYW1pYyAqLwogCS5pbml0X2ZuID0gUHJvY0FycmF5U2htZW1Jbml0LAogCS5hdHRhY2hf Zm4gPSBQcm9jQXJyYXlTaG1lbUF0dGFjaCwKKwkucHRyID0gKHZvaWQgKiopICZwcm9jQXJyYXks CiB9OwogCi0jZGVmaW5lIHByb2NBcnJheSAoKFByb2NBcnJheVN0cnVjdCAqKSBQcm9jQXJyYXlT aG1lbURlc2MucHRyKQotCiAvKgogICogU3RhdGUgZm9yIHRoZSBHbG9iYWxWaXNUZXN0KiBmYW1p bHkgb2YgZnVuY3Rpb25zLiBUaG9zZSBmdW5jdGlvbnMgY2FuCiAgKiBlLmcuIGJlIHVzZWQgdG8g ZGVjaWRlIGlmIGEgZGVsZXRlZCByb3cgY2FuIGJlIHJlbW92ZWQgd2l0aG91dCB2aW9sYXRpbmcK QEAgLTI5MCwyMiArMjkxLDI0IEBAIHN0YXRpYyBUcmFuc2FjdGlvbklkIGNhY2hlZFhpZElzTm90 SW5Qcm9ncmVzcyA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogICogQm9va2tlZXBpbmcgZm9yIHRy YWNraW5nIGVtdWxhdGVkIHRyYW5zYWN0aW9ucyBpbiByZWNvdmVyeQogICovCiAKK1RyYW5zYWN0 aW9uSWQgKktub3duQXNzaWduZWRYaWRzID0gTlVMTDsKKwogc3RhdGljIFNobWVtU3RydWN0RGVz YyBLbm93bkFzc2lnbmVkWGlkc1NobWVtRGVzYyA9IHsKIAkubmFtZSA9ICJLbm93bkFzc2lnbmVk WGlkcyIsCiAJLnNpemUgPSAwLCAvKiBkeW5hbWljICovCiAJLmluaXRfZm4gPSBOVUxMLAorCS5w dHIgPSAodm9pZCAqKikgJktub3duQXNzaWduZWRYaWRzLAogfTsKIAotI2RlZmluZSBLbm93bkFz c2lnbmVkWGlkcyAoKFRyYW5zYWN0aW9uSWQgKikgS25vd25Bc3NpZ25lZFhpZHNTaG1lbURlc2Mu cHRyKQorYm9vbCAqS25vd25Bc3NpZ25lZFhpZHNWYWxpZCA9IE5VTEw7CiAKIHN0YXRpYyBTaG1l bVN0cnVjdERlc2MgS25vd25Bc3NpZ25lZFhpZHNWYWxpZFNobWVtRGVzYyA9IHsKIAkubmFtZSA9 ICJLbm93bkFzc2lnbmVkWGlkc1ZhbGlkIiwKIAkuc2l6ZSA9IDAsIC8qIGR5bmFtaWMgKi8KIAku aW5pdF9mbiA9IE5VTEwsCisJLnB0ciA9ICh2b2lkICoqKSAmS25vd25Bc3NpZ25lZFhpZHNWYWxp ZCwKIH07CiAKLSNkZWZpbmUgS25vd25Bc3NpZ25lZFhpZHNWYWxpZCAoKGJvb2wgKikgS25vd25B c3NpZ25lZFhpZHNWYWxpZFNobWVtRGVzYy5wdHIpCi0KIHN0YXRpYyBUcmFuc2FjdGlvbklkIGxh dGVzdE9ic2VydmVkWGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIC8qCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9wcm9jc2lnbmFsLmMKaW5kZXggNTc0M2YwODgzMjQuLmVlYzA0ZWFlM2Y0IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCkBAIC0xMDQsMTMgKzEwNCwxNSBAQCBzdHJ1 Y3QgUHJvY1NpZ25hbEhlYWRlcgogCiBzdGF0aWMgdm9pZCBQcm9jU2lnbmFsU2htZW1Jbml0KHZv aWQgKmFyZyk7CiAKK1Byb2NTaWduYWxIZWFkZXIgKlByb2NTaWduYWwgPSBOVUxMOworCiBzdGF0 aWMgU2htZW1TdHJ1Y3REZXNjIFByb2NTaWduYWxTaG1lbURlc2MgPSB7CiAJLm5hbWUgPSAiUHJv Y1NpZ25hbCIsCiAJLnNpemUgPSAwLCAvKiBkeW5hbWljICovCiAJLmluaXRfZm4gPSBQcm9jU2ln bmFsU2htZW1Jbml0LAorCS5wdHIgPSAodm9pZCAqKikgJlByb2NTaWduYWwsCiB9OwogCi0jZGVm aW5lIFByb2NTaWduYWwgKChQcm9jU2lnbmFsSGVhZGVyICopIFByb2NTaWduYWxTaG1lbURlc2Mu cHRyKQogCiBzdGF0aWMgUHJvY1NpZ25hbFNsb3QgKk15UHJvY1NpZ25hbFNsb3QgPSBOVUxMOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvc2htZW0uYwppbmRleCBmYWEwZmNiZDIxZS4uZTczYWM0ODliMmIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKKysrIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvc2htZW0uYwpAQCAtMTE4LDE3ICsxMTgsMTggQEAgc3RhdGljIHZvaWQg KlNobWVtRW5kOwkJCS8qIGVuZCsxIGFkZHJlc3Mgb2Ygc2hhcmVkIG1lbW9yeSAqLwogCiBzdGF0 aWMgU2htZW1BbGxvY2F0b3JEYXRhICpTaG1lbUFsbG9jYXRvcjsKIHNsb2NrX3QgICAgKlNobWVt TG9jazsJCQkvKiBwb2ludHMgdG8gU2htZW1BbGxvY2F0b3ItPnNobWVtX2xvY2sgKi8KKyAvKiBw cmltYXJ5IGluZGV4IGhhc2h0YWJsZSBmb3Igc2htZW0gKi8KK0hUQUIgKlNobWVtSW5kZXggPSBO VUxMOworCiAKIAogc3RhdGljIFNobWVtSGFzaERlc2MgU2htZW1JbmRleEhhc2hEZXNjID0gewog CS5uYW1lID0gIlNobWVtSW5kZXgiLAogCS5pbml0X3NpemUgPSBTSE1FTV9JTkRFWF9TSVpFLAog CS5tYXhfc2l6ZSA9IFNITUVNX0lOREVYX1NJWkUsCisJLnB0ciA9ICZTaG1lbUluZGV4CiB9Owog Ci0gLyogcHJpbWFyeSBpbmRleCBoYXNodGFibGUgZm9yIHNobWVtICovCi0jZGVmaW5lIFNobWVt SW5kZXggKFNobWVtSW5kZXhIYXNoRGVzYy5wdHIpCi0KIAogLyogVG8gZ2V0IHJlbGlhYmxlIHJl c3VsdHMgZm9yIE5VTUEgaW5xdWlyeSB3ZSBuZWVkIHRvICJ0b3VjaCBwYWdlcyIgb25jZSAqLwog c3RhdGljIGJvb2wgZmlyc3ROdW1hVG91Y2ggPSB0cnVlOwpAQCAtMjA1LDcgKzIwNiw3IEBAIFNo bWVtSW5pdFJlZ2lzdGVyZWQodm9pZCkKIAkJcmVzdWx0LT5hbGxvY2F0ZWRfc2l6ZSA9IGFsbG9j YXRlZF9zaXplOwogCQlyZXN1bHQtPmxvY2F0aW9uID0gc3RydWN0UHRyOwogCi0JCXJlZ2lzdHJ5 W2ldLT5wdHIgPSBzdHJ1Y3RQdHI7CisJCSoocmVnaXN0cnlbaV0tPnB0cikgPSBzdHJ1Y3RQdHI7 CiAJCWlmIChyZWdpc3RyeVtpXS0+aW5pdF9mbikKIAkJCXJlZ2lzdHJ5W2ldLT5pbml0X2ZuKHJl Z2lzdHJ5W2ldLT5pbml0X2ZuX2FyZyk7CiAJfQpAQCAtMjM5LDcgKzI0MCw3IEBAIFNobWVtQXR0 YWNoUmVnaXN0ZXJlZCh2b2lkKQogCQkJCQkJCXJlZ2lzdHJ5W2ldLT5uYW1lKSkpOwogCQl9CiAK LQkJcmVnaXN0cnlbaV0tPnB0ciA9IHJlc3VsdC0+bG9jYXRpb247CisJCSpyZWdpc3RyeVtpXS0+ cHRyID0gcmVzdWx0LT5sb2NhdGlvbjsKIAogCQlpZiAocmVnaXN0cnlbaV0tPmF0dGFjaF9mbikK IAkJCXJlZ2lzdHJ5W2ldLT5hdHRhY2hfZm4ocmVnaXN0cnlbaV0tPmF0dGFjaF9mbl9hcmcpOwpA QCAtNDI1LDEwICs0MjYsMTEgQEAgSW5pdFNobWVtSW5kZXgodm9pZCkKIAlpbmZvLmtleXNpemUg PSBTSE1FTV9JTkRFWF9LRVlTSVpFOwogCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKFNobWVtSW5k ZXhFbnQpOwogCi0JU2htZW1JbmRleCA9IFNobWVtSW5pdEhhc2goIlNobWVtSW5kZXgiLAorCSpT aG1lbUluZGV4SGFzaERlc2MucHRyID0gU2htZW1Jbml0SGFzaCgiU2htZW1JbmRleCIsCiAJCQkJ CQkJICAgU0hNRU1fSU5ERVhfU0laRSwgU0hNRU1fSU5ERVhfU0laRSwKIAkJCQkJCQkgICAmaW5m bywKIAkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX1NUUklOR1MpOworCUFzc2VydChTaG1lbUlu ZGV4ICE9IE5VTEwgJiYgKlNobWVtSW5kZXhIYXNoRGVzYy5wdHIgPT0gU2htZW1JbmRleCk7CiB9 CiAKIC8qCkBAIC00ODIsNiArNDg0LDEyIEBAIFNobWVtUmVnaXN0ZXJIYXNoKFNobWVtSGFzaERl c2MgKmRlc2MsCQkvKiBjb25maWd1cmF0aW9uICovCiAJZGVzYy0+YmFzZV9kZXNjLmluaXRfZm5f YXJnID0gZGVzYzsKIAlkZXNjLT5iYXNlX2Rlc2MuYXR0YWNoX2ZuID0gc2htZW1faGFzaF9hdHRh Y2g7CiAJZGVzYy0+YmFzZV9kZXNjLmF0dGFjaF9mbl9hcmcgPSBkZXNjOworCS8qCisJICogV2Ug bmVlZCBhIHN0YWJsZSBwb2ludGVyIHRvIGhvbGQgdGhlIHBvaW50ZXIgdG8gdGhlIHNoYXJlZCBt ZW1vcnkuIFVzZQorCSAqIHRoZSBvbmUgcGFzc2VkIGluIHRoZSBkZXNjcmlwdG9yIG5vdy4gSXQg d2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBoYXNoCisJICogdGFibGUgaGVhZGVyIGJ5IGluaXQg b3IgYXR0YWNoIGZ1bmN0aW9uLgorCSAqLworCWRlc2MtPmJhc2VfZGVzYy5wdHIgPSAodm9pZCAq KikgZGVzYy0+cHRyOwogCiAJZGVzYy0+YmFzZV9kZXNjLmV4dHJhX3NpemUgPSBoYXNoX2VzdGlt YXRlX3NpemUoZGVzYy0+bWF4X3NpemUsIGluZm9QLT5lbnRyeXNpemUpIC0gZGVzYy0+YmFzZV9k ZXNjLnNpemU7CiAKQEAgLTQ5OSwxMCArNTA3LDkgQEAgc2htZW1faGFzaF9pbml0KHZvaWQgKmFy ZykKIAlpbnQJCQloYXNoX2ZsYWdzID0gZGVzYy0+aGFzaF9mbGFnczsKIAogCS8qIFBhc3MgbG9j YXRpb24gb2YgaGFzaHRhYmxlIGhlYWRlciB0byBoYXNoX2NyZWF0ZSAqLwotCWRlc2MtPnB0ciA9 IGRlc2MtPmJhc2VfZGVzYy5wdHI7Ci0JZGVzYy0+aW5mb1AtPmhjdGwgPSAoSEFTSEhEUiAqKSBk ZXNjLT5wdHI7CisJZGVzYy0+aW5mb1AtPmhjdGwgPSAoSEFTSEhEUiAqKSAqZGVzYy0+YmFzZV9k ZXNjLnB0cjsKIAotCWRlc2MtPnB0ciA9IGhhc2hfY3JlYXRlKGRlc2MtPm5hbWUsIGRlc2MtPmlu aXRfc2l6ZSwgZGVzYy0+aW5mb1AsIGhhc2hfZmxhZ3MpOworCSpkZXNjLT5wdHIgPSBoYXNoX2Ny ZWF0ZShkZXNjLT5uYW1lLCBkZXNjLT5pbml0X3NpemUsIGRlc2MtPmluZm9QLCBoYXNoX2ZsYWdz KTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTUxOCw5ICs1MjUsOSBAQCBzaG1lbV9oYXNoX2F0dGFj aCh2b2lkICphcmcpCiAJaGFzaF9mbGFncyB8PSBIQVNIX0FUVEFDSDsKIAogCS8qIFBhc3MgbG9j YXRpb24gb2YgaGFzaHRhYmxlIGhlYWRlciB0byBoYXNoX2NyZWF0ZSAqLwotCWRlc2MtPmluZm9Q LT5oY3RsID0gKEhBU0hIRFIgKikgZGVzYy0+cHRyOworCWRlc2MtPmluZm9QLT5oY3RsID0gKEhB U0hIRFIgKikgKmRlc2MtPmJhc2VfZGVzYy5wdHI7CiAKLQlkZXNjLT5wdHIgPSBoYXNoX2NyZWF0 ZShkZXNjLT5uYW1lLCBkZXNjLT5pbml0X3NpemUsIGRlc2MtPmluZm9QLCBoYXNoX2ZsYWdzKTsK KwkqZGVzYy0+cHRyID0gaGFzaF9jcmVhdGUoZGVzYy0+bmFtZSwgZGVzYy0+aW5pdF9zaXplLCBk ZXNjLT5pbmZvUCwgaGFzaF9mbGFncyk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9zaW52YWxhZHQuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZh bGFkdC5jCmluZGV4IDBmZTBmMjU2OTcxLi44MzIxYmQ5YjUyZCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsYWR0LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc2ludmFsYWR0LmMKQEAgLTIwNSwxNSArMjA1LDE2IEBAIHR5cGVkZWYgc3RydWN0IFNJU2Vn CiAKIHN0YXRpYyB2b2lkIFNoYXJlZEludmFsU2htZW1Jbml0KHZvaWQgKmFyZyk7CiAKKy8qIHBv aW50ZXIgdG8gdGhlIHNoYXJlZCBpbnZhbCBidWZmZXIgKi8KK1NJU2VnICpzaG1JbnZhbEJ1ZmZl ciA9IE5VTEw7CisKIHN0YXRpYyBTaG1lbVN0cnVjdERlc2MgU2hhcmVkSW52YWxTaG1lbURlc2Mg PSB7CiAJLm5hbWUgPSAic2htSW52YWxCdWZmZXIiLAogCS5zaXplID0gMCwJLyogZHluYW1pYyAq LwogCS5pbml0X2ZuID0gU2hhcmVkSW52YWxTaG1lbUluaXQsCisJLnB0ciA9ICh2b2lkICoqKSAm c2htSW52YWxCdWZmZXIsCiB9OwogCi0vKiBwb2ludGVyIHRvIHRoZSBzaGFyZWQgaW52YWwgYnVm ZmVyICovCi0jZGVmaW5lIHNobUludmFsQnVmZmVyICgoU0lTZWcgKikgU2hhcmVkSW52YWxTaG1l bURlc2MucHRyKQotCiAKIHN0YXRpYyBMb2NhbFRyYW5zYWN0aW9uSWQgbmV4dExvY2FsVHJhbnNh Y3Rpb25JZDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKaW5kZXggODUzNzViNTE5NWUuLmEzZDY1 NTdhYTlkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCisrKyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKQEAgLTc3LDI3ICs3NywzMyBAQCBQR1BS T0MJICAgKk15UHJvYyA9IE5VTEw7CiAKIHN0YXRpYyB2b2lkIFByb2NHbG9iYWxTaG1lbUluaXQo dm9pZCAqYXJnKTsKIAorLyogUG9pbnRlcnMgdG8gc2hhcmVkLW1lbW9yeSBzdHJ1Y3R1cmVzICov CitQUk9DX0hEUiAgICpQcm9jR2xvYmFsID0gTlVMTDsKK3ZvaWQgKnRtcEFsbFByb2NzID0gTlVM TDsKK3ZvaWQgKnRtcEZhc3RQYXRoTG9ja0FycmF5ID0gTlVMTDsKK05PTl9FWEVDX1NUQVRJQyBQ R1BST0MgKkF1eGlsaWFyeVByb2NzID0gTlVMTDsKK1BHUFJPQwkgICAqUHJlcGFyZWRYYWN0UHJv Y3MgPSBOVUxMOworCisKIHN0YXRpYyBTaG1lbVN0cnVjdERlc2MgUHJvY0dsb2JhbFNobWVtRGVz YyA9IHsKIAkubmFtZSA9ICJQcm9jIEhlYWRlciIsCiAJLnNpemUgPSBzaXplb2YoUFJPQ19IRFIp LAogCS5pbml0X2ZuID0gUHJvY0dsb2JhbFNobWVtSW5pdCwKKwkucHRyID0gKHZvaWQgKiopICZQ cm9jR2xvYmFsLAogfTsKIAogc3RhdGljIFNobWVtU3RydWN0RGVzYyBQcm9jR2xvYmFsQWxsUHJv Y3NTaG1lbURlc2MgPSB7CiAJLm5hbWUgPSAiUEdQUk9DIHN0cnVjdHVyZXMiLAogCS5zaXplID0g MCwgLyogZHluYW1pYyAqLworCS5wdHIgPSAodm9pZCAqKikgJnRtcEFsbFByb2NzLAogfTsKIAog c3RhdGljIFNobWVtU3RydWN0RGVzYyBGYXN0UGF0aExvY2tBcnJheVNobWVtRGVzYyA9IHsKIAku bmFtZSA9ICJGYXN0LVBhdGggTG9jayBBcnJheSIsCiAJLnNpemUgPSAwLCAvKiBkeW5hbWljICov CisJLnB0ciA9ICh2b2lkICoqKSAmdG1wRmFzdFBhdGhMb2NrQXJyYXksCiB9OwogCi0vKiBQb2lu dGVycyB0byBzaGFyZWQtbWVtb3J5IHN0cnVjdHVyZXMgKi8KLVBST0NfSERSICAgKlByb2NHbG9i YWwgPSBOVUxMOwotTk9OX0VYRUNfU1RBVElDIFBHUFJPQyAqQXV4aWxpYXJ5UHJvY3MgPSBOVUxM OwotUEdQUk9DCSAgICpQcmVwYXJlZFhhY3RQcm9jcyA9IE5VTEw7Ci0KIHN0YXRpYyB1aW50MzIg VG90YWxQcm9jczsKIAogc3RhdGljIERlYWRMb2NrU3RhdGUgZGVhZGxvY2tfc3RhdGUgPSBEU19O T1RfWUVUX0NIRUNLRUQ7CkBAIC0yMjIsOCArMjI4LDcgQEAgUHJvY0dsb2JhbFNobWVtSW5pdCh2 b2lkICphcmcpCiAJU2l6ZQkJZnBMb2NrQml0c1NpemUsCiAJCQkJZnBSZWxJZFNpemU7CiAKLQlQ cm9jR2xvYmFsID0gUHJvY0dsb2JhbFNobWVtRGVzYy5wdHI7Ci0KKwlBc3NlcnQoUHJvY0dsb2Jh bCk7CiAJUHJvY0dsb2JhbC0+c3BpbnNfcGVyX2RlbGF5ID0gREVGQVVMVF9TUElOU19QRVJfREVM QVk7CiAJZGxpc3RfaW5pdCgmUHJvY0dsb2JhbC0+ZnJlZVByb2NzKTsKIAlkbGlzdF9pbml0KCZQ cm9jR2xvYmFsLT5hdXRvdmFjRnJlZVByb2NzKTsKQEAgLTIzNiw3ICsyNDEsOCBAQCBQcm9jR2xv YmFsU2htZW1Jbml0KHZvaWQgKmFyZykKIAlwZ19hdG9taWNfaW5pdF91MzIoJlByb2NHbG9iYWwt PmNsb2dHcm91cEZpcnN0LCBJTlZBTElEX1BST0NfTlVNQkVSKTsKIAlTcGluTG9ja0luaXQoUHJv Y1N0cnVjdExvY2spOwogCi0JcHRyID0gUHJvY0dsb2JhbEFsbFByb2NzU2htZW1EZXNjLnB0cjsK KwlBc3NlcnQodG1wQWxsUHJvY3MpOworCXB0ciA9IHRtcEFsbFByb2NzOwogCXJlcXVlc3RTaXpl ID0gUHJvY0dsb2JhbEFsbFByb2NzU2htZW1EZXNjLnNpemU7CiAJbWVtc2V0KHB0ciwgMCwgcmVx dWVzdFNpemUpOwogCkBAIC0yNzQsNyArMjgwLDggQEAgUHJvY0dsb2JhbFNobWVtSW5pdCh2b2lk ICphcmcpCiAJZnBMb2NrQml0c1NpemUgPSBNQVhBTElHTihGYXN0UGF0aExvY2tHcm91cHNQZXJC YWNrZW5kICogc2l6ZW9mKHVpbnQ2NCkpOwogCWZwUmVsSWRTaXplID0gTUFYQUxJR04oRmFzdFBh dGhMb2NrU2xvdHNQZXJCYWNrZW5kKCkgKiBzaXplb2YoT2lkKSk7CiAKLQlmcFB0ciA9IEZhc3RQ YXRoTG9ja0FycmF5U2htZW1EZXNjLnB0cjsKKwlBc3NlcnQodG1wRmFzdFBhdGhMb2NrQXJyYXkp OworCWZwUHRyID0gdG1wRmFzdFBhdGhMb2NrQXJyYXk7CiAJcmVxdWVzdFNpemUgPSBGYXN0UGF0 aExvY2tBcnJheVNobWVtRGVzYy5zaXplOwogCW1lbXNldChmcFB0ciwgMCwgcmVxdWVzdFNpemUp OwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdHJhbnNhbS5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3RyYW5zYW0uaAppbmRleCA0OWQ0NzZlOWQ1Yy4uNmU1YTU0NmY0MTEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL3RyYW5zYW0uaApAQCAtMzM0LDcgKzMzNCw3IEBAIGV4dGVybiBib29sIFRyYW5zYWN0aW9u U3RhcnRlZER1cmluZ1JlY292ZXJ5KHZvaWQpOwogLyogaW4gdHJhbnNhbS92YXJzdXAuYyAqLwog I2lmbmRlZiBGUk9OVEVORAogZXh0ZXJuIFBHRExMSU1QT1JUIHN0cnVjdCBTaG1lbVN0cnVjdERl c2MgVHJhbnNhbVZhcmlhYmxlc1NobWVtRGVzYzsKLSNkZWZpbmUgVHJhbnNhbVZhcmlhYmxlcyAo KFRyYW5zYW1WYXJpYWJsZXNEYXRhICopIFRyYW5zYW1WYXJpYWJsZXNTaG1lbURlc2MucHRyKQor ZXh0ZXJuIFBHRExMSU1QT1JUIFRyYW5zYW1WYXJpYWJsZXNEYXRhICpUcmFuc2FtVmFyaWFibGVz OwogI2VuZGlmCiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmgg Yi9zcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmgKaW5kZXggNDBlMmZjMTcwNTYuLmNiZDRlZjhk MDNmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmgKKysrIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9zaG1lbS5oCkBAIC01MCw4ICs1MCw4IEBAIHR5cGVkZWYgc3RydWN0IFNo bWVtU3RydWN0RGVzYwogCSAqLwogCXNpemVfdAkJZXh0cmFfc2l6ZTsKIAotCS8qIFBvaW50ZXIg dG8gdGhlIHNoYXJlZCBtZW1vcnkgYXJlYSwgd2hlbiBpdCdzIGFsbG9jYXRlZC4gKi8KLQl2b2lk CSAgICpwdHI7CisJLyogUG9pbnRlciB0byB0aGUgdmFyaWFibGUgdG8gd2hpY2ggcG9pbnRlciB0 byB0aGlzIHNoYXJlZCBtZW1vcnkgYXJlYSBpcyBhc3NpZ25lZCBhZnRlciBhbGxvY2F0aW9uLiAq LworCXZvaWQJICAgKipwdHI7CiB9IFNobWVtU3RydWN0RGVzYzsKIAogLyoKQEAgLTY3LDcgKzY3 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU2htZW1IYXNoRGVzYwogCXNpemVfdAkJbWF4X3NpemU7CQkv KiBtYXggbnVtYmVyIG9mIGVudHJpZXMgKi8KIAlIQVNIQ1RMCSAgICppbmZvUDsKIAotCUhUQUIJ ICAgKnB0cjsKKwlIVEFCCSAgICoqcHRyOwogCiAJU2htZW1TdHJ1Y3REZXNjCWJhc2VfZGVzYzsK IH0gU2htZW1IYXNoRGVzYzsKLS0gCjIuMzQuMQoK --000000000000051ac9064b037c6f Content-Type: text/x-patch; charset="US-ASCII"; name="0001-wip-Introduce-a-new-way-of-registering-shar-20260217.patch" Content-Disposition: attachment; filename="0001-wip-Introduce-a-new-way-of-registering-shar-20260217.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlqilc1e0 RnJvbSA0OTY3NmM1YmEwODhkMTMyMzZmMmMxYzY2ODAwZDdlN2IxYWJiZTVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IE1vbiwgOSBGZWIgMjAyNiAyMjoyODoyMyArMDIwMApTdWJqZWN0OiBb UEFUQ0ggMS8zXSB3aXA6IEludHJvZHVjZSBhIG5ldyB3YXkgb2YgcmVnaXN0ZXJpbmcgc2hhcmVk IG1lbW9yeQogc3RydWN0cwoKLS0tCiAuLi4vcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3Rh dGVtZW50cy5jICAgfCAxMTIgKysrKy0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS92 YXJzdXAuYyAgICAgICAgICAgfCAgMzIgKy0tCiBzcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0 cmFwLmMgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9sYXVuY2hf YmFja2VuZC5jICAgICAgIHwgIDExICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0 ZXIuYyAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtLmMgICAg ICAgICAgICAgICAgIHwgIDQ2ICsrLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9yZWdp c3RyeS5jICAgICAgICB8ICAzNCArKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyAg ICAgICAgICAgICAgICB8ICA1MSArKy0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wbXNpZ25h bC5jICAgICAgICAgICAgfCAgNTMgKystLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2Fy cmF5LmMgICAgICAgICAgIHwgMTI3ICsrKysrLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3Byb2NzaWduYWwuYyAgICAgICAgICB8ICA2MyArKystLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc2htZW0uYyAgICAgICAgICAgICAgIHwgMjMzICsrKysrKysrKysrKysrKysrLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsYWR0LmMgICAgICAgICAgIHwgIDM5ICstLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyAgICAgICAgICAgICAgIHwgMTU2ICsrKysrKy0tLS0t LQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgIHwgICAyICsK IHNyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmggICAgICAgICAgICAgICAgICB8ICAxMiArLQog c3JjL2luY2x1ZGUvc3RvcmFnZS9kc21fcmVnaXN0cnkuaCAgICAgICAgICAgIHwgICAzICstCiBz cmMvaW5jbHVkZS9zdG9yYWdlL2lwYy5oICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L2luY2x1ZGUvc3RvcmFnZS9wbXNpZ25hbC5oICAgICAgICAgICAgICAgIHwgICAzICstCiBzcmMv aW5jbHVkZS9zdG9yYWdlL3Byb2MuaCAgICAgICAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9p bmNsdWRlL3N0b3JhZ2UvcHJvY2FycmF5LmggICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2lu Y2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggICAgICAgICAgICAgIHwgICAzICstCiBzcmMvaW5j bHVkZS9zdG9yYWdlL3NobWVtLmggICAgICAgICAgICAgICAgICAgfCAgNTcgKysrKysKIHNyYy9p bmNsdWRlL3N0b3JhZ2Uvc2ludmFsYWR0LmggICAgICAgICAgICAgICB8ICAgMyArLQogMjQgZmls ZXMgY2hhbmdlZCwgNjY1IGluc2VydGlvbnMoKyksIDM4OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyBiL2Nv bnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCmluZGV4IDRhNDI3 NTMzYmQ4Li43MWRlYmM4YjQ3ZiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVu dHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMv cGdfc3RhdF9zdGF0ZW1lbnRzLmMKQEAgLTI1OCw2ICsyNTgsMjUgQEAgdHlwZWRlZiBzdHJ1Y3Qg cGdzc1NoYXJlZFN0YXRlCiAJcGdzc0dsb2JhbFN0YXRzIHN0YXRzOwkJLyogZ2xvYmFsIHN0YXRp c3RpY3MgZm9yIHBnc3MgKi8KIH0gcGdzc1NoYXJlZFN0YXRlOwogCitzdGF0aWMgdm9pZCBwZ3Nz X3NobWVtX2luaXQodm9pZCAqYXJnKTsKKworc3RhdGljIFNobWVtU3RydWN0RGVzYyBwZ3NzU2hh cmVkU3RhdGVTaG1lbURlc2MgPSB7CisJLm5hbWUgPSAicGdfc3RhdF9zdGF0ZW1lbnRzIiwKKwku c2l6ZSA9IHNpemVvZihwZ3NzU2hhcmVkU3RhdGUpLAorCS5pbml0X2ZuID0gcGdzc19zaG1lbV9p bml0LAorfTsKKworc3RhdGljIFNobWVtSGFzaERlc2MgcGdzc1NoYXJlZEhhc2hEZXNjID0gewor CS5uYW1lID0gInBnX3N0YXRfc3RhdGVtZW50cyBoYXNoIiwKKwkuaW5pdF9zaXplID0gMCwJCS8q IHNldCBmcm9tICdwZ3NzX21heCcgKi8KKwkubWF4X3NpemUgPSAwLAkJLyogc2V0IGZyb20gJ3Bn c3NfbWF4JyAqLworfTsKKworLyogTGlua3MgdG8gc2hhcmVkIG1lbW9yeSBzdGF0ZSAqLworI2Rl ZmluZSBwZ3NzICgocGdzc1NoYXJlZFN0YXRlICopIHBnc3NTaGFyZWRTdGF0ZVNobWVtRGVzYy5w dHIpCisjZGVmaW5lIHBnc3NfaGFzaCAocGdzc1NoYXJlZEhhc2hEZXNjLnB0cikKKworCiAvKi0t LS0gTG9jYWwgdmFyaWFibGVzIC0tLS0qLwogCiAvKiBDdXJyZW50IG5lc3RpbmcgZGVwdGggb2Yg cGxhbm5lci9FeGVjdXRvclJ1bi9Qcm9jZXNzVXRpbGl0eSBjYWxscyAqLwpAQCAtMjc0LDEwICsy OTMsNiBAQCBzdGF0aWMgRXhlY3V0b3JGaW5pc2hfaG9va190eXBlIHByZXZfRXhlY3V0b3JGaW5p c2ggPSBOVUxMOwogc3RhdGljIEV4ZWN1dG9yRW5kX2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yRW5k ID0gTlVMTDsKIHN0YXRpYyBQcm9jZXNzVXRpbGl0eV9ob29rX3R5cGUgcHJldl9Qcm9jZXNzVXRp bGl0eSA9IE5VTEw7CiAKLS8qIExpbmtzIHRvIHNoYXJlZCBtZW1vcnkgc3RhdGUgKi8KLXN0YXRp YyBwZ3NzU2hhcmVkU3RhdGUgKnBnc3MgPSBOVUxMOwotc3RhdGljIEhUQUIgKnBnc3NfaGFzaCA9 IE5VTEw7Ci0KIC8qLS0tLSBHVUMgdmFyaWFibGVzIC0tLS0qLwogCiB0eXBlZGVmIGVudW0KQEAg LTM2NSw3ICszODAsNiBAQCBzdGF0aWMgdm9pZCBwZ3NzX3N0b3JlKGNvbnN0IGNoYXIgKnF1ZXJ5 LCBpbnQ2NCBxdWVyeUlkLAogc3RhdGljIHZvaWQgcGdfc3RhdF9zdGF0ZW1lbnRzX2ludGVybmFs KEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCQkJCQkJCQkJCXBnc3NWZXJzaW9uIGFwaV92ZXJz aW9uLAogCQkJCQkJCQkJCWJvb2wgc2hvd3RleHQpOwotc3RhdGljIFNpemUgcGdzc19tZW1zaXpl KHZvaWQpOwogc3RhdGljIHBnc3NFbnRyeSAqZW50cnlfYWxsb2MocGdzc0hhc2hLZXkgKmtleSwg U2l6ZSBxdWVyeV9vZmZzZXQsIGludCBxdWVyeV9sZW4sCiAJCQkJCQkJICBpbnQgZW5jb2Rpbmcs IGJvb2wgc3RpY2t5KTsKIHN0YXRpYyB2b2lkIGVudHJ5X2RlYWxsb2Modm9pZCk7CkBAIC01MDAs MTEgKzUxNCwzOSBAQCBfUEdfaW5pdCh2b2lkKQogc3RhdGljIHZvaWQKIHBnc3Nfc2htZW1fcmVx dWVzdCh2b2lkKQogeworCUhBU0hDVEwJCWluZm87CisKIAlpZiAocHJldl9zaG1lbV9yZXF1ZXN0 X2hvb2spCiAJCXByZXZfc2htZW1fcmVxdWVzdF9ob29rKCk7CiAKLQlSZXF1ZXN0QWRkaW5TaG1l bVNwYWNlKHBnc3NfbWVtc2l6ZSgpKTsKIAlSZXF1ZXN0TmFtZWRMV0xvY2tUcmFuY2hlKCJwZ19z dGF0X3N0YXRlbWVudHMiLCAxKTsKKworCS8qCisJICogUmVnaXN0ZXIgb3VyIHNoYXJlZCBtZW1v cnkgc3RhdGUsIGluY2x1ZGluZyBoYXNoIHRhYmxlCisJICovCisJU2htZW1SZWdpc3RlclN0cnVj dCgmcGdzc1NoYXJlZFN0YXRlU2htZW1EZXNjKTsKKworCWluZm8ua2V5c2l6ZSA9IHNpemVvZihw Z3NzSGFzaEtleSk7CisJaW5mby5lbnRyeXNpemUgPSBzaXplb2YocGdzc0VudHJ5KTsKKwlwZ3Nz U2hhcmVkSGFzaERlc2MuaW5pdF9zaXplID0gcGdzc19tYXg7CisJcGdzc1NoYXJlZEhhc2hEZXNj Lm1heF9zaXplID0gcGdzc19tYXg7CisJU2htZW1SZWdpc3Rlckhhc2goJnBnc3NTaGFyZWRIYXNo RGVzYywKKwkJCQkJICAmaW5mbywKKwkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKK30K Kworc3RhdGljIHZvaWQKK3Bnc3Nfc2htZW1faW5pdCh2b2lkICphcmcpCit7CisJcGdzcy0+bG9j ayA9ICYoR2V0TmFtZWRMV0xvY2tUcmFuY2hlKCJwZ19zdGF0X3N0YXRlbWVudHMiKSktPmxvY2s7 CisJcGdzcy0+Y3VyX21lZGlhbl91c2FnZSA9IEFTU1VNRURfTUVESUFOX0lOSVQ7CisJcGdzcy0+ bWVhbl9xdWVyeV9sZW4gPSBBU1NVTUVEX0xFTkdUSF9JTklUOworCVNwaW5Mb2NrSW5pdCgmcGdz cy0+bXV0ZXgpOworCXBnc3MtPmV4dGVudCA9IDA7CisJcGdzcy0+bl93cml0ZXJzID0gMDsKKwlw Z3NzLT5nY19jb3VudCA9IDA7CisJcGdzcy0+c3RhdHMuZGVhbGxvYyA9IDA7CisJcGdzcy0+c3Rh dHMuc3RhdHNfcmVzZXQgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CiB9CiAKIC8qCkBAIC01MTYs OCArNTU4LDYgQEAgcGdzc19zaG1lbV9yZXF1ZXN0KHZvaWQpCiBzdGF0aWMgdm9pZAogcGdzc19z aG1lbV9zdGFydHVwKHZvaWQpCiB7Ci0JYm9vbAkJZm91bmQ7Ci0JSEFTSENUTAkJaW5mbzsKIAlG SUxFCSAgICpmaWxlID0gTlVMTDsKIAlGSUxFCSAgICpxZmlsZSA9IE5VTEw7CiAJdWludDMyCQlo ZWFkZXI7CkBAIC01MzAsNDIgKzU3MCw2IEBAIHBnc3Nfc2htZW1fc3RhcnR1cCh2b2lkKQogCWlm IChwcmV2X3NobWVtX3N0YXJ0dXBfaG9vaykKIAkJcHJldl9zaG1lbV9zdGFydHVwX2hvb2soKTsK IAotCS8qIHJlc2V0IGluIGNhc2UgdGhpcyBpcyBhIHJlc3RhcnQgd2l0aGluIHRoZSBwb3N0bWFz dGVyICovCi0JcGdzcyA9IE5VTEw7Ci0JcGdzc19oYXNoID0gTlVMTDsKLQotCS8qCi0JICogQ3Jl YXRlIG9yIGF0dGFjaCB0byB0aGUgc2hhcmVkIG1lbW9yeSBzdGF0ZSwgaW5jbHVkaW5nIGhhc2gg dGFibGUKLQkgKi8KLQlMV0xvY2tBY3F1aXJlKEFkZGluU2htZW1Jbml0TG9jaywgTFdfRVhDTFVT SVZFKTsKLQotCXBnc3MgPSBTaG1lbUluaXRTdHJ1Y3QoInBnX3N0YXRfc3RhdGVtZW50cyIsCi0J CQkJCQkgICBzaXplb2YocGdzc1NoYXJlZFN0YXRlKSwKLQkJCQkJCSAgICZmb3VuZCk7Ci0KLQlp ZiAoIWZvdW5kKQotCXsKLQkJLyogRmlyc3QgdGltZSB0aHJvdWdoIC4uLiAqLwotCQlwZ3NzLT5s b2NrID0gJihHZXROYW1lZExXTG9ja1RyYW5jaGUoInBnX3N0YXRfc3RhdGVtZW50cyIpKS0+bG9j azsKLQkJcGdzcy0+Y3VyX21lZGlhbl91c2FnZSA9IEFTU1VNRURfTUVESUFOX0lOSVQ7Ci0JCXBn c3MtPm1lYW5fcXVlcnlfbGVuID0gQVNTVU1FRF9MRU5HVEhfSU5JVDsKLQkJU3BpbkxvY2tJbml0 KCZwZ3NzLT5tdXRleCk7Ci0JCXBnc3MtPmV4dGVudCA9IDA7Ci0JCXBnc3MtPm5fd3JpdGVycyA9 IDA7Ci0JCXBnc3MtPmdjX2NvdW50ID0gMDsKLQkJcGdzcy0+c3RhdHMuZGVhbGxvYyA9IDA7Ci0J CXBnc3MtPnN0YXRzLnN0YXRzX3Jlc2V0ID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwotCX0KLQot CWluZm8ua2V5c2l6ZSA9IHNpemVvZihwZ3NzSGFzaEtleSk7Ci0JaW5mby5lbnRyeXNpemUgPSBz aXplb2YocGdzc0VudHJ5KTsKLQlwZ3NzX2hhc2ggPSBTaG1lbUluaXRIYXNoKCJwZ19zdGF0X3N0 YXRlbWVudHMgaGFzaCIsCi0JCQkJCQkJICBwZ3NzX21heCwgcGdzc19tYXgsCi0JCQkJCQkJICAm aW5mbywKLQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOwotCi0JTFdMb2NrUmVsZWFz ZShBZGRpblNobWVtSW5pdExvY2spOwotCiAJLyoKIAkgKiBJZiB3ZSdyZSBpbiB0aGUgcG9zdG1h c3RlciAob3IgYSBzdGFuZGFsb25lIGJhY2tlbmQuLi4pLCBzZXQgdXAgYSBzaG1lbQogCSAqIGV4 aXQgaG9vayB0byBkdW1wIHRoZSBzdGF0aXN0aWNzIHRvIGRpc2suCkBAIC01NzMsMTIgKzU3Nyw2 IEBAIHBnc3Nfc2htZW1fc3RhcnR1cCh2b2lkKQogCWlmICghSXNVbmRlclBvc3RtYXN0ZXIpCiAJ CW9uX3NobWVtX2V4aXQocGdzc19zaG1lbV9zaHV0ZG93biwgKERhdHVtKSAwKTsKIAotCS8qCi0J ICogRG9uZSBpZiBzb21lIG90aGVyIHByb2Nlc3MgYWxyZWFkeSBjb21wbGV0ZWQgb3VyIGluaXRp YWxpemF0aW9uLgotCSAqLwotCWlmIChmb3VuZCkKLQkJcmV0dXJuOwotCiAJLyoKIAkgKiBOb3Rl OiB3ZSBkb24ndCBib3RoZXIgd2l0aCBsb2NrcyBoZXJlLCBiZWNhdXNlIHRoZXJlIHNob3VsZCBi ZSBubyBvdGhlcgogCSAqIHByb2Nlc3NlcyBydW5uaW5nIHdoZW4gdGhpcyBjb2RlIGlzIHJlYWNo ZWQuCkBAIC0yMDgyLDIwICsyMDgwLDYgQEAgcGdfc3RhdF9zdGF0ZW1lbnRzX2luZm8oUEdfRlVO Q1RJT05fQVJHUykKIAlQR19SRVRVUk5fREFUVU0oSGVhcFR1cGxlR2V0RGF0dW0oaGVhcF9mb3Jt X3R1cGxlKHR1cGRlc2MsIHZhbHVlcywgbnVsbHMpKSk7CiB9CiAKLS8qCi0gKiBFc3RpbWF0ZSBz aGFyZWQgbWVtb3J5IHNwYWNlIG5lZWRlZC4KLSAqLwotc3RhdGljIFNpemUKLXBnc3NfbWVtc2l6 ZSh2b2lkKQotewotCVNpemUJCXNpemU7Ci0KLQlzaXplID0gTUFYQUxJR04oc2l6ZW9mKHBnc3NT aGFyZWRTdGF0ZSkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBoYXNoX2VzdGltYXRlX3NpemUo cGdzc19tYXgsIHNpemVvZihwZ3NzRW50cnkpKSk7Ci0KLQlyZXR1cm4gc2l6ZTsKLX0KLQogLyoK ICAqIEFsbG9jYXRlIGEgbmV3IGhhc2h0YWJsZSBlbnRyeS4KICAqIGNhbGxlciBtdXN0IGhvbGQg YW4gZXhjbHVzaXZlIGxvY2sgb24gcGdzcy0+bG9jawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vdmFyc3VwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS92YXJz dXAuYwppbmRleCAzZTk1ZDRjZmQxNi4uMTFhZDkwZTczNzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3ZhcnN1cC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3ZhcnN1cC5jCkBAIC0zMCwzNSArMzAsMjcgQEAKIC8qIE51bWJlciBvZiBPSURzIHRvIHBy ZWZldGNoIChwcmVhbGxvY2F0ZSkgcGVyIFhMT0cgd3JpdGUgKi8KICNkZWZpbmUgVkFSX09JRF9Q UkVGRVRDSAkJODE5MgogCi0vKiBwb2ludGVyIHRvIHZhcmlhYmxlcyBzdHJ1Y3QgaW4gc2hhcmVk IG1lbW9yeSAqLwotVHJhbnNhbVZhcmlhYmxlc0RhdGEgKlRyYW5zYW1WYXJpYWJsZXMgPSBOVUxM Oworc3RhdGljIHZvaWQgVmFyc3VwU2htZW1Jbml0KHZvaWQgKmFyZyk7CiAKK1NobWVtU3RydWN0 RGVzYyBUcmFuc2FtVmFyaWFibGVzU2htZW1EZXNjID0geworCS5uYW1lID0gIlRyYW5zYW1WYXJp YWJsZXMiLAorCS5zaXplID0gc2l6ZW9mKFRyYW5zYW1WYXJpYWJsZXNEYXRhKSwKKwkuaW5pdF9m biA9IFZhcnN1cFNobWVtSW5pdCwKK307CiAKIC8qCiAgKiBJbml0aWFsaXphdGlvbiBvZiBzaGFy ZWQgbWVtb3J5IGZvciBUcmFuc2FtVmFyaWFibGVzLgogICovCi1TaXplCi1WYXJzdXBTaG1lbVNp emUodm9pZCkKK3ZvaWQKK1ZhcnN1cFNobWVtUmVnaXN0ZXIodm9pZCkKIHsKLQlyZXR1cm4gc2l6 ZW9mKFRyYW5zYW1WYXJpYWJsZXNEYXRhKTsKKwlTaG1lbVJlZ2lzdGVyU3RydWN0KCZUcmFuc2Ft VmFyaWFibGVzU2htZW1EZXNjKTsKIH0KIAotdm9pZAotVmFyc3VwU2htZW1Jbml0KHZvaWQpCitz dGF0aWMgdm9pZAorVmFyc3VwU2htZW1Jbml0KHZvaWQgKmFyZykKIHsKLQlib29sCQlmb3VuZDsK LQotCS8qIEluaXRpYWxpemUgb3VyIHNoYXJlZCBzdGF0ZSBzdHJ1Y3QgKi8KLQlUcmFuc2FtVmFy aWFibGVzID0gU2htZW1Jbml0U3RydWN0KCJUcmFuc2FtVmFyaWFibGVzIiwKLQkJCQkJCQkJCSAg IHNpemVvZihUcmFuc2FtVmFyaWFibGVzRGF0YSksCi0JCQkJCQkJCQkgICAmZm91bmQpOwotCWlm ICghSXNVbmRlclBvc3RtYXN0ZXIpCi0JewotCQlBc3NlcnQoIWZvdW5kKTsKLQkJbWVtc2V0KFRy YW5zYW1WYXJpYWJsZXMsIDAsIHNpemVvZihUcmFuc2FtVmFyaWFibGVzRGF0YSkpOwotCX0KLQll bHNlCi0JCUFzc2VydChmb3VuZCk7CisJbWVtc2V0KFRyYW5zYW1WYXJpYWJsZXMsIDAsIHNpemVv ZihUcmFuc2FtVmFyaWFibGVzRGF0YSkpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jIGIvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJh cC5jCmluZGV4IDdkMzJjZDBlMTU5Li4wZGVkNzAxOGU4NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290 c3RyYXAuYwpAQCAtMzM3LDYgKzMzNyw4IEBAIEJvb3RzdHJhcE1vZGVNYWluKGludCBhcmdjLCBj aGFyICphcmd2W10sIGJvb2wgY2hlY2tfb25seSkKIAogCUluaXRpYWxpemVGYXN0UGF0aExvY2tz KCk7CiAKKwlSZWdpc3RlclNobWVtU3RydWN0cygpOworCiAJQ3JlYXRlU2hhcmVkTWVtb3J5QW5k U2VtYXBob3JlcygpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv bGF1bmNoX2JhY2tlbmQuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbGF1bmNoX2JhY2tlbmQu YwppbmRleCA5MjZmZDZmMjcwMC4uOGY2MzgxMThjZGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvbGF1bmNoX2JhY2tlbmQuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2xhdW5jaF9iYWNrZW5kLmMKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlv bi93YWxyZWNlaXZlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZHNtLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9pb193b3JrZXIuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcGdfc2htZW0uaCIKICNpbmNsdWRlICJ0Y29wL2JhY2tlbmRfc3RhcnR1cC5oIgogI2lu Y2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCkBAIC0xMDQsMTIgKzEwNSwxMCBAQCB0eXBlZGVmIHN0 cnVjdAogCWNoYXIJICAqKkxXTG9ja1RyYW5jaGVOYW1lczsKIAlpbnQJCSAgICpMV0xvY2tDb3Vu dGVyOwogCUxXTG9ja1BhZGRlZCAqTWFpbkxXTG9ja0FycmF5OwotCXNsb2NrX3QgICAgKlByb2NT dHJ1Y3RMb2NrOwogCVBST0NfSERSICAgKlByb2NHbG9iYWw7CiAJUEdQUk9DCSAgICpBdXhpbGlh cnlQcm9jczsKIAlQR1BST0MJICAgKlByZXBhcmVkWGFjdFByb2NzOwogCXZvbGF0aWxlIFBNU2ln bmFsRGF0YSAqUE1TaWduYWxTdGF0ZTsKLQlQcm9jU2lnbmFsSGVhZGVyICpQcm9jU2lnbmFsOwog CXBpZF90CQlQb3N0bWFzdGVyUGlkOwogCVRpbWVzdGFtcFR6IFBnU3RhcnRUaW1lOwogCVRpbWVz dGFtcFR6IFBnUmVsb2FkVGltZTsKQEAgLTY3OCw4ICs2NzcsMTIgQEAgU3ViUG9zdG1hc3Rlck1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCS8qIFJlc3RvcmUgYmFzaWMgc2hhcmVkIG1l bW9yeSBwb2ludGVycyAqLwogCWlmIChVc2VkU2htZW1TZWdBZGRyICE9IE5VTEwpCisJewogCQlJ bml0U2htZW1BbGxvY2F0b3IoVXNlZFNobWVtU2VnQWRkcik7CiAKKwkJUmVnaXN0ZXJTaG1lbVN0 cnVjdHMoKTsKKwl9CisKIAkvKgogCSAqIFJ1biB0aGUgYXBwcm9wcmlhdGUgTWFpbiBmdW5jdGlv bgogCSAqLwpAQCAtNzM1LDEyICs3MzgsMTAgQEAgc2F2ZV9iYWNrZW5kX3ZhcmlhYmxlcyhCYWNr ZW5kUGFyYW1ldGVycyAqcGFyYW0sCiAJcGFyYW0tPkxXTG9ja1RyYW5jaGVOYW1lcyA9IExXTG9j a1RyYW5jaGVOYW1lczsKIAlwYXJhbS0+TFdMb2NrQ291bnRlciA9IExXTG9ja0NvdW50ZXI7CiAJ cGFyYW0tPk1haW5MV0xvY2tBcnJheSA9IE1haW5MV0xvY2tBcnJheTsKLQlwYXJhbS0+UHJvY1N0 cnVjdExvY2sgPSBQcm9jU3RydWN0TG9jazsKIAlwYXJhbS0+UHJvY0dsb2JhbCA9IFByb2NHbG9i YWw7CiAJcGFyYW0tPkF1eGlsaWFyeVByb2NzID0gQXV4aWxpYXJ5UHJvY3M7CiAJcGFyYW0tPlBy ZXBhcmVkWGFjdFByb2NzID0gUHJlcGFyZWRYYWN0UHJvY3M7CiAJcGFyYW0tPlBNU2lnbmFsU3Rh dGUgPSBQTVNpZ25hbFN0YXRlOwotCXBhcmFtLT5Qcm9jU2lnbmFsID0gUHJvY1NpZ25hbDsKIAog CXBhcmFtLT5Qb3N0bWFzdGVyUGlkID0gUG9zdG1hc3RlclBpZDsKIAlwYXJhbS0+UGdTdGFydFRp bWUgPSBQZ1N0YXJ0VGltZTsKQEAgLTk5NSwxMiArOTk2LDEwIEBAIHJlc3RvcmVfYmFja2VuZF92 YXJpYWJsZXMoQmFja2VuZFBhcmFtZXRlcnMgKnBhcmFtKQogCUxXTG9ja1RyYW5jaGVOYW1lcyA9 IHBhcmFtLT5MV0xvY2tUcmFuY2hlTmFtZXM7CiAJTFdMb2NrQ291bnRlciA9IHBhcmFtLT5MV0xv Y2tDb3VudGVyOwogCU1haW5MV0xvY2tBcnJheSA9IHBhcmFtLT5NYWluTFdMb2NrQXJyYXk7Ci0J UHJvY1N0cnVjdExvY2sgPSBwYXJhbS0+UHJvY1N0cnVjdExvY2s7CiAJUHJvY0dsb2JhbCA9IHBh cmFtLT5Qcm9jR2xvYmFsOwogCUF1eGlsaWFyeVByb2NzID0gcGFyYW0tPkF1eGlsaWFyeVByb2Nz OwogCVByZXBhcmVkWGFjdFByb2NzID0gcGFyYW0tPlByZXBhcmVkWGFjdFByb2NzOwogCVBNU2ln bmFsU3RhdGUgPSBwYXJhbS0+UE1TaWduYWxTdGF0ZTsKLQlQcm9jU2lnbmFsID0gcGFyYW0tPlBy b2NTaWduYWw7CiAKIAlQb3N0bWFzdGVyUGlkID0gcGFyYW0tPlBvc3RtYXN0ZXJQaWQ7CiAJUGdT dGFydFRpbWUgPSBwYXJhbS0+UGdTdGFydFRpbWU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rl ci5jCmluZGV4IGQ2MTMzYmZlYmM2Li5mNmQzMzY5ZjkxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9w b3N0bWFzdGVyLmMKQEAgLTk2OCw2ICs5NjgsOCBAQCBQb3N0bWFzdGVyTWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQogCSAqIHNoYXJlZCBtZW1vcnksIGRldGVybWluZSB0aGUgdmFsdWUgb2Yg YW55IHJ1bnRpbWUtY29tcHV0ZWQgR1VDcyB0aGF0CiAJICogZGVwZW5kIG9uIHRoZSBhbW91bnQg b2Ygc2hhcmVkIG1lbW9yeSByZXF1aXJlZC4KIAkgKi8KKwlSZWdpc3RlclNobWVtU3RydWN0cygp OworCiAJSW5pdGlhbGl6ZVNobWVtR1VDcygpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL2RzbS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtLmMKaW5k ZXggNmE1YjE2MzkyZjcuLjU1ZjQ2Yzc2ODdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9kc20uYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc20uYwpAQCAtMTA4 LDcgKzEwOCwxNSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNfbWFpbl9yZWdpb25fZHNtX2hhbmRs ZShkc21faGFuZGxlIGhhbmRsZSk7CiBzdGF0aWMgYm9vbCBkc21faW5pdF9kb25lID0gZmFsc2U7 CiAKIC8qIFByZWFsbG9jYXRlZCBEU00gc3BhY2UgaW4gdGhlIG1haW4gc2hhcmVkIG1lbW9yeSBy ZWdpb24uICovCi1zdGF0aWMgdm9pZCAqZHNtX21haW5fc3BhY2VfYmVnaW4gPSBOVUxMOworc3Rh dGljIHZvaWQgZHNtX21haW5fc3BhY2VfaW5pdCh2b2lkICopOworCitzdGF0aWMgU2htZW1TdHJ1 Y3REZXNjIGRzbV9tYWluX3NwYWNlX3NobWVtX2Rlc2MgPSB7CisJLm5hbWUgPSAiUHJlYWxsb2Nh dGVkIERTTSIsCisJLnNpemUgPSAwLCAvKiBkeW5hbWljICovCisJLmluaXRfZm4gPSBkc21fbWFp bl9zcGFjZV9pbml0LAorfTsKKworI2RlZmluZSBkc21fbWFpbl9zcGFjZV9iZWdpbiAoZHNtX21h aW5fc3BhY2Vfc2htZW1fZGVzYy5wdHIpCiAKIC8qCiAgKiBMaXN0IG9mIGR5bmFtaWMgc2hhcmVk IG1lbW9yeSBzZWdtZW50cyB1c2VkIGJ5IHRoaXMgYmFja2VuZC4KQEAgLTQ3OSwyNyArNDg3LDI5 IEBAIHZvaWQKIGRzbV9zaG1lbV9pbml0KHZvaWQpCiB7CiAJc2l6ZV90CQlzaXplID0gZHNtX2Vz dGltYXRlX3NpemUoKTsKLQlib29sCQlmb3VuZDsKIAogCWlmIChzaXplID09IDApCiAJCXJldHVy bjsKIAotCWRzbV9tYWluX3NwYWNlX2JlZ2luID0gU2htZW1Jbml0U3RydWN0KCJQcmVhbGxvY2F0 ZWQgRFNNIiwgc2l6ZSwgJmZvdW5kKTsKLQlpZiAoIWZvdW5kKQotCXsKLQkJRnJlZVBhZ2VNYW5h Z2VyICpmcG0gPSAoRnJlZVBhZ2VNYW5hZ2VyICopIGRzbV9tYWluX3NwYWNlX2JlZ2luOwotCQlz aXplX3QJCWZpcnN0X3BhZ2UgPSAwOwotCQlzaXplX3QJCXBhZ2VzOwotCi0JCS8qIFJlc2VydmUg c3BhY2UgZm9yIHRoZSBGcmVlUGFnZU1hbmFnZXIuICovCi0JCXdoaWxlIChmaXJzdF9wYWdlICog RlBNX1BBR0VfU0laRSA8IHNpemVvZihGcmVlUGFnZU1hbmFnZXIpKQotCQkJKytmaXJzdF9wYWdl OwotCi0JCS8qIEluaXRpYWxpemUgaXQgYW5kIGdpdmUgaXQgYWxsIHRoZSByZXN0IG9mIHRoZSBz cGFjZS4gKi8KLQkJRnJlZVBhZ2VNYW5hZ2VySW5pdGlhbGl6ZShmcG0sIGRzbV9tYWluX3NwYWNl X2JlZ2luKTsKLQkJcGFnZXMgPSAoc2l6ZSAvIEZQTV9QQUdFX1NJWkUpIC0gZmlyc3RfcGFnZTsK LQkJRnJlZVBhZ2VNYW5hZ2VyUHV0KGZwbSwgZmlyc3RfcGFnZSwgcGFnZXMpOwotCX0KKwlTaG1l bVJlZ2lzdGVyU3RydWN0KCZkc21fbWFpbl9zcGFjZV9zaG1lbV9kZXNjKTsKK30KKworc3RhdGlj IHZvaWQKK2RzbV9tYWluX3NwYWNlX2luaXQodm9pZCAqYXJnKQoreworCXNpemVfdAkJc2l6ZSA9 IGRzbV9tYWluX3NwYWNlX3NobWVtX2Rlc2Muc2l6ZTsKKwlGcmVlUGFnZU1hbmFnZXIgKmZwbSA9 IChGcmVlUGFnZU1hbmFnZXIgKikgZHNtX21haW5fc3BhY2VfYmVnaW47CisJc2l6ZV90CQlmaXJz dF9wYWdlID0gMDsKKwlzaXplX3QJCXBhZ2VzOworCisJLyogUmVzZXJ2ZSBzcGFjZSBmb3IgdGhl IEZyZWVQYWdlTWFuYWdlci4gKi8KKwl3aGlsZSAoZmlyc3RfcGFnZSAqIEZQTV9QQUdFX1NJWkUg PCBzaXplb2YoRnJlZVBhZ2VNYW5hZ2VyKSkKKwkJKytmaXJzdF9wYWdlOworCisJLyogSW5pdGlh bGl6ZSBpdCBhbmQgZ2l2ZSBpdCBhbGwgdGhlIHJlc3Qgb2YgdGhlIHNwYWNlLiAqLworCUZyZWVQ YWdlTWFuYWdlckluaXRpYWxpemUoZnBtLCBkc21fbWFpbl9zcGFjZV9iZWdpbik7CisJcGFnZXMg PSAoc2l6ZSAvIEZQTV9QQUdFX1NJWkUpIC0gZmlyc3RfcGFnZTsKKwlGcmVlUGFnZU1hbmFnZXJQ dXQoZnBtLCBmaXJzdF9wYWdlLCBwYWdlcyk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9kc21fcmVnaXN0cnkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L2RzbV9yZWdpc3RyeS5jCmluZGV4IDA2OGMxNTc3YjEyLi44ODJhZjgzYjdiMiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtX3JlZ2lzdHJ5LmMKKysrIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvZHNtX3JlZ2lzdHJ5LmMKQEAgLTU0LDcgKzU0LDE1IEBAIHR5cGVkZWYg c3RydWN0IERTTVJlZ2lzdHJ5Q3R4U3RydWN0CiAJZHNoYXNoX3RhYmxlX2hhbmRsZSBkc2hoOwog fSBEU01SZWdpc3RyeUN0eFN0cnVjdDsKIAotc3RhdGljIERTTVJlZ2lzdHJ5Q3R4U3RydWN0ICpE U01SZWdpc3RyeUN0eDsKK3N0YXRpYyB2b2lkIERTTVJlZ2lzdHJ5Q3R4U2htZW1Jbml0KHZvaWQg KmFyZyk7CisKK3N0YXRpYyBTaG1lbVN0cnVjdERlc2MgRFNNUmVnaXN0cnlDdHhTaG1lbURlc2Mg PSB7CisJLm5hbWUgPSAiRFNNIFJlZ2lzdHJ5IERhdGEiLAorCS5zaXplID0gc2l6ZW9mKERTTVJl Z2lzdHJ5Q3R4U3RydWN0KSwKKwkuaW5pdF9mbiA9IERTTVJlZ2lzdHJ5Q3R4U2htZW1Jbml0LAor fTsKKworI2RlZmluZSBEU01SZWdpc3RyeUN0eCAoKERTTVJlZ2lzdHJ5Q3R4U3RydWN0ICopIERT TVJlZ2lzdHJ5Q3R4U2htZW1EZXNjLnB0cikKIAogdHlwZWRlZiBzdHJ1Y3QgTmFtZWREU01TdGF0 ZQogewpAQCAtMTEzLDI3ICsxMjEsMTcgQEAgc3RhdGljIGNvbnN0IGRzaGFzaF9wYXJhbWV0ZXJz IGRzaF9wYXJhbXMgPSB7CiBzdGF0aWMgZHNhX2FyZWEgKmRzbV9yZWdpc3RyeV9kc2E7CiBzdGF0 aWMgZHNoYXNoX3RhYmxlICpkc21fcmVnaXN0cnlfdGFibGU7CiAKLVNpemUKLURTTVJlZ2lzdHJ5 U2htZW1TaXplKHZvaWQpCit2b2lkCitEU01SZWdpc3RyeVNobWVtUmVnaXN0ZXIodm9pZCkKIHsK LQlyZXR1cm4gTUFYQUxJR04oc2l6ZW9mKERTTVJlZ2lzdHJ5Q3R4U3RydWN0KSk7CisJU2htZW1S ZWdpc3RlclN0cnVjdCgmRFNNUmVnaXN0cnlDdHhTaG1lbURlc2MpOwogfQogCi12b2lkCi1EU01S ZWdpc3RyeVNobWVtSW5pdCh2b2lkKQorc3RhdGljIHZvaWQKK0RTTVJlZ2lzdHJ5Q3R4U2htZW1J bml0KHZvaWQgKikKIHsKLQlib29sCQlmb3VuZDsKLQotCURTTVJlZ2lzdHJ5Q3R4ID0gKERTTVJl Z2lzdHJ5Q3R4U3RydWN0ICopCi0JCVNobWVtSW5pdFN0cnVjdCgiRFNNIFJlZ2lzdHJ5IERhdGEi LAotCQkJCQkJRFNNUmVnaXN0cnlTaG1lbVNpemUoKSwKLQkJCQkJCSZmb3VuZCk7Ci0KLQlpZiAo IWZvdW5kKQotCXsKLQkJRFNNUmVnaXN0cnlDdHgtPmRzYWggPSBEU0FfSEFORExFX0lOVkFMSUQ7 Ci0JCURTTVJlZ2lzdHJ5Q3R4LT5kc2hoID0gRFNIQVNIX0hBTkRMRV9JTlZBTElEOwotCX0KKwlE U01SZWdpc3RyeUN0eC0+ZHNhaCA9IERTQV9IQU5ETEVfSU5WQUxJRDsKKwlEU01SZWdpc3RyeUN0 eC0+ZHNoaCA9IERTSEFTSF9IQU5ETEVfSU5WQUxJRDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lw Y2kuYwppbmRleCAxZjdlOTMzZDUwMC4uOTUyOTg4NjQ1ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNp LmMKQEAgLTEwMSwxMyArMTAxLDE0IEBAIENhbGN1bGF0ZVNobWVtU2l6ZSh2b2lkKQogCXNpemUg PSBhZGRfc2l6ZShzaXplLCBoYXNoX2VzdGltYXRlX3NpemUoU0hNRU1fSU5ERVhfU0laRSwKIAkJ CQkJCQkJCQkJIHNpemVvZihTaG1lbUluZGV4RW50KSkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXpl LCBkc21fZXN0aW1hdGVfc2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgRFNNUmVnaXN0 cnlTaG1lbVNpemUoKSk7CisKKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2htZW1SZWdpc3RlcmVk U2l6ZSgpKTsKKworCS8qIGxlZ2FjeSBzdWJzeXN0bWVzICovCiAJc2l6ZSA9IGFkZF9zaXplKHNp emUsIEJ1ZmZlck1hbmFnZXJTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIExv Y2tNYW5hZ2VyU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBQcmVkaWNhdGVM b2NrU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBQcm9jR2xvYmFsU2htZW1T aXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBYTG9nUHJlZmV0Y2hTaG1lbVNpemUoKSk7 Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFZhcnN1cFNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRk X3NpemUoc2l6ZSwgWExPR1NobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgWExv Z1JlY292ZXJ5U2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBDTE9HU2htZW1T aXplKCkpOwpAQCAtMTE3LDExICsxMTgsNyBAQCBDYWxjdWxhdGVTaG1lbVNpemUodm9pZCkKIAlz aXplID0gYWRkX3NpemUoc2l6ZSwgQmFja2dyb3VuZFdvcmtlclNobWVtU2l6ZSgpKTsKIAlzaXpl ID0gYWRkX3NpemUoc2l6ZSwgTXVsdGlYYWN0U2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6 ZShzaXplLCBMV0xvY2tTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFByb2NB cnJheVNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgQmFja2VuZFN0YXR1c1No bWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2hhcmVkSW52YWxTaG1lbVNpemUo KSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFBNU2lnbmFsU2htZW1TaXplKCkpOwotCXNpemUg PSBhZGRfc2l6ZShzaXplLCBQcm9jU2lnbmFsU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6 ZShzaXplLCBDaGVja3BvaW50ZXJTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUs IEF1dG9WYWN1dW1TaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFJlcGxpY2F0 aW9uU2xvdHNTaG1lbVNpemUoKSk7CkBAIC0yMTcsNiArMjE0LDEwIEBAIENyZWF0ZVNoYXJlZE1l bW9yeUFuZFNlbWFwaG9yZXModm9pZCkKIAkgKi8KIAlJbml0U2htZW1BbGxvY2F0b3Ioc2VnaGRy KTsKIAorCS8qIFJlc2VydmUgc3BhY2UgZm9yIHNlbWFwaG9yZXMuICovCisJaWYgKCFJc1VuZGVy UG9zdG1hc3RlcikKKwkJUEdSZXNlcnZlU2VtYXBob3JlcyhQcm9jR2xvYmFsU2VtYXMoKSk7CisK IAkvKiBJbml0aWFsaXplIHN1YnN5c3RlbXMgKi8KIAlDcmVhdGVPckF0dGFjaFNobWVtU3RydWN0 cygpOwogCkBAIC0yMzAsNiArMjMxLDE5IEBAIENyZWF0ZVNoYXJlZE1lbW9yeUFuZFNlbWFwaG9y ZXModm9pZCkKIAkJc2htZW1fc3RhcnR1cF9ob29rKCk7CiB9CiAKK3ZvaWQKK1JlZ2lzdGVyU2ht ZW1TdHJ1Y3RzKHZvaWQpCit7CisJRFNNUmVnaXN0cnlTaG1lbVJlZ2lzdGVyKCk7CisKKwlQcm9j R2xvYmFsU2htZW1SZWdpc3RlcigpOworCVZhcnN1cFNobWVtUmVnaXN0ZXIoKTsKKwlQcm9jQXJy YXlTaG1lbVJlZ2lzdGVyKCk7CisJU2hhcmVkSW52YWxTaG1lbVJlZ2lzdGVyKCk7CisJUE1TaWdu YWxTaG1lbVJlZ2lzdGVyKCk7CisJUHJvY1NpZ25hbFNobWVtUmVnaXN0ZXIoKTsKK30KKwogLyoK ICAqIEluaXRpYWxpemUgdmFyaW91cyBzdWJzeXN0ZW1zLCBzZXR0aW5nIHVwIHRoZWlyIGRhdGEg c3RydWN0dXJlcyBpbgogICogc2hhcmVkIG1lbW9yeS4KQEAgLTI1OSwxNCArMjczLDIzIEBAIENy ZWF0ZU9yQXR0YWNoU2htZW1TdHJ1Y3RzKHZvaWQpCiAJICovCiAJSW5pdFNobWVtSW5kZXgoKTsK IAorI2lmZGVmIEVYRUNfQkFDS0VORAorCWlmIChJc1VuZGVyUG9zdG1hc3RlcikKKwkJU2htZW1B dHRhY2hSZWdpc3RlcmVkKCk7CisJZWxzZQorI2VuZGlmCisJeworCQlTaG1lbUluaXRSZWdpc3Rl cmVkKCk7CisJfQorCiAJZHNtX3NobWVtX2luaXQoKTsKLQlEU01SZWdpc3RyeVNobWVtSW5pdCgp OworCS8vRFNNUmVnaXN0cnlTaG1lbUluaXQoKTsKIAogCS8qCiAJICogU2V0IHVwIHhsb2csIGNs b2csIGFuZCBidWZmZXJzCiAJICovCi0JVmFyc3VwU2htZW1Jbml0KCk7CiAJWExPR1NobWVtSW5p dCgpOworCiAJWExvZ1ByZWZldGNoU2htZW1Jbml0KCk7CiAJWExvZ1JlY292ZXJ5U2htZW1Jbml0 KCk7CiAJQ0xPR1NobWVtSW5pdCgpOwpAQCAtMjg4LDIzICszMTEsMTMgQEAgQ3JlYXRlT3JBdHRh Y2hTaG1lbVN0cnVjdHModm9pZCkKIAkvKgogCSAqIFNldCB1cCBwcm9jZXNzIHRhYmxlCiAJICov Ci0JaWYgKCFJc1VuZGVyUG9zdG1hc3RlcikKLQkJSW5pdFByb2NHbG9iYWwoKTsKLQlQcm9jQXJy YXlTaG1lbUluaXQoKTsKIAlCYWNrZW5kU3RhdHVzU2htZW1Jbml0KCk7CiAJVHdvUGhhc2VTaG1l bUluaXQoKTsKIAlCYWNrZ3JvdW5kV29ya2VyU2htZW1Jbml0KCk7CiAKLQkvKgotCSAqIFNldCB1 cCBzaGFyZWQtaW52YWwgbWVzc2FnaW5nCi0JICovCi0JU2hhcmVkSW52YWxTaG1lbUluaXQoKTsK LQogCS8qCiAJICogU2V0IHVwIGludGVycHJvY2VzcyBzaWduYWxpbmcgbWVjaGFuaXNtcwogCSAq LwotCVBNU2lnbmFsU2htZW1Jbml0KCk7Ci0JUHJvY1NpZ25hbFNobWVtSW5pdCgpOwogCUNoZWNr cG9pbnRlclNobWVtSW5pdCgpOwogCUF1dG9WYWN1dW1TaG1lbUluaXQoKTsKIAlSZXBsaWNhdGlv blNsb3RzU2htZW1Jbml0KCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9w bXNpZ25hbC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcG1zaWduYWwuYwppbmRleCA0NjE4 ODIwYjMzNy4uMjM3NTI1MDBkMTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3Btc2lnbmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcG1zaWduYWwuYwpAQCAt ODAsOSArODAsMjQgQEAgc3RydWN0IFBNU2lnbmFsRGF0YQogCXNpZ19hdG9taWNfdCBQTUNoaWxk RmxhZ3NbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKIH07CiAKLS8qIFBNU2lnbmFsU3RhdGUgcG9p bnRlciBpcyB2YWxpZCBpbiBib3RoIHBvc3RtYXN0ZXIgYW5kIGNoaWxkIHByb2Nlc3NlcyAqLwor c3RhdGljIHZvaWQgUE1TaWduYWxTaG1lbUluaXQodm9pZCAqKTsKKworc3RhdGljIFNobWVtU3Ry dWN0RGVzYyBQTVNpZ25hbFNobWVtRGVzYyA9IHsKKwkubmFtZSA9ICJQTVNpZ25hbFN0YXRlIiwK Kwkuc2l6ZSA9IDAsIC8qIGR5bmFtaWMgKi8KKwkuaW5pdF9mbiA9IFBNU2lnbmFsU2htZW1Jbml0 LAorfTsKKworLyoKKyAqIFBNU2lnbmFsU3RhdGUgcG9pbnRlciBpcyB2YWxpZCBpbiBib3RoIHBv c3RtYXN0ZXIgYW5kIGNoaWxkIHByb2Nlc3NlcworICoKKyAqIFRoaXMgaXMgYSBzdGFuZC1hbG9u ZSB2YXJpYWJsZSByYXRoZXIgdGhhbiBqdXN0IGEgI2RlZmluZSBvdmVyCisgKiBQTVNpZ25hbFNo bWVtRGVzYy5wdHIgYmVjYXVzZSBpdCBpcyBuZWVkZWQgZWFybHkgYXQgYmFja2VuZCBzdGFydHVw IGFuZAorICogcGFzc2VkIGFzIGEgYmFja2VuZCBwYXJhbWV0ZXIgaW4gRVhFQ19CQUNLRU5EIG1v ZGUKKyAqLwogTk9OX0VYRUNfU1RBVElDIHZvbGF0aWxlIFBNU2lnbmFsRGF0YSAqUE1TaWduYWxT dGF0ZSA9IE5VTEw7CiAKKwogLyoKICAqIExvY2FsIGNvcHkgb2YgUE1TaWduYWxTdGF0ZS0+bnVt X2NoaWxkX2ZsYWdzLCBvbmx5IHZhbGlkIGluIHRoZQogICogcG9zdG1hc3Rlci4gIFBvc3RtYXN0 ZXIga2VlcHMgYSBsb2NhbCBjb3B5IHNvIHRoYXQgaXQgZG9lc24ndCBuZWVkIHRvCkBAIC0xMjMs MzkgKzEzOCwyOCBAQCBwb3N0bWFzdGVyX2RlYXRoX2hhbmRsZXIoU0lHTkFMX0FSR1MpCiBzdGF0 aWMgdm9pZCBNYXJrUG9zdG1hc3RlckNoaWxkSW5hY3RpdmUoaW50IGNvZGUsIERhdHVtIGFyZyk7 CiAKIC8qCi0gKiBQTVNpZ25hbFNobWVtU2l6ZQotICoJCUNvbXB1dGUgc3BhY2UgbmVlZGVkIGZv ciBwbXNpZ25hbC5jJ3Mgc2hhcmVkIG1lbW9yeQorICogUE1TaWduYWxTaG1lbVJlZ2lzdGVyIC0g UmVnaXN0ZXIgb3VyIHNoYXJlZCBtZW1vcnkKICAqLwotU2l6ZQotUE1TaWduYWxTaG1lbVNpemUo dm9pZCkKK3ZvaWQKK1BNU2lnbmFsU2htZW1SZWdpc3Rlcih2b2lkKQogewogCVNpemUJCXNpemU7 CiAKIAlzaXplID0gb2Zmc2V0b2YoUE1TaWduYWxEYXRhLCBQTUNoaWxkRmxhZ3MpOwogCXNpemUg PSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShNYXhMaXZlUG9zdG1hc3RlckNoaWxkcmVuKCksCiAJ CQkJCQkJCSAgIHNpemVvZihzaWdfYXRvbWljX3QpKSk7Ci0KLQlyZXR1cm4gc2l6ZTsKKwlQTVNp Z25hbFNobWVtRGVzYy5zaXplID0gc2l6ZTsKKwlTaG1lbVJlZ2lzdGVyU3RydWN0KCZQTVNpZ25h bFNobWVtRGVzYyk7CiB9CiAKLS8qCi0gKiBQTVNpZ25hbFNobWVtSW5pdCAtIGluaXRpYWxpemUg ZHVyaW5nIHNoYXJlZC1tZW1vcnkgY3JlYXRpb24KLSAqLwotdm9pZAotUE1TaWduYWxTaG1lbUlu aXQodm9pZCkKK3N0YXRpYyB2b2lkCitQTVNpZ25hbFNobWVtSW5pdCh2b2lkICphcmcpCiB7Ci0J Ym9vbAkJZm91bmQ7Ci0KLQlQTVNpZ25hbFN0YXRlID0gKFBNU2lnbmFsRGF0YSAqKQotCQlTaG1l bUluaXRTdHJ1Y3QoIlBNU2lnbmFsU3RhdGUiLCBQTVNpZ25hbFNobWVtU2l6ZSgpLCAmZm91bmQp OwotCi0JaWYgKCFmb3VuZCkKLQl7Ci0JCS8qIGluaXRpYWxpemUgYWxsIGZsYWdzIHRvIHplcm9l cyAqLwotCQlNZW1TZXQodW52b2xhdGl6ZShQTVNpZ25hbERhdGEgKiwgUE1TaWduYWxTdGF0ZSks IDAsIFBNU2lnbmFsU2htZW1TaXplKCkpOwotCQludW1fY2hpbGRfZmxhZ3MgPSBNYXhMaXZlUG9z dG1hc3RlckNoaWxkcmVuKCk7Ci0JCVBNU2lnbmFsU3RhdGUtPm51bV9jaGlsZF9mbGFncyA9IG51 bV9jaGlsZF9mbGFnczsKLQl9CisJLyogaW5pdGlhbGl6ZSBhbGwgZmxhZ3MgdG8gemVyb2VzICov CisJUE1TaWduYWxTdGF0ZSA9IFBNU2lnbmFsU2htZW1EZXNjLnB0cjsKKwlNZW1TZXQodW52b2xh dGl6ZShQTVNpZ25hbERhdGEgKiwgUE1TaWduYWxTdGF0ZSksIDAsIFBNU2lnbmFsU2htZW1EZXNj LnNpemUpOworCW51bV9jaGlsZF9mbGFncyA9IE1heExpdmVQb3N0bWFzdGVyQ2hpbGRyZW4oKTsK KwlQTVNpZ25hbFN0YXRlLT5udW1fY2hpbGRfZmxhZ3MgPSBudW1fY2hpbGRfZmxhZ3M7CiB9CiAK IC8qCkBAIC0yOTEsNiArMjk1LDcgQEAgUmVnaXN0ZXJQb3N0bWFzdGVyQ2hpbGRBY3RpdmUodm9p ZCkKIHsKIAlpbnQJCQlzbG90ID0gTXlQTUNoaWxkU2xvdDsKIAorCUFzc2VydChQTVNpZ25hbFN0 YXRlKTsKIAlBc3NlcnQoc2xvdCA+IDAgJiYgc2xvdCA8PSBQTVNpZ25hbFN0YXRlLT5udW1fY2hp bGRfZmxhZ3MpOwogCXNsb3QtLTsKIAlBc3NlcnQoUE1TaWduYWxTdGF0ZS0+UE1DaGlsZEZsYWdz W3Nsb3RdID09IFBNX0NISUxEX0FTU0lHTkVEKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL3Byb2NhcnJheS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5 LmMKaW5kZXggMzAxZjU0ZmI1YTguLjA4YzYzYmNiMmE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9w cm9jYXJyYXkuYwpAQCAtMTAxLDYgKzEwMSwxOCBAQCB0eXBlZGVmIHN0cnVjdCBQcm9jQXJyYXlT dHJ1Y3QKIAlpbnQJCQlwZ3Byb2Nub3NbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKIH0gUHJvY0Fy cmF5U3RydWN0OwogCitzdGF0aWMgdm9pZCBQcm9jQXJyYXlTaG1lbUluaXQodm9pZCAqYXJnKTsK K3N0YXRpYyB2b2lkIFByb2NBcnJheVNobWVtQXR0YWNoKHZvaWQgKmFyZyk7CisKK3N0YXRpYyBT aG1lbVN0cnVjdERlc2MgUHJvY0FycmF5U2htZW1EZXNjID0geworCS5uYW1lID0gIlByb2MgQXJy YXkiLAorCS5zaXplID0gMCwgLyogZHluYW1pYyAqLworCS5pbml0X2ZuID0gUHJvY0FycmF5U2ht ZW1Jbml0LAorCS5hdHRhY2hfZm4gPSBQcm9jQXJyYXlTaG1lbUF0dGFjaCwKK307CisKKyNkZWZp bmUgcHJvY0FycmF5ICgoUHJvY0FycmF5U3RydWN0ICopIFByb2NBcnJheVNobWVtRGVzYy5wdHIp CisKIC8qCiAgKiBTdGF0ZSBmb3IgdGhlIEdsb2JhbFZpc1Rlc3QqIGZhbWlseSBvZiBmdW5jdGlv bnMuIFRob3NlIGZ1bmN0aW9ucyBjYW4KICAqIGUuZy4gYmUgdXNlZCB0byBkZWNpZGUgaWYgYSBk ZWxldGVkIHJvdyBjYW4gYmUgcmVtb3ZlZCB3aXRob3V0IHZpb2xhdGluZwpAQCAtMjY3LDkgKzI3 OSw2IEBAIHR5cGVkZWYgZW51bSBLQVhDb21wcmVzc1JlYXNvbgogCUtBWF9TVEFSVFVQX1BST0NF U1NfSURMRSwJLyogc3RhcnR1cCBwcm9jZXNzIGlzIGFib3V0IHRvIHNsZWVwICovCiB9IEtBWENv bXByZXNzUmVhc29uOwogCi0KLXN0YXRpYyBQcm9jQXJyYXlTdHJ1Y3QgKnByb2NBcnJheTsKLQog c3RhdGljIFBHUFJPQyAqYWxsUHJvY3M7CiAKIC8qCkBAIC0yODAsOCArMjg5LDIzIEBAIHN0YXRp YyBUcmFuc2FjdGlvbklkIGNhY2hlZFhpZElzTm90SW5Qcm9ncmVzcyA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwogLyoKICAqIEJvb2trZWVwaW5nIGZvciB0cmFja2luZyBlbXVsYXRlZCB0cmFuc2Fj dGlvbnMgaW4gcmVjb3ZlcnkKICAqLwotc3RhdGljIFRyYW5zYWN0aW9uSWQgKktub3duQXNzaWdu ZWRYaWRzOwotc3RhdGljIGJvb2wgKktub3duQXNzaWduZWRYaWRzVmFsaWQ7CisKK3N0YXRpYyBT aG1lbVN0cnVjdERlc2MgS25vd25Bc3NpZ25lZFhpZHNTaG1lbURlc2MgPSB7CisJLm5hbWUgPSAi S25vd25Bc3NpZ25lZFhpZHMiLAorCS5zaXplID0gMCwgLyogZHluYW1pYyAqLworCS5pbml0X2Zu ID0gTlVMTCwKK307CisKKyNkZWZpbmUgS25vd25Bc3NpZ25lZFhpZHMgKChUcmFuc2FjdGlvbklk ICopIEtub3duQXNzaWduZWRYaWRzU2htZW1EZXNjLnB0cikKKworc3RhdGljIFNobWVtU3RydWN0 RGVzYyBLbm93bkFzc2lnbmVkWGlkc1ZhbGlkU2htZW1EZXNjID0geworCS5uYW1lID0gIktub3du QXNzaWduZWRYaWRzVmFsaWQiLAorCS5zaXplID0gMCwgLyogZHluYW1pYyAqLworCS5pbml0X2Zu ID0gTlVMTCwKK307CisKKyNkZWZpbmUgS25vd25Bc3NpZ25lZFhpZHNWYWxpZCAoKGJvb2wgKikg S25vd25Bc3NpZ25lZFhpZHNWYWxpZFNobWVtRGVzYy5wdHIpCisKIHN0YXRpYyBUcmFuc2FjdGlv bklkIGxhdGVzdE9ic2VydmVkWGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIC8qCkBAIC0z NzIsMTggKzM5NiwxOSBAQCBzdGF0aWMgaW5saW5lIEZ1bGxUcmFuc2FjdGlvbklkIEZ1bGxYaWRS ZWxhdGl2ZVRvKEZ1bGxUcmFuc2FjdGlvbklkIHJlbCwKIHN0YXRpYyB2b2lkIEdsb2JhbFZpc1Vw ZGF0ZUFwcGx5KENvbXB1dGVYaWRIb3Jpem9uc1Jlc3VsdCAqaG9yaXpvbnMpOwogCiAvKgotICog UmVwb3J0IHNoYXJlZC1tZW1vcnkgc3BhY2UgbmVlZGVkIGJ5IFByb2NBcnJheVNobWVtSW5pdAor ICogUmVnaXN0ZXIgdGhlIHNoYXJlZCBQR1BST0MgYXJyYXkgZHVyaW5nIHBvc3RtYXN0ZXIgc3Rh cnR1cC4KICAqLwotU2l6ZQotUHJvY0FycmF5U2htZW1TaXplKHZvaWQpCit2b2lkCitQcm9jQXJy YXlTaG1lbVJlZ2lzdGVyKHZvaWQpCiB7Ci0JU2l6ZQkJc2l6ZTsKLQotCS8qIFNpemUgb2YgdGhl IFByb2NBcnJheSBzdHJ1Y3R1cmUgaXRzZWxmICovCiAjZGVmaW5lIFBST0NBUlJBWV9NQVhQUk9D UwkoTWF4QmFja2VuZHMgKyBtYXhfcHJlcGFyZWRfeGFjdHMpCiAKLQlzaXplID0gb2Zmc2V0b2Yo UHJvY0FycmF5U3RydWN0LCBwZ3Byb2Nub3MpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxf c2l6ZShzaXplb2YoaW50KSwgUFJPQ0FSUkFZX01BWFBST0NTKSk7CisJLyogQ3JlYXRlIG9yIGF0 dGFjaCB0byB0aGUgUHJvY0FycmF5IHNoYXJlZCBzdHJ1Y3R1cmUgKi8KKwlQcm9jQXJyYXlTaG1l bURlc2Muc2l6ZSA9CisJCWFkZF9zaXplKG9mZnNldG9mKFByb2NBcnJheVN0cnVjdCwgcGdwcm9j bm9zKSwKKwkJCQkgbXVsX3NpemUoc2l6ZW9mKGludCksCisJCQkJCQkgIFBST0NBUlJBWV9NQVhQ Uk9DUykpOworCVNobWVtUmVnaXN0ZXJTdHJ1Y3QoJlByb2NBcnJheVNobWVtRGVzYyk7CiAKIAkv KgogCSAqIER1cmluZyBIb3QgU3RhbmRieSBwcm9jZXNzaW5nIHdlIGhhdmUgYSBkYXRhIHN0cnVj dHVyZSBjYWxsZWQKQEAgLTQwMyw2NCArNDI4LDM4IEBAIFByb2NBcnJheVNobWVtU2l6ZSh2b2lk KQogCiAJaWYgKEVuYWJsZUhvdFN0YW5kYnkpCiAJewotCQlzaXplID0gYWRkX3NpemUoc2l6ZSwK LQkJCQkJCW11bF9zaXplKHNpemVvZihUcmFuc2FjdGlvbklkKSwKLQkJCQkJCQkJIFRPVEFMX01B WF9DQUNIRURfU1VCWElEUykpOwotCQlzaXplID0gYWRkX3NpemUoc2l6ZSwKLQkJCQkJCW11bF9z aXplKHNpemVvZihib29sKSwgVE9UQUxfTUFYX0NBQ0hFRF9TVUJYSURTKSk7CisJCUtub3duQXNz aWduZWRYaWRzU2htZW1EZXNjLnNpemUgPQorCQkJbXVsX3NpemUoc2l6ZW9mKFRyYW5zYWN0aW9u SWQpLAorCQkJCQkgVE9UQUxfTUFYX0NBQ0hFRF9TVUJYSURTKTsKKwkJU2htZW1SZWdpc3RlclN0 cnVjdCgmS25vd25Bc3NpZ25lZFhpZHNTaG1lbURlc2MpOworCisJCUtub3duQXNzaWduZWRYaWRz VmFsaWRTaG1lbURlc2Muc2l6ZSA9CisJCQltdWxfc2l6ZShzaXplb2YoYm9vbCksIFRPVEFMX01B WF9DQUNIRURfU1VCWElEUyk7CisJCVNobWVtUmVnaXN0ZXJTdHJ1Y3QoJktub3duQXNzaWduZWRY aWRzVmFsaWRTaG1lbURlc2MpOwogCX0KLQotCXJldHVybiBzaXplOwogfQogCi0vKgotICogSW5p dGlhbGl6ZSB0aGUgc2hhcmVkIFBHUFJPQyBhcnJheSBkdXJpbmcgcG9zdG1hc3RlciBzdGFydHVw LgotICovCi12b2lkCi1Qcm9jQXJyYXlTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitQcm9j QXJyYXlTaG1lbUluaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kOwotCi0JLyogQ3JlYXRl IG9yIGF0dGFjaCB0byB0aGUgUHJvY0FycmF5IHNoYXJlZCBzdHJ1Y3R1cmUgKi8KLQlwcm9jQXJy YXkgPSAoUHJvY0FycmF5U3RydWN0ICopCi0JCVNobWVtSW5pdFN0cnVjdCgiUHJvYyBBcnJheSIs Ci0JCQkJCQlhZGRfc2l6ZShvZmZzZXRvZihQcm9jQXJyYXlTdHJ1Y3QsIHBncHJvY25vcyksCi0J CQkJCQkJCSBtdWxfc2l6ZShzaXplb2YoaW50KSwKLQkJCQkJCQkJCQkgIFBST0NBUlJBWV9NQVhQ Uk9DUykpLAotCQkJCQkJJmZvdW5kKTsKLQotCWlmICghZm91bmQpCi0JewotCQkvKgotCQkgKiBX ZSdyZSB0aGUgZmlyc3QgLSBpbml0aWFsaXplLgotCQkgKi8KLQkJcHJvY0FycmF5LT5udW1Qcm9j cyA9IDA7Ci0JCXByb2NBcnJheS0+bWF4UHJvY3MgPSBQUk9DQVJSQVlfTUFYUFJPQ1M7Ci0JCXBy b2NBcnJheS0+bWF4S25vd25Bc3NpZ25lZFhpZHMgPSBUT1RBTF9NQVhfQ0FDSEVEX1NVQlhJRFM7 Ci0JCXByb2NBcnJheS0+bnVtS25vd25Bc3NpZ25lZFhpZHMgPSAwOwotCQlwcm9jQXJyYXktPnRh aWxLbm93bkFzc2lnbmVkWGlkcyA9IDA7Ci0JCXByb2NBcnJheS0+aGVhZEtub3duQXNzaWduZWRY aWRzID0gMDsKLQkJcHJvY0FycmF5LT5sYXN0T3ZlcmZsb3dlZFhpZCA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwotCQlwcm9jQXJyYXktPnJlcGxpY2F0aW9uX3Nsb3RfeG1pbiA9IEludmFsaWRUcmFu c2FjdGlvbklkOwotCQlwcm9jQXJyYXktPnJlcGxpY2F0aW9uX3Nsb3RfY2F0YWxvZ194bWluID0g SW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JCVRyYW5zYW1WYXJpYWJsZXMtPnhhY3RDb21wbGV0aW9u Q291bnQgPSAxOwotCX0KKwlwcm9jQXJyYXktPm51bVByb2NzID0gMDsKKwlwcm9jQXJyYXktPm1h eFByb2NzID0gUFJPQ0FSUkFZX01BWFBST0NTOworCXByb2NBcnJheS0+bWF4S25vd25Bc3NpZ25l ZFhpZHMgPSBUT1RBTF9NQVhfQ0FDSEVEX1NVQlhJRFM7CisJcHJvY0FycmF5LT5udW1Lbm93bkFz c2lnbmVkWGlkcyA9IDA7CisJcHJvY0FycmF5LT50YWlsS25vd25Bc3NpZ25lZFhpZHMgPSAwOwor CXByb2NBcnJheS0+aGVhZEtub3duQXNzaWduZWRYaWRzID0gMDsKKwlwcm9jQXJyYXktPmxhc3RP dmVyZmxvd2VkWGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJcHJvY0FycmF5LT5yZXBsaWNh dGlvbl9zbG90X3htaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlwcm9jQXJyYXktPnJlcGxp Y2F0aW9uX3Nsb3RfY2F0YWxvZ194bWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJVHJhbnNh bVZhcmlhYmxlcy0+eGFjdENvbXBsZXRpb25Db3VudCA9IDE7CiAKIAlhbGxQcm9jcyA9IFByb2NH bG9iYWwtPmFsbFByb2NzOworfQogCi0JLyogQ3JlYXRlIG9yIGF0dGFjaCB0byB0aGUgS25vd25B c3NpZ25lZFhpZHMgYXJyYXlzIHRvbywgaWYgbmVlZGVkICovCi0JaWYgKEVuYWJsZUhvdFN0YW5k YnkpCi0JewotCQlLbm93bkFzc2lnbmVkWGlkcyA9IChUcmFuc2FjdGlvbklkICopCi0JCQlTaG1l bUluaXRTdHJ1Y3QoIktub3duQXNzaWduZWRYaWRzIiwKLQkJCQkJCQltdWxfc2l6ZShzaXplb2Yo VHJhbnNhY3Rpb25JZCksCi0JCQkJCQkJCQkgVE9UQUxfTUFYX0NBQ0hFRF9TVUJYSURTKSwKLQkJ CQkJCQkmZm91bmQpOwotCQlLbm93bkFzc2lnbmVkWGlkc1ZhbGlkID0gKGJvb2wgKikKLQkJCVNo bWVtSW5pdFN0cnVjdCgiS25vd25Bc3NpZ25lZFhpZHNWYWxpZCIsCi0JCQkJCQkJbXVsX3NpemUo c2l6ZW9mKGJvb2wpLCBUT1RBTF9NQVhfQ0FDSEVEX1NVQlhJRFMpLAotCQkJCQkJCSZmb3VuZCk7 Ci0JfQorc3RhdGljIHZvaWQKK1Byb2NBcnJheVNobWVtQXR0YWNoKHZvaWQgKmFyZykKK3sKKwlh bGxQcm9jcyA9IFByb2NHbG9iYWwtPmFsbFByb2NzOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvcHJvY3NpZ25hbC5jCmluZGV4IDhlNTY5MjJkY2VhLi41NzQzZjA4ODMyNCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpAQCAtMTAyLDcgKzEwMiwxNiBAQCBzdHJ1Y3QgUHJv Y1NpZ25hbEhlYWRlcgogI2RlZmluZSBCQVJSSUVSX0NMRUFSX0JJVChmbGFncywgdHlwZSkgXAog CSgoZmxhZ3MpICY9IH4oKCh1aW50MzIpIDEpIDw8ICh1aW50MzIpICh0eXBlKSkpCiAKLU5PTl9F WEVDX1NUQVRJQyBQcm9jU2lnbmFsSGVhZGVyICpQcm9jU2lnbmFsID0gTlVMTDsKK3N0YXRpYyB2 b2lkIFByb2NTaWduYWxTaG1lbUluaXQodm9pZCAqYXJnKTsKKworc3RhdGljIFNobWVtU3RydWN0 RGVzYyBQcm9jU2lnbmFsU2htZW1EZXNjID0geworCS5uYW1lID0gIlByb2NTaWduYWwiLAorCS5z aXplID0gMCwgLyogZHluYW1pYyAqLworCS5pbml0X2ZuID0gUHJvY1NpZ25hbFNobWVtSW5pdCwK K307CisKKyNkZWZpbmUgUHJvY1NpZ25hbCAoKFByb2NTaWduYWxIZWFkZXIgKikgUHJvY1NpZ25h bFNobWVtRGVzYy5wdHIpCisKIHN0YXRpYyBQcm9jU2lnbmFsU2xvdCAqTXlQcm9jU2lnbmFsU2xv dCA9IE5VTEw7CiAKIHN0YXRpYyBib29sIENoZWNrUHJvY1NpZ25hbChQcm9jU2lnbmFsUmVhc29u IHJlYXNvbik7CkBAIC0xMTAsNTEgKzExOSwzNyBAQCBzdGF0aWMgdm9pZCBDbGVhbnVwUHJvY1Np Z25hbFN0YXRlKGludCBzdGF0dXMsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBSZXNldFByb2NT aWduYWxCYXJyaWVyQml0cyh1aW50MzIgZmxhZ3MpOwogCiAvKgotICogUHJvY1NpZ25hbFNobWVt U2l6ZQotICoJCUNvbXB1dGUgc3BhY2UgbmVlZGVkIGZvciBQcm9jU2lnbmFsJ3Mgc2hhcmVkIG1l bW9yeQorICogUHJvY1NpZ25hbFNobWVtUmVnaXN0ZXIKKyAqCQlSZWdpc3RlciBQcm9jU2lnbmFs J3Mgc2hhcmVkIG1lbW9yeSBuZWVkcyBhdCBwb3N0bWFzdGVyIHN0YXJ0dXAKICAqLwotU2l6ZQot UHJvY1NpZ25hbFNobWVtU2l6ZSh2b2lkKQordm9pZAorUHJvY1NpZ25hbFNobWVtUmVnaXN0ZXIo dm9pZCkKIHsKIAlTaXplCQlzaXplOwogCiAJc2l6ZSA9IG11bF9zaXplKE51bVByb2NTaWduYWxT bG90cywgc2l6ZW9mKFByb2NTaWduYWxTbG90KSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG9m ZnNldG9mKFByb2NTaWduYWxIZWFkZXIsIHBzaF9zbG90KSk7Ci0JcmV0dXJuIHNpemU7CisKKwlQ cm9jU2lnbmFsU2htZW1EZXNjLnNpemUgPSBzaXplOworCVNobWVtUmVnaXN0ZXJTdHJ1Y3QoJlBy b2NTaWduYWxTaG1lbURlc2MpOwogfQogCi0vKgotICogUHJvY1NpZ25hbFNobWVtSW5pdAotICoJ CUFsbG9jYXRlIGFuZCBpbml0aWFsaXplIFByb2NTaWduYWwncyBzaGFyZWQgbWVtb3J5Ci0gKi8K LXZvaWQKLVByb2NTaWduYWxTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitQcm9jU2lnbmFs U2htZW1Jbml0KHZvaWQgKmFyZykKIHsKLQlTaXplCQlzaXplID0gUHJvY1NpZ25hbFNobWVtU2l6 ZSgpOwotCWJvb2wJCWZvdW5kOworCXBnX2F0b21pY19pbml0X3U2NCgmUHJvY1NpZ25hbC0+cHNo X2JhcnJpZXJHZW5lcmF0aW9uLCAwKTsKIAotCVByb2NTaWduYWwgPSAoUHJvY1NpZ25hbEhlYWRl ciAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIlByb2NTaWduYWwiLCBzaXplLCAmZm91bmQpOwotCi0J LyogSWYgd2UncmUgZmlyc3QsIGluaXRpYWxpemUuICovCi0JaWYgKCFmb3VuZCkKKwlmb3IgKGlu dCBpID0gMDsgaSA8IE51bVByb2NTaWduYWxTbG90czsgKytpKQogCXsKLQkJaW50CQkJaTsKLQot CQlwZ19hdG9taWNfaW5pdF91NjQoJlByb2NTaWduYWwtPnBzaF9iYXJyaWVyR2VuZXJhdGlvbiwg MCk7CisJCVByb2NTaWduYWxTbG90ICpzbG90ID0gJlByb2NTaWduYWwtPnBzaF9zbG90W2ldOwog Ci0JCWZvciAoaSA9IDA7IGkgPCBOdW1Qcm9jU2lnbmFsU2xvdHM7ICsraSkKLQkJewotCQkJUHJv Y1NpZ25hbFNsb3QgKnNsb3QgPSAmUHJvY1NpZ25hbC0+cHNoX3Nsb3RbaV07Ci0KLQkJCVNwaW5M b2NrSW5pdCgmc2xvdC0+cHNzX211dGV4KTsKLQkJCXBnX2F0b21pY19pbml0X3UzMigmc2xvdC0+ cHNzX3BpZCwgMCk7Ci0JCQlzbG90LT5wc3NfY2FuY2VsX2tleV9sZW4gPSAwOwotCQkJTWVtU2V0 KHNsb3QtPnBzc19zaWduYWxGbGFncywgMCwgc2l6ZW9mKHNsb3QtPnBzc19zaWduYWxGbGFncykp OwotCQkJcGdfYXRvbWljX2luaXRfdTY0KCZzbG90LT5wc3NfYmFycmllckdlbmVyYXRpb24sIFBH X1VJTlQ2NF9NQVgpOwotCQkJcGdfYXRvbWljX2luaXRfdTMyKCZzbG90LT5wc3NfYmFycmllckNo ZWNrTWFzaywgMCk7Ci0JCQlDb25kaXRpb25WYXJpYWJsZUluaXQoJnNsb3QtPnBzc19iYXJyaWVy Q1YpOwotCQl9CisJCVNwaW5Mb2NrSW5pdCgmc2xvdC0+cHNzX211dGV4KTsKKwkJcGdfYXRvbWlj X2luaXRfdTMyKCZzbG90LT5wc3NfcGlkLCAwKTsKKwkJc2xvdC0+cHNzX2NhbmNlbF9rZXlfbGVu ID0gMDsKKwkJTWVtU2V0KHNsb3QtPnBzc19zaWduYWxGbGFncywgMCwgc2l6ZW9mKHNsb3QtPnBz c19zaWduYWxGbGFncykpOworCQlwZ19hdG9taWNfaW5pdF91NjQoJnNsb3QtPnBzc19iYXJyaWVy R2VuZXJhdGlvbiwgUEdfVUlOVDY0X01BWCk7CisJCXBnX2F0b21pY19pbml0X3UzMigmc2xvdC0+ cHNzX2JhcnJpZXJDaGVja01hc2ssIDApOworCQlDb25kaXRpb25WYXJpYWJsZUluaXQoJnNsb3Qt PnBzc19iYXJyaWVyQ1YpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvc2htZW0uYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKaW5kZXggOWYz NjJjZTg2NDEuLmZhYTBmY2JkMjFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKQEAgLTE5LDYg KzE5LDggQEAKICAqIG1ldGhvZHMpLiAgVGhlIHJvdXRpbmVzIGluIHRoaXMgZmlsZSBhcmUgdXNl ZCBmb3IgYWxsb2NhdGluZyBhbmQKICAqIGJpbmRpbmcgdG8gc2hhcmVkIG1lbW9yeSBkYXRhIHN0 cnVjdHVyZXMuCiAgKgorICogRklYTUU6IE5PVEVTIGJlbG93IGFyZSBvdXRkYXRlZAorICoKICAq IE5PVEVTOgogICoJCShhKSBUaGVyZSBhcmUgdGhyZWUga2luZHMgb2Ygc2hhcmVkIG1lbW9yeSBk YXRhIHN0cnVjdHVyZXMKICAqCWF2YWlsYWJsZSB0byBQT1NUR1JFUzogZml4ZWQtc2l6ZSBzdHJ1 Y3R1cmVzLCBxdWV1ZXMgYW5kIGhhc2gKQEAgLTc2LDYgKzc4LDE2IEBACiAjaW5jbHVkZSAic3Rv cmFnZS9zcGluLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKIAorLyogc2l6ZSBjb25z dGFudHMgZm9yIHRoZSBzaG1lbSBpbmRleCB0YWJsZSAqLworIC8qIG1heCBzaXplIG9mIGRhdGEg c3RydWN0dXJlIHN0cmluZyBuYW1lICovCisjZGVmaW5lIFNITUVNX0lOREVYX0tFWVNJWkUJCSAo NDgpCisgLyogZXN0aW1hdGVkIHNpemUgb2YgdGhlIHNobWVtIGluZGV4IHRhYmxlIChub3QgYSBo YXJkIGxpbWl0KSAqLworI2RlZmluZSBTSE1FTV9JTkRFWF9TSVpFCQkgKDY0KQorCisvKiB0aGVz ZSBhcmUgaW4gcG9zdG1hc3RlciBwcml2YXRlIG1lbW9yeSAqLworc3RhdGljIFNobWVtU3RydWN0 RGVzYyAqcmVnaXN0cnlbU0hNRU1fSU5ERVhfU0laRV07CitzdGF0aWMgaW50IG51bV9yZWdpc3Ry YXRpb25zID0gMDsKKwogLyoKICAqIFRoaXMgaXMgdGhlIGZpcnN0IGRhdGEgc3RydWN0dXJlIHN0 b3JlZCBpbiB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50LCBhdAogICogdGhlIG9mZnNldCB0aGF0 IFBHU2htZW1IZWFkZXItPmNvbnRlbnRfb2Zmc2V0IHBvaW50cyB0by4gIEFsbG9jYXRpb25zIGJ5 CkBAIC05NSw2ICsxMDcsOSBAQCB0eXBlZGVmIHN0cnVjdCBTaG1lbUFsbG9jYXRvckRhdGEKIAog c3RhdGljIHZvaWQgKlNobWVtQWxsb2NSYXcoU2l6ZSBzaXplLCBTaXplICphbGxvY2F0ZWRfc2l6 ZSk7CiAKK3N0YXRpYyB2b2lkIHNobWVtX2hhc2hfaW5pdCh2b2lkICphcmcpOworc3RhdGljIHZv aWQgc2htZW1faGFzaF9hdHRhY2godm9pZCAqYXJnKTsKKwogLyogc2hhcmVkIG1lbW9yeSBnbG9i YWwgdmFyaWFibGVzICovCiAKIHN0YXRpYyBQR1NobWVtSGVhZGVyICpTaG1lbVNlZ0hkcjsJLyog c2hhcmVkIG1lbSBzZWdtZW50IGhlYWRlciAqLwpAQCAtMTAzLDEzICsxMTgsMTM3IEBAIHN0YXRp YyB2b2lkICpTaG1lbUVuZDsJCQkvKiBlbmQrMSBhZGRyZXNzIG9mIHNoYXJlZCBtZW1vcnkgKi8K IAogc3RhdGljIFNobWVtQWxsb2NhdG9yRGF0YSAqU2htZW1BbGxvY2F0b3I7CiBzbG9ja190ICAg ICpTaG1lbUxvY2s7CQkJLyogcG9pbnRzIHRvIFNobWVtQWxsb2NhdG9yLT5zaG1lbV9sb2NrICov Ci1zdGF0aWMgSFRBQiAqU2htZW1JbmRleCA9IE5VTEw7IC8qIHByaW1hcnkgaW5kZXggaGFzaHRh YmxlIGZvciBzaG1lbSAqLworCisKK3N0YXRpYyBTaG1lbUhhc2hEZXNjIFNobWVtSW5kZXhIYXNo RGVzYyA9IHsKKwkubmFtZSA9ICJTaG1lbUluZGV4IiwKKwkuaW5pdF9zaXplID0gU0hNRU1fSU5E RVhfU0laRSwKKwkubWF4X3NpemUgPSBTSE1FTV9JTkRFWF9TSVpFLAorfTsKKworIC8qIHByaW1h cnkgaW5kZXggaGFzaHRhYmxlIGZvciBzaG1lbSAqLworI2RlZmluZSBTaG1lbUluZGV4IChTaG1l bUluZGV4SGFzaERlc2MucHRyKQorCiAKIC8qIFRvIGdldCByZWxpYWJsZSByZXN1bHRzIGZvciBO VU1BIGlucXVpcnkgd2UgbmVlZCB0byAidG91Y2ggcGFnZXMiIG9uY2UgKi8KIHN0YXRpYyBib29s IGZpcnN0TnVtYVRvdWNoID0gdHJ1ZTsKIAogRGF0dW0JCXBnX251bWFfYXZhaWxhYmxlKFBHX0ZV TkNUSU9OX0FSR1MpOwogCisKK3ZvaWQKK1NobWVtUmVnaXN0ZXJTdHJ1Y3QoU2htZW1TdHJ1Y3RE ZXNjICpkZXNjKQoreworCWVsb2coREVCVUcyLCAiUkVHSVNURVI6ICVzIHdpdGggc2l6ZSAlemQi LCBkZXNjLT5uYW1lLCBkZXNjLT5zaXplKTsKKworCXJlZ2lzdHJ5W251bV9yZWdpc3RyYXRpb25z KytdID0gZGVzYzsKK30KKworc2l6ZV90CitTaG1lbVJlZ2lzdGVyZWRTaXplKHZvaWQpCit7CisJ c2l6ZV90CQlzaXplOworCisJc2l6ZSA9IDA7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fcmVn aXN0cmF0aW9uczsgaSsrKQorCXsKKwkJc2l6ZSA9IGFkZF9zaXplKHNpemUsIHJlZ2lzdHJ5W2ld LT5zaXplKTsKKwkJc2l6ZSA9IGFkZF9zaXplKHNpemUsIHJlZ2lzdHJ5W2ldLT5leHRyYV9zaXpl KTsKKwl9CisKKwllbG9nKERFQlVHMiwgIlNJWkU6IHRvdGFsICV6ZCIsIHNpemUpOworCisJcmV0 dXJuIHNpemU7Cit9CisKK3ZvaWQKK1NobWVtSW5pdFJlZ2lzdGVyZWQodm9pZCkKK3sKKwkvKiBT aG91bGQgYmUgY2FsbGVkIG9ubHkgYnkgdGhlIHBvc3RtYXN0ZXIgb3IgYSBzdGFuZGFsb25lIGJh Y2tlbmQuICovCisJQXNzZXJ0KCFJc1VuZGVyUG9zdG1hc3Rlcik7CisKKwlmb3IgKGludCBpID0g MDsgaSA8IG51bV9yZWdpc3RyYXRpb25zOyBpKyspCisJeworCQlzaXplX3QJCWFsbG9jYXRlZF9z aXplOworCQl2b2lkCSAgICpzdHJ1Y3RQdHI7CisJCWJvb2wJCWZvdW5kOworCQlTaG1lbUluZGV4 RW50ICpyZXN1bHQ7CisKKwkJZWxvZyhERUJVRzIsICJJTklUIFslZC8lZF06ICVzIiwgaSwgbnVt X3JlZ2lzdHJhdGlvbnMsIHJlZ2lzdHJ5W2ldLT5uYW1lKTsKKworCQkvKiBsb29rIGl0IHVwIGlu IHRoZSBzaG1lbSBpbmRleCAqLworCQlyZXN1bHQgPSAoU2htZW1JbmRleEVudCAqKQorCQkJaGFz aF9zZWFyY2goU2htZW1JbmRleCwgcmVnaXN0cnlbaV0tPm5hbWUsIEhBU0hfRU5URVJfTlVMTCwg JmZvdW5kKTsKKwkJaWYgKCFyZXN1bHQpCisJCXsKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShl cnJjb2RlKEVSUkNPREVfT1VUX09GX01FTU9SWSksCisJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBj cmVhdGUgU2htZW1JbmRleCBlbnRyeSBmb3IgZGF0YSBzdHJ1Y3R1cmUgXCIlc1wiIiwKKwkJCQkJ CQlyZWdpc3RyeVtpXS0+bmFtZSkpKTsKKwkJfQorCQlpZiAoZm91bmQpCisJCQllbG9nKEVSUk9S LCAic2htZW0gc3RydWN0IFwiJXNcIiBpcyBhbHJlYWR5IGluaXRpYWxpemVkIiwgcmVnaXN0cnlb aV0tPm5hbWUpOworCisJCS8qIGFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGl0ICovCisJCXN0cnVj dFB0ciA9IFNobWVtQWxsb2NSYXcocmVnaXN0cnlbaV0tPnNpemUsICZhbGxvY2F0ZWRfc2l6ZSk7 CisJCWlmIChzdHJ1Y3RQdHIgPT0gTlVMTCkKKwkJeworCQkJLyogb3V0IG9mIG1lbW9yeTsgcmVt b3ZlIHRoZSBmYWlsZWQgU2htZW1JbmRleCBlbnRyeSAqLworCQkJaGFzaF9zZWFyY2goU2htZW1J bmRleCwgcmVnaXN0cnlbaV0tPm5hbWUsIEhBU0hfUkVNT1ZFLCBOVUxMKTsKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT1VUX09GX01FTU9SWSksCisJCQkJCSBlcnJt c2coIm5vdCBlbm91Z2ggc2hhcmVkIG1lbW9yeSBmb3IgZGF0YSBzdHJ1Y3R1cmUiCisJCQkJCQkJ IiBcIiVzXCIgKCV6dSBieXRlcyByZXF1ZXN0ZWQpIiwKKwkJCQkJCQlyZWdpc3RyeVtpXS0+bmFt ZSwgcmVnaXN0cnlbaV0tPnNpemUpKSk7CisJCX0KKwkJcmVzdWx0LT5zaXplID0gcmVnaXN0cnlb aV0tPnNpemU7CisJCXJlc3VsdC0+YWxsb2NhdGVkX3NpemUgPSBhbGxvY2F0ZWRfc2l6ZTsKKwkJ cmVzdWx0LT5sb2NhdGlvbiA9IHN0cnVjdFB0cjsKKworCQlyZWdpc3RyeVtpXS0+cHRyID0gc3Ry dWN0UHRyOworCQlpZiAocmVnaXN0cnlbaV0tPmluaXRfZm4pCisJCQlyZWdpc3RyeVtpXS0+aW5p dF9mbihyZWdpc3RyeVtpXS0+aW5pdF9mbl9hcmcpOworCX0KK30KKworI2lmZGVmIEVYRUNfQkFD S0VORAordm9pZAorU2htZW1BdHRhY2hSZWdpc3RlcmVkKHZvaWQpCit7CisJLyogTXVzdCBiZSBp bml0aWFsaXppbmcgYSAobm9uLXN0YW5kYWxvbmUpIGJhY2tlbmQgKi8KKwlBc3NlcnQoSXNVbmRl clBvc3RtYXN0ZXIpOworCUFzc2VydChTaG1lbUFsbG9jYXRvci0+aW5kZXggIT0gTlVMTCk7CisK KwlMV0xvY2tBY3F1aXJlKFNobWVtSW5kZXhMb2NrLCBMV19FWENMVVNJVkUpOworCisJZm9yIChp bnQgaSA9IDA7IGkgPCBudW1fcmVnaXN0cmF0aW9uczsgaSsrKQorCXsKKwkJYm9vbAkJZm91bmQ7 CisJCVNobWVtSW5kZXhFbnQgKnJlc3VsdDsKKworCQllbG9nKExPRywgIkFUVEFDSCBbJWQvJWRd OiAlcyIsIGksIG51bV9yZWdpc3RyYXRpb25zLCByZWdpc3RyeVtpXS0+bmFtZSk7CisKKwkJLyog bG9vayBpdCB1cCBpbiB0aGUgc2htZW0gaW5kZXggKi8KKwkJcmVzdWx0ID0gKFNobWVtSW5kZXhF bnQgKikKKwkJCWhhc2hfc2VhcmNoKFNobWVtSW5kZXgsIHJlZ2lzdHJ5W2ldLT5uYW1lLCBIQVNI X0ZJTkQsICZmb3VuZCk7CisJCWlmICghZm91bmQpCisJCXsKKwkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCShlcnJjb2RlKEVSUkNPREVfT1VUX09GX01FTU9SWSksCisJCQkJCSBlcnJtc2coImNvdWxk IG5vdCBmaW5kIFNobWVtSW5kZXggZW50cnkgZm9yIGRhdGEgc3RydWN0dXJlIFwiJXNcIiIsCisJ CQkJCQkJcmVnaXN0cnlbaV0tPm5hbWUpKSk7CisJCX0KKworCQlyZWdpc3RyeVtpXS0+cHRyID0g cmVzdWx0LT5sb2NhdGlvbjsKKworCQlpZiAocmVnaXN0cnlbaV0tPmF0dGFjaF9mbikKKwkJCXJl Z2lzdHJ5W2ldLT5hdHRhY2hfZm4ocmVnaXN0cnlbaV0tPmF0dGFjaF9mbl9hcmcpOworCX0KKwor CUxXTG9ja1JlbGVhc2UoU2htZW1JbmRleExvY2spOworfQorI2VuZGlmCisKIC8qCiAgKglJbml0 U2htZW1BbGxvY2F0b3IoKSAtLS0gc2V0IHVwIGJhc2ljIHBvaW50ZXJzIHRvIHNoYXJlZCBtZW1v cnkuCiAgKgpAQCAtMjkyLDYgKzQzMSw5OCBAQCBJbml0U2htZW1JbmRleCh2b2lkKQogCQkJCQkJ CSAgIEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyk7CiB9CiAKKy8qCisgKiBTaG1lbUluaXRIYXNo IC0tIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSwgb3IgYXR0YWNoIHRvLCBhCisgKgkJc2hhcmVkIG1l bW9yeSBoYXNoIHRhYmxlLgorICoKKyAqIFdlIGFzc3VtZSBjYWxsZXIgaXMgZG9pbmcgc29tZSBr aW5kIG9mIHN5bmNocm9uaXphdGlvbgorICogc28gdGhhdCB0d28gcHJvY2Vzc2VzIGRvbid0IHRy eSB0byBjcmVhdGUvaW5pdGlhbGl6ZSB0aGUgc2FtZQorICogdGFibGUgYXQgb25jZS4gIChJbiBw cmFjdGljZSwgYWxsIGNyZWF0aW9ucyBhcmUgZG9uZSBpbiB0aGUgcG9zdG1hc3RlcgorICogcHJv Y2VzczsgY2hpbGQgcHJvY2Vzc2VzIHNob3VsZCBhbHdheXMgYmUgYXR0YWNoaW5nIHRvIGV4aXN0 aW5nIHRhYmxlcy4pCisgKgorICogbWF4X3NpemUgaXMgdGhlIGVzdGltYXRlZCBtYXhpbXVtIG51 bWJlciBvZiBoYXNodGFibGUgZW50cmllcy4gIFRoaXMgaXMKKyAqIG5vdCBhIGhhcmQgbGltaXQs IGJ1dCB0aGUgYWNjZXNzIGVmZmljaWVuY3kgd2lsbCBkZWdyYWRlIGlmIGl0IGlzCisgKiBleGNl ZWRlZCBzdWJzdGFudGlhbGx5IChzaW5jZSBpdCdzIHVzZWQgdG8gY29tcHV0ZSBkaXJlY3Rvcnkg c2l6ZSBhbmQKKyAqIHRoZSBoYXNoIHRhYmxlIGJ1Y2tldHMgd2lsbCBnZXQgb3ZlcmZ1bGwpLgor ICoKKyAqIGluaXRfc2l6ZSBpcyB0aGUgbnVtYmVyIG9mIGhhc2h0YWJsZSBlbnRyaWVzIHRvIHBy ZWFsbG9jYXRlLiAgRm9yIGEgdGFibGUKKyAqIHdob3NlIG1heGltdW0gc2l6ZSBpcyBjZXJ0YWlu LCB0aGlzIHNob3VsZCBiZSBlcXVhbCB0byBtYXhfc2l6ZTsgdGhhdAorICogZW5zdXJlcyB0aGF0 IG5vIHJ1bi10aW1lIG91dC1vZi1zaGFyZWQtbWVtb3J5IGZhaWx1cmVzIGNhbiBvY2N1ci4KKyAq CisgKiAqaW5mb1AgYW5kIGhhc2hfZmxhZ3MgbXVzdCBzcGVjaWZ5IGF0IGxlYXN0IHRoZSBlbnRy eSBzaXplcyBhbmQga2V5CisgKiBjb21wYXJpc29uIHNlbWFudGljcyAoc2VlIGhhc2hfY3JlYXRl KCkpLiAgRmxhZyBiaXRzIGFuZCB2YWx1ZXMgc3BlY2lmaWMKKyAqIHRvIHNoYXJlZC1tZW1vcnkg aGFzaCB0YWJsZXMgYXJlIGFkZGVkIGhlcmUsIGV4Y2VwdCB0aGF0IGNhbGxlcnMgbWF5CisgKiBj aG9vc2UgdG8gc3BlY2lmeSBIQVNIX1BBUlRJVElPTiBhbmQvb3IgSEFTSF9GSVhFRF9TSVpFLgor ICoKKyAqIE5vdGU6IGJlZm9yZSBQb3N0Z3JlcyA5LjAsIHRoaXMgZnVuY3Rpb24gcmV0dXJuZWQg TlVMTCBmb3Igc29tZSBmYWlsdXJlCisgKiBjYXNlcy4gIE5vdywgaXQgYWx3YXlzIHRocm93cyBl cnJvciBpbnN0ZWFkLCBzbyBjYWxsZXJzIG5lZWQgbm90IGNoZWNrCisgKiBmb3IgTlVMTC4KKyAq Lwordm9pZAorU2htZW1SZWdpc3Rlckhhc2goU2htZW1IYXNoRGVzYyAqZGVzYywJCS8qIGNvbmZp Z3VyYXRpb24gKi8KKwkJCQkgIEhBU0hDVEwgKmluZm9QLAkvKiBpbmZvIGFib3V0IGtleSBhbmQg YnVja2V0IHNpemUgKi8KKwkJCQkgIGludCBoYXNoX2ZsYWdzKQkvKiBpbmZvIGFib3V0IGluZm9Q ICovCit7CisJLyoKKwkgKiBIYXNoIHRhYmxlcyBhbGxvY2F0ZWQgaW4gc2hhcmVkIG1lbW9yeSBo YXZlIGEgZml4ZWQgZGlyZWN0b3J5OyBpdCBjYW4ndAorCSAqIGdyb3cgb3Igb3RoZXIgYmFja2Vu ZHMgd291bGRuJ3QgYmUgYWJsZSB0byBmaW5kIGl0LiBTbywgbWFrZSBzdXJlIHdlCisJICogbWFr ZSBpdCBiaWcgZW5vdWdoIHRvIHN0YXJ0IHdpdGguCisJICoKKwkgKiBUaGUgc2hhcmVkIG1lbW9y eSBhbGxvY2F0b3IgbXVzdCBiZSBzcGVjaWZpZWQgdG9vLgorCSAqLworCWluZm9QLT5kc2l6ZSA9 IGluZm9QLT5tYXhfZHNpemUgPSBoYXNoX3NlbGVjdF9kaXJzaXplKGRlc2MtPm1heF9zaXplKTsK KwlpbmZvUC0+YWxsb2MgPSBTaG1lbUFsbG9jTm9FcnJvcjsKKwloYXNoX2ZsYWdzIHw9IEhBU0hf U0hBUkVEX01FTSB8IEhBU0hfQUxMT0MgfCBIQVNIX0RJUlNJWkU7CisKKwkvKiBsb29rIGl0IHVw IGluIHRoZSBzaG1lbSBpbmRleCAqLworCW1lbXNldCgmZGVzYy0+YmFzZV9kZXNjLCAwLCBzaXpl b2YoZGVzYy0+YmFzZV9kZXNjKSk7CisJZGVzYy0+YmFzZV9kZXNjLm5hbWUgPSBkZXNjLT5uYW1l OworCWRlc2MtPmJhc2VfZGVzYy5zaXplID0gaGFzaF9nZXRfc2hhcmVkX3NpemUoaW5mb1AsIGhh c2hfZmxhZ3MpOworCWRlc2MtPmJhc2VfZGVzYy5pbml0X2ZuID0gc2htZW1faGFzaF9pbml0Owor CWRlc2MtPmJhc2VfZGVzYy5pbml0X2ZuX2FyZyA9IGRlc2M7CisJZGVzYy0+YmFzZV9kZXNjLmF0 dGFjaF9mbiA9IHNobWVtX2hhc2hfYXR0YWNoOworCWRlc2MtPmJhc2VfZGVzYy5hdHRhY2hfZm5f YXJnID0gZGVzYzsKKworCWRlc2MtPmJhc2VfZGVzYy5leHRyYV9zaXplID0gaGFzaF9lc3RpbWF0 ZV9zaXplKGRlc2MtPm1heF9zaXplLCBpbmZvUC0+ZW50cnlzaXplKSAtIGRlc2MtPmJhc2VfZGVz Yy5zaXplOworCisJZGVzYy0+aGFzaF9mbGFncyA9IGhhc2hfZmxhZ3M7CisJZGVzYy0+aW5mb1Ag PSBNZW1vcnlDb250ZXh0QWxsb2MoVG9wTWVtb3J5Q29udGV4dCwgc2l6ZW9mKEhBU0hDVEwpKTsK KwltZW1jcHkoZGVzYy0+aW5mb1AsIGluZm9QLCBzaXplb2YoSEFTSENUTCkpOworCisJU2htZW1S ZWdpc3RlclN0cnVjdCgmZGVzYy0+YmFzZV9kZXNjKTsKK30KKworc3RhdGljIHZvaWQKK3NobWVt X2hhc2hfaW5pdCh2b2lkICphcmcpCit7CisJU2htZW1IYXNoRGVzYyAqZGVzYyA9IChTaG1lbUhh c2hEZXNjICopIGFyZzsKKwlpbnQJCQloYXNoX2ZsYWdzID0gZGVzYy0+aGFzaF9mbGFnczsKKwor CS8qIFBhc3MgbG9jYXRpb24gb2YgaGFzaHRhYmxlIGhlYWRlciB0byBoYXNoX2NyZWF0ZSAqLwor CWRlc2MtPnB0ciA9IGRlc2MtPmJhc2VfZGVzYy5wdHI7CisJZGVzYy0+aW5mb1AtPmhjdGwgPSAo SEFTSEhEUiAqKSBkZXNjLT5wdHI7CisKKwlkZXNjLT5wdHIgPSBoYXNoX2NyZWF0ZShkZXNjLT5u YW1lLCBkZXNjLT5pbml0X3NpemUsIGRlc2MtPmluZm9QLCBoYXNoX2ZsYWdzKTsKK30KKworc3Rh dGljIHZvaWQKK3NobWVtX2hhc2hfYXR0YWNoKHZvaWQgKmFyZykKK3sKKwlTaG1lbUhhc2hEZXNj ICpkZXNjID0gKFNobWVtSGFzaERlc2MgKikgYXJnOworCWludAkJCWhhc2hfZmxhZ3MgPSBkZXNj LT5oYXNoX2ZsYWdzOworCisJLyoKKwkgKiBpZiBpdCBhbHJlYWR5IGV4aXN0cywgYXR0YWNoIHRv IGl0IHJhdGhlciB0aGFuIGFsbG9jYXRlIGFuZCBpbml0aWFsaXplCisJICogbmV3IHNwYWNlCisJ ICovCisJaGFzaF9mbGFncyB8PSBIQVNIX0FUVEFDSDsKKworCS8qIFBhc3MgbG9jYXRpb24gb2Yg aGFzaHRhYmxlIGhlYWRlciB0byBoYXNoX2NyZWF0ZSAqLworCWRlc2MtPmluZm9QLT5oY3RsID0g KEhBU0hIRFIgKikgZGVzYy0+cHRyOworCisJZGVzYy0+cHRyID0gaGFzaF9jcmVhdGUoZGVzYy0+ bmFtZSwgZGVzYy0+aW5pdF9zaXplLCBkZXNjLT5pbmZvUCwgaGFzaF9mbGFncyk7Cit9CisKIC8q CiAgKiBTaG1lbUluaXRIYXNoIC0tIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSwgb3IgYXR0YWNoIHRv LCBhCiAgKgkJc2hhcmVkIG1lbW9yeSBoYXNoIHRhYmxlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvc2ludmFsYWR0LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52 YWxhZHQuYwppbmRleCBhN2E3Y2M0ZjBhOS4uMGZlMGYyNTY5NzEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbGFkdC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3NpbnZhbGFkdC5jCkBAIC0yMDMsNyArMjAzLDE2IEBAIHR5cGVkZWYgc3RydWN0IFNJU2Vn CiAgKi8KICNkZWZpbmUgTnVtUHJvY1N0YXRlU2xvdHMJKE1heEJhY2tlbmRzICsgTlVNX0FVWElM SUFSWV9QUk9DUykKIAotc3RhdGljIFNJU2VnICpzaG1JbnZhbEJ1ZmZlcjsJLyogcG9pbnRlciB0 byB0aGUgc2hhcmVkIGludmFsIGJ1ZmZlciAqLworc3RhdGljIHZvaWQgU2hhcmVkSW52YWxTaG1l bUluaXQodm9pZCAqYXJnKTsKKworc3RhdGljIFNobWVtU3RydWN0RGVzYyBTaGFyZWRJbnZhbFNo bWVtRGVzYyA9IHsKKwkubmFtZSA9ICJzaG1JbnZhbEJ1ZmZlciIsCisJLnNpemUgPSAwLAkvKiBk eW5hbWljICovCisJLmluaXRfZm4gPSBTaGFyZWRJbnZhbFNobWVtSW5pdCwKK307CisKKy8qIHBv aW50ZXIgdG8gdGhlIHNoYXJlZCBpbnZhbCBidWZmZXIgKi8KKyNkZWZpbmUgc2htSW52YWxCdWZm ZXIgKChTSVNlZyAqKSBTaGFyZWRJbnZhbFNobWVtRGVzYy5wdHIpCiAKIAogc3RhdGljIExvY2Fs VHJhbnNhY3Rpb25JZCBuZXh0TG9jYWxUcmFuc2FjdGlvbklkOwpAQCAtMjEyLDEwICsyMjEsMTEg QEAgc3RhdGljIHZvaWQgQ2xlYW51cEludmFsaWRhdGlvblN0YXRlKGludCBzdGF0dXMsIERhdHVt IGFyZyk7CiAKIAogLyoKLSAqIFNoYXJlZEludmFsU2htZW1TaXplIC0tLSByZXR1cm4gc2hhcmVk LW1lbW9yeSBzcGFjZSBuZWVkZWQKKyAqIFNoYXJlZEludmFsU2htZW1SZWdpc3RlcgorICoJCVJl Z2lzdGVyIHNoYXJlZCBtZW1vcnkgbmVlZHMgZm9yIHRoZSBTSSBtZXNzYWdlIGJ1ZmZlcgogICov Ci1TaXplCi1TaGFyZWRJbnZhbFNobWVtU2l6ZSh2b2lkKQordm9pZAorU2hhcmVkSW52YWxTaG1l bVJlZ2lzdGVyKHZvaWQpCiB7CiAJU2l6ZQkJc2l6ZTsKIApAQCAtMjIzLDI2ICsyMzMsMTcgQEAg U2hhcmVkSW52YWxTaG1lbVNpemUodm9pZCkKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3Np emUoc2l6ZW9mKFByb2NTdGF0ZSksIE51bVByb2NTdGF0ZVNsb3RzKSk7CS8qIHByb2NTdGF0ZSAq LwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShzaXplb2YoaW50KSwgTnVtUHJvY1N0 YXRlU2xvdHMpKTsJLyogcGdwcm9jbm9zICovCiAKLQlyZXR1cm4gc2l6ZTsKKwkvKiBBbGxvY2F0 ZSBzcGFjZSBpbiBzaGFyZWQgbWVtb3J5ICovCisJU2hhcmVkSW52YWxTaG1lbURlc2Muc2l6ZSA9 IHNpemU7CisJU2htZW1SZWdpc3RlclN0cnVjdCgmU2hhcmVkSW52YWxTaG1lbURlc2MpOwogfQog Ci0vKgotICogU2hhcmVkSW52YWxTaG1lbUluaXQKLSAqCQlDcmVhdGUgYW5kIGluaXRpYWxpemUg dGhlIFNJIG1lc3NhZ2UgYnVmZmVyCi0gKi8KLXZvaWQKLVNoYXJlZEludmFsU2htZW1Jbml0KHZv aWQpCitzdGF0aWMgdm9pZAorU2hhcmVkSW52YWxTaG1lbUluaXQodm9pZCAqYXJnKQogewogCWlu dAkJCWk7Ci0JYm9vbAkJZm91bmQ7Ci0KLQkvKiBBbGxvY2F0ZSBzcGFjZSBpbiBzaGFyZWQgbWVt b3J5ICovCi0Jc2htSW52YWxCdWZmZXIgPSAoU0lTZWcgKikKLQkJU2htZW1Jbml0U3RydWN0KCJz aG1JbnZhbEJ1ZmZlciIsIFNoYXJlZEludmFsU2htZW1TaXplKCksICZmb3VuZCk7Ci0JaWYgKGZv dW5kKQotCQlyZXR1cm47CiAKLQkvKiBDbGVhciBtZXNzYWdlIGNvdW50ZXJzLCBzYXZlIHNpemUg b2YgcHJvY1N0YXRlIGFycmF5LCBpbml0IHNwaW5sb2NrICovCisJLyogQ2xlYXIgbWVzc2FnZSBj b3VudGVycywgc2F2ZSBzaXplIG9mIHByb2NTdGF0ZSBhcnJheSBGSVhNRSwgaW5pdCBzcGlubG9j ayAqLwogCXNobUludmFsQnVmZmVyLT5taW5Nc2dOdW0gPSAwOwogCXNobUludmFsQnVmZmVyLT5t YXhNc2dOdW0gPSAwOwogCXNobUludmFsQnVmZmVyLT5uZXh0VGhyZXNob2xkID0gQ0xFQU5VUF9N SU47CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwppbmRleCBjN2EwMDFiM2I3OS4uODUzNzViNTE5NWUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwpAQCAtNzMsMTMgKzczLDMzIEBAIFBHUFJPQwkgICAq TXlQcm9jID0gTlVMTDsKICAqIHJlbGF0aXZlbHkgaW5mcmVxdWVudGx5IChvbmx5IGF0IGJhY2tl bmQgc3RhcnR1cCBvciBzaHV0ZG93bikgYW5kIG5vdCBmb3IKICAqIHZlcnkgbG9uZywgc28gYSBz cGlubG9jayBpcyBva2F5LgogICovCi1OT05fRVhFQ19TVEFUSUMgc2xvY2tfdCAqUHJvY1N0cnVj dExvY2sgPSBOVUxMOworI2RlZmluZSBQcm9jU3RydWN0TG9jayAoJlByb2NHbG9iYWwtPmZyZWVQ cm9jc0xvY2spCisKK3N0YXRpYyB2b2lkIFByb2NHbG9iYWxTaG1lbUluaXQodm9pZCAqYXJnKTsK Kworc3RhdGljIFNobWVtU3RydWN0RGVzYyBQcm9jR2xvYmFsU2htZW1EZXNjID0geworCS5uYW1l ID0gIlByb2MgSGVhZGVyIiwKKwkuc2l6ZSA9IHNpemVvZihQUk9DX0hEUiksCisJLmluaXRfZm4g PSBQcm9jR2xvYmFsU2htZW1Jbml0LAorfTsKKworc3RhdGljIFNobWVtU3RydWN0RGVzYyBQcm9j R2xvYmFsQWxsUHJvY3NTaG1lbURlc2MgPSB7CisJLm5hbWUgPSAiUEdQUk9DIHN0cnVjdHVyZXMi LAorCS5zaXplID0gMCwgLyogZHluYW1pYyAqLworfTsKKworc3RhdGljIFNobWVtU3RydWN0RGVz YyBGYXN0UGF0aExvY2tBcnJheVNobWVtRGVzYyA9IHsKKwkubmFtZSA9ICJGYXN0LVBhdGggTG9j ayBBcnJheSIsCisJLnNpemUgPSAwLCAvKiBkeW5hbWljICovCit9OwogCiAvKiBQb2ludGVycyB0 byBzaGFyZWQtbWVtb3J5IHN0cnVjdHVyZXMgKi8KIFBST0NfSERSICAgKlByb2NHbG9iYWwgPSBO VUxMOwogTk9OX0VYRUNfU1RBVElDIFBHUFJPQyAqQXV4aWxpYXJ5UHJvY3MgPSBOVUxMOwogUEdQ Uk9DCSAgICpQcmVwYXJlZFhhY3RQcm9jcyA9IE5VTEw7CiAKK3N0YXRpYyB1aW50MzIgVG90YWxQ cm9jczsKKwogc3RhdGljIERlYWRMb2NrU3RhdGUgZGVhZGxvY2tfc3RhdGUgPSBEU19OT1RfWUVU X0NIRUNLRUQ7CiAKIC8qIElzIGEgZGVhZGxvY2sgY2hlY2sgcGVuZGluZz8gKi8KQEAgLTkxLDI0 ICsxMTEsNiBAQCBzdGF0aWMgdm9pZCBBdXhpbGlhcnlQcm9jS2lsbChpbnQgY29kZSwgRGF0dW0g YXJnKTsKIHN0YXRpYyB2b2lkIENoZWNrRGVhZExvY2sodm9pZCk7CiAKIAotLyoKLSAqIFJlcG9y dCBzaGFyZWQtbWVtb3J5IHNwYWNlIG5lZWRlZCBieSBQR1BST0MuCi0gKi8KLXN0YXRpYyBTaXpl Ci1QR1Byb2NTaG1lbVNpemUodm9pZCkKLXsKLQlTaXplCQlzaXplID0gMDsKLQlTaXplCQlUb3Rh bFByb2NzID0KLQkJYWRkX3NpemUoTWF4QmFja2VuZHMsIGFkZF9zaXplKE5VTV9BVVhJTElBUllf UFJPQ1MsIG1heF9wcmVwYXJlZF94YWN0cykpOwotCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11 bF9zaXplKFRvdGFsUHJvY3MsIHNpemVvZihQR1BST0MpKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNp emUsIG11bF9zaXplKFRvdGFsUHJvY3MsIHNpemVvZigqUHJvY0dsb2JhbC0+eGlkcykpKTsKLQlz aXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoVG90YWxQcm9jcywgc2l6ZW9mKCpQcm9jR2xv YmFsLT5zdWJ4aWRTdGF0ZXMpKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKFRv dGFsUHJvY3MsIHNpemVvZigqUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MpKSk7Ci0KLQlyZXR1cm4g c2l6ZTsKLX0KLQogLyoKICAqIFJlcG9ydCBzaGFyZWQtbWVtb3J5IHNwYWNlIG5lZWRlZCBieSBG YXN0LVBhdGggbG9ja3MuCiAgKi8KQEAgLTExNiw4ICsxMTgsNiBAQCBzdGF0aWMgU2l6ZQogRmFz dFBhdGhMb2NrU2htZW1TaXplKHZvaWQpCiB7CiAJU2l6ZQkJc2l6ZSA9IDA7Ci0JU2l6ZQkJVG90 YWxQcm9jcyA9Ci0JCWFkZF9zaXplKE1heEJhY2tlbmRzLCBhZGRfc2l6ZShOVU1fQVVYSUxJQVJZ X1BST0NTLCBtYXhfcHJlcGFyZWRfeGFjdHMpKTsKIAlTaXplCQlmcExvY2tCaXRzU2l6ZSwKIAkJ CQlmcFJlbElkU2l6ZTsKIApAQCAtMTMzLDI1ICsxMzMsNiBAQCBGYXN0UGF0aExvY2tTaG1lbVNp emUodm9pZCkKIAlyZXR1cm4gc2l6ZTsKIH0KIAotLyoKLSAqIFJlcG9ydCBzaGFyZWQtbWVtb3J5 IHNwYWNlIG5lZWRlZCBieSBJbml0UHJvY0dsb2JhbC4KLSAqLwotU2l6ZQotUHJvY0dsb2JhbFNo bWVtU2l6ZSh2b2lkKQotewotCVNpemUJCXNpemUgPSAwOwotCi0JLyogUHJvY0dsb2JhbCAqLwot CXNpemUgPSBhZGRfc2l6ZShzaXplLCBzaXplb2YoUFJPQ19IRFIpKTsKLQlzaXplID0gYWRkX3Np emUoc2l6ZSwgc2l6ZW9mKHNsb2NrX3QpKTsKLQotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBQR1Nl bWFwaG9yZVNobWVtU2l6ZShQcm9jR2xvYmFsU2VtYXMoKSkpOwotCXNpemUgPSBhZGRfc2l6ZShz aXplLCBQR1Byb2NTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIEZhc3RQYXRo TG9ja1NobWVtU2l6ZSgpKTsKLQotCXJldHVybiBzaXplOwotfQotCiAvKgogICogUmVwb3J0IG51 bWJlciBvZiBzZW1hcGhvcmVzIG5lZWRlZCBieSBJbml0UHJvY0dsb2JhbC4KICAqLwpAQCAtMTg2 LDM1ICsxNjcsNjMgQEAgUHJvY0dsb2JhbFNlbWFzKHZvaWQpCiAgKgkgIGltcGxlbWVudGF0aW9u IHR5cGljYWxseSByZXF1aXJlcyB1cyB0byBjcmVhdGUgc2VtYXBob3JlcyBpbiB0aGUKICAqCSAg cG9zdG1hc3Rlciwgbm90IGluIGJhY2tlbmRzLgogICoKLSAqIE5vdGU6IHRoaXMgaXMgTk9UIGNh bGxlZCBieSBpbmRpdmlkdWFsIGJhY2tlbmRzIHVuZGVyIGEgcG9zdG1hc3RlciwKKyAqIE5vdGU6 IHRoaXMgaXMgTk9UIGNhbGxlZCBieSBpbmRpdmlkdWFsIGJhY2tlbmRzIHVuZGVyIGEgcG9zdG1h c3RlciwgWFhYCiAgKiBub3QgZXZlbiBpbiB0aGUgRVhFQ19CQUNLRU5EIGNhc2UuICBUaGUgUHJv Y0dsb2JhbCBhbmQgQXV4aWxpYXJ5UHJvY3MKICAqIHBvaW50ZXJzIG11c3QgYmUgcHJvcGFnYXRl ZCBzcGVjaWFsbHkgZm9yIEVYRUNfQkFDS0VORCBvcGVyYXRpb24uCiAgKi8KIHZvaWQKLUluaXRQ cm9jR2xvYmFsKHZvaWQpCitQcm9jR2xvYmFsU2htZW1SZWdpc3Rlcih2b2lkKQoreworCVNpemUJ CXNpemUgPSAwOworCisJLyoKKwkgKiBSZXNlcnZlIGFsbCB0aGUgUEdQUk9DIHN0cnVjdHVyZXMg d2UnbGwgbmVlZC4gIFRoZXJlIGFyZQorCSAqIHNpeCBzZXBhcmF0ZSBjb25zdW1lcnM6ICgxKSBu b3JtYWwgYmFja2VuZHMsICgyKSBhdXRvdmFjdXVtIHdvcmtlcnMgYW5kCisJICogc3BlY2lhbCB3 b3JrZXJzLCAoMykgYmFja2dyb3VuZCB3b3JrZXJzLCAoNCkgd2Fsc2VuZGVycywgKDUpIGF1eGls aWFyeQorCSAqIHByb2Nlc3NlcywgYW5kICg2KSBwcmVwYXJlZCB0cmFuc2FjdGlvbnMuICAoRm9y IGxhcmdlbHktaGlzdG9yaWNhbAorCSAqIHJlYXNvbnMsIHdlIGNvbWJpbmUgYXV0b3ZhY3V1bSBh bmQgc3BlY2lhbCB3b3JrZXJzIGludG8gb25lIGNhdGVnb3J5CisJICogd2l0aCBhIHNpbmdsZSBm cmVlbGlzdC4pICBFYWNoIFBHUFJPQyBzdHJ1Y3R1cmUgaXMgZGVkaWNhdGVkIHRvIGV4YWN0bHkK KwkgKiBvbmUgb2YgdGhlc2UgcHVycG9zZXMsIGFuZCB0aGV5IGRvIG5vdCBtb3ZlIGJldHdlZW4g Z3JvdXBzLgorCSAqLworCVRvdGFsUHJvY3MgPQorCQlhZGRfc2l6ZShNYXhCYWNrZW5kcywgYWRk X3NpemUoTlVNX0FVWElMSUFSWV9QUk9DUywgbWF4X3ByZXBhcmVkX3hhY3RzKSk7CisKKwlzaXpl ID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoVG90YWxQcm9jcywgc2l6ZW9mKFBHUFJPQykpKTsK KworCS8qIEZJWE1FOiB0aGUgc2l6ZW9mcyBsb29rIGRhbmdlcm91cyBiZWNhdXNlIFByb2NHbG9i YWwgaXMgbm90IGluaXRpYWxpemVkIHlldCAqLworCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxf c2l6ZShUb3RhbFByb2NzLCBzaXplb2YoKlByb2NHbG9iYWwtPnhpZHMpKSk7CisJc2l6ZSA9IGFk ZF9zaXplKHNpemUsIG11bF9zaXplKFRvdGFsUHJvY3MsIHNpemVvZigqUHJvY0dsb2JhbC0+c3Vi eGlkU3RhdGVzKSkpOworCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShUb3RhbFByb2Nz LCBzaXplb2YoKlByb2NHbG9iYWwtPnN0YXR1c0ZsYWdzKSkpOworCisJUHJvY0dsb2JhbEFsbFBy b2NzU2htZW1EZXNjLnNpemUgPSBzaXplOworCVNobWVtUmVnaXN0ZXJTdHJ1Y3QoJlByb2NHbG9i YWxBbGxQcm9jc1NobWVtRGVzYyk7CisKKwlGYXN0UGF0aExvY2tBcnJheVNobWVtRGVzYy5zaXpl ID0gRmFzdFBhdGhMb2NrU2htZW1TaXplKCk7CisJU2htZW1SZWdpc3RlclN0cnVjdCgmRmFzdFBh dGhMb2NrQXJyYXlTaG1lbURlc2MpOworCisJLyoKKwkgKiBDcmVhdGUgdGhlIFByb2NHbG9iYWwg c2hhcmVkIHN0cnVjdHVyZSBsYXN0LiBJdHMgaW5pdCBjYWxsYmFjaworCSAqIGluaXRpYWxpemVz IHRoZSBvdGhlcnMgdG9vLgorCSAqLworCVNobWVtUmVnaXN0ZXJTdHJ1Y3QoJlByb2NHbG9iYWxT aG1lbURlc2MpOworfQorCitzdGF0aWMgdm9pZAorUHJvY0dsb2JhbFNobWVtSW5pdCh2b2lkICph cmcpCiB7CisJY2hhcgkgICAqcHRyOworCXNpemVfdAkJcmVxdWVzdFNpemU7CiAJUEdQUk9DCSAg ICpwcm9jczsKIAlpbnQJCQlpLAogCQkJCWo7Ci0JYm9vbAkJZm91bmQ7Ci0JdWludDMyCQlUb3Rh bFByb2NzID0gTWF4QmFja2VuZHMgKyBOVU1fQVVYSUxJQVJZX1BST0NTICsgbWF4X3ByZXBhcmVk X3hhY3RzOwotCiAJLyogVXNlZCBmb3Igc2V0dXAgb2YgcGVyLWJhY2tlbmQgZmFzdC1wYXRoIHNs b3RzLiAqLwogCWNoYXIJICAgKmZwUHRyLAogCQkJICAgKmZwRW5kUHRyIFBHX1VTRURfRk9SX0FT U0VSVFNfT05MWTsKIAlTaXplCQlmcExvY2tCaXRzU2l6ZSwKIAkJCQlmcFJlbElkU2l6ZTsKLQlT aXplCQlyZXF1ZXN0U2l6ZTsKLQljaGFyCSAgICpwdHI7CiAKLQkvKiBDcmVhdGUgdGhlIFByb2NH bG9iYWwgc2hhcmVkIHN0cnVjdHVyZSAqLwotCVByb2NHbG9iYWwgPSAoUFJPQ19IRFIgKikKLQkJ U2htZW1Jbml0U3RydWN0KCJQcm9jIEhlYWRlciIsIHNpemVvZihQUk9DX0hEUiksICZmb3VuZCk7 Ci0JQXNzZXJ0KCFmb3VuZCk7CisJUHJvY0dsb2JhbCA9IFByb2NHbG9iYWxTaG1lbURlc2MucHRy OwogCi0JLyoKLQkgKiBJbml0aWFsaXplIHRoZSBkYXRhIHN0cnVjdHVyZXMuCi0JICovCiAJUHJv Y0dsb2JhbC0+c3BpbnNfcGVyX2RlbGF5ID0gREVGQVVMVF9TUElOU19QRVJfREVMQVk7CiAJZGxp c3RfaW5pdCgmUHJvY0dsb2JhbC0+ZnJlZVByb2NzKTsKIAlkbGlzdF9pbml0KCZQcm9jR2xvYmFs LT5hdXRvdmFjRnJlZVByb2NzKTsKQEAgLTIyNSwyMyArMjM0LDExIEBAIEluaXRQcm9jR2xvYmFs KHZvaWQpCiAJUHJvY0dsb2JhbC0+Y2hlY2twb2ludGVyUHJvYyA9IElOVkFMSURfUFJPQ19OVU1C RVI7CiAJcGdfYXRvbWljX2luaXRfdTMyKCZQcm9jR2xvYmFsLT5wcm9jQXJyYXlHcm91cEZpcnN0 LCBJTlZBTElEX1BST0NfTlVNQkVSKTsKIAlwZ19hdG9taWNfaW5pdF91MzIoJlByb2NHbG9iYWwt PmNsb2dHcm91cEZpcnN0LCBJTlZBTElEX1BST0NfTlVNQkVSKTsKKwlTcGluTG9ja0luaXQoUHJv Y1N0cnVjdExvY2spOwogCi0JLyoKLQkgKiBDcmVhdGUgYW5kIGluaXRpYWxpemUgYWxsIHRoZSBQ R1BST0Mgc3RydWN0dXJlcyB3ZSdsbCBuZWVkLiAgVGhlcmUgYXJlCi0JICogc2l4IHNlcGFyYXRl IGNvbnN1bWVyczogKDEpIG5vcm1hbCBiYWNrZW5kcywgKDIpIGF1dG92YWN1dW0gd29ya2VycyBh bmQKLQkgKiBzcGVjaWFsIHdvcmtlcnMsICgzKSBiYWNrZ3JvdW5kIHdvcmtlcnMsICg0KSB3YWxz ZW5kZXJzLCAoNSkgYXV4aWxpYXJ5Ci0JICogcHJvY2Vzc2VzLCBhbmQgKDYpIHByZXBhcmVkIHRy YW5zYWN0aW9ucy4gIChGb3IgbGFyZ2VseS1oaXN0b3JpY2FsCi0JICogcmVhc29ucywgd2UgY29t YmluZSBhdXRvdmFjdXVtIGFuZCBzcGVjaWFsIHdvcmtlcnMgaW50byBvbmUgY2F0ZWdvcnkKLQkg KiB3aXRoIGEgc2luZ2xlIGZyZWVsaXN0LikgIEVhY2ggUEdQUk9DIHN0cnVjdHVyZSBpcyBkZWRp Y2F0ZWQgdG8gZXhhY3RseQotCSAqIG9uZSBvZiB0aGVzZSBwdXJwb3NlcywgYW5kIHRoZXkgZG8g bm90IG1vdmUgYmV0d2VlbiBncm91cHMuCi0JICovCi0JcmVxdWVzdFNpemUgPSBQR1Byb2NTaG1l bVNpemUoKTsKLQotCXB0ciA9IFNobWVtSW5pdFN0cnVjdCgiUEdQUk9DIHN0cnVjdHVyZXMiLAot CQkJCQkJICByZXF1ZXN0U2l6ZSwKLQkJCQkJCSAgJmZvdW5kKTsKLQotCU1lbVNldChwdHIsIDAs IHJlcXVlc3RTaXplKTsKKwlwdHIgPSBQcm9jR2xvYmFsQWxsUHJvY3NTaG1lbURlc2MucHRyOwor CXJlcXVlc3RTaXplID0gUHJvY0dsb2JhbEFsbFByb2NzU2htZW1EZXNjLnNpemU7CisJbWVtc2V0 KHB0ciwgMCwgcmVxdWVzdFNpemUpOwogCiAJcHJvY3MgPSAoUEdQUk9DICopIHB0cjsKIAlwdHIg PSBwdHIgKyBUb3RhbFByb2NzICogc2l6ZW9mKFBHUFJPQyk7CkBAIC0yNzcsMjAgKzI3NCwxMyBA QCBJbml0UHJvY0dsb2JhbCh2b2lkKQogCWZwTG9ja0JpdHNTaXplID0gTUFYQUxJR04oRmFzdFBh dGhMb2NrR3JvdXBzUGVyQmFja2VuZCAqIHNpemVvZih1aW50NjQpKTsKIAlmcFJlbElkU2l6ZSA9 IE1BWEFMSUdOKEZhc3RQYXRoTG9ja1Nsb3RzUGVyQmFja2VuZCgpICogc2l6ZW9mKE9pZCkpOwog Ci0JcmVxdWVzdFNpemUgPSBGYXN0UGF0aExvY2tTaG1lbVNpemUoKTsKLQotCWZwUHRyID0gU2ht ZW1Jbml0U3RydWN0KCJGYXN0LVBhdGggTG9jayBBcnJheSIsCi0JCQkJCQkJcmVxdWVzdFNpemUs Ci0JCQkJCQkJJmZvdW5kKTsKLQotCU1lbVNldChmcFB0ciwgMCwgcmVxdWVzdFNpemUpOworCWZw UHRyID0gRmFzdFBhdGhMb2NrQXJyYXlTaG1lbURlc2MucHRyOworCXJlcXVlc3RTaXplID0gRmFz dFBhdGhMb2NrQXJyYXlTaG1lbURlc2Muc2l6ZTsKKwltZW1zZXQoZnBQdHIsIDAsIHJlcXVlc3RT aXplKTsKIAogCS8qIEZvciBhc3NlcnRzIGNoZWNraW5nIHdlIGRpZCBub3Qgb3ZlcmZsb3cuICov CiAJZnBFbmRQdHIgPSBmcFB0ciArIHJlcXVlc3RTaXplOwogCi0JLyogUmVzZXJ2ZSBzcGFjZSBm b3Igc2VtYXBob3Jlcy4gKi8KLQlQR1Jlc2VydmVTZW1hcGhvcmVzKFByb2NHbG9iYWxTZW1hcygp KTsKLQogCWZvciAoaSA9IDA7IGkgPCBUb3RhbFByb2NzOyBpKyspCiAJewogCQlQR1BST0MJICAg KnByb2MgPSAmcHJvY3NbaV07CkBAIC0zODAsMTIgKzM3MCw2IEBAIEluaXRQcm9jR2xvYmFsKHZv aWQpCiAJICovCiAJQXV4aWxpYXJ5UHJvY3MgPSAmcHJvY3NbTWF4QmFja2VuZHNdOwogCVByZXBh cmVkWGFjdFByb2NzID0gJnByb2NzW01heEJhY2tlbmRzICsgTlVNX0FVWElMSUFSWV9QUk9DU107 Ci0KLQkvKiBDcmVhdGUgUHJvY1N0cnVjdExvY2sgc3BpbmxvY2ssIHRvbyAqLwotCVByb2NTdHJ1 Y3RMb2NrID0gKHNsb2NrX3QgKikgU2htZW1Jbml0U3RydWN0KCJQcm9jU3RydWN0TG9jayBzcGlu bG9jayIsCi0JCQkJCQkJCQkJCQkgc2l6ZW9mKHNsb2NrX3QpLAotCQkJCQkJCQkJCQkJICZmb3Vu ZCk7Ci0JU3BpbkxvY2tJbml0KFByb2NTdHJ1Y3RMb2NrKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMu YwppbmRleCAwMmU5YWFhNmJjYS4uZWVkMTg4NDE2ZWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTQx MTcsNiArNDExNyw4IEBAIFBvc3RncmVzU2luZ2xlVXNlck1haW4oaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSwKIAkgKiBzaGFyZWQgbWVtb3J5LCBkZXRlcm1pbmUgdGhlIHZhbHVlIG9mIGFueSBydW50 aW1lLWNvbXB1dGVkIEdVQ3MgdGhhdAogCSAqIGRlcGVuZCBvbiB0aGUgYW1vdW50IG9mIHNoYXJl ZCBtZW1vcnkgcmVxdWlyZWQuCiAJICovCisJUmVnaXN0ZXJTaG1lbVN0cnVjdHMoKTsKKwogCUlu aXRpYWxpemVTaG1lbUdVQ3MoKTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nl c3MvdHJhbnNhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaAppbmRleCA2ZmE5MWJm Y2RjMC4uNDlkNDc2ZTlkNWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2Ft LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaApAQCAtMTUsNyArMTUsOSBAQAog I2RlZmluZSBUUkFOU0FNX0gKIAogI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgotCisjaWZu ZGVmIEZST05URU5ECisjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgorI2VuZGlmCiAKIC8qIC0t LS0tLS0tLS0tLS0tLS0KICAqCQlTcGVjaWFsIHRyYW5zYWN0aW9uIElEIHZhbHVlcwpAQCAtMzMw LDcgKzMzMiwxMCBAQCBUcmFuc2FjdGlvbklkRm9sbG93c09yRXF1YWxzKFRyYW5zYWN0aW9uSWQg aWQxLCBUcmFuc2FjdGlvbklkIGlkMikKIGV4dGVybiBib29sIFRyYW5zYWN0aW9uU3RhcnRlZER1 cmluZ1JlY292ZXJ5KHZvaWQpOwogCiAvKiBpbiB0cmFuc2FtL3ZhcnN1cC5jICovCi1leHRlcm4g UEdETExJTVBPUlQgVHJhbnNhbVZhcmlhYmxlc0RhdGEgKlRyYW5zYW1WYXJpYWJsZXM7CisjaWZu ZGVmIEZST05URU5ECitleHRlcm4gUEdETExJTVBPUlQgc3RydWN0IFNobWVtU3RydWN0RGVzYyBU cmFuc2FtVmFyaWFibGVzU2htZW1EZXNjOworI2RlZmluZSBUcmFuc2FtVmFyaWFibGVzICgoVHJh bnNhbVZhcmlhYmxlc0RhdGEgKikgVHJhbnNhbVZhcmlhYmxlc1NobWVtRGVzYy5wdHIpCisjZW5k aWYKIAogLyoKICAqIHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiB0cmFuc2FtL3RyYW5zYW0u YwpAQCAtMzQ1LDggKzM1MCw3IEBAIGV4dGVybiBUcmFuc2FjdGlvbklkIFRyYW5zYWN0aW9uSWRM YXRlc3QoVHJhbnNhY3Rpb25JZCBtYWlueGlkLAogZXh0ZXJuIFhMb2dSZWNQdHIgVHJhbnNhY3Rp b25JZEdldENvbW1pdExTTihUcmFuc2FjdGlvbklkIHhpZCk7CiAKIC8qIGluIHRyYW5zYW0vdmFy c3VwLmMgKi8KLWV4dGVybiBTaXplIFZhcnN1cFNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lk IFZhcnN1cFNobWVtSW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIFZhcnN1cFNobWVtUmVnaXN0ZXIo dm9pZCk7CiBleHRlcm4gRnVsbFRyYW5zYWN0aW9uSWQgR2V0TmV3VHJhbnNhY3Rpb25JZChib29s IGlzU3ViWGFjdCk7CiBleHRlcm4gdm9pZCBBZHZhbmNlTmV4dEZ1bGxUcmFuc2FjdGlvbklkUGFz dFhpZChUcmFuc2FjdGlvbklkIHhpZCk7CiBleHRlcm4gRnVsbFRyYW5zYWN0aW9uSWQgUmVhZE5l eHRGdWxsVHJhbnNhY3Rpb25JZCh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvZHNtX3JlZ2lzdHJ5LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2RzbV9yZWdpc3RyeS5oCmlu ZGV4IDUwNmZhZTJjOWNhLi45YTFiNGQ5ODJhZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3Rv cmFnZS9kc21fcmVnaXN0cnkuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2RzbV9yZWdpc3Ry eS5oCkBAIC0yMiw3ICsyMiw2IEBAIGV4dGVybiBkc2FfYXJlYSAqR2V0TmFtZWREU0EoY29uc3Qg Y2hhciAqbmFtZSwgYm9vbCAqZm91bmQpOwogZXh0ZXJuIGRzaGFzaF90YWJsZSAqR2V0TmFtZWRE U0hhc2goY29uc3QgY2hhciAqbmFtZSwKIAkJCQkJCQkJCWNvbnN0IGRzaGFzaF9wYXJhbWV0ZXJz ICpwYXJhbXMsCiAJCQkJCQkJCQlib29sICpmb3VuZCk7Ci1leHRlcm4gU2l6ZSBEU01SZWdpc3Ry eVNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIERTTVJlZ2lzdHJ5U2htZW1Jbml0KHZvaWQp OworZXh0ZXJuIHZvaWQgRFNNUmVnaXN0cnlTaG1lbVJlZ2lzdGVyKHZvaWQpOwogCiAjZW5kaWYJ CQkJCQkJLyogRFNNX1JFR0lTVFJZX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvaXBjLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2lwYy5oCmluZGV4IGRhMzI3ODdhYjUxLi44 YTNiNzFhZDVkMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9pcGMuaAorKysgYi9z cmMvaW5jbHVkZS9zdG9yYWdlL2lwYy5oCkBAIC03Nyw2ICs3Nyw3IEBAIGV4dGVybiB2b2lkIGNo ZWNrX29uX3NobWVtX2V4aXRfbGlzdHNfYXJlX2VtcHR5KHZvaWQpOwogLyogaXBjaS5jICovCiBl eHRlcm4gUEdETExJTVBPUlQgc2htZW1fc3RhcnR1cF9ob29rX3R5cGUgc2htZW1fc3RhcnR1cF9o b29rOwogCitleHRlcm4gdm9pZCBSZWdpc3RlclNobWVtU3RydWN0cyh2b2lkKTsKIGV4dGVybiBT aXplIENhbGN1bGF0ZVNobWVtU2l6ZSh2b2lkKTsKIGV4dGVybiB2b2lkIENyZWF0ZVNoYXJlZE1l bW9yeUFuZFNlbWFwaG9yZXModm9pZCk7CiAjaWZkZWYgRVhFQ19CQUNLRU5ECmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Btc2lnbmFsLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Bt c2lnbmFsLmgKaW5kZXggMjA2ZmI3OGY4YTUuLjdjZGM0ODUyMzM0IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9zdG9yYWdlL3Btc2lnbmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wbXNp Z25hbC5oCkBAIC02Niw4ICs2Niw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBQTVNp Z25hbERhdGEgKlBNU2lnbmFsU3RhdGU7CiAvKgogICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25z IGluIHBtc2lnbmFsLmMKICAqLwotZXh0ZXJuIFNpemUgUE1TaWduYWxTaG1lbVNpemUodm9pZCk7 Ci1leHRlcm4gdm9pZCBQTVNpZ25hbFNobWVtSW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIFBNU2ln bmFsU2htZW1SZWdpc3Rlcih2b2lkKTsKIGV4dGVybiB2b2lkIFNlbmRQb3N0bWFzdGVyU2lnbmFs KFBNU2lnbmFsUmVhc29uIHJlYXNvbik7CiBleHRlcm4gYm9vbCBDaGVja1Bvc3RtYXN0ZXJTaWdu YWwoUE1TaWduYWxSZWFzb24gcmVhc29uKTsKIGV4dGVybiB2b2lkIFNldFF1aXRTaWduYWxSZWFz b24oUXVpdFNpZ25hbFJlYXNvbiByZWFzb24pOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3Rv cmFnZS9wcm9jLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaAppbmRleCA2NzlmMDYyNGY5 Mi4uMzcwMjNlMWE5M2YgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCisr KyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCkBAIC00MTgsNiArNDE4LDkgQEAgdHlwZWRl ZiBzdHJ1Y3QgUFJPQ19IRFIKIAlkbGlzdF9oZWFkCWJnd29ya2VyRnJlZVByb2NzOwogCS8qIEhl YWQgb2YgbGlzdCBvZiB3YWxzZW5kZXIgZnJlZSBQR1BST0Mgc3RydWN0dXJlcyAqLwogCWRsaXN0 X2hlYWQJd2Fsc2VuZGVyRnJlZVByb2NzOworCisJc2xvY2tfdAkJZnJlZVByb2NzTG9jazsKKwog CS8qIEZpcnN0IHBncHJvYyB3YWl0aW5nIGZvciBncm91cCBYSUQgY2xlYXIgKi8KIAlwZ19hdG9t aWNfdWludDMyIHByb2NBcnJheUdyb3VwRmlyc3Q7CiAJLyogRmlyc3QgcGdwcm9jIHdhaXRpbmcg Zm9yIGdyb3VwIHRyYW5zYWN0aW9uIHN0YXR1cyB1cGRhdGUgKi8KQEAgLTQ4OCw3ICs0OTEsNyBA QCBleHRlcm4gUEdETExJTVBPUlQgUEdQUk9DICpBdXhpbGlhcnlQcm9jczsKICAqIEZ1bmN0aW9u IFByb3RvdHlwZXMKICAqLwogZXh0ZXJuIGludAlQcm9jR2xvYmFsU2VtYXModm9pZCk7Ci1leHRl cm4gU2l6ZSBQcm9jR2xvYmFsU2htZW1TaXplKHZvaWQpOworZXh0ZXJuIHZvaWQgUHJvY0dsb2Jh bFNobWVtUmVnaXN0ZXIodm9pZCk7CiBleHRlcm4gdm9pZCBJbml0UHJvY0dsb2JhbCh2b2lkKTsK IGV4dGVybiB2b2lkIEluaXRQcm9jZXNzKHZvaWQpOwogZXh0ZXJuIHZvaWQgSW5pdFByb2Nlc3NQ aGFzZTIodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NhcnJheS5o IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaAppbmRleCAzYTg1OTNmODdiYS4uNDE3 NTNjM2E2MzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY2FycmF5LmgKKysr IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaApAQCAtMjAsOCArMjAsNyBAQAogI2lu Y2x1ZGUgInV0aWxzL3NuYXBzaG90LmgiCiAKIAotZXh0ZXJuIFNpemUgUHJvY0FycmF5U2htZW1T aXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgUHJvY0FycmF5U2htZW1Jbml0KHZvaWQpOworZXh0ZXJu IHZvaWQgUHJvY0FycmF5U2htZW1SZWdpc3Rlcih2b2lkKTsKIGV4dGVybiB2b2lkIFByb2NBcnJh eUFkZChQR1BST0MgKnByb2MpOwogZXh0ZXJuIHZvaWQgUHJvY0FycmF5UmVtb3ZlKFBHUFJPQyAq cHJvYywgVHJhbnNhY3Rpb25JZCBsYXRlc3RYaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9zdG9yYWdlL3Byb2NzaWduYWwuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5o CmluZGV4IGU1MmI4ZWI3Njk3Li5mMmRmMWYzMGM1ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv c3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFs LmgKQEAgLTcxLDggKzcxLDcgQEAgdHlwZWRlZiBlbnVtCiAvKgogICogcHJvdG90eXBlcyBmb3Ig ZnVuY3Rpb25zIGluIHByb2NzaWduYWwuYwogICovCi1leHRlcm4gU2l6ZSBQcm9jU2lnbmFsU2ht ZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgUHJvY1NpZ25hbFNobWVtSW5pdCh2b2lkKTsKK2V4 dGVybiB2b2lkIFByb2NTaWduYWxTaG1lbVJlZ2lzdGVyKHZvaWQpOwogCiBleHRlcm4gdm9pZCBQ cm9jU2lnbmFsSW5pdChjb25zdCB1aW50OCAqY2FuY2VsX2tleSwgaW50IGNhbmNlbF9rZXlfbGVu KTsKIGV4dGVybiBpbnQJU2VuZFByb2NTaWduYWwocGlkX3QgcGlkLCBQcm9jU2lnbmFsUmVhc29u IHJlYXNvbiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaCBiL3NyYy9p bmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAppbmRleCA4OWQ0NTI4N2MxNy4uNDBlMmZjMTcwNTYgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAorKysgYi9zcmMvaW5jbHVkZS9z dG9yYWdlL3NobWVtLmgKQEAgLTI0LDYgKzI0LDUzIEBACiAjaW5jbHVkZSAic3RvcmFnZS9zcGlu LmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogCit0eXBlZGVmIHZvaWQgKCpTaG1lbUlu aXRDYWxsYmFjaykgKHZvaWQgKmFyZyk7Cit0eXBlZGVmIHZvaWQgKCpTaG1lbUF0dGFjaENhbGxi YWNrKSAodm9pZCAqYXJnKTsKKworLyoKKyAqIERlc2NyaXB0b3IgZm9yIGEgbmFtZWQgYXJlYSBv ciBzdHJ1Y3QgaW4gc2hhcmVkIG1lbW9yeQorICovCit0eXBlZGVmIHN0cnVjdCBTaG1lbVN0cnVj dERlc2MKK3sKKwkvKiBOYW1lIG9mIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEuIE11c3QgYmUgdW5p cXVlIGFjcm9zcyB0aGUgc3lzdGVtICovCisJY29uc3QgY2hhciAqbmFtZTsKKworCXNpemVfdAkJ c2l6ZTsKKworCXNpemVfdAkJYWxpZ25tZW50OworCVNobWVtSW5pdENhbGxiYWNrIGluaXRfZm47 CisJU2htZW1Jbml0Q2FsbGJhY2sgYXR0YWNoX2ZuOworCXZvaWQJICAgKmluaXRfZm5fYXJnOwor CXZvaWQJICAgKmF0dGFjaF9mbl9hcmc7CisKKwkvKgorCSAqIEV4dHJhIHNwYWNlIHRvIGFsbG9j YXRlZCBpbiB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50LCBidXQgaXQncyBub3QKKwkgKiBwYXJ0 IG9mIHRoZSBzdHJ1Y3QgaXRzZWxmLiBUaGlzIGlzIHVzZWQgZm9yIHNoYXJlZCBtZW1vcnkgaGFz aCB0YWJsZXMKKwkgKiB0aGF0IGNhbiBncm93IGJleW9uZCB0aGUgaW5pdGlhbCBzaXplIHdoZW4g bW9yZSBidWNrZXRzIGFyZSBhbGxvY2F0ZWQuCisJICovCisJc2l6ZV90CQlleHRyYV9zaXplOwor CisJLyogUG9pbnRlciB0byB0aGUgc2hhcmVkIG1lbW9yeSBhcmVhLCB3aGVuIGl0J3MgYWxsb2Nh dGVkLiAqLworCXZvaWQJICAgKnB0cjsKK30gU2htZW1TdHJ1Y3REZXNjOworCisvKgorICogRGVz Y3JpcHRvciBmb3Igc2hhcmVkIG1lbW9yeSBoYXNoIHRhYmxlCisgKi8KK3R5cGVkZWYgc3RydWN0 IFNobWVtSGFzaERlc2MKK3sKKwljb25zdCBjaGFyICpuYW1lOworCisJaW50CQkJaGFzaF9mbGFn czsKKworCXNpemVfdAkJaW5pdF9zaXplOwkJLyogaW5pdGlhbCBudW1iZXIgb2YgZW50cmllcyAq LworCXNpemVfdAkJbWF4X3NpemU7CQkvKiBtYXggbnVtYmVyIG9mIGVudHJpZXMgKi8KKwlIQVNI Q1RMCSAgICppbmZvUDsKKworCUhUQUIJICAgKnB0cjsKKworCVNobWVtU3RydWN0RGVzYwliYXNl X2Rlc2M7Cit9IFNobWVtSGFzaERlc2M7CiAKIC8qIHNobWVtLmMgKi8KIGV4dGVybiBQR0RMTElN UE9SVCBzbG9ja190ICpTaG1lbUxvY2s7CkBAIC0zNCw5ICs4MSwxOSBAQCBleHRlcm4gdm9pZCAq U2htZW1BbGxvYyhTaXplIHNpemUpOwogZXh0ZXJuIHZvaWQgKlNobWVtQWxsb2NOb0Vycm9yKFNp emUgc2l6ZSk7CiBleHRlcm4gYm9vbCBTaG1lbUFkZHJJc1ZhbGlkKGNvbnN0IHZvaWQgKmFkZHIp OwogZXh0ZXJuIHZvaWQgSW5pdFNobWVtSW5kZXgodm9pZCk7CisKK2V4dGVybiB2b2lkIFNobWVt UmVnaXN0ZXJIYXNoKFNobWVtSGFzaERlc2MgKmRlc2MsIEhBU0hDVEwgKmluZm9QLCBpbnQgaGFz aF9mbGFncyk7CitleHRlcm4gdm9pZCBTaG1lbVJlZ2lzdGVyU3RydWN0KFNobWVtU3RydWN0RGVz YyAqZGVzYyk7CisKKy8qIExlZ2FjeSBmdW5jdGlvbnMgKi8KIGV4dGVybiBIVEFCICpTaG1lbUlu aXRIYXNoKGNvbnN0IGNoYXIgKm5hbWUsIGludDY0IGluaXRfc2l6ZSwgaW50NjQgbWF4X3NpemUs CiAJCQkJCQkgICBIQVNIQ1RMICppbmZvUCwgaW50IGhhc2hfZmxhZ3MpOwogZXh0ZXJuIHZvaWQg KlNobWVtSW5pdFN0cnVjdChjb25zdCBjaGFyICpuYW1lLCBTaXplIHNpemUsIGJvb2wgKmZvdW5k UHRyKTsKKworZXh0ZXJuIHNpemVfdCBTaG1lbVJlZ2lzdGVyZWRTaXplKHZvaWQpOworZXh0ZXJu IHZvaWQgU2htZW1Jbml0UmVnaXN0ZXJlZCh2b2lkKTsKK2V4dGVybiB2b2lkIFNobWVtQXR0YWNo UmVnaXN0ZXJlZCh2b2lkKTsKKwogZXh0ZXJuIFNpemUgYWRkX3NpemUoU2l6ZSBzMSwgU2l6ZSBz Mik7CiBleHRlcm4gU2l6ZSBtdWxfc2l6ZShTaXplIHMxLCBTaXplIHMyKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaW52YWxhZHQuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv c2ludmFsYWR0LmgKaW5kZXggYTE2OTQ1MDBhODUuLjRlZGJhMjkzNmU2IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9zdG9yYWdlL3NpbnZhbGFkdC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv c2ludmFsYWR0LmgKQEAgLTI4LDggKzI4LDcgQEAKIC8qCiAgKiBwcm90b3R5cGVzIGZvciBmdW5j dGlvbnMgaW4gc2ludmFsYWR0LmMKICAqLwotZXh0ZXJuIFNpemUgU2hhcmVkSW52YWxTaG1lbVNp emUodm9pZCk7Ci1leHRlcm4gdm9pZCBTaGFyZWRJbnZhbFNobWVtSW5pdCh2b2lkKTsKK2V4dGVy biB2b2lkIFNoYXJlZEludmFsU2htZW1SZWdpc3Rlcih2b2lkKTsKIGV4dGVybiB2b2lkIFNoYXJl ZEludmFsQmFja2VuZEluaXQoYm9vbCBzZW5kT25seSk7CiAKIGV4dGVybiB2b2lkIFNJSW5zZXJ0 RGF0YUVudHJpZXMoY29uc3QgU2hhcmVkSW52YWxpZGF0aW9uTWVzc2FnZSAqZGF0YSwgaW50IG4p OwoKYmFzZS1jb21taXQ6IGM2N2JlZjNmMzI1MmEzYTM4YmYzNDdmOWYxMTk5NDQxNzZhNzk2Y2UK LS0gCjIuMzQuMQoK --000000000000051ac9064b037c6f Content-Type: text/x-patch; charset="US-ASCII"; name="0003-WIP-resizable-shared-memory-structures-20260217.patch" Content-Disposition: attachment; filename="0003-WIP-resizable-shared-memory-structures-20260217.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlqilc1q2 RnJvbSA2OGRmYzljOTRlMzJhNjM5MTAyYmZjN2YwNjk0NjM2ZmI4MjEzNGMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAxNyBGZWIgMjAyNiAxNjo1MToyMCArMDUzMApTdWJqZWN0OiBb UEFUQ0ggMy8zXSBXSVA6IHJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IHN0cnVjdHVyZXMKCi0tLQog ZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sICAgICAgICAgICAgICAgIHwgIDEwICsKIHNy Yy9iYWNrZW5kL3BvcnQvc3lzdl9zaG1lbS5jICAgICAgICAgICAgICAgICB8ICA0NCArKysKIHNy Yy9iYWNrZW5kL3BvcnQvd2luMzJfc2htZW0uYyAgICAgICAgICAgICAgICB8ICAzNiArKysKIHNy Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jICAgICAgICAgICAgICAgfCAyMDggKysrKysrKysr KysrLS0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8ICAg NCArLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wZ19zaG1lbS5oICAgICAgICAgICAgICAgIHwgICAy ICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaCAgICAgICAgICAgICAgICAgICB8ICAxMyAr CiBzcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwog c3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNy Yy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL01ha2VmaWxlICAgICB8ICAyMyArKwogLi4u L2V4cGVjdGVkL3Jlc2l6YWJsZV9zaG1lbS5vdXQgICAgICAgICAgICAgIHwgMTQ5ICsrKysrKysr KysKIHNyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL21lc29uLmJ1aWxkICB8ICAzNyAr KysKIC4uLi9yZXNpemFibGVfc2htZW0vcmVzaXphYmxlX3NobWVtLS0xLjAuc3FsICB8ICAzOSAr KysKIC4uLi9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0uYyB8IDI3MCAr KysrKysrKysrKysrKysrKysKIC4uLi9yZXNpemFibGVfc2htZW0vcmVzaXphYmxlX3NobWVtLmNv bmYgICAgICB8ICAgNCArCiAuLi4vcmVzaXphYmxlX3NobWVtL3Jlc2l6YWJsZV9zaG1lbS5jb250 cm9sICAgfCAgIDUgKwogLi4uL3NwZWNzL3Jlc2l6YWJsZV9zaG1lbS5zcGVjICAgICAgICAgICAg ICAgIHwgIDQyICsrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAg ICAgIHwgICA1ICstCiAxOSBmaWxlcyBjaGFuZ2VkLCA4NzQgaW5zZXJ0aW9ucygrKSwgMjIgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVf c2htZW0vTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Jlc2l6 YWJsZV9zaG1lbS9leHBlY3RlZC9yZXNpemFibGVfc2htZW0ub3V0CiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vbWVzb24uYnVpbGQKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFibGVfc2ht ZW0tLTEuMC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJs ZV9zaG1lbS9yZXNpemFibGVfc2htZW0uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21v ZHVsZXMvcmVzaXphYmxlX3NobWVtL3Jlc2l6YWJsZV9zaG1lbS5jb25mCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vcmVzaXphYmxlX3NobWVtLmNv bnRyb2wKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1l bS9zcGVjcy9yZXNpemFibGVfc2htZW0uc3BlYwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9z eXN0ZW0tdmlld3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAppbmRleCA4 YjRhYmVmOGM2OC4uODgxYzBmZmIzNjAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0t dmlld3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKQEAgLTQyNDcs NiArNDI0NywxNiBAQCBTRUxFQ1QgKiBGUk9NIHBnX2xvY2tzIHBsIExFRlQgSk9JTiBwZ19wcmVw YXJlZF94YWN0cyBwcHgKICAgICAgICB0aGUgY29sdW1ucyB3aWxsIGJlIGVxdWFsIGluIHRoYXQg Y2FzZSBhbHNvLgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgorCisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5yZXNlcnZlZF9zaXplPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+aW50ODwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJh PgorICAgICAgIE1heGltdW0gc2l6ZSBpbiBieXRlcyB0aGF0IHRoZSBhbGxvY2F0aW9uIGNhbiBn cm93IHVwdG8gaW5jbHVkaW5nIHBhZGRpbmcKKyAgICAgICBpbiBjYXNlIG9mIHJlc2l6YWJsZSBh bGxvY2F0aW9ucy4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KICAgICA8L3Ri b2R5PgogICAgPC90Z3JvdXA+CiAgIDwvdGFibGU+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w b3J0L3N5c3Zfc2htZW0uYyBiL3NyYy9iYWNrZW5kL3BvcnQvc3lzdl9zaG1lbS5jCmluZGV4IDJl Mzg4NmNmOWZlLi4zMmE0ZDVlZDQyOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9ydC9zeXN2 X3NobWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9ydC9zeXN2X3NobWVtLmMKQEAgLTU4OSw2ICs1 ODksMjcgQEAgY2hlY2tfaHVnZV9wYWdlX3NpemUoaW50ICpuZXd2YWwsIHZvaWQgKipleHRyYSwg R3VjU291cmNlIHNvdXJjZSkKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorLyoKKyAqIEdldCB0aGUgcGFn ZSBzaXplIG9mIGJlaW5nIHVzZWQgYnkgdGhlIHNoYXJlZCBtZW1vcnkuCisgKgorICogVGhlIGZ1 bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb25seSBhZnRlciB0aGUgc2hhcmVkIG1lbW9yeSBoYXMg YmVlbiBzZXR1cC4KKyAqLworU2l6ZQorR2V0T1NQYWdlU2l6ZSh2b2lkKQoreworCVNpemUJCW9z X3BhZ2Vfc2l6ZTsKKworCUFzc2VydChodWdlX3BhZ2VzX3N0YXR1cyAhPSBIVUdFX1BBR0VTX1VO S05PV04pOworCisJb3NfcGFnZV9zaXplID0gc3lzY29uZihfU0NfUEFHRVNJWkUpOworCisJLyog SWYgaHVnZSBwYWdlcyBhcmUgYWN0dWFsbHkgaW4gdXNlLCB1c2UgaHVnZSBwYWdlIHNpemUgKi8K KwlpZiAoaHVnZV9wYWdlc19zdGF0dXMgPT0gSFVHRV9QQUdFU19PTikKKwkJR2V0SHVnZVBhZ2VT aXplKCZvc19wYWdlX3NpemUsIE5VTEwpOworCisJcmV0dXJuIG9zX3BhZ2Vfc2l6ZTsKK30KKwog LyoKICAqIENyZWF0ZXMgYW4gYW5vbnltb3VzIG1tYXAoKWVkIHNoYXJlZCBtZW1vcnkgc2VnbWVu dC4KICAqCkBAIC05OTEsMyArMTAxMiwyNiBAQCBQR1NoYXJlZE1lbW9yeURldGFjaCh2b2lkKQog CQlBbm9ueW1vdXNTaG1lbSA9IE5VTEw7CiAJfQogfQorCisvKgorICogUmVsZWFzZSBwYXJ0IG9m IHRoZSBzaGFyZWQgbWVtb3J5IG9mIGdpdmVuIHNpemUgc3RhcnRpbmcgYXQgZ2l2ZW4gYWRkcmVz cy4KKyAqCisgKiBUaGUgYWRkcmVzcyBhbmQgc2l6ZSBhcmUgZXhwZWN0ZWQgdG8gYmUgcGFnZSBh bGlnbmVkLgorICoKKyAqIE9ubHkgc3VwcG9ydGVkIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQg YW5vbnltb3VzIHNoYXJlZCBtZW1vcnkuCisgKi8KK3ZvaWQgUEdTaGFyZWRNZW1vcnlSZWxlYXNl KHZvaWQgKmFkZHIsIFNpemUgc2l6ZSkKK3sKKwlpZiAoIUFub255bW91c1NobWVtKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK KwkJCQkgZXJybXNnKCJyZWxlYXNpbmcgc2hhcmVkIG1lbW9yeSBpcyBub3Qgc3VwcG9ydGVkIHdp dGggdGhlIGN1cnJlbnQgXCJzaGFyZWRfbWVtb3J5X3R5cGVcIiBzZXR0aW5nIikpKTsKKworCUFz c2VydChhZGRyID09ICh2b2lkICopIFRZUEVBTElHTihHZXRPU1BhZ2VTaXplKCksIGFkZHIpKTsK KwlBc3NlcnQoc2l6ZSA9PSBUWVBFQUxJR04oR2V0T1NQYWdlU2l6ZSgpLCBzaXplKSk7CisJQXNz ZXJ0KHNpemUgPiAwKTsKKworCWlmIChtYWR2aXNlKGFkZHIsIHNpemUsIE1BRFZfUkVNT1ZFKSA9 PSAtMSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycm1zZygiY291bGQgbm90IHJlbGVhc2Ug c2hhcmVkIG1lbW9yeTogJW0iKSkpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9ydC93 aW4zMl9zaG1lbS5jIGIvc3JjL2JhY2tlbmQvcG9ydC93aW4zMl9zaG1lbS5jCmluZGV4IDc5NGU0 ZmNiMmFkLi4zOTRiYjhlNjI4MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9ydC93aW4zMl9z aG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3BvcnQvd2luMzJfc2htZW0uYwpAQCAtNjIxLDYgKzYy MSwxOSBAQCBwZ3dpbjMyX1Jlc2VydmVTaGFyZWRNZW1vcnlSZWdpb24oSEFORExFIGhDaGlsZCkK IAlyZXR1cm4gdHJ1ZTsKIH0KIAorLyoKKyAqIFJlbGVhc2UgcGFydCBvZiB0aGUgc2hhcmVkIG1l bW9yeSBvZiBnaXZlbiBzaXplIGZyb20gZ2l2ZW4gYWRkcmVzcy4KKyAqCisgKiBOb3Qgc3VwcG9y dGVkIG9uIFdpbmRvd3MgY3VycmVudGx5LgorICovCit2b2lkCitQR1NoYXJlZE1lbW9yeVJlbGVh c2Uodm9pZCAqYWRkciwgU2l6ZSBzaXplKQoreworCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkgZXJybXNnKCJyZWxlYXNpbmcg cGFydCBvZiBzaGFyZWQgbWVtb3J5IGlzIG5vdCBzdXBwb3J0ZWQgb24gd2luZG93cyIpKSk7Cit9 CisKIC8qCiAgKiBUaGlzIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRo IHN5c3Zfc2htZW0uYyBhbmQgZG9lcyBub3QKICAqIHByb3ZpZGUgYW55IHVzZWZ1bCBpbmZvcm1h dGlvbiBmb3IgV2luZG93cy4gIFRvIG9idGFpbiB0aGUgbGFyZ2UgcGFnZSBzaXplLApAQCAtNjQ4 LDMgKzY2MSwyNiBAQCBjaGVja19odWdlX3BhZ2Vfc2l6ZShpbnQgKm5ld3ZhbCwgdm9pZCAqKmV4 dHJhLCBHdWNTb3VyY2Ugc291cmNlKQogCX0KIAlyZXR1cm4gdHJ1ZTsKIH0KKworLyoKKyAqIEdl dCB0aGUgcGFnZSBzaXplIHVzZWQgYnkgdGhlIHNoYXJlZCBtZW1vcnkuCisgKgorICogVGhlIGZ1 bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb25seSBhZnRlciB0aGUgc2hhcmVkIG1lbW9yeSBoYXMg YmVlbiBzZXR1cC4gCisgKi8KK1NpemUKK0dldE9TUGFnZVNpemUodm9pZCkKK3sKKwlTWVNURU1f SU5GTyBzeXNpbmZvOworCVNpemUJCW9zX3BhZ2Vfc2l6ZTsKKworCUFzc2VydChodWdlX3BhZ2Vz X3N0YXR1cyAhPSBIVUdFX1BBR0VTX1VOS05PV04pOworCisJR2V0U3lzdGVtSW5mbygmc3lzaW5m byk7CisJb3NfcGFnZV9zaXplID0gc3lzaW5mby5kd1BhZ2VTaXplOworCisJLyogSWYgaHVnZSBw YWdlcyBhcmUgYWN0dWFsbHkgaW4gdXNlLCB1c2UgaHVnZSBwYWdlIHNpemUgKi8KKwlpZiAoaHVn ZV9wYWdlc19zdGF0dXMgPT0gSFVHRV9QQUdFU19PTikKKwkJR2V0SHVnZVBhZ2VTaXplKCZvc19w YWdlX3NpemUsIE5VTEwpOworCisJcmV0dXJuIG9zX3BhZ2Vfc2l6ZTsKK30KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L2lwY2kuYwppbmRleCA5NTI5ODg2NDVkMC4uNDEwYmJmYWY2NzggMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9p cGNpLmMKQEAgLTM2MCw2ICszNjAsOSBAQCBJbml0aWFsaXplU2htZW1HVUNzKHZvaWQpCiAJLyoK IAkgKiBDYWxjdWxhdGUgdGhlIHNoYXJlZCBtZW1vcnkgc2l6ZSBhbmQgcm91bmQgdXAgdG8gdGhl IG5lYXJlc3QgbWVnYWJ5dGUuCiAJICovCisJLyoKKwkgKiBUT0RPOiB3ZSBuZWVkIHRvIGRvIGEg YmV0dGVyIGpvYiBvZiBzZXBhcmF0aW5nIG91dCBtYXhpbXVtIHNoYXJlZCBtZW1vcnkKKwkgKiBh bmQgbWluaW11bSBzaGFyZWQgbWVtb3J5IGJlY2F1c2Ugb2Ygb24tZGVtYW5kIHNoYXJlZCBtZW1v cnkgc2VnbWVudHMuICovCiAJc2l6ZV9iID0gQ2FsY3VsYXRlU2htZW1TaXplKCk7CiAJc2l6ZV9t YiA9IGFkZF9zaXplKHNpemVfYiwgKDEwMjQgKiAxMDI0KSAtIDEpIC8gKDEwMjQgKiAxMDI0KTsK IAlzcHJpbnRmKGJ1ZiwgIiV6dSIsIHNpemVfbWIpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvc2htZW0uYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKaW5k ZXggZTczYWM0ODliMmIuLjMxYmQyOGM4NGZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKQEAg LTE0Myw2ICsxNDMsOSBAQCBTaG1lbVJlZ2lzdGVyU3RydWN0KFNobWVtU3RydWN0RGVzYyAqZGVz YykKIAllbG9nKERFQlVHMiwgIlJFR0lTVEVSOiAlcyB3aXRoIHNpemUgJXpkIiwgZGVzYy0+bmFt ZSwgZGVzYy0+c2l6ZSk7CiAKIAlyZWdpc3RyeVtudW1fcmVnaXN0cmF0aW9ucysrXSA9IGRlc2M7 CisKKwlpZiAoZGVzYy0+bWF4X3NpemUgPiAwKQorCQllbG9nKERFQlVHMiwgIlJFU0laQUJMRSBz dHJ1Y3R1cmU6ICVzIGhhcyBtYXhfc2l6ZSAlemQiLCBkZXNjLT5uYW1lLCBkZXNjLT5tYXhfc2l6 ZSk7CiB9CiAKIHNpemVfdApAQCAtMTUzLDcgKzE1Niw3IEBAIFNobWVtUmVnaXN0ZXJlZFNpemUo dm9pZCkKIAlzaXplID0gMDsKIAlmb3IgKGludCBpID0gMDsgaSA8IG51bV9yZWdpc3RyYXRpb25z OyBpKyspCiAJewotCQlzaXplID0gYWRkX3NpemUoc2l6ZSwgcmVnaXN0cnlbaV0tPnNpemUpOwor CQlzaXplID0gYWRkX3NpemUoc2l6ZSwgcmVnaXN0cnlbaV0tPm1heF9zaXplID4gMCA/IHJlZ2lz dHJ5W2ldLT5tYXhfc2l6ZSA6IHJlZ2lzdHJ5W2ldLT5zaXplKTsKIAkJc2l6ZSA9IGFkZF9zaXpl KHNpemUsIHJlZ2lzdHJ5W2ldLT5leHRyYV9zaXplKTsKIAl9CiAKQEAgLTE2Miw5ICsxNjUsMjcg QEAgU2htZW1SZWdpc3RlcmVkU2l6ZSh2b2lkKQogCXJldHVybiBzaXplOwogfQogCisvKgorICog QWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgcmVnaXN0ZXJlZCBzaGFyZWQgc3RydWN0dXJlcyBhbmQg aW5pdGlhbGl6ZSB0aGVtLgorICoKKyAqIEEgc2hhcmVkIHN0cnVjdHVyZSBtYXkgYmUgZml4ZWQg c2l6ZWQsIHdpdGggbWF4X3NpemUgPSAwIG9yIHJlc2l6YWJsZSwgd2l0aAorICogbWF4X3NpemUg PiAwLiBBIHJlc2l6YWJsZSBzdHJ1Y3R1cmUgd2hpY2ggZG9lcyBub3Qgc3BhbiBtdWx0aXBsZSBw YWdlcyBpcworICogdHJlYXRlZCBhcyBhIGZpeGVkIHNpemUgc3RydWN0dXJlIHNpbmNlIHRoZSBt ZW1vcnkgZ2V0cyBhbGxvY2F0ZWQgb3IKKyAqIGRlYWxsb2NhdGVkIG9ubHkgaW4gcGFnZXMuIFRo ZSBmdW5jdGlvbiBhbGxvY2F0ZXMgYWxsIHRoZSBmaXhlZCBzaXplZAorICogc3RydWN0dXJlcyBm aXJzdCB0byBwYWNrIHRoZW0gdGlnaHRseS4gVG8gZWFzaWx5IGRlYWxsb2NhdGVkIG1lbW9yeSBp biBwYWdlcywKKyAqIHRoZSByZXNpemFibGUgc3RydWN0dXJlcyBhcmUgYWxsb2NhdGVkIG9uIHBh Z2UgYm91bmRhcmllcy4gVW5yZWdpc3RlcmVkCisgKiBvYmplY3RzIGFyZSBhbGxvY2F0ZWQgYWZ0 ZXIgdGhlIHJlZ2lzdGVyZWQgc3RydWN0dXJlcyBhbmQgYXJlIHRyZWF0ZWQgYXMgZml4ZWQKKyAq IHN0cnVjdHVyZXMuCisgKgorICogQmVjYXVzZSByZWdpc3RlcmVkIHN0cnVjdHVyZXMgYXJlIGFs bG9jYXRlZCBpbiBwYWdlcyBpbnN0ZWFkIG9mIGJ5dGVzLCB0aGUKKyAqIGFjdHVhbCBhbGxvY2F0 ZWQgc2l6ZSBtYXkgYmUgbW9yZSB0aGFuIHRoZSByZXF1ZXN0ZWQgc2l6ZS4gVGhpcyBtYXkgbGVh dmUgbGVzcworICogc3BhY2UgZm9yIHVucmVnaXN0ZXJlZCBzdHJ1Y3R1cmVzIHRoYW4gZXhwZWN0 ZWQuIAorICovCiB2b2lkCiBTaG1lbUluaXRSZWdpc3RlcmVkKHZvaWQpCiB7CisJU2l6ZQkJcGFn ZV9zaXplID0gR2V0T1NQYWdlU2l6ZSgpOworCiAJLyogU2hvdWxkIGJlIGNhbGxlZCBvbmx5IGJ5 IHRoZSBwb3N0bWFzdGVyIG9yIGEgc3RhbmRhbG9uZSBiYWNrZW5kLiAqLwogCUFzc2VydCghSXNV bmRlclBvc3RtYXN0ZXIpOwogCkBAIC0xNzcsNiArMTk4LDI3IEBAIFNobWVtSW5pdFJlZ2lzdGVy ZWQodm9pZCkKIAogCQllbG9nKERFQlVHMiwgIklOSVQgWyVkLyVkXTogJXMiLCBpLCBudW1fcmVn aXN0cmF0aW9ucywgcmVnaXN0cnlbaV0tPm5hbWUpOwogCisJCS8qCisJCSAqIFBhY2sgZml4ZWQg c2l6ZWQgc3RydWN0dXJlcyBhbmQgcmVzaXphYmxlIHN0cnVjdHVyZXMgdGhhdCBkbyBub3QKKwkJ ICogc3BhbiBtdWx0aXBsZSBwYWdlcyB0aWdodGx5IHRvZ2V0aGVyLgorCQkgKi8KKwkJaWYgKHJl Z2lzdHJ5W2ldLT5tYXhfc2l6ZSA+IDApCisJCXsKKwkJCVNpemUgcGFnZXNfZm9yX21heF9zaXpl OworCQkJCisJCQlwYWdlc19mb3JfbWF4X3NpemUgPSAocmVnaXN0cnlbaV0tPm1heF9zaXplICsg cGFnZV9zaXplIC0gMSkgLyBwYWdlX3NpemU7CisJCQkKKwkJCWlmIChwYWdlc19mb3JfbWF4X3Np emUgPD0gMSkKKwkJCXsKKwkJCQllbG9nKERFQlVHMiwgIlJFU0laQUJMRSBzdHJ1Y3R1cmU6ICVz IGRvZXMgbm90IHNwYW4gYWNyb3NzIHBhZ2VzLCB0cmVhdGluZyBpdCBhcyBmaXhlZCBzaXplIHN0 cnVjdHVyZSB3aXRoIHNpemUgJXpkIiwKKwkJCQkJIHJlZ2lzdHJ5W2ldLT5uYW1lLCByZWdpc3Ry eVtpXS0+bWF4X3NpemUpOworCQkJCXJlZ2lzdHJ5W2ldLT5zaXplID0gcmVnaXN0cnlbaV0tPm1h eF9zaXplOworCQkJCXJlZ2lzdHJ5W2ldLT5tYXhfc2l6ZSA9IDA7CisJCQl9CisJCQllbHNlCisJ CQkJY29udGludWU7CisJCX0KKwogCQkvKiBsb29rIGl0IHVwIGluIHRoZSBzaG1lbSBpbmRleCAq LwogCQlyZXN1bHQgPSAoU2htZW1JbmRleEVudCAqKQogCQkJaGFzaF9zZWFyY2goU2htZW1JbmRl eCwgcmVnaXN0cnlbaV0tPm5hbWUsIEhBU0hfRU5URVJfTlVMTCwgJmZvdW5kKTsKQEAgLTIwNCwx NCArMjQ2LDEzMiBAQCBTaG1lbUluaXRSZWdpc3RlcmVkKHZvaWQpCiAJCX0KIAkJcmVzdWx0LT5z aXplID0gcmVnaXN0cnlbaV0tPnNpemU7CiAJCXJlc3VsdC0+YWxsb2NhdGVkX3NpemUgPSBhbGxv Y2F0ZWRfc2l6ZTsKKwkJcmVzdWx0LT5yZXNlcnZlZHNpemUgPSBhbGxvY2F0ZWRfc2l6ZTsKIAkJ cmVzdWx0LT5sb2NhdGlvbiA9IHN0cnVjdFB0cjsKIAogCQkqKHJlZ2lzdHJ5W2ldLT5wdHIpID0g c3RydWN0UHRyOwogCQlpZiAocmVnaXN0cnlbaV0tPmluaXRfZm4pCiAJCQlyZWdpc3RyeVtpXS0+ aW5pdF9mbihyZWdpc3RyeVtpXS0+aW5pdF9mbl9hcmcpOwogCX0KKworCS8qIEFsbG9jYXRlIHJl c2l6YWJsZSBzdHJ1Y3R1cmVzIG9uIHBhZ2UgYm91bmRhcmllcy4gKi8KKwlTaG1lbUFsbG9jYXRv ci0+ZnJlZV9vZmZzZXQgPSBhbGlnbl9zaXplKFNobWVtQWxsb2NhdG9yLT5mcmVlX29mZnNldCwg cGFnZV9zaXplKTsKKwlmb3IgKGludCBpID0gMDsgaSA8IG51bV9yZWdpc3RyYXRpb25zOyBpKysp CisJeworCQlzaXplX3QJCWFsbG9jYXRlZF9zaXplOworCQl2b2lkCSAgICpzdHJ1Y3RQdHI7CisJ CWJvb2wJCWZvdW5kOworCQlTaG1lbUluZGV4RW50ICpyZXN1bHQ7CisKKwkJLyoKKwkJICogSGFu ZGxlIHRydWVseSByZXNpemFibGUgc3RydWN0dXJlcy4KKwkJICovCisJCWlmIChyZWdpc3RyeVtp XS0+bWF4X3NpemUgPiAwKQorCQl7CisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCQkJU2l6 ZSBwYWdlc19mb3JfbWF4X3NpemU7CisJCQkKKwkJCXBhZ2VzX2Zvcl9tYXhfc2l6ZSA9IChyZWdp c3RyeVtpXS0+bWF4X3NpemUgKyBwYWdlX3NpemUgLSAxKSAvIHBhZ2Vfc2l6ZTsKKwkJCQorCQkJ QXNzZXJ0IChwYWdlc19mb3JfbWF4X3NpemUgPiAxKTsKKyNlbmRpZgorCQkJcmVnaXN0cnlbaV0t Pm1heF9zaXplID0gYWxpZ25fc2l6ZShyZWdpc3RyeVtpXS0+bWF4X3NpemUsIHBhZ2Vfc2l6ZSk7 CisJCQllbG9nKERFQlVHMiwgIlJFU0laQUJMRSBzdHJ1Y3R1cmU6ICVzIHdpdGggbWF4aW11bSBz aXplICV6ZCIsCisJCQkJCSByZWdpc3RyeVtpXS0+bmFtZSwgcmVnaXN0cnlbaV0tPm1heF9zaXpl KTsKKwkJfQorCQllbHNlCisJCQljb250aW51ZTsKKworCQkvKiBsb29rIGl0IHVwIGluIHRoZSBz aG1lbSBpbmRleCAqLworCQlyZXN1bHQgPSAoU2htZW1JbmRleEVudCAqKQorCQkJaGFzaF9zZWFy Y2goU2htZW1JbmRleCwgcmVnaXN0cnlbaV0tPm5hbWUsIEhBU0hfRU5URVJfTlVMTCwgJmZvdW5k KTsKKwkJaWYgKCFyZXN1bHQpCisJCXsKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2Rl KEVSUkNPREVfT1VUX09GX01FTU9SWSksCisJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBjcmVhdGUg U2htZW1JbmRleCBlbnRyeSBmb3IgZGF0YSBzdHJ1Y3R1cmUgXCIlc1wiIiwKKwkJCQkJCQlyZWdp c3RyeVtpXS0+bmFtZSkpKTsKKwkJfQorCQlpZiAoZm91bmQpCisJCQllbG9nKEVSUk9SLCAic2ht ZW0gc3RydWN0IFwiJXNcIiBpcyBhbHJlYWR5IGluaXRpYWxpemVkIiwgcmVnaXN0cnlbaV0tPm5h bWUpOworCisJCS8qCisJCSAqIEFsbG9jYXRlIG1heGltdW0gc2l6ZSBmb3IgYSByZXNpemFibGUg c3RydWN0dXJlLiBUaGlzIHNob3VsZCBub3QKKwkJICogYWxsb2NhdGUgbWVtb3J5IGJ1dCBqdXN0 IHRoZSBhZGRyZXNzIHNwYWNlLiBNZW1vcnkgd2lsbCBiZSBhbGxvY2F0ZWQKKwkJICogYXMgdGhl IGFkZHJlc3Mgc3BhY2UgaXMgd3JpdHRlbiB0by4gSXQgaXMgZXhwZWN0ZWQgdGhhdCB0aGUKKwkJ ICogcmVnaXN0cmFudHMgZG8gbm90IHVzZSBtZW1vcnkgYmV5b25kIHRoZSBpbml0aWFsIHNpemUg dW50aWwgdGhleSBoYXZlCisJCSAqIHJlc2l6ZWQgdGhlIHN0cnVjdHVyZS4gSWYgdGhleSBkbyBz bywgdGhpcyB3aWxsIHJlc3VsdCBpbiBhbGxvY2F0aW5nCisJCSAqIG1vcmUgbWVtb3J5IHRoYW4g ZXhwZWN0ZWQuCisJCSAqLworCQlzdHJ1Y3RQdHIgPSBTaG1lbUFsbG9jUmF3KHJlZ2lzdHJ5W2ld LT5tYXhfc2l6ZSwgJmFsbG9jYXRlZF9zaXplKTsKKwkJaWYgKHN0cnVjdFB0ciA9PSBOVUxMKQor CQl7CisJCQkvKiBvdXQgb2YgbWVtb3J5OyByZW1vdmUgdGhlIGZhaWxlZCBTaG1lbUluZGV4IGVu dHJ5ICovCisJCQloYXNoX3NlYXJjaChTaG1lbUluZGV4LCByZWdpc3RyeVtpXS0+bmFtZSwgSEFT SF9SRU1PVkUsIE5VTEwpOworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09E RV9PVVRfT0ZfTUVNT1JZKSwKKwkJCQkJIGVycm1zZygibm90IGVub3VnaCBzaGFyZWQgbWVtb3J5 IGZvciBkYXRhIHN0cnVjdHVyZSIKKwkJCQkJCQkiIFwiJXNcIiAoJXp1IGJ5dGVzIHJlcXVlc3Rl ZCkiLAorCQkJCQkJCXJlZ2lzdHJ5W2ldLT5uYW1lLCByZWdpc3RyeVtpXS0+c2l6ZSkpKTsKKwkJ fQorCQkvKiBTaW5jZSBtYXhfc2l6ZSBpcyBwYWdlIGFsaWduZWQsIGl0IHNob3VsZCBhbHNvIGJl IGNhY2hlYWxpZ25lZC4gKi8KKwkJQXNzZXJ0KGFsbG9jYXRlZF9zaXplID09IHJlZ2lzdHJ5W2ld LT5tYXhfc2l6ZSk7CisJCXJlc3VsdC0+c2l6ZSA9IHJlZ2lzdHJ5W2ldLT5zaXplOworCQkvKiBS ZXNpemFibGUgc3RydWN0dXJlIG1lbW9yeSB3aWxsIGdldCBhbGxvY2F0ZWQgaW4gcGFnZXMuICov CisJCXJlc3VsdC0+YWxsb2NhdGVkX3NpemUgPSBhbGlnbl9zaXplKHJlZ2lzdHJ5W2ldLT5zaXpl LCBwYWdlX3NpemUpOworCQlyZXN1bHQtPnJlc2VydmVkc2l6ZSA9IGFsbG9jYXRlZF9zaXplOwor CQlyZXN1bHQtPmxvY2F0aW9uID0gc3RydWN0UHRyOworCisJCSoocmVnaXN0cnlbaV0tPnB0cikg PSBzdHJ1Y3RQdHI7CisJCWlmIChyZWdpc3RyeVtpXS0+aW5pdF9mbikKKwkJCXJlZ2lzdHJ5W2ld LT5pbml0X2ZuKHJlZ2lzdHJ5W2ldLT5pbml0X2ZuX2FyZyk7CisJfQorCisJLyogQWxsIGFsbG9j YXRpb25zIHdlcmUgaW4gcGFnZSBzaXplcywgc28gZnJlZSBzcGFjZSBzaG91bGQgYmUgcGFnZSBh bGlnbmVkLiAqLworCUFzc2VydChTaG1lbUFsbG9jYXRvci0+ZnJlZV9vZmZzZXQgPT0gYWxpZ25f c2l6ZShTaG1lbUFsbG9jYXRvci0+ZnJlZV9vZmZzZXQsIHBhZ2Vfc2l6ZSkpCiB9CiAKKyNpZm5k ZWYgRVhFQ19CQUNLRU5ECit2b2lkCitTaG1lbVJlc2l6ZVJlZ2lzdGVyZWQoY29uc3QgY2hhciAq bmFtZSwgU2l6ZSBuZXdfc2l6ZSkKK3sKKwlTaG1lbUluZGV4RW50ICpyZXN1bHQ7CisJYm9vbCBm b3VuZDsKKwlTaXplIGFsbG9jYXRlZF9zaXplOworCisJLyogbG9vayBpdCB1cCBpbiB0aGUgc2ht ZW0gaW5kZXggKi8KKwlMV0xvY2tBY3F1aXJlKFNobWVtSW5kZXhMb2NrLCBMV19FWENMVVNJVkUp OworCXJlc3VsdCA9IChTaG1lbUluZGV4RW50ICopCisJCWhhc2hfc2VhcmNoKFNobWVtSW5kZXgs IG5hbWUsIEhBU0hfRklORCwgJmZvdW5kKTsKKwlpZiAoIWZvdW5kKQorCQllbG9nKEVSUk9SLCAi c2htZW0gc3RydWN0IFwiJXNcIiBpcyBub3QgaW5pdGlhbGl6ZWQiLCBuYW1lKTsKKworCUFzc2Vy dChyZXN1bHQpOworCisJLyogUmVzaXphYmxlIHN0cnVjdHVyZSBtZW1vcnkgd2lsbCBnZXQgYWxs b2NhdGVkIGluIHBhZ2VzLiAqLworCWFsbG9jYXRlZF9zaXplID0gYWxpZ25fc2l6ZShuZXdfc2l6 ZSwgR2V0T1NQYWdlU2l6ZSgpKTsgCisJaWYgKHJlc3VsdC0+cmVzZXJ2ZWRzaXplIDwgYWxsb2Nh dGVkX3NpemUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJ Q0lFTlRfUkVTT1VSQ0VTKSwKKwkJCQkgZXJybXNnKCJub3QgZW5vdWdoIGFkZHJlc3Mgc3BhY2Ug aXMgcmVzZXJ2ZWQgZm9yIHJlc2l6aW5nIHN0cnVjdHVyZSBcIiVzXCIiLCBuYW1lKSkpOworCisK KwkvKgorCSAqIElmIHNocmlua2luZyByZWxlYXNlIG1lbW9yeSB3aGljaCBpcyBub3QgcmVxdWly ZWQgYW55bW9yZS4gSWYgZXhwYW5kaW5nIHdlCisJICogZG9uJ3QgaGF2ZSB0byBkbyBhbnl0aGlu ZyBhcyB0aGUgbWVtb3J5IGlzIGFsbG9jYXRlZCB3aGVuIGl0J3Mgd3JpdHRlbiB0by4KKwkgKi8K KwlpZiAoYWxsb2NhdGVkX3NpemUgPCByZXN1bHQtPmFsbG9jYXRlZF9zaXplKQorCQlQR1NoYXJl ZE1lbW9yeVJlbGVhc2UoKGNoYXIgKikgcmVzdWx0LT5sb2NhdGlvbiArIGFsbG9jYXRlZF9zaXpl LAorCQkJCQkJCQlyZXN1bHQtPnJlc2VydmVkc2l6ZSAtIGFsbG9jYXRlZF9zaXplKTsKKworCS8q IFVwZGF0ZSBzaG1lbSBpbmRleCBlbnRyeS4gKi8KKwlyZXN1bHQtPnNpemUgPSBuZXdfc2l6ZTsK KwlyZXN1bHQtPmFsbG9jYXRlZF9zaXplID0gYWxsb2NhdGVkX3NpemU7CisKKwlMV0xvY2tSZWxl YXNlKFNobWVtSW5kZXhMb2NrKTsKK30KKyNlbmRpZgorCiAjaWZkZWYgRVhFQ19CQUNLRU5ECiB2 b2lkCiBTaG1lbUF0dGFjaFJlZ2lzdGVyZWQodm9pZCkKQEAgLTcwMCw2ICs4NjAsNyBAQCBTaG1l bUluaXRTdHJ1Y3QoY29uc3QgY2hhciAqbmFtZSwgU2l6ZSBzaXplLCBib29sICpmb3VuZFB0cikK IAkJfQogCQlyZXN1bHQtPnNpemUgPSBzaXplOwogCQlyZXN1bHQtPmFsbG9jYXRlZF9zaXplID0g YWxsb2NhdGVkX3NpemU7CisJCXJlc3VsdC0+cmVzZXJ2ZWRzaXplID0gYWxsb2NhdGVkX3NpemU7 CiAJCXJlc3VsdC0+bG9jYXRpb24gPSBzdHJ1Y3RQdHI7CiAJfQogCkBAIC03NDMsMTEgKzkwNCwy NiBAQCBtdWxfc2l6ZShTaXplIHMxLCBTaXplIHMyKQogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8q CisgKiBSb3VuZCB1cCB0aGUgZ2l2ZW4gc2l6ZSB0byB0aGUgbmV4dCBtdWx0aXBsZSBvZiB0aGUg Z2l2ZW4gYWxpZ25tZW50LCBjaGVja2luZworICogZm9yIG92ZXJmbG93LgorICovCitTaXplCith bGlnbl9zaXplKFNpemUgc2l6ZSwgU2l6ZSBhbGlnbm1lbnQpCit7CisKKwlBc3NlcnQoYWxpZ25t ZW50ICE9IDApOworCisJaWYgKHNpemUgJSBhbGlnbm1lbnQgPT0gMCkKKwkJcmV0dXJuIHNpemU7 CisJcmV0dXJuIGFkZF9zaXplKHNpemUsIGFsaWdubWVudCAtIChzaXplICUgYWxpZ25tZW50KSk7 Cit9CisKIC8qIFNRTCBTUkYgc2hvd2luZyBhbGxvY2F0ZWQgc2hhcmVkIG1lbW9yeSAqLwogRGF0 dW0KIHBnX2dldF9zaG1lbV9hbGxvY2F0aW9ucyhQR19GVU5DVElPTl9BUkdTKQogewotI2RlZmlu ZSBQR19HRVRfU0hNRU1fU0laRVNfQ09MUyA0CisjZGVmaW5lIFBHX0dFVF9TSE1FTV9TSVpFU19D T0xTIDUKIAlSZXR1cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8t PnJlc3VsdGluZm87CiAJSEFTSF9TRVFfU1RBVFVTIGhzdGF0OwogCVNobWVtSW5kZXhFbnQgKmVu dDsKQEAgLTc2OSw3ICs5NDUsMTcgQEAgcGdfZ2V0X3NobWVtX2FsbG9jYXRpb25zKFBHX0ZVTkNU SU9OX0FSR1MpCiAJCXZhbHVlc1sxXSA9IEludDY0R2V0RGF0dW0oKGNoYXIgKikgZW50LT5sb2Nh dGlvbiAtIChjaGFyICopIFNobWVtU2VnSGRyKTsKIAkJdmFsdWVzWzJdID0gSW50NjRHZXREYXR1 bShlbnQtPnNpemUpOwogCQl2YWx1ZXNbM10gPSBJbnQ2NEdldERhdHVtKGVudC0+YWxsb2NhdGVk X3NpemUpOwotCQluYW1lZF9hbGxvY2F0ZWQgKz0gZW50LT5hbGxvY2F0ZWRfc2l6ZTsKKwkJdmFs dWVzWzRdID0gSW50NjRHZXREYXR1bShlbnQtPnJlc2VydmVkc2l6ZSk7CisKKwkJLyoKKwkJICog VGhlIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBtZXRhZGF0YSBkb2VzIG5vdCBrbm93IGFib3V0IHRo ZSBpbnRlcm5hbAorCQkgKiByZXNlcnZhdGlvbi4gRnJvbSBpdCdzIHBvaW50IG9mIHZpZXcgdGhl IG1heGltdW0gc2l6ZSBvZiBhIHJlc2l6YWJsZQorCQkgKiBzaGFyZWQgc3RydWN0dXJlIGlzIGNv bnNpZGVyZWQgdG8gYmUgYWxsb2NhdGVkLiBJbiBvcmRlciB0byBjb21wdXRlCisJCSAqIHRoZSBh bW91bnQgb2YgbWVtb3J5IGFsbG9jYXRlZCB0byB0aGUgdW5uYW1lZCBzdHJ1Y3R1cmVzLCBhZGQK KwkJICogcmVzZXJ2ZWQgc2l6ZSwgd2hpY2ggaXMgc2FtZSBhcyB0aGUgYWxsb2NhdGVkIHNpemUg Zm9yIGEgZml4ZWQgc2l6ZWQKKwkJICogc3RydWN0dXJlLgorCQkgKi8KKwkJbmFtZWRfYWxsb2Nh dGVkICs9IGVudC0+cmVzZXJ2ZWRzaXplOwogCiAJCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHJzaW5m by0+c2V0UmVzdWx0LCByc2luZm8tPnNldERlc2MsCiAJCQkJCQkJIHZhbHVlcywgbnVsbHMpOwpA QCAtOTc1LDIzICsxMTYxLDkgQEAgcGdfZ2V0X3NobWVtX2FsbG9jYXRpb25zX251bWEoUEdfRlVO Q1RJT05fQVJHUykKIFNpemUKIHBnX2dldF9zaG1lbV9wYWdlc2l6ZSh2b2lkKQogewotCVNpemUJ CW9zX3BhZ2Vfc2l6ZTsKLSNpZmRlZiBXSU4zMgotCVNZU1RFTV9JTkZPIHN5c2luZm87Ci0KLQlH ZXRTeXN0ZW1JbmZvKCZzeXNpbmZvKTsKLQlvc19wYWdlX3NpemUgPSBzeXNpbmZvLmR3UGFnZVNp emU7Ci0jZWxzZQotCW9zX3BhZ2Vfc2l6ZSA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKLSNlbmRp ZgotCiAJQXNzZXJ0KElzVW5kZXJQb3N0bWFzdGVyKTsKLQlBc3NlcnQoaHVnZV9wYWdlc19zdGF0 dXMgIT0gSFVHRV9QQUdFU19VTktOT1dOKTsKLQotCWlmIChodWdlX3BhZ2VzX3N0YXR1cyA9PSBI VUdFX1BBR0VTX09OKQotCQlHZXRIdWdlUGFnZVNpemUoJm9zX3BhZ2Vfc2l6ZSwgTlVMTCk7CiAK LQlyZXR1cm4gb3NfcGFnZV9zaXplOworCXJldHVybiBHZXRPU1BhZ2VTaXplKCk7CiB9CiAKIERh dHVtCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA4M2Y2NTAxZGYzOC4uZGZkMzM4OWNlZDMg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtODU5Miw4ICs4NTkyLDggQEAKIHsgb2lkID0+ ICc1MDUyJywgZGVzY3IgPT4gJ2FsbG9jYXRpb25zIGZyb20gdGhlIG1haW4gc2hhcmVkIG1lbW9y eSBzZWdtZW50JywKICAgcHJvbmFtZSA9PiAncGdfZ2V0X3NobWVtX2FsbG9jYXRpb25zJywgcHJv cm93cyA9PiAnNTAnLCBwcm9yZXRzZXQgPT4gJ3QnLAogICBwcm92b2xhdGlsZSA9PiAndicsIHBy b3JldHR5cGUgPT4gJ3JlY29yZCcsIHByb2FyZ3R5cGVzID0+ICcnLAotICBwcm9hbGxhcmd0eXBl cyA9PiAne3RleHQsaW50OCxpbnQ4LGludDh9JywgcHJvYXJnbW9kZXMgPT4gJ3tvLG8sbyxvfScs Ci0gIHByb2FyZ25hbWVzID0+ICd7bmFtZSxvZmYsc2l6ZSxhbGxvY2F0ZWRfc2l6ZX0nLAorICBw cm9hbGxhcmd0eXBlcyA9PiAne3RleHQsaW50OCxpbnQ4LGludDgsaW50OH0nLCBwcm9hcmdtb2Rl cyA9PiAne28sbyxvLG8sb30nLAorICBwcm9hcmduYW1lcyA9PiAne25hbWUsb2ZmLHNpemUsYWxs b2NhdGVkX3NpemUscmVzZXJ2ZWRfc2l6ZX0nLAogICBwcm9zcmMgPT4gJ3BnX2dldF9zaG1lbV9h bGxvY2F0aW9ucycgfSwKIAogeyBvaWQgPT4gJzQwOTknLCBkZXNjciA9PiAnSXMgTlVNQSBzdXBw b3J0IGF2YWlsYWJsZT8nLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wZ19zaG1l bS5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wZ19zaG1lbS5oCmluZGV4IDEwYzdiMDY1ODYxLi4w N2U3ZjFhOTY2MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wZ19zaG1lbS5oCisr KyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcGdfc2htZW0uaApAQCAtODksNiArODksOCBAQCBleHRl cm4gUEdTaG1lbUhlYWRlciAqUEdTaGFyZWRNZW1vcnlDcmVhdGUoU2l6ZSBzaXplLAogCQkJCQkJ CQkJCSAgIFBHU2htZW1IZWFkZXIgKipzaGltKTsKIGV4dGVybiBib29sIFBHU2hhcmVkTWVtb3J5 SXNJblVzZSh1bnNpZ25lZCBsb25nIGlkMSwgdW5zaWduZWQgbG9uZyBpZDIpOwogZXh0ZXJuIHZv aWQgUEdTaGFyZWRNZW1vcnlEZXRhY2godm9pZCk7CitleHRlcm4gdm9pZCBQR1NoYXJlZE1lbW9y eVJlbGVhc2Uodm9pZCAqYWRkciwgU2l6ZSBzaXplKTsKIGV4dGVybiB2b2lkIEdldEh1Z2VQYWdl U2l6ZShTaXplICpodWdlcGFnZXNpemUsIGludCAqbW1hcF9mbGFncyk7CitleHRlcm4gU2l6ZSBH ZXRPU1BhZ2VTaXplKHZvaWQpOwogCiAjZW5kaWYJCQkJCQkJLyogUEdfU0hNRU1fSCAqLwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oIGIvc3JjL2luY2x1ZGUvc3RvcmFn ZS9zaG1lbS5oCmluZGV4IGNiZDRlZjhkMDNmLi5hMWZlOTQ1ZTAyYiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0u aApAQCAtNTAsNiArNTAsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgU2htZW1TdHJ1Y3REZXNjCiAJICov CiAJc2l6ZV90CQlleHRyYV9zaXplOwogCisJLyoKKwkgKiBNYXhpbXVtIHNpemUgdGhpcyBzdHJ1 Y3R1cmUgY2FuIGdyb3cgdXB0byBpbiBmdXR1cmUuIFRoZSBtZW1vcnkgaXMgbm90CisJICogYWxs b2NhdGVkIHJpZ2h0IGF3YXkgYnV0IHRoZSBjb3JyZXNwb25kaW5nIGFkZHJlc3Mgc3BhY2UgaXMg YWxsb2NhdGVkIHNvCisJICogdGhhdCBtZW1vcnkgY2FuIGJlIG1hcHBlZCB0byBpdCB3aGVuIHRo ZSBzdHJ1Y3R1cmUgZ3Jvd3MuIFR5cGljYWxseQorCSAqIHNob3VsZCBiZSB1c2VkIGZvciBzdHJ1 Y3R1cmVzIHdoaWNoIG5lZWQgY29udGlndW91cyBtZW1vcnkuCisJICovCisJc2l6ZV90CQltYXhf c2l6ZTsKKwogCS8qIFBvaW50ZXIgdG8gdGhlIHZhcmlhYmxlIHRvIHdoaWNoIHBvaW50ZXIgdG8g dGhpcyBzaGFyZWQgbWVtb3J5IGFyZWEgaXMgYXNzaWduZWQgYWZ0ZXIgYWxsb2NhdGlvbi4gKi8K IAl2b2lkCSAgICoqcHRyOwogfSBTaG1lbVN0cnVjdERlc2M7CkBAIC04NCw2ICs5Miw5IEBAIGV4 dGVybiB2b2lkIEluaXRTaG1lbUluZGV4KHZvaWQpOwogCiBleHRlcm4gdm9pZCBTaG1lbVJlZ2lz dGVySGFzaChTaG1lbUhhc2hEZXNjICpkZXNjLCBIQVNIQ1RMICppbmZvUCwgaW50IGhhc2hfZmxh Z3MpOwogZXh0ZXJuIHZvaWQgU2htZW1SZWdpc3RlclN0cnVjdChTaG1lbVN0cnVjdERlc2MgKmRl c2MpOworI2lmbmRlZiBFWEVDX0JBQ0tFTkQKK2V4dGVybiB2b2lkIFNobWVtUmVzaXplUmVnaXN0 ZXJlZChjb25zdCBjaGFyICpuYW1lLCBTaXplIG5ld19zaXplKTsKKyNlbmRpZgogCiAvKiBMZWdh Y3kgZnVuY3Rpb25zICovCiBleHRlcm4gSFRBQiAqU2htZW1Jbml0SGFzaChjb25zdCBjaGFyICpu YW1lLCBpbnQ2NCBpbml0X3NpemUsIGludDY0IG1heF9zaXplLApAQCAtOTYsNiArMTA3LDcgQEAg ZXh0ZXJuIHZvaWQgU2htZW1BdHRhY2hSZWdpc3RlcmVkKHZvaWQpOwogCiBleHRlcm4gU2l6ZSBh ZGRfc2l6ZShTaXplIHMxLCBTaXplIHMyKTsKIGV4dGVybiBTaXplIG11bF9zaXplKFNpemUgczEs IFNpemUgczIpOworZXh0ZXJuIFNpemUgYWxpZ25fc2l6ZShTaXplIHNpemUsIFNpemUgYWxpZ24p OwogCiBleHRlcm4gUEdETExJTVBPUlQgU2l6ZSBwZ19nZXRfc2htZW1fcGFnZXNpemUodm9pZCk7 CiAKQEAgLTExNSw2ICsxMjcsNyBAQCB0eXBlZGVmIHN0cnVjdAogCXZvaWQJICAgKmxvY2F0aW9u OwkJLyogbG9jYXRpb24gaW4gc2hhcmVkIG1lbSAqLwogCVNpemUJCXNpemU7CQkJLyogIyBieXRl cyByZXF1ZXN0ZWQgZm9yIHRoZSBzdHJ1Y3R1cmUgKi8KIAlTaXplCQlhbGxvY2F0ZWRfc2l6ZTsg LyogIyBieXRlcyBhY3R1YWxseSBhbGxvY2F0ZWQgKi8KKwlTaXplCQlyZXNlcnZlZHNpemU7ICAg LyogIyBieXRlcyByZXNlcnZlZCBmb3IgdGhpcyByZXNpemFibGUgc3RydWN0dXJlLiAqLwogfSBT aG1lbUluZGV4RW50OwogCiAjZW5kaWYJCQkJCQkJLyogU0hNRU1fSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKaW5k ZXggNDRjNzE2M2MxY2QuLmE1ZGY2ZWRhZTE4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVz L01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKQEAgLTE0LDYgKzE0LDcg QEAgU1VCRElSUyA9IFwKIAkJICBsaWJwcV9waXBlbGluZSBcCiAJCSAgb2F1dGhfdmFsaWRhdG9y IFwKIAkJICBwbHNhbXBsZSBcCisJCSAgcmVzaXphYmxlX3NobWVtIFwKIAkJICBzcGdpc3RfbmFt ZV9vcHMgXAogCQkgIHRlc3RfYWlvIFwKIAkJICB0ZXN0X2JpbmFyeWhlYXAgXApkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvbWVzb24u YnVpbGQKaW5kZXggMjYzNGE1MTk5MzUuLjk2MWJiNjI3NTlkIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9tb2R1bGVzL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQK QEAgLTEzLDYgKzEzLDcgQEAgc3ViZGlyKCdsaWJwcV9waXBlbGluZScpCiBzdWJkaXIoJ25idHJl ZScpCiBzdWJkaXIoJ29hdXRoX3ZhbGlkYXRvcicpCiBzdWJkaXIoJ3Bsc2FtcGxlJykKK3N1YmRp cigncmVzaXphYmxlX3NobWVtJykKIHN1YmRpcignc3BnaXN0X25hbWVfb3BzJykKIHN1YmRpcign c3NsX3Bhc3NwaHJhc2VfY2FsbGJhY2snKQogc3ViZGlyKCd0ZXN0X2FpbycpCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9NYWtlZmlsZSBiL3NyYy90ZXN0L21v ZHVsZXMvcmVzaXphYmxlX3NobWVtL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi5hZDJmMDQwYjJmMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21v ZHVsZXMvcmVzaXphYmxlX3NobWVtL01ha2VmaWxlCkBAIC0wLDAgKzEsMjMgQEAKKyMgc3JjL3Rl c3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vTWFrZWZpbGUKKworTU9EVUxFUyA9IHJlc2l6YWJs ZV9zaG1lbQorSVNPTEFUSU9OID0gcmVzaXphYmxlX3NobWVtCisKK0VYVEVOU0lPTiA9IHJlc2l6 YWJsZV9zaG1lbQorREFUQSA9IHJlc2l6YWJsZV9zaG1lbS0tMS4wLnNxbAorUEdGSUxFREVTQyA9 ICJyZXNpemFibGVfc2htZW0gLSB0ZXN0IG1vZHVsZSBmb3IgcmVzaXphYmxlIHNoYXJlZCBtZW1v cnkiCisKKyMgVGhpcyB0ZXN0IHJlcXVpcmVzIGxpYnJhcnkgdG8gYmUgbG9hZGVkIGF0IHRoZSBz ZXJ2ZXIgc3RhcnQsIHNvIGRpc2FibGUKKyMgaW5zdGFsbGNoZWNrCitOT19JTlNUQUxMQ0hFQ0sg PSAxCisKK2lmZGVmIFVTRV9QR1hTCitQR19DT05GSUcgPSBwZ19jb25maWcKK1BHWFMgOj0gJChz aGVsbCAkKFBHX0NPTkZJRykgLS1wZ3hzKQoraW5jbHVkZSAkKFBHWFMpCitlbHNlCitzdWJkaXIg PSBzcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbQordG9wX2J1aWxkZGlyID0gLi4vLi4v Li4vLi4KK2luY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKK2luY2x1 ZGUgJCh0b3Bfc3JjZGlyKS9zcmMvbWFrZWZpbGVzL3BneHMubWsKK2VuZGlmCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9leHBlY3RlZC9yZXNpemFibGVfc2ht ZW0ub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vZXhwZWN0ZWQvcmVzaXph YmxlX3NobWVtLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYWZi MThkY2UwYTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9z aG1lbS9leHBlY3RlZC9yZXNpemFibGVfc2htZW0ub3V0CkBAIC0wLDAgKzEsMTQ5IEBACitQYXJz ZWQgdGVzdCBzcGVjIHdpdGggMyBzZXNzaW9ucworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczF1 IHMydSB6dSB6aWEgczF3X2luaXRpYWwgczF1IHMycl9pbml0aWFsIHMydSB6c19tYXggenUgemlh IHMycl9pbml0aWFsIHMyd19tYXggczJ1IHMxcl9tYXggczF1IHpzX3NocmluayB6dSB6aWEgczFy X3NocmluayBzMXdfc2hyaW5rIHMxdSBzMnJfc2hyaW5rIHMydSB6c19mYWlsCitzdGVwIHMxdTog U0VMRUNUIHBnX3NpemVfcHJldHR5KHJzc19zaG1lbSkgQVMgcnNzX3NobWVtIEZST00gcmVzaXph YmxlX3NobWVtX3VzYWdlKCkgQVMgInNlc3Npb24xX3NobWVtX3VzYWdlIjsKK3Jzc19zaG1lbQor LS0tLS0tLS0tCis1NTA0IGtCICAKKygxIHJvdykKKworc3RlcCBzMnU6IFNFTEVDVCBwZ19zaXpl X3ByZXR0eShyc3Nfc2htZW0pIEFTIHJzc19zaG1lbSBGUk9NIHJlc2l6YWJsZV9zaG1lbV91c2Fn ZSgpIEFTICJzZXNzaW9uMl9zaG1lbV91c2FnZSI7Cityc3Nfc2htZW0KKy0tLS0tLS0tLQorNTUw NCBrQiAgCisoMSByb3cpCisKK3N0ZXAgenU6IFNFTEVDVCBwZ19zaXplX3ByZXR0eShyc3Nfc2ht ZW0pIEFTIHJzc19zaG1lbSBGUk9NIHJlc2l6YWJsZV9zaG1lbV91c2FnZSgpIEFTICJyZXNpemVy X3NobWVtX3VzYWdlIjsKK3Jzc19zaG1lbQorLS0tLS0tLS0tCis1NTA0IGtCICAKKygxIHJvdykK Kworc3RlcCB6aWE6IFNFTEVDVCBuYW1lLCBwZ19zaXplX3ByZXR0eShzaXplKSBBUyBzaXplLCBw Z19zaXplX3ByZXR0eShhbGxvY2F0ZWRfc2l6ZSkgQVMgYWxsb2NhdGVkX3NpemUsIHBnX3NpemVf cHJldHR5KHJlc2VydmVkX3NpemUpIEFTIHJlc2VydmVkX3NpemUgRlJPTSBwZ19zaG1lbV9hbGxv Y2F0aW9ucyBXSEVSRSBuYW1lID0gJ3Jlc2l6YWJsZV9zaG1lbSc7CituYW1lICAgICAgICAgICB8 c2l6ZSAgfGFsbG9jYXRlZF9zaXplfHJlc2VydmVkX3NpemUKKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorcmVzaXphYmxlX3NobWVtfDEwMCBNQnwx MDAgTUIgICAgICAgIHw0MDAgTUIgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczF3X2luaXRpYWw6 IFNFTEVDVCByZXNpemFibGVfc2htZW1fd3JpdGUoMTAwKTsKK3Jlc2l6YWJsZV9zaG1lbV93cml0 ZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykK Kworc3RlcCBzMXU6IFNFTEVDVCBwZ19zaXplX3ByZXR0eShyc3Nfc2htZW0pIEFTIHJzc19zaG1l bSBGUk9NIHJlc2l6YWJsZV9zaG1lbV91c2FnZSgpIEFTICJzZXNzaW9uMV9zaG1lbV91c2FnZSI7 Cityc3Nfc2htZW0KKy0tLS0tLS0tLQorMTA1IE1CICAgCisoMSByb3cpCisKK3N0ZXAgczJyX2lu aXRpYWw6IFNFTEVDVCByZXNpemFibGVfc2htZW1fcmVhZCgyNSAqIDEwMjQgKiAxMDI0LCAxMDAp OworcmVzaXphYmxlX3NobWVtX3JlYWQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCit0ICAgICAgICAg ICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMydTogU0VMRUNUIHBnX3NpemVfcHJldHR5KHJz c19zaG1lbSkgQVMgcnNzX3NobWVtIEZST00gcmVzaXphYmxlX3NobWVtX3VzYWdlKCkgQVMgInNl c3Npb24yX3NobWVtX3VzYWdlIjsKK3Jzc19zaG1lbQorLS0tLS0tLS0tCisxMDUgTUIgICAKKygx IHJvdykKKworc3RlcCB6c19tYXg6IFNFTEVDVCByZXNpemFibGVfc2htZW1fcmVzaXplKDEwMCAq IDEwMjQgKiAxMDI0KTsKK3Jlc2l6YWJsZV9zaG1lbV9yZXNpemUKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCB6dTogU0VMRUNU IHBnX3NpemVfcHJldHR5KHJzc19zaG1lbSkgQVMgcnNzX3NobWVtIEZST00gcmVzaXphYmxlX3No bWVtX3VzYWdlKCkgQVMgInJlc2l6ZXJfc2htZW1fdXNhZ2UiOworcnNzX3NobWVtCistLS0tLS0t LS0KKzYyNzIga0IgIAorKDEgcm93KQorCitzdGVwIHppYTogU0VMRUNUIG5hbWUsIHBnX3NpemVf cHJldHR5KHNpemUpIEFTIHNpemUsIHBnX3NpemVfcHJldHR5KGFsbG9jYXRlZF9zaXplKSBBUyBh bGxvY2F0ZWRfc2l6ZSwgcGdfc2l6ZV9wcmV0dHkocmVzZXJ2ZWRfc2l6ZSkgQVMgcmVzZXJ2ZWRf c2l6ZSBGUk9NIHBnX3NobWVtX2FsbG9jYXRpb25zIFdIRVJFIG5hbWUgPSAncmVzaXphYmxlX3No bWVtJzsKK25hbWUgICAgICAgICAgIHxzaXplICB8YWxsb2NhdGVkX3NpemV8cmVzZXJ2ZWRfc2l6 ZQorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCity ZXNpemFibGVfc2htZW18NDAwIE1CfDQwMCBNQiAgICAgICAgfDQwMCBNQiAgICAgICAKKygxIHJv dykKKworc3RlcCBzMnJfaW5pdGlhbDogU0VMRUNUIHJlc2l6YWJsZV9zaG1lbV9yZWFkKDI1ICog MTAyNCAqIDEwMjQsIDEwMCk7CityZXNpemFibGVfc2htZW1fcmVhZAorLS0tLS0tLS0tLS0tLS0t LS0tLS0KK3QgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczJ3X21heDogU0VM RUNUIHJlc2l6YWJsZV9zaG1lbV93cml0ZSg1MDApOworcmVzaXphYmxlX3NobWVtX3dyaXRlCist LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitz dGVwIHMydTogU0VMRUNUIHBnX3NpemVfcHJldHR5KHJzc19zaG1lbSkgQVMgcnNzX3NobWVtIEZS T00gcmVzaXphYmxlX3NobWVtX3VzYWdlKCkgQVMgInNlc3Npb24yX3NobWVtX3VzYWdlIjsKK3Jz c19zaG1lbQorLS0tLS0tLS0tCis0MDUgTUIgICAKKygxIHJvdykKKworc3RlcCBzMXJfbWF4OiBT RUxFQ1QgcmVzaXphYmxlX3NobWVtX3JlYWQoMTAwICogMTAyNCAqIDEwMjQsIDUwMCk7CityZXNp emFibGVfc2htZW1fcmVhZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3QgICAgICAgICAgICAgICAg ICAgCisoMSByb3cpCisKK3N0ZXAgczF1OiBTRUxFQ1QgcGdfc2l6ZV9wcmV0dHkocnNzX3NobWVt KSBBUyByc3Nfc2htZW0gRlJPTSByZXNpemFibGVfc2htZW1fdXNhZ2UoKSBBUyAic2Vzc2lvbjFf c2htZW1fdXNhZ2UiOworcnNzX3NobWVtCistLS0tLS0tLS0KKzQwNSBNQiAgIAorKDEgcm93KQor CitzdGVwIHpzX3NocmluazogU0VMRUNUIHJlc2l6YWJsZV9zaG1lbV9yZXNpemUoNzUgKiAxMDI0 ICogMTAyNCk7CityZXNpemFibGVfc2htZW1fcmVzaXplCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgenU6IFNFTEVDVCBwZ19z aXplX3ByZXR0eShyc3Nfc2htZW0pIEFTIHJzc19zaG1lbSBGUk9NIHJlc2l6YWJsZV9zaG1lbV91 c2FnZSgpIEFTICJyZXNpemVyX3NobWVtX3VzYWdlIjsKK3Jzc19zaG1lbQorLS0tLS0tLS0tCis2 MjcyIGtCICAKKygxIHJvdykKKworc3RlcCB6aWE6IFNFTEVDVCBuYW1lLCBwZ19zaXplX3ByZXR0 eShzaXplKSBBUyBzaXplLCBwZ19zaXplX3ByZXR0eShhbGxvY2F0ZWRfc2l6ZSkgQVMgYWxsb2Nh dGVkX3NpemUsIHBnX3NpemVfcHJldHR5KHJlc2VydmVkX3NpemUpIEFTIHJlc2VydmVkX3NpemUg RlJPTSBwZ19zaG1lbV9hbGxvY2F0aW9ucyBXSEVSRSBuYW1lID0gJ3Jlc2l6YWJsZV9zaG1lbSc7 CituYW1lICAgICAgICAgICB8c2l6ZSAgfGFsbG9jYXRlZF9zaXplfHJlc2VydmVkX3NpemUKKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorcmVzaXph YmxlX3NobWVtfDMwMCBNQnwzMDAgTUIgICAgICAgIHw0MDAgTUIgICAgICAgCisoMSByb3cpCisK K3N0ZXAgczFyX3NocmluazogU0VMRUNUIHJlc2l6YWJsZV9zaG1lbV9yZWFkKDc1ICogMTAyNCAq IDEwMjQsIDUwMCk7CityZXNpemFibGVfc2htZW1fcmVhZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0K K3QgICAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczF3X3NocmluazogU0VMRUNU IHJlc2l6YWJsZV9zaG1lbV93cml0ZSg5OTkpOworcmVzaXphYmxlX3NobWVtX3dyaXRlCistLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVw IHMxdTogU0VMRUNUIHBnX3NpemVfcHJldHR5KHJzc19zaG1lbSkgQVMgcnNzX3NobWVtIEZST00g cmVzaXphYmxlX3NobWVtX3VzYWdlKCkgQVMgInNlc3Npb24xX3NobWVtX3VzYWdlIjsKK3Jzc19z aG1lbQorLS0tLS0tLS0tCiszMDUgTUIgICAKKygxIHJvdykKKworc3RlcCBzMnJfc2hyaW5rOiBT RUxFQ1QgcmVzaXphYmxlX3NobWVtX3JlYWQoNzUgKiAxMDI0ICogMTAyNCwgOTk5KTsKK3Jlc2l6 YWJsZV9zaG1lbV9yZWFkCistLS0tLS0tLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAgICAgICAg ICAKKygxIHJvdykKKworc3RlcCBzMnU6IFNFTEVDVCBwZ19zaXplX3ByZXR0eShyc3Nfc2htZW0p IEFTIHJzc19zaG1lbSBGUk9NIHJlc2l6YWJsZV9zaG1lbV91c2FnZSgpIEFTICJzZXNzaW9uMl9z aG1lbV91c2FnZSI7Cityc3Nfc2htZW0KKy0tLS0tLS0tLQorMzA1IE1CICAgCisoMSByb3cpCisK K3N0ZXAgenNfZmFpbDogU0VMRUNUIHJlc2l6YWJsZV9zaG1lbV9yZXNpemUoMTI4ICogMTAyNCAq IDEwMjQpOworRVJST1I6ICBub3QgZW5vdWdoIGFkZHJlc3Mgc3BhY2UgaXMgcmVzZXJ2ZWQgZm9y IHJlc2l6aW5nIHN0cnVjdHVyZSAicmVzaXphYmxlX3NobWVtIgpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVz L3Jlc2l6YWJsZV9zaG1lbS9tZXNvbi5idWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uNmU1ZjZkNWNhYWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1 bGVzL3Jlc2l6YWJsZV9zaG1lbS9tZXNvbi5idWlsZApAQCAtMCwwICsxLDM3IEBACisjIHNyYy90 ZXN0L21vZHVsZXMvdGVzdF9yZXNpemFibGVfc2htZW0vbWVzb24uYnVpbGQKKworcmVzaXphYmxl X3NobWVtX3NvdXJjZXMgPSBmaWxlcygKKyAgJ3Jlc2l6YWJsZV9zaG1lbS5jJywKKykKKworaWYg aG9zdF9zeXN0ZW0gPT0gJ3dpbmRvd3MnCisgIHJlc2l6YWJsZV9zaG1lbV9zb3VyY2VzICs9IHJj X2xpYl9nZW4ucHJvY2Vzcyh3aW4zMnZlcl9yYywgZXh0cmFfYXJnczogWworICAgICctLU5BTUUn LCAncmVzaXphYmxlX3NobWVtJywKKyAgICAnLS1GSUxFREVTQycsICdyZXNpemFibGVfc2htZW0g LSB0ZXN0IG1vZHVsZSBmb3IgcmVzaXphYmxlIHNoYXJlZCBtZW1vcnknLF0pCitlbmRpZgorCity ZXNpemFibGVfc2htZW0gPSBzaGFyZWRfbW9kdWxlKCdyZXNpemFibGVfc2htZW0nLAorICByZXNp emFibGVfc2htZW1fc291cmNlcywKKyAga3dhcmdzOiBwZ190ZXN0X21vZF9hcmdzLAorKQordGVz dF9pbnN0YWxsX2xpYnMgKz0gcmVzaXphYmxlX3NobWVtCisKK3Rlc3RfaW5zdGFsbF9kYXRhICs9 IGZpbGVzKAorICAncmVzaXphYmxlX3NobWVtLmNvbnRyb2wnLAorICAncmVzaXphYmxlX3NobWVt LS0xLjAuc3FsJywKKykKKwordGVzdHMgKz0geworICAnbmFtZSc6ICdyZXNpemFibGVfc2htZW0n LAorICAnc2QnOiBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKKyAgJ2JkJzogbWVzb24uY3Vy cmVudF9idWlsZF9kaXIoKSwKKyAgJ2lzb2xhdGlvbic6IHsKKyAgICAnc3BlY3MnOiBbCisgICAg ICAncmVzaXphYmxlX3NobWVtJywKKyAgICBdLAorICAgICdyZWdyZXNzX2FyZ3MnOiBbJy0tdGVt cC1jb25maWcnLCBmaWxlcygncmVzaXphYmxlX3NobWVtLmNvbmYnKV0sCisgICAgIyBUaGlzIHRl c3QgcmVxdWlyZXMgbGlicmFyeSB0byBiZSBsb2FkZWQgYXQgdGhlIHNlcnZlciBzdGFydCwgc28g ZGlzYWJsZQorICAgICMgaW5zdGFsbGNoZWNrCisgICAgJ3J1bm5pbmdjaGVjayc6IGZhbHNlLAor ICB9LAorfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vcmVz aXphYmxlX3NobWVtLS0xLjAuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0v cmVzaXphYmxlX3NobWVtLS0xLjAuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi4yYTVmYTk1NzE2NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv cmVzaXphYmxlX3NobWVtL3Jlc2l6YWJsZV9zaG1lbS0tMS4wLnNxbApAQCAtMCwwICsxLDM5IEBA CisvKiBzcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0tLTEu MC5zcWwgKi8KKworLS0gY29tcGxhaW4gaWYgc2NyaXB0IGlzIHNvdXJjZWQgaW4gcHNxbCwgcmF0 aGVyIHRoYW4gdmlhIENSRUFURSBFWFRFTlNJT04KK1xlY2hvIFVzZSAiQ1JFQVRFIEVYVEVOU0lP TiByZXNpemFibGVfc2htZW0iIHRvIGxvYWQgdGhpcyBmaWxlLiBccXVpdAorCistLSBGdW5jdGlv biB0byByZXNpemUgdGhlIHRlc3Qgc3RydWN0dXJlIGluIHRoZSBzaGFyZWQgbWVtb3J5CitDUkVB VEUgRlVOQ1RJT04gcmVzaXphYmxlX3NobWVtX3Jlc2l6ZShuZXdfZW50cmllcyBpbnRlZ2VyKQor UkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0UgQyBTVFJJQ1Q7CisK Ky0tIEZ1bmN0aW9uIHRvIHdyaXRlIGRhdGEgdG8gYWxsIGVudHJpZXMgaW4gdGhlIHRlc3Qgc3Ry dWN0dXJlIGluIHNoYXJlZCBtZW1vcnkKKy0tIFdyaXRpbmcgYWxsIHRoZSBlbnRyaWVzIG1ha2Vz IHN1cmUgdGhhdCB0aGUgbWVtb3J5IGlzIGFjdHVhbGx5IGFsbG9jYXRlZCBhbmQKKy0tIG1hcHBl ZCB0byB0aGUgcHJvY2Vzcywgc28gdGhhdCB3ZSBjYW4gbGF0ZXIgbWVhc3VyZSB0aGUgbWVtb3J5 IHVzYWdlLgorQ1JFQVRFIEZVTkNUSU9OIHJlc2l6YWJsZV9zaG1lbV93cml0ZShlbnRyeV92YWx1 ZSBpbnRlZ2VyKQorUkVUVVJOUyB2b2lkCitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0Ug QyBTVFJJQ1Q7CisKKy0tIEZ1bmN0aW9uIHRvIHZlcmlmeSB0aGF0IHNwZWNpZmllZCBudW1iZXIg b2YgaW5pdGlhbCBlbnRyaWVzIGhhdmUgZXhwZWN0ZWQgdmFsdWUuCistLSBSZWFkaW5nIGFsbCB0 aGUgZW50cmllcyBtYWtlcyBzdXJlIHRoYXQgdGhlIG1lbW9yeSBpcyBhY3R1YWxseSBtYXBwZWQg dG8gdGhlCistLSBwcm9jZXNzLCBzbyB0aGF0IHdlIGNhbiBsYXRlciBtZWFzdXJlIHRoZSBtZW1v cnkgdXNhZ2UuCitDUkVBVEUgRlVOQ1RJT04gcmVzaXphYmxlX3NobWVtX3JlYWQoZW50cnlfY291 bnQgaW50ZWdlciwgZW50cnlfdmFsdWUgaW50ZWdlcikKK1JFVFVSTlMgYm9vbGVhbgorQVMgJ01P RFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgU1RSSUNUOworCistLSBGdW5jdGlvbiB0byByZXBv cnQgbWVtb3J5IHVzYWdlIHN0YXRpc3RpY3Mgb2YgdGhlIGNhbGxpbmcgYmFja2VuZAorLS0KKy0t IFRPRE86IFRoaXMgZnVuY3Rpb24gaXMgdXNlZnVsIHRvIGRldGVybWluZSB0aGF0IHRoZSBtZW1v cnkgaXMgZnJlZWQgYWZ0ZXIKKy0tIHNocmlua2luZyBhbmQgdGhhdCB3ZSBkb24ndCBhbGxvY2F0 ZSBhbGwgdGhlIG1lbW9yeSB1cGZyb250IGluc3RlYWQgb2YganVzdAorLS0gcmVzZXJ2aW5nIHRo ZSBhZGRyZXNzIHNwYWNlLiB0aGUgQyBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIHJl bGllcworLS0gaGVhdmlseSBvbiBMaW51eC1zcGVjaWZpYyAvcHJvYy9zZWxmL3N0YXRzIGFuZCBh bHNvIHRoZSBzaXplcyB0aGF0IGl0IHJldHVybnMKKy0tIG1heSBub3QgYmUgc3RhYmxlIGFjcm9z cyBkaWZmZXJlbnQgbWFjaGluZXMuIEhlbmNlIHdlIHNob3VsZCBjb25zaWRlcgorLS0gcmVtb3Zp bmcgdGhpcyBmdW5jdGlvbiBhbmQgdGhlIHJlbGF0ZWQgdGVzdHMgYWZ0ZXIgd2UgaGF2ZSB2ZXJp ZmllZCB0aGUKKy0tIHJlc2l6aW5nIHdvcmtzIGFzIGV4cGVjdGVkLgorQ1JFQVRFIEZVTkNUSU9O IHJlc2l6YWJsZV9zaG1lbV91c2FnZShPVVQgcnNzX2Fub24gYmlnaW50LCBPVVQgcnNzX2ZpbGUg YmlnaW50LCBPVVQgcnNzX3NobWVtIGJpZ2ludCwgT1VUIHZtX3NpemUgYmlnaW50KQorQVMgJ01P RFVMRV9QQVRITkFNRScKK0xBTkdVQUdFIEMgU1RSSUNUOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv bW9kdWxlcy9yZXNpemFibGVfc2htZW0vcmVzaXphYmxlX3NobWVtLmMgYi9zcmMvdGVzdC9tb2R1 bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uNTVjODZiOGUxYWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0uYwpAQCAtMCwwICsx LDI3MCBAQAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHJlc2l6YWJsZV9zaG1lbS5jCisg KgkJVGVzdCBtb2R1bGUgZm9yIFBvc3RncmVTUUwncyByZXNpemFibGUgc2hhcmVkIG1lbW9yeSBm dW5jdGlvbmFsaXR5CisgKgorICogVGhpcyBtb2R1bGUgZGVtb25zdHJhdGVzIGFuZCB0ZXN0cyB0 aGUgcmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgQVBJCisgKiBwcm92aWRlZCBieSBzaG1lbS5jL3No bWVtLmguCisgKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVkZSAicG9zdGdyZXMu aCIKKworI2luY2x1ZGUgImZtZ3IuaCIKKyNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAi bWlzY2FkbWluLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgorI2luY2x1ZGUgInN0b3Jh Z2Uvc3Bpbi5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMv Z3VjLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy90aW1l c3RhbXAuaCIKKyNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCisKKyNpbmNsdWRlIDxz dGRpby5oPgorCitQR19NT0RVTEVfTUFHSUM7CisKKy8qCisgKiBEZWZhdWx0IGFtb3VudCBvZiBz aGFyZWQgYnVmZmVycyBhbmQgaGVuY2UgdGhlIGFtb3VudCBvZiBzaGFyZWQgbWVtb3J5CisgKiBh bGxvY2F0ZWQgYnkgZGVmYXVsdCBpcyBpbiBodW5kcmVkcyBvZiBNQnMuIFRoZSBtZW1vcnkgYWxs b2NhdGVkIHRvIHRoZSB0ZXN0CisgKiBzdHJ1Y3R1cmUgd2lsbCBiZSBub3RpY2VhYmxlIG9ubHkg d2hlbiBpdCdzIGluIHRoZSBzYW1lIG9yZGVyLgorICovCisjZGVmaW5lIFRFU1RfSU5JVElBTF9F TlRSSUVTCSgyNSAqIDEwMjQgKiAxMDI0KQkJLyogSW5pdGlhbCBudW1iZXIgb2YgZW50cmllcyAo MTAwTUIpICovCisjZGVmaW5lIFRFU1RfTUFYX0VOVFJJRVMJCSgxMDAgKiAxMDI0ICogMTAyNCkJ CS8qIE1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMgKDQwME1CLCA0eCBpbml0aWFsKSAqLworI2Rl ZmluZSBURVNUX0VOVFJZX1NJWkUJCQlzaXplb2YoaW50MzIpCQkvKiBTaXplIG9mIGVhY2ggZW50 cnkgKi8KKworLyoKKyAqIFJlc2l6YWJsZSB0ZXN0IGRhdGEgc3RydWN0dXJlIHN0b3JlZCBpbiBz aGFyZWQgbWVtb3J5LgorICoKKyAqIFdlIGRvIG5vdCB1c2UgYW55IGxvY2tzLiBUaGUgdGVzdCBw ZXJmb3JtcyByZXNpemluZywgcmVhZHMgYW5kIHdyaXRlcyBub25lIG9mCisgKiB3aGljaCBhcmUg Y29uY3VycmVudCB0byBrZWVwIHRoZSBjb2RlIGFuZCB0aGUgdGVzdCBzaW1wbGUuCisgKi8KK3R5 cGVkZWYgc3RydWN0IFRlc3RSZXNpemFibGVTaG1lbVN0cnVjdAoreworCS8qIE1ldGFkYXRhICov CisJaW50MzIJCW51bV9lbnRyaWVzOwkJLyogTnVtYmVyIG9mIGVudHJpZXMgdGhhdCBjYW4gZml0 ICovCisKKwkvKiBEYXRhIGFyZWEgLSB2YXJpYWJsZSBzaXplICovCisJaW50MzIJCWRhdGFbRkxF WElCTEVfQVJSQVlfTUVNQkVSXTsKK30gVGVzdFJlc2l6YWJsZVNobWVtU3RydWN0OworCisvKiBH bG9iYWwgcG9pbnRlciB0byBvdXIgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUgKi8KK3N0YXRpYyBU ZXN0UmVzaXphYmxlU2htZW1TdHJ1Y3QgKnJlc2l6YWJsZV9zaG1lbSA9IE5VTEw7CisKK3N0YXRp YyB2b2lkIHJlc2l6YWJsZV9zaG1lbV9zaG1lbV9pbml0KHZvaWQgKmFyZyk7CisKK3N0YXRpYyBT aG1lbVN0cnVjdERlc2MgdGVzdFNobWVtRGVzYyA9IHsKKwkubmFtZSA9ICJyZXNpemFibGVfc2ht ZW0iLAorCS5zaXplID0gb2Zmc2V0b2YoVGVzdFJlc2l6YWJsZVNobWVtU3RydWN0LCBkYXRhKSAr IChURVNUX0lOSVRJQUxfRU5UUklFUyAqIFRFU1RfRU5UUllfU0laRSksCisJLm1heF9zaXplID0g b2Zmc2V0b2YoVGVzdFJlc2l6YWJsZVNobWVtU3RydWN0LCBkYXRhKSArIChURVNUX01BWF9FTlRS SUVTICogVEVTVF9FTlRSWV9TSVpFKSwKKwkuYWxpZ25tZW50ID0gTUFYSU1VTV9BTElHTk9GLAor CS5pbml0X2ZuID0gcmVzaXphYmxlX3NobWVtX3NobWVtX2luaXQsCisJLnB0ciA9ICh2b2lkICoq KSAmcmVzaXphYmxlX3NobWVtLAorfTsKKworc3RhdGljIHNobWVtX3JlcXVlc3RfaG9va190eXBl IHByZXZfc2htZW1fcmVxdWVzdF9ob29rID0gTlVMTDsKKworc3RhdGljIHZvaWQgcmVzaXphYmxl X3NobWVtX3JlcXVlc3Qodm9pZCk7CisKKy8qIFNRTC1jYWxsYWJsZSBmdW5jdGlvbnMgKi8KK1BH X0ZVTkNUSU9OX0lORk9fVjEocmVzaXphYmxlX3NobWVtX3Jlc2l6ZSk7CitQR19GVU5DVElPTl9J TkZPX1YxKHJlc2l6YWJsZV9zaG1lbV93cml0ZSk7CitQR19GVU5DVElPTl9JTkZPX1YxKHJlc2l6 YWJsZV9zaG1lbV9yZWFkKTsKK1BHX0ZVTkNUSU9OX0lORk9fVjEocmVzaXphYmxlX3NobWVtX3Vz YWdlKTsKKworLyoKKyAqIE1vZHVsZSBsb2FkIGNhbGxiYWNrCisgKi8KK3ZvaWQKK19QR19pbml0 KHZvaWQpCit7CisJLyoKKwkgKiBUaGUgbW9kdWxlIG5lZWRzIHRvIGJlIGxvYWRlZCB2aWEgc2hh cmVkX3ByZWxvYWRfbGlicmFyaWVzIHRvIHJlZ2lzdGVyCisJICogc2hhcmVkIG1lbW9yeSBzdHJ1 Y3R1cmUuIEJ1dCBpZiB0aGF0J3Mgbm90IHRoZSBjYXNlLCBkb24ndCB0aHJvdyBhbiBlcnJvci4K KwkgKiBUaGUgU1FMIGZ1bmN0aW9ucyBjaGVjayBmb3IgZXhpc3RlbmNlIG9mIHRoZSBzaGFyZWQg bWVtb3J5IGRhdGEgc3RydWN0dXJlLgorCSAqLworCWlmICghcHJvY2Vzc19zaGFyZWRfcHJlbG9h ZF9saWJyYXJpZXNfaW5fcHJvZ3Jlc3MpCisJCXJldHVybjsKKworI2lmZGVmIEVYRUNfQkFDS0VO RAorCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBP UlRFRCksCisJCQkgZXJybXNnKCJyZXNpemFibGVfc2htZW0gaXMgbm90IHN1cHBvcnRlZCBpbiBF WEVDX0JBQ0tFTkQgYnVpbGRzIikpKTsKKyNlbmRpZgorCisJLyogSW5zdGFsbCBob29rIHRvIHJl Z2lzdGVyIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlLiAqLworCXByZXZfc2htZW1fcmVxdWVzdF9o b29rID0gc2htZW1fcmVxdWVzdF9ob29rOworCXNobWVtX3JlcXVlc3RfaG9vayA9IHJlc2l6YWJs ZV9zaG1lbV9yZXF1ZXN0OworfQorCisvKgorICogUmVxdWVzdCBzaGFyZWQgbWVtb3J5IHJlc291 cmNlcworICovCitzdGF0aWMgdm9pZAorcmVzaXphYmxlX3NobWVtX3JlcXVlc3Qodm9pZCkKK3sK KwlpZiAocHJldl9zaG1lbV9yZXF1ZXN0X2hvb2spCisJCXByZXZfc2htZW1fcmVxdWVzdF9ob29r KCk7CisKKwkvKiBSZWdpc3RlciBvdXIgcmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJl ICovCisJU2htZW1SZWdpc3RlclN0cnVjdCgmdGVzdFNobWVtRGVzYyk7Cit9CisKKy8qCisgKiBJ bml0aWFsaXplIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlCisgKi8KK3N0YXRpYyB2b2lkCityZXNp emFibGVfc2htZW1fc2htZW1faW5pdCh2b2lkICphcmcpCit7CisJLyoKKwkgKiBTaGFyZWQgbWVt b3J5IHN0cnVjdHVyZSBzaG91bGQgaGF2ZSBiZWVuIGFsbG9jYXRlZCB3aXRoIHRoZSByZXF1ZXN0 ZWQKKwkgKiBzaXplLiBJbml0aWFsaXplIHRoZSBtZXRhZGF0YS4KKwkgKi8KKwlBc3NlcnQocmVz aXphYmxlX3NobWVtICE9IE5VTEwpOworCXJlc2l6YWJsZV9zaG1lbS0+bnVtX2VudHJpZXMgPSBU RVNUX0lOSVRJQUxfRU5UUklFUzsKK30KKworLyoKKyAqIFJlc2l6ZSB0aGUgc2hhcmVkIG1lbW9y eSBzdHJ1Y3R1cmUgdG8gYWNjb21tb2RhdGUgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YKKyAqIGVu dHJpZXMuCisgKi8KK0RhdHVtCityZXNpemFibGVfc2htZW1fcmVzaXplKFBHX0ZVTkNUSU9OX0FS R1MpCit7CisjaWZuZGVmIEVYRUNfQkFDS0VORAorCWludDMyCQluZXdfZW50cmllcyA9IFBHX0dF VEFSR19JTlQzMigwKTsKKwlTaXplCQluZXdfc2l6ZTsKKworCWlmICghcmVzaXphYmxlX3NobWVt KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9Q UkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coInJlc2l6YWJsZV9zaG1lbSBpcyBub3Qg aW5pdGlhbGl6ZWQiKSkpOworCisJbmV3X3NpemUgPSBvZmZzZXRvZihUZXN0UmVzaXphYmxlU2ht ZW1TdHJ1Y3QsIGRhdGEpICsgKG5ld19lbnRyaWVzICogVEVTVF9FTlRSWV9TSVpFKTsKKwlTaG1l bVJlc2l6ZVJlZ2lzdGVyZWQodGVzdFNobWVtRGVzYy5uYW1lLCBuZXdfc2l6ZSk7CisJcmVzaXph YmxlX3NobWVtLT5udW1fZW50cmllcyA9IG5ld19lbnRyaWVzOworCisJUEdfUkVUVVJOX1ZPSUQo KTsKKyNlbHNlCisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9O T1RfU1VQUE9SVEVEKSwKKwkJCSBlcnJtc2coInJlc2l6aW5nIHNoYXJlZCBtZW1vcnkgaXMgbm90 IHN1cHBvcnRlZCBpbiBFWEVDX0JBQ0tFTkQgYnVpbGRzIikpKTsKKyNlbmRpZgorfQorCisvKgor ICogV3JpdGUgdGhlIGdpdmVuIGludGVnZXIgdmFsdWUgdG8gYWxsIGVudHJpZXMgaW4gdGhlIGRh dGEgYXJyYXkuCisgKi8KK0RhdHVtCityZXNpemFibGVfc2htZW1fd3JpdGUoUEdfRlVOQ1RJT05f QVJHUykKK3sKKwlpbnQzMgkJZW50cnlfdmFsdWUgPSBQR19HRVRBUkdfSU5UMzIoMCk7CisJaW50 MzIJCWk7CisKKwlpZiAoIXJlc2l6YWJsZV9zaG1lbSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkg ZXJybXNnKCJyZXNpemFibGVfc2htZW0gaXMgbm90IGluaXRpYWxpemVkIikpKTsKKworCS8qIFdy aXRlIHRoZSB2YWx1ZSB0byBhbGwgY3VycmVudCBlbnRyaWVzICovCisJZm9yIChpID0gMDsgaSA8 IHJlc2l6YWJsZV9zaG1lbS0+bnVtX2VudHJpZXM7IGkrKykKKwkJcmVzaXphYmxlX3NobWVtLT5k YXRhW2ldID0gZW50cnlfdmFsdWU7CisKKwlQR19SRVRVUk5fVk9JRCgpOworfQorCisvKgorICog Q2hlY2sgd2hldGhlciB0aGUgZmlyc3QgJ2VudHJ5X2NvdW50JyBlbnRyaWVzIGFsbCBoYXZlIHRo ZSBleHBlY3RlZCAnZW50cnlfdmFsdWUnLgorICogUmV0dXJucyB0cnVlIGlmIGFsbCBtYXRjaCwg ZmFsc2Ugb3RoZXJ3aXNlLgorICovCitEYXR1bQorcmVzaXphYmxlX3NobWVtX3JlYWQoUEdfRlVO Q1RJT05fQVJHUykKK3sKKwlpbnQzMgkJZW50cnlfY291bnQgPSBQR19HRVRBUkdfSU5UMzIoMCk7 CisJaW50MzIJCWVudHJ5X3ZhbHVlID0gUEdfR0VUQVJHX0lOVDMyKDEpOworCWludDMyCQlpOwor CisJaWYgKHJlc2l6YWJsZV9zaG1lbSA9PSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShl cnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBl cnJtc2coInJlc2l6YWJsZV9zaG1lbSBpcyBub3QgaW5pdGlhbGl6ZWQiKSkpOworCisJLyogVmFs aWRhdGUgZW50cnlfY291bnQgKi8KKwlpZiAoZW50cnlfY291bnQgPCAwIHx8IGVudHJ5X2NvdW50 ID4gcmVzaXphYmxlX3NobWVtLT5udW1fZW50cmllcykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJl bnRyeV9jb3VudCAlZCBpcyBvdXQgb2YgcmFuZ2UgKDAuLiVkKSIsIGVudHJ5X2NvdW50LCByZXNp emFibGVfc2htZW0tPm51bV9lbnRyaWVzKSkpOworCisJLyogQ2hlY2sgaWYgZmlyc3QgZW50cnlf Y291bnQgZW50cmllcyBoYXZlIHRoZSBleHBlY3RlZCB2YWx1ZSAqLworCWZvciAoaSA9IDA7IGkg PCBlbnRyeV9jb3VudDsgaSsrKQorCXsKKwkJaWYgKHJlc2l6YWJsZV9zaG1lbS0+ZGF0YVtpXSAh PSBlbnRyeV92YWx1ZSkKKwkJCVBHX1JFVFVSTl9CT09MKGZhbHNlKTsKKwl9CisKKwlQR19SRVRV Uk5fQk9PTCh0cnVlKTsKK30KKworLyoKKyAqIFJlcG9ydCBtdWx0aXBsZSBtZW1vcnkgdXNhZ2Ug c3RhdGlzdGljcyBvZiB0aGUgY2FsbGluZyBiYWNrZW5kIHByb2Nlc3MKKyAqIGFzIHJlcG9ydGVk IGJ5IHRoZSBrZXJuZWwuCisgKiBSZXR1cm5zIFJzc0Fub24sIFJzc0ZpbGUsIFJzc1NobWVtLCBW bVNpemUgZnJvbSAvcHJvYy9zZWxmL3N0YXR1cyBhcyBhIHJlY29yZC4KKyAqCisgKiBUT0RPOiBT ZWUgVE9ETyBub3RlIGluIFNRTCBkZWZpbml0aW9uIG9mIHRoaXMgZnVuY3Rpb24uCisgKi8KK0Rh dHVtCityZXNpemFibGVfc2htZW1fdXNhZ2UoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlGSUxFCSAg ICpmOworCWNoYXIJCWxpbmVbMjU2XTsKKwlpbnQ2NAkJcnNzX2Fub25fa2IgPSAtMTsKKwlpbnQ2 NAkJcnNzX2ZpbGVfa2IgPSAtMTsKKwlpbnQ2NAkJcnNzX3NobWVtX2tiID0gLTE7CisJaW50NjQJ CXZtX3NpemVfa2IgPSAtMTsKKwlpbnQJCQlmb3VuZCA9IDA7CisJVHVwbGVEZXNjCXR1cGRlc2M7 CisJRGF0dW0JCXZhbHVlc1s0XTsKKwlib29sCQludWxsc1s0XTsKKwlIZWFwVHVwbGUJdHVwbGU7 CisKKwkvKiBPcGVuIC9wcm9jL3NlbGYvc3RhdHVzIHRvIHJlYWQgbWVtb3J5IGluZm9ybWF0aW9u ICovCisJZiA9IGZvcGVuKCIvcHJvYy9zZWxmL3N0YXR1cyIsICJyIik7CisJaWYgKGYgPT0gTlVM TCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKKwkJ CQkgZXJybXNnKCJjb3VsZCBub3Qgb3BlbiAvcHJvYy9zZWxmL3N0YXR1czogJW0iKSkpOworCisJ LyogTG9vayBmb3IgdGhlIG1lbW9yeSB1c2FnZSBsaW5lcyAqLworCXdoaWxlIChmZ2V0cyhsaW5l LCBzaXplb2YobGluZSksIGYpICE9IE5VTEwgJiYgZm91bmQgPCA0KQorCXsKKwkJaWYgKHJzc19h bm9uX2tiID09IC0xICYmIHNzY2FuZihsaW5lLCAiUnNzQW5vbjogJWxkIGtCIiwgJnJzc19hbm9u X2tiKSA9PSAxKQorCQkJZm91bmQrKzsKKwkJZWxzZSBpZiAocnNzX2ZpbGVfa2IgPT0gLTEgJiYg c3NjYW5mKGxpbmUsICJSc3NGaWxlOiAlbGQga0IiLCAmcnNzX2ZpbGVfa2IpID09IDEpCisJCQlm b3VuZCsrOworCQllbHNlIGlmIChyc3Nfc2htZW1fa2IgPT0gLTEgJiYgc3NjYW5mKGxpbmUsICJS c3NTaG1lbTogJWxkIGtCIiwgJnJzc19zaG1lbV9rYikgPT0gMSkKKwkJCWZvdW5kKys7CisJCWVs c2UgaWYgKHZtX3NpemVfa2IgPT0gLTEgJiYgc3NjYW5mKGxpbmUsICJWbVNpemU6ICVsZCBrQiIs ICZ2bV9zaXplX2tiKSA9PSAxKQorCQkJZm91bmQrKzsKKwl9CisKKwlmY2xvc2UoZik7CisKKwkv KiBCdWlsZCB0dXBsZSBkZXNjcmlwdG9yIGZvciBvdXIgcmVzdWx0IHR5cGUgKi8KKwlpZiAoZ2V0 X2NhbGxfcmVzdWx0X3R5cGUoZmNpbmZvLCBOVUxMLCAmdHVwZGVzYykgIT0gVFlQRUZVTkNfQ09N UE9TSVRFKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9O T1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJmdW5jdGlvbiByZXR1cm5pbmcgcmVjb3JkIGNh bGxlZCBpbiBjb250ZXh0ICIKKwkJCQkJCSJ0aGF0IGNhbm5vdCBhY2NlcHQgYSByZWNvcmQiKSkp OworCisJLyogQnVpbGQgdGhlIHJlc3VsdCB0dXBsZSAqLworCXZhbHVlc1swXSA9IEludDY0R2V0 RGF0dW0ocnNzX2Fub25fa2IgPj0gMCA/IHJzc19hbm9uX2tiICogMTAyNCA6IDApOworCXZhbHVl c1sxXSA9IEludDY0R2V0RGF0dW0ocnNzX2ZpbGVfa2IgPj0gMCA/IHJzc19maWxlX2tiICogMTAy NCA6IDApOworCXZhbHVlc1syXSA9IEludDY0R2V0RGF0dW0ocnNzX3NobWVtX2tiID49IDAgPyBy c3Nfc2htZW1fa2IgKiAxMDI0IDogMCk7CisJdmFsdWVzWzNdID0gSW50NjRHZXREYXR1bSh2bV9z aXplX2tiID49IDAgPyB2bV9zaXplX2tiICogMTAyNCA6IDApOworCisJbnVsbHNbMF0gPSBudWxs c1sxXSA9IG51bGxzWzJdID0gbnVsbHNbM10gPSBmYWxzZTsKKworCXR1cGxlID0gaGVhcF9mb3Jt X3R1cGxlKHR1cGRlc2MsIHZhbHVlcywgbnVsbHMpOworCVBHX1JFVFVSTl9EQVRVTShIZWFwVHVw bGVHZXREYXR1bSh0dXBsZSkpOworfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9yZXNp emFibGVfc2htZW0vcmVzaXphYmxlX3NobWVtLmNvbmYgYi9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6 YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0uY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uNzY0YjYzNTdjYmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9t b2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0uY29uZgpAQCAtMCwwICsxLDQg QEAKK3NoYXJlZF9wcmVsb2FkX2xpYnJhcmllcyA9ICdyZXNpemFibGVfc2htZW0nCisjIFR1cm4g aHVnZSBwYWdlcyBvZmYgc28gdGhhdCB3ZSBjYW4gdGVzdCBjaGFuZ2VzIGluIHRoZSBzaGFyZWQg bWVtb3J5IHNtYWxsZXIKKyMgdGhhbiBodWdlIHBhZ2Ugc2l6ZSB3aGljaCBtYXkgYmUgaW4gR0Jz LgoraHVnZV9wYWdlcyA9IG9mZgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFi bGVfc2htZW0vcmVzaXphYmxlX3NobWVtLmNvbnRyb2wgYi9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6 YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0uY29udHJvbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uMWNlMmM1ZWEyMWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0uY29udHJvbApAQCAtMCww ICsxLDUgQEAKKyMgcmVzaXphYmxlX3NobWVtIGV4dGVuc2lvbiB0ZXN0IG1vZHVsZQorY29tbWVu dCA9ICd0ZXN0IG1vZHVsZSBmb3IgdGVzdGluZyByZXNpemFibGUgc2hhcmVkIG1lbW9yeSBzdHJ1 Y3R1cmUgZnVuY3Rpb25hbGl0eScKK2RlZmF1bHRfdmVyc2lvbiA9ICcxLjAnCittb2R1bGVfcGF0 aG5hbWUgPSAnJGxpYmRpci9yZXNpemFibGVfc2htZW0nCityZWxvY2F0YWJsZSA9IHRydWUKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL3NwZWNzL3Jlc2l6YWJs ZV9zaG1lbS5zcGVjIGIvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vc3BlY3MvcmVz aXphYmxlX3NobWVtLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LjhiOGNmMTUzZGY4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFi bGVfc2htZW0vc3BlY3MvcmVzaXphYmxlX3NobWVtLnNwZWMKQEAgLTAsMCArMSw0MiBAQAorIyBU ZXN0IHJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IHN0cnVjdHVyZQorIworIyBJdCB0ZXN0cyB0aGF0 IGEgcmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlIGNhbiBiZSByZXNpemVkIGZyb20g YW55CisjIGJhY2tlbmQgYW5kIHRoYXQgdGhlIG5ldyBzaXplcyBhcmUgdmlzaWJsZSB0byBhbGwg dGhlIGJhY2tlbmRzLiBJdCB1c2VzCisjIGlzb2xhdGlvbiB0ZXN0IGluZnJhc3RydWN0dXJlIHNv IHRoYXQgcmVzaXppbmcsIHJlYWRpbmcgYW5kIHdyaXRpbmcgY2FuIGJlCisjIGludGVybGVhdmVk LgorCitzZXR1cAoreworICBDUkVBVEUgRVhURU5TSU9OIHJlc2l6YWJsZV9zaG1lbTsKK30KKwor dGVhcmRvd24KK3sKKyAgRFJPUCBFWFRFTlNJT04gcmVzaXphYmxlX3NobWVtOworfQorCitzZXNz aW9uICJzZXNzaW9uMSIKK3N0ZXAgczF3X2luaXRpYWwgeyBTRUxFQ1QgcmVzaXphYmxlX3NobWVt X3dyaXRlKDEwMCk7IH0KK3N0ZXAgczFyX21heCB7IFNFTEVDVCByZXNpemFibGVfc2htZW1fcmVh ZCgxMDAgKiAxMDI0ICogMTAyNCwgNTAwKTsgfQorc3RlcCBzMXJfc2hyaW5rIHsgU0VMRUNUIHJl c2l6YWJsZV9zaG1lbV9yZWFkKDc1ICogMTAyNCAqIDEwMjQsIDUwMCk7IH0KK3N0ZXAgczF3X3No cmluayB7IFNFTEVDVCByZXNpemFibGVfc2htZW1fd3JpdGUoOTk5KTsgfQorc3RlcCBzMXUgeyBT RUxFQ1QgcGdfc2l6ZV9wcmV0dHkocnNzX3NobWVtKSBBUyByc3Nfc2htZW0gRlJPTSByZXNpemFi bGVfc2htZW1fdXNhZ2UoKSBBUyAic2Vzc2lvbjFfc2htZW1fdXNhZ2UiOyB9CisKK3Nlc3Npb24g InNlc3Npb24yIgorc3RlcCBzMnJfaW5pdGlhbCB7IFNFTEVDVCByZXNpemFibGVfc2htZW1fcmVh ZCgyNSAqIDEwMjQgKiAxMDI0LCAxMDApOyB9CitzdGVwIHMyd19tYXggeyBTRUxFQ1QgcmVzaXph YmxlX3NobWVtX3dyaXRlKDUwMCk7IH0KK3N0ZXAgczJyX3NocmluayB7IFNFTEVDVCByZXNpemFi bGVfc2htZW1fcmVhZCg3NSAqIDEwMjQgKiAxMDI0LCA5OTkpOyB9CitzdGVwIHMydSB7IFNFTEVD VCBwZ19zaXplX3ByZXR0eShyc3Nfc2htZW0pIEFTIHJzc19zaG1lbSBGUk9NIHJlc2l6YWJsZV9z aG1lbV91c2FnZSgpIEFTICJzZXNzaW9uMl9zaG1lbV91c2FnZSI7IH0KKworc2Vzc2lvbiAicmVz aXplciIKK3N0ZXAgenNfbWF4IHsgU0VMRUNUIHJlc2l6YWJsZV9zaG1lbV9yZXNpemUoMTAwICog MTAyNCAqIDEwMjQpOyB9CitzdGVwIHpzX3NocmluayB7IFNFTEVDVCByZXNpemFibGVfc2htZW1f cmVzaXplKDc1ICogMTAyNCAqIDEwMjQpOyB9CitzdGVwIHpzX2ZhaWwgeyBTRUxFQ1QgcmVzaXph YmxlX3NobWVtX3Jlc2l6ZSgxMjggKiAxMDI0ICogMTAyNCk7IH0gIyB0aGlzIGZhaWxzICg1MTJN QiA+IDQwME1CIG1heCkKK3N0ZXAgemlhIHsgU0VMRUNUIG5hbWUsIHBnX3NpemVfcHJldHR5KHNp emUpIEFTIHNpemUsIHBnX3NpemVfcHJldHR5KGFsbG9jYXRlZF9zaXplKSBBUyBhbGxvY2F0ZWRf c2l6ZSwgcGdfc2l6ZV9wcmV0dHkocmVzZXJ2ZWRfc2l6ZSkgQVMgcmVzZXJ2ZWRfc2l6ZSBGUk9N IHBnX3NobWVtX2FsbG9jYXRpb25zIFdIRVJFIG5hbWUgPSAncmVzaXphYmxlX3NobWVtJzsgfQor c3RlcCB6dSB7IFNFTEVDVCBwZ19zaXplX3ByZXR0eShyc3Nfc2htZW0pIEFTIHJzc19zaG1lbSBG Uk9NIHJlc2l6YWJsZV9zaG1lbV91c2FnZSgpIEFTICJyZXNpemVyX3NobWVtX3VzYWdlIjsgfQor CisjIFRlc3Qgc2hyaW5raW5nIGFuZCBleHBhbmRpbmcgdGhlIHNoYXJlZCBtZW1vcnksIHdoaWxl IGVuc3VyaW5nIHRoYXQ6CisjIC0gQWxsIGVudHJpZXMgY2FuIGJlIHdyaXR0ZW4gdG8gYW5kIHJl YWQgZnJvbSBhZnRlciBlYWNoIHJlc2l6ZQorIyAtIFByZXZpb3VzbHkgd3JpdHRlbiBkYXRhIHJl bWFpbnMgdW5jaGFuZ2VkIGluIGVudHJpZXMgdGhhdCBzdXJ2aXZlIHJlc2l6aW5nCisjIE5vdyB1 c2luZyAxMDBNQiBpbml0aWFsICgyNU0gZW50cmllcyksIDQwME1CIG1heCAoMTAwTSBlbnRyaWVz KSwgMzAwTUIgc2hyaW5rICg3NU0gZW50cmllcykKK3Blcm11dGF0aW9uIHMxdSBzMnUgenUgemlh IHMxd19pbml0aWFsIHMxdSBzMnJfaW5pdGlhbCBzMnUgenNfbWF4IHp1IHppYSBzMnJfaW5pdGlh bCBzMndfbWF4IHMydSBzMXJfbWF4IHMxdSB6c19zaHJpbmsgenUgemlhIHMxcl9zaHJpbmsgczF3 X3NocmluayBzMXUgczJyX3NocmluayBzMnUgenNfZmFpbApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1 bGVzLm91dAppbmRleCBmNGVlMmJkNzQ1OS4uYTZlYWViNDlkYmMgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcnVsZXMub3V0CkBAIC0xNzcwLDggKzE3NzAsOSBAQCBwZ19zaGFkb3d8IFNFTEVDVCBw Z19hdXRoaWQucm9sbmFtZSBBUyB1c2VuYW1lLAogcGdfc2htZW1fYWxsb2NhdGlvbnN8IFNFTEVD VCBuYW1lLAogICAgIG9mZiwKICAgICBzaXplLAotICAgIGFsbG9jYXRlZF9zaXplCi0gICBGUk9N IHBnX2dldF9zaG1lbV9hbGxvY2F0aW9ucygpIHBnX2dldF9zaG1lbV9hbGxvY2F0aW9ucyhuYW1l LCBvZmYsIHNpemUsIGFsbG9jYXRlZF9zaXplKTsKKyAgICBhbGxvY2F0ZWRfc2l6ZSwKKyAgICBy ZXNlcnZlZF9zaXplCisgICBGUk9NIHBnX2dldF9zaG1lbV9hbGxvY2F0aW9ucygpIHBnX2dldF9z aG1lbV9hbGxvY2F0aW9ucyhuYW1lLCBvZmYsIHNpemUsIGFsbG9jYXRlZF9zaXplLCByZXNlcnZl ZF9zaXplKTsKIHBnX3NobWVtX2FsbG9jYXRpb25zX251bWF8IFNFTEVDVCBuYW1lLAogICAgIG51 bWFfbm9kZSwKICAgICBzaXplCi0tIAoyLjM0LjEKCg== --000000000000051ac9064b037c6f--