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 1w9GW9-001J22-1R for pgsql-hackers@arkaria.postgresql.org; Sun, 05 Apr 2026 05:59:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w9GW6-001lPY-1i for pgsql-hackers@arkaria.postgresql.org; Sun, 05 Apr 2026 05:59:26 +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 1w9GW5-001lPP-0u for pgsql-hackers@lists.postgresql.org; Sun, 05 Apr 2026 05:59:26 +0000 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w9GVl-00000000dWr-4AKw for pgsql-hackers@postgresql.org; Sun, 05 Apr 2026 05:59:24 +0000 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-48896199cbaso22857045e9.1 for ; Sat, 04 Apr 2026 22:59:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775368744; cv=none; d=google.com; s=arc-20240605; b=S8bBJ6RHgEAyyOjccKax2fgcQB9FLC3b411AN4oNi9fUzmJ2gaKcS3YRlqOHLMi169 o3qGkuL4dwVJSndTlk46sUHLGfvwVbYZPTpS8ly9EUDlr85Y+rI50qrdPFLh9QwrC6DT TAoVjXjNzf4+hjojhc+d2q2QyzjRHHTe+XrnoiGU8sfFvSZ+GXZmWR2Sj7Dztt+3siiR BpIEy7qdSewVXq34PhkRe8KpCzdX3Rl/0uEMloGV7NwsTe4rrPZEM63eDeg5ljvQ3BRL I42kcttoYu5jXCoRWEi9CP7FRMV7XrNocAKEtAb9oXdrRnAe63WWEBSUXOT7cUR4tHhc JIAg== 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=9Wpi07BCb/eFrfuJK/ykceAZF2+pfhIF7x0XI3yBSTE=; fh=Wl2z9b8tWX4ZeVvyBFzkPCjwZDlh1IBfTo5e6EF4hNQ=; b=EZjxs8x2tUNpRB2LULQZdfN9n+EqrtI+Yvgh3V5hnA4MScsf9kFTHbYYlpghZ6Uw6t YebdpTat47Bo3X+9TQ11UBJ9yi57eUCoXfLMAeU1ZYb9XKv064EzB8qYoAMcIcO3mVkS BsYfMbkNfzVPJK/q61z2PnmYkFFvQNMbjDU9NjLl13dcXrAtf7QOI1EwQ5NNfaIyrcDt MpSP7ZoOWuRDUYDDgiHq5EkYsfIcQk3MrUnnOaLGr6UkSk6lQVmvTyNInsqvSS2XBYjM QiagNPVC3drxyoOnhpvlvrg4gveLX912LPiaeBrH+qCdgCtGacufZEdcTB/QWfuft6mc hk7g==; 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=20251104; t=1775368744; x=1775973544; 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=9Wpi07BCb/eFrfuJK/ykceAZF2+pfhIF7x0XI3yBSTE=; b=rSAoGYLLkW8MYN/DzjD/nNWxLulol/UQ3FTzWzDP618ZBynESRxX1uv69iCzUMP7PA XFlv5Qx69szkeFO0RSdNu9SM1z8+n4yjQiD/TO8bBf9upoPb71YDK/JLBqT3e5AuwibB //o/ZAYAzhNzwx7qiQPnIn7kW62/uTuia2jRVAsQ2o/V6B2g5zBO9CaYLr63hqQI6f+K rvspYd1jG74DmI3NjsMC3d1dHF9Oloqqeejvj3p0p1ADYZAISGxbazCO0kAw+cneD8Bj sHiKoD/oYE0XVOm8ZS9HmP0CWWl3J43kemGxkKc/zrhsQrhsf7hTmi3PoUGYd55KyUKf sPvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775368744; x=1775973544; 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=9Wpi07BCb/eFrfuJK/ykceAZF2+pfhIF7x0XI3yBSTE=; b=WL6XL3Zx+XCSqo4ydmXlhxaIGs7MVNx6BXYuUt/+7e4EVsYMhSqbRDoua6Ehr0z8Xt FBeDjjqPTlVjRKvFl0ZMWFr4afKtf6v3YHqRe+iqB1Nx2xVvVZrdEG/f+ifxD3JBNqUN e9w10nsLelNdUiXKQmMAZrzBGLa5gehuJuP1GksuGkRK7Ni+X68+4TgrZJkdZxPcOUWY vqlB7G0Pj5xetbKgEDcLoyqlgO2gf/KYYL5HPJqZou/RPig5LBruqDMSQJO082sOwFa4 2ib6xoW/NqDlmeja/InqE1F6tAwzaNGXKLhRJxbMTlyokzqmqig2e6fPTMiVvlDUBD6e vHBg== X-Forwarded-Encrypted: i=1; AJvYcCW+xESQ3OFw+wqMQvo9cIruyncUOm+YMO4i3fE3zV5OmW2hmbx6zSFKvi4nF/qtjv7VtTaw4TGSH4ZpUtzO@postgresql.org X-Gm-Message-State: AOJu0YxBnpVvMYDcavWyoH4gQyvEbL9PR1XMpWY4qS2fUUvzNppix5EW NeIBPKWwldEBpzmEt5KGD++piK2PTFMp3d9LjY+pkKq8QMTlB2DiLtNiZjFhoOc8+UJBVQjJRLQ WSM+VRThUkTtr/tdexlu0Ip+MpJgwjjc= X-Gm-Gg: AeBDietFwYLLuw+FPgcJtC5sPcbluIElxQ4xc78OfoP/XC+Uvrj61Z4MZDhMhVKMDWh N6/B4kv+Zyafsrf47V7f6hhNhAHF/VNABVzPPsER0AD2m2iZX4T48i/+ZeGcFfFnXmVBoDHdEhj uK1sCBmpMf1+PrmJuYD4zD0I+YiISN9Y8ZU+IVHtywMA6SpXK/Zk5IZtWv7973x/OFcKXChfqoa 1G4YOP/wz5Lw020EfU3I5WtYNZSSgNR3+hot40VMuSGod61+Wa30VzWu4VqmlKLACvb5B5EqZqG efgVHc9VwOTt4LvQGDPPhODrBs9CYFShCw9dv9FfIFHXAQAd26rL X-Received: by 2002:a05:600c:c16d:b0:485:f1d1:8f3d with SMTP id 5b1f17b1804b1-488996b0303mr142127115e9.6.1775368744141; Sat, 04 Apr 2026 22:59:04 -0700 (PDT) MIME-Version: 1.0 References: <113724ab-0028-493f-9605-6e8570f0939f@iki.fi> <791c3f18-f4de-4d84-ac6b-c7ccc074dd38@iki.fi> <9d919bd9-94dd-4bda-8ccf-ebced4178c53@iki.fi> <7d3ba240-9350-4dfc-bbe1-be6584aee236@iki.fi> <1c3a07a7-158d-4800-927c-2641c73277d8@iki.fi> In-Reply-To: From: Ashutosh Bapat Date: Sun, 5 Apr 2026 11:28:51 +0530 X-Gm-Features: AQROBzAR_bjj9AhPdRepsb8aXD-xdbuxbbx7DvCXrJkWh6G-A8LQwXDYH7-uF7w Message-ID: Subject: Re: Better shared data structure management and resizable shared data structures To: Heikki Linnakangas Cc: Matthias van de Meent , Robert Haas , Andres Freund , pgsql-hackers , chaturvedipalak1911@gmail.com Content-Type: multipart/mixed; boundary="00000000000057312d064eb03f86" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000057312d064eb03f86 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Apr 5, 2026 at 11:18=E2=80=AFAM Ashutosh Bapat wrote: > > I will post my resizable shmem structures patch in a separate email in > this thread but continue to review your patches. > Attached is your patchset (0001 - 0014) + resizable shared memory structures patchset 0015. Resizable shared memory structures =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D When allocating memory to the requested shared structures, we allocate space for each structure. In mmap'ed shared memory, the memory is allocated against those structures only when those structures are initialized. Resizable shared memory structures are simply allocated maximum space when that happens. The function which initializes the structure is expected to initialize only the memory worth its initial size. When resizing the structure memory is freed or allocated against the reserved space depending upon the new size. This allows the structures to be resized while keeping their starting address stable which is a hard requirement in PostgreSQL. Resizable shared memory feature depends upon the existence of function madvise() and constants MADV_REMOVE and MADV_WRITE_POPULATE. On the platforms which do not have these, we disable this feature at compile time. The commit introduces a compile time flag HAVE_RESIZABLE_SHMEM which is defined if MADV_REMOVE and MADV_WRITE_POPULATE exist. We don't check the existence of madvise separately, since the existence of the constants implies the existence of the function. HAVE_RESIZABLE_SHMEM is not defined in EXEC_BACKEND builds since that's largely used for Windows where the APIs to free and allocate memory from and to a given address space are not known to the author right now. Given that PostgreSQL is used widely on Linux, providing this feature on Linux covers benefits most of its users. Once we figure out the required Windows APIs, we will support this feature on Windows as well. The feature is also not available when Sys-V shared memory is used even on Linux since we do not know whether required Sys-V APIs exist; mostly they don't. Since that combination is only available for development and testing, not supporting the feature isn't going to impact PostgreSQL users much. Using HAVE_RESIZABLE_SHMEM we disable compiling the code related to resizable shared memory structures on the platforms which do not support the feature. But we also have run time checks to disable this feature when Sys-V shared memory is used. In order to know whether a given instance of a running server supports resizable structures, we have introduced GUC have_resizable_shmem. Following points are up for discussion =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D 1. calculation of allocated_size of resizable structures -------------------------------- For fixed sized shared memory structures, allocated_size is the size of the aligned structure. Assuming that the whole structure is initialized, it is also the memory allocated to the structure. Thus summing all allocated_size's of the allocations gives a nearly-accurate (considering page sized allocations) idea of the total shared memory allocated. For a resizable structure, it's a bit more complicated. We allocate maximum space required by the structure at the beginning. At a given point in time, the memory page where the next structure begins and the page which contains the end of the structure at that point in time are allocated. The pages in-between are not allocated. The memory allocated to that structure is the {maximum size of the structure} - {total size of unallocated pages}. I think setting allocated_size to the actually allocated memory is more accurate than {current size of the structure} + {alignment} which does not reflect the actual memory allocated to the structure. I would like to know what others think. 2. maximum_size member in various structures and in pg_shmem_allocations vi= ew ---------------------------------------------------------------------------= -- A resizable structure is requested by specifying non-zero maximum_size in ShmemStructOpts. It gets copied to the maximum_size member in ShmemStructDesc, ShmemIndexEnt. The question is for fixed-size structures what should be the value maximum_size in those structures. Setting it to the same value as the size member in the respective structure is logical since their maximum size is the same as their initial size. But if we do so, we need another member in ShmemStructDesc and ShmemIndexEnt to indicate whether the structure is resizable or not. Instead the patches set maximum_size to 0 for fixed-size structures and non-zero for resizable structures. This way we can check whether a structure is resizable or not by checking whether its maximum_size is zero or not. pg_shmem_allocations view also has a maximum_size column which has the similar characteristics. I would like to know what others think. 3. allocated_space member in various structures and in pg_shmem_allocations= view ---------------------------------------------------------------------------= ---- The patch adds a new member allocated_space to ShmemIndexEnt and pg_shmem_allocations view. allocated_space to maximum_size is what allocated_size is to size - it's the type aligned value of maximum_size. But it also highlights the difference between the address space allocation and the actual memory allocation. This difference is crucial to resizable structures. However, unlike maximum_size, we set it to a non-zero value, allocated_size, for fixed-size structures as well since they are allocated the same amount of space as their allocated_size. While this seems logically correct to me, some may find maximum_size to be zero but allocated_space to be non-zero for fixed-size structures a bit weird. I would like to know what others think. As a minor point, setting allocated_space to allocated_size makes the calculations in pg_shmem_allocations() a bit easier. However, that can be fixed trivially. As a side question, do we want to allow users to specify minimum_size in ShmemStructOpts for resizable structures? Resizing memory lower than that would be prohibited. For fixed sized structures, minimum_size would be same as size and also maximum_size. For now, it seems only for the sanity checks, but it could be seen as a useful safety feature. A difference in maximum_size and minimum_size would indicate that the structure is resizable. Considering 2 and 3 together, we have the following options a. As implemented in patch and clarified in documentation. b. Set maximum_size to size and allocated_space to allocated_size for fixed-size structures, but add a new member to indicate whether the structure is resizable or not. c. Set maximum_size and allocated_space to zero for fixed-size structures and explicitly mention it in the documentation. 4. to mprotect or not to mprotect --------------------------------- If memory beyond the current size of a resizable structure is accessed, it won't cause any segfault or bus error. When writing memory will be simply allocated and when reading, it will return zeroes if memory is not allocated yet. mprotect'ing the memory beyond the current size of a resizable structure to PROT_NONE can prevent accidental access to unallocated memory (sans page boundaries), but it needs to be done in every backend process which requires a synchronization mechanism beyond the scope of shmem.c. Hence the patch does not use mprotect. A subsystem will require some higher level synchronization mechanism between users of the structure and the process which resizes it. That synchronization mechanism can be used to mprotect the memory, if required. I have documented this, but I would like to know whether we should provide an API in shmem.c to mprotect. 6. Tests ------- The patch adds a new test module resizable_shmem which tests the resizable shared memory feature. Also it adds a test case to the test_shmem module to make sure that the fixed-size shared memory structures can not be resized. I think the resizable_shmem module should be merged into test_shmem. But I have kept these two separate for ease of review. Please let me know if you also think they should be merged. I have self-reviewed the tests a few times, fixing issues and adjusting the test and module code. But it could help with some more review. However, I wanted to get the patch out for review, given the looming deadline. Similarly for the commit message. I am adding this to CF so that it gets some CI coverage especially on the platforms which do not support resizable shared memory. --=20 Best Wishes, Ashutosh Bapat --00000000000057312d064eb03f86 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405-0001-refactor-Move-ShmemInitHash-to-separate-fi.patch" Content-Disposition: attachment; filename="v20260405-0001-refactor-Move-ShmemInitHash-to-separate-fi.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlchnee0 RnJvbSA2NzgzZTc0MTQ1ZTRiODhkY2E4NmY0YmQ0MzJkNjE4YjNkMzg5YmQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFNhdCwgMjEgTWFyIDIwMjYgMTM6MDc6MjggKzAyMDAKU3ViamVjdDog W1BBVENIIHYyMDI2MDQwNSAwMS8xNV0gcmVmYWN0b3I6IE1vdmUgU2htZW1Jbml0SGFzaCB0byBz ZXBhcmF0ZSBmaWxlCgpJbiBwcmVwYXJhdGlvbiBmb3IgbmV4dCBjb21taXRzCi0tLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvTWFrZWZpbGUgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL21lc29uLmJ1aWxkICB8ICAgMSArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1l bS5jICAgICAgfCAxMDggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvc2htZW1faGFzaC5jIHwgMTMwICsrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3Jj L2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oICAgICAgICAgIHwgICA5ICstCiA1IGZpbGVzIGNoYW5n ZWQsIDEzOSBpbnNlcnRpb25zKCspLCAxMTAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW1faGFzaC5jCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9N YWtlZmlsZQppbmRleCA5YTA3ZjZlMWQ5Mi4uZjcxNjUzYmJlNDggMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L01ha2VmaWxlCkBAIC0yMiw2ICsyMiw3IEBAIE9CSlMgPSBcCiAJc2htX21xLm8gXAogCXNobV90 b2MubyBcCiAJc2htZW0ubyBcCisJc2htZW1faGFzaC5vIFwKIAlzaWduYWxmdW5jcy5vIFwKIAlz aW52YWwubyBcCiAJc2ludmFsYWR0Lm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9tZXNvbi5idWlsZApp bmRleCA5YzFjYTk1NGQ5ZC4uYjhjMzFlMjk5NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL21lc29u LmJ1aWxkCkBAIC0xNCw2ICsxNCw3IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ3No bV9tcS5jJywKICAgJ3NobV90b2MuYycsCiAgICdzaG1lbS5jJywKKyAgJ3NobWVtX2hhc2guYycs CiAgICdzaWduYWxmdW5jcy5jJywKICAgJ3NpbnZhbC5jJywKICAgJ3NpbnZhbGFkdC5jJywKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zaG1lbS5jCmluZGV4IDNjYjUxYWQ2MmY4Li5jOTk0Zjc2NzRlYyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zaG1lbS5jCkBAIC05Niw5ICs5Niw2IEBAIHR5cGVkZWYgc3RydWN0IFNobWVt QWxsb2NhdG9yRGF0YQogCiAjZGVmaW5lIFNobWVtSW5kZXhMb2NrICgmU2htZW1BbGxvY2F0b3It PmluZGV4X2xvY2spCiAKLXN0YXRpYyBIVEFCICpzaG1lbV9oYXNoX2NyZWF0ZSh2b2lkICpsb2Nh dGlvbiwgc2l6ZV90IHNpemUsIGJvb2wgZm91bmQsCi0JCQkJCQkJICAgY29uc3QgY2hhciAqbmFt ZSwgaW50NjQgbmVsZW1zLCBIQVNIQ1RMICppbmZvUCwgaW50IGhhc2hfZmxhZ3MpOwotc3RhdGlj IHZvaWQgKlNobWVtSGFzaEFsbG9jKFNpemUgc2l6ZSwgdm9pZCAqYWxsb2NfYXJnKTsKIHN0YXRp YyB2b2lkICpTaG1lbUFsbG9jUmF3KFNpemUgc2l6ZSwgU2l6ZSAqYWxsb2NhdGVkX3NpemUpOwog CiAvKiBzaGFyZWQgbWVtb3J5IGdsb2JhbCB2YXJpYWJsZXMgKi8KQEAgLTI1NywyOSArMjU0LDYg QEAgU2htZW1BbGxvY05vRXJyb3IoU2l6ZSBzaXplKQogCXJldHVybiBTaG1lbUFsbG9jUmF3KHNp emUsICZhbGxvY2F0ZWRfc2l6ZSk7CiB9CiAKLS8qCi0gKiBTaG1lbUhhc2hBbGxvYyAtLSBhbGxv YyBjYWxsYmFjayBmb3Igc2hhcmVkIG1lbW9yeSBoYXNoIHRhYmxlcwotICoKLSAqIENhcnZlIG91 dCB0aGUgYWxsb2NhdGlvbiBmcm9tIGEgcHJlLWFsbG9jYXRlZCByZWdpb24uICBBbGwgc2hhcmVk IG1lbW9yeQotICogaGFzaCB0YWJsZXMgYXJlIGluaXRpYWxpemVkIHdpdGggSEFTSF9GSVhFRF9T SVpFLCBzbyBhbGwgdGhlIGFsbG9jYXRpb25zCi0gKiBoYXBwZW4gdXBmcm9udCBkdXJpbmcgaW5p dGlhbGl6YXRpb24gYW5kIG5vIGxvY2tpbmcgaXMgcmVxdWlyZWQuCi0gKi8KLXN0YXRpYyB2b2lk ICoKLVNobWVtSGFzaEFsbG9jKFNpemUgc2l6ZSwgdm9pZCAqYWxsb2NfYXJnKQotewotCXNobWVt X2hhc2hfYWxsb2NhdG9yICphbGxvY2F0b3IgPSAoc2htZW1faGFzaF9hbGxvY2F0b3IgKikgYWxs b2NfYXJnOwotCXZvaWQJICAgKnJlc3VsdDsKLQotCXNpemUgPSBNQVhBTElHTihzaXplKTsKLQot CWlmIChhbGxvY2F0b3ItPmVuZCAtIGFsbG9jYXRvci0+bmV4dCA8IHNpemUpCi0JCXJldHVybiBO VUxMOwotCXJlc3VsdCA9IGFsbG9jYXRvci0+bmV4dDsKLQlhbGxvY2F0b3ItPm5leHQgKz0gc2l6 ZTsKLQotCXJldHVybiByZXN1bHQ7Ci19Ci0KIC8qCiAgKiBTaG1lbUFsbG9jUmF3IC0tIGFsbG9j YXRlIGFsaWduIGNodW5rIGFuZCByZXR1cm4gYWxsb2NhdGVkIHNpemUKICAqCkBAIC0zNDEsODgg KzMxNSw2IEBAIFNobWVtQWRkcklzVmFsaWQoY29uc3Qgdm9pZCAqYWRkcikKIAlyZXR1cm4gKGFk ZHIgPj0gU2htZW1CYXNlKSAmJiAoYWRkciA8IFNobWVtRW5kKTsKIH0KIAotLyoKLSAqIFNobWVt SW5pdEhhc2ggLS0gQ3JlYXRlIGFuZCBpbml0aWFsaXplLCBvciBhdHRhY2ggdG8sIGEKLSAqCQlz aGFyZWQgbWVtb3J5IGhhc2ggdGFibGUuCi0gKgotICogV2UgYXNzdW1lIGNhbGxlciBpcyBkb2lu ZyBzb21lIGtpbmQgb2Ygc3luY2hyb25pemF0aW9uCi0gKiBzbyB0aGF0IHR3byBwcm9jZXNzZXMg ZG9uJ3QgdHJ5IHRvIGNyZWF0ZS9pbml0aWFsaXplIHRoZSBzYW1lCi0gKiB0YWJsZSBhdCBvbmNl LiAgKEluIHByYWN0aWNlLCBhbGwgY3JlYXRpb25zIGFyZSBkb25lIGluIHRoZSBwb3N0bWFzdGVy Ci0gKiBwcm9jZXNzOyBjaGlsZCBwcm9jZXNzZXMgc2hvdWxkIGFsd2F5cyBiZSBhdHRhY2hpbmcg dG8gZXhpc3RpbmcgdGFibGVzLikKLSAqCi0gKiBuZWxlbXMgaXMgdGhlIG1heGltdW0gbnVtYmVy IG9mIGhhc2h0YWJsZSBlbnRyaWVzLgotICoKLSAqICppbmZvUCBhbmQgaGFzaF9mbGFncyBtdXN0 IHNwZWNpZnkgYXQgbGVhc3QgdGhlIGVudHJ5IHNpemVzIGFuZCBrZXkKLSAqIGNvbXBhcmlzb24g c2VtYW50aWNzIChzZWUgaGFzaF9jcmVhdGUoKSkuICBGbGFnIGJpdHMgYW5kIHZhbHVlcyBzcGVj aWZpYwotICogdG8gc2hhcmVkLW1lbW9yeSBoYXNoIHRhYmxlcyBhcmUgYWRkZWQgaGVyZSwgZXhj ZXB0IHRoYXQgY2FsbGVycyBtYXkKLSAqIGNob29zZSB0byBzcGVjaWZ5IEhBU0hfUEFSVElUSU9O LgotICoKLSAqIE5vdGU6IGJlZm9yZSBQb3N0Z3JlcyA5LjAsIHRoaXMgZnVuY3Rpb24gcmV0dXJu ZWQgTlVMTCBmb3Igc29tZSBmYWlsdXJlCi0gKiBjYXNlcy4gIE5vdywgaXQgYWx3YXlzIHRocm93 cyBlcnJvciBpbnN0ZWFkLCBzbyBjYWxsZXJzIG5lZWQgbm90IGNoZWNrCi0gKiBmb3IgTlVMTC4K LSAqLwotSFRBQiAqCi1TaG1lbUluaXRIYXNoKGNvbnN0IGNoYXIgKm5hbWUsCQkvKiB0YWJsZSBz dHJpbmcgbmFtZSBmb3Igc2htZW0gaW5kZXggKi8KLQkJCSAgaW50NjQgbmVsZW1zLAkJLyogc2l6 ZSBvZiB0aGUgdGFibGUgKi8KLQkJCSAgSEFTSENUTCAqaW5mb1AsCS8qIGluZm8gYWJvdXQga2V5 IGFuZCBidWNrZXQgc2l6ZSAqLwotCQkJICBpbnQgaGFzaF9mbGFncykJLyogaW5mbyBhYm91dCBp bmZvUCAqLwotewotCWJvb2wJCWZvdW5kOwotCXNpemVfdAkJc2l6ZTsKLQl2b2lkCSAgICpsb2Nh dGlvbjsKLQotCXNpemUgPSBoYXNoX2VzdGltYXRlX3NpemUobmVsZW1zLCBpbmZvUC0+ZW50cnlz aXplKTsKLQotCS8qIGxvb2sgaXQgdXAgaW4gdGhlIHNobWVtIGluZGV4IG9yIGFsbG9jYXRlICov Ci0JbG9jYXRpb24gPSBTaG1lbUluaXRTdHJ1Y3QobmFtZSwgc2l6ZSwgJmZvdW5kKTsKLQotCXJl dHVybiBzaG1lbV9oYXNoX2NyZWF0ZShsb2NhdGlvbiwgc2l6ZSwgZm91bmQsCi0JCQkJCQkJIG5h bWUsIG5lbGVtcywgaW5mb1AsIGhhc2hfZmxhZ3MpOwotfQotCi0vKgotICogSW5pdGlhbGl6ZSBv ciBhdHRhY2ggdG8gYSBzaGFyZWQgaGFzaCB0YWJsZSBpbiB0aGUgZ2l2ZW4gc2htZW0gcmVnaW9u LgotICoKLSAqIFRoaXMgaXMgZXh0cmFjdGVkIGZyb20gU2htZW1Jbml0SGFzaCgpIHRvIGFsbG93 IEluaXRTaG1lbUFsbG9jYXRvcigpIHRvCi0gKiBzaGFyZSB0aGUgbG9naWMgZm9yIGJvb3RzdHJh cHBpbmcgdGhlIFNobWVtSW5kZXggaGFzaCB0YWJsZS4KLSAqLwotc3RhdGljIEhUQUIgKgotc2ht ZW1faGFzaF9jcmVhdGUodm9pZCAqbG9jYXRpb24sIHNpemVfdCBzaXplLCBib29sIGZvdW5kLAot CQkJCSAgY29uc3QgY2hhciAqbmFtZSwgaW50NjQgbmVsZW1zLCBIQVNIQ1RMICppbmZvUCwgaW50 IGhhc2hfZmxhZ3MpCi17Ci0Jc2htZW1faGFzaF9hbGxvY2F0b3IgYWxsb2NhdG9yOwotCi0JLyoK LQkgKiBIYXNoIHRhYmxlcyBhbGxvY2F0ZWQgaW4gc2hhcmVkIG1lbW9yeSBoYXZlIGEgZml4ZWQg ZGlyZWN0b3J5IGFuZCBoYXZlCi0JICogYWxsIGVsZW1lbnRzIGFsbG9jYXRlZCB1cGZyb250LiAg V2UgZG9uJ3Qgc3VwcG9ydCBncm93aW5nIGJlY2F1c2Ugd2UnZAotCSAqIG5lZWQgdG8gZ3JvdyB0 aGUgdW5kZXJseWluZyBzaG1lbSByZWdpb24gd2l0aCBpdC4KLQkgKgotCSAqIFRoZSBzaGFyZWQg bWVtb3J5IGFsbG9jYXRvciBtdXN0IGJlIHNwZWNpZmllZCB0b28uCi0JICovCi0JaW5mb1AtPmFs bG9jID0gU2htZW1IYXNoQWxsb2M7Ci0JaW5mb1AtPmFsbG9jX2FyZyA9IE5VTEw7Ci0JaGFzaF9m bGFncyB8PSBIQVNIX1NIQVJFRF9NRU0gfCBIQVNIX0FMTE9DIHwgSEFTSF9GSVhFRF9TSVpFOwot Ci0JLyoKLQkgKiBpZiBpdCBhbHJlYWR5IGV4aXN0cywgYXR0YWNoIHRvIGl0IHJhdGhlciB0aGFu IGFsbG9jYXRlIGFuZCBpbml0aWFsaXplCi0JICogbmV3IHNwYWNlCi0JICovCi0JaWYgKCFmb3Vu ZCkKLQl7Ci0JCWFsbG9jYXRvci5uZXh0ID0gKGNoYXIgKikgbG9jYXRpb247Ci0JCWFsbG9jYXRv ci5lbmQgPSAoY2hhciAqKSBsb2NhdGlvbiArIHNpemU7Ci0JCWluZm9QLT5hbGxvY19hcmcgPSAm YWxsb2NhdG9yOwotCX0KLQllbHNlCi0JewotCQkvKiBQYXNzIGxvY2F0aW9uIG9mIGhhc2h0YWJs ZSBoZWFkZXIgdG8gaGFzaF9jcmVhdGUgKi8KLQkJaW5mb1AtPmhjdGwgPSAoSEFTSEhEUiAqKSBs b2NhdGlvbjsKLQkJaGFzaF9mbGFncyB8PSBIQVNIX0FUVEFDSDsKLQl9Ci0KLQlyZXR1cm4gaGFz aF9jcmVhdGUobmFtZSwgbmVsZW1zLCBpbmZvUCwgaGFzaF9mbGFncyk7Ci19Ci0KIC8qCiAgKiBT aG1lbUluaXRTdHJ1Y3QgLS0gQ3JlYXRlL2F0dGFjaCB0byBhIHN0cnVjdHVyZSBpbiBzaGFyZWQg bWVtb3J5LgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtX2hh c2guYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtX2hhc2guYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGIwNTczMDEyOWUKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbV9oYXNoLmMKQEAgLTAsMCArMSwxMzAgQEAK Ky8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHNobWVtX2hhc2guYworICoJICBoYXNoIHRhYmxl IGltcGxlbWVudGF0aW9uIGluIHNoYXJlZCBtZW1vcnkKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmln aHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAq IFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBv ZiBDYWxpZm9ybmlhCisgKgorICogQSBzaGFyZWQgbWVtb3J5IGhhc2ggdGFibGUgaW1wbGVtZW50 YXRpb24gb24gdG9wIG9mIHRoZSBuYW1lZCwgZml4ZWQtc2l6ZQorICogc2hhcmVkIG1lbW9yeSBh cmVhcyBtYW5hZ2VkIGJ5IHNobWVtLmMuICBIYXNoIHRhYmxlcyBoYXZlIGEgZml4ZWQgbWF4aW11 bQorICogc2l6ZSwgYnV0IHRoZWlyIGFjdHVhbCBzaXplIGNhbiB2YXJ5IGR5bmFtaWNhbGx5LiAg V2hlbiBlbnRyaWVzIGFyZSBhZGRlZAorICogdG8gdGhlIHRhYmxlLCBtb3JlIHNwYWNlIGlzIGFs bG9jYXRlZC4gIEVhY2ggc2hhcmVkIGRhdGEgc3RydWN0dXJlIGFuZCBoYXNoCisgKiBoYXMgYSBz dHJpbmcgbmFtZSB0byBpZGVudGlmeSBpdC4KKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBz cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbV9oYXNoLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgInN0b3JhZ2Uvc2ht ZW0uaCIKKworc3RhdGljIHZvaWQgKlNobWVtSGFzaEFsbG9jKFNpemUgc2l6ZSwgdm9pZCAqYWxs b2NfYXJnKTsKKworLyoKKyAqIFNobWVtSW5pdEhhc2ggLS0gQ3JlYXRlIGFuZCBpbml0aWFsaXpl LCBvciBhdHRhY2ggdG8sIGEKKyAqCQlzaGFyZWQgbWVtb3J5IGhhc2ggdGFibGUuCisgKgorICog V2UgYXNzdW1lIGNhbGxlciBpcyBkb2luZyBzb21lIGtpbmQgb2Ygc3luY2hyb25pemF0aW9uCisg KiBzbyB0aGF0IHR3byBwcm9jZXNzZXMgZG9uJ3QgdHJ5IHRvIGNyZWF0ZS9pbml0aWFsaXplIHRo ZSBzYW1lCisgKiB0YWJsZSBhdCBvbmNlLiAgKEluIHByYWN0aWNlLCBhbGwgY3JlYXRpb25zIGFy ZSBkb25lIGluIHRoZSBwb3N0bWFzdGVyCisgKiBwcm9jZXNzOyBjaGlsZCBwcm9jZXNzZXMgc2hv dWxkIGFsd2F5cyBiZSBhdHRhY2hpbmcgdG8gZXhpc3RpbmcgdGFibGVzLikKKyAqCisgKiBuZWxl bXMgaXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGhhc2h0YWJsZSBlbnRyaWVzLgorICoKKyAqICpp bmZvUCBhbmQgaGFzaF9mbGFncyBtdXN0IHNwZWNpZnkgYXQgbGVhc3QgdGhlIGVudHJ5IHNpemVz IGFuZCBrZXkKKyAqIGNvbXBhcmlzb24gc2VtYW50aWNzIChzZWUgaGFzaF9jcmVhdGUoKSkuICBG bGFnIGJpdHMgYW5kIHZhbHVlcyBzcGVjaWZpYworICogdG8gc2hhcmVkLW1lbW9yeSBoYXNoIHRh YmxlcyBhcmUgYWRkZWQgaGVyZSwgZXhjZXB0IHRoYXQgY2FsbGVycyBtYXkKKyAqIGNob29zZSB0 byBzcGVjaWZ5IEhBU0hfUEFSVElUSU9OLgorICoKKyAqIE5vdGU6IGJlZm9yZSBQb3N0Z3JlcyA5 LjAsIHRoaXMgZnVuY3Rpb24gcmV0dXJuZWQgTlVMTCBmb3Igc29tZSBmYWlsdXJlCisgKiBjYXNl cy4gIE5vdywgaXQgYWx3YXlzIHRocm93cyBlcnJvciBpbnN0ZWFkLCBzbyBjYWxsZXJzIG5lZWQg bm90IGNoZWNrCisgKiBmb3IgTlVMTC4KKyAqLworSFRBQiAqCitTaG1lbUluaXRIYXNoKGNvbnN0 IGNoYXIgKm5hbWUsCQkvKiB0YWJsZSBzdHJpbmcgbmFtZSBmb3Igc2htZW0gaW5kZXggKi8KKwkJ CSAgaW50NjQgbmVsZW1zLAkJLyogc2l6ZSBvZiB0aGUgdGFibGUgKi8KKwkJCSAgSEFTSENUTCAq aW5mb1AsCS8qIGluZm8gYWJvdXQga2V5IGFuZCBidWNrZXQgc2l6ZSAqLworCQkJICBpbnQgaGFz aF9mbGFncykJLyogaW5mbyBhYm91dCBpbmZvUCAqLworeworCWJvb2wJCWZvdW5kOworCXNpemVf dAkJc2l6ZTsKKwl2b2lkCSAgICpsb2NhdGlvbjsKKworCXNpemUgPSBoYXNoX2VzdGltYXRlX3Np emUobmVsZW1zLCBpbmZvUC0+ZW50cnlzaXplKTsKKworCS8qIGxvb2sgaXQgdXAgaW4gdGhlIHNo bWVtIGluZGV4IG9yIGFsbG9jYXRlICovCisJbG9jYXRpb24gPSBTaG1lbUluaXRTdHJ1Y3QobmFt ZSwgc2l6ZSwgJmZvdW5kKTsKKworCXJldHVybiBzaG1lbV9oYXNoX2NyZWF0ZShsb2NhdGlvbiwg c2l6ZSwgZm91bmQsCisJCQkJCQkJIG5hbWUsIG5lbGVtcywgaW5mb1AsIGhhc2hfZmxhZ3MpOwor fQorCisvKgorICogSW5pdGlhbGl6ZSBvciBhdHRhY2ggdG8gYSBzaGFyZWQgaGFzaCB0YWJsZSBp biB0aGUgZ2l2ZW4gc2htZW0gcmVnaW9uLgorICoKKyAqIFRoaXMgaXMgZXh0cmFjdGVkIGZyb20g U2htZW1Jbml0SGFzaCgpIHRvIGFsbG93IEluaXRTaG1lbUFsbG9jYXRvcigpIHRvCisgKiBzaGFy ZSB0aGUgbG9naWMgZm9yIGJvb3RzdHJhcHBpbmcgdGhlIFNobWVtSW5kZXggaGFzaCB0YWJsZS4K KyAqLworSFRBQiAqCitzaG1lbV9oYXNoX2NyZWF0ZSh2b2lkICpsb2NhdGlvbiwgc2l6ZV90IHNp emUsIGJvb2wgZm91bmQsCisJCQkJICBjb25zdCBjaGFyICpuYW1lLCBpbnQ2NCBuZWxlbXMsIEhB U0hDVEwgKmluZm9QLCBpbnQgaGFzaF9mbGFncykKK3sKKwlzaG1lbV9oYXNoX2FsbG9jYXRvciBh bGxvY2F0b3I7CisKKwkvKgorCSAqIEhhc2ggdGFibGVzIGFsbG9jYXRlZCBpbiBzaGFyZWQgbWVt b3J5IGhhdmUgYSBmaXhlZCBkaXJlY3RvcnkgYW5kIGhhdmUKKwkgKiBhbGwgZWxlbWVudHMgYWxs b2NhdGVkIHVwZnJvbnQuICBXZSBkb24ndCBzdXBwb3J0IGdyb3dpbmcgYmVjYXVzZSB3ZSdkCisJ ICogbmVlZCB0byBncm93IHRoZSB1bmRlcmx5aW5nIHNobWVtIHJlZ2lvbiB3aXRoIGl0LgorCSAq CisJICogVGhlIHNoYXJlZCBtZW1vcnkgYWxsb2NhdG9yIG11c3QgYmUgc3BlY2lmaWVkIHRvby4K KwkgKi8KKwlpbmZvUC0+YWxsb2MgPSBTaG1lbUhhc2hBbGxvYzsKKwlpbmZvUC0+YWxsb2NfYXJn ID0gTlVMTDsKKwloYXNoX2ZsYWdzIHw9IEhBU0hfU0hBUkVEX01FTSB8IEhBU0hfQUxMT0MgfCBI QVNIX0ZJWEVEX1NJWkU7CisKKwkvKgorCSAqIGlmIGl0IGFscmVhZHkgZXhpc3RzLCBhdHRhY2gg dG8gaXQgcmF0aGVyIHRoYW4gYWxsb2NhdGUgYW5kIGluaXRpYWxpemUKKwkgKiBuZXcgc3BhY2UK KwkgKi8KKwlpZiAoIWZvdW5kKQorCXsKKwkJYWxsb2NhdG9yLm5leHQgPSAoY2hhciAqKSBsb2Nh dGlvbjsKKwkJYWxsb2NhdG9yLmVuZCA9IChjaGFyICopIGxvY2F0aW9uICsgc2l6ZTsKKwkJaW5m b1AtPmFsbG9jX2FyZyA9ICZhbGxvY2F0b3I7CisJfQorCWVsc2UKKwl7CisJCS8qIFBhc3MgbG9j YXRpb24gb2YgaGFzaHRhYmxlIGhlYWRlciB0byBoYXNoX2NyZWF0ZSAqLworCQlpbmZvUC0+aGN0 bCA9IChIQVNISERSICopIGxvY2F0aW9uOworCQloYXNoX2ZsYWdzIHw9IEhBU0hfQVRUQUNIOwor CX0KKworCXJldHVybiBoYXNoX2NyZWF0ZShuYW1lLCBuZWxlbXMsIGluZm9QLCBoYXNoX2ZsYWdz KTsKK30KKworLyoKKyAqIFNobWVtSGFzaEFsbG9jIC0tIGFsbG9jIGNhbGxiYWNrIGZvciBzaGFy ZWQgbWVtb3J5IGhhc2ggdGFibGVzCisgKgorICogQ2FydmUgb3V0IHRoZSBhbGxvY2F0aW9uIGZy b20gYSBwcmUtYWxsb2NhdGVkIHJlZ2lvbi4gIEFsbCBzaGFyZWQgbWVtb3J5CisgKiBoYXNoIHRh YmxlcyBhcmUgaW5pdGlhbGl6ZWQgd2l0aCBIQVNIX0ZJWEVEX1NJWkUsIHNvIGFsbCB0aGUgYWxs b2NhdGlvbnMKKyAqIGhhcHBlbiB1cGZyb250IGR1cmluZyBpbml0aWFsaXphdGlvbiBhbmQgbm8g bG9ja2luZyBpcyByZXF1aXJlZC4KKyAqLworc3RhdGljIHZvaWQgKgorU2htZW1IYXNoQWxsb2Mo U2l6ZSBzaXplLCB2b2lkICphbGxvY19hcmcpCit7CisJc2htZW1faGFzaF9hbGxvY2F0b3IgKmFs bG9jYXRvciA9IChzaG1lbV9oYXNoX2FsbG9jYXRvciAqKSBhbGxvY19hcmc7CisJdm9pZAkgICAq cmVzdWx0OworCisJc2l6ZSA9IE1BWEFMSUdOKHNpemUpOworCisJaWYgKGFsbG9jYXRvci0+ZW5k IC0gYWxsb2NhdG9yLT5uZXh0IDwgc2l6ZSkKKwkJcmV0dXJuIE5VTEw7CisJcmVzdWx0ID0gYWxs b2NhdG9yLT5uZXh0OworCWFsbG9jYXRvci0+bmV4dCArPSBzaXplOworCisJcmV0dXJuIHJlc3Vs dDsKK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaCBiL3NyYy9pbmNs dWRlL3N0b3JhZ2Uvc2htZW0uaAppbmRleCBhMmViNDk5ZDYzYy4uODJmNTQwM2M5NTIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAorKysgYi9zcmMvaW5jbHVkZS9zdG9y YWdlL3NobWVtLmgKQEAgLTMwLDE1ICszMCwyMCBAQCB0eXBlZGVmIHN0cnVjdCBQR1NobWVtSGVh ZGVyIFBHU2htZW1IZWFkZXI7IC8qIGF2b2lkIGluY2x1ZGluZwogZXh0ZXJuIHZvaWQgSW5pdFNo bWVtQWxsb2NhdG9yKFBHU2htZW1IZWFkZXIgKnNlZ2hkcik7CiBleHRlcm4gdm9pZCAqU2htZW1B bGxvYyhTaXplIHNpemUpOwogZXh0ZXJuIHZvaWQgKlNobWVtQWxsb2NOb0Vycm9yKFNpemUgc2l6 ZSk7CitleHRlcm4gdm9pZCAqU2htZW1IYXNoQWxsb2MoU2l6ZSBzaXplLCB2b2lkICphbGxvY19h cmcpOwogZXh0ZXJuIGJvb2wgU2htZW1BZGRySXNWYWxpZChjb25zdCB2b2lkICphZGRyKTsKLWV4 dGVybiBIVEFCICpTaG1lbUluaXRIYXNoKGNvbnN0IGNoYXIgKm5hbWUsIGludDY0IG5lbGVtcywK LQkJCQkJCSAgIEhBU0hDVEwgKmluZm9QLCBpbnQgaGFzaF9mbGFncyk7CiBleHRlcm4gdm9pZCAq U2htZW1Jbml0U3RydWN0KGNvbnN0IGNoYXIgKm5hbWUsIFNpemUgc2l6ZSwgYm9vbCAqZm91bmRQ dHIpOwogZXh0ZXJuIFNpemUgYWRkX3NpemUoU2l6ZSBzMSwgU2l6ZSBzMik7CiBleHRlcm4gU2l6 ZSBtdWxfc2l6ZShTaXplIHMxLCBTaXplIHMyKTsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIFNpemUg cGdfZ2V0X3NobWVtX3BhZ2VzaXplKHZvaWQpOwogCisvKiBzaG1lbV9oYXNoLmMgKi8KK2V4dGVy biBIVEFCICpTaG1lbUluaXRIYXNoKGNvbnN0IGNoYXIgKm5hbWUsIGludDY0IG5lbGVtcywKKwkJ CQkJCSAgIEhBU0hDVEwgKmluZm9QLCBpbnQgaGFzaF9mbGFncyk7CitleHRlcm4gSFRBQiAqc2ht ZW1faGFzaF9jcmVhdGUodm9pZCAqbG9jYXRpb24sIHNpemVfdCBzaXplLCBib29sIGZvdW5kLAor CQkJCQkJCSAgIGNvbnN0IGNoYXIgKm5hbWUsIGludDY0IG5lbGVtcywgSEFTSENUTCAqaW5mb1As IGludCBoYXNoX2ZsYWdzKQorCiAvKiBpcGNpLmMgKi8KIGV4dGVybiB2b2lkIFJlcXVlc3RBZGRp blNobWVtU3BhY2UoU2l6ZSBzaXplKTsKIAoKYmFzZS1jb21taXQ6IGY2M2NhMzM3OTAyNWVlNDU0 Nzg2NTE4MmRhNmNhZTE0YWVjMzVkNTgKLS0gCjIuMzQuMQoK --00000000000057312d064eb03f86 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405-0002-Introduce-a-new-mechanism-for-registering-.patch" Content-Disposition: attachment; filename="v20260405-0002-Introduce-a-new-mechanism-for-registering-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlchnen1 RnJvbSBkMmQwNjVkODY2ZjcyNzViOGU2NzA2NzU3MjQwZTM5YTBlMzRkMmMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFdlZCwgMSBBcHIgMjAyNiAyMDowMTozOSArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjYwNDA1IDAyLzE1XSBJbnRyb2R1Y2UgYSBuZXcgbWVjaGFuaXNtIGZvciByZWdp c3RlcmluZwogc2hhcmVkIG1lbW9yeSBhcmVhcwoKVGhpcyBtZXJnZXMgdGhlIHNlcGFyYXRlIFtT dWJzeXN0ZW1dU2htZW1TaXplKCkgYW5kCltTdWJzeXN0ZW1dU2htZW1Jbml0KCkgcGhhc2VzIGF0 IHBvc3RtYXN0ZXIgc3RhcnR1cC4gRWFjaCBzdWJzeXN0ZW0gaXMKbm93IGNhbGxlZCBpbnRvIGp1 c3Qgb25jZSwgYmVmb3JlIHRoZSBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgaGFzIGJlZW4KYWxsb2Nh dGVkLCB0byByZWdpc3RlciBvciAicmVxdWVzdCIgdGhlIHN1YnN5c3RlbSdzIHNoYXJlZCBtZW1v cnkKbmVlZHMuIFRoaXMgaXMgbW9yZSBlcmdvbm9taWMsIGFzIHlvdSBvbmx5IG5lZWQgdG8gY2Fs Y3VsYXRlIHRoZSBzaXplCm9uY2UuCgpUaGlzIHJlcGxhY2VzIFNobWVtSW5pdFN0cnVjdCgpIGFu ZCBTaG1lbUluaXRIYXNoKCksIHdoaWNoIGJlY29tZSBqdXN0CmJhY2t3YXJkcy1jb21wYXRpYmls aXR5IHdyYXBwZXJzIGFyb3VuZCB0aGUgbmV3IGZ1bmN0aW9ucy4gSW4gZnV0dXJlCmNvbW1pdHMs IEkgcGxhbiB0byByZXBsYWNlIGFsbCBTaG1lbUluaXRTdHJ1Y3QoKSBhbmQgU2htZW1Jbml0SGFz aCgpCmNhbGxzIHdpdGggdGhlIG5ldyBmdW5jdGlvbnMsIGFsdGhvdWdoIHdlJ2xsIHN0aWxsIG5l ZWQgdG8ga2VlcCB0aGVtCmFyb3VuZCBmb3IgZXh0ZW5zaW9ucy4KClJldmlld2VkLWJ5OiBBc2h1 dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFpz b2x0IFBhcnJhZ2kgPHpzb2x0LnBhcnJhZ2lAcGVyY29uYS5jb20+ClJldmlld2VkLWJ5OiBSb2Jl cnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogRGFuaWVsIEd1c3Rh ZnNzb24gPGRhbmllbEB5ZXNxbC5zZT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNx bC5vcmcvbWVzc2FnZS1pZC9DQUV4SFc1dk0xYm5lTFlmZzB3R2VBYT01MlVpSjN6NHZLZDNBSjcy WDhGdzZrM0tLcmdAbWFpbC5nbWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdz LnNnbWwgICAgICAgICAgfCAgIDQgKy0KIGRvYy9zcmMvc2dtbC94ZnVuYy5zZ21sICAgICAgICAg ICAgICAgICB8IDE2MiArKystLQogc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jICAg ICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbGF1bmNoX2JhY2tlbmQuYyB8ICAg NSArCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyAgICAgfCAgMTkgKy0KIHNy Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyAgICAgICAgICB8ICAzMCArLQogc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvc2htZW0uYyAgICAgICAgIHwgODMyICsrKysrKysrKysrKysrKysrKysr LS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW1faGFzaC5jICAgIHwgIDg2ICsrLQog c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyAgICAgICAgIHwgICAzICsKIHNyYy9iYWNr ZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgICB8ICAxMCArLQogc3JjL2luY2x1ZGUvc3Rv cmFnZS9zaG1lbS5oICAgICAgICAgICAgIHwgMTgzICsrKysrLQogc3JjL2luY2x1ZGUvc3RvcmFn ZS9zaG1lbV9pbnRlcm5hbC5oICAgIHwgIDUyICsrCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdCAgICAgICAgfCAgIDkgKy0KIDEzIGZpbGVzIGNoYW5nZWQsIDExOTAgaW5zZXJ0aW9u cygrKSwgMjA3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL3N0 b3JhZ2Uvc2htZW1faW50ZXJuYWwuaAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0t dmlld3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAppbmRleCA5ZWUxYTJi ZmM2YS4uMmViZWM2OTI4ZDUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Mu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKQEAgLTQyNTQsOCArNDI1 NCw4IEBAIFNFTEVDVCAqIEZST00gcGdfbG9ja3MgcGwgTEVGVCBKT0lOIHBnX3ByZXBhcmVkX3hh Y3RzIHBweAogICA8cGFyYT4KICAgIEFub255bW91cyBhbGxvY2F0aW9ucyBhcmUgYWxsb2NhdGlv bnMgdGhhdCBoYXZlIGJlZW4gbWFkZQogICAgd2l0aCA8bGl0ZXJhbD5TaG1lbUFsbG9jKCk8L2xp dGVyYWw+IGRpcmVjdGx5LCByYXRoZXIgdGhhbiB2aWEKLSAgIDxsaXRlcmFsPlNobWVtSW5pdFN0 cnVjdCgpPC9saXRlcmFsPiBvcgotICAgPGxpdGVyYWw+U2htZW1Jbml0SGFzaCgpPC9saXRlcmFs Pi4KKyAgIDxsaXRlcmFsPlNobWVtUmVxdWVzdFN0cnVjdCgpPC9saXRlcmFsPiBvcgorICAgPGxp dGVyYWw+U2htZW1SZXF1ZXN0SGFzaCgpPC9saXRlcmFsPi4KICAgPC9wYXJhPgogCiAgIDxwYXJh PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3hmdW5jLnNnbWwgYi9kb2Mvc3JjL3NnbWwveGZ1 bmMuc2dtbAppbmRleCA3MGU4MTViOGEyYy4uYWVkM2YyZjAwNzEgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC94ZnVuYy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC94ZnVuYy5zZ21sCkBAIC0zNjI4 LDcxICszNjI4LDEzMiBAQCBDUkVBVEUgRlVOQ1RJT04gbWFrZV9hcnJheShhbnllbGVtZW50KSBS RVRVUk5TIGFueWFycmF5CiAgICAgICBBZGQtaW5zIGNhbiByZXNlcnZlIHNoYXJlZCBtZW1vcnkg b24gc2VydmVyIHN0YXJ0dXAuICBUbyBkbyBzbywgdGhlCiAgICAgICBhZGQtaW4ncyBzaGFyZWQg bGlicmFyeSBtdXN0IGJlIHByZWxvYWRlZCBieSBzcGVjaWZ5aW5nIGl0IGluCiAgICAgICA8eHJl ZiBsaW5rZW5kPSJndWMtc2hhcmVkLXByZWxvYWQtbGlicmFyaWVzIi8+PGluZGV4dGVybT48cHJp bWFyeT5zaGFyZWRfcHJlbG9hZF9saWJyYXJpZXM8L3ByaW1hcnk+PC9pbmRleHRlcm0+LgotICAg ICAgVGhlIHNoYXJlZCBsaWJyYXJ5IHNob3VsZCBhbHNvIHJlZ2lzdGVyIGEKLSAgICAgIDxsaXRl cmFsPnNobWVtX3JlcXVlc3RfaG9vazwvbGl0ZXJhbD4gaW4gaXRzCi0gICAgICA8ZnVuY3Rpb24+ X1BHX2luaXQ8L2Z1bmN0aW9uPiBmdW5jdGlvbi4gIFRoaXMKLSAgICAgIDxsaXRlcmFsPnNobWVt X3JlcXVlc3RfaG9vazwvbGl0ZXJhbD4gY2FuIHJlc2VydmUgc2hhcmVkIG1lbW9yeSBieQotICAg ICAgY2FsbGluZzoKKyAgICAgIFRoZSBzaGFyZWQgbGlicmFyeSBzaG91bGQgcmVnaXN0ZXIgY2Fs bGJhY2tzIGluCisgICAgICBpdHMgPGZ1bmN0aW9uPl9QR19pbml0PC9mdW5jdGlvbj4gZnVuY3Rp b24sIHdoaWNoIHRoZW4gZ2V0IGNhbGxlZCBhdCB0aGUKKyAgICAgIHJpZ2h0IHN0YWdlcyBvZiB0 aGUgc3lzdGVtIHN0YXJ0dXAgdG8gaW5pdGlhbGl6ZSB0aGUgc2hhcmVkIG1lbW9yeS4KKyAgICAg IEhlcmUgaXMgYW4gZXhhbXBsZToKIDxwcm9ncmFtbGlzdGluZz4KLXZvaWQgUmVxdWVzdEFkZGlu U2htZW1TcGFjZShTaXplIHNpemUpCi08L3Byb2dyYW1saXN0aW5nPgotICAgICAgRWFjaCBiYWNr ZW5kIHNob3VsZCBvYnRhaW4gYSBwb2ludGVyIHRvIHRoZSByZXNlcnZlZCBzaGFyZWQgbWVtb3J5 IGJ5Ci0gICAgICBjYWxsaW5nOgotPHByb2dyYW1saXN0aW5nPgotdm9pZCAqU2htZW1Jbml0U3Ry dWN0KGNvbnN0IGNoYXIgKm5hbWUsIFNpemUgc2l6ZSwgYm9vbCAqZm91bmRQdHIpCi08L3Byb2dy YW1saXN0aW5nPgotICAgICAgSWYgdGhpcyBmdW5jdGlvbiBzZXRzIDxsaXRlcmFsPmZvdW5kUHRy PC9saXRlcmFsPiB0bwotICAgICAgPGxpdGVyYWw+ZmFsc2U8L2xpdGVyYWw+LCB0aGUgY2FsbGVy IHNob3VsZCBwcm9jZWVkIHRvIGluaXRpYWxpemUgdGhlCi0gICAgICBjb250ZW50cyBvZiB0aGUg cmVzZXJ2ZWQgc2hhcmVkIG1lbW9yeS4gIElmIDxsaXRlcmFsPmZvdW5kUHRyPC9saXRlcmFsPgot ICAgICAgaXMgc2V0IHRvIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+LCB0aGUgc2hhcmVkIG1lbW9y eSB3YXMgYWxyZWFkeQotICAgICAgaW5pdGlhbGl6ZWQgYnkgYW5vdGhlciBiYWNrZW5kLCBhbmQg dGhlIGNhbGxlciBuZWVkIG5vdCBpbml0aWFsaXplCi0gICAgICBmdXJ0aGVyLgotICAgICA8L3Bh cmE+Cit0eXBlZGVmIHN0cnVjdCBNeVNobWVtRGF0YSB7CisgICAgTFdMb2NrICAgICAgbG9jazsg ICAgLyogcHJvdGVjdHMgdGhlIGZpZWxkcyBiZWxvdyAqLwogCi0gICAgIDxwYXJhPgotICAgICAg VG8gYXZvaWQgcmFjZSBjb25kaXRpb25zLCBlYWNoIGJhY2tlbmQgc2hvdWxkIHVzZSB0aGUgTFdM b2NrCi0gICAgICA8ZnVuY3Rpb24+QWRkaW5TaG1lbUluaXRMb2NrPC9mdW5jdGlvbj4gd2hlbiBp bml0aWFsaXppbmcgaXRzIGFsbG9jYXRpb24KLSAgICAgIG9mIHNoYXJlZCBtZW1vcnksIGFzIHNo b3duIGhlcmU6Ci08cHJvZ3JhbWxpc3Rpbmc+Ci1zdGF0aWMgbXlzdHJ1Y3QgKnB0ciA9IE5VTEw7 Ci1ib29sICAgICAgICBmb3VuZDsKKyAgICAuLi4gc2hhcmVkIG1lbW9yeSBjb250ZW50cyAuLi4K K30gTXlTaG1lbURhdGE7CisKK3N0YXRpYyBNeVNobWVtRGF0YSAqTXlTaG1lbTsgICAgLyogcG9p bnRlciB0byB0aGUgc3RydWN0IGluIHNoYXJlZCBtZW1vcnkgKi8KKworc3RhdGljIHZvaWQgbXlf c2htZW1fcmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgbXlfc2htZW1faW5pdCh2b2lk ICphcmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBteV9zaG1lbV9jYWxsYmFja3MgPSB7Cisg ICAgLnJlcXVlc3RfZm4gPSBteV9zaG1lbV9yZXF1ZXN0LAorICAgIC5pbml0X2ZuID0gbXlfc2ht ZW1faW5pdCwKK307CisKKy8qCisgKiBNb2R1bGUgbG9hZCBjYWxsYmFjaworICovCit2b2lkCitf UEdfaW5pdCh2b2lkKQoreworICAgIC8qCisgICAgICogSW4gb3JkZXIgdG8gY3JlYXRlIG91ciBz aGFyZWQgbWVtb3J5IGFyZWEsIHdlIGhhdmUgdG8gYmUgbG9hZGVkIHZpYQorICAgICAqIHNoYXJl ZF9wcmVsb2FkX2xpYnJhcmllcy4KKyAgICAgKi8KKyAgICBpZiAoIXByb2Nlc3Nfc2hhcmVkX3By ZWxvYWRfbGlicmFyaWVzX2luX3Byb2dyZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICAvKiBS ZWdpc3RlciBvdXIgc2hhcmVkIG1lbW9yeSBuZWVkcyAqLworICAgIFJlZ2lzdGVyU2htZW1DYWxs YmFja3MoJmFtcDtteV9zaG1lbV9jYWxsYmFja3MpOworfQorCisvKiBjYWxsYmFjayB0byByZXF1 ZXN0ICAqLworc3RhdGljIHZvaWQKK215X3NobWVtX3JlcXVlc3Qodm9pZCAqYXJnKQoreworICAg IC8qIEEgcGVyc2lzdGVudCBoYW5kbGUgdG8gdGhlIHNoYXJlZCBtZW1vcnkgYXJlYSBpbiB0aGlz IGJhY2tlbmQgKi8KKyAgICBzdGF0aWMgU2htZW1TdHJ1Y3REZXNjIE15U2htZW1EZXNjOworCisg ICAgU2htZW1SZXF1ZXN0U3RydWN0KCZhbXA7TXlTaG1lbURlc2MsCisgICAgICAgICAgICAgICAg ICAgICAgIC5uYW1lID0gIk15IHNobWVtIGFyZWEiLAorICAgICAgICAgICAgICAgICAgICAgICAu c2l6ZSA9IHNpemVvZihNeVNobWVtRGF0YSksCisgICAgICAgICAgICAgICAgICAgICAgIC5wdHIg PSAodm9pZCAqKikgJmFtcDtNeVNobWVtLAorICAgICAgICApOworfQogCi1MV0xvY2tBY3F1aXJl KEFkZGluU2htZW1Jbml0TG9jaywgTFdfRVhDTFVTSVZFKTsKLXB0ciA9IFNobWVtSW5pdFN0cnVj dCgibXkgc3RydWN0IG5hbWUiLCBzaXplLCAmYW1wO2ZvdW5kKTsKLWlmICghZm91bmQpCisvKiBj YWxsYmFjayB0byBpbml0aWFsaXplIHRoZSBjb250ZW50cyBvZiB0aGUgTXlTaG1lbSBhcmVhIGF0 IHN0YXJ0dXAgKi8KK3N0YXRpYyB2b2lkCitteV9zaG1lbV9pbml0KHZvaWQgKmFyZykKIHsKLSAg ICAuLi4gaW5pdGlhbGl6ZSBjb250ZW50cyBvZiBzaGFyZWQgbWVtb3J5IC4uLgotICAgIHB0ci0+ bG9ja3MgPSBHZXROYW1lZExXTG9ja1RyYW5jaGUoIm15IHRyYW5jaGUgbmFtZSIpOworICAgIGlu dCAgICAgICAgIHRyYW5jaGVfaWQ7CisKKyAgICAvKiBJbml0aWFsaXplIHRoZSBsb2NrICovCisg ICAgdHJhbmNoZV9pZCA9IExXTG9ja05ld1RyYW5jaGVJZCgibXkgdHJhbmNoZSBuYW1lIik7Cisg ICAgTFdMb2NrSW5pdGlhbGl6ZSgmYW1wO015U2htZW0tPmxvY2ssIHRyYW5jaGVfaWQpOworCisg ICAgLi4uIGluaXRpYWxpemUgdGhlIHJlc3Qgb2YgTXlTaG1lbSBmaWVsZHMgLi4uCiB9Ci1MV0xv Y2tSZWxlYXNlKEFkZGluU2htZW1Jbml0TG9jayk7CisKIDwvcHJvZ3JhbWxpc3Rpbmc+Ci0gICAg ICA8bGl0ZXJhbD5zaG1lbV9zdGFydHVwX2hvb2s8L2xpdGVyYWw+IHByb3ZpZGVzIGEgY29udmVu aWVudCBwbGFjZSBmb3IgdGhlCi0gICAgICBpbml0aWFsaXphdGlvbiBjb2RlLCBidXQgaXQgaXMg bm90IHN0cmljdGx5IHJlcXVpcmVkIHRoYXQgYWxsIHN1Y2ggY29kZQotICAgICAgYmUgcGxhY2Vk IGluIHRoaXMgaG9vay4gIE9uIFdpbmRvd3MgKGFuZCBhbnl3aGVyZSBlbHNlIHdoZXJlCi0gICAg ICA8bGl0ZXJhbD5FWEVDX0JBQ0tFTkQ8L2xpdGVyYWw+IGlzIGRlZmluZWQpLCBlYWNoIGJhY2tl bmQgZXhlY3V0ZXMgdGhlCi0gICAgICByZWdpc3RlcmVkIDxsaXRlcmFsPnNobWVtX3N0YXJ0dXBf aG9vazwvbGl0ZXJhbD4gc2hvcnRseSBhZnRlciBpdAotICAgICAgYXR0YWNoZXMgdG8gc2hhcmVk IG1lbW9yeSwgc28gYWRkLWlucyBzaG91bGQgc3RpbGwgYWNxdWlyZQotICAgICAgPGZ1bmN0aW9u PkFkZGluU2htZW1Jbml0TG9jazwvZnVuY3Rpb24+IHdpdGhpbiB0aGlzIGhvb2ssIGFzIHNob3du IGluIHRoZQotICAgICAgZXhhbXBsZSBhYm92ZS4gIE9uIG90aGVyIHBsYXRmb3Jtcywgb25seSB0 aGUgcG9zdG1hc3RlciBwcm9jZXNzIGV4ZWN1dGVzCi0gICAgICB0aGUgPGxpdGVyYWw+c2htZW1f c3RhcnR1cF9ob29rPC9saXRlcmFsPiwgYW5kIGVhY2ggYmFja2VuZCBhdXRvbWF0aWNhbGx5Ci0g ICAgICBpbmhlcml0cyB0aGUgcG9pbnRlcnMgdG8gc2hhcmVkIG1lbW9yeS4KKyAgICAgIFRoZSA8 ZnVuY3Rpb24+cmVxdWVzdF9mbjwvZnVuY3Rpb24+IGNhbGxiYWNrIGlzIGNhbGxlZCBkdXJpbmcg c3lzdGVtCisgICAgICBzdGFydHVwLCBiZWZvcmUgdGhlIHNoYXJlZCBtZW1vcnkgaGFzIGJlZW4g YWxsb2NhdGVkLiBJdCBzaG91bGQgY2FsbAorICAgICAgPGZ1bmN0aW9uPlNobWVtUmVxdWVzdFN0 cnVjdCgpPC9mdW5jdGlvbj4gdG8gcmVnaXN0ZXIgdGhlIGFkZC1pbidzCisgICAgICBzaGFyZWQg bWVtb3J5IG5lZWRzLiBOb3RlIHRoYXQgPGZ1bmN0aW9uPlNobWVtUmVxdWVzdFN0cnVjdCgpPC9m dW5jdGlvbj4KKyAgICAgIGRvZXNuJ3QgaW1tZWRpYXRlbHkgYWxsb2NhdGUgb3IgaW5pdGlhbGl6 ZSB0aGUgbWVtb3J5LCBpdCBtZXJlbHkKKyAgICAgIHJlZ2lzdGVycyB0aGUgc3BhY2UgdG8gYmUg YWxsb2NhdGVkIGxhdGVyIGluIHRoZSBzdGFydHVwIHNlcXVlbmNlLiAgV2hlbgorICAgICAgdGhl IG1lbW9yeSBpcyBhbGxvY2F0ZWQsIGl0IGlzIGluaXRpYWxpemVkIHRvIHplcm8uICBGb3IgYW55 IG1vcmUKKyAgICAgIGNvbXBsZXggaW5pdGlhbGl6YXRpb24sIHNldCB0aGUgPGZ1bmN0aW9uPmlu aXRfZm4oKTwvZnVuY3Rpb24+IGNhbGxiYWNrLAorICAgICAgd2hpY2ggd2lsbCBiZSBjYWxsZWQg YWZ0ZXIgdGhlIG1lbW9yeSBoYXMgYmVlbiBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkCisgICAg ICB0byB6ZXJvLCBidXQgYmVmb3JlIGFueSBvdGhlciBwcm9jZXNzZXMgYXJlIHJ1bm5pbmcsIGFu ZCB0aHVzIG5vIGxvY2tpbmcKKyAgICAgIGlzIHJlcXVpcmVkLgogICAgICA8L3BhcmE+Ci0KICAg ICAgPHBhcmE+Ci0gICAgICBBbiBleGFtcGxlIG9mIGEgPGxpdGVyYWw+c2htZW1fcmVxdWVzdF9o b29rPC9saXRlcmFsPiBhbmQKLSAgICAgIDxsaXRlcmFsPnNobWVtX3N0YXJ0dXBfaG9vazwvbGl0 ZXJhbD4gY2FuIGJlIGZvdW5kIGluCisgICAgICBPbiBXaW5kb3dzLCB0aGUgPGZ1bmN0aW9uPmF0 dGFjaF9mbjwvZnVuY3Rpb24+IGNhbGxiYWNrLCBpZiBhbnksIGlzCisgICAgICBhZGRpdGlvbmFs bHkgY2FsbGVkIGF0IGV2ZXJ5IGJhY2tlbmQgc3RhcnR1cC4gIEl0IGNhbiBiZSB1c2VkIHRvCisg ICAgICBpbml0aWFsaXplIGFkZGl0aW9uYWwgcGVyLWJhY2tlbmQgc3RhdGUgcmVsYXRlZCB0byB0 aGUgc2hhcmVkIG1lbW9yeQorICAgICAgYXJlYSB0aGF0IGlzIGluaGVyaXRlZCB2aWEgPGZ1bmN0 aW9uPmZvcmsoKTwvZnVuY3Rpb24+IG9uIG90aGVyIHN5c3RlbXMuCisgICAgIDwvcGFyYT4KKyAg ICAgPHBhcmE+CisgICAgICBBbiBleGFtcGxlIG9mIGFsbG9jYXRpbmcgc2hhcmVkIG1lbW9yeSBj YW4gYmUgZm91bmQgaW4KICAgICAgIDxmaWxlbmFtZT5jb250cmliL3BnX3N0YXRfc3RhdGVtZW50 cy9wZ19zdGF0X3N0YXRlbWVudHMuYzwvZmlsZW5hbWU+IGluCiAgICAgICB0aGUgPHByb2R1Y3Ru YW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBzb3VyY2UgdHJlZS4KICAgICAgPC9wYXJhPgog ICAgIDwvc2VjdDM+CiAKICAgICA8c2VjdDMgaWQ9InhmdW5jLXNoYXJlZC1hZGRpbi1hZnRlci1z dGFydHVwIj4KLSAgICAgPHRpdGxlPlJlcXVlc3RpbmcgU2hhcmVkIE1lbW9yeSBBZnRlciBTdGFy dHVwPC90aXRsZT4KKyAgICAgPHRpdGxlPlJlcXVlc3RpbmcgU2hhcmVkIE1lbW9yeSBBZnRlciBT dGFydHVwIHdpdGggPGZ1bmN0aW9uPlNobWVtUmVxdWVzdFN0cnVjdDwvZnVuY3Rpb24+PC90aXRs ZT4KKworICAgICA8cGFyYT4KKyAgICAgIFRoZSA8ZnVuY3Rpb24+U2htZW1SZXF1ZXN0U3RydWN0 KCk8L2Z1bmN0aW9uPiBjYW4gYWxzbyBiZSBjYWxsZWQgYWZ0ZXIKKyAgICAgIHN5c3RlbSBzdGFy dHVwLCB3aGljaCBpcyB1c2VmdWwgdG8gYWxsb3cgc21hbGwgYWxsb2NhdGlvbnMgaW4gYWRkLWlu CisgICAgICBsaWJyYXJpZXMgdGhhdCBhcmUgbm90IHNwZWNpZmllZCBpbgorICAgICAgPHhyZWYg bGlua2VuZD0iZ3VjLXNoYXJlZC1wcmVsb2FkLWxpYnJhcmllcyIvPjxpbmRleHRlcm0+PHByaW1h cnk+c2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPi4KKyAgICAg IEhvd2V2ZXIsIGFmdGVyIHN0YXJ0dXAgdGhlIGFsbG9jYXRpb24gY2FuIGZhaWwgaWYgdGhlcmUg aXMgbm90IGVub3VnaAorICAgICAgc2hhcmVkIG1lbW9yeSBhdmFpbGFibGUuIFRoZSBzeXN0ZW0g cmVzZXJ2ZXMgc29tZSBtZW1vcnkgZm9yIGFsbG9jYXRpb25zCisgICAgICBhZnRlciBzdGFydHVw LCBidXQgdGhhdCByZXNlcnZhdGlvbiBpcyBzbWFsbC4KKyAgICAgPC9wYXJhPgorICAgICA8cGFy YT4KKyAgICAgIEJ5IGRlZmF1bHQsIDxmdW5jdGlvbj5SZWdpc3RlclNobWVtQ2FsbGJhY2tzKCk8 L2Z1bmN0aW9uPiBmYWlscyB3aXRoIGFuCisgICAgICBlcnJvciBpZiBjYWxsZWQgYWZ0ZXIgc3lz dGVtIHN0YXJ0dXAuIFRvIHVzZSBpdCBhZnRlciBzdGFydHVwLCB5b3UgbXVzdAorICAgICAgc2V0 IHRoZSA8bGl0ZXJhbD5TSE1FTV9DQUxMQkFDS1NfQUxMT1dfQUZURVJfU1RBUlRVUDwvbGl0ZXJh bD4gZmxhZyBpbgorICAgICAgdGhlIGFyZ3VtZW50IDxzdHJ1Y3RuYW1lPlNobWVtQ2FsbGJhY2tz PC9zdHJ1Y3RuYW1lPiBzdHJ1Y3QgdG8KKyAgICAgIGFja25vd2xlZGdlIHRoZSByaXNrLgorICAg ICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgV2hlbiA8ZnVuY3Rpb24+UmVnaXN0ZXJTaG1l bUNhbGxiYWNrcygpPC9mdW5jdGlvbj4gaXMgY2FsbGVkIGFmdGVyCisgICAgICBzdGFydHVwLCBp dCB3aWxsIGltbWVkaWF0ZWx5IGNhbGwgdGhlIGFwcHJvcHJpYXRlIGNhbGxiYWNrcywgZGVwZW5k aW5nCisgICAgICBvbiB3aGV0aGVyIHRoZSByZXF1ZXN0ZWQgbWVtb3J5IGFyZWFzIHdlcmUgYWxy ZWFkeSBpbml0aWFsaXplZCBieQorICAgICAgYW5vdGhlciBiYWNrZW5kLiBUaGUgY2FsbGJhY2tz IHdpbGwgYmUgY2FsbGVkIHdoaWxlIGhvbGRpbmcgYW4gaW50ZXJuYWwKKyAgICAgIGxvY2ssIHdo aWNoIHByZXZlbnRzIGNvbmN1cnJlbnQgdHdvIGJhY2tlbmRzIGZyb20gaW5pdGlhbGl6YXRpbmcg dGhlCisgICAgICBtZW1vcnkgYXJlYSBjb25jdXJyZW50bHkuCisgICAgIDwvcGFyYT4KKyAgICA8 L3NlY3QzPgorCisgICAgPHNlY3QzIGlkPSJ4ZnVuYy1zaGFyZWQtYWRkaW4tZHluYW1pYyI+Cisg ICAgIDx0aXRsZT5BbGxvY2F0aW5nIER5bmFtaWMgU2hhcmVkIE1lbW9yeSBBZnRlciBTdGFydHVw PC90aXRsZT4KIAogICAgICA8cGFyYT4KICAgICAgIFRoZXJlIGlzIGFub3RoZXIsIG1vcmUgZmxl eGlibGUgbWV0aG9kIG9mIHJlc2VydmluZyBzaGFyZWQgbWVtb3J5IHRoYXQKLSAgICAgIGNhbiBi ZSBkb25lIGFmdGVyIHNlcnZlciBzdGFydHVwIGFuZCBvdXRzaWRlIGEKLSAgICAgIDxsaXRlcmFs PnNobWVtX3JlcXVlc3RfaG9vazwvbGl0ZXJhbD4uICBUbyBkbyBzbywgZWFjaCBiYWNrZW5kIHRo YXQgd2lsbAorICAgICAgY2FuIGJlIGRvbmUgYWZ0ZXIgc2VydmVyIHN0YXJ0dXAuICBUbyBkbyBz bywgZWFjaCBiYWNrZW5kIHRoYXQgd2lsbAogICAgICAgdXNlIHRoZSBzaGFyZWQgbWVtb3J5IHNo b3VsZCBvYnRhaW4gYSBwb2ludGVyIHRvIGl0IGJ5IGNhbGxpbmc6CiA8cHJvZ3JhbWxpc3Rpbmc+ CiB2b2lkICpHZXROYW1lZERTTVNlZ21lbnQoY29uc3QgY2hhciAqbmFtZSwgc2l6ZV90IHNpemUs CkBAIC0zNzExLDEwICszNzcyLDcgQEAgdm9pZCAqR2V0TmFtZWREU01TZWdtZW50KGNvbnN0IGNo YXIgKm5hbWUsIHNpemVfdCBzaXplLAogICAgICA8L3BhcmE+CiAKICAgICAgPHBhcmE+Ci0gICAg ICBVbmxpa2Ugc2hhcmVkIG1lbW9yeSByZXNlcnZlZCBhdCBzZXJ2ZXIgc3RhcnR1cCwgdGhlcmUg aXMgbm8gbmVlZCB0bwotICAgICAgYWNxdWlyZSA8ZnVuY3Rpb24+QWRkaW5TaG1lbUluaXRMb2Nr PC9mdW5jdGlvbj4gb3Igb3RoZXJ3aXNlIHRha2UgYWN0aW9uCi0gICAgICB0byBhdm9pZCByYWNl IGNvbmRpdGlvbnMgd2hlbiByZXNlcnZpbmcgc2hhcmVkIG1lbW9yeSB3aXRoCi0gICAgICA8ZnVu Y3Rpb24+R2V0TmFtZWREU01TZWdtZW50PC9mdW5jdGlvbj4uICBUaGlzIGZ1bmN0aW9uIGVuc3Vy ZXMgdGhhdCBvbmx5CisgICAgICA8ZnVuY3Rpb24+R2V0TmFtZWREU01TZWdtZW50PC9mdW5jdGlv bj4gZW5zdXJlcyB0aGF0IG9ubHkKICAgICAgIG9uZSBiYWNrZW5kIGFsbG9jYXRlcyBhbmQgaW5p dGlhbGl6ZXMgdGhlIHNlZ21lbnQgYW5kIHRoYXQgYWxsIG90aGVyCiAgICAgICBiYWNrZW5kcyBy ZWNlaXZlIGEgcG9pbnRlciB0byB0aGUgZnVsbHkgYWxsb2NhdGVkIGFuZCBpbml0aWFsaXplZAog ICAgICAgc2VnbWVudC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3Ry YXAuYyBiL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYwppbmRleCBjNTJjMGE2MDIz ZC4uYzcwN2NjZmE1NjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3Ry YXAuYworKysgYi9zcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0cmFwLmMKQEAgLTM5LDYgKzM5 LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIK ICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobWVtX2ludGVy bmFsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9mbWdy b2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgpAQCAtMzczLDYgKzM3NCw3IEBAIEJvb3Rz dHJhcE1vZGVNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10sIGJvb2wgY2hlY2tfb25seSkKIAog CUluaXRpYWxpemVGYXN0UGF0aExvY2tzKCk7CiAKKwlTaG1lbUNhbGxSZXF1ZXN0Q2FsbGJhY2tz KCk7CiAJQ3JlYXRlU2hhcmVkTWVtb3J5QW5kU2VtYXBob3JlcygpOwogCiAJLyoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbGF1bmNoX2JhY2tlbmQuYyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvbGF1bmNoX2JhY2tlbmQuYwppbmRleCA0MzRlMDY0MzAyMi4uMDk3MzAxMGI3 ZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbGF1bmNoX2JhY2tlbmQuYwor KysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2xhdW5jaF9iYWNrZW5kLmMKQEAgLTQ5LDcgKzQ5 LDkgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvZHNtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pb193b3JrZXIuaCIKKyNpbmNsdWRlICJz dG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcGdfc2htZW0uaCIKKyNpbmNsdWRlICJz dG9yYWdlL3NobWVtX2ludGVybmFsLmgiCiAjaW5jbHVkZSAidGNvcC9iYWNrZW5kX3N0YXJ0dXAu aCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogCkBAIC02NzIsNyArNjc0LDEwIEBAIFN1 YlBvc3RtYXN0ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAkvKiBSZXN0b3JlIGJh c2ljIHNoYXJlZCBtZW1vcnkgcG9pbnRlcnMgKi8KIAlpZiAoVXNlZFNobWVtU2VnQWRkciAhPSBO VUxMKQorCXsKIAkJSW5pdFNobWVtQWxsb2NhdG9yKFVzZWRTaG1lbVNlZ0FkZHIpOworCQlTaG1l bUNhbGxSZXF1ZXN0Q2FsbGJhY2tzKCk7CisJfQogCiAJLyoKIAkgKiBSdW4gdGhlIGFwcHJvcHJp YXRlIE1haW4gZnVuY3Rpb24KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9z dG1hc3Rlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKaW5kZXggZWI0 ZjNlYjcyZDQuLjY5MzQ3NTAxNGZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L3Bvc3RtYXN0ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwpA QCAtMTE1LDYgKzExNSw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJz dG9yYWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9zaG1lbV9pbnRlcm5hbC5oIgogI2luY2x1ZGUgInRjb3AvYmFja2VuZF9zdGFydHVw LmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2RhdGV0aW1l LmgiCkBAIC05NTEsNyArOTUyLDE0IEBAIFBvc3RtYXN0ZXJNYWluKGludCBhcmdjLCBjaGFyICph cmd2W10pCiAJSW5pdGlhbGl6ZUZhc3RQYXRoTG9ja3MoKTsKIAogCS8qCi0JICogR2l2ZSBwcmVs b2FkZWQgbGlicmFyaWVzIGEgY2hhbmNlIHRvIHJlcXVlc3QgYWRkaXRpb25hbCBzaGFyZWQgbWVt b3J5LgorCSAqIEFzayBhbGwgc3Vic3lzdGVtcywgaW5jbHVkaW5nIHByZWxvYWRlZCBsaWJyYXJp ZXMsIHRvIHJlZ2lzdGVyIHRoZWlyCisJICogc2hhcmVkIG1lbW9yeSBuZWVkcy4KKwkgKi8KKwlT aG1lbUNhbGxSZXF1ZXN0Q2FsbGJhY2tzKCk7CisKKwkvKgorCSAqIEFsc28gY2FsbCBhbnkgbGVn YWN5IHNobWVtIHJlcXVlc3QgaG9va3MgdGhhdCBtaWdodCdiZSBiZWVuIGluc3RhbGxlZAorCSAq IGJ5IHByZWxvYWRlZCBsaWJyYXJpZXMuCiAJICovCiAJcHJvY2Vzc19zaG1lbV9yZXF1ZXN0cygp OwogCkBAIC0zMjMyLDcgKzMyNDAsMTQgQEAgUG9zdG1hc3RlclN0YXRlTWFjaGluZSh2b2lkKQog CQkvKiByZS1yZWFkIGNvbnRyb2wgZmlsZSBpbnRvIGxvY2FsIG1lbW9yeSAqLwogCQlMb2NhbFBy b2Nlc3NDb250cm9sRmlsZSh0cnVlKTsKIAotCQkvKiByZS1jcmVhdGUgc2hhcmVkIG1lbW9yeSBh bmQgc2VtYXBob3JlcyAqLworCQkvKgorCQkgKiBSZS1pbml0aWFsaXplIHNoYXJlZCBtZW1vcnkg YW5kIHNlbWFwaG9yZXMuICBOb3RlOiBXZSBkb24ndCBjYWxsCisJCSAqIFJlZ2lzdGVyQnVpbHRp blNobWVtQ2FsbGJhY2tzKCksIHdlIGtlZXAgdGhlIG9sZCByZWdpc3RyYXRpb25zLiAgSW4KKwkJ ICogb3JkZXIgdG8gcmUtcmVnaXN0ZXIgc3RydWN0cyBpbiBleHRlbnNpb25zLCB3ZSdkIG5lZWQg dG8gcmVsb2FkCisJCSAqIHNoYXJlZCBwcmVsb2FkIGxpYnJhcmllcywgYW5kIHdlIGRvbid0IHdh bnQgdG8gZG8gdGhhdC4KKwkJICovCisJCVJlc2V0U2htZW1BbGxvY2F0b3IoKTsKKwkJU2htZW1D YWxsUmVxdWVzdENhbGxiYWNrcygpOwogCQlDcmVhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVz KCk7CiAKIAkJVXBkYXRlUE1TdGF0ZShQTV9TVEFSVFVQKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwpp bmRleCA3YWFiNWRhMzM4Ni4uMjQ0MjJhODBhYjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL2lwY2kuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKQEAg LTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9y YWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgorI2luY2x1 ZGUgInN0b3JhZ2Uvc2htZW1faW50ZXJuYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NpbnZhbGFk dC5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9w b2ludC5oIgpAQCAtMTAwLDggKzEwMSw5IEBAIENhbGN1bGF0ZVNobWVtU2l6ZSh2b2lkKQogCSAq IGR1cmluZyB0aGUgYWN0dWFsIGFsbG9jYXRpb24gcGhhc2UuCiAJICovCiAJc2l6ZSA9IDEwMDAw MDsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgaGFzaF9lc3RpbWF0ZV9zaXplKFNITUVNX0lOREVY X1NJWkUsCi0JCQkJCQkJCQkJCSBzaXplb2YoU2htZW1JbmRleEVudCkpKTsKKwlzaXplID0gYWRk X3NpemUoc2l6ZSwgU2htZW1HZXRSZXF1ZXN0ZWRTaXplKCkpOworCisJLyogbGVnYWN5IHN1YnN5 c3RlbXMgKi8KIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgZHNtX2VzdGltYXRlX3NpemUoKSk7CiAJ c2l6ZSA9IGFkZF9zaXplKHNpemUsIERTTVJlZ2lzdHJ5U2htZW1TaXplKCkpOwogCXNpemUgPSBh ZGRfc2l6ZShzaXplLCBCdWZmZXJNYW5hZ2VyU2htZW1TaXplKCkpOwpAQCAtMTc2LDYgKzE3OCwx MyBAQCBBdHRhY2hTaGFyZWRNZW1vcnlTdHJ1Y3RzKHZvaWQpCiAJICovCiAJSW5pdGlhbGl6ZUZh c3RQYXRoTG9ja3MoKTsKIAorCS8qCisJICogQXR0YWNoIHRvIExXTG9ja3MgZmlyc3QuIFRoZXkg YXJlIG5lZWRlZCBieSBtb3N0IG90aGVyIHN1YnN5c3RlbXMuCisJICovCisJTFdMb2NrU2htZW1J bml0KCk7CisKKwkvKiBFc3RhYmxpc2ggcG9pbnRlcnMgdG8gYWxsIHNoYXJlZCBtZW1vcnkgYXJl YXMgaW4gdGhpcyBiYWNrZW5kICovCisJU2htZW1BdHRhY2hSZXF1ZXN0ZWQoKTsKIAlDcmVhdGVP ckF0dGFjaFNobWVtU3RydWN0cygpOwogCiAJLyoKQEAgLTIyMCw3ICsyMjksMTcgQEAgQ3JlYXRl U2hhcmVkTWVtb3J5QW5kU2VtYXBob3Jlcyh2b2lkKQogCSAqLwogCUluaXRTaG1lbUFsbG9jYXRv cihzZWdoZHIpOwogCi0JLyogSW5pdGlhbGl6ZSBzdWJzeXN0ZW1zICovCisJLyoKKwkgKiBJbml0 aWFsaXplIExXTG9ja3MgZmlyc3QsIGluIGNhc2UgYW55IG9mIHRoZSBzaG1lbSBpbml0IGZ1bmN0 aW9uIHVzZQorCSAqIExXTG9ja3MuICAoTm90aGluZyBlbHNlIGNhbiBiZSBydW5uaW5nIGR1cmlu ZyBzdGFydHVwLCBzbyB0aGV5IGRvbid0CisJICogbmVlZCB0byBkbyBhbnkgbG9ja2luZyB5ZXQs IGJ1dCB3ZSBuZXZlcnRoZWxlc3MgYWxsb3cgaXQuKQorCSAqLworCUxXTG9ja1NobWVtSW5pdCgp OworCisJLyogSW5pdGlhbGl6ZSBhbGwgc2htZW0gYXJlYXMgKi8KKwlTaG1lbUluaXRSZXF1ZXN0 ZWQoKTsKKworCS8qIEluaXRpYWxpemUgbGVnYWN5IHN1YnN5c3RlbXMgKi8KIAlDcmVhdGVPckF0 dGFjaFNobWVtU3RydWN0cygpOwogCiAJLyogSW5pdGlhbGl6ZSBkeW5hbWljIHNoYXJlZCBtZW1v cnkgZmFjaWxpdGllcy4gKi8KQEAgLTI1MSwxMSArMjcwLDYgQEAgQ3JlYXRlU2hhcmVkTWVtb3J5 QW5kU2VtYXBob3Jlcyh2b2lkKQogc3RhdGljIHZvaWQKIENyZWF0ZU9yQXR0YWNoU2htZW1TdHJ1 Y3RzKHZvaWQpCiB7Ci0JLyoKLQkgKiBTZXQgdXAgTFdMb2Nrcy4gIFRoZXkgYXJlIG5lZWRlZCBi eSBtb3N0IG90aGVyIHN1YnN5c3RlbXMuCi0JICovCi0JTFdMb2NrU2htZW1Jbml0KCk7Ci0KIAlk c21fc2htZW1faW5pdCgpOwogCURTTVJlZ2lzdHJ5U2htZW1Jbml0KCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9zaG1lbS5jCmluZGV4IGM5OTRmNzY3NGVjLi4yOWZmNjA2NWRkYSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9zaG1lbS5jCkBAIC0xOSw0MyArMTksMTE1IEBACiAgKiBtZXRob2RzKS4gIFRoZSByb3V0aW5l cyBpbiB0aGlzIGZpbGUgYXJlIHVzZWQgZm9yIGFsbG9jYXRpbmcgYW5kCiAgKiBiaW5kaW5nIHRv IHNoYXJlZCBtZW1vcnkgZGF0YSBzdHJ1Y3R1cmVzLgogICoKLSAqIE5PVEVTOgotICoJCShhKSBU aGVyZSBhcmUgdGhyZWUga2luZHMgb2Ygc2hhcmVkIG1lbW9yeSBkYXRhIHN0cnVjdHVyZXMKLSAq CWF2YWlsYWJsZSB0byBQT1NUR1JFUzogZml4ZWQtc2l6ZSBzdHJ1Y3R1cmVzLCBxdWV1ZXMgYW5k IGhhc2gKLSAqCXRhYmxlcy4gIEZpeGVkLXNpemUgc3RydWN0dXJlcyBjb250YWluIHRoaW5ncyBs aWtlIGdsb2JhbCB2YXJpYWJsZXMKLSAqCWZvciBhIG1vZHVsZSBhbmQgc2hvdWxkIG5ldmVyIGJl IGFsbG9jYXRlZCBhZnRlciB0aGUgc2hhcmVkIG1lbW9yeQotICoJaW5pdGlhbGl6YXRpb24gcGhh c2UuICBIYXNoIHRhYmxlcyBoYXZlIGEgZml4ZWQgbWF4aW11bSBzaXplIGFuZAotICoJY2Fubm90 IGdyb3cgYmV5b25kIHRoYXQuICBRdWV1ZXMgbGluayBkYXRhIHN0cnVjdHVyZXMKLSAqCXRoYXQg aGF2ZSBiZWVuIGFsbG9jYXRlZCBlaXRoZXIgd2l0aGluIGZpeGVkLXNpemUgc3RydWN0dXJlcyBv ciBhcyBoYXNoCi0gKglidWNrZXRzLiAgRWFjaCBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmUgaGFzIGEg c3RyaW5nIG5hbWUgdG8gaWRlbnRpZnkKLSAqCWl0IChhc3NpZ25lZCBpbiB0aGUgbW9kdWxlIHRo YXQgZGVjbGFyZXMgaXQpLgotICoKLSAqCQkoYikgRHVyaW5nIGluaXRpYWxpemF0aW9uLCBlYWNo IG1vZHVsZSBsb29rcyBmb3IgaXRzCi0gKglzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzIGluIGEgaGFz aCB0YWJsZSBjYWxsZWQgdGhlICJTaG1lbSBJbmRleCIuCi0gKglJZiB0aGUgZGF0YSBzdHJ1Y3R1 cmUgaXMgbm90IHByZXNlbnQsIHRoZSBjYWxsZXIgY2FuIGFsbG9jYXRlCi0gKglhIG5ldyBvbmUg YW5kIGluaXRpYWxpemUgaXQuICBJZiB0aGUgZGF0YSBzdHJ1Y3R1cmUgaXMgcHJlc2VudCwKLSAq CXRoZSBjYWxsZXIgImF0dGFjaGVzIiB0byB0aGUgc3RydWN0dXJlIGJ5IGluaXRpYWxpemluZyBh IHBvaW50ZXIKLSAqCWluIHRoZSBsb2NhbCBhZGRyZXNzIHNwYWNlLgotICoJCVRoZSBzaG1lbSBp bmRleCBoYXMgdHdvIHB1cnBvc2VzOiBmaXJzdCwgaXQgZ2l2ZXMgdXMKLSAqCWEgc2ltcGxlIG1v ZGVsIG9mIGhvdyB0aGUgd29ybGQgbG9va3Mgd2hlbiBhIGJhY2tlbmQgcHJvY2VzcwotICoJaW5p dGlhbGl6ZXMuICBJZiBzb21ldGhpbmcgaXMgcHJlc2VudCBpbiB0aGUgc2htZW0gaW5kZXgsCi0g KglpdCBpcyBpbml0aWFsaXplZC4gIElmIGl0IGlzIG5vdCwgaXQgaXMgdW5pbml0aWFsaXplZC4g IFNlY29uZCwKLSAqCXRoZSBzaG1lbSBpbmRleCBhbGxvd3MgdXMgdG8gYWxsb2NhdGUgc2hhcmVk IG1lbW9yeSBvbiBkZW1hbmQKLSAqCWluc3RlYWQgb2YgdHJ5aW5nIHRvIHByZWFsbG9jYXRlIHN0 cnVjdHVyZXMgYW5kIGhhcmQtd2lyZSB0aGUKLSAqCXNpemVzIGFuZCBsb2NhdGlvbnMgaW4gaGVh ZGVyIGZpbGVzLiAgSWYgeW91IGFyZSB1c2luZyBhIGxvdAotICoJb2Ygc2hhcmVkIG1lbW9yeSBp biBhIGxvdCBvZiBkaWZmZXJlbnQgcGxhY2VzIChhbmQgY2hhbmdpbmcKLSAqCXRoaW5ncyBkdXJp bmcgZGV2ZWxvcG1lbnQpLCB0aGlzIGlzIGltcG9ydGFudC4KLSAqCi0gKgkJKGMpIEluIHN0YW5k YXJkIFVuaXgtaXNoIGVudmlyb25tZW50cywgaW5kaXZpZHVhbCBiYWNrZW5kcyBkbyBub3QKLSAq CW5lZWQgdG8gcmUtZXN0YWJsaXNoIHRoZWlyIGxvY2FsIHBvaW50ZXJzIGludG8gc2hhcmVkIG1l bW9yeSwgYmVjYXVzZQotICoJdGhleSBpbmhlcml0IGNvcnJlY3QgdmFsdWVzIG9mIHRob3NlIHZh cmlhYmxlcyB2aWEgZm9yaygpIGZyb20gdGhlCi0gKglwb3N0bWFzdGVyLiAgSG93ZXZlciwgdGhp cyBkb2VzIG5vdCB3b3JrIGluIHRoZSBFWEVDX0JBQ0tFTkQgY2FzZS4KLSAqCUluIHBvcnRzIHVz aW5nIEVYRUNfQkFDS0VORCwgbmV3IGJhY2tlbmRzIGhhdmUgdG8gc2V0IHVwIHRoZWlyIGxvY2Fs Ci0gKglwb2ludGVycyB1c2luZyB0aGUgbWV0aG9kIGRlc2NyaWJlZCBpbiAoYikgYWJvdmUuCi0g KgotICoJCShkKSBtZW1vcnkgYWxsb2NhdGlvbiBtb2RlbDogc2hhcmVkIG1lbW9yeSBjYW4gbmV2 ZXIgYmUKLSAqCWZyZWVkLCBvbmNlIGFsbG9jYXRlZC4gICBFYWNoIGhhc2ggdGFibGUgaGFzIGl0 cyBvd24gZnJlZSBsaXN0LAotICoJc28gaGFzaCBidWNrZXRzIGNhbiBiZSByZXVzZWQgd2hlbiBh biBpdGVtIGlzIGRlbGV0ZWQuCisgKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBmYWNpbGl0aWVzIHRv IGFsbG9jYXRlIGZpeGVkLXNpemUgc3RydWN0dXJlcyBpbiBzaGFyZWQKKyAqIG1lbW9yeSwgZm9y IHRoaW5ncyBsaWtlIHZhcmlhYmxlcyBzaGFyZWQgYmV0d2VlbiBhbGwgYmFja2VuZCBwcm9jZXNz ZXMuCisgKiBFYWNoIHN1Y2ggc3RydWN0dXJlIGhhcyBhIHN0cmluZyBuYW1lIHRvIGlkZW50aWZ5 IGl0LCBzcGVjaWZpZWQgd2hlbiBpdCBpcworICogcmVxdWVzdGVkLiAgc2htZW1faGFzaC5jIHBy b3ZpZGVzIGEgc2hhcmVkIGhhc2ggdGFibGUgaW1wbGVtZW50YXRpb24gb24gdG9wCisgKiBvZiB0 aGF0LgorICoKKyAqIFNoYXJlZCBtZW1vcnkgYXJlYXMgc2hvdWxkIHVzdWFsbHkgbm90IGJlIGFs bG9jYXRlZCBhZnRlciBwb3N0bWFzdGVyCisgKiBzdGFydHVwLCBhbHRob3VnaCB3ZSBkbyBhbGxv dyBzbWFsbCBhbGxvY2F0aW9ucyBsYXRlciBmb3IgdGhlIGJlbmVmaXQgb2YKKyAqIGV4dGVuc2lv biBtb2R1bGVzIHRoYXQgYXJlIGxvYWRlZCBhZnRlciBzdGFydHVwLiAgRGVzcGl0ZSB0aGF0IGFs bG93YW5jZSwKKyAqIGV4dGVuc2lvbnMgdGhhdCBuZWVkIHNoYXJlZCBtZW1vcnkgc2hvdWxkIGJl IGFkZGVkIGluCisgKiBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMsIGJlY2F1c2UgdGhlIGFsbG93 YW5jZSBpcyBxdWl0ZSBzbWFsbCBhbmQgdGhlcmUgaXMKKyAqIG5vIGd1YXJhbnRlZSB0aGF0IGFu eSBtZW1vcnkgaXMgYXZhaWxhYmxlIGFmdGVyIHN0YXJ0dXAuCisgKgorICogTm93YWRheXMsIHRo ZXJlIGlzIGFsc28gYSB0aGlyZCB3YXkgdG8gYWxsb2NhdGUgc2hhcmVkIG1lbW9yeSBjYWxsZWQK KyAqIER5bmFtaWMgU2hhcmVkIE1lbW9yeS4gIFNlZSBkc20uYyBmb3IgdGhhdCBmYWNpbGl0eS4g IE9uZSBiaWcgZGlmZmVyZW5jZQorICogYmV0d2VlbiB0cmFkaXRpb25hbCBzaGFyZWQgbWVtb3J5 IGhhbmRsZWQgYnkgc2htZW0uYyBhbmQgZHluYW1pYyBzaGFyZWQKKyAqIG1lbW9yeSBpcyB0aGF0 IHRyYWRpdGlvbmFsIHNoYXJlZCBtZW1vcnkgYXJlYXMgYXJlIG1hcHBlZCB0byB0aGUgc2FtZQor ICogYWRkcmVzcyBpbiBhbGwgcHJvY2Vzc2VzLCBzbyB5b3UgY2FuIHVzZSBub3JtYWwgcG9pbnRl cnMgaW4gc2hhcmVkIG1lbW9yeQorICogc3RydWN0cy4gIFdpdGggRHluYW1pYyBTaGFyZWQgTWVt b3J5LCB5b3UgbXVzdCB1c2Ugb2Zmc2V0cyBvciBEU0EgcG9pbnRlcnMKKyAqIGluc3RlYWQuCisg KgorICogU2hhcmVkIG1lbW9yeSBtYW5hZ2VkIGJ5IHNobWVtLmMgY2FuIG5ldmVyIGJlIGZyZWVk LCBvbmNlIGFsbG9jYXRlZC4gIEVhY2gKKyAqIGhhc2ggdGFibGUgaGFzIGl0cyBvd24gZnJlZSBs aXN0LCBzbyBoYXNoIGJ1Y2tldHMgY2FuIGJlIHJldXNlZCB3aGVuIGFuCisgKiBpdGVtIGlzIGRl bGV0ZWQuICBIb3dldmVyLCBpZiBvbmUgaGFzaCB0YWJsZSBncm93cyB2ZXJ5IGxhcmdlIGFuZCB0 aGVuCisgKiBzaHJpbmtzLCBpdHMgc3BhY2UgY2Fubm90IGJlIHJlZGlzdHJpYnV0ZWQgdG8gb3Ro ZXIgdGFibGVzLiAgV2UgY291bGQgYnVpbGQKKyAqIGEgc2ltcGxlIGhhc2ggYnVja2V0IGdhcmJh Z2UgY29sbGVjdG9yIGlmIG5lZWQgYmUuICBSaWdodCBub3csIGl0IHNlZW1zCisgKiB1bm5lY2Vz c2FyeS4KKyAqCisgKiBVc2FnZQorICogLS0tLS0KKyAqCisgKiBUbyBhbGxvY2F0ZSBzaGFyZWQg bWVtb3J5LCB5b3UgbmVlZCB0byByZWdpc3RlciBhIHNldCBvZiBjYWxsYmFjayBmdW5jdGlvbnMK KyAqIHdoaWNoIGhhbmRsZSB0aGUgbGlmZWN5Y2xlIG9mIHRoZSBhbGxvY2F0aW9uLiAgSW4gdGhl IHJlcXVlc3RfZm4gY2FsbGJhY2ssCisgKiBmaWxsIGluIGEgU2htZW1SZXF1ZXN0U3RydWN0T3B0 cyBzdHJ1Y3Qgd2l0aCB0aGUgbmFtZSwgc2l6ZSwgYW5kIGFueSBvdGhlcgorICogb3B0aW9ucywg YW5kIGNhbGwgU2htZW1SZXF1ZXN0U3RydWN0KCkuICBMZWF2ZSBhbnkgdW51c2VkIGZpZWxkcyBh cyB6ZXJvcy4KKyAqCisgKgl0eXBlZGVmIHN0cnVjdCBNeVNobWVtRGF0YSB7CisgKgkJLi4uCisg Kgl9IE15U2htZW1EYXRhOworICoKKyAqCXN0YXRpYyBNeVNobWVtRGF0YSAqTXlTaG1lbTsKKyAq CisgKglzdGF0aWMgdm9pZCBteV9zaG1lbV9yZXF1ZXN0KHZvaWQgKmFyZyk7CisgKglzdGF0aWMg dm9pZCBteV9zaG1lbV9pbml0KHZvaWQgKmFyZyk7CisgKgorICogIGNvbnN0IFNobWVtQ2FsbGJh Y2tzIE15U2htZW1DYWxsYmFja3MgPSB7CisgKgkJLnJlcXVlc3RfZm4gPSBteV9zaG1lbV9yZXF1 ZXN0LAorICoJCS5pbml0X2ZuID0gbXlfc2htZW1faW5pdCwKKyAqCX07CisgKgorICoJc3RhdGlj IHZvaWQKKyAqCW15X3NobWVtX3JlcXVlc3Qodm9pZCAqYXJnKQorICoJeworICoJCXN0YXRpYyBT aG1lbVN0cnVjdERlc2MgTXlTaG1lbURlc2M7CisgKgorICoJCVNobWVtUmVxdWVzdFN0cnVjdCgm TXlTaG1lbURlc2MsICYoU2htZW1SZXF1ZXN0U3RydWN0T3B0cykgeworICoJCQkubmFtZSA9ICJN eSBzaG1lbSBhcmVhIiwKKyAqCQkJLnNpemUgPSBzaXplb2YoTXlTaG1lbURhdGEpLAorICoJCQku cHRyID0gKHZvaWQgKiopICZNeVNobWVtLAorICoJCX0pOworICoJfQorICoKKyAqIEluIGJ1aWx0 aW4gUG9zdGdyZVNRTCBjb2RlLCBhZGQgdGhlIGNhbGxiYWNrcyB0byB0aGUgbGlzdCBpbgorICog c3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmguIEluIGFuIGFkZC1pbiBtb2R1bGUs IHlvdSBjYW4gcmVnaXN0ZXIKKyAqIHRoZSBjYWxsYmFja3MgYnkgY2FsbGluZyBSZWdpc3RlclNo bWVtQ2FsbGJhY2tzKCZNeVNobWVtQ2FsbGJhY2tzKSBpbiB0aGUKKyAqIGV4dGVuc2lvbidzIF9Q R19pbml0KCkgZnVuY3Rpb24uCisgKgorICogTGlmZWN5Y2xlCisgKiAtLS0tLS0tLS0KKyAqCisg KiBJbml0aWFsaXppbmcgc2hhcmVkIG1lbW9yeSBoYXBwZW5zIGluIG11bHRpcGxlIHBoYXNlcy4g SW4gdGhlIGZpcnN0IHBoYXNlLAorICogZHVyaW5nIHBvc3RtYXN0ZXIgc3RhcnR1cCwgYWxsIHRo ZSByZXF1ZXN0X2ZuIGNhbGxiYWNrcyBhcmUgY2FsbGVkLiAgT25seQorICogYWZ0ZXIgYWxsIHRo ZSByZXF1ZXN0X2ZuIGNhbGxiYWNrcyBoYXZlIGJlZW4gY2FsbGVkIGFuZCBhbGwgdGhlIHNobWVt IGFyZWFzCisgKiBoYXZlIGJlZW4gcmVxdWVzdGVkIGJ5IHRoZSBTaG1lbVJlcXVlc3RTdHJ1Y3Qo KSBjYWxscyB3ZSBrbm93IGhvdyBtdWNoCisgKiBzaGFyZWQgbWVtb3J5IHdlIG5lZWQgaW4gdG90 YWwuIEFmdGVyIHRoYXQsIHBvc3RtYXN0ZXIgYWxsb2NhdGVzIGdsb2JhbAorICogc2hhcmVkIG1l bW9yeSBzZWdtZW50LCBhbmQgY2FsbHMgYWxsIHRoZSBpbml0X2ZuIGNhbGxiYWNrcyB0byBpbml0 aWFsaXplCisgKiBhbGwgdGhlIHJlcXVlc3RlZCBzaG1lbSBhcmVhcy4KKyAqCisgKiBJbiBzdGFu ZGFyZCBVbml4LWlzaCBlbnZpcm9ubWVudHMsIGluZGl2aWR1YWwgYmFja2VuZHMgZG8gbm90IG5l ZWQgdG8KKyAqIHJlLWVzdGFibGlzaCB0aGVpciBsb2NhbCBwb2ludGVycyBpbnRvIHNoYXJlZCBt ZW1vcnksIGJlY2F1c2UgdGhleSBpbmhlcml0CisgKiBjb3JyZWN0IHZhbHVlcyBvZiB0aG9zZSB2 YXJpYWJsZXMgdmlhIGZvcmsoKSBmcm9tIHRoZSBwb3N0bWFzdGVyLiAgSG93ZXZlciwKKyAqIHRo aXMgZG9lcyBub3Qgd29yayBpbiB0aGUgRVhFQ19CQUNLRU5EIGNhc2UuICBJbiBwb3J0cyB1c2lu ZyBFWEVDX0JBQ0tFTkQsCisgKiBiYWNrZW5kIHN0YXJ0dXAgYWxzbyBjYWxscyB0aGUgc2htZW1f cmVxdWVzdCBjYWxsYmFja3MgdG8gcmUtZXN0YWJsaXNoIHRoZQorICoga25vd2xlZGdlIGFib3V0 IGVhY2ggc2hhcmVkIG1lbW9yeSBhcmVhLCBzZXRzIHRoZSBwb2ludGVyIHZhcmlhYmxlcworICog KCpTaG1lbVN0cnVjdERlc2MtPnB0ciksIGFuZCBjYWxscyB0aGUgYXR0YWNoX2ZuIGNhbGxiYWNr LCBpZiBhbnksIGZvcgorICogYWRkaXRpb25hbCBwZXItYmFja2VuZCBzZXR1cC4KKyAqCisgKiBM ZWdhY3kgU2htZW1Jbml0U3RydWN0KCkvU2htZW1Jbml0SGFzaCgpIGZ1bmN0aW9ucworICogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBT aG1lbUluaXRTdHJ1Y3QoKS9TaG1lbUluaXRIYXNoKCkgaXMgYW5vdGhlciB3YXkgb2YgcmVnaXN0 ZXJpbmcgc2htZW0KKyAqIGFyZWFzLiAgSXQgcHJlLWRhdGVzIHRoZSBTaG1lbVJlcXVlc3RTdHJ1 Y3QoKS9TaG1lbVJlcXVlc3RIYXNoKCkgZnVuY3Rpb25zLAorICogYW5kIHNob3VsZCBub3QgYmUg dXNlZCBpbiBuZXcgY29kZSwgYnV0IGFzIG9mIHRoaXMgd3JpdGluZyBpdCBpcyBzdGlsbAorICog d2lkZWx5IHVzZWQgaW4gZXh0ZW5zaW9ucy4KKyAqCisgKiBUbyBhbGxvY2F0ZSBhIHNobWVtIGFy ZWEgd2l0aCBTaG1lbUluaXRTdHJ1Y3QoKSwgeW91IG5lZWQgdG8gc2VwYXJhdGVseQorICogcmVn aXN0ZXIgdGhlIHNpemUgbmVlZGVkIGZvciB0aGUgYXJlYSBieSBjYWxsaW5nIFJlcXVlc3RBZGRp blNobWVtU3BhY2UoKQorICogZnJvbSB0aGUgZXh0ZW5zaW9uJ3Mgc2htZW1fcmVxdWVzdF9ob29r LCBhbmQgYWxsb2NhdGUgdGhlIGFyZWEgYnkgY2FsbGluZworICogU2htZW1Jbml0U3RydWN0KCkg ZnJvbSB0aGUgZXh0ZW5zaW9uJ3Mgc2htZW1fc3RhcnR1cF9ob29rLiAgVGhlcmUgYXJlIG5vCisg KiBpbml0L2F0dGFjaCBjYWxsYmFja3MuICBJbnN0ZWFkLCB0aGUgY2FsbGVyIG9mIFNobWVtSW5p dFN0cnVjdCgpIG11c3QgY2hlY2sKKyAqIHRoZSByZXR1cm4gc3RhdHVzIG9mIFNobWVtSW5pdFN0 cnVjdCgpIGFuZCBpbml0aWFsaXplIHRoZSBzdHJ1Y3QgaWYgaXQgd2FzCisgKiBub3QgcHJldmlv dXNseSBpbml0aWFsaXplZC4KKyAqCisgKiBDYWxsaW5nIFNobWVtQWxsb2MoKSBkaXJlY3RseQor ICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBUaGVyZSdzIGEgbW9yZSBs b3ctbGV2ZWwgd2F5IG9mIGFsbG9jYXRpbmcgc2hhcmVkIG1lbW9yeSB0b286IHlvdSBjYW4gY2Fs bAorICogU2htZW1BbGxvYygpIGRpcmVjdGx5LiAgSXQncyB1c2VkIHRvIGltcGxlbWVudCB0aGUg aGlnaGVyIGxldmVsIG1lY2hhbmlzbXMsCisgKiBhbmQgc2hvdWxkIGdlbmVyYWxseSBub3QgYmUg Y2FsbGVkIGRpcmVjdGx5LgogICovCiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgpAQCAtNzAsMTAg KzE0Miw4MCBAQAogI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9wZ19zaG1lbS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJzdG9y YWdlL3NobWVtX2ludGVybmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAjaW5jbHVk ZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXN0b3JlLmgiCiAKKy8q CisgKiBSZWdpc3RlcmVkIGNhbGxiYWNrcy4KKyAqCisgKiBEdXJpbmcgcG9zdG1hc3RlciBzdGFy dHVwLCB3ZSBhY2N1bXVsYXRlIHRoZSBjYWxsYmFja3MgZnJvbSBhbGwgc3Vic3lzdGVtcworICog aW4gdGhpcyBsaXN0LgorICoKKyAqIFRoaXMgaXMgaW4gcHJvY2VzcyBwcml2YXRlIG1lbW9yeSwg YWx0aG91Z2ggb24gVW5peC1saWtlIHN5c3RlbXMsIHdlIGV4cGVjdAorICogYWxsIHRoZSByZWdp c3RyYXRpb25zIHRvIGhhcHBlbiBhdCBwb3N0bWFzdGVyIHN0YXJ0dXAgdGltZSBhbmQgYmUgaW5o ZXJpdGVkCisgKiBieSBhbGwgdGhlIGNoaWxkIHByb2Nlc3NlcyB2aWEgZm9yaygpLgorICovCitz dGF0aWMgTGlzdCAqcmVnaXN0ZXJlZF9zaG1lbV9jYWxsYmFja3M7CisKKy8qCisgKiBJbiB0aGUg c2htZW0gcmVxdWVzdCBwaGFzZSwgYWxsIHRoZSBzaG1lbSBhcmVhcyByZXF1ZXN0ZWQgd2l0aCB0 aGUKKyAqIFNobWVtUmVxdWVzdCooKSBmdW5jdGlvbnMgYXJlIGFjY3VtdWxhdGVkIGhlcmUuCisg Ki8KK3R5cGVkZWYgc3RydWN0Cit7CisJU2htZW1TdHJ1Y3RPcHRzICpvcHRpb25zOworCVNobWVt UmVxdWVzdEtpbmQga2luZDsKK30gU2htZW1SZXF1ZXN0OworCitzdGF0aWMgTGlzdCAqcGVuZGlu Z19zaG1lbV9yZXF1ZXN0czsKKworLyoKKyAqIFBlci1wcm9jZXNzIHN0YXRlIG1hY2hpbmUsIGZv ciBzYW5pdHkgY2hlY2tpbmcgdGhhdCB3ZSBkbyB0aGluZ3MgaW4gdGhlCisgKiByaWdodCBvcmRl ci4KKyAqCisgKiBQb3N0bWFzdGVyOgorICogICBJTklUSUFMIC0+IFJFUVVFU1RJTkcgLT4gSU5J VElBTElaSU5HIC0+IERPTkUKKyAqCisgKiBCYWNrZW5kcyBpbiBFWEVDX0JBQ0tFTkQgbW9kZToK KyAqICAgSU5JVElBTCAtPiBSRVFVRVNUSU5HIC0+IEFUVEFDSElORyAtPiBET05FCisgKgorICog TGF0ZSByZXF1ZXN0OgorICogICBET05FIC0+IFJFUVVFU1RJTkcgLT4gQUZURVJfU1RBUlRVUF9B VFRBQ0hfT1JfSU5JVCAtPiBET05FCisgKi8KK2VudW0gc2htZW1fcmVxdWVzdF9zdGF0ZQorewor CS8qIEluaXRpYWwgc3RhdGUgKi8KKwlTUlNfSU5JVElBTCwKKworCS8qCisJICogV2hlbiB3ZSBz dGFydCBjYWxsaW5nIHRoZSBzaG1lbV9yZXF1ZXN0IGNhbGxiYWNrcywgd2UgZW50ZXIgdGhlCisJ ICogU1JTX1JFUVVFU1RJTkcgcGhhc2UuICBBbGwgU2htZW1SZXF1ZXN0U3RydWN0IGNhbGxzIGhh cHBlbiBpbiB0aGlzCisJICogc3RhdGUuCisJICovCisJU1JTX1JFUVVFU1RJTkcsCisKKwkvKgor CSAqIFBvc3RtYXN0ZXIgaGFzIGZpbmlzaGVkIGFsbCBzaG1lbSByZXF1ZXN0cywgYW5kIGlzIG5v dyBpbml0aWFsaXppbmcgdGhlCisJICogc2hhcmVkIG1lbW9yeSBzZWdtZW50LiAgaW5pdF9mbiBj YWxsYmFja3MgYXJlIGNhbGxlZCBpbiB0aGlzIHN0YXRlLgorCSAqLworCVNSU19JTklUSUFMSVpJ TkcsCisKKwkvKgorCSAqIEEgcG9zdG1hc3RlciBjaGlsZCBwcm9jZXNzIGlzIHN0YXJ0aW5nIHVw LiAgYXR0YWNoX2ZuIGNhbGxiYWNrcyBhcmUKKwkgKiBjYWxsZWQgaW4gdGhpcyBzdGF0ZS4KKwkg Ki8KKwlTUlNfQVRUQUNISU5HLAorCisJLyogQW4gYWZ0ZXItc3RhcnR1cCBhbGxvY2F0aW9uIG9y IGF0dGFjaG1lbnQgaXMgaW4gcHJvZ3Jlc3MuICovCisJU1JTX0FGVEVSX1NUQVJUVVBfQVRUQUNI X09SX0lOSVQsCisKKwkvKiBOb3JtYWwgc3RhdGUgYWZ0ZXIgc2htZW0gaW5pdGlhbGl6YXRpb24g LyBhdHRhY2htZW50ICovCisJU1JTX0RPTkUsCit9Oworc3RhdGljIGVudW0gc2htZW1fcmVxdWVz dF9zdGF0ZSBzaG1lbV9yZXF1ZXN0X3N0YXRlID0gU1JTX0lOSVRJQUw7CisKIC8qCiAgKiBUaGlz IGlzIHRoZSBmaXJzdCBkYXRhIHN0cnVjdHVyZSBzdG9yZWQgaW4gdGhlIHNoYXJlZCBtZW1vcnkg c2VnbWVudCwgYXQKICAqIHRoZSBvZmZzZXQgdGhhdCBQR1NobWVtSGVhZGVyLT5jb250ZW50X29m ZnNldCBwb2ludHMgdG8uICBBbGxvY2F0aW9ucyBieQpAQCAtMTA1LDM1ICsyNDcsMzc5IEBAIHN0 YXRpYyB2b2lkICpTaG1lbUJhc2U7CQkJLyogc3RhcnQgYWRkcmVzcyBvZiBzaGFyZWQgbWVtb3J5 ICovCiBzdGF0aWMgdm9pZCAqU2htZW1FbmQ7CQkJLyogZW5kKzEgYWRkcmVzcyBvZiBzaGFyZWQg bWVtb3J5ICovCiAKIHN0YXRpYyBTaG1lbUFsbG9jYXRvckRhdGEgKlNobWVtQWxsb2NhdG9yOwot c3RhdGljIEhUQUIgKlNobWVtSW5kZXggPSBOVUxMOyAvKiBwcmltYXJ5IGluZGV4IGhhc2h0YWJs ZSBmb3Igc2htZW0gKi8KKworLyoKKyAqIFNobWVtSW5kZXggaXMgYSBnbG9iYWwgZGlyZWN0b3J5 IG9mIHNobWVtIGFyZWFzLCBpdHNlbGYgYWxzbyBzdG9yZWQgaW4gdGhlCisgKiBzaGFyZWQgbWVt b3J5LgorICovCitzdGF0aWMgSFRBQiAqU2htZW1JbmRleDsKKworIC8qIG1heCBzaXplIG9mIGRh dGEgc3RydWN0dXJlIHN0cmluZyBuYW1lICovCisjZGVmaW5lIFNITUVNX0lOREVYX0tFWVNJWkUJ CSAoNDgpCisKKy8qCisgKiAjIG9mIGFkZGl0aW9uYWwgZW50cmllcyB0byByZXNlcnZlIGluIHRo ZSBzaG1lbSBpbmRleCB0YWJsZSwgZm9yCisgKiBhbGxvY2F0aW9ucyBhZnRlciBwb3N0bWFzdGVy IHN0YXJ0dXAuICAoVGhpcyBpcyBub3QgYSBoYXJkIGxpbWl0LCB0aGUgaGFzaAorICogdGFibGUg Y2FuIGdyb3cgbGFyZ2VyIHRoYW4gdGhhdCBpZiB0aGVyZSBpcyBzaGFyZWQgbWVtb3J5IGF2YWls YWJsZSkKKyAqLworI2RlZmluZSBTSE1FTV9JTkRFWF9BRERJVElPTkFMX1NJWkUJCSAoMTI4KQor CisvKiB0aGlzIGlzIGEgaGFzaCBidWNrZXQgaW4gdGhlIHNobWVtIGluZGV4IHRhYmxlICovCit0 eXBlZGVmIHN0cnVjdAoreworCWNoYXIJCWtleVtTSE1FTV9JTkRFWF9LRVlTSVpFXTsJLyogc3Ry aW5nIG5hbWUgKi8KKwl2b2lkCSAgICpsb2NhdGlvbjsJCS8qIGxvY2F0aW9uIGluIHNoYXJlZCBt ZW0gKi8KKwlTaXplCQlzaXplOwkJCS8qICMgYnl0ZXMgcmVxdWVzdGVkIGZvciB0aGUgc3RydWN0 dXJlICovCisJU2l6ZQkJYWxsb2NhdGVkX3NpemU7IC8qICMgYnl0ZXMgYWN0dWFsbHkgYWxsb2Nh dGVkICovCit9IFNobWVtSW5kZXhFbnQ7CiAKIC8qIFRvIGdldCByZWxpYWJsZSByZXN1bHRzIGZv ciBOVU1BIGlucXVpcnkgd2UgbmVlZCB0byAidG91Y2ggcGFnZXMiIG9uY2UgKi8KIHN0YXRpYyBi b29sIGZpcnN0TnVtYVRvdWNoID0gdHJ1ZTsKIAorc3RhdGljIHZvaWQgQ2FsbFNobWVtQ2FsbGJh Y2tzQWZ0ZXJTdGFydHVwKGNvbnN0IFNobWVtQ2FsbGJhY2tzICpjYWxsYmFja3MpOworc3RhdGlj IHZvaWQgSW5pdFNobWVtSW5kZXhFbnRyeShTaG1lbVJlcXVlc3QgKnJlcXVlc3QpOworc3RhdGlj IGJvb2wgQXR0YWNoU2htZW1JbmRleEVudHJ5KFNobWVtUmVxdWVzdCAqcmVxdWVzdCwgYm9vbCBt aXNzaW5nX29rKTsKKwogRGF0dW0JCXBnX251bWFfYXZhaWxhYmxlKFBHX0ZVTkNUSU9OX0FSR1Mp OwogCiAvKgotICogQSB2ZXJ5IHNpbXBsZSBhbGxvY2F0b3IgdXNlZCB0byBjYXJ2ZSBvdXQgZGlm ZmVyZW50IHBhcnRzIG9mIGEgaGFzaCB0YWJsZQotICogZnJvbSBhIHByZXZpb3VzbHkgYWxsb2Nh dGVkIGNvbnRpZ3VvdXMgc2hhcmVkIG1lbW9yeSBhcmVhLgorICoJU2htZW1SZXF1ZXN0U3RydWN0 KCkgLS0tIHJlcXVlc3QgYSBuYW1lZCBzaGFyZWQgbWVtb3J5IGFyZWEKKyAqCisgKiBTdWJzeXN0 ZW1zIGNhbGwgdGhpcyB0byByZWdpc3RlciB0aGVpciBzaGFyZWQgbWVtb3J5IG5lZWRzLiAgVGhp cyBpcworICogdXN1YWxseSBkb25lIGVhcmx5IGluIHBvc3RtYXN0ZXIgc3RhcnR1cCwgYmVmb3Jl IHRoZSBzaGFyZWQgbWVtb3J5IHNlZ21lbnQKKyAqIGhhcyBiZWVuIGNyZWF0ZWQsIHNvIHRoYXQg dGhlIHNpemUgY2FuIGJlIGluY2x1ZGVkIGluIHRoZSBlc3RpbWF0ZSBmb3IKKyAqIHRvdGFsIGFt b3VudCBvZiBzaGFyZWQgbWVtb3J5IG5lZWRlZC4gIFdlIHNldCBhc2lkZSBhIHNtYWxsIGFtb3Vu dCBvZgorICogbWVtb3J5IGZvciBhbGxvY2F0aW9ucyB0aGF0IGhhcHBlbiBsYXRlciwgZm9yIHRo ZSBiZW5lZml0IG9mIG5vbi1wcmVsb2FkZWQKKyAqIGV4dGVuc2lvbnMsIGJ1dCB0aGF0IHNob3Vs ZCBub3QgYmUgcmVsaWVkIHVwb24uCisgKgorICogVGhpcyBkb2VzIG5vdCB5ZXQgYWxsb2NhdGUg dGhlIG1lbW9yeSwgYnV0IG1lcmVseSByZWdpc3RlciB0aGUgbmVlZCBmb3IgaXQuCisgKiBUaGUg YWN0dWFsIGFsbG9jYXRpb24gaGFwcGVucyBsYXRlciBpbiB0aGUgcG9zdG1hc3RlciBzdGFydHVw IHNlcXVlbmNlLgorICoKKyAqIFRoaXMgbXVzdCBiZSBjYWxsZWQgZnJvbSBhIHNobWVtX3JlcXVl c3QgY2FsbGJhY2sgZnVuY3Rpb24sIHJlZ2lzdGVyZWQgd2l0aAorICogUmVnaXN0ZXJTaG1lbUNh bGxiYWNrcygpLiAgVGhpcyBlbmZvcmNlcyBhIGNvZGluZyBwYXR0ZXJuIHRoYXQgd29ya3MgdGhl CisgKiBzYW1lIGluIG5vcm1hbCBVbml4IHN5c3RlbXMgYW5kIHdpdGggRVhFQ19CQUNLRU5ELiAg T24gVW5peCBzeXN0ZW1zLCB0aGUKKyAqIHNobWVtX3JlcXVlc3QgY2FsbGJhY2tzIGFyZSBjYWxs ZWQgb25jZSwgZWFybHkgaW4gcG9zdG1hc3RlciBzdGFydHVwLCBhbmQKKyAqIHRoZSBjaGlsZCBw cm9jZXNzZXMgaW5oZXJpdCB0aGUgc3RydWN0IGRlc2NyaXB0b3JzIGFuZCBhbnkgb3RoZXIKKyAq IHBlci1wcm9jZXNzIHN0YXRlIGZyb20gdGhlIHBvc3RtYXN0ZXIuICBJbiBFWEVDX0JBQ0tFTkQg bW9kZSwgc2htZW1fcmVxdWVzdAorICogY2FsbGJhY2tzIGFyZSAqYWxzbyogY2FsbGVkIGluIGVh Y2ggYmFja2VuZCwgYXQgYmFja2VuZCBzdGFydHVwLCB0bworICogcmUtZXN0YWJsaXNoIHRoZSBz dHJ1Y3QgZGVzY3JpcHRvcnMuICBCeSBjYWxsaW5nIHRoZSBzYW1lIGZ1bmN0aW9uIGluIGJvdGgK KyAqIGNhc2VzLCB3ZSBlbnN1cmUgdGhhdCBhbGwgdGhlIHNobWVtIGFyZWFzIGFyZSByZWdpc3Rl cmVkIHRoZSBzYW1lIHdheSBpbgorICogYWxsIHByb2Nlc3Nlcy4KKyAqCisgKiAnZGVzYycgaXMg YSBiYWNrZW5kLXByaXZhdGUgaGFuZGxlIGZvciB0aGUgc2hhcmVkIG1lbW9yeSBhcmVhLgorICoK KyAqICdvcHRpb25zJyBkZWZpbmVzIHRoZSBuYW1lIGFuZCBzaXplIG9mIHRoZSBhcmVhLCBhbmQg YW55IG90aGVyIG9wdGlvbmFsCisgKiBmZWF0dXJlcy4gIExlYXZlIHVudXNlZCBvcHRpb25zIGFz IHplcm9zLiAgVGhlIG9wdGlvbnMgYXJlIGNvcGllZCB0bworICogbG9uZ2VyLWxpdmVkIG1lbW9y eSwgc28gaXQgZG9lc24ndCBuZWVkIHRvIGxpdmUgYWZ0ZXIgdGhlCisgKiBTaG1lbVJlcXVlc3RT dHJ1Y3QoKSBjYWxsIGFuZCBjYW4gcG9pbnQgdG8gYSBsb2NhbCB2YXJpYWJsZSBpbiB0aGUgY2Fs bGluZworICogZnVuY3Rpb24uICBUaGUgJ25hbWUnIG11c3QgcG9pbnQgdG8gYSBsb25nLWxpdmVk IHN0cmluZyB0aG91Z2gsIG9ubHkgdGhlCisgKiBwb2ludGVyIHRvIGl0IGlzIGNvcGllZC4KKyAq Lwordm9pZAorU2htZW1SZXF1ZXN0U3RydWN0V2l0aE9wdHMoY29uc3QgU2htZW1TdHJ1Y3RPcHRz ICpvcHRpb25zKQoreworCVNobWVtU3RydWN0T3B0cyAqb3B0aW9uc19jb3B5OworCisJb3B0aW9u c19jb3B5ID0gTWVtb3J5Q29udGV4dEFsbG9jKFRvcE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkg IHNpemVvZihTaG1lbVN0cnVjdE9wdHMpKTsKKwltZW1jcHkob3B0aW9uc19jb3B5LCBvcHRpb25z LCBzaXplb2YoU2htZW1TdHJ1Y3RPcHRzKSk7CisKKwlTaG1lbVJlcXVlc3RJbnRlcm5hbChvcHRp b25zX2NvcHksIFNITUVNX0tJTkRfU1RSVUNUKTsKK30KKworLyoKKyAqIEludGVybmFsIHdvcmto b3JzZSBvZiBTaG1lbVJlcXVlc3RTdHJ1Y3QoKSBhbmQgU2htZW1SZXF1ZXN0SGFzaCgpLgorICoK KyAqIE5vdGU6ICdkZXNjJyBhbmQgJ29wdGlvbnMnIG11c3QgbGl2ZSB1bnRpbCB0aGUgaW5pdC9h dHRhY2ggY2FsbGJhY2tzIGhhdmUKKyAqIGJlZW4gY2FsbGVkLiAgVW5saWtlIGluIHRoZSBwdWJs aWMgU2htZW1SZXF1ZXN0U3RydWN0KCkgYW5kCisgKiBTaG1lbVJlcXVlc3RIYXNoKCkgZnVuY3Rp b25zLCAnb3B0aW9ucycgaXMgKm5vdCogY29waWVkLiAgVGhpcyBhbGxvd3MKKyAqIFNobWVtUmVx dWVzdEhhc2goKSB0byBwYXNzIGEgcG9pbnRlciB0byB0aGUgZXh0ZW5kZWQgU2htZW1SZXF1ZXN0 SGFzaE9wdHMKKyAqIHN0cnVjdCBpbnN0ZWFkLgorICovCit2b2lkCitTaG1lbVJlcXVlc3RJbnRl cm5hbChTaG1lbVN0cnVjdE9wdHMgKm9wdGlvbnMsIFNobWVtUmVxdWVzdEtpbmQga2luZCkKK3sK KwlTaG1lbVJlcXVlc3QgKnJlcXVlc3Q7CisKKwlpZiAob3B0aW9ucy0+bmFtZSA9PSBOVUxMKQor CQllbG9nKEVSUk9SLCAic2hhcmVkIG1lbW9yeSByZXF1ZXN0IGlzIG1pc3NpbmcgJ25hbWUnIG9w dGlvbiIpOworCisJaWYgKElzVW5kZXJQb3N0bWFzdGVyKQorCXsKKwkJaWYgKG9wdGlvbnMtPnNp emUgPD0gMCAmJiBvcHRpb25zLT5zaXplICE9IFNITUVNX0FUVEFDSF9VTktOT1dOX1NJWkUpCisJ CQllbG9nKEVSUk9SLCAiaW52YWxpZCBzaXplICV6ZCBmb3Igc2hhcmVkIG1lbW9yeSByZXF1ZXN0 IGZvciBcIiVzXCIiLAorCQkJCSBvcHRpb25zLT5zaXplLCBvcHRpb25zLT5uYW1lKTsKKwl9CisJ ZWxzZQorCXsKKwkJaWYgKG9wdGlvbnMtPnNpemUgPT0gU0hNRU1fQVRUQUNIX1VOS05PV05fU0la RSkKKwkJCWVsb2coRVJST1IsICJTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFIGNhbm5vdCBiZSB1 c2VkIGR1cmluZyBzdGFydHVwIik7CisJCWlmIChvcHRpb25zLT5zaXplIDw9IDApCisJCQllbG9n KEVSUk9SLCAiaW52YWxpZCBzaXplICV6ZCBmb3Igc2hhcmVkIG1lbW9yeSByZXF1ZXN0IGZvciBc IiVzXCIiLAorCQkJCSBvcHRpb25zLT5zaXplLCBvcHRpb25zLT5uYW1lKTsKKwl9CisKKwlpZiAo c2htZW1fcmVxdWVzdF9zdGF0ZSAhPSBTUlNfUkVRVUVTVElORykKKwkJZWxvZyhFUlJPUiwgIlNo bWVtUmVxdWVzdFN0cnVjdCBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSBhIHNobWVtX3JlcXVlc3Qg Y2FsbGJhY2siKTsKKworCS8qIENoZWNrIHRoYXQgaXQncyBub3QgYWxyZWFkeSByZWdpc3RlcmVk IGluIHRoaXMgcHJvY2VzcyAqLworCWZvcmVhY2hfcHRyKFNobWVtUmVxdWVzdCwgZXhpc3Rpbmcs IHBlbmRpbmdfc2htZW1fcmVxdWVzdHMpCisJeworCQlpZiAoc3RyY21wKGV4aXN0aW5nLT5vcHRp b25zLT5uYW1lLCBvcHRpb25zLT5uYW1lKSA9PSAwKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ KGVycm1zZygic2hhcmVkIG1lbW9yeSBzdHJ1Y3QgXCIlc1wiIGlzIGFscmVhZHkgcmVnaXN0ZXJl ZCIsCisJCQkJCQkJb3B0aW9ucy0+bmFtZSkpKTsKKwl9CisKKwlyZXF1ZXN0ID0gcGFsbG9jKHNp emVvZihTaG1lbVJlcXVlc3QpKTsKKwlyZXF1ZXN0LT5vcHRpb25zID0gb3B0aW9uczsKKwlyZXF1 ZXN0LT5raW5kID0ga2luZDsKKwlwZW5kaW5nX3NobWVtX3JlcXVlc3RzID0gbGFwcGVuZChwZW5k aW5nX3NobWVtX3JlcXVlc3RzLCByZXF1ZXN0KTsKK30KKworLyoKKyAqCVNobWVtR2V0UmVxdWVz dGVkU2l6ZSgpIC0tLSBlc3RpbWF0ZSB0aGUgdG90YWwgc2l6ZSBvZiBhbGwgcmVnaXN0ZXJlZCBz aGFyZWQKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5IHN0cnVjdHVyZXMu CisgKgorICogVGhpcyBpcyBjYWxsZWQgb25jZSBhdCBwb3N0bWFzdGVyIHN0YXJ0dXAsIGJlZm9y ZSB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50CisgKiBoYXMgYmVlbiBjcmVhdGVkLgorICovCitz aXplX3QKK1NobWVtR2V0UmVxdWVzdGVkU2l6ZSh2b2lkKQoreworCXNpemVfdAkJc2l6ZTsKKwor CS8qIG1lbW9yeSBuZWVkZWQgZm9yIHRoZSBTaG1lbUluZGV4ICovCisJc2l6ZSA9IGhhc2hfZXN0 aW1hdGVfc2l6ZShsaXN0X2xlbmd0aChwZW5kaW5nX3NobWVtX3JlcXVlc3RzKSArIFNITUVNX0lO REVYX0FERElUSU9OQUxfU0laRSwKKwkJCQkJCQkgIHNpemVvZihTaG1lbUluZGV4RW50KSk7CisJ c2l6ZSA9IENBQ0hFTElORUFMSUdOKHNpemUpOworCisJLyogbWVtb3J5IG5lZWRlZCBmb3IgYWxs IHRoZSByZXF1ZXN0ZWQgYXJlYXMgKi8KKwlmb3JlYWNoX3B0cihTaG1lbVJlcXVlc3QsIHJlcXVl c3QsIHBlbmRpbmdfc2htZW1fcmVxdWVzdHMpCisJeworCQlzaXplID0gYWRkX3NpemUoc2l6ZSwg cmVxdWVzdC0+b3B0aW9ucy0+c2l6ZSk7CisJCS8qIGNhbGN1bGF0ZSBhbGlnbm1lbnQgcGFkZGlu ZyBsaWtlIFNobWVtQWxsb2NSYXcoKSBkb2VzICovCisJCXNpemUgPSBDQUNIRUxJTkVBTElHTihz aXplKTsKKwl9CisKKwlyZXR1cm4gc2l6ZTsKK30KKworLyoKKyAqCVNobWVtSW5pdFJlcXVlc3Rl ZCgpIC0tLSBhbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSByZXF1ZXN0ZWQgc2hhcmVkIG1lbW9yeQor ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlcy4KKyAqCisgKiBUaGlzIGlz IGNhbGxlZCBvbmNlIGF0IHBvc3RtYXN0ZXIgc3RhcnR1cCwgYWZ0ZXIgdGhlIHNoYXJlZCBtZW1v cnkgc2VnbWVudAorICogaGFzIGJlZW4gY3JlYXRlZC4KKyAqLwordm9pZAorU2htZW1Jbml0UmVx dWVzdGVkKHZvaWQpCit7CisJLyogU2hvdWxkIGJlIGNhbGxlZCBvbmx5IGJ5IHRoZSBwb3N0bWFz dGVyIG9yIGEgc3RhbmRhbG9uZSBiYWNrZW5kLiAqLworCUFzc2VydCghSXNVbmRlclBvc3RtYXN0 ZXIpOworCUFzc2VydChzaG1lbV9yZXF1ZXN0X3N0YXRlID09IFNSU19JTklUSUFMSVpJTkcpOwor CisJLyoKKwkgKiBJbml0aWFsaXplIHRoZSBTaG1lbUluZGV4IGVudHJpZXMgYW5kIHBlcmZvcm0g YmFzaWMgaW5pdGlhbGl6YXRpb24gb2YKKwkgKiBhbGwgdGhlIHJlcXVlc3RlZCBtZW1vcnkgYXJl YXMuICBUaGVyZSBhcmUgbm8gY29uY3VycmVudCBwcm9jZXNzZXMgeWV0LAorCSAqIHNvIG5vIG5l ZWQgZm9yIGxvY2tpbmcuCisJICovCisJZm9yZWFjaF9wdHIoU2htZW1SZXF1ZXN0LCByZXF1ZXN0 LCBwZW5kaW5nX3NobWVtX3JlcXVlc3RzKQorCXsKKwkJSW5pdFNobWVtSW5kZXhFbnRyeShyZXF1 ZXN0KTsKKwl9CisJbGlzdF9mcmVlX2RlZXAocGVuZGluZ19zaG1lbV9yZXF1ZXN0cyk7CisJcGVu ZGluZ19zaG1lbV9yZXF1ZXN0cyA9IE5JTDsKKworCS8qCisJICogQ2FsbCB0aGUgc3Vic3lzdGVt LXNwZWNpZmljIGluaXQgY2FsbGJhY2tzIHRvIGZpbmlzaCBpbml0aWFsaXphdGlvbiBvZgorCSAq IGFsbCB0aGUgYXJlYXMuCisJICovCisJZm9yZWFjaF9wdHIoY29uc3QgU2htZW1DYWxsYmFja3Ms IGNhbGxiYWNrcywgcmVnaXN0ZXJlZF9zaG1lbV9jYWxsYmFja3MpCisJeworCQlpZiAoY2FsbGJh Y2tzLT5pbml0X2ZuKQorCQkJY2FsbGJhY2tzLT5pbml0X2ZuKGNhbGxiYWNrcy0+aW5pdF9mbl9h cmcpOworCX0KKworCXNobWVtX3JlcXVlc3Rfc3RhdGUgPSBTUlNfRE9ORTsKK30KKworLyoKKyAq IFJlLWVzdGFibGlzaCBwcm9jZXNzIHByaXZhdGUgc3RhdGUgcmVsYXRlZCB0byBzaG1lbSBhcmVh cy4KKyAqCisgKiBUaGlzIGlzIGNhbGxlZCBhdCBiYWNrZW5kIHN0YXJ0dXAgaW4gRVhFQ19CQUNL RU5EIG1vZGUsIGluIGV2ZXJ5IGJhY2tlbmQuCisgKi8KKyNpZmRlZiBFWEVDX0JBQ0tFTkQKK3Zv aWQKK1NobWVtQXR0YWNoUmVxdWVzdGVkKHZvaWQpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwkv KiBNdXN0IGJlIGluaXRpYWxpemluZyBhIChub24tc3RhbmRhbG9uZSkgYmFja2VuZCAqLworCUFz c2VydChJc1VuZGVyUG9zdG1hc3Rlcik7CisJQXNzZXJ0KFNobWVtQWxsb2NhdG9yLT5pbmRleCAh PSBOVUxMKTsKKwlBc3NlcnQoc2htZW1fcmVxdWVzdF9zdGF0ZSA9PSBTUlNfUkVRVUVTVElORyk7 CisJc2htZW1fcmVxdWVzdF9zdGF0ZSA9IFNSU19BVFRBQ0hJTkc7CisKKwlMV0xvY2tBY3F1aXJl KFNobWVtSW5kZXhMb2NrLCBMV19TSEFSRUQpOworCisJLyoKKwkgKiBBdHRhY2ggdG8gYWxsIHRo ZSByZXF1ZXN0ZWQgbWVtb3J5IGFyZWFzLgorCSAqLworCWZvcmVhY2hfcHRyKFNobWVtUmVxdWVz dCwgcmVxdWVzdCwgcGVuZGluZ19zaG1lbV9yZXF1ZXN0cykKKwl7CisJCUF0dGFjaFNobWVtSW5k ZXhFbnRyeShyZXF1ZXN0LCBmYWxzZSk7CisJfQorCWxpc3RfZnJlZV9kZWVwKHBlbmRpbmdfc2ht ZW1fcmVxdWVzdHMpOworCXBlbmRpbmdfc2htZW1fcmVxdWVzdHMgPSBOSUw7CisKKwkvKiBDYWxs IGF0dGFjaCBjYWxsYmFja3MgKi8KKwlmb3JlYWNoKGxjLCByZWdpc3RlcmVkX3NobWVtX2NhbGxi YWNrcykKKwl7CisJCWNvbnN0IFNobWVtQ2FsbGJhY2tzICpjYWxsYmFja3MgPSAoY29uc3QgU2ht ZW1DYWxsYmFja3MgKikgbGZpcnN0KGxjKTsKKworCQlpZiAoY2FsbGJhY2tzLT5hdHRhY2hfZm4p CisJCQljYWxsYmFja3MtPmF0dGFjaF9mbihjYWxsYmFja3MtPmF0dGFjaF9mbl9hcmcpOworCX0K KworCUxXTG9ja1JlbGVhc2UoU2htZW1JbmRleExvY2spOworCisJc2htZW1fcmVxdWVzdF9zdGF0 ZSA9IFNSU19ET05FOworfQorI2VuZGlmCisKKy8qCisgKiBJbnNlcnQgcmVxdWVzdGVkIHNobWVt IGFyZWEgaW50byB0aGUgc2hhcmVkIG1lbW9yeSBpbmRleCBhbmQgaW5pdGlhbGl6ZSBpdC4KKyAq CisgKiBOb3RlIHRoYXQgdGhpcyBvbmx5IGRvZXMgcGVyZm9ybXMgYmFzaWMgaW5pdGlhbGl6YXRp b24gZGVwZW5kaW5nIG9uCisgKiBTaG1lbVJlcXVlc3RLaW5kLCBsaWtlIHNldHRpbmcgdGhlIGds b2JhbCBwb2ludGVyIHZhcmlhYmxlIHRvIHRoZSBhcmVhIGZvcgorICogU0hNRU1fS0lORF9TVFJV Q1Qgb3Igc2V0dGluZyB1cCB0aGUgYmFja2VuZC1wcml2YXRlIEhUQUIgY29udHJvbCBzdHJ1Y3Qu CisgKiBUaGlzIGRvZXMgKm5vdCogY2FsbCB0aGUgc3Vic3lzdGVtLXNwZWNpZmljIGluaXQgY2Fs bGJhY2tzLiAgVGhhdCdzIGRvbmUKKyAqIGxhdGVyIGFmdGVyIGFsbCB0aGUgc2htZW0gYXJlYXMg aGF2ZSBiZWVuIGluaXRpYWxpemVkIG9yIGF0dGFjaGVkIHRvLgogICovCi10eXBlZGVmIHN0cnVj dCBzaG1lbV9oYXNoX2FsbG9jYXRvcgorc3RhdGljIHZvaWQKK0luaXRTaG1lbUluZGV4RW50cnko U2htZW1SZXF1ZXN0ICpyZXF1ZXN0KQogewotCWNoYXIJICAgKm5leHQ7CQkJLyogc3RhcnQgb2Yg ZnJlZSBzcGFjZSBpbiB0aGUgYXJlYSAqLwotCWNoYXIJICAgKmVuZDsJCQkvKiBlbmQgb2YgdGhl IHNobWVtIGFyZWEgKi8KLX0gc2htZW1faGFzaF9hbGxvY2F0b3I7CisJY29uc3QgY2hhciAqbmFt ZSA9IHJlcXVlc3QtPm9wdGlvbnMtPm5hbWU7CisJU2htZW1JbmRleEVudCAqaW5kZXhfZW50cnk7 CisJYm9vbAkJZm91bmQ7CisJc2l6ZV90CQlhbGxvY2F0ZWRfc2l6ZTsKKwl2b2lkCSAgICpzdHJ1 Y3RQdHI7CisKKwkvKiBsb29rIGl0IHVwIGluIHRoZSBzaG1lbSBpbmRleCAqLworCWluZGV4X2Vu dHJ5ID0gKFNobWVtSW5kZXhFbnQgKikKKwkJaGFzaF9zZWFyY2goU2htZW1JbmRleCwgbmFtZSwg SEFTSF9FTlRFUl9OVUxMLCAmZm91bmQpOworCWlmIChmb3VuZCkKKwkJZWxvZyhFUlJPUiwgInNo YXJlZCBtZW1vcnkgc3RydWN0IFwiJXNcIiBpcyBhbHJlYWR5IGluaXRpYWxpemVkIiwgbmFtZSk7 CisJaWYgKCFpbmRleF9lbnRyeSkKKwl7CisJCS8qIHRyaWVkIHRvIGFkZCBpdCB0byB0aGUgaGFz aCB0YWJsZSwgYnV0IHRoZXJlIHdhcyBubyBzcGFjZSAqLworCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfT1VUX09GX01FTU9SWSksCisJCQkJIGVycm1zZygiY291bGQgbm90 IGNyZWF0ZSBTaG1lbUluZGV4IGVudHJ5IGZvciBkYXRhIHN0cnVjdHVyZSBcIiVzXCIiLAorCQkJ CQkJbmFtZSkpKTsKKwl9CisKKwkvKgorCSAqIFdlIGluc2VydGVkIHRoZSBlbnRyeSB0byB0aGUg c2hhcmVkIG1lbW9yeSBpbmRleC4gIEFsbG9jYXRlIHJlcXVlc3RlZAorCSAqIGFtb3VudCBvZiBz aGFyZWQgbWVtb3J5IGZvciBpdCwgYW5kIGluaXRpYWxpemUgdGhlIGluZGV4IGVudHJ5LgorCSAq LworCXN0cnVjdFB0ciA9IFNobWVtQWxsb2NSYXcocmVxdWVzdC0+b3B0aW9ucy0+c2l6ZSwgJmFs bG9jYXRlZF9zaXplKTsKKwlpZiAoc3RydWN0UHRyID09IE5VTEwpCisJeworCQkvKiBvdXQgb2Yg bWVtb3J5OyByZW1vdmUgdGhlIGZhaWxlZCBTaG1lbUluZGV4IGVudHJ5ICovCisJCWhhc2hfc2Vh cmNoKFNobWVtSW5kZXgsIG5hbWUsIEhBU0hfUkVNT1ZFLCBOVUxMKTsKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09VVF9PRl9NRU1PUlkpLAorCQkJCSBlcnJtc2coIm5v dCBlbm91Z2ggc2hhcmVkIG1lbW9yeSBmb3IgZGF0YSBzdHJ1Y3R1cmUiCisJCQkJCQkiIFwiJXNc IiAoJXp1IGJ5dGVzIHJlcXVlc3RlZCkiLAorCQkJCQkJbmFtZSwgcmVxdWVzdC0+b3B0aW9ucy0+ c2l6ZSkpKTsKKwl9CisJaW5kZXhfZW50cnktPnNpemUgPSByZXF1ZXN0LT5vcHRpb25zLT5zaXpl OworCWluZGV4X2VudHJ5LT5hbGxvY2F0ZWRfc2l6ZSA9IGFsbG9jYXRlZF9zaXplOworCWluZGV4 X2VudHJ5LT5sb2NhdGlvbiA9IHN0cnVjdFB0cjsKKworCS8qIEluaXRpYWxpemUgZGVwZW5kaW5n IG9uIHRoZSBraW5kIG9mIHNobWVtIGFyZWEgaXQgaXMgKi8KKwlzd2l0Y2ggKHJlcXVlc3QtPmtp bmQpCisJeworCQljYXNlIFNITUVNX0tJTkRfU1RSVUNUOgorCQkJaWYgKHJlcXVlc3QtPm9wdGlv bnMtPnB0cikKKwkJCQkqKHJlcXVlc3QtPm9wdGlvbnMtPnB0cikgPSBpbmRleF9lbnRyeS0+bG9j YXRpb247CisJCQlicmVhazsKKwkJY2FzZSBTSE1FTV9LSU5EX0hBU0g6CisJCQlzaG1lbV9oYXNo X2luaXQoc3RydWN0UHRyLCByZXF1ZXN0LT5vcHRpb25zKTsKKwkJCWJyZWFrOworCX0KK30KKwor LyoKKyAqIExvb2sgdXAgYSBuYW1lZCBzaG1lbSBhcmVhIGluIHRoZSBzaGFyZWQgbWVtb3J5IGlu ZGV4IGFuZCBhdHRhY2ggdG8gaXQuCisgKgorICogTm90ZSB0aGF0IHRoaXMgb25seSBwZXJmb3Jt cyB0aGUgYmFzaWMgYXR0YWNobWVudCBhY3Rpb25zIGRlcGVuZGluZyBvbgorICogU2htZW1SZXF1 ZXN0S2luZCwgbGlrZSBzZXR0aW5nIHRoZSBnbG9iYWwgcG9pbnRlciB2YXJpYWJsZSB0byB0aGUg YXJlYSBmb3IKKyAqIFNITUVNX0tJTkRfU1RSVUNUIG9yIHNldHRpbmcgdXAgdGhlIGJhY2tlbmQt cHJpdmF0ZSBIVEFCIGNvbnRyb2wgc3RydWN0LgorICogVGhpcyBkb2VzICpub3QqIGNhbGwgdGhl IHN1YnN5c3RlbS1zcGVjaWZpYyBhdHRhY2ggY2FsbGJhY2tzLiAgVGhhdCdzIGRvbmUKKyAqIGxh dGVyIGFmdGVyIGFsbCB0aGUgc2htZW0gYXJlYXMgaGF2ZSBiZWVuIGluaXRpYWxpemVkIG9yIGF0 dGFjaGVkIHRvLgorICovCitzdGF0aWMgYm9vbAorQXR0YWNoU2htZW1JbmRleEVudHJ5KFNobWVt UmVxdWVzdCAqcmVxdWVzdCwgYm9vbCBtaXNzaW5nX29rKQoreworCWNvbnN0IGNoYXIgKm5hbWUg PSByZXF1ZXN0LT5vcHRpb25zLT5uYW1lOworCVNobWVtSW5kZXhFbnQgKmluZGV4X2VudHJ5Owor CisJLyogbG9vayBpdCB1cCBpbiB0aGUgc2htZW0gaW5kZXggKi8KKwlpbmRleF9lbnRyeSA9IChT aG1lbUluZGV4RW50ICopCisJCWhhc2hfc2VhcmNoKFNobWVtSW5kZXgsIG5hbWUsIEhBU0hfRklO RCwgTlVMTCk7CisJaWYgKCFpbmRleF9lbnRyeSkKKwl7CisJCWlmICghbWlzc2luZ19vaykKKwkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJtc2coImNvdWxkIG5vdCBmaW5kIFNobWVtSW5kZXgg ZW50cnkgZm9yIGRhdGEgc3RydWN0dXJlIFwiJXNcIiIsCisJCQkJCQkJcmVxdWVzdC0+b3B0aW9u cy0+bmFtZSkpKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qIENoZWNrIHRoYXQgdGhlIHNp emUgaW4gdGhlIGluZGV4IG1hdGNoZXMgdGhlIHJlcXVlc3QuICovCisJaWYgKGluZGV4X2VudHJ5 LT5zaXplICE9IHJlcXVlc3QtPm9wdGlvbnMtPnNpemUgJiYKKwkJcmVxdWVzdC0+b3B0aW9ucy0+ c2l6ZSAhPSBTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFKQorCXsKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJybXNnKCJzaGFyZWQgbWVtb3J5IHN0cnVjdCBcIiVzXCIgd2FzIGNyZWF0ZWQgd2l0 aCIgXAorCQkJCQkJIiBkaWZmZXJlbnQgc2l6ZTogZXhpc3RpbmcgJXp1LCByZXF1ZXN0ZWQgJXp1 IiwKKwkJCQkJCW5hbWUsIGluZGV4X2VudHJ5LT5zaXplLCByZXF1ZXN0LT5vcHRpb25zLT5zaXpl KSkpOworCX0KKworCS8qCisJICogUmUtZXN0YWJsaXNoIHRoZSBjYWxsZXIncyBwb2ludGVyIHZh cmlhYmxlLCBvciBkbyBvdGhlciBhY3Rpb25zIHRvCisJICogYXR0YWNoIGRlcGVuZGluZyBvbiB0 aGUga2luZCBvZiBzaG1lbSBhcmVhIGl0IGlzLgorCSAqLworCXN3aXRjaCAocmVxdWVzdC0+a2lu ZCkKKwl7CisJCWNhc2UgU0hNRU1fS0lORF9TVFJVQ1Q6CisJCQlpZiAocmVxdWVzdC0+b3B0aW9u cy0+cHRyKQorCQkJCSoocmVxdWVzdC0+b3B0aW9ucy0+cHRyKSA9IGluZGV4X2VudHJ5LT5sb2Nh dGlvbjsKKwkJCWJyZWFrOworCQljYXNlIFNITUVNX0tJTkRfSEFTSDoKKwkJCXNobWVtX2hhc2hf YXR0YWNoKGluZGV4X2VudHJ5LT5sb2NhdGlvbiwgcmVxdWVzdC0+b3B0aW9ucyk7CisJCQlicmVh azsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KIAogLyoKICAqCUluaXRTaG1lbUFsbG9jYXRvcigp IC0tLSBzZXQgdXAgYmFzaWMgcG9pbnRlcnMgdG8gc2hhcmVkIG1lbW9yeS4KICAqCiAgKiBDYWxs ZWQgYXQgcG9zdG1hc3RlciBvciBzdGFuZC1hbG9uZSBiYWNrZW5kIHN0YXJ0dXAsIHRvIGluaXRp YWxpemUgdGhlCiAgKiBhbGxvY2F0b3IncyBkYXRhIHN0cnVjdHVyZSBpbiB0aGUgc2hhcmVkIG1l bW9yeSBzZWdtZW50LiAgSW4gRVhFQ19CQUNLRU5ELAotICogdGhpcyBpcyBhbHNvIGNhbGxlZCBh dCBiYWNrZW5kIHN0YXJ0dXAsIHRvIHNldCB1cCBwb2ludGVycyB0byB0aGUgc2hhcmVkCi0gKiBt ZW1vcnkgYXJlYXMuCisgKiB0aGlzIGlzIGFsc28gY2FsbGVkIGF0IGJhY2tlbmQgc3RhcnR1cCwg dG8gc2V0IHVwIHBvaW50ZXJzIHRvIHRoZQorICogYWxyZWFkeS1pbml0aWFsaXplZCBkYXRhIHN0 cnVjdHVyZS4KICAqLwogdm9pZAogSW5pdFNobWVtQWxsb2NhdG9yKFBHU2htZW1IZWFkZXIgKnNl Z2hkcikKIHsKIAlTaXplCQlvZmZzZXQ7CisJaW50NjQJCWhhc2hfbmVsZW1zOwogCUhBU0hDVEwJ CWluZm87CiAJaW50CQkJaGFzaF9mbGFnczsKIApAQCAtMTQyLDYgKzYyOCwxNiBAQCBJbml0U2ht ZW1BbGxvY2F0b3IoUEdTaG1lbUhlYWRlciAqc2VnaGRyKQogI2VuZGlmCiAJQXNzZXJ0KHNlZ2hk ciAhPSBOVUxMKTsKIAorCWlmIChJc1VuZGVyUG9zdG1hc3RlcikKKwl7CisJCUFzc2VydChzaG1l bV9yZXF1ZXN0X3N0YXRlID09IFNSU19JTklUSUFMKTsKKwl9CisJZWxzZQorCXsKKwkJQXNzZXJ0 KHNobWVtX3JlcXVlc3Rfc3RhdGUgPT0gU1JTX1JFUVVFU1RJTkcpOworCQlzaG1lbV9yZXF1ZXN0 X3N0YXRlID0gU1JTX0lOSVRJQUxJWklORzsKKwl9CisKIAkvKgogCSAqIFdlIGFzc3VtZSB0aGUg cG9pbnRlciBhbmQgb2Zmc2V0IGFyZSBNQVhBTElHTi4gIE5vdCBhIGhhcmQgcmVxdWlyZW1lbnQs CiAJICogYnV0IGl0J3MgdHJ1ZSB0b2RheSBhbmQga2VlcHMgdGhlIG1hdGggYmVsb3cgc2ltcGxl ci4KQEAgLTE4NiwxOSArNjgyLDIxIEBAIEluaXRTaG1lbUFsbG9jYXRvcihQR1NobWVtSGVhZGVy ICpzZWdoZHIpCiAJICogdXNlIFNobWVtSW5pdEhhc2goKSBoZXJlIGJlY2F1c2UgaXQgcmVsaWVz IG9uIFNobWVtSW5kZXggYmVpbmcgYWxyZWFkeQogCSAqIGluaXRpYWxpemVkLgogCSAqLworCWhh c2hfbmVsZW1zID0gbGlzdF9sZW5ndGgocGVuZGluZ19zaG1lbV9yZXF1ZXN0cykgKyBTSE1FTV9J TkRFWF9BRERJVElPTkFMX1NJWkU7CisKIAlpbmZvLmtleXNpemUgPSBTSE1FTV9JTkRFWF9LRVlT SVpFOwogCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKFNobWVtSW5kZXhFbnQpOwogCWhhc2hfZmxh Z3MgPSBIQVNIX0VMRU0gfCBIQVNIX1NUUklOR1MgfCBIQVNIX0ZJWEVEX1NJWkU7CiAKIAlpZiAo IUlzVW5kZXJQb3N0bWFzdGVyKQogCXsKLQkJU2htZW1BbGxvY2F0b3ItPmluZGV4X3NpemUgPSBo YXNoX2VzdGltYXRlX3NpemUoU0hNRU1fSU5ERVhfU0laRSwgaW5mby5lbnRyeXNpemUpOworCQlT aG1lbUFsbG9jYXRvci0+aW5kZXhfc2l6ZSA9IGhhc2hfZXN0aW1hdGVfc2l6ZShoYXNoX25lbGVt cywgaW5mby5lbnRyeXNpemUpOwogCQlTaG1lbUFsbG9jYXRvci0+aW5kZXggPSAoSEFTSEhEUiAq KSBTaG1lbUFsbG9jKFNobWVtQWxsb2NhdG9yLT5pbmRleF9zaXplKTsKIAl9CiAJU2htZW1JbmRl eCA9IHNobWVtX2hhc2hfY3JlYXRlKFNobWVtQWxsb2NhdG9yLT5pbmRleCwKIAkJCQkJCQkJICAg U2htZW1BbGxvY2F0b3ItPmluZGV4X3NpemUsCiAJCQkJCQkJCSAgIElzVW5kZXJQb3N0bWFzdGVy LAotCQkJCQkJCQkgICAiU2htZW1JbmRleCIsIFNITUVNX0lOREVYX1NJWkUsCisJCQkJCQkJCSAg ICJTaG1lbUluZGV4IiwgaGFzaF9uZWxlbXMsCiAJCQkJCQkJCSAgICZpbmZvLCBoYXNoX2ZsYWdz KTsKIAlBc3NlcnQoU2htZW1JbmRleCAhPSBOVUxMKTsKIApAQCAtMjE5LDYgKzcxNywyMyBAQCBJ bml0U2htZW1BbGxvY2F0b3IoUEdTaG1lbUhlYWRlciAqc2VnaGRyKQogCX0KIH0KIAorLyoKKyAq IFJlc2V0IHN0YXRlIG9uIHBvc3RtYXN0ZXIgY3Jhc2ggcmVzdGFydC4KKyAqLwordm9pZAorUmVz ZXRTaG1lbUFsbG9jYXRvcih2b2lkKQoreworCUFzc2VydCghSXNVbmRlclBvc3RtYXN0ZXIpOwor CXNobWVtX3JlcXVlc3Rfc3RhdGUgPSBTUlNfSU5JVElBTDsKKworCXBlbmRpbmdfc2htZW1fcmVx dWVzdHMgPSBOSUw7CisKKwkvKgorCSAqIE5vdGUgdGhhdCB3ZSBkb24ndCBjbGVhciB0aGUgcmVn aXN0ZXJlZCBjYWxsYmFja3MuICBXZSB3aWxsIG5lZWQgdG8KKwkgKiBjYWxsIHRoZW0gYWdhaW4g YXMgd2UgcmVzdGFydAorCSAqLworfQorCiAvKgogICogU2htZW1BbGxvYyAtLSBhbGxvY2F0ZSBt YXgtYWxpZ25lZCBjaHVuayBmcm9tIHNoYXJlZCBtZW1vcnkKICAqCkBAIC0zMTYsOTIgKzgzMSwx OTEgQEAgU2htZW1BZGRySXNWYWxpZChjb25zdCB2b2lkICphZGRyKQogfQogCiAvKgotICogU2ht ZW1Jbml0U3RydWN0IC0tIENyZWF0ZS9hdHRhY2ggdG8gYSBzdHJ1Y3R1cmUgaW4gc2hhcmVkIG1l bW9yeS4KKyAqIFJlZ2lzdGVyIGNhbGxiYWNrcyB0aGF0IGRlZmluZSBhIHNoYXJlZCBtZW1vcnkg YXJlYSAob3IgbXVsdGlwbGUgYXJlYXMpLgogICoKLSAqCQlUaGlzIGlzIGNhbGxlZCBkdXJpbmcg aW5pdGlhbGl6YXRpb24gdG8gZmluZCBvciBhbGxvY2F0ZQotICoJCWEgZGF0YSBzdHJ1Y3R1cmUg aW4gc2hhcmVkIG1lbW9yeS4gIElmIG5vIG90aGVyIHByb2Nlc3MKLSAqCQloYXMgY3JlYXRlZCB0 aGUgc3RydWN0dXJlLCB0aGlzIHJvdXRpbmUgYWxsb2NhdGVzIHNwYWNlCi0gKgkJZm9yIGl0LiAg SWYgaXQgZXhpc3RzIGFscmVhZHksIGEgcG9pbnRlciB0byB0aGUgZXhpc3RpbmcKLSAqCQlzdHJ1 Y3R1cmUgaXMgcmV0dXJuZWQuCisgKiBUaGUgc3lzdGVtIHdpbGwgY2FsbCB0aGUgY2FsbGJhY2tz IGF0IGRpZmZlcmVudCBzdGFnZXMgb2YgcG9zdG1hc3RlciBvcgorICogYmFja2VuZCBzdGFydHVw LCB0byBhbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgYXJlYS4KICAqCi0gKglSZXR1cm5zOiBw b2ludGVyIHRvIHRoZSBvYmplY3QuICAqZm91bmRQdHIgaXMgc2V0IHRydWUgaWYgdGhlIG9iamVj dCB3YXMKLSAqCQlhbHJlYWR5IGluIHRoZSBzaG1lbSBpbmRleCAoaGVuY2UsIGFscmVhZHkgaW5p dGlhbGl6ZWQpLgorICogVGhpcyBpcyBub3JtYWxseSBjYWxsZWQgZWFybHkgZHVyaW5nIHBvc3Rt YXN0ZXIgc3RhcnR1cCwgYnV0IGlmIHRoZQorICogU0hNRU1fQ0FMTEJBQ0tTX0FMTE9XX0FGVEVS X1NUQVJUVVAgaXMgc2V0LCB0aGlzIGNhbiBhbHNvIGJlIHVzZWQgYWZ0ZXIKKyAqIHN0YXJ0dXAs IGFsdGhvdWdoIGFmdGVyIHN0YXJ0dXAgdGhlcmUncyBubyBndWFyYW50ZWUgdGhhdCB0aGVyZSdz IGVub3VnaAorICogc2hhcmVkIG1lbW9yeSBhdmFpbGFibGUuICBXaGVuIGNhbGxlZCBhZnRlciBz dGFydHVwLCB0aGlzIGltbWVkaWF0ZWx5IGNhbGxzCisgKiB0aGUgcmlnaHQgY2FsbGJhY2tzIGRl cGVuZGluZyBvbiB3aGV0aGVyIGFub3RoZXIgYmFja2VuZCBoYWQgYWxyZWFkeQorICogaW5pdGlh bGl6ZWQgdGhlIGFyZWEuCiAgKgotICoJTm90ZTogYmVmb3JlIFBvc3RncmVzIDkuMCwgdGhpcyBm dW5jdGlvbiByZXR1cm5lZCBOVUxMIGZvciBzb21lIGZhaWx1cmUKLSAqCWNhc2VzLiAgTm93LCBp dCBhbHdheXMgdGhyb3dzIGVycm9yIGluc3RlYWQsIHNvIGNhbGxlcnMgbmVlZCBub3QgY2hlY2sK LSAqCWZvciBOVUxMLgorICogTm90ZTogSW4gRVhFQ19CQUNLRU5EIG1vZGUsIHRoaXMgbmVlZHMg dG8gYmUgY2FsbGVkIGluIGV2ZXJ5IGJhY2tlbmQKKyAqIHByb2Nlc3MuICBUaGF0J3MgbmVlZGVk IGJlY2F1c2Ugd2UgY2Fubm90IHBhc3MgZG93biB0aGUgY2FsbGJhY2sgZnVuY3Rpb24KKyAqIHBv aW50ZXJzIGZyb20gdGhlIHBvc3RtYXN0ZXIgcHJvY2VzcywgYmVjYXVzZSBkaWZmZXJlbnQgcHJv Y2Vzc2VzIG1heSBoYXZlCisgKiBsb2FkZWQgbGlicmFyaWVzIHRvIGRpZmZlcmVudCBhZGRyZXNz ZXMuCiAgKi8KLXZvaWQgKgotU2htZW1Jbml0U3RydWN0KGNvbnN0IGNoYXIgKm5hbWUsIFNpemUg c2l6ZSwgYm9vbCAqZm91bmRQdHIpCit2b2lkCitSZWdpc3RlclNobWVtQ2FsbGJhY2tzKGNvbnN0 IFNobWVtQ2FsbGJhY2tzICpjYWxsYmFja3MpCiB7Ci0JU2htZW1JbmRleEVudCAqcmVzdWx0Owot CXZvaWQJICAgKnN0cnVjdFB0cjsKKwlpZiAoc2htZW1fcmVxdWVzdF9zdGF0ZSA9PSBTUlNfRE9O RSAmJiBJc1VuZGVyUG9zdG1hc3RlcikKKwl7CisJCS8qCisJCSAqIEFmdGVyLXN0YXJ0dXAgaW5p dGlhbGl6YXRpb24gb3IgYXR0YWNobWVudC4gIENhbGwgdGhlIGFwcHJvcHJpYXRlCisJCSAqIGNh bGxiYWNrcyBpbW1tZWRpYXRlbHkuCisJCSAqLworCQlpZiAoKGNhbGxiYWNrcy0+ZmxhZ3MgJiBT SE1FTV9DQUxMQkFDS1NfQUxMT1dfQUZURVJfU1RBUlRVUCkgPT0gMCkKKwkJCWVsb2coRVJST1Is ICJjYW5ub3QgcmVxdWVzdCBzaGFyZWQgbWVtb3J5IGF0IHRoaXMgdGltZSIpOwogCi0JQXNzZXJ0 KFNobWVtSW5kZXggIT0gTlVMTCk7CisJCUNhbGxTaG1lbUNhbGxiYWNrc0FmdGVyU3RhcnR1cChj YWxsYmFja3MpOworCX0KKwllbHNlCisJeworCQkvKiBSZW1lbWJlciB0aGUgY2FsbGJhY2tzIGZv ciBsYXRlciAqLworCQlyZWdpc3RlcmVkX3NobWVtX2NhbGxiYWNrcyA9IGxhcHBlbmQocmVnaXN0 ZXJlZF9zaG1lbV9jYWxsYmFja3MsCisJCQkJCQkJCQkJCSAodm9pZCAqKSBjYWxsYmFja3MpOwor CX0KK30KKworLyoKKyAqIFJlZ2lzdGVyIGEgc2htZW0gYXJlYSAob3IgbXVsdGlwbGUgYXJlYXMp IGFmdGVyIHN0YXJ0dXAuCisgKi8KK3N0YXRpYyB2b2lkCitDYWxsU2htZW1DYWxsYmFja3NBZnRl clN0YXJ0dXAoY29uc3QgU2htZW1DYWxsYmFja3MgKmNhbGxiYWNrcykKK3sKKwlib29sCQlmb3Vu ZF9hbnk7CisJYm9vbAkJbm90Zm91bmRfYW55OworCisJQXNzZXJ0KHNobWVtX3JlcXVlc3Rfc3Rh dGUgPT0gU1JTX0RPTkUpOworCXNobWVtX3JlcXVlc3Rfc3RhdGUgPSBTUlNfUkVRVUVTVElORzsK KworCS8qCisJICogQ2FsbCB0aGUgcmVxdWVzdCBjYWxsYmFjayBmaXJzdC4gVGhlIGNhbGxiYWNr IG1ha2UgU2htZW1SZXF1ZXN0KigpCisJICogY2FsbHMgZm9yIGVhY2ggc2htZW0gYXJlYSwgYWRk aW5nIHRoZW0gdG8gcGVuZGluZ19zaG1lbV9yZXF1ZXN0cy4KKwkgKi8KKwlBc3NlcnQocGVuZGlu Z19zaG1lbV9yZXF1ZXN0cyA9PSBOSUwpOworCWlmIChjYWxsYmFja3MtPnJlcXVlc3RfZm4pCisJ CWNhbGxiYWNrcy0+cmVxdWVzdF9mbihjYWxsYmFja3MtPnJlcXVlc3RfZm5fYXJnKTsKKwlzaG1l bV9yZXF1ZXN0X3N0YXRlID0gU1JTX0FGVEVSX1NUQVJUVVBfQVRUQUNIX09SX0lOSVQ7CisKKwlp ZiAocGVuZGluZ19zaG1lbV9yZXF1ZXN0cyA9PSBOSUwpCisJeworCQlzaG1lbV9yZXF1ZXN0X3N0 YXRlID0gU1JTX0RPTkU7CisJCXJldHVybjsKKwl9CiAKKwkvKiBIb2xkIFNobWVtSW5kZXhMb2Nr IHdoaWxlIHdlIGFsbG9jYXRlIGFsbCB0aGUgc2htZW0gZW50cmllcyAqLwogCUxXTG9ja0FjcXVp cmUoU2htZW1JbmRleExvY2ssIExXX0VYQ0xVU0lWRSk7CiAKLQkvKiBsb29rIGl0IHVwIGluIHRo ZSBzaG1lbSBpbmRleCAqLwotCXJlc3VsdCA9IChTaG1lbUluZGV4RW50ICopCi0JCWhhc2hfc2Vh cmNoKFNobWVtSW5kZXgsIG5hbWUsIEhBU0hfRU5URVJfTlVMTCwgZm91bmRQdHIpOworCS8qCisJ ICogQ2hlY2sgaWYgdGhlIHJlcXVlc3RlZCBzaGFyZWQgbWVtb3J5IGFyZWFzIGhhdmUgYWxyZWFk eSBiZWVuCisJICogaW5pdGlhbGl6ZWQuICBXZSBhc3N1bWUgYWxsIHRoZSBhcmVhcyByZXF1ZXN0 ZWQgYnkgdGhlIHJlcXVlc3QgY2FsbGJhY2sKKwkgKiB0byBmb3JtIGEgY29oZXJlbnQgdW5pdCBz dWNoIHRoYXQgdGhleSdyZSBhbGwgYWxyZWFkeSBpbml0aWFsaXplZCBvcgorCSAqIG5vbmUuICBP dGhlcndpc2UgaXQgd291bGQgYmUgYW1iaWd1b3VzIHdoaWNoIGNhbGxiYWNrLCBpbml0IG9yIGF0 dGFjaCwKKwkgKiB0byBjYWxsYmFjayBhZnRlcndhcmRzLgorCSAqLworCWZvdW5kX2FueSA9IG5v dGZvdW5kX2FueSA9IGZhbHNlOworCWZvcmVhY2hfcHRyKFNobWVtUmVxdWVzdCwgcmVxdWVzdCwg cGVuZGluZ19zaG1lbV9yZXF1ZXN0cykKKwl7CisJCWlmIChoYXNoX3NlYXJjaChTaG1lbUluZGV4 LCByZXF1ZXN0LT5vcHRpb25zLT5uYW1lLCBIQVNIX0ZJTkQsIE5VTEwpKQorCQkJZm91bmRfYW55 ID0gdHJ1ZTsKKwkJZWxzZQorCQkJbm90Zm91bmRfYW55ID0gdHJ1ZTsKKwl9CisJaWYgKGZvdW5k X2FueSAmJiBub3Rmb3VuZF9hbnkpCisJCWVsb2coRVJST1IsICJmb3VuZCBzb21lIGJ1dCBub3Qg YWxsIik7CiAKLQlpZiAoIXJlc3VsdCkKKwkvKgorCSAqIEFsbG9jYXRlIG9yIGF0dGFjaCBhbGwg dGhlIHNobWVtIGFyZWFzIHJlcXVlc3RlZCBieSB0aGUgcmVxdWVzdF9mbgorCSAqIGNhbGxiYWNr LgorCSAqLworCWZvcmVhY2hfcHRyKFNobWVtUmVxdWVzdCwgcmVxdWVzdCwgcGVuZGluZ19zaG1l bV9yZXF1ZXN0cykKIAl7Ci0JCUxXTG9ja1JlbGVhc2UoU2htZW1JbmRleExvY2spOwotCQllcmVw b3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfT1VUX09GX01FTU9SWSksCi0JCQkJIGVy cm1zZygiY291bGQgbm90IGNyZWF0ZSBTaG1lbUluZGV4IGVudHJ5IGZvciBkYXRhIHN0cnVjdHVy ZSBcIiVzXCIiLAotCQkJCQkJbmFtZSkpKTsKKwkJaWYgKGZvdW5kX2FueSkKKwkJCUF0dGFjaFNo bWVtSW5kZXhFbnRyeShyZXF1ZXN0LCBmYWxzZSk7CisJCWVsc2UKKwkJCUluaXRTaG1lbUluZGV4 RW50cnkocmVxdWVzdCk7CiAJfQorCWxpc3RfZnJlZV9kZWVwKHBlbmRpbmdfc2htZW1fcmVxdWVz dHMpOworCXBlbmRpbmdfc2htZW1fcmVxdWVzdHMgPSBOSUw7CiAKLQlpZiAoKmZvdW5kUHRyKQor CS8qIEZpbmlzaCBieSBjYWxsaW5nIHRoZSBhcHByb3ByaWF0ZSBzdWJzeXN0ZW0tc3BlY2lmaWMg Y2FsbGJhY2sgKi8KKwlpZiAoZm91bmRfYW55KQogCXsKLQkJLyoKLQkJICogU3RydWN0dXJlIGlz IGluIHRoZSBzaG1lbSBpbmRleCBzbyBzb21lb25lIGVsc2UgaGFzIGFsbG9jYXRlZCBpdAotCQkg KiBhbHJlYWR5LiAgVGhlIHNpemUgYmV0dGVyIGJlIHRoZSBzYW1lIGFzIHRoZSBzaXplIHdlIGFy ZSB0cnlpbmcgdG8KLQkJICogaW5pdGlhbGl6ZSB0bywgb3IgdGhlcmUgaXMgYSBuYW1lIGNvbmZs aWN0IChvciB3b3JzZSkuCi0JCSAqLwotCQlpZiAocmVzdWx0LT5zaXplICE9IHNpemUpCi0JCXsK LQkJCUxXTG9ja1JlbGVhc2UoU2htZW1JbmRleExvY2spOwotCQkJZXJlcG9ydChFUlJPUiwKLQkJ CQkJKGVycm1zZygiU2htZW1JbmRleCBlbnRyeSBzaXplIGlzIHdyb25nIGZvciBkYXRhIHN0cnVj dHVyZSIKLQkJCQkJCQkiIFwiJXNcIjogZXhwZWN0ZWQgJXp1LCBhY3R1YWwgJXp1IiwKLQkJCQkJ CQluYW1lLCBzaXplLCByZXN1bHQtPnNpemUpKSk7Ci0JCX0KLQkJc3RydWN0UHRyID0gcmVzdWx0 LT5sb2NhdGlvbjsKKwkJaWYgKGNhbGxiYWNrcy0+YXR0YWNoX2ZuKQorCQkJY2FsbGJhY2tzLT5h dHRhY2hfZm4oY2FsbGJhY2tzLT5hdHRhY2hfZm5fYXJnKTsKIAl9CiAJZWxzZQogCXsKLQkJU2l6 ZQkJYWxsb2NhdGVkX3NpemU7Ci0KLQkJLyogSXQgaXNuJ3QgaW4gdGhlIHRhYmxlIHlldC4gYWxs b2NhdGUgYW5kIGluaXRpYWxpemUgaXQgKi8KLQkJc3RydWN0UHRyID0gU2htZW1BbGxvY1Jhdyhz aXplLCAmYWxsb2NhdGVkX3NpemUpOwotCQlpZiAoc3RydWN0UHRyID09IE5VTEwpCi0JCXsKLQkJ CS8qIG91dCBvZiBtZW1vcnk7IHJlbW92ZSB0aGUgZmFpbGVkIFNobWVtSW5kZXggZW50cnkgKi8K LQkJCWhhc2hfc2VhcmNoKFNobWVtSW5kZXgsIG5hbWUsIEhBU0hfUkVNT1ZFLCBOVUxMKTsKLQkJ CUxXTG9ja1JlbGVhc2UoU2htZW1JbmRleExvY2spOwotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9PVVRfT0ZfTUVNT1JZKSwKLQkJCQkJIGVycm1zZygibm90IGVub3Vn aCBzaGFyZWQgbWVtb3J5IGZvciBkYXRhIHN0cnVjdHVyZSIKLQkJCQkJCQkiIFwiJXNcIiAoJXp1 IGJ5dGVzIHJlcXVlc3RlZCkiLAotCQkJCQkJCW5hbWUsIHNpemUpKSk7Ci0JCX0KLQkJcmVzdWx0 LT5zaXplID0gc2l6ZTsKLQkJcmVzdWx0LT5hbGxvY2F0ZWRfc2l6ZSA9IGFsbG9jYXRlZF9zaXpl OwotCQlyZXN1bHQtPmxvY2F0aW9uID0gc3RydWN0UHRyOworCQlpZiAoY2FsbGJhY2tzLT5pbml0 X2ZuKQorCQkJY2FsbGJhY2tzLT5pbml0X2ZuKGNhbGxiYWNrcy0+aW5pdF9mbl9hcmcpOwogCX0K IAogCUxXTG9ja1JlbGVhc2UoU2htZW1JbmRleExvY2spOworCXNobWVtX3JlcXVlc3Rfc3RhdGUg PSBTUlNfRE9ORTsKK30KIAotCUFzc2VydChTaG1lbUFkZHJJc1ZhbGlkKHN0cnVjdFB0cikpOwor LyoKKyAqIENhbGwgYWxsIHNobWVtIHJlcXVlc3QgY2FsbGJhY2tzLgorICovCit2b2lkCitTaG1l bUNhbGxSZXF1ZXN0Q2FsbGJhY2tzKHZvaWQpCit7CisJTGlzdENlbGwgICAqbGM7CiAKLQlBc3Nl cnQoc3RydWN0UHRyID09ICh2b2lkICopIENBQ0hFTElORUFMSUdOKHN0cnVjdFB0cikpOworCUFz c2VydChzaG1lbV9yZXF1ZXN0X3N0YXRlID09IFNSU19JTklUSUFMKTsKKwlzaG1lbV9yZXF1ZXN0 X3N0YXRlID0gU1JTX1JFUVVFU1RJTkc7CisKKwlmb3JlYWNoKGxjLCByZWdpc3RlcmVkX3NobWVt X2NhbGxiYWNrcykKKwl7CisJCWNvbnN0IFNobWVtQ2FsbGJhY2tzICpjYWxsYmFja3MgPSAoY29u c3QgU2htZW1DYWxsYmFja3MgKikgbGZpcnN0KGxjKTsKIAotCXJldHVybiBzdHJ1Y3RQdHI7CisJ CWlmIChjYWxsYmFja3MtPnJlcXVlc3RfZm4pCisJCQljYWxsYmFja3MtPnJlcXVlc3RfZm4oY2Fs bGJhY2tzLT5yZXF1ZXN0X2ZuX2FyZyk7CisJfQogfQogCisvKgorICogU2htZW1Jbml0U3RydWN0 IC0tIENyZWF0ZS9hdHRhY2ggdG8gYSBzdHJ1Y3R1cmUgaW4gc2hhcmVkIG1lbW9yeS4KKyAqCisg KgkJVGhpcyBpcyBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uIHRvIGZpbmQgb3IgYWxsb2Nh dGUKKyAqCQlhIGRhdGEgc3RydWN0dXJlIGluIHNoYXJlZCBtZW1vcnkuICBJZiBubyBvdGhlciBw cm9jZXNzCisgKgkJaGFzIGNyZWF0ZWQgdGhlIHN0cnVjdHVyZSwgdGhpcyByb3V0aW5lIGFsbG9j YXRlcyBzcGFjZQorICoJCWZvciBpdC4gIElmIGl0IGV4aXN0cyBhbHJlYWR5LCBhIHBvaW50ZXIg dG8gdGhlIGV4aXN0aW5nCisgKgkJc3RydWN0dXJlIGlzIHJldHVybmVkLgorICoKKyAqCVJldHVy bnM6IHBvaW50ZXIgdG8gdGhlIG9iamVjdC4gICpmb3VuZFB0ciBpcyBzZXQgdHJ1ZSBpZiB0aGUg b2JqZWN0IHdhcworICoJCWFscmVhZHkgaW4gdGhlIHNobWVtIGluZGV4IChoZW5jZSwgYWxyZWFk eSBpbml0aWFsaXplZCkuCisgKgorICogTm90ZTogVGhpcyBpcyBhIGxlZ2FjeSBpbnRlcmZhY2Us IGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGgKKyAqIGV4dGVuc2lvbnMuICBV c2UgU2htZW1SZXF1ZXN0U3RydWN0KCkgaW4gbmV3IGNvZGUhCisgKi8KK3ZvaWQgKgorU2htZW1J bml0U3RydWN0KGNvbnN0IGNoYXIgKm5hbWUsIFNpemUgc2l6ZSwgYm9vbCAqZm91bmRQdHIpCit7 CisJdm9pZAkgICAqcHRyID0gTlVMTDsKKwlTaG1lbVN0cnVjdE9wdHMgb3B0aW9ucyA9IHsKKwkJ Lm5hbWUgPSBuYW1lLAorCQkuc2l6ZSA9IHNpemUsCisJCS5wdHIgPSAmcHRyLAorCX07CisJU2ht ZW1SZXF1ZXN0IHJlcXVlc3QgPSB7Jm9wdGlvbnMsIFNITUVNX0tJTkRfU1RSVUNUfTsKKworCUFz c2VydChzaG1lbV9yZXF1ZXN0X3N0YXRlID09IFNSU19ET05FIHx8CisJCSAgIHNobWVtX3JlcXVl c3Rfc3RhdGUgPT0gU1JTX0lOSVRJQUxJWklORyB8fAorCQkgICBzaG1lbV9yZXF1ZXN0X3N0YXRl ID09IFNSU19SRVFVRVNUSU5HKTsKKworCUxXTG9ja0FjcXVpcmUoU2htZW1JbmRleExvY2ssIExX X0VYQ0xVU0lWRSk7CisKKwkvKgorCSAqIER1cmluZyBwb3N0bWFzdGVyIHN0YXJ0dXAsIGxvb2sg dXAgdGhlIGV4aXN0aW5nIGVudHJ5IGlmIGFueS4KKwkgKi8KKwkqZm91bmRQdHIgPSBmYWxzZTsK KwlpZiAoSXNVbmRlclBvc3RtYXN0ZXIpCisJCSpmb3VuZFB0ciA9IEF0dGFjaFNobWVtSW5kZXhF bnRyeSgmcmVxdWVzdCwgdHJ1ZSk7CisKKwkvKiBJbml0aWFsaXplIGl0IGlmIG5vdCBmb3VuZCAq LworCWlmICghKmZvdW5kUHRyKQorCQlJbml0U2htZW1JbmRleEVudHJ5KCZyZXF1ZXN0KTsKKwor CUxXTG9ja1JlbGVhc2UoU2htZW1JbmRleExvY2spOworCisJQXNzZXJ0KHB0ciAhPSBOVUxMKTsK KwlyZXR1cm4gcHRyOworfQogCiAvKgogICogQWRkIHR3byBTaXplIHZhbHVlcywgY2hlY2tpbmcg Zm9yIG92ZXJmbG93CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbV9o YXNoLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbV9oYXNoLmMKaW5kZXggMGIwNTcz MDEyOWUuLmFiMzA0NjFmMjQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9z aG1lbV9oYXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW1faGFzaC5jCkBA IC0yMSw5ICsyMSw4MSBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJzdG9y YWdlL3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1lbV9pbnRlcm5hbC5oIgorI2luY2x1 ZGUgInV0aWxzL21lbXV0aWxzLmgiCisKKy8qCisgKiBBIHZlcnkgc2ltcGxlIGFsbG9jYXRvciB1 c2VkIHRvIGNhcnZlIG91dCBkaWZmZXJlbnQgcGFydHMgb2YgYSBoYXNoIHRhYmxlCisgKiBmcm9t IGEgcHJldmlvdXNseSBhbGxvY2F0ZWQgY29udGlndW91cyBzaGFyZWQgbWVtb3J5IGFyZWEuCisg Ki8KK3R5cGVkZWYgc3RydWN0IHNobWVtX2hhc2hfYWxsb2NhdG9yCit7CisJY2hhcgkgICAqbmV4 dDsJCQkvKiBzdGFydCBvZiBmcmVlIHNwYWNlIGluIHRoZSBhcmVhICovCisJY2hhcgkgICAqZW5k OwkJCS8qIGVuZCBvZiB0aGUgc2htZW0gYXJlYSAqLworfSBzaG1lbV9oYXNoX2FsbG9jYXRvcjsK IAogc3RhdGljIHZvaWQgKlNobWVtSGFzaEFsbG9jKFNpemUgc2l6ZSwgdm9pZCAqYWxsb2NfYXJn KTsKIAorLyoKKyAqIFNobWVtUmVxdWVzdEhhc2ggLS0gUmVxdWVzdCBhIHNoYXJlZCBtZW1vcnkg aGFzaCB0YWJsZS4KKyAqCisgKiBTaW1pbGFyIHRvIFNobWVtUmVxdWVzdFN0cnVjdCgpLCBidXQg cmVxdWVzdHMgYSBoYXNoIHRhYmxlIGluc3RlYWQgb2YgYW4KKyAqIG9wYXF1ZSBhcmVhLgorICov Cit2b2lkCitTaG1lbVJlcXVlc3RIYXNoV2l0aE9wdHMoY29uc3QgU2htZW1IYXNoT3B0cyAqb3B0 aW9ucykKK3sKKwlTaG1lbUhhc2hPcHRzICpvcHRpb25zX2NvcHk7CisKKwlBc3NlcnQob3B0aW9u cy0+bmFtZSAhPSBOVUxMKTsKKworCW9wdGlvbnNfY29weSA9IE1lbW9yeUNvbnRleHRBbGxvYyhU b3BNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJICBzaXplb2YoU2htZW1IYXNoT3B0cykpOworCW1l bWNweShvcHRpb25zX2NvcHksIG9wdGlvbnMsIHNpemVvZihTaG1lbUhhc2hPcHRzKSk7CisKKwkv KiBTZXQgb3B0aW9ucyBmb3IgdGhlIGZpeGVkLXNpemUgYXJlYSBob2xkaW5nIHRoZSBoYXNoIHRh YmxlICovCisJb3B0aW9uc19jb3B5LT5iYXNlLm5hbWUgPSBvcHRpb25zLT5uYW1lOworCW9wdGlv bnNfY29weS0+YmFzZS5zaXplID0gaGFzaF9lc3RpbWF0ZV9zaXplKG9wdGlvbnNfY29weS0+bmVs ZW1zLAorCQkJCQkJCQkJCQkJIG9wdGlvbnNfY29weS0+aGFzaF9pbmZvLmVudHJ5c2l6ZSk7CisK KwlTaG1lbVJlcXVlc3RJbnRlcm5hbCgmb3B0aW9uc19jb3B5LT5iYXNlLCBTSE1FTV9LSU5EX0hB U0gpOworfQorCit2b2lkCitzaG1lbV9oYXNoX2luaXQodm9pZCAqbG9jYXRpb24sIFNobWVtU3Ry dWN0T3B0cyAqYmFzZV9vcHRpb25zKQoreworCVNobWVtSGFzaE9wdHMgKm9wdGlvbnMgPSAoU2ht ZW1IYXNoT3B0cyAqKSBiYXNlX29wdGlvbnM7CisJaW50CQkJaGFzaF9mbGFncyA9IG9wdGlvbnMt Pmhhc2hfZmxhZ3M7CisJSFRBQgkgICAqaHRhYjsKKworCW9wdGlvbnMtPmhhc2hfaW5mby5oY3Rs ID0gbG9jYXRpb247CisJaHRhYiA9IHNobWVtX2hhc2hfY3JlYXRlKGxvY2F0aW9uLCBvcHRpb25z LT5iYXNlLnNpemUsIGZhbHNlLAorCQkJCQkJCSBvcHRpb25zLT5uYW1lLAorCQkJCQkJCSBvcHRp b25zLT5uZWxlbXMsICZvcHRpb25zLT5oYXNoX2luZm8sIGhhc2hfZmxhZ3MpOworCisJaWYgKG9w dGlvbnMtPnB0cikKKwkJKm9wdGlvbnMtPnB0ciA9IGh0YWI7Cit9CisKK3ZvaWQKK3NobWVtX2hh c2hfYXR0YWNoKHZvaWQgKmxvY2F0aW9uLCBTaG1lbVN0cnVjdE9wdHMgKmJhc2Vfb3B0aW9ucykK K3sKKwlTaG1lbUhhc2hPcHRzICpvcHRpb25zID0gKFNobWVtSGFzaE9wdHMgKikgYmFzZV9vcHRp b25zOworCWludAkJCWhhc2hfZmxhZ3MgPSBvcHRpb25zLT5oYXNoX2ZsYWdzOworCUhUQUIJICAg Kmh0YWI7CisKKwkvKiBhdHRhY2ggdG8gaXQgcmF0aGVyIHRoYW4gYWxsb2NhdGUgYW5kIGluaXRp YWxpemUgbmV3IHNwYWNlICovCisJaGFzaF9mbGFncyB8PSBIQVNIX0FUVEFDSDsKKwlvcHRpb25z LT5oYXNoX2luZm8uaGN0bCA9IGxvY2F0aW9uOworCUFzc2VydChvcHRpb25zLT5oYXNoX2luZm8u aGN0bCAhPSBOVUxMKTsKKwlodGFiID0gc2htZW1faGFzaF9jcmVhdGUobG9jYXRpb24sIG9wdGlv bnMtPmJhc2Uuc2l6ZSwgdHJ1ZSwKKwkJCQkJCQkgb3B0aW9ucy0+bmFtZSwKKwkJCQkJCQkgb3B0 aW9ucy0+bmVsZW1zLCAmb3B0aW9ucy0+aGFzaF9pbmZvLCBoYXNoX2ZsYWdzKTsKKworCWlmIChv cHRpb25zLT5wdHIpCisJCSpvcHRpb25zLT5wdHIgPSBodGFiOworfQorCiAvKgogICogU2htZW1J bml0SGFzaCAtLSBDcmVhdGUgYW5kIGluaXRpYWxpemUsIG9yIGF0dGFjaCB0bywgYQogICoJCXNo YXJlZCBtZW1vcnkgaGFzaCB0YWJsZS4KQEAgLTQwLDkgKzExMiw4IEBAIHN0YXRpYyB2b2lkICpT aG1lbUhhc2hBbGxvYyhTaXplIHNpemUsIHZvaWQgKmFsbG9jX2FyZyk7CiAgKiB0byBzaGFyZWQt bWVtb3J5IGhhc2ggdGFibGVzIGFyZSBhZGRlZCBoZXJlLCBleGNlcHQgdGhhdCBjYWxsZXJzIG1h eQogICogY2hvb3NlIHRvIHNwZWNpZnkgSEFTSF9QQVJUSVRJT04uCiAgKgotICogTm90ZTogYmVm b3JlIFBvc3RncmVzIDkuMCwgdGhpcyBmdW5jdGlvbiByZXR1cm5lZCBOVUxMIGZvciBzb21lIGZh aWx1cmUKLSAqIGNhc2VzLiAgTm93LCBpdCBhbHdheXMgdGhyb3dzIGVycm9yIGluc3RlYWQsIHNv IGNhbGxlcnMgbmVlZCBub3QgY2hlY2sKLSAqIGZvciBOVUxMLgorICogTm90ZTogVGhpcyBpcyBh IGxlZ2FjeSBpbnRlcmZhY2UsIGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGgK KyAqIGV4dGVuc2lvbnMuICBVc2UgU2htZW1SZXF1ZXN0SGFzaCgpIGluIG5ldyBjb2RlIQogICov CiBIVEFCICoKIFNobWVtSW5pdEhhc2goY29uc3QgY2hhciAqbmFtZSwJCS8qIHRhYmxlIHN0cmlu ZyBuYW1lIGZvciBzaG1lbSBpbmRleCAqLwpAQCAtNTYsNyArMTI3LDE0IEBAIFNobWVtSW5pdEhh c2goY29uc3QgY2hhciAqbmFtZSwJCS8qIHRhYmxlIHN0cmluZyBuYW1lIGZvciBzaG1lbSBpbmRl eCAqLwogCiAJc2l6ZSA9IGhhc2hfZXN0aW1hdGVfc2l6ZShuZWxlbXMsIGluZm9QLT5lbnRyeXNp emUpOwogCi0JLyogbG9vayBpdCB1cCBpbiB0aGUgc2htZW0gaW5kZXggb3IgYWxsb2NhdGUgKi8K KwkvKgorCSAqIExvb2sgaXQgdXAgaW4gdGhlIHNobWVtIGluZGV4IG9yIGFsbG9jYXRlLgorCSAq CisJICogTk9URTogVGhlIGFyZWEgaXMgcmVxdWVzdGVkIGludGVybmFsbHkgYXMgU0hNRU1fS0lO RF9TVFJVQ1QgaW5zdGVhZCBvZgorCSAqIFNITUVNX0tJTkRfSEFTSC4gIFRoYXQncyBjb3JyZWN0 IGJlY2F1c2Ugd2UgZG8gdGhlIGhhc2ggdGFibGUKKwkgKiBpbml0aWFsaXphdGlvbiBieSBjYWxs aW5nIHNobWVtX2hhc2hfY3JlYXRlKCkgb3Vyc2VsdmVzLiAgKFdlIGRvbid0CisJICogZXhwb3Nl IHRoZSByZXF1ZXN0IGtpbmQgdG8gdXNlcnM7IGlmIHdlIGRpZCwgdGhhdCB3b3VsZCBiZSBjb25m dXNpbmcuKQorCSAqLwogCWxvY2F0aW9uID0gU2htZW1Jbml0U3RydWN0KG5hbWUsIHNpemUsICZm b3VuZCk7CiAKIAlyZXR1cm4gc2htZW1faGFzaF9jcmVhdGUobG9jYXRpb24sIHNpemUsIGZvdW5k LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKaW5kZXggNWM0N2NmMTM0NzMuLjliODgwYTZhZjY1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCisrKyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKQEAgLTEyMSw2ICsxMjEsOSBAQCBGYXN0UGF0aExvY2tT aG1lbVNpemUodm9pZCkKIAogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShUb3RhbFBy b2NzLCAoZnBMb2NrQml0c1NpemUgKyBmcFJlbElkU2l6ZSkpKTsKIAorCUFzc2VydChUb3RhbFBy b2NzID4gMCk7CisJQXNzZXJ0KHNpemUgPiAwKTsKKwogCXJldHVybiBzaXplOwogfQogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bv c3RncmVzLmMKaW5kZXggMTBiZTYwMDExYWQuLjkzODUxMjY5ZTQzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5j CkBAIC02Nyw2ICs2Nyw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgorI2lu Y2x1ZGUgInN0b3JhZ2Uvc2htZW1faW50ZXJuYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NpbnZh bC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3RhbmRieS5oIgogI2luY2x1ZGUgInRjb3AvYmFja2Vu ZF9zdGFydHVwLmgiCkBAIC00MTU1LDcgKzQxNTYsMTQgQEAgUG9zdGdyZXNTaW5nbGVVc2VyTWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdLAogCUluaXRpYWxpemVGYXN0UGF0aExvY2tzKCk7CiAK IAkvKgotCSAqIEdpdmUgcHJlbG9hZGVkIGxpYnJhcmllcyBhIGNoYW5jZSB0byByZXF1ZXN0IGFk ZGl0aW9uYWwgc2hhcmVkIG1lbW9yeS4KKwkgKiBCZWZvcmUgY29tcHV0aW5nIHRoZSB0b3RhbCBz aXplIG5lZWRlZCwgZ2l2ZSBhbGwgc3Vic3lzdGVtcywgaW5jbHVkaW5nCisJICogYWRkLWlucywg YSBjaGFuY2UgdG8gY2hhbmNlIHRvIGFkanVzdCB0aGVpciByZXF1ZXN0ZWQgc2htZW0gc2l6ZXMu CisJICovCisJU2htZW1DYWxsUmVxdWVzdENhbGxiYWNrcygpOworCisJLyoKKwkgKiBBbHNvIGNh bGwgYW55IGxlZ2FjeSBzaG1lbSByZXF1ZXN0IGhvb2tzIHRoYXQgbWlnaHQnYmUgYmVlbiBpbnN0 YWxsZWQKKwkgKiBieSBwcmVsb2FkZWQgbGlicmFyaWVzLgogCSAqLwogCXByb2Nlc3Nfc2htZW1f cmVxdWVzdHMoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oCmluZGV4IDgyZjU0MDNjOTUyLi4xNDdhNjkxNWY3 ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oCisrKyBiL3NyYy9pbmNs dWRlL3N0b3JhZ2Uvc2htZW0uaApAQCAtMyw2ICszLDExIEBACiAgKiBzaG1lbS5oCiAgKgkgIHNo YXJlZCBtZW1vcnkgbWFuYWdlbWVudCBzdHJ1Y3R1cmVzCiAgKgorICogVGhpcyBmaWxlIGNvbnRh aW5zIHB1YmxpYyBmdW5jdGlvbnMgZm9yIG90aGVyIGNvcmUgc3Vic3lzdGVtcyBhbmQKKyAqIGV4 dGVuc2lvbnMgdG8gYWxsb2NhdGUgc2hhcmVkIG1lbW9yeS4gIEludGVybmFsIGZ1bmN0aW9ucyBm b3IgdGhlIHNobWVtCisgKiBhbGxvY2F0b3IgaXRzZWxmIGFuZCBob29raW5nIGl0IHRvIHRoZSBy ZXN0IG9mIHRoZSBzeXN0ZW0gYXJlIGluCisgKiBzaG1lbV9pbnRlcm5hbC5oCisgKgogICogSGlz dG9yaWNhbCBub3RlOgogICogQSBsb25nIHRpbWUgYWdvLCBQb3N0Z3Jlcycgc2hhcmVkIG1lbW9y eSByZWdpb24gd2FzIGFsbG93ZWQgdG8gYmUgbWFwcGVkCiAgKiBhdCBhIGRpZmZlcmVudCBhZGRy ZXNzIGluIGVhY2ggcHJvY2VzcywgYW5kIHNoYXJlZCBtZW1vcnkgInBvaW50ZXJzIiB3ZXJlCkBA IC0yMyw0MyArMjgsMTY1IEBACiAKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAKKy8qCisg KiBPcHRpb25zIGZvciBTaG1lbVJlcXVlc3RTdHJ1Y3QoKQorICoKKyAqICduYW1lJyBhbmQgJ3Np emUnIGFyZSByZXF1aXJlZC4gIEluaXRpYWxpemUgYW55IG9wdGlvbmFsIGZpZWxkcyB0aGF0IHlv dQorICogZG9uJ3QgdXNlIHRvIHplcm9zLgorICoKKyAqIEFmdGVyIHJlZ2lzdHJhdGlvbiwgdGhl IHNobWVtIG1hY2hpbmVyeSByZXNlcnZlcyBtZW1vcnkgZm9yIHRoZSBhcmVhLCBzZXRzCisgKiAn KnB0cicgdG8gcG9pbnQgdG8gdGhlIGFsbG9jYXRpb24sIGFuZCBjYWxscyB0aGUgY2FsbGJhY2tz IGF0IHRoZSByaWdodAorICogbW9tZW50cy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgU2htZW1TdHJ1 Y3RPcHRzCit7CisJY29uc3QgY2hhciAqbmFtZTsKIAotLyogc2htZW0uYyAqLwotdHlwZWRlZiBz dHJ1Y3QgUEdTaG1lbUhlYWRlciBQR1NobWVtSGVhZGVyOyAvKiBhdm9pZCBpbmNsdWRpbmcKLQkJ CQkJCQkJCQkJICogc3RvcmFnZS9wZ19zaG1lbS5oIGhlcmUgKi8KLWV4dGVybiB2b2lkIEluaXRT aG1lbUFsbG9jYXRvcihQR1NobWVtSGVhZGVyICpzZWdoZHIpOwotZXh0ZXJuIHZvaWQgKlNobWVt QWxsb2MoU2l6ZSBzaXplKTsKLWV4dGVybiB2b2lkICpTaG1lbUFsbG9jTm9FcnJvcihTaXplIHNp emUpOwotZXh0ZXJuIHZvaWQgKlNobWVtSGFzaEFsbG9jKFNpemUgc2l6ZSwgdm9pZCAqYWxsb2Nf YXJnKTsKKwkvKgorCSAqIFJlcXVlc3RlZCBzaXplIG9mIHRoZSBzaG1lbSBhbGxvY2F0aW9uLgor CSAqCisJICogV2hlbiBhdHRhY2hpbmcgdG8gYW4gZXhpc3RpbmcgYWxsb2NhdGlvbiwgdGhlIHNp emUgbXVzdCBtYXRjaCB0aGUgc2l6ZQorCSAqIGdpdmVuIHdoZW4gdGhlIHNobWVtIHJlZ2lvbiB3 YXMgYWxsb2NhdGVkLiAgVGhpcyBjcm9zcy1jaGVjayBjYW4gYmUKKwkgKiBkaXNhYmxlZCBzcGVj aWZ5aW5nIFNITUVNX0FUVEFDSF9VTktOT1dOX1NJWkUuCisJICovCisJc3NpemVfdAkJc2l6ZTsK KworCS8qCisJICogV2hlbiB0aGUgc2htZW0gYXJlYSBpcyBpbml0aWFsaXplZCBvciBhdHRhY2hl ZCB0bywgcG9pbnRlciB0byBpdCBpcworCSAqIHN0b3JlZCBpbiAqcHRyLiAgSXQgdXN1YWxseSBw b2ludHMgdG8gYSBnbG9iYWwgdmFyaWFibGUsIHVzZWQgdG8gYWNjZXNzCisJICogdGhlIHNoYXJl ZCBtZW1vcnkgYXJlYSBsYXRlci4gICpwdHIgaXMgc2V0IGJlZm9yZSB0aGUgaW5pdF9mbiBvcgor CSAqIGF0dGFjaF9mbiBjYWxsYmFjayBpcyBjYWxsZWQuCisJICovCisJdm9pZAkgICoqcHRyOwor fSBTaG1lbVN0cnVjdE9wdHM7CisKKyNkZWZpbmUgU0hNRU1fQVRUQUNIX1VOS05PV05fU0laRSAo LTEpCisKKy8qCisgKiBPcHRpb25zIGZvciBTaG1lbVJlcXVlc3RIYXNoKCkKKyAqCisgKiBFYWNo IGhhc2ggdGFibGUgaXMgYmFja2VkIGJ5IGFuIGFsbG9jYXRlZCBhcmVhLCBidXQgaWYgJ21heF9z aXplJyBpcworICogZ3JlYXRlciB0aGFuICdpbml0X3NpemUnLCBpdCBjYW4gYWxzbyBncm93IGJl eW9uZCB0aGUgaW5pdGlhbCBhbGxvY2F0ZWQKKyAqIGFyZWEgYnkgYWxsb2NhdGluZyBtb3JlIGhh c2ggZW50cmllcyBmcm9tIHRoZSBnbG9iYWwgdW5yZXNlcnZlZCBzcGFjZS4KKyAqLwordHlwZWRl ZiBzdHJ1Y3QgU2htZW1IYXNoT3B0cworeworCVNobWVtU3RydWN0T3B0cyBiYXNlOworCisJLyoK KwkgKiBOYW1lIG9mIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEuICBSZXF1aXJlZC4gIE11c3QgYmUg dW5pcXVlIGFjcm9zcyB0aGUKKwkgKiBzeXN0ZW0uCisJICovCisJY29uc3QgY2hhciAqbmFtZTsK KworCS8qCisJICogJ25lbGVtcycgaXMgdGhlIG1heCBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHRo ZSBoYXNoIHRhYmxlLgorCSAqLworCWludDY0CQluZWxlbXM7CisKKwkvKgorCSAqIEhhc2ggdGFi bGUgb3B0aW9ucyBwYXNzZWQgdG8gaGFzaF9jcmVhdGUoKQorCSAqCisJICogaGFzaF9pbmZvIGFu ZCBoYXNoX2ZsYWdzIG11c3Qgc3BlY2lmeSBhdCBsZWFzdCB0aGUgZW50cnkgc2l6ZXMgYW5kIGtl eQorCSAqIGNvbXBhcmlzb24gc2VtYW50aWNzIChzZWUgaGFzaF9jcmVhdGUoKSkuICBGbGFnIGJp dHMgYW5kIHZhbHVlcworCSAqIHNwZWNpZmljIHRvIHNoYXJlZC1tZW1vcnkgaGFzaCB0YWJsZXMg YXJlIGFkZGVkIGltcGxpY2l0bHkgaW4KKwkgKiBTaG1lbVJlcXVlc3RIYXNoKCksIGV4Y2VwdCB0 aGF0IGNhbGxlcnMgbWF5IGNob29zZSB0byBzcGVjaWZ5CisJICogSEFTSF9QQVJUSVRJT04gYW5k L29yIEhBU0hfRklYRURfU0laRS4KKwkgKi8KKwlIQVNIQ1RMCQloYXNoX2luZm87CisJaW50CQkJ aGFzaF9mbGFnczsKKworCS8qCisJICogV2hlbiB0aGUgaGFzaCB0YWJsZSBpcyBpbml0aWFsaXpl ZCBvciBhdHRhY2hlZCB0bywgcG9pbnRlciB0byBpdHMKKwkgKiBiYWNrZW5kLXByaXZhdGUgaGFu ZGxlIGlzIHN0b3JlZCBpbiAqcHRyLiAgSXQgdXN1YWxseSBwb2ludHMgdG8gYQorCSAqIGdsb2Jh bCB2YXJpYWJsZSwgdXNlZCB0byBhY2Nlc3MgdGhlIGhhc2ggdGFibGUgbGF0ZXIuCisJICovCisJ SFRBQgkgICoqcHRyOworfSBTaG1lbUhhc2hPcHRzOworCit0eXBlZGVmIHZvaWQgKCpTaG1lbVJl cXVlc3RDYWxsYmFjaykgKHZvaWQgKmFyZyk7Cit0eXBlZGVmIHZvaWQgKCpTaG1lbUluaXRDYWxs YmFjaykgKHZvaWQgKmFyZyk7Cit0eXBlZGVmIHZvaWQgKCpTaG1lbUF0dGFjaENhbGxiYWNrKSAo dm9pZCAqYXJnKTsKKworLyoKKyAqIFNoYXJlZCBtZW1vcnkgaXMgcmVzZXJ2ZWQgYW5kIGFsbG9j YXRlZCBpbiBzdGFnZXMgYXQgcG9zdG1hc3RlciBzdGFydHVwLAorICogYW5kIGluIEVYRUNfQkFD S0VORCBtb2RlLCB0aGVyZSdzIHNvbWUgZXh0cmEgd29yayBkb25lIHRvICJhdHRhY2giIHRvIHRo ZW0KKyAqIGF0IGJhY2tlbmQgc3RhcnR1cC4gIFNobWVtQ2FsbGJhY2tzIGhvbGRzIGNhbGxiYWNr IGZ1bmN0aW9ucyB0aGF0IGFyZQorICogY2FsbGVkIGF0IGRpZmZlcmVudCBzdGFnZXMuCisgKi8K K3R5cGVkZWYgc3RydWN0IFNobWVtQ2FsbGJhY2tzCit7CisJLyogU0hNRU1fQ0FMTEJBQ0tTXyog ZmxhZ3MgKi8KKwlpbnQJCQlmbGFnczsKKworCS8qCisJICogJ3JlcXVlc3RfZm4nIGlzIGNhbGxl ZCBkdXJpbmcgcG9zdG1hc3RlciBzdGFydHVwLCBiZWZvcmUgdGhlIHNoYXJlZAorCSAqIG1lbW9y eSBoYXMgYmVlbiBhbGxvY2F0ZWQuICBUaGUgZnVuY3Rpb24gc2hvdWxkIGNhbGwKKwkgKiBSZXF1 ZXN0U2htZW1TdHJ1Y3QoKSBhbmQgUmVxdWVzdFNobWVtSGFzaCgpIHRvIHJlZ2lzdGVyIHRoZSBz dWJzeXN0ZW0ncworCSAqIHNoYXJlZCBtZW1vcnkgbmVlZHMuCisJICovCisJU2htZW1SZXF1ZXN0 Q2FsbGJhY2sgcmVxdWVzdF9mbjsKKwl2b2lkCSAgICpyZXF1ZXN0X2ZuX2FyZzsKKworCS8qCisJ ICogSW5pdGlhbGl6YXRpb24gY2FsbGJhY2sgZnVuY3Rpb24uICBUaGlzIGlzIGNhbGxlZCB3aGVu IHRoZSBzaGFyZWQKKwkgKiBtZW1vcnkgYXJlYSBpcyBhbGxvY2F0ZWQsIHVzdWFsbHkgYXQgcG9z dG1hc3RlciBzdGFydHVwLgorCSAqLworCVNobWVtSW5pdENhbGxiYWNrIGluaXRfZm47CisJdm9p ZAkgICAqaW5pdF9mbl9hcmc7CisKKwkvKgorCSAqIEF0dGFjaG1lbnQgY2FsbGJhY2sgZnVuY3Rp b24uICBJbiBFWEVDX0JBQ0tFTkQgbW9kZSwgdGhpcyBpcyBjYWxsZWQgYXQKKwkgKiBzdGFydHVw IG9mIGVhY2ggYmFja2VuZC4gIEluICFFWEVDX0JBQ0tFTkQgbW9kZSwgdGhpcyBpcyBvbmx5IGNh bGxlZCBpZgorCSAqIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEgaXMgcmVnaXN0ZXJlZCBhZnRlciBw b3N0bWFzdGVyIHN0YXJ0dXAgKHNlZQorCSAqIFNITUVNX0NBTExCQUNLU19BTExPV19BRlRFUl9T VEFSVFVQKS4KKwkgKi8KKwlTaG1lbUF0dGFjaENhbGxiYWNrIGF0dGFjaF9mbjsKKwl2b2lkCSAg ICphdHRhY2hfZm5fYXJnOworfSBTaG1lbUNhbGxiYWNrczsKKworLyoKKyAqIEZsYWdzIHRvIGNv bnRyb2wgdGhlIGJlaGF2aW9yIG9mIFJlZ2lzdGVyU2htZW1DYWxsYmFja3MoKS4KKyAqCisgKiBB TExPV19BRlRFUl9TVEFSVFVQOiBBbGxvdyB0aGVzZSBzaGFyZWQgbWVtb3J5IHVzYWdlcyB0byBi ZSByZWdpc3RlcmVkCisgKiBhZnRlciBwb3N0bWFzdGVyIHN0YXJ0dXAuICBOb3JtYWxseSwgcmVn aXN0ZXJpbmcgYSBzaGFyZWQgbWVtb3J5IHN5c3RlbQorICogYWZ0ZXIgcG9zdG1hc3RlciBzdGFy dHVwIGlzIG5vdCBhbGxvd2VkIGUuZy4gaW4gYW4gYWRkLWluIGxpYnJhcnkgbG9hZGVkCisgKiBv bi1kZW1haW5kIGluIGEgYmFja2VuZC4gIElmIGEgc3Vic3lzdGVtIHNldHMgdGhpcyBmbGFnLCB0 aGUgY2FsbGJhY2tzIGFyZQorICogY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHJlZ2lzdHJhdGlv biwgdG8gaW5pdGlhbGl6ZSBvciBhdHRhY2ggdG8gdGhlCisgKiByZXF1ZXN0ZWQgc2hhcmVkIG1l bW9yeSBhcmVhcy4gIFRoaXMgaXMgbm90IHVzZWQgYnkgYW55IGJ1aWx0LWluCisgKiBzdWJzeXN0 ZW1zLCBidXQgZXh0ZW5zaW9ucyBtYXkgZmluZCBpdCB1c2VmdWwuCisgKi8KKyNkZWZpbmUgU0hN RU1fQ0FMTEJBQ0tTX0FMTE9XX0FGVEVSX1NUQVJUVVAJCTB4MDAwMDAwMDEKKworZXh0ZXJuIHZv aWQgUmVnaXN0ZXJTaG1lbUNhbGxiYWNrcyhjb25zdCBTaG1lbUNhbGxiYWNrcyAqY2FsbGJhY2tz KTsKIGV4dGVybiBib29sIFNobWVtQWRkcklzVmFsaWQoY29uc3Qgdm9pZCAqYWRkcik7CisKKy8q CisgKiBUaGVzZSBtYWNyb3MgcHJvdmlkZSBzeW50YWN0aWMgc3VnYXIgZm9yIGNhbGxpbmcgdGhl IHVuZGVybHlpbmcgZnVuY3Rpb25zCisgKiB3aXRoIG5hbWVkIGFyZ3VtZW50cyAtbGlrZSBzeW50 YXguCisgKi8KKyNkZWZpbmUgU2htZW1SZXF1ZXN0U3RydWN0KC4uLikgIFwKKwlTaG1lbVJlcXVl c3RTdHJ1Y3RXaXRoT3B0cygmKFNobWVtU3RydWN0T3B0cyl7X19WQV9BUkdTX199KQorCisjZGVm aW5lIFNobWVtUmVxdWVzdEhhc2goLi4uKSAgXAorCVNobWVtUmVxdWVzdEhhc2hXaXRoT3B0cygm KFNobWVtSGFzaE9wdHMpe19fVkFfQVJHU19ffSkKKworZXh0ZXJuIHZvaWQgU2htZW1SZXF1ZXN0 U3RydWN0V2l0aE9wdHMoY29uc3QgU2htZW1TdHJ1Y3RPcHRzICpvcHRpb25zKTsKK2V4dGVybiB2 b2lkIFNobWVtUmVxdWVzdEhhc2hXaXRoT3B0cyhjb25zdCBTaG1lbUhhc2hPcHRzICpvcHRpb25z KTsKKworLyogbGVnYWN5IHNobWVtIGFsbG9jYXRpb24gZnVuY3Rpb25zICovCiBleHRlcm4gdm9p ZCAqU2htZW1Jbml0U3RydWN0KGNvbnN0IGNoYXIgKm5hbWUsIFNpemUgc2l6ZSwgYm9vbCAqZm91 bmRQdHIpOworZXh0ZXJuIEhUQUIgKlNobWVtSW5pdEhhc2goY29uc3QgY2hhciAqbmFtZSwgaW50 NjQgbmVsZW1zLAorCQkJCQkJICAgSEFTSENUTCAqaW5mb1AsIGludCBoYXNoX2ZsYWdzKTsKK2V4 dGVybiB2b2lkICpTaG1lbUFsbG9jKFNpemUgc2l6ZSk7CitleHRlcm4gdm9pZCAqU2htZW1BbGxv Y05vRXJyb3IoU2l6ZSBzaXplKTsKKwogZXh0ZXJuIFNpemUgYWRkX3NpemUoU2l6ZSBzMSwgU2l6 ZSBzMik7CiBleHRlcm4gU2l6ZSBtdWxfc2l6ZShTaXplIHMxLCBTaXplIHMyKTsKIAogZXh0ZXJu IFBHRExMSU1QT1JUIFNpemUgcGdfZ2V0X3NobWVtX3BhZ2VzaXplKHZvaWQpOwogCi0vKiBzaG1l bV9oYXNoLmMgKi8KLWV4dGVybiBIVEFCICpTaG1lbUluaXRIYXNoKGNvbnN0IGNoYXIgKm5hbWUs IGludDY0IG5lbGVtcywKLQkJCQkJCSAgIEhBU0hDVEwgKmluZm9QLCBpbnQgaGFzaF9mbGFncyk7 Ci1leHRlcm4gSFRBQiAqc2htZW1faGFzaF9jcmVhdGUodm9pZCAqbG9jYXRpb24sIHNpemVfdCBz aXplLCBib29sIGZvdW5kLAotCQkJCQkJCSAgIGNvbnN0IGNoYXIgKm5hbWUsIGludDY0IG5lbGVt cywgSEFTSENUTCAqaW5mb1AsIGludCBoYXNoX2ZsYWdzKQotCiAvKiBpcGNpLmMgKi8KIGV4dGVy biB2b2lkIFJlcXVlc3RBZGRpblNobWVtU3BhY2UoU2l6ZSBzaXplKTsKIAotLyogc2l6ZSBjb25z dGFudHMgZm9yIHRoZSBzaG1lbSBpbmRleCB0YWJsZSAqLwotIC8qIG1heCBzaXplIG9mIGRhdGEg c3RydWN0dXJlIHN0cmluZyBuYW1lICovCi0jZGVmaW5lIFNITUVNX0lOREVYX0tFWVNJWkUJCSAo NDgpCi0gLyogbWF4IG51bWJlciBvZiBuYW1lZCBzaG1lbSBzdHJ1Y3R1cmVzIGFuZCBoYXNoIHRh YmxlcyAqLwotI2RlZmluZSBTSE1FTV9JTkRFWF9TSVpFCQkgKDI1NikKLQotLyogdGhpcyBpcyBh IGhhc2ggYnVja2V0IGluIHRoZSBzaG1lbSBpbmRleCB0YWJsZSAqLwotdHlwZWRlZiBzdHJ1Y3QK LXsKLQljaGFyCQlrZXlbU0hNRU1fSU5ERVhfS0VZU0laRV07CS8qIHN0cmluZyBuYW1lICovCi0J dm9pZAkgICAqbG9jYXRpb247CQkvKiBsb2NhdGlvbiBpbiBzaGFyZWQgbWVtICovCi0JU2l6ZQkJ c2l6ZTsJCQkvKiAjIGJ5dGVzIHJlcXVlc3RlZCBmb3IgdGhlIHN0cnVjdHVyZSAqLwotCVNpemUJ CWFsbG9jYXRlZF9zaXplOyAvKiAjIGJ5dGVzIGFjdHVhbGx5IGFsbG9jYXRlZCAqLwotfSBTaG1l bUluZGV4RW50OwotCiAjZW5kaWYJCQkJCQkJLyogU0hNRU1fSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvc3RvcmFnZS9zaG1lbV9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9z aG1lbV9pbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5m ZTEyYmYzMzQzOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW1f aW50ZXJuYWwuaApAQCAtMCwwICsxLDUyIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBz aG1lbV9pbnRlcm5hbC5oCisgKgkgIEludGVybmFsIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHNobWVt IGFsbG9jYXRpb24KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAo YykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICog c3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbV9pbnRlcm5hbC5oCisgKgorICotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKi8KKyNpZm5kZWYgU0hNRU1fSU5URVJOQUxfSAorI2RlZmluZSBTSE1FTV9JTlRFUk5B TF9ICisKKyNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCisjaW5jbHVkZSAidXRpbHMvaHNlYXJj aC5oIgorCisvKiBEaWZmZXJlbnQga2luZHMgb2Ygc2htZW0gYXJlYXMuICovCit0eXBlZGVmIGVu dW0KK3sKKwlTSE1FTV9LSU5EX1NUUlVDVCA9IDAsCQkvKiBwbGFpbiwgY29udGlndW91cyBhcmVh IG9mIG1lbW9yeSAqLworCVNITUVNX0tJTkRfSEFTSCwJCQkvKiBhIGhhc2ggdGFibGUgKi8KK30g U2htZW1SZXF1ZXN0S2luZDsKKworLyogc2htZW0uYyAqLwordHlwZWRlZiBzdHJ1Y3QgUEdTaG1l bUhlYWRlciBQR1NobWVtSGVhZGVyOyAvKiBhdm9pZCBpbmNsdWRpbmcKKwkJCQkJCQkJCQkJICog c3RvcmFnZS9wZ19zaG1lbS5oIGhlcmUgKi8KK2V4dGVybiB2b2lkIFNobWVtQ2FsbFJlcXVlc3RD YWxsYmFja3Modm9pZCk7CitleHRlcm4gdm9pZCBJbml0U2htZW1BbGxvY2F0b3IoUEdTaG1lbUhl YWRlciAqc2VnaGRyKTsKKyNpZmRlZiBFWEVDX0JBQ0tFTkQKK2V4dGVybiB2b2lkIEF0dGFjaFNo bWVtQWxsb2NhdG9yKFBHU2htZW1IZWFkZXIgKnNlZ2hkcik7CisjZW5kaWYKK2V4dGVybiB2b2lk IFJlc2V0U2htZW1BbGxvY2F0b3Iodm9pZCk7CisKK2V4dGVybiB2b2lkIFNobWVtUmVxdWVzdElu dGVybmFsKFNobWVtU3RydWN0T3B0cyAqb3B0aW9ucywgU2htZW1SZXF1ZXN0S2luZCBraW5kKTsK KworZXh0ZXJuIHNpemVfdCBTaG1lbUdldFJlcXVlc3RlZFNpemUodm9pZCk7CitleHRlcm4gdm9p ZCBTaG1lbUluaXRSZXF1ZXN0ZWQodm9pZCk7CisjaWZkZWYgRVhFQ19CQUNLRU5ECitleHRlcm4g dm9pZCBTaG1lbUF0dGFjaFJlcXVlc3RlZCh2b2lkKTsKKyNlbmRpZgorCitleHRlcm4gUEdETExJ TVBPUlQgU2l6ZSBwZ19nZXRfc2htZW1fcGFnZXNpemUodm9pZCk7CisKKy8qIHNobWVtX2hhc2gu YyAqLworZXh0ZXJuIEhUQUIgKnNobWVtX2hhc2hfY3JlYXRlKHZvaWQgKmxvY2F0aW9uLCBzaXpl X3Qgc2l6ZSwgYm9vbCBmb3VuZCwKKwkJCQkJCQkgICBjb25zdCBjaGFyICpuYW1lLCBpbnQ2NCBu ZWxlbXMsIEhBU0hDVEwgKmluZm9QLCBpbnQgaGFzaF9mbGFncyk7CitleHRlcm4gdm9pZCBzaG1l bV9oYXNoX2luaXQodm9pZCAqbG9jYXRpb24sIFNobWVtU3RydWN0T3B0cyAqb3B0aW9ucyk7Citl eHRlcm4gdm9pZCBzaG1lbV9oYXNoX2F0dGFjaCh2b2lkICpsb2NhdGlvbiwgU2htZW1TdHJ1Y3RP cHRzICpvcHRpb25zKTsKKworI2VuZGlmCQkJCQkJCS8qIFNITUVNX0lOVEVSTkFMX0ggKi8KZGlm ZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggYzcyZjZjNTk1NzMuLmI4NDE2Nzc0MWZiIDEwMDY0 NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjg2Myw5ICsyODYzLDE2IEBAIFNoYXJlZFR5cG1v ZFRhYmxlRW50cnkKIFNoYXJlZHNvcnQKIFNoZWxsVHlwZUluZm8KIFNoaXBwYWJsZUNhY2hlRW50 cnkKLVNobWVtQWxsb2NhdG9yRGF0YQogU2hpcHBhYmxlQ2FjaGVLZXkKK1NobWVtQWxsb2NhdG9y RGF0YQorU2htZW1DYWxsYmFja3MKIFNobWVtSW5kZXhFbnQKK1NobWVtSGFzaERlc2MKK1NobWVt SGFzaE9wdHMKK1NobWVtUmVxdWVzdAorU2htZW1SZXF1ZXN0S2luZAorU2htZW1TdHJ1Y3REZXNj CitTaG1lbVN0cnVjdE9wdHMKIFNodXRkb3duRm9yZWlnblNjYW5fZnVuY3Rpb24KIFNodXRkb3du SW5mb3JtYXRpb24KIFNodXRkb3duTW9kZQotLSAKMi4zNC4xCgo= --00000000000057312d064eb03f86 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405-0003-Add-test-module-to-test-after-startup-shme.patch" Content-Disposition: attachment; filename="v20260405-0003-Add-test-module-to-test-after-startup-shme.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlchneo2 RnJvbSBiMTg1ZWU2N2YwZTkxMDhlZGI0MThlZGViMTRkMDVkYTIxZjZhNjg5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFdlZCwgMSBBcHIgMjAyNiAxODoxMDozMSArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjYwNDA1IDAzLzE1XSBBZGQgdGVzdCBtb2R1bGUgdG8gdGVzdCBhZnRlci1zdGFy dHVwIHNobWVtCiBhbGxvY2F0aW9ucwoKTm9uZSBvZiB0aGUgZXhpc3RpbmcgbW9kdWxlcyBjb3Vs ZCBtYWtlIHVzZSBvZiB0aGUgbGF6eSBzaG1lbQphbGxvY2F0aW9uIGFmdGVyIHBvc3RtYXN0ZXIg c3RhcnR1cDoKCi0gcGdfc3RhdF9zdGF0ZW1lbnRzIG5lZWRzIHRvIGxvYWQgYW5kIGR1bXAgc3Rh dHMgZmlsZSBvbiBzdGFydHVwIGFuZAogIHNodXRkb3duLCB3aGljaCBkb2Vzbid0IHJlYWxseSB3 b3JrIGlmIHRoZSBsaWJyYXJ5IGlzIG5vdCBsb2FkZWQgaW50bwogIHBvc3RtYXN0ZXIKCi0gdGVz dF9haW8gcmVnaXN0ZXJzIGluamVjdGlvbiBwb2ludHMsIHdoaWNoIHJlZmVyZW5jZSB0aGUgbGli cmFyeQogIGl0c2VsZiwgd2hpY2ggY3JlYXRlcyBhIHdlaXJkIGluaXRpYWxpemF0aW9uIGxvb3Ag aWYgeW91IHRyeSB0byBkbwogIHRoYXQgZGlyZWN0bHkgZnJvbSBfUEdfaW5pdCgpIGluIGEgYmFj a2VuZC4gVGhlIGluaXRpYWxpemF0aW9uCiAgcmVhbGx5IG5lZWRzIHRvIGhhcHBlbiBhZnRlciBf UEdfaW5pdCgpCgotIGluamVjdGlvbl9wb2ludHMgd291bGQgYmUgYSBjYW5kaWRhdGUsIGJ1dCBp dCBhbHJlYWR5IGtub3dzIHRvIHVzZQogIERTTSB3aGVuIGl0J3Mgbm90IGxvYWRlZCBmcm9tIHNo YXJlZF9wcmVsb2FkX2xpYnJhcmllcy4KLS0tCiBzcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlICAg ICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZCAg ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS9NYWtl ZmlsZSAgICAgICAgICB8ICAyNCArKysrKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL21l c29uLmJ1aWxkICAgICAgIHwgIDMzICsrKysrKwogLi4uL3Rlc3Rfc2htZW0vdC8wMDFfbGF0ZV9z aG1lbV9hbGxvYy5wbCAgICAgIHwgIDQ5ICsrKysrKysrKwogLi4uL21vZHVsZXMvdGVzdF9zaG1l bS90ZXN0X3NobWVtLS0xLjAuc3FsICAgIHwgICA5ICsrCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf c2htZW0vdGVzdF9zaG1lbS5jICAgICAgfCAxMDEgKysrKysrKysrKysrKysrKysrCiAuLi4vbW9k dWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0uY29udHJvbCAgICAgfCAgIDMgKwogc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAxICsKIDkgZmlsZXMgY2hh bmdlZCwgMjIyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1 bGVzL3Rlc3Rfc2htZW0vTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1 bGVzL3Rlc3Rfc2htZW0vbWVzb24uYnVpbGQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9t b2R1bGVzL3Rlc3Rfc2htZW0vdC8wMDFfbGF0ZV9zaG1lbV9hbGxvYy5wbAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0X3NobWVtLS0xLjAuc3FsCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0u YwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0X3No bWVtLmNvbnRyb2wKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlIGIvc3Jj L3Rlc3QvbW9kdWxlcy9NYWtlZmlsZQppbmRleCA4NjRiNDA3YWJjZi4uZjFiMDRjOTk5NjkgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy9NYWtlZmlsZQpAQCAtNDgsNiArNDgsNyBAQCBTVUJESVJTID0gXAogCQkgIHRlc3RfcmVzb3du ZXIgXAogCQkgIHRlc3RfcmxzX2hvb2tzIFwKIAkJICB0ZXN0X3Nhc2xwcmVwIFwKKwkJICB0ZXN0 X3NobWVtIFwKIAkJICB0ZXN0X3NobV9tcSBcCiAJCSAgdGVzdF9zbHJ1IFwKIAkJICB0ZXN0X3Rp ZHN0b3JlIFwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQgYi9zcmMv dGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkCmluZGV4IGU1YWNhY2Q1MDgzLi5mYzk5NTUyZDlhYiAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9t b2R1bGVzL21lc29uLmJ1aWxkCkBAIC00OSw2ICs0OSw3IEBAIHN1YmRpcigndGVzdF9yZWdleCcp CiBzdWJkaXIoJ3Rlc3RfcmVzb3duZXInKQogc3ViZGlyKCd0ZXN0X3Jsc19ob29rcycpCiBzdWJk aXIoJ3Rlc3Rfc2FzbHByZXAnKQorc3ViZGlyKCd0ZXN0X3NobWVtJykKIHN1YmRpcigndGVzdF9z aG1fbXEnKQogc3ViZGlyKCd0ZXN0X3NscnUnKQogc3ViZGlyKCd0ZXN0X3RpZHN0b3JlJykKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS9NYWtlZmlsZSBiL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9zaG1lbS9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uMjQwN2Y3NDYyZmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3Rfc2htZW0vTWFrZWZpbGUKQEAgLTAsMCArMSwyNCBAQAorIyBzcmMvdGVzdC9tb2R1 bGVzL3Rlc3Rfc2htZW0vTWFrZWZpbGUKKworUEdGSUxFREVTQyA9ICJ0ZXN0X3NobWVtIC0gdGVz dCBjb2RlIGZvciBzaG1lbSBhbGxvY2F0aW9ucyIKKworTU9EVUxFX2JpZyA9IHRlc3Rfc2htZW0K K09CSlMgPSBcCisJJChXSU4zMlJFUykgXAorCXRlc3Rfc2htZW0ubworCitFWFRFTlNJT04gPSB0 ZXN0X3NobWVtCitEQVRBID0gdGVzdF9zaG1lbS0tMS4wLnNxbAorCitUQVBfVEVTVFMgPSAxCisK K2lmZGVmIFVTRV9QR1hTCitQR19DT05GSUcgPSBwZ19jb25maWcKK1BHWFMgOj0gJChzaGVsbCAk KFBHX0NPTkZJRykgLS1wZ3hzKQoraW5jbHVkZSAkKFBHWFMpCitlbHNlCitzdWJkaXIgPSBzcmMv dGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0KK3RvcF9idWlsZGRpciA9IC4uLy4uLy4uLy4uCitpbmNs dWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCitpbmNsdWRlICQodG9wX3Ny Y2RpcikvY29udHJpYi9jb250cmliLWdsb2JhbC5taworZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9zaG1lbS9tZXNvbi5idWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uZmI0YmYzMjhiOGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf c2htZW0vbWVzb24uYnVpbGQKQEAgLTAsMCArMSwzMyBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjQt MjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKwordGVzdF9zaG1lbV9z b3VyY2VzID0gZmlsZXMoCisgICd0ZXN0X3NobWVtLmMnLAorKQorCitpZiBob3N0X3N5c3RlbSA9 PSAnd2luZG93cycKKyAgdGVzdF9zaG1lbV9zb3VyY2VzICs9IHJjX2xpYl9nZW4ucHJvY2Vzcyh3 aW4zMnZlcl9yYywgZXh0cmFfYXJnczogWworICAgICctLU5BTUUnLCAndGVzdF9zaG1lbScsCisg ICAgJy0tRklMRURFU0MnLCAndGVzdF9zaG1lbSAtIHRlc3QgY29kZSBmb3Igc2htZW0gYWxsb2Nh dGlvbnMnLF0pCitlbmRpZgorCit0ZXN0X3NobWVtID0gc2hhcmVkX21vZHVsZSgndGVzdF9zaG1l bScsCisgIHRlc3Rfc2htZW1fc291cmNlcywKKyAga3dhcmdzOiBwZ190ZXN0X21vZF9hcmdzLAor KQordGVzdF9pbnN0YWxsX2xpYnMgKz0gdGVzdF9zaG1lbQorCit0ZXN0X2luc3RhbGxfZGF0YSAr PSBmaWxlcygKKyAgJ3Rlc3Rfc2htZW0uY29udHJvbCcsCisgICd0ZXN0X3NobWVtLS0xLjAuc3Fs JywKKykKKwordGVzdHMgKz0geworICAnbmFtZSc6ICd0ZXN0X3NobWVtJywKKyAgJ3NkJzogbWVz b24uY3VycmVudF9zb3VyY2VfZGlyKCksCisgICdiZCc6IG1lc29uLmN1cnJlbnRfYnVpbGRfZGly KCksCisgICd0YXAnOiB7CisgICAgJ3Rlc3RzJzogWworICAgICAgJ3QvMDAxX2xhdGVfc2htZW1f YWxsb2MucGwnLAorICAgIF0sCisgIH0sCit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVz L3Rlc3Rfc2htZW0vdC8wMDFfbGF0ZV9zaG1lbV9hbGxvYy5wbCBiL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9zaG1lbS90LzAwMV9sYXRlX3NobWVtX2FsbG9jLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi5jMTU0ZjU3NjgyYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90LzAwMV9sYXRlX3NobWVtX2FsbG9jLnBsCkBAIC0wLDAg KzEsNDkgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2Fs bCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRl c3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKKyMjIworIyBUZXN0IGFsbG9jYXRpbmcgbWVt b3J5IGFmdGVyIHN0YXJ0dXAsIGkuZS4gd2hlbiB0aGUgbGlicmFyeSBpcyBub3QKKyMgaW4gc2hh cmVkX3ByZWxvYWRfbGlicmFyaWVzCisjIyMKK215ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6 Q2x1c3Rlci0+bmV3KCdtYWluJyk7Ciskbm9kZS0+aW5pdDsKKyRub2RlLT5zdGFydDsKKworCisk bm9kZS0+c2FmZV9wc3FsKCJwb3N0Z3JlcyIsICJDUkVBVEUgRVhURU5TSU9OIHRlc3Rfc2htZW07 Iik7CisKKyMgQ2hlY2sgdGhhdCB0aGUgYXR0YWNoIGNvdW50ZXIgaXMgaW5jcmVtZW50ZWQgb24g YSBuZXcgY29ubmVjdGlvbgorbXkgJGF0dGFjaF9jb3VudDEgPSAkbm9kZS0+c2FmZV9wc3FsKCJw b3N0Z3JlcyIsICJTRUxFQ1QgZ2V0X3Rlc3Rfc2htZW1fYXR0YWNoX2NvdW50KCk7Iik7CitteSAk YXR0YWNoX2NvdW50MiA9ICRub2RlLT5zYWZlX3BzcWwoInBvc3RncmVzIiwgIlNFTEVDVCBnZXRf dGVzdF9zaG1lbV9hdHRhY2hfY291bnQoKTsiKTsKK2NtcF9vaygkYXR0YWNoX2NvdW50MiwgJz4n LCAkYXR0YWNoX2NvdW50MSwgImF0dGFjaCBjYWxsYmFjayBpcyBjYWxsZWQgaW4gZWFjaCBiYWNr ZW5kIik7Ciskbm9kZS0+c3RvcDsKKworIyMjCisjIFRlc3QgdGhhdCBsb2FkaW5nIHZpYSBzaGFy ZWRfcHJlbG9hZF9saWJyYXJpZXMgYWxzbyB3b3JrcworIyMjCiskbm9kZS0+YXBwZW5kX2NvbmYo J3Bvc3RncmVzcWwuY29uZicsICJzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMgPSAndGVzdF9zaG1l bSciKTsKKyRub2RlLT5zdGFydDsKKworIyBXaGVuIGxvYWRlZCB2aWEgc2hhcmVkX3ByZWxvYWRf bGlicmFyaWVzLCB0aGUgYXR0YWNoIGNhbGxiYWNrIGlzCisjIGNhbGxlZCBvciBub3QsIGRlcGVu ZGluZyBvbiB3aGV0aGVyIHRoaXMgaXMgYW4gRVhFQ19CQUNLRU5EIGJ1aWxkLgorbXkgJGV4ZWNf YmFja2VuZCA9ICRub2RlLT5zYWZlX3BzcWwoInBvc3RncmVzIiwgIlNIT1cgZGVidWdfZXhlY19i YWNrZW5kOyIpIGVxICdvbic7CiskYXR0YWNoX2NvdW50MSA9ICRub2RlLT5zYWZlX3BzcWwoInBv c3RncmVzIiwgIlNFTEVDVCBnZXRfdGVzdF9zaG1lbV9hdHRhY2hfY291bnQoKTsiKTsKKyRhdHRh Y2hfY291bnQyID0gJG5vZGUtPnNhZmVfcHNxbCgicG9zdGdyZXMiLCAiU0VMRUNUIGdldF90ZXN0 X3NobWVtX2F0dGFjaF9jb3VudCgpOyIpOworCitpZiAoJGV4ZWNfYmFja2VuZCkKK3sKKyAgIGNt cF9vaygkYXR0YWNoX2NvdW50MiwgJz4nLCAkYXR0YWNoX2NvdW50MSwgImF0dGFjaCBjYWxsYmFj ayBpcyBjYWxsZWQgaW4gZWFjaCBiYWNrZW5kIHdoZW4gbG9hZGVkIHZpYSBzaGFyZWRfcHJlbG9h ZF9saWJyYXJpZXMiKTsKK30KK2Vsc2UKK3sKKyAgIG9rKCRhdHRhY2hfY291bnQxID09IDAgJiYg JGF0dGFjaF9jb3VudDIgPT0gMCwgImF0dGFjaCBjYWxsYmFjayBpcyBub3QgY2FsbGVkIHdoZW4g bG9hZGVkIHZpYSBzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXMiKTsKK30KKworJG5vZGUtPnN0b3A7 Citkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1l bS90ZXN0X3NobWVtLS0xLjAuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rf c2htZW0tLTEuMC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJk MDFmZDkyNTZjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVt L3Rlc3Rfc2htZW0tLTEuMC5zcWwKQEAgLTAsMCArMSw5IEBACisvKiBzcmMvdGVzdC9tb2R1bGVz L3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS0tMS4wLnNxbCAqLworCistLSBjb21wbGFpbiBpZiBzY3Jp cHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lPTgor XGVjaG8gVXNlICJDUkVBVEUgRVhURU5TSU9OIHRlc3Rfc2htZW0iIHRvIGxvYWQgdGhpcyBmaWxl LiBccXVpdAorCisKK0NSRUFURSBGVU5DVElPTiBnZXRfdGVzdF9zaG1lbV9hdHRhY2hfY291bnQo KQorUkVUVVJOUyBwZ19jYXRhbG9nLmludDQgU1RSSUNUCitBUyAnTU9EVUxFX1BBVEhOQU1FJyBM QU5HVUFHRSBDOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rf c2htZW0uYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0X3NobWVtLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjliZDQwMTJiNDM1Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0uYwpAQCAtMCww ICsxLDEwMSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogdGVzdF9zaG1lbS5jCisgKgkJ SGVscGVycyB0byB0ZXN0IHNobWVtIGFsbG9jYXRpb24gcm91dGluZXMKKyAqCisgKiBUZXN0IGJh c2ljIG1lbW9yeSBhbGxvY2F0aW9uIGluIGFuIGV4dGVuc2lvbiBtb2R1bGUuIE9uZSBub3RhYmxl IGZlYXR1cmUKKyAqIHRoYXQgaXMgbm90IGV4ZXJjaXNlZCBieSBhbnkgb3RoZXIgbW9kdWxlIGlu IHRoZSByZXBvc2l0b3J5IGlzIHRoZQorICogYWxsb2NhdGluZyAobm9uLURTTSkgc2hhcmVkIG1l bW9yeSBhZnRlciBwb3N0bWFzdGVyIHN0YXJ0dXAuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDIw LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJ RklDQVRJT04KKyAqCSAgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0uYwor ICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisj aW5jbHVkZSAiZm1nci5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInN0b3Jh Z2Uvc2htZW0uaCIKKworCitQR19NT0RVTEVfTUFHSUM7CisKK3R5cGVkZWYgc3RydWN0IFRlc3RT aG1lbURhdGEKK3sKKwlpbnQJCQl2YWx1ZTsKKwlib29sCQlpbml0aWFsaXplZDsKKwlpbnQJCQlh dHRhY2hfY291bnQ7Cit9IFRlc3RTaG1lbURhdGE7CisKK3N0YXRpYyBUZXN0U2htZW1EYXRhICpU ZXN0U2htZW07CisKK3N0YXRpYyBib29sIGF0dGFjaGVkX29yX2luaXRpYWxpemVkID0gZmFsc2U7 CisKK3N0YXRpYyB2b2lkIHRlc3Rfc2htZW1fcmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZv aWQgdGVzdF9zaG1lbV9pbml0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCB0ZXN0X3NobWVtX2F0 dGFjaCh2b2lkICphcmcpOworCitzdGF0aWMgY29uc3QgU2htZW1DYWxsYmFja3MgVGVzdFNobWVt Q2FsbGJhY2tzID0geworCS5mbGFncyA9IFNITUVNX0NBTExCQUNLU19BTExPV19BRlRFUl9TVEFS VFVQLAorCS5yZXF1ZXN0X2ZuID0gdGVzdF9zaG1lbV9yZXF1ZXN0LAorCS5pbml0X2ZuID0gdGVz dF9zaG1lbV9pbml0LAorCS5hdHRhY2hfZm4gPSB0ZXN0X3NobWVtX2F0dGFjaCwKK307CisKK3N0 YXRpYyB2b2lkCit0ZXN0X3NobWVtX3JlcXVlc3Qodm9pZCAqYXJnKQoreworCWVsb2coTE9HLCAi dGVzdF9zaG1lbV9yZXF1ZXN0IGNhbGxiYWNrIGNhbGxlZCIpOworCisJU2htZW1SZXF1ZXN0U3Ry dWN0KC5uYW1lID0gInRlc3Rfc2htZW0gYXJlYSIsCisJCQkJCSAgIC5zaXplID0gc2l6ZW9mKFRl c3RTaG1lbURhdGEpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZUZXN0U2htZW0pOworfQor CitzdGF0aWMgdm9pZAordGVzdF9zaG1lbV9pbml0KHZvaWQgKmFyZykKK3sKKwllbG9nKExPRywg ImluaXQgY2FsbGJhY2sgY2FsbGVkIik7CisJaWYgKFRlc3RTaG1lbS0+aW5pdGlhbGl6ZWQpCisJ CWVsb2coRVJST1IsICJzaG1lbSBhcmVhIGFscmVhZHkgaW5pdGlhbGl6ZWQiKTsKKwlUZXN0U2ht ZW0tPmluaXRpYWxpemVkID0gdHJ1ZTsKKworCWlmIChhdHRhY2hlZF9vcl9pbml0aWFsaXplZCkK KwkJZWxvZyhFUlJPUiwgImF0dGFjaCBvciBpbml0aWFsaXplIGFscmVhZHkgY2FsbGVkIGluIHRo aXMgcHJvY2VzcyIpOworCWF0dGFjaGVkX29yX2luaXRpYWxpemVkID0gdHJ1ZTsKK30KKworc3Rh dGljIHZvaWQKK3Rlc3Rfc2htZW1fYXR0YWNoKHZvaWQgKmFyZykKK3sKKwllbG9nKExPRywgInRl c3Rfc2htZW1fYXR0YWNoIGNhbGxiYWNrIGNhbGxlZCIpOworCWlmICghVGVzdFNobWVtLT5pbml0 aWFsaXplZCkKKwkJZWxvZyhFUlJPUiwgInNobWVtIGFyZWEgbm90IHlldCBpbml0aWFsaXplZCIp OworCVRlc3RTaG1lbS0+YXR0YWNoX2NvdW50Kys7CisKKwlpZiAoYXR0YWNoZWRfb3JfaW5pdGlh bGl6ZWQpCisJCWVsb2coRVJST1IsICJhdHRhY2ggb3IgaW5pdGlhbGl6ZSBhbHJlYWR5IGNhbGxl ZCBpbiB0aGlzIHByb2Nlc3MiKTsKKwlhdHRhY2hlZF9vcl9pbml0aWFsaXplZCA9IHRydWU7Cit9 CisKK3ZvaWQKK19QR19pbml0KHZvaWQpCit7CisJZWxvZyhMT0csICJ0ZXN0X3NobWVtIG1vZHVs ZSdzIF9QR19pbml0IGNhbGxlZCIpOworCVJlZ2lzdGVyU2htZW1DYWxsYmFja3MoJlRlc3RTaG1l bUNhbGxiYWNrcyk7Cit9CisKK1BHX0ZVTkNUSU9OX0lORk9fVjEoZ2V0X3Rlc3Rfc2htZW1fYXR0 YWNoX2NvdW50KTsKK0RhdHVtCitnZXRfdGVzdF9zaG1lbV9hdHRhY2hfY291bnQoUEdfRlVOQ1RJ T05fQVJHUykKK3sKKwlpZiAoIWF0dGFjaGVkX29yX2luaXRpYWxpemVkKQorCQllbG9nKEVSUk9S LCAic2htZW0gYXJlYSBub3QgYXR0YWNoZWQgb3IgaW5pdGlhbGl6ZWQgaW4gdGhpcyBwcm9jZXNz Iik7CisJaWYgKCFUZXN0U2htZW0tPmluaXRpYWxpemVkKQorCQllbG9nKEVSUk9SLCAic2htZW0g YXJlYSBub3QgeWV0IGluaXRpYWxpemVkIik7CisJUEdfUkVUVVJOX0lOVDMyKFRlc3RTaG1lbS0+ YXR0YWNoX2NvdW50KTsKK30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1l bS90ZXN0X3NobWVtLmNvbnRyb2wgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vdGVzdF9z aG1lbS5jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mMmYy NmY0NTM3YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90 ZXN0X3NobWVtLmNvbnRyb2wKQEAgLTAsMCArMSwzIEBACitjb21tZW50ID0gJ1Rlc3QgY29kZSBm b3Igc2htZW0gYWxsb2NhdGlvbnMnCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4wJworbW9kdWxlX3Bh dGhuYW1lID0gJyRsaWJkaXIvdGVzdF9zaG1lbScKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5k ZXggYjg0MTY3NzQxZmIuLjYzYzBiM2E5NDY1IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApA QCAtMzE0Niw2ICszMTQ2LDcgQEAgVGVzdERTTVJlZ2lzdHJ5SGFzaEVudHJ5CiBUZXN0RFNNUmVn aXN0cnlTdHJ1Y3QKIFRlc3REZWNvZGluZ0RhdGEKIFRlc3REZWNvZGluZ1R4bkRhdGEKK1Rlc3RT aG1lbURhdGEKIFRlc3RTcGVjCiBUZXN0VmFsdWVUeXBlCiBUZXh0RnJlcQotLSAKMi4zNC4xCgo= --00000000000057312d064eb03f86 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405-0005-Introduce-registry-of-built-in-subsystems.patch" Content-Disposition: attachment; filename="v20260405-0005-Introduce-registry-of-built-in-subsystems.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlchneu4 RnJvbSBhMmYwMzY2N2Q2ZGVlNGExMjYzMWQxMjJkYzk2NDQwYTA0NzIzMjBlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFdlZCwgMSBBcHIgMjAyNiAxODoyMTowMiArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjYwNDA1IDA1LzE1XSBJbnRyb2R1Y2UgcmVnaXN0cnkgb2YgYnVpbHQtaW4gc3Vi c3lzdGVtcwoKVG8gYWRkIGEgbmV3IGJ1aWx0LWluIHN1YnN5c3RlbSwgYWRkIGl0IHRvIHN1YnN5 c3RlbXNsaXN0LmguIFRoYXQKaG9va3MgdXAgaXRzIGNhbGxiYWNrcyBzbyB0aGF0IHRoZXkgZ2V0 IGNhbGxlZCBhdCB0aGUgcmlnaHQgdGltZXMKZHVyaW5nIHBvc3RtYXN0ZXIgc3RhcnR1cC4gRm9y IG5vdyB0aGlzIGlzIHVudXNlZCwgYnV0IHdpbGwgcmVwbGFjZQp0aGUgY3VycmVudCBTdWJzeXN0 ZW1TaG1lbVNpemUoKSBhbmQgU3Vic3lzdGVtU2htZW1Jbml0KCkgY2FsbHMgaW4KdGhlIG5leHQg Y29tbWl0cy4KLS0tCiBzcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0cmFwLmMgICAgICAgfCAg MiArKwogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9sYXVuY2hfYmFja2VuZC5jIHwgIDIgKysKIHNy Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jICAgICB8ICA1ICsrKysrCiBzcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMgICAgICAgICAgfCAyMSArKysrKysrKysrKysrKysrKwog c3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgIHwgIDMgKysrCiBzcmMvaW5j bHVkZS9zdG9yYWdlL2lwYy5oICAgICAgICAgICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS9zdG9y YWdlL3N1YnN5c3RlbWxpc3QuaCAgICAgfCAyMyArKysrKysrKysrKysrKysrKysrCiBzcmMvaW5j bHVkZS9zdG9yYWdlL3N1YnN5c3RlbXMuaCAgICAgICAgfCAzMCArKysrKysrKysrKysrKysrKysr KysrKysrCiBzcmMvdG9vbHMvcGdpbmNsdWRlL2hlYWRlcnNjaGVjayAgICAgICAgfCAgMSArCiA5 IGZpbGVzIGNoYW5nZWQsIDg4IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv aW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9p bmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtcy5oCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYm9v dHN0cmFwL2Jvb3RzdHJhcC5jIGIvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jCmlu ZGV4IGM3MDdjY2ZhNTYzLi40OWQ4OGExYjZkZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYm9v dHN0cmFwL2Jvb3RzdHJhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAu YwpAQCAtMzYzLDYgKzM2Myw4IEBAIEJvb3RzdHJhcE1vZGVNYWluKGludCBhcmdjLCBjaGFyICph cmd2W10sIGJvb2wgY2hlY2tfb25seSkKIAlTZXRQcm9jZXNzaW5nTW9kZShCb290c3RyYXBQcm9j ZXNzaW5nKTsKIAlJZ25vcmVTeXN0ZW1JbmRleGVzID0gdHJ1ZTsKIAorCVJlZ2lzdGVyQnVpbHRp blNobWVtQ2FsbGJhY2tzKCk7CisKIAlJbml0aWFsaXplTWF4QmFja2VuZHMoKTsKIAogCS8qCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2xhdW5jaF9iYWNrZW5kLmMgYi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL2xhdW5jaF9iYWNrZW5kLmMKaW5kZXggMDk3MzAxMGI3ZGMuLmVk MGY0ZjJkMjM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2xhdW5jaF9iYWNr ZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9sYXVuY2hfYmFja2VuZC5jCkBAIC02 NjQsNiArNjY0LDggQEAgU3ViUG9zdG1hc3Rlck1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK IAkgKi8KIAlMb2NhbFByb2Nlc3NDb250cm9sRmlsZShmYWxzZSk7CiAKKwlSZWdpc3RlckJ1aWx0 aW5TaG1lbUNhbGxiYWNrcygpOworCiAJLyoKIAkgKiBSZWxvYWQgYW55IGxpYnJhcmllcyB0aGF0 IHdlcmUgcHJlbG9hZGVkIGJ5IHRoZSBwb3N0bWFzdGVyLiAgU2luY2Ugd2UKIAkgKiBleGVjJ2Qg dGhpcyBwcm9jZXNzLCB0aG9zZSBsaWJyYXJpZXMgZGlkbid0IGNvbWUgYWxvbmcgd2l0aCB1czsg YnV0IHdlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyBi L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCmluZGV4IDY5MzQ3NTAxNGZlLi5i MjAxMGJjZTE4NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVy LmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKQEAgLTkyMiw2ICs5 MjIsMTEgQEAgUG9zdG1hc3Rlck1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkgKi8KIAlB cHBseUxhdW5jaGVyUmVnaXN0ZXIoKTsKIAorCS8qCisJICogUmVnaXN0ZXIgdGhlIHNoYXJlZCBt ZW1vcnkgbmVlZHMgb2YgYWxsIGNvcmUgc3Vic3lzdGVtcy4KKwkgKi8KKwlSZWdpc3RlckJ1aWx0 aW5TaG1lbUNhbGxiYWNrcygpOworCiAJLyoKIAkgKiBwcm9jZXNzIGFueSBsaWJyYXJpZXMgdGhh dCBzaG91bGQgYmUgcHJlbG9hZGVkIGF0IHBvc3RtYXN0ZXIgc3RhcnQKIAkgKi8KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL2lwY2kuYwppbmRleCAyNDQyMmE4MGFiMy4uZTRhNmE1MmYxMmQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9pcGNpLmMKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwu aCIKICNpbmNsdWRlICJzdG9yYWdlL3NobWVtX2ludGVybmFsLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9zaW52YWxhZHQuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRl ICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNs dWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCkBAIC0yNTIsNiArMjUzLDI2IEBAIENyZWF0ZVNoYXJl ZE1lbW9yeUFuZFNlbWFwaG9yZXModm9pZCkKIAkJc2htZW1fc3RhcnR1cF9ob29rKCk7CiB9CiAK Ky8qCisgKiBFYXJseSBpbml0aWFsaXphdGlvbiBvZiB2YXJpb3VzIHN1YnN5c3RlbXMsIGdpdmlu ZyB0aGVtIGEgY2hhbmNlIHRvCisgKiByZWdpc3RlciB0aGVpciBzaGFyZWQgbWVtb3J5IG5lZWRz IGJlZm9yZSB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50IGlzCisgKiBhbGxvY2F0ZWQuCisgKi8K K3ZvaWQKK1JlZ2lzdGVyQnVpbHRpblNobWVtQ2FsbGJhY2tzKHZvaWQpCit7CisJLyoKKwkgKiBD YWxsIFJlZ2lzdGVyU2htZW1DYWxsYmFja3MoLi4uKSBvbiBlYWNoIHN1YnN5c3RlbSBsaXN0ZWQg aW4KKwkgKiBzdWJzeXN0ZW1zbGlzdC5oCisJICovCisjZGVmaW5lIFBHX1NITUVNX1NVQlNZU1RF TShzdWJzeXN0ZW1fY2FsbGJhY2tzKSBcCisJUmVnaXN0ZXJTaG1lbUNhbGxiYWNrcygmKHN1YnN5 c3RlbV9jYWxsYmFja3MpKTsKKworI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oIgor CisjdW5kZWYgUEdfU0hNRU1fU1VCU1lTVEVNCit9CisKIC8qCiAgKiBJbml0aWFsaXplIHZhcmlv dXMgc3Vic3lzdGVtcywgc2V0dGluZyB1cCB0aGVpciBkYXRhIHN0cnVjdHVyZXMgaW4KICAqIHNo YXJlZCBtZW1vcnkuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9z cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggOTM4NTEyNjllNDMuLjZhOWZmM2FkMjI1 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tl bmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC00MTM4LDYgKzQxMzgsOSBAQCBQb3N0Z3Jlc1NpbmdsZVVz ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10sCiAJLyogcmVhZCBjb250cm9sIGZpbGUgKGVy cm9yIGNoZWNraW5nIGFuZCBjb250YWlucyBjb25maWcgKSAqLwogCUxvY2FsUHJvY2Vzc0NvbnRy b2xGaWxlKGZhbHNlKTsKIAorCS8qIFJlZ2lzdGVyIHRoZSBzaGFyZWQgbWVtb3J5IG5lZWRzIG9m IGFsbCBjb3JlIHN1YnN5c3RlbXMuICovCisJUmVnaXN0ZXJCdWlsdGluU2htZW1DYWxsYmFja3Mo KTsKKwogCS8qCiAJICogcHJvY2VzcyBhbnkgbGlicmFyaWVzIHRoYXQgc2hvdWxkIGJlIHByZWxv YWRlZCBhdCBwb3N0bWFzdGVyIHN0YXJ0CiAJICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9z dG9yYWdlL2lwYy5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9pcGMuaAppbmRleCBkYTMyNzg3YWI1 MS4uYjIwNWIwMGU3YTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvaXBjLmgKKysr IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9pcGMuaApAQCAtNzcsNiArNzcsNyBAQCBleHRlcm4gdm9p ZCBjaGVja19vbl9zaG1lbV9leGl0X2xpc3RzX2FyZV9lbXB0eSh2b2lkKTsKIC8qIGlwY2kuYyAq LwogZXh0ZXJuIFBHRExMSU1QT1JUIHNobWVtX3N0YXJ0dXBfaG9va190eXBlIHNobWVtX3N0YXJ0 dXBfaG9vazsKIAorZXh0ZXJuIHZvaWQgUmVnaXN0ZXJCdWlsdGluU2htZW1DYWxsYmFja3Modm9p ZCk7CiBleHRlcm4gU2l6ZSBDYWxjdWxhdGVTaG1lbVNpemUodm9pZCk7CiBleHRlcm4gdm9pZCBD cmVhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVzKHZvaWQpOwogI2lmZGVmIEVYRUNfQkFDS0VO RApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmggYi9zcmMv aW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uZWQ0M2M5MGJjYzMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVk ZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaApAQCAtMCwwICsxLDIzIEBACisvKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICogc3Vic3lzdGVtbGlzdC5oCisgKgorICogTGlzdCBvZiBpbml0aWFsaXphdGlv biBjYWxsYmFja3Mgb2YgYnVpbHQtaW4gc3Vic3lzdGVtcy4gVGhpcyBpcyBrZXB0IGluCisgKiBp dHMgb3duIHNvdXJjZSBmaWxlIGZvciBwb3NzaWJsZSB1c2UgYnkgYXV0b21hdGljIHRvb2xzLgor ICogUEdfU0hNRU1fU1VCU1lTVEVNIGlzIGRlZmluZWQgaW4gdGhlIGNhbGxlcnMgZGVwZW5kaW5n IG9uIGhvdyB0aGUgbGlzdCBpcworICogdXNlZC4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBv cnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBD YWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmgKKyAq LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworLyogdGhlcmUgaXMgZGVsaWJlcmF0ZWx5IG5vdCBh biAjaWZuZGVmIFNVQlNZU1RFTUxJU1RfSCBoZXJlICovCisKKy8qCisgKiBOb3RlOiB0aGVyZSBh cmUgc29tZSBpbnRlci1kZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGVzZSwgc28gdGhlIG9yZGVyIG9m IHNvbWUKKyAqIG9mIHRoZXNlIG1hdHRlci4KKyAqLworCisvKiBUT0RPOiBlbXB0eSBmb3Igbm93 ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbXMuaCBiL3NyYy9p bmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi4zOGI3MzViZWM2NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL3N0 b3JhZ2Uvc3Vic3lzdGVtcy5oCkBAIC0wLDAgKzEsMzAgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICoKKyAqIHN1YnN5c3RlbXMuaAorICoJICBQcm92aWRlIGV4dGVybiBkZWNsYXJhdGlvbnMgZm9y IGFsbCB0aGUgYnVpbHQtaW4gc3Vic3lzdGVtIGNhbGxiYWNrcworICoKKyAqCisgKiBQb3J0aW9u cyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5p dmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0 ZW1zLmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBTVUJTWVNURU1TX0gK KyNkZWZpbmUgU1VCU1lTVEVNU19ICisKKyNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCisKKy8q CisgKiBFeHRlcm4gZGVjbGFyYXRpb25zIG9mIGFsbCB0aGUgYnVpbHQtaW4gc3Vic3lzdGVtIGNh bGxiYWNrcworICoKKyAqIFRoZSBhY3R1YWwgbGlzdCBpcyBpbiBzdWJzeXN0ZW1saXN0LmgsIHNv IHRoYXQgdGhlIHNhbWUgbGlzdCBjYW4gYmUgdXNlZAorICogZm9yIG90aGVyIHB1cnBvc2VzLgor ICovCisjZGVmaW5lIFBHX1NITUVNX1NVQlNZU1RFTShjYWxsYmFja3MpIFwKKwlleHRlcm4gY29u c3QgU2htZW1DYWxsYmFja3MgY2FsbGJhY2tzOworI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVt bGlzdC5oIgorI3VuZGVmIFBHX1NITUVNX1NVQlNZU1RFTQorCisjZW5kaWYJCQkJCQkJLyogU1VC U1lTVEVNU19IICovCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmNsdWRlL2hlYWRlcnNjaGVj ayBiL3NyYy90b29scy9wZ2luY2x1ZGUvaGVhZGVyc2NoZWNrCmluZGV4IDE0YzQ2NmNjMjM3Li4y NGY3NDE2MTg1ZSAxMDA3NTUKLS0tIGEvc3JjL3Rvb2xzL3BnaW5jbHVkZS9oZWFkZXJzY2hlY2sK KysrIGIvc3JjL3Rvb2xzL3BnaW5jbHVkZS9oZWFkZXJzY2hlY2sKQEAgLTEzMSw2ICsxMzEsNyBA QCBkbwogCXRlc3QgIiRmIiA9IHNyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvcHJvY3R5cGVsaXN0Lmgg JiYgY29udGludWUKIAl0ZXN0ICIkZiIgPSBzcmMvaW5jbHVkZS9yZWdleC9yZWdlcnJzLmggJiYg Y29udGludWUKIAl0ZXN0ICIkZiIgPSBzcmMvaW5jbHVkZS9zdG9yYWdlL2x3bG9ja2xpc3QuaCAm JiBjb250aW51ZQorCXRlc3QgIiRmIiA9IHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlz dC5oICYmIGNvbnRpbnVlCiAJdGVzdCAiJGYiID0gc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0 LmggJiYgY29udGludWUKIAl0ZXN0ICIkZiIgPSBzcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2Mv Y19rd2xpc3QuaCAmJiBjb250aW51ZQogCXRlc3QgIiRmIiA9IHNyYy9pbnRlcmZhY2VzL2VjcGcv cHJlcHJvYy9lY3BnX2t3bGlzdC5oICYmIGNvbnRpbnVlCi0tIAoyLjM0LjEKCg== --00000000000057312d064eb03f86 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405-0004-Convert-pg_stat_statements-to-use-the-new-.patch" Content-Disposition: attachment; filename="v20260405-0004-Convert-pg_stat_statements-to-use-the-new-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlchneq3 RnJvbSAzNmVjNWRmMDdmYzc0MzI5YTZjZmMxNjI1MjI0NWI4OGU0N2IwOTRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFdlZCwgMSBBcHIgMjAyNiAxODoyMToyNCArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjYwNDA1IDA0LzE1XSBDb252ZXJ0IHBnX3N0YXRfc3RhdGVtZW50cyB0byB1c2Ug dGhlIG5ldwogaW50ZXJmYWNlCgpBcyBwYXJ0IG9mIHRoaXMsIGVtYmVkIHRoZSBMV0xvY2sgaXQg bmVlZHMgaW4gdGhlIHNoYXJlZCBtZW1vcnkgc3RydWN0Cml0c2VsZiwgc28gdGhhdCB3ZSBkb24n dCBuZWVkIHRvIHVzZSBSZXF1ZXN0TmFtZWRMV0xvY2tUcmFuY2hlKCkKYW55bW9yZS4gTFdMb2Nr TmV3VHJhbmNoZUlkK0xXTG9ja0luaXRpYWxpemUgaXMgbW9yZSBjb252ZW5pZW50IHRvIHVzZQpp biBleHRlbnNpb25zLgoKUmV2aWV3ZWQtYnk6IEFzaHV0b3NoIEJhcGF0IDxhc2h1dG9zaC5iYXBh dC5vc3NAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogWnNvbHQgUGFycmFnaSA8enNvbHQucGFycmFn aUBwZXJjb25hLmNvbT4KUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzIDxyb2JlcnRtaGFhc0BnbWFp bC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQv Q0FFeEhXNXZNMWJuZUxZZmcwd0dlQWE9NTJVaUozejR2S2QzQUo3Mlg4Rnc2azNLS3JnQG1haWwu Z21haWwuY29tCi0tLQogLi4uL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMu YyAgIHwgMTczICsrKysrKysrLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDc3IGluc2VydGlv bnMoKyksIDk2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0 ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMv cGdfc3RhdF9zdGF0ZW1lbnRzLmMKaW5kZXggNTQ5NGQ0MWRjYTEuLmYwNzhiNGZlNzFiIDEwMDY0 NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwor KysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwpAQCAt MjQ5LDcgKzI0OSw3IEBAIHR5cGVkZWYgc3RydWN0IHBnc3NFbnRyeQogICovCiB0eXBlZGVmIHN0 cnVjdCBwZ3NzU2hhcmVkU3RhdGUKIHsKLQlMV0xvY2sJICAgKmxvY2s7CQkJLyogcHJvdGVjdHMg aGFzaHRhYmxlIHNlYXJjaC9tb2RpZmljYXRpb24gKi8KKwlMV0xvY2tQYWRkZWQgbG9jazsJCQkv KiBwcm90ZWN0cyBoYXNodGFibGUgc2VhcmNoL21vZGlmaWNhdGlvbiAqLwogCWRvdWJsZQkJY3Vy X21lZGlhbl91c2FnZTsJLyogY3VycmVudCBtZWRpYW4gdXNhZ2UgaW4gaGFzaHRhYmxlICovCiAJ U2l6ZQkJbWVhbl9xdWVyeV9sZW47IC8qIGN1cnJlbnQgbWVhbiBlbnRyeSB0ZXh0IGxlbmd0aCAq LwogCXNsb2NrX3QJCW11dGV4OwkJCS8qIHByb3RlY3RzIGZvbGxvd2luZyBmaWVsZHMgb25seTog Ki8KQEAgLTI1OSwxNCArMjU5LDI0IEBAIHR5cGVkZWYgc3RydWN0IHBnc3NTaGFyZWRTdGF0ZQog CXBnc3NHbG9iYWxTdGF0cyBzdGF0czsJCS8qIGdsb2JhbCBzdGF0aXN0aWNzIGZvciBwZ3NzICov CiB9IHBnc3NTaGFyZWRTdGF0ZTsKIAorLyogTGlua3MgdG8gc2hhcmVkIG1lbW9yeSBzdGF0ZSAq Lworc3RhdGljIHBnc3NTaGFyZWRTdGF0ZSAqcGdzczsKK3N0YXRpYyBIVEFCICpwZ3NzX2hhc2g7 CisKK3N0YXRpYyB2b2lkIHBnc3Nfc2htZW1fcmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZv aWQgcGdzc19zaG1lbV9pbml0KHZvaWQgKmFyZyk7CisKK3N0YXRpYyBjb25zdCBTaG1lbUNhbGxi YWNrcyBwZ3NzX3NobWVtX2NhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IHBnc3Nfc2htZW1f cmVxdWVzdCwKKwkuaW5pdF9mbiA9IHBnc3Nfc2htZW1faW5pdCwKK307CisKIC8qLS0tLSBMb2Nh bCB2YXJpYWJsZXMgLS0tLSovCiAKIC8qIEN1cnJlbnQgbmVzdGluZyBkZXB0aCBvZiBwbGFubmVy L0V4ZWN1dG9yUnVuL1Byb2Nlc3NVdGlsaXR5IGNhbGxzICovCiBzdGF0aWMgaW50CW5lc3Rpbmdf bGV2ZWwgPSAwOwogCiAvKiBTYXZlZCBob29rIHZhbHVlcyAqLwotc3RhdGljIHNobWVtX3JlcXVl c3RfaG9va190eXBlIHByZXZfc2htZW1fcmVxdWVzdF9ob29rID0gTlVMTDsKLXN0YXRpYyBzaG1l bV9zdGFydHVwX2hvb2tfdHlwZSBwcmV2X3NobWVtX3N0YXJ0dXBfaG9vayA9IE5VTEw7CiBzdGF0 aWMgcG9zdF9wYXJzZV9hbmFseXplX2hvb2tfdHlwZSBwcmV2X3Bvc3RfcGFyc2VfYW5hbHl6ZV9o b29rID0gTlVMTDsKIHN0YXRpYyBwbGFubmVyX2hvb2tfdHlwZSBwcmV2X3BsYW5uZXJfaG9vayA9 IE5VTEw7CiBzdGF0aWMgRXhlY3V0b3JTdGFydF9ob29rX3R5cGUgcHJldl9FeGVjdXRvclN0YXJ0 ID0gTlVMTDsKQEAgLTI3NSwxMCArMjg1LDYgQEAgc3RhdGljIEV4ZWN1dG9yRmluaXNoX2hvb2tf dHlwZSBwcmV2X0V4ZWN1dG9yRmluaXNoID0gTlVMTDsKIHN0YXRpYyBFeGVjdXRvckVuZF9ob29r X3R5cGUgcHJldl9FeGVjdXRvckVuZCA9IE5VTEw7CiBzdGF0aWMgUHJvY2Vzc1V0aWxpdHlfaG9v a190eXBlIHByZXZfUHJvY2Vzc1V0aWxpdHkgPSBOVUxMOwogCi0vKiBMaW5rcyB0byBzaGFyZWQg bWVtb3J5IHN0YXRlICovCi1zdGF0aWMgcGdzc1NoYXJlZFN0YXRlICpwZ3NzID0gTlVMTDsKLXN0 YXRpYyBIVEFCICpwZ3NzX2hhc2ggPSBOVUxMOwotCiAvKi0tLS0gR1VDIHZhcmlhYmxlcyAtLS0t Ki8KIAogdHlwZWRlZiBlbnVtCkBAIC0zMzEsOCArMzM3LDYgQEAgUEdfRlVOQ1RJT05fSU5GT19W MShwZ19zdGF0X3N0YXRlbWVudHNfMV8xMyk7CiBQR19GVU5DVElPTl9JTkZPX1YxKHBnX3N0YXRf c3RhdGVtZW50cyk7CiBQR19GVU5DVElPTl9JTkZPX1YxKHBnX3N0YXRfc3RhdGVtZW50c19pbmZv KTsKIAotc3RhdGljIHZvaWQgcGdzc19zaG1lbV9yZXF1ZXN0KHZvaWQpOwotc3RhdGljIHZvaWQg cGdzc19zaG1lbV9zdGFydHVwKHZvaWQpOwogc3RhdGljIHZvaWQgcGdzc19zaG1lbV9zaHV0ZG93 bihpbnQgY29kZSwgRGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIHBnc3NfcG9zdF9wYXJzZV9hbmFs eXplKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUXVlcnkgKnF1ZXJ5LAogCQkJCQkJCQkJSnVtYmxlU3Rh dGUgKmpzdGF0ZSk7CkBAIC0zNjYsNyArMzcwLDYgQEAgc3RhdGljIHZvaWQgcGdzc19zdG9yZShj b25zdCBjaGFyICpxdWVyeSwgaW50NjQgcXVlcnlJZCwKIHN0YXRpYyB2b2lkIHBnX3N0YXRfc3Rh dGVtZW50c19pbnRlcm5hbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAkJCQkJCQkJCQlwZ3Nz VmVyc2lvbiBhcGlfdmVyc2lvbiwKIAkJCQkJCQkJCQlib29sIHNob3d0ZXh0KTsKLXN0YXRpYyBT aXplIHBnc3NfbWVtc2l6ZSh2b2lkKTsKIHN0YXRpYyBwZ3NzRW50cnkgKmVudHJ5X2FsbG9jKHBn c3NIYXNoS2V5ICprZXksIFNpemUgcXVlcnlfb2Zmc2V0LCBpbnQgcXVlcnlfbGVuLAogCQkJCQkJ CSAgaW50IGVuY29kaW5nLCBib29sIHN0aWNreSk7CiBzdGF0aWMgdm9pZCBlbnRyeV9kZWFsbG9j KHZvaWQpOwpAQCAtNDcxLDEzICs0NzQsMTQgQEAgX1BHX2luaXQodm9pZCkKIAogCU1hcmtHVUNQ cmVmaXhSZXNlcnZlZCgicGdfc3RhdF9zdGF0ZW1lbnRzIik7CiAKKwkvKgorCSAqIFJlZ2lzdGVy IG91ciBzaGFyZWQgbWVtb3J5IG5lZWRzLgorCSAqLworCVJlZ2lzdGVyU2htZW1DYWxsYmFja3Mo JnBnc3Nfc2htZW1fY2FsbGJhY2tzKTsKKwogCS8qCiAJICogSW5zdGFsbCBob29rcy4KIAkgKi8K LQlwcmV2X3NobWVtX3JlcXVlc3RfaG9vayA9IHNobWVtX3JlcXVlc3RfaG9vazsKLQlzaG1lbV9y ZXF1ZXN0X2hvb2sgPSBwZ3NzX3NobWVtX3JlcXVlc3Q7Ci0JcHJldl9zaG1lbV9zdGFydHVwX2hv b2sgPSBzaG1lbV9zdGFydHVwX2hvb2s7Ci0Jc2htZW1fc3RhcnR1cF9ob29rID0gcGdzc19zaG1l bV9zdGFydHVwOwogCXByZXZfcG9zdF9wYXJzZV9hbmFseXplX2hvb2sgPSBwb3N0X3BhcnNlX2Fu YWx5emVfaG9vazsKIAlwb3N0X3BhcnNlX2FuYWx5emVfaG9vayA9IHBnc3NfcG9zdF9wYXJzZV9h bmFseXplOwogCXByZXZfcGxhbm5lcl9ob29rID0gcGxhbm5lcl9ob29rOwpAQCAtNDk1LDMwICs0 OTksNDIgQEAgX1BHX2luaXQodm9pZCkKIH0KIAogLyoKLSAqIHNobWVtX3JlcXVlc3QgaG9vazog cmVxdWVzdCBhZGRpdGlvbmFsIHNoYXJlZCByZXNvdXJjZXMuICBXZSdsbCBhbGxvY2F0ZSBvcgot ICogYXR0YWNoIHRvIHRoZSBzaGFyZWQgcmVzb3VyY2VzIGluIHBnc3Nfc2htZW1fc3RhcnR1cCgp LgorICogc2htZW0gcmVxdWVzdCBjYWxsYmFjazogUmVxdWVzdCBzaGFyZWQgbWVtb3J5IHJlc291 cmNlcy4KKyAqCisgKiBUaGlzIGlzIGNhbGxlZCBhdCBwb3N0bWFzdGVyIHN0YXJ0dXAuICBOb3Rl IHRoYXQgdGhlIHNoYXJlZCBtZW1vcnkgaXNuJ3QKKyAqIGFsbG9jYXRlZCBoZXJlIHlldCwgdGhp cyBtZXJlbHkgcmVnaXN0ZXIgb3VyIG5lZWRzLgorICoKKyAqIEluIEVYRUNfQkFDS0VORCBtb2Rl LCB0aGlzIGlzIGFsc28gY2FsbGVkIGluIGVhY2ggYmFja2VuZCwgdG8gcmUtYXR0YWNoIHRvCisg KiB0aGUgc2hhcmVkIG1lbW9yeSBhcmVhIHRoYXQgd2FzIGFscmVhZHkgaW5pdGlhbGl6ZWQuCiAg Ki8KIHN0YXRpYyB2b2lkCi1wZ3NzX3NobWVtX3JlcXVlc3Qodm9pZCkKK3Bnc3Nfc2htZW1fcmVx dWVzdCh2b2lkICphcmcpCiB7Ci0JaWYgKHByZXZfc2htZW1fcmVxdWVzdF9ob29rKQotCQlwcmV2 X3NobWVtX3JlcXVlc3RfaG9vaygpOwotCi0JUmVxdWVzdEFkZGluU2htZW1TcGFjZShwZ3NzX21l bXNpemUoKSk7Ci0JUmVxdWVzdE5hbWVkTFdMb2NrVHJhbmNoZSgicGdfc3RhdF9zdGF0ZW1lbnRz IiwgMSk7CisJU2htZW1SZXF1ZXN0SGFzaCgubmFtZSA9ICJwZ19zdGF0X3N0YXRlbWVudHMgaGFz aCIsCisJCQkJCSAubmVsZW1zID0gcGdzc19tYXgsCisJCQkJCSAuaGFzaF9pbmZvLmtleXNpemUg PSBzaXplb2YocGdzc0hhc2hLZXkpLAorCQkJCQkgLmhhc2hfaW5mby5lbnRyeXNpemUgPSBzaXpl b2YocGdzc0VudHJ5KSwKKwkJCQkJIC5oYXNoX2ZsYWdzID0gSEFTSF9FTEVNIHwgSEFTSF9CTE9C UywKKwkJCQkJIC5wdHIgPSAmcGdzc19oYXNoLAorCQkpOworCVNobWVtUmVxdWVzdFN0cnVjdCgu bmFtZSA9ICJwZ19zdGF0X3N0YXRlbWVudHMiLAorCQkJCQkgICAuc2l6ZSA9IHNpemVvZihwZ3Nz U2hhcmVkU3RhdGUpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZwZ3NzLAorCQkpOwogfQog CiAvKgotICogc2htZW1fc3RhcnR1cCBob29rOiBhbGxvY2F0ZSBvciBhdHRhY2ggdG8gc2hhcmVk IG1lbW9yeSwKLSAqIHRoZW4gbG9hZCBhbnkgcHJlLWV4aXN0aW5nIHN0YXRpc3RpY3MgZnJvbSBm aWxlLgotICogQWxzbyBjcmVhdGUgYW5kIGxvYWQgdGhlIHF1ZXJ5LXRleHRzIGZpbGUsIHdoaWNo IGlzIGV4cGVjdGVkIHRvIGV4aXN0Ci0gKiAoZXZlbiBpZiBlbXB0eSkgd2hpbGUgdGhlIG1vZHVs ZSBpcyBlbmFibGVkLgorICogc2htZW0gaW5pdCBjYWxsYmFjazogSW5pdGlhbGl6ZSBvdXIgc2hh cmVkIG1lbW9yeSBkYXRhIHN0cnVjdHVyZXMgYXQKKyAqIHBvc3RtYXN0ZXIgc3RhcnR1cC4KKyAq CisgKiBMb2FkIGFueSBwcmUtZXhpc3Rpbmcgc3RhdGlzdGljcyBmcm9tIGZpbGUuICBBbHNvIGNy ZWF0ZSBhbmQgbG9hZCB0aGUKKyAqIHF1ZXJ5LXRleHRzIGZpbGUsIHdoaWNoIGlzIGV4cGVjdGVk IHRvIGV4aXN0IChldmVuIGlmIGVtcHR5KSB3aGlsZSB0aGUKKyAqIG1vZHVsZSBpcyBlbmFibGVk LgogICovCiBzdGF0aWMgdm9pZAotcGdzc19zaG1lbV9zdGFydHVwKHZvaWQpCitwZ3NzX3NobWVt X2luaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kOwotCUhBU0hDVEwJCWluZm87CisJaW50 CQkJdHJhbmNoZV9pZDsKIAlGSUxFCSAgICpmaWxlID0gTlVMTDsKIAlGSUxFCSAgICpxZmlsZSA9 IE5VTEw7CiAJdWludDMyCQloZWFkZXI7CkBAIC01MjgsNTkgKzU0NCwzOCBAQCBwZ3NzX3NobWVt X3N0YXJ0dXAodm9pZCkKIAlpbnQJCQlidWZmZXJfc2l6ZTsKIAljaGFyCSAgICpidWZmZXIgPSBO VUxMOwogCi0JaWYgKHByZXZfc2htZW1fc3RhcnR1cF9ob29rKQotCQlwcmV2X3NobWVtX3N0YXJ0 dXBfaG9vaygpOwotCi0JLyogcmVzZXQgaW4gY2FzZSB0aGlzIGlzIGEgcmVzdGFydCB3aXRoaW4g dGhlIHBvc3RtYXN0ZXIgKi8KLQlwZ3NzID0gTlVMTDsKLQlwZ3NzX2hhc2ggPSBOVUxMOwotCiAJ LyoKLQkgKiBDcmVhdGUgb3IgYXR0YWNoIHRvIHRoZSBzaGFyZWQgbWVtb3J5IHN0YXRlLCBpbmNs dWRpbmcgaGFzaCB0YWJsZQorCSAqIFdlIGFscmVhZHkgY2hlY2tlZCB0aGF0IHdlJ3JlIGxvYWRl ZCBmcm9tIHNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcyBpbgorCSAqIF9QR19pbml0KCksIHNvIHdl IHNob3VsZCBub3QgZ2V0IGhlcmUgYWZ0ZXIgcG9zdG1hc3RlciBzdGFydHVwLgogCSAqLwotCUxX TG9ja0FjcXVpcmUoQWRkaW5TaG1lbUluaXRMb2NrLCBMV19FWENMVVNJVkUpOwotCi0JcGdzcyA9 IFNobWVtSW5pdFN0cnVjdCgicGdfc3RhdF9zdGF0ZW1lbnRzIiwKLQkJCQkJCSAgIHNpemVvZihw Z3NzU2hhcmVkU3RhdGUpLAotCQkJCQkJICAgJmZvdW5kKTsKLQotCWlmICghZm91bmQpCi0Jewot CQkvKiBGaXJzdCB0aW1lIHRocm91Z2ggLi4uICovCi0JCXBnc3MtPmxvY2sgPSAmKEdldE5hbWVk TFdMb2NrVHJhbmNoZSgicGdfc3RhdF9zdGF0ZW1lbnRzIikpLT5sb2NrOwotCQlwZ3NzLT5jdXJf bWVkaWFuX3VzYWdlID0gQVNTVU1FRF9NRURJQU5fSU5JVDsKLQkJcGdzcy0+bWVhbl9xdWVyeV9s ZW4gPSBBU1NVTUVEX0xFTkdUSF9JTklUOwotCQlTcGluTG9ja0luaXQoJnBnc3MtPm11dGV4KTsK LQkJcGdzcy0+ZXh0ZW50ID0gMDsKLQkJcGdzcy0+bl93cml0ZXJzID0gMDsKLQkJcGdzcy0+Z2Nf Y291bnQgPSAwOwotCQlwZ3NzLT5zdGF0cy5kZWFsbG9jID0gMDsKLQkJcGdzcy0+c3RhdHMuc3Rh dHNfcmVzZXQgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7Ci0JfQotCi0JaW5mby5rZXlzaXplID0g c2l6ZW9mKHBnc3NIYXNoS2V5KTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihwZ3NzRW50cnkp OwotCXBnc3NfaGFzaCA9IFNobWVtSW5pdEhhc2goInBnX3N0YXRfc3RhdGVtZW50cyBoYXNoIiwK LQkJCQkJCQkgIHBnc3NfbWF4LAotCQkJCQkJCSAgJmluZm8sCi0JCQkJCQkJICBIQVNIX0VMRU0g fCBIQVNIX0JMT0JTKTsKLQotCUxXTG9ja1JlbGVhc2UoQWRkaW5TaG1lbUluaXRMb2NrKTsKKwlB c3NlcnQoIUlzVW5kZXJQb3N0bWFzdGVyKTsKIAogCS8qCi0JICogSWYgd2UncmUgaW4gdGhlIHBv c3RtYXN0ZXIgKG9yIGEgc3RhbmRhbG9uZSBiYWNrZW5kLi4uKSwgc2V0IHVwIGEgc2htZW0KLQkg KiBleGl0IGhvb2sgdG8gZHVtcCB0aGUgc3RhdGlzdGljcyB0byBkaXNrLgorCSAqIEluaXRpYWxp emUgdGhlIHNobWVtIGFyZWEgd2l0aCBubyBzdGF0aXN0aWNzLgogCSAqLwotCWlmICghSXNVbmRl clBvc3RtYXN0ZXIpCi0JCW9uX3NobWVtX2V4aXQocGdzc19zaG1lbV9zaHV0ZG93biwgKERhdHVt KSAwKTsKKwl0cmFuY2hlX2lkID0gTFdMb2NrTmV3VHJhbmNoZUlkKCJwZ19zdGF0X3N0YXRlbWVu dHMiKTsKKwlMV0xvY2tJbml0aWFsaXplKCZwZ3NzLT5sb2NrLmxvY2ssIHRyYW5jaGVfaWQpOwor CXBnc3MtPmN1cl9tZWRpYW5fdXNhZ2UgPSBBU1NVTUVEX01FRElBTl9JTklUOworCXBnc3MtPm1l YW5fcXVlcnlfbGVuID0gQVNTVU1FRF9MRU5HVEhfSU5JVDsKKwlTcGluTG9ja0luaXQoJnBnc3Mt Pm11dGV4KTsKKwlwZ3NzLT5leHRlbnQgPSAwOworCXBnc3MtPm5fd3JpdGVycyA9IDA7CisJcGdz cy0+Z2NfY291bnQgPSAwOworCXBnc3MtPnN0YXRzLmRlYWxsb2MgPSAwOworCXBnc3MtPnN0YXRz LnN0YXRzX3Jlc2V0ID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworCisJLyogVGhlIGhhc2ggdGFi bGUgbXVzdCd2ZSBhbHNvIGJlZW4gaW5pdGlhbGl6ZWQgYnkgbm93ICovCisJQXNzZXJ0KHBnc3Nf aGFzaCAhPSBOVUxMKTsKIAogCS8qCi0JICogRG9uZSBpZiBzb21lIG90aGVyIHByb2Nlc3MgYWxy ZWFkeSBjb21wbGV0ZWQgb3VyIGluaXRpYWxpemF0aW9uLgorCSAqIFNldCB1cCBhIHNobWVtIGV4 aXQgaG9vayB0byBkdW1wIHRoZSBzdGF0aXN0aWNzIHRvIGRpc2sgb24gcG9zdG1hc3RlcgorCSAq IChvciBzdGFuZGFsb25lIGJhY2tlbmQpIGV4aXQuCiAJICovCi0JaWYgKGZvdW5kKQotCQlyZXR1 cm47CisJb25fc2htZW1fZXhpdChwZ3NzX3NobWVtX3NodXRkb3duLCAoRGF0dW0pIDApOwogCiAJ LyoKKwkgKiBMb2FkIGFueSBwcmUtZXhpc3Rpbmcgc3RhdGlzdGljcyBmcm9tIGZpbGUuCisJICoK IAkgKiBOb3RlOiB3ZSBkb24ndCBib3RoZXIgd2l0aCBsb2NrcyBoZXJlLCBiZWNhdXNlIHRoZXJl IHNob3VsZCBiZSBubyBvdGhlcgogCSAqIHByb2Nlc3NlcyBydW5uaW5nIHdoZW4gdGhpcyBjb2Rl IGlzIHJlYWNoZWQuCiAJICovCkBAIC0xMzM5LDcgKzEzMzQsNyBAQCBwZ3NzX3N0b3JlKGNvbnN0 IGNoYXIgKnF1ZXJ5LCBpbnQ2NCBxdWVyeUlkLAogCWtleS50b3BsZXZlbCA9IChuZXN0aW5nX2xl dmVsID09IDApOwogCiAJLyogTG9va3VwIHRoZSBoYXNoIHRhYmxlIGVudHJ5IHdpdGggc2hhcmVk IGxvY2suICovCi0JTFdMb2NrQWNxdWlyZShwZ3NzLT5sb2NrLCBMV19TSEFSRUQpOworCUxXTG9j a0FjcXVpcmUoJnBnc3MtPmxvY2subG9jaywgTFdfU0hBUkVEKTsKIAogCWVudHJ5ID0gKHBnc3NF bnRyeSAqKSBoYXNoX3NlYXJjaChwZ3NzX2hhc2gsICZrZXksIEhBU0hfRklORCwgTlVMTCk7CiAK QEAgLTEzNjAsMTEgKzEzNTUsMTEgQEAgcGdzc19zdG9yZShjb25zdCBjaGFyICpxdWVyeSwgaW50 NjQgcXVlcnlJZCwKIAkJICovCiAJCWlmIChqc3RhdGUpCiAJCXsKLQkJCUxXTG9ja1JlbGVhc2Uo cGdzcy0+bG9jayk7CisJCQlMV0xvY2tSZWxlYXNlKCZwZ3NzLT5sb2NrLmxvY2spOwogCQkJbm9y bV9xdWVyeSA9IGdlbmVyYXRlX25vcm1hbGl6ZWRfcXVlcnkoanN0YXRlLCBxdWVyeSwKIAkJCQkJ CQkJCQkJCSAgIHF1ZXJ5X2xvY2F0aW9uLAogCQkJCQkJCQkJCQkJICAgJnF1ZXJ5X2xlbik7Ci0J CQlMV0xvY2tBY3F1aXJlKHBnc3MtPmxvY2ssIExXX1NIQVJFRCk7CisJCQlMV0xvY2tBY3F1aXJl KCZwZ3NzLT5sb2NrLmxvY2ssIExXX1NIQVJFRCk7CiAJCX0KIAogCQkvKiBBcHBlbmQgbmV3IHF1 ZXJ5IHRleHQgdG8gZmlsZSB3aXRoIG9ubHkgc2hhcmVkIGxvY2sgaGVsZCAqLwpAQCAtMTM3OSw4 ICsxMzc0LDggQEAgcGdzc19zdG9yZShjb25zdCBjaGFyICpxdWVyeSwgaW50NjQgcXVlcnlJZCwK IAkJZG9fZ2MgPSBuZWVkX2djX3F0ZXh0cygpOwogCiAJCS8qIE5lZWQgZXhjbHVzaXZlIGxvY2sg dG8gbWFrZSBhIG5ldyBoYXNodGFibGUgZW50cnkgLSBwcm9tb3RlICovCi0JCUxXTG9ja1JlbGVh c2UocGdzcy0+bG9jayk7Ci0JCUxXTG9ja0FjcXVpcmUocGdzcy0+bG9jaywgTFdfRVhDTFVTSVZF KTsKKwkJTFdMb2NrUmVsZWFzZSgmcGdzcy0+bG9jay5sb2NrKTsKKwkJTFdMb2NrQWNxdWlyZSgm cGdzcy0+bG9jay5sb2NrLCBMV19FWENMVVNJVkUpOwogCiAJCS8qCiAJCSAqIEEgZ2FyYmFnZSBj b2xsZWN0aW9uIG1heSBoYXZlIG9jY3VycmVkIHdoaWxlIHdlIHdlcmVuJ3QgaG9sZGluZyB0aGUK QEAgLTE1MTksNyArMTUxNCw3IEBAIHBnc3Nfc3RvcmUoY29uc3QgY2hhciAqcXVlcnksIGludDY0 IHF1ZXJ5SWQsCiAJfQogCiBkb25lOgotCUxXTG9ja1JlbGVhc2UocGdzcy0+bG9jayk7CisJTFdM b2NrUmVsZWFzZSgmcGdzcy0+bG9jay5sb2NrKTsKIAogCS8qIFdlIHBvc3Rwb25lIHRoaXMgY2xl YW4tdXAgdW50aWwgd2UncmUgb3V0IG9mIHRoZSBsb2NrICovCiAJaWYgKG5vcm1fcXVlcnkpCkBA IC0xODA4LDcgKzE4MDMsNyBAQCBwZ19zdGF0X3N0YXRlbWVudHNfaW50ZXJuYWwoRnVuY3Rpb25D YWxsSW5mbyBmY2luZm8sCiAJICogd2UgbmVlZCB0byBwYXJ0aXRpb24gdGhlIGhhc2ggdGFibGUg dG8gbGltaXQgdGhlIHRpbWUgc3BlbnQgaG9sZGluZyBhbnkKIAkgKiBvbmUgbG9jay4KIAkgKi8K LQlMV0xvY2tBY3F1aXJlKHBnc3MtPmxvY2ssIExXX1NIQVJFRCk7CisJTFdMb2NrQWNxdWlyZSgm cGdzcy0+bG9jay5sb2NrLCBMV19TSEFSRUQpOwogCiAJaWYgKHNob3d0ZXh0KQogCXsKQEAgLTIw NDYsNyArMjA0MSw3IEBAIHBnX3N0YXRfc3RhdGVtZW50c19pbnRlcm5hbChGdW5jdGlvbkNhbGxJ bmZvIGZjaW5mbywKIAkJdHVwbGVzdG9yZV9wdXR2YWx1ZXMocnNpbmZvLT5zZXRSZXN1bHQsIHJz aW5mby0+c2V0RGVzYywgdmFsdWVzLCBudWxscyk7CiAJfQogCi0JTFdMb2NrUmVsZWFzZShwZ3Nz LT5sb2NrKTsKKwlMV0xvY2tSZWxlYXNlKCZwZ3NzLT5sb2NrLmxvY2spOwogCiAJaWYgKHFidWZm ZXIpCiAJCXBmcmVlKHFidWZmZXIpOwpAQCAtMjA4NiwyMCArMjA4MSw2IEBAIHBnX3N0YXRfc3Rh dGVtZW50c19pbmZvKFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJOX0RBVFVNKEhlYXBUdXBs ZUdldERhdHVtKGhlYXBfZm9ybV90dXBsZSh0dXBkZXNjLCB2YWx1ZXMsIG51bGxzKSkpOwogfQog Ci0vKgotICogRXN0aW1hdGUgc2hhcmVkIG1lbW9yeSBzcGFjZSBuZWVkZWQuCi0gKi8KLXN0YXRp YyBTaXplCi1wZ3NzX21lbXNpemUodm9pZCkKLXsKLQlTaXplCQlzaXplOwotCi0Jc2l6ZSA9IE1B WEFMSUdOKHNpemVvZihwZ3NzU2hhcmVkU3RhdGUpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwg aGFzaF9lc3RpbWF0ZV9zaXplKHBnc3NfbWF4LCBzaXplb2YocGdzc0VudHJ5KSkpOwotCi0JcmV0 dXJuIHNpemU7Ci19Ci0KIC8qCiAgKiBBbGxvY2F0ZSBhIG5ldyBoYXNodGFibGUgZW50cnkuCiAg KiBjYWxsZXIgbXVzdCBob2xkIGFuIGV4Y2x1c2l2ZSBsb2NrIG9uIHBnc3MtPmxvY2sKQEAgLTI3 MzAsNyArMjcxMSw3IEBAIGVudHJ5X3Jlc2V0KE9pZCB1c2VyaWQsIE9pZCBkYmlkLCBpbnQ2NCBx dWVyeWlkLCBib29sIG1pbm1heF9vbmx5KQogCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05P VF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCSBlcnJtc2coInBnX3N0YXRfc3RhdGVtZW50 cyBtdXN0IGJlIGxvYWRlZCB2aWEgXCJzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXNcIiIpKSk7CiAK LQlMV0xvY2tBY3F1aXJlKHBnc3MtPmxvY2ssIExXX0VYQ0xVU0lWRSk7CisJTFdMb2NrQWNxdWly ZSgmcGdzcy0+bG9jay5sb2NrLCBMV19FWENMVVNJVkUpOwogCW51bV9lbnRyaWVzID0gaGFzaF9n ZXRfbnVtX2VudHJpZXMocGdzc19oYXNoKTsKIAogCXN0YXRzX3Jlc2V0ID0gR2V0Q3VycmVudFRp bWVzdGFtcCgpOwpAQCAtMjgyNCw3ICsyODA1LDcgQEAgZG9uZToKIAlyZWNvcmRfZ2NfcXRleHRz KCk7CiAKIHJlbGVhc2VfbG9jazoKLQlMV0xvY2tSZWxlYXNlKHBnc3MtPmxvY2spOworCUxXTG9j a1JlbGVhc2UoJnBnc3MtPmxvY2subG9jayk7CiAKIAlyZXR1cm4gc3RhdHNfcmVzZXQ7CiB9Ci0t IAoyLjM0LjEKCg== --00000000000057312d064eb03f86 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405-0008-refactor-predicate.c-inline-SerialInit-to-.patch" Content-Disposition: attachment; filename="v20260405-0008-refactor-predicate.c-inline-SerialInit-to-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlchnf37 RnJvbSBlYmJiZDc3Mzk5M2VkNmMwNGQxYmU2ZmE3NzUwYWJhYzNiMTE4ZjZkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFRodSwgMTkgTWFyIDIwMjYgMTc6MjE6MzAgKzAyMDAKU3ViamVjdDog W1BBVENIIHYyMDI2MDQwNSAwOC8xNV0gcmVmYWN0b3IgcHJlZGljYXRlLmM6IGlubGluZSBTZXJp YWxJbml0IHRvCiB0aGUgY2FsbGVyCgpUaGUgU2htZW1Jbml0IGZ1bmN0aW9uIGlzIHZlcnkgY29t cGxpY2F0ZWQgY3VycmVudGx5LiBUaGVzZQpyZWZhY3RvcmluZ3MgbW92ZSBpdCBpbiBhIGRpcmVj dGlvbiB0aGF0IGlzIG1vcmUgbmF0dXJhbCB3aXRoIHRoZSBuZXcKc2htZW0gY2FsbGJhY2tzLgot LS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyB8IDczICsrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCA0NCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGlj YXRlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKaW5kZXggZTAwM2Zh NWIxMDcuLjEzYTZhNGI5M2E2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv cHJlZGljYXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCkBA IC00NDQsNyArNDQ0LDYgQEAgc3RhdGljIHZvaWQgRmxhZ1N4YWN0VW5zYWZlKFNFUklBTElaQUJM RVhBQ1QgKnN4YWN0KTsKIAogc3RhdGljIGJvb2wgU2VyaWFsUGFnZVByZWNlZGVzTG9naWNhbGx5 KGludDY0IHBhZ2UxLCBpbnQ2NCBwYWdlMik7CiBzdGF0aWMgaW50CXNlcmlhbF9lcnJkZXRhaWxf Zm9yX2lvX2Vycm9yKGNvbnN0IHZvaWQgKm9wYXF1ZV9kYXRhKTsKLXN0YXRpYyB2b2lkIFNlcmlh bEluaXQodm9pZCk7CiBzdGF0aWMgdm9pZCBTZXJpYWxBZGQoVHJhbnNhY3Rpb25JZCB4aWQsIFNl ckNvbW1pdFNlcU5vIG1pbkNvbmZsaWN0Q29tbWl0U2VxTm8pOwogc3RhdGljIFNlckNvbW1pdFNl cU5vIFNlcmlhbEdldE1pbkNvbmZsaWN0Q29tbWl0U2VxTm8oVHJhbnNhY3Rpb25JZCB4aWQpOwog c3RhdGljIHZvaWQgU2VyaWFsU2V0QWN0aXZlU2VyWG1pbihUcmFuc2FjdGlvbklkIHhpZCk7CkBA IC04MDksNDggKzgwOCw2IEBAIFNlcmlhbFBhZ2VQcmVjZWRlc0xvZ2ljYWxseVVuaXRUZXN0cyh2 b2lkKQogfQogI2VuZGlmCiAKLS8qCi0gKiBJbml0aWFsaXplIGZvciB0aGUgdHJhY2tpbmcgb2Yg b2xkIHNlcmlhbGl6YWJsZSBjb21taXR0ZWQgeGlkcy4KLSAqLwotc3RhdGljIHZvaWQKLVNlcmlh bEluaXQodm9pZCkKLXsKLQlib29sCQlmb3VuZDsKLQotCS8qCi0JICogU2V0IHVwIFNMUlUgbWFu YWdlbWVudCBvZiB0aGUgcGdfc2VyaWFsIGRhdGEuCi0JICovCi0JU2VyaWFsU2xydUN0bC0+UGFn ZVByZWNlZGVzID0gU2VyaWFsUGFnZVByZWNlZGVzTG9naWNhbGx5OwotCVNlcmlhbFNscnVDdGwt PmVycmRldGFpbF9mb3JfaW9fZXJyb3IgPSBzZXJpYWxfZXJyZGV0YWlsX2Zvcl9pb19lcnJvcjsK LQlTaW1wbGVMcnVJbml0KFNlcmlhbFNscnVDdGwsICJzZXJpYWxpemFibGUiLAotCQkJCSAgc2Vy aWFsaXphYmxlX2J1ZmZlcnMsIDAsICJwZ19zZXJpYWwiLAotCQkJCSAgTFdUUkFOQ0hFX1NFUklB TF9CVUZGRVIsIExXVFJBTkNIRV9TRVJJQUxfU0xSVSwKLQkJCQkgIFNZTkNfSEFORExFUl9OT05F LCBmYWxzZSk7Ci0jaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwotCVNlcmlhbFBhZ2VQcmVjZWRl c0xvZ2ljYWxseVVuaXRUZXN0cygpOwotI2VuZGlmCi0JU2xydVBhZ2VQcmVjZWRlc1VuaXRUZXN0 cyhTZXJpYWxTbHJ1Q3RsLCBTRVJJQUxfRU5UUklFU1BFUlBBR0UpOwotCi0JLyoKLQkgKiBDcmVh dGUgb3IgYXR0YWNoIHRvIHRoZSBTZXJpYWxDb250cm9sIHN0cnVjdHVyZS4KLQkgKi8KLQlzZXJp YWxDb250cm9sID0gKFNlcmlhbENvbnRyb2wpCi0JCVNobWVtSW5pdFN0cnVjdCgiU2VyaWFsQ29u dHJvbERhdGEiLCBzaXplb2YoU2VyaWFsQ29udHJvbERhdGEpLCAmZm91bmQpOwotCi0JQXNzZXJ0 KGZvdW5kID09IElzVW5kZXJQb3N0bWFzdGVyKTsKLQlpZiAoIWZvdW5kKQotCXsKLQkJLyoKLQkJ ICogU2V0IGNvbnRyb2wgaW5mb3JtYXRpb24gdG8gcmVmbGVjdCBlbXB0eSBTTFJVLgotCQkgKi8K LQkJTFdMb2NrQWNxdWlyZShTZXJpYWxDb250cm9sTG9jaywgTFdfRVhDTFVTSVZFKTsKLQkJc2Vy aWFsQ29udHJvbC0+aGVhZFBhZ2UgPSAtMTsKLQkJc2VyaWFsQ29udHJvbC0+aGVhZFhpZCA9IElu dmFsaWRUcmFuc2FjdGlvbklkOwotCQlzZXJpYWxDb250cm9sLT50YWlsWGlkID0gSW52YWxpZFRy YW5zYWN0aW9uSWQ7Ci0JCUxXTG9ja1JlbGVhc2UoU2VyaWFsQ29udHJvbExvY2spOwotCX0KLX0K LQogLyoKICAqIEdVQyBjaGVja19ob29rIGZvciBzZXJpYWxpemFibGVfYnVmZmVycwogICovCkBA IC0xMzU1LDcgKzEzMTIsMzUgQEAgUHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQogCSAqIElu aXRpYWxpemUgdGhlIFNMUlUgc3RvcmFnZSBmb3Igb2xkIGNvbW1pdHRlZCBzZXJpYWxpemFibGUK IAkgKiB0cmFuc2FjdGlvbnMuCiAJICovCi0JU2VyaWFsSW5pdCgpOworCVNlcmlhbFNscnVDdGwt PlBhZ2VQcmVjZWRlcyA9IFNlcmlhbFBhZ2VQcmVjZWRlc0xvZ2ljYWxseTsKKwlTZXJpYWxTbHJ1 Q3RsLT5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yID0gc2VyaWFsX2VycmRldGFpbF9mb3JfaW9fZXJy b3I7CisJU2ltcGxlTHJ1SW5pdChTZXJpYWxTbHJ1Q3RsLCAic2VyaWFsaXphYmxlIiwKKwkJCQkg IHNlcmlhbGl6YWJsZV9idWZmZXJzLCAwLCAicGdfc2VyaWFsIiwKKwkJCQkgIExXVFJBTkNIRV9T RVJJQUxfQlVGRkVSLCBMV1RSQU5DSEVfU0VSSUFMX1NMUlUsCisJCQkJICBTWU5DX0hBTkRMRVJf Tk9ORSwgZmFsc2UpOworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlTZXJpYWxQYWdlUHJl Y2VkZXNMb2dpY2FsbHlVbml0VGVzdHMoKTsKKyNlbmRpZgorCVNscnVQYWdlUHJlY2VkZXNVbml0 VGVzdHMoU2VyaWFsU2xydUN0bCwgU0VSSUFMX0VOVFJJRVNQRVJQQUdFKTsKKworCS8qCisJICog Q3JlYXRlIG9yIGF0dGFjaCB0byB0aGUgU2VyaWFsQ29udHJvbCBzdHJ1Y3R1cmUuCisJICovCisJ c2VyaWFsQ29udHJvbCA9IChTZXJpYWxDb250cm9sKQorCQlTaG1lbUluaXRTdHJ1Y3QoIlNlcmlh bENvbnRyb2xEYXRhIiwgc2l6ZW9mKFNlcmlhbENvbnRyb2xEYXRhKSwgJmZvdW5kKTsKKworCUFz c2VydChmb3VuZCA9PSBJc1VuZGVyUG9zdG1hc3Rlcik7CisJaWYgKCFmb3VuZCkKKwl7CisJCS8q CisJCSAqIFNldCBjb250cm9sIGluZm9ybWF0aW9uIHRvIHJlZmxlY3QgZW1wdHkgU0xSVS4KKwkJ ICovCisJCUxXTG9ja0FjcXVpcmUoU2VyaWFsQ29udHJvbExvY2ssIExXX0VYQ0xVU0lWRSk7CisJ CXNlcmlhbENvbnRyb2wtPmhlYWRQYWdlID0gLTE7CisJCXNlcmlhbENvbnRyb2wtPmhlYWRYaWQg PSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwkJc2VyaWFsQ29udHJvbC0+dGFpbFhpZCA9IEludmFs aWRUcmFuc2FjdGlvbklkOworCQlMV0xvY2tSZWxlYXNlKFNlcmlhbENvbnRyb2xMb2NrKTsKKwl9 CiB9CiAKIC8qCi0tIAoyLjM0LjEKCg== --00000000000057312d064eb03f86 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405-0006-Convert-lwlock.c-to-use-the-new-interface.patch" Content-Disposition: attachment; filename="v20260405-0006-Convert-lwlock.c-to-use-the-new-interface.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlchnex5 RnJvbSBlYTU1ZWNhMGQxMDU1OTdiMDhkOWE3N2YxMDU1YmJiMDg4OTcyNTE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFRodSwgMiBBcHIgMjAyNiAwMDoxODowNSArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjYwNDA1IDA2LzE1XSBDb252ZXJ0IGx3bG9jay5jIHRvIHVzZSB0aGUgbmV3IGlu dGVyZmFjZQoKSXQgc2VlbXMgbGlrZSBhIGdvb2QgY2FuZGlkYXRlIHRvIGNvbnZlcnQgZmlyc3Qg YmVjYXVzZSBpdCBuZWVkcyB0bwppbml0aWFsaXplZCBiZWZvcmUgYW55IG90aGVyIHN1YnN5c3Rl bSwgYnV0IG90aGVyIHRoYW4gdGhhdCBpdCdzCm5vdGhpbmcgc3BlY2lhbC4KLS0tCiBzcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMgICAgICB8IDEzIC0tLS0tLQogc3JjL2JhY2tlbmQvc3Rv cmFnZS9sbWdyL2x3bG9jay5jICAgfCA3MSArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQog c3JjL2luY2x1ZGUvc3RvcmFnZS9sd2xvY2suaCAgICAgICAgfCAgMiAtCiBzcmMvaW5jbHVkZS9z dG9yYWdlL3N1YnN5c3RlbWxpc3QuaCB8ICA5ICsrKy0KIDQgZmlsZXMgY2hhbmdlZCwgNDUgaW5z ZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvaXBjaS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCmluZGV4IGU0 YTZhNTJmMTJkLi5kZTY1YTllZjMzYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvaXBjaS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwpAQCAtMTIxLDcg KzEyMSw2IEBAIENhbGN1bGF0ZVNobWVtU2l6ZSh2b2lkKQogCXNpemUgPSBhZGRfc2l6ZShzaXpl LCBUd29QaGFzZVNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgQmFja2dyb3Vu ZFdvcmtlclNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgTXVsdGlYYWN0U2ht ZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBMV0xvY2tTaG1lbVNpemUoKSk7CiAJ c2l6ZSA9IGFkZF9zaXplKHNpemUsIFByb2NBcnJheVNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRk X3NpemUoc2l6ZSwgQmFja2VuZFN0YXR1c1NobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUo c2l6ZSwgU2hhcmVkSW52YWxTaG1lbVNpemUoKSk7CkBAIC0xNzksMTEgKzE3OCw2IEBAIEF0dGFj aFNoYXJlZE1lbW9yeVN0cnVjdHModm9pZCkKIAkgKi8KIAlJbml0aWFsaXplRmFzdFBhdGhMb2Nr cygpOwogCi0JLyoKLQkgKiBBdHRhY2ggdG8gTFdMb2NrcyBmaXJzdC4gVGhleSBhcmUgbmVlZGVk IGJ5IG1vc3Qgb3RoZXIgc3Vic3lzdGVtcy4KLQkgKi8KLQlMV0xvY2tTaG1lbUluaXQoKTsKLQog CS8qIEVzdGFibGlzaCBwb2ludGVycyB0byBhbGwgc2hhcmVkIG1lbW9yeSBhcmVhcyBpbiB0aGlz IGJhY2tlbmQgKi8KIAlTaG1lbUF0dGFjaFJlcXVlc3RlZCgpOwogCUNyZWF0ZU9yQXR0YWNoU2ht ZW1TdHJ1Y3RzKCk7CkBAIC0yMzAsMTMgKzIyNCw2IEBAIENyZWF0ZVNoYXJlZE1lbW9yeUFuZFNl bWFwaG9yZXModm9pZCkKIAkgKi8KIAlJbml0U2htZW1BbGxvY2F0b3Ioc2VnaGRyKTsKIAotCS8q Ci0JICogSW5pdGlhbGl6ZSBMV0xvY2tzIGZpcnN0LCBpbiBjYXNlIGFueSBvZiB0aGUgc2htZW0g aW5pdCBmdW5jdGlvbiB1c2UKLQkgKiBMV0xvY2tzLiAgKE5vdGhpbmcgZWxzZSBjYW4gYmUgcnVu bmluZyBkdXJpbmcgc3RhcnR1cCwgc28gdGhleSBkb24ndAotCSAqIG5lZWQgdG8gZG8gYW55IGxv Y2tpbmcgeWV0LCBidXQgd2UgbmV2ZXJ0aGVsZXNzIGFsbG93IGl0LikKLQkgKi8KLQlMV0xvY2tT aG1lbUluaXQoKTsKLQogCS8qIEluaXRpYWxpemUgYWxsIHNobWVtIGFyZWFzICovCiAJU2htZW1J bml0UmVxdWVzdGVkKCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9s d2xvY2suYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2suYwppbmRleCA1Y2I2OTY0 OTBkNi4uMzBiNzE1YWIwNTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9s d2xvY2suYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrLmMKQEAgLTg0LDYg Kzg0LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NsaXN0LmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9wcm9jbnVtYmVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCisjaW5jbHVkZSAic3Rv cmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRl ICJ1dGlscy93YWl0X2V2ZW50LmgiCiAKQEAgLTIxMiw2ICsyMTMsMTUgQEAgdHlwZWRlZiBzdHJ1 Y3QgTmFtZWRMV0xvY2tUcmFuY2hlUmVxdWVzdAogCiBzdGF0aWMgTGlzdCAqTmFtZWRMV0xvY2tU cmFuY2hlUmVxdWVzdHMgPSBOSUw7CiAKK3N0YXRpYyB2b2lkIExXTG9ja1NobWVtUmVxdWVzdCh2 b2lkICphcmcpOworc3RhdGljIHZvaWQgTFdMb2NrU2htZW1Jbml0KHZvaWQgKmFyZyk7CisKK2Nv bnN0IFNobWVtQ2FsbGJhY2tzIExXTG9ja0NhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IExX TG9ja1NobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IExXTG9ja1NobWVtSW5pdCwKK307CisKKwog c3RhdGljIHZvaWQgSW5pdGlhbGl6ZUxXTG9ja3MoaW50IG51bUxvY2tzKTsKIHN0YXRpYyBpbmxp bmUgdm9pZCBMV0xvY2tSZXBvcnRXYWl0U3RhcnQoTFdMb2NrICpsb2NrKTsKIHN0YXRpYyBpbmxp bmUgdm9pZCBMV0xvY2tSZXBvcnRXYWl0RW5kKHZvaWQpOwpAQCAtNDAxLDU4ICs0MTEsNTEgQEAg TnVtTFdMb2Nrc0Zvck5hbWVkVHJhbmNoZXModm9pZCkKIH0KIAogLyoKLSAqIENvbXB1dGUgc2ht ZW0gc3BhY2UgbmVlZGVkIGZvciB1c2VyLWRlZmluZWQgdHJhbmNoZXMgYW5kIHRoZSBtYWluIExX TG9jawotICogYXJyYXkuCisgKiBSZXF1ZXN0IHNobWVtIHNwYWNlIGZvciB1c2VyLWRlZmluZWQg dHJhbmNoZXMgYW5kIHRoZSBtYWluIExXTG9jayBhcnJheS4KICAqLwotU2l6ZQotTFdMb2NrU2ht ZW1TaXplKHZvaWQpCitzdGF0aWMgdm9pZAorTFdMb2NrU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykK IHsKLQlTaXplCQlzaXplOwogCWludAkJCW51bUxvY2tzOworCVNpemUJCXNpemU7CisKKwludW1M b2NrcyA9IE5VTV9GSVhFRF9MV0xPQ0tTICsgTnVtTFdMb2Nrc0Zvck5hbWVkVHJhbmNoZXMoKTsK IAogCS8qIFNwYWNlIGZvciB1c2VyLWRlZmluZWQgdHJhbmNoZXMgKi8KIAlzaXplID0gc2l6ZW9m KExXTG9ja1RyYW5jaGVTaG1lbURhdGEpOwotCi0JLyogU3BhY2UgZm9yIHRoZSBMV0xvY2sgYXJy YXkgKi8KLQludW1Mb2NrcyA9IE5VTV9GSVhFRF9MV0xPQ0tTICsgTnVtTFdMb2Nrc0Zvck5hbWVk VHJhbmNoZXMoKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUobnVtTG9ja3MsIHNp emVvZihMV0xvY2tQYWRkZWQpKSk7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIkxXTG9j ayB0cmFuY2hlcyIsCisJCQkJCSAgIC5zaXplID0gc2l6ZSwKKwkJCQkJICAgLnB0ciA9ICh2b2lk ICoqKSAmTFdMb2NrVHJhbmNoZXMsCisJCSk7CiAKLQlyZXR1cm4gc2l6ZTsKKwkvKiBTcGFjZSBm b3IgdGhlIExXTG9jayBhcnJheSAqLworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJNYWlu IExXTG9jayBhcnJheSIsCisJCQkJCSAgIC5zaXplID0gbnVtTG9ja3MgKiBzaXplb2YoTFdMb2Nr UGFkZGVkKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmTWFpbkxXTG9ja0FycmF5LAorCQkp OwogfQogCiAvKgotICogQWxsb2NhdGUgc2htZW0gc3BhY2UgZm9yIHVzZXItZGVmaW5lZCB0cmFu Y2hlcyBhbmQgdGhlIG1haW4gTFdMb2NrIGFycmF5LAotICogYW5kIGluaXRpYWxpemUgaXQuCisg KiBJbml0aWFsaXplIHNobWVtIHNwYWNlIGZvciB1c2VyLWRlZmluZWQgdHJhbmNoZXMgYW5kIHRo ZSBtYWluIExXTG9jayBhcnJheS4KICAqLwotdm9pZAotTFdMb2NrU2htZW1Jbml0KHZvaWQpCitz dGF0aWMgdm9pZAorTFdMb2NrU2htZW1Jbml0KHZvaWQgKmFyZykKIHsKIAlpbnQJCQludW1Mb2Nr czsKLQlib29sCQlmb3VuZDsKIAotCUxXTG9ja1RyYW5jaGVzID0gKExXTG9ja1RyYW5jaGVTaG1l bURhdGEgKikKLQkJU2htZW1Jbml0U3RydWN0KCJMV0xvY2sgdHJhbmNoZXMiLCBzaXplb2YoTFdM b2NrVHJhbmNoZVNobWVtRGF0YSksICZmb3VuZCk7Ci0JaWYgKCFmb3VuZCkKLQl7Ci0JCS8qIENh bGN1bGF0ZSB0b3RhbCBudW1iZXIgb2YgbG9ja3MgbmVlZGVkIGluIHRoZSBtYWluIGFycmF5ICov Ci0JCUxXTG9ja1RyYW5jaGVzLT5udW1fbWFpbl9hcnJheV9sb2NrcyA9Ci0JCQlOVU1fRklYRURf TFdMT0NLUyArIE51bUxXTG9ja3NGb3JOYW1lZFRyYW5jaGVzKCk7CisJbnVtTG9ja3MgPSBOVU1f RklYRURfTFdMT0NLUyArIE51bUxXTG9ja3NGb3JOYW1lZFRyYW5jaGVzKCk7CiAKLQkJLyogSW5p dGlhbGl6ZSB0aGUgZHluYW1pYy1hbGxvY2F0aW9uIGNvdW50ZXIgZm9yIHRyYW5jaGVzICovCi0J CUxXTG9ja1RyYW5jaGVzLT5udW1fdXNlcl9kZWZpbmVkID0gMDsKKwkvKiBSZW1lbWJlciB0b3Rh bCBudW1iZXIgb2YgbG9ja3MgbmVlZGVkIGluIHRoZSBtYWluIGFycmF5ICovCisJTFdMb2NrVHJh bmNoZXMtPm51bV9tYWluX2FycmF5X2xvY2tzID0gbnVtTG9ja3M7CiAKLQkJU3BpbkxvY2tJbml0 KCZMV0xvY2tUcmFuY2hlcy0+bG9jayk7Ci0JfQorCS8qIEluaXRpYWxpemUgdGhlIGR5bmFtaWMt YWxsb2NhdGlvbiBjb3VudGVyIGZvciB0cmFuY2hlcyAqLworCUxXTG9ja1RyYW5jaGVzLT5udW1f dXNlcl9kZWZpbmVkID0gMDsKIAotCS8qIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIHRoZSBtYWlu IGFycmF5ICovCi0JbnVtTG9ja3MgPSBMV0xvY2tUcmFuY2hlcy0+bnVtX21haW5fYXJyYXlfbG9j a3M7Ci0JTWFpbkxXTG9ja0FycmF5ID0gKExXTG9ja1BhZGRlZCAqKQotCQlTaG1lbUluaXRTdHJ1 Y3QoIk1haW4gTFdMb2NrIGFycmF5IiwgbnVtTG9ja3MgKiBzaXplb2YoTFdMb2NrUGFkZGVkKSwg JmZvdW5kKTsKLQlpZiAoIWZvdW5kKQotCXsKLQkJLyogSW5pdGlhbGl6ZSBhbGwgTFdMb2NrcyAq LwotCQlJbml0aWFsaXplTFdMb2NrcyhudW1Mb2Nrcyk7Ci0JfQorCVNwaW5Mb2NrSW5pdCgmTFdM b2NrVHJhbmNoZXMtPmxvY2spOworCisJLyogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgYWxsIExX TG9ja3MgaW4gdGhlIG1haW4gYXJyYXkgKi8KKwlJbml0aWFsaXplTFdMb2NrcyhudW1Mb2Nrcyk7 CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2x3bG9jay5oIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9sd2xvY2suaAppbmRleCA2MWYwZGJlNzQ5YS4uZWZhNWI0MjdlOWYg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbHdsb2NrLmgKKysrIGIvc3JjL2luY2x1 ZGUvc3RvcmFnZS9sd2xvY2suaApAQCAtMTI2LDggKzEyNiw2IEBAIGV4dGVybiBib29sIExXTG9j a0hlbGRCeU1lSW5Nb2RlKExXTG9jayAqbG9jaywgTFdMb2NrTW9kZSBtb2RlKTsKIGV4dGVybiBi b29sIExXTG9ja1dhaXRGb3JWYXIoTFdMb2NrICpsb2NrLCBwZ19hdG9taWNfdWludDY0ICp2YWxw dHIsIHVpbnQ2NCBvbGR2YWwsIHVpbnQ2NCAqbmV3dmFsKTsKIGV4dGVybiB2b2lkIExXTG9ja1Vw ZGF0ZVZhcihMV0xvY2sgKmxvY2ssIHBnX2F0b21pY191aW50NjQgKnZhbHB0ciwgdWludDY0IHZh bCk7CiAKLWV4dGVybiBTaXplIExXTG9ja1NobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIExX TG9ja1NobWVtSW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIEluaXRMV0xvY2tBY2Nlc3Modm9pZCk7 CiAKIGV4dGVybiBjb25zdCBjaGFyICpHZXRMV0xvY2tJZGVudGlmaWVyKHVpbnQzMiBjbGFzc0lk LCB1aW50MTYgZXZlbnRJZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5 c3RlbWxpc3QuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oCmluZGV4IGVk NDNjOTBiY2MzLi5mMGNmMDFmNWE4NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9z dWJzeXN0ZW1saXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmgK QEAgLTIwLDQgKzIwLDExIEBACiAgKiBvZiB0aGVzZSBtYXR0ZXIuCiAgKi8KIAotLyogVE9ETzog ZW1wdHkgZm9yIG5vdyAqLworLyoKKyAqIExXTG9ja3MgZmlyc3QsIGluIGNhc2UgYW55IG9mIHRo ZSBvdGhlciBzaG1lbSBpbml0IGZ1bmN0aW9ucyB1c2UgTFdMb2Nrcy4KKyAqIChOb3RoaW5nIGVs c2UgY2FuIGJlIHJ1bm5pbmcgZHVyaW5nIHN0YXJ0dXAsIHNvIHRoZXkgZG9uJ3QgbmVlZCB0byBk byBhbnkKKyAqIGxvY2tpbmcgeWV0LCBidXQgd2UgbmV2ZXJ0aGVsZXNzIGFsbG93IGl0LikKKyAq LworUEdfU0hNRU1fU1VCU1lTVEVNKExXTG9ja0NhbGxiYWNrcykKKworLyogVE9ETzogbm90aGlu ZyBlbHNlIGZvciBub3cgKi8KLS0gCjIuMzQuMQoK --00000000000057312d064eb03f86 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405-0009-refactor-predicate.c-Move-all-the-initiali.patch" Content-Disposition: attachment; filename="v20260405-0009-refactor-predicate.c-Move-all-the-initiali.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlchnf58 RnJvbSA1MWZmZTA1YTQzN2M4M2YwYTAxOTM3MmVhYTg1ZjlkODYzOTk2ZWMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IEZyaSwgMjAgTWFyIDIwMjYgMjA6Mjc6NTAgKzAyMDAKU3ViamVjdDog W1BBVENIIHYyMDI2MDQwNSAwOS8xNV0gcmVmYWN0b3IgcHJlZGljYXRlLmM6IE1vdmUgYWxsIHRo ZQogaW5pdGlhbGl6YXRpb24gdG9nZXRoZXIKClRoZSBTaG1lbUluaXQgZnVuY3Rpb24gaXMgdmVy eSBjb21wbGljYXRlZCBjdXJyZW50bHkuIFRoZXNlCnJlZmFjdG9yaW5ncyBtb3ZlIGl0IGluIGEg ZGlyZWN0aW9uIHRoYXQgaXMgbW9yZSBuYXR1cmFsIHdpdGggdGhlIG5ldwpzaG1lbSBjYWxsYmFj a3MuCi0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jIHwgMTY0ICsrKysr KysrKysrKystLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDc5IGluc2VydGlvbnMoKyks IDg1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9w cmVkaWNhdGUuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwppbmRleCAx M2E2YTRiOTNhNi4uYWYwMzA3MWE3MWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv bG1nci9wcmVkaWNhdGUuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRl LmMKQEAgLTExNDQsMTkgKzExNDQsNiBAQCBQcmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQpCiAJ CQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfAogCQkJCQkJCQkJCQlIQVNIX1BBUlRJ VElPTiB8IEhBU0hfRklYRURfU0laRSk7CiAKLQkvKgotCSAqIFJlc2VydmUgYSBkdW1teSBlbnRy eSBpbiB0aGUgaGFzaCB0YWJsZTsgd2UgdXNlIGl0IHRvIG1ha2Ugc3VyZSB0aGVyZSdzCi0JICog YWx3YXlzIG9uZSBlbnRyeSBhdmFpbGFibGUgd2hlbiB3ZSBuZWVkIHRvIHNwbGl0IG9yIGNvbWJp bmUgYSBwYWdlLAotCSAqIGJlY2F1c2UgcnVubmluZyBvdXQgb2Ygc3BhY2UgdGhlcmUgY291bGQg bWVhbiBhYm9ydGluZyBhCi0JICogbm9uLXNlcmlhbGl6YWJsZSB0cmFuc2FjdGlvbi4KLQkgKi8K LQlpZiAoIUlzVW5kZXJQb3N0bWFzdGVyKQotCXsKLQkJKHZvaWQpIGhhc2hfc2VhcmNoKFByZWRp Y2F0ZUxvY2tUYXJnZXRIYXNoLCAmU2NyYXRjaFRhcmdldFRhZywKLQkJCQkJCSAgIEhBU0hfRU5U RVIsICZmb3VuZCk7Ci0JCUFzc2VydCghZm91bmQpOwotCX0KLQogCS8qIFByZS1jYWxjdWxhdGUg dGhlIGhhc2ggYW5kIHBhcnRpdGlvbiBsb2NrIG9mIHRoZSBzY3JhdGNoIGVudHJ5ICovCiAJU2Ny YXRjaFRhcmdldFRhZ0hhc2ggPSBQcmVkaWNhdGVMb2NrVGFyZ2V0VGFnSGFzaENvZGUoJlNjcmF0 Y2hUYXJnZXRUYWcpOwogCVNjcmF0Y2hQYXJ0aXRpb25Mb2NrID0gUHJlZGljYXRlTG9ja0hhc2hQ YXJ0aXRpb25Mb2NrKFNjcmF0Y2hUYXJnZXRUYWdIYXNoKTsKQEAgLTEyMDAsNDkgKzExODcsNiBA QCBQcmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQpCiAJCQkJCQkJICAgcmVxdWVzdFNpemUsCiAJ CQkJCQkJICAgJmZvdW5kKTsKIAlBc3NlcnQoZm91bmQgPT0gSXNVbmRlclBvc3RtYXN0ZXIpOwot CWlmICghZm91bmQpCi0JewotCQlpbnQJCQlpOwotCi0JCS8qIGNsZWFuIGV2ZXJ5dGhpbmcsIGJv dGggdGhlIGhlYWRlciBhbmQgdGhlIGVsZW1lbnQgKi8KLQkJbWVtc2V0KFByZWRYYWN0LCAwLCBy ZXF1ZXN0U2l6ZSk7Ci0KLQkJZGxpc3RfaW5pdCgmUHJlZFhhY3QtPmF2YWlsYWJsZUxpc3QpOwot CQlkbGlzdF9pbml0KCZQcmVkWGFjdC0+YWN0aXZlTGlzdCk7Ci0JCVByZWRYYWN0LT5TeGFjdEds b2JhbFhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQkJUHJlZFhhY3QtPlN4YWN0R2xvYmFs WG1pbkNvdW50ID0gMDsKLQkJUHJlZFhhY3QtPldyaXRhYmxlU3hhY3RDb3VudCA9IDA7Ci0JCVBy ZWRYYWN0LT5MYXN0U3hhY3RDb21taXRTZXFObyA9IEZpcnN0Tm9ybWFsU2VyQ29tbWl0U2VxTm8g LSAxOwotCQlQcmVkWGFjdC0+Q2FuUGFydGlhbENsZWFyVGhyb3VnaCA9IDA7Ci0JCVByZWRYYWN0 LT5IYXZlUGFydGlhbENsZWFyZWRUaHJvdWdoID0gMDsKLQkJUHJlZFhhY3QtPmVsZW1lbnQKLQkJ CT0gKFNFUklBTElaQUJMRVhBQ1QgKikgKChjaGFyICopIFByZWRYYWN0ICsgUHJlZFhhY3RMaXN0 RGF0YVNpemUpOwotCQkvKiBBZGQgYWxsIGVsZW1lbnRzIHRvIGF2YWlsYWJsZSBsaXN0LCBjbGVh bi4gKi8KLQkJZm9yIChpID0gMDsgaSA8IG1heF9zZXJpYWxpemFibGVfeGFjdHM7IGkrKykKLQkJ ewotCQkJTFdMb2NrSW5pdGlhbGl6ZSgmUHJlZFhhY3QtPmVsZW1lbnRbaV0ucGVyWGFjdFByZWRp Y2F0ZUxpc3RMb2NrLAotCQkJCQkJCSBMV1RSQU5DSEVfUEVSX1hBQ1RfUFJFRElDQVRFX0xJU1Qp OwotCQkJZGxpc3RfcHVzaF90YWlsKCZQcmVkWGFjdC0+YXZhaWxhYmxlTGlzdCwgJlByZWRYYWN0 LT5lbGVtZW50W2ldLnhhY3RMaW5rKTsKLQkJfQotCQlQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hh Y3QgPSBDcmVhdGVQcmVkWGFjdCgpOwotCQlTZXRJbnZhbGlkVmlydHVhbFRyYW5zYWN0aW9uSWQo UHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0LT52eGlkKTsKLQkJUHJlZFhhY3QtPk9sZENvbW1p dHRlZFN4YWN0LT5wcmVwYXJlU2VxTm8gPSAwOwotCQlQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hh Y3QtPmNvbW1pdFNlcU5vID0gMDsKLQkJUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0LT5TZXFO by5sYXN0Q29tbWl0QmVmb3JlU25hcHNob3QgPSAwOwotCQlkbGlzdF9pbml0KCZQcmVkWGFjdC0+ T2xkQ29tbWl0dGVkU3hhY3QtPm91dENvbmZsaWN0cyk7Ci0JCWRsaXN0X2luaXQoJlByZWRYYWN0 LT5PbGRDb21taXR0ZWRTeGFjdC0+aW5Db25mbGljdHMpOwotCQlkbGlzdF9pbml0KCZQcmVkWGFj dC0+T2xkQ29tbWl0dGVkU3hhY3QtPnByZWRpY2F0ZUxvY2tzKTsKLQkJZGxpc3Rfbm9kZV9pbml0 KCZQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPmZpbmlzaGVkTGluayk7Ci0JCWRsaXN0X2lu aXQoJlByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdC0+cG9zc2libGVVbnNhZmVDb25mbGljdHMp OwotCQlQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPnRvcFhpZCA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwotCQlQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPmZpbmlzaGVkQmVmb3JlID0g SW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JCVByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdC0+eG1p biA9IEludmFsaWRUcmFuc2FjdGlvbklkOwotCQlQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3Qt PmZsYWdzID0gU1hBQ1RfRkxBR19DT01NSVRURUQ7Ci0JCVByZWRYYWN0LT5PbGRDb21taXR0ZWRT eGFjdC0+cGlkID0gMDsKLQkJUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0LT5wZ3Byb2NubyA9 IElOVkFMSURfUFJPQ19OVU1CRVI7Ci0JfQotCS8qIFRoaXMgbmV2ZXIgY2hhbmdlcywgc28gbGV0 J3Mga2VlcCBhIGxvY2FsIGNvcHkuICovCi0JT2xkQ29tbWl0dGVkU3hhY3QgPSBQcmVkWGFjdC0+ T2xkQ29tbWl0dGVkU3hhY3Q7CiAKIAkvKgogCSAqIEFsbG9jYXRlIGhhc2ggdGFibGUgZm9yIFNF UklBTElaQUJMRVhJRCBzdHJ1Y3RzLiAgVGhpcyBzdG9yZXMgcGVyLXhpZApAQCAtMTI3OCwyMyAr MTIyMiw2IEBAIFByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCkKIAkJCQkJCQkJCSByZXF1ZXN0 U2l6ZSwKIAkJCQkJCQkJCSAmZm91bmQpOwogCUFzc2VydChmb3VuZCA9PSBJc1VuZGVyUG9zdG1h c3Rlcik7Ci0JaWYgKCFmb3VuZCkKLQl7Ci0JCWludAkJCWk7Ci0KLQkJLyogY2xlYW4gZXZlcnl0 aGluZywgaW5jbHVkaW5nIHRoZSBlbGVtZW50cyAqLwotCQltZW1zZXQoUldDb25mbGljdFBvb2ws IDAsIHJlcXVlc3RTaXplKTsKLQotCQlkbGlzdF9pbml0KCZSV0NvbmZsaWN0UG9vbC0+YXZhaWxh YmxlTGlzdCk7Ci0JCVJXQ29uZmxpY3RQb29sLT5lbGVtZW50ID0gKFJXQ29uZmxpY3QpICgoY2hh ciAqKSBSV0NvbmZsaWN0UG9vbCArCi0JCQkJCQkJCQkJCQlSV0NvbmZsaWN0UG9vbEhlYWRlckRh dGFTaXplKTsKLQkJLyogQWRkIGFsbCBlbGVtZW50cyB0byBhdmFpbGFibGUgbGlzdCwgY2xlYW4u ICovCi0JCWZvciAoaSA9IDA7IGkgPCBtYXhfcndfY29uZmxpY3RzOyBpKyspCi0JCXsKLQkJCWRs aXN0X3B1c2hfdGFpbCgmUldDb25mbGljdFBvb2wtPmF2YWlsYWJsZUxpc3QsCi0JCQkJCQkJJlJX Q29uZmxpY3RQb29sLT5lbGVtZW50W2ldLm91dExpbmspOwotCQl9Ci0JfQogCiAJLyoKIAkgKiBD cmVhdGUgb3IgYXR0YWNoIHRvIHRoZSBoZWFkZXIgZm9yIHRoZSBsaXN0IG9mIGZpbmlzaGVkIHNl cmlhbGl6YWJsZQpAQCAtMTMwNSw4ICsxMjMyLDYgQEAgUHJlZGljYXRlTG9ja1NobWVtSW5pdCh2 b2lkKQogCQkJCQkJc2l6ZW9mKGRsaXN0X2hlYWQpLAogCQkJCQkJJmZvdW5kKTsKIAlBc3NlcnQo Zm91bmQgPT0gSXNVbmRlclBvc3RtYXN0ZXIpOwotCWlmICghZm91bmQpCi0JCWRsaXN0X2luaXQo RmluaXNoZWRTZXJpYWxpemFibGVUcmFuc2FjdGlvbnMpOwogCiAJLyoKIAkgKiBJbml0aWFsaXpl IHRoZSBTTFJVIHN0b3JhZ2UgZm9yIG9sZCBjb21taXR0ZWQgc2VyaWFsaXphYmxlCkBAIC0xMzI4 LDE5ICsxMjUzLDg4IEBAIFByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCkKIAkgKi8KIAlzZXJp YWxDb250cm9sID0gKFNlcmlhbENvbnRyb2wpCiAJCVNobWVtSW5pdFN0cnVjdCgiU2VyaWFsQ29u dHJvbERhdGEiLCBzaXplb2YoU2VyaWFsQ29udHJvbERhdGEpLCAmZm91bmQpOwotCiAJQXNzZXJ0 KGZvdW5kID09IElzVW5kZXJQb3N0bWFzdGVyKTsKLQlpZiAoIWZvdW5kKQorCisJLyoKKwkgKiBJ ZiB3ZSBqdXN0IGF0dGFjaGVkIHRvIGV4aXN0aW5nIHNoYXJlZCBtZW1vcnkgKEVYRUNfQkFDS0VO RCksIHdlJ3JlIGFsbAorCSAqIGRvbmUuICBPdGhlcndpc2UsIGR1cmluZyBwb3N0bWFzdGVyIHN0 YXJ0dXAgcHJvY2VlZCB0byBpbml0aWFsaXplIHRoZQorCSAqIHNoYXJlZCBtZW1vcnkuCisJICov CisJaWYgKElzVW5kZXJQb3N0bWFzdGVyKQogCXsKLQkJLyoKLQkJICogU2V0IGNvbnRyb2wgaW5m b3JtYXRpb24gdG8gcmVmbGVjdCBlbXB0eSBTTFJVLgotCQkgKi8KLQkJTFdMb2NrQWNxdWlyZShT ZXJpYWxDb250cm9sTG9jaywgTFdfRVhDTFVTSVZFKTsKLQkJc2VyaWFsQ29udHJvbC0+aGVhZFBh Z2UgPSAtMTsKLQkJc2VyaWFsQ29udHJvbC0+aGVhZFhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklk OwotCQlzZXJpYWxDb250cm9sLT50YWlsWGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JCUxX TG9ja1JlbGVhc2UoU2VyaWFsQ29udHJvbExvY2spOworCQkvKiBUaGlzIG5ldmVyIGNoYW5nZXMs IHNvIGxldCdzIGtlZXAgYSBsb2NhbCBjb3B5LiAqLworCQlPbGRDb21taXR0ZWRTeGFjdCA9IFBy ZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdDsKKwkJcmV0dXJuOworCX0KKworCS8qCisJICogUmVz ZXJ2ZSBhIGR1bW15IGVudHJ5IGluIHRoZSBoYXNoIHRhYmxlOyB3ZSB1c2UgaXQgdG8gbWFrZSBz dXJlIHRoZXJlJ3MKKwkgKiBhbHdheXMgb25lIGVudHJ5IGF2YWlsYWJsZSB3aGVuIHdlIG5lZWQg dG8gc3BsaXQgb3IgY29tYmluZSBhIHBhZ2UsCisJICogYmVjYXVzZSBydW5uaW5nIG91dCBvZiBz cGFjZSB0aGVyZSBjb3VsZCBtZWFuIGFib3J0aW5nIGEKKwkgKiBub24tc2VyaWFsaXphYmxlIHRy YW5zYWN0aW9uLgorCSAqLworCSh2b2lkKSBoYXNoX3NlYXJjaChQcmVkaWNhdGVMb2NrVGFyZ2V0 SGFzaCwgJlNjcmF0Y2hUYXJnZXRUYWcsCisJCQkJCSAgIEhBU0hfRU5URVIsICZmb3VuZCk7CisJ QXNzZXJ0KCFmb3VuZCk7CisKKwkvKiBJbml0aWFsaXplIFByZWRYYWN0IGxpc3QgKi8KKwlkbGlz dF9pbml0KCZQcmVkWGFjdC0+YXZhaWxhYmxlTGlzdCk7CisJZGxpc3RfaW5pdCgmUHJlZFhhY3Qt PmFjdGl2ZUxpc3QpOworCVByZWRYYWN0LT5TeGFjdEdsb2JhbFhtaW4gPSBJbnZhbGlkVHJhbnNh Y3Rpb25JZDsKKwlQcmVkWGFjdC0+U3hhY3RHbG9iYWxYbWluQ291bnQgPSAwOworCVByZWRYYWN0 LT5Xcml0YWJsZVN4YWN0Q291bnQgPSAwOworCVByZWRYYWN0LT5MYXN0U3hhY3RDb21taXRTZXFO byA9IEZpcnN0Tm9ybWFsU2VyQ29tbWl0U2VxTm8gLSAxOworCVByZWRYYWN0LT5DYW5QYXJ0aWFs Q2xlYXJUaHJvdWdoID0gMDsKKwlQcmVkWGFjdC0+SGF2ZVBhcnRpYWxDbGVhcmVkVGhyb3VnaCA9 IDA7CisJUHJlZFhhY3QtPmVsZW1lbnQKKwkJPSAoU0VSSUFMSVpBQkxFWEFDVCAqKSAoKGNoYXIg KikgUHJlZFhhY3QgKyBQcmVkWGFjdExpc3REYXRhU2l6ZSk7CisJLyogQWRkIGFsbCBlbGVtZW50 cyB0byBhdmFpbGFibGUgbGlzdCwgY2xlYW4uICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhf c2VyaWFsaXphYmxlX3hhY3RzOyBpKyspCisJeworCQlMV0xvY2tJbml0aWFsaXplKCZQcmVkWGFj dC0+ZWxlbWVudFtpXS5wZXJYYWN0UHJlZGljYXRlTGlzdExvY2ssCisJCQkJCQkgTFdUUkFOQ0hF X1BFUl9YQUNUX1BSRURJQ0FURV9MSVNUKTsKKwkJZGxpc3RfcHVzaF90YWlsKCZQcmVkWGFjdC0+ YXZhaWxhYmxlTGlzdCwgJlByZWRYYWN0LT5lbGVtZW50W2ldLnhhY3RMaW5rKTsKIAl9CisJUHJl ZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0ID0gQ3JlYXRlUHJlZFhhY3QoKTsKKwlTZXRJbnZhbGlk VmlydHVhbFRyYW5zYWN0aW9uSWQoUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0LT52eGlkKTsK KwlQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPnByZXBhcmVTZXFObyA9IDA7CisJUHJlZFhh Y3QtPk9sZENvbW1pdHRlZFN4YWN0LT5jb21taXRTZXFObyA9IDA7CisJUHJlZFhhY3QtPk9sZENv bW1pdHRlZFN4YWN0LT5TZXFOby5sYXN0Q29tbWl0QmVmb3JlU25hcHNob3QgPSAwOworCWRsaXN0 X2luaXQoJlByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdC0+b3V0Q29uZmxpY3RzKTsKKwlkbGlz dF9pbml0KCZQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPmluQ29uZmxpY3RzKTsKKwlkbGlz dF9pbml0KCZQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPnByZWRpY2F0ZUxvY2tzKTsKKwlk bGlzdF9ub2RlX2luaXQoJlByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdC0+ZmluaXNoZWRMaW5r KTsKKwlkbGlzdF9pbml0KCZQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPnBvc3NpYmxlVW5z YWZlQ29uZmxpY3RzKTsKKwlQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPnRvcFhpZCA9IElu dmFsaWRUcmFuc2FjdGlvbklkOworCVByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdC0+ZmluaXNo ZWRCZWZvcmUgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlQcmVkWGFjdC0+T2xkQ29tbWl0dGVk U3hhY3QtPnhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlQcmVkWGFjdC0+T2xkQ29tbWl0 dGVkU3hhY3QtPmZsYWdzID0gU1hBQ1RfRkxBR19DT01NSVRURUQ7CisJUHJlZFhhY3QtPk9sZENv bW1pdHRlZFN4YWN0LT5waWQgPSAwOworCVByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdC0+cGdw cm9jbm8gPSBJTlZBTElEX1BST0NfTlVNQkVSOworCisJLyogVGhpcyBuZXZlciBjaGFuZ2VzLCBz byBsZXQncyBrZWVwIGEgbG9jYWwgY29weS4gKi8KKwlPbGRDb21taXR0ZWRTeGFjdCA9IFByZWRY YWN0LT5PbGRDb21taXR0ZWRTeGFjdDsKKworCS8qIEluaXRpYWxpemUgdGhlIHJ3LWNvbmZsaWN0 IHBvb2wgKi8KKwlkbGlzdF9pbml0KCZSV0NvbmZsaWN0UG9vbC0+YXZhaWxhYmxlTGlzdCk7CisJ UldDb25mbGljdFBvb2wtPmVsZW1lbnQgPSAoUldDb25mbGljdCkgKChjaGFyICopIFJXQ29uZmxp Y3RQb29sICsKKwkJCQkJCQkJCQkJUldDb25mbGljdFBvb2xIZWFkZXJEYXRhU2l6ZSk7CisJLyog QWRkIGFsbCBlbGVtZW50cyB0byBhdmFpbGFibGUgbGlzdCwgY2xlYW4uICovCisJZm9yIChpbnQg aSA9IDA7IGkgPCBtYXhfcndfY29uZmxpY3RzOyBpKyspCisJeworCQlkbGlzdF9wdXNoX3RhaWwo JlJXQ29uZmxpY3RQb29sLT5hdmFpbGFibGVMaXN0LAorCQkJCQkJJlJXQ29uZmxpY3RQb29sLT5l bGVtZW50W2ldLm91dExpbmspOworCX0KKworCS8qIEluaXRpYWxpemUgdGhlIGxpc3Qgb2YgZmlu aXNoZWQgc2VyaWFsaXphYmxlIHRyYW5zYWN0aW9ucyAqLworCWRsaXN0X2luaXQoRmluaXNoZWRT ZXJpYWxpemFibGVUcmFuc2FjdGlvbnMpOworCisJLyogSW5pdGlhbGl6ZSBTZXJpYWxDb250cm9s IHRvIHJlZmxlY3QgZW1wdHkgU0xSVS4gKi8KKwlMV0xvY2tBY3F1aXJlKFNlcmlhbENvbnRyb2xM b2NrLCBMV19FWENMVVNJVkUpOworCXNlcmlhbENvbnRyb2wtPmhlYWRQYWdlID0gLTE7CisJc2Vy aWFsQ29udHJvbC0+aGVhZFhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCXNlcmlhbENvbnRy b2wtPnRhaWxYaWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlMV0xvY2tSZWxlYXNlKFNlcmlh bENvbnRyb2xMb2NrKTsKIH0KIAogLyoKLS0gCjIuMzQuMQoK --00000000000057312d064eb03f86 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405-0007-Use-the-new-mechanism-in-a-few-core-subsys.patch" Content-Disposition: attachment; filename="v20260405-0007-Use-the-new-mechanism-in-a-few-core-subsys.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlchnf06 RnJvbSAzMzVkMDg0MmNhOWY0NTY2NDlmMDQ2NGE0NWViZDE4NWYzYzhjYTRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFRodSwgMiBBcHIgMjAyNiAwMDoyMToxNyArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjYwNDA1IDA3LzE1XSBVc2UgdGhlIG5ldyBtZWNoYW5pc20gaW4gYSBmZXcgY29y ZQogc3Vic3lzdGVtcwoKSSBjaG9zZSB0aGVzZSBzdWJzeXN0ZW1zIHNwZWNpZmljYWxseSBiZWNh dXNlIHRoZXkgaGF2ZSBzb21lCmNvbXBsaWNhdGluZyBwcm9wZXJ0aWVzLCBtYWtpbmcgdGhlbSBz bGlnaHRseSBoYXJkZXIgdG8gY29udmVydCB0aGFuCm1vc3Q6CgotIFRoZSBpbml0aWFsaXphdGlv biBjYWxsYmFja3Mgb2Ygc29tZSBvZiB0aGVzZSBzdWJzeXN0ZW1zIGhhdmUKICBkZXBlbmRlbmNp ZXMsIGkuZS4gdGhleSBuZWVkIHRvIGJlIGluaXRpYWxpemVkIGluIHRoZSByaWdodCBvcmRlci4K Ci0gVGhlIFByb2dHbG9iYWwgcG9pbnRlciBzdGlsbCBuZWVkcyB0byBiZSBpbmhlcml0ZWQgYnkg dGhlCiAgQmFja2VuZFBhcmFtZXRlcnMgbWVjaGFuaXNtIG9uIEVYRUNfQkFDS0VORCBidWlsZHMs IGJlY2F1c2UKICBQcm9jR2xvYmFsIGlzIHJlcXVpcmVkIGJ5IEluaXRQcm9jZXNzKCkgdG8gZ2V0 IGEgUEdQUk9DIGVudHJ5LCBhbmQKICB0aGUgUEdQUk9DIGVudHJ5IGlzIHJlcXVpcmVkIHRvIHVz ZSBMV0xvY2tzLCBhbmQgdXN1YWxseSBhdHRhY2hpbmcKICB0byBzaGFyZWQgbWVtb3J5IGFyZWFz IHJlcXVpcmVzIHRoZSB1c2Ugb2YgTFdMb2Nrcy4KCi0gU2ltaWxhcmx5LCBQcm9jU2lnbmFsIHBv aW50ZXIgc3RpbGwgbmVlZHMgdG8gYmUgaGFuZGxlZCBieQogIEJhY2tlbmRQYXJhbWV0ZXJzLCBi ZWNhdXNlIHF1ZXJ5IGNhbmNlbGxhdGlvbiBjb25uZWN0aW9ucyBhY2Nlc3MgaXQKICB3aXRob3V0 IGNhbGxpbmcgSW5pdFByb2Nlc3MKCkknbSBiZWxpZXZlIGNvbnZlcnRpbmcgYWxsIHRoZSByZXN0 IG9mIHRoZSBzdWJzeXN0ZW1zIGFmdGVyIHRoaXMgd2lsbApiZSBwcmV0dHkgbWVjaGFuaWMuCgpS ZXZpZXdlZC1ieTogQXNodXRvc2ggQmFwYXQgPGFzaHV0b3NoLmJhcGF0Lm9zc0BnbWFpbC5jb20+ ClJldmlld2VkLWJ5OiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJyYWdpQHBlcmNvbmEuY29tPgpE aXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBRXhIVzV2 TTFibmVMWWZnMHdHZUFhPTUyVWlKM3o0dktkM0FKNzJYOEZ3NmszS0tyZ0BtYWlsLmdtYWlsLmNv bQotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMgIHwgICAyICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS92YXJzdXAuYyAgICB8ICAzNSArKy0tLQogc3JjL2Jh Y2tlbmQvcG9ydC9wb3NpeF9zZW1hLmMgICAgICAgICAgfCAgMjIgKystCiBzcmMvYmFja2VuZC9w b3J0L3N5c3Zfc2VtYS5jICAgICAgICAgICB8ICAyMSArKy0KIHNyYy9iYWNrZW5kL3BvcnQvd2lu MzJfc2VtYS5jICAgICAgICAgIHwgIDExICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc20u YyAgICAgICAgICB8ICA2NCArKysrKy0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9y ZWdpc3RyeS5jIHwgIDM2ICsrLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMgICAg ICAgICB8ICAyOCAtLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9sYXRjaC5jICAgICAgICB8 ICAgOCArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcG1zaWduYWwuYyAgICAgfCAgNTEgKysr Ky0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMgICAgfCAxMTAgKysrKysr Ky0tLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyAgIHwgIDY0ICsr KystLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsYWR0LmMgICAgfCAgMzggKyst LS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgICAgICAgIHwgMTkxICsrKysrKysr KysrKystLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYyAgICAg IHwgICAzICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdHJhbnNhbS5oICAgICAgICAgICB8ICAgMiAt CiBzcmMvaW5jbHVkZS9zdG9yYWdlL2RzbS5oICAgICAgICAgICAgICB8ICAgMyAtCiBzcmMvaW5j bHVkZS9zdG9yYWdlL2RzbV9yZWdpc3RyeS5oICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9zdG9y YWdlL3BnX3NlbWEuaCAgICAgICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wbXNp Z25hbC5oICAgICAgICAgfCAgIDIgLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmggICAgICAg ICAgICAgfCAgIDIgLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaCAgICAgICAgfCAg IDIgLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggICAgICAgfCAgIDMgLQogc3Jj L2luY2x1ZGUvc3RvcmFnZS9zaW52YWxhZHQuaCAgICAgICAgfCAgIDIgLQogc3JjL2luY2x1ZGUv c3RvcmFnZS9zdWJzeXN0ZW1saXN0LmggICAgfCAgMTcgKystCiAyNSBmaWxlcyBjaGFuZ2VkLCAz NDQgaW5zZXJ0aW9ucygrKSwgMzgxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS90d29waGFzZS5jCmluZGV4IGQ0NjhjOTc3NGIzLi5hYjFjYmQ2N2JhYyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS90d29waGFzZS5jCkBAIC0yODIsNyArMjgyLDcgQEAgVHdvUGhhc2VTaG1l bUluaXQodm9pZCkKIAkJCWd4YWN0c1tpXS5uZXh0ID0gVHdvUGhhc2VTdGF0ZS0+ZnJlZUdYYWN0 czsKIAkJCVR3b1BoYXNlU3RhdGUtPmZyZWVHWGFjdHMgPSAmZ3hhY3RzW2ldOwogCi0JCQkvKiBh c3NvY2lhdGUgaXQgd2l0aCBhIFBHUFJPQyBhc3NpZ25lZCBieSBJbml0UHJvY0dsb2JhbCAqLwor CQkJLyogYXNzb2NpYXRlIGl0IHdpdGggYSBQR1BST0MgYXNzaWduZWQgYnkgUHJvY0dsb2JhbFNo bWVtSW5pdCAqLwogCQkJZ3hhY3RzW2ldLnBncHJvY25vID0gR2V0TnVtYmVyRnJvbVBHUHJvYygm UHJlcGFyZWRYYWN0UHJvY3NbaV0pOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vdmFyc3VwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS92YXJz dXAuYwppbmRleCAxNDQxYTA1MTc3My4uZGM1ZTMyZDg2ZjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3ZhcnN1cC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3ZhcnN1cC5jCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXRv dmFjdXVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvcHJvYy5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInV0 aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAKQEAgLTMwLDM1 ICszMSwyNSBAQAogLyogTnVtYmVyIG9mIE9JRHMgdG8gcHJlZmV0Y2ggKHByZWFsbG9jYXRlKSBw ZXIgWExPRyB3cml0ZSAqLwogI2RlZmluZSBWQVJfT0lEX1BSRUZFVENICQk4MTkyCiAKK3N0YXRp YyB2b2lkIFZhcnN1cFNobWVtUmVxdWVzdCh2b2lkICphcmcpOworCiAvKiBwb2ludGVyIHRvIHZh cmlhYmxlcyBzdHJ1Y3QgaW4gc2hhcmVkIG1lbW9yeSAqLwogVHJhbnNhbVZhcmlhYmxlc0RhdGEg KlRyYW5zYW1WYXJpYWJsZXMgPSBOVUxMOwogCitjb25zdCBTaG1lbUNhbGxiYWNrcyBWYXJzdXBT aG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IFZhcnN1cFNobWVtUmVxdWVzdCwKK307 CiAKIC8qCi0gKiBJbml0aWFsaXphdGlvbiBvZiBzaGFyZWQgbWVtb3J5IGZvciBUcmFuc2FtVmFy aWFibGVzLgorICogUmVxdWVzdCBzaGFyZWQgbWVtb3J5IGZvciBUcmFuc2FtVmFyaWFibGVzLgog ICovCi1TaXplCi1WYXJzdXBTaG1lbVNpemUodm9pZCkKLXsKLQlyZXR1cm4gc2l6ZW9mKFRyYW5z YW1WYXJpYWJsZXNEYXRhKTsKLX0KLQotdm9pZAotVmFyc3VwU2htZW1Jbml0KHZvaWQpCitzdGF0 aWMgdm9pZAorVmFyc3VwU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlib29sCQlmb3VuZDsK LQotCS8qIEluaXRpYWxpemUgb3VyIHNoYXJlZCBzdGF0ZSBzdHJ1Y3QgKi8KLQlUcmFuc2FtVmFy aWFibGVzID0gU2htZW1Jbml0U3RydWN0KCJUcmFuc2FtVmFyaWFibGVzIiwKLQkJCQkJCQkJCSAg IHNpemVvZihUcmFuc2FtVmFyaWFibGVzRGF0YSksCi0JCQkJCQkJCQkgICAmZm91bmQpOwotCWlm ICghSXNVbmRlclBvc3RtYXN0ZXIpCi0JewotCQlBc3NlcnQoIWZvdW5kKTsKLQkJbWVtc2V0KFRy YW5zYW1WYXJpYWJsZXMsIDAsIHNpemVvZihUcmFuc2FtVmFyaWFibGVzRGF0YSkpOwotCX0KLQll bHNlCi0JCUFzc2VydChmb3VuZCk7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIlRyYW5z YW1WYXJpYWJsZXMiLAorCQkJCQkgICAuc2l6ZSA9IHNpemVvZihUcmFuc2FtVmFyaWFibGVzRGF0 YSksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJlRyYW5zYW1WYXJpYWJsZXMsCisJCSk7CiB9 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3J0L3Bvc2l4X3NlbWEuYyBiL3NyYy9i YWNrZW5kL3BvcnQvcG9zaXhfc2VtYS5jCmluZGV4IDQwMjA1YjdkNDAwLi41M2U0YTdhNWMzOCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9ydC9wb3NpeF9zZW1hLmMKKysrIGIvc3JjL2JhY2tl bmQvcG9ydC9wb3NpeF9zZW1hLmMKQEAgLTE1OSwyMiArMTU5LDI0IEBAIFBvc2l4U2VtYXBob3Jl S2lsbChzZW1fdCAqc2VtKQogCiAKIC8qCi0gKiBSZXBvcnQgYW1vdW50IG9mIHNoYXJlZCBtZW1v cnkgbmVlZGVkIGZvciBzZW1hcGhvcmVzCisgKiBSZXF1ZXN0IHNoYXJlZCBtZW1vcnkgbmVlZGVk IGZvciBzZW1hcGhvcmVzCiAgKi8KLVNpemUKLVBHU2VtYXBob3JlU2htZW1TaXplKGludCBtYXhT ZW1hcykKK3ZvaWQKK1BHU2VtYXBob3JlU2htZW1SZXF1ZXN0KGludCBtYXhTZW1hcykKIHsKICNp ZmRlZiBVU0VfTkFNRURfUE9TSVhfU0VNQVBIT1JFUwogCS8qIE5vIHNoYXJlZCBtZW1vcnkgbmVl ZGVkIGluIHRoaXMgY2FzZSAqLwotCXJldHVybiAwOwogI2Vsc2UKIAkvKiBOZWVkIGEgUEdTZW1h cGhvcmVEYXRhIHBlciBzZW1hcGhvcmUgKi8KLQlyZXR1cm4gbXVsX3NpemUobWF4U2VtYXMsIHNp emVvZihQR1NlbWFwaG9yZURhdGEpKTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiU2Vt YXBob3JlcyIsCisJCQkJCSAgIC5zaXplID0gbXVsX3NpemUobWF4U2VtYXMsIHNpemVvZihQR1Nl bWFwaG9yZURhdGEpKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmc2hhcmVkU2VtYXMsCisJ CSk7CiAjZW5kaWYKIH0KIAogLyoKLSAqIFBHUmVzZXJ2ZVNlbWFwaG9yZXMgLS0tIGluaXRpYWxp emUgc2VtYXBob3JlIHN1cHBvcnQKKyAqIFBHU2VtYXBob3JlSW5pdCAtLS0gaW5pdGlhbGl6ZSBz ZW1hcGhvcmUgc3VwcG9ydAogICoKICAqIFRoaXMgaXMgY2FsbGVkIGR1cmluZyBwb3N0bWFzdGVy IHN0YXJ0IG9yIHNoYXJlZCBtZW1vcnkgcmVpbml0aWFsaXphdGlvbi4KICAqIEl0IHNob3VsZCBk byB3aGF0ZXZlciBpcyBuZWVkZWQgdG8gYmUgYWJsZSB0byBzdXBwb3J0IHVwIHRvIG1heFNlbWFz CkBAIC0xOTMsMTAgKzE5NSw5IEBAIFBHU2VtYXBob3JlU2htZW1TaXplKGludCBtYXhTZW1hcykK ICAqIHdlIGRvbid0IGhhdmUgdG8gZXhwb3NlIHRoZSBjb3VudGVycyB0byBvdGhlciBwcm9jZXNz ZXMuKQogICovCiB2b2lkCi1QR1Jlc2VydmVTZW1hcGhvcmVzKGludCBtYXhTZW1hcykKK1BHU2Vt YXBob3JlSW5pdChpbnQgbWF4U2VtYXMpCiB7CiAJc3RydWN0IHN0YXQgc3RhdGJ1ZjsKLQlib29s CQlmb3VuZDsKIAogCS8qCiAJICogV2UgdXNlIHRoZSBkYXRhIGRpcmVjdG9yeSdzIGlub2RlIG51 bWJlciB0byBzZWVkIHRoZSBzZWFyY2ggZm9yIGZyZWUKQEAgLTIxNCwxMSArMjE1LDYgQEAgUEdS ZXNlcnZlU2VtYXBob3JlcyhpbnQgbWF4U2VtYXMpCiAJbXlTZW1Qb2ludGVycyA9IChzZW1fdCAq KikgbWFsbG9jKG1heFNlbWFzICogc2l6ZW9mKHNlbV90ICopKTsKIAlpZiAobXlTZW1Qb2ludGVy cyA9PSBOVUxMKQogCQllbG9nKFBBTklDLCAib3V0IG9mIG1lbW9yeSIpOwotI2Vsc2UKLQotCXNo YXJlZFNlbWFzID0gKFBHU2VtYXBob3JlKQotCQlTaG1lbUluaXRTdHJ1Y3QoIlNlbWFwaG9yZXMi LCBQR1NlbWFwaG9yZVNobWVtU2l6ZShtYXhTZW1hcyksICZmb3VuZCk7Ci0JQXNzZXJ0KCFmb3Vu ZCk7CiAjZW5kaWYKIAogCW51bVNlbXMgPSAwOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9y dC9zeXN2X3NlbWEuYyBiL3NyYy9iYWNrZW5kL3BvcnQvc3lzdl9zZW1hLmMKaW5kZXggNGIyYmY4 NDA3MmYuLjk4ZDk5NTE1MDQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3J0L3N5c3Zfc2Vt YS5jCisrKyBiL3NyYy9iYWNrZW5kL3BvcnQvc3lzdl9zZW1hLmMKQEAgLTMwMSwxNiArMzAxLDIw IEBAIElwY1NlbWFwaG9yZUNyZWF0ZShpbnQgbnVtU2VtcykKIAogCiAvKgotICogUmVwb3J0IGFt b3VudCBvZiBzaGFyZWQgbWVtb3J5IG5lZWRlZCBmb3Igc2VtYXBob3JlcworICogUmVxdWVzdCBz aGFyZWQgbWVtb3J5IG5lZWRlZCBmb3Igc2VtYXBob3JlcwogICovCi1TaXplCi1QR1NlbWFwaG9y ZVNobWVtU2l6ZShpbnQgbWF4U2VtYXMpCit2b2lkCitQR1NlbWFwaG9yZVNobWVtUmVxdWVzdChp bnQgbWF4U2VtYXMpCiB7Ci0JcmV0dXJuIG11bF9zaXplKG1heFNlbWFzLCBzaXplb2YoUEdTZW1h cGhvcmVEYXRhKSk7CisJLyogTmVlZCBhIFBHU2VtYXBob3JlRGF0YSBwZXIgc2VtYXBob3JlICov CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIlNlbWFwaG9yZXMiLAorCQkJCQkgICAuc2l6 ZSA9IG11bF9zaXplKG1heFNlbWFzLCBzaXplb2YoUEdTZW1hcGhvcmVEYXRhKSksCisJCQkJCSAg IC5wdHIgPSAodm9pZCAqKikgJnNoYXJlZFNlbWFzLAorCQkpOwogfQogCiAvKgotICogUEdSZXNl cnZlU2VtYXBob3JlcyAtLS0gaW5pdGlhbGl6ZSBzZW1hcGhvcmUgc3VwcG9ydAorICogUEdTZW1h cGhvcmVJbml0IC0tLSBpbml0aWFsaXplIHNlbWFwaG9yZSBzdXBwb3J0CiAgKgogICogVGhpcyBp cyBjYWxsZWQgZHVyaW5nIHBvc3RtYXN0ZXIgc3RhcnQgb3Igc2hhcmVkIG1lbW9yeSByZWluaXRp YWxpemF0aW9uLgogICogSXQgc2hvdWxkIGRvIHdoYXRldmVyIGlzIG5lZWRlZCB0byBiZSBhYmxl IHRvIHN1cHBvcnQgdXAgdG8gbWF4U2VtYXMKQEAgLTMyNywxMCArMzMxLDkgQEAgUEdTZW1hcGhv cmVTaG1lbVNpemUoaW50IG1heFNlbWFzKQogICogaGF2ZSBjbG9iYmVyZWQuKQogICovCiB2b2lk Ci1QR1Jlc2VydmVTZW1hcGhvcmVzKGludCBtYXhTZW1hcykKK1BHU2VtYXBob3JlSW5pdChpbnQg bWF4U2VtYXMpCiB7CiAJc3RydWN0IHN0YXQgc3RhdGJ1ZjsKLQlib29sCQlmb3VuZDsKIAogCS8q CiAJICogV2UgdXNlIHRoZSBkYXRhIGRpcmVjdG9yeSdzIGlub2RlIG51bWJlciB0byBzZWVkIHRo ZSBzZWFyY2ggZm9yIGZyZWUKQEAgLTM0NCwxMCArMzQ3LDYgQEAgUEdSZXNlcnZlU2VtYXBob3Jl cyhpbnQgbWF4U2VtYXMpCiAJCQkJIGVycm1zZygiY291bGQgbm90IHN0YXQgZGF0YSBkaXJlY3Rv cnkgXCIlc1wiOiAlbSIsCiAJCQkJCQlEYXRhRGlyKSkpOwogCi0Jc2hhcmVkU2VtYXMgPSAoUEdT ZW1hcGhvcmUpCi0JCVNobWVtSW5pdFN0cnVjdCgiU2VtYXBob3JlcyIsIFBHU2VtYXBob3JlU2ht ZW1TaXplKG1heFNlbWFzKSwgJmZvdW5kKTsKLQlBc3NlcnQoIWZvdW5kKTsKLQogCW51bVNoYXJl ZFNlbWFzID0gMDsKIAltYXhTaGFyZWRTZW1hcyA9IG1heFNlbWFzOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wb3J0L3dpbjMyX3NlbWEuYyBiL3NyYy9iYWNrZW5kL3BvcnQvd2luMzJfc2Vt YS5jCmluZGV4IGJhOTdjOWIyZDY0Li5hMzIwMjU1NDc2OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcG9ydC93aW4zMl9zZW1hLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9ydC93aW4zMl9zZW1hLmMK QEAgLTI1LDE3ICsyNSwxNiBAQCBzdGF0aWMgdm9pZCBSZWxlYXNlU2VtYXBob3JlcyhpbnQgY29k ZSwgRGF0dW0gYXJnKTsKIAogCiAvKgotICogUmVwb3J0IGFtb3VudCBvZiBzaGFyZWQgbWVtb3J5 IG5lZWRlZCBmb3Igc2VtYXBob3JlcworICogUmVxdWVzdCBzaGFyZWQgbWVtb3J5IG5lZWRlZCBm b3Igc2VtYXBob3JlcwogICovCi1TaXplCi1QR1NlbWFwaG9yZVNobWVtU2l6ZShpbnQgbWF4U2Vt YXMpCit2b2lkCitQR1NlbWFwaG9yZVNobWVtUmVxdWVzdChpbnQgbWF4U2VtYXMpCiB7CiAJLyog Tm8gc2hhcmVkIG1lbW9yeSBuZWVkZWQgb24gV2luZG93cyAqLwotCXJldHVybiAwOwogfQogCiAv KgotICogUEdSZXNlcnZlU2VtYXBob3JlcyAtLS0gaW5pdGlhbGl6ZSBzZW1hcGhvcmUgc3VwcG9y dAorICogUEdTZW1hcGhvcmVJbml0IC0tLSBpbml0aWFsaXplIHNlbWFwaG9yZSBzdXBwb3J0CiAg KgogICogSW4gdGhlIFdpbjMyIGltcGxlbWVudGF0aW9uLCB3ZSBhY3F1aXJlIHNlbWFwaG9yZXMg b24tZGVtYW5kOyB0aGUKICAqIG1heFNlbWFzIHBhcmFtZXRlciBpcyBqdXN0IHVzZWQgdG8gc2l6 ZSB0aGUgYXJyYXkgdGhhdCBrZWVwcyB0cmFjayBvZgpAQCAtNDQsNyArNDMsNyBAQCBQR1NlbWFw aG9yZVNobWVtU2l6ZShpbnQgbWF4U2VtYXMpCiAgKiBwcm9jZXNzIGV4aXRzLgogICovCiB2b2lk Ci1QR1Jlc2VydmVTZW1hcGhvcmVzKGludCBtYXhTZW1hcykKK1BHU2VtYXBob3JlSW5pdChpbnQg bWF4U2VtYXMpCiB7CiAJbXlTZW1TZXQgPSAoSEFORExFICopIG1hbGxvYyhtYXhTZW1hcyAqIHNp emVvZihIQU5ETEUpKTsKIAlpZiAobXlTZW1TZXQgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL2RzbS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtLmMK aW5kZXggNmE1YjE2MzkyZjcuLjhiNjlkZjRmZjI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9kc20uYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc20uYwpAQCAt NDMsNiArNDMsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9wZ19zaG1lbS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJz dG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1dGlscy9mcmVlcGFnZS5oIgogI2luY2x1 ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKQEAgLTEw OSw2ICsxMTAsMTUgQEAgc3RhdGljIGJvb2wgZHNtX2luaXRfZG9uZSA9IGZhbHNlOwogCiAvKiBQ cmVhbGxvY2F0ZWQgRFNNIHNwYWNlIGluIHRoZSBtYWluIHNoYXJlZCBtZW1vcnkgcmVnaW9uLiAq Lwogc3RhdGljIHZvaWQgKmRzbV9tYWluX3NwYWNlX2JlZ2luID0gTlVMTDsKK3N0YXRpYyBzaXpl X3QgZHNtX21haW5fc3BhY2Vfc2l6ZTsKKworc3RhdGljIHZvaWQgZHNtX21haW5fc3BhY2VfcmVx dWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgZHNtX21haW5fc3BhY2VfaW5pdCh2b2lkICph cmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBkc21fc2htZW1fY2FsbGJhY2tzID0geworCS5y ZXF1ZXN0X2ZuID0gZHNtX21haW5fc3BhY2VfcmVxdWVzdCwKKwkuaW5pdF9mbiA9IGRzbV9tYWlu X3NwYWNlX2luaXQsCit9OwogCiAvKgogICogTGlzdCBvZiBkeW5hbWljIHNoYXJlZCBtZW1vcnkg c2VnbWVudHMgdXNlZCBieSB0aGlzIGJhY2tlbmQuCkBAIC00NjQsNDIgKzQ3NCw0MCBAQCBkc21f c2V0X2NvbnRyb2xfaGFuZGxlKGRzbV9oYW5kbGUgaCkKICNlbmRpZgogCiAvKgotICogUmVzZXJ2 ZSBzb21lIHNwYWNlIGluIHRoZSBtYWluIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBmb3IgRFNNIHNl Z21lbnRzLgorICogUmVzZXJ2ZSBzcGFjZSBpbiB0aGUgbWFpbiBzaGFyZWQgbWVtb3J5IHNlZ21l bnQgZm9yIERTTSBzZWdtZW50cy4KICAqLwotc2l6ZV90Ci1kc21fZXN0aW1hdGVfc2l6ZSh2b2lk KQorc3RhdGljIHZvaWQKK2RzbV9tYWluX3NwYWNlX3JlcXVlc3Qodm9pZCAqYXJnKQogewotCXJl dHVybiAxMDI0ICogMTAyNCAqIChzaXplX3QpIG1pbl9keW5hbWljX3NoYXJlZF9tZW1vcnk7CisJ ZHNtX21haW5fc3BhY2Vfc2l6ZSA9IDEwMjQgKiAxMDI0ICogKHNpemVfdCkgbWluX2R5bmFtaWNf c2hhcmVkX21lbW9yeTsKKworCWlmIChkc21fbWFpbl9zcGFjZV9zaXplID09IDApCisJCXJldHVy bjsKKworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJQcmVhbGxvY2F0ZWQgRFNNIiwKKwkJ CQkJICAgLnNpemUgPSBkc21fbWFpbl9zcGFjZV9zaXplLAorCQkJCQkgICAucHRyID0gJmRzbV9t YWluX3NwYWNlX2JlZ2luLAorCQkpOwogfQogCi0vKgotICogSW5pdGlhbGl6ZSBzcGFjZSBpbiB0 aGUgbWFpbiBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgZm9yIERTTSBzZWdtZW50cy4KLSAqLwotdm9p ZAotZHNtX3NobWVtX2luaXQodm9pZCkKK3N0YXRpYyB2b2lkCitkc21fbWFpbl9zcGFjZV9pbml0 KHZvaWQgKmFyZykKIHsKLQlzaXplX3QJCXNpemUgPSBkc21fZXN0aW1hdGVfc2l6ZSgpOwotCWJv b2wJCWZvdW5kOworCUZyZWVQYWdlTWFuYWdlciAqZnBtID0gKEZyZWVQYWdlTWFuYWdlciAqKSBk c21fbWFpbl9zcGFjZV9iZWdpbjsKKwlzaXplX3QJCWZpcnN0X3BhZ2UgPSAwOworCXNpemVfdAkJ cGFnZXM7CiAKLQlpZiAoc2l6ZSA9PSAwKQorCWlmIChkc21fbWFpbl9zcGFjZV9zaXplID09IDAp CiAJCXJldHVybjsKIAotCWRzbV9tYWluX3NwYWNlX2JlZ2luID0gU2htZW1Jbml0U3RydWN0KCJQ cmVhbGxvY2F0ZWQgRFNNIiwgc2l6ZSwgJmZvdW5kKTsKLQlpZiAoIWZvdW5kKQotCXsKLQkJRnJl ZVBhZ2VNYW5hZ2VyICpmcG0gPSAoRnJlZVBhZ2VNYW5hZ2VyICopIGRzbV9tYWluX3NwYWNlX2Jl Z2luOwotCQlzaXplX3QJCWZpcnN0X3BhZ2UgPSAwOwotCQlzaXplX3QJCXBhZ2VzOwotCi0JCS8q IFJlc2VydmUgc3BhY2UgZm9yIHRoZSBGcmVlUGFnZU1hbmFnZXIuICovCi0JCXdoaWxlIChmaXJz dF9wYWdlICogRlBNX1BBR0VfU0laRSA8IHNpemVvZihGcmVlUGFnZU1hbmFnZXIpKQotCQkJKytm aXJzdF9wYWdlOwotCi0JCS8qIEluaXRpYWxpemUgaXQgYW5kIGdpdmUgaXQgYWxsIHRoZSByZXN0 IG9mIHRoZSBzcGFjZS4gKi8KLQkJRnJlZVBhZ2VNYW5hZ2VySW5pdGlhbGl6ZShmcG0sIGRzbV9t YWluX3NwYWNlX2JlZ2luKTsKLQkJcGFnZXMgPSAoc2l6ZSAvIEZQTV9QQUdFX1NJWkUpIC0gZmly c3RfcGFnZTsKLQkJRnJlZVBhZ2VNYW5hZ2VyUHV0KGZwbSwgZmlyc3RfcGFnZSwgcGFnZXMpOwot CX0KKwkvKiBSZXNlcnZlIHNwYWNlIGZvciB0aGUgRnJlZVBhZ2VNYW5hZ2VyLiAqLworCXdoaWxl IChmaXJzdF9wYWdlICogRlBNX1BBR0VfU0laRSA8IHNpemVvZihGcmVlUGFnZU1hbmFnZXIpKQor CQkrK2ZpcnN0X3BhZ2U7CisKKwkvKiBJbml0aWFsaXplIGl0IGFuZCBnaXZlIGl0IGFsbCB0aGUg cmVzdCBvZiB0aGUgc3BhY2UuICovCisJRnJlZVBhZ2VNYW5hZ2VySW5pdGlhbGl6ZShmcG0sIGRz bV9tYWluX3NwYWNlX2JlZ2luKTsKKwlwYWdlcyA9IChkc21fbWFpbl9zcGFjZV9zaXplIC8gRlBN X1BBR0VfU0laRSkgLSBmaXJzdF9wYWdlOworCUZyZWVQYWdlTWFuYWdlclB1dChmcG0sIGZpcnN0 X3BhZ2UsIHBhZ2VzKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL2RzbV9yZWdpc3RyeS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtX3JlZ2lzdHJ5 LmMKaW5kZXggOWJmY2Q2MTY4MjcuLjJiNTY5Nzc2NTliIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9kc21fcmVnaXN0cnkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9kc21fcmVnaXN0cnkuYwpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvZHNt X3JlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKICNpbmNsdWRlICJzdG9y YWdlL3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAi dXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUg InV0aWxzL3R1cGxlc3RvcmUuaCIKQEAgLTU3LDYgKzU4LDE0IEBAIHR5cGVkZWYgc3RydWN0IERT TVJlZ2lzdHJ5Q3R4U3RydWN0CiAKIHN0YXRpYyBEU01SZWdpc3RyeUN0eFN0cnVjdCAqRFNNUmVn aXN0cnlDdHg7CiAKK3N0YXRpYyB2b2lkIERTTVJlZ2lzdHJ5U2htZW1SZXF1ZXN0KHZvaWQgKmFy Zyk7CitzdGF0aWMgdm9pZCBEU01SZWdpc3RyeVNobWVtSW5pdCh2b2lkICphcmcpOworCitjb25z dCBTaG1lbUNhbGxiYWNrcyBEU01SZWdpc3RyeVNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0 X2ZuID0gRFNNUmVnaXN0cnlTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBEU01SZWdpc3RyeVNo bWVtSW5pdCwKK307CisKIHR5cGVkZWYgc3RydWN0IE5hbWVkRFNNU3RhdGUKIHsKIAlkc21faGFu ZGxlCWhhbmRsZTsKQEAgLTExNCwyNyArMTIzLDIwIEBAIHN0YXRpYyBjb25zdCBkc2hhc2hfcGFy YW1ldGVycyBkc2hfcGFyYW1zID0gewogc3RhdGljIGRzYV9hcmVhICpkc21fcmVnaXN0cnlfZHNh Owogc3RhdGljIGRzaGFzaF90YWJsZSAqZHNtX3JlZ2lzdHJ5X3RhYmxlOwogCi1TaXplCi1EU01S ZWdpc3RyeVNobWVtU2l6ZSh2b2lkKQorc3RhdGljIHZvaWQKK0RTTVJlZ2lzdHJ5U2htZW1SZXF1 ZXN0KHZvaWQgKmFyZykKIHsKLQlyZXR1cm4gTUFYQUxJR04oc2l6ZW9mKERTTVJlZ2lzdHJ5Q3R4 U3RydWN0KSk7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIkRTTSBSZWdpc3RyeSBEYXRh IiwKKwkJCQkJICAgLnNpemUgPSBzaXplb2YoRFNNUmVnaXN0cnlDdHhTdHJ1Y3QpLAorCQkJCQkg ICAucHRyID0gKHZvaWQgKiopICZEU01SZWdpc3RyeUN0eCwKKwkJKTsKIH0KIAotdm9pZAotRFNN UmVnaXN0cnlTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitEU01SZWdpc3RyeVNobWVtSW5p dCh2b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91bmQ7Ci0KLQlEU01SZWdpc3RyeUN0eCA9IChEU01S ZWdpc3RyeUN0eFN0cnVjdCAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkRTTSBSZWdpc3RyeSBEYXRh IiwKLQkJCQkJCURTTVJlZ2lzdHJ5U2htZW1TaXplKCksCi0JCQkJCQkmZm91bmQpOwotCi0JaWYg KCFmb3VuZCkKLQl7Ci0JCURTTVJlZ2lzdHJ5Q3R4LT5kc2FoID0gRFNBX0hBTkRMRV9JTlZBTElE OwotCQlEU01SZWdpc3RyeUN0eC0+ZHNoaCA9IERTSEFTSF9IQU5ETEVfSU5WQUxJRDsKLQl9CisJ RFNNUmVnaXN0cnlDdHgtPmRzYWggPSBEU0FfSEFORExFX0lOVkFMSUQ7CisJRFNNUmVnaXN0cnlD dHgtPmRzaGggPSBEU0hBU0hfSEFORExFX0lOVkFMSUQ7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9p cGNpLmMKaW5kZXggZGU2NWE5ZWYzM2MuLjRmNzA3MTU4MzAzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBj aS5jCkBAIC0yMCw3ICsyMCw2IEBACiAjaW5jbHVkZSAiYWNjZXNzL25idHJlZS5oIgogI2luY2x1 ZGUgImFjY2Vzcy9zdWJ0cmFucy5oIgogI2luY2x1ZGUgImFjY2Vzcy9zeW5jc2Nhbi5oIgotI2lu Y2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3R3b3BoYXNlLmgiCiAj aW5jbHVkZSAiYWNjZXNzL3hsb2dwcmVmZXRjaGVyLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dy ZWNvdmVyeS5oIgpAQCAtNDIsMTYgKzQxLDExIEBACiAjaW5jbHVkZSAic3RvcmFnZS9haW9fc3Vi c3lzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Rz bS5oIgotI2luY2x1ZGUgInN0b3JhZ2UvZHNtX3JlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3BnX3NobWVtLmgiCi0jaW5jbHVkZSAic3RvcmFn ZS9wbXNpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9wcm9jLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKLSNpbmNsdWRl ICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NobWVtX2ludGVybmFs LmgiCi0jaW5jbHVkZSAic3RvcmFnZS9zaW52YWxhZHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3N1 YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9pbmpl Y3Rpb25fcG9pbnQuaCIKQEAgLTEwNSwxNCArOTksMTAgQEAgQ2FsY3VsYXRlU2htZW1TaXplKHZv aWQpCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNobWVtR2V0UmVxdWVzdGVkU2l6ZSgpKTsKIAog CS8qIGxlZ2FjeSBzdWJzeXN0ZW1zICovCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIGRzbV9lc3Rp bWF0ZV9zaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBEU01SZWdpc3RyeVNobWVtU2l6 ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgQnVmZmVyTWFuYWdlclNobWVtU2l6ZSgpKTsK IAlzaXplID0gYWRkX3NpemUoc2l6ZSwgTG9ja01hbmFnZXJTaG1lbVNpemUoKSk7CiAJc2l6ZSA9 IGFkZF9zaXplKHNpemUsIFByZWRpY2F0ZUxvY2tTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9z aXplKHNpemUsIFByb2NHbG9iYWxTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUs IFhMb2dQcmVmZXRjaFNobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgVmFyc3Vw U2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBYTE9HU2htZW1TaXplKCkpOwog CXNpemUgPSBhZGRfc2l6ZShzaXplLCBYTG9nUmVjb3ZlcnlTaG1lbVNpemUoKSk7CiAJc2l6ZSA9 IGFkZF9zaXplKHNpemUsIENMT0dTaG1lbVNpemUoKSk7CkBAIC0xMjEsMTEgKzExMSw3IEBAIENh bGN1bGF0ZVNobWVtU2l6ZSh2b2lkKQogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBUd29QaGFzZVNo bWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgQmFja2dyb3VuZFdvcmtlclNobWVt U2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgTXVsdGlYYWN0U2htZW1TaXplKCkpOwot CXNpemUgPSBhZGRfc2l6ZShzaXplLCBQcm9jQXJyYXlTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFk ZF9zaXplKHNpemUsIEJhY2tlbmRTdGF0dXNTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXpl KHNpemUsIFNoYXJlZEludmFsU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBQ TVNpZ25hbFNobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgUHJvY1NpZ25hbFNo bWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgQ2hlY2twb2ludGVyU2htZW1TaXpl KCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBBdXRvVmFjdXVtU2htZW1TaXplKCkpOwogCXNp emUgPSBhZGRfc2l6ZShzaXplLCBSZXBsaWNhdGlvblNsb3RzU2htZW1TaXplKCkpOwpAQCAtMjc4 LDEzICsyNjQsOSBAQCBSZWdpc3RlckJ1aWx0aW5TaG1lbUNhbGxiYWNrcyh2b2lkKQogc3RhdGlj IHZvaWQKIENyZWF0ZU9yQXR0YWNoU2htZW1TdHJ1Y3RzKHZvaWQpCiB7Ci0JZHNtX3NobWVtX2lu aXQoKTsKLQlEU01SZWdpc3RyeVNobWVtSW5pdCgpOwotCiAJLyoKIAkgKiBTZXQgdXAgeGxvZywg Y2xvZywgYW5kIGJ1ZmZlcnMKIAkgKi8KLQlWYXJzdXBTaG1lbUluaXQoKTsKIAlYTE9HU2htZW1J bml0KCk7CiAJWExvZ1ByZWZldGNoU2htZW1Jbml0KCk7CiAJWExvZ1JlY292ZXJ5U2htZW1Jbml0 KCk7CkBAIC0zMDcsMjMgKzI4OSwxMyBAQCBDcmVhdGVPckF0dGFjaFNobWVtU3RydWN0cyh2b2lk KQogCS8qCiAJICogU2V0IHVwIHByb2Nlc3MgdGFibGUKIAkgKi8KLQlpZiAoIUlzVW5kZXJQb3N0 bWFzdGVyKQotCQlJbml0UHJvY0dsb2JhbCgpOwotCVByb2NBcnJheVNobWVtSW5pdCgpOwogCUJh Y2tlbmRTdGF0dXNTaG1lbUluaXQoKTsKIAlUd29QaGFzZVNobWVtSW5pdCgpOwogCUJhY2tncm91 bmRXb3JrZXJTaG1lbUluaXQoKTsKIAotCS8qCi0JICogU2V0IHVwIHNoYXJlZC1pbnZhbCBtZXNz YWdpbmcKLQkgKi8KLQlTaGFyZWRJbnZhbFNobWVtSW5pdCgpOwotCiAJLyoKIAkgKiBTZXQgdXAg aW50ZXJwcm9jZXNzIHNpZ25hbGluZyBtZWNoYW5pc21zCiAJICovCi0JUE1TaWduYWxTaG1lbUlu aXQoKTsKLQlQcm9jU2lnbmFsU2htZW1Jbml0KCk7CiAJQ2hlY2twb2ludGVyU2htZW1Jbml0KCk7 CiAJQXV0b1ZhY3V1bVNobWVtSW5pdCgpOwogCVJlcGxpY2F0aW9uU2xvdHNTaG1lbUluaXQoKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2xhdGNoLmMgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9sYXRjaC5jCmluZGV4IDg1MzdlOWZlZjJkLi43ZDRmNGNmMzJiYiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvbGF0Y2guYworKysgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9sYXRjaC5jCkBAIC04MCwxMCArODAsMTAgQEAgSW5pdExhdGNoKExhdGNo ICpsYXRjaCkKICAqIGN1cnJlbnQgcHJvY2Vzcy4KICAqCiAgKiBJbml0U2hhcmVkTGF0Y2ggbmVl ZHMgdG8gYmUgY2FsbGVkIGluIHBvc3RtYXN0ZXIgYmVmb3JlIGZvcmtpbmcgY2hpbGQKLSAqIHBy b2Nlc3NlcywgdXN1YWxseSByaWdodCBhZnRlciBhbGxvY2F0aW5nIHRoZSBzaGFyZWQgbWVtb3J5 IGJsb2NrCi0gKiBjb250YWluaW5nIHRoZSBsYXRjaCB3aXRoIFNobWVtSW5pdFN0cnVjdC4gKFRo ZSBVbml4IGltcGxlbWVudGF0aW9uCi0gKiBkb2Vzbid0IGFjdHVhbGx5IHJlcXVpcmUgdGhhdCwg YnV0IHRoZSBXaW5kb3dzIG9uZSBkb2VzLikgQmVjYXVzZSBvZgotICogdGhpcyByZXN0cmljdGlv biwgd2UgaGF2ZSBubyBjb25jdXJyZW5jeSBpc3N1ZXMgdG8gd29ycnkgYWJvdXQgaGVyZS4KKyAq IHByb2Nlc3NlcywgdXN1YWxseSByaWdodCBhZnRlciBpbml0aWFsaXppbmcgdGhlIHNoYXJlZCBt ZW1vcnkgYmxvY2sKKyAqIGNvbnRhaW5pbmcgdGhlIGxhdGNoLiAoVGhlIFVuaXggaW1wbGVtZW50 YXRpb24gZG9lc24ndCBhY3R1YWxseSByZXF1aXJlCisgKiB0aGF0LCBidXQgdGhlIFdpbmRvd3Mg b25lIGRvZXMuKSBCZWNhdXNlIG9mIHRoaXMgcmVzdHJpY3Rpb24sIHdlIGhhdmUgbm8KKyAqIGNv bmN1cnJlbmN5IGlzc3VlcyB0byB3b3JyeSBhYm91dCBoZXJlLgogICoKICAqIE5vdGUgdGhhdCBv dGhlciBoYW5kbGVzIGNyZWF0ZWQgaW4gdGhpcyBtb2R1bGUgYXJlIG5ldmVyIG1hcmtlZCBhcwog ICogaW5oZXJpdGFibGUuICBUaHVzIHdlIGRvIG5vdCBuZWVkIHRvIHdvcnJ5IGFib3V0IGNsZWFu aW5nIHVwIGNoaWxkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wbXNpZ25h bC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcG1zaWduYWwuYwppbmRleCA0NjE4ODIwYjMz Ny4uYmRhZDVmZGQwNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Btc2ln bmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcG1zaWduYWwuYwpAQCAtMjcsNiAr MjcsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNp Z25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1 YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogCiAKQEAgLTgzLDYgKzg0 LDE0IEBAIHN0cnVjdCBQTVNpZ25hbERhdGEKIC8qIFBNU2lnbmFsU3RhdGUgcG9pbnRlciBpcyB2 YWxpZCBpbiBib3RoIHBvc3RtYXN0ZXIgYW5kIGNoaWxkIHByb2Nlc3NlcyAqLwogTk9OX0VYRUNf U1RBVElDIHZvbGF0aWxlIFBNU2lnbmFsRGF0YSAqUE1TaWduYWxTdGF0ZSA9IE5VTEw7CiAKK3N0 YXRpYyB2b2lkIFBNU2lnbmFsU2htZW1SZXF1ZXN0KHZvaWQgKik7CitzdGF0aWMgdm9pZCBQTVNp Z25hbFNobWVtSW5pdCh2b2lkICopOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBQTVNpZ25hbFNo bWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gUE1TaWduYWxTaG1lbVJlcXVlc3QsCisJ LmluaXRfZm4gPSBQTVNpZ25hbFNobWVtSW5pdCwKK307CisKIC8qCiAgKiBMb2NhbCBjb3B5IG9m IFBNU2lnbmFsU3RhdGUtPm51bV9jaGlsZF9mbGFncywgb25seSB2YWxpZCBpbiB0aGUKICAqIHBv c3RtYXN0ZXIuICBQb3N0bWFzdGVyIGtlZXBzIGEgbG9jYWwgY29weSBzbyB0aGF0IGl0IGRvZXNu J3QgbmVlZCB0bwpAQCAtMTIzLDM5ICsxMzIsMjkgQEAgcG9zdG1hc3Rlcl9kZWF0aF9oYW5kbGVy KFNJR05BTF9BUkdTKQogc3RhdGljIHZvaWQgTWFya1Bvc3RtYXN0ZXJDaGlsZEluYWN0aXZlKGlu dCBjb2RlLCBEYXR1bSBhcmcpOwogCiAvKgotICogUE1TaWduYWxTaG1lbVNpemUKLSAqCQlDb21w dXRlIHNwYWNlIG5lZWRlZCBmb3IgcG1zaWduYWwuYydzIHNoYXJlZCBtZW1vcnkKKyAqIFBNU2ln bmFsU2htZW1SZXF1ZXN0IC0gUmVnaXN0ZXIgcG1zaWduYWwuYydzIHNoYXJlZCBtZW1vcnkgbmVl ZHMKICAqLwotU2l6ZQotUE1TaWduYWxTaG1lbVNpemUodm9pZCkKK3N0YXRpYyB2b2lkCitQTVNp Z25hbFNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7Ci0JU2l6ZQkJc2l6ZTsKKwlzaXplX3QJCXNp emU7CiAKLQlzaXplID0gb2Zmc2V0b2YoUE1TaWduYWxEYXRhLCBQTUNoaWxkRmxhZ3MpOwotCXNp emUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShNYXhMaXZlUG9zdG1hc3RlckNoaWxkcmVuKCks Ci0JCQkJCQkJCSAgIHNpemVvZihzaWdfYXRvbWljX3QpKSk7CisJbnVtX2NoaWxkX2ZsYWdzID0g TWF4TGl2ZVBvc3RtYXN0ZXJDaGlsZHJlbigpOwogCi0JcmV0dXJuIHNpemU7CisJc2l6ZSA9IGFk ZF9zaXplKG9mZnNldG9mKFBNU2lnbmFsRGF0YSwgUE1DaGlsZEZsYWdzKSwKKwkJCQkJbXVsX3Np emUobnVtX2NoaWxkX2ZsYWdzLCBzaXplb2Yoc2lnX2F0b21pY190KSkpOworCVNobWVtUmVxdWVz dFN0cnVjdCgubmFtZSA9ICJQTVNpZ25hbFN0YXRlIiwKKwkJCQkJICAgLnNpemUgPSBzaXplLAor CQkJCQkgICAucHRyID0gKHZvaWQgKiopICZQTVNpZ25hbFN0YXRlLAorCQkpOwogfQogCi0vKgot ICogUE1TaWduYWxTaG1lbUluaXQgLSBpbml0aWFsaXplIGR1cmluZyBzaGFyZWQtbWVtb3J5IGNy ZWF0aW9uCi0gKi8KLXZvaWQKLVBNU2lnbmFsU2htZW1Jbml0KHZvaWQpCitzdGF0aWMgdm9pZAor UE1TaWduYWxTaG1lbUluaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kOwotCi0JUE1TaWdu YWxTdGF0ZSA9IChQTVNpZ25hbERhdGEgKikKLQkJU2htZW1Jbml0U3RydWN0KCJQTVNpZ25hbFN0 YXRlIiwgUE1TaWduYWxTaG1lbVNpemUoKSwgJmZvdW5kKTsKLQotCWlmICghZm91bmQpCi0Jewot CQkvKiBpbml0aWFsaXplIGFsbCBmbGFncyB0byB6ZXJvZXMgKi8KLQkJTWVtU2V0KHVudm9sYXRp emUoUE1TaWduYWxEYXRhICosIFBNU2lnbmFsU3RhdGUpLCAwLCBQTVNpZ25hbFNobWVtU2l6ZSgp KTsKLQkJbnVtX2NoaWxkX2ZsYWdzID0gTWF4TGl2ZVBvc3RtYXN0ZXJDaGlsZHJlbigpOwotCQlQ TVNpZ25hbFN0YXRlLT5udW1fY2hpbGRfZmxhZ3MgPSBudW1fY2hpbGRfZmxhZ3M7Ci0JfQorCUFz c2VydChQTVNpZ25hbFN0YXRlKTsKKwlBc3NlcnQobnVtX2NoaWxkX2ZsYWdzID4gMCk7CisJUE1T aWduYWxTdGF0ZS0+bnVtX2NoaWxkX2ZsYWdzID0gbnVtX2NoaWxkX2ZsYWdzOwogfQogCiAvKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwppbmRleCBjYzIwN2NiNTZlMy4uZjU0MGJiNmIy M2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCisrKyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCkBAIC02MSw2ICs2MSw3IEBACiAj aW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIK ICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5 c3RlbXMuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlu cy5oIgogI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgpAQCAtMTAzLDYgKzEwNCwx OCBAQCB0eXBlZGVmIHN0cnVjdCBQcm9jQXJyYXlTdHJ1Y3QKIAlpbnQJCQlwZ3Byb2Nub3NbRkxF WElCTEVfQVJSQVlfTUVNQkVSXTsKIH0gUHJvY0FycmF5U3RydWN0OwogCitzdGF0aWMgdm9pZCBQ cm9jQXJyYXlTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFByb2NBcnJheVNo bWVtSW5pdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgUHJvY0FycmF5U2htZW1BdHRhY2godm9p ZCAqYXJnKTsKKworc3RhdGljIFByb2NBcnJheVN0cnVjdCAqcHJvY0FycmF5OworCitjb25zdCBz dHJ1Y3QgU2htZW1DYWxsYmFja3MgUHJvY0FycmF5U2htZW1DYWxsYmFja3MgPSB7CisJLnJlcXVl c3RfZm4gPSBQcm9jQXJyYXlTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBQcm9jQXJyYXlTaG1l bUluaXQsCisJLmF0dGFjaF9mbiA9IFByb2NBcnJheVNobWVtQXR0YWNoLAorfTsKKwogLyoKICAq IFN0YXRlIGZvciB0aGUgR2xvYmFsVmlzVGVzdCogZmFtaWx5IG9mIGZ1bmN0aW9ucy4gVGhvc2Ug ZnVuY3Rpb25zIGNhbgogICogZS5nLiBiZSB1c2VkIHRvIGRlY2lkZSBpZiBhIGRlbGV0ZWQgcm93 IGNhbiBiZSByZW1vdmVkIHdpdGhvdXQgdmlvbGF0aW5nCkBAIC0yNjksOSArMjgyLDYgQEAgdHlw ZWRlZiBlbnVtIEtBWENvbXByZXNzUmVhc29uCiAJS0FYX1NUQVJUVVBfUFJPQ0VTU19JRExFLAkv KiBzdGFydHVwIHByb2Nlc3MgaXMgYWJvdXQgdG8gc2xlZXAgKi8KIH0gS0FYQ29tcHJlc3NSZWFz b247CiAKLQotc3RhdGljIFByb2NBcnJheVN0cnVjdCAqcHJvY0FycmF5OwotCiBzdGF0aWMgUEdQ Uk9DICphbGxQcm9jczsKIAogLyoKQEAgLTI4Miw4ICsyOTIsMTEgQEAgc3RhdGljIFRyYW5zYWN0 aW9uSWQgY2FjaGVkWGlkSXNOb3RJblByb2dyZXNzID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAv KgogICogQm9va2tlZXBpbmcgZm9yIHRyYWNraW5nIGVtdWxhdGVkIHRyYW5zYWN0aW9ucyBpbiBy ZWNvdmVyeQogICovCisKIHN0YXRpYyBUcmFuc2FjdGlvbklkICpLbm93bkFzc2lnbmVkWGlkczsK Kwogc3RhdGljIGJvb2wgKktub3duQXNzaWduZWRYaWRzVmFsaWQ7CisKIHN0YXRpYyBUcmFuc2Fj dGlvbklkIGxhdGVzdE9ic2VydmVkWGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIC8qCkBA IC0zNzQsMTkgKzM4NywxMyBAQCBzdGF0aWMgaW5saW5lIEZ1bGxUcmFuc2FjdGlvbklkIEZ1bGxY aWRSZWxhdGl2ZVRvKEZ1bGxUcmFuc2FjdGlvbklkIHJlbCwKIHN0YXRpYyB2b2lkIEdsb2JhbFZp c1VwZGF0ZUFwcGx5KENvbXB1dGVYaWRIb3Jpem9uc1Jlc3VsdCAqaG9yaXpvbnMpOwogCiAvKgot ICogUmVwb3J0IHNoYXJlZC1tZW1vcnkgc3BhY2UgbmVlZGVkIGJ5IFByb2NBcnJheVNobWVtSW5p dAorICogUmVnaXN0ZXIgdGhlIHNoYXJlZCBQR1BST0MgYXJyYXkgZHVyaW5nIHBvc3RtYXN0ZXIg c3RhcnR1cC4KICAqLwotU2l6ZQotUHJvY0FycmF5U2htZW1TaXplKHZvaWQpCitzdGF0aWMgdm9p ZAorUHJvY0FycmF5U2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlTaXplCQlzaXplOwotCi0J LyogU2l6ZSBvZiB0aGUgUHJvY0FycmF5IHN0cnVjdHVyZSBpdHNlbGYgKi8KICNkZWZpbmUgUFJP Q0FSUkFZX01BWFBST0NTCShNYXhCYWNrZW5kcyArIG1heF9wcmVwYXJlZF94YWN0cykKIAotCXNp emUgPSBvZmZzZXRvZihQcm9jQXJyYXlTdHJ1Y3QsIHBncHJvY25vcyk7Ci0Jc2l6ZSA9IGFkZF9z aXplKHNpemUsIG11bF9zaXplKHNpemVvZihpbnQpLCBQUk9DQVJSQVlfTUFYUFJPQ1MpKTsKLQog CS8qCiAJICogRHVyaW5nIEhvdCBTdGFuZGJ5IHByb2Nlc3Npbmcgd2UgaGF2ZSBhIGRhdGEgc3Ry dWN0dXJlIGNhbGxlZAogCSAqIEtub3duQXNzaWduZWRYaWRzLCBjcmVhdGVkIGluIHNoYXJlZCBt ZW1vcnkuIExvY2FsIGRhdGEgc3RydWN0dXJlcyBhcmUKQEAgLTQwNSw2NCArNDEyLDQ5IEBAIFBy b2NBcnJheVNobWVtU2l6ZSh2b2lkKQogCiAJaWYgKEVuYWJsZUhvdFN0YW5kYnkpCiAJewotCQlz aXplID0gYWRkX3NpemUoc2l6ZSwKLQkJCQkJCW11bF9zaXplKHNpemVvZihUcmFuc2FjdGlvbklk KSwKLQkJCQkJCQkJIFRPVEFMX01BWF9DQUNIRURfU1VCWElEUykpOwotCQlzaXplID0gYWRkX3Np emUoc2l6ZSwKLQkJCQkJCW11bF9zaXplKHNpemVvZihib29sKSwgVE9UQUxfTUFYX0NBQ0hFRF9T VUJYSURTKSk7CisJCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJLbm93bkFzc2lnbmVkWGlk cyIsCisJCQkJCQkgICAuc2l6ZSA9IG11bF9zaXplKHNpemVvZihUcmFuc2FjdGlvbklkKSwgVE9U QUxfTUFYX0NBQ0hFRF9TVUJYSURTKSwKKwkJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJktub3du QXNzaWduZWRYaWRzLAorCQkJKTsKKworCQlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiS25v d25Bc3NpZ25lZFhpZHNWYWxpZCIsCisJCQkJCQkgICAuc2l6ZSA9IG11bF9zaXplKHNpemVvZihi b29sKSwgVE9UQUxfTUFYX0NBQ0hFRF9TVUJYSURTKSwKKwkJCQkJCSAgIC5wdHIgPSAodm9pZCAq KikgJktub3duQXNzaWduZWRYaWRzVmFsaWQsCisJCQkpOwogCX0KIAotCXJldHVybiBzaXplOwor CS8qIFJlZ2lzdGVyIHRoZSBQcm9jQXJyYXkgc2hhcmVkIHN0cnVjdHVyZSAqLworCVNobWVtUmVx dWVzdFN0cnVjdCgubmFtZSA9ICJQcm9jIEFycmF5IiwKKwkJCQkJICAgLnNpemUgPSBhZGRfc2l6 ZShvZmZzZXRvZihQcm9jQXJyYXlTdHJ1Y3QsIHBncHJvY25vcyksCisJCQkJCQkJCQkJbXVsX3Np emUoc2l6ZW9mKGludCksIFBST0NBUlJBWV9NQVhQUk9DUykpLAorCQkJCQkgICAucHRyID0gKHZv aWQgKiopICZwcm9jQXJyYXksCisJCSk7CiB9CiAKIC8qCiAgKiBJbml0aWFsaXplIHRoZSBzaGFy ZWQgUEdQUk9DIGFycmF5IGR1cmluZyBwb3N0bWFzdGVyIHN0YXJ0dXAuCiAgKi8KLXZvaWQKLVBy b2NBcnJheVNobWVtSW5pdCh2b2lkKQorc3RhdGljIHZvaWQKK1Byb2NBcnJheVNobWVtSW5pdCh2 b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91bmQ7Ci0KLQkvKiBDcmVhdGUgb3IgYXR0YWNoIHRvIHRo ZSBQcm9jQXJyYXkgc2hhcmVkIHN0cnVjdHVyZSAqLwotCXByb2NBcnJheSA9IChQcm9jQXJyYXlT dHJ1Y3QgKikKLQkJU2htZW1Jbml0U3RydWN0KCJQcm9jIEFycmF5IiwKLQkJCQkJCWFkZF9zaXpl KG9mZnNldG9mKFByb2NBcnJheVN0cnVjdCwgcGdwcm9jbm9zKSwKLQkJCQkJCQkJIG11bF9zaXpl KHNpemVvZihpbnQpLAotCQkJCQkJCQkJCSAgUFJPQ0FSUkFZX01BWFBST0NTKSksCi0JCQkJCQkm Zm91bmQpOwotCi0JaWYgKCFmb3VuZCkKLQl7Ci0JCS8qCi0JCSAqIFdlJ3JlIHRoZSBmaXJzdCAt IGluaXRpYWxpemUuCi0JCSAqLwotCQlwcm9jQXJyYXktPm51bVByb2NzID0gMDsKLQkJcHJvY0Fy cmF5LT5tYXhQcm9jcyA9IFBST0NBUlJBWV9NQVhQUk9DUzsKLQkJcHJvY0FycmF5LT5tYXhLbm93 bkFzc2lnbmVkWGlkcyA9IFRPVEFMX01BWF9DQUNIRURfU1VCWElEUzsKLQkJcHJvY0FycmF5LT5u dW1Lbm93bkFzc2lnbmVkWGlkcyA9IDA7Ci0JCXByb2NBcnJheS0+dGFpbEtub3duQXNzaWduZWRY aWRzID0gMDsKLQkJcHJvY0FycmF5LT5oZWFkS25vd25Bc3NpZ25lZFhpZHMgPSAwOwotCQlwcm9j QXJyYXktPmxhc3RPdmVyZmxvd2VkWGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JCXByb2NB cnJheS0+cmVwbGljYXRpb25fc2xvdF94bWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JCXBy b2NBcnJheS0+cmVwbGljYXRpb25fc2xvdF9jYXRhbG9nX3htaW4gPSBJbnZhbGlkVHJhbnNhY3Rp b25JZDsKLQkJVHJhbnNhbVZhcmlhYmxlcy0+eGFjdENvbXBsZXRpb25Db3VudCA9IDE7Ci0JfQor CXByb2NBcnJheS0+bnVtUHJvY3MgPSAwOworCXByb2NBcnJheS0+bWF4UHJvY3MgPSBQUk9DQVJS QVlfTUFYUFJPQ1M7CisJcHJvY0FycmF5LT5tYXhLbm93bkFzc2lnbmVkWGlkcyA9IFRPVEFMX01B WF9DQUNIRURfU1VCWElEUzsKKwlwcm9jQXJyYXktPm51bUtub3duQXNzaWduZWRYaWRzID0gMDsK Kwlwcm9jQXJyYXktPnRhaWxLbm93bkFzc2lnbmVkWGlkcyA9IDA7CisJcHJvY0FycmF5LT5oZWFk S25vd25Bc3NpZ25lZFhpZHMgPSAwOworCXByb2NBcnJheS0+bGFzdE92ZXJmbG93ZWRYaWQgPSBJ bnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlwcm9jQXJyYXktPnJlcGxpY2F0aW9uX3Nsb3RfeG1pbiA9 IEludmFsaWRUcmFuc2FjdGlvbklkOworCXByb2NBcnJheS0+cmVwbGljYXRpb25fc2xvdF9jYXRh bG9nX3htaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlUcmFuc2FtVmFyaWFibGVzLT54YWN0 Q29tcGxldGlvbkNvdW50ID0gMTsKIAogCWFsbFByb2NzID0gUHJvY0dsb2JhbC0+YWxsUHJvY3M7 Cit9CiAKLQkvKiBDcmVhdGUgb3IgYXR0YWNoIHRvIHRoZSBLbm93bkFzc2lnbmVkWGlkcyBhcnJh eXMgdG9vLCBpZiBuZWVkZWQgKi8KLQlpZiAoRW5hYmxlSG90U3RhbmRieSkKLQl7Ci0JCUtub3du QXNzaWduZWRYaWRzID0gKFRyYW5zYWN0aW9uSWQgKikKLQkJCVNobWVtSW5pdFN0cnVjdCgiS25v d25Bc3NpZ25lZFhpZHMiLAotCQkJCQkJCW11bF9zaXplKHNpemVvZihUcmFuc2FjdGlvbklkKSwK LQkJCQkJCQkJCSBUT1RBTF9NQVhfQ0FDSEVEX1NVQlhJRFMpLAotCQkJCQkJCSZmb3VuZCk7Ci0J CUtub3duQXNzaWduZWRYaWRzVmFsaWQgPSAoYm9vbCAqKQotCQkJU2htZW1Jbml0U3RydWN0KCJL bm93bkFzc2lnbmVkWGlkc1ZhbGlkIiwKLQkJCQkJCQltdWxfc2l6ZShzaXplb2YoYm9vbCksIFRP VEFMX01BWF9DQUNIRURfU1VCWElEUyksCi0JCQkJCQkJJmZvdW5kKTsKLQl9CitzdGF0aWMgdm9p ZAorUHJvY0FycmF5U2htZW1BdHRhY2godm9pZCAqYXJnKQoreworCWFsbFByb2NzID0gUHJvY0ds b2JhbC0+YWxsUHJvY3M7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMK aW5kZXggZjFhYjNhYTNmZTAuLmFkZWJmMGU3ODk4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJv Y3NpZ25hbC5jCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgog I2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zbWdyLmgiCisj aW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5o IgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvd2FpdF9ldmVu dC5oIgpAQCAtMTA2LDcgKzEwNywxNiBAQCBzdHJ1Y3QgUHJvY1NpZ25hbEhlYWRlcgogI2RlZmlu ZSBCQVJSSUVSX0NMRUFSX0JJVChmbGFncywgdHlwZSkgXAogCSgoZmxhZ3MpICY9IH4oKCh1aW50 MzIpIDEpIDw8ICh1aW50MzIpICh0eXBlKSkpCiAKK3N0YXRpYyB2b2lkIFByb2NTaWduYWxTaG1l bVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFByb2NTaWduYWxTaG1lbUluaXQodm9p ZCAqYXJnKTsKKworY29uc3QgU2htZW1DYWxsYmFja3MgUHJvY1NpZ25hbFNobWVtQ2FsbGJhY2tz ID0geworCS5yZXF1ZXN0X2ZuID0gUHJvY1NpZ25hbFNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9 IFByb2NTaWduYWxTaG1lbUluaXQsCit9OworCiBOT05fRVhFQ19TVEFUSUMgUHJvY1NpZ25hbEhl YWRlciAqUHJvY1NpZ25hbCA9IE5VTEw7CisKIHN0YXRpYyBQcm9jU2lnbmFsU2xvdCAqTXlQcm9j U2lnbmFsU2xvdCA9IE5VTEw7CiAKIHN0YXRpYyBib29sIENoZWNrUHJvY1NpZ25hbChQcm9jU2ln bmFsUmVhc29uIHJlYXNvbik7CkBAIC0xMTQsNTEgKzEyNCwzOSBAQCBzdGF0aWMgdm9pZCBDbGVh bnVwUHJvY1NpZ25hbFN0YXRlKGludCBzdGF0dXMsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBS ZXNldFByb2NTaWduYWxCYXJyaWVyQml0cyh1aW50MzIgZmxhZ3MpOwogCiAvKgotICogUHJvY1Np Z25hbFNobWVtU2l6ZQotICoJCUNvbXB1dGUgc3BhY2UgbmVlZGVkIGZvciBQcm9jU2lnbmFsJ3Mg c2hhcmVkIG1lbW9yeQorICogUHJvY1NpZ25hbFNobWVtUmVxdWVzdAorICoJCVJlZ2lzdGVyIFBy b2NTaWduYWwncyBzaGFyZWQgbWVtb3J5IG5lZWRzIGF0IHBvc3RtYXN0ZXIgc3RhcnR1cAogICov Ci1TaXplCi1Qcm9jU2lnbmFsU2htZW1TaXplKHZvaWQpCitzdGF0aWMgdm9pZAorUHJvY1NpZ25h bFNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7CiAJU2l6ZQkJc2l6ZTsKIAogCXNpemUgPSBtdWxf c2l6ZShOdW1Qcm9jU2lnbmFsU2xvdHMsIHNpemVvZihQcm9jU2lnbmFsU2xvdCkpOwogCXNpemUg PSBhZGRfc2l6ZShzaXplLCBvZmZzZXRvZihQcm9jU2lnbmFsSGVhZGVyLCBwc2hfc2xvdCkpOwot CXJldHVybiBzaXplOworCisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIlByb2NTaWduYWwi LAorCQkJCQkgICAuc2l6ZSA9IHNpemUsCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJlByb2NT aWduYWwsCisJCSk7CiB9CiAKLS8qCi0gKiBQcm9jU2lnbmFsU2htZW1Jbml0Ci0gKgkJQWxsb2Nh dGUgYW5kIGluaXRpYWxpemUgUHJvY1NpZ25hbCdzIHNoYXJlZCBtZW1vcnkKLSAqLwotdm9pZAot UHJvY1NpZ25hbFNobWVtSW5pdCh2b2lkKQorc3RhdGljIHZvaWQKK1Byb2NTaWduYWxTaG1lbUlu aXQodm9pZCAqYXJnKQogewotCVNpemUJCXNpemUgPSBQcm9jU2lnbmFsU2htZW1TaXplKCk7Ci0J Ym9vbAkJZm91bmQ7CisJcGdfYXRvbWljX2luaXRfdTY0KCZQcm9jU2lnbmFsLT5wc2hfYmFycmll ckdlbmVyYXRpb24sIDApOwogCi0JUHJvY1NpZ25hbCA9IChQcm9jU2lnbmFsSGVhZGVyICopCi0J CVNobWVtSW5pdFN0cnVjdCgiUHJvY1NpZ25hbCIsIHNpemUsICZmb3VuZCk7Ci0KLQkvKiBJZiB3 ZSdyZSBmaXJzdCwgaW5pdGlhbGl6ZS4gKi8KLQlpZiAoIWZvdW5kKQorCWZvciAoaW50IGkgPSAw OyBpIDwgTnVtUHJvY1NpZ25hbFNsb3RzOyArK2kpCiAJewotCQlpbnQJCQlpOwotCi0JCXBnX2F0 b21pY19pbml0X3U2NCgmUHJvY1NpZ25hbC0+cHNoX2JhcnJpZXJHZW5lcmF0aW9uLCAwKTsKKwkJ UHJvY1NpZ25hbFNsb3QgKnNsb3QgPSAmUHJvY1NpZ25hbC0+cHNoX3Nsb3RbaV07CiAKLQkJZm9y IChpID0gMDsgaSA8IE51bVByb2NTaWduYWxTbG90czsgKytpKQotCQl7Ci0JCQlQcm9jU2lnbmFs U2xvdCAqc2xvdCA9ICZQcm9jU2lnbmFsLT5wc2hfc2xvdFtpXTsKLQotCQkJU3BpbkxvY2tJbml0 KCZzbG90LT5wc3NfbXV0ZXgpOwotCQkJcGdfYXRvbWljX2luaXRfdTMyKCZzbG90LT5wc3NfcGlk LCAwKTsKLQkJCXNsb3QtPnBzc19jYW5jZWxfa2V5X2xlbiA9IDA7Ci0JCQlNZW1TZXQoc2xvdC0+ cHNzX3NpZ25hbEZsYWdzLCAwLCBzaXplb2Yoc2xvdC0+cHNzX3NpZ25hbEZsYWdzKSk7Ci0JCQlw Z19hdG9taWNfaW5pdF91NjQoJnNsb3QtPnBzc19iYXJyaWVyR2VuZXJhdGlvbiwgUEdfVUlOVDY0 X01BWCk7Ci0JCQlwZ19hdG9taWNfaW5pdF91MzIoJnNsb3QtPnBzc19iYXJyaWVyQ2hlY2tNYXNr LCAwKTsKLQkJCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmc2xvdC0+cHNzX2JhcnJpZXJDVik7Ci0J CX0KKwkJU3BpbkxvY2tJbml0KCZzbG90LT5wc3NfbXV0ZXgpOworCQlwZ19hdG9taWNfaW5pdF91 MzIoJnNsb3QtPnBzc19waWQsIDApOworCQlzbG90LT5wc3NfY2FuY2VsX2tleV9sZW4gPSAwOwor CQlNZW1TZXQoc2xvdC0+cHNzX3NpZ25hbEZsYWdzLCAwLCBzaXplb2Yoc2xvdC0+cHNzX3NpZ25h bEZsYWdzKSk7CisJCXBnX2F0b21pY19pbml0X3U2NCgmc2xvdC0+cHNzX2JhcnJpZXJHZW5lcmF0 aW9uLCBQR19VSU5UNjRfTUFYKTsKKwkJcGdfYXRvbWljX2luaXRfdTMyKCZzbG90LT5wc3NfYmFy cmllckNoZWNrTWFzaywgMCk7CisJCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmc2xvdC0+cHNzX2Jh cnJpZXJDVik7CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9z aW52YWxhZHQuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbGFkdC5jCmluZGV4IGE3 YTdjYzRmMGE5Li4zN2EyMWZmYWYxYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc2ludmFsYWR0LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsYWR0LmMK QEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9zaW52YWxhZHQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKKyNpbmNsdWRl ICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKIAogLyoKICAqIENvbmNlcHR1YWxseSwgdGhlIHNoYXJl ZCBjYWNoZSBpbnZhbGlkYXRpb24gbWVzc2FnZXMgYXJlIHN0b3JlZCBpbiBhbgpAQCAtMjA1LDYg KzIwNiwxNCBAQCB0eXBlZGVmIHN0cnVjdCBTSVNlZwogCiBzdGF0aWMgU0lTZWcgKnNobUludmFs QnVmZmVyOwkvKiBwb2ludGVyIHRvIHRoZSBzaGFyZWQgaW52YWwgYnVmZmVyICovCiAKK3N0YXRp YyB2b2lkIFNoYXJlZEludmFsU2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBT aGFyZWRJbnZhbFNobWVtSW5pdCh2b2lkICphcmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBT aGFyZWRJbnZhbFNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gU2hhcmVkSW52YWxT aG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBTaGFyZWRJbnZhbFNobWVtSW5pdCwKK307CisKIAog c3RhdGljIExvY2FsVHJhbnNhY3Rpb25JZCBuZXh0TG9jYWxUcmFuc2FjdGlvbklkOwogCkBAIC0y MTIsMTAgKzIyMSwxMSBAQCBzdGF0aWMgdm9pZCBDbGVhbnVwSW52YWxpZGF0aW9uU3RhdGUoaW50 IHN0YXR1cywgRGF0dW0gYXJnKTsKIAogCiAvKgotICogU2hhcmVkSW52YWxTaG1lbVNpemUgLS0t IHJldHVybiBzaGFyZWQtbWVtb3J5IHNwYWNlIG5lZWRlZAorICogU2hhcmVkSW52YWxTaG1lbVJl cXVlc3QKKyAqCQlSZWdpc3RlciBzaGFyZWQgbWVtb3J5IG5lZWRzIGZvciB0aGUgU0kgbWVzc2Fn ZSBidWZmZXIKICAqLwotU2l6ZQotU2hhcmVkSW52YWxTaG1lbVNpemUodm9pZCkKK3N0YXRpYyB2 b2lkCitTaGFyZWRJbnZhbFNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7CiAJU2l6ZQkJc2l6ZTsK IApAQCAtMjIzLDI2ICsyMzMsMTggQEAgU2hhcmVkSW52YWxTaG1lbVNpemUodm9pZCkKIAlzaXpl ID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoc2l6ZW9mKFByb2NTdGF0ZSksIE51bVByb2NTdGF0 ZVNsb3RzKSk7CS8qIHByb2NTdGF0ZSAqLwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6 ZShzaXplb2YoaW50KSwgTnVtUHJvY1N0YXRlU2xvdHMpKTsJLyogcGdwcm9jbm9zICovCiAKLQly ZXR1cm4gc2l6ZTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAic2htSW52YWxCdWZmZXIi LAorCQkJCQkgICAuc2l6ZSA9IHNpemUsCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJnNobUlu dmFsQnVmZmVyLAorCQkpOwogfQogCi0vKgotICogU2hhcmVkSW52YWxTaG1lbUluaXQKLSAqCQlD cmVhdGUgYW5kIGluaXRpYWxpemUgdGhlIFNJIG1lc3NhZ2UgYnVmZmVyCi0gKi8KLXZvaWQKLVNo YXJlZEludmFsU2htZW1Jbml0KHZvaWQpCitzdGF0aWMgdm9pZAorU2hhcmVkSW52YWxTaG1lbUlu aXQodm9pZCAqYXJnKQogewogCWludAkJCWk7Ci0JYm9vbAkJZm91bmQ7Ci0KLQkvKiBBbGxvY2F0 ZSBzcGFjZSBpbiBzaGFyZWQgbWVtb3J5ICovCi0Jc2htSW52YWxCdWZmZXIgPSAoU0lTZWcgKikK LQkJU2htZW1Jbml0U3RydWN0KCJzaG1JbnZhbEJ1ZmZlciIsIFNoYXJlZEludmFsU2htZW1TaXpl KCksICZmb3VuZCk7Ci0JaWYgKGZvdW5kKQotCQlyZXR1cm47CiAKLQkvKiBDbGVhciBtZXNzYWdl IGNvdW50ZXJzLCBzYXZlIHNpemUgb2YgcHJvY1N0YXRlIGFycmF5LCBpbml0IHNwaW5sb2NrICov CisJLyogQ2xlYXIgbWVzc2FnZSBjb3VudGVycywgaW5pdCBzcGlubG9jayAqLwogCXNobUludmFs QnVmZmVyLT5taW5Nc2dOdW0gPSAwOwogCXNobUludmFsQnVmZmVyLT5tYXhNc2dOdW0gPSAwOwog CXNobUludmFsQnVmZmVyLT5uZXh0VGhyZXNob2xkID0gQ0xFQU5VUF9NSU47CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL3Byb2MuYwppbmRleCA5Yjg4MGE2YWY2NS4uYTA1YzU1YjUzNGUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL3Byb2MuYwpAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25h bC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3RhbmRi eS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxzL3Rp bWVvdXQuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy93 YWl0X2V2ZW50LmgiCkBAIC03MCw5ICs3MSwyMyBAQCBQR1BST0MJICAgKk15UHJvYyA9IE5VTEw7 CiAKIC8qIFBvaW50ZXJzIHRvIHNoYXJlZC1tZW1vcnkgc3RydWN0dXJlcyAqLwogUFJPQ19IRFIg ICAqUHJvY0dsb2JhbCA9IE5VTEw7CitzdGF0aWMgdm9pZCAqQWxsUHJvY3NTaG1lbVB0cjsKK3N0 YXRpYyB2b2lkICpGYXN0UGF0aExvY2tBcnJheVNobWVtUHRyOwogTk9OX0VYRUNfU1RBVElDIFBH UFJPQyAqQXV4aWxpYXJ5UHJvY3MgPSBOVUxMOwogUEdQUk9DCSAgICpQcmVwYXJlZFhhY3RQcm9j cyA9IE5VTEw7CiAKK3N0YXRpYyB2b2lkIFByb2NHbG9iYWxTaG1lbVJlcXVlc3Qodm9pZCAqYXJn KTsKK3N0YXRpYyB2b2lkIFByb2NHbG9iYWxTaG1lbUluaXQodm9pZCAqYXJnKTsKKworY29uc3Qg U2htZW1DYWxsYmFja3MgUHJvY0dsb2JhbFNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2Zu ID0gUHJvY0dsb2JhbFNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IFByb2NHbG9iYWxTaG1lbUlu aXQsCit9OworCitzdGF0aWMgdWludDMyIFRvdGFsUHJvY3M7CitzdGF0aWMgc2l6ZV90IFByb2NH bG9iYWxBbGxQcm9jc1NobWVtU2l6ZTsKK3N0YXRpYyBzaXplX3QgRmFzdFBhdGhMb2NrQXJyYXlT aG1lbVNpemU7CisKIC8qIElzIGEgZGVhZGxvY2sgY2hlY2sgcGVuZGluZz8gKi8KIHN0YXRpYyB2 b2xhdGlsZSBzaWdfYXRvbWljX3QgZ290X2RlYWRsb2NrX3RpbWVvdXQ7CiAKQEAgLTgzLDMyICs5 OCwxMiBAQCBzdGF0aWMgRGVhZExvY2tTdGF0ZSBDaGVja0RlYWRMb2NrKHZvaWQpOwogCiAKIC8q Ci0gKiBSZXBvcnQgc2hhcmVkLW1lbW9yeSBzcGFjZSBuZWVkZWQgYnkgUEdQUk9DLgorICogQ2Fs Y3VsYXRlIHNoYXJlZC1tZW1vcnkgc3BhY2UgbmVlZGVkIGJ5IEZhc3QtUGF0aCBsb2Nrcy4KICAq Lwogc3RhdGljIFNpemUKLVBHUHJvY1NobWVtU2l6ZSh2b2lkKQorQ2FsY3VsYXRlRmFzdFBhdGhM b2NrU2htZW1TaXplKHZvaWQpCiB7CiAJU2l6ZQkJc2l6ZSA9IDA7Ci0JU2l6ZQkJVG90YWxQcm9j cyA9Ci0JCWFkZF9zaXplKE1heEJhY2tlbmRzLCBhZGRfc2l6ZShOVU1fQVVYSUxJQVJZX1BST0NT LCBtYXhfcHJlcGFyZWRfeGFjdHMpKTsKLQotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6 ZShUb3RhbFByb2NzLCBzaXplb2YoUEdQUk9DKSkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBt dWxfc2l6ZShUb3RhbFByb2NzLCBzaXplb2YoKlByb2NHbG9iYWwtPnhpZHMpKSk7Ci0Jc2l6ZSA9 IGFkZF9zaXplKHNpemUsIG11bF9zaXplKFRvdGFsUHJvY3MsIHNpemVvZigqUHJvY0dsb2JhbC0+ c3VieGlkU3RhdGVzKSkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShUb3RhbFBy b2NzLCBzaXplb2YoKlByb2NHbG9iYWwtPnN0YXR1c0ZsYWdzKSkpOwotCi0JcmV0dXJuIHNpemU7 Ci19Ci0KLS8qCi0gKiBSZXBvcnQgc2hhcmVkLW1lbW9yeSBzcGFjZSBuZWVkZWQgYnkgRmFzdC1Q YXRoIGxvY2tzLgotICovCi1zdGF0aWMgU2l6ZQotRmFzdFBhdGhMb2NrU2htZW1TaXplKHZvaWQp Ci17Ci0JU2l6ZQkJc2l6ZSA9IDA7Ci0JU2l6ZQkJVG90YWxQcm9jcyA9Ci0JCWFkZF9zaXplKE1h eEJhY2tlbmRzLCBhZGRfc2l6ZShOVU1fQVVYSUxJQVJZX1BST0NTLCBtYXhfcHJlcGFyZWRfeGFj dHMpKTsKIAlTaXplCQlmcExvY2tCaXRzU2l6ZSwKIAkJCQlmcFJlbElkU2l6ZTsKIApAQCAtMTI4 LDI2ICsxMjMsNyBAQCBGYXN0UGF0aExvY2tTaG1lbVNpemUodm9pZCkKIH0KIAogLyoKLSAqIFJl cG9ydCBzaGFyZWQtbWVtb3J5IHNwYWNlIG5lZWRlZCBieSBJbml0UHJvY0dsb2JhbC4KLSAqLwot U2l6ZQotUHJvY0dsb2JhbFNobWVtU2l6ZSh2b2lkKQotewotCVNpemUJCXNpemUgPSAwOwotCi0J LyogUHJvY0dsb2JhbCAqLwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBzaXplb2YoUFJPQ19IRFIp KTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgc2l6ZW9mKHNsb2NrX3QpKTsKLQotCXNpemUgPSBh ZGRfc2l6ZShzaXplLCBQR1NlbWFwaG9yZVNobWVtU2l6ZShQcm9jR2xvYmFsU2VtYXMoKSkpOwot CXNpemUgPSBhZGRfc2l6ZShzaXplLCBQR1Byb2NTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9z aXplKHNpemUsIEZhc3RQYXRoTG9ja1NobWVtU2l6ZSgpKTsKLQotCXJldHVybiBzaXplOwotfQot Ci0vKgotICogUmVwb3J0IG51bWJlciBvZiBzZW1hcGhvcmVzIG5lZWRlZCBieSBJbml0UHJvY0ds b2JhbC4KKyAqIFJlcG9ydCBudW1iZXIgb2Ygc2VtYXBob3JlcyBuZWVkZWQgYnkgUHJvY0dsb2Jh bFNobWVtSW5pdC4KICAqLwogaW50CiBQcm9jR2xvYmFsU2VtYXModm9pZCkKQEAgLTE2MCw3ICsx MzYsNjcgQEAgUHJvY0dsb2JhbFNlbWFzKHZvaWQpCiB9CiAKIC8qCi0gKiBJbml0UHJvY0dsb2Jh bCAtCisgKiBQcm9jR2xvYmFsU2htZW1SZXF1ZXN0CisgKgkgIFJlZ2lzdGVyIHNoYXJlZCBtZW1v cnkgbmVlZHMuCisgKgorICogVGhpcyBpcyBjYWxsZWQgZHVyaW5nIHBvc3RtYXN0ZXIgb3Igc3Rh bmRhbG9uZSBiYWNrZW5kIHN0YXJ0dXAsIGFuZCBhbHNvCisgKiBkdXJpbmcgYmFja2VuZCBzdGFy dHVwIGluIEVYRUNfQkFDS0VORCBtb2RlLgorICovCitzdGF0aWMgdm9pZAorUHJvY0dsb2JhbFNo bWVtUmVxdWVzdCh2b2lkICphcmcpCit7CisJU2l6ZQkJc2l6ZTsKKworCS8qCisJICogUmVzZXJ2 ZSBhbGwgdGhlIFBHUFJPQyBzdHJ1Y3R1cmVzIHdlJ2xsIG5lZWQuICBUaGVyZSBhcmUgc2l4IHNl cGFyYXRlCisJICogY29uc3VtZXJzOiAoMSkgbm9ybWFsIGJhY2tlbmRzLCAoMikgYXV0b3ZhY3V1 bSB3b3JrZXJzIGFuZCBzcGVjaWFsCisJICogd29ya2VycywgKDMpIGJhY2tncm91bmQgd29ya2Vy cywgKDQpIHdhbHNlbmRlcnMsICg1KSBhdXhpbGlhcnkKKwkgKiBwcm9jZXNzZXMsIGFuZCAoNikg cHJlcGFyZWQgdHJhbnNhY3Rpb25zLiAgKEZvciBsYXJnZWx5LWhpc3RvcmljYWwKKwkgKiByZWFz b25zLCB3ZSBjb21iaW5lIGF1dG92YWN1dW0gYW5kIHNwZWNpYWwgd29ya2VycyBpbnRvIG9uZSBj YXRlZ29yeQorCSAqIHdpdGggYSBzaW5nbGUgZnJlZWxpc3QuKSAgRWFjaCBQR1BST0Mgc3RydWN0 dXJlIGlzIGRlZGljYXRlZCB0byBleGFjdGx5CisJICogb25lIG9mIHRoZXNlIHB1cnBvc2VzLCBh bmQgdGhleSBkbyBub3QgbW92ZSBiZXR3ZWVuIGdyb3Vwcy4KKwkgKi8KKwlUb3RhbFByb2NzID0K KwkJYWRkX3NpemUoTWF4QmFja2VuZHMsIGFkZF9zaXplKE5VTV9BVVhJTElBUllfUFJPQ1MsIG1h eF9wcmVwYXJlZF94YWN0cykpOworCisJc2l6ZSA9IDA7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUs IG11bF9zaXplKFRvdGFsUHJvY3MsIHNpemVvZihQR1BST0MpKSk7CisJc2l6ZSA9IGFkZF9zaXpl KHNpemUsIG11bF9zaXplKFRvdGFsUHJvY3MsIHNpemVvZigqUHJvY0dsb2JhbC0+eGlkcykpKTsK KwlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoVG90YWxQcm9jcywgc2l6ZW9mKCpQcm9j R2xvYmFsLT5zdWJ4aWRTdGF0ZXMpKSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXpl KFRvdGFsUHJvY3MsIHNpemVvZigqUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MpKSk7CisJUHJvY0ds b2JhbEFsbFByb2NzU2htZW1TaXplID0gc2l6ZTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUg PSAiUEdQUk9DIHN0cnVjdHVyZXMiLAorCQkJCQkgICAuc2l6ZSA9IFByb2NHbG9iYWxBbGxQcm9j c1NobWVtU2l6ZSwKKwkJCQkJICAgLnB0ciA9ICZBbGxQcm9jc1NobWVtUHRyLAorCQkpOworCisJ aWYgKCFJc1VuZGVyUG9zdG1hc3RlcikKKwkJc2l6ZSA9IEZhc3RQYXRoTG9ja0FycmF5U2htZW1T aXplID0gQ2FsY3VsYXRlRmFzdFBhdGhMb2NrU2htZW1TaXplKCk7CisJZWxzZQorCQlzaXplID0g U0hNRU1fQVRUQUNIX1VOS05PV05fU0laRTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAi RmFzdC1QYXRoIExvY2sgQXJyYXkiLAorCQkJCQkgICAuc2l6ZSA9IHNpemUsCisJCQkJCSAgIC5w dHIgPSAmRmFzdFBhdGhMb2NrQXJyYXlTaG1lbVB0ciwKKwkJKTsKKworCS8qCisJICogUHJvY0ds b2JhbCBpcyByZWdpc3RlcmVkIGhlcmUgaW4gLnB0ciBhcyB1c3VhbCwgYnV0IGl0IG5lZWRzIHRv IGJlCisJICogcHJvcGFnYXRlZCBzcGVjaWFsbHkgaW4gRVhFQ19CQUNLRU5EIG1vZGUsIGJlY2F1 c2UgUHJvY0dsb2JhbCBuZWVkcyB0bworCSAqIGJlIGFjY2Vzc2VkIGVhcmx5IGF0IGJhY2tlbmQg c3RhcnR1cCwgYmVmb3JlIFNobWVtQXR0YWNoUmVxdWVzdGVkKCkgaGFzCisJICogYmVlbiBjYWxs ZWQuCisJICovCisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIlByb2MgSGVhZGVyIiwKKwkJ CQkJICAgLnNpemUgPSBzaXplb2YoUFJPQ19IRFIpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiop ICZQcm9jR2xvYmFsLAorCQkpOworCisJLyogTGV0IHRoZSBzZW1hcGhvcmUgaW1wbGVtZW50YXRp b24gcmVnaXN0ZXIgaXRzIHNoYXJlZCBtZW1vcnkgbmVlZHMgKi8KKwlQR1NlbWFwaG9yZVNobWVt UmVxdWVzdChQcm9jR2xvYmFsU2VtYXMoKSk7Cit9CisKKworLyoKKyAqIFByb2NHbG9iYWxTaG1l bUluaXQgLQogICoJICBJbml0aWFsaXplIHRoZSBnbG9iYWwgcHJvY2VzcyB0YWJsZSBkdXJpbmcg cG9zdG1hc3RlciBvciBzdGFuZGFsb25lCiAgKgkgIGJhY2tlbmQgc3RhcnR1cC4KICAqCkBAIC0x NzksMzYgKzIxNSwyMyBAQCBQcm9jR2xvYmFsU2VtYXModm9pZCkKICAqCSAgQW5vdGhlciByZWFz b24gZm9yIGNyZWF0aW5nIHNlbWFwaG9yZXMgaGVyZSBpcyB0aGF0IHRoZSBzZW1hcGhvcmUKICAq CSAgaW1wbGVtZW50YXRpb24gdHlwaWNhbGx5IHJlcXVpcmVzIHVzIHRvIGNyZWF0ZSBzZW1hcGhv cmVzIGluIHRoZQogICoJICBwb3N0bWFzdGVyLCBub3QgaW4gYmFja2VuZHMuCi0gKgotICogTm90 ZTogdGhpcyBpcyBOT1QgY2FsbGVkIGJ5IGluZGl2aWR1YWwgYmFja2VuZHMgdW5kZXIgYSBwb3N0 bWFzdGVyLAotICogbm90IGV2ZW4gaW4gdGhlIEVYRUNfQkFDS0VORCBjYXNlLiAgVGhlIFByb2NH bG9iYWwgYW5kIEF1eGlsaWFyeVByb2NzCi0gKiBwb2ludGVycyBtdXN0IGJlIHByb3BhZ2F0ZWQg c3BlY2lhbGx5IGZvciBFWEVDX0JBQ0tFTkQgb3BlcmF0aW9uLgogICovCi12b2lkCi1Jbml0UHJv Y0dsb2JhbCh2b2lkKQorc3RhdGljIHZvaWQKK1Byb2NHbG9iYWxTaG1lbUluaXQodm9pZCAqYXJn KQogeworCWNoYXIJICAgKnB0cjsKKwlzaXplX3QJCXJlcXVlc3RTaXplOwogCVBHUFJPQwkgICAq cHJvY3M7CiAJaW50CQkJaSwKIAkJCQlqOwotCWJvb2wJCWZvdW5kOwotCXVpbnQzMgkJVG90YWxQ cm9jcyA9IE1heEJhY2tlbmRzICsgTlVNX0FVWElMSUFSWV9QUk9DUyArIG1heF9wcmVwYXJlZF94 YWN0czsKIAogCS8qIFVzZWQgZm9yIHNldHVwIG9mIHBlci1iYWNrZW5kIGZhc3QtcGF0aCBzbG90 cy4gKi8KIAljaGFyCSAgICpmcFB0ciwKIAkJCSAgICpmcEVuZFB0ciBQR19VU0VEX0ZPUl9BU1NF UlRTX09OTFk7CiAJU2l6ZQkJZnBMb2NrQml0c1NpemUsCiAJCQkJZnBSZWxJZFNpemU7Ci0JU2l6 ZQkJcmVxdWVzdFNpemU7Ci0JY2hhcgkgICAqcHRyOwogCi0JLyogQ3JlYXRlIHRoZSBQcm9jR2xv YmFsIHNoYXJlZCBzdHJ1Y3R1cmUgKi8KLQlQcm9jR2xvYmFsID0gKFBST0NfSERSICopCi0JCVNo bWVtSW5pdFN0cnVjdCgiUHJvYyBIZWFkZXIiLCBzaXplb2YoUFJPQ19IRFIpLCAmZm91bmQpOwot CUFzc2VydCghZm91bmQpOwotCi0JLyoKLQkgKiBJbml0aWFsaXplIHRoZSBkYXRhIHN0cnVjdHVy ZXMuCi0JICovCisJQXNzZXJ0KFByb2NHbG9iYWwpOwogCVByb2NHbG9iYWwtPnNwaW5zX3Blcl9k ZWxheSA9IERFRkFVTFRfU1BJTlNfUEVSX0RFTEFZOwogCVNwaW5Mb2NrSW5pdCgmUHJvY0dsb2Jh bC0+ZnJlZVByb2NzTG9jayk7CiAJZGxpc3RfaW5pdCgmUHJvY0dsb2JhbC0+ZnJlZVByb2NzKTsK QEAgLTIyMSwyMyArMjQ0LDExIEBAIEluaXRQcm9jR2xvYmFsKHZvaWQpCiAJcGdfYXRvbWljX2lu aXRfdTMyKCZQcm9jR2xvYmFsLT5wcm9jQXJyYXlHcm91cEZpcnN0LCBJTlZBTElEX1BST0NfTlVN QkVSKTsKIAlwZ19hdG9taWNfaW5pdF91MzIoJlByb2NHbG9iYWwtPmNsb2dHcm91cEZpcnN0LCBJ TlZBTElEX1BST0NfTlVNQkVSKTsKIAotCS8qCi0JICogQ3JlYXRlIGFuZCBpbml0aWFsaXplIGFs bCB0aGUgUEdQUk9DIHN0cnVjdHVyZXMgd2UnbGwgbmVlZC4gIFRoZXJlIGFyZQotCSAqIHNpeCBz ZXBhcmF0ZSBjb25zdW1lcnM6ICgxKSBub3JtYWwgYmFja2VuZHMsICgyKSBhdXRvdmFjdXVtIHdv cmtlcnMgYW5kCi0JICogc3BlY2lhbCB3b3JrZXJzLCAoMykgYmFja2dyb3VuZCB3b3JrZXJzLCAo NCkgd2Fsc2VuZGVycywgKDUpIGF1eGlsaWFyeQotCSAqIHByb2Nlc3NlcywgYW5kICg2KSBwcmVw YXJlZCB0cmFuc2FjdGlvbnMuICAoRm9yIGxhcmdlbHktaGlzdG9yaWNhbAotCSAqIHJlYXNvbnMs IHdlIGNvbWJpbmUgYXV0b3ZhY3V1bSBhbmQgc3BlY2lhbCB3b3JrZXJzIGludG8gb25lIGNhdGVn b3J5Ci0JICogd2l0aCBhIHNpbmdsZSBmcmVlbGlzdC4pICBFYWNoIFBHUFJPQyBzdHJ1Y3R1cmUg aXMgZGVkaWNhdGVkIHRvIGV4YWN0bHkKLQkgKiBvbmUgb2YgdGhlc2UgcHVycG9zZXMsIGFuZCB0 aGV5IGRvIG5vdCBtb3ZlIGJldHdlZW4gZ3JvdXBzLgotCSAqLwotCXJlcXVlc3RTaXplID0gUEdQ cm9jU2htZW1TaXplKCk7Ci0KLQlwdHIgPSBTaG1lbUluaXRTdHJ1Y3QoIlBHUFJPQyBzdHJ1Y3R1 cmVzIiwKLQkJCQkJCSAgcmVxdWVzdFNpemUsCi0JCQkJCQkgICZmb3VuZCk7Ci0KKwlwdHIgPSBB bGxQcm9jc1NobWVtUHRyOworCXJlcXVlc3RTaXplID0gUHJvY0dsb2JhbEFsbFByb2NzU2htZW1T aXplOwogCU1lbVNldChwdHIsIDAsIHJlcXVlc3RTaXplKTsKIAorCS8qIENhcnZlIG91dCB0aGUg YWxsUHJvY3MgYXJyYXkgZnJvbSB0aGUgc2hhcmVkIG1lbW9yeSBhcmVhICovCiAJcHJvY3MgPSAo UEdQUk9DICopIHB0cjsKIAlwdHIgPSBwdHIgKyBUb3RhbFByb2NzICogc2l6ZW9mKFBHUFJPQyk7 CiAKQEAgLTI0Niw3ICsyNTcsNyBAQCBJbml0UHJvY0dsb2JhbCh2b2lkKQogCVByb2NHbG9iYWwt PmFsbFByb2NDb3VudCA9IE1heEJhY2tlbmRzICsgTlVNX0FVWElMSUFSWV9QUk9DUzsKIAogCS8q Ci0JICogQWxsb2NhdGUgYXJyYXlzIG1pcnJvcmluZyBQR1BST0MgZmllbGRzIGluIGEgZGVuc2Ug bWFubmVyLiBTZWUKKwkgKiBDYXJ2ZSBvdXQgYXJyYXlzIG1pcnJvcmluZyBQR1BST0MgZmllbGRz IGluIGEgZGVuc2UgbWFubmVyLiBTZWUKIAkgKiBQUk9DX0hEUi4KIAkgKgogCSAqIFhYWDogSXQg bWlnaHQgbWFrZSBzZW5zZSB0byBpbmNyZWFzZSBwYWRkaW5nIGZvciB0aGVzZSBhcnJheXMsIGdp dmVuCkBAIC0yNjEsMzAgKzI3MiwyNiBAQCBJbml0UHJvY0dsb2JhbCh2b2lkKQogCVByb2NHbG9i YWwtPnN0YXR1c0ZsYWdzID0gKHVpbnQ4ICopIHB0cjsKIAlwdHIgPSBwdHIgKyAoVG90YWxQcm9j cyAqIHNpemVvZigqUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MpKTsKIAotCS8qIG1ha2Ugc3VyZSB3 ZXIgZGlkbid0IG92ZXJmbG93ICovCisJLyogbWFrZSBzdXJlIHdlIGRpZG4ndCBvdmVyZmxvdyAq LwogCUFzc2VydCgocHRyID4gKGNoYXIgKikgcHJvY3MpICYmIChwdHIgPD0gKGNoYXIgKikgcHJv Y3MgKyByZXF1ZXN0U2l6ZSkpOwogCiAJLyoKLQkgKiBBbGxvY2F0ZSBhcnJheXMgZm9yIGZhc3Qt cGF0aCBsb2Nrcy4gVGhvc2UgYXJlIHZhcmlhYmxlLWxlbmd0aCwgc28KKwkgKiBJbml0aWFsaXpl IGFycmF5cyBmb3IgZmFzdC1wYXRoIGxvY2tzLiBUaG9zZSBhcmUgdmFyaWFibGUtbGVuZ3RoLCBz bwogCSAqIGNhbid0IGJlIGluY2x1ZGVkIGluIFBHUFJPQyBkaXJlY3RseS4gV2UgYWxsb2NhdGUg YSBzZXBhcmF0ZSBwaWVjZSBvZgogCSAqIHNoYXJlZCBtZW1vcnkgYW5kIHRoZW4gZGl2aWRlIHRo YXQgYmV0d2VlbiBiYWNrZW5kcy4KIAkgKi8KIAlmcExvY2tCaXRzU2l6ZSA9IE1BWEFMSUdOKEZh c3RQYXRoTG9ja0dyb3Vwc1BlckJhY2tlbmQgKiBzaXplb2YodWludDY0KSk7CiAJZnBSZWxJZFNp emUgPSBNQVhBTElHTihGYXN0UGF0aExvY2tTbG90c1BlckJhY2tlbmQoKSAqIHNpemVvZihPaWQp KTsKIAotCXJlcXVlc3RTaXplID0gRmFzdFBhdGhMb2NrU2htZW1TaXplKCk7Ci0KLQlmcFB0ciA9 IFNobWVtSW5pdFN0cnVjdCgiRmFzdC1QYXRoIExvY2sgQXJyYXkiLAotCQkJCQkJCXJlcXVlc3RT aXplLAotCQkJCQkJCSZmb3VuZCk7Ci0KLQlNZW1TZXQoZnBQdHIsIDAsIHJlcXVlc3RTaXplKTsK KwlmcFB0ciA9IEZhc3RQYXRoTG9ja0FycmF5U2htZW1QdHI7CisJcmVxdWVzdFNpemUgPSBGYXN0 UGF0aExvY2tBcnJheVNobWVtU2l6ZTsKKwltZW1zZXQoZnBQdHIsIDAsIHJlcXVlc3RTaXplKTsK IAogCS8qIEZvciBhc3NlcnRzIGNoZWNraW5nIHdlIGRpZCBub3Qgb3ZlcmZsb3cuICovCiAJZnBF bmRQdHIgPSBmcFB0ciArIHJlcXVlc3RTaXplOwogCi0JLyogUmVzZXJ2ZSBzcGFjZSBmb3Igc2Vt YXBob3Jlcy4gKi8KLQlQR1Jlc2VydmVTZW1hcGhvcmVzKFByb2NHbG9iYWxTZW1hcygpKTsKKwkv KiBJbml0aWFsaXplIHNlbWFwaG9yZXMgKi8KKwlQR1NlbWFwaG9yZUluaXQoUHJvY0dsb2JhbFNl bWFzKCkpOwogCiAJZm9yIChpID0gMDsgaSA8IFRvdGFsUHJvY3M7IGkrKykKIAl7CkBAIC00MDUs NyArNDEyLDcgQEAgSW5pdFByb2Nlc3Modm9pZCkKIAogCS8qCiAJICogRGVjaWRlIHdoaWNoIGxp c3Qgc2hvdWxkIHN1cHBseSBvdXIgUEdQUk9DLiAgVGhpcyBsb2dpYyBtdXN0IG1hdGNoIHRoZQot CSAqIHdheSB0aGUgZnJlZWxpc3RzIHdlcmUgY29uc3RydWN0ZWQgaW4gSW5pdFByb2NHbG9iYWwo KS4KKwkgKiB3YXkgdGhlIGZyZWVsaXN0cyB3ZXJlIGNvbnN0cnVjdGVkIGluIFByb2NHbG9iYWxT aG1lbUluaXQoKS4KIAkgKi8KIAlpZiAoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpIHx8IEFt U3BlY2lhbFdvcmtlclByb2Nlc3MoKSkKIAkJcHJvY2dsb2JhbGxpc3QgPSAmUHJvY0dsb2JhbC0+ YXV0b3ZhY0ZyZWVQcm9jczsKQEAgLTQ2MCw3ICs0NjcsNyBAQCBJbml0UHJvY2Vzcyh2b2lkKQog CiAJLyoKIAkgKiBJbml0aWFsaXplIGFsbCBmaWVsZHMgb2YgTXlQcm9jLCBleGNlcHQgZm9yIHRo b3NlIHByZXZpb3VzbHkKLQkgKiBpbml0aWFsaXplZCBieSBJbml0UHJvY0dsb2JhbC4KKwkgKiBp bml0aWFsaXplZCBieSBQcm9jR2xvYmFsU2htZW1Jbml0LgogCSAqLwogCWRsaXN0X25vZGVfaW5p dCgmTXlQcm9jLT5mcmVlUHJvY3NMaW5rKTsKIAlNeVByb2MtPndhaXRTdGF0dXMgPSBQUk9DX1dB SVRfU1RBVFVTX09LOwpAQCAtNTkzLDcgKzYwMCw3IEBAIEluaXRQcm9jZXNzUGhhc2UyKHZvaWQp CiAgKiBUaGlzIGlzIGNhbGxlZCBieSBiZ3dyaXRlciBhbmQgc2ltaWxhciBwcm9jZXNzZXMgc28g dGhhdCB0aGV5IHdpbGwgaGF2ZSBhCiAgKiBNeVByb2MgdmFsdWUgdGhhdCdzIHJlYWwgZW5vdWdo IHRvIGxldCB0aGVtIHdhaXQgZm9yIExXTG9ja3MuICBUaGUgUEdQUk9DCiAgKiBhbmQgc2VtYSB0 aGF0IGFyZSBhc3NpZ25lZCBhcmUgb25lIG9mIHRoZSBleHRyYSBvbmVzIGNyZWF0ZWQgZHVyaW5n Ci0gKiBJbml0UHJvY0dsb2JhbC4KKyAqIFByb2NHbG9iYWxTaG1lbUluaXQuCiAgKgogICogQXV4 aWxpYXJ5IHByb2Nlc3NlcyBhcmUgcHJlc2VudGx5IG5vdCBleHBlY3RlZCB0byB3YWl0IGZvciBy ZWFsIChsb2NrbWdyKQogICogbG9ja3MsIHNvIHdlIG5lZWQgbm90IHNldCB1cCB0aGUgZGVhZGxv Y2sgY2hlY2tlci4gIFRoZXkgYXJlIG5ldmVyIGFkZGVkCkBAIC02NjIsNyArNjY5LDcgQEAgSW5p dEF1eGlsaWFyeVByb2Nlc3Modm9pZCkKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBhbGwgZmllbGRz IG9mIE15UHJvYywgZXhjZXB0IGZvciB0aG9zZSBwcmV2aW91c2x5Ci0JICogaW5pdGlhbGl6ZWQg YnkgSW5pdFByb2NHbG9iYWwuCisJICogaW5pdGlhbGl6ZWQgYnkgUHJvY0dsb2JhbFNobWVtSW5p dC4KIAkgKi8KIAlkbGlzdF9ub2RlX2luaXQoJk15UHJvYy0+ZnJlZVByb2NzTGluayk7CiAJTXlQ cm9jLT53YWl0U3RhdHVzID0gUFJPQ19XQUlUX1NUQVRVU19PSzsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHlu YWhhc2guYwppbmRleCBkNDlhN2E5MmM2NC4uODExOTllZGNhODYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYworKysgYi9zcmMvYmFja2VuZC91dGlscy9oYXNo L2R5bmFoYXNoLmMKQEAgLTMzOCw3ICszMzgsOCBAQCBzdHJpbmdfY29tcGFyZShjb25zdCBjaGFy ICprZXkxLCBjb25zdCBjaGFyICprZXkyLCBTaXplIGtleXNpemUpCiAgKiB1bmRlciBpbmZvLT5o Y3h0IHJhdGhlciB0aGFuIHVuZGVyIFRvcE1lbW9yeUNvbnRleHQ7IHRoZSBkZWZhdWx0CiAgKiBi ZWhhdmlvciBpcyBvbmx5IHN1aXRhYmxlIGZvciBzZXNzaW9uLWxpZmVzcGFuIGhhc2ggdGFibGVz LgogICogT3RoZXIgZmxhZ3MgYml0cyBhcmUgc3BlY2lhbC1wdXJwb3NlIGFuZCBzZWxkb20gdXNl ZCwgZXhjZXB0IGZvciB0aG9zZQotICogYXNzb2NpYXRlZCB3aXRoIHNoYXJlZC1tZW1vcnkgaGFz aCB0YWJsZXMsIGZvciB3aGljaCBzZWUgU2htZW1Jbml0SGFzaCgpLgorICogYXNzb2NpYXRlZCB3 aXRoIHNoYXJlZC1tZW1vcnkgaGFzaCB0YWJsZXMsIGZvciB3aGljaCBzZWUKKyAqIFNobWVtUmVx dWVzdEhhc2goKS4KICAqCiAgKiBGaWVsZHMgaW4gKmluZm8gYXJlIHJlYWQgb25seSB3aGVuIHRo ZSBhc3NvY2lhdGVkIGZsYWdzIGJpdCBpcyBzZXQuCiAgKiBJdCBpcyBub3QgbmVjZXNzYXJ5IHRv IGluaXRpYWxpemUgb3RoZXIgZmllbGRzIG9mICppbmZvLgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvYWNjZXNzL3RyYW5zYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKaW5kZXgg NmZhOTFiZmNkYzAuLjU1YTRhYjI2YjM0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv dHJhbnNhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKQEAgLTM0NSw4ICsz NDUsNiBAQCBleHRlcm4gVHJhbnNhY3Rpb25JZCBUcmFuc2FjdGlvbklkTGF0ZXN0KFRyYW5zYWN0 aW9uSWQgbWFpbnhpZCwKIGV4dGVybiBYTG9nUmVjUHRyIFRyYW5zYWN0aW9uSWRHZXRDb21taXRM U04oVHJhbnNhY3Rpb25JZCB4aWQpOwogCiAvKiBpbiB0cmFuc2FtL3ZhcnN1cC5jICovCi1leHRl cm4gU2l6ZSBWYXJzdXBTaG1lbVNpemUodm9pZCk7Ci1leHRlcm4gdm9pZCBWYXJzdXBTaG1lbUlu aXQodm9pZCk7CiBleHRlcm4gRnVsbFRyYW5zYWN0aW9uSWQgR2V0TmV3VHJhbnNhY3Rpb25JZChi b29sIGlzU3ViWGFjdCk7CiBleHRlcm4gdm9pZCBBZHZhbmNlTmV4dEZ1bGxUcmFuc2FjdGlvbklk UGFzdFhpZChUcmFuc2FjdGlvbklkIHhpZCk7CiBleHRlcm4gRnVsbFRyYW5zYWN0aW9uSWQgUmVh ZE5leHRGdWxsVHJhbnNhY3Rpb25JZCh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0 b3JhZ2UvZHNtLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2RzbS5oCmluZGV4IDQwNzY1N2RmM2Zm Li4xYmRlNzFiNDQwNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9kc20uaAorKysg Yi9zcmMvaW5jbHVkZS9zdG9yYWdlL2RzbS5oCkBAIC0yNiw5ICsyNiw2IEBAIGV4dGVybiB2b2lk IGRzbV9wb3N0bWFzdGVyX3N0YXJ0dXAoUEdTaG1lbUhlYWRlciAqKTsKIGV4dGVybiB2b2lkIGRz bV9iYWNrZW5kX3NodXRkb3duKHZvaWQpOwogZXh0ZXJuIHZvaWQgZHNtX2RldGFjaF9hbGwodm9p ZCk7CiAKLWV4dGVybiBzaXplX3QgZHNtX2VzdGltYXRlX3NpemUodm9pZCk7Ci1leHRlcm4gdm9p ZCBkc21fc2htZW1faW5pdCh2b2lkKTsKLQogI2lmZGVmIEVYRUNfQkFDS0VORAogZXh0ZXJuIHZv aWQgZHNtX3NldF9jb250cm9sX2hhbmRsZShkc21faGFuZGxlIGgpOwogI2VuZGlmCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2RzbV9yZWdpc3RyeS5oIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9kc21fcmVnaXN0cnkuaAppbmRleCA1MDZmYWUyYzljYS4uYTIyNjljODlmMDEgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvZHNtX3JlZ2lzdHJ5LmgKKysrIGIvc3JjL2luY2x1 ZGUvc3RvcmFnZS9kc21fcmVnaXN0cnkuaApAQCAtMjIsNyArMjIsNSBAQCBleHRlcm4gZHNhX2Fy ZWEgKkdldE5hbWVkRFNBKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgKmZvdW5kKTsKIGV4dGVybiBk c2hhc2hfdGFibGUgKkdldE5hbWVkRFNIYXNoKGNvbnN0IGNoYXIgKm5hbWUsCiAJCQkJCQkJCQlj b25zdCBkc2hhc2hfcGFyYW1ldGVycyAqcGFyYW1zLAogCQkJCQkJCQkJYm9vbCAqZm91bmQpOwot ZXh0ZXJuIFNpemUgRFNNUmVnaXN0cnlTaG1lbVNpemUodm9pZCk7Ci1leHRlcm4gdm9pZCBEU01S ZWdpc3RyeVNobWVtSW5pdCh2b2lkKTsKIAogI2VuZGlmCQkJCQkJCS8qIERTTV9SRUdJU1RSWV9I ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3BnX3NlbWEuaCBiL3NyYy9pbmNs dWRlL3N0b3JhZ2UvcGdfc2VtYS5oCmluZGV4IDY2ZmFjYzY5MDdhLi5mZTUwZWU1MDViYSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wZ19zZW1hLmgKKysrIGIvc3JjL2luY2x1ZGUv c3RvcmFnZS9wZ19zZW1hLmgKQEAgLTM3LDExICszNywxMSBAQCB0eXBlZGVmIEhBTkRMRSBQR1Nl bWFwaG9yZTsKICNlbmRpZgogCiAKLS8qIFJlcG9ydCBhbW91bnQgb2Ygc2hhcmVkIG1lbW9yeSBu ZWVkZWQgKi8KLWV4dGVybiBTaXplIFBHU2VtYXBob3JlU2htZW1TaXplKGludCBtYXhTZW1hcyk7 CisvKiBSZXF1ZXN0IHNoYXJlZCBtZW1vcnkgbmVlZGVkIGZvciBzZW1hcGhvcmVzICovCitleHRl cm4gdm9pZCBQR1NlbWFwaG9yZVNobWVtUmVxdWVzdChpbnQgbWF4U2VtYXMpOwogCiAvKiBNb2R1 bGUgaW5pdGlhbGl6YXRpb24gKGNhbGxlZCBkdXJpbmcgcG9zdG1hc3RlciBzdGFydCBvciBzaG1l bSByZWluaXQpICovCi1leHRlcm4gdm9pZCBQR1Jlc2VydmVTZW1hcGhvcmVzKGludCBtYXhTZW1h cyk7CitleHRlcm4gdm9pZCBQR1NlbWFwaG9yZUluaXQoaW50IG1heFNlbWFzKTsKIAogLyogQWxs b2NhdGUgYSBQR1NlbWFwaG9yZSBzdHJ1Y3R1cmUgd2l0aCBpbml0aWFsIGNvdW50IDEgKi8KIGV4 dGVybiBQR1NlbWFwaG9yZSBQR1NlbWFwaG9yZUNyZWF0ZSh2b2lkKTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvcG1zaWduYWwuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcG1zaWdu YWwuaAppbmRleCAyMDZmYjc4ZjhhNS4uMDAxZTZlZWE2MWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3N0b3JhZ2UvcG1zaWduYWwuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Btc2lnbmFs LmgKQEAgLTY2LDggKzY2LDYgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIFBNU2lnbmFs RGF0YSAqUE1TaWduYWxTdGF0ZTsKIC8qCiAgKiBwcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgaW4g cG1zaWduYWwuYwogICovCi1leHRlcm4gU2l6ZSBQTVNpZ25hbFNobWVtU2l6ZSh2b2lkKTsKLWV4 dGVybiB2b2lkIFBNU2lnbmFsU2htZW1Jbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgU2VuZFBvc3Rt YXN0ZXJTaWduYWwoUE1TaWduYWxSZWFzb24gcmVhc29uKTsKIGV4dGVybiBib29sIENoZWNrUG9z dG1hc3RlclNpZ25hbChQTVNpZ25hbFJlYXNvbiByZWFzb24pOwogZXh0ZXJuIHZvaWQgU2V0UXVp dFNpZ25hbFJlYXNvbihRdWl0U2lnbmFsUmVhc29uIHJlYXNvbik7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9zdG9yYWdlL3Byb2MuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oCmluZGV4 IDIyODIyZmM2OGQ3Li4zZTFkMWZhZDVmOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFn ZS9wcm9jLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKQEAgLTU1Miw4ICs1NTIs NiBAQCBleHRlcm4gUEdETExJTVBPUlQgUEdQUk9DICpBdXhpbGlhcnlQcm9jczsKICAqIEZ1bmN0 aW9uIFByb3RvdHlwZXMKICAqLwogZXh0ZXJuIGludAlQcm9jR2xvYmFsU2VtYXModm9pZCk7Ci1l eHRlcm4gU2l6ZSBQcm9jR2xvYmFsU2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgSW5pdFBy b2NHbG9iYWwodm9pZCk7CiBleHRlcm4gdm9pZCBJbml0UHJvY2Vzcyh2b2lkKTsKIGV4dGVybiB2 b2lkIEluaXRQcm9jZXNzUGhhc2UyKHZvaWQpOwogZXh0ZXJuIHZvaWQgSW5pdEF1eGlsaWFyeVBy b2Nlc3Modm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NhcnJheS5o IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaAppbmRleCBhYmRmMDIxZTY2ZS4uZDcx OGE1YjU0MmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY2FycmF5LmgKKysr IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaApAQCAtMTksOCArMTksNiBAQAogI2lu Y2x1ZGUgInV0aWxzL3NuYXBzaG90LmgiCiAKIAotZXh0ZXJuIFNpemUgUHJvY0FycmF5U2htZW1T aXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgUHJvY0FycmF5U2htZW1Jbml0KHZvaWQpOwogZXh0ZXJu IHZvaWQgUHJvY0FycmF5QWRkKFBHUFJPQyAqcHJvYyk7CiBleHRlcm4gdm9pZCBQcm9jQXJyYXlS ZW1vdmUoUEdQUk9DICpwcm9jLCBUcmFuc2FjdGlvbklkIGxhdGVzdFhpZCk7CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFn ZS9wcm9jc2lnbmFsLmgKaW5kZXggY2M0ZjI2YWEzM2QuLjdmODU1OTcxYjVhIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2NzaWduYWwuaApAQCAtNjcsOSArNjcsNiBAQCB0eXBlZGVmIGVudW0KIC8qCiAgKiBw cm90b3R5cGVzIGZvciBmdW5jdGlvbnMgaW4gcHJvY3NpZ25hbC5jCiAgKi8KLWV4dGVybiBTaXpl IFByb2NTaWduYWxTaG1lbVNpemUodm9pZCk7Ci1leHRlcm4gdm9pZCBQcm9jU2lnbmFsU2htZW1J bml0KHZvaWQpOwotCiBleHRlcm4gdm9pZCBQcm9jU2lnbmFsSW5pdChjb25zdCB1aW50OCAqY2Fu Y2VsX2tleSwgaW50IGNhbmNlbF9rZXlfbGVuKTsKIGV4dGVybiBpbnQJU2VuZFByb2NTaWduYWwo cGlkX3QgcGlkLCBQcm9jU2lnbmFsUmVhc29uIHJlYXNvbiwKIAkJCQkJCSAgIFByb2NOdW1iZXIg cHJvY051bWJlcik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3NpbnZhbGFkdC5o IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaW52YWxhZHQuaAppbmRleCAxMjJkYmNkZjE5Zi4uMjA4 ZWE5ZDA1MWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2ludmFsYWR0LmgKKysr IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaW52YWxhZHQuaApAQCAtMjcsOCArMjcsNiBAQAogLyoK ICAqIHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiBzaW52YWxhZHQuYwogICovCi1leHRlcm4g U2l6ZSBTaGFyZWRJbnZhbFNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFNoYXJlZEludmFs U2htZW1Jbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgU2hhcmVkSW52YWxCYWNrZW5kSW5pdChib29s IHNlbmRPbmx5KTsKIAogZXh0ZXJuIHZvaWQgU0lJbnNlcnREYXRhRW50cmllcyhjb25zdCBTaGFy ZWRJbnZhbGlkYXRpb25NZXNzYWdlICpkYXRhLCBpbnQgbik7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lz dGVtbGlzdC5oCmluZGV4IGYwY2YwMWY1YTg1Li5kNjJjMjlmMTM2MSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFn ZS9zdWJzeXN0ZW1saXN0LmgKQEAgLTI3LDQgKzI3LDE5IEBACiAgKi8KIFBHX1NITUVNX1NVQlNZ U1RFTShMV0xvY2tDYWxsYmFja3MpCiAKLS8qIFRPRE86IG5vdGhpbmcgZWxzZSBmb3Igbm93ICov CitQR19TSE1FTV9TVUJTWVNURU0oZHNtX3NobWVtX2NhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZ U1RFTShEU01SZWdpc3RyeVNobWVtQ2FsbGJhY2tzKQorCisvKiB4bG9nLCBjbG9nLCBhbmQgYnVm ZmVycyAqLworUEdfU0hNRU1fU1VCU1lTVEVNKFZhcnN1cFNobWVtQ2FsbGJhY2tzKQorCisvKiBw cm9jZXNzIHRhYmxlICovCitQR19TSE1FTV9TVUJTWVNURU0oUHJvY0dsb2JhbFNobWVtQ2FsbGJh Y2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKFByb2NBcnJheVNobWVtQ2FsbGJhY2tzKQorCisvKiBz aGFyZWQtaW52YWwgbWVzc2FnaW5nICovCitQR19TSE1FTV9TVUJTWVNURU0oU2hhcmVkSW52YWxT aG1lbUNhbGxiYWNrcykKKworLyogaW50ZXJwcm9jZXNzIHNpZ25hbGluZyBtZWNoYW5pc21zICov CitQR19TSE1FTV9TVUJTWVNURU0oUE1TaWduYWxTaG1lbUNhbGxiYWNrcykKK1BHX1NITUVNX1NV QlNZU1RFTShQcm9jU2lnbmFsU2htZW1DYWxsYmFja3MpCi0tIAoyLjM0LjEKCg== --00000000000057312d064eb03f86 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405-0010-Convert-SLRUs-to-use-the-new-interface.patch" Content-Disposition: attachment; filename="v20260405-0010-Convert-SLRUs-to-use-the-new-interface.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlchnf79 RnJvbSBmMGVkNjE5MjUzYjA5NGU1ZmZiZGU3Y2Q2MmQzZGQwNjA3ODRhNDQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFRodSwgMiBBcHIgMjAyNiAwMDozMjo0NSArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjYwNDA1IDEwLzE1XSBDb252ZXJ0IFNMUlVzIHRvIHVzZSB0aGUgbmV3IGludGVy ZmFjZQoKSSByZXBsYWNlZCB0aGUgb2xkIFNpbXBsZUxydUluaXQoKSBmdW5jdGlvbiB3aXRob3V0 IGEgYmFja3dhcmRzCmNvbXBhdGliaWxpdHkgd3JhcHBlciwgYmVjYXVzZSBmZXcgZXh0ZW5zaW9u cyBkZWZpbmUgdGhlaXIgb3duIFNMUlVzLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L2Nsb2cuYyAgICAgICAgfCAgNTUgKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY29t bWl0X3RzLmMgICB8ICA4NSArKystLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRp eGFjdC5jICAgfCAxMzggKysrKystLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1 LmMgICAgICAgIHwgMzY2ICsrKysrKysrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS9zdWJ0cmFucy5jICAgIHwgIDU3ICsrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2FzeW5jLmMgICAgICAgICAgICAgfCAxMTUgKysrKy0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvaXBjaS5jICAgICAgICAgICB8ICAxNiAtCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1l bS5jICAgICAgICAgIHwgICA3ICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUu YyAgICAgfCAyNjYgKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv cGdzdGF0X3NscnUuYyB8ICAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvY2xvZy5oICAgICAgICAg ICAgICAgIHwgICAyIC0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9jb21taXRfdHMuaCAgICAgICAgICAg fCAgIDIgLQogc3JjL2luY2x1ZGUvYWNjZXNzL211bHRpeGFjdC5oICAgICAgICAgICB8ICAgMiAt CiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5oICAgICAgICAgICAgICAgIHwgMTEyICsrKystLS0K IHNyYy9pbmNsdWRlL2FjY2Vzcy9zdWJ0cmFucy5oICAgICAgICAgICAgfCAgIDIgLQogc3JjL2lu Y2x1ZGUvY29tbWFuZHMvYXN5bmMuaCAgICAgICAgICAgICB8ICAgMyAtCiBzcmMvaW5jbHVkZS9z dG9yYWdlL3ByZWRpY2F0ZS5oICAgICAgICAgIHwgICA1IC0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uv c2htZW1faW50ZXJuYWwuaCAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0 ZW1saXN0LmggICAgICB8ICAxMCArCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2xydS90ZXN0X3Ns cnUuYyAgIHwgMTA2ICsrKy0tLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAg ICAgICAgfCAgIDQgKy0KIDIxIGZpbGVzIGNoYW5nZWQsIDY5MSBpbnNlcnRpb25zKCspLCA2NjQg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xv Zy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jCmluZGV4IGM2NTRlMDkyOWIz Li43Y2QxYTU2MjAxZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xv Zy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYwpAQCAtNDMsNiArNDMs NyBAQAogI2luY2x1ZGUgInBnX3RyYWNlLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9wcm9jLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9zeW5jLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tzLmgiCiAjaW5j bHVkZSAidXRpbHMvd2FpdF9ldmVudC5oIgpAQCAtMTA2LDEzICsxMDcsMjEgQEAgVHJhbnNhY3Rp b25JZFRvUGFnZShUcmFuc2FjdGlvbklkIHhpZCkKIC8qCiAgKiBMaW5rIHRvIHNoYXJlZC1tZW1v cnkgZGF0YSBzdHJ1Y3R1cmVzIGZvciBDTE9HIGNvbnRyb2wKICAqLwotc3RhdGljIFNscnVDdGxE YXRhIFhhY3RDdGxEYXRhOworc3RhdGljIHZvaWQgQ0xPR1NobWVtUmVxdWVzdCh2b2lkICphcmcp Oworc3RhdGljIHZvaWQgQ0xPR1NobWVtSW5pdCh2b2lkICphcmcpOworc3RhdGljIGJvb2wgQ0xP R1BhZ2VQcmVjZWRlcyhpbnQ2NCBwYWdlMSwgaW50NjQgcGFnZTIpOworc3RhdGljIGludAljbG9n X2VycmRldGFpbF9mb3JfaW9fZXJyb3IoY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpOwogCi0jZGVm aW5lIFhhY3RDdGwgKCZYYWN0Q3RsRGF0YSkKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIENMT0dTaG1l bUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IENMT0dTaG1lbVJlcXVlc3QsCisJLmluaXRf Zm4gPSBDTE9HU2htZW1Jbml0LAorfTsKKworc3RhdGljIFNscnVEZXNjIFhhY3RTbHJ1RGVzYzsK KworI2RlZmluZSBYYWN0Q3RsICgmWGFjdFNscnVEZXNjKQogCiAKLXN0YXRpYyBib29sIENMT0dQ YWdlUHJlY2VkZXMoaW50NjQgcGFnZTEsIGludDY0IHBhZ2UyKTsKLXN0YXRpYyBpbnQJY2xvZ19l cnJkZXRhaWxfZm9yX2lvX2Vycm9yKGNvbnN0IHZvaWQgKm9wYXF1ZV9kYXRhKTsKIHN0YXRpYyB2 b2lkIFdyaXRlVHJ1bmNhdGVYbG9nUmVjKGludDY0IHBhZ2VubywgVHJhbnNhY3Rpb25JZCBvbGRl c3RYYWN0LAogCQkJCQkJCQkgT2lkIG9sZGVzdFhhY3REYik7CiBzdGF0aWMgdm9pZCBUcmFuc2Fj dGlvbklkU2V0UGFnZVN0YXR1cyhUcmFuc2FjdGlvbklkIHhpZCwgaW50IG5zdWJ4aWRzLApAQCAt Nzc1LDE2ICs3ODQsMTAgQEAgQ0xPR1NobWVtQnVmZmVycyh2b2lkKQogfQogCiAvKgotICogSW5p dGlhbGl6YXRpb24gb2Ygc2hhcmVkIG1lbW9yeSBmb3IgQ0xPRworICogUmVnaXN0ZXIgc2hhcmVk IG1lbW9yeSBmb3IgQ0xPRwogICovCi1TaXplCi1DTE9HU2htZW1TaXplKHZvaWQpCi17Ci0JcmV0 dXJuIFNpbXBsZUxydVNobWVtU2l6ZShDTE9HU2htZW1CdWZmZXJzKCksIENMT0dfTFNOU19QRVJf UEFHRSk7Ci19Ci0KLXZvaWQKLUNMT0dTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitDTE9H U2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKIAkvKiBJZiBhdXRvLXR1bmluZyBpcyByZXF1ZXN0 ZWQsIG5vdyBpcyB0aGUgdGltZSB0byBkbyBpdCAqLwogCWlmICh0cmFuc2FjdGlvbl9idWZmZXJz ID09IDApCkBAIC04MDYsMTIgKzgwOSwyNiBAQCBDTE9HU2htZW1Jbml0KHZvaWQpCiAJCQkJCQkJ UEdDX1NfT1ZFUlJJREUpOwogCX0KIAlBc3NlcnQodHJhbnNhY3Rpb25fYnVmZmVycyAhPSAwKTsK KwlTaW1wbGVMcnVSZXF1ZXN0KC5kZXNjID0gJlhhY3RTbHJ1RGVzYywKKwkJCQkJIC5uYW1lID0g InRyYW5zYWN0aW9uIiwKKwkJCQkJIC5EaXIgPSAicGdfeGFjdCIsCisJCQkJCSAubG9uZ19zZWdt ZW50X25hbWVzID0gZmFsc2UsCisKKwkJCQkJIC5uc2xvdHMgPSBDTE9HU2htZW1CdWZmZXJzKCks CisJCQkJCSAubmxzbnMgPSBDTE9HX0xTTlNfUEVSX1BBR0UsCisKKwkJCQkJIC5zeW5jX2hhbmRs ZXIgPSBTWU5DX0hBTkRMRVJfQ0xPRywKKwkJCQkJIC5QYWdlUHJlY2VkZXMgPSBDTE9HUGFnZVBy ZWNlZGVzLAorCQkJCQkgLmVycmRldGFpbF9mb3JfaW9fZXJyb3IgPSBjbG9nX2VycmRldGFpbF9m b3JfaW9fZXJyb3IsCiAKLQlYYWN0Q3RsLT5QYWdlUHJlY2VkZXMgPSBDTE9HUGFnZVByZWNlZGVz OwotCVhhY3RDdGwtPmVycmRldGFpbF9mb3JfaW9fZXJyb3IgPSBjbG9nX2VycmRldGFpbF9mb3Jf aW9fZXJyb3I7Ci0JU2ltcGxlTHJ1SW5pdChYYWN0Q3RsLCAidHJhbnNhY3Rpb24iLCBDTE9HU2ht ZW1CdWZmZXJzKCksIENMT0dfTFNOU19QRVJfUEFHRSwKLQkJCQkgICJwZ194YWN0IiwgTFdUUkFO Q0hFX1hBQ1RfQlVGRkVSLAotCQkJCSAgTFdUUkFOQ0hFX1hBQ1RfU0xSVSwgU1lOQ19IQU5ETEVS X0NMT0csIGZhbHNlKTsKKwkJCQkJIC5idWZmZXJfdHJhbmNoZV9pZCA9IExXVFJBTkNIRV9YQUNU X0JVRkZFUiwKKwkJCQkJIC5iYW5rX3RyYW5jaGVfaWQgPSBMV1RSQU5DSEVfWEFDVF9TTFJVLAor CQkpOworfQorCitzdGF0aWMgdm9pZAorQ0xPR1NobWVtSW5pdCh2b2lkICphcmcpCit7CiAJU2xy dVBhZ2VQcmVjZWRlc1VuaXRUZXN0cyhYYWN0Q3RsLCBDTE9HX1hBQ1RTX1BFUl9QQUdFKTsKIH0K IApAQCAtODI3LDcgKzg0NCw3IEBAIGNoZWNrX3RyYW5zYWN0aW9uX2J1ZmZlcnMoaW50ICpuZXd2 YWwsIHZvaWQgKipleHRyYSwgR3VjU291cmNlIHNvdXJjZSkKIC8qCiAgKiBUaGlzIGZ1bmMgbXVz dCBiZSBjYWxsZWQgT05DRSBvbiBzeXN0ZW0gaW5zdGFsbC4gIEl0IGNyZWF0ZXMKICAqIHRoZSBp bml0aWFsIENMT0cgc2VnbWVudC4gIChUaGUgQ0xPRyBkaXJlY3RvcnkgaXMgYXNzdW1lZCB0bwot ICogaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgaW5pdGRiLCBhbmQgQ0xPR1NobWVtSW5pdCBtdXN0IGhh dmUgYmVlbgorICogaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgaW5pdGRiLCBhbmQgQ0xPR1NobWVtSW5p dCBtdXN0IGhhdmUgYmVlbiBYWFgKICAqIGNhbGxlZCBhbHJlYWR5LikKICAqLwogdm9pZApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY29tbWl0X3RzLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS9jb21taXRfdHMuYwppbmRleCAzNjIxOWRkMTNjYy4uMjYyNWNi ZjkzYmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2NvbW1pdF90cy5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2NvbW1pdF90cy5jCkBAIC0zMCw2ICsz MCw3IEBACiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2lu Y2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIK ICNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tz LmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZXN0YW1wLmgiCkBAIC04MCw5ICs4MSwxOSBAQCBUcmFu c2FjdGlvbklkVG9DVHNQYWdlKFRyYW5zYWN0aW9uSWQgeGlkKQogLyoKICAqIExpbmsgdG8gc2hh cmVkLW1lbW9yeSBkYXRhIHN0cnVjdHVyZXMgZm9yIENvbW1pdFRzIGNvbnRyb2wKICAqLwotc3Rh dGljIFNscnVDdGxEYXRhIENvbW1pdFRzQ3RsRGF0YTsKK3N0YXRpYyB2b2lkIENvbW1pdFRzU2ht ZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBDb21taXRUc1NobWVtSW5pdCh2b2lk ICphcmcpOworc3RhdGljIGJvb2wgQ29tbWl0VHNQYWdlUHJlY2VkZXMoaW50NjQgcGFnZTEsIGlu dDY0IHBhZ2UyKTsKK3N0YXRpYyBpbnQJY29tbWl0X3RzX2VycmRldGFpbF9mb3JfaW9fZXJyb3Io Y29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBDb21taXRU c1NobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gQ29tbWl0VHNTaG1lbVJlcXVlc3Qs CisJLmluaXRfZm4gPSBDb21taXRUc1NobWVtSW5pdCwKK307CisKK3N0YXRpYyBTbHJ1RGVzYyBD b21taXRUc1NscnVEZXNjOwogCi0jZGVmaW5lIENvbW1pdFRzQ3RsICgmQ29tbWl0VHNDdGxEYXRh KQorI2RlZmluZSBDb21taXRUc0N0bCAoJkNvbW1pdFRzU2xydURlc2MpCiAKIC8qCiAgKiBXZSBr ZWVwIGEgY2FjaGUgb2YgdGhlIGxhc3QgdmFsdWUgc2V0IGluIHNoYXJlZCBtZW1vcnkuCkBAIC0x MDQsNiArMTE1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29tbWl0VGltZXN0YW1wU2hhcmVkCiAKIHN0 YXRpYyBDb21taXRUaW1lc3RhbXBTaGFyZWQgKmNvbW1pdFRzU2hhcmVkOwogCitzdGF0aWMgdm9p ZCBDb21taXRUc1NobWVtSW5pdCh2b2lkICphcmcpOwogCiAvKiBHVUMgdmFyaWFibGUgKi8KIGJv b2wJCXRyYWNrX2NvbW1pdF90aW1lc3RhbXA7CkBAIC0xMTQsOCArMTI2LDYgQEAgc3RhdGljIHZv aWQgU2V0WGlkQ29tbWl0VHNJblBhZ2UoVHJhbnNhY3Rpb25JZCB4aWQsIGludCBuc3VieGlkcywK IHN0YXRpYyB2b2lkIFRyYW5zYWN0aW9uSWRTZXRDb21taXRUcyhUcmFuc2FjdGlvbklkIHhpZCwg VGltZXN0YW1wVHogdHMsCiAJCQkJCQkJCQkgUmVwbE9yaWdpbklkIG5vZGVpZCwgaW50IHNsb3Ru byk7CiBzdGF0aWMgdm9pZCBlcnJvcl9jb21taXRfdHNfZGlzYWJsZWQodm9pZCk7Ci1zdGF0aWMg Ym9vbCBDb21taXRUc1BhZ2VQcmVjZWRlcyhpbnQ2NCBwYWdlMSwgaW50NjQgcGFnZTIpOwotc3Rh dGljIGludAljb21taXRfdHNfZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihjb25zdCB2b2lkICpvcGFx dWVfZGF0YSk7CiBzdGF0aWMgdm9pZCBBY3RpdmF0ZUNvbW1pdFRzKHZvaWQpOwogc3RhdGljIHZv aWQgRGVhY3RpdmF0ZUNvbW1pdFRzKHZvaWQpOwogc3RhdGljIHZvaWQgV3JpdGVUcnVuY2F0ZVhs b2dSZWMoaW50NjQgcGFnZW5vLCBUcmFuc2FjdGlvbklkIG9sZGVzdFhpZCk7CkBAIC01MTIsMjQg KzUyMiwxMiBAQCBDb21taXRUc1NobWVtQnVmZmVycyh2b2lkKQogfQogCiAvKgotICogU2hhcmVk IG1lbW9yeSBzaXppbmcgZm9yIENvbW1pdFRzCisgKiBSZWdpc3RlciBDb21taXRUcyBzaGFyZWQg bWVtb3J5IG5lZWRzIGF0IHN5c3RlbSBzdGFydHVwIChwb3N0bWFzdGVyIHN0YXJ0CisgKiBvciBz dGFuZGFsb25lIGJhY2tlbmQpCiAgKi8KLVNpemUKLUNvbW1pdFRzU2htZW1TaXplKHZvaWQpCi17 Ci0JcmV0dXJuIFNpbXBsZUxydVNobWVtU2l6ZShDb21taXRUc1NobWVtQnVmZmVycygpLCAwKSAr Ci0JCXNpemVvZihDb21taXRUaW1lc3RhbXBTaGFyZWQpOwotfQotCi0vKgotICogSW5pdGlhbGl6 ZSBDb21taXRUcyBhdCBzeXN0ZW0gc3RhcnR1cCAocG9zdG1hc3RlciBzdGFydCBvciBzdGFuZGFs b25lCi0gKiBiYWNrZW5kKQotICovCi12b2lkCi1Db21taXRUc1NobWVtSW5pdCh2b2lkKQorc3Rh dGljIHZvaWQKK0NvbW1pdFRzU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlib29sCQlmb3Vu ZDsKLQogCS8qIElmIGF1dG8tdHVuaW5nIGlzIHJlcXVlc3RlZCwgbm93IGlzIHRoZSB0aW1lIHRv IGRvIGl0ICovCiAJaWYgKGNvbW1pdF90aW1lc3RhbXBfYnVmZmVycyA9PSAwKQogCXsKQEAgLTU1 MCwzMSArNTQ4LDM2IEBAIENvbW1pdFRzU2htZW1Jbml0KHZvaWQpCiAJCQkJCQkJUEdDX1NfT1ZF UlJJREUpOwogCX0KIAlBc3NlcnQoY29tbWl0X3RpbWVzdGFtcF9idWZmZXJzICE9IDApOworCVNp bXBsZUxydVJlcXVlc3QoLmRlc2MgPSAmQ29tbWl0VHNTbHJ1RGVzYywKKwkJCQkJIC5uYW1lID0g ImNvbW1pdF90aW1lc3RhbXAiLAorCQkJCQkgLkRpciA9ICJwZ19jb21taXRfdHMiLAorCQkJCQkg Lmxvbmdfc2VnbWVudF9uYW1lcyA9IGZhbHNlLAogCi0JQ29tbWl0VHNDdGwtPlBhZ2VQcmVjZWRl cyA9IENvbW1pdFRzUGFnZVByZWNlZGVzOwotCUNvbW1pdFRzQ3RsLT5lcnJkZXRhaWxfZm9yX2lv X2Vycm9yID0gY29tbWl0X3RzX2VycmRldGFpbF9mb3JfaW9fZXJyb3I7Ci0JU2ltcGxlTHJ1SW5p dChDb21taXRUc0N0bCwgImNvbW1pdF90aW1lc3RhbXAiLCBDb21taXRUc1NobWVtQnVmZmVycygp LCAwLAotCQkJCSAgInBnX2NvbW1pdF90cyIsIExXVFJBTkNIRV9DT01NSVRUU19CVUZGRVIsCi0J CQkJICBMV1RSQU5DSEVfQ09NTUlUVFNfU0xSVSwKLQkJCQkgIFNZTkNfSEFORExFUl9DT01NSVRf VFMsCi0JCQkJICBmYWxzZSk7Ci0JU2xydVBhZ2VQcmVjZWRlc1VuaXRUZXN0cyhDb21taXRUc0N0 bCwgQ09NTUlUX1RTX1hBQ1RTX1BFUl9QQUdFKTsKKwkJCQkJIC5uc2xvdHMgPSBDb21taXRUc1No bWVtQnVmZmVycygpLAogCi0JY29tbWl0VHNTaGFyZWQgPSBTaG1lbUluaXRTdHJ1Y3QoIkNvbW1p dFRzIHNoYXJlZCIsCi0JCQkJCQkJCQkgc2l6ZW9mKENvbW1pdFRpbWVzdGFtcFNoYXJlZCksCi0J CQkJCQkJCQkgJmZvdW5kKTsKKwkJCQkJIC5QYWdlUHJlY2VkZXMgPSBDb21taXRUc1BhZ2VQcmVj ZWRlcywKKwkJCQkJIC5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yID0gY29tbWl0X3RzX2VycmRldGFp bF9mb3JfaW9fZXJyb3IsCiAKLQlpZiAoIUlzVW5kZXJQb3N0bWFzdGVyKQotCXsKLQkJQXNzZXJ0 KCFmb3VuZCk7CisJCQkJCSAuc3luY19oYW5kbGVyID0gU1lOQ19IQU5ETEVSX0NPTU1JVF9UUywK KwkJCQkJIC5idWZmZXJfdHJhbmNoZV9pZCA9IExXVFJBTkNIRV9DT01NSVRUU19CVUZGRVIsCisJ CQkJCSAuYmFua190cmFuY2hlX2lkID0gTFdUUkFOQ0hFX0NPTU1JVFRTX1NMUlUsCisJCSk7CiAK LQkJY29tbWl0VHNTaGFyZWQtPnhpZExhc3RDb21taXQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsK LQkJVElNRVNUQU1QX05PQkVHSU4oY29tbWl0VHNTaGFyZWQtPmRhdGFMYXN0Q29tbWl0LnRpbWUp OwotCQljb21taXRUc1NoYXJlZC0+ZGF0YUxhc3RDb21taXQubm9kZWlkID0gSW52YWxpZFJlcGxP cmlnaW5JZDsKLQkJY29tbWl0VHNTaGFyZWQtPmNvbW1pdFRzQWN0aXZlID0gZmFsc2U7Ci0JfQot CWVsc2UKLQkJQXNzZXJ0KGZvdW5kKTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQ29t bWl0VHMgc2hhcmVkIiwKKwkJCQkJICAgLnNpemUgPSBzaXplb2YoQ29tbWl0VGltZXN0YW1wU2hh cmVkKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmY29tbWl0VHNTaGFyZWQsCisJCSk7Cit9 CisKK3N0YXRpYyB2b2lkCitDb21taXRUc1NobWVtSW5pdCh2b2lkICphcmcpCit7CisJY29tbWl0 VHNTaGFyZWQtPnhpZExhc3RDb21taXQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlUSU1FU1RB TVBfTk9CRUdJTihjb21taXRUc1NoYXJlZC0+ZGF0YUxhc3RDb21taXQudGltZSk7CisJY29tbWl0 VHNTaGFyZWQtPmRhdGFMYXN0Q29tbWl0Lm5vZGVpZCA9IEludmFsaWRSZXBsT3JpZ2luSWQ7CisJ Y29tbWl0VHNTaGFyZWQtPmNvbW1pdFRzQWN0aXZlID0gZmFsc2U7CisKKwlTbHJ1UGFnZVByZWNl ZGVzVW5pdFRlc3RzKENvbW1pdFRzQ3RsLCBDT01NSVRfVFNfWEFDVFNfUEVSX1BBR0UpOwogfQog CiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwppbmRleCA5ZjhkNTQyYzA5 OC4uNjJkNThkYTRhYmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211 bHRpeGFjdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCkBA IC04Myw2ICs4Myw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1ZGUg InN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVk ZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tzLmgiCiAj aW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2Nh Y2hlLmgiCkBAIC0xMTMsMTEgKzExNCwxNiBAQCBQcmV2aW91c011bHRpWGFjdElkKE11bHRpWGFj dElkIG11bHRpKQogLyoKICAqIExpbmtzIHRvIHNoYXJlZC1tZW1vcnkgZGF0YSBzdHJ1Y3R1cmVz IGZvciBNdWx0aVhhY3QgY29udHJvbAogICovCi1zdGF0aWMgU2xydUN0bERhdGEgTXVsdGlYYWN0 T2Zmc2V0Q3RsRGF0YTsKLXN0YXRpYyBTbHJ1Q3RsRGF0YSBNdWx0aVhhY3RNZW1iZXJDdGxEYXRh Oworc3RhdGljIGJvb2wgTXVsdGlYYWN0T2Zmc2V0UGFnZVByZWNlZGVzKGludDY0IHBhZ2UxLCBp bnQ2NCBwYWdlMik7CitzdGF0aWMgaW50CU11bHRpWGFjdE9mZnNldElvRXJyb3JEZXRhaWwoY29u c3Qgdm9pZCAqb3BhcXVlX2RhdGEpOworc3RhdGljIGJvb2wgTXVsdGlYYWN0TWVtYmVyUGFnZVBy ZWNlZGVzKGludDY0IHBhZ2UxLCBpbnQ2NCBwYWdlMik7CitzdGF0aWMgaW50CU11bHRpWGFjdE1l bWJlcklvRXJyb3JEZXRhaWwoY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpOworCitzdGF0aWMgU2xy dURlc2MgTXVsdGlYYWN0T2Zmc2V0U2xydURlc2M7CitzdGF0aWMgU2xydURlc2MgTXVsdGlYYWN0 TWVtYmVyU2xydURlc2M7CiAKLSNkZWZpbmUgTXVsdGlYYWN0T2Zmc2V0Q3RsCSgmTXVsdGlYYWN0 T2Zmc2V0Q3RsRGF0YSkKLSNkZWZpbmUgTXVsdGlYYWN0TWVtYmVyQ3RsCSgmTXVsdGlYYWN0TWVt YmVyQ3RsRGF0YSkKKyNkZWZpbmUgTXVsdGlYYWN0T2Zmc2V0Q3RsCSgmTXVsdGlYYWN0T2Zmc2V0 U2xydURlc2MpCisjZGVmaW5lIE11bHRpWGFjdE1lbWJlckN0bAkoJk11bHRpWGFjdE1lbWJlclNs cnVEZXNjKQogCiAvKgogICogTXVsdGlYYWN0IHN0YXRlIHNoYXJlZCBhY3Jvc3MgYWxsIGJhY2tl bmRzLiAgQWxsIHRoaXMgc3RhdGUgaXMgcHJvdGVjdGVkCkBAIC0yMjAsNiArMjI2LDE1IEBAIHN0 YXRpYyBNdWx0aVhhY3RTdGF0ZURhdGEgKk11bHRpWGFjdFN0YXRlOwogc3RhdGljIE11bHRpWGFj dElkICpPbGRlc3RNZW1iZXJNWGFjdElkOwogc3RhdGljIE11bHRpWGFjdElkICpPbGRlc3RWaXNp YmxlTVhhY3RJZDsKIAorc3RhdGljIHZvaWQgTXVsdGlYYWN0U2htZW1SZXF1ZXN0KHZvaWQgKmFy Zyk7CitzdGF0aWMgdm9pZCBNdWx0aVhhY3RTaG1lbUluaXQodm9pZCAqYXJnKTsKK3N0YXRpYyB2 b2lkIE11bHRpWGFjdFNobWVtQXR0YWNoKHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJh Y2tzIE11bHRpWGFjdFNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gTXVsdGlYYWN0 U2htZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gTXVsdGlYYWN0U2htZW1Jbml0LAorCS5hdHRhY2hf Zm4gPSBNdWx0aVhhY3RTaG1lbUF0dGFjaCwKK307CiAKIHN0YXRpYyBpbmxpbmUgTXVsdGlYYWN0 SWQgKgogTXlPbGRlc3RNZW1iZXJNWGFjdElkU2xvdCh2b2lkKQpAQCAtMzIxLDEwICszMzYsNiBA QCB0eXBlZGVmIHN0cnVjdCBNdWx0aVhhY3RNZW1iZXJTbHJ1UmVhZENvbnRleHQKIAlNdWx0aVhh Y3RPZmZzZXQgb2Zmc2V0OwogfSBNdWx0aVhhY3RNZW1iZXJTbHJ1UmVhZENvbnRleHQ7CiAKLXN0 YXRpYyBib29sIE11bHRpWGFjdE9mZnNldFBhZ2VQcmVjZWRlcyhpbnQ2NCBwYWdlMSwgaW50NjQg cGFnZTIpOwotc3RhdGljIGJvb2wgTXVsdGlYYWN0TWVtYmVyUGFnZVByZWNlZGVzKGludDY0IHBh Z2UxLCBpbnQ2NCBwYWdlMik7Ci1zdGF0aWMgaW50CU11bHRpWGFjdE9mZnNldElvRXJyb3JEZXRh aWwoY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpOwotc3RhdGljIGludAlNdWx0aVhhY3RNZW1iZXJJ b0Vycm9yRGV0YWlsKGNvbnN0IHZvaWQgKm9wYXF1ZV9kYXRhKTsKIHN0YXRpYyB2b2lkIEV4dGVu ZE11bHRpWGFjdE9mZnNldChNdWx0aVhhY3RJZCBtdWx0aSk7CiBzdGF0aWMgdm9pZCBFeHRlbmRN dWx0aVhhY3RNZW1iZXIoTXVsdGlYYWN0T2Zmc2V0IG9mZnNldCwgaW50IG5tZW1iZXJzKTsKIHN0 YXRpYyB2b2lkIFNldE9sZGVzdE9mZnNldCh2b2lkKTsKQEAgLTE3NDcsODAgKzE3NTgsODEgQEAg bXVsdGl4YWN0X3R3b3BoYXNlX3Bvc3RhYm9ydChGdWxsVHJhbnNhY3Rpb25JZCBmeGlkLCB1aW50 MTYgaW5mbywKIAltdWx0aXhhY3RfdHdvcGhhc2VfcG9zdGNvbW1pdChmeGlkLCBpbmZvLCByZWNk YXRhLCBsZW4pOwogfQogCisKIC8qCi0gKiBJbml0aWFsaXphdGlvbiBvZiBzaGFyZWQgbWVtb3J5 IGZvciBNdWx0aVhhY3QuCi0gKgotICogTXVsdGlYYWN0U2hhcmVkU3RhdGVTaG1lbVNpemUoKSBj YWxjdWxhdGVzIHRoZSBzaXplIG9mIHRoZSBNdWx0aVhhY3RTdGF0ZQotICogc3RydWN0LCBhbmQg dGhlIHR3byBwZXItYmFja2VuZCBNdWx0aVhhY3RJZCBhcnJheXMuICBUaGV5IGFyZSBjYXJ2ZWQg b3V0IG9mCi0gKiB0aGUgc2FtZSBhbGxvY2F0aW9uLiAgTXVsdGlYYWN0U2htZW1TaXplKCkgYWRk aXRpb25hbGx5IGluY2x1ZGVzIHRoZSBtZW1vcnkKLSAqIG5lZWRlZCBmb3IgdGhlIHR3byBTTFJV IGFyZWFzLgorICogUmVnaXN0ZXIgc2hhcmVkIG1lbW9yeSBuZWVkcyBmb3IgTXVsdGlYYWN0Lgog ICovCi1zdGF0aWMgU2l6ZQotTXVsdGlYYWN0U2hhcmVkU3RhdGVTaG1lbVNpemUodm9pZCkKK3N0 YXRpYyB2b2lkCitNdWx0aVhhY3RTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewogCVNpemUJCXNp emU7CiAKKwkvKgorCSAqIENhbGN1bGF0ZSB0aGUgc2l6ZSBvZiB0aGUgTXVsdGlYYWN0U3RhdGUg c3RydWN0LCBhbmQgdGhlIHR3bworCSAqIHBlci1iYWNrZW5kIE11bHRpWGFjdElkIGFycmF5cy4g IFRoZXkgYXJlIGNhcnZlZCBvdXQgb2YgdGhlIHNhbWUKKwkgKiBhbGxvY2F0aW9uLgorCSAqLwog CXNpemUgPSBvZmZzZXRvZihNdWx0aVhhY3RTdGF0ZURhdGEsIHBlckJhY2tlbmRYYWN0SWRzKTsK IAlzaXplID0gYWRkX3NpemUoc2l6ZSwKIAkJCQkJbXVsX3NpemUoc2l6ZW9mKE11bHRpWGFjdElk KSwgTnVtTWVtYmVyU2xvdHMpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwKIAkJCQkJbXVsX3Np emUoc2l6ZW9mKE11bHRpWGFjdElkKSwgTnVtVmlzaWJsZVNsb3RzKSk7Ci0JcmV0dXJuIHNpemU7 Ci19CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIlNoYXJlZCBNdWx0aVhhY3QgU3RhdGUi LAorCQkJCQkgICAuc2l6ZSA9IHNpemUsCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJk11bHRp WGFjdFN0YXRlLAorCQkpOwogCi1TaXplCi1NdWx0aVhhY3RTaG1lbVNpemUodm9pZCkKLXsKLQlT aXplCQlzaXplOworCVNpbXBsZUxydVJlcXVlc3QoLmRlc2MgPSAmTXVsdGlYYWN0T2Zmc2V0U2xy dURlc2MsCisJCQkJCSAubmFtZSA9ICJtdWx0aXhhY3Rfb2Zmc2V0IiwKKwkJCQkJIC5EaXIgPSAi cGdfbXVsdGl4YWN0L29mZnNldHMiLAorCQkJCQkgLmxvbmdfc2VnbWVudF9uYW1lcyA9IGZhbHNl LAogCi0Jc2l6ZSA9IE11bHRpWGFjdFNoYXJlZFN0YXRlU2htZW1TaXplKCk7Ci0Jc2l6ZSA9IGFk ZF9zaXplKHNpemUsIFNpbXBsZUxydVNobWVtU2l6ZShtdWx0aXhhY3Rfb2Zmc2V0X2J1ZmZlcnMs IDApKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2ltcGxlTHJ1U2htZW1TaXplKG11bHRpeGFj dF9tZW1iZXJfYnVmZmVycywgMCkpOworCQkJCQkgLm5zbG90cyA9IG11bHRpeGFjdF9vZmZzZXRf YnVmZmVycywKIAotCXJldHVybiBzaXplOwotfQorCQkJCQkgLnN5bmNfaGFuZGxlciA9IFNZTkNf SEFORExFUl9NVUxUSVhBQ1RfT0ZGU0VULAorCQkJCQkgLlBhZ2VQcmVjZWRlcyA9IE11bHRpWGFj dE9mZnNldFBhZ2VQcmVjZWRlcywKKwkJCQkJIC5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yID0gTXVs dGlYYWN0T2Zmc2V0SW9FcnJvckRldGFpbCwKIAotdm9pZAotTXVsdGlYYWN0U2htZW1Jbml0KHZv aWQpCi17Ci0JYm9vbAkJZm91bmQ7CisJCQkJCSAuYnVmZmVyX3RyYW5jaGVfaWQgPSBMV1RSQU5D SEVfTVVMVElYQUNUT0ZGU0VUX0JVRkZFUiwKKwkJCQkJIC5iYW5rX3RyYW5jaGVfaWQgPSBMV1RS QU5DSEVfTVVMVElYQUNUT0ZGU0VUX1NMUlUsCisJCSk7CiAKLQlkZWJ1Z19lbG9nMihERUJVRzIs ICJTaGFyZWQgTWVtb3J5IEluaXQgZm9yIE11bHRpWGFjdCIpOworCVNpbXBsZUxydVJlcXVlc3Qo LmRlc2MgPSAmTXVsdGlYYWN0TWVtYmVyU2xydURlc2MsCisJCQkJCSAubmFtZSA9ICJtdWx0aXhh Y3RfbWVtYmVyIiwKKwkJCQkJIC5EaXIgPSAicGdfbXVsdGl4YWN0L21lbWJlcnMiLAorCQkJCQkg Lmxvbmdfc2VnbWVudF9uYW1lcyA9IHRydWUsCiAKLQlNdWx0aVhhY3RPZmZzZXRDdGwtPlBhZ2VQ cmVjZWRlcyA9IE11bHRpWGFjdE9mZnNldFBhZ2VQcmVjZWRlczsKLQlNdWx0aVhhY3RNZW1iZXJD dGwtPlBhZ2VQcmVjZWRlcyA9IE11bHRpWGFjdE1lbWJlclBhZ2VQcmVjZWRlczsKLQlNdWx0aVhh Y3RPZmZzZXRDdGwtPmVycmRldGFpbF9mb3JfaW9fZXJyb3IgPSBNdWx0aVhhY3RPZmZzZXRJb0Vy cm9yRGV0YWlsOwotCU11bHRpWGFjdE1lbWJlckN0bC0+ZXJyZGV0YWlsX2Zvcl9pb19lcnJvciA9 IE11bHRpWGFjdE1lbWJlcklvRXJyb3JEZXRhaWw7CisJCQkJCSAubnNsb3RzID0gbXVsdGl4YWN0 X21lbWJlcl9idWZmZXJzLAogCi0JU2ltcGxlTHJ1SW5pdChNdWx0aVhhY3RPZmZzZXRDdGwsCi0J CQkJICAibXVsdGl4YWN0X29mZnNldCIsIG11bHRpeGFjdF9vZmZzZXRfYnVmZmVycywgMCwKLQkJ CQkgICJwZ19tdWx0aXhhY3Qvb2Zmc2V0cyIsIExXVFJBTkNIRV9NVUxUSVhBQ1RPRkZTRVRfQlVG RkVSLAotCQkJCSAgTFdUUkFOQ0hFX01VTFRJWEFDVE9GRlNFVF9TTFJVLAotCQkJCSAgU1lOQ19I QU5ETEVSX01VTFRJWEFDVF9PRkZTRVQsCi0JCQkJICBmYWxzZSk7Ci0JU2xydVBhZ2VQcmVjZWRl c1VuaXRUZXN0cyhNdWx0aVhhY3RPZmZzZXRDdGwsIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdF KTsKLQlTaW1wbGVMcnVJbml0KE11bHRpWGFjdE1lbWJlckN0bCwKLQkJCQkgICJtdWx0aXhhY3Rf bWVtYmVyIiwgbXVsdGl4YWN0X21lbWJlcl9idWZmZXJzLCAwLAotCQkJCSAgInBnX211bHRpeGFj dC9tZW1iZXJzIiwgTFdUUkFOQ0hFX01VTFRJWEFDVE1FTUJFUl9CVUZGRVIsCi0JCQkJICBMV1RS QU5DSEVfTVVMVElYQUNUTUVNQkVSX1NMUlUsCi0JCQkJICBTWU5DX0hBTkRMRVJfTVVMVElYQUNU X01FTUJFUiwKLQkJCQkgIHRydWUpOwotCS8qIGRvZXNuJ3QgY2FsbCBTaW1wbGVMcnVUcnVuY2F0 ZSgpIG9yIG1lZXQgY3JpdGVyaWEgZm9yIHVuaXQgdGVzdHMgKi8KLQotCS8qIEluaXRpYWxpemUg b3VyIHNoYXJlZCBzdGF0ZSBzdHJ1Y3QgKi8KLQlNdWx0aVhhY3RTdGF0ZSA9IFNobWVtSW5pdFN0 cnVjdCgiU2hhcmVkIE11bHRpWGFjdCBTdGF0ZSIsCi0JCQkJCQkJCQkgTXVsdGlYYWN0U2hhcmVk U3RhdGVTaG1lbVNpemUoKSwKLQkJCQkJCQkJCSAmZm91bmQpOwotCWlmICghSXNVbmRlclBvc3Rt YXN0ZXIpCi0JewotCQlBc3NlcnQoIWZvdW5kKTsKKwkJCQkJIC5zeW5jX2hhbmRsZXIgPSBTWU5D X0hBTkRMRVJfTVVMVElYQUNUX01FTUJFUiwKKwkJCQkJIC5QYWdlUHJlY2VkZXMgPSBNdWx0aVhh Y3RNZW1iZXJQYWdlUHJlY2VkZXMsCisJCQkJCSAuZXJyZGV0YWlsX2Zvcl9pb19lcnJvciA9IE11 bHRpWGFjdE1lbWJlcklvRXJyb3JEZXRhaWwsCiAKLQkJLyogTWFrZSBzdXJlIHdlIHplcm8gb3V0 IHRoZSBwZXItYmFja2VuZCBzdGF0ZSAqLwotCQlNZW1TZXQoTXVsdGlYYWN0U3RhdGUsIDAsIE11 bHRpWGFjdFNoYXJlZFN0YXRlU2htZW1TaXplKCkpOwotCX0KLQllbHNlCi0JCUFzc2VydChmb3Vu ZCk7CisJCQkJCSAuYnVmZmVyX3RyYW5jaGVfaWQgPSBMV1RSQU5DSEVfTVVMVElYQUNUTUVNQkVS X0JVRkZFUiwKKwkJCQkJIC5iYW5rX3RyYW5jaGVfaWQgPSBMV1RSQU5DSEVfTVVMVElYQUNUTUVN QkVSX1NMUlUsCisJCSk7CiAKKwkvKgorCSAqIG1lbWJlcnMgU0xSVSBkb2Vzbid0IGNhbGwgU2lt cGxlTHJ1VHJ1bmNhdGUoKSBvciBtZWV0IGNyaXRlcmlhIGZvciB1bml0CisJICogdGVzdHMKKwkg Ki8KK30KKworc3RhdGljIHZvaWQKK011bHRpWGFjdFNobWVtSW5pdCh2b2lkICphcmcpCit7CisJ LyoKKwkgKiBTZXQgdXAgYXJyYXkgcG9pbnRlcnMuCisJICovCisJT2xkZXN0TWVtYmVyTVhhY3RJ ZCA9IE11bHRpWGFjdFN0YXRlLT5wZXJCYWNrZW5kWGFjdElkczsKKwlPbGRlc3RWaXNpYmxlTVhh Y3RJZCA9IE9sZGVzdE1lbWJlck1YYWN0SWQgKyBOdW1NZW1iZXJTbG90czsKKworCVNscnVQYWdl UHJlY2VkZXNVbml0VGVzdHMoTXVsdGlYYWN0T2Zmc2V0Q3RsLCBNVUxUSVhBQ1RfT0ZGU0VUU19Q RVJfUEFHRSk7Cit9CisKK3N0YXRpYyB2b2lkCitNdWx0aVhhY3RTaG1lbUF0dGFjaCh2b2lkICph cmcpCit7CiAJLyoKIAkgKiBTZXQgdXAgYXJyYXkgcG9pbnRlcnMuCiAJICovCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS9zbHJ1LmMKaW5kZXggYTJiYjhmYTgwMzMuLjQ3ZGQ1MmQ2NzQ5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0vc2xydS5jCkBAIC03MCw3ICs3MCw5IEBACiAjaW5jbHVkZSAicGdzdGF0Lmgi CiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNp bmNsdWRlICJzdG9yYWdlL3NobWVtX2ludGVybmFsLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgi CisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50 LmgiCiAKIC8qCkBAIC04OSw5ICs5MSw5IEBACiAgKiAgZGlyLzEyMzQ1NiBmb3IgWzJeMjAsIDJe MjQtMV0KICAqLwogc3RhdGljIGlubGluZSBpbnQKLVNscnVGaWxlTmFtZShTbHJ1Q3RsIGN0bCwg Y2hhciAqcGF0aCwgaW50NjQgc2Vnbm8pCitTbHJ1RmlsZU5hbWUoU2xydURlc2MgKmN0bCwgY2hh ciAqcGF0aCwgaW50NjQgc2Vnbm8pCiB7Ci0JaWYgKGN0bC0+bG9uZ19zZWdtZW50X25hbWVzKQor CWlmIChjdGwtPm9wdGlvbnMubG9uZ19zZWdtZW50X25hbWVzKQogCXsKIAkJLyoKIAkJICogV2Ug Y291bGQgdXNlIDE2IGNoYXJhY3RlcnMgaGVyZSBidXQgdGhlIGRpc2FkdmFudGFnZSB3b3VsZCBi ZSB0aGF0CkBAIC0xMDEsNyArMTAzLDcgQEAgU2xydUZpbGVOYW1lKFNscnVDdGwgY3RsLCBjaGFy ICpwYXRoLCBpbnQ2NCBzZWdubykKIAkJICogdGhhdCBpbiB0aGUgZnV0dXJlIHdlIGNhbid0IGRl Y3JlYXNlIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQgZWFzaWx5LgogCQkgKi8KIAkJQXNzZXJ0KHNl Z25vID49IDAgJiYgc2Vnbm8gPD0gSU5UNjRDT05TVCgweEZGRkZGRkZGRkZGRkZGRikpOwotCQly ZXR1cm4gc25wcmludGYocGF0aCwgTUFYUEdQQVRILCAiJXMvJTAxNSIgUFJJWDY0LCBjdGwtPkRp ciwgc2Vnbm8pOworCQlyZXR1cm4gc25wcmludGYocGF0aCwgTUFYUEdQQVRILCAiJXMvJTAxNSIg UFJJWDY0LCBjdGwtPm9wdGlvbnMuRGlyLCBzZWdubyk7CiAJfQogCWVsc2UKIAl7CkBAIC0xMTAs NyArMTEyLDcgQEAgU2xydUZpbGVOYW1lKFNscnVDdGwgY3RsLCBjaGFyICpwYXRoLCBpbnQ2NCBz ZWdubykKIAkJICogaW50ZWdlcnMgYXJlIGFsbG93ZWQuIFNlZSBTbHJ1Q29ycmVjdFNlZ21lbnRG aWxlbmFtZUxlbmd0aCgpCiAJCSAqLwogCQlBc3NlcnQoc2Vnbm8gPj0gMCAmJiBzZWdubyA8PSBJ TlQ2NENPTlNUKDB4RkZGRkZGKSk7Ci0JCXJldHVybiBzbnByaW50ZihwYXRoLCBNQVhQR1BBVEgs ICIlcy8lMDRYIiwgKGN0bCktPkRpciwKKwkJcmV0dXJuIHNucHJpbnRmKHBhdGgsIE1BWFBHUEFU SCwgIiVzLyUwNFgiLCAoY3RsKS0+b3B0aW9ucy5EaXIsCiAJCQkJCQkodW5zaWduZWQgaW50KSBz ZWdubyk7CiAJfQogfQpAQCAtMTc2LDE5ICsxNzgsMTkgQEAgc3RhdGljIFNscnVFcnJvckNhdXNl IHNscnVfZXJyY2F1c2U7CiBzdGF0aWMgaW50CXNscnVfZXJybm87CiAKIAotc3RhdGljIHZvaWQg U2ltcGxlTHJ1WmVyb0xTTnMoU2xydUN0bCBjdGwsIGludCBzbG90bm8pOwotc3RhdGljIHZvaWQg U2ltcGxlTHJ1V2FpdElPKFNscnVDdGwgY3RsLCBpbnQgc2xvdG5vKTsKLXN0YXRpYyB2b2lkIFNs cnVJbnRlcm5hbFdyaXRlUGFnZShTbHJ1Q3RsIGN0bCwgaW50IHNsb3RubywgU2xydVdyaXRlQWxs IGZkYXRhKTsKLXN0YXRpYyBib29sIFNscnVQaHlzaWNhbFJlYWRQYWdlKFNscnVDdGwgY3RsLCBp bnQ2NCBwYWdlbm8sIGludCBzbG90bm8pOwotc3RhdGljIGJvb2wgU2xydVBoeXNpY2FsV3JpdGVQ YWdlKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8sIGludCBzbG90bm8sCitzdGF0aWMgdm9pZCBT aW1wbGVMcnVaZXJvTFNOcyhTbHJ1RGVzYyAqY3RsLCBpbnQgc2xvdG5vKTsKK3N0YXRpYyB2b2lk IFNpbXBsZUxydVdhaXRJTyhTbHJ1RGVzYyAqY3RsLCBpbnQgc2xvdG5vKTsKK3N0YXRpYyB2b2lk IFNscnVJbnRlcm5hbFdyaXRlUGFnZShTbHJ1RGVzYyAqY3RsLCBpbnQgc2xvdG5vLCBTbHJ1V3Jp dGVBbGwgZmRhdGEpOworc3RhdGljIGJvb2wgU2xydVBoeXNpY2FsUmVhZFBhZ2UoU2xydURlc2Mg KmN0bCwgaW50NjQgcGFnZW5vLCBpbnQgc2xvdG5vKTsKK3N0YXRpYyBib29sIFNscnVQaHlzaWNh bFdyaXRlUGFnZShTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8sIGludCBzbG90bm8sCiAJCQkJ CQkJCSAgU2xydVdyaXRlQWxsIGZkYXRhKTsKLXN0YXRpYyB2b2lkIFNscnVSZXBvcnRJT0Vycm9y KFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8sCitzdGF0aWMgdm9pZCBTbHJ1UmVwb3J0SU9FcnJv cihTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8sCiAJCQkJCQkJICBjb25zdCB2b2lkICpvcGFx dWVfZGF0YSk7Ci1zdGF0aWMgaW50CVNscnVTZWxlY3RMUlVQYWdlKFNscnVDdGwgY3RsLCBpbnQ2 NCBwYWdlbm8pOworc3RhdGljIGludAlTbHJ1U2VsZWN0TFJVUGFnZShTbHJ1RGVzYyAqY3RsLCBp bnQ2NCBwYWdlbm8pOwogCi1zdGF0aWMgYm9vbCBTbHJ1U2NhbkRpckNiRGVsZXRlQ3V0b2ZmKFNs cnVDdGwgY3RsLCBjaGFyICpmaWxlbmFtZSwKK3N0YXRpYyBib29sIFNscnVTY2FuRGlyQ2JEZWxl dGVDdXRvZmYoU2xydURlc2MgKmN0bCwgY2hhciAqZmlsZW5hbWUsCiAJCQkJCQkJCQkgIGludDY0 IHNlZ3BhZ2UsIHZvaWQgKmRhdGEpOwotc3RhdGljIHZvaWQgU2xydUludGVybmFsRGVsZXRlU2Vn bWVudChTbHJ1Q3RsIGN0bCwgaW50NjQgc2Vnbm8pOworc3RhdGljIHZvaWQgU2xydUludGVybmFs RGVsZXRlU2VnbWVudChTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBzZWdubyk7CiBzdGF0aWMgaW5saW5l IHZvaWQgU2xydVJlY2VudGx5VXNlZChTbHJ1U2hhcmVkIHNoYXJlZCwgaW50IHNsb3Rubyk7CiAK IApAQCAtMTk2LDcgKzE5OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBTbHJ1UmVjZW50bHlVc2Vk KFNscnVTaGFyZWQgc2hhcmVkLCBpbnQgc2xvdG5vKTsKICAqIEluaXRpYWxpemF0aW9uIG9mIHNo YXJlZCBtZW1vcnkKICAqLwogCi1TaXplCitzdGF0aWMgU2l6ZQogU2ltcGxlTHJ1U2htZW1TaXpl KGludCBuc2xvdHMsIGludCBubHNucykKIHsKIAlpbnQJCQluYmFua3MgPSBuc2xvdHMgLyBTTFJV X0JBTktfU0laRTsKQEAgLTIzOCwxMjAgKzI0MCwxMzUgQEAgU2ltcGxlTHJ1QXV0b3R1bmVCdWZm ZXJzKGludCBkaXZpc29yLCBpbnQgbWF4KQogfQogCiAvKgotICogSW5pdGlhbGl6ZSwgb3IgYXR0 YWNoIHRvLCBhIHNpbXBsZSBMUlUgY2FjaGUgaW4gc2hhcmVkIG1lbW9yeS4KLSAqCi0gKiBjdGw6 IGFkZHJlc3Mgb2YgbG9jYWwgKHVuc2hhcmVkKSBjb250cm9sIHN0cnVjdHVyZS4KLSAqIG5hbWU6 IG5hbWUgb2YgU0xSVS4gIChUaGlzIGlzIHVzZXItdmlzaWJsZSwgcGljayB3aXRoIGNhcmUhKQot ICogbnNsb3RzOiBudW1iZXIgb2YgcGFnZSBzbG90cyB0byB1c2UuCi0gKiBubHNuczogbnVtYmVy IG9mIExTTiBncm91cHMgcGVyIHBhZ2UgKHNldCB0byB6ZXJvIGlmIG5vdCByZWxldmFudCkuCi0g KiBzdWJkaXI6IFBHREFUQS1yZWxhdGl2ZSBzdWJkaXJlY3RvcnkgdGhhdCB3aWxsIGNvbnRhaW4g dGhlIGZpbGVzLgotICogYnVmZmVyX3RyYW5jaGVfaWQ6IHRyYW5jaGUgSUQgdG8gdXNlIGZvciB0 aGUgU0xSVSdzIHBlci1idWZmZXIgTFdMb2Nrcy4KLSAqIGJhbmtfdHJhbmNoZV9pZDogdHJhbmNo ZSBJRCB0byB1c2UgZm9yIHRoZSBiYW5rIExXTG9ja3MuCi0gKiBzeW5jX2hhbmRsZXI6IHdoaWNo IHNldCBvZiBmdW5jdGlvbnMgdG8gdXNlIHRvIGhhbmRsZSBzeW5jIHJlcXVlc3RzCi0gKiBsb25n X3NlZ21lbnRfbmFtZXM6IHVzZSBzaG9ydCBvciBsb25nIHNlZ21lbnQgbmFtZXMKKyAqIFJlZ2lz dGVyIGEgc2ltcGxlIExSVSBjYWNoZSBpbiBzaGFyZWQgbWVtb3J5LgogICovCiB2b2lkCi1TaW1w bGVMcnVJbml0KFNscnVDdGwgY3RsLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgbnNsb3RzLCBpbnQg bmxzbnMsCi0JCQkgIGNvbnN0IGNoYXIgKnN1YmRpciwgaW50IGJ1ZmZlcl90cmFuY2hlX2lkLCBp bnQgYmFua190cmFuY2hlX2lkLAotCQkJICBTeW5jUmVxdWVzdEhhbmRsZXIgc3luY19oYW5kbGVy LCBib29sIGxvbmdfc2VnbWVudF9uYW1lcykKK1NpbXBsZUxydVJlcXVlc3RXaXRoT3B0cyhjb25z dCBTbHJ1T3B0cyAqb3B0aW9ucykKIHsKKwlTbHJ1T3B0cyAgICpvcHRpb25zX2NvcHk7CisKKwlB c3NlcnQob3B0aW9ucy0+bmFtZSAhPSBOVUxMKTsKKwlBc3NlcnQob3B0aW9ucy0+bnNsb3RzID4g MCk7CisJQXNzZXJ0KG9wdGlvbnMtPlBhZ2VQcmVjZWRlcyAhPSBOVUxMKTsKKwlBc3NlcnQob3B0 aW9ucy0+ZXJyZGV0YWlsX2Zvcl9pb19lcnJvciAhPSBOVUxMKTsKKworCW9wdGlvbnNfY29weSA9 IE1lbW9yeUNvbnRleHRBbGxvYyhUb3BNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJICBzaXplb2Yo U2xydU9wdHMpKTsKKwltZW1jcHkob3B0aW9uc19jb3B5LCBvcHRpb25zLCBzaXplb2YoU2xydU9w dHMpKTsKKworCW9wdGlvbnNfY29weS0+YmFzZS5uYW1lID0gb3B0aW9ucy0+bmFtZTsKKwlvcHRp b25zX2NvcHktPmJhc2Uuc2l6ZSA9IFNpbXBsZUxydVNobWVtU2l6ZShvcHRpb25zX2NvcHktPm5z bG90cywgb3B0aW9uc19jb3B5LT5ubHNucyk7CisKKwlTaG1lbVJlcXVlc3RJbnRlcm5hbCgmb3B0 aW9uc19jb3B5LT5iYXNlLCBTSE1FTV9LSU5EX1NMUlUpOworfQorCisvKiBJbml0aWFsaXplIGxv Y2tzIGFuZCBzaGFyZWQgbWVtb3J5IGFyZWEgKi8KK3ZvaWQKK3NobWVtX3NscnVfaW5pdCh2b2lk ICpsb2NhdGlvbiwgU2htZW1TdHJ1Y3RPcHRzICpiYXNlX29wdGlvbnMpCit7CisJU2xydU9wdHMg ICAqb3B0aW9ucyA9IChTbHJ1T3B0cyAqKSBiYXNlX29wdGlvbnM7CisJU2xydURlc2MgICAqZGVz YyA9IChTbHJ1RGVzYyAqKSBvcHRpb25zLT5kZXNjOworCWNoYXIJCW5hbWVidWZbTkFNRURBVEFM RU5dOwogCVNscnVTaGFyZWQJc2hhcmVkOwotCWJvb2wJCWZvdW5kOworCWludAkJCW5zbG90cyA9 IG9wdGlvbnMtPm5zbG90czsKIAlpbnQJCQluYmFua3MgPSBuc2xvdHMgLyBTTFJVX0JBTktfU0la RTsKKwlpbnQJCQlubHNucyA9IG9wdGlvbnMtPm5sc25zOworCWNoYXIJICAgKnB0cjsKKwlTaXpl CQlvZmZzZXQ7CisKKwlzaGFyZWQgPSAoU2xydVNoYXJlZCkgbG9jYXRpb247CisJZGVzYy0+c2hh cmVkID0gc2hhcmVkOworCWRlc2MtPm5iYW5rcyA9IG5iYW5rczsKKwltZW1jcHkoJmRlc2MtPm9w dGlvbnMsIG9wdGlvbnMsIHNpemVvZihTbHJ1T3B0cykpOworCisJLyogYXNzaWduIG5ldyB0cmFu Y2hlIElEcywgaWYgbm90IGdpdmVuICovCisJaWYgKGRlc2MtPm9wdGlvbnMuYnVmZmVyX3RyYW5j aGVfaWQgPT0gMCkKKwl7CisJCXNucHJpbnRmKG5hbWVidWYsIHNpemVvZihuYW1lYnVmKSwgIiVz IGJ1ZmZlciIsIGRlc2MtPm9wdGlvbnMubmFtZSk7CisJCWRlc2MtPm9wdGlvbnMuYnVmZmVyX3Ry YW5jaGVfaWQgPSBMV0xvY2tOZXdUcmFuY2hlSWQobmFtZWJ1Zik7CisJfQorCWlmIChkZXNjLT5v cHRpb25zLmJhbmtfdHJhbmNoZV9pZCA9PSAwKQorCXsKKwkJc25wcmludGYobmFtZWJ1Ziwgc2l6 ZW9mKG5hbWVidWYpLCAiJXMgYmFuayIsIGRlc2MtPm9wdGlvbnMubmFtZSk7CisJCWRlc2MtPm9w dGlvbnMuYmFua190cmFuY2hlX2lkID0gTFdMb2NrTmV3VHJhbmNoZUlkKG5hbWVidWYpOworCX0K IAogCUFzc2VydChuc2xvdHMgPD0gU0xSVV9NQVhfQUxMT1dFRF9CVUZGRVJTKTsKIAotCUFzc2Vy dChjdGwtPlBhZ2VQcmVjZWRlcyAhPSBOVUxMKTsKLQlBc3NlcnQoY3RsLT5lcnJkZXRhaWxfZm9y X2lvX2Vycm9yICE9IE5VTEwpOworCW1lbXNldChzaGFyZWQsIDAsIHNpemVvZihTbHJ1U2hhcmVk RGF0YSkpOwogCi0Jc2hhcmVkID0gKFNscnVTaGFyZWQpIFNobWVtSW5pdFN0cnVjdChuYW1lLAot CQkJCQkJCQkJCSAgU2ltcGxlTHJ1U2htZW1TaXplKG5zbG90cywgbmxzbnMpLAotCQkJCQkJCQkJ CSAgJmZvdW5kKTsKKwlzaGFyZWQtPm51bV9zbG90cyA9IG5zbG90czsKKwlzaGFyZWQtPmxzbl9n cm91cHNfcGVyX3BhZ2UgPSBubHNuczsKIAotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIpCi0Jewot CQkvKiBJbml0aWFsaXplIGxvY2tzIGFuZCBzaGFyZWQgbWVtb3J5IGFyZWEgKi8KLQkJY2hhcgkg ICAqcHRyOwotCQlTaXplCQlvZmZzZXQ7Ci0KLQkJQXNzZXJ0KCFmb3VuZCk7Ci0KLQkJbWVtc2V0 KHNoYXJlZCwgMCwgc2l6ZW9mKFNscnVTaGFyZWREYXRhKSk7Ci0KLQkJc2hhcmVkLT5udW1fc2xv dHMgPSBuc2xvdHM7Ci0JCXNoYXJlZC0+bHNuX2dyb3Vwc19wZXJfcGFnZSA9IG5sc25zOwotCi0J CXBnX2F0b21pY19pbml0X3U2NCgmc2hhcmVkLT5sYXRlc3RfcGFnZV9udW1iZXIsIDApOwotCi0J CXNoYXJlZC0+c2xydV9zdGF0c19pZHggPSBwZ3N0YXRfZ2V0X3NscnVfaW5kZXgobmFtZSk7Ci0K LQkJcHRyID0gKGNoYXIgKikgc2hhcmVkOwotCQlvZmZzZXQgPSBNQVhBTElHTihzaXplb2YoU2xy dVNoYXJlZERhdGEpKTsKLQkJc2hhcmVkLT5wYWdlX2J1ZmZlciA9IChjaGFyICoqKSAocHRyICsg b2Zmc2V0KTsKLQkJb2Zmc2V0ICs9IE1BWEFMSUdOKG5zbG90cyAqIHNpemVvZihjaGFyICopKTsK LQkJc2hhcmVkLT5wYWdlX3N0YXR1cyA9IChTbHJ1UGFnZVN0YXR1cyAqKSAocHRyICsgb2Zmc2V0 KTsKLQkJb2Zmc2V0ICs9IE1BWEFMSUdOKG5zbG90cyAqIHNpemVvZihTbHJ1UGFnZVN0YXR1cykp OwotCQlzaGFyZWQtPnBhZ2VfZGlydHkgPSAoYm9vbCAqKSAocHRyICsgb2Zmc2V0KTsKLQkJb2Zm c2V0ICs9IE1BWEFMSUdOKG5zbG90cyAqIHNpemVvZihib29sKSk7Ci0JCXNoYXJlZC0+cGFnZV9u dW1iZXIgPSAoaW50NjQgKikgKHB0ciArIG9mZnNldCk7Ci0JCW9mZnNldCArPSBNQVhBTElHTihu c2xvdHMgKiBzaXplb2YoaW50NjQpKTsKLQkJc2hhcmVkLT5wYWdlX2xydV9jb3VudCA9IChpbnQg KikgKHB0ciArIG9mZnNldCk7Ci0JCW9mZnNldCArPSBNQVhBTElHTihuc2xvdHMgKiBzaXplb2Yo aW50KSk7Ci0KLQkJLyogSW5pdGlhbGl6ZSBMV0xvY2tzICovCi0JCXNoYXJlZC0+YnVmZmVyX2xv Y2tzID0gKExXTG9ja1BhZGRlZCAqKSAocHRyICsgb2Zmc2V0KTsKLQkJb2Zmc2V0ICs9IE1BWEFM SUdOKG5zbG90cyAqIHNpemVvZihMV0xvY2tQYWRkZWQpKTsKLQkJc2hhcmVkLT5iYW5rX2xvY2tz ID0gKExXTG9ja1BhZGRlZCAqKSAocHRyICsgb2Zmc2V0KTsKLQkJb2Zmc2V0ICs9IE1BWEFMSUdO KG5iYW5rcyAqIHNpemVvZihMV0xvY2tQYWRkZWQpKTsKLQkJc2hhcmVkLT5iYW5rX2N1cl9scnVf Y291bnQgPSAoaW50ICopIChwdHIgKyBvZmZzZXQpOwotCQlvZmZzZXQgKz0gTUFYQUxJR04obmJh bmtzICogc2l6ZW9mKGludCkpOwotCi0JCWlmIChubHNucyA+IDApCi0JCXsKLQkJCXNoYXJlZC0+ Z3JvdXBfbHNuID0gKFhMb2dSZWNQdHIgKikgKHB0ciArIG9mZnNldCk7Ci0JCQlvZmZzZXQgKz0g TUFYQUxJR04obnNsb3RzICogbmxzbnMgKiBzaXplb2YoWExvZ1JlY1B0cikpOwotCQl9CisJcGdf YXRvbWljX2luaXRfdTY0KCZzaGFyZWQtPmxhdGVzdF9wYWdlX251bWJlciwgMCk7CiAKLQkJcHRy ICs9IEJVRkZFUkFMSUdOKG9mZnNldCk7Ci0JCWZvciAoaW50IHNsb3RubyA9IDA7IHNsb3RubyA8 IG5zbG90czsgc2xvdG5vKyspCi0JCXsKLQkJCUxXTG9ja0luaXRpYWxpemUoJnNoYXJlZC0+YnVm ZmVyX2xvY2tzW3Nsb3Rub10ubG9jaywKLQkJCQkJCQkgYnVmZmVyX3RyYW5jaGVfaWQpOworCXNo YXJlZC0+c2xydV9zdGF0c19pZHggPSBwZ3N0YXRfZ2V0X3NscnVfaW5kZXgoZGVzYy0+b3B0aW9u cy5uYW1lKTsKIAotCQkJc2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dID0gcHRyOwotCQkJc2hh cmVkLT5wYWdlX3N0YXR1c1tzbG90bm9dID0gU0xSVV9QQUdFX0VNUFRZOwotCQkJc2hhcmVkLT5w YWdlX2RpcnR5W3Nsb3Rub10gPSBmYWxzZTsKLQkJCXNoYXJlZC0+cGFnZV9scnVfY291bnRbc2xv dG5vXSA9IDA7Ci0JCQlwdHIgKz0gQkxDS1NaOwotCQl9CisJcHRyID0gKGNoYXIgKikgc2hhcmVk OworCW9mZnNldCA9IE1BWEFMSUdOKHNpemVvZihTbHJ1U2hhcmVkRGF0YSkpOworCXNoYXJlZC0+ cGFnZV9idWZmZXIgPSAoY2hhciAqKikgKHB0ciArIG9mZnNldCk7CisJb2Zmc2V0ICs9IE1BWEFM SUdOKG5zbG90cyAqIHNpemVvZihjaGFyICopKTsKKwlzaGFyZWQtPnBhZ2Vfc3RhdHVzID0gKFNs cnVQYWdlU3RhdHVzICopIChwdHIgKyBvZmZzZXQpOworCW9mZnNldCArPSBNQVhBTElHTihuc2xv dHMgKiBzaXplb2YoU2xydVBhZ2VTdGF0dXMpKTsKKwlzaGFyZWQtPnBhZ2VfZGlydHkgPSAoYm9v bCAqKSAocHRyICsgb2Zmc2V0KTsKKwlvZmZzZXQgKz0gTUFYQUxJR04obnNsb3RzICogc2l6ZW9m KGJvb2wpKTsKKwlzaGFyZWQtPnBhZ2VfbnVtYmVyID0gKGludDY0ICopIChwdHIgKyBvZmZzZXQp OworCW9mZnNldCArPSBNQVhBTElHTihuc2xvdHMgKiBzaXplb2YoaW50NjQpKTsKKwlzaGFyZWQt PnBhZ2VfbHJ1X2NvdW50ID0gKGludCAqKSAocHRyICsgb2Zmc2V0KTsKKwlvZmZzZXQgKz0gTUFY QUxJR04obnNsb3RzICogc2l6ZW9mKGludCkpOwogCi0JCS8qIEluaXRpYWxpemUgdGhlIHNsb3Qg YmFua3MuICovCi0JCWZvciAoaW50IGJhbmtubyA9IDA7IGJhbmtubyA8IG5iYW5rczsgYmFua25v KyspCi0JCXsKLQkJCUxXTG9ja0luaXRpYWxpemUoJnNoYXJlZC0+YmFua19sb2Nrc1tiYW5rbm9d LmxvY2ssIGJhbmtfdHJhbmNoZV9pZCk7Ci0JCQlzaGFyZWQtPmJhbmtfY3VyX2xydV9jb3VudFti YW5rbm9dID0gMDsKLQkJfQorCS8qIEluaXRpYWxpemUgTFdMb2NrcyAqLworCXNoYXJlZC0+YnVm ZmVyX2xvY2tzID0gKExXTG9ja1BhZGRlZCAqKSAocHRyICsgb2Zmc2V0KTsKKwlvZmZzZXQgKz0g TUFYQUxJR04obnNsb3RzICogc2l6ZW9mKExXTG9ja1BhZGRlZCkpOworCXNoYXJlZC0+YmFua19s b2NrcyA9IChMV0xvY2tQYWRkZWQgKikgKHB0ciArIG9mZnNldCk7CisJb2Zmc2V0ICs9IE1BWEFM SUdOKG5iYW5rcyAqIHNpemVvZihMV0xvY2tQYWRkZWQpKTsKKwlzaGFyZWQtPmJhbmtfY3VyX2xy dV9jb3VudCA9IChpbnQgKikgKHB0ciArIG9mZnNldCk7CisJb2Zmc2V0ICs9IE1BWEFMSUdOKG5i YW5rcyAqIHNpemVvZihpbnQpKTsKIAotCQkvKiBTaG91bGQgZml0IHRvIGVzdGltYXRlZCBzaG1l bSBzaXplICovCi0JCUFzc2VydChwdHIgLSAoY2hhciAqKSBzaGFyZWQgPD0gU2ltcGxlTHJ1U2ht ZW1TaXplKG5zbG90cywgbmxzbnMpKTsKKwlpZiAobmxzbnMgPiAwKQorCXsKKwkJc2hhcmVkLT5n cm91cF9sc24gPSAoWExvZ1JlY1B0ciAqKSAocHRyICsgb2Zmc2V0KTsKKwkJb2Zmc2V0ICs9IE1B WEFMSUdOKG5zbG90cyAqIG5sc25zICogc2l6ZW9mKFhMb2dSZWNQdHIpKTsKIAl9Ci0JZWxzZQor CisJcHRyICs9IEJVRkZFUkFMSUdOKG9mZnNldCk7CisJZm9yIChpbnQgc2xvdG5vID0gMDsgc2xv dG5vIDwgbnNsb3RzOyBzbG90bm8rKykKIAl7Ci0JCUFzc2VydChmb3VuZCk7Ci0JCUFzc2VydChz aGFyZWQtPm51bV9zbG90cyA9PSBuc2xvdHMpOworCQlMV0xvY2tJbml0aWFsaXplKCZzaGFyZWQt PmJ1ZmZlcl9sb2Nrc1tzbG90bm9dLmxvY2ssCisJCQkJCQkgZGVzYy0+b3B0aW9ucy5idWZmZXJf dHJhbmNoZV9pZCk7CisKKwkJc2hhcmVkLT5wYWdlX2J1ZmZlcltzbG90bm9dID0gcHRyOworCQlz aGFyZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gPSBTTFJVX1BBR0VfRU1QVFk7CisJCXNoYXJlZC0+ cGFnZV9kaXJ0eVtzbG90bm9dID0gZmFsc2U7CisJCXNoYXJlZC0+cGFnZV9scnVfY291bnRbc2xv dG5vXSA9IDA7CisJCXB0ciArPSBCTENLU1o7CiAJfQogCi0JLyoKLQkgKiBJbml0aWFsaXplIHRo ZSB1bnNoYXJlZCBjb250cm9sIHN0cnVjdCwgaW5jbHVkaW5nIGRpcmVjdG9yeSBwYXRoLiBXZQot CSAqIGFzc3VtZSBjYWxsZXIgc2V0IFBhZ2VQcmVjZWRlcy4KLQkgKi8KLQljdGwtPnNoYXJlZCA9 IHNoYXJlZDsKLQljdGwtPnN5bmNfaGFuZGxlciA9IHN5bmNfaGFuZGxlcjsKLQljdGwtPmxvbmdf c2VnbWVudF9uYW1lcyA9IGxvbmdfc2VnbWVudF9uYW1lczsKLQljdGwtPm5iYW5rcyA9IG5iYW5r czsKLQlzdHJsY3B5KGN0bC0+RGlyLCBzdWJkaXIsIHNpemVvZihjdGwtPkRpcikpOworCS8qIElu aXRpYWxpemUgdGhlIHNsb3QgYmFua3MuICovCisJZm9yIChpbnQgYmFua25vID0gMDsgYmFua25v IDwgbmJhbmtzOyBiYW5rbm8rKykKKwl7CisJCUxXTG9ja0luaXRpYWxpemUoJnNoYXJlZC0+YmFu a19sb2Nrc1tiYW5rbm9dLmxvY2ssIGRlc2MtPm9wdGlvbnMuYmFua190cmFuY2hlX2lkKTsKKwkJ c2hhcmVkLT5iYW5rX2N1cl9scnVfY291bnRbYmFua25vXSA9IDA7CisJfQorCisJLyogU2hvdWxk IGZpdCB0byBlc3RpbWF0ZWQgc2htZW0gc2l6ZSAqLworCUFzc2VydChwdHIgLSAoY2hhciAqKSBz aGFyZWQgPD0gU2ltcGxlTHJ1U2htZW1TaXplKG5zbG90cywgbmxzbnMpKTsKK30KKwordm9pZAor c2htZW1fc2xydV9hdHRhY2godm9pZCAqbG9jYXRpb24sIFNobWVtU3RydWN0T3B0cyAqYmFzZV9v cHRpb25zKQoreworCVNscnVPcHRzICAgKm9wdGlvbnMgPSAoU2xydU9wdHMgKikgYmFzZV9vcHRp b25zOworCVNscnVEZXNjICAgKmRlc2MgPSAoU2xydURlc2MgKikgb3B0aW9ucy0+ZGVzYzsKKwlp bnQJCQluc2xvdHMgPSBvcHRpb25zLT5uc2xvdHM7CisJaW50CQkJbmJhbmtzID0gbnNsb3RzIC8g U0xSVV9CQU5LX1NJWkU7CisKKwlkZXNjLT5zaGFyZWQgPSAoU2xydVNoYXJlZCkgbG9jYXRpb247 CisJZGVzYy0+bmJhbmtzID0gbmJhbmtzOworCW1lbWNweSgmZGVzYy0+b3B0aW9ucywgb3B0aW9u cywgc2l6ZW9mKFNscnVPcHRzKSk7CiB9CiAKKwogLyoKICAqIEhlbHBlciBmdW5jdGlvbiBmb3Ig R1VDIGNoZWNrX2hvb2sgdG8gY2hlY2sgd2hldGhlciBzbHJ1IGJ1ZmZlcnMgYXJlIGluCiAgKiBt dWx0aXBsZXMgb2YgU0xSVV9CQU5LX1NJWkUuCkBAIC0zNzcsNyArMzk0LDcgQEAgY2hlY2tfc2xy dV9idWZmZXJzKGNvbnN0IGNoYXIgKm5hbWUsIGludCAqbmV3dmFsKQogICogQmFuayBsb2NrIG11 c3QgYmUgaGVsZCBhdCBlbnRyeSwgYW5kIHdpbGwgYmUgaGVsZCBhdCBleGl0LgogICovCiBpbnQK LVNpbXBsZUxydVplcm9QYWdlKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8pCitTaW1wbGVMcnVa ZXJvUGFnZShTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8pCiB7CiAJU2xydVNoYXJlZAlzaGFy ZWQgPSBjdGwtPnNoYXJlZDsKIAlpbnQJCQlzbG90bm87CkBAIC00MzAsNyArNDQ3LDcgQEAgU2lt cGxlTHJ1WmVyb1BhZ2UoU2xydUN0bCBjdGwsIGludDY0IHBhZ2VubykKICAqIFRoaXMgYXNzdW1l cyB0aGF0IEludmFsaWRYTG9nUmVjUHRyIGlzIGJpdHdpc2UtYWxsLTAuCiAgKi8KIHN0YXRpYyB2 b2lkCi1TaW1wbGVMcnVaZXJvTFNOcyhTbHJ1Q3RsIGN0bCwgaW50IHNsb3RubykKK1NpbXBsZUxy dVplcm9MU05zKFNscnVEZXNjICpjdGwsIGludCBzbG90bm8pCiB7CiAJU2xydVNoYXJlZAlzaGFy ZWQgPSBjdGwtPnNoYXJlZDsKIApAQCAtNDQ2LDcgKzQ2Myw3IEBAIFNpbXBsZUxydVplcm9MU05z KFNscnVDdGwgY3RsLCBpbnQgc2xvdG5vKQogICogU0xSVSBiYW5rIGxvY2sgaXMgYWNxdWlyZWQg YW5kIHJlbGVhc2VkIGhlcmUuCiAgKi8KIHZvaWQKLVNpbXBsZUxydVplcm9BbmRXcml0ZVBhZ2Uo U2xydUN0bCBjdGwsIGludDY0IHBhZ2VubykKK1NpbXBsZUxydVplcm9BbmRXcml0ZVBhZ2UoU2xy dURlc2MgKmN0bCwgaW50NjQgcGFnZW5vKQogewogCWludAkJCXNsb3RubzsKIAlMV0xvY2sJICAg KmxvY2s7CkBAIC00NzIsNyArNDg5LDcgQEAgU2ltcGxlTHJ1WmVyb0FuZFdyaXRlUGFnZShTbHJ1 Q3RsIGN0bCwgaW50NjQgcGFnZW5vKQogICogQmFuayBsb2NrIG11c3QgYmUgaGVsZCBhdCBlbnRy eSwgYW5kIHdpbGwgYmUgaGVsZCBhdCBleGl0LgogICovCiBzdGF0aWMgdm9pZAotU2ltcGxlTHJ1 V2FpdElPKFNscnVDdGwgY3RsLCBpbnQgc2xvdG5vKQorU2ltcGxlTHJ1V2FpdElPKFNscnVEZXNj ICpjdGwsIGludCBzbG90bm8pCiB7CiAJU2xydVNoYXJlZAlzaGFyZWQgPSBjdGwtPnNoYXJlZDsK IAlpbnQJCQliYW5rbm8gPSBTbG90R2V0QmFua051bWJlcihzbG90bm8pOwpAQCAtNTMwLDcgKzU0 Nyw3IEBAIFNpbXBsZUxydVdhaXRJTyhTbHJ1Q3RsIGN0bCwgaW50IHNsb3RubykKICAqIFRoZSBj b3JyZWN0IGJhbmsgbG9jayBtdXN0IGJlIGhlbGQgYXQgZW50cnksIGFuZCB3aWxsIGJlIGhlbGQg YXQgZXhpdC4KICAqLwogaW50Ci1TaW1wbGVMcnVSZWFkUGFnZShTbHJ1Q3RsIGN0bCwgaW50NjQg cGFnZW5vLCBib29sIHdyaXRlX29rLAorU2ltcGxlTHJ1UmVhZFBhZ2UoU2xydURlc2MgKmN0bCwg aW50NjQgcGFnZW5vLCBib29sIHdyaXRlX29rLAogCQkJCSAgY29uc3Qgdm9pZCAqb3BhcXVlX2Rh dGEpCiB7CiAJU2xydVNoYXJlZAlzaGFyZWQgPSBjdGwtPnNoYXJlZDsKQEAgLTYzNCw3ICs2NTEs NyBAQCBTaW1wbGVMcnVSZWFkUGFnZShTbHJ1Q3RsIGN0bCwgaW50NjQgcGFnZW5vLCBib29sIHdy aXRlX29rLAogICogSXQgaXMgdW5zcGVjaWZpZWQgd2hldGhlciB0aGUgbG9jayB3aWxsIGJlIHNo YXJlZCBvciBleGNsdXNpdmUuCiAgKi8KIGludAotU2ltcGxlTHJ1UmVhZFBhZ2VfUmVhZE9ubHko U2xydUN0bCBjdGwsIGludDY0IHBhZ2VubywgY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpCitTaW1w bGVMcnVSZWFkUGFnZV9SZWFkT25seShTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8sIGNvbnN0 IHZvaWQgKm9wYXF1ZV9kYXRhKQogewogCVNscnVTaGFyZWQJc2hhcmVkID0gY3RsLT5zaGFyZWQ7 CiAJTFdMb2NrCSAgICpiYW5rbG9jayA9IFNpbXBsZUxydUdldEJhbmtMb2NrKGN0bCwgcGFnZW5v KTsKQEAgLTY4MSw3ICs2OTgsNyBAQCBTaW1wbGVMcnVSZWFkUGFnZV9SZWFkT25seShTbHJ1Q3Rs IGN0bCwgaW50NjQgcGFnZW5vLCBjb25zdCB2b2lkICpvcGFxdWVfZGF0YSkKICAqIEJhbmsgbG9j ayBtdXN0IGJlIGhlbGQgYXQgZW50cnksIGFuZCB3aWxsIGJlIGhlbGQgYXQgZXhpdC4KICAqLwog c3RhdGljIHZvaWQKLVNscnVJbnRlcm5hbFdyaXRlUGFnZShTbHJ1Q3RsIGN0bCwgaW50IHNsb3Ru bywgU2xydVdyaXRlQWxsIGZkYXRhKQorU2xydUludGVybmFsV3JpdGVQYWdlKFNscnVEZXNjICpj dGwsIGludCBzbG90bm8sIFNscnVXcml0ZUFsbCBmZGF0YSkKIHsKIAlTbHJ1U2hhcmVkCXNoYXJl ZCA9IGN0bC0+c2hhcmVkOwogCWludDY0CQlwYWdlbm8gPSBzaGFyZWQtPnBhZ2VfbnVtYmVyW3Ns b3Rub107CkBAIC03NjEsNyArNzc4LDcgQEAgU2xydUludGVybmFsV3JpdGVQYWdlKFNscnVDdGwg Y3RsLCBpbnQgc2xvdG5vLCBTbHJ1V3JpdGVBbGwgZmRhdGEpCiAgKiBmZGF0YSBpcyBhbHdheXMg cGFzc2VkIGEgTlVMTCBoZXJlLgogICovCiB2b2lkCi1TaW1wbGVMcnVXcml0ZVBhZ2UoU2xydUN0 bCBjdGwsIGludCBzbG90bm8pCitTaW1wbGVMcnVXcml0ZVBhZ2UoU2xydURlc2MgKmN0bCwgaW50 IHNsb3RubykKIHsKIAlBc3NlcnQoY3RsLT5zaGFyZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gIT0g U0xSVV9QQUdFX0VNUFRZKTsKIApAQCAtNzc1LDcgKzc5Miw3IEBAIFNpbXBsZUxydVdyaXRlUGFn ZShTbHJ1Q3RsIGN0bCwgaW50IHNsb3RubykKICAqIGxhcmdlIGVub3VnaCB0byBjb250YWluIHRo ZSBnaXZlbiBwYWdlLgogICovCiBib29sCi1TaW1wbGVMcnVEb2VzUGh5c2ljYWxQYWdlRXhpc3Qo U2xydUN0bCBjdGwsIGludDY0IHBhZ2VubykKK1NpbXBsZUxydURvZXNQaHlzaWNhbFBhZ2VFeGlz dChTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8pCiB7CiAJaW50NjQJCXNlZ25vID0gcGFnZW5v IC8gU0xSVV9QQUdFU19QRVJfU0VHTUVOVDsKIAlpbnQJCQlycGFnZW5vID0gcGFnZW5vICUgU0xS VV9QQUdFU19QRVJfU0VHTUVOVDsKQEAgLTgzMyw3ICs4NTAsNyBAQCBTaW1wbGVMcnVEb2VzUGh5 c2ljYWxQYWdlRXhpc3QoU2xydUN0bCBjdGwsIGludDY0IHBhZ2VubykKICAqIHJlYWQvd3JpdGUg b3BlcmF0aW9ucy4gIFdlIGNvdWxkIGNhY2hlIG9uZSB2aXJ0dWFsIGZpbGUgcG9pbnRlciAuLi4K ICAqLwogc3RhdGljIGJvb2wKLVNscnVQaHlzaWNhbFJlYWRQYWdlKFNscnVDdGwgY3RsLCBpbnQ2 NCBwYWdlbm8sIGludCBzbG90bm8pCitTbHJ1UGh5c2ljYWxSZWFkUGFnZShTbHJ1RGVzYyAqY3Rs LCBpbnQ2NCBwYWdlbm8sIGludCBzbG90bm8pCiB7CiAJU2xydVNoYXJlZAlzaGFyZWQgPSBjdGwt PnNoYXJlZDsKIAlpbnQ2NAkJc2Vnbm8gPSBwYWdlbm8gLyBTTFJVX1BBR0VTX1BFUl9TRUdNRU5U OwpAQCAtOTA1LDcgKzkyMiw3IEBAIFNscnVQaHlzaWNhbFJlYWRQYWdlKFNscnVDdGwgY3RsLCBp bnQ2NCBwYWdlbm8sIGludCBzbG90bm8pCiAgKiBTaW1wbGVMcnVXcml0ZUFsbC4KICAqLwogc3Rh dGljIGJvb2wKLVNscnVQaHlzaWNhbFdyaXRlUGFnZShTbHJ1Q3RsIGN0bCwgaW50NjQgcGFnZW5v LCBpbnQgc2xvdG5vLCBTbHJ1V3JpdGVBbGwgZmRhdGEpCitTbHJ1UGh5c2ljYWxXcml0ZVBhZ2Uo U2xydURlc2MgKmN0bCwgaW50NjQgcGFnZW5vLCBpbnQgc2xvdG5vLCBTbHJ1V3JpdGVBbGwgZmRh dGEpCiB7CiAJU2xydVNoYXJlZAlzaGFyZWQgPSBjdGwtPnNoYXJlZDsKIAlpbnQ2NAkJc2Vnbm8g PSBwYWdlbm8gLyBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UOwpAQCAtMTAzNywxMSArMTA1NCwxMSBA QCBTbHJ1UGh5c2ljYWxXcml0ZVBhZ2UoU2xydUN0bCBjdGwsIGludDY0IHBhZ2VubywgaW50IHNs b3RubywgU2xydVdyaXRlQWxsIGZkYXRhKQogCXBnc3RhdF9yZXBvcnRfd2FpdF9lbmQoKTsKIAog CS8qIFF1ZXVlIHVwIGEgc3luYyByZXF1ZXN0IGZvciB0aGUgY2hlY2twb2ludGVyLiAqLwotCWlm IChjdGwtPnN5bmNfaGFuZGxlciAhPSBTWU5DX0hBTkRMRVJfTk9ORSkKKwlpZiAoY3RsLT5vcHRp b25zLnN5bmNfaGFuZGxlciAhPSBTWU5DX0hBTkRMRVJfTk9ORSkKIAl7CiAJCUZpbGVUYWcJCXRh ZzsKIAotCQlJTklUX1NMUlVGSUxFVEFHKHRhZywgY3RsLT5zeW5jX2hhbmRsZXIsIHNlZ25vKTsK KwkJSU5JVF9TTFJVRklMRVRBRyh0YWcsIGN0bC0+b3B0aW9ucy5zeW5jX2hhbmRsZXIsIHNlZ25v KTsKIAkJaWYgKCFSZWdpc3RlclN5bmNSZXF1ZXN0KCZ0YWcsIFNZTkNfUkVRVUVTVCwgZmFsc2Up KQogCQl7CiAJCQkvKiBObyBzcGFjZSB0byBlbnF1ZXVlIHN5bmMgcmVxdWVzdC4gIERvIGl0IHN5 bmNocm9ub3VzbHkuICovCkBAIC0xMDc3LDcgKzEwOTQsNyBAQCBTbHJ1UGh5c2ljYWxXcml0ZVBh Z2UoU2xydUN0bCBjdGwsIGludDY0IHBhZ2VubywgaW50IHNsb3RubywgU2xydVdyaXRlQWxsIGZk YXRhKQogICogU2xydVBoeXNpY2FsV3JpdGVQYWdlLiAgQ2FsbCB0aGlzIGFmdGVyIGNsZWFuaW5n IHVwIHNoYXJlZC1tZW1vcnkgc3RhdGUuCiAgKi8KIHN0YXRpYyB2b2lkCi1TbHJ1UmVwb3J0SU9F cnJvcihTbHJ1Q3RsIGN0bCwgaW50NjQgcGFnZW5vLCBjb25zdCB2b2lkICpvcGFxdWVfZGF0YSkK K1NscnVSZXBvcnRJT0Vycm9yKFNscnVEZXNjICpjdGwsIGludDY0IHBhZ2VubywgY29uc3Qgdm9p ZCAqb3BhcXVlX2RhdGEpCiB7CiAJaW50NjQJCXNlZ25vID0gcGFnZW5vIC8gU0xSVV9QQUdFU19Q RVJfU0VHTUVOVDsKIAlpbnQJCQlycGFnZW5vID0gcGFnZW5vICUgU0xSVV9QQUdFU19QRVJfU0VH TUVOVDsKQEAgLTEwOTIsMTQgKzExMDksMTQgQEAgU2xydVJlcG9ydElPRXJyb3IoU2xydUN0bCBj dGwsIGludDY0IHBhZ2VubywgY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpCiAJCQllcmVwb3J0KEVS Uk9SLAogCQkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKIAkJCQkJIGVycm1zZygiY291 bGQgbm90IG9wZW4gZmlsZSBcIiVzXCI6ICVtIiwgcGF0aCksCi0JCQkJCSBvcGFxdWVfZGF0YSA/ IGN0bC0+ZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihvcGFxdWVfZGF0YSkgOiAwKSk7CisJCQkJCSBv cGFxdWVfZGF0YSA/IGN0bC0+b3B0aW9ucy5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yKG9wYXF1ZV9k YXRhKSA6IDApKTsKIAkJCWJyZWFrOwogCQljYXNlIFNMUlVfU0VFS19GQUlMRUQ6CiAJCQllcmVw b3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKIAkJCQkJIGVycm1z ZygiY291bGQgbm90IHNlZWsgaW4gZmlsZSBcIiVzXCIgdG8gb2Zmc2V0ICVkOiAlbSIsCiAJCQkJ CQkJcGF0aCwgb2Zmc2V0KSwKLQkJCQkJIG9wYXF1ZV9kYXRhID8gY3RsLT5lcnJkZXRhaWxfZm9y X2lvX2Vycm9yKG9wYXF1ZV9kYXRhKSA6IDApKTsKKwkJCQkJIG9wYXF1ZV9kYXRhID8gY3RsLT5v cHRpb25zLmVycmRldGFpbF9mb3JfaW9fZXJyb3Iob3BhcXVlX2RhdGEpIDogMCkpOwogCQkJYnJl YWs7CiAJCWNhc2UgU0xSVV9SRUFEX0ZBSUxFRDoKIAkJCWlmIChlcnJubykKQEAgLTExMDcsMTIg KzExMjQsMTIgQEAgU2xydVJlcG9ydElPRXJyb3IoU2xydUN0bCBjdGwsIGludDY0IHBhZ2Vubywg Y29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpCiAJCQkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3Mo KSwKIAkJCQkJCSBlcnJtc2coImNvdWxkIG5vdCByZWFkIGZyb20gZmlsZSBcIiVzXCIgYXQgb2Zm c2V0ICVkOiAlbSIsCiAJCQkJCQkJCXBhdGgsIG9mZnNldCksCi0JCQkJCQkgb3BhcXVlX2RhdGEg PyBjdGwtPmVycmRldGFpbF9mb3JfaW9fZXJyb3Iob3BhcXVlX2RhdGEpIDogMCkpOworCQkJCQkJ IG9wYXF1ZV9kYXRhID8gY3RsLT5vcHRpb25zLmVycmRldGFpbF9mb3JfaW9fZXJyb3Iob3BhcXVl X2RhdGEpIDogMCkpOwogCQkJZWxzZQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkoZXJybXNn KCJjb3VsZCBub3QgcmVhZCBmcm9tIGZpbGUgXCIlc1wiIGF0IG9mZnNldCAlZDogcmVhZCB0b28g ZmV3IGJ5dGVzIiwKIAkJCQkJCQkJcGF0aCwgb2Zmc2V0KSwKLQkJCQkJCSBvcGFxdWVfZGF0YSA/ IGN0bC0+ZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihvcGFxdWVfZGF0YSkgOiAwKSk7CisJCQkJCQkg b3BhcXVlX2RhdGEgPyBjdGwtPm9wdGlvbnMuZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihvcGFxdWVf ZGF0YSkgOiAwKSk7CiAJCQlicmVhazsKIAkJY2FzZSBTTFJVX1dSSVRFX0ZBSUxFRDoKIAkJCWlm IChlcnJubykKQEAgLTExMjAsMjYgKzExMzcsMjYgQEAgU2xydVJlcG9ydElPRXJyb3IoU2xydUN0 bCBjdGwsIGludDY0IHBhZ2VubywgY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpCiAJCQkJCQkoZXJy Y29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKIAkJCQkJCSBlcnJtc2coIkNvdWxkIG5vdCB3cml0ZSB0 byBmaWxlIFwiJXNcIiBhdCBvZmZzZXQgJWQ6ICVtIiwKIAkJCQkJCQkJcGF0aCwgb2Zmc2V0KSwK LQkJCQkJCSBvcGFxdWVfZGF0YSA/IGN0bC0+ZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihvcGFxdWVf ZGF0YSkgOiAwKSk7CisJCQkJCQkgb3BhcXVlX2RhdGEgPyBjdGwtPm9wdGlvbnMuZXJyZGV0YWls X2Zvcl9pb19lcnJvcihvcGFxdWVfZGF0YSkgOiAwKSk7CiAJCQllbHNlCiAJCQkJZXJlcG9ydChF UlJPUiwKIAkJCQkJCShlcnJtc2coIkNvdWxkIG5vdCB3cml0ZSB0byBmaWxlIFwiJXNcIiBhdCBv ZmZzZXQgJWQ6IHdyb3RlIHRvbyBmZXcgYnl0ZXMuIiwKIAkJCQkJCQkJcGF0aCwgb2Zmc2V0KSwK LQkJCQkJCSBvcGFxdWVfZGF0YSA/IGN0bC0+ZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihvcGFxdWVf ZGF0YSkgOiAwKSk7CisJCQkJCQkgb3BhcXVlX2RhdGEgPyBjdGwtPm9wdGlvbnMuZXJyZGV0YWls X2Zvcl9pb19lcnJvcihvcGFxdWVfZGF0YSkgOiAwKSk7CiAJCQlicmVhazsKIAkJY2FzZSBTTFJV X0ZTWU5DX0ZBSUxFRDoKIAkJCWVyZXBvcnQoZGF0YV9zeW5jX2VsZXZlbChFUlJPUiksCiAJCQkJ CShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAogCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgZnN5 bmMgZmlsZSBcIiVzXCI6ICVtIiwKIAkJCQkJCQlwYXRoKSwKLQkJCQkJIG9wYXF1ZV9kYXRhID8g Y3RsLT5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yKG9wYXF1ZV9kYXRhKSA6IDApKTsKKwkJCQkJIG9w YXF1ZV9kYXRhID8gY3RsLT5vcHRpb25zLmVycmRldGFpbF9mb3JfaW9fZXJyb3Iob3BhcXVlX2Rh dGEpIDogMCkpOwogCQkJYnJlYWs7CiAJCWNhc2UgU0xSVV9DTE9TRV9GQUlMRUQ6CiAJCQllcmVw b3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKIAkJCQkJIGVycm1z ZygiY291bGQgbm90IGNsb3NlIGZpbGUgXCIlc1wiOiAlbSIsCiAJCQkJCQkJcGF0aCksCi0JCQkJ CSBvcGFxdWVfZGF0YSA/IGN0bC0+ZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihvcGFxdWVfZGF0YSkg OiAwKSk7CisJCQkJCSBvcGFxdWVfZGF0YSA/IGN0bC0+b3B0aW9ucy5lcnJkZXRhaWxfZm9yX2lv X2Vycm9yKG9wYXF1ZV9kYXRhKSA6IDApKTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJLyog Y2FuJ3QgZ2V0IGhlcmUsIHdlIHRydXN0ICovCkBAIC0xMTk5LDcgKzEyMTYsNyBAQCBTbHJ1UmVj ZW50bHlVc2VkKFNscnVTaGFyZWQgc2hhcmVkLCBpbnQgc2xvdG5vKQogICogVGhlIGNvcnJlY3Qg YmFuayBsb2NrIG11c3QgYmUgaGVsZCBhdCBlbnRyeSwgYW5kIHdpbGwgYmUgaGVsZCBhdCBleGl0 LgogICovCiBzdGF0aWMgaW50Ci1TbHJ1U2VsZWN0TFJVUGFnZShTbHJ1Q3RsIGN0bCwgaW50NjQg cGFnZW5vKQorU2xydVNlbGVjdExSVVBhZ2UoU2xydURlc2MgKmN0bCwgaW50NjQgcGFnZW5vKQog ewogCVNscnVTaGFyZWQJc2hhcmVkID0gY3RsLT5zaGFyZWQ7CiAKQEAgLTEyOTEsOCArMTMwOCw4 IEBAIFNscnVTZWxlY3RMUlVQYWdlKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8pCiAJCQl7CiAJ CQkJaWYgKHRoaXNfZGVsdGEgPiBiZXN0X3ZhbGlkX2RlbHRhIHx8CiAJCQkJCSh0aGlzX2RlbHRh ID09IGJlc3RfdmFsaWRfZGVsdGEgJiYKLQkJCQkJIGN0bC0+UGFnZVByZWNlZGVzKHRoaXNfcGFn ZV9udW1iZXIsCi0JCQkJCQkJCQkgICBiZXN0X3ZhbGlkX3BhZ2VfbnVtYmVyKSkpCisJCQkJCSBj dGwtPm9wdGlvbnMuUGFnZVByZWNlZGVzKHRoaXNfcGFnZV9udW1iZXIsCisJCQkJCQkJCQkJCSAg IGJlc3RfdmFsaWRfcGFnZV9udW1iZXIpKSkKIAkJCQl7CiAJCQkJCWJlc3R2YWxpZHNsb3QgPSBz bG90bm87CiAJCQkJCWJlc3RfdmFsaWRfZGVsdGEgPSB0aGlzX2RlbHRhOwpAQCAtMTMwMyw4ICsx MzIwLDggQEAgU2xydVNlbGVjdExSVVBhZ2UoU2xydUN0bCBjdGwsIGludDY0IHBhZ2VubykKIAkJ CXsKIAkJCQlpZiAodGhpc19kZWx0YSA+IGJlc3RfaW52YWxpZF9kZWx0YSB8fAogCQkJCQkodGhp c19kZWx0YSA9PSBiZXN0X2ludmFsaWRfZGVsdGEgJiYKLQkJCQkJIGN0bC0+UGFnZVByZWNlZGVz KHRoaXNfcGFnZV9udW1iZXIsCi0JCQkJCQkJCQkgICBiZXN0X2ludmFsaWRfcGFnZV9udW1iZXIp KSkKKwkJCQkJIGN0bC0+b3B0aW9ucy5QYWdlUHJlY2VkZXModGhpc19wYWdlX251bWJlciwKKwkJ CQkJCQkJCQkJICAgYmVzdF9pbnZhbGlkX3BhZ2VfbnVtYmVyKSkpCiAJCQkJewogCQkJCQliZXN0 aW52YWxpZHNsb3QgPSBzbG90bm87CiAJCQkJCWJlc3RfaW52YWxpZF9kZWx0YSA9IHRoaXNfZGVs dGE7CkBAIC0xMzUyLDcgKzEzNjksNyBAQCBTbHJ1U2VsZWN0TFJVUGFnZShTbHJ1Q3RsIGN0bCwg aW50NjQgcGFnZW5vKQogICogZW50cmllcyBhcmUgb24gZGlzay4KICAqLwogdm9pZAotU2ltcGxl THJ1V3JpdGVBbGwoU2xydUN0bCBjdGwsIGJvb2wgYWxsb3dfcmVkaXJ0aWVkKQorU2ltcGxlTHJ1 V3JpdGVBbGwoU2xydURlc2MgKmN0bCwgYm9vbCBhbGxvd19yZWRpcnRpZWQpCiB7CiAJU2xydVNo YXJlZAlzaGFyZWQgPSBjdGwtPnNoYXJlZDsKIAlTbHJ1V3JpdGVBbGxEYXRhIGZkYXRhOwpAQCAt MTQyMiw4ICsxNDM5LDggQEAgU2ltcGxlTHJ1V3JpdGVBbGwoU2xydUN0bCBjdGwsIGJvb2wgYWxs b3dfcmVkaXJ0aWVkKQogCQlTbHJ1UmVwb3J0SU9FcnJvcihjdGwsIHBhZ2VubywgTlVMTCk7CiAK IAkvKiBFbnN1cmUgdGhhdCBkaXJlY3RvcnkgZW50cmllcyBmb3IgbmV3IGZpbGVzIGFyZSBvbiBk aXNrLiAqLwotCWlmIChjdGwtPnN5bmNfaGFuZGxlciAhPSBTWU5DX0hBTkRMRVJfTk9ORSkKLQkJ ZnN5bmNfZm5hbWUoY3RsLT5EaXIsIHRydWUpOworCWlmIChjdGwtPm9wdGlvbnMuc3luY19oYW5k bGVyICE9IFNZTkNfSEFORExFUl9OT05FKQorCQlmc3luY19mbmFtZShjdGwtPm9wdGlvbnMuRGly LCB0cnVlKTsKIH0KIAogLyoKQEAgLTE0MzgsNyArMTQ1NSw3IEBAIFNpbXBsZUxydVdyaXRlQWxs KFNscnVDdGwgY3RsLCBib29sIGFsbG93X3JlZGlydGllZCkKICAqIGFmdGVyIGl0IGhhcyBhY2Ny dWVkIGZyZXNobHktd3JpdHRlbiBkYXRhLgogICovCiB2b2lkCi1TaW1wbGVMcnVUcnVuY2F0ZShT bHJ1Q3RsIGN0bCwgaW50NjQgY3V0b2ZmUGFnZSkKK1NpbXBsZUxydVRydW5jYXRlKFNscnVEZXNj ICpjdGwsIGludDY0IGN1dG9mZlBhZ2UpCiB7CiAJU2xydVNoYXJlZAlzaGFyZWQgPSBjdGwtPnNo YXJlZDsKIAlpbnQJCQlwcmV2YmFuazsKQEAgLTE0NjAsMTIgKzE0NzcsMTIgQEAgcmVzdGFydDoK IAkgKiBidWdzIGVsc2V3aGVyZSBpbiBTTFJVIGhhbmRsaW5nLCBzbyB3ZSBkb24ndCBjYXJlIGlm IHdlIHJlYWQgYSBzbGlnaHRseQogCSAqIG91dGRhdGVkIHZhbHVlOyB0aGVyZWZvcmUgd2UgZG9u J3QgYWRkIGEgbWVtb3J5IGJhcnJpZXIuCiAJICovCi0JaWYgKGN0bC0+UGFnZVByZWNlZGVzKHBn X2F0b21pY19yZWFkX3U2NCgmc2hhcmVkLT5sYXRlc3RfcGFnZV9udW1iZXIpLAotCQkJCQkJICBj dXRvZmZQYWdlKSkKKwlpZiAoY3RsLT5vcHRpb25zLlBhZ2VQcmVjZWRlcyhwZ19hdG9taWNfcmVh ZF91NjQoJnNoYXJlZC0+bGF0ZXN0X3BhZ2VfbnVtYmVyKSwKKwkJCQkJCQkJICBjdXRvZmZQYWdl KSkKIAl7CiAJCWVyZXBvcnQoTE9HLAogCQkJCShlcnJtc2coImNvdWxkIG5vdCB0cnVuY2F0ZSBk aXJlY3RvcnkgXCIlc1wiOiBhcHBhcmVudCB3cmFwYXJvdW5kIiwKLQkJCQkJCWN0bC0+RGlyKSkp OworCQkJCQkJY3RsLT5vcHRpb25zLkRpcikpKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtMTQ4OCw3 ICsxNTA1LDcgQEAgcmVzdGFydDoKIAogCQlpZiAoc2hhcmVkLT5wYWdlX3N0YXR1c1tzbG90bm9d ID09IFNMUlVfUEFHRV9FTVBUWSkKIAkJCWNvbnRpbnVlOwotCQlpZiAoIWN0bC0+UGFnZVByZWNl ZGVzKHNoYXJlZC0+cGFnZV9udW1iZXJbc2xvdG5vXSwgY3V0b2ZmUGFnZSkpCisJCWlmICghY3Rs LT5vcHRpb25zLlBhZ2VQcmVjZWRlcyhzaGFyZWQtPnBhZ2VfbnVtYmVyW3Nsb3Rub10sIGN1dG9m ZlBhZ2UpKQogCQkJY29udGludWU7CiAKIAkJLyoKQEAgLTE1MzMsMTYgKzE1NTAsMTYgQEAgcmVz dGFydDoKICAqIHRoZXkgZWl0aGVyIGNhbid0IHlldCBjb250YWluIGFueXRoaW5nLCBvciBoYXZl IGFscmVhZHkgYmVlbiBjbGVhbmVkIG91dC4KICAqLwogc3RhdGljIHZvaWQKLVNscnVJbnRlcm5h bERlbGV0ZVNlZ21lbnQoU2xydUN0bCBjdGwsIGludDY0IHNlZ25vKQorU2xydUludGVybmFsRGVs ZXRlU2VnbWVudChTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBzZWdubykKIHsKIAljaGFyCQlwYXRoW01B WFBHUEFUSF07CiAKIAkvKiBGb3JnZXQgYW55IGZzeW5jIHJlcXVlc3RzIHF1ZXVlZCBmb3IgdGhp cyBzZWdtZW50LiAqLwotCWlmIChjdGwtPnN5bmNfaGFuZGxlciAhPSBTWU5DX0hBTkRMRVJfTk9O RSkKKwlpZiAoY3RsLT5vcHRpb25zLnN5bmNfaGFuZGxlciAhPSBTWU5DX0hBTkRMRVJfTk9ORSkK IAl7CiAJCUZpbGVUYWcJCXRhZzsKIAotCQlJTklUX1NMUlVGSUxFVEFHKHRhZywgY3RsLT5zeW5j X2hhbmRsZXIsIHNlZ25vKTsKKwkJSU5JVF9TTFJVRklMRVRBRyh0YWcsIGN0bC0+b3B0aW9ucy5z eW5jX2hhbmRsZXIsIHNlZ25vKTsKIAkJUmVnaXN0ZXJTeW5jUmVxdWVzdCgmdGFnLCBTWU5DX0ZP UkdFVF9SRVFVRVNULCB0cnVlKTsKIAl9CiAKQEAgLTE1NTYsNyArMTU3Myw3IEBAIFNscnVJbnRl cm5hbERlbGV0ZVNlZ21lbnQoU2xydUN0bCBjdGwsIGludDY0IHNlZ25vKQogICogRGVsZXRlIGFu IGluZGl2aWR1YWwgU0xSVSBzZWdtZW50LCBpZGVudGlmaWVkIGJ5IHRoZSBzZWdtZW50IG51bWJl ci4KICAqLwogdm9pZAotU2xydURlbGV0ZVNlZ21lbnQoU2xydUN0bCBjdGwsIGludDY0IHNlZ25v KQorU2xydURlbGV0ZVNlZ21lbnQoU2xydURlc2MgKmN0bCwgaW50NjQgc2Vnbm8pCiB7CiAJU2xy dVNoYXJlZAlzaGFyZWQgPSBjdGwtPnNoYXJlZDsKIAlpbnQJCQlwcmV2YmFuayA9IFNsb3RHZXRC YW5rTnVtYmVyKDApOwpAQCAtMTYzMywxOSArMTY1MCwxOSBAQCByZXN0YXJ0OgogICogZmlyc3Q+ PWN1dG9mZiAmJiBsYXN0Pj1jdXRvZmY6IG5vOyBldmVyeSBwYWdlIG9mIHRoaXMgc2VnbWVudCBp cyB0b28geW91bmcKICAqLwogc3RhdGljIGJvb2wKLVNscnVNYXlEZWxldGVTZWdtZW50KFNscnVD dGwgY3RsLCBpbnQ2NCBzZWdwYWdlLCBpbnQ2NCBjdXRvZmZQYWdlKQorU2xydU1heURlbGV0ZVNl Z21lbnQoU2xydURlc2MgKmN0bCwgaW50NjQgc2VncGFnZSwgaW50NjQgY3V0b2ZmUGFnZSkKIHsK IAlpbnQ2NAkJc2VnX2xhc3RfcGFnZSA9IHNlZ3BhZ2UgKyBTTFJVX1BBR0VTX1BFUl9TRUdNRU5U IC0gMTsKIAogCUFzc2VydChzZWdwYWdlICUgU0xSVV9QQUdFU19QRVJfU0VHTUVOVCA9PSAwKTsK IAotCXJldHVybiAoY3RsLT5QYWdlUHJlY2VkZXMoc2VncGFnZSwgY3V0b2ZmUGFnZSkgJiYKLQkJ CWN0bC0+UGFnZVByZWNlZGVzKHNlZ19sYXN0X3BhZ2UsIGN1dG9mZlBhZ2UpKTsKKwlyZXR1cm4g KGN0bC0+b3B0aW9ucy5QYWdlUHJlY2VkZXMoc2VncGFnZSwgY3V0b2ZmUGFnZSkgJiYKKwkJCWN0 bC0+b3B0aW9ucy5QYWdlUHJlY2VkZXMoc2VnX2xhc3RfcGFnZSwgY3V0b2ZmUGFnZSkpOwogfQog CiAjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwogc3RhdGljIHZvaWQKLVNscnVQYWdlUHJlY2Vk ZXNUZXN0T2Zmc2V0KFNscnVDdGwgY3RsLCBpbnQgcGVyX3BhZ2UsIHVpbnQzMiBvZmZzZXQpCitT bHJ1UGFnZVByZWNlZGVzVGVzdE9mZnNldChTbHJ1RGVzYyAqY3RsLCBpbnQgcGVyX3BhZ2UsIHVp bnQzMiBvZmZzZXQpCiB7CiAJVHJhbnNhY3Rpb25JZCBsaHMsCiAJCQkJcmhzOwpAQCAtMTY1NCw2 ICsxNjcxLDkgQEAgU2xydVBhZ2VQcmVjZWRlc1Rlc3RPZmZzZXQoU2xydUN0bCBjdGwsIGludCBw ZXJfcGFnZSwgdWludDMyIG9mZnNldCkKIAlUcmFuc2FjdGlvbklkIG5ld2VzdFhhY3QsCiAJCQkJ b2xkZXN0WGFjdDsKIAorCS8qIFRoaXMgbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIFNscnUgaGFz IGJlZW4gaW5pdGlhbGl6ZWQgKi8KKwlBc3NlcnQoY3RsLT5vcHRpb25zLlBhZ2VQcmVjZWRlcyk7 CisKIAkvKgogCSAqIENvbXBhcmUgYW4gWElEIHBhaXIgaGF2aW5nIHVuZGVmaW5lZCBvcmRlciAo c2VlIFJGQyAxOTgyKSwgYSBwYWlyIGF0CiAJICogIm9wcG9zaXRlIGVuZHMiIG9mIHRoZSBYSUQg c3BhY2UuICBUcmFuc2FjdGlvbklkUHJlY2VkZXMoKSB0cmVhdHMgZWFjaApAQCAtMTY3MCwxOSAr MTY5MCwxOSBAQCBTbHJ1UGFnZVByZWNlZGVzVGVzdE9mZnNldChTbHJ1Q3RsIGN0bCwgaW50IHBl cl9wYWdlLCB1aW50MzIgb2Zmc2V0KQogCUFzc2VydCghVHJhbnNhY3Rpb25JZFByZWNlZGVzKHJo cywgbGhzICsgMSkpOwogCUFzc2VydCghVHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyhsaHMs IHJocykpOwogCUFzc2VydCghVHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyhyaHMsIGxocykp OwotCUFzc2VydCghY3RsLT5QYWdlUHJlY2VkZXMobGhzIC8gcGVyX3BhZ2UsIGxocyAvIHBlcl9w YWdlKSk7Ci0JQXNzZXJ0KCFjdGwtPlBhZ2VQcmVjZWRlcyhsaHMgLyBwZXJfcGFnZSwgcmhzIC8g cGVyX3BhZ2UpKTsKLQlBc3NlcnQoIWN0bC0+UGFnZVByZWNlZGVzKHJocyAvIHBlcl9wYWdlLCBs aHMgLyBwZXJfcGFnZSkpOwotCUFzc2VydCghY3RsLT5QYWdlUHJlY2VkZXMoKGxocyAtIHBlcl9w YWdlKSAvIHBlcl9wYWdlLCByaHMgLyBwZXJfcGFnZSkpOwotCUFzc2VydChjdGwtPlBhZ2VQcmVj ZWRlcyhyaHMgLyBwZXJfcGFnZSwgKGxocyAtIDMgKiBwZXJfcGFnZSkgLyBwZXJfcGFnZSkpOwot CUFzc2VydChjdGwtPlBhZ2VQcmVjZWRlcyhyaHMgLyBwZXJfcGFnZSwgKGxocyAtIDIgKiBwZXJf cGFnZSkgLyBwZXJfcGFnZSkpOwotCUFzc2VydChjdGwtPlBhZ2VQcmVjZWRlcyhyaHMgLyBwZXJf cGFnZSwgKGxocyAtIDEgKiBwZXJfcGFnZSkgLyBwZXJfcGFnZSkKKwlBc3NlcnQoIWN0bC0+b3B0 aW9ucy5QYWdlUHJlY2VkZXMobGhzIC8gcGVyX3BhZ2UsIGxocyAvIHBlcl9wYWdlKSk7CisJQXNz ZXJ0KCFjdGwtPm9wdGlvbnMuUGFnZVByZWNlZGVzKGxocyAvIHBlcl9wYWdlLCByaHMgLyBwZXJf cGFnZSkpOworCUFzc2VydCghY3RsLT5vcHRpb25zLlBhZ2VQcmVjZWRlcyhyaHMgLyBwZXJfcGFn ZSwgbGhzIC8gcGVyX3BhZ2UpKTsKKwlBc3NlcnQoIWN0bC0+b3B0aW9ucy5QYWdlUHJlY2VkZXMo KGxocyAtIHBlcl9wYWdlKSAvIHBlcl9wYWdlLCByaHMgLyBwZXJfcGFnZSkpOworCUFzc2VydChj dGwtPm9wdGlvbnMuUGFnZVByZWNlZGVzKHJocyAvIHBlcl9wYWdlLCAobGhzIC0gMyAqIHBlcl9w YWdlKSAvIHBlcl9wYWdlKSk7CisJQXNzZXJ0KGN0bC0+b3B0aW9ucy5QYWdlUHJlY2VkZXMocmhz IC8gcGVyX3BhZ2UsIChsaHMgLSAyICogcGVyX3BhZ2UpIC8gcGVyX3BhZ2UpKTsKKwlBc3NlcnQo Y3RsLT5vcHRpb25zLlBhZ2VQcmVjZWRlcyhyaHMgLyBwZXJfcGFnZSwgKGxocyAtIDEgKiBwZXJf cGFnZSkgLyBwZXJfcGFnZSkKIAkJICAgfHwgKDFVIDw8IDMxKSAlIHBlcl9wYWdlICE9IDApOwkv KiBTZWUgQ29tbWl0VHNQYWdlUHJlY2VkZXMoKSAqLwotCUFzc2VydChjdGwtPlBhZ2VQcmVjZWRl cygobGhzICsgMSAqIHBlcl9wYWdlKSAvIHBlcl9wYWdlLCByaHMgLyBwZXJfcGFnZSkKKwlBc3Nl cnQoY3RsLT5vcHRpb25zLlBhZ2VQcmVjZWRlcygobGhzICsgMSAqIHBlcl9wYWdlKSAvIHBlcl9w YWdlLCByaHMgLyBwZXJfcGFnZSkKIAkJICAgfHwgKDFVIDw8IDMxKSAlIHBlcl9wYWdlICE9IDAp OwotCUFzc2VydChjdGwtPlBhZ2VQcmVjZWRlcygobGhzICsgMiAqIHBlcl9wYWdlKSAvIHBlcl9w YWdlLCByaHMgLyBwZXJfcGFnZSkpOwotCUFzc2VydChjdGwtPlBhZ2VQcmVjZWRlcygobGhzICsg MyAqIHBlcl9wYWdlKSAvIHBlcl9wYWdlLCByaHMgLyBwZXJfcGFnZSkpOwotCUFzc2VydCghY3Rs LT5QYWdlUHJlY2VkZXMocmhzIC8gcGVyX3BhZ2UsIChsaHMgKyBwZXJfcGFnZSkgLyBwZXJfcGFn ZSkpOworCUFzc2VydChjdGwtPm9wdGlvbnMuUGFnZVByZWNlZGVzKChsaHMgKyAyICogcGVyX3Bh Z2UpIC8gcGVyX3BhZ2UsIHJocyAvIHBlcl9wYWdlKSk7CisJQXNzZXJ0KGN0bC0+b3B0aW9ucy5Q YWdlUHJlY2VkZXMoKGxocyArIDMgKiBwZXJfcGFnZSkgLyBwZXJfcGFnZSwgcmhzIC8gcGVyX3Bh Z2UpKTsKKwlBc3NlcnQoIWN0bC0+b3B0aW9ucy5QYWdlUHJlY2VkZXMocmhzIC8gcGVyX3BhZ2Us IChsaHMgKyBwZXJfcGFnZSkgLyBwZXJfcGFnZSkpOwogCiAJLyoKIAkgKiBHZXROZXdUcmFuc2Fj dGlvbklkKCkgaGFzIGFzc2lnbmVkIHRoZSBsYXN0IFhJRCBpdCBjYW4gc2FmZWx5IHVzZSwgYW5k CkBAIC0xNzI3LDcgKzE3NDcsNyBAQCBTbHJ1UGFnZVByZWNlZGVzVGVzdE9mZnNldChTbHJ1Q3Rs IGN0bCwgaW50IHBlcl9wYWdlLCB1aW50MzIgb2Zmc2V0KQogICogZG8gbm90IGFwcGx5IHRvIHRo ZW0uKQogICovCiB2b2lkCi1TbHJ1UGFnZVByZWNlZGVzVW5pdFRlc3RzKFNscnVDdGwgY3RsLCBp bnQgcGVyX3BhZ2UpCitTbHJ1UGFnZVByZWNlZGVzVW5pdFRlc3RzKFNscnVEZXNjICpjdGwsIGlu dCBwZXJfcGFnZSkKIHsKIAkvKiBUZXN0IGZpcnN0LCBtaWRkbGUgYW5kIGxhc3QgZW50cmllcyBv ZiBhIHBhZ2UuICovCiAJU2xydVBhZ2VQcmVjZWRlc1Rlc3RPZmZzZXQoY3RsLCBwZXJfcGFnZSwg MCk7CkBAIC0xNzQyLDcgKzE3NjIsNyBAQCBTbHJ1UGFnZVByZWNlZGVzVW5pdFRlc3RzKFNscnVD dGwgY3RsLCBpbnQgcGVyX3BhZ2UpCiAgKgkJb25lIGNvbnRhaW5pbmcgdGhlIHBhZ2UgcGFzc2Vk IGFzICJkYXRhIi4KICAqLwogYm9vbAotU2xydVNjYW5EaXJDYlJlcG9ydFByZXNlbmNlKFNscnVD dGwgY3RsLCBjaGFyICpmaWxlbmFtZSwgaW50NjQgc2VncGFnZSwKK1NscnVTY2FuRGlyQ2JSZXBv cnRQcmVzZW5jZShTbHJ1RGVzYyAqY3RsLCBjaGFyICpmaWxlbmFtZSwgaW50NjQgc2VncGFnZSwK IAkJCQkJCQl2b2lkICpkYXRhKQogewogCWludDY0CQljdXRvZmZQYWdlID0gKihpbnQ2NCAqKSBk YXRhOwpAQCAtMTc1OCw3ICsxNzc4LDcgQEAgU2xydVNjYW5EaXJDYlJlcG9ydFByZXNlbmNlKFNs cnVDdGwgY3RsLCBjaGFyICpmaWxlbmFtZSwgaW50NjQgc2VncGFnZSwKICAqCQlUaGlzIGNhbGxi YWNrIGRlbGV0ZXMgc2VnbWVudHMgcHJpb3IgdG8gdGhlIG9uZSBwYXNzZWQgaW4gYXMgImRhdGEi LgogICovCiBzdGF0aWMgYm9vbAotU2xydVNjYW5EaXJDYkRlbGV0ZUN1dG9mZihTbHJ1Q3RsIGN0 bCwgY2hhciAqZmlsZW5hbWUsIGludDY0IHNlZ3BhZ2UsCitTbHJ1U2NhbkRpckNiRGVsZXRlQ3V0 b2ZmKFNscnVEZXNjICpjdGwsIGNoYXIgKmZpbGVuYW1lLCBpbnQ2NCBzZWdwYWdlLAogCQkJCQkJ ICB2b2lkICpkYXRhKQogewogCWludDY0CQljdXRvZmZQYWdlID0gKihpbnQ2NCAqKSBkYXRhOwpA QCAtMTc3NCw3ICsxNzk0LDcgQEAgU2xydVNjYW5EaXJDYkRlbGV0ZUN1dG9mZihTbHJ1Q3RsIGN0 bCwgY2hhciAqZmlsZW5hbWUsIGludDY0IHNlZ3BhZ2UsCiAgKgkJVGhpcyBjYWxsYmFjayBkZWxl dGVzIGFsbCBzZWdtZW50cy4KICAqLwogYm9vbAotU2xydVNjYW5EaXJDYkRlbGV0ZUFsbChTbHJ1 Q3RsIGN0bCwgY2hhciAqZmlsZW5hbWUsIGludDY0IHNlZ3BhZ2UsIHZvaWQgKmRhdGEpCitTbHJ1 U2NhbkRpckNiRGVsZXRlQWxsKFNscnVEZXNjICpjdGwsIGNoYXIgKmZpbGVuYW1lLCBpbnQ2NCBz ZWdwYWdlLCB2b2lkICpkYXRhKQogewogCVNscnVJbnRlcm5hbERlbGV0ZVNlZ21lbnQoY3RsLCBz ZWdwYWdlIC8gU0xSVV9QQUdFU19QRVJfU0VHTUVOVCk7CiAKQEAgLTE3ODgsOSArMTgwOCw5IEBA IFNscnVTY2FuRGlyQ2JEZWxldGVBbGwoU2xydUN0bCBjdGwsIGNoYXIgKmZpbGVuYW1lLCBpbnQ2 NCBzZWdwYWdlLCB2b2lkICpkYXRhKQogICogU0xSVSBzZWdtZW50LgogICovCiBzdGF0aWMgaW5s aW5lIGJvb2wKLVNscnVDb3JyZWN0U2VnbWVudEZpbGVuYW1lTGVuZ3RoKFNscnVDdGwgY3RsLCBz aXplX3QgbGVuKQorU2xydUNvcnJlY3RTZWdtZW50RmlsZW5hbWVMZW5ndGgoU2xydURlc2MgKmN0 bCwgc2l6ZV90IGxlbikKIHsKLQlpZiAoY3RsLT5sb25nX3NlZ21lbnRfbmFtZXMpCisJaWYgKGN0 bC0+b3B0aW9ucy5sb25nX3NlZ21lbnRfbmFtZXMpCiAJCXJldHVybiAobGVuID09IDE1KTsJCS8q IHNlZSBTbHJ1RmlsZU5hbWUoKSAqLwogCWVsc2UKIApAQCAtMTgyMSw3ICsxODQxLDcgQEAgU2xy dUNvcnJlY3RTZWdtZW50RmlsZW5hbWVMZW5ndGgoU2xydUN0bCBjdGwsIHNpemVfdCBsZW4pCiAg KiBOb3RlIHRoYXQgbm8gbG9ja2luZyBpcyBhcHBsaWVkLgogICovCiBib29sCi1TbHJ1U2NhbkRp cmVjdG9yeShTbHJ1Q3RsIGN0bCwgU2xydVNjYW5DYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqZGF0 YSkKK1NscnVTY2FuRGlyZWN0b3J5KFNscnVEZXNjICpjdGwsIFNscnVTY2FuQ2FsbGJhY2sgY2Fs bGJhY2ssIHZvaWQgKmRhdGEpCiB7CiAJYm9vbAkJcmV0dmFsID0gZmFsc2U7CiAJRElSCQkgICAq Y2xkaXI7CkBAIC0xODI5LDggKzE4NDksOCBAQCBTbHJ1U2NhbkRpcmVjdG9yeShTbHJ1Q3RsIGN0 bCwgU2xydVNjYW5DYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqZGF0YSkKIAlpbnQ2NAkJc2Vnbm87 CiAJaW50NjQJCXNlZ3BhZ2U7CiAKLQljbGRpciA9IEFsbG9jYXRlRGlyKGN0bC0+RGlyKTsKLQl3 aGlsZSAoKGNsZGUgPSBSZWFkRGlyKGNsZGlyLCBjdGwtPkRpcikpICE9IE5VTEwpCisJY2xkaXIg PSBBbGxvY2F0ZURpcihjdGwtPm9wdGlvbnMuRGlyKTsKKwl3aGlsZSAoKGNsZGUgPSBSZWFkRGly KGNsZGlyLCBjdGwtPm9wdGlvbnMuRGlyKSkgIT0gTlVMTCkKIAl7CiAJCXNpemVfdAkJbGVuOwog CkBAIC0xODQzLDcgKzE4NjMsNyBAQCBTbHJ1U2NhbkRpcmVjdG9yeShTbHJ1Q3RsIGN0bCwgU2xy dVNjYW5DYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqZGF0YSkKIAkJCXNlZ3BhZ2UgPSBzZWdubyAq IFNMUlVfUEFHRVNfUEVSX1NFR01FTlQ7CiAKIAkJCWVsb2coREVCVUcyLCAiU2xydVNjYW5EaXJl Y3RvcnkgaW52b2tpbmcgY2FsbGJhY2sgb24gJXMvJXMiLAotCQkJCSBjdGwtPkRpciwgY2xkZS0+ ZF9uYW1lKTsKKwkJCQkgY3RsLT5vcHRpb25zLkRpciwgY2xkZS0+ZF9uYW1lKTsKIAkJCXJldHZh bCA9IGNhbGxiYWNrKGN0bCwgY2xkZS0+ZF9uYW1lLCBzZWdwYWdlLCBkYXRhKTsKIAkJCWlmIChy ZXR2YWwpCiAJCQkJYnJlYWs7CkBAIC0xODYxLDcgKzE4ODEsNyBAQCBTbHJ1U2NhbkRpcmVjdG9y eShTbHJ1Q3RsIGN0bCwgU2xydVNjYW5DYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqZGF0YSkKICAq IHBlcmZvcm1zIHRoZSBmc3luYy4KICAqLwogaW50Ci1TbHJ1U3luY0ZpbGVUYWcoU2xydUN0bCBj dGwsIGNvbnN0IEZpbGVUYWcgKmZ0YWcsIGNoYXIgKnBhdGgpCitTbHJ1U3luY0ZpbGVUYWcoU2xy dURlc2MgKmN0bCwgY29uc3QgRmlsZVRhZyAqZnRhZywgY2hhciAqcGF0aCkKIHsKIAlpbnQJCQlm ZDsKIAlpbnQJCQlzYXZlX2Vycm5vOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0vc3VidHJhbnMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3N1YnRyYW5zLmMK aW5kZXggYzZjZTcxZmM3MDMuLmI3OWU2NDhiODk5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS9zdWJ0cmFucy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3N1YnRyYW5zLmMKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5o IgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnX3RyYWNlLmgiCisjaW5jbHVk ZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tzLmgiCiAj aW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogCkBAIC02NiwxNiArNjcsMjIgQEAgVHJhbnNhY3Rp b25JZFRvUGFnZShUcmFuc2FjdGlvbklkIHhpZCkKICNkZWZpbmUgVHJhbnNhY3Rpb25JZFRvRW50 cnkoeGlkKSAoKHhpZCkgJSAoVHJhbnNhY3Rpb25JZCkgU1VCVFJBTlNfWEFDVFNfUEVSX1BBR0Up CiAKIAorc3RhdGljIHZvaWQgU1VCVFJBTlNTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRp YyB2b2lkIFNVQlRSQU5TU2htZW1Jbml0KHZvaWQgKmFyZyk7CitzdGF0aWMgYm9vbCBTdWJUcmFu c1BhZ2VQcmVjZWRlcyhpbnQ2NCBwYWdlMSwgaW50NjQgcGFnZTIpOworc3RhdGljIGludAlzdWJ0 cmFuc19lcnJkZXRhaWxfZm9yX2lvX2Vycm9yKGNvbnN0IHZvaWQgKm9wYXF1ZV9kYXRhKTsKKwor Y29uc3QgU2htZW1DYWxsYmFja3MgU1VCVFJBTlNTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVz dF9mbiA9IFNVQlRSQU5TU2htZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gU1VCVFJBTlNTaG1lbUlu aXQsCit9OworCiAvKgogICogTGluayB0byBzaGFyZWQtbWVtb3J5IGRhdGEgc3RydWN0dXJlcyBm b3IgU1VCVFJBTlMgY29udHJvbAogICovCi1zdGF0aWMgU2xydUN0bERhdGEgU3ViVHJhbnNDdGxE YXRhOwotCi0jZGVmaW5lIFN1YlRyYW5zQ3RsICAoJlN1YlRyYW5zQ3RsRGF0YSkKK3N0YXRpYyBT bHJ1RGVzYyBTdWJUcmFuc1NscnVEZXNjOwogCi0KLXN0YXRpYyBib29sIFN1YlRyYW5zUGFnZVBy ZWNlZGVzKGludDY0IHBhZ2UxLCBpbnQ2NCBwYWdlMik7Ci1zdGF0aWMgaW50CXN1YnRyYW5zX2Vy cmRldGFpbF9mb3JfaW9fZXJyb3IoY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpOworI2RlZmluZSBT dWJUcmFuc0N0bCAgKCZTdWJUcmFuc1NscnVEZXNjKQogCiAKIC8qCkBAIC0yMDcsMTcgKzIxNCwx MyBAQCBTVUJUUkFOU1NobWVtQnVmZmVycyh2b2lkKQogCXJldHVybiBNaW4oTWF4KDE2LCBzdWJ0 cmFuc2FjdGlvbl9idWZmZXJzKSwgU0xSVV9NQVhfQUxMT1dFRF9CVUZGRVJTKTsKIH0KIAorCisK IC8qCi0gKiBJbml0aWFsaXphdGlvbiBvZiBzaGFyZWQgbWVtb3J5IGZvciBTVUJUUkFOUworICog UmVnaXN0ZXIgc2hhcmVkIG1lbW9yeSBmb3IgU1VCVFJBTlMKICAqLwotU2l6ZQotU1VCVFJBTlNT aG1lbVNpemUodm9pZCkKLXsKLQlyZXR1cm4gU2ltcGxlTHJ1U2htZW1TaXplKFNVQlRSQU5TU2ht ZW1CdWZmZXJzKCksIDApOwotfQotCi12b2lkCi1TVUJUUkFOU1NobWVtSW5pdCh2b2lkKQorc3Rh dGljIHZvaWQKK1NVQlRSQU5TU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKIAkvKiBJZiBhdXRv LXR1bmluZyBpcyByZXF1ZXN0ZWQsIG5vdyBpcyB0aGUgdGltZSB0byBkbyBpdCAqLwogCWlmIChz dWJ0cmFuc2FjdGlvbl9idWZmZXJzID09IDApCkBAIC0yNDAsMTEgKzI0MywyNSBAQCBTVUJUUkFO U1NobWVtSW5pdCh2b2lkKQogCX0KIAlBc3NlcnQoc3VidHJhbnNhY3Rpb25fYnVmZmVycyAhPSAw KTsKIAotCVN1YlRyYW5zQ3RsLT5QYWdlUHJlY2VkZXMgPSBTdWJUcmFuc1BhZ2VQcmVjZWRlczsK LQlTdWJUcmFuc0N0bC0+ZXJyZGV0YWlsX2Zvcl9pb19lcnJvciA9IHN1YnRyYW5zX2VycmRldGFp bF9mb3JfaW9fZXJyb3I7Ci0JU2ltcGxlTHJ1SW5pdChTdWJUcmFuc0N0bCwgInN1YnRyYW5zYWN0 aW9uIiwgU1VCVFJBTlNTaG1lbUJ1ZmZlcnMoKSwgMCwKLQkJCQkgICJwZ19zdWJ0cmFucyIsIExX VFJBTkNIRV9TVUJUUkFOU19CVUZGRVIsCi0JCQkJICBMV1RSQU5DSEVfU1VCVFJBTlNfU0xSVSwg U1lOQ19IQU5ETEVSX05PTkUsIGZhbHNlKTsKKwlTaW1wbGVMcnVSZXF1ZXN0KC5kZXNjID0gJlN1 YlRyYW5zU2xydURlc2MsCisJCQkJCSAubmFtZSA9ICJzdWJ0cmFuc2FjdGlvbiIsCisJCQkJCSAu RGlyID0gInBnX3N1YnRyYW5zIiwKKwkJCQkJIC5sb25nX3NlZ21lbnRfbmFtZXMgPSBmYWxzZSwK KworCQkJCQkgLm5zbG90cyA9IFNVQlRSQU5TU2htZW1CdWZmZXJzKCksCisKKwkJCQkJIC5zeW5j X2hhbmRsZXIgPSBTWU5DX0hBTkRMRVJfTk9ORSwKKwkJCQkJIC5QYWdlUHJlY2VkZXMgPSBTdWJU cmFuc1BhZ2VQcmVjZWRlcywKKwkJCQkJIC5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yID0gc3VidHJh bnNfZXJyZGV0YWlsX2Zvcl9pb19lcnJvciwKKworCQkJCQkgLmJ1ZmZlcl90cmFuY2hlX2lkID0g TFdUUkFOQ0hFX1NVQlRSQU5TX0JVRkZFUiwKKwkJCQkJIC5iYW5rX3RyYW5jaGVfaWQgPSBMV1RS QU5DSEVfU1VCVFJBTlNfU0xSVSwKKwkJKTsKK30KKworc3RhdGljIHZvaWQKK1NVQlRSQU5TU2ht ZW1Jbml0KHZvaWQgKmFyZykKK3sKIAlTbHJ1UGFnZVByZWNlZGVzVW5pdFRlc3RzKFN1YlRyYW5z Q3RsLCBTVUJUUkFOU19YQUNUU19QRVJfUEFHRSk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2FzeW5jLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCmluZGV4 IGU5MWE2MmZmNDJhLi5kYjZhOWE2NTYxYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvYXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCkBAIC0xNzksNiAr MTc5LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9s bWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCisjaW5jbHVkZSAic3RvcmFn ZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0 aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZHNhLmgiCkBAIC0zNDUsNiArMzQ2LDE1 IEBAIHR5cGVkZWYgc3RydWN0IEFzeW5jUXVldWVDb250cm9sCiAKIHN0YXRpYyBBc3luY1F1ZXVl Q29udHJvbCAqYXN5bmNRdWV1ZUNvbnRyb2w7CiAKK3N0YXRpYyB2b2lkIEFzeW5jU2htZW1SZXF1 ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBBc3luY1NobWVtSW5pdCh2b2lkICphcmcpOwor Citjb25zdCBTaG1lbUNhbGxiYWNrcyBBc3luY1NobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0 X2ZuID0gQXN5bmNTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBBc3luY1NobWVtSW5pdCwKK307 CisKKwogI2RlZmluZSBRVUVVRV9IRUFECQkJCQkoYXN5bmNRdWV1ZUNvbnRyb2wtPmhlYWQpCiAj ZGVmaW5lIFFVRVVFX1RBSUwJCQkJCShhc3luY1F1ZXVlQ29udHJvbC0+dGFpbCkKICNkZWZpbmUg UVVFVUVfU1RPUF9QQUdFCQkJCShhc3luY1F1ZXVlQ29udHJvbC0+c3RvcFBhZ2UpCkBAIC0zNTks OSArMzY5LDEzIEBAIHN0YXRpYyBBc3luY1F1ZXVlQ29udHJvbCAqYXN5bmNRdWV1ZUNvbnRyb2w7 CiAvKgogICogVGhlIFNMUlUgYnVmZmVyIGFyZWEgdGhyb3VnaCB3aGljaCB3ZSBhY2Nlc3MgdGhl IG5vdGlmaWNhdGlvbiBxdWV1ZQogICovCi1zdGF0aWMgU2xydUN0bERhdGEgTm90aWZ5Q3RsRGF0 YTsKK3N0YXRpYyBpbmxpbmUgYm9vbCBhc3luY1F1ZXVlUGFnZVByZWNlZGVzKGludDY0IHAsIGlu dDY0IHEpOworc3RhdGljIGludAlhc3luY1F1ZXVlRXJyZGV0YWlsRm9ySW9FcnJvcihjb25zdCB2 b2lkICpvcGFxdWVfZGF0YSk7CisKK3N0YXRpYyBTbHJ1RGVzYyBOb3RpZnlTbHJ1RGVzYzsKIAot I2RlZmluZSBOb3RpZnlDdGwJCQkJCSgmTm90aWZ5Q3RsRGF0YSkKKworI2RlZmluZSBOb3RpZnlD dGwJCQkJCSgmTm90aWZ5U2xydURlc2MpCiAjZGVmaW5lIFFVRVVFX1BBR0VTSVpFCQkJCUJMQ0tT WgogCiAjZGVmaW5lIFFVRVVFX0ZVTExfV0FSTl9JTlRFUlZBTAk1MDAwCS8qIHdhcm4gYXQgbW9z dCBvbmNlIGV2ZXJ5IDVzICovCkBAIC01NzAsOSArNTg0LDcgQEAgYm9vbAkJVHJhY2Vfbm90aWZ5 ID0gZmFsc2U7CiBpbnQJCQltYXhfbm90aWZ5X3F1ZXVlX3BhZ2VzID0gMTA0ODU3NjsKIAogLyog bG9jYWwgZnVuY3Rpb24gcHJvdG90eXBlcyAqLwotc3RhdGljIGludAlhc3luY1F1ZXVlRXJyZGV0 YWlsRm9ySW9FcnJvcihjb25zdCB2b2lkICpvcGFxdWVfZGF0YSk7CiBzdGF0aWMgaW5saW5lIGlu dDY0IGFzeW5jUXVldWVQYWdlRGlmZihpbnQ2NCBwLCBpbnQ2NCBxKTsKLXN0YXRpYyBpbmxpbmUg Ym9vbCBhc3luY1F1ZXVlUGFnZVByZWNlZGVzKGludDY0IHAsIGludDY0IHEpOwogc3RhdGljIGlu bGluZSB2b2lkIEdsb2JhbENoYW5uZWxLZXlJbml0KEdsb2JhbENoYW5uZWxLZXkgKmtleSwgT2lk IGRib2lkLAogCQkJCQkJCQkJCWNvbnN0IGNoYXIgKmNoYW5uZWwpOwogc3RhdGljIGRzaGFzaF9o YXNoIGdsb2JhbENoYW5uZWxUYWJsZUhhc2goY29uc3Qgdm9pZCAqa2V5LCBzaXplX3Qgc2l6ZSwK QEAgLTc4MCw3OCArNzkyLDYzIEBAIGluaXRQZW5kaW5nTGlzdGVuQWN0aW9ucyh2b2lkKQogfQog CiAvKgotICogUmVwb3J0IHNwYWNlIG5lZWRlZCBmb3Igb3VyIHNoYXJlZCBtZW1vcnkgYXJlYQor ICogUmVnaXN0ZXIgb3VyIHNoYXJlZCBtZW1vcnkgbmVlZHMKICAqLwotU2l6ZQotQXN5bmNTaG1l bVNpemUodm9pZCkKK3N0YXRpYyB2b2lkCitBc3luY1NobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7 CiAJU2l6ZQkJc2l6ZTsKIAotCS8qIFRoaXMgaGFkIGJldHRlciBtYXRjaCBBc3luY1NobWVtSW5p dCAqLwogCXNpemUgPSBtdWxfc2l6ZShNYXhCYWNrZW5kcywgc2l6ZW9mKFF1ZXVlQmFja2VuZFN0 YXR1cykpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBvZmZzZXRvZihBc3luY1F1ZXVlQ29udHJv bCwgYmFja2VuZCkpOwogCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNpbXBsZUxydVNobWVtU2l6 ZShub3RpZnlfYnVmZmVycywgMCkpOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJBc3lu YyBRdWV1ZSBDb250cm9sIiwKKwkJCQkJICAgLnNpemUgPSBzaXplLAorCQkJCQkgICAucHRyID0g KHZvaWQgKiopICZhc3luY1F1ZXVlQ29udHJvbCwKKwkJKTsKIAotCXJldHVybiBzaXplOwotfQor CVNpbXBsZUxydVJlcXVlc3QoLmRlc2MgPSAmTm90aWZ5U2xydURlc2MsCisJCQkJCSAubmFtZSA9 ICJub3RpZnkiLAorCQkJCQkgLkRpciA9ICJwZ19ub3RpZnkiLAogCi0vKgotICogSW5pdGlhbGl6 ZSBvdXIgc2hhcmVkIG1lbW9yeSBhcmVhCi0gKi8KLXZvaWQKLUFzeW5jU2htZW1Jbml0KHZvaWQp Ci17Ci0JYm9vbAkJZm91bmQ7Ci0JU2l6ZQkJc2l6ZTsKKwkvKiBsb25nIHNlZ21lbnQgbmFtZXMg YXJlIHVzZWQgaW4gb3JkZXIgdG8gYXZvaWQgd3JhcGFyb3VuZCAqLworCQkJCQkgLmxvbmdfc2Vn bWVudF9uYW1lcyA9IHRydWUsCiAKLQkvKgotCSAqIENyZWF0ZSBvciBhdHRhY2ggdG8gdGhlIEFz eW5jUXVldWVDb250cm9sIHN0cnVjdHVyZS4KLQkgKi8KLQlzaXplID0gbXVsX3NpemUoTWF4QmFj a2VuZHMsIHNpemVvZihRdWV1ZUJhY2tlbmRTdGF0dXMpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6 ZSwgb2Zmc2V0b2YoQXN5bmNRdWV1ZUNvbnRyb2wsIGJhY2tlbmQpKTsKKwkJCQkJIC5uc2xvdHMg PSBub3RpZnlfYnVmZmVycywKIAotCWFzeW5jUXVldWVDb250cm9sID0gKEFzeW5jUXVldWVDb250 cm9sICopCi0JCVNobWVtSW5pdFN0cnVjdCgiQXN5bmMgUXVldWUgQ29udHJvbCIsIHNpemUsICZm b3VuZCk7CisJCQkJCSAuc3luY19oYW5kbGVyID0gU1lOQ19IQU5ETEVSX05PTkUsCisJCQkJCSAu UGFnZVByZWNlZGVzID0gYXN5bmNRdWV1ZVBhZ2VQcmVjZWRlcywKKwkJCQkJIC5lcnJkZXRhaWxf Zm9yX2lvX2Vycm9yID0gYXN5bmNRdWV1ZUVycmRldGFpbEZvcklvRXJyb3IsCiAKLQlpZiAoIWZv dW5kKQorCQkJCQkgLmJ1ZmZlcl90cmFuY2hlX2lkID0gTFdUUkFOQ0hFX05PVElGWV9CVUZGRVIs CisJCQkJCSAuYmFua190cmFuY2hlX2lkID0gTFdUUkFOQ0hFX05PVElGWV9TTFJVLAorCQkpOwor fQorCitzdGF0aWMgdm9pZAorQXN5bmNTaG1lbUluaXQodm9pZCAqYXJnKQoreworCVNFVF9RVUVV RV9QT1MoUVVFVUVfSEVBRCwgMCwgMCk7CisJU0VUX1FVRVVFX1BPUyhRVUVVRV9UQUlMLCAwLCAw KTsKKwlRVUVVRV9TVE9QX1BBR0UgPSAwOworCVFVRVVFX0ZJUlNUX0xJU1RFTkVSID0gSU5WQUxJ RF9QUk9DX05VTUJFUjsKKwlhc3luY1F1ZXVlQ29udHJvbC0+bGFzdFF1ZXVlRmlsbFdhcm4gPSAw OworCWFzeW5jUXVldWVDb250cm9sLT5nbG9iYWxDaGFubmVsVGFibGVEU0EgPSBEU0FfSEFORExF X0lOVkFMSUQ7CisJYXN5bmNRdWV1ZUNvbnRyb2wtPmdsb2JhbENoYW5uZWxUYWJsZURTSCA9IERT SEFTSF9IQU5ETEVfSU5WQUxJRDsKKwlmb3IgKGludCBpID0gMDsgaSA8IE1heEJhY2tlbmRzOyBp KyspCiAJewotCQkvKiBGaXJzdCB0aW1lIHRocm91Z2gsIHNvIGluaXRpYWxpemUgaXQgKi8KLQkJ U0VUX1FVRVVFX1BPUyhRVUVVRV9IRUFELCAwLCAwKTsKLQkJU0VUX1FVRVVFX1BPUyhRVUVVRV9U QUlMLCAwLCAwKTsKLQkJUVVFVUVfU1RPUF9QQUdFID0gMDsKLQkJUVVFVUVfRklSU1RfTElTVEVO RVIgPSBJTlZBTElEX1BST0NfTlVNQkVSOwotCQlhc3luY1F1ZXVlQ29udHJvbC0+bGFzdFF1ZXVl RmlsbFdhcm4gPSAwOwotCQlhc3luY1F1ZXVlQ29udHJvbC0+Z2xvYmFsQ2hhbm5lbFRhYmxlRFNB ID0gRFNBX0hBTkRMRV9JTlZBTElEOwotCQlhc3luY1F1ZXVlQ29udHJvbC0+Z2xvYmFsQ2hhbm5l bFRhYmxlRFNIID0gRFNIQVNIX0hBTkRMRV9JTlZBTElEOwotCQlmb3IgKGludCBpID0gMDsgaSA8 IE1heEJhY2tlbmRzOyBpKyspCi0JCXsKLQkJCVFVRVVFX0JBQ0tFTkRfUElEKGkpID0gSW52YWxp ZFBpZDsKLQkJCVFVRVVFX0JBQ0tFTkRfREJPSUQoaSkgPSBJbnZhbGlkT2lkOwotCQkJUVVFVUVf TkVYVF9MSVNURU5FUihpKSA9IElOVkFMSURfUFJPQ19OVU1CRVI7Ci0JCQlTRVRfUVVFVUVfUE9T KFFVRVVFX0JBQ0tFTkRfUE9TKGkpLCAwLCAwKTsKLQkJCVFVRVVFX0JBQ0tFTkRfV0FLRVVQX1BF TkRJTkcoaSkgPSBmYWxzZTsKLQkJCVFVRVVFX0JBQ0tFTkRfSVNfQURWQU5DSU5HKGkpID0gZmFs c2U7Ci0JCX0KKwkJUVVFVUVfQkFDS0VORF9QSUQoaSkgPSBJbnZhbGlkUGlkOworCQlRVUVVRV9C QUNLRU5EX0RCT0lEKGkpID0gSW52YWxpZE9pZDsKKwkJUVVFVUVfTkVYVF9MSVNURU5FUihpKSA9 IElOVkFMSURfUFJPQ19OVU1CRVI7CisJCVNFVF9RVUVVRV9QT1MoUVVFVUVfQkFDS0VORF9QT1Mo aSksIDAsIDApOworCQlRVUVVRV9CQUNLRU5EX1dBS0VVUF9QRU5ESU5HKGkpID0gZmFsc2U7CisJ CVFVRVVFX0JBQ0tFTkRfSVNfQURWQU5DSU5HKGkpID0gZmFsc2U7CiAJfQogCiAJLyoKLQkgKiBT ZXQgdXAgU0xSVSBtYW5hZ2VtZW50IG9mIHRoZSBwZ19ub3RpZnkgZGF0YS4gTm90ZSB0aGF0IGxv bmcgc2VnbWVudAotCSAqIG5hbWVzIGFyZSB1c2VkIGluIG9yZGVyIHRvIGF2b2lkIHdyYXBhcm91 bmQuCisJICogRHVyaW5nIHN0YXJ0IG9yIHJlYm9vdCwgY2xlYW4gb3V0IHRoZSBwZ19ub3RpZnkg ZGlyZWN0b3J5LgogCSAqLwotCU5vdGlmeUN0bC0+UGFnZVByZWNlZGVzID0gYXN5bmNRdWV1ZVBh Z2VQcmVjZWRlczsKLQlOb3RpZnlDdGwtPmVycmRldGFpbF9mb3JfaW9fZXJyb3IgPSBhc3luY1F1 ZXVlRXJyZGV0YWlsRm9ySW9FcnJvcjsKLQlTaW1wbGVMcnVJbml0KE5vdGlmeUN0bCwgIm5vdGlm eSIsIG5vdGlmeV9idWZmZXJzLCAwLAotCQkJCSAgInBnX25vdGlmeSIsIExXVFJBTkNIRV9OT1RJ RllfQlVGRkVSLCBMV1RSQU5DSEVfTk9USUZZX1NMUlUsCi0JCQkJICBTWU5DX0hBTkRMRVJfTk9O RSwgdHJ1ZSk7Ci0KLQlpZiAoIWZvdW5kKQotCXsKLQkJLyoKLQkJICogRHVyaW5nIHN0YXJ0IG9y IHJlYm9vdCwgY2xlYW4gb3V0IHRoZSBwZ19ub3RpZnkgZGlyZWN0b3J5LgotCQkgKi8KLQkJKHZv aWQpIFNscnVTY2FuRGlyZWN0b3J5KE5vdGlmeUN0bCwgU2xydVNjYW5EaXJDYkRlbGV0ZUFsbCwg TlVMTCk7Ci0JfQorCSh2b2lkKSBTbHJ1U2NhbkRpcmVjdG9yeShOb3RpZnlDdGwsIFNscnVTY2Fu RGlyQ2JEZWxldGVBbGwsIE5VTEwpOwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL2lwY2kuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwppbmRleCA0 ZjcwNzE1ODMwMy4uN2E4YzY5ZGU4MDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL2lwY2kuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKQEAgLTEwMSwx NiArMTAxLDExIEBAIENhbGN1bGF0ZVNobWVtU2l6ZSh2b2lkKQogCS8qIGxlZ2FjeSBzdWJzeXN0 ZW1zICovCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIEJ1ZmZlck1hbmFnZXJTaG1lbVNpemUoKSk7 CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIExvY2tNYW5hZ2VyU2htZW1TaXplKCkpOwotCXNpemUg PSBhZGRfc2l6ZShzaXplLCBQcmVkaWNhdGVMb2NrU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRf c2l6ZShzaXplLCBYTG9nUHJlZmV0Y2hTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNp emUsIFhMT0dTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFhMb2dSZWNvdmVy eVNobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgQ0xPR1NobWVtU2l6ZSgpKTsK LQlzaXplID0gYWRkX3NpemUoc2l6ZSwgQ29tbWl0VHNTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFk ZF9zaXplKHNpemUsIFNVQlRSQU5TU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXpl LCBUd29QaGFzZVNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgQmFja2dyb3Vu ZFdvcmtlclNobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgTXVsdGlYYWN0U2ht ZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBCYWNrZW5kU3RhdHVzU2htZW1TaXpl KCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBDaGVja3BvaW50ZXJTaG1lbVNpemUoKSk7CiAJ c2l6ZSA9IGFkZF9zaXplKHNpemUsIEF1dG9WYWN1dW1TaG1lbVNpemUoKSk7CkBAIC0xMjMsNyAr MTE4LDYgQEAgQ2FsY3VsYXRlU2htZW1TaXplKHZvaWQpCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUs IEFwcGx5TGF1bmNoZXJTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIEJUcmVl U2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBTeW5jU2NhblNobWVtU2l6ZSgp KTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgQXN5bmNTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFk ZF9zaXplKHNpemUsIFN0YXRzU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBX YWl0RXZlbnRDdXN0b21TaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIEluamVj dGlvblBvaW50U2htZW1TaXplKCkpOwpAQCAtMjcwLDEwICsyNjQsNiBAQCBDcmVhdGVPckF0dGFj aFNobWVtU3RydWN0cyh2b2lkKQogCVhMT0dTaG1lbUluaXQoKTsKIAlYTG9nUHJlZmV0Y2hTaG1l bUluaXQoKTsKIAlYTG9nUmVjb3ZlcnlTaG1lbUluaXQoKTsKLQlDTE9HU2htZW1Jbml0KCk7Ci0J Q29tbWl0VHNTaG1lbUluaXQoKTsKLQlTVUJUUkFOU1NobWVtSW5pdCgpOwotCU11bHRpWGFjdFNo bWVtSW5pdCgpOwogCUJ1ZmZlck1hbmFnZXJTaG1lbUluaXQoKTsKIAogCS8qCkBAIC0yODEsMTEg KzI3MSw2IEBAIENyZWF0ZU9yQXR0YWNoU2htZW1TdHJ1Y3RzKHZvaWQpCiAJICovCiAJTG9ja01h bmFnZXJTaG1lbUluaXQoKTsKIAotCS8qCi0JICogU2V0IHVwIHByZWRpY2F0ZSBsb2NrIG1hbmFn ZXIKLQkgKi8KLQlQcmVkaWNhdGVMb2NrU2htZW1Jbml0KCk7Ci0KIAkvKgogCSAqIFNldCB1cCBw cm9jZXNzIHRhYmxlCiAJICovCkBAIC0zMTMsNyArMjk4LDYgQEAgQ3JlYXRlT3JBdHRhY2hTaG1l bVN0cnVjdHModm9pZCkKIAkgKi8KIAlCVHJlZVNobWVtSW5pdCgpOwogCVN5bmNTY2FuU2htZW1J bml0KCk7Ci0JQXN5bmNTaG1lbUluaXQoKTsKIAlTdGF0c1NobWVtSW5pdCgpOwogCVdhaXRFdmVu dEN1c3RvbVNobWVtSW5pdCgpOwogCUluamVjdGlvblBvaW50U2htZW1Jbml0KCk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvc2htZW0uYwppbmRleCAyOWZmNjA2NWRkYS4uYmMxODZkNmVhMTcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvc2htZW0uYwpAQCAtMTM0LDYgKzEzNCw3IEBACiAKICNpbmNsdWRlIDx1bmlzdGQuaD4K IAorI2luY2x1ZGUgImFjY2Vzcy9zbHJ1LmgiCiAjaW5jbHVkZSAiY29tbW9uL2ludC5oIgogI2lu Y2x1ZGUgImZtZ3IuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCkBAIC01NDksNiArNTUwLDkgQEAg SW5pdFNobWVtSW5kZXhFbnRyeShTaG1lbVJlcXVlc3QgKnJlcXVlc3QpCiAJCWNhc2UgU0hNRU1f S0lORF9IQVNIOgogCQkJc2htZW1faGFzaF9pbml0KHN0cnVjdFB0ciwgcmVxdWVzdC0+b3B0aW9u cyk7CiAJCQlicmVhazsKKwkJY2FzZSBTSE1FTV9LSU5EX1NMUlU6CisJCQlzaG1lbV9zbHJ1X2lu aXQoc3RydWN0UHRyLCByZXF1ZXN0LT5vcHRpb25zKTsKKwkJCWJyZWFrOwogCX0KIH0KIApAQCAt NjAyLDYgKzYwNiw5IEBAIEF0dGFjaFNobWVtSW5kZXhFbnRyeShTaG1lbVJlcXVlc3QgKnJlcXVl c3QsIGJvb2wgbWlzc2luZ19vaykKIAkJY2FzZSBTSE1FTV9LSU5EX0hBU0g6CiAJCQlzaG1lbV9o YXNoX2F0dGFjaChpbmRleF9lbnRyeS0+bG9jYXRpb24sIHJlcXVlc3QtPm9wdGlvbnMpOwogCQkJ YnJlYWs7CisJCWNhc2UgU0hNRU1fS0lORF9TTFJVOgorCQkJc2htZW1fc2xydV9hdHRhY2goaW5k ZXhfZW50cnktPmxvY2F0aW9uLCByZXF1ZXN0LT5vcHRpb25zKTsKKwkJCWJyZWFrOwogCX0KIAog CXJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRp Y2F0ZS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCmluZGV4IGFmMDMw NzFhNzFmLi45YzM4OWIyMzUwNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdy L3ByZWRpY2F0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwpA QCAtMTUyLDEwICsxNTIsNiBAQAogLyoKICAqIElOVEVSRkFDRSBST1VUSU5FUwogICoKLSAqIGhv dXNla2VlcGluZyBmb3Igc2V0dGluZyB1cCBzaGFyZWQgbWVtb3J5IHByZWRpY2F0ZSBsb2NrIHN0 cnVjdHVyZXMKLSAqCQlQcmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQpCi0gKgkJUHJlZGljYXRl TG9ja1NobWVtU2l6ZSh2b2lkKQotICoKICAqIHByZWRpY2F0ZSBsb2NrIHJlcG9ydGluZwogICoJ CUdldFByZWRpY2F0ZUxvY2tTdGF0dXNEYXRhKHZvaWQpCiAgKgkJUGFnZUlzUHJlZGljYXRlTG9j a2VkKFJlbGF0aW9uIHJlbGF0aW9uLCBCbG9ja051bWJlciBibGtubykKQEAgLTIxMSw2ICsyMDcs OCBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlX2ludGVybmFscy5oIgogI2luY2x1ZGUg InN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVk ZSAic3RvcmFnZS9zaG1lbS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2lu Y2x1ZGUgInV0aWxzL2d1Y19ob29rcy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1 ZGUgInV0aWxzL3NuYXBtZ3IuaCIKQEAgLTMyMiw5ICszMjAsMTIgQEAKIC8qCiAgKiBUaGUgU0xS VSBidWZmZXIgYXJlYSB0aHJvdWdoIHdoaWNoIHdlIGFjY2VzcyB0aGUgb2xkIHhpZHMuCiAgKi8K LXN0YXRpYyBTbHJ1Q3RsRGF0YSBTZXJpYWxTbHJ1Q3RsRGF0YTsKK3N0YXRpYyBib29sIFNlcmlh bFBhZ2VQcmVjZWRlc0xvZ2ljYWxseShpbnQ2NCBwYWdlMSwgaW50NjQgcGFnZTIpOworc3RhdGlj IGludAlzZXJpYWxfZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihjb25zdCB2b2lkICpvcGFxdWVfZGF0 YSk7CiAKLSNkZWZpbmUgU2VyaWFsU2xydUN0bAkJCSgmU2VyaWFsU2xydUN0bERhdGEpCitzdGF0 aWMgU2xydURlc2MgU2VyaWFsU2xydURlc2M7CisKKyNkZWZpbmUgU2VyaWFsU2xydUN0bAkJCSgm U2VyaWFsU2xydURlc2MpCiAKICNkZWZpbmUgU0VSSUFMX1BBR0VTSVpFCQkJQkxDS1NaCiAjZGVm aW5lIFNFUklBTF9FTlRSWVNJWkUJCQlzaXplb2YoU2VyQ29tbWl0U2VxTm8pCkBAIC0zODQsNiAr Mzg1LDE3IEBAIGludAkJCW1heF9wcmVkaWNhdGVfbG9ja3NfcGVyX3BhZ2U7CS8qIGluIGd1Y190 YWJsZXMuYyAqLwogICovCiBzdGF0aWMgUHJlZFhhY3RMaXN0IFByZWRYYWN0OwogCitzdGF0aWMg dm9pZCBQcmVkaWNhdGVMb2NrU2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBQ cmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBQcmVkaWNhdGVM b2NrU2htZW1BdHRhY2godm9pZCAqYXJnKTsKKworY29uc3QgU2htZW1DYWxsYmFja3MgUHJlZGlj YXRlTG9ja1NobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gUHJlZGljYXRlTG9ja1No bWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IFByZWRpY2F0ZUxvY2tTaG1lbUluaXQsCisJLmF0dGFj aF9mbiA9IFByZWRpY2F0ZUxvY2tTaG1lbUF0dGFjaCwKK307CisKKwogLyoKICAqIFRoaXMgcHJv dmlkZXMgYSBwb29sIG9mIFJXQ29uZmxpY3QgZGF0YSBlbGVtZW50cyB0byB1c2UgaW4gY29uZmxp Y3QgbGlzdHMKICAqIGJldHdlZW4gdHJhbnNhY3Rpb25zLgpAQCAtNDMxLDYgKzQ0Myw4IEBAIHN0 YXRpYyBib29sIE15WGFjdERpZFdyaXRlID0gZmFsc2U7CiAgKi8KIHN0YXRpYyBTRVJJQUxJWkFC TEVYQUNUICpTYXZlZFNlcmlhbGl6YWJsZVhhY3QgPSBJbnZhbGlkU2VyaWFsaXphYmxlWGFjdDsK IAorc3RhdGljIGludDY0IG1heF9zZXJpYWxpemFibGVfeGFjdHM7CisKIC8qIGxvY2FsIGZ1bmN0 aW9ucyAqLwogCiBzdGF0aWMgU0VSSUFMSVpBQkxFWEFDVCAqQ3JlYXRlUHJlZFhhY3Qodm9pZCk7 CkBAIC00NDIsMTMgKzQ1NiwxMiBAQCBzdGF0aWMgdm9pZCBTZXRQb3NzaWJsZVVuc2FmZUNvbmZs aWN0KFNFUklBTElaQUJMRVhBQ1QgKnJvWGFjdCwgU0VSSUFMSVpBQkxFWEFDVAogc3RhdGljIHZv aWQgUmVsZWFzZVJXQ29uZmxpY3QoUldDb25mbGljdCBjb25mbGljdCk7CiBzdGF0aWMgdm9pZCBG bGFnU3hhY3RVbnNhZmUoU0VSSUFMSVpBQkxFWEFDVCAqc3hhY3QpOwogCi1zdGF0aWMgYm9vbCBT ZXJpYWxQYWdlUHJlY2VkZXNMb2dpY2FsbHkoaW50NjQgcGFnZTEsIGludDY0IHBhZ2UyKTsKLXN0 YXRpYyBpbnQJc2VyaWFsX2VycmRldGFpbF9mb3JfaW9fZXJyb3IoY29uc3Qgdm9pZCAqb3BhcXVl X2RhdGEpOwogc3RhdGljIHZvaWQgU2VyaWFsQWRkKFRyYW5zYWN0aW9uSWQgeGlkLCBTZXJDb21t aXRTZXFObyBtaW5Db25mbGljdENvbW1pdFNlcU5vKTsKIHN0YXRpYyBTZXJDb21taXRTZXFObyBT ZXJpYWxHZXRNaW5Db25mbGljdENvbW1pdFNlcU5vKFRyYW5zYWN0aW9uSWQgeGlkKTsKIHN0YXRp YyB2b2lkIFNlcmlhbFNldEFjdGl2ZVNlclhtaW4oVHJhbnNhY3Rpb25JZCB4aWQpOwogCiBzdGF0 aWMgdWludDMyIHByZWRpY2F0ZWxvY2tfaGFzaChjb25zdCB2b2lkICprZXksIFNpemUga2V5c2l6 ZSk7CisKIHN0YXRpYyB2b2lkIFN1bW1hcml6ZU9sZGVzdENvbW1pdHRlZFN4YWN0KHZvaWQpOwog c3RhdGljIFNuYXBzaG90IEdldFNhZmVTbmFwc2hvdChTbmFwc2hvdCBvcmlnU25hcHNob3QpOwog c3RhdGljIFNuYXBzaG90IEdldFNlcmlhbGl6YWJsZVRyYW5zYWN0aW9uU25hcHNob3RJbnQoU25h cHNob3Qgc25hcHNob3QsCkBAIC0xMTAwLDcxICsxMTEzLDUzIEBAIENoZWNrUG9pbnRQcmVkaWNh dGUodm9pZCkKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAogLyoKLSAqIFByZWRpY2F0ZUxvY2tTaG1l bUluaXQgLS0gSW5pdGlhbGl6ZSB0aGUgcHJlZGljYXRlIGxvY2tpbmcgZGF0YSBzdHJ1Y3R1cmVz LgotICoKLSAqIFRoaXMgaXMgY2FsbGVkIGZyb20gQ3JlYXRlU2hhcmVkTWVtb3J5QW5kU2VtYXBo b3JlcygpLCB3aGljaCBzZWUgZm9yCi0gKiBtb3JlIGNvbW1lbnRzLiAgSW4gdGhlIG5vcm1hbCBw b3N0bWFzdGVyIGNhc2UsIHRoZSBzaGFyZWQgaGFzaCB0YWJsZXMKLSAqIGFyZSBjcmVhdGVkIGhl cmUuICBCYWNrZW5kcyBpbmhlcml0IHRoZSBwb2ludGVycwotICogdG8gdGhlIHNoYXJlZCB0YWJs ZXMgdmlhIGZvcmsoKS4gIEluIHRoZSBFWEVDX0JBQ0tFTkQgY2FzZSwgZWFjaAotICogYmFja2Vu ZCByZS1leGVjdXRlcyB0aGlzIGNvZGUgdG8gb2J0YWluIHBvaW50ZXJzIHRvIHRoZSBhbHJlYWR5 IGV4aXN0aW5nCi0gKiBzaGFyZWQgaGFzaCB0YWJsZXMuCisgKiBQcmVkaWNhdGVMb2NrU2htZW1S ZXF1ZXN0IC0tIFJlZ2lzdGVyIHRoZSBwcmVkaWNhdGUgbG9ja2luZyBkYXRhIHN0cnVjdHVyZXMu CiAgKi8KLXZvaWQKLVByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitQ cmVkaWNhdGVMb2NrU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlIQVNIQ1RMCQlpbmZvOwog CWludDY0CQltYXhfcHJlZGljYXRlX2xvY2tfdGFyZ2V0czsKIAlpbnQ2NAkJbWF4X3ByZWRpY2F0 ZV9sb2NrczsKLQlpbnQ2NAkJbWF4X3NlcmlhbGl6YWJsZV94YWN0czsKIAlpbnQ2NAkJbWF4X3J3 X2NvbmZsaWN0czsKLQlTaXplCQlyZXF1ZXN0U2l6ZTsKLQlib29sCQlmb3VuZDsKLQotI2lmbmRl ZiBFWEVDX0JBQ0tFTkQKLQlBc3NlcnQoIUlzVW5kZXJQb3N0bWFzdGVyKTsKLSNlbmRpZgogCiAJ LyoKLQkgKiBDb21wdXRlIHNpemUgb2YgcHJlZGljYXRlIGxvY2sgdGFyZ2V0IGhhc2h0YWJsZS4g Tm90ZSB0aGVzZQotCSAqIGNhbGN1bGF0aW9ucyBtdXN0IGFncmVlIHdpdGggUHJlZGljYXRlTG9j a1NobWVtU2l6ZSEKKwkgKiBIYXNoIHRhYmxlcyBhbmQgb3RoZXIgc3RydWN0cyBhcmUgc2V0IHVw IGJ5IFNobWVtSW5pdFJlZ2lzdGVyZWQoKSAvCisJICogU2htZW1BdHRhY2hSZWdpc3RlcmVkKCkg dmlhIHJlZ2lzdGVyZWQgZGVzY3JpcHRvcnMgaW4KKwkgKiBQcmVkaWNhdGVMb2NrU2htZW1SZWdp c3RlcigpLiAgSGVyZSB3ZSBkbyB0aGUgcmVtYWluaW5nIGluaXRpYWxpemF0aW9uCisJICogdGhh dCBjYW4ndCBiZSBkb25lIGluIGEgY2FsbGJhY2suCiAJICovCiAJbWF4X3ByZWRpY2F0ZV9sb2Nr X3RhcmdldHMgPSBOUFJFRElDQVRFTE9DS1RBUkdFVEVOVFMoKTsKIAogCS8qCi0JICogQWxsb2Nh dGUgaGFzaCB0YWJsZSBmb3IgUFJFRElDQVRFTE9DS1RBUkdFVCBzdHJ1Y3RzLiAgVGhpcyBzdG9y ZXMKKwkgKiBSZWdpc3RlciBoYXNoIHRhYmxlIGZvciBQUkVESUNBVEVMT0NLVEFSR0VUIHN0cnVj dHMuICBUaGlzIHN0b3JlcwogCSAqIHBlci1wcmVkaWNhdGUtbG9jay10YXJnZXQgaW5mb3JtYXRp b24uCiAJICovCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKFBSRURJQ0FURUxPQ0tUQVJHRVRUQUcp OwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKFBSRURJQ0FURUxPQ0tUQVJHRVQpOwotCWluZm8u bnVtX3BhcnRpdGlvbnMgPSBOVU1fUFJFRElDQVRFTE9DS19QQVJUSVRJT05TOwotCi0JUHJlZGlj YXRlTG9ja1RhcmdldEhhc2ggPSBTaG1lbUluaXRIYXNoKCJQUkVESUNBVEVMT0NLVEFSR0VUIGhh c2giLAotCQkJCQkJCQkJCQltYXhfcHJlZGljYXRlX2xvY2tfdGFyZ2V0cywKLQkJCQkJCQkJCQkJ JmluZm8sCi0JCQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfAotCQkJCQkJCQkJCQlI QVNIX1BBUlRJVElPTiB8IEhBU0hfRklYRURfU0laRSk7Ci0KLQkvKiBQcmUtY2FsY3VsYXRlIHRo ZSBoYXNoIGFuZCBwYXJ0aXRpb24gbG9jayBvZiB0aGUgc2NyYXRjaCBlbnRyeSAqLwotCVNjcmF0 Y2hUYXJnZXRUYWdIYXNoID0gUHJlZGljYXRlTG9ja1RhcmdldFRhZ0hhc2hDb2RlKCZTY3JhdGNo VGFyZ2V0VGFnKTsKLQlTY3JhdGNoUGFydGl0aW9uTG9jayA9IFByZWRpY2F0ZUxvY2tIYXNoUGFy dGl0aW9uTG9jayhTY3JhdGNoVGFyZ2V0VGFnSGFzaCk7CisJU2htZW1SZXF1ZXN0SGFzaCgubmFt ZSA9ICJQUkVESUNBVEVMT0NLVEFSR0VUIGhhc2giLAorCQkJCQkgLm5lbGVtcyA9IG1heF9wcmVk aWNhdGVfbG9ja190YXJnZXRzLAorCQkJCQkgLnB0ciA9ICZQcmVkaWNhdGVMb2NrVGFyZ2V0SGFz aCwKKwkJCQkJIC5oYXNoX2luZm8ua2V5c2l6ZSA9IHNpemVvZihQUkVESUNBVEVMT0NLVEFSR0VU VEFHKSwKKwkJCQkJIC5oYXNoX2luZm8uZW50cnlzaXplID0gc2l6ZW9mKFBSRURJQ0FURUxPQ0tU QVJHRVQpLAorCQkJCQkgLmhhc2hfaW5mby5udW1fcGFydGl0aW9ucyA9IE5VTV9QUkVESUNBVEVM T0NLX1BBUlRJVElPTlMsCisJCQkJCSAuaGFzaF9mbGFncyA9IEhBU0hfRUxFTSB8IEhBU0hfQkxP QlMgfCBIQVNIX1BBUlRJVElPTiB8IEhBU0hfRklYRURfU0laRSwKKwkJKTsKIAogCS8qCiAJICog QWxsb2NhdGUgaGFzaCB0YWJsZSBmb3IgUFJFRElDQVRFTE9DSyBzdHJ1Y3RzLiAgVGhpcyBzdG9y ZXMgcGVyCiAJICogeGFjdC1sb2NrLW9mLWEtdGFyZ2V0IGluZm9ybWF0aW9uLgogCSAqLwotCWlu Zm8ua2V5c2l6ZSA9IHNpemVvZihQUkVESUNBVEVMT0NLVEFHKTsKLQlpbmZvLmVudHJ5c2l6ZSA9 IHNpemVvZihQUkVESUNBVEVMT0NLKTsKLQlpbmZvLmhhc2ggPSBwcmVkaWNhdGVsb2NrX2hhc2g7 Ci0JaW5mby5udW1fcGFydGl0aW9ucyA9IE5VTV9QUkVESUNBVEVMT0NLX1BBUlRJVElPTlM7CiAK IAkvKiBBc3N1bWUgYW4gYXZlcmFnZSBvZiAyIHhhY3RzIHBlciB0YXJnZXQgKi8KIAltYXhfcHJl ZGljYXRlX2xvY2tzID0gbWF4X3ByZWRpY2F0ZV9sb2NrX3RhcmdldHMgKiAyOwogCi0JUHJlZGlj YXRlTG9ja0hhc2ggPSBTaG1lbUluaXRIYXNoKCJQUkVESUNBVEVMT0NLIGhhc2giLAotCQkJCQkJ CQkJICBtYXhfcHJlZGljYXRlX2xvY2tzLAotCQkJCQkJCQkJICAmaW5mbywKLQkJCQkJCQkJCSAg SEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8Ci0JCQkJCQkJCQkgIEhBU0hfUEFSVElUSU9OIHwg SEFTSF9GSVhFRF9TSVpFKTsKKwlTaG1lbVJlcXVlc3RIYXNoKC5uYW1lID0gIlBSRURJQ0FURUxP Q0sgaGFzaCIsCisJCQkJCSAubmVsZW1zID0gbWF4X3ByZWRpY2F0ZV9sb2NrcywKKwkJCQkJIC5w dHIgPSAmUHJlZGljYXRlTG9ja0hhc2gsCisJCQkJCSAuaGFzaF9pbmZvLmtleXNpemUgPSBzaXpl b2YoUFJFRElDQVRFTE9DS1RBRyksCisJCQkJCSAuaGFzaF9pbmZvLmVudHJ5c2l6ZSA9IHNpemVv ZihQUkVESUNBVEVMT0NLKSwKKwkJCQkJIC5oYXNoX2luZm8uaGFzaCA9IHByZWRpY2F0ZWxvY2tf aGFzaCwKKwkJCQkJIC5oYXNoX2luZm8ubnVtX3BhcnRpdGlvbnMgPSBOVU1fUFJFRElDQVRFTE9D S19QQVJUSVRJT05TLAorCQkJCQkgLmhhc2hfZmxhZ3MgPSBIQVNIX0VMRU0gfCBIQVNIX0ZVTkNU SU9OIHwgSEFTSF9QQVJUSVRJT04gfCBIQVNIX0ZJWEVEX1NJWkUsCisJCSk7CiAKIAkvKgogCSAq IENvbXB1dGUgc2l6ZSBmb3Igc2VyaWFsaXphYmxlIHRyYW5zYWN0aW9uIGhhc2h0YWJsZS4gTm90 ZSB0aGVzZQpAQCAtMTE3NywyOSArMTE3MiwyNyBAQCBQcmVkaWNhdGVMb2NrU2htZW1Jbml0KHZv aWQpCiAJbWF4X3NlcmlhbGl6YWJsZV94YWN0cyA9IChNYXhCYWNrZW5kcyArIG1heF9wcmVwYXJl ZF94YWN0cykgKiAxMDsKIAogCS8qCi0JICogQWxsb2NhdGUgYSBsaXN0IHRvIGhvbGQgaW5mb3Jt YXRpb24gb24gdHJhbnNhY3Rpb25zIHBhcnRpY2lwYXRpbmcgaW4KKwkgKiBSZWdpc3RlciBhIGxp c3QgdG8gaG9sZCBpbmZvcm1hdGlvbiBvbiB0cmFuc2FjdGlvbnMgcGFydGljaXBhdGluZyBpbgog CSAqIHByZWRpY2F0ZSBsb2NraW5nLgogCSAqLwotCXJlcXVlc3RTaXplID0gYWRkX3NpemUoUHJl ZFhhY3RMaXN0RGF0YVNpemUsCi0JCQkJCQkgICAobXVsX3NpemUoKFNpemUpIG1heF9zZXJpYWxp emFibGVfeGFjdHMsCi0JCQkJCQkJCQkgc2l6ZW9mKFNFUklBTElaQUJMRVhBQ1QpKSkpOwotCVBy ZWRYYWN0ID0gU2htZW1Jbml0U3RydWN0KCJQcmVkWGFjdExpc3QiLAotCQkJCQkJCSAgIHJlcXVl c3RTaXplLAotCQkJCQkJCSAgICZmb3VuZCk7Ci0JQXNzZXJ0KGZvdW5kID09IElzVW5kZXJQb3N0 bWFzdGVyKTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiUHJlZFhhY3RMaXN0IiwKKwkJ CQkJICAgLnNpemUgPSBhZGRfc2l6ZShQcmVkWGFjdExpc3REYXRhU2l6ZSwKKwkJCQkJCQkJCQko bXVsX3NpemUoKFNpemUpIG1heF9zZXJpYWxpemFibGVfeGFjdHMsCisJCQkJCQkJCQkJCQkgIHNp emVvZihTRVJJQUxJWkFCTEVYQUNUKSkpKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmUHJl ZFhhY3QsCisJCSk7CiAKIAkvKgotCSAqIEFsbG9jYXRlIGhhc2ggdGFibGUgZm9yIFNFUklBTEla QUJMRVhJRCBzdHJ1Y3RzLiAgVGhpcyBzdG9yZXMgcGVyLXhpZAorCSAqIFJlZ2lzdGVyIGhhc2gg dGFibGUgZm9yIFNFUklBTElaQUJMRVhJRCBzdHJ1Y3RzLiAgVGhpcyBzdG9yZXMgcGVyLXhpZAog CSAqIGluZm9ybWF0aW9uIGZvciBzZXJpYWxpemFibGUgdHJhbnNhY3Rpb25zIHdoaWNoIGhhdmUg YWNjZXNzZWQgZGF0YS4KIAkgKi8KLQlpbmZvLmtleXNpemUgPSBzaXplb2YoU0VSSUFMSVpBQkxF WElEVEFHKTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihTRVJJQUxJWkFCTEVYSUQpOwotCi0J U2VyaWFsaXphYmxlWGlkSGFzaCA9IFNobWVtSW5pdEhhc2goIlNFUklBTElaQUJMRVhJRCBoYXNo IiwKLQkJCQkJCQkJCQltYXhfc2VyaWFsaXphYmxlX3hhY3RzLAotCQkJCQkJCQkJCSZpbmZvLAot CQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfAotCQkJCQkJCQkJCUhBU0hfRklYRURf U0laRSk7CisJU2htZW1SZXF1ZXN0SGFzaCgubmFtZSA9ICJTRVJJQUxJWkFCTEVYSUQgaGFzaCIs CisJCQkJCSAubmVsZW1zID0gbWF4X3NlcmlhbGl6YWJsZV94YWN0cywKKwkJCQkJIC5wdHIgPSAm U2VyaWFsaXphYmxlWGlkSGFzaCwKKwkJCQkJIC5oYXNoX2luZm8ua2V5c2l6ZSA9IHNpemVvZihT RVJJQUxJWkFCTEVYSURUQUcpLAorCQkJCQkgLmhhc2hfaW5mby5lbnRyeXNpemUgPSBzaXplb2Yo U0VSSUFMSVpBQkxFWElEKSwKKwkJCQkJIC5oYXNoX2ZsYWdzID0gSEFTSF9FTEVNIHwgSEFTSF9C TE9CUyB8IEhBU0hfRklYRURfU0laRSwKKwkJKTsKIAogCS8qCiAJICogQWxsb2NhdGUgc3BhY2Ug Zm9yIHRyYWNraW5nIHJ3LWNvbmZsaWN0cyBpbiBsaXN0cyBhdHRhY2hlZCB0byB0aGUKQEAgLTEy MTQsNTggKzEyMDcsNTAgQEAgUHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQogCSAqLwogCW1h eF9yd19jb25mbGljdHMgPSBtYXhfc2VyaWFsaXphYmxlX3hhY3RzICogNTsKIAotCXJlcXVlc3RT aXplID0gUldDb25mbGljdFBvb2xIZWFkZXJEYXRhU2l6ZSArCi0JCW11bF9zaXplKChTaXplKSBt YXhfcndfY29uZmxpY3RzLAotCQkJCSBSV0NvbmZsaWN0RGF0YVNpemUpOworCVNobWVtUmVxdWVz dFN0cnVjdCgubmFtZSA9ICJSV0NvbmZsaWN0UG9vbCIsCisJCQkJCSAgIC5zaXplID0gUldDb25m bGljdFBvb2xIZWFkZXJEYXRhU2l6ZSArIG11bF9zaXplKChTaXplKSBtYXhfcndfY29uZmxpY3Rz LAorCQkJCQkJCQkJCQkJCQkJCQkgICBSV0NvbmZsaWN0RGF0YVNpemUpLAorCQkJCQkgICAucHRy ID0gKHZvaWQgKiopICZSV0NvbmZsaWN0UG9vbCwKKwkJKTsKIAotCVJXQ29uZmxpY3RQb29sID0g U2htZW1Jbml0U3RydWN0KCJSV0NvbmZsaWN0UG9vbCIsCi0JCQkJCQkJCQkgcmVxdWVzdFNpemUs Ci0JCQkJCQkJCQkgJmZvdW5kKTsKLQlBc3NlcnQoZm91bmQgPT0gSXNVbmRlclBvc3RtYXN0ZXIp OwotCi0JLyoKLQkgKiBDcmVhdGUgb3IgYXR0YWNoIHRvIHRoZSBoZWFkZXIgZm9yIHRoZSBsaXN0 IG9mIGZpbmlzaGVkIHNlcmlhbGl6YWJsZQotCSAqIHRyYW5zYWN0aW9ucy4KLQkgKi8KLQlGaW5p c2hlZFNlcmlhbGl6YWJsZVRyYW5zYWN0aW9ucyA9IChkbGlzdF9oZWFkICopCi0JCVNobWVtSW5p dFN0cnVjdCgiRmluaXNoZWRTZXJpYWxpemFibGVUcmFuc2FjdGlvbnMiLAotCQkJCQkJc2l6ZW9m KGRsaXN0X2hlYWQpLAotCQkJCQkJJmZvdW5kKTsKLQlBc3NlcnQoZm91bmQgPT0gSXNVbmRlclBv c3RtYXN0ZXIpOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJGaW5pc2hlZFNlcmlhbGl6 YWJsZVRyYW5zYWN0aW9ucyIsCisJCQkJCSAgIC5zaXplID0gc2l6ZW9mKGRsaXN0X2hlYWQpLAor CQkJCQkgICAucHRyID0gKHZvaWQgKiopICZGaW5pc2hlZFNlcmlhbGl6YWJsZVRyYW5zYWN0aW9u cywKKwkJKTsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSB0aGUgU0xSVSBzdG9yYWdlIGZvciBvbGQg Y29tbWl0dGVkIHNlcmlhbGl6YWJsZQogCSAqIHRyYW5zYWN0aW9ucy4KIAkgKi8KLQlTZXJpYWxT bHJ1Q3RsLT5QYWdlUHJlY2VkZXMgPSBTZXJpYWxQYWdlUHJlY2VkZXNMb2dpY2FsbHk7Ci0JU2Vy aWFsU2xydUN0bC0+ZXJyZGV0YWlsX2Zvcl9pb19lcnJvciA9IHNlcmlhbF9lcnJkZXRhaWxfZm9y X2lvX2Vycm9yOwotCVNpbXBsZUxydUluaXQoU2VyaWFsU2xydUN0bCwgInNlcmlhbGl6YWJsZSIs Ci0JCQkJICBzZXJpYWxpemFibGVfYnVmZmVycywgMCwgInBnX3NlcmlhbCIsCi0JCQkJICBMV1RS QU5DSEVfU0VSSUFMX0JVRkZFUiwgTFdUUkFOQ0hFX1NFUklBTF9TTFJVLAotCQkJCSAgU1lOQ19I QU5ETEVSX05PTkUsIGZhbHNlKTsKKwlTaW1wbGVMcnVSZXF1ZXN0KC5kZXNjID0gJlNlcmlhbFNs cnVEZXNjLAorCQkJCQkgLm5hbWUgPSAic2VyaWFsaXphYmxlIiwKKwkJCQkJIC5EaXIgPSAicGdf c2VyaWFsIiwKKwkJCQkJIC5sb25nX3NlZ21lbnRfbmFtZXMgPSBmYWxzZSwKKworCQkJCQkgLm5z bG90cyA9IHNlcmlhbGl6YWJsZV9idWZmZXJzLAorCisJCQkJCSAuc3luY19oYW5kbGVyID0gU1lO Q19IQU5ETEVSX05PTkUsCisJCQkJCSAuUGFnZVByZWNlZGVzID0gU2VyaWFsUGFnZVByZWNlZGVz TG9naWNhbGx5LAorCQkJCQkgLmVycmRldGFpbF9mb3JfaW9fZXJyb3IgPSBzZXJpYWxfZXJyZGV0 YWlsX2Zvcl9pb19lcnJvciwKKworCQkJCQkgLmJ1ZmZlcl90cmFuY2hlX2lkID0gTFdUUkFOQ0hF X1NFUklBTF9CVUZGRVIsCisJCQkJCSAuYmFua190cmFuY2hlX2lkID0gTFdUUkFOQ0hFX1NFUklB TF9TTFJVLAorCQkpOwogI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKIAlTZXJpYWxQYWdlUHJl Y2VkZXNMb2dpY2FsbHlVbml0VGVzdHMoKTsKICNlbmRpZgotCVNscnVQYWdlUHJlY2VkZXNVbml0 VGVzdHMoU2VyaWFsU2xydUN0bCwgU0VSSUFMX0VOVFJJRVNQRVJQQUdFKTsKIAotCS8qCi0JICog Q3JlYXRlIG9yIGF0dGFjaCB0byB0aGUgU2VyaWFsQ29udHJvbCBzdHJ1Y3R1cmUuCi0JICovCi0J c2VyaWFsQ29udHJvbCA9IChTZXJpYWxDb250cm9sKQotCQlTaG1lbUluaXRTdHJ1Y3QoIlNlcmlh bENvbnRyb2xEYXRhIiwgc2l6ZW9mKFNlcmlhbENvbnRyb2xEYXRhKSwgJmZvdW5kKTsKLQlBc3Nl cnQoZm91bmQgPT0gSXNVbmRlclBvc3RtYXN0ZXIpOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFt ZSA9ICJTZXJpYWxDb250cm9sRGF0YSIsCisJCQkJCSAgIC5zaXplID0gc2l6ZW9mKFNlcmlhbENv bnRyb2xEYXRhKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmc2VyaWFsQ29udHJvbCwKKwkJ KTsKK30KIAotCS8qCi0JICogSWYgd2UganVzdCBhdHRhY2hlZCB0byBleGlzdGluZyBzaGFyZWQg bWVtb3J5IChFWEVDX0JBQ0tFTkQpLCB3ZSdyZSBhbGwKLQkgKiBkb25lLiAgT3RoZXJ3aXNlLCBk dXJpbmcgcG9zdG1hc3RlciBzdGFydHVwIHByb2NlZWQgdG8gaW5pdGlhbGl6ZSB0aGUKLQkgKiBz aGFyZWQgbWVtb3J5LgotCSAqLwotCWlmIChJc1VuZGVyUG9zdG1hc3RlcikKLQl7Ci0JCS8qIFRo aXMgbmV2ZXIgY2hhbmdlcywgc28gbGV0J3Mga2VlcCBhIGxvY2FsIGNvcHkuICovCi0JCU9sZENv bW1pdHRlZFN4YWN0ID0gUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0OwotCQlyZXR1cm47Ci0J fQorc3RhdGljIHZvaWQKK1ByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCAqYXJnKQoreworCWlu dAkJCW1heF9yd19jb25mbGljdHM7CisJYm9vbAkJZm91bmQ7CiAKIAkvKgogCSAqIFJlc2VydmUg YSBkdW1teSBlbnRyeSBpbiB0aGUgaGFzaCB0YWJsZTsgd2UgdXNlIGl0IHRvIG1ha2Ugc3VyZSB0 aGVyZSdzCkBAIC0xMjc3LDcgKzEyNjIsNiBAQCBQcmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQp CiAJCQkJCSAgIEhBU0hfRU5URVIsICZmb3VuZCk7CiAJQXNzZXJ0KCFmb3VuZCk7CiAKLQkvKiBJ bml0aWFsaXplIFByZWRYYWN0IGxpc3QgKi8KIAlkbGlzdF9pbml0KCZQcmVkWGFjdC0+YXZhaWxh YmxlTGlzdCk7CiAJZGxpc3RfaW5pdCgmUHJlZFhhY3QtPmFjdGl2ZUxpc3QpOwogCVByZWRYYWN0 LT5TeGFjdEdsb2JhbFhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKQEAgLTEzMTksNiArMTMw Myw5IEBAIFByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCkKIAlkbGlzdF9pbml0KCZSV0NvbmZs aWN0UG9vbC0+YXZhaWxhYmxlTGlzdCk7CiAJUldDb25mbGljdFBvb2wtPmVsZW1lbnQgPSAoUldD b25mbGljdCkgKChjaGFyICopIFJXQ29uZmxpY3RQb29sICsKIAkJCQkJCQkJCQkJUldDb25mbGlj dFBvb2xIZWFkZXJEYXRhU2l6ZSk7CisKKwltYXhfcndfY29uZmxpY3RzID0gbWF4X3NlcmlhbGl6 YWJsZV94YWN0cyAqIDU7CisKIAkvKiBBZGQgYWxsIGVsZW1lbnRzIHRvIGF2YWlsYWJsZSBsaXN0 LCBjbGVhbi4gKi8KIAlmb3IgKGludCBpID0gMDsgaSA8IG1heF9yd19jb25mbGljdHM7IGkrKykK IAl7CkBAIC0xMzM1LDU3ICsxMzIyLDI4IEBAIFByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCkK IAlzZXJpYWxDb250cm9sLT5oZWFkWGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJc2VyaWFs Q29udHJvbC0+dGFpbFhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCUxXTG9ja1JlbGVhc2Uo U2VyaWFsQ29udHJvbExvY2spOwotfQotCi0vKgotICogRXN0aW1hdGUgc2hhcmVkLW1lbW9yeSBz cGFjZSB1c2VkIGZvciBwcmVkaWNhdGUgbG9jayB0YWJsZQotICovCi1TaXplCi1QcmVkaWNhdGVM b2NrU2htZW1TaXplKHZvaWQpCi17Ci0JU2l6ZQkJc2l6ZSA9IDA7Ci0JaW50NjQJCW1heF9wcmVk aWNhdGVfbG9ja190YXJnZXRzOwotCWludDY0CQltYXhfcHJlZGljYXRlX2xvY2tzOwotCWludDY0 CQltYXhfc2VyaWFsaXphYmxlX3hhY3RzOwotCWludDY0CQltYXhfcndfY29uZmxpY3RzOwotCi0J LyogcHJlZGljYXRlIGxvY2sgdGFyZ2V0IGhhc2ggdGFibGUgKi8KLQltYXhfcHJlZGljYXRlX2xv Y2tfdGFyZ2V0cyA9IE5QUkVESUNBVEVMT0NLVEFSR0VURU5UUygpOwotCXNpemUgPSBhZGRfc2l6 ZShzaXplLCBoYXNoX2VzdGltYXRlX3NpemUobWF4X3ByZWRpY2F0ZV9sb2NrX3RhcmdldHMsCi0J CQkJCQkJCQkJCSBzaXplb2YoUFJFRElDQVRFTE9DS1RBUkdFVCkpKTsKLQotCS8qIHByZWRpY2F0 ZSBsb2NrIGhhc2ggdGFibGUgKi8KLQltYXhfcHJlZGljYXRlX2xvY2tzID0gbWF4X3ByZWRpY2F0 ZV9sb2NrX3RhcmdldHMgKiAyOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBoYXNoX2VzdGltYXRl X3NpemUobWF4X3ByZWRpY2F0ZV9sb2NrcywKLQkJCQkJCQkJCQkJIHNpemVvZihQUkVESUNBVEVM T0NLKSkpOwotCi0JLyogdHJhbnNhY3Rpb24gbGlzdCAqLwotCW1heF9zZXJpYWxpemFibGVfeGFj dHMgPSAoTWF4QmFja2VuZHMgKyBtYXhfcHJlcGFyZWRfeGFjdHMpICogMTA7Ci0Jc2l6ZSA9IGFk ZF9zaXplKHNpemUsIFByZWRYYWN0TGlzdERhdGFTaXplKTsKLQlzaXplID0gYWRkX3NpemUoc2l6 ZSwgbXVsX3NpemUoKFNpemUpIG1heF9zZXJpYWxpemFibGVfeGFjdHMsCi0JCQkJCQkJCSAgIHNp emVvZihTRVJJQUxJWkFCTEVYQUNUKSkpOwogCi0JLyogdHJhbnNhY3Rpb24geGlkIHRhYmxlICov Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIGhhc2hfZXN0aW1hdGVfc2l6ZShtYXhfc2VyaWFsaXph YmxlX3hhY3RzLAotCQkJCQkJCQkJCQkgc2l6ZW9mKFNFUklBTElaQUJMRVhJRCkpKTsKKwkvKiBU aGlzIG5ldmVyIGNoYW5nZXMsIHNvIGxldCdzIGtlZXAgYSBsb2NhbCBjb3B5LiAqLworCU9sZENv bW1pdHRlZFN4YWN0ID0gUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0OwogCi0JLyogcnctY29u ZmxpY3QgcG9vbCAqLwotCW1heF9yd19jb25mbGljdHMgPSBtYXhfc2VyaWFsaXphYmxlX3hhY3Rz ICogNTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgUldDb25mbGljdFBvb2xIZWFkZXJEYXRhU2l6 ZSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKChTaXplKSBtYXhfcndfY29uZmxp Y3RzLAotCQkJCQkJCQkgICBSV0NvbmZsaWN0RGF0YVNpemUpKTsKKwkvKiBQcmUtY2FsY3VsYXRl IHRoZSBoYXNoIGFuZCBwYXJ0aXRpb24gbG9jayBvZiB0aGUgc2NyYXRjaCBlbnRyeSAqLworCVNj cmF0Y2hUYXJnZXRUYWdIYXNoID0gUHJlZGljYXRlTG9ja1RhcmdldFRhZ0hhc2hDb2RlKCZTY3Jh dGNoVGFyZ2V0VGFnKTsKKwlTY3JhdGNoUGFydGl0aW9uTG9jayA9IFByZWRpY2F0ZUxvY2tIYXNo UGFydGl0aW9uTG9jayhTY3JhdGNoVGFyZ2V0VGFnSGFzaCk7CiAKLQkvKiBIZWFkIGZvciBsaXN0 IG9mIGZpbmlzaGVkIHNlcmlhbGl6YWJsZSB0cmFuc2FjdGlvbnMuICovCi0Jc2l6ZSA9IGFkZF9z aXplKHNpemUsIHNpemVvZihkbGlzdF9oZWFkKSk7CisJU2xydVBhZ2VQcmVjZWRlc1VuaXRUZXN0 cyhTZXJpYWxTbHJ1Q3RsLCBTRVJJQUxfRU5UUklFU1BFUlBBR0UpOworfQogCi0JLyogU2hhcmVk IG1lbW9yeSBzdHJ1Y3R1cmVzIGZvciBTTFJVIHRyYWNraW5nIG9mIG9sZCBjb21taXR0ZWQgeGlk cy4gKi8KLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgc2l6ZW9mKFNlcmlhbENvbnRyb2xEYXRhKSk7 Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNpbXBsZUxydVNobWVtU2l6ZShzZXJpYWxpemFibGVf YnVmZmVycywgMCkpOworc3RhdGljIHZvaWQKK1ByZWRpY2F0ZUxvY2tTaG1lbUF0dGFjaCh2b2lk ICphcmcpCit7CisJLyogVGhpcyBuZXZlciBjaGFuZ2VzLCBzbyBsZXQncyBrZWVwIGEgbG9jYWwg Y29weS4gKi8KKwlPbGRDb21taXR0ZWRTeGFjdCA9IFByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFj dDsKIAotCXJldHVybiBzaXplOworCS8qIFByZS1jYWxjdWxhdGUgdGhlIGhhc2ggYW5kIHBhcnRp dGlvbiBsb2NrIG9mIHRoZSBzY3JhdGNoIGVudHJ5ICovCisJU2NyYXRjaFRhcmdldFRhZ0hhc2gg PSBQcmVkaWNhdGVMb2NrVGFyZ2V0VGFnSGFzaENvZGUoJlNjcmF0Y2hUYXJnZXRUYWcpOworCVNj cmF0Y2hQYXJ0aXRpb25Mb2NrID0gUHJlZGljYXRlTG9ja0hhc2hQYXJ0aXRpb25Mb2NrKFNjcmF0 Y2hUYXJnZXRUYWdIYXNoKTsKIH0KIAotCiAvKgogICogQ29tcHV0ZSB0aGUgaGFzaCBjb2RlIGFz c29jaWF0ZWQgd2l0aCBhIFBSRURJQ0FURUxPQ0tUQUcuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3NscnUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3Bnc3RhdF9zbHJ1LmMKaW5kZXggMjE5MGYzODhlYWUuLmY0ZGZlODY5N2Q3IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfc2xydS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9zbHJ1LmMKQEAgLTExOSw2ICsxMTksNyBA QCBwZ3N0YXRfZ2V0X3NscnVfaW5kZXgoY29uc3QgY2hhciAqbmFtZSkKIHsKIAlpbnQJCQlpOwog CisJQXNzZXJ0KG5hbWUpOwogCWZvciAoaSA9IDA7IGkgPCBTTFJVX05VTV9FTEVNRU5UUzsgaSsr KQogCXsKIAkJaWYgKHN0cmNtcChzbHJ1X25hbWVzW2ldLCBuYW1lKSA9PSAwKQpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2Nsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9jbG9nLmgK aW5kZXggYTFjZmVkNWY0M2MuLjc4OTQ5OThjNzYzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvY2xvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9jbG9nLmgKQEAgLTQwLDggKzQw LDYgQEAgZXh0ZXJuIHZvaWQgVHJhbnNhY3Rpb25JZFNldFRyZWVTdGF0dXMoVHJhbnNhY3Rpb25J ZCB4aWQsIGludCBuc3VieGlkcywKIAkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKnN1YnhpZHMs IFhpZFN0YXR1cyBzdGF0dXMsIFhMb2dSZWNQdHIgbHNuKTsKIGV4dGVybiBYaWRTdGF0dXMgVHJh bnNhY3Rpb25JZEdldFN0YXR1cyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciAqbHNuKTsK IAotZXh0ZXJuIFNpemUgQ0xPR1NobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIENMT0dTaG1l bUluaXQodm9pZCk7CiBleHRlcm4gdm9pZCBCb290U3RyYXBDTE9HKHZvaWQpOwogZXh0ZXJuIHZv aWQgU3RhcnR1cENMT0codm9pZCk7CiBleHRlcm4gdm9pZCBUcmltQ0xPRyh2b2lkKTsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9jb21taXRfdHMuaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9jb21taXRfdHMuaAppbmRleCA0OWVlMjFjZDVkMi4uODI1Y2NkYTkwZWQgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9jb21taXRfdHMuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv Y29tbWl0X3RzLmgKQEAgLTI3LDggKzI3LDYgQEAgZXh0ZXJuIGJvb2wgVHJhbnNhY3Rpb25JZEdl dENvbW1pdFRzRGF0YShUcmFuc2FjdGlvbklkIHhpZCwKIGV4dGVybiBUcmFuc2FjdGlvbklkIEdl dExhdGVzdENvbW1pdFRzRGF0YShUaW1lc3RhbXBUeiAqdHMsCiAJCQkJCQkJCQkJICAgUmVwbE9y aWdpbklkICpub2RlaWQpOwogCi1leHRlcm4gU2l6ZSBDb21taXRUc1NobWVtU2l6ZSh2b2lkKTsK LWV4dGVybiB2b2lkIENvbW1pdFRzU2htZW1Jbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgQm9vdFN0 cmFwQ29tbWl0VHModm9pZCk7CiBleHRlcm4gdm9pZCBTdGFydHVwQ29tbWl0VHModm9pZCk7CiBl eHRlcm4gdm9pZCBDb21taXRUc1BhcmFtZXRlckNoYW5nZShib29sIG5ld3ZhbHVlLCBib29sIG9s ZHZhbHVlKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaCBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaAppbmRleCAyYWU4YjU3MWRjYy4uNmJlNTI5OWFi NjggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaAorKysgYi9zcmMv aW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0LmgKQEAgLTEyMSw4ICsxMjEsNiBAQCBleHRlcm4gdm9p ZCBBdEVPWGFjdF9NdWx0aVhhY3Qodm9pZCk7CiBleHRlcm4gdm9pZCBBdFByZXBhcmVfTXVsdGlY YWN0KHZvaWQpOwogZXh0ZXJuIHZvaWQgUG9zdFByZXBhcmVfTXVsdGlYYWN0KEZ1bGxUcmFuc2Fj dGlvbklkIGZ4aWQpOwogCi1leHRlcm4gU2l6ZSBNdWx0aVhhY3RTaG1lbVNpemUodm9pZCk7Ci1l eHRlcm4gdm9pZCBNdWx0aVhhY3RTaG1lbUluaXQodm9pZCk7CiBleHRlcm4gdm9pZCBCb290U3Ry YXBNdWx0aVhhY3Qodm9pZCk7CiBleHRlcm4gdm9pZCBTdGFydHVwTXVsdGlYYWN0KHZvaWQpOwog ZXh0ZXJuIHZvaWQgVHJpbU11bHRpWGFjdCh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9zbHJ1LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5oCmluZGV4IGY5NjZkMGQ5 ZmU3Li4zNmE3NTE0ZDdhMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3NscnUuaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5oCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVk ZSAiYWNjZXNzL3RyYW5zYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKICNpbmNs dWRlICJzdG9yYWdlL2x3bG9jay5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKICNpbmNs dWRlICJzdG9yYWdlL3N5bmMuaCIKIAogLyoKQEAgLTEwNiwyMyArMTA3LDI4IEBAIHR5cGVkZWYg c3RydWN0IFNscnVTaGFyZWREYXRhCiAKIHR5cGVkZWYgU2xydVNoYXJlZERhdGEgKlNscnVTaGFy ZWQ7CiAKLS8qCi0gKiBTbHJ1Q3RsRGF0YSBpcyBhbiB1bnNoYXJlZCBzdHJ1Y3R1cmUgdGhhdCBw b2ludHMgdG8gdGhlIGFjdGl2ZSBpbmZvcm1hdGlvbgotICogaW4gc2hhcmVkIG1lbW9yeS4KLSAq LwotdHlwZWRlZiBzdHJ1Y3QgU2xydUN0bERhdGEKK3R5cGVkZWYgc3RydWN0IFNscnVEZXNjIFNs cnVEZXNjOworCit0eXBlZGVmIHN0cnVjdCBTbHJ1T3B0cwogewotCVNscnVTaGFyZWQJc2hhcmVk OworCVNobWVtU3RydWN0T3B0cyBiYXNlOwogCi0JLyogTnVtYmVyIG9mIGJhbmtzIGluIHRoaXMg U0xSVS4gKi8KLQl1aW50MTYJCW5iYW5rczsKKwkvKgorCSAqIG5hbWUgb2YgU0xSVS4gIChUaGlz IGlzIHVzZXItdmlzaWJsZSwgcGljayB3aXRoIGNhcmUhKQorCSAqLworCWNvbnN0IGNoYXIgKm5h bWU7CiAKIAkvKgotCSAqIElmIHRydWUsIHVzZSBsb25nIHNlZ21lbnQgZmlsZSBuYW1lcy4gIE90 aGVyd2lzZSwgdXNlIHNob3J0IGZpbGUgbmFtZXMuCi0JICoKLQkgKiBGb3IgZGV0YWlscyBhYm91 dCB0aGUgZmlsZSBuYW1lIGZvcm1hdCwgc2VlIFNscnVGaWxlTmFtZSgpLgorCSAqIFBvaW50ZXIg dG8gYSBiYWNrZW5kLXByaXZhdGUgaGFuZGxlIGZvciB0aGUgU0xSVS4gIEl0IGlzIGluaXRpYWxp emVkIGluCisJICogd2hlbiB0aGUgU0xSVSBpcyBpbml0aWFsaXplZCBvciBhdHRhY2hlZCB0by4K IAkgKi8KLQlib29sCQlsb25nX3NlZ21lbnRfbmFtZXM7CisJU2xydURlc2MgICAqZGVzYzsKKwor CS8qIG51bWJlciBvZiBwYWdlIHNsb3RzIHRvIHVzZS4gKi8KKwlpbnQJCQluc2xvdHM7CisKKwkv KiBudW1iZXIgb2YgTFNOIGdyb3VwcyBwZXIgcGFnZSAoc2V0IHRvIHplcm8gaWYgbm90IHJlbGV2 YW50KS4gKi8KKwlpbnQJCQlubHNuczsKIAogCS8qCiAJICogV2hpY2ggc3luYyBoYW5kbGVyIGZ1 bmN0aW9uIHRvIHVzZSB3aGVuIGhhbmRpbmcgc3luYyByZXF1ZXN0cyBvdmVyIHRvCkBAIC0xMzAs NiArMTM2LDE5IEBAIHR5cGVkZWYgc3RydWN0IFNscnVDdGxEYXRhCiAJICovCiAJU3luY1JlcXVl c3RIYW5kbGVyIHN5bmNfaGFuZGxlcjsKIAorCS8qCisJICogUEdEQVRBLXJlbGF0aXZlIHN1YmRp cmVjdG9yeSB0aGF0IHdpbGwgY29udGFpbiB0aGUgZmlsZXMuCisJICovCisJY29uc3QgY2hhciAq RGlyOworCisJLyoKKwkgKiBJZiB0cnVlLCB1c2UgbG9uZyBzZWdtZW50IGZpbGUgbmFtZXMuICBP dGhlcndpc2UsIHVzZSBzaG9ydCBmaWxlIG5hbWVzLgorCSAqCisJICogRm9yIGRldGFpbHMgYWJv dXQgdGhlIGZpbGUgbmFtZSBmb3JtYXQsIHNlZSBTbHJ1RmlsZU5hbWUoKS4KKwkgKi8KKwlib29s CQlsb25nX3NlZ21lbnRfbmFtZXM7CisKKwogCS8qCiAJICogRGVjaWRlIHdoZXRoZXIgYSBwYWdl IGlzICJvbGRlciIgZm9yIHRydW5jYXRpb24gYW5kIGFzIGEgaGludCBmb3IKIAkgKiBldmljdGlu ZyBwYWdlcyBpbiBMUlUgb3JkZXIuICBSZXR1cm4gdHJ1ZSBpZiBldmVyeSBlbnRyeSBvZiB0aGUg Zmlyc3QKQEAgLTE1MywxMyArMTcyLDI2IEBAIHR5cGVkZWYgc3RydWN0IFNscnVDdGxEYXRhCiAJ aW50CQkJKCplcnJkZXRhaWxfZm9yX2lvX2Vycm9yKSAoY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEp OwogCiAJLyoKLQkgKiBEaXIgaXMgc2V0IGR1cmluZyBTaW1wbGVMcnVJbml0IGFuZCBkb2VzIG5v dCBjaGFuZ2UgdGhlcmVhZnRlci4gU2luY2UKLQkgKiBpdCdzIGFsd2F5cyB0aGUgc2FtZSwgaXQg ZG9lc24ndCBuZWVkIHRvIGJlIGluIHNoYXJlZCBtZW1vcnkuCisJICogVHJhbmNoZSBJRHMgdG8g dXNlIGZvciB0aGUgU0xSVSdzIHBlci1idWZmZXIgYW5kIHBlci1iYW5rIExXTG9ja3MuICBJZgor CSAqIHRoZXNlIGFyZSBsZWZ0IGFzIHplcm9zLCBuZXcgdHJhbmNoZXMgd2lsbCBiZSBhc3NpZ25l ZCBkeW5hbWljYWxseS4KIAkgKi8KLQljaGFyCQlEaXJbNjRdOwotfSBTbHJ1Q3RsRGF0YTsKKwlp bnQJCQlidWZmZXJfdHJhbmNoZV9pZDsKKwlpbnQJCQliYW5rX3RyYW5jaGVfaWQ7Cit9IFNscnVP cHRzOwogCi10eXBlZGVmIFNscnVDdGxEYXRhICpTbHJ1Q3RsOworLyoKKyAqIFNscnVEZXNjIGlz IGFuIHVuc2hhcmVkIHN0cnVjdHVyZSB0aGF0IHBvaW50cyB0byB0aGUgYWN0aXZlIGluZm9ybWF0 aW9uCisgKiBpbiBzaGFyZWQgbWVtb3J5LgorICovCit0eXBlZGVmIHN0cnVjdCBTbHJ1RGVzYwor eworCVNscnVPcHRzCW9wdGlvbnM7CisKKwlTbHJ1U2hhcmVkCXNoYXJlZDsKKworCS8qIE51bWJl ciBvZiBiYW5rcyBpbiB0aGlzIFNMUlUuICovCisJdWludDE2CQluYmFua3M7Cit9IFNscnVEZXNj OwogCiAvKgogICogR2V0IHRoZSBTTFJVIGJhbmsgbG9jayBmb3IgZ2l2ZW4gU2xydUN0bCBhbmQg dGhlIHBhZ2Vuby4KQEAgLTE2OCw0OCArMjAwLDUyIEBAIHR5cGVkZWYgU2xydUN0bERhdGEgKlNs cnVDdGw7CiAgKiByZXNwZWN0aXZlIGJhbmsuCiAgKi8KIHN0YXRpYyBpbmxpbmUgTFdMb2NrICoK LVNpbXBsZUxydUdldEJhbmtMb2NrKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8pCitTaW1wbGVM cnVHZXRCYW5rTG9jayhTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8pCiB7CiAJaW50CQkJYmFu a25vOwogCisJQXNzZXJ0KGN0bC0+bmJhbmtzICE9IDApOwogCWJhbmtubyA9IHBhZ2VubyAlIGN0 bC0+bmJhbmtzOwogCXJldHVybiAmKGN0bC0+c2hhcmVkLT5iYW5rX2xvY2tzW2Jhbmtub10ubG9j ayk7CiB9CiAKLWV4dGVybiBTaXplIFNpbXBsZUxydVNobWVtU2l6ZShpbnQgbnNsb3RzLCBpbnQg bmxzbnMpOworZXh0ZXJuIHZvaWQgU2ltcGxlTHJ1UmVxdWVzdFdpdGhPcHRzKGNvbnN0IFNscnVP cHRzICpvcHRpb25zKTsKKworI2RlZmluZSBTaW1wbGVMcnVSZXF1ZXN0KC4uLikgIFwKKwlTaW1w bGVMcnVSZXF1ZXN0V2l0aE9wdHMoJihTbHJ1T3B0cyl7X19WQV9BUkdTX199KQorCiBleHRlcm4g aW50CVNpbXBsZUxydUF1dG90dW5lQnVmZmVycyhpbnQgZGl2aXNvciwgaW50IG1heCk7Ci1leHRl cm4gdm9pZCBTaW1wbGVMcnVJbml0KFNscnVDdGwgY3RsLCBjb25zdCBjaGFyICpuYW1lLCBpbnQg bnNsb3RzLCBpbnQgbmxzbnMsCi0JCQkJCQkgIGNvbnN0IGNoYXIgKnN1YmRpciwgaW50IGJ1ZmZl cl90cmFuY2hlX2lkLAotCQkJCQkJICBpbnQgYmFua190cmFuY2hlX2lkLCBTeW5jUmVxdWVzdEhh bmRsZXIgc3luY19oYW5kbGVyLAotCQkJCQkJICBib29sIGxvbmdfc2VnbWVudF9uYW1lcyk7Ci1l eHRlcm4gaW50CVNpbXBsZUxydVplcm9QYWdlKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8pOwot ZXh0ZXJuIHZvaWQgU2ltcGxlTHJ1WmVyb0FuZFdyaXRlUGFnZShTbHJ1Q3RsIGN0bCwgaW50NjQg cGFnZW5vKTsKLWV4dGVybiBpbnQJU2ltcGxlTHJ1UmVhZFBhZ2UoU2xydUN0bCBjdGwsIGludDY0 IHBhZ2VubywgYm9vbCB3cml0ZV9vaywKK2V4dGVybiBpbnQJU2ltcGxlTHJ1WmVyb1BhZ2UoU2xy dURlc2MgKmN0bCwgaW50NjQgcGFnZW5vKTsKK2V4dGVybiB2b2lkIFNpbXBsZUxydVplcm9BbmRX cml0ZVBhZ2UoU2xydURlc2MgKmN0bCwgaW50NjQgcGFnZW5vKTsKK2V4dGVybiBpbnQJU2ltcGxl THJ1UmVhZFBhZ2UoU2xydURlc2MgKmN0bCwgaW50NjQgcGFnZW5vLCBib29sIHdyaXRlX29rLAog CQkJCQkJCSAgY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEpOwotZXh0ZXJuIGludAlTaW1wbGVMcnVS ZWFkUGFnZV9SZWFkT25seShTbHJ1Q3RsIGN0bCwgaW50NjQgcGFnZW5vLAorZXh0ZXJuIGludAlT aW1wbGVMcnVSZWFkUGFnZV9SZWFkT25seShTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8sCiAJ CQkJCQkJCQkgICBjb25zdCB2b2lkICpvcGFxdWVfZGF0YSk7Ci1leHRlcm4gdm9pZCBTaW1wbGVM cnVXcml0ZVBhZ2UoU2xydUN0bCBjdGwsIGludCBzbG90bm8pOwotZXh0ZXJuIHZvaWQgU2ltcGxl THJ1V3JpdGVBbGwoU2xydUN0bCBjdGwsIGJvb2wgYWxsb3dfcmVkaXJ0aWVkKTsKK2V4dGVybiB2 b2lkIFNpbXBsZUxydVdyaXRlUGFnZShTbHJ1RGVzYyAqY3RsLCBpbnQgc2xvdG5vKTsKK2V4dGVy biB2b2lkIFNpbXBsZUxydVdyaXRlQWxsKFNscnVEZXNjICpjdGwsIGJvb2wgYWxsb3dfcmVkaXJ0 aWVkKTsKICNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCi1leHRlcm4gdm9pZCBTbHJ1UGFnZVBy ZWNlZGVzVW5pdFRlc3RzKFNscnVDdGwgY3RsLCBpbnQgcGVyX3BhZ2UpOworZXh0ZXJuIHZvaWQg U2xydVBhZ2VQcmVjZWRlc1VuaXRUZXN0cyhTbHJ1RGVzYyAqY3RsLCBpbnQgcGVyX3BhZ2UpOwog I2Vsc2UKICNkZWZpbmUgU2xydVBhZ2VQcmVjZWRlc1VuaXRUZXN0cyhjdGwsIHBlcl9wYWdlKSBk byB7fSB3aGlsZSAoMCkKICNlbmRpZgotZXh0ZXJuIHZvaWQgU2ltcGxlTHJ1VHJ1bmNhdGUoU2xy dUN0bCBjdGwsIGludDY0IGN1dG9mZlBhZ2UpOwotZXh0ZXJuIGJvb2wgU2ltcGxlTHJ1RG9lc1Bo eXNpY2FsUGFnZUV4aXN0KFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8pOworZXh0ZXJuIHZvaWQg U2ltcGxlTHJ1VHJ1bmNhdGUoU2xydURlc2MgKmN0bCwgaW50NjQgY3V0b2ZmUGFnZSk7CitleHRl cm4gYm9vbCBTaW1wbGVMcnVEb2VzUGh5c2ljYWxQYWdlRXhpc3QoU2xydURlc2MgKmN0bCwgaW50 NjQgcGFnZW5vKTsKIAotdHlwZWRlZiBib29sICgqU2xydVNjYW5DYWxsYmFjaykgKFNscnVDdGwg Y3RsLCBjaGFyICpmaWxlbmFtZSwgaW50NjQgc2VncGFnZSwKK3R5cGVkZWYgYm9vbCAoKlNscnVT Y2FuQ2FsbGJhY2spIChTbHJ1RGVzYyAqY3RsLCBjaGFyICpmaWxlbmFtZSwgaW50NjQgc2VncGFn ZSwKIAkJCQkJCQkJICB2b2lkICpkYXRhKTsKLWV4dGVybiBib29sIFNscnVTY2FuRGlyZWN0b3J5 KFNscnVDdGwgY3RsLCBTbHJ1U2NhbkNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkICpkYXRhKTsKLWV4 dGVybiB2b2lkIFNscnVEZWxldGVTZWdtZW50KFNscnVDdGwgY3RsLCBpbnQ2NCBzZWdubyk7Citl eHRlcm4gYm9vbCBTbHJ1U2NhbkRpcmVjdG9yeShTbHJ1RGVzYyAqY3RsLCBTbHJ1U2NhbkNhbGxi YWNrIGNhbGxiYWNrLCB2b2lkICpkYXRhKTsKK2V4dGVybiB2b2lkIFNscnVEZWxldGVTZWdtZW50 KFNscnVEZXNjICpjdGwsIGludDY0IHNlZ25vKTsKIAotZXh0ZXJuIGludAlTbHJ1U3luY0ZpbGVU YWcoU2xydUN0bCBjdGwsIGNvbnN0IEZpbGVUYWcgKmZ0YWcsIGNoYXIgKnBhdGgpOworZXh0ZXJu IGludAlTbHJ1U3luY0ZpbGVUYWcoU2xydURlc2MgKmN0bCwgY29uc3QgRmlsZVRhZyAqZnRhZywg Y2hhciAqcGF0aCk7CiAKIC8qIFNscnVTY2FuRGlyZWN0b3J5IHB1YmxpYyBjYWxsYmFja3MgKi8K LWV4dGVybiBib29sIFNscnVTY2FuRGlyQ2JSZXBvcnRQcmVzZW5jZShTbHJ1Q3RsIGN0bCwgY2hh ciAqZmlsZW5hbWUsCitleHRlcm4gYm9vbCBTbHJ1U2NhbkRpckNiUmVwb3J0UHJlc2VuY2UoU2xy dURlc2MgKmN0bCwgY2hhciAqZmlsZW5hbWUsCiAJCQkJCQkJCQkJaW50NjQgc2VncGFnZSwgdm9p ZCAqZGF0YSk7Ci1leHRlcm4gYm9vbCBTbHJ1U2NhbkRpckNiRGVsZXRlQWxsKFNscnVDdGwgY3Rs LCBjaGFyICpmaWxlbmFtZSwgaW50NjQgc2VncGFnZSwKK2V4dGVybiBib29sIFNscnVTY2FuRGly Q2JEZWxldGVBbGwoU2xydURlc2MgKmN0bCwgY2hhciAqZmlsZW5hbWUsIGludDY0IHNlZ3BhZ2Us CiAJCQkJCQkJCSAgIHZvaWQgKmRhdGEpOwogZXh0ZXJuIGJvb2wgY2hlY2tfc2xydV9idWZmZXJz KGNvbnN0IGNoYXIgKm5hbWUsIGludCAqbmV3dmFsKTsKIAorZXh0ZXJuIHZvaWQgc2htZW1fc2xy dV9pbml0KHZvaWQgKmxvY2F0aW9uLCBTaG1lbVN0cnVjdE9wdHMgKm9wdGlvbnMpOworZXh0ZXJu IHZvaWQgc2htZW1fc2xydV9hdHRhY2godm9pZCAqbG9jYXRpb24sIFNobWVtU3RydWN0T3B0cyAq b3B0aW9ucyk7CisKICNlbmRpZgkJCQkJCQkvKiBTTFJVX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2FjY2Vzcy9zdWJ0cmFucy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3N1YnRyYW5zLmgK aW5kZXggMTFiNzM1NWRiZGYuLmQ5ODZjZDllODAyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3Mvc3VidHJhbnMuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3VidHJhbnMuaApAQCAt MTUsOCArMTUsNiBAQCBleHRlcm4gdm9pZCBTdWJUcmFuc1NldFBhcmVudChUcmFuc2FjdGlvbklk IHhpZCwgVHJhbnNhY3Rpb25JZCBwYXJlbnQpOwogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgU3ViVHJh bnNHZXRQYXJlbnQoVHJhbnNhY3Rpb25JZCB4aWQpOwogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgU3Vi VHJhbnNHZXRUb3Btb3N0VHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQpOwogCi1leHRlcm4g U2l6ZSBTVUJUUkFOU1NobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFNVQlRSQU5TU2htZW1J bml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgQm9vdFN0cmFwU1VCVFJBTlModm9pZCk7CiBleHRlcm4g dm9pZCBTdGFydHVwU1VCVFJBTlMoVHJhbnNhY3Rpb25JZCBvbGRlc3RBY3RpdmVYSUQpOwogZXh0 ZXJuIHZvaWQgQ2hlY2tQb2ludFNVQlRSQU5TKHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY29tbWFuZHMvYXN5bmMuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2FzeW5jLmgKaW5kZXgg M2JhYWU3Y2I4ZGMuLjIwMmU0YWE1ZTc0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5k cy9hc3luYy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2FzeW5jLmgKQEAgLTE5LDkgKzE5 LDYgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgVHJhY2Vfbm90aWZ5OwogZXh0ZXJuIFBHRExM SU1QT1JUIGludCBtYXhfbm90aWZ5X3F1ZXVlX3BhZ2VzOwogZXh0ZXJuIFBHRExMSU1QT1JUIHZv bGF0aWxlIHNpZ19hdG9taWNfdCBub3RpZnlJbnRlcnJ1cHRQZW5kaW5nOwogCi1leHRlcm4gU2l6 ZSBBc3luY1NobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIEFzeW5jU2htZW1Jbml0KHZvaWQp OwotCiBleHRlcm4gdm9pZCBOb3RpZnlNeUZyb250RW5kKGNvbnN0IGNoYXIgKmNoYW5uZWwsCiAJ CQkJCQkJIGNvbnN0IGNoYXIgKnBheWxvYWQsCiAJCQkJCQkJIGludDMyIHNyY1BpZCk7CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3ByZWRpY2F0ZS5oIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9wcmVkaWNhdGUuaAppbmRleCBhNWFjNTViOGY3ZS4uNDQzYmZmYjU4ZmQgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJlZGljYXRlLmgKKysrIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9wcmVkaWNhdGUuaApAQCAtNDEsMTEgKzQxLDYgQEAgdHlwZWRlZiB2b2lkICpTZXJpYWxp emFibGVYYWN0SGFuZGxlOwogLyoKICAqIGZ1bmN0aW9uIHByb3RvdHlwZXMKICAqLwotCi0vKiBo b3VzZWtlZXBpbmcgZm9yIHNoYXJlZCBtZW1vcnkgcHJlZGljYXRlIGxvY2sgc3RydWN0dXJlcyAq LwotZXh0ZXJuIHZvaWQgUHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKTsKLWV4dGVybiBTaXpl IFByZWRpY2F0ZUxvY2tTaG1lbVNpemUodm9pZCk7Ci0KIGV4dGVybiB2b2lkIENoZWNrUG9pbnRQ cmVkaWNhdGUodm9pZCk7CiAKIC8qIHByZWRpY2F0ZSBsb2NrIHJlcG9ydGluZyAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbV9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUv c3RvcmFnZS9zaG1lbV9pbnRlcm5hbC5oCmluZGV4IGZlMTJiZjMzNDM5Li43YjI1OWQzM2NjZiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbV9pbnRlcm5hbC5oCisrKyBiL3Ny Yy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW1faW50ZXJuYWwuaApAQCAtMjEsNiArMjEsNyBAQCB0eXBl ZGVmIGVudW0KIHsKIAlTSE1FTV9LSU5EX1NUUlVDVCA9IDAsCQkvKiBwbGFpbiwgY29udGlndW91 cyBhcmVhIG9mIG1lbW9yeSAqLwogCVNITUVNX0tJTkRfSEFTSCwJCQkvKiBhIGhhc2ggdGFibGUg Ki8KKwlTSE1FTV9LSU5EX1NMUlUsCQkJLyogU0xSVSBidWZmZXJzIGFuZCBjb250cm9sIHN0cnVj dHVyZXMgKi8KIH0gU2htZW1SZXF1ZXN0S2luZDsKIAogLyogc2htZW0uYyAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmggYi9zcmMvaW5jbHVkZS9zdG9y YWdlL3N1YnN5c3RlbWxpc3QuaAppbmRleCBkNjJjMjlmMTM2MS4uYzE5OWYxOGEyN2EgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oCisrKyBiL3NyYy9pbmNs dWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oCkBAIC0zMiw2ICszMiwxMyBAQCBQR19TSE1FTV9T VUJTWVNURU0oRFNNUmVnaXN0cnlTaG1lbUNhbGxiYWNrcykKIAogLyogeGxvZywgY2xvZywgYW5k IGJ1ZmZlcnMgKi8KIFBHX1NITUVNX1NVQlNZU1RFTShWYXJzdXBTaG1lbUNhbGxiYWNrcykKK1BH X1NITUVNX1NVQlNZU1RFTShDTE9HU2htZW1DYWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNURU0o Q29tbWl0VHNTaG1lbUNhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RFTShTVUJUUkFOU1NobWVt Q2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKE11bHRpWGFjdFNobWVtQ2FsbGJhY2tzKQor CisvKiBwcmVkaWNhdGUgbG9jayBtYW5hZ2VyICovCitQR19TSE1FTV9TVUJTWVNURU0oUHJlZGlj YXRlTG9ja1NobWVtQ2FsbGJhY2tzKQogCiAvKiBwcm9jZXNzIHRhYmxlICovCiBQR19TSE1FTV9T VUJTWVNURU0oUHJvY0dsb2JhbFNobWVtQ2FsbGJhY2tzKQpAQCAtNDMsMyArNTAsNiBAQCBQR19T SE1FTV9TVUJTWVNURU0oU2hhcmVkSW52YWxTaG1lbUNhbGxiYWNrcykKIC8qIGludGVycHJvY2Vz cyBzaWduYWxpbmcgbWVjaGFuaXNtcyAqLwogUEdfU0hNRU1fU1VCU1lTVEVNKFBNU2lnbmFsU2ht ZW1DYWxsYmFja3MpCiBQR19TSE1FTV9TVUJTWVNURU0oUHJvY1NpZ25hbFNobWVtQ2FsbGJhY2tz KQorCisvKiBvdGhlciBtb2R1bGVzIHRoYXQgbmVlZCBzb21lIHNoYXJlZCBtZW1vcnkgc3BhY2Ug Ki8KK1BHX1NITUVNX1NVQlNZU1RFTShBc3luY1NobWVtQ2FsbGJhY2tzKQpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NscnUvdGVzdF9zbHJ1LmMgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3Rfc2xydS90ZXN0X3NscnUuYwppbmRleCBlNGJkMmFmMGJmNS4uNDBlZmZmZGJmNjIgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zbHJ1L3Rlc3Rfc2xydS5jCisrKyBiL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9zbHJ1L3Rlc3Rfc2xydS5jCkBAIC00MCwxNCArNDAsMjIgQEAg UEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X3NscnVfZGVsZXRlX2FsbCk7CiAvKiBOdW1iZXIgb2Yg U0xSVSBwYWdlIHNsb3RzICovCiAjZGVmaW5lIE5VTV9URVNUX0JVRkZFUlMJCTE2CiAKLXN0YXRp YyBTbHJ1Q3RsRGF0YSBUZXN0U2xydUN0bERhdGE7Ci0jZGVmaW5lIFRlc3RTbHJ1Q3RsCQkJKCZU ZXN0U2xydUN0bERhdGEpCitzdGF0aWMgdm9pZCB0ZXN0X3NscnVfc2htZW1fcmVxdWVzdCh2b2lk ICphcmcpOworc3RhdGljIGJvb2wgdGVzdF9zbHJ1X3BhZ2VfcHJlY2VkZXNfbG9naWNhbGx5KGlu dDY0IHBhZ2UxLCBpbnQ2NCBwYWdlMik7CitzdGF0aWMgaW50CXRlc3Rfc2xydV9lcnJkZXRhaWxf Zm9yX2lvX2Vycm9yKGNvbnN0IHZvaWQgKm9wYXF1ZV9kYXRhKTsKIAotc3RhdGljIHNobWVtX3Jl cXVlc3RfaG9va190eXBlIHByZXZfc2htZW1fcmVxdWVzdF9ob29rID0gTlVMTDsKLXN0YXRpYyBz aG1lbV9zdGFydHVwX2hvb2tfdHlwZSBwcmV2X3NobWVtX3N0YXJ0dXBfaG9vayA9IE5VTEw7Citz dGF0aWMgY29uc3QgY2hhciAqVGVzdFNscnVEaXIgPSAicGdfdGVzdF9zbHJ1IjsKKworc3RhdGlj IFNscnVEZXNjIFRlc3RTbHJ1RGVzYzsKKworc3RhdGljIGNvbnN0IFNobWVtQ2FsbGJhY2tzIHRl c3Rfc2xydV9zaG1lbV9jYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4gPSB0ZXN0X3NscnVfc2ht ZW1fcmVxdWVzdAorfTsKKworI2RlZmluZSBUZXN0U2xydUN0bAkJCSgmVGVzdFNscnVEZXNjKQog CiBzdGF0aWMgYm9vbAotdGVzdF9zbHJ1X3NjYW5fY2IoU2xydUN0bCBjdGwsIGNoYXIgKmZpbGVu YW1lLCBpbnQ2NCBzZWdwYWdlLCB2b2lkICpkYXRhKQordGVzdF9zbHJ1X3NjYW5fY2IoU2xydURl c2MgKmN0bCwgY2hhciAqZmlsZW5hbWUsIGludDY0IHNlZ3BhZ2UsIHZvaWQgKmRhdGEpCiB7CiAJ ZWxvZyhOT1RJQ0UsICJDYWxsaW5nIHRlc3Rfc2xydV9zY2FuX2NiKCkiKTsKIAlyZXR1cm4gU2xy dVNjYW5EaXJDYkRlbGV0ZUFsbChjdGwsIGZpbGVuYW1lLCBzZWdwYWdlLCBkYXRhKTsKQEAgLTE5 MCwyMCArMTk4LDYgQEAgdGVzdF9zbHJ1X2RlbGV0ZV9hbGwoUEdfRlVOQ1RJT05fQVJHUykKIAlQ R19SRVRVUk5fVk9JRCgpOwogfQogCi0vKgotICogTW9kdWxlIGxvYWQgY2FsbGJhY2tzIGFuZCBp bml0aWFsaXphdGlvbi4KLSAqLwotCi1zdGF0aWMgdm9pZAotdGVzdF9zbHJ1X3NobWVtX3JlcXVl c3Qodm9pZCkKLXsKLQlpZiAocHJldl9zaG1lbV9yZXF1ZXN0X2hvb2spCi0JCXByZXZfc2htZW1f cmVxdWVzdF9ob29rKCk7Ci0KLQkvKiByZXNlcnZlIHNoYXJlZCBtZW1vcnkgZm9yIHRoZSB0ZXN0 IFNMUlUgKi8KLQlSZXF1ZXN0QWRkaW5TaG1lbVNwYWNlKFNpbXBsZUxydVNobWVtU2l6ZShOVU1f VEVTVF9CVUZGRVJTLCAwKSk7Ci19Ci0KIHN0YXRpYyBib29sCiB0ZXN0X3NscnVfcGFnZV9wcmVj ZWRlc19sb2dpY2FsbHkoaW50NjQgcGFnZTEsIGludDY0IHBhZ2UyKQogewpAQCAtMjE4LDYwICsy MTIsNDYgQEAgdGVzdF9zbHJ1X2VycmRldGFpbF9mb3JfaW9fZXJyb3IoY29uc3Qgdm9pZCAqb3Bh cXVlX2RhdGEpCiAJcmV0dXJuIGVycmRldGFpbCgiQ291bGQgbm90IGFjY2VzcyB0ZXN0X3NscnUg ZW50cnkgJXUuIiwgeGlkKTsKIH0KIAotc3RhdGljIHZvaWQKLXRlc3Rfc2xydV9zaG1lbV9zdGFy dHVwKHZvaWQpCit2b2lkCitfUEdfaW5pdCh2b2lkKQogewotCS8qCi0JICogU2hvcnQgc2VnbWVu dHMgbmFtZXMgYXJlIHdlbGwgdGVzdGVkIGVsc2V3aGVyZSBzbyBpbiB0aGlzIHRlc3Qgd2UgYXJl Ci0JICogZm9jdXNpbmcgb24gbG9uZyBuYW1lcy4KLQkgKi8KLQljb25zdCBib29sCWxvbmdfc2Vn bWVudF9uYW1lcyA9IHRydWU7Ci0JY29uc3QgY2hhcglzbHJ1X2Rpcl9uYW1lW10gPSAicGdfdGVz dF9zbHJ1IjsKLQlpbnQJCQl0ZXN0X3RyYW5jaGVfaWQgPSAtMTsKLQlpbnQJCQl0ZXN0X2J1ZmZl cl90cmFuY2hlX2lkID0gLTE7Ci0KLQlpZiAocHJldl9zaG1lbV9zdGFydHVwX2hvb2spCi0JCXBy ZXZfc2htZW1fc3RhcnR1cF9ob29rKCk7CisJaWYgKCFwcm9jZXNzX3NoYXJlZF9wcmVsb2FkX2xp YnJhcmllc19pbl9wcm9ncmVzcykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNnKCJjYW5u b3QgbG9hZCBcIiVzXCIgYWZ0ZXIgc3RhcnR1cCIsICJ0ZXN0X3NscnUiKSwKKwkJCQkgZXJyZGV0 YWlsKCJcIiVzXCIgbXVzdCBiZSBsb2FkZWQgd2l0aCBcInNoYXJlZF9wcmVsb2FkX2xpYnJhcmll c1wiLiIsCisJCQkJCQkgICAidGVzdF9zbHJ1IikpKTsKIAogCS8qCiAJICogQ3JlYXRlIHRoZSBT TFJVIGRpcmVjdG9yeSBpZiBpdCBkb2VzIG5vdCBleGlzdCB5ZXQsIGZyb20gdGhlIHJvb3Qgb2YK IAkgKiB0aGUgZGF0YSBkaXJlY3RvcnkuCiAJICovCi0JKHZvaWQpIE1ha2VQR0RpcmVjdG9yeShz bHJ1X2Rpcl9uYW1lKTsKKwkodm9pZCkgTWFrZVBHRGlyZWN0b3J5KFRlc3RTbHJ1RGlyKTsKIAot CS8qCi0JICogSW5pdGlhbGl6ZSB0aGUgU0xSVSBmYWNpbGl0eS4gIEluIEVYRUNfQkFDS0VORCBi dWlsZHMsIHRoZQotCSAqIHNobWVtX3N0YXJ0dXBfaG9vayBpcyBjYWxsZWQgaW4gdGhlIHBvc3Rt YXN0ZXIgYW5kIGluIGVhY2ggYmFja2VuZCwgYnV0Ci0JICogd2Ugb25seSBuZWVkIHRvIGdlbmVy YXRlIHRoZSBMV0xvY2sgdHJhbmNoZXMgb25jZS4gIE5vdGUgdGhhdCB0aGVzZQotCSAqIHRyYW5j aGUgSUQgdmFyaWFibGVzIGFyZSBub3QgdXNlZCBieSBTaW1wbGVMcnVJbml0KCkgd2hlbgotCSAq IElzVW5kZXJQb3N0bWFzdGVyIGlzIHRydWUuCi0JICovCi0JaWYgKCFJc1VuZGVyUG9zdG1hc3Rl cikKLQl7Ci0JCXRlc3RfdHJhbmNoZV9pZCA9IExXTG9ja05ld1RyYW5jaGVJZCgidGVzdF9zbHJ1 X3RyYW5jaGUiKTsKLQkJdGVzdF9idWZmZXJfdHJhbmNoZV9pZCA9IExXTG9ja05ld1RyYW5jaGVJ ZCgidGVzdF9idWZmZXJfdHJhbmNoZSIpOwotCX0KLQotCVRlc3RTbHJ1Q3RsLT5QYWdlUHJlY2Vk ZXMgPSB0ZXN0X3NscnVfcGFnZV9wcmVjZWRlc19sb2dpY2FsbHk7Ci0JVGVzdFNscnVDdGwtPmVy cmRldGFpbF9mb3JfaW9fZXJyb3IgPSB0ZXN0X3NscnVfZXJyZGV0YWlsX2Zvcl9pb19lcnJvcjsK LQlTaW1wbGVMcnVJbml0KFRlc3RTbHJ1Q3RsLCAiVGVzdFNMUlUiLAotCQkJCSAgTlVNX1RFU1Rf QlVGRkVSUywgMCwgc2xydV9kaXJfbmFtZSwKLQkJCQkgIHRlc3RfYnVmZmVyX3RyYW5jaGVfaWQs IHRlc3RfdHJhbmNoZV9pZCwgU1lOQ19IQU5ETEVSX05PTkUsCi0JCQkJICBsb25nX3NlZ21lbnRf bmFtZXMpOworCVJlZ2lzdGVyU2htZW1DYWxsYmFja3MoJnRlc3Rfc2xydV9zaG1lbV9jYWxsYmFj a3MpOwogfQogCi12b2lkCi1fUEdfaW5pdCh2b2lkKQorc3RhdGljIHZvaWQKK3Rlc3Rfc2xydV9z aG1lbV9yZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlpZiAoIXByb2Nlc3Nfc2hhcmVkX3ByZWxvYWRf bGlicmFyaWVzX2luX3Byb2dyZXNzKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJtc2coImNh bm5vdCBsb2FkIFwiJXNcIiBhZnRlciBzdGFydHVwIiwgInRlc3Rfc2xydSIpLAotCQkJCSBlcnJk ZXRhaWwoIlwiJXNcIiBtdXN0IGJlIGxvYWRlZCB3aXRoIFwic2hhcmVkX3ByZWxvYWRfbGlicmFy aWVzXCIuIiwKLQkJCQkJCSAgICJ0ZXN0X3NscnUiKSkpOworCVNpbXBsZUxydVJlcXVlc3QoLmRl c2MgPSAmVGVzdFNscnVEZXNjLAorCQkJCQkgLm5hbWUgPSAiVGVzdFNMUlUiLAorCQkJCQkgLkRp ciA9IFRlc3RTbHJ1RGlyLAorCisJLyoKKwkgKiBTaG9ydCBzZWdtZW50cyBuYW1lcyBhcmUgd2Vs bCB0ZXN0ZWQgZWxzZXdoZXJlIHNvIGluIHRoaXMgdGVzdCB3ZSBhcmUKKwkgKiBmb2N1c2luZyBv biBsb25nIG5hbWVzLgorCSAqLworCQkJCQkgLmxvbmdfc2VnbWVudF9uYW1lcyA9IHRydWUsCisK KwkJCQkJIC5uc2xvdHMgPSBOVU1fVEVTVF9CVUZGRVJTLAorCQkJCQkgLm5sc25zID0gMCwKIAot CXByZXZfc2htZW1fcmVxdWVzdF9ob29rID0gc2htZW1fcmVxdWVzdF9ob29rOwotCXNobWVtX3Jl cXVlc3RfaG9vayA9IHRlc3Rfc2xydV9zaG1lbV9yZXF1ZXN0OworCQkJCQkgLnN5bmNfaGFuZGxl ciA9IFNZTkNfSEFORExFUl9OT05FLAorCQkJCQkgLlBhZ2VQcmVjZWRlcyA9IHRlc3Rfc2xydV9w YWdlX3ByZWNlZGVzX2xvZ2ljYWxseSwKKwkJCQkJIC5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yID0g dGVzdF9zbHJ1X2VycmRldGFpbF9mb3JfaW9fZXJyb3IsCiAKLQlwcmV2X3NobWVtX3N0YXJ0dXBf aG9vayA9IHNobWVtX3N0YXJ0dXBfaG9vazsKLQlzaG1lbV9zdGFydHVwX2hvb2sgPSB0ZXN0X3Ns cnVfc2htZW1fc3RhcnR1cDsKKwkvKiBsZXQgc2xydS5jIGFzc2lnbiB0aGVzZSAqLworCQkJCQkg LmJ1ZmZlcl90cmFuY2hlX2lkID0gMCwKKwkJCQkJIC5iYW5rX3RyYW5jaGVfaWQgPSAwLAorCQkp OwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA2M2MwYjNhOTQ2NS4uM2MzNTA5NzM2 MWQgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0yOTAxLDkgKzI5MDEsOSBAQCBTbG90 SW52YWxpZGF0aW9uQ2F1c2VNYXAKIFNsb3ROdW1iZXIKIFNsb3RTeW5jQ3R4U3RydWN0CiBTbG90 U3luY1NraXBSZWFzb24KLVNscnVDdGwKLVNscnVDdGxEYXRhCitTbHJ1RGVzYwogU2xydUVycm9y Q2F1c2UKK1NscnVPcHRzCiBTbHJ1UGFnZVN0YXR1cwogU2xydVNjYW5DYWxsYmFjawogU2xydVNl Z1N0YXRlCi0tIAoyLjM0LjEKCg== --00000000000057312d064eb03f86 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405-0011-Convert-AIO-to-the-new-interface.patch" Content-Disposition: attachment; filename="v20260405-0011-Convert-AIO-to-the-new-interface.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlchnf910 RnJvbSBhNjIxYjJhMGFjYjIzOTcyOTQyMjNkMmE5NmVhNTIzMzdkODg0ODMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFNhdCwgMjEgTWFyIDIwMjYgMTI6NDM6MTYgKzAyMDAKU3ViamVjdDog W1BBVENIIHYyMDI2MDQwNSAxMS8xNV0gQ29udmVydCBBSU8gdG8gdGhlIG5ldyBpbnRlcmZhY2UK ClRoaXMgcmVwbGFjZXMgdGhlICJzaG1lbV9zaXplIiBhbmQgInNobWVtX2luaXQiIGNhbGxiYWNr cyBpbiB0aGUgSU8KbWV0aG9kcyB0YWJsZSB3aXRoIHRoZSBzYW1lIFNobWVtQ2FsbGJhY2sgc3Ry dWN0IHRoYXQgd2Ugbm93IHVzZSBpbgpvdGhlciBzdWJzeXN0ZW1zCi0tLQogc3JjL2JhY2tlbmQv c3RvcmFnZS9haW8vYWlvX2luaXQuYyAgICAgICAgfCAxMTIgKysrKysrKysrKysrKy0tLS0tLS0t LQogc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vbWV0aG9kX2lvX3VyaW5nLmMgfCAgMzkgKysrKy0t LS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL21ldGhvZF93b3JrZXIuYyAgIHwgIDg0ICsrKysr KysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyAgICAgICAgICAgIHwg ICAyIC0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvYWlvX2ludGVybmFsLmggICAgICAgIHwgIDE2ICst LS0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvYWlvX3N1YnN5cy5oICAgICAgICAgIHwgICA0IC0KIHNy Yy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oICAgICAgIHwgICAzICsKIDcgZmlsZXMg Y2hhbmdlZCwgMTQzIGluc2VydGlvbnMoKyksIDExNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9haW9faW5pdC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9haW8vYWlvX2luaXQuYwppbmRleCBkM2M2OGQ4YjA0Yy4uMThiYjQyMzUwNDQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL2Fpb19pbml0LmMKKysrIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9haW8vYWlvX2luaXQuYwpAQCAtMjMsMTYgKzIzLDI0IEBACiAjaW5jbHVkZSAic3Rv cmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdl L3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRp bHMvZ3VjLmgiCiAKIAorc3RhdGljIHZvaWQgQWlvU2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7Citz dGF0aWMgdm9pZCBBaW9TaG1lbUluaXQodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIEFpb1NobWVt QXR0YWNoKHZvaWQgKmFyZyk7CiAKLXN0YXRpYyBTaXplCi1BaW9DdGxTaG1lbVNpemUodm9pZCkK LXsKLQkvKiBwZ2Fpb19jdGwgaXRzZWxmICovCi0JcmV0dXJuIHNpemVvZihQZ0Fpb0N0bCk7Ci19 Citjb25zdCBTaG1lbUNhbGxiYWNrcyBBaW9TaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9m biA9IEFpb1NobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IEFpb1NobWVtSW5pdCwKKwkuYXR0YWNo X2ZuID0gQWlvU2htZW1BdHRhY2gsCit9OworCitzdGF0aWMgUGdBaW9CYWNrZW5kICpBaW9CYWNr ZW5kU2htZW1QdHI7CitzdGF0aWMgUGdBaW9IYW5kbGUgKkFpb0hhbmRsZVNobWVtUHRyOworc3Rh dGljIHN0cnVjdCBpb3ZlYyAqQWlvSGFuZGxlSU9WU2htZW1QdHI7CitzdGF0aWMgdWludDY0ICpB aW9IYW5kbGVEYXRhU2htZW1QdHI7CiAKIHN0YXRpYyB1aW50MzIKIEFpb1Byb2NzKHZvaWQpCkBA IC0xMDksMTIgKzExNywxNSBAQCBBaW9DaG9vc2VNYXhDb25jdXJyZW5jeSh2b2lkKQogCXJldHVy biBNaW4obWF4X3Byb3BvcnRpb25hbF9waW5zLCA2NCk7CiB9CiAKLVNpemUKLUFpb1NobWVtU2l6 ZSh2b2lkKQorLyoKKyAqIFJlZ2lzdGVyIHNoYXJlZCBtZW1vcnkgYXJlYSBmb3IgQUlPIHN1YnN5 c3RlbS4KKyAqLworc3RhdGljIHZvaWQKK0Fpb1NobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7Ci0J U2l6ZQkJc3ogPSAwOwotCiAJLyoKKwkgKiBSZXNvbHZlIGlvX21heF9jb25jdXJyZW5jeSBpZiBu b3QgYWxyZWFkeSBkb25lCisJICoKIAkgKiBXZSBwcmVmZXIgdG8gcmVwb3J0IHRoaXMgdmFsdWUn cyBzb3VyY2UgYXMgUEdDX1NfRFlOQU1JQ19ERUZBVUxULgogCSAqIEhvd2V2ZXIsIGlmIHRoZSBE QkEgZXhwbGljaXRseSBzZXQgaW9fbWF4X2NvbmN1cnJlbmN5ID0gLTEgaW4gdGhlCiAJICogY29u ZmlnIGZpbGUsIHRoZW4gUEdDX1NfRFlOQU1JQ19ERUZBVUxUIHdpbGwgZmFpbCB0byBvdmVycmlk ZSB0aGF0IGFuZApAQCAtMTMyLDQ4ICsxNDMsNTIgQEAgQWlvU2htZW1TaXplKHZvaWQpCiAJCQkJ CQkJUEdDX1NfT1ZFUlJJREUpOwogCX0KIAotCXN6ID0gYWRkX3NpemUoc3osIEFpb0N0bFNobWVt U2l6ZSgpKTsKLQlzeiA9IGFkZF9zaXplKHN6LCBBaW9CYWNrZW5kU2htZW1TaXplKCkpOwotCXN6 ID0gYWRkX3NpemUoc3osIEFpb0hhbmRsZVNobWVtU2l6ZSgpKTsKLQlzeiA9IGFkZF9zaXplKHN6 LCBBaW9IYW5kbGVJT1ZTaG1lbVNpemUoKSk7Ci0Jc3ogPSBhZGRfc2l6ZShzeiwgQWlvSGFuZGxl RGF0YVNobWVtU2l6ZSgpKTsKLQotCS8qIFJlc2VydmUgc3BhY2UgZm9yIG1ldGhvZCBzcGVjaWZp YyByZXNvdXJjZXMuICovCi0JaWYgKHBnYWlvX21ldGhvZF9vcHMtPnNobWVtX3NpemUpCi0JCXN6 ID0gYWRkX3NpemUoc3osIHBnYWlvX21ldGhvZF9vcHMtPnNobWVtX3NpemUoKSk7Ci0KLQlyZXR1 cm4gc3o7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIkFpb0N0bCIsCisJCQkJCSAgIC5z aXplID0gc2l6ZW9mKFBnQWlvQ3RsKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmcGdhaW9f Y3RsLAorCQkpOworCisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIkFpb0JhY2tlbmQiLAor CQkJCQkgICAuc2l6ZSA9IEFpb0JhY2tlbmRTaG1lbVNpemUoKSwKKwkJCQkJICAgLnB0ciA9ICh2 b2lkICoqKSAmQWlvQmFja2VuZFNobWVtUHRyLAorCQkpOworCisJU2htZW1SZXF1ZXN0U3RydWN0 KC5uYW1lID0gIkFpb0hhbmRsZSIsCisJCQkJCSAgIC5zaXplID0gQWlvSGFuZGxlU2htZW1TaXpl KCksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJkFpb0hhbmRsZVNobWVtUHRyLAorCQkpOwor CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIkFpb0hhbmRsZUlPViIsCisJCQkJCSAgIC5z aXplID0gQWlvSGFuZGxlSU9WU2htZW1TaXplKCksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikg JkFpb0hhbmRsZUlPVlNobWVtUHRyLAorCQkpOworCisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1l ID0gIkFpb0hhbmRsZURhdGEiLAorCQkJCQkgICAuc2l6ZSA9IEFpb0hhbmRsZURhdGFTaG1lbVNp emUoKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmQWlvSGFuZGxlRGF0YVNobWVtUHRyLAor CQkpOworCisJaWYgKHBnYWlvX21ldGhvZF9vcHMtPnNobWVtX2NhbGxiYWNrcy5yZXF1ZXN0X2Zu KQorCQlwZ2Fpb19tZXRob2Rfb3BzLT5zaG1lbV9jYWxsYmFja3MucmVxdWVzdF9mbihwZ2Fpb19t ZXRob2Rfb3BzLT5zaG1lbV9jYWxsYmFja3MucmVxdWVzdF9mbl9hcmcpOwogfQogCi12b2lkCi1B aW9TaG1lbUluaXQodm9pZCkKKy8qCisgKiBJbml0aWFsaXplIEFJTyBzaGFyZWQgbWVtb3J5IGR1 cmluZyBwb3N0bWFzdGVyIHN0YXJ0dXAuCisgKi8KK3N0YXRpYyB2b2lkCitBaW9TaG1lbUluaXQo dm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kOwogCXVpbnQzMgkJaW9faGFuZGxlX29mZiA9IDA7 CiAJdWludDMyCQlpb3ZlY19vZmYgPSAwOwogCXVpbnQzMgkJcGVyX2JhY2tlbmRfaW92ZWNzID0g aW9fbWF4X2NvbmN1cnJlbmN5ICogaW9fbWF4X2NvbWJpbmVfbGltaXQ7CiAKLQlwZ2Fpb19jdGwg PSAoUGdBaW9DdGwgKikKLQkJU2htZW1Jbml0U3RydWN0KCJBaW9DdGwiLCBBaW9DdGxTaG1lbVNp emUoKSwgJmZvdW5kKTsKLQotCWlmIChmb3VuZCkKLQkJZ290byBvdXQ7Ci0KLQltZW1zZXQocGdh aW9fY3RsLCAwLCBBaW9DdGxTaG1lbVNpemUoKSk7Ci0KIAlwZ2Fpb19jdGwtPmlvX2hhbmRsZV9j b3VudCA9IEFpb1Byb2NzKCkgKiBpb19tYXhfY29uY3VycmVuY3k7CiAJcGdhaW9fY3RsLT5pb3Zl Y19jb3VudCA9IEFpb1Byb2NzKCkgKiBwZXJfYmFja2VuZF9pb3ZlY3M7CiAKLQlwZ2Fpb19jdGwt PmJhY2tlbmRfc3RhdGUgPSAoUGdBaW9CYWNrZW5kICopCi0JCVNobWVtSW5pdFN0cnVjdCgiQWlv QmFja2VuZCIsIEFpb0JhY2tlbmRTaG1lbVNpemUoKSwgJmZvdW5kKTsKLQotCXBnYWlvX2N0bC0+ aW9faGFuZGxlcyA9IChQZ0Fpb0hhbmRsZSAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkFpb0hhbmRs ZSIsIEFpb0hhbmRsZVNobWVtU2l6ZSgpLCAmZm91bmQpOwotCi0JcGdhaW9fY3RsLT5pb3ZlY3Mg PSAoc3RydWN0IGlvdmVjICopCi0JCVNobWVtSW5pdFN0cnVjdCgiQWlvSGFuZGxlSU9WIiwgQWlv SGFuZGxlSU9WU2htZW1TaXplKCksICZmb3VuZCk7Ci0JcGdhaW9fY3RsLT5oYW5kbGVfZGF0YSA9 ICh1aW50NjQgKikKLQkJU2htZW1Jbml0U3RydWN0KCJBaW9IYW5kbGVEYXRhIiwgQWlvSGFuZGxl RGF0YVNobWVtU2l6ZSgpLCAmZm91bmQpOworCXBnYWlvX2N0bC0+YmFja2VuZF9zdGF0ZSA9IEFp b0JhY2tlbmRTaG1lbVB0cjsKKwlwZ2Fpb19jdGwtPmlvX2hhbmRsZXMgPSBBaW9IYW5kbGVTaG1l bVB0cjsKKwlwZ2Fpb19jdGwtPmlvdmVjcyA9IEFpb0hhbmRsZUlPVlNobWVtUHRyOworCXBnYWlv X2N0bC0+aGFuZGxlX2RhdGEgPSBBaW9IYW5kbGVEYXRhU2htZW1QdHI7CiAKIAlmb3IgKGludCBw cm9jbm8gPSAwOyBwcm9jbm8gPCBBaW9Qcm9jcygpOyBwcm9jbm8rKykKIAl7CkBAIC0yMDgsMTAg KzIyMywxNSBAQCBBaW9TaG1lbUluaXQodm9pZCkKIAkJfQogCX0KIAotb3V0OgotCS8qIEluaXRp YWxpemUgSU8gbWV0aG9kIHNwZWNpZmljIHJlc291cmNlcy4gKi8KLQlpZiAocGdhaW9fbWV0aG9k X29wcy0+c2htZW1faW5pdCkKLQkJcGdhaW9fbWV0aG9kX29wcy0+c2htZW1faW5pdCghZm91bmQp OworCWlmIChwZ2Fpb19tZXRob2Rfb3BzLT5zaG1lbV9jYWxsYmFja3MuaW5pdF9mbikKKwkJcGdh aW9fbWV0aG9kX29wcy0+c2htZW1fY2FsbGJhY2tzLmluaXRfZm4ocGdhaW9fbWV0aG9kX29wcy0+ c2htZW1fY2FsbGJhY2tzLmluaXRfZm5fYXJnKTsKK30KKworc3RhdGljIHZvaWQKK0Fpb1NobWVt QXR0YWNoKHZvaWQgKmFyZykKK3sKKwlpZiAocGdhaW9fbWV0aG9kX29wcy0+c2htZW1fY2FsbGJh Y2tzLmF0dGFjaF9mbikKKwkJcGdhaW9fbWV0aG9kX29wcy0+c2htZW1fY2FsbGJhY2tzLmF0dGFj aF9mbihwZ2Fpb19tZXRob2Rfb3BzLT5zaG1lbV9jYWxsYmFja3MuYXR0YWNoX2ZuX2FyZyk7CiB9 CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL21ldGhvZF9pb191 cmluZy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vbWV0aG9kX2lvX3VyaW5nLmMKaW5kZXgg OWY3NmQyNjgzYzAuLjMyOTVjNTllZDc1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2Fpby9tZXRob2RfaW9fdXJpbmcuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9tZXRo b2RfaW9fdXJpbmcuYwpAQCAtNDksOCArNDksOCBAQAogCiAKIC8qIEVudHJ5IHBvaW50cyBmb3Ig SW9NZXRob2RPcHMuICovCi1zdGF0aWMgc2l6ZV90IHBnYWlvX3VyaW5nX3NobWVtX3NpemUodm9p ZCk7Ci1zdGF0aWMgdm9pZCBwZ2Fpb191cmluZ19zaG1lbV9pbml0KGJvb2wgZmlyc3RfdGltZSk7 CitzdGF0aWMgdm9pZCBwZ2Fpb191cmluZ19zaG1lbV9yZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0 aWMgdm9pZCBwZ2Fpb191cmluZ19zaG1lbV9pbml0KHZvaWQgKmFyZyk7CiBzdGF0aWMgdm9pZCBw Z2Fpb191cmluZ19pbml0X2JhY2tlbmQodm9pZCk7CiBzdGF0aWMgaW50CXBnYWlvX3VyaW5nX3N1 Ym1pdCh1aW50MTYgbnVtX3N0YWdlZF9pb3MsIFBnQWlvSGFuZGxlICoqc3RhZ2VkX2lvcyk7CiBz dGF0aWMgdm9pZCBwZ2Fpb191cmluZ193YWl0X29uZShQZ0Fpb0hhbmRsZSAqaW9oLCB1aW50NjQg cmVmX2dlbmVyYXRpb24pOwpAQCAtNTksNyArNTksNiBAQCBzdGF0aWMgdm9pZCBwZ2Fpb191cmlu Z19jaGVja19vbmUoUGdBaW9IYW5kbGUgKmlvaCwgdWludDY0IHJlZl9nZW5lcmF0aW9uKTsKIC8q IGhlbHBlciBmdW5jdGlvbnMgKi8KIHN0YXRpYyB2b2lkIHBnYWlvX3VyaW5nX3NxX2Zyb21faW8o UGdBaW9IYW5kbGUgKmlvaCwgc3RydWN0IGlvX3VyaW5nX3NxZSAqc3FlKTsKIAotCiBjb25zdCBJ b01ldGhvZE9wcyBwZ2Fpb191cmluZ19vcHMgPSB7CiAJLyoKIAkgKiBXaGlsZSBpb191cmluZyBt b3N0bHkgaXMgT0sgd2l0aCBGRHMgZ2V0dGluZyBjbG9zZWQgd2hpbGUgdGhlIElPIGlzIGluCkBA IC03MCw4ICs2OSw4IEBAIGNvbnN0IElvTWV0aG9kT3BzIHBnYWlvX3VyaW5nX29wcyA9IHsKIAkg Ki8KIAkud2FpdF9vbl9mZF9iZWZvcmVfY2xvc2UgPSB0cnVlLAogCi0JLnNobWVtX3NpemUgPSBw Z2Fpb191cmluZ19zaG1lbV9zaXplLAotCS5zaG1lbV9pbml0ID0gcGdhaW9fdXJpbmdfc2htZW1f aW5pdCwKKwkuc2htZW1fY2FsbGJhY2tzLnJlcXVlc3RfZm4gPSBwZ2Fpb191cmluZ19zaG1lbV9y ZXF1ZXN0LAorCS5zaG1lbV9jYWxsYmFja3MuaW5pdF9mbiA9IHBnYWlvX3VyaW5nX3NobWVtX2lu aXQsCiAJLmluaXRfYmFja2VuZCA9IHBnYWlvX3VyaW5nX2luaXRfYmFja2VuZCwKIAogCS5zdWJt aXQgPSBwZ2Fpb191cmluZ19zdWJtaXQsCkBAIC0yNjcsMjMgKzI2NiwzMSBAQCBwZ2Fpb191cmlu Z19zaG1lbV9zaXplKHZvaWQpCiB7CiAJc2l6ZV90CQlzejsKIAorCXN6ID0gcGdhaW9fdXJpbmdf Y29udGV4dF9zaG1lbV9zaXplKCk7CisJc3ogPSBhZGRfc2l6ZShzeiwgcGdhaW9fdXJpbmdfcmlu Z19zaG1lbV9zaXplKCkpOworCisJcmV0dXJuIHN6OworfQorCitzdGF0aWMgdm9pZAorcGdhaW9f dXJpbmdfc2htZW1fcmVxdWVzdCh2b2lkICphcmcpCit7CiAJLyoKIAkgKiBLZXJuZWwgYW5kIGxp YnVyaW5nIHN1cHBvcnQgZm9yIHZhcmlvdXMgZmVhdHVyZXMgaW5mbHVlbmNlcyBob3cgbXVjaAog CSAqIHNobWVtIHdlIG5lZWQsIHBlcmZvcm0gdGhlIG5lY2Vzc2FyeSBjaGVja3MuCiAJICovCiAJ cGdhaW9fdXJpbmdfY2hlY2tfY2FwYWJpbGl0aWVzKCk7CiAKLQlzeiA9IHBnYWlvX3VyaW5nX2Nv bnRleHRfc2htZW1fc2l6ZSgpOwotCXN6ID0gYWRkX3NpemUoc3osIHBnYWlvX3VyaW5nX3Jpbmdf c2htZW1fc2l6ZSgpKTsKLQotCXJldHVybiBzejsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUg PSAiQWlvVXJpbmdDb250ZXh0IiwKKwkJCQkJICAgLnNpemUgPSBwZ2Fpb191cmluZ19zaG1lbV9z aXplKCksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJnBnYWlvX3VyaW5nX2NvbnRleHRzLAor CQkpOwogfQogCiBzdGF0aWMgdm9pZAotcGdhaW9fdXJpbmdfc2htZW1faW5pdChib29sIGZpcnN0 X3RpbWUpCitwZ2Fpb191cmluZ19zaG1lbV9pbml0KHZvaWQgKmFyZykKIHsKIAlpbnQJCQlUb3Rh bFByb2NzID0gcGdhaW9fdXJpbmdfcHJvY3MoKTsKLQlib29sCQlmb3VuZDsKIAljaGFyCSAgICpz aG1lbTsKIAlzaXplX3QJCXJpbmdfbWVtX3JlbWFpbiA9IDA7CiAJY2hhcgkgICAqcmluZ19tZW1f bmV4dCA9IDA7CkBAIC0yOTEsMTMgKzI5OCwxMSBAQCBwZ2Fpb191cmluZ19zaG1lbV9pbml0KGJv b2wgZmlyc3RfdGltZSkKIAkvKgogCSAqIFdlIGFsbG9jYXRlIG1lbW9yeSBmb3IgYWxsIFBnQWlv VXJpbmdDb250ZXh0IGluc3RhbmNlcyBhbmQsIGlmCiAJICogc3VwcG9ydGVkLCB0aGUgbWVtb3J5 IHJlcXVpcmVkIGZvciBlYWNoIG9mIHRoZSBpb191cmluZyBpbnN0YW5jZXMsIGluCi0JICogb25l IFNobWVtSW5pdFN0cnVjdCgpLgorCSAqIG9uZSBjb21iaW5lZCBhbGxvY2F0aW9uLgorCSAqCisJ ICogcGdhaW9fdXJpbmdfY29udGV4dHMgaXMgYWxyZWFkeSBzZXQgdG8gdGhlIGJhc2Ugb2YgdGhl IGFsbG9jYXRpb24uCiAJICovCi0Jc2htZW0gPSBTaG1lbUluaXRTdHJ1Y3QoIkFpb1VyaW5nQ29u dGV4dCIsIHBnYWlvX3VyaW5nX3NobWVtX3NpemUoKSwgJmZvdW5kKTsKLQlpZiAoZm91bmQpCi0J CXJldHVybjsKLQotCXBnYWlvX3VyaW5nX2NvbnRleHRzID0gKFBnQWlvVXJpbmdDb250ZXh0ICop IHNobWVtOworCXNobWVtID0gKGNoYXIgKikgcGdhaW9fdXJpbmdfY29udGV4dHM7CiAJc2htZW0g Kz0gcGdhaW9fdXJpbmdfY29udGV4dF9zaG1lbV9zaXplKCk7CiAKIAkvKiBpZiBzdXBwb3J0ZWQs IGhhbmRsZSBtZW1vcnkgYWxpZ25tZW50IC8gc2l6aW5nIGZvciBpb191cmluZyBtZW1vcnkgKi8K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL21ldGhvZF93b3JrZXIuYyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvYWlvL21ldGhvZF93b3JrZXIuYwppbmRleCBlZmUzOGU5ZjExMy4u ZGY5NGE0MzQ4NTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL21ldGhvZF93 b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9tZXRob2Rfd29ya2VyLmMKQEAg LTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKyNpbmNsdWRlICJzdG9yYWdl L3NobWVtLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2lu amVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0aWxzL21lbWRlYnVnLmgiCkBAIC03MywxNiAr NzQsMjAgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdBaW9Xb3JrZXJDb250cm9sCiB9IFBnQWlvV29ya2Vy Q29udHJvbDsKIAogCi1zdGF0aWMgc2l6ZV90IHBnYWlvX3dvcmtlcl9zaG1lbV9zaXplKHZvaWQp Owotc3RhdGljIHZvaWQgcGdhaW9fd29ya2VyX3NobWVtX2luaXQoYm9vbCBmaXJzdF90aW1lKTsK K3N0YXRpYyB2b2lkIHBnYWlvX3dvcmtlcl9zaG1lbV9yZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0 aWMgdm9pZCBwZ2Fpb193b3JrZXJfc2htZW1faW5pdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQg cGdhaW9fd29ya2VyX3NobWVtX2F0dGFjaCh2b2lkICphcmcpOworCitzdGF0aWMgUGdBaW9Xb3Jr ZXJTdWJtaXNzaW9uUXVldWUgKmlvX3dvcmtlcl9zdWJtaXNzaW9uX3F1ZXVlOwogCiBzdGF0aWMg Ym9vbCBwZ2Fpb193b3JrZXJfbmVlZHNfc3luY2hyb25vdXNfZXhlY3V0aW9uKFBnQWlvSGFuZGxl ICppb2gpOwogc3RhdGljIGludAlwZ2Fpb193b3JrZXJfc3VibWl0KHVpbnQxNiBudW1fc3RhZ2Vk X2lvcywgUGdBaW9IYW5kbGUgKipzdGFnZWRfaW9zKTsKIAogCiBjb25zdCBJb01ldGhvZE9wcyBw Z2Fpb193b3JrZXJfb3BzID0gewotCS5zaG1lbV9zaXplID0gcGdhaW9fd29ya2VyX3NobWVtX3Np emUsCi0JLnNobWVtX2luaXQgPSBwZ2Fpb193b3JrZXJfc2htZW1faW5pdCwKKwkuc2htZW1fY2Fs bGJhY2tzLnJlcXVlc3RfZm4gPSBwZ2Fpb193b3JrZXJfc2htZW1fcmVxdWVzdCwKKwkuc2htZW1f Y2FsbGJhY2tzLmluaXRfZm4gPSBwZ2Fpb193b3JrZXJfc2htZW1faW5pdCwKKwkuc2htZW1fY2Fs bGJhY2tzLmF0dGFjaF9mbiA9IHBnYWlvX3dvcmtlcl9zaG1lbV9hdHRhY2gsCiAKIAkubmVlZHNf c3luY2hyb25vdXNfZXhlY3V0aW9uID0gcGdhaW9fd29ya2VyX25lZWRzX3N5bmNocm9ub3VzX2V4 ZWN1dGlvbiwKIAkuc3VibWl0ID0gcGdhaW9fd29ya2VyX3N1Ym1pdCwKQEAgLTk1LDcgKzEwMCw2 IEBAIGludAkJCWlvX3dvcmtlcnMgPSAzOwogCiBzdGF0aWMgaW50CWlvX3dvcmtlcl9xdWV1ZV9z aXplID0gNjQ7CiBzdGF0aWMgaW50CU15SW9Xb3JrZXJJZDsKLXN0YXRpYyBQZ0Fpb1dvcmtlclN1 Ym1pc3Npb25RdWV1ZSAqaW9fd29ya2VyX3N1Ym1pc3Npb25fcXVldWU7CiBzdGF0aWMgUGdBaW9X b3JrZXJDb250cm9sICppb193b3JrZXJfY29udHJvbDsKIAogCkBAIC0xMTYsNTAgKzEyMCw2MCBA QCBwZ2Fpb193b3JrZXJfY29udHJvbF9zaG1lbV9zaXplKHZvaWQpCiAJCXNpemVvZihQZ0Fpb1dv cmtlclNsb3QpICogTUFYX0lPX1dPUktFUlM7CiB9CiAKLXN0YXRpYyBzaXplX3QKLXBnYWlvX3dv cmtlcl9zaG1lbV9zaXplKHZvaWQpCisvKgorICogU2V0IHNlY29uZGFyeSBBSU8gd29ya2VyIHBv aW50ZXIgZnJvbSB0aGUgY29tYmluZWQgYWxsb2NhdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK3Bn YWlvX3dvcmtlcl9zZXRfc2Vjb25kYXJ5X3B0cih2b2lkKQogewotCXNpemVfdAkJc3o7CiAJaW50 CQkJcXVldWVfc2l6ZTsKKwlTaXplCQlxdWV1ZV9zeiA9IHBnYWlvX3dvcmtlcl9xdWV1ZV9zaG1l bV9zaXplKCZxdWV1ZV9zaXplKTsKIAotCXN6ID0gcGdhaW9fd29ya2VyX3F1ZXVlX3NobWVtX3Np emUoJnF1ZXVlX3NpemUpOwotCXN6ID0gYWRkX3NpemUoc3osIHBnYWlvX3dvcmtlcl9jb250cm9s X3NobWVtX3NpemUoKSk7Ci0KLQlyZXR1cm4gc3o7CisJaW9fd29ya2VyX2NvbnRyb2wgPSAoUGdB aW9Xb3JrZXJDb250cm9sICopCisJCSgoY2hhciAqKSBpb193b3JrZXJfc3VibWlzc2lvbl9xdWV1 ZSArIE1BWEFMSUdOKHF1ZXVlX3N6KSk7CiB9CiAKIHN0YXRpYyB2b2lkCi1wZ2Fpb193b3JrZXJf c2htZW1faW5pdChib29sIGZpcnN0X3RpbWUpCitwZ2Fpb193b3JrZXJfc2htZW1faW5pdCh2b2lk ICphcmcpCiB7Ci0JYm9vbAkJZm91bmQ7CiAJaW50CQkJcXVldWVfc2l6ZTsKIAotCWlvX3dvcmtl cl9zdWJtaXNzaW9uX3F1ZXVlID0KLQkJU2htZW1Jbml0U3RydWN0KCJBaW9Xb3JrZXJTdWJtaXNz aW9uUXVldWUiLAotCQkJCQkJcGdhaW9fd29ya2VyX3F1ZXVlX3NobWVtX3NpemUoJnF1ZXVlX3Np emUpLAotCQkJCQkJJmZvdW5kKTsKLQlpZiAoIWZvdW5kKQotCXsKLQkJaW9fd29ya2VyX3N1Ym1p c3Npb25fcXVldWUtPnNpemUgPSBxdWV1ZV9zaXplOwotCQlpb193b3JrZXJfc3VibWlzc2lvbl9x dWV1ZS0+aGVhZCA9IDA7Ci0JCWlvX3dvcmtlcl9zdWJtaXNzaW9uX3F1ZXVlLT50YWlsID0gMDsK LQl9CisJcGdhaW9fd29ya2VyX3F1ZXVlX3NobWVtX3NpemUoJnF1ZXVlX3NpemUpOworCWlvX3dv cmtlcl9zdWJtaXNzaW9uX3F1ZXVlLT5zaXplID0gcXVldWVfc2l6ZTsKKwlpb193b3JrZXJfc3Vi bWlzc2lvbl9xdWV1ZS0+aGVhZCA9IDA7CisJaW9fd29ya2VyX3N1Ym1pc3Npb25fcXVldWUtPnRh aWwgPSAwOwogCi0JaW9fd29ya2VyX2NvbnRyb2wgPQotCQlTaG1lbUluaXRTdHJ1Y3QoIkFpb1dv cmtlckNvbnRyb2wiLAotCQkJCQkJcGdhaW9fd29ya2VyX2NvbnRyb2xfc2htZW1fc2l6ZSgpLAot CQkJCQkJJmZvdW5kKTsKLQlpZiAoIWZvdW5kKQorCXBnYWlvX3dvcmtlcl9zZXRfc2Vjb25kYXJ5 X3B0cigpOworCisJaW9fd29ya2VyX2NvbnRyb2wtPmlkbGVfd29ya2VyX21hc2sgPSAwOworCWZv ciAoaW50IGkgPSAwOyBpIDwgTUFYX0lPX1dPUktFUlM7ICsraSkKIAl7Ci0JCWlvX3dvcmtlcl9j b250cm9sLT5pZGxlX3dvcmtlcl9tYXNrID0gMDsKLQkJZm9yIChpbnQgaSA9IDA7IGkgPCBNQVhf SU9fV09SS0VSUzsgKytpKQotCQl7Ci0JCQlpb193b3JrZXJfY29udHJvbC0+d29ya2Vyc1tpXS5s YXRjaCA9IE5VTEw7Ci0JCQlpb193b3JrZXJfY29udHJvbC0+d29ya2Vyc1tpXS5pbl91c2UgPSBm YWxzZTsKLQkJfQorCQlpb193b3JrZXJfY29udHJvbC0+d29ya2Vyc1tpXS5sYXRjaCA9IE5VTEw7 CisJCWlvX3dvcmtlcl9jb250cm9sLT53b3JrZXJzW2ldLmluX3VzZSA9IGZhbHNlOwogCX0KIH0K IAorc3RhdGljIHZvaWQKK3BnYWlvX3dvcmtlcl9zaG1lbV9hdHRhY2godm9pZCAqYXJnKQorewor CXBnYWlvX3dvcmtlcl9zZXRfc2Vjb25kYXJ5X3B0cigpOworfQorCitzdGF0aWMgdm9pZAorcGdh aW9fd29ya2VyX3NobWVtX3JlcXVlc3Qodm9pZCAqYXJnKQoreworCXNpemVfdAkJc2l6ZTsKKwlp bnQJCQlxdWV1ZV9zaXplOworCisJc2l6ZSA9IE1BWEFMSUdOKHBnYWlvX3dvcmtlcl9xdWV1ZV9z aG1lbV9zaXplKCZxdWV1ZV9zaXplKSkgKworCQlwZ2Fpb193b3JrZXJfY29udHJvbF9zaG1lbV9z aXplKCk7CisKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQWlvV29ya2VyU3VibWlzc2lv blF1ZXVlIiwKKwkJCQkJICAgLnNpemUgPSBzaXplLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiop ICZpb193b3JrZXJfc3VibWlzc2lvbl9xdWV1ZSwKKwkJKTsKK30KKwogc3RhdGljIGludAogcGdh aW9fd29ya2VyX2Nob29zZV9pZGxlKHZvaWQpCiB7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9pcGNpLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKaW5kZXgg N2E4YzY5ZGU4MDIuLmE1MTBjOTI4ZGFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9pcGNpLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCkBAIC0xMjIs NyArMTIyLDYgQEAgQ2FsY3VsYXRlU2htZW1TaXplKHZvaWQpCiAJc2l6ZSA9IGFkZF9zaXplKHNp emUsIFdhaXRFdmVudEN1c3RvbVNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwg SW5qZWN0aW9uUG9pbnRTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNsb3RT eW5jU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBBaW9TaG1lbVNpemUoKSk7 CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFdhaXRMU05TaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFk ZF9zaXplKHNpemUsIExvZ2ljYWxEZWNvZGluZ0N0bFNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRk X3NpemUoc2l6ZSwgRGF0YUNoZWNrc3Vtc1NobWVtU2l6ZSgpKTsKQEAgLTMwMSw3ICszMDAsNiBA QCBDcmVhdGVPckF0dGFjaFNobWVtU3RydWN0cyh2b2lkKQogCVN0YXRzU2htZW1Jbml0KCk7CiAJ V2FpdEV2ZW50Q3VzdG9tU2htZW1Jbml0KCk7CiAJSW5qZWN0aW9uUG9pbnRTaG1lbUluaXQoKTsK LQlBaW9TaG1lbUluaXQoKTsKIAlXYWl0TFNOU2htZW1Jbml0KCk7CiAJTG9naWNhbERlY29kaW5n Q3RsU2htZW1Jbml0KCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2Fpb19p bnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9haW9faW50ZXJuYWwuaAppbmRleCAzM2Ux ZTJkYzA0OC4uOWNhNDA4N2FhN2YgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYWlv X2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9haW9faW50ZXJuYWwuaApAQCAt MjAsNiArMjAsOCBAQAogI2luY2x1ZGUgInBvcnQvcGdfaW92ZWMuaCIKICNpbmNsdWRlICJzdG9y YWdlL2Fpby5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCisjaW5j bHVkZSAic3RvcmFnZS9pcGMuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCiAKIAogLyoK QEAgLTI2NywyMCArMjY5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgSW9NZXRob2RPcHMKIAkgKi8KIAli b29sCQl3YWl0X29uX2ZkX2JlZm9yZV9jbG9zZTsKIAotCiAJLyogZ2xvYmFsIGluaXRpYWxpemF0 aW9uICovCi0KLQkvKgotCSAqIEFtb3VudCBvZiBhZGRpdGlvbmFsIHNoYXJlZCBtZW1vcnkgdG8g cmVzZXJ2ZSBmb3IgdGhlIGlvX21ldGhvZC4gQ2FsbGVkCi0JICoganVzdCBsaWtlIGEgbm9ybWFs IGlwY2kuYyBzdHlsZSAqU2l6ZSgpIGZ1bmN0aW9uLiBPcHRpb25hbC4KLQkgKi8KLQlzaXplX3QJ CSgqc2htZW1fc2l6ZSkgKHZvaWQpOwotCi0JLyoKLQkgKiBJbml0aWFsaXplIHNoYXJlZCBtZW1v cnkuIEZpcnN0IHRpbWUgaXMgdHJ1ZSBpZiBBSU8ncyBzaGFyZWQgbWVtb3J5IHdhcwotCSAqIGp1 c3QgaW5pdGlhbGl6ZWQsIGZhbHNlIG90aGVyd2lzZS4gT3B0aW9uYWwuCi0JICovCi0Jdm9pZAkJ KCpzaG1lbV9pbml0KSAoYm9vbCBmaXJzdF90aW1lKTsKKwlTaG1lbUNhbGxiYWNrcyBzaG1lbV9j YWxsYmFja3M7CiAKIAkvKgogCSAqIFBlci1iYWNrZW5kIGluaXRpYWxpemF0aW9uLiBPcHRpb25h bC4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYWlvX3N1YnN5cy5oIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9haW9fc3Vic3lzLmgKaW5kZXggMjc2Y2IzZTMxYzQuLmRkNTQ4NjkzNTFm IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2Fpb19zdWJzeXMuaAorKysgYi9zcmMv aW5jbHVkZS9zdG9yYWdlL2Fpb19zdWJzeXMuaApAQCAtMjAsMTIgKzIwLDggQEAKIAogCiAvKiBh aW9faW5pdC5jICovCi1leHRlcm4gU2l6ZSBBaW9TaG1lbVNpemUodm9pZCk7Ci1leHRlcm4gdm9p ZCBBaW9TaG1lbUluaXQodm9pZCk7Ci0KIGV4dGVybiB2b2lkIHBnYWlvX2luaXRfYmFja2VuZCh2 b2lkKTsKIAotCiAvKiBhaW8uYyAqLwogZXh0ZXJuIHZvaWQgcGdhaW9fZXJyb3JfY2xlYW51cCh2 b2lkKTsKIGV4dGVybiB2b2lkIEF0RU9YYWN0X0Fpbyhib29sIGlzX2NvbW1pdCk7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaCBiL3NyYy9pbmNsdWRlL3N0 b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oCmluZGV4IGMxOTlmMThhMjdhLi5iNDM4Nzk0ZDQ2ZCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmgKKysrIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmgKQEAgLTUzLDMgKzUzLDYgQEAgUEdfU0hNRU1f U1VCU1lTVEVNKFByb2NTaWduYWxTaG1lbUNhbGxiYWNrcykKIAogLyogb3RoZXIgbW9kdWxlcyB0 aGF0IG5lZWQgc29tZSBzaGFyZWQgbWVtb3J5IHNwYWNlICovCiBQR19TSE1FTV9TVUJTWVNURU0o QXN5bmNTaG1lbUNhbGxiYWNrcykKKworLyogQUlPIHN1YnN5c3RlbS4gVGhpcyBkZWxlZ2F0ZXMg dG8gdGhlIG1ldGhvZC1zcGVjaWZpYyBjYWxsYmFja3MgKi8KK1BHX1NITUVNX1NVQlNZU1RFTShB aW9TaG1lbUNhbGxiYWNrcykKLS0gCjIuMzQuMQoK --00000000000057312d064eb03f86 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405-0012-Add-option-for-aligning-shmem-allocations.patch" Content-Disposition: attachment; filename="v20260405-0012-Add-option-for-aligning-shmem-allocations.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlchnfb11 RnJvbSAyYjI1N2M4YzA1ZDJmMTJkMDBjMzZlMGQ0NWExODBjMTk5OTBiYWUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFNhdCwgMjEgTWFyIDIwMjYgMjM6NDQ6MTUgKzAyMDAKU3ViamVjdDog W1BBVENIIHYyMDI2MDQwNSAxMi8xNV0gQWRkIG9wdGlvbiBmb3IgYWxpZ25pbmcgc2htZW0gYWxs b2NhdGlvbnMKClRoZSBidWZmZXIgYmxvY2tzIChpbiB0aGUgbmV4dCBjb21taXQpIGFyZSBJTy1h bGlnbmVkLiBUaGlzIG1pZ2h0IGNvbWUKaGFuZHkgaW4gb3RoZXIgcGxhY2VzIHRvbywgc28gbWFr ZSBpdCBhbiBleHBsaWNpdCBmZWF0dXJlIG9mClNobWVtUmVxdWVzdFN0cnVjdC4KLS0tCiBzcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jIHwgMjYgKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaCAgICAgfCAgNiArKysrKysKIDIgZmlsZXMg Y2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3NobWVtLmMKaW5kZXggYmMxODZkNmVhMTcuLjk3MzgxMWU1NDVlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3NobWVtLmMKQEAgLTIzOSw3ICsyMzksNyBAQCB0eXBlZGVmIHN0cnVjdCBTaG1lbUFsbG9jYXRv ckRhdGEKIAogI2RlZmluZSBTaG1lbUluZGV4TG9jayAoJlNobWVtQWxsb2NhdG9yLT5pbmRleF9s b2NrKQogCi1zdGF0aWMgdm9pZCAqU2htZW1BbGxvY1JhdyhTaXplIHNpemUsIFNpemUgKmFsbG9j YXRlZF9zaXplKTsKK3N0YXRpYyB2b2lkICpTaG1lbUFsbG9jUmF3KFNpemUgc2l6ZSwgU2l6ZSBh bGlnbm1lbnQsIFNpemUgKmFsbG9jYXRlZF9zaXplKTsKIAogLyogc2hhcmVkIG1lbW9yeSBnbG9i YWwgdmFyaWFibGVzICovCiAKQEAgLTQwMCw3ICs0MDAsOCBAQCBTaG1lbUdldFJlcXVlc3RlZFNp emUodm9pZCkKIAl7CiAJCXNpemUgPSBhZGRfc2l6ZShzaXplLCByZXF1ZXN0LT5vcHRpb25zLT5z aXplKTsKIAkJLyogY2FsY3VsYXRlIGFsaWdubWVudCBwYWRkaW5nIGxpa2UgU2htZW1BbGxvY1Jh dygpIGRvZXMgKi8KLQkJc2l6ZSA9IENBQ0hFTElORUFMSUdOKHNpemUpOworCQlzaXplID0gVFlQ RUFMSUdOKE1heChyZXF1ZXN0LT5vcHRpb25zLT5hbGlnbm1lbnQsIFBHX0NBQ0hFX0xJTkVfU0la RSksCisJCQkJCQkgc2l6ZSk7CiAJfQogCiAJcmV0dXJuIHNpemU7CkBAIC01MjUsNyArNTI2LDkg QEAgSW5pdFNobWVtSW5kZXhFbnRyeShTaG1lbVJlcXVlc3QgKnJlcXVlc3QpCiAJICogV2UgaW5z ZXJ0ZWQgdGhlIGVudHJ5IHRvIHRoZSBzaGFyZWQgbWVtb3J5IGluZGV4LiAgQWxsb2NhdGUgcmVx dWVzdGVkCiAJICogYW1vdW50IG9mIHNoYXJlZCBtZW1vcnkgZm9yIGl0LCBhbmQgaW5pdGlhbGl6 ZSB0aGUgaW5kZXggZW50cnkuCiAJICovCi0Jc3RydWN0UHRyID0gU2htZW1BbGxvY1JhdyhyZXF1 ZXN0LT5vcHRpb25zLT5zaXplLCAmYWxsb2NhdGVkX3NpemUpOworCXN0cnVjdFB0ciA9IFNobWVt QWxsb2NSYXcocmVxdWVzdC0+b3B0aW9ucy0+c2l6ZSwKKwkJCQkJCQkgIHJlcXVlc3QtPm9wdGlv bnMtPmFsaWdubWVudCwKKwkJCQkJCQkgICZhbGxvY2F0ZWRfc2l6ZSk7CiAJaWYgKHN0cnVjdFB0 ciA9PSBOVUxMKQogCXsKIAkJLyogb3V0IG9mIG1lbW9yeTsgcmVtb3ZlIHRoZSBmYWlsZWQgU2ht ZW1JbmRleCBlbnRyeSAqLwpAQCAtNzU0LDcgKzc1Nyw3IEBAIFNobWVtQWxsb2MoU2l6ZSBzaXpl KQogCXZvaWQJICAgKm5ld1NwYWNlOwogCVNpemUJCWFsbG9jYXRlZF9zaXplOwogCi0JbmV3U3Bh Y2UgPSBTaG1lbUFsbG9jUmF3KHNpemUsICZhbGxvY2F0ZWRfc2l6ZSk7CisJbmV3U3BhY2UgPSBT aG1lbUFsbG9jUmF3KHNpemUsIDAsICZhbGxvY2F0ZWRfc2l6ZSk7CiAJaWYgKCFuZXdTcGFjZSkK IAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX09VVF9PRl9NRU1PUlkpLApA QCAtNzczLDcgKzc3Niw3IEBAIFNobWVtQWxsb2NOb0Vycm9yKFNpemUgc2l6ZSkKIHsKIAlTaXpl CQlhbGxvY2F0ZWRfc2l6ZTsKIAotCXJldHVybiBTaG1lbUFsbG9jUmF3KHNpemUsICZhbGxvY2F0 ZWRfc2l6ZSk7CisJcmV0dXJuIFNobWVtQWxsb2NSYXcoc2l6ZSwgMCwgJmFsbG9jYXRlZF9zaXpl KTsKIH0KIAogLyoKQEAgLTc4Myw4ICs3ODYsOSBAQCBTaG1lbUFsbG9jTm9FcnJvcihTaXplIHNp emUpCiAgKiBiZSBlcXVhbCB0byB0aGUgbnVtYmVyIHJlcXVlc3RlZCBwbHVzIGFueSBwYWRkaW5n IHdlIGNob29zZSB0byBhZGQuCiAgKi8KIHN0YXRpYyB2b2lkICoKLVNobWVtQWxsb2NSYXcoU2l6 ZSBzaXplLCBTaXplICphbGxvY2F0ZWRfc2l6ZSkKK1NobWVtQWxsb2NSYXcoU2l6ZSBzaXplLCBT aXplIGFsaWdubWVudCwgU2l6ZSAqYWxsb2NhdGVkX3NpemUpCiB7CisJU2l6ZQkJcmF3U3RhcnQ7 CiAJU2l6ZQkJbmV3U3RhcnQ7CiAJU2l6ZQkJbmV3RnJlZTsKIAl2b2lkCSAgICpuZXdTcGFjZTsK QEAgLTgwMCwxNCArODA0LDE1IEBAIFNobWVtQWxsb2NSYXcoU2l6ZSBzaXplLCBTaXplICphbGxv Y2F0ZWRfc2l6ZSkKIAkgKiBzdHJ1Y3R1cmVzIG91dCB0byBhIHBvd2VyLW9mLXR3byBzaXplIC0g YnV0IHdpdGhvdXQgdGhpcywgZXZlbiB0aGF0CiAJICogd29uJ3QgYmUgc3VmZmljaWVudC4KIAkg Ki8KLQlzaXplID0gQ0FDSEVMSU5FQUxJR04oc2l6ZSk7Ci0JKmFsbG9jYXRlZF9zaXplID0gc2l6 ZTsKKwlpZiAoYWxpZ25tZW50IDwgUEdfQ0FDSEVfTElORV9TSVpFKQorCQlhbGlnbm1lbnQgPSBQ R19DQUNIRV9MSU5FX1NJWkU7CiAKIAlBc3NlcnQoU2htZW1TZWdIZHIgIT0gTlVMTCk7CiAKIAlT cGluTG9ja0FjcXVpcmUoJlNobWVtQWxsb2NhdG9yLT5zaG1lbV9sb2NrKTsKIAotCW5ld1N0YXJ0 ID0gU2htZW1BbGxvY2F0b3ItPmZyZWVfb2Zmc2V0OworCXJhd1N0YXJ0ID0gU2htZW1BbGxvY2F0 b3ItPmZyZWVfb2Zmc2V0OworCW5ld1N0YXJ0ID0gVFlQRUFMSUdOKGFsaWdubWVudCwgcmF3U3Rh cnQpOwogCiAJbmV3RnJlZSA9IG5ld1N0YXJ0ICsgc2l6ZTsKIAlpZiAobmV3RnJlZSA8PSBTaG1l bVNlZ0hkci0+dG90YWxzaXplKQpAQCAtODIxLDggKzgyNiw5IEBAIFNobWVtQWxsb2NSYXcoU2l6 ZSBzaXplLCBTaXplICphbGxvY2F0ZWRfc2l6ZSkKIAlTcGluTG9ja1JlbGVhc2UoJlNobWVtQWxs b2NhdG9yLT5zaG1lbV9sb2NrKTsKIAogCS8qIG5vdGUgdGhpcyBhc3NlcnQgaXMgb2theSB3aXRo IG5ld1NwYWNlID09IE5VTEwgKi8KLQlBc3NlcnQobmV3U3BhY2UgPT0gKHZvaWQgKikgQ0FDSEVM SU5FQUxJR04obmV3U3BhY2UpKTsKKwlBc3NlcnQobmV3U3BhY2UgPT0gKHZvaWQgKikgVFlQRUFM SUdOKGFsaWdubWVudCwgbmV3U3BhY2UpKTsKIAorCSphbGxvY2F0ZWRfc2l6ZSA9IG5ld0ZyZWUg LSByYXdTdGFydDsKIAlyZXR1cm4gbmV3U3BhY2U7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3N0b3JhZ2Uvc2htZW0uaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAppbmRleCAx NDdhNjkxNWY3ZS4uOTEyMThkYjZkNmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv c2htZW0uaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmgKQEAgLTUxLDYgKzUxLDEy IEBAIHR5cGVkZWYgc3RydWN0IFNobWVtU3RydWN0T3B0cwogCSAqLwogCXNzaXplX3QJCXNpemU7 CiAKKwkvKgorCSAqIEFsaWdubWVudCBvZiB0aGUgc3RhcnRpbmcgYWRkcmVzcy4gSWYgbm90IHNl dCwgZGVmYXVsdHMgdG8gY2FjaGVsaW5lCisJICogYm91bmRhcnkuICBNdXN0IGJlIGEgcG93ZXIg b2YgdHdvLgorCSAqLworCXNpemVfdAkJYWxpZ25tZW50OworCiAJLyoKIAkgKiBXaGVuIHRoZSBz aG1lbSBhcmVhIGlzIGluaXRpYWxpemVkIG9yIGF0dGFjaGVkIHRvLCBwb2ludGVyIHRvIGl0IGlz CiAJICogc3RvcmVkIGluICpwdHIuICBJdCB1c3VhbGx5IHBvaW50cyB0byBhIGdsb2JhbCB2YXJp YWJsZSwgdXNlZCB0byBhY2Nlc3MKLS0gCjIuMzQuMQoK --00000000000057312d064eb03f86 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405-0013-Convert-buffer-manager-to-the-new-API.patch" Content-Disposition: attachment; filename="v20260405-0013-Convert-buffer-manager-to-the-new-API.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlchnfc12 RnJvbSA1NzA5YzdhNzdhMWFiMzY5MmZlZmE2ZDRjMGMwYWFmMmI0Yjc2MDlkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFRodSwgMiBBcHIgMjAyNiAwMDo0NDowMiArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjYwNDA1IDEzLzE1XSBDb252ZXJ0IGJ1ZmZlciBtYW5hZ2VyIHRvIHRoZSBuZXcg QVBJCgotLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl9pbml0LmMgIHwgMTQ5ICsr KysrKysrKystLS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl90 YWJsZS5jIHwgIDU0ICsrKysrLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxp c3QuYyAgfCAgOTMgKysrKystLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNp LmMgICAgICAgICB8ICAgMyAtCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaCAg ICB8ICAgNSAtCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zm1nci5oICAgICAgICAgICB8ICAgNCAt CiBzcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaCAgICB8ICAgMyArCiA3IGZpbGVz IGNoYW5nZWQsIDEyNCBpbnNlcnRpb25zKCspLCAxODcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmX2luaXQuYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvYnVmZmVyL2J1Zl9pbml0LmMKaW5kZXggYzBjMjIzYjJlMzIuLjE0MDdjOTMwYzU2IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfaW5pdC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl9pbml0LmMKQEAgLTE4LDYgKzE4LDggQEAKICNp bmNsdWRlICJzdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1n ci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2xpc3QuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3No bWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAKIEJ1ZmZlckRlc2NQYWRk ZWQgKkJ1ZmZlckRlc2NyaXB0b3JzOwogY2hhcgkgICAqQnVmZmVyQmxvY2tzOwpAQCAtMjUsNiAr MjcsMTUgQEAgQ29uZGl0aW9uVmFyaWFibGVNaW5pbWFsbHlQYWRkZWQgKkJ1ZmZlcklPQ1ZBcnJh eTsKIFdyaXRlYmFja0NvbnRleHQgQmFja2VuZFdyaXRlYmFja0NvbnRleHQ7CiBDa3B0U29ydEl0 ZW0gKkNrcHRCdWZmZXJJZHM7CiAKK3N0YXRpYyB2b2lkIEJ1ZmZlck1hbmFnZXJTaG1lbVJlcXVl c3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIEJ1ZmZlck1hbmFnZXJTaG1lbUluaXQodm9pZCAq YXJnKTsKK3N0YXRpYyB2b2lkIEJ1ZmZlck1hbmFnZXJTaG1lbUF0dGFjaCh2b2lkICphcmcpOwor Citjb25zdCBTaG1lbUNhbGxiYWNrcyBCdWZmZXJNYW5hZ2VyU2htZW1DYWxsYmFja3MgPSB7CisJ LnJlcXVlc3RfZm4gPSBCdWZmZXJNYW5hZ2VyU2htZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gQnVm ZmVyTWFuYWdlclNobWVtSW5pdCwKKwkuYXR0YWNoX2ZuID0gQnVmZmVyTWFuYWdlclNobWVtQXR0 YWNoLAorfTsKIAogLyoKICAqIERhdGEgU3RydWN0dXJlczoKQEAgLTYwLDM3ICs3MSwzMSBAQCBD a3B0U29ydEl0ZW0gKkNrcHRCdWZmZXJJZHM7CiAKIAogLyoKLSAqIEluaXRpYWxpemUgc2hhcmVk IGJ1ZmZlciBwb29sCi0gKgotICogVGhpcyBpcyBjYWxsZWQgb25jZSBkdXJpbmcgc2hhcmVkLW1l bW9yeSBpbml0aWFsaXphdGlvbiAoZWl0aGVyIGluIHRoZQotICogcG9zdG1hc3Rlciwgb3IgaW4g YSBzdGFuZGFsb25lIGJhY2tlbmQpLgorICogUmVnaXN0ZXIgc2hhcmVkIG1lbW9yeSBhcmVhIGZv ciB0aGUgYnVmZmVyIHBvb2wuCiAgKi8KLXZvaWQKLUJ1ZmZlck1hbmFnZXJTaG1lbUluaXQodm9p ZCkKK3N0YXRpYyB2b2lkCitCdWZmZXJNYW5hZ2VyU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsK LQlib29sCQlmb3VuZEJ1ZnMsCi0JCQkJZm91bmREZXNjcywKLQkJCQlmb3VuZElPQ1YsCi0JCQkJ Zm91bmRCdWZDa3B0OwotCisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIkJ1ZmZlciBEZXNj cmlwdG9ycyIsCisJCQkJCSAgIC5zaXplID0gTkJ1ZmZlcnMgKiBzaXplb2YoQnVmZmVyRGVzY1Bh ZGRlZCksCiAJLyogQWxpZ24gZGVzY3JpcHRvcnMgdG8gYSBjYWNoZWxpbmUgYm91bmRhcnkuICov Ci0JQnVmZmVyRGVzY3JpcHRvcnMgPSAoQnVmZmVyRGVzY1BhZGRlZCAqKQotCQlTaG1lbUluaXRT dHJ1Y3QoIkJ1ZmZlciBEZXNjcmlwdG9ycyIsCi0JCQkJCQlOQnVmZmVycyAqIHNpemVvZihCdWZm ZXJEZXNjUGFkZGVkKSwKLQkJCQkJCSZmb3VuZERlc2NzKTsKKwkJCQkJICAgLmFsaWdubWVudCA9 IFBHX0NBQ0hFX0xJTkVfU0laRSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmQnVmZmVyRGVz Y3JpcHRvcnMsCisJCSk7CiAKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQnVmZmVyIEJs b2NrcyIsCisJCQkJCSAgIC5zaXplID0gTkJ1ZmZlcnMgKiAoU2l6ZSkgQkxDS1NaLAogCS8qIEFs aWduIGJ1ZmZlciBwb29sIG9uIElPIHBhZ2Ugc2l6ZSBib3VuZGFyeS4gKi8KLQlCdWZmZXJCbG9j a3MgPSAoY2hhciAqKQotCQlUWVBFQUxJR04oUEdfSU9fQUxJR05fU0laRSwKLQkJCQkgIFNobWVt SW5pdFN0cnVjdCgiQnVmZmVyIEJsb2NrcyIsCi0JCQkJCQkJCSAgTkJ1ZmZlcnMgKiAoU2l6ZSkg QkxDS1NaICsgUEdfSU9fQUxJR05fU0laRSwKLQkJCQkJCQkJICAmZm91bmRCdWZzKSk7Ci0KLQkv KiBBbGlnbiBjb25kaXRpb24gdmFyaWFibGVzIHRvIGNhY2hlbGluZSBib3VuZGFyeS4gKi8KLQlC dWZmZXJJT0NWQXJyYXkgPSAoQ29uZGl0aW9uVmFyaWFibGVNaW5pbWFsbHlQYWRkZWQgKikKLQkJ U2htZW1Jbml0U3RydWN0KCJCdWZmZXIgSU8gQ29uZGl0aW9uIFZhcmlhYmxlcyIsCi0JCQkJCQlO QnVmZmVycyAqIHNpemVvZihDb25kaXRpb25WYXJpYWJsZU1pbmltYWxseVBhZGRlZCksCi0JCQkJ CQkmZm91bmRJT0NWKTsKKwkJCQkJICAgLmFsaWdubWVudCA9IFBHX0lPX0FMSUdOX1NJWkUsCisJ CQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJkJ1ZmZlckJsb2NrcywKKwkJKTsKKworCVNobWVtUmVx dWVzdFN0cnVjdCgubmFtZSA9ICJCdWZmZXIgSU8gQ29uZGl0aW9uIFZhcmlhYmxlcyIsCisJCQkJ CSAgIC5zaXplID0gTkJ1ZmZlcnMgKiBzaXplb2YoQ29uZGl0aW9uVmFyaWFibGVNaW5pbWFsbHlQ YWRkZWQpLAorCS8qIEFsaWduIGRlc2NyaXB0b3JzIHRvIGEgY2FjaGVsaW5lIGJvdW5kYXJ5LiAq LworCQkJCQkgICAuYWxpZ25tZW50ID0gUEdfQ0FDSEVfTElORV9TSVpFLAorCQkJCQkgICAucHRy ID0gKHZvaWQgKiopICZCdWZmZXJJT0NWQXJyYXksCisJCSk7CiAKIAkvKgogCSAqIFRoZSBhcnJh eSB1c2VkIHRvIHNvcnQgdG8tYmUtY2hlY2twb2ludGVkIGJ1ZmZlciBpZHMgaXMgbG9jYXRlZCBp bgpAQCAtOTksODAgKzEwNCw1MCBAQCBCdWZmZXJNYW5hZ2VyU2htZW1Jbml0KHZvaWQpCiAJICog dGhlIGNoZWNrcG9pbnRlciBpcyByZXN0YXJ0ZWQsIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmVz IHdvdWxkIGJlCiAJICogcGFpbmZ1bC4KIAkgKi8KLQlDa3B0QnVmZmVySWRzID0gKENrcHRTb3J0 SXRlbSAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkNoZWNrcG9pbnQgQnVmZmVySWRzIiwKLQkJCQkJ CU5CdWZmZXJzICogc2l6ZW9mKENrcHRTb3J0SXRlbSksICZmb3VuZEJ1ZkNrcHQpOworCVNobWVt UmVxdWVzdFN0cnVjdCgubmFtZSA9ICJDaGVja3BvaW50IEJ1ZmZlcklkcyIsCisJCQkJCSAgIC5z aXplID0gTkJ1ZmZlcnMgKiBzaXplb2YoQ2twdFNvcnRJdGVtKSwKKwkJCQkJICAgLnB0ciA9ICh2 b2lkICoqKSAmQ2twdEJ1ZmZlcklkcywKKwkJKTsKK30KIAotCWlmIChmb3VuZERlc2NzIHx8IGZv dW5kQnVmcyB8fCBmb3VuZElPQ1YgfHwgZm91bmRCdWZDa3B0KQotCXsKLQkJLyogc2hvdWxkIGZp bmQgYWxsIG9mIHRoZXNlLCBvciBub25lIG9mIHRoZW0gKi8KLQkJQXNzZXJ0KGZvdW5kRGVzY3Mg JiYgZm91bmRCdWZzICYmIGZvdW5kSU9DViAmJiBmb3VuZEJ1ZkNrcHQpOwotCQkvKiBub3RlOiB0 aGlzIHBhdGggaXMgb25seSB0YWtlbiBpbiBFWEVDX0JBQ0tFTkQgY2FzZSAqLwotCX0KLQllbHNl CisvKgorICogSW5pdGlhbGl6ZSBzaGFyZWQgYnVmZmVyIHBvb2wKKyAqCisgKiBUaGlzIGlzIGNh bGxlZCBvbmNlIGR1cmluZyBzaGFyZWQtbWVtb3J5IGluaXRpYWxpemF0aW9uIChlaXRoZXIgaW4g dGhlCisgKiBwb3N0bWFzdGVyLCBvciBpbiBhIHN0YW5kYWxvbmUgYmFja2VuZCkuCisgKi8KK3N0 YXRpYyB2b2lkCitCdWZmZXJNYW5hZ2VyU2htZW1Jbml0KHZvaWQgKmFyZykKK3sKKwkvKgorCSAq IEluaXRpYWxpemUgYWxsIHRoZSBidWZmZXIgaGVhZGVycy4KKwkgKi8KKwlmb3IgKGludCBpID0g MDsgaSA8IE5CdWZmZXJzOyBpKyspCiAJewotCQlpbnQJCQlpOworCQlCdWZmZXJEZXNjICpidWYg PSBHZXRCdWZmZXJEZXNjcmlwdG9yKGkpOwogCi0JCS8qCi0JCSAqIEluaXRpYWxpemUgYWxsIHRo ZSBidWZmZXIgaGVhZGVycy4KLQkJICovCi0JCWZvciAoaSA9IDA7IGkgPCBOQnVmZmVyczsgaSsr KQotCQl7Ci0JCQlCdWZmZXJEZXNjICpidWYgPSBHZXRCdWZmZXJEZXNjcmlwdG9yKGkpOworCQlD bGVhckJ1ZmZlclRhZygmYnVmLT50YWcpOwogCi0JCQlDbGVhckJ1ZmZlclRhZygmYnVmLT50YWcp OworCQlwZ19hdG9taWNfaW5pdF91NjQoJmJ1Zi0+c3RhdGUsIDApOworCQlidWYtPndhaXRfYmFj a2VuZF9wZ3Byb2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAKLQkJCXBnX2F0b21pY19pbml0 X3U2NCgmYnVmLT5zdGF0ZSwgMCk7Ci0JCQlidWYtPndhaXRfYmFja2VuZF9wZ3Byb2NubyA9IElO VkFMSURfUFJPQ19OVU1CRVI7CisJCWJ1Zi0+YnVmX2lkID0gaTsKIAotCQkJYnVmLT5idWZfaWQg PSBpOworCQlwZ2Fpb193cmVmX2NsZWFyKCZidWYtPmlvX3dyZWYpOwogCi0JCQlwZ2Fpb193cmVm X2NsZWFyKCZidWYtPmlvX3dyZWYpOwotCi0JCQlwcm9jbGlzdF9pbml0KCZidWYtPmxvY2tfd2Fp dGVycyk7Ci0JCQlDb25kaXRpb25WYXJpYWJsZUluaXQoQnVmZmVyRGVzY3JpcHRvckdldElPQ1Yo YnVmKSk7Ci0JCX0KKwkJcHJvY2xpc3RfaW5pdCgmYnVmLT5sb2NrX3dhaXRlcnMpOworCQlDb25k aXRpb25WYXJpYWJsZUluaXQoQnVmZmVyRGVzY3JpcHRvckdldElPQ1YoYnVmKSk7CiAJfQogCi0J LyogSW5pdCBvdGhlciBzaGFyZWQgYnVmZmVyLW1hbmFnZW1lbnQgc3R1ZmYgKi8KLQlTdHJhdGVn eUluaXRpYWxpemUoIWZvdW5kRGVzY3MpOwotCiAJLyogSW5pdGlhbGl6ZSBwZXItYmFja2VuZCBm aWxlIGZsdXNoIGNvbnRleHQgKi8KIAlXcml0ZWJhY2tDb250ZXh0SW5pdCgmQmFja2VuZFdyaXRl YmFja0NvbnRleHQsCiAJCQkJCQkgJmJhY2tlbmRfZmx1c2hfYWZ0ZXIpOwogfQogCi0vKgotICog QnVmZmVyTWFuYWdlclNobWVtU2l6ZQotICoKLSAqIGNvbXB1dGUgdGhlIHNpemUgb2Ygc2hhcmVk IG1lbW9yeSBmb3IgdGhlIGJ1ZmZlciBwb29sIGluY2x1ZGluZwotICogZGF0YSBwYWdlcywgYnVm ZmVyIGRlc2NyaXB0b3JzLCBoYXNoIHRhYmxlcywgZXRjLgotICovCi1TaXplCi1CdWZmZXJNYW5h Z2VyU2htZW1TaXplKHZvaWQpCitzdGF0aWMgdm9pZAorQnVmZmVyTWFuYWdlclNobWVtQXR0YWNo KHZvaWQgKmFyZykKIHsKLQlTaXplCQlzaXplID0gMDsKLQotCS8qIHNpemUgb2YgYnVmZmVyIGRl c2NyaXB0b3JzICovCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKE5CdWZmZXJzLCBz aXplb2YoQnVmZmVyRGVzY1BhZGRlZCkpKTsKLQkvKiB0byBhbGxvdyBhbGlnbmluZyBidWZmZXIg ZGVzY3JpcHRvcnMgKi8KLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgUEdfQ0FDSEVfTElORV9TSVpF KTsKLQotCS8qIHNpemUgb2YgZGF0YSBwYWdlcywgcGx1cyBhbGlnbm1lbnQgcGFkZGluZyAqLwot CXNpemUgPSBhZGRfc2l6ZShzaXplLCBQR19JT19BTElHTl9TSVpFKTsKLQlzaXplID0gYWRkX3Np emUoc2l6ZSwgbXVsX3NpemUoTkJ1ZmZlcnMsIEJMQ0tTWikpOwotCi0JLyogc2l6ZSBvZiBzdHVm ZiBjb250cm9sbGVkIGJ5IGZyZWVsaXN0LmMgKi8KLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgU3Ry YXRlZ3lTaG1lbVNpemUoKSk7Ci0KLQkvKiBzaXplIG9mIEkvTyBjb25kaXRpb24gdmFyaWFibGVz ICovCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKE5CdWZmZXJzLAotCQkJCQkJCQkg ICBzaXplb2YoQ29uZGl0aW9uVmFyaWFibGVNaW5pbWFsbHlQYWRkZWQpKSk7Ci0JLyogdG8gYWxs b3cgYWxpZ25pbmcgdGhlIGFib3ZlICovCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFBHX0NBQ0hF X0xJTkVfU0laRSk7Ci0KLQkvKiBzaXplIG9mIGNoZWNrcG9pbnQgc29ydCBhcnJheSBpbiBidWZt Z3IuYyAqLwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShOQnVmZmVycywgc2l6ZW9m KENrcHRTb3J0SXRlbSkpKTsKLQotCXJldHVybiBzaXplOworCS8qIEluaXRpYWxpemUgcGVyLWJh Y2tlbmQgZmlsZSBmbHVzaCBjb250ZXh0ICovCisJV3JpdGViYWNrQ29udGV4dEluaXQoJkJhY2tl bmRXcml0ZWJhY2tDb250ZXh0LAorCQkJCQkJICZiYWNrZW5kX2ZsdXNoX2FmdGVyKTsKIH0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl90YWJsZS5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmX3RhYmxlLmMKaW5kZXggZDA0ZWY3NGI4NTAuLjM0N2Jm MjY3ZDczIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfdGFibGUu YworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfdGFibGUuYwpAQCAtMjIsNiAr MjIsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJzdG9yYWdlL2J1Zl9p bnRlcm5hbHMuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKIAogLyogZW50cnkg Zm9yIGJ1ZmZlciBsb29rdXAgaGFzaHRhYmxlICovCiB0eXBlZGVmIHN0cnVjdApAQCAtMzIsMzcg KzMzLDQyIEBAIHR5cGVkZWYgc3RydWN0CiAKIHN0YXRpYyBIVEFCICpTaGFyZWRCdWZIYXNoOwog CitzdGF0aWMgdm9pZCBCdWZUYWJsZVNobWVtUmVxdWVzdCh2b2lkICphcmcpOwogCi0vKgotICog RXN0aW1hdGUgc3BhY2UgbmVlZGVkIGZvciBtYXBwaW5nIGhhc2h0YWJsZQotICoJCXNpemUgaXMg dGhlIGRlc2lyZWQgaGFzaCB0YWJsZSBzaXplIChwb3NzaWJseSBtb3JlIHRoYW4gTkJ1ZmZlcnMp Ci0gKi8KLVNpemUKLUJ1ZlRhYmxlU2htZW1TaXplKGludCBzaXplKQotewotCXJldHVybiBoYXNo X2VzdGltYXRlX3NpemUoc2l6ZSwgc2l6ZW9mKEJ1ZmZlckxvb2t1cEVudCkpOwotfQorY29uc3Qg U2htZW1DYWxsYmFja3MgQnVmVGFibGVTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9 IEJ1ZlRhYmxlU2htZW1SZXF1ZXN0LAorCS8qIG5vIHNwZWNpYWwgaW5pdGlhbGl6YXRpb24gbmVl ZGVkLCB0aGUgaGFzaCB0YWJsZSB3aWxsIHN0YXJ0IGVtcHR5ICovCit9OwogCiAvKgotICogSW5p dGlhbGl6ZSBzaG1lbSBoYXNoIHRhYmxlIGZvciBtYXBwaW5nIGJ1ZmZlcnMKKyAqIFJlZ2lzdGVy IHNobWVtIGhhc2ggdGFibGUgZm9yIG1hcHBpbmcgYnVmZmVycy4KICAqCQlzaXplIGlzIHRoZSBk ZXNpcmVkIGhhc2ggdGFibGUgc2l6ZSAocG9zc2libHkgbW9yZSB0aGFuIE5CdWZmZXJzKQogICov CiB2b2lkCi1Jbml0QnVmVGFibGUoaW50IHNpemUpCitCdWZUYWJsZVNobWVtUmVxdWVzdCh2b2lk ICphcmcpCiB7Ci0JSEFTSENUTAkJaW5mbzsKLQotCS8qIGFzc3VtZSBubyBsb2NraW5nIGlzIG5l ZWRlZCB5ZXQgKi8KLQotCS8qIEJ1ZmZlclRhZyBtYXBzIHRvIEJ1ZmZlciAqLwotCWluZm8ua2V5 c2l6ZSA9IHNpemVvZihCdWZmZXJUYWcpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKEJ1ZmZl ckxvb2t1cEVudCk7Ci0JaW5mby5udW1fcGFydGl0aW9ucyA9IE5VTV9CVUZGRVJfUEFSVElUSU9O UzsKLQotCVNoYXJlZEJ1Zkhhc2ggPSBTaG1lbUluaXRIYXNoKCJTaGFyZWQgQnVmZmVyIExvb2t1 cCBUYWJsZSIsCi0JCQkJCQkJCSAgc2l6ZSwKLQkJCQkJCQkJICAmaW5mbywKLQkJCQkJCQkJICBI QVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9QQVJUSVRJT04gfCBIQVNIX0ZJWEVEX1NJWkUp OworCWludAkJCXNpemU7CisKKwkvKgorCSAqIFJlcXVlc3QgdGhlIHNoYXJlZCBidWZmZXIgbG9v a3VwIGhhc2h0YWJsZS4KKwkgKgorCSAqIFNpbmNlIHdlIGNhbid0IHRvbGVyYXRlIHJ1bm5pbmcg b3V0IG9mIGxvb2t1cCB0YWJsZSBlbnRyaWVzLCB3ZSBtdXN0IGJlCisJICogc3VyZSB0byBzcGVj aWZ5IGFuIGFkZXF1YXRlIHRhYmxlIHNpemUgaGVyZS4gIFRoZSBtYXhpbXVtIHN0ZWFkeS1zdGF0 ZQorCSAqIHVzYWdlIGlzIG9mIGNvdXJzZSBOQnVmZmVycyBlbnRyaWVzLCBidXQgQnVmZmVyQWxs b2MoKSB0cmllcyB0byBpbnNlcnQKKwkgKiBhIG5ldyBlbnRyeSBiZWZvcmUgZGVsZXRpbmcgdGhl IG9sZC4gIEluIHByaW5jaXBsZSB0aGlzIGNvdWxkIGJlCisJICogaGFwcGVuaW5nIGluIGVhY2gg cGFydGl0aW9uIGNvbmN1cnJlbnRseSwgc28gd2UgY291bGQgbmVlZCBhcyBtYW55IGFzCisJICog TkJ1ZmZlcnMgKyBOVU1fQlVGRkVSX1BBUlRJVElPTlMgZW50cmllcy4KKwkgKi8KKwlzaXplID0g TkJ1ZmZlcnMgKyBOVU1fQlVGRkVSX1BBUlRJVElPTlM7CisKKwlTaG1lbVJlcXVlc3RIYXNoKC5u YW1lID0gIlNoYXJlZCBCdWZmZXIgTG9va3VwIFRhYmxlIiwKKwkJCQkJIC5uZWxlbXMgPSBzaXpl LAorCQkJCQkgLnB0ciA9ICZTaGFyZWRCdWZIYXNoLAorCQkJCQkgLmhhc2hfaW5mby5rZXlzaXpl ID0gc2l6ZW9mKEJ1ZmZlclRhZyksCisJCQkJCSAuaGFzaF9pbmZvLmVudHJ5c2l6ZSA9IHNpemVv ZihCdWZmZXJMb29rdXBFbnQpLAorCQkJCQkgLmhhc2hfaW5mby5udW1fcGFydGl0aW9ucyA9IE5V TV9CVUZGRVJfUEFSVElUSU9OUywKKwkJCQkJIC5oYXNoX2ZsYWdzID0gSEFTSF9FTEVNIHwgSEFT SF9CTE9CUyB8IEhBU0hfUEFSVElUSU9OIHwgSEFTSF9GSVhFRF9TSVpFLAorCQkpOwogfQogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMKaW5kZXggYjc2ODc4MzYxODguLmZk YjViYWQ3OTEwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlz dC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMKQEAgLTIwLDYg KzIwLDggQEAKICNpbmNsdWRlICJzdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaCIKICNpbmNsdWRlICJz dG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgorI2luY2x1ZGUgInN0 b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKIAogI2RlZmlu ZSBJTlRfQUNDRVNTX09OQ0UodmFyKQkoKGludCkoKigodm9sYXRpbGUgaW50ICopJih2YXIpKSkp CiAKQEAgLTU2LDYgKzU4LDE0IEBAIHR5cGVkZWYgc3RydWN0CiAvKiBQb2ludGVycyB0byBzaGFy ZWQgc3RhdGUgKi8KIHN0YXRpYyBCdWZmZXJTdHJhdGVneUNvbnRyb2wgKlN0cmF0ZWd5Q29udHJv bCA9IE5VTEw7CiAKK3N0YXRpYyB2b2lkIFN0cmF0ZWd5Q3RsU2htZW1SZXF1ZXN0KHZvaWQgKmFy Zyk7CitzdGF0aWMgdm9pZCBTdHJhdGVneUN0bFNobWVtSW5pdCh2b2lkICphcmcpOworCitjb25z dCBTaG1lbUNhbGxiYWNrcyBTdHJhdGVneUN0bFNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0 X2ZuID0gU3RyYXRlZ3lDdGxTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBTdHJhdGVneUN0bFNo bWVtSW5pdCwKK307CisKIC8qCiAgKiBQcml2YXRlIChub24tc2hhcmVkKSBzdGF0ZSBmb3IgbWFu YWdpbmcgYSByaW5nIG9mIHNoYXJlZCBidWZmZXJzIHRvIHJlLXVzZS4KICAqIFRoaXMgaXMgY3Vy cmVudGx5IHRoZSBvbmx5IGtpbmQgb2YgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgb2JqZWN0LCBidXQg c29tZWRheQpAQCAtMzY5LDgwICszNzksMzUgQEAgU3RyYXRlZ3lOb3RpZnlCZ1dyaXRlcihpbnQg Ymd3cHJvY25vKQogCiAKIC8qCi0gKiBTdHJhdGVneVNobWVtU2l6ZQotICoKLSAqIGVzdGltYXRl IHRoZSBzaXplIG9mIHNoYXJlZCBtZW1vcnkgdXNlZCBieSB0aGUgZnJlZWxpc3QtcmVsYXRlZCBz dHJ1Y3R1cmVzLgotICoKLSAqIE5vdGU6IGZvciBzb21ld2hhdCBoaXN0b3JpY2FsIHJlYXNvbnMs IHRoZSBidWZmZXIgbG9va3VwIGhhc2h0YWJsZSBzaXplCi0gKiBpcyBhbHNvIGRldGVybWluZWQg aGVyZS4KKyAqIFN0cmF0ZWd5Q3RsU2htZW1SZXF1ZXN0IC0tIHJlcXVlc3Qgc2hhcmVkIG1lbW9y eSBmb3IgdGhlIGJ1ZmZlcgorICoJCWNhY2hlIHJlcGxhY2VtZW50IHN0cmF0ZWd5LgogICovCi1T aXplCi1TdHJhdGVneVNobWVtU2l6ZSh2b2lkKQorc3RhdGljIHZvaWQKK1N0cmF0ZWd5Q3RsU2ht ZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlTaXplCQlzaXplID0gMDsKLQotCS8qIHNpemUgb2Yg bG9va3VwIGhhc2ggdGFibGUgLi4uIHNlZSBjb21tZW50IGluIFN0cmF0ZWd5SW5pdGlhbGl6ZSAq LwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBCdWZUYWJsZVNobWVtU2l6ZShOQnVmZmVycyArIE5V TV9CVUZGRVJfUEFSVElUSU9OUykpOwotCi0JLyogc2l6ZSBvZiB0aGUgc2hhcmVkIHJlcGxhY2Vt ZW50IHN0cmF0ZWd5IGNvbnRyb2wgYmxvY2sgKi8KLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgTUFY QUxJR04oc2l6ZW9mKEJ1ZmZlclN0cmF0ZWd5Q29udHJvbCkpKTsKLQotCXJldHVybiBzaXplOwor CVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJCdWZmZXIgU3RyYXRlZ3kgU3RhdHVzIiwKKwkJ CQkJICAgLnNpemUgPSBzaXplb2YoQnVmZmVyU3RyYXRlZ3lDb250cm9sKSwKKwkJCQkJICAgLnB0 ciA9ICh2b2lkICoqKSAmU3RyYXRlZ3lDb250cm9sCisJCSk7CiB9CiAKIC8qCi0gKiBTdHJhdGVn eUluaXRpYWxpemUgLS0gaW5pdGlhbGl6ZSB0aGUgYnVmZmVyIGNhY2hlIHJlcGxhY2VtZW50Ci0g KgkJc3RyYXRlZ3kuCi0gKgotICogQXNzdW1lczogQWxsIG9mIHRoZSBidWZmZXJzIGFyZSBhbHJl YWR5IGJ1aWx0IGludG8gYSBsaW5rZWQgbGlzdC4KLSAqCQlPbmx5IGNhbGxlZCBieSBwb3N0bWFz dGVyIGFuZCBvbmx5IGR1cmluZyBpbml0aWFsaXphdGlvbi4KKyAqIFN0cmF0ZWd5Q3RsU2htZW1J bml0IC0tIGluaXRpYWxpemUgdGhlIGJ1ZmZlciBjYWNoZSByZXBsYWNlbWVudCBzdHJhdGVneS4K ICAqLwotdm9pZAotU3RyYXRlZ3lJbml0aWFsaXplKGJvb2wgaW5pdCkKK3N0YXRpYyB2b2lkCitT dHJhdGVneUN0bFNobWVtSW5pdCh2b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91bmQ7CisJU3Bpbkxv Y2tJbml0KCZTdHJhdGVneUNvbnRyb2wtPmJ1ZmZlcl9zdHJhdGVneV9sb2NrKTsKIAotCS8qCi0J ICogSW5pdGlhbGl6ZSB0aGUgc2hhcmVkIGJ1ZmZlciBsb29rdXAgaGFzaHRhYmxlLgotCSAqCi0J ICogU2luY2Ugd2UgY2FuJ3QgdG9sZXJhdGUgcnVubmluZyBvdXQgb2YgbG9va3VwIHRhYmxlIGVu dHJpZXMsIHdlIG11c3QgYmUKLQkgKiBzdXJlIHRvIHNwZWNpZnkgYW4gYWRlcXVhdGUgdGFibGUg c2l6ZSBoZXJlLiAgVGhlIG1heGltdW0gc3RlYWR5LXN0YXRlCi0JICogdXNhZ2UgaXMgb2YgY291 cnNlIE5CdWZmZXJzIGVudHJpZXMsIGJ1dCBCdWZmZXJBbGxvYygpIHRyaWVzIHRvIGluc2VydAot CSAqIGEgbmV3IGVudHJ5IGJlZm9yZSBkZWxldGluZyB0aGUgb2xkLiAgSW4gcHJpbmNpcGxlIHRo aXMgY291bGQgYmUKLQkgKiBoYXBwZW5pbmcgaW4gZWFjaCBwYXJ0aXRpb24gY29uY3VycmVudGx5 LCBzbyB3ZSBjb3VsZCBuZWVkIGFzIG1hbnkgYXMKLQkgKiBOQnVmZmVycyArIE5VTV9CVUZGRVJf UEFSVElUSU9OUyBlbnRyaWVzLgotCSAqLwotCUluaXRCdWZUYWJsZShOQnVmZmVycyArIE5VTV9C VUZGRVJfUEFSVElUSU9OUyk7Ci0KLQkvKgotCSAqIEdldCBvciBjcmVhdGUgdGhlIHNoYXJlZCBz dHJhdGVneSBjb250cm9sIGJsb2NrCi0JICovCi0JU3RyYXRlZ3lDb250cm9sID0gKEJ1ZmZlclN0 cmF0ZWd5Q29udHJvbCAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkJ1ZmZlciBTdHJhdGVneSBTdGF0 dXMiLAotCQkJCQkJc2l6ZW9mKEJ1ZmZlclN0cmF0ZWd5Q29udHJvbCksCi0JCQkJCQkmZm91bmQp OwotCi0JaWYgKCFmb3VuZCkKLQl7Ci0JCS8qCi0JCSAqIE9ubHkgZG9uZSBvbmNlLCB1c3VhbGx5 IGluIHBvc3RtYXN0ZXIKLQkJICovCi0JCUFzc2VydChpbml0KTsKLQotCQlTcGluTG9ja0luaXQo JlN0cmF0ZWd5Q29udHJvbC0+YnVmZmVyX3N0cmF0ZWd5X2xvY2spOworCS8qIEluaXRpYWxpemUg dGhlIGNsb2NrLXN3ZWVwIHBvaW50ZXIgKi8KKwlwZ19hdG9taWNfaW5pdF91MzIoJlN0cmF0ZWd5 Q29udHJvbC0+bmV4dFZpY3RpbUJ1ZmZlciwgMCk7CiAKLQkJLyogSW5pdGlhbGl6ZSB0aGUgY2xv Y2stc3dlZXAgcG9pbnRlciAqLwotCQlwZ19hdG9taWNfaW5pdF91MzIoJlN0cmF0ZWd5Q29udHJv bC0+bmV4dFZpY3RpbUJ1ZmZlciwgMCk7CisJLyogQ2xlYXIgc3RhdGlzdGljcyAqLworCVN0cmF0 ZWd5Q29udHJvbC0+Y29tcGxldGVQYXNzZXMgPSAwOworCXBnX2F0b21pY19pbml0X3UzMigmU3Ry YXRlZ3lDb250cm9sLT5udW1CdWZmZXJBbGxvY3MsIDApOwogCi0JCS8qIENsZWFyIHN0YXRpc3Rp Y3MgKi8KLQkJU3RyYXRlZ3lDb250cm9sLT5jb21wbGV0ZVBhc3NlcyA9IDA7Ci0JCXBnX2F0b21p Y19pbml0X3UzMigmU3RyYXRlZ3lDb250cm9sLT5udW1CdWZmZXJBbGxvY3MsIDApOwotCi0JCS8q IE5vIHBlbmRpbmcgbm90aWZpY2F0aW9uICovCi0JCVN0cmF0ZWd5Q29udHJvbC0+Ymd3cHJvY25v ID0gLTE7Ci0JfQotCWVsc2UKLQkJQXNzZXJ0KCFpbml0KTsKKwkvKiBObyBwZW5kaW5nIG5vdGlm aWNhdGlvbiAqLworCVN0cmF0ZWd5Q29udHJvbC0+Ymd3cHJvY25vID0gLTE7CiB9CiAKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvaXBjaS5jCmluZGV4IGE1MTBjOTI4ZGFhLi5mNjRjMWQ1OWZhMyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL2lwY2kuYwpAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dh bHJlY2VpdmVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9haW9fc3Vic3lzLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNp bmNsdWRlICJzdG9yYWdlL2RzbS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9wZ19zaG1lbS5oIgpAQCAtOTksNyArOTgsNiBAQCBDYWxjdWxhdGVTaG1lbVNp emUodm9pZCkKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2htZW1HZXRSZXF1ZXN0ZWRTaXplKCkp OwogCiAJLyogbGVnYWN5IHN1YnN5c3RlbXMgKi8KLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgQnVm ZmVyTWFuYWdlclNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgTG9ja01hbmFn ZXJTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFhMb2dQcmVmZXRjaFNobWVt U2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgWExPR1NobWVtU2l6ZSgpKTsKQEAgLTI2 Myw3ICsyNjEsNiBAQCBDcmVhdGVPckF0dGFjaFNobWVtU3RydWN0cyh2b2lkKQogCVhMT0dTaG1l bUluaXQoKTsKIAlYTG9nUHJlZmV0Y2hTaG1lbUluaXQoKTsKIAlYTG9nUmVjb3ZlcnlTaG1lbUlu aXQoKTsKLQlCdWZmZXJNYW5hZ2VyU2htZW1Jbml0KCk7CiAKIAkvKgogCSAqIFNldCB1cCBsb2Nr IG1hbmFnZXIKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmX2ludGVybmFscy5o IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZfaW50ZXJuYWxzLmgKaW5kZXggYWQxYjdiMjIxNmEu Ljg5NjE1YTI1NGEzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zl9pbnRlcm5h bHMuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaApAQCAtNTg3LDEy ICs1ODcsNyBAQCBleHRlcm4gYm9vbCBTdHJhdGVneVJlamVjdEJ1ZmZlcihCdWZmZXJBY2Nlc3NT dHJhdGVneSBzdHJhdGVneSwKIGV4dGVybiBpbnQJU3RyYXRlZ3lTeW5jU3RhcnQodWludDMyICpj b21wbGV0ZV9wYXNzZXMsIHVpbnQzMiAqbnVtX2J1Zl9hbGxvYyk7CiBleHRlcm4gdm9pZCBTdHJh dGVneU5vdGlmeUJnV3JpdGVyKGludCBiZ3dwcm9jbm8pOwogCi1leHRlcm4gU2l6ZSBTdHJhdGVn eVNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFN0cmF0ZWd5SW5pdGlhbGl6ZShib29sIGlu aXQpOwotCiAvKiBidWZfdGFibGUuYyAqLwotZXh0ZXJuIFNpemUgQnVmVGFibGVTaG1lbVNpemUo aW50IHNpemUpOwotZXh0ZXJuIHZvaWQgSW5pdEJ1ZlRhYmxlKGludCBzaXplKTsKIGV4dGVybiB1 aW50MzIgQnVmVGFibGVIYXNoQ29kZShCdWZmZXJUYWcgKnRhZ1B0cik7CiBleHRlcm4gaW50CUJ1 ZlRhYmxlTG9va3VwKEJ1ZmZlclRhZyAqdGFnUHRyLCB1aW50MzIgaGFzaGNvZGUpOwogZXh0ZXJu IGludAlCdWZUYWJsZUluc2VydChCdWZmZXJUYWcgKnRhZ1B0ciwgdWludDMyIGhhc2hjb2RlLCBp bnQgYnVmX2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmbWdyLmggYi9z cmMvaW5jbHVkZS9zdG9yYWdlL2J1Zm1nci5oCmluZGV4IGFhNjFhMzlkOWU2Li42ODM3YjM1ZmM2 ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZtZ3IuaAorKysgYi9zcmMvaW5j bHVkZS9zdG9yYWdlL2J1Zm1nci5oCkBAIC0zNzEsMTAgKzM3MSw2IEBAIGV4dGVybiB2b2lkIE1h cmtEaXJ0eUFsbFVucGlubmVkQnVmZmVycyhpbnQzMiAqYnVmZmVyc19kaXJ0aWVkLAogCQkJCQkJ CQkJCWludDMyICpidWZmZXJzX2FscmVhZHlfZGlydHksCiAJCQkJCQkJCQkJaW50MzIgKmJ1ZmZl cnNfc2tpcHBlZCk7CiAKLS8qIGluIGJ1Zl9pbml0LmMgKi8KLWV4dGVybiB2b2lkIEJ1ZmZlck1h bmFnZXJTaG1lbUluaXQodm9pZCk7Ci1leHRlcm4gU2l6ZSBCdWZmZXJNYW5hZ2VyU2htZW1TaXpl KHZvaWQpOwotCiAvKiBpbiBsb2NhbGJ1Zi5jICovCiBleHRlcm4gdm9pZCBBdFByb2NFeGl0X0xv Y2FsQnVmZmVycyh2b2lkKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJz eXN0ZW1saXN0LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaAppbmRleCBi NDM4Nzk0ZDQ2ZC4uZDhlMTE3NTZhNjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv c3Vic3lzdGVtbGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5o CkBAIC0zNiw2ICszNiw5IEBAIFBHX1NITUVNX1NVQlNZU1RFTShDTE9HU2htZW1DYWxsYmFja3Mp CiBQR19TSE1FTV9TVUJTWVNURU0oQ29tbWl0VHNTaG1lbUNhbGxiYWNrcykKIFBHX1NITUVNX1NV QlNZU1RFTShTVUJUUkFOU1NobWVtQ2FsbGJhY2tzKQogUEdfU0hNRU1fU1VCU1lTVEVNKE11bHRp WGFjdFNobWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKEJ1ZmZlck1hbmFnZXJTaG1l bUNhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RFTShTdHJhdGVneUN0bFNobWVtQ2FsbGJhY2tz KQorUEdfU0hNRU1fU1VCU1lTVEVNKEJ1ZlRhYmxlU2htZW1DYWxsYmFja3MpCiAKIC8qIHByZWRp Y2F0ZSBsb2NrIG1hbmFnZXIgKi8KIFBHX1NITUVNX1NVQlNZU1RFTShQcmVkaWNhdGVMb2NrU2ht ZW1DYWxsYmFja3MpCi0tIAoyLjM0LjEKCg== --00000000000057312d064eb03f86 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405-0014-Convert-all-remaining-subsystems-to-use-th.patch" Content-Disposition: attachment; filename="v20260405-0014-Convert-all-remaining-subsystems-to-use-th.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlchnfe13 RnJvbSBiZDA2NzE3MDM0ZGMyNTRlODEwNDhkNjc5YjQ0NGZiNTk2ZmNlYjAwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5uYWthbmdh c0Bpa2kuZmk+CkRhdGU6IFNhdCwgMjEgTWFyIDIwMjYgMTk6MDU6MjYgKzAyMDAKU3ViamVjdDog W1BBVENIIHYyMDI2MDQwNSAxNC8xNV0gQ29udmVydCBhbGwgcmVtYWluaW5nIHN1YnN5c3RlbXMg dG8gdXNlIHRoZQogbmV3IEFQSQoKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3N5bmNz Y2FuLmMgICAgICAgICAgfCAgNzYgKysrKy0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUv bmJ0dXRpbHMuYyAgICAgICAgICB8ICA1NCArKystLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3R3b3BoYXNlLmMgICAgICAgICB8ICA3NSArKysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jICAgICAgICAgICAgIHwgIDgyICsrKysrLS0tLQogc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZ3ByZWZldGNoZXIuYyAgIHwgIDUxICsrKy0tLQogc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMgICAgIHwgIDM1ICsrLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d3YWl0LmMgICAgICAgICB8ICA1MCArKy0tLQogc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgICAgICAgIHwgIDc5ICsrKystLS0tCiBz cmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgICAgICAgICAgICAgfCAxMDUgKysrKyst LS0tLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMgICAgICAgICB8ICA1 NiArKystLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvZGF0YWNoZWNrc3VtX3N0YXRlLmMgICB8 ICA0MSArKy0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYyAgICAgICAgICAgICAg IHwgIDQzICsrKy0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYyAgICAg ICAgfCAgNjAgKysrLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVy LmMgICAgfCAgNTYgKysrLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2lj YWxjdGwuYyAgfCAgMjkgKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdp bi5jICAgICAgfCAgNTkgKysrLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Ns b3RzeW5jLmMgICAgfCAgNDEgKysrLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyAg ICAgICAgICAgICAgICB8ICA2NCArKystLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxy ZWNlaXZlcmZ1bmNzLmMgICAgfCAgNTEgKysrLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxzZW5kZXIuYyAgICAgICAgICAgfCAgNTkgKysrLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9pcGNpLmMgICAgICAgICAgICAgICAgfCAxMjQgKy0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQv c3RvcmFnZS9sbWdyL2xvY2suYyAgICAgICAgICAgICAgIHwgMTEzICsrKysrLS0tLS0tLQogc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFja2VuZF9zdGF0dXMuYyAgIHwgMTczICsrKysrKyst LS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3NobWVtLmMgICAg IHwgMTU4ICsrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRf ZXZlbnQuYyAgICAgICB8ICA4MyArKysrLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvaW5q ZWN0aW9uX3BvaW50LmMgICAgICB8ICA1NyArKystLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9uYnRy ZWUuaCAgICAgICAgICAgICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3luY3Nj YW4uaCAgICAgICAgICAgICAgICAgfCAgIDIgLQogc3JjL2luY2x1ZGUvYWNjZXNzL3R3b3BoYXNl LmggICAgICAgICAgICAgICAgIHwgICAzIC0KIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggICAg ICAgICAgICAgICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3ByZWZldGNo ZXIuaCAgICAgICAgICAgfCAgIDMgLQogc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5o ICAgICAgICAgICAgIHwgICAzIC0KIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9nd2FpdC5oICAgICAg ICAgICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9wZ3N0YXQuaCAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDQgLQogc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmggICAg ICAgICAgIHwgICA0IC0KIHNyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3b3JrZXJfaW50ZXJuYWxz LmggICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2Jnd3JpdGVyLmggICAgICAgICAg ICAgfCAgIDMgLQogc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9kYXRhY2hlY2tzdW1fc3RhdGUuaCAg IHwgICA0IC0KIHNyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvcGdhcmNoLmggICAgICAgICAgICAgICB8 ICAgMiAtCiBzcmMvaW5jbHVkZS9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuaCAgICAgICAgfCAg IDIgLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGN0bC5oICAgICAgICAgIHwgICAy IC0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oICAgICB8ICAgMyAt CiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaCAgICAgICAgICAgICAgfCAgIDQgLQog c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oICAgICAgICAgICAgICAgIHwgICA0IC0KIHNy Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3RzeW5jLmggICAgICAgICAgICB8ICAgMiAtCiBzcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oICAgICAgICAgfCAgIDIgLQogc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmggICAgICAgICAgIHwgICAyIC0KIHNyYy9pbmNs dWRlL3N0b3JhZ2UvbG9jay5oICAgICAgICAgICAgICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVk ZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaCAgICAgICAgICAgfCAgMjcgKysrCiBzcmMvaW5jbHVk ZS91dGlscy9iYWNrZW5kX3N0YXR1cy5oICAgICAgICAgICAgfCAgIDggLQogc3JjL2luY2x1ZGUv dXRpbHMvaW5qZWN0aW9uX3BvaW50LmggICAgICAgICAgIHwgICAzIC0KIHNyYy9pbmNsdWRlL3V0 aWxzL3dhaXRfZXZlbnQuaCAgICAgICAgICAgICAgICB8ICAgMiAtCiAuLi4vaW5qZWN0aW9uX3Bv aW50cy9pbmplY3Rpb25fcG9pbnRzLmMgICAgICAgfCAgNTkgKystLS0tCiBzcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfYWlvL3Rlc3RfYWlvLmMgICAgICAgICAgfCAxMDcgKysrKystLS0tLS0KIDU0IGZp bGVzIGNoYW5nZWQsIDkzMyBpbnNlcnRpb25zKCspLCAxMjA2IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vc3luY3NjYW4uYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9jb21tb24vc3luY3NjYW4uYwppbmRleCA2ZmNmY2IwZTU2MC4uMGY5ZWIxNjdiZWQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vc3luY3NjYW4uYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3N5bmNzY2FuLmMKQEAgLTUwLDYgKzUwLDcgQEAKICNp bmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJzdG9yYWdlL2x3bG9jay5oIgogI2luY2x1 ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNp bmNsdWRlICJ1dGlscy9yZWwuaCIKIAogCkBAIC0xMTEsNiArMTEyLDE0IEBAIHR5cGVkZWYgc3Ry dWN0IHNzX3NjYW5fbG9jYXRpb25zX3QKICNkZWZpbmUgU2l6ZU9mU2NhbkxvY2F0aW9ucyhOKSBc CiAJKG9mZnNldG9mKHNzX3NjYW5fbG9jYXRpb25zX3QsIGl0ZW1zKSArIChOKSAqIHNpemVvZihz c19scnVfaXRlbV90KSkKIAorc3RhdGljIHZvaWQgU3luY1NjYW5TaG1lbVJlcXVlc3Qodm9pZCAq YXJnKTsKK3N0YXRpYyB2b2lkIFN5bmNTY2FuU2htZW1Jbml0KHZvaWQgKmFyZyk7CisKK2NvbnN0 IFNobWVtQ2FsbGJhY2tzIFN5bmNTY2FuU2htZW1DYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4g PSBTeW5jU2NhblNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IFN5bmNTY2FuU2htZW1Jbml0LAor fTsKKwogLyogUG9pbnRlciB0byBzdHJ1Y3QgaW4gc2hhcmVkIG1lbW9yeSAqLwogc3RhdGljIHNz X3NjYW5fbG9jYXRpb25zX3QgKnNjYW5fbG9jYXRpb25zOwogCkBAIC0xMjAsNTggKzEyOSw0NyBA QCBzdGF0aWMgQmxvY2tOdW1iZXIgc3Nfc2VhcmNoKFJlbEZpbGVMb2NhdG9yIHJlbGZpbGVsb2Nh dG9yLAogCiAKIC8qCi0gKiBTeW5jU2NhblNobWVtU2l6ZSAtLS0gcmVwb3J0IGFtb3VudCBvZiBz aGFyZWQgbWVtb3J5IHNwYWNlIG5lZWRlZAorICogU3luY1NjYW5TaG1lbVJlcXVlc3QgLS0tIHJl Z2lzdGVyIHRoaXMgbW9kdWxlJ3Mgc2hhcmVkIG1lbW9yeQogICovCi1TaXplCi1TeW5jU2NhblNo bWVtU2l6ZSh2b2lkKQorc3RhdGljIHZvaWQKK1N5bmNTY2FuU2htZW1SZXF1ZXN0KHZvaWQgKmFy ZykKIHsKLQlyZXR1cm4gU2l6ZU9mU2NhbkxvY2F0aW9ucyhTWU5DX1NDQU5fTkVMRU0pOworCVNo bWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJTeW5jIFNjYW4gTG9jYXRpb25zIExpc3QiLAorCQkJ CQkgICAuc2l6ZSA9IFNpemVPZlNjYW5Mb2NhdGlvbnMoU1lOQ19TQ0FOX05FTEVNKSwKKwkJCQkJ ICAgLnB0ciA9ICh2b2lkICoqKSAmc2Nhbl9sb2NhdGlvbnMsCisJCSk7CiB9CiAKIC8qCiAgKiBT eW5jU2NhblNobWVtSW5pdCAtLS0gaW5pdGlhbGl6ZSB0aGlzIG1vZHVsZSdzIHNoYXJlZCBtZW1v cnkKICAqLwotdm9pZAotU3luY1NjYW5TaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitTeW5j U2NhblNobWVtSW5pdCh2b2lkICphcmcpCiB7CiAJaW50CQkJaTsKLQlib29sCQlmb3VuZDsKIAot CXNjYW5fbG9jYXRpb25zID0gKHNzX3NjYW5fbG9jYXRpb25zX3QgKikKLQkJU2htZW1Jbml0U3Ry dWN0KCJTeW5jIFNjYW4gTG9jYXRpb25zIExpc3QiLAotCQkJCQkJU2l6ZU9mU2NhbkxvY2F0aW9u cyhTWU5DX1NDQU5fTkVMRU0pLAotCQkJCQkJJmZvdW5kKTsKKwlzY2FuX2xvY2F0aW9ucy0+aGVh ZCA9ICZzY2FuX2xvY2F0aW9ucy0+aXRlbXNbMF07CisJc2Nhbl9sb2NhdGlvbnMtPnRhaWwgPSAm c2Nhbl9sb2NhdGlvbnMtPml0ZW1zW1NZTkNfU0NBTl9ORUxFTSAtIDFdOwogCi0JaWYgKCFJc1Vu ZGVyUG9zdG1hc3RlcikKKwlmb3IgKGkgPSAwOyBpIDwgU1lOQ19TQ0FOX05FTEVNOyBpKyspCiAJ ewotCQkvKiBJbml0aWFsaXplIHNoYXJlZCBtZW1vcnkgYXJlYSAqLwotCQlBc3NlcnQoIWZvdW5k KTsKLQotCQlzY2FuX2xvY2F0aW9ucy0+aGVhZCA9ICZzY2FuX2xvY2F0aW9ucy0+aXRlbXNbMF07 Ci0JCXNjYW5fbG9jYXRpb25zLT50YWlsID0gJnNjYW5fbG9jYXRpb25zLT5pdGVtc1tTWU5DX1ND QU5fTkVMRU0gLSAxXTsKLQotCQlmb3IgKGkgPSAwOyBpIDwgU1lOQ19TQ0FOX05FTEVNOyBpKysp Ci0JCXsKLQkJCXNzX2xydV9pdGVtX3QgKml0ZW0gPSAmc2Nhbl9sb2NhdGlvbnMtPml0ZW1zW2ld OwotCi0JCQkvKgotCQkJICogSW5pdGlhbGl6ZSBhbGwgc2xvdHMgd2l0aCBpbnZhbGlkIHZhbHVl cy4gQXMgc2NhbnMgYXJlIHN0YXJ0ZWQsCi0JCQkgKiB0aGVzZSBpbnZhbGlkIGVudHJpZXMgd2ls bCBmYWxsIG9mZiB0aGUgTFJVIGxpc3QgYW5kIGdldAotCQkJICogcmVwbGFjZWQgd2l0aCByZWFs IGVudHJpZXMuCi0JCQkgKi8KLQkJCWl0ZW0tPmxvY2F0aW9uLnJlbGZpbGVsb2NhdG9yLnNwY09p ZCA9IEludmFsaWRPaWQ7Ci0JCQlpdGVtLT5sb2NhdGlvbi5yZWxmaWxlbG9jYXRvci5kYk9pZCA9 IEludmFsaWRPaWQ7Ci0JCQlpdGVtLT5sb2NhdGlvbi5yZWxmaWxlbG9jYXRvci5yZWxOdW1iZXIg PSBJbnZhbGlkUmVsRmlsZU51bWJlcjsKLQkJCWl0ZW0tPmxvY2F0aW9uLmxvY2F0aW9uID0gSW52 YWxpZEJsb2NrTnVtYmVyOwotCi0JCQlpdGVtLT5wcmV2ID0gKGkgPiAwKSA/Ci0JCQkJKCZzY2Fu X2xvY2F0aW9ucy0+aXRlbXNbaSAtIDFdKSA6IE5VTEw7Ci0JCQlpdGVtLT5uZXh0ID0gKGkgPCBT WU5DX1NDQU5fTkVMRU0gLSAxKSA/Ci0JCQkJKCZzY2FuX2xvY2F0aW9ucy0+aXRlbXNbaSArIDFd KSA6IE5VTEw7Ci0JCX0KKwkJc3NfbHJ1X2l0ZW1fdCAqaXRlbSA9ICZzY2FuX2xvY2F0aW9ucy0+ aXRlbXNbaV07CisKKwkJLyoKKwkJICogSW5pdGlhbGl6ZSBhbGwgc2xvdHMgd2l0aCBpbnZhbGlk IHZhbHVlcy4gQXMgc2NhbnMgYXJlIHN0YXJ0ZWQsCisJCSAqIHRoZXNlIGludmFsaWQgZW50cmll cyB3aWxsIGZhbGwgb2ZmIHRoZSBMUlUgbGlzdCBhbmQgZ2V0IHJlcGxhY2VkCisJCSAqIHdpdGgg cmVhbCBlbnRyaWVzLgorCQkgKi8KKwkJaXRlbS0+bG9jYXRpb24ucmVsZmlsZWxvY2F0b3Iuc3Bj T2lkID0gSW52YWxpZE9pZDsKKwkJaXRlbS0+bG9jYXRpb24ucmVsZmlsZWxvY2F0b3IuZGJPaWQg PSBJbnZhbGlkT2lkOworCQlpdGVtLT5sb2NhdGlvbi5yZWxmaWxlbG9jYXRvci5yZWxOdW1iZXIg PSBJbnZhbGlkUmVsRmlsZU51bWJlcjsKKwkJaXRlbS0+bG9jYXRpb24ubG9jYXRpb24gPSBJbnZh bGlkQmxvY2tOdW1iZXI7CisKKwkJaXRlbS0+cHJldiA9IChpID4gMCkgPworCQkJKCZzY2FuX2xv Y2F0aW9ucy0+aXRlbXNbaSAtIDFdKSA6IE5VTEw7CisJCWl0ZW0tPm5leHQgPSAoaSA8IFNZTkNf U0NBTl9ORUxFTSAtIDEpID8KKwkJCSgmc2Nhbl9sb2NhdGlvbnMtPml0ZW1zW2kgKyAxXSkgOiBO VUxMOwogCX0KLQllbHNlCi0JCUFzc2VydChmb3VuZCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHV0aWxzLmMKaW5kZXggNzMyYmM3NTBjOWUuLjAxNGZhYTE2MjJmIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHV0aWxzLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAi bGliL3F1bmlxdWUuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJzdG9yYWdl L2x3bG9jay5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInV0 aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRp bHMvcmVsLmgiCkBAIC00MTcsNiArNDE4LDEzIEBAIHR5cGVkZWYgc3RydWN0IEJUVmFjSW5mbwog CiBzdGF0aWMgQlRWYWNJbmZvICpidHZhY2luZm87CiAKK3N0YXRpYyB2b2lkIEJUcmVlU2htZW1S ZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBCVHJlZVNobWVtSW5pdCh2b2lkICphcmcp OworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBCVHJlZVNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1 ZXN0X2ZuID0gQlRyZWVTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBCVHJlZVNobWVtSW5pdCwK K307CiAKIC8qCiAgKiBfYnRfdmFjdXVtX2N5Y2xlaWQgLS0tIGdldCB0aGUgYWN0aXZlIHZhY3V1 bSBjeWNsZSBJRCBmb3IgYW4gaW5kZXgsCkBAIC01NTMsNDcgKzU2MSwzNyBAQCBfYnRfZW5kX3Zh Y3V1bV9jYWxsYmFjayhpbnQgY29kZSwgRGF0dW0gYXJnKQogfQogCiAvKgotICogQlRyZWVTaG1l bVNpemUgLS0tIHJlcG9ydCBhbW91bnQgb2Ygc2hhcmVkIG1lbW9yeSBzcGFjZSBuZWVkZWQKKyAq IEJUcmVlU2htZW1SZXF1ZXN0IC0tLSByZWdpc3RlciB0aGlzIG1vZHVsZSdzIHNoYXJlZCBtZW1v cnkKICAqLwotU2l6ZQotQlRyZWVTaG1lbVNpemUodm9pZCkKK3N0YXRpYyB2b2lkCitCVHJlZVNo bWVtUmVxdWVzdCh2b2lkICphcmcpCiB7CiAJU2l6ZQkJc2l6ZTsKIAogCXNpemUgPSBvZmZzZXRv ZihCVFZhY0luZm8sIHZhY3V1bXMpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShN YXhCYWNrZW5kcywgc2l6ZW9mKEJUT25lVmFjSW5mbykpKTsKLQlyZXR1cm4gc2l6ZTsKKworCVNo bWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJCVHJlZSBWYWN1dW0gU3RhdGUiLAorCQkJCQkgICAu c2l6ZSA9IHNpemUsCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJmJ0dmFjaW5mbywKKwkJKTsK IH0KIAogLyoKICAqIEJUcmVlU2htZW1Jbml0IC0tLSBpbml0aWFsaXplIHRoaXMgbW9kdWxlJ3Mg c2hhcmVkIG1lbW9yeQogICovCi12b2lkCi1CVHJlZVNobWVtSW5pdCh2b2lkKQorc3RhdGljIHZv aWQKK0JUcmVlU2htZW1Jbml0KHZvaWQgKmFyZykKIHsKLQlib29sCQlmb3VuZDsKLQotCWJ0dmFj aW5mbyA9IChCVFZhY0luZm8gKikgU2htZW1Jbml0U3RydWN0KCJCVHJlZSBWYWN1dW0gU3RhdGUi LAotCQkJCQkJCQkJCQkgIEJUcmVlU2htZW1TaXplKCksCi0JCQkJCQkJCQkJCSAgJmZvdW5kKTsK LQotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIpCi0JewotCQkvKiBJbml0aWFsaXplIHNoYXJlZCBt ZW1vcnkgYXJlYSAqLwotCQlBc3NlcnQoIWZvdW5kKTsKLQotCQkvKgotCQkgKiBJdCBkb2Vzbid0 IHJlYWxseSBtYXR0ZXIgd2hhdCB0aGUgY3ljbGUgY291bnRlciBzdGFydHMgYXQsIGJ1dAotCQkg KiBoYXZpbmcgaXQgYWx3YXlzIHN0YXJ0IHRoZSBzYW1lIGRvZXNuJ3Qgc2VlbSBnb29kLiAgU2Vl ZCB3aXRoCi0JCSAqIGxvdy1vcmRlciBiaXRzIG9mIHRpbWUoKSBpbnN0ZWFkLgotCQkgKi8KLQkJ YnR2YWNpbmZvLT5jeWNsZV9jdHIgPSAoQlRDeWNsZUlkKSB0aW1lKE5VTEwpOworCS8qCisJICog SXQgZG9lc24ndCByZWFsbHkgbWF0dGVyIHdoYXQgdGhlIGN5Y2xlIGNvdW50ZXIgc3RhcnRzIGF0 LCBidXQgaGF2aW5nCisJICogaXQgYWx3YXlzIHN0YXJ0IHRoZSBzYW1lIGRvZXNuJ3Qgc2VlbSBn b29kLiAgU2VlZCB3aXRoIGxvdy1vcmRlciBiaXRzCisJICogb2YgdGltZSgpIGluc3RlYWQuCisJ ICovCisJYnR2YWNpbmZvLT5jeWNsZV9jdHIgPSAoQlRDeWNsZUlkKSB0aW1lKE5VTEwpOwogCi0J CWJ0dmFjaW5mby0+bnVtX3ZhY3V1bXMgPSAwOwotCQlidHZhY2luZm8tPm1heF92YWN1dW1zID0g TWF4QmFja2VuZHM7Ci0JfQotCWVsc2UKLQkJQXNzZXJ0KGZvdW5kKTsKKwlidHZhY2luZm8tPm51 bV92YWN1dW1zID0gMDsKKwlidHZhY2luZm8tPm1heF92YWN1dW1zID0gTWF4QmFja2VuZHM7CiB9 CiAKIGJ5dGVhICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3Bo YXNlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jCmluZGV4IGFiMWNi ZDY3YmFjLi44MzY5MjgxODBhOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0vdHdvcGhhc2UuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5j CkBAIC0xMDIsNiArMTAyLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisj aW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMu aCIKICNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNsdWRlICJ1dGlscy9t ZW11dGlscy5oIgpAQCAtMTg3LDggKzE4OCwxNiBAQCB0eXBlZGVmIHN0cnVjdCBUd29QaGFzZVN0 YXRlRGF0YQogCUdsb2JhbFRyYW5zYWN0aW9uIHByZXBYYWN0c1tGTEVYSUJMRV9BUlJBWV9NRU1C RVJdOwogfSBUd29QaGFzZVN0YXRlRGF0YTsKIAorc3RhdGljIHZvaWQgVHdvUGhhc2VTaG1lbVJl cXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFR3b1BoYXNlU2htZW1Jbml0KHZvaWQgKmFy Zyk7CisKIHN0YXRpYyBUd29QaGFzZVN0YXRlRGF0YSAqVHdvUGhhc2VTdGF0ZTsKIAorY29uc3Qg U2htZW1DYWxsYmFja3MgVHdvUGhhc2VTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9 IFR3b1BoYXNlU2htZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gVHdvUGhhc2VTaG1lbUluaXQsCit9 OworCiAvKgogICogR2xvYmFsIHRyYW5zYWN0aW9uIGVudHJ5IGN1cnJlbnRseSBsb2NrZWQgYnkg dXMsIGlmIGFueS4gIE5vdGUgdGhhdCBhbnkKICAqIGFjY2VzcyB0byB0aGUgZW50cnkgcG9pbnRl ZCB0byBieSB0aGlzIHZhcmlhYmxlIG11c3QgYmUgcHJvdGVjdGVkIGJ5CkBAIC0yMzQsMTAgKzI0 MywxMCBAQCBzdGF0aWMgdm9pZCBSZW1vdmVUd29QaGFzZUZpbGUoRnVsbFRyYW5zYWN0aW9uSWQg ZnhpZCwgYm9vbCBnaXZlV2FybmluZyk7CiBzdGF0aWMgdm9pZCBSZWNyZWF0ZVR3b1BoYXNlRmls ZShGdWxsVHJhbnNhY3Rpb25JZCBmeGlkLCB2b2lkICpjb250ZW50LCBpbnQgbGVuKTsKIAogLyoK LSAqIEluaXRpYWxpemF0aW9uIG9mIHNoYXJlZCBtZW1vcnkKKyAqIFJlZ2lzdGVyIHNoYXJlZCBt ZW1vcnkgZm9yIHR3by1waGFzZSBzdGF0ZS4KICAqLwotU2l6ZQotVHdvUGhhc2VTaG1lbVNpemUo dm9pZCkKK3N0YXRpYyB2b2lkCitUd29QaGFzZVNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7CiAJ U2l6ZQkJc2l6ZTsKIApAQCAtMjQ4LDQ2ICsyNTcsNDAgQEAgVHdvUGhhc2VTaG1lbVNpemUodm9p ZCkKIAlzaXplID0gTUFYQUxJR04oc2l6ZSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9z aXplKG1heF9wcmVwYXJlZF94YWN0cywKIAkJCQkJCQkJICAgc2l6ZW9mKEdsb2JhbFRyYW5zYWN0 aW9uRGF0YSkpKTsKLQotCXJldHVybiBzaXplOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9 ICJQcmVwYXJlZCBUcmFuc2FjdGlvbiBUYWJsZSIsCisJCQkJCSAgIC5zaXplID0gc2l6ZSwKKwkJ CQkJICAgLnB0ciA9ICh2b2lkICoqKSAmVHdvUGhhc2VTdGF0ZSwKKwkJKTsKIH0KIAotdm9pZAot VHdvUGhhc2VTaG1lbUluaXQodm9pZCkKKy8qCisgKiBJbml0aWFsaXplIHNoYXJlZCBtZW1vcnkg Zm9yIHR3by1waGFzZSBzdGF0ZS4KKyAqLworc3RhdGljIHZvaWQKK1R3b1BoYXNlU2htZW1Jbml0 KHZvaWQgKmFyZykKIHsKLQlib29sCQlmb3VuZDsKLQotCVR3b1BoYXNlU3RhdGUgPSBTaG1lbUlu aXRTdHJ1Y3QoIlByZXBhcmVkIFRyYW5zYWN0aW9uIFRhYmxlIiwKLQkJCQkJCQkJCVR3b1BoYXNl U2htZW1TaXplKCksCi0JCQkJCQkJCQkmZm91bmQpOwotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIp Ci0JewotCQlHbG9iYWxUcmFuc2FjdGlvbiBneGFjdHM7Ci0JCWludAkJCWk7CisJR2xvYmFsVHJh bnNhY3Rpb24gZ3hhY3RzOworCWludAkJCWk7CiAKLQkJQXNzZXJ0KCFmb3VuZCk7Ci0JCVR3b1Bo YXNlU3RhdGUtPmZyZWVHWGFjdHMgPSBOVUxMOwotCQlUd29QaGFzZVN0YXRlLT5udW1QcmVwWGFj dHMgPSAwOworCVR3b1BoYXNlU3RhdGUtPmZyZWVHWGFjdHMgPSBOVUxMOworCVR3b1BoYXNlU3Rh dGUtPm51bVByZXBYYWN0cyA9IDA7CiAKLQkJLyoKLQkJICogSW5pdGlhbGl6ZSB0aGUgbGlua2Vk IGxpc3Qgb2YgZnJlZSBHbG9iYWxUcmFuc2FjdGlvbkRhdGEgc3RydWN0cwotCQkgKi8KLQkJZ3hh Y3RzID0gKEdsb2JhbFRyYW5zYWN0aW9uKQotCQkJKChjaGFyICopIFR3b1BoYXNlU3RhdGUgKwot CQkJIE1BWEFMSUdOKG9mZnNldG9mKFR3b1BoYXNlU3RhdGVEYXRhLCBwcmVwWGFjdHMpICsKLQkJ CQkJICBzaXplb2YoR2xvYmFsVHJhbnNhY3Rpb24pICogbWF4X3ByZXBhcmVkX3hhY3RzKSk7Ci0J CWZvciAoaSA9IDA7IGkgPCBtYXhfcHJlcGFyZWRfeGFjdHM7IGkrKykKLQkJewotCQkJLyogaW5z ZXJ0IGludG8gbGlua2VkIGxpc3QgKi8KLQkJCWd4YWN0c1tpXS5uZXh0ID0gVHdvUGhhc2VTdGF0 ZS0+ZnJlZUdYYWN0czsKLQkJCVR3b1BoYXNlU3RhdGUtPmZyZWVHWGFjdHMgPSAmZ3hhY3RzW2ld OworCS8qCisJICogSW5pdGlhbGl6ZSB0aGUgbGlua2VkIGxpc3Qgb2YgZnJlZSBHbG9iYWxUcmFu c2FjdGlvbkRhdGEgc3RydWN0cworCSAqLworCWd4YWN0cyA9IChHbG9iYWxUcmFuc2FjdGlvbikK KwkJKChjaGFyICopIFR3b1BoYXNlU3RhdGUgKworCQkgTUFYQUxJR04ob2Zmc2V0b2YoVHdvUGhh c2VTdGF0ZURhdGEsIHByZXBYYWN0cykgKworCQkJCSAgc2l6ZW9mKEdsb2JhbFRyYW5zYWN0aW9u KSAqIG1heF9wcmVwYXJlZF94YWN0cykpOworCWZvciAoaSA9IDA7IGkgPCBtYXhfcHJlcGFyZWRf eGFjdHM7IGkrKykKKwl7CisJCS8qIGluc2VydCBpbnRvIGxpbmtlZCBsaXN0ICovCisJCWd4YWN0 c1tpXS5uZXh0ID0gVHdvUGhhc2VTdGF0ZS0+ZnJlZUdYYWN0czsKKwkJVHdvUGhhc2VTdGF0ZS0+ ZnJlZUdYYWN0cyA9ICZneGFjdHNbaV07CiAKLQkJCS8qIGFzc29jaWF0ZSBpdCB3aXRoIGEgUEdQ Uk9DIGFzc2lnbmVkIGJ5IFByb2NHbG9iYWxTaG1lbUluaXQgKi8KLQkJCWd4YWN0c1tpXS5wZ3By b2NubyA9IEdldE51bWJlckZyb21QR1Byb2MoJlByZXBhcmVkWGFjdFByb2NzW2ldKTsKLQkJfQor CQkvKiBhc3NvY2lhdGUgaXQgd2l0aCBhIFBHUFJPQyBhc3NpZ25lZCBieSBQcm9jR2xvYmFsU2ht ZW1Jbml0ICovCisJCWd4YWN0c1tpXS5wZ3Byb2NubyA9IEdldE51bWJlckZyb21QR1Byb2MoJlBy ZXBhcmVkWGFjdFByb2NzW2ldKTsKIAl9Ci0JZWxzZQotCQlBc3NlcnQoZm91bmQpOwogfQogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmluZGV4IDllODk5OWJiYjYxLi5iYmM1NjU1MDli MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtOTYsNiArOTYsNyBAQAogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcmVpbml0LmgiCiAj aW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9zeW5jLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tzLmgi CiAjaW5jbHVkZSAidXRpbHMvZ3VjX3RhYmxlcy5oIgpAQCAtNTcxLDYgKzU3MiwxNiBAQCB0eXBl ZGVmIGVudW0KIAlXQUxJTlNFUlRfU1BFQ0lBTF9DSEVDS1BPSU5UCiB9IFdhbEluc2VydENsYXNz OwogCitzdGF0aWMgdm9pZCBYTE9HU2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9p ZCBYTE9HU2htZW1Jbml0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBYTE9HU2htZW1BdHRhY2go dm9pZCAqYXJnKTsKKworY29uc3QgU2htZW1DYWxsYmFja3MgWExPR1NobWVtQ2FsbGJhY2tzID0g eworCS5yZXF1ZXN0X2ZuID0gWExPR1NobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IFhMT0dTaG1l bUluaXQsCisJLmF0dGFjaF9mbiA9IFhMT0dTaG1lbUF0dGFjaCwKK307CisKIHN0YXRpYyBYTG9n Q3RsRGF0YSAqWExvZ0N0bCA9IE5VTEw7CiAKIC8qIGEgcHJpdmF0ZSBjb3B5IG9mIFhMb2dDdGwt Pkluc2VydC5XQUxJbnNlcnRMb2NrcywgZm9yIGNvbnZlbmllbmNlICovCkBAIC01NzksNiArNTkw LDcgQEAgc3RhdGljIFdBTEluc2VydExvY2tQYWRkZWQgKldBTEluc2VydExvY2tzID0gTlVMTDsK IC8qCiAgKiBXZSBtYWludGFpbiBhbiBpbWFnZSBvZiBwZ19jb250cm9sIGluIHNoYXJlZCBtZW1v cnkuCiAgKi8KK3N0YXRpYyBDb250cm9sRmlsZURhdGEgKkxvY2FsQ29udHJvbEZpbGUgPSBOVUxM Owogc3RhdGljIENvbnRyb2xGaWxlRGF0YSAqQ29udHJvbEZpbGUgPSBOVUxMOwogCiAvKgpAQCAt NTI1Nyw3ICs1MjY5LDggQEAgdm9pZAogTG9jYWxQcm9jZXNzQ29udHJvbEZpbGUoYm9vbCByZXNl dCkKIHsKIAlBc3NlcnQocmVzZXQgfHwgQ29udHJvbEZpbGUgPT0gTlVMTCk7Ci0JQ29udHJvbEZp bGUgPSBwYWxsb2Nfb2JqZWN0KENvbnRyb2xGaWxlRGF0YSk7CisJTG9jYWxDb250cm9sRmlsZSA9 IHBhbGxvY19vYmplY3QoQ29udHJvbEZpbGVEYXRhKTsKKwlDb250cm9sRmlsZSA9IExvY2FsQ29u dHJvbEZpbGU7CiAJUmVhZENvbnRyb2xGaWxlKCk7CiAJU2V0TG9jYWxEYXRhQ2hlY2tzdW1TdGF0 ZShDb250cm9sRmlsZS0+ZGF0YV9jaGVja3N1bV92ZXJzaW9uKTsKIH0KQEAgLTUyNzQsMTAgKzUy ODcsMTAgQEAgR2V0QWN0aXZlV2FsTGV2ZWxPblN0YW5kYnkodm9pZCkKIH0KIAogLyoKLSAqIElu aXRpYWxpemF0aW9uIG9mIHNoYXJlZCBtZW1vcnkgZm9yIFhMT0cKKyAqIFJlZ2lzdGVyIHNoYXJl ZCBtZW1vcnkgZm9yIFhMT0cuCiAgKi8KLVNpemUKLVhMT0dTaG1lbVNpemUodm9pZCkKK3N0YXRp YyB2b2lkCitYTE9HU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKIAlTaXplCQlzaXplOwogCkBA IC01MzE3LDIzICs1MzMwLDI0IEBAIFhMT0dTaG1lbVNpemUodm9pZCkKIAkvKiBhbmQgdGhlIGJ1 ZmZlcnMgdGhlbXNlbHZlcyAqLwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShYTE9H X0JMQ0tTWiwgWExPR2J1ZmZlcnMpKTsKIAotCS8qCi0JICogTm90ZTogd2UgZG9uJ3QgY291bnQg Q29udHJvbEZpbGVEYXRhLCBpdCBjb21lcyBvdXQgb2YgdGhlICJzbG9wIGZhY3RvciIKLQkgKiBh ZGRlZCBieSBDcmVhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVzLiAgVGhpcyBsZXRzIHVzIHVz ZSB0aGlzCi0JICogcm91dGluZSBhZ2FpbiBiZWxvdyB0byBjb21wdXRlIHRoZSBhY3R1YWwgYWxs b2NhdGlvbiBzaXplLgotCSAqLwotCi0JcmV0dXJuIHNpemU7CisJU2htZW1SZXF1ZXN0U3RydWN0 KC5uYW1lID0gIlhMT0cgQ3RsIiwKKwkJCQkJICAgLnNpemUgPSBzaXplLAorCQkJCQkgICAucHRy ID0gKHZvaWQgKiopICZYTG9nQ3RsLAorCQkpOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9 ICJDb250cm9sIEZpbGUiLAorCQkJCQkgICAuc2l6ZSA9IHNpemVvZihDb250cm9sRmlsZURhdGEp LAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZDb250cm9sRmlsZSwKKwkJKTsKIH0KIAotdm9p ZAotWExPR1NobWVtSW5pdCh2b2lkKQorLyoKKyAqIFhMT0dTaG1lbUluaXQgLSBpbml0aWFsaXpl IHRoZSBYTG9nQ3RsIHNoYXJlZCBtZW1vcnkgYXJlYS4KKyAqLworc3RhdGljIHZvaWQKK1hMT0dT aG1lbUluaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kQ0ZpbGUsCi0JCQkJZm91bmRYTG9n OwogCWNoYXIJICAgKmFsbG9jcHRyOwogCWludAkJCWk7Ci0JQ29udHJvbEZpbGVEYXRhICpsb2Nh bENvbnRyb2xGaWxlOwogCiAjaWZkZWYgV0FMX0RFQlVHCiAKQEAgLTUzNTEsMzYgKzUzNjUsMTcg QEAgWExPR1NobWVtSW5pdCh2b2lkKQogCX0KICNlbmRpZgogCi0KLQlYTG9nQ3RsID0gKFhMb2dD dGxEYXRhICopCi0JCVNobWVtSW5pdFN0cnVjdCgiWExPRyBDdGwiLCBYTE9HU2htZW1TaXplKCks ICZmb3VuZFhMb2cpOwotCi0JbG9jYWxDb250cm9sRmlsZSA9IENvbnRyb2xGaWxlOwotCUNvbnRy b2xGaWxlID0gKENvbnRyb2xGaWxlRGF0YSAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkNvbnRyb2wg RmlsZSIsIHNpemVvZihDb250cm9sRmlsZURhdGEpLCAmZm91bmRDRmlsZSk7Ci0KLQlpZiAoZm91 bmRDRmlsZSB8fCBmb3VuZFhMb2cpCi0JewotCQkvKiBib3RoIHNob3VsZCBiZSBwcmVzZW50IG9y IG5laXRoZXIgKi8KLQkJQXNzZXJ0KGZvdW5kQ0ZpbGUgJiYgZm91bmRYTG9nKTsKLQotCQkvKiBJ bml0aWFsaXplIGxvY2FsIGNvcHkgb2YgV0FMSW5zZXJ0TG9ja3MgKi8KLQkJV0FMSW5zZXJ0TG9j a3MgPSBYTG9nQ3RsLT5JbnNlcnQuV0FMSW5zZXJ0TG9ja3M7Ci0KLQkJaWYgKGxvY2FsQ29udHJv bEZpbGUpCi0JCQlwZnJlZShsb2NhbENvbnRyb2xGaWxlKTsKLQkJcmV0dXJuOwotCX0KIAltZW1z ZXQoWExvZ0N0bCwgMCwgc2l6ZW9mKFhMb2dDdGxEYXRhKSk7CiAKIAkvKgogCSAqIEFscmVhZHkg aGF2ZSByZWFkIGNvbnRyb2wgZmlsZSBsb2NhbGx5LCB1bmxlc3MgaW4gYm9vdHN0cmFwIG1vZGUu IE1vdmUKIAkgKiBjb250ZW50cyBpbnRvIHNoYXJlZCBtZW1vcnkuCiAJICovCi0JaWYgKGxvY2Fs Q29udHJvbEZpbGUpCisJaWYgKExvY2FsQ29udHJvbEZpbGUpCiAJewotCQltZW1jcHkoQ29udHJv bEZpbGUsIGxvY2FsQ29udHJvbEZpbGUsIHNpemVvZihDb250cm9sRmlsZURhdGEpKTsKLQkJcGZy ZWUobG9jYWxDb250cm9sRmlsZSk7CisJCW1lbWNweShDb250cm9sRmlsZSwgTG9jYWxDb250cm9s RmlsZSwgc2l6ZW9mKENvbnRyb2xGaWxlRGF0YSkpOworCQlwZnJlZShMb2NhbENvbnRyb2xGaWxl KTsKKwkJTG9jYWxDb250cm9sRmlsZSA9IE5VTEw7CiAJfQogCiAJLyoKQEAgLTU0NDIsNiArNTQz NywxNSBAQCBYTE9HU2htZW1Jbml0KHZvaWQpCiAJcGdfYXRvbWljX2luaXRfdTY0KCZYTG9nQ3Rs LT51bmxvZ2dlZExTTiwgSW52YWxpZFhMb2dSZWNQdHIpOwogfQogCisvKgorICogWExPR1NobWVt QXR0YWNoIC0gc2V0IHVwIFdBTEluc2VydExvY2tzIHBvaW50ZXIgYWZ0ZXIgYXR0YWNoaW5nLgor ICovCitzdGF0aWMgdm9pZAorWExPR1NobWVtQXR0YWNoKHZvaWQgKmFyZykKK3sKKwlXQUxJbnNl cnRMb2NrcyA9IFhMb2dDdGwtPkluc2VydC5XQUxJbnNlcnRMb2NrczsKK30KKwogLyoKICAqIFRo aXMgZnVuYyBtdXN0IGJlIGNhbGxlZCBPTkNFIG9uIHN5c3RlbSBpbnN0YWxsLiAgSXQgY3JlYXRl cyBwZ19jb250cm9sCiAgKiBhbmQgdGhlIGluaXRpYWwgWExPRyBzZWdtZW50LgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3ByZWZldGNoZXIuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dwcmVmZXRjaGVyLmMKaW5kZXggYzIzNWVjYTdjNTEuLjgz YTNmOTdhNTdjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncHJl ZmV0Y2hlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dwcmVmZXRjaGVy LmMKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9zaG1lbS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgorI2luY2x1ZGUgInN0 b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKICNpbmNs dWRlICJ1dGlscy9ndWNfaG9va3MuaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCkBAIC0y MDAsNiArMjAxLDE0IEBAIHN0YXRpYyBMc25SZWFkUXVldWVOZXh0U3RhdHVzIFhMb2dQcmVmZXRj aGVyTmV4dEJsb2NrKHVpbnRwdHJfdCBwZ3NyX3ByaXZhdGUsCiAKIHN0YXRpYyBYTG9nUHJlZmV0 Y2hTdGF0cyAqU2hhcmVkU3RhdHM7CiAKK3N0YXRpYyB2b2lkIFhMb2dQcmVmZXRjaFNobWVtUmVx dWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgWExvZ1ByZWZldGNoU2htZW1Jbml0KHZvaWQg KmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIFhMb2dQcmVmZXRjaFNobWVtQ2FsbGJhY2tz ID0geworCS5yZXF1ZXN0X2ZuID0gWExvZ1ByZWZldGNoU2htZW1SZXF1ZXN0LAorCS5pbml0X2Zu ID0gWExvZ1ByZWZldGNoU2htZW1Jbml0LAorfTsKKwogc3RhdGljIGlubGluZSBMc25SZWFkUXVl dWUgKgogbHJxX2FsbG9jKHVpbnQzMiBtYXhfZGlzdGFuY2UsCiAJCSAgdWludDMyIG1heF9pbmZs aWdodCwKQEAgLTI5MiwxMCArMzAxLDI1IEBAIGxycV9jb21wbGV0ZV9sc24oTHNuUmVhZFF1ZXVl ICpscnEsIFhMb2dSZWNQdHIgbHNuKQogCQlscnFfcHJlZmV0Y2gobHJxKTsKIH0KIAotc2l6ZV90 Ci1YTG9nUHJlZmV0Y2hTaG1lbVNpemUodm9pZCkKK3N0YXRpYyB2b2lkCitYTG9nUHJlZmV0Y2hT aG1lbVJlcXVlc3Qodm9pZCAqYXJnKQoreworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJY TG9nUHJlZmV0Y2hTdGF0cyIsCisJCQkJCSAgIC5zaXplID0gc2l6ZW9mKFhMb2dQcmVmZXRjaFN0 YXRzKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmU2hhcmVkU3RhdHMsCisJCSk7Cit9CisK K3N0YXRpYyB2b2lkCitYTG9nUHJlZmV0Y2hTaG1lbUluaXQodm9pZCAqYXJnKQogewotCXJldHVy biBzaXplb2YoWExvZ1ByZWZldGNoU3RhdHMpOworCXBnX2F0b21pY19pbml0X3U2NCgmU2hhcmVk U3RhdHMtPnJlc2V0X3RpbWUsIEdldEN1cnJlbnRUaW1lc3RhbXAoKSk7CisJcGdfYXRvbWljX2lu aXRfdTY0KCZTaGFyZWRTdGF0cy0+cHJlZmV0Y2gsIDApOworCXBnX2F0b21pY19pbml0X3U2NCgm U2hhcmVkU3RhdHMtPmhpdCwgMCk7CisJcGdfYXRvbWljX2luaXRfdTY0KCZTaGFyZWRTdGF0cy0+ c2tpcF9pbml0LCAwKTsKKwlwZ19hdG9taWNfaW5pdF91NjQoJlNoYXJlZFN0YXRzLT5za2lwX25l dywgMCk7CisJcGdfYXRvbWljX2luaXRfdTY0KCZTaGFyZWRTdGF0cy0+c2tpcF9mcHcsIDApOwor CXBnX2F0b21pY19pbml0X3U2NCgmU2hhcmVkU3RhdHMtPnNraXBfcmVwLCAwKTsKIH0KIAogLyoK QEAgLTMxMywyNyArMzM3LDYgQEAgWExvZ1ByZWZldGNoUmVzZXRTdGF0cyh2b2lkKQogCXBnX2F0 b21pY193cml0ZV91NjQoJlNoYXJlZFN0YXRzLT5za2lwX3JlcCwgMCk7CiB9CiAKLXZvaWQKLVhM b2dQcmVmZXRjaFNobWVtSW5pdCh2b2lkKQotewotCWJvb2wJCWZvdW5kOwotCi0JU2hhcmVkU3Rh dHMgPSAoWExvZ1ByZWZldGNoU3RhdHMgKikKLQkJU2htZW1Jbml0U3RydWN0KCJYTG9nUHJlZmV0 Y2hTdGF0cyIsCi0JCQkJCQlzaXplb2YoWExvZ1ByZWZldGNoU3RhdHMpLAotCQkJCQkJJmZvdW5k KTsKLQotCWlmICghZm91bmQpCi0JewotCQlwZ19hdG9taWNfaW5pdF91NjQoJlNoYXJlZFN0YXRz LT5yZXNldF90aW1lLCBHZXRDdXJyZW50VGltZXN0YW1wKCkpOwotCQlwZ19hdG9taWNfaW5pdF91 NjQoJlNoYXJlZFN0YXRzLT5wcmVmZXRjaCwgMCk7Ci0JCXBnX2F0b21pY19pbml0X3U2NCgmU2hh cmVkU3RhdHMtPmhpdCwgMCk7Ci0JCXBnX2F0b21pY19pbml0X3U2NCgmU2hhcmVkU3RhdHMtPnNr aXBfaW5pdCwgMCk7Ci0JCXBnX2F0b21pY19pbml0X3U2NCgmU2hhcmVkU3RhdHMtPnNraXBfbmV3 LCAwKTsKLQkJcGdfYXRvbWljX2luaXRfdTY0KCZTaGFyZWRTdGF0cy0+c2tpcF9mcHcsIDApOwot CQlwZ19hdG9taWNfaW5pdF91NjQoJlNoYXJlZFN0YXRzLT5za2lwX3JlcCwgMCk7Ci0JfQotfQog CiAvKgogICogQ2FsbGVkIHdoZW4gYW55IEdVQyBpcyBjaGFuZ2VkIHRoYXQgYWZmZWN0cyBwcmVm ZXRjaGluZy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNv dmVyeS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKaW5kZXgg ZmQxYzM2ZDA2MWQuLmMyMzZlMmI3OTY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9ncmVjb3ZlcnkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9ncmVjb3ZlcnkuYwpAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWdu YWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv c3Bpbi5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxz L2RhdGV0aW1lLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgogI2luY2x1ZGUgInV0 aWxzL2d1Y19ob29rcy5oIgpAQCAtMzA3LDYgKzMwOCwxNCBAQCBzdGF0aWMgY2hhciAqcHJpbWFy eV9pbWFnZV9tYXNrZWQgPSBOVUxMOwogCiBYTG9nUmVjb3ZlcnlDdGxEYXRhICpYTG9nUmVjb3Zl cnlDdGwgPSBOVUxMOwogCitzdGF0aWMgdm9pZCBYTG9nUmVjb3ZlcnlTaG1lbVJlcXVlc3Qodm9p ZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFhMb2dSZWNvdmVyeVNobWVtSW5pdCh2b2lkICphcmcpOwor Citjb25zdCBTaG1lbUNhbGxiYWNrcyBYTG9nUmVjb3ZlcnlTaG1lbUNhbGxiYWNrcyA9IHsKKwku cmVxdWVzdF9mbiA9IFhMb2dSZWNvdmVyeVNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IFhMb2dS ZWNvdmVyeVNobWVtSW5pdCwKK307CisKIC8qCiAgKiBhYm9ydGVkUmVjUHRyIGlzIHRoZSBzdGFy dCBwb2ludGVyIG9mIGEgYnJva2VuIHJlY29yZCBhdCBlbmQgb2YgV0FMIHdoZW4KICAqIHJlY292 ZXJ5IGNvbXBsZXRlczsgbWlzc2luZ0NvbnRyZWNQdHIgaXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBm aXJzdApAQCAtMzg1LDI4ICszOTQsMjAgQEAgc3RhdGljIHZvaWQgU2V0Q3VycmVudENodW5rU3Rh cnRUaW1lKFRpbWVzdGFtcFR6IHh0aW1lKTsKIHN0YXRpYyB2b2lkIFNldExhdGVzdFhUaW1lKFRp bWVzdGFtcFR6IHh0aW1lKTsKIAogLyoKLSAqIEluaXRpYWxpemF0aW9uIG9mIHNoYXJlZCBtZW1v cnkgZm9yIFdBTCByZWNvdmVyeQorICogUmVnaXN0ZXIgc2hhcmVkIG1lbW9yeSBmb3IgV0FMIHJl Y292ZXJ5CiAgKi8KLVNpemUKLVhMb2dSZWNvdmVyeVNobWVtU2l6ZSh2b2lkKQorc3RhdGljIHZv aWQKK1hMb2dSZWNvdmVyeVNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7Ci0JU2l6ZQkJc2l6ZTsK LQotCS8qIFhMb2dSZWNvdmVyeUN0bCAqLwotCXNpemUgPSBzaXplb2YoWExvZ1JlY292ZXJ5Q3Rs RGF0YSk7Ci0KLQlyZXR1cm4gc2l6ZTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiWExP RyBSZWNvdmVyeSBDdGwiLAorCQkJCQkgICAuc2l6ZSA9IHNpemVvZihYTG9nUmVjb3ZlcnlDdGxE YXRhKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmWExvZ1JlY292ZXJ5Q3RsLAorCQkpOwog fQogCi12b2lkCi1YTG9nUmVjb3ZlcnlTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitYTG9n UmVjb3ZlcnlTaG1lbUluaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kOwotCi0JWExvZ1Jl Y292ZXJ5Q3RsID0gKFhMb2dSZWNvdmVyeUN0bERhdGEgKikKLQkJU2htZW1Jbml0U3RydWN0KCJY TE9HIFJlY292ZXJ5IEN0bCIsIFhMb2dSZWNvdmVyeVNobWVtU2l6ZSgpLCAmZm91bmQpOwotCWlm IChmb3VuZCkKLQkJcmV0dXJuOwogCW1lbXNldChYTG9nUmVjb3ZlcnlDdGwsIDAsIHNpemVvZihY TG9nUmVjb3ZlcnlDdGxEYXRhKSk7CiAKIAlTcGluTG9ja0luaXQoJlhMb2dSZWNvdmVyeUN0bC0+ aW5mb19sY2spOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3dh aXQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d3YWl0LmMKaW5kZXggYmY0NjMw Njc3YjQuLjJlMzFjMGQ2N2Q3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94bG9nd2FpdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d3YWl0LmMK QEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgorI2luY2x1ZGUgInN0 b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKICNpbmNs dWRlICJ1dGlscy9wZ19sc24uaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCkBAIC02OCw2 ICs2OSwxNCBAQCBzdGF0aWMgaW50CXdhaXRsc25fY21wKGNvbnN0IHBhaXJpbmdoZWFwX25vZGUg KmEsIGNvbnN0IHBhaXJpbmdoZWFwX25vZGUgKmIsCiAKIHN0cnVjdCBXYWl0TFNOU3RhdGUgKndh aXRMU05TdGF0ZSA9IE5VTEw7CiAKK3N0YXRpYyB2b2lkIFdhaXRMU05TaG1lbVJlcXVlc3Qodm9p ZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFdhaXRMU05TaG1lbUluaXQodm9pZCAqYXJnKTsKKworY29u c3QgU2htZW1DYWxsYmFja3MgV2FpdExTTlNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2Zu ID0gV2FpdExTTlNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IFdhaXRMU05TaG1lbUluaXQsCit9 OworCiAvKgogICogV2FpdCBldmVudCBmb3IgZWFjaCBXYWl0TFNOVHlwZSwgdXNlZCB3aXRoIFdh aXRMYXRjaCgpIHRvIHJlcG9ydAogICogdGhlIHdhaXQgaW4gcGdfc3RhdF9hY3Rpdml0eS4KQEAg LTEwOSw0MSArMTE4LDM0IEBAIEdldEN1cnJlbnRMU05Gb3JXYWl0VHlwZShXYWl0TFNOVHlwZSBs c25UeXBlKQogCXBnX3VucmVhY2hhYmxlKCk7CiB9CiAKLS8qIFJlcG9ydCB0aGUgYW1vdW50IG9m IHNoYXJlZCBtZW1vcnkgc3BhY2UgbmVlZGVkIGZvciBXYWl0TFNOU3RhdGUuICovCi1TaXplCi1X YWl0TFNOU2htZW1TaXplKHZvaWQpCisvKiBSZWdpc3RlciB0aGUgc2hhcmVkIG1lbW9yeSBzcGFj ZSBuZWVkZWQgZm9yIFdhaXRMU05TdGF0ZS4gKi8KK3N0YXRpYyB2b2lkCitXYWl0TFNOU2htZW1S ZXF1ZXN0KHZvaWQgKmFyZykKIHsKIAlTaXplCQlzaXplOwogCiAJc2l6ZSA9IG9mZnNldG9mKFdh aXRMU05TdGF0ZSwgcHJvY0luZm9zKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUo TWF4QmFja2VuZHMgKyBOVU1fQVVYSUxJQVJZX1BST0NTLCBzaXplb2YoV2FpdExTTlByb2NJbmZv KSkpOwotCXJldHVybiBzaXplOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJXYWl0TFNO U3RhdGUiLAorCQkJCQkgICAuc2l6ZSA9IHNpemUsCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikg JndhaXRMU05TdGF0ZSwKKwkJKTsKIH0KIAogLyogSW5pdGlhbGl6ZSB0aGUgV2FpdExTTlN0YXRl IGluIHRoZSBzaGFyZWQgbWVtb3J5LiAqLwotdm9pZAotV2FpdExTTlNobWVtSW5pdCh2b2lkKQor c3RhdGljIHZvaWQKK1dhaXRMU05TaG1lbUluaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5k OwotCi0Jd2FpdExTTlN0YXRlID0gKFdhaXRMU05TdGF0ZSAqKSBTaG1lbUluaXRTdHJ1Y3QoIldh aXRMU05TdGF0ZSIsCi0JCQkJCQkJCQkJCQkJV2FpdExTTlNobWVtU2l6ZSgpLAotCQkJCQkJCQkJ CQkJCSZmb3VuZCk7Ci0JaWYgKCFmb3VuZCkKKwkvKiBJbml0aWFsaXplIGhlYXBzIGFuZCB0cmFj a2luZyAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgV0FJVF9MU05fVFlQRV9DT1VOVDsgaSsrKQog CXsKLQkJaW50CQkJaTsKLQotCQkvKiBJbml0aWFsaXplIGhlYXBzIGFuZCB0cmFja2luZyAqLwot CQlmb3IgKGkgPSAwOyBpIDwgV0FJVF9MU05fVFlQRV9DT1VOVDsgaSsrKQotCQl7Ci0JCQlwZ19h dG9taWNfaW5pdF91NjQoJndhaXRMU05TdGF0ZS0+bWluV2FpdGVkTFNOW2ldLCBQR19VSU5UNjRf TUFYKTsKLQkJCXBhaXJpbmdoZWFwX2luaXRpYWxpemUoJndhaXRMU05TdGF0ZS0+d2FpdGVyc0hl YXBbaV0sIHdhaXRsc25fY21wLCBOVUxMKTsKLQkJfQotCi0JCS8qIEluaXRpYWxpemUgcHJvY2Vz cyBpbmZvIGFycmF5ICovCi0JCW1lbXNldCgmd2FpdExTTlN0YXRlLT5wcm9jSW5mb3MsIDAsCi0J CQkgICAoTWF4QmFja2VuZHMgKyBOVU1fQVVYSUxJQVJZX1BST0NTKSAqIHNpemVvZihXYWl0TFNO UHJvY0luZm8pKTsKKwkJcGdfYXRvbWljX2luaXRfdTY0KCZ3YWl0TFNOU3RhdGUtPm1pbldhaXRl ZExTTltpXSwgUEdfVUlOVDY0X01BWCk7CisJCXBhaXJpbmdoZWFwX2luaXRpYWxpemUoJndhaXRM U05TdGF0ZS0+d2FpdGVyc0hlYXBbaV0sIHdhaXRsc25fY21wLCBOVUxMKTsKIAl9CisKKwkvKiBJ bml0aWFsaXplIHByb2Nlc3MgaW5mbyBhcnJheSAqLworCW1lbXNldCgmd2FpdExTTlN0YXRlLT5w cm9jSW5mb3MsIDAsCisJCSAgIChNYXhCYWNrZW5kcyArIE5VTV9BVVhJTElBUllfUFJPQ1MpICog c2l6ZW9mKFdhaXRMU05Qcm9jSW5mbykpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92 YWN1dW0uYwppbmRleCA4NDAwZTY3MjJjYy4uMjUwYzQzYjg1ZTUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvYXV0b3ZhY3V1bS5jCkBAIC05OCw2ICs5OCw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wcm9j LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9z bWdyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidGNvcC90 Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMv Zm1ncnByb3Rvcy5oIgpAQCAtMzA5LDYgKzMxMCwxNCBAQCB0eXBlZGVmIHN0cnVjdAogCiBzdGF0 aWMgQXV0b1ZhY3V1bVNobWVtU3RydWN0ICpBdXRvVmFjdXVtU2htZW07CiAKK3N0YXRpYyB2b2lk IEF1dG9WYWN1dW1TaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIEF1dG9WYWN1 dW1TaG1lbUluaXQodm9pZCAqYXJnKTsKKworY29uc3QgU2htZW1DYWxsYmFja3MgQXV0b1ZhY3V1 bVNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gQXV0b1ZhY3V1bVNobWVtUmVxdWVz dCwKKwkuaW5pdF9mbiA9IEF1dG9WYWN1dW1TaG1lbUluaXQsCit9OworCiAvKgogICogdGhlIGRh dGFiYXNlIGxpc3QgKG9mIGF2bF9kYmFzZSBlbGVtZW50cykgaW4gdGhlIGxhdW5jaGVyLCBhbmQg dGhlIGNvbnRleHQKICAqIHRoYXQgY29udGFpbnMgaXQKQEAgLTM1NDUsMTEgKzM1NTQsMTEgQEAg YXV0b3ZhY19pbml0KHZvaWQpCiB9CiAKIC8qCi0gKiBBdXRvVmFjdXVtU2htZW1TaXplCi0gKgkJ Q29tcHV0ZSBzcGFjZSBuZWVkZWQgZm9yIGF1dG92YWN1dW0tcmVsYXRlZCBzaGFyZWQgbWVtb3J5 CisgKiBBdXRvVmFjdXVtU2htZW1SZXF1ZXN0CisgKgkJUmVnaXN0ZXIgc2hhcmVkIG1lbW9yeSBz cGFjZSBuZWVkZWQgZm9yIGF1dG92YWN1dW0KICAqLwotU2l6ZQotQXV0b1ZhY3V1bVNobWVtU2l6 ZSh2b2lkKQorc3RhdGljIHZvaWQKK0F1dG9WYWN1dW1TaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQog ewogCVNpemUJCXNpemU7CiAKQEAgLTM1NjAsNTMgKzM1NjksNDEgQEAgQXV0b1ZhY3V1bVNobWVt U2l6ZSh2b2lkKQogCXNpemUgPSBNQVhBTElHTihzaXplKTsKIAlzaXplID0gYWRkX3NpemUoc2l6 ZSwgbXVsX3NpemUoYXV0b3ZhY3V1bV93b3JrZXJfc2xvdHMsCiAJCQkJCQkJCSAgIHNpemVvZihX b3JrZXJJbmZvRGF0YSkpKTsKLQlyZXR1cm4gc2l6ZTsKKworCVNobWVtUmVxdWVzdFN0cnVjdCgu bmFtZSA9ICJBdXRvVmFjdXVtIERhdGEiLAorCQkJCQkgICAuc2l6ZSA9IHNpemUsCisJCQkJCSAg IC5wdHIgPSAodm9pZCAqKikgJkF1dG9WYWN1dW1TaG1lbSwKKwkJKTsKIH0KIAogLyoKICAqIEF1 dG9WYWN1dW1TaG1lbUluaXQKLSAqCQlBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBhdXRvdmFjdXVt LXJlbGF0ZWQgc2hhcmVkIG1lbW9yeQorICoJCUluaXRpYWxpemUgYXV0b3ZhY3V1bS1yZWxhdGVk IHNoYXJlZCBtZW1vcnkKICAqLwotdm9pZAotQXV0b1ZhY3V1bVNobWVtSW5pdCh2b2lkKQorc3Rh dGljIHZvaWQKK0F1dG9WYWN1dW1TaG1lbUluaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5k OwotCi0JQXV0b1ZhY3V1bVNobWVtID0gKEF1dG9WYWN1dW1TaG1lbVN0cnVjdCAqKQotCQlTaG1l bUluaXRTdHJ1Y3QoIkF1dG9WYWN1dW0gRGF0YSIsCi0JCQkJCQlBdXRvVmFjdXVtU2htZW1TaXpl KCksCi0JCQkJCQkmZm91bmQpOwotCi0JaWYgKCFJc1VuZGVyUG9zdG1hc3RlcikKLQl7Ci0JCVdv cmtlckluZm8Jd29ya2VyOwotCQlpbnQJCQlpOworCVdvcmtlckluZm8Jd29ya2VyOwogCi0JCUFz c2VydCghZm91bmQpOwotCi0JCUF1dG9WYWN1dW1TaG1lbS0+YXZfbGF1bmNoZXJwaWQgPSAwOwot CQlkY2xpc3RfaW5pdCgmQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlV29ya2Vycyk7Ci0JCWRsaXN0 X2luaXQoJkF1dG9WYWN1dW1TaG1lbS0+YXZfcnVubmluZ1dvcmtlcnMpOwotCQlBdXRvVmFjdXVt U2htZW0tPmF2X3N0YXJ0aW5nV29ya2VyID0gTlVMTDsKLQkJbWVtc2V0KEF1dG9WYWN1dW1TaG1l bS0+YXZfd29ya0l0ZW1zLCAwLAotCQkJICAgc2l6ZW9mKEF1dG9WYWN1dW1Xb3JrSXRlbSkgKiBO VU1fV09SS0lURU1TKTsKLQotCQl3b3JrZXIgPSAoV29ya2VySW5mbykgKChjaGFyICopIEF1dG9W YWN1dW1TaG1lbSArCi0JCQkJCQkJICAgTUFYQUxJR04oc2l6ZW9mKEF1dG9WYWN1dW1TaG1lbVN0 cnVjdCkpKTsKLQotCQkvKiBpbml0aWFsaXplIHRoZSBXb3JrZXJJbmZvIGZyZWUgbGlzdCAqLwot CQlmb3IgKGkgPSAwOyBpIDwgYXV0b3ZhY3V1bV93b3JrZXJfc2xvdHM7IGkrKykKLQkJewotCQkJ ZGNsaXN0X3B1c2hfaGVhZCgmQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlV29ya2VycywKLQkJCQkJ CQkgJndvcmtlcltpXS53aV9saW5rcyk7Ci0JCQlwZ19hdG9taWNfaW5pdF9mbGFnKCZ3b3JrZXJb aV0ud2lfZG9iYWxhbmNlKTsKLQkJfQorCUF1dG9WYWN1dW1TaG1lbS0+YXZfbGF1bmNoZXJwaWQg PSAwOworCWRjbGlzdF9pbml0KCZBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVXb3JrZXJzKTsKKwlk bGlzdF9pbml0KCZBdXRvVmFjdXVtU2htZW0tPmF2X3J1bm5pbmdXb3JrZXJzKTsKKwlBdXRvVmFj dXVtU2htZW0tPmF2X3N0YXJ0aW5nV29ya2VyID0gTlVMTDsKKwltZW1zZXQoQXV0b1ZhY3V1bVNo bWVtLT5hdl93b3JrSXRlbXMsIDAsCisJCSAgIHNpemVvZihBdXRvVmFjdXVtV29ya0l0ZW0pICog TlVNX1dPUktJVEVNUyk7CiAKLQkJcGdfYXRvbWljX2luaXRfdTMyKCZBdXRvVmFjdXVtU2htZW0t PmF2X253b3JrZXJzRm9yQmFsYW5jZSwgMCk7CisJd29ya2VyID0gKFdvcmtlckluZm8pICgoY2hh ciAqKSBBdXRvVmFjdXVtU2htZW0gKworCQkJCQkJICAgTUFYQUxJR04oc2l6ZW9mKEF1dG9WYWN1 dW1TaG1lbVN0cnVjdCkpKTsKIAorCS8qIGluaXRpYWxpemUgdGhlIFdvcmtlckluZm8gZnJlZSBs aXN0ICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBhdXRvdmFjdXVtX3dvcmtlcl9zbG90czsgaSsr KQorCXsKKwkJZGNsaXN0X3B1c2hfaGVhZCgmQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlV29ya2Vy cywKKwkJCQkJCSAmd29ya2VyW2ldLndpX2xpbmtzKTsKKwkJcGdfYXRvbWljX2luaXRfZmxhZygm d29ya2VyW2ldLndpX2RvYmFsYW5jZSk7CiAJfQotCWVsc2UKLQkJQXNzZXJ0KGZvdW5kKTsKKwor CXBnX2F0b21pY19pbml0X3UzMigmQXV0b1ZhY3V1bVNobWVtLT5hdl9ud29ya2Vyc0ZvckJhbGFu Y2UsIDApOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dv cmtlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCmluZGV4IDUzNmFmZjdj YTA1Li4wOTkyYjliNjM1MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dv cmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwpAQCAtMzAsNiAr MzAsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9wcm9jc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgorI2luY2x1ZGUgInN0 b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRl ICJ1dGlscy9hc2NpaS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCkBAIC0xMTAsNiAr MTExLDE0IEBAIHN0cnVjdCBCYWNrZ3JvdW5kV29ya2VySGFuZGxlCiAKIHN0YXRpYyBCYWNrZ3Jv dW5kV29ya2VyQXJyYXkgKkJhY2tncm91bmRXb3JrZXJEYXRhOwogCitzdGF0aWMgdm9pZCBCYWNr Z3JvdW5kV29ya2VyU2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBCYWNrZ3Jv dW5kV29ya2VyU2htZW1Jbml0KHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIEJh Y2tncm91bmRXb3JrZXJTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IEJhY2tncm91 bmRXb3JrZXJTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBCYWNrZ3JvdW5kV29ya2VyU2htZW1J bml0LAorfTsKKwogLyoKICAqIExpc3Qgb2YgaW50ZXJuYWwgYmFja2dyb3VuZCB3b3JrZXIgZW50 cnkgcG9pbnRzLiAgV2UgbmVlZCB0aGlzIGZvcgogICogcmVhc29ucyBleHBsYWluZWQgaW4gTG9v a3VwQmFja2dyb3VuZFdvcmtlckZ1bmN0aW9uKCksIGJlbG93LgpAQCAtMTYwLDEwICsxNjksMTAg QEAgc3RhdGljIGJnd29ya2VyX21haW5fdHlwZSBMb29rdXBCYWNrZ3JvdW5kV29ya2VyRnVuY3Rp b24oY29uc3QgY2hhciAqbGlicmFyeW5hbWUKIAogCiAvKgotICogQ2FsY3VsYXRlIHNoYXJlZCBt ZW1vcnkgbmVlZGVkLgorICogUmVnaXN0ZXIgc2hhcmVkIG1lbW9yeSBuZWVkZWQgZm9yIGJhY2tn cm91bmQgd29ya2Vycy4KICAqLwotU2l6ZQotQmFja2dyb3VuZFdvcmtlclNobWVtU2l6ZSh2b2lk KQorc3RhdGljIHZvaWQKK0JhY2tncm91bmRXb3JrZXJTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQog ewogCVNpemUJCXNpemU7CiAKQEAgLTE3MSw2NiArMTgwLDU4IEBAIEJhY2tncm91bmRXb3JrZXJT aG1lbVNpemUodm9pZCkKIAlzaXplID0gb2Zmc2V0b2YoQmFja2dyb3VuZFdvcmtlckFycmF5LCBz bG90KTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUobWF4X3dvcmtlcl9wcm9jZXNz ZXMsCiAJCQkJCQkJCSAgIHNpemVvZihCYWNrZ3JvdW5kV29ya2VyU2xvdCkpKTsKLQotCXJldHVy biBzaXplOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJCYWNrZ3JvdW5kIFdvcmtlciBE YXRhIiwKKwkJCQkJICAgLnNpemUgPSBzaXplLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZC YWNrZ3JvdW5kV29ya2VyRGF0YSwKKwkJKTsKIH0KIAogLyoKLSAqIEluaXRpYWxpemUgc2hhcmVk IG1lbW9yeS4KKyAqIEluaXRpYWxpemUgc2hhcmVkIG1lbW9yeSBmb3IgYmFja2dyb3VuZCB3b3Jr ZXJzLgogICovCi12b2lkCi1CYWNrZ3JvdW5kV29ya2VyU2htZW1Jbml0KHZvaWQpCitzdGF0aWMg dm9pZAorQmFja2dyb3VuZFdvcmtlclNobWVtSW5pdCh2b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91 bmQ7Ci0KLQlCYWNrZ3JvdW5kV29ya2VyRGF0YSA9IFNobWVtSW5pdFN0cnVjdCgiQmFja2dyb3Vu ZCBXb3JrZXIgRGF0YSIsCi0JCQkJCQkJCQkJICAgQmFja2dyb3VuZFdvcmtlclNobWVtU2l6ZSgp LAotCQkJCQkJCQkJCSAgICZmb3VuZCk7Ci0JaWYgKCFJc1VuZGVyUG9zdG1hc3RlcikKLQl7Ci0J CWRsaXN0X2l0ZXIJaXRlcjsKLQkJaW50CQkJc2xvdG5vID0gMDsKKwlkbGlzdF9pdGVyCWl0ZXI7 CisJaW50CQkJc2xvdG5vID0gMDsKIAotCQlCYWNrZ3JvdW5kV29ya2VyRGF0YS0+dG90YWxfc2xv dHMgPSBtYXhfd29ya2VyX3Byb2Nlc3NlczsKLQkJQmFja2dyb3VuZFdvcmtlckRhdGEtPnBhcmFs bGVsX3JlZ2lzdGVyX2NvdW50ID0gMDsKLQkJQmFja2dyb3VuZFdvcmtlckRhdGEtPnBhcmFsbGVs X3Rlcm1pbmF0ZV9jb3VudCA9IDA7CisJQmFja2dyb3VuZFdvcmtlckRhdGEtPnRvdGFsX3Nsb3Rz ID0gbWF4X3dvcmtlcl9wcm9jZXNzZXM7CisJQmFja2dyb3VuZFdvcmtlckRhdGEtPnBhcmFsbGVs X3JlZ2lzdGVyX2NvdW50ID0gMDsKKwlCYWNrZ3JvdW5kV29ya2VyRGF0YS0+cGFyYWxsZWxfdGVy bWluYXRlX2NvdW50ID0gMDsKIAotCQkvKgotCQkgKiBDb3B5IGNvbnRlbnRzIG9mIHdvcmtlciBs aXN0IGludG8gc2hhcmVkIG1lbW9yeS4gIFJlY29yZCB0aGUgc2hhcmVkCi0JCSAqIG1lbW9yeSBz bG90IGFzc2lnbmVkIHRvIGVhY2ggd29ya2VyLiAgVGhpcyBlbnN1cmVzIGEgMS10by0xCi0JCSAq IGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gdGhlIHBvc3RtYXN0ZXIncyBwcml2YXRlIGxpc3QgYW5k IHRoZSBhcnJheQotCQkgKiBpbiBzaGFyZWQgbWVtb3J5LgotCQkgKi8KLQkJZGxpc3RfZm9yZWFj aChpdGVyLCAmQmFja2dyb3VuZFdvcmtlckxpc3QpCi0JCXsKLQkJCUJhY2tncm91bmRXb3JrZXJT bG90ICpzbG90ID0gJkJhY2tncm91bmRXb3JrZXJEYXRhLT5zbG90W3Nsb3Rub107Ci0JCQlSZWdp c3RlcmVkQmdXb3JrZXIgKnJ3OworCS8qCisJICogQ29weSBjb250ZW50cyBvZiB3b3JrZXIgbGlz dCBpbnRvIHNoYXJlZCBtZW1vcnkuICBSZWNvcmQgdGhlIHNoYXJlZAorCSAqIG1lbW9yeSBzbG90 IGFzc2lnbmVkIHRvIGVhY2ggd29ya2VyLiAgVGhpcyBlbnN1cmVzIGEgMS10by0xCisJICogY29y cmVzcG9uZGVuY2UgYmV0d2VlbiB0aGUgcG9zdG1hc3RlcidzIHByaXZhdGUgbGlzdCBhbmQgdGhl IGFycmF5IGluCisJICogc2hhcmVkIG1lbW9yeS4KKwkgKi8KKwlkbGlzdF9mb3JlYWNoKGl0ZXIs ICZCYWNrZ3JvdW5kV29ya2VyTGlzdCkKKwl7CisJCUJhY2tncm91bmRXb3JrZXJTbG90ICpzbG90 ID0gJkJhY2tncm91bmRXb3JrZXJEYXRhLT5zbG90W3Nsb3Rub107CisJCVJlZ2lzdGVyZWRCZ1dv cmtlciAqcnc7CiAKLQkJCXJ3ID0gZGxpc3RfY29udGFpbmVyKFJlZ2lzdGVyZWRCZ1dvcmtlciwg cndfbG5vZGUsIGl0ZXIuY3VyKTsKLQkJCUFzc2VydChzbG90bm8gPCBtYXhfd29ya2VyX3Byb2Nl c3Nlcyk7Ci0JCQlzbG90LT5pbl91c2UgPSB0cnVlOwotCQkJc2xvdC0+dGVybWluYXRlID0gZmFs c2U7Ci0JCQlzbG90LT5waWQgPSBJbnZhbGlkUGlkOwotCQkJc2xvdC0+Z2VuZXJhdGlvbiA9IDA7 Ci0JCQlydy0+cndfc2htZW1fc2xvdCA9IHNsb3RubzsKLQkJCXJ3LT5yd193b3JrZXIuYmd3X25v dGlmeV9waWQgPSAwOwkvKiBtaWdodCBiZSByZWluaXQgYWZ0ZXIgY3Jhc2ggKi8KLQkJCW1lbWNw eSgmc2xvdC0+d29ya2VyLCAmcnctPnJ3X3dvcmtlciwgc2l6ZW9mKEJhY2tncm91bmRXb3JrZXIp KTsKLQkJCSsrc2xvdG5vOwotCQl9CisJCXJ3ID0gZGxpc3RfY29udGFpbmVyKFJlZ2lzdGVyZWRC Z1dvcmtlciwgcndfbG5vZGUsIGl0ZXIuY3VyKTsKKwkJQXNzZXJ0KHNsb3RubyA8IG1heF93b3Jr ZXJfcHJvY2Vzc2VzKTsKKwkJc2xvdC0+aW5fdXNlID0gdHJ1ZTsKKwkJc2xvdC0+dGVybWluYXRl ID0gZmFsc2U7CisJCXNsb3QtPnBpZCA9IEludmFsaWRQaWQ7CisJCXNsb3QtPmdlbmVyYXRpb24g PSAwOworCQlydy0+cndfc2htZW1fc2xvdCA9IHNsb3RubzsKKwkJcnctPnJ3X3dvcmtlci5iZ3df bm90aWZ5X3BpZCA9IDA7CS8qIG1pZ2h0IGJlIHJlaW5pdCBhZnRlciBjcmFzaCAqLworCQltZW1j cHkoJnNsb3QtPndvcmtlciwgJnJ3LT5yd193b3JrZXIsIHNpemVvZihCYWNrZ3JvdW5kV29ya2Vy KSk7CisJCSsrc2xvdG5vOworCX0KIAotCQkvKgotCQkgKiBNYXJrIGFueSByZW1haW5pbmcgc2xv dHMgYXMgbm90IGluIHVzZS4KLQkJICovCi0JCXdoaWxlIChzbG90bm8gPCBtYXhfd29ya2VyX3By b2Nlc3NlcykKLQkJewotCQkJQmFja2dyb3VuZFdvcmtlclNsb3QgKnNsb3QgPSAmQmFja2dyb3Vu ZFdvcmtlckRhdGEtPnNsb3Rbc2xvdG5vXTsKKwkvKgorCSAqIE1hcmsgYW55IHJlbWFpbmluZyBz bG90cyBhcyBub3QgaW4gdXNlLgorCSAqLworCXdoaWxlIChzbG90bm8gPCBtYXhfd29ya2VyX3By b2Nlc3NlcykKKwl7CisJCUJhY2tncm91bmRXb3JrZXJTbG90ICpzbG90ID0gJkJhY2tncm91bmRX b3JrZXJEYXRhLT5zbG90W3Nsb3Rub107CiAKLQkJCXNsb3QtPmluX3VzZSA9IGZhbHNlOwotCQkJ KytzbG90bm87Ci0JCX0KKwkJc2xvdC0+aW5fdXNlID0gZmFsc2U7CisJCSsrc2xvdG5vOwogCX0K LQllbHNlCi0JCUFzc2VydChmb3VuZCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVj a3BvaW50ZXIuYwppbmRleCAzYzk4MmM2ZmZhYy4uNmI0MjRlZTYxMGYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9jaGVja3BvaW50ZXIuYwpAQCAtNjMsNiArNjMsNyBAQAogI2luY2x1ZGUgInN0b3Jh Z2Uvc2htZW0uaCIKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdl L3NwaW4uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1dGls cy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGls cy5oIgpAQCAtMTQzLDYgKzE0NCwxNCBAQCB0eXBlZGVmIHN0cnVjdAogCiBzdGF0aWMgQ2hlY2tw b2ludGVyU2htZW1TdHJ1Y3QgKkNoZWNrcG9pbnRlclNobWVtOwogCitzdGF0aWMgdm9pZCBDaGVj a3BvaW50ZXJTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIENoZWNrcG9pbnRl clNobWVtSW5pdCh2b2lkICphcmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBDaGVja3BvaW50 ZXJTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IENoZWNrcG9pbnRlclNobWVtUmVx dWVzdCwKKwkuaW5pdF9mbiA9IENoZWNrcG9pbnRlclNobWVtSW5pdCwKK307CisKIC8qIGludGVy dmFsIGZvciBjYWxsaW5nIEFic29yYlN5bmNSZXF1ZXN0cyBpbiBDaGVja3BvaW50V3JpdGVEZWxh eSAqLwogI2RlZmluZSBXUklURVNfUEVSX0FCU09SQgkJMTAwMAogCkBAIC05NTAsMTEgKzk1OSwx MSBAQCBSZXFTaHV0ZG93blhMT0coU0lHTkFMX0FSR1MpCiAgKi8KIAogLyoKLSAqIENoZWNrcG9p bnRlclNobWVtU2l6ZQotICoJCUNvbXB1dGUgc3BhY2UgbmVlZGVkIGZvciBjaGVja3BvaW50ZXIt cmVsYXRlZCBzaGFyZWQgbWVtb3J5CisgKiBDaGVja3BvaW50ZXJTaG1lbVJlcXVlc3QKKyAqCQlS ZWdpc3RlciBzaGFyZWQgbWVtb3J5IHNwYWNlIG5lZWRlZCBmb3IgY2hlY2twb2ludGVyCiAgKi8K LVNpemUKLUNoZWNrcG9pbnRlclNobWVtU2l6ZSh2b2lkKQorc3RhdGljIHZvaWQKK0NoZWNrcG9p bnRlclNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7CiAJU2l6ZQkJc2l6ZTsKIApAQCAtOTY3LDM5 ICs5NzYsMjQgQEAgQ2hlY2twb2ludGVyU2htZW1TaXplKHZvaWQpCiAJc2l6ZSA9IGFkZF9zaXpl KHNpemUsIG11bF9zaXplKE1pbihOQnVmZmVycywKIAkJCQkJCQkJCSAgIE1BWF9DSEVDS1BPSU5U X1JFUVVFU1RTKSwKIAkJCQkJCQkJICAgc2l6ZW9mKENoZWNrcG9pbnRlclJlcXVlc3QpKSk7Ci0K LQlyZXR1cm4gc2l6ZTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQ2hlY2twb2ludGVy IERhdGEiLAorCQkJCQkgICAuc2l6ZSA9IHNpemUsCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikg JkNoZWNrcG9pbnRlclNobWVtLAorCQkpOwogfQogCiAvKgogICogQ2hlY2twb2ludGVyU2htZW1J bml0Ci0gKgkJQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgY2hlY2twb2ludGVyLXJlbGF0ZWQgc2hh cmVkIG1lbW9yeQorICoJCUluaXRpYWxpemUgY2hlY2twb2ludGVyLXJlbGF0ZWQgc2hhcmVkIG1l bW9yeQogICovCi12b2lkCi1DaGVja3BvaW50ZXJTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lk CitDaGVja3BvaW50ZXJTaG1lbUluaXQodm9pZCAqYXJnKQogewotCVNpemUJCXNpemUgPSBDaGVj a3BvaW50ZXJTaG1lbVNpemUoKTsKLQlib29sCQlmb3VuZDsKLQotCUNoZWNrcG9pbnRlclNobWVt ID0gKENoZWNrcG9pbnRlclNobWVtU3RydWN0ICopCi0JCVNobWVtSW5pdFN0cnVjdCgiQ2hlY2tw b2ludGVyIERhdGEiLAotCQkJCQkJc2l6ZSwKLQkJCQkJCSZmb3VuZCk7Ci0KLQlpZiAoIWZvdW5k KQotCXsKLQkJLyoKLQkJICogRmlyc3QgdGltZSB0aHJvdWdoLCBzbyBpbml0aWFsaXplLiAgTm90 ZSB0aGF0IHdlIHplcm8gdGhlIHdob2xlCi0JCSAqIHJlcXVlc3RzIGFycmF5OyB0aGlzIGlzIHNv IHRoYXQgQ29tcGFjdENoZWNrcG9pbnRlclJlcXVlc3RRdWV1ZSBjYW4KLQkJICogYXNzdW1lIHRo YXQgYW55IHBhZCBieXRlcyBpbiB0aGUgcmVxdWVzdCBzdHJ1Y3RzIGFyZSB6ZXJvZXMuCi0JCSAq LwotCQlNZW1TZXQoQ2hlY2twb2ludGVyU2htZW0sIDAsIHNpemUpOwotCQlTcGluTG9ja0luaXQo JkNoZWNrcG9pbnRlclNobWVtLT5ja3B0X2xjayk7Ci0JCUNoZWNrcG9pbnRlclNobWVtLT5tYXhf cmVxdWVzdHMgPSBNaW4oTkJ1ZmZlcnMsIE1BWF9DSEVDS1BPSU5UX1JFUVVFU1RTKTsKLQkJQ2hl Y2twb2ludGVyU2htZW0tPmhlYWQgPSBDaGVja3BvaW50ZXJTaG1lbS0+dGFpbCA9IDA7Ci0JCUNv bmRpdGlvblZhcmlhYmxlSW5pdCgmQ2hlY2twb2ludGVyU2htZW0tPnN0YXJ0X2N2KTsKLQkJQ29u ZGl0aW9uVmFyaWFibGVJbml0KCZDaGVja3BvaW50ZXJTaG1lbS0+ZG9uZV9jdik7Ci0JfQorCVNw aW5Mb2NrSW5pdCgmQ2hlY2twb2ludGVyU2htZW0tPmNrcHRfbGNrKTsKKwlDaGVja3BvaW50ZXJT aG1lbS0+bWF4X3JlcXVlc3RzID0gTWluKE5CdWZmZXJzLCBNQVhfQ0hFQ0tQT0lOVF9SRVFVRVNU Uyk7CisJQ2hlY2twb2ludGVyU2htZW0tPmhlYWQgPSBDaGVja3BvaW50ZXJTaG1lbS0+dGFpbCA9 IDA7CisJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZDaGVja3BvaW50ZXJTaG1lbS0+c3RhcnRfY3Yp OworCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmQ2hlY2twb2ludGVyU2htZW0tPmRvbmVfY3YpOwog fQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9kYXRhY2hlY2tzdW1f c3RhdGUuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvZGF0YWNoZWNrc3VtX3N0YXRlLmMKaW5k ZXggNzYwMDRiY2VkYzYuLmViN2IwMWQwOTkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2RhdGFjaGVja3N1bV9zdGF0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv ZGF0YWNoZWNrc3VtX3N0YXRlLmMKQEAgLTIxMSw2ICsyMTEsNyBAQAogI2luY2x1ZGUgInN0b3Jh Z2UvbHdsb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRlICJz dG9yYWdlL3NtZ3IuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRl ICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRl ICJ1dGlscy9mbWdyb2lkcy5oIgpAQCAtMzQ2LDYgKzM0Nyw3IEBAIHN0YXRpYyB2b2xhdGlsZSBz aWdfYXRvbWljX3QgbGF1bmNoZXJfcnVubmluZyA9IGZhbHNlOwogc3RhdGljIERhdGFDaGVja3N1 bXNXb3JrZXJPcGVyYXRpb24gb3BlcmF0aW9uOwogCiAvKiBQcm90b3R5cGVzICovCitzdGF0aWMg dm9pZCBEYXRhQ2hlY2tzdW1zU2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CiBzdGF0aWMgYm9vbCBE YXRhYmFzZUV4aXN0cyhPaWQgZGJvaWQpOwogc3RhdGljIExpc3QgKkJ1aWxkRGF0YWJhc2VMaXN0 KHZvaWQpOwogc3RhdGljIExpc3QgKkJ1aWxkUmVsYXRpb25MaXN0KGJvb2wgdGVtcF9yZWxhdGlv bnMsIGJvb2wgaW5jbHVkZV9zaGFyZWQpOwpAQCAtMzU2LDYgKzM1OCwxMCBAQCBzdGF0aWMgYm9v bCBQcm9jZXNzU2luZ2xlUmVsYXRpb25Gb3JrKFJlbGF0aW9uIHJlbG4sIEZvcmtOdW1iZXIgZm9y a051bSwgQnVmZmVyQQogc3RhdGljIHZvaWQgbGF1bmNoZXJfY2FuY2VsX2hhbmRsZXIoU0lHTkFM X0FSR1MpOwogc3RhdGljIHZvaWQgV2FpdEZvckFsbFRyYW5zYWN0aW9uc1RvRmluaXNoKHZvaWQp OwogCitjb25zdCBTaG1lbUNhbGxiYWNrcyBEYXRhQ2hlY2tzdW1zU2htZW1DYWxsYmFja3MgPSB7 CisJLnJlcXVlc3RfZm4gPSBEYXRhQ2hlY2tzdW1zU2htZW1SZXF1ZXN0LAorfTsKKwogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCiAgKiBGdW5jdGlvbmFsaXR5IGZvciBtYW5pcHVsYXRpbmcgdGhlIGRh dGEgY2hlY2tzdW0gc3RhdGUgaW4gdGhlIGNsdXN0ZXIKICAqLwpAQCAtMTIzNiwzNSArMTI0Miwx NiBAQCBQcm9jZXNzQWxsRGF0YWJhc2VzKHZvaWQpCiB9CiAKIC8qCi0gKiBEYXRhQ2hlY2tzdW1T dGF0ZVNpemUKLSAqCQlDb21wdXRlIHJlcXVpcmVkIHNwYWNlIGZvciBkYXRhY2hlY2tzdW1zd29y a2VyLXJlbGF0ZWQgc2hhcmVkIG1lbW9yeQotICovCi1TaXplCi1EYXRhQ2hlY2tzdW1zU2htZW1T aXplKHZvaWQpCi17Ci0JU2l6ZQkJc2l6ZTsKLQotCXNpemUgPSBzaXplb2YoRGF0YUNoZWNrc3Vt c1N0YXRlU3RydWN0KTsKLQlzaXplID0gTUFYQUxJR04oc2l6ZSk7Ci0KLQlyZXR1cm4gc2l6ZTsK LX0KLQotLyoKLSAqIERhdGFDaGVja3N1bVN0YXRlSW5pdAotICoJCUFsbG9jYXRlIGFuZCBpbml0 aWFsaXplIGRhdGFjaGVja3N1bXN3b3JrZXItcmVsYXRlZCBzaGFyZWQgbWVtb3J5CisgKiBEYXRh Q2hlY2tzdW1TaG1lbVJlcXVlc3QKKyAqCQlSZXF1ZXN0IGRhdGFjaGVja3N1bXN3b3JrZXItcmVs YXRlZCBzaGFyZWQgbWVtb3J5CiAgKi8KLXZvaWQKLURhdGFDaGVja3N1bXNTaG1lbUluaXQodm9p ZCkKK3N0YXRpYyB2b2lkCitEYXRhQ2hlY2tzdW1zU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsK LQlib29sCQlmb3VuZDsKLQotCURhdGFDaGVja3N1bVN0YXRlID0gKERhdGFDaGVja3N1bXNTdGF0 ZVN0cnVjdCAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkRhdGFDaGVja3N1bXNXb3JrZXIgRGF0YSIs Ci0JCQkJCQlEYXRhQ2hlY2tzdW1zU2htZW1TaXplKCksCi0JCQkJCQkmZm91bmQpOwotCWlmICgh Zm91bmQpCi0JCU1lbVNldChEYXRhQ2hlY2tzdW1TdGF0ZSwgMCwgRGF0YUNoZWNrc3Vtc1NobWVt U2l6ZSgpKTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiRGF0YUNoZWNrc3Vtc1dvcmtl ciBEYXRhIiwKKwkJCQkJICAgLnNpemUgPSBzaXplb2YoRGF0YUNoZWNrc3Vtc1N0YXRlU3RydWN0 KSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmRGF0YUNoZWNrc3VtU3RhdGUsCisJCSk7CiB9 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jIGIvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYwppbmRleCBmYTRiZGZlOWFiOS4uMGExYTExNDlk NzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMKKysrIGIvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYwpAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUg InN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1 ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNp bmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1 ZGUgInV0aWxzL3BzX3N0YXR1cy5oIgpAQCAtMTU0LDMzICsxNTUsMzEgQEAgc3RhdGljIGludAly ZWFkeV9maWxlX2NvbXBhcmF0b3IoRGF0dW0gYSwgRGF0dW0gYiwgdm9pZCAqYXJnKTsKIHN0YXRp YyB2b2lkIExvYWRBcmNoaXZlTGlicmFyeSh2b2lkKTsKIHN0YXRpYyB2b2lkIHBnYXJjaF9jYWxs X21vZHVsZV9zaHV0ZG93bl9jYihpbnQgY29kZSwgRGF0dW0gYXJnKTsKIAotLyogUmVwb3J0IHNo YXJlZCBtZW1vcnkgc3BhY2UgbmVlZGVkIGJ5IFBnQXJjaFNobWVtSW5pdCAqLwotU2l6ZQotUGdB cmNoU2htZW1TaXplKHZvaWQpCi17Ci0JU2l6ZQkJc2l6ZSA9IDA7CitzdGF0aWMgdm9pZCBQZ0Fy Y2hTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFBnQXJjaFNobWVtSW5pdCh2 b2lkICphcmcpOwogCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIHNpemVvZihQZ0FyY2hEYXRhKSk7 Citjb25zdCBTaG1lbUNhbGxiYWNrcyBQZ0FyY2hTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVz dF9mbiA9IFBnQXJjaFNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IFBnQXJjaFNobWVtSW5pdCwK K307CiAKLQlyZXR1cm4gc2l6ZTsKKy8qIFJlZ2lzdGVyIHNoYXJlZCBtZW1vcnkgc3BhY2UgbmVl ZGVkIGJ5IHRoZSBhcmNoaXZlciAqLworc3RhdGljIHZvaWQKK1BnQXJjaFNobWVtUmVxdWVzdCh2 b2lkICphcmcpCit7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIkFyY2hpdmVyIERhdGEi LAorCQkJCQkgICAuc2l6ZSA9IHNpemVvZihQZ0FyY2hEYXRhKSwKKwkJCQkJICAgLnB0ciA9ICh2 b2lkICoqKSAmUGdBcmNoLAorCQkpOwogfQogCi0vKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBh cmNoaXZlci1yZWxhdGVkIHNoYXJlZCBtZW1vcnkgKi8KLXZvaWQKLVBnQXJjaFNobWVtSW5pdCh2 b2lkKQorLyogSW5pdGlhbGl6ZSBhcmNoaXZlci1yZWxhdGVkIHNoYXJlZCBtZW1vcnkgKi8KK3N0 YXRpYyB2b2lkCitQZ0FyY2hTaG1lbUluaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kOwot Ci0JUGdBcmNoID0gKFBnQXJjaERhdGEgKikKLQkJU2htZW1Jbml0U3RydWN0KCJBcmNoaXZlciBE YXRhIiwgUGdBcmNoU2htZW1TaXplKCksICZmb3VuZCk7Ci0KLQlpZiAoIWZvdW5kKQotCXsKLQkJ LyogRmlyc3QgdGltZSB0aHJvdWdoLCBzbyBpbml0aWFsaXplICovCi0JCU1lbVNldChQZ0FyY2gs IDAsIFBnQXJjaFNobWVtU2l6ZSgpKTsKLQkJUGdBcmNoLT5wZ3Byb2NubyA9IElOVkFMSURfUFJP Q19OVU1CRVI7Ci0JCXBnX2F0b21pY19pbml0X3UzMigmUGdBcmNoLT5mb3JjZV9kaXJfc2Nhbiwg MCk7Ci0JfQorCU1lbVNldChQZ0FyY2gsIDAsIHNpemVvZihQZ0FyY2hEYXRhKSk7CisJUGdBcmNo LT5wZ3Byb2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CisJcGdfYXRvbWljX2luaXRfdTMyKCZQ Z0FyY2gtPmZvcmNlX2Rpcl9zY2FuLCAwKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci93 YWxzdW1tYXJpemVyLmMKaW5kZXggYTM3YjMwMThhYmYuLjIwOTYwZjViNjMzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYworKysgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYwpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUg InN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1 ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNp bmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1 ZGUgInV0aWxzL3dhaXRfZXZlbnQuaCIKQEAgLTEwOSw2ICsxMTAsMTQgQEAgdHlwZWRlZiBzdHJ1 Y3QKIC8qIFBvaW50ZXIgdG8gc2hhcmVkIG1lbW9yeSBzdGF0ZS4gKi8KIHN0YXRpYyBXYWxTdW1t YXJpemVyRGF0YSAqV2FsU3VtbWFyaXplckN0bDsKIAorc3RhdGljIHZvaWQgV2FsU3VtbWFyaXpl clNobWVtUmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgV2FsU3VtbWFyaXplclNobWVt SW5pdCh2b2lkICphcmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBXYWxTdW1tYXJpemVyU2ht ZW1DYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4gPSBXYWxTdW1tYXJpemVyU2htZW1SZXF1ZXN0 LAorCS5pbml0X2ZuID0gV2FsU3VtbWFyaXplclNobWVtSW5pdCwKK307CisKIC8qCiAgKiBXaGVu IHdlIHJlYWNoIGVuZCBvZiBXQUwgYW5kIG5lZWQgdG8gcmVhZCBtb3JlLCB3ZSBzbGVlcCBmb3Ig YSBudW1iZXIgb2YKICAqIG1pbGxpc2Vjb25kcyB0aGF0IGlzIGFuIGludGVnZXIgbXVsdGlwbGUg b2YgTVNfUEVSX1NMRUVQX1FVQU5UVU0uIFRoaXMgaXMKQEAgLTE2OCw0MyArMTc3LDM0IEBAIHN0 YXRpYyB2b2lkIHN1bW1hcml6ZXJfd2FpdF9mb3Jfd2FsKHZvaWQpOwogc3RhdGljIHZvaWQgTWF5 YmVSZW1vdmVPbGRXYWxTdW1tYXJpZXModm9pZCk7CiAKIC8qCi0gKiBBbW91bnQgb2Ygc2hhcmVk IG1lbW9yeSByZXF1aXJlZCBmb3IgdGhpcyBtb2R1bGUuCisgKiBSZWdpc3RlciBzaGFyZWQgbWVt b3J5IHNwYWNlIG5lZWRlZCBieSB0aGlzIG1vZHVsZS4KICAqLwotU2l6ZQotV2FsU3VtbWFyaXpl clNobWVtU2l6ZSh2b2lkKQorc3RhdGljIHZvaWQKK1dhbFN1bW1hcml6ZXJTaG1lbVJlcXVlc3Qo dm9pZCAqYXJnKQogewotCXJldHVybiBzaXplb2YoV2FsU3VtbWFyaXplckRhdGEpOworCVNobWVt UmVxdWVzdFN0cnVjdCgubmFtZSA9ICJXYWwgU3VtbWFyaXplciBDdGwiLAorCQkJCQkgICAuc2l6 ZSA9IHNpemVvZihXYWxTdW1tYXJpemVyRGF0YSksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikg JldhbFN1bW1hcml6ZXJDdGwsCisJCSk7CiB9CiAKIC8qCi0gKiBDcmVhdGUgb3IgYXR0YWNoIHRv IHNoYXJlZCBtZW1vcnkgc2VnbWVudCBmb3IgdGhpcyBtb2R1bGUuCisgKiBJbml0aWFsaXplIHNo YXJlZCBtZW1vcnkgZm9yIHRoaXMgbW9kdWxlLgogICovCi12b2lkCi1XYWxTdW1tYXJpemVyU2ht ZW1Jbml0KHZvaWQpCitzdGF0aWMgdm9pZAorV2FsU3VtbWFyaXplclNobWVtSW5pdCh2b2lkICph cmcpCiB7Ci0JYm9vbAkJZm91bmQ7Ci0KLQlXYWxTdW1tYXJpemVyQ3RsID0gKFdhbFN1bW1hcml6 ZXJEYXRhICopCi0JCVNobWVtSW5pdFN0cnVjdCgiV2FsIFN1bW1hcml6ZXIgQ3RsIiwgV2FsU3Vt bWFyaXplclNobWVtU2l6ZSgpLAotCQkJCQkJJmZvdW5kKTsKLQotCWlmICghZm91bmQpCi0Jewot CQkvKgotCQkgKiBGaXJzdCB0aW1lIHRocm91Z2gsIHNvIGluaXRpYWxpemUuCi0JCSAqCi0JCSAq IFdlJ3JlIGp1c3QgZmlsbGluZyBpbiBkdW1teSB2YWx1ZXMgaGVyZSAtLSB0aGUgcmVhbCBpbml0 aWFsaXphdGlvbgotCQkgKiB3aWxsIGhhcHBlbiB3aGVuIEdldE9sZGVzdFVuc3VtbWFyaXplZExT TigpIGlzIGNhbGxlZCBmb3IgdGhlIGZpcnN0Ci0JCSAqIHRpbWUuCi0JCSAqLwotCQlXYWxTdW1t YXJpemVyQ3RsLT5pbml0aWFsaXplZCA9IGZhbHNlOwotCQlXYWxTdW1tYXJpemVyQ3RsLT5zdW1t YXJpemVkX3RsaSA9IDA7Ci0JCVdhbFN1bW1hcml6ZXJDdGwtPnN1bW1hcml6ZWRfbHNuID0gSW52 YWxpZFhMb2dSZWNQdHI7Ci0JCVdhbFN1bW1hcml6ZXJDdGwtPmxzbl9pc19leGFjdCA9IGZhbHNl OwotCQlXYWxTdW1tYXJpemVyQ3RsLT5zdW1tYXJpemVyX3BncHJvY25vID0gSU5WQUxJRF9QUk9D X05VTUJFUjsKLQkJV2FsU3VtbWFyaXplckN0bC0+cGVuZGluZ19sc24gPSBJbnZhbGlkWExvZ1Jl Y1B0cjsKLQkJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZXYWxTdW1tYXJpemVyQ3RsLT5zdW1tYXJ5 X2ZpbGVfY3YpOwotCX0KKwkvKgorCSAqIFdlJ3JlIGp1c3QgZmlsbGluZyBpbiBkdW1teSB2YWx1 ZXMgaGVyZSAtLSB0aGUgcmVhbCBpbml0aWFsaXphdGlvbiB3aWxsCisJICogaGFwcGVuIHdoZW4g R2V0T2xkZXN0VW5zdW1tYXJpemVkTFNOKCkgaXMgY2FsbGVkIGZvciB0aGUgZmlyc3QgdGltZS4K KwkgKi8KKwlXYWxTdW1tYXJpemVyQ3RsLT5pbml0aWFsaXplZCA9IGZhbHNlOworCVdhbFN1bW1h cml6ZXJDdGwtPnN1bW1hcml6ZWRfdGxpID0gMDsKKwlXYWxTdW1tYXJpemVyQ3RsLT5zdW1tYXJp emVkX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOworCVdhbFN1bW1hcml6ZXJDdGwtPmxzbl9pc19l eGFjdCA9IGZhbHNlOworCVdhbFN1bW1hcml6ZXJDdGwtPnN1bW1hcml6ZXJfcGdwcm9jbm8gPSBJ TlZBTElEX1BST0NfTlVNQkVSOworCVdhbFN1bW1hcml6ZXJDdGwtPnBlbmRpbmdfbHNuID0gSW52 YWxpZFhMb2dSZWNQdHI7CisJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZXYWxTdW1tYXJpemVyQ3Rs LT5zdW1tYXJ5X2ZpbGVfY3YpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9sYXVuY2hlci5jCmluZGV4IDA5OTY0MTk4NTUwLi45ZTc1YTNlMDRlZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwpAQCAtMzgsNiArMzgsNyBAQAog I2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMu aCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMu aCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgpAQCAtNzEsNiArNzIsMTQgQEAgdHlwZWRl ZiBzdHJ1Y3QgTG9naWNhbFJlcEN0eFN0cnVjdAogCiBzdGF0aWMgTG9naWNhbFJlcEN0eFN0cnVj dCAqTG9naWNhbFJlcEN0eDsKIAorc3RhdGljIHZvaWQgQXBwbHlMYXVuY2hlclNobWVtUmVxdWVz dCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgQXBwbHlMYXVuY2hlclNobWVtSW5pdCh2b2lkICph cmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBBcHBseUxhdW5jaGVyU2htZW1DYWxsYmFja3Mg PSB7CisJLnJlcXVlc3RfZm4gPSBBcHBseUxhdW5jaGVyU2htZW1SZXF1ZXN0LAorCS5pbml0X2Zu ID0gQXBwbHlMYXVuY2hlclNobWVtSW5pdCwKK307CisKIC8qIGFuIGVudHJ5IGluIHRoZSBsYXN0 LXN0YXJ0LXRpbWVzIHNoYXJlZCBoYXNoIHRhYmxlICovCiB0eXBlZGVmIHN0cnVjdCBMYXVuY2hl ckxhc3RTdGFydFRpbWVzRW50cnkKIHsKQEAgLTk3MiwxMSArOTgxLDExIEBAIGxvZ2ljYWxyZXBf cGFfd29ya2VyX2NvdW50KE9pZCBzdWJpZCkKIH0KIAogLyoKLSAqIEFwcGx5TGF1bmNoZXJTaG1l bVNpemUKLSAqCQlDb21wdXRlIHNwYWNlIG5lZWRlZCBmb3IgcmVwbGljYXRpb24gbGF1bmNoZXIg c2hhcmVkIG1lbW9yeQorICogQXBwbHlMYXVuY2hlclNobWVtUmVxdWVzdAorICoJCVJlZ2lzdGVy IHNoYXJlZCBtZW1vcnkgc3BhY2UgbmVlZGVkIGZvciByZXBsaWNhdGlvbiBsYXVuY2hlcgogICov Ci1TaXplCi1BcHBseUxhdW5jaGVyU2htZW1TaXplKHZvaWQpCitzdGF0aWMgdm9pZAorQXBwbHlM YXVuY2hlclNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7CiAJU2l6ZQkJc2l6ZTsKIApAQCAtOTg3 LDcgKzk5NiwxMCBAQCBBcHBseUxhdW5jaGVyU2htZW1TaXplKHZvaWQpCiAJc2l6ZSA9IE1BWEFM SUdOKHNpemUpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShtYXhfbG9naWNhbF9y ZXBsaWNhdGlvbl93b3JrZXJzLAogCQkJCQkJCQkgICBzaXplb2YoTG9naWNhbFJlcFdvcmtlcikp KTsKLQlyZXR1cm4gc2l6ZTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiTG9naWNhbCBS ZXBsaWNhdGlvbiBMYXVuY2hlciBEYXRhIiwKKwkJCQkJICAgLnNpemUgPSBzaXplLAorCQkJCQkg ICAucHRyID0gKHZvaWQgKiopICZMb2dpY2FsUmVwQ3R4LAorCQkpOwogfQogCiAvKgpAQCAtMTAy OCwzNSArMTA0MCwyMyBAQCBBcHBseUxhdW5jaGVyUmVnaXN0ZXIodm9pZCkKIAogLyoKICAqIEFw cGx5TGF1bmNoZXJTaG1lbUluaXQKLSAqCQlBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSByZXBsaWNh dGlvbiBsYXVuY2hlciBzaGFyZWQgbWVtb3J5CisgKgkJSW5pdGlhbGl6ZSByZXBsaWNhdGlvbiBs YXVuY2hlciBzaGFyZWQgbWVtb3J5CiAgKi8KLXZvaWQKLUFwcGx5TGF1bmNoZXJTaG1lbUluaXQo dm9pZCkKK3N0YXRpYyB2b2lkCitBcHBseUxhdW5jaGVyU2htZW1Jbml0KHZvaWQgKmFyZykKIHsK LQlib29sCQlmb3VuZDsKKwlpbnQJCQlzbG90OwogCi0JTG9naWNhbFJlcEN0eCA9IChMb2dpY2Fs UmVwQ3R4U3RydWN0ICopCi0JCVNobWVtSW5pdFN0cnVjdCgiTG9naWNhbCBSZXBsaWNhdGlvbiBM YXVuY2hlciBEYXRhIiwKLQkJCQkJCUFwcGx5TGF1bmNoZXJTaG1lbVNpemUoKSwKLQkJCQkJCSZm b3VuZCk7CisJTG9naWNhbFJlcEN0eC0+bGFzdF9zdGFydF9kc2EgPSBEU0FfSEFORExFX0lOVkFM SUQ7CisJTG9naWNhbFJlcEN0eC0+bGFzdF9zdGFydF9kc2ggPSBEU0hBU0hfSEFORExFX0lOVkFM SUQ7CiAKLQlpZiAoIWZvdW5kKQorCS8qIEluaXRpYWxpemUgbWVtb3J5IGFuZCBzcGluIGxvY2tz IGZvciBlYWNoIHdvcmtlciBzbG90LiAqLworCWZvciAoc2xvdCA9IDA7IHNsb3QgPCBtYXhfbG9n aWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzOyBzbG90KyspCiAJewotCQlpbnQJCQlzbG90OwotCi0J CW1lbXNldChMb2dpY2FsUmVwQ3R4LCAwLCBBcHBseUxhdW5jaGVyU2htZW1TaXplKCkpOwotCi0J CUxvZ2ljYWxSZXBDdHgtPmxhc3Rfc3RhcnRfZHNhID0gRFNBX0hBTkRMRV9JTlZBTElEOwotCQlM b2dpY2FsUmVwQ3R4LT5sYXN0X3N0YXJ0X2RzaCA9IERTSEFTSF9IQU5ETEVfSU5WQUxJRDsKKwkJ TG9naWNhbFJlcFdvcmtlciAqd29ya2VyID0gJkxvZ2ljYWxSZXBDdHgtPndvcmtlcnNbc2xvdF07 CiAKLQkJLyogSW5pdGlhbGl6ZSBtZW1vcnkgYW5kIHNwaW4gbG9ja3MgZm9yIGVhY2ggd29ya2Vy IHNsb3QuICovCi0JCWZvciAoc2xvdCA9IDA7IHNsb3QgPCBtYXhfbG9naWNhbF9yZXBsaWNhdGlv bl93b3JrZXJzOyBzbG90KyspCi0JCXsKLQkJCUxvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciA9ICZM b2dpY2FsUmVwQ3R4LT53b3JrZXJzW3Nsb3RdOwotCi0JCQltZW1zZXQod29ya2VyLCAwLCBzaXpl b2YoTG9naWNhbFJlcFdvcmtlcikpOwotCQkJU3BpbkxvY2tJbml0KCZ3b3JrZXItPnJlbG11dGV4 KTsKLQkJfQorCQltZW1zZXQod29ya2VyLCAwLCBzaXplb2YoTG9naWNhbFJlcFdvcmtlcikpOwor CQlTcGluTG9ja0luaXQoJndvcmtlci0+cmVsbXV0ZXgpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsY3RsLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxjdGwuYwppbmRleCA0ZTI5Mjk1MTIwMS4uNzJm NjhlYzU4ZWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9n aWNhbGN0bC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGN0 bC5jCkBAIC03Miw2ICs3Miw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIK KyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1dGlscy9pbmplY3Rp b25fcG9pbnQuaCIKIAogLyoKQEAgLTk4LDYgKzk5LDEyIEBAIHR5cGVkZWYgc3RydWN0IExvZ2lj YWxEZWNvZGluZ0N0bERhdGEKIAogc3RhdGljIExvZ2ljYWxEZWNvZGluZ0N0bERhdGEgKkxvZ2lj YWxEZWNvZGluZ0N0bCA9IE5VTEw7CiAKK3N0YXRpYyB2b2lkIExvZ2ljYWxEZWNvZGluZ0N0bFNo bWVtUmVxdWVzdCh2b2lkICphcmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBMb2dpY2FsRGVj b2RpbmdDdGxTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IExvZ2ljYWxEZWNvZGlu Z0N0bFNobWVtUmVxdWVzdCwKK307CisKIC8qCiAgKiBBIHByb2Nlc3MtbG9jYWwgY2FjaGUgb2Yg TG9naWNhbERlY29kaW5nQ3RsLT54bG9nX2xvZ2ljYWxfaW5mby4gVGhpcyBpcwogICogaW5pdGlh bGl6ZWQgYXQgcHJvY2VzcyBzdGFydHVwLCBhbmQgdXBkYXRlZCB3aGVuIHByb2Nlc3NpbmcgdGhl IHByb2Nlc3MKQEAgLTEyMCwyMyArMTI3LDEzIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV94bG9nX2xv Z2ljYWxfaW5mbyh2b2lkKTsKIHN0YXRpYyB2b2lkIGFib3J0X2xvZ2ljYWxfZGVjb2RpbmdfYWN0 aXZhdGlvbihpbnQgY29kZSwgRGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIHdyaXRlX2xvZ2ljYWxf ZGVjb2Rpbmdfc3RhdHVzX3VwZGF0ZV9yZWNvcmQoYm9vbCBzdGF0dXMpOwogCi1TaXplCi1Mb2dp Y2FsRGVjb2RpbmdDdGxTaG1lbVNpemUodm9pZCkKLXsKLQlyZXR1cm4gc2l6ZW9mKExvZ2ljYWxE ZWNvZGluZ0N0bERhdGEpOwotfQotCi12b2lkCi1Mb2dpY2FsRGVjb2RpbmdDdGxTaG1lbUluaXQo dm9pZCkKK3N0YXRpYyB2b2lkCitMb2dpY2FsRGVjb2RpbmdDdGxTaG1lbVJlcXVlc3Qodm9pZCAq YXJnKQogewotCWJvb2wJCWZvdW5kOwotCi0JTG9naWNhbERlY29kaW5nQ3RsID0gU2htZW1Jbml0 U3RydWN0KCJMb2dpY2FsIGRlY29kaW5nIGNvbnRyb2wiLAotCQkJCQkJCQkJCSBMb2dpY2FsRGVj b2RpbmdDdGxTaG1lbVNpemUoKSwKLQkJCQkJCQkJCQkgJmZvdW5kKTsKLQotCWlmICghZm91bmQp Ci0JCU1lbVNldChMb2dpY2FsRGVjb2RpbmdDdGwsIDAsIExvZ2ljYWxEZWNvZGluZ0N0bFNobWVt U2l6ZSgpKTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiTG9naWNhbCBkZWNvZGluZyBj b250cm9sIiwKKwkJCQkJICAgLnNpemUgPSBzaXplb2YoTG9naWNhbERlY29kaW5nQ3RsRGF0YSks CisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJkxvZ2ljYWxEZWNvZGluZ0N0bCwKKwkJKTsKIH0K IAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2lu LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCmluZGV4IDY2MWQ2 OGFkNjUzLi4zNzJkNzdjNDc1ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9vcmlnaW4uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29y aWdpbi5jCkBAIC04OCw2ICs4OCw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNs dWRlICJ1dGlscy9mbWdyb2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgpAQCAtMTc2LDYg KzE3NywxNiBAQCBSZXBsT3JpZ2luWGFjdFN0YXRlIHJlcGxvcmlnaW5feGFjdF9zdGF0ZSA9IHsK ICAqLwogc3RhdGljIFJlcGxpY2F0aW9uU3RhdGUgKnJlcGxpY2F0aW9uX3N0YXRlczsKIAorc3Rh dGljIHZvaWQgUmVwbGljYXRpb25PcmlnaW5TaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRp YyB2b2lkIFJlcGxpY2F0aW9uT3JpZ2luU2htZW1Jbml0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9p ZCBSZXBsaWNhdGlvbk9yaWdpblNobWVtQXR0YWNoKHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVt Q2FsbGJhY2tzIFJlcGxpY2F0aW9uT3JpZ2luU2htZW1DYWxsYmFja3MgPSB7CisJLnJlcXVlc3Rf Zm4gPSBSZXBsaWNhdGlvbk9yaWdpblNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IFJlcGxpY2F0 aW9uT3JpZ2luU2htZW1Jbml0LAorCS5hdHRhY2hfZm4gPSBSZXBsaWNhdGlvbk9yaWdpblNobWVt QXR0YWNoLAorfTsKKwogLyoKICAqIEFjdHVhbCBzaGFyZWQgbWVtb3J5IGJsb2NrIChyZXBsaWNh dGlvbl9zdGF0ZXNbXSBpcyBub3cgcGFydCBvZiB0aGlzKS4KICAqLwpAQCAtNTM5LDUwICs1NTAs NDggQEAgcmVwbG9yaWdpbl9ieV9vaWQoUmVwbE9yaWdpbklkIHJvaWRlbnQsIGJvb2wgbWlzc2lu Z19vaywgY2hhciAqKnJvbmFtZSkKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKLVNpemUK LVJlcGxpY2F0aW9uT3JpZ2luU2htZW1TaXplKHZvaWQpCitzdGF0aWMgdm9pZAorUmVwbGljYXRp b25PcmlnaW5TaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewogCVNpemUJCXNpemUgPSAwOwogCiAJ aWYgKG1heF9hY3RpdmVfcmVwbGljYXRpb25fb3JpZ2lucyA9PSAwKQotCQlyZXR1cm4gc2l6ZTsK KwkJcmV0dXJuOwogCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG9mZnNldG9mKFJlcGxpY2F0aW9u U3RhdGVDdGwsIHN0YXRlcykpOwotCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsCiAJCQkJCW11bF9z aXplKG1heF9hY3RpdmVfcmVwbGljYXRpb25fb3JpZ2lucywgc2l6ZW9mKFJlcGxpY2F0aW9uU3Rh dGUpKSk7Ci0JcmV0dXJuIHNpemU7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIlJlcGxp Y2F0aW9uT3JpZ2luU3RhdGUiLAorCQkJCQkgICAuc2l6ZSA9IHNpemUsCisJCQkJCSAgIC5wdHIg PSAodm9pZCAqKikgJnJlcGxpY2F0aW9uX3N0YXRlc19jdGwsCisJCSk7CiB9CiAKLXZvaWQKLVJl cGxpY2F0aW9uT3JpZ2luU2htZW1Jbml0KHZvaWQpCitzdGF0aWMgdm9pZAorUmVwbGljYXRpb25P cmlnaW5TaG1lbUluaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kOwotCiAJaWYgKG1heF9h Y3RpdmVfcmVwbGljYXRpb25fb3JpZ2lucyA9PSAwKQogCQlyZXR1cm47CiAKLQlyZXBsaWNhdGlv bl9zdGF0ZXNfY3RsID0gKFJlcGxpY2F0aW9uU3RhdGVDdGwgKikKLQkJU2htZW1Jbml0U3RydWN0 KCJSZXBsaWNhdGlvbk9yaWdpblN0YXRlIiwKLQkJCQkJCVJlcGxpY2F0aW9uT3JpZ2luU2htZW1T aXplKCksCi0JCQkJCQkmZm91bmQpOwogCXJlcGxpY2F0aW9uX3N0YXRlcyA9IHJlcGxpY2F0aW9u X3N0YXRlc19jdGwtPnN0YXRlczsKIAotCWlmICghZm91bmQpCi0JewotCQlpbnQJCQlpOworCXJl cGxpY2F0aW9uX3N0YXRlc19jdGwtPnRyYW5jaGVfaWQgPSBMV1RSQU5DSEVfUkVQTElDQVRJT05f T1JJR0lOX1NUQVRFOwogCi0JCU1lbVNldChyZXBsaWNhdGlvbl9zdGF0ZXNfY3RsLCAwLCBSZXBs aWNhdGlvbk9yaWdpblNobWVtU2l6ZSgpKTsKKwlmb3IgKGludCBpID0gMDsgaSA8IG1heF9hY3Rp dmVfcmVwbGljYXRpb25fb3JpZ2luczsgaSsrKQorCXsKKwkJTFdMb2NrSW5pdGlhbGl6ZSgmcmVw bGljYXRpb25fc3RhdGVzW2ldLmxvY2ssCisJCQkJCQkgcmVwbGljYXRpb25fc3RhdGVzX2N0bC0+ dHJhbmNoZV9pZCk7CisJCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmcmVwbGljYXRpb25fc3RhdGVz W2ldLm9yaWdpbl9jdik7CisJfQorfQogCi0JCXJlcGxpY2F0aW9uX3N0YXRlc19jdGwtPnRyYW5j aGVfaWQgPSBMV1RSQU5DSEVfUkVQTElDQVRJT05fT1JJR0lOX1NUQVRFOworc3RhdGljIHZvaWQK K1JlcGxpY2F0aW9uT3JpZ2luU2htZW1BdHRhY2godm9pZCAqYXJnKQoreworCWlmIChtYXhfYWN0 aXZlX3JlcGxpY2F0aW9uX29yaWdpbnMgPT0gMCkKKwkJcmV0dXJuOwogCi0JCWZvciAoaSA9IDA7 IGkgPCBtYXhfYWN0aXZlX3JlcGxpY2F0aW9uX29yaWdpbnM7IGkrKykKLQkJewotCQkJTFdMb2Nr SW5pdGlhbGl6ZSgmcmVwbGljYXRpb25fc3RhdGVzW2ldLmxvY2ssCi0JCQkJCQkJIHJlcGxpY2F0 aW9uX3N0YXRlc19jdGwtPnRyYW5jaGVfaWQpOwotCQkJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZy ZXBsaWNhdGlvbl9zdGF0ZXNbaV0ub3JpZ2luX2N2KTsKLQkJfQotCX0KKwlyZXBsaWNhdGlvbl9z dGF0ZXMgPSByZXBsaWNhdGlvbl9zdGF0ZXNfY3RsLT5zdGF0ZXM7CiB9CiAKIC8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9z bG90c3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCmlu ZGV4IGU3NWRiNjllM2Y2Li5kNjE1ZmY4YTgxYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvc2xvdHN5bmMuYwpAQCAtNzMsNiArNzMsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uv bG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJv Y2FycmF5LmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidGNv cC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRp bHMvbWVtdXRpbHMuaCIKQEAgLTExOCw2ICsxMTksMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgU2xvdFN5 bmNDdHhTdHJ1Y3QKIAogc3RhdGljIFNsb3RTeW5jQ3R4U3RydWN0ICpTbG90U3luY0N0eCA9IE5V TEw7CiAKK3N0YXRpYyB2b2lkIFNsb3RTeW5jU2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0 aWMgdm9pZCBTbG90U3luY1NobWVtSW5pdCh2b2lkICphcmcpOworCitjb25zdCBTaG1lbUNhbGxi YWNrcyBTbG90U3luY1NobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gU2xvdFN5bmNT aG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBTbG90U3luY1NobWVtSW5pdCwKK307CisKIC8qIEdV QyB2YXJpYWJsZSAqLwogYm9vbAkJc3luY19yZXBsaWNhdGlvbl9zbG90cyA9IGZhbHNlOwogCkBA IC0xODI4LDMyICsxODM3LDI2IEBAIElzU3luY2luZ1JlcGxpY2F0aW9uU2xvdHModm9pZCkKIH0K IAogLyoKLSAqIEFtb3VudCBvZiBzaGFyZWQgbWVtb3J5IHJlcXVpcmVkIGZvciBzbG90IHN5bmNo cm9uaXphdGlvbi4KKyAqIFJlZ2lzdGVyIHNoYXJlZCBtZW1vcnkgc3BhY2UgbmVlZGVkIGZvciBz bG90IHN5bmNocm9uaXphdGlvbi4KICAqLwotU2l6ZQotU2xvdFN5bmNTaG1lbVNpemUodm9pZCkK K3N0YXRpYyB2b2lkCitTbG90U3luY1NobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7Ci0JcmV0dXJu IHNpemVvZihTbG90U3luY0N0eFN0cnVjdCk7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0g IlNsb3QgU3luYyBEYXRhIiwKKwkJCQkJICAgLnNpemUgPSBzaXplb2YoU2xvdFN5bmNDdHhTdHJ1 Y3QpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZTbG90U3luY0N0eCwKKwkJKTsKIH0KIAog LyoKLSAqIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIHRoZSBzaGFyZWQgbWVtb3J5IG9mIHNsb3Qg c3luY2hyb25pemF0aW9uLgorICogSW5pdGlhbGl6ZSBzaGFyZWQgbWVtb3J5IGZvciBzbG90IHN5 bmNocm9uaXphdGlvbi4KICAqLwotdm9pZAotU2xvdFN5bmNTaG1lbUluaXQodm9pZCkKK3N0YXRp YyB2b2lkCitTbG90U3luY1NobWVtSW5pdCh2b2lkICphcmcpCiB7Ci0JU2l6ZQkJc2l6ZSA9IFNs b3RTeW5jU2htZW1TaXplKCk7Ci0JYm9vbAkJZm91bmQ7Ci0KLQlTbG90U3luY0N0eCA9IChTbG90 U3luY0N0eFN0cnVjdCAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIlNsb3QgU3luYyBEYXRhIiwgc2l6 ZSwgJmZvdW5kKTsKLQotCWlmICghZm91bmQpCi0JewotCQltZW1zZXQoU2xvdFN5bmNDdHgsIDAs IHNpemUpOwotCQlTbG90U3luY0N0eC0+cGlkID0gSW52YWxpZFBpZDsKLQkJU3BpbkxvY2tJbml0 KCZTbG90U3luY0N0eC0+bXV0ZXgpOwotCX0KKwltZW1zZXQoU2xvdFN5bmNDdHgsIDAsIHNpemVv ZihTbG90U3luY0N0eFN0cnVjdCkpOworCVNsb3RTeW5jQ3R4LT5waWQgPSBJbnZhbGlkUGlkOwor CVNwaW5Mb2NrSW5pdCgmU2xvdFN5bmNDdHgtPm11dGV4KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Nsb3QuYwppbmRleCBhOTA5MmZjMjM4Mi4uMjFhMjEzYTBlYmYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90LmMKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5j bHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIK ICNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3MuaCIKICNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25f cG9pbnQuaCIKQEAgLTE0NSw2ICsxNDYsMTQgQEAgU3RhdGljQXNzZXJ0RGVjbChsZW5ndGhvZihT bG90SW52YWxpZGF0aW9uQ2F1c2VzKSA9PSAoUlNfSU5WQUxfTUFYX0NBVVNFUyArIDEpLAogLyog Q29udHJvbCBhcnJheSBmb3IgcmVwbGljYXRpb24gc2xvdCBtYW5hZ2VtZW50ICovCiBSZXBsaWNh dGlvblNsb3RDdGxEYXRhICpSZXBsaWNhdGlvblNsb3RDdGwgPSBOVUxMOwogCitzdGF0aWMgdm9p ZCBSZXBsaWNhdGlvblNsb3RzU2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBS ZXBsaWNhdGlvblNsb3RzU2htZW1Jbml0KHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJh Y2tzIFJlcGxpY2F0aW9uU2xvdHNTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IFJl cGxpY2F0aW9uU2xvdHNTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBSZXBsaWNhdGlvblNsb3Rz U2htZW1Jbml0LAorfTsKKwogLyogTXkgYmFja2VuZCdzIHJlcGxpY2F0aW9uIHNsb3QgaW4gdGhl IHNoYXJlZCBtZW1vcnkgYXJyYXkgKi8KIFJlcGxpY2F0aW9uU2xvdCAqTXlSZXBsaWNhdGlvblNs b3QgPSBOVUxMOwogCkBAIC0xODMsNTYgKzE5Miw0MSBAQCBzdGF0aWMgdm9pZCBDcmVhdGVTbG90 T25EaXNrKFJlcGxpY2F0aW9uU2xvdCAqc2xvdCk7CiBzdGF0aWMgdm9pZCBTYXZlU2xvdFRvUGF0 aChSZXBsaWNhdGlvblNsb3QgKnNsb3QsIGNvbnN0IGNoYXIgKmRpciwgaW50IGVsZXZlbCk7CiAK IC8qCi0gKiBSZXBvcnQgc2hhcmVkLW1lbW9yeSBzcGFjZSBuZWVkZWQgYnkgUmVwbGljYXRpb25T bG90c1NobWVtSW5pdC4KKyAqIFJlZ2lzdGVyIHNoYXJlZCBtZW1vcnkgc3BhY2UgbmVlZGVkIGZv ciByZXBsaWNhdGlvbiBzbG90cy4KICAqLwotU2l6ZQotUmVwbGljYXRpb25TbG90c1NobWVtU2l6 ZSh2b2lkKQorc3RhdGljIHZvaWQKK1JlcGxpY2F0aW9uU2xvdHNTaG1lbVJlcXVlc3Qodm9pZCAq YXJnKQogewotCVNpemUJCXNpemUgPSAwOworCVNpemUJCXNpemU7CiAKIAlpZiAobWF4X3JlcGxp Y2F0aW9uX3Nsb3RzID09IDApCi0JCXJldHVybiBzaXplOworCQlyZXR1cm47CiAKIAlzaXplID0g b2Zmc2V0b2YoUmVwbGljYXRpb25TbG90Q3RsRGF0YSwgcmVwbGljYXRpb25fc2xvdHMpOwogCXNp emUgPSBhZGRfc2l6ZShzaXplLAogCQkJCQltdWxfc2l6ZShtYXhfcmVwbGljYXRpb25fc2xvdHMs IHNpemVvZihSZXBsaWNhdGlvblNsb3QpKSk7Ci0KLQlyZXR1cm4gc2l6ZTsKKwlTaG1lbVJlcXVl c3RTdHJ1Y3QoLm5hbWUgPSAiUmVwbGljYXRpb25TbG90IEN0bCIsCisJCQkJCSAgIC5zaXplID0g c2l6ZSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmUmVwbGljYXRpb25TbG90Q3RsLAorCQkp OwogfQogCiAvKgotICogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgc2hhcmVkIG1lbW9yeSBmb3Ig cmVwbGljYXRpb24gc2xvdHMuCisgKiBJbml0aWFsaXplIHNoYXJlZCBtZW1vcnkgZm9yIHJlcGxp Y2F0aW9uIHNsb3RzLgogICovCi12b2lkCi1SZXBsaWNhdGlvblNsb3RzU2htZW1Jbml0KHZvaWQp CitzdGF0aWMgdm9pZAorUmVwbGljYXRpb25TbG90c1NobWVtSW5pdCh2b2lkICphcmcpCiB7Ci0J Ym9vbAkJZm91bmQ7Ci0KLQlpZiAobWF4X3JlcGxpY2F0aW9uX3Nsb3RzID09IDApCi0JCXJldHVy bjsKLQotCVJlcGxpY2F0aW9uU2xvdEN0bCA9IChSZXBsaWNhdGlvblNsb3RDdGxEYXRhICopCi0J CVNobWVtSW5pdFN0cnVjdCgiUmVwbGljYXRpb25TbG90IEN0bCIsIFJlcGxpY2F0aW9uU2xvdHNT aG1lbVNpemUoKSwKLQkJCQkJCSZmb3VuZCk7Ci0KLQlpZiAoIWZvdW5kKQorCWZvciAoaW50IGkg PSAwOyBpIDwgbWF4X3JlcGxpY2F0aW9uX3Nsb3RzOyBpKyspCiAJewotCQlpbnQJCQlpOworCQlS ZXBsaWNhdGlvblNsb3QgKnNsb3QgPSAmUmVwbGljYXRpb25TbG90Q3RsLT5yZXBsaWNhdGlvbl9z bG90c1tpXTsKIAotCQkvKiBGaXJzdCB0aW1lIHRocm91Z2gsIHNvIGluaXRpYWxpemUgKi8KLQkJ TWVtU2V0KFJlcGxpY2F0aW9uU2xvdEN0bCwgMCwgUmVwbGljYXRpb25TbG90c1NobWVtU2l6ZSgp KTsKLQotCQlmb3IgKGkgPSAwOyBpIDwgbWF4X3JlcGxpY2F0aW9uX3Nsb3RzOyBpKyspCi0JCXsK LQkJCVJlcGxpY2F0aW9uU2xvdCAqc2xvdCA9ICZSZXBsaWNhdGlvblNsb3RDdGwtPnJlcGxpY2F0 aW9uX3Nsb3RzW2ldOwotCi0JCQkvKiBldmVyeXRoaW5nIGVsc2UgaXMgemVyb2VkIGJ5IHRoZSBt ZW1zZXQgYWJvdmUgKi8KLQkJCXNsb3QtPmFjdGl2ZV9wcm9jID0gSU5WQUxJRF9QUk9DX05VTUJF UjsKLQkJCVNwaW5Mb2NrSW5pdCgmc2xvdC0+bXV0ZXgpOwotCQkJTFdMb2NrSW5pdGlhbGl6ZSgm c2xvdC0+aW9faW5fcHJvZ3Jlc3NfbG9jaywKLQkJCQkJCQkgTFdUUkFOQ0hFX1JFUExJQ0FUSU9O X1NMT1RfSU8pOwotCQkJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZzbG90LT5hY3RpdmVfY3YpOwot CQl9CisJCS8qIGV2ZXJ5dGhpbmcgZWxzZSBpcyB6ZXJvZWQgYnkgdGhlIG1lbXNldCBhYm92ZSAq LworCQlzbG90LT5hY3RpdmVfcHJvYyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CisJCVNwaW5Mb2Nr SW5pdCgmc2xvdC0+bXV0ZXgpOworCQlMV0xvY2tJbml0aWFsaXplKCZzbG90LT5pb19pbl9wcm9n cmVzc19sb2NrLAorCQkJCQkJIExXVFJBTkNIRV9SRVBMSUNBVElPTl9TTE9UX0lPKTsKKwkJQ29u ZGl0aW9uVmFyaWFibGVJbml0KCZzbG90LT5hY3RpdmVfY3YpOwogCX0KIH0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXJmdW5jcy5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXJmdW5jcy5jCmluZGV4IDQ1YjlkNGYwOWYyLi40ZTAz ZTcyMTg3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXJm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYwpA QCAtMjksNDcgKzI5LDQ2IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRl ICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKICNp bmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCiAKIFdhbFJjdkRhdGEgKldhbFJjdiA9IE5VTEw7 CiAKK3N0YXRpYyB2b2lkIFdhbFJjdlNobWVtUmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZv aWQgV2FsUmN2U2htZW1Jbml0KHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIFdh bFJjdlNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gV2FsUmN2U2htZW1SZXF1ZXN0 LAorCS5pbml0X2ZuID0gV2FsUmN2U2htZW1Jbml0LAorfTsKKwogLyoKICAqIEhvdyBsb25nIHRv IHdhaXQgZm9yIHdhbHJlY2VpdmVyIHRvIHN0YXJ0IHVwIGFmdGVyIHJlcXVlc3RpbmcKICAqIHBv c3RtYXN0ZXIgdG8gbGF1bmNoIGl0LiBJbiBzZWNvbmRzLgogICovCiAjZGVmaW5lIFdBTFJDVl9T VEFSVFVQX1RJTUVPVVQgMTAKIAotLyogUmVwb3J0IHNoYXJlZCBtZW1vcnkgc3BhY2UgbmVlZGVk IGJ5IFdhbFJjdlNobWVtSW5pdCAqLwotU2l6ZQotV2FsUmN2U2htZW1TaXplKHZvaWQpCisvKiBS ZWdpc3RlciBzaGFyZWQgbWVtb3J5IHNwYWNlIG5lZWRlZCBieSB3YWxyZWNlaXZlciAqLworc3Rh dGljIHZvaWQKK1dhbFJjdlNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7Ci0JU2l6ZQkJc2l6ZSA9 IDA7Ci0KLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgc2l6ZW9mKFdhbFJjdkRhdGEpKTsKLQotCXJl dHVybiBzaXplOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJXYWwgUmVjZWl2ZXIgQ3Rs IiwKKwkJCQkJICAgLnNpemUgPSBzaXplb2YoV2FsUmN2RGF0YSksCisJCQkJCSAgIC5wdHIgPSAo dm9pZCAqKikgJldhbFJjdiwKKwkJKTsKIH0KIAotLyogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUg d2FscmVjZWl2ZXItcmVsYXRlZCBzaGFyZWQgbWVtb3J5ICovCi12b2lkCi1XYWxSY3ZTaG1lbUlu aXQodm9pZCkKKy8qIEluaXRpYWxpemUgd2FscmVjZWl2ZXItcmVsYXRlZCBzaGFyZWQgbWVtb3J5 ICovCitzdGF0aWMgdm9pZAorV2FsUmN2U2htZW1Jbml0KHZvaWQgKmFyZykKIHsKLQlib29sCQlm b3VuZDsKLQotCVdhbFJjdiA9IChXYWxSY3ZEYXRhICopCi0JCVNobWVtSW5pdFN0cnVjdCgiV2Fs IFJlY2VpdmVyIEN0bCIsIFdhbFJjdlNobWVtU2l6ZSgpLCAmZm91bmQpOwotCi0JaWYgKCFmb3Vu ZCkKLQl7Ci0JCS8qIEZpcnN0IHRpbWUgdGhyb3VnaCwgc28gaW5pdGlhbGl6ZSAqLwotCQlNZW1T ZXQoV2FsUmN2LCAwLCBXYWxSY3ZTaG1lbVNpemUoKSk7Ci0JCVdhbFJjdi0+d2FsUmN2U3RhdGUg PSBXQUxSQ1ZfU1RPUFBFRDsKLQkJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZXYWxSY3YtPndhbFJj dlN0b3BwZWRDVik7Ci0JCVNwaW5Mb2NrSW5pdCgmV2FsUmN2LT5tdXRleCk7Ci0JCXBnX2F0b21p Y19pbml0X3U2NCgmV2FsUmN2LT53cml0dGVuVXB0bywgMCk7Ci0JCVdhbFJjdi0+cHJvY25vID0g SU5WQUxJRF9QUk9DX05VTUJFUjsKLQl9CisJTWVtU2V0KFdhbFJjdiwgMCwgc2l6ZW9mKFdhbFJj dkRhdGEpKTsKKwlXYWxSY3YtPndhbFJjdlN0YXRlID0gV0FMUkNWX1NUT1BQRUQ7CisJQ29uZGl0 aW9uVmFyaWFibGVJbml0KCZXYWxSY3YtPndhbFJjdlN0b3BwZWRDVik7CisJU3BpbkxvY2tJbml0 KCZXYWxSY3YtPm11dGV4KTsKKwlwZ19hdG9taWNfaW5pdF91NjQoJldhbFJjdi0+d3JpdHRlblVw dG8sIDApOworCVdhbFJjdi0+cHJvY25vID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIH0KIAogLyog SXMgd2FscmVjZWl2ZXIgcnVubmluZyAob3Igc3RhcnRpbmcgdXApPyAqLwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi93YWxzZW5kZXIuYwppbmRleCAyYmIzZjM0ZGM2ZC4uZWMzOTk0MmJmYzEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCkBAIC04Niw2ICs4Niw3IEBACiAjaW5jbHVkZSAic3Rv cmFnZS9wbXNpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5j bHVkZSAidGNvcC9kZXN0LmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUg InV0aWxzL2FjbC5oIgpAQCAtMTE3LDYgKzExOCwxNCBAQAogLyogQXJyYXkgb2YgV2FsU25kcyBp biBzaGFyZWQgbWVtb3J5ICovCiBXYWxTbmRDdGxEYXRhICpXYWxTbmRDdGwgPSBOVUxMOwogCitz dGF0aWMgdm9pZCBXYWxTbmRTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFdh bFNuZFNobWVtSW5pdCh2b2lkICphcmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBXYWxTbmRT aG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IFdhbFNuZFNobWVtUmVxdWVzdCwKKwku aW5pdF9mbiA9IFdhbFNuZFNobWVtSW5pdCwKK307CisKIC8qIE15IHNsb3QgaW4gdGhlIHNoYXJl ZCBtZW1vcnkgYXJyYXkgKi8KIFdhbFNuZAkgICAqTXlXYWxTbmQgPSBOVUxMOwogCkBAIC0zNzY1 LDQ3ICszNzc0LDM3IEBAIFdhbFNuZFNpZ25hbHModm9pZCkKIAlwcXNpZ25hbChTSUdDSExELCBT SUdfREZMKTsKIH0KIAotLyogUmVwb3J0IHNoYXJlZC1tZW1vcnkgc3BhY2UgbmVlZGVkIGJ5IFdh bFNuZFNobWVtSW5pdCAqLwotU2l6ZQotV2FsU25kU2htZW1TaXplKHZvaWQpCisvKiBSZWdpc3Rl ciBzaGFyZWQtbWVtb3J5IHNwYWNlIG5lZWRlZCBieSB3YWxzZW5kZXIgKi8KK3N0YXRpYyB2b2lk CitXYWxTbmRTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewotCVNpemUJCXNpemUgPSAwOworCVNp emUJCXNpemU7CiAKIAlzaXplID0gb2Zmc2V0b2YoV2FsU25kQ3RsRGF0YSwgd2Fsc25kcyk7CiAJ c2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKG1heF93YWxfc2VuZGVycywgc2l6ZW9mKFdh bFNuZCkpKTsKLQotCXJldHVybiBzaXplOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJX YWwgU2VuZGVyIEN0bCIsCisJCQkJCSAgIC5zaXplID0gc2l6ZSwKKwkJCQkJICAgLnB0ciA9ICh2 b2lkICoqKSAmV2FsU25kQ3RsLAorCQkpOwogfQogCi0vKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6 ZSB3YWxzZW5kZXItcmVsYXRlZCBzaGFyZWQgbWVtb3J5ICovCi12b2lkCi1XYWxTbmRTaG1lbUlu aXQodm9pZCkKKy8qIEluaXRpYWxpemUgd2Fsc2VuZGVyLXJlbGF0ZWQgc2hhcmVkIG1lbW9yeSAq Lworc3RhdGljIHZvaWQKK1dhbFNuZFNobWVtSW5pdCh2b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91 bmQ7Ci0JaW50CQkJaTsKKwlmb3IgKGludCBpID0gMDsgaSA8IE5VTV9TWU5DX1JFUF9XQUlUX01P REU7IGkrKykKKwkJZGxpc3RfaW5pdCgmKFdhbFNuZEN0bC0+U3luY1JlcFF1ZXVlW2ldKSk7CiAK LQlXYWxTbmRDdGwgPSAoV2FsU25kQ3RsRGF0YSAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIldhbCBT ZW5kZXIgQ3RsIiwgV2FsU25kU2htZW1TaXplKCksICZmb3VuZCk7Ci0KLQlpZiAoIWZvdW5kKQor CWZvciAoaW50IGkgPSAwOyBpIDwgbWF4X3dhbF9zZW5kZXJzOyBpKyspCiAJewotCQkvKiBGaXJz dCB0aW1lIHRocm91Z2gsIHNvIGluaXRpYWxpemUgKi8KLQkJTWVtU2V0KFdhbFNuZEN0bCwgMCwg V2FsU25kU2htZW1TaXplKCkpOwotCi0JCWZvciAoaSA9IDA7IGkgPCBOVU1fU1lOQ19SRVBfV0FJ VF9NT0RFOyBpKyspCi0JCQlkbGlzdF9pbml0KCYoV2FsU25kQ3RsLT5TeW5jUmVwUXVldWVbaV0p KTsKLQotCQlmb3IgKGkgPSAwOyBpIDwgbWF4X3dhbF9zZW5kZXJzOyBpKyspCi0JCXsKLQkJCVdh bFNuZAkgICAqd2Fsc25kID0gJldhbFNuZEN0bC0+d2Fsc25kc1tpXTsKLQotCQkJU3BpbkxvY2tJ bml0KCZ3YWxzbmQtPm11dGV4KTsKLQkJfQorCQlXYWxTbmQJICAgKndhbHNuZCA9ICZXYWxTbmRD dGwtPndhbHNuZHNbaV07CiAKLQkJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZXYWxTbmRDdGwtPndh bF9mbHVzaF9jdik7Ci0JCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmV2FsU25kQ3RsLT53YWxfcmVw bGF5X2N2KTsKLQkJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZXYWxTbmRDdGwtPndhbF9jb25maXJt X3Jjdl9jdik7CisJCVNwaW5Mb2NrSW5pdCgmd2Fsc25kLT5tdXRleCk7CiAJfQorCisJQ29uZGl0 aW9uVmFyaWFibGVJbml0KCZXYWxTbmRDdGwtPndhbF9mbHVzaF9jdik7CisJQ29uZGl0aW9uVmFy aWFibGVJbml0KCZXYWxTbmRDdGwtPndhbF9yZXBsYXlfY3YpOworCUNvbmRpdGlvblZhcmlhYmxl SW5pdCgmV2FsU25kQ3RsLT53YWxfY29uZmlybV9yY3ZfY3YpOwogfQogCiAvKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvaXBjaS5jCmluZGV4IGY2NGMxZDU5ZmEzLi5iZjZiODFlNjIxYiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L2lwY2kuYwpAQCAtMTQsNDEgKzE0LDE2IEBACiAgKi8KICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgog Ci0jaW5jbHVkZSAiYWNjZXNzL2Nsb2cuaCIKLSNpbmNsdWRlICJhY2Nlc3MvY29tbWl0X3RzLmgi Ci0jaW5jbHVkZSAiYWNjZXNzL211bHRpeGFjdC5oIgotI2luY2x1ZGUgImFjY2Vzcy9uYnRyZWUu aCIKLSNpbmNsdWRlICJhY2Nlc3Mvc3VidHJhbnMuaCIKLSNpbmNsdWRlICJhY2Nlc3Mvc3luY3Nj YW4uaCIKLSNpbmNsdWRlICJhY2Nlc3MvdHdvcGhhc2UuaCIKLSNpbmNsdWRlICJhY2Nlc3MveGxv Z3ByZWZldGNoZXIuaCIKLSNpbmNsdWRlICJhY2Nlc3MveGxvZ3JlY292ZXJ5LmgiCi0jaW5jbHVk ZSAiYWNjZXNzL3hsb2d3YWl0LmgiCi0jaW5jbHVkZSAiY29tbWFuZHMvYXN5bmMuaCIKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKLSNpbmNsdWRlICJwb3N0bWFz dGVyL2F1dG92YWN1dW0uaCIKLSNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd29ya2VyX2ludGVybmFs cy5oIgotI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3cml0ZXIuaCIKLSNpbmNsdWRlICJwb3N0bWFz dGVyL2RhdGFjaGVja3N1bV9zdGF0ZS5oIgotI2luY2x1ZGUgInBvc3RtYXN0ZXIvd2Fsc3VtbWFy aXplci5oIgotI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgotI2luY2x1 ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5oIgotI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIK LSNpbmNsdWRlICJyZXBsaWNhdGlvbi9zbG90c3luYy5oIgotI2luY2x1ZGUgInJlcGxpY2F0aW9u L3dhbHJlY2VpdmVyLmgiCi0jaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCi0jaW5j bHVkZSAic3RvcmFnZS9haW9fc3Vic3lzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9kc20uaCIKICNp bmNsdWRlICJzdG9yYWdlL2lwYy5oIgorI2luY2x1ZGUgInN0b3JhZ2UvbG9jay5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcGdfc2htZW0uaCIKLSNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgog I2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW1faW50ZXJu YWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1dGlscy9n dWMuaCIKLSNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKLSNpbmNsdWRlICJ1dGls cy93YWl0X2V2ZW50LmgiCiAKIC8qIEdVQ3MgKi8KIGludAkJCXNoYXJlZF9tZW1vcnlfdHlwZSA9 IERFRkFVTFRfU0hBUkVEX01FTU9SWV9UWVBFOwpAQCAtNTcsOCArMzIsNiBAQCBzaG1lbV9zdGFy dHVwX2hvb2tfdHlwZSBzaG1lbV9zdGFydHVwX2hvb2sgPSBOVUxMOwogCiBzdGF0aWMgU2l6ZSB0 b3RhbF9hZGRpbl9yZXF1ZXN0ID0gMDsKIAotc3RhdGljIHZvaWQgQ3JlYXRlT3JBdHRhY2hTaG1l bVN0cnVjdHModm9pZCk7Ci0KIC8qCiAgKiBSZXF1ZXN0QWRkaW5TaG1lbVNwYWNlCiAgKgkJUmVx dWVzdCB0aGF0IGV4dHJhIHNobWVtIHNwYWNlIGJlIGFsbG9jYXRlZCBmb3IgdXNlIGJ5CkBAIC05 NywzMyArNzAsNiBAQCBDYWxjdWxhdGVTaG1lbVNpemUodm9pZCkKIAlzaXplID0gMTAwMDAwOwog CXNpemUgPSBhZGRfc2l6ZShzaXplLCBTaG1lbUdldFJlcXVlc3RlZFNpemUoKSk7CiAKLQkvKiBs ZWdhY3kgc3Vic3lzdGVtcyAqLwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBMb2NrTWFuYWdlclNo bWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgWExvZ1ByZWZldGNoU2htZW1TaXpl KCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBYTE9HU2htZW1TaXplKCkpOwotCXNpemUgPSBh ZGRfc2l6ZShzaXplLCBYTG9nUmVjb3ZlcnlTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXpl KHNpemUsIFR3b1BoYXNlU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBCYWNr Z3JvdW5kV29ya2VyU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBCYWNrZW5k U3RhdHVzU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBDaGVja3BvaW50ZXJT aG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIEF1dG9WYWN1dW1TaG1lbVNpemUo KSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFJlcGxpY2F0aW9uU2xvdHNTaG1lbVNpemUoKSk7 Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFJlcGxpY2F0aW9uT3JpZ2luU2htZW1TaXplKCkpOwot CXNpemUgPSBhZGRfc2l6ZShzaXplLCBXYWxTbmRTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9z aXplKHNpemUsIFdhbFJjdlNobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgV2Fs U3VtbWFyaXplclNobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgUGdBcmNoU2ht ZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBBcHBseUxhdW5jaGVyU2htZW1TaXpl KCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBCVHJlZVNobWVtU2l6ZSgpKTsKLQlzaXplID0g YWRkX3NpemUoc2l6ZSwgU3luY1NjYW5TaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNp emUsIFN0YXRzU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBXYWl0RXZlbnRD dXN0b21TaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIEluamVjdGlvblBvaW50 U2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBTbG90U3luY1NobWVtU2l6ZSgp KTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgV2FpdExTTlNobWVtU2l6ZSgpKTsKLQlzaXplID0g YWRkX3NpemUoc2l6ZSwgTG9naWNhbERlY29kaW5nQ3RsU2htZW1TaXplKCkpOwotCXNpemUgPSBh ZGRfc2l6ZShzaXplLCBEYXRhQ2hlY2tzdW1zU2htZW1TaXplKCkpOwotCiAJLyogaW5jbHVkZSBh ZGRpdGlvbmFsIHJlcXVlc3RlZCBzaG1lbSBmcm9tIHByZWxvYWQgbGlicmFyaWVzICovCiAJc2l6 ZSA9IGFkZF9zaXplKHNpemUsIHRvdGFsX2FkZGluX3JlcXVlc3QpOwogCkBAIC0xNTcsNyArMTAz LDYgQEAgQXR0YWNoU2hhcmVkTWVtb3J5U3RydWN0cyh2b2lkKQogCiAJLyogRXN0YWJsaXNoIHBv aW50ZXJzIHRvIGFsbCBzaGFyZWQgbWVtb3J5IGFyZWFzIGluIHRoaXMgYmFja2VuZCAqLwogCVNo bWVtQXR0YWNoUmVxdWVzdGVkKCk7Ci0JQ3JlYXRlT3JBdHRhY2hTaG1lbVN0cnVjdHMoKTsKIAog CS8qCiAJICogTm93IGdpdmUgbG9hZGFibGUgbW9kdWxlcyBhIGNoYW5jZSB0byBzZXQgdXAgdGhl aXIgc2htZW0gYWxsb2NhdGlvbnMKQEAgLTIwNCw5ICsxNDksNiBAQCBDcmVhdGVTaGFyZWRNZW1v cnlBbmRTZW1hcGhvcmVzKHZvaWQpCiAJLyogSW5pdGlhbGl6ZSBhbGwgc2htZW0gYXJlYXMgKi8K IAlTaG1lbUluaXRSZXF1ZXN0ZWQoKTsKIAotCS8qIEluaXRpYWxpemUgbGVnYWN5IHN1YnN5c3Rl bXMgKi8KLQlDcmVhdGVPckF0dGFjaFNobWVtU3RydWN0cygpOwotCiAJLyogSW5pdGlhbGl6ZSBk eW5hbWljIHNoYXJlZCBtZW1vcnkgZmFjaWxpdGllcy4gKi8KIAlkc21fcG9zdG1hc3Rlcl9zdGFy dHVwKHNoaW0pOwogCkBAIC0yMzcsNzAgKzE3OSw2IEBAIFJlZ2lzdGVyQnVpbHRpblNobWVtQ2Fs bGJhY2tzKHZvaWQpCiAjdW5kZWYgUEdfU0hNRU1fU1VCU1lTVEVNCiB9CiAKLS8qCi0gKiBJbml0 aWFsaXplIHZhcmlvdXMgc3Vic3lzdGVtcywgc2V0dGluZyB1cCB0aGVpciBkYXRhIHN0cnVjdHVy ZXMgaW4KLSAqIHNoYXJlZCBtZW1vcnkuCi0gKgotICogVGhpcyBpcyBjYWxsZWQgYnkgdGhlIHBv c3RtYXN0ZXIgb3IgYnkgYSBzdGFuZGFsb25lIGJhY2tlbmQuCi0gKiBJdCBpcyBhbHNvIGNhbGxl ZCBieSBhIGJhY2tlbmQgZm9ya2VkIGZyb20gdGhlIHBvc3RtYXN0ZXIgaW4gdGhlCi0gKiBFWEVD X0JBQ0tFTkQgY2FzZS4gIEluIHRoZSBsYXR0ZXIgY2FzZSwgdGhlIHNoYXJlZCBtZW1vcnkgc2Vn bWVudAotICogYWxyZWFkeSBleGlzdHMgYW5kIGhhcyBiZWVuIHBoeXNpY2FsbHkgYXR0YWNoZWQg dG8sIGJ1dCB3ZSBoYXZlIHRvCi0gKiBpbml0aWFsaXplIHBvaW50ZXJzIGluIGxvY2FsIG1lbW9y eSB0aGF0IHJlZmVyZW5jZSB0aGUgc2hhcmVkIHN0cnVjdHVyZXMsCi0gKiBiZWNhdXNlIHdlIGRp ZG4ndCBpbmhlcml0IHRoZSBjb3JyZWN0IHBvaW50ZXIgdmFsdWVzIGZyb20gdGhlIHBvc3RtYXN0 ZXIKLSAqIGFzIHdlIGRvIGluIHRoZSBmb3JrKCkgc2NlbmFyaW8uICBUaGUgZWFzaWVzdCB3YXkg dG8gZG8gdGhhdCBpcyB0byBydW4KLSAqIHRocm91Z2ggdGhlIHNhbWUgY29kZSBhcyBiZWZvcmUu ICAoTm90ZSB0aGF0IHRoZSBjYWxsZWQgcm91dGluZXMgbW9zdGx5Ci0gKiBjaGVjayBJc1VuZGVy UG9zdG1hc3RlciwgcmF0aGVyIHRoYW4gRVhFQ19CQUNLRU5ELCB0byBkZXRlY3QgdGhpcyBjYXNl LgotICogVGhpcyBpcyBhIGJpdCBjb2RlLXdhc3RlZnVsIGFuZCBjb3VsZCBiZSBjbGVhbmVkIHVw LikKLSAqLwotc3RhdGljIHZvaWQKLUNyZWF0ZU9yQXR0YWNoU2htZW1TdHJ1Y3RzKHZvaWQpCi17 Ci0JLyoKLQkgKiBTZXQgdXAgeGxvZywgY2xvZywgYW5kIGJ1ZmZlcnMKLQkgKi8KLQlYTE9HU2ht ZW1Jbml0KCk7Ci0JWExvZ1ByZWZldGNoU2htZW1Jbml0KCk7Ci0JWExvZ1JlY292ZXJ5U2htZW1J bml0KCk7Ci0KLQkvKgotCSAqIFNldCB1cCBsb2NrIG1hbmFnZXIKLQkgKi8KLQlMb2NrTWFuYWdl clNobWVtSW5pdCgpOwotCi0JLyoKLQkgKiBTZXQgdXAgcHJvY2VzcyB0YWJsZQotCSAqLwotCUJh Y2tlbmRTdGF0dXNTaG1lbUluaXQoKTsKLQlUd29QaGFzZVNobWVtSW5pdCgpOwotCUJhY2tncm91 bmRXb3JrZXJTaG1lbUluaXQoKTsKLQotCS8qCi0JICogU2V0IHVwIGludGVycHJvY2VzcyBzaWdu YWxpbmcgbWVjaGFuaXNtcwotCSAqLwotCUNoZWNrcG9pbnRlclNobWVtSW5pdCgpOwotCUF1dG9W YWN1dW1TaG1lbUluaXQoKTsKLQlSZXBsaWNhdGlvblNsb3RzU2htZW1Jbml0KCk7Ci0JUmVwbGlj YXRpb25PcmlnaW5TaG1lbUluaXQoKTsKLQlXYWxTbmRTaG1lbUluaXQoKTsKLQlXYWxSY3ZTaG1l bUluaXQoKTsKLQlXYWxTdW1tYXJpemVyU2htZW1Jbml0KCk7Ci0JUGdBcmNoU2htZW1Jbml0KCk7 Ci0JQXBwbHlMYXVuY2hlclNobWVtSW5pdCgpOwotCVNsb3RTeW5jU2htZW1Jbml0KCk7Ci0JRGF0 YUNoZWNrc3Vtc1NobWVtSW5pdCgpOwotCi0JLyoKLQkgKiBTZXQgdXAgb3RoZXIgbW9kdWxlcyB0 aGF0IG5lZWQgc29tZSBzaGFyZWQgbWVtb3J5IHNwYWNlCi0JICovCi0JQlRyZWVTaG1lbUluaXQo KTsKLQlTeW5jU2NhblNobWVtSW5pdCgpOwotCVN0YXRzU2htZW1Jbml0KCk7Ci0JV2FpdEV2ZW50 Q3VzdG9tU2htZW1Jbml0KCk7Ci0JSW5qZWN0aW9uUG9pbnRTaG1lbUluaXQoKTsKLQlXYWl0TFNO U2htZW1Jbml0KCk7Ci0JTG9naWNhbERlY29kaW5nQ3RsU2htZW1Jbml0KCk7Ci19Ci0KIC8qCiAg KiBJbml0aWFsaXplU2htZW1HVUNzCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL2xvY2suYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKaW5kZXggNzk4 YzQ1M2FiMzguLjY4ZDVhMDM4OWRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvbG9jay5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKQEAgLTQzLDgg KzQzLDEwIEBACiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w cm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNsdWRlICJzdG9yYWdl L3NobWVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9z dGFuZGJ5LmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRp bHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9wc19zdGF0dXMuaCIKICNpbmNsdWRlICJ1 dGlscy9yZXNvd25lci5oIgpAQCAtMzEyLDYgKzMxNCwxNCBAQCB0eXBlZGVmIHN0cnVjdAogCiBz dGF0aWMgdm9sYXRpbGUgRmFzdFBhdGhTdHJvbmdSZWxhdGlvbkxvY2tEYXRhICpGYXN0UGF0aFN0 cm9uZ1JlbGF0aW9uTG9ja3M7CiAKK3N0YXRpYyB2b2lkIExvY2tNYW5hZ2VyU2htZW1SZXF1ZXN0 KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBMb2NrTWFuYWdlclNobWVtSW5pdCh2b2lkICphcmcp OworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBMb2NrTWFuYWdlclNobWVtQ2FsbGJhY2tzID0gewor CS5yZXF1ZXN0X2ZuID0gTG9ja01hbmFnZXJTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBMb2Nr TWFuYWdlclNobWVtSW5pdCwKK307CisKIAogLyoKICAqIFBvaW50ZXJzIHRvIGhhc2ggdGFibGVz IGNvbnRhaW5pbmcgbG9jayBzdGF0ZQpAQCAtNDA5LDYgKzQxOSw3IEBAIFBST0NMT0NLX1BSSU5U KGNvbnN0IGNoYXIgKndoZXJlLCBjb25zdCBQUk9DTE9DSyAqcHJvY2xvY2tQKQogCiAKIHN0YXRp YyB1aW50MzIgcHJvY2xvY2tfaGFzaChjb25zdCB2b2lkICprZXksIFNpemUga2V5c2l6ZSk7CisK IHN0YXRpYyB2b2lkIFJlbW92ZUxvY2FsTG9jayhMT0NBTExPQ0sgKmxvY2FsbG9jayk7CiBzdGF0 aWMgUFJPQ0xPQ0sgKlNldHVwTG9ja0luVGFibGUoTG9ja01ldGhvZCBsb2NrTWV0aG9kVGFibGUs IFBHUFJPQyAqcHJvYywKIAkJCQkJCQkJICBjb25zdCBMT0NLVEFHICpsb2NrdGFnLCB1aW50MzIg aGFzaGNvZGUsIExPQ0tNT0RFIGxvY2ttb2RlKTsKQEAgLTQzMiwyMSArNDQzLDE1IEBAIHN0YXRp YyB2b2lkIEdldFNpbmdsZVByb2NCbG9ja2VyU3RhdHVzRGF0YShQR1BST0MgKmJsb2NrZWRfcHJv YywKIAogCiAvKgotICogSW5pdGlhbGl6ZSB0aGUgbG9jayBtYW5hZ2VyJ3Mgc2htZW0gZGF0YSBz dHJ1Y3R1cmVzLgorICogUmVnaXN0ZXIgdGhlIGxvY2sgbWFuYWdlcidzIHNobWVtIGRhdGEgc3Ry dWN0dXJlcy4KICAqCi0gKiBUaGlzIGlzIGNhbGxlZCBmcm9tIENyZWF0ZVNoYXJlZE1lbW9yeUFu ZFNlbWFwaG9yZXMoKSwgd2hpY2ggc2VlIGZvciBtb3JlCi0gKiBjb21tZW50cy4gIEluIHRoZSBu b3JtYWwgcG9zdG1hc3RlciBjYXNlLCB0aGUgc2hhcmVkIGhhc2ggdGFibGVzIGFyZQotICogY3Jl YXRlZCBoZXJlLCBhbmQgYmFja2VuZHMgaW5oZXJpdCBwb2ludGVycyB0byB0aGVtIHZpYSBmb3Jr KCkuICBJbiB0aGUKLSAqIEVYRUNfQkFDS0VORCBjYXNlLCBlYWNoIGJhY2tlbmQgcmUtZXhlY3V0 ZXMgdGhpcyBjb2RlIHRvIG9idGFpbiBwb2ludGVycyB0bwotICogdGhlIGFscmVhZHkgZXhpc3Rp bmcgc2hhcmVkIGhhc2ggdGFibGVzLiAgSW4gZWl0aGVyIGNhc2UsIGVhY2ggYmFja2VuZCBtdXN0 Ci0gKiBhbHNvIGNhbGwgSW5pdExvY2tNYW5hZ2VyQWNjZXNzKCkgdG8gY3JlYXRlIHRoZSBsb2Nh bGxvY2sgaGFzaCB0YWJsZS4KKyAqIEluIGFkZGl0aW9uIHRvIHRoaXMsIGVhY2ggYmFja2VuZCBt dXN0IGFsc28gY2FsbCBJbml0TG9ja01hbmFnZXJBY2Nlc3MoKSB0bworICogY3JlYXRlIHRoZSBs b2NhbGxvY2sgaGFzaCB0YWJsZS4KICAqLwotdm9pZAotTG9ja01hbmFnZXJTaG1lbUluaXQodm9p ZCkKK3N0YXRpYyB2b2lkCitMb2NrTWFuYWdlclNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7Ci0J SEFTSENUTAkJaW5mbzsKIAlpbnQ2NAkJbWF4X3RhYmxlX3NpemU7Ci0JYm9vbAkJZm91bmQ7CiAK IAkvKgogCSAqIENvbXB1dGUgc2l6ZXMgZm9yIGxvY2sgaGFzaHRhYmxlcy4gIE5vdGUgdGhhdCB0 aGVzZSBjYWxjdWxhdGlvbnMgbXVzdApAQCAtNDU1LDQ1ICs0NjAsNDggQEAgTG9ja01hbmFnZXJT aG1lbUluaXQodm9pZCkKIAltYXhfdGFibGVfc2l6ZSA9IE5MT0NLRU5UUygpOwogCiAJLyoKLQkg KiBBbGxvY2F0ZSBoYXNoIHRhYmxlIGZvciBMT0NLIHN0cnVjdHMuICBUaGlzIHN0b3JlcyBwZXIt bG9ja2VkLW9iamVjdAorCSAqIEhhc2ggdGFibGUgZm9yIExPQ0sgc3RydWN0cy4gIFRoaXMgc3Rv cmVzIHBlci1sb2NrZWQtb2JqZWN0CiAJICogaW5mb3JtYXRpb24uCiAJICovCi0JaW5mby5rZXlz aXplID0gc2l6ZW9mKExPQ0tUQUcpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKExPQ0spOwot CWluZm8ubnVtX3BhcnRpdGlvbnMgPSBOVU1fTE9DS19QQVJUSVRJT05TOwotCi0JTG9ja01ldGhv ZExvY2tIYXNoID0gU2htZW1Jbml0SGFzaCgiTE9DSyBoYXNoIiwKLQkJCQkJCQkJCSAgIG1heF90 YWJsZV9zaXplLAotCQkJCQkJCQkJICAgJmluZm8sCi0JCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBI QVNIX0JMT0JTIHwKLQkJCQkJCQkJCSAgIEhBU0hfUEFSVElUSU9OIHwgSEFTSF9GSVhFRF9TSVpF KTsKKwlTaG1lbVJlcXVlc3RIYXNoKC5uYW1lID0gIkxPQ0sgaGFzaCIsCisJCQkJCSAubmVsZW1z ID0gbWF4X3RhYmxlX3NpemUsCisJCQkJCSAucHRyID0gJkxvY2tNZXRob2RMb2NrSGFzaCwKKwkJ CQkJIC5oYXNoX2luZm8ua2V5c2l6ZSA9IHNpemVvZihMT0NLVEFHKSwKKwkJCQkJIC5oYXNoX2lu Zm8uZW50cnlzaXplID0gc2l6ZW9mKExPQ0spLAorCQkJCQkgLmhhc2hfaW5mby5udW1fcGFydGl0 aW9ucyA9IE5VTV9MT0NLX1BBUlRJVElPTlMsCisJCQkJCSAuaGFzaF9mbGFncyA9IEhBU0hfRUxF TSB8IEhBU0hfQkxPQlMgfCBIQVNIX1BBUlRJVElPTiwKKwkJKTsKIAogCS8qIEFzc3VtZSBhbiBh dmVyYWdlIG9mIDIgaG9sZGVycyBwZXIgbG9jayAqLwogCW1heF90YWJsZV9zaXplICo9IDI7CiAK LQkvKgotCSAqIEFsbG9jYXRlIGhhc2ggdGFibGUgZm9yIFBST0NMT0NLIHN0cnVjdHMuICBUaGlz IHN0b3JlcwotCSAqIHBlci1sb2NrLXBlci1ob2xkZXIgaW5mb3JtYXRpb24uCi0JICovCi0JaW5m by5rZXlzaXplID0gc2l6ZW9mKFBST0NMT0NLVEFHKTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVv ZihQUk9DTE9DSyk7Ci0JaW5mby5oYXNoID0gcHJvY2xvY2tfaGFzaDsKLQlpbmZvLm51bV9wYXJ0 aXRpb25zID0gTlVNX0xPQ0tfUEFSVElUSU9OUzsKLQotCUxvY2tNZXRob2RQcm9jTG9ja0hhc2gg PSBTaG1lbUluaXRIYXNoKCJQUk9DTE9DSyBoYXNoIiwKLQkJCQkJCQkJCQkgICBtYXhfdGFibGVf c2l6ZSwKLQkJCQkJCQkJCQkgICAmaW5mbywKLQkJCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNI X0ZVTkNUSU9OIHwKLQkJCQkJCQkJCQkgICBIQVNIX0ZJWEVEX1NJWkUgfCBIQVNIX1BBUlRJVElP Tik7CisJU2htZW1SZXF1ZXN0SGFzaCgubmFtZSA9ICJQUk9DTE9DSyBoYXNoIiwKKwkJCQkJIC5u ZWxlbXMgPSBtYXhfdGFibGVfc2l6ZSwKKwkJCQkJIC5wdHIgPSAmTG9ja01ldGhvZFByb2NMb2Nr SGFzaCwKKwkJCQkJIC5oYXNoX2luZm8ua2V5c2l6ZSA9IHNpemVvZihQUk9DTE9DS1RBRyksCisJ CQkJCSAuaGFzaF9pbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihQUk9DTE9DSyksCisJCQkJCSAuaGFz aF9pbmZvLmhhc2ggPSBwcm9jbG9ja19oYXNoLAorCQkJCQkgLmhhc2hfaW5mby5udW1fcGFydGl0 aW9ucyA9IE5VTV9MT0NLX1BBUlRJVElPTlMsCisJCQkJCSAuaGFzaF9mbGFncyA9IEhBU0hfRUxF TSB8IEhBU0hfRlVOQ1RJT04gfCBIQVNIX1BBUlRJVElPTiwKKwkJKTsKKworCVNobWVtUmVxdWVz dFN0cnVjdCgubmFtZSA9ICJGYXN0IFBhdGggU3Ryb25nIFJlbGF0aW9uIExvY2sgRGF0YSIsCisJ CQkJCSAgIC5zaXplID0gc2l6ZW9mKEZhc3RQYXRoU3Ryb25nUmVsYXRpb25Mb2NrRGF0YSksCisJ CQkJCSAgIC5wdHIgPSAodm9pZCAqKikgKHZvaWQgKikgJkZhc3RQYXRoU3Ryb25nUmVsYXRpb25M b2NrcywKKwkJKTsKIAogCS8qCi0JICogQWxsb2NhdGUgZmFzdC1wYXRoIHN0cnVjdHVyZXMuCisJ ICogRklYTUU6IHdlIHVzZWQgdG8gZG8gdGhpcyBpbiB0aGUgc2l6ZSBjYWxjdWxhdGlvbjoKKwkg KgorCSAqIC8vIFNpbmNlIE5MT0NLRU5UUyBpcyBvbmx5IGFuIGVzdGltYXRlLCBhZGQgMTAlIHNh ZmV0eSBtYXJnaW4uIHNpemUgPQorCSAqIGFkZF9zaXplKHNpemUsIHNpemUgLyAxMCk7CiAJICov Ci0JRmFzdFBhdGhTdHJvbmdSZWxhdGlvbkxvY2tzID0KLQkJU2htZW1Jbml0U3RydWN0KCJGYXN0 IFBhdGggU3Ryb25nIFJlbGF0aW9uIExvY2sgRGF0YSIsCi0JCQkJCQlzaXplb2YoRmFzdFBhdGhT dHJvbmdSZWxhdGlvbkxvY2tEYXRhKSwgJmZvdW5kKTsKLQlpZiAoIWZvdW5kKQotCQlTcGluTG9j a0luaXQoJkZhc3RQYXRoU3Ryb25nUmVsYXRpb25Mb2Nrcy0+bXV0ZXgpOworfQorCitzdGF0aWMg dm9pZAorTG9ja01hbmFnZXJTaG1lbUluaXQodm9pZCAqYXJnKQoreworCVNwaW5Mb2NrSW5pdCgm RmFzdFBhdGhTdHJvbmdSZWxhdGlvbkxvY2tzLT5tdXRleCk7CiB9CiAKIC8qCkBAIC0zNzU4LDI5 ICszNzY2LDYgQEAgUG9zdFByZXBhcmVfTG9ja3MoRnVsbFRyYW5zYWN0aW9uSWQgZnhpZCkKIH0K IAogCi0vKgotICogRXN0aW1hdGUgc2hhcmVkLW1lbW9yeSBzcGFjZSB1c2VkIGZvciBsb2NrIHRh YmxlcwotICovCi1TaXplCi1Mb2NrTWFuYWdlclNobWVtU2l6ZSh2b2lkKQotewotCVNpemUJCXNp emUgPSAwOwotCWxvbmcJCW1heF90YWJsZV9zaXplOwotCi0JLyogbG9jayBoYXNoIHRhYmxlICov Ci0JbWF4X3RhYmxlX3NpemUgPSBOTE9DS0VOVFMoKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwg aGFzaF9lc3RpbWF0ZV9zaXplKG1heF90YWJsZV9zaXplLCBzaXplb2YoTE9DSykpKTsKLQotCS8q IHByb2Nsb2NrIGhhc2ggdGFibGUgKi8KLQltYXhfdGFibGVfc2l6ZSAqPSAyOwotCXNpemUgPSBh ZGRfc2l6ZShzaXplLCBoYXNoX2VzdGltYXRlX3NpemUobWF4X3RhYmxlX3NpemUsIHNpemVvZihQ Uk9DTE9DSykpKTsKLQotCS8qIGZhc3QtcGF0aCBzdHJ1Y3R1cmVzICovCi0Jc2l6ZSA9IGFkZF9z aXplKHNpemUsIHNpemVvZihGYXN0UGF0aFN0cm9uZ1JlbGF0aW9uTG9ja0RhdGEpKTsKLQotCXJl dHVybiBzaXplOwotfQotCiAvKgogICogR2V0TG9ja1N0YXR1c0RhdGEgLSBSZXR1cm4gYSBzdW1t YXJ5IG9mIHRoZSBsb2NrIG1hbmFnZXIncyBpbnRlcm5hbAogICogc3RhdHVzLCBmb3IgdXNlIGlu IGEgdXNlci1sZXZlbCByZXBvcnRpbmcgZnVuY3Rpb24uCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvYmFja2VuZF9zdGF0dXMuYwppbmRleCBjZDA4NzEyOTQ2OS4uNGNiOWM4MGEyYzUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tlbmRfc3RhdHVzLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvYmFja2VuZF9zdGF0dXMuYwpAQCAtMTgsNyAr MTgsOSBAQAogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCQkvKiBmb3IgTXlQcm9jICovCisjaW5jbHVkZSAic3Rv cmFnZS9zaG1lbS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVkZSAi c3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvYXNjaWkuaCIKICNpbmNsdWRl ICJ1dGlscy9ndWMuaCIJCQkvKiBmb3IgYXBwbGljYXRpb25fbmFtZSAqLwogI2luY2x1ZGUgInV0 aWxzL21lbXV0aWxzLmgiCkBAIC03MywxMzMgKzc1LDk3IEBAIHN0YXRpYyB2b2lkIHBnc3RhdF9i ZXNodXRkb3duX2hvb2soaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBwZ3N0YXRf cmVhZF9jdXJyZW50X3N0YXR1cyh2b2lkKTsKIHN0YXRpYyB2b2lkIHBnc3RhdF9zZXR1cF9iYWNr ZW5kX3N0YXR1c19jb250ZXh0KHZvaWQpOwogCitzdGF0aWMgdm9pZCBCYWNrZW5kU3RhdHVzU2ht ZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBCYWNrZW5kU3RhdHVzU2htZW1Jbml0 KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBCYWNrZW5kU3RhdHVzU2htZW1BdHRhY2godm9pZCAq YXJnKTsKKworY29uc3QgU2htZW1DYWxsYmFja3MgQmFja2VuZFN0YXR1c1NobWVtQ2FsbGJhY2tz ID0geworCS5yZXF1ZXN0X2ZuID0gQmFja2VuZFN0YXR1c1NobWVtUmVxdWVzdCwKKwkuaW5pdF9m biA9IEJhY2tlbmRTdGF0dXNTaG1lbUluaXQsCisJLmF0dGFjaF9mbiA9IEJhY2tlbmRTdGF0dXNT aG1lbUF0dGFjaCwKK307CiAKIC8qCi0gKiBSZXBvcnQgc2hhcmVkLW1lbW9yeSBzcGFjZSBuZWVk ZWQgYnkgQmFja2VuZFN0YXR1c1NobWVtSW5pdC4KKyAqIFJlZ2lzdGVyIHNoYXJlZCBtZW1vcnkg bmVlZHMgZm9yIGJhY2tlbmQgc3RhdHVzIHJlcG9ydGluZy4KICAqLwotU2l6ZQotQmFja2VuZFN0 YXR1c1NobWVtU2l6ZSh2b2lkKQorc3RhdGljIHZvaWQKK0JhY2tlbmRTdGF0dXNTaG1lbVJlcXVl c3Qodm9pZCAqYXJnKQogewotCVNpemUJCXNpemU7Ci0KLQkvKiBCYWNrZW5kU3RhdHVzQXJyYXk6 ICovCi0Jc2l6ZSA9IG11bF9zaXplKHNpemVvZihQZ0JhY2tlbmRTdGF0dXMpLCBOdW1CYWNrZW5k U3RhdFNsb3RzKTsKLQkvKiBCYWNrZW5kQXBwbmFtZUJ1ZmZlcjogKi8KLQlzaXplID0gYWRkX3Np emUoc2l6ZSwKLQkJCQkJbXVsX3NpemUoTkFNRURBVEFMRU4sIE51bUJhY2tlbmRTdGF0U2xvdHMp KTsKLQkvKiBCYWNrZW5kQ2xpZW50SG9zdG5hbWVCdWZmZXI6ICovCi0Jc2l6ZSA9IGFkZF9zaXpl KHNpemUsCi0JCQkJCW11bF9zaXplKE5BTUVEQVRBTEVOLCBOdW1CYWNrZW5kU3RhdFNsb3RzKSk7 Ci0JLyogQmFja2VuZEFjdGl2aXR5QnVmZmVyOiAqLwotCXNpemUgPSBhZGRfc2l6ZShzaXplLAot CQkJCQltdWxfc2l6ZShwZ3N0YXRfdHJhY2tfYWN0aXZpdHlfcXVlcnlfc2l6ZSwgTnVtQmFja2Vu ZFN0YXRTbG90cykpOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJCYWNrZW5kIFN0YXR1 cyBBcnJheSIsCisJCQkJCSAgIC5zaXplID0gbXVsX3NpemUoc2l6ZW9mKFBnQmFja2VuZFN0YXR1 cyksIE51bUJhY2tlbmRTdGF0U2xvdHMpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZCYWNr ZW5kU3RhdHVzQXJyYXksCisJCSk7CisKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQmFj a2VuZCBBcHBsaWNhdGlvbiBOYW1lIEJ1ZmZlciIsCisJCQkJCSAgIC5zaXplID0gbXVsX3NpemUo TkFNRURBVEFMRU4sIE51bUJhY2tlbmRTdGF0U2xvdHMpLAorCQkJCQkgICAucHRyID0gKHZvaWQg KiopICZCYWNrZW5kQXBwbmFtZUJ1ZmZlciwKKwkJKTsKKworCVNobWVtUmVxdWVzdFN0cnVjdCgu bmFtZSA9ICJCYWNrZW5kIENsaWVudCBIb3N0IE5hbWUgQnVmZmVyIiwKKwkJCQkJICAgLnNpemUg PSBtdWxfc2l6ZShOQU1FREFUQUxFTiwgTnVtQmFja2VuZFN0YXRTbG90cyksCisJCQkJCSAgIC5w dHIgPSAodm9pZCAqKikgJkJhY2tlbmRDbGllbnRIb3N0bmFtZUJ1ZmZlciwKKwkJKTsKKworCUJh Y2tlbmRBY3Rpdml0eUJ1ZmZlclNpemUgPSBtdWxfc2l6ZShwZ3N0YXRfdHJhY2tfYWN0aXZpdHlf cXVlcnlfc2l6ZSwKKwkJCQkJCQkJCQkgTnVtQmFja2VuZFN0YXRTbG90cyk7CisJU2htZW1SZXF1 ZXN0U3RydWN0KC5uYW1lID0gIkJhY2tlbmQgQWN0aXZpdHkgQnVmZmVyIiwKKwkJCQkJICAgLnNp emUgPSBCYWNrZW5kQWN0aXZpdHlCdWZmZXJTaXplLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiop ICZCYWNrZW5kQWN0aXZpdHlCdWZmZXIKKwkJKTsKKwogI2lmZGVmIFVTRV9TU0wKLQkvKiBCYWNr ZW5kU3NsU3RhdHVzQnVmZmVyOiAqLwotCXNpemUgPSBhZGRfc2l6ZShzaXplLAotCQkJCQltdWxf c2l6ZShzaXplb2YoUGdCYWNrZW5kU1NMU3RhdHVzKSwgTnVtQmFja2VuZFN0YXRTbG90cykpOwor CVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJCYWNrZW5kIFNTTCBTdGF0dXMgQnVmZmVyIiwK KwkJCQkJICAgLnNpemUgPSBtdWxfc2l6ZShzaXplb2YoUGdCYWNrZW5kU1NMU3RhdHVzKSwgTnVt QmFja2VuZFN0YXRTbG90cyksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJkJhY2tlbmRTc2xT dGF0dXNCdWZmZXIsCisJCSk7CiAjZW5kaWYKKwogI2lmZGVmIEVOQUJMRV9HU1MKLQkvKiBCYWNr ZW5kR3NzU3RhdHVzQnVmZmVyOiAqLwotCXNpemUgPSBhZGRfc2l6ZShzaXplLAotCQkJCQltdWxf c2l6ZShzaXplb2YoUGdCYWNrZW5kR1NTU3RhdHVzKSwgTnVtQmFja2VuZFN0YXRTbG90cykpOwor CVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJCYWNrZW5kIEdTUyBTdGF0dXMgQnVmZmVyIiwK KwkJCQkJICAgLnNpemUgPSBtdWxfc2l6ZShzaXplb2YoUGdCYWNrZW5kR1NTU3RhdHVzKSwgTnVt QmFja2VuZFN0YXRTbG90cyksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJkJhY2tlbmRHc3NT dGF0dXNCdWZmZXIsCisJCSk7CiAjZW5kaWYKLQlyZXR1cm4gc2l6ZTsKIH0KIAogLyoKICAqIElu aXRpYWxpemUgdGhlIHNoYXJlZCBzdGF0dXMgYXJyYXkgYW5kIHNldmVyYWwgc3RyaW5nIGJ1ZmZl cnMKICAqIGR1cmluZyBwb3N0bWFzdGVyIHN0YXJ0dXAuCiAgKi8KLXZvaWQKLUJhY2tlbmRTdGF0 dXNTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitCYWNrZW5kU3RhdHVzU2htZW1Jbml0KHZv aWQgKmFyZykKIHsKLQlTaXplCQlzaXplOwotCWJvb2wJCWZvdW5kOwogCWludAkJCWk7CiAJY2hh cgkgICAqYnVmZmVyOwogCi0JLyogQ3JlYXRlIG9yIGF0dGFjaCB0byB0aGUgc2hhcmVkIGFycmF5 ICovCi0Jc2l6ZSA9IG11bF9zaXplKHNpemVvZihQZ0JhY2tlbmRTdGF0dXMpLCBOdW1CYWNrZW5k U3RhdFNsb3RzKTsKLQlCYWNrZW5kU3RhdHVzQXJyYXkgPSAoUGdCYWNrZW5kU3RhdHVzICopCi0J CVNobWVtSW5pdFN0cnVjdCgiQmFja2VuZCBTdGF0dXMgQXJyYXkiLCBzaXplLCAmZm91bmQpOwot Ci0JaWYgKCFmb3VuZCkKKwkvKiBJbml0aWFsaXplIHN0X2FwcG5hbWUgcG9pbnRlcnMuICovCisJ YnVmZmVyID0gQmFja2VuZEFwcG5hbWVCdWZmZXI7CisJZm9yIChpID0gMDsgaSA8IE51bUJhY2tl bmRTdGF0U2xvdHM7IGkrKykKIAl7Ci0JCS8qCi0JCSAqIFdlJ3JlIHRoZSBmaXJzdCAtIGluaXRp YWxpemUuCi0JCSAqLwotCQlNZW1TZXQoQmFja2VuZFN0YXR1c0FycmF5LCAwLCBzaXplKTsKLQl9 Ci0KLQkvKiBDcmVhdGUgb3IgYXR0YWNoIHRvIHRoZSBzaGFyZWQgYXBwbmFtZSBidWZmZXIgKi8K LQlzaXplID0gbXVsX3NpemUoTkFNRURBVEFMRU4sIE51bUJhY2tlbmRTdGF0U2xvdHMpOwotCUJh Y2tlbmRBcHBuYW1lQnVmZmVyID0gKGNoYXIgKikKLQkJU2htZW1Jbml0U3RydWN0KCJCYWNrZW5k IEFwcGxpY2F0aW9uIE5hbWUgQnVmZmVyIiwgc2l6ZSwgJmZvdW5kKTsKLQotCWlmICghZm91bmQp Ci0JewotCQlNZW1TZXQoQmFja2VuZEFwcG5hbWVCdWZmZXIsIDAsIHNpemUpOwotCi0JCS8qIElu aXRpYWxpemUgc3RfYXBwbmFtZSBwb2ludGVycy4gKi8KLQkJYnVmZmVyID0gQmFja2VuZEFwcG5h bWVCdWZmZXI7Ci0JCWZvciAoaSA9IDA7IGkgPCBOdW1CYWNrZW5kU3RhdFNsb3RzOyBpKyspCi0J CXsKLQkJCUJhY2tlbmRTdGF0dXNBcnJheVtpXS5zdF9hcHBuYW1lID0gYnVmZmVyOwotCQkJYnVm ZmVyICs9IE5BTUVEQVRBTEVOOwotCQl9CisJCUJhY2tlbmRTdGF0dXNBcnJheVtpXS5zdF9hcHBu YW1lID0gYnVmZmVyOworCQlidWZmZXIgKz0gTkFNRURBVEFMRU47CiAJfQogCi0JLyogQ3JlYXRl IG9yIGF0dGFjaCB0byB0aGUgc2hhcmVkIGNsaWVudCBob3N0bmFtZSBidWZmZXIgKi8KLQlzaXpl ID0gbXVsX3NpemUoTkFNRURBVEFMRU4sIE51bUJhY2tlbmRTdGF0U2xvdHMpOwotCUJhY2tlbmRD bGllbnRIb3N0bmFtZUJ1ZmZlciA9IChjaGFyICopCi0JCVNobWVtSW5pdFN0cnVjdCgiQmFja2Vu ZCBDbGllbnQgSG9zdCBOYW1lIEJ1ZmZlciIsIHNpemUsICZmb3VuZCk7Ci0KLQlpZiAoIWZvdW5k KQorCS8qIEluaXRpYWxpemUgc3RfY2xpZW50aG9zdG5hbWUgcG9pbnRlcnMuICovCisJYnVmZmVy ID0gQmFja2VuZENsaWVudEhvc3RuYW1lQnVmZmVyOworCWZvciAoaSA9IDA7IGkgPCBOdW1CYWNr ZW5kU3RhdFNsb3RzOyBpKyspCiAJewotCQlNZW1TZXQoQmFja2VuZENsaWVudEhvc3RuYW1lQnVm ZmVyLCAwLCBzaXplKTsKLQotCQkvKiBJbml0aWFsaXplIHN0X2NsaWVudGhvc3RuYW1lIHBvaW50 ZXJzLiAqLwotCQlidWZmZXIgPSBCYWNrZW5kQ2xpZW50SG9zdG5hbWVCdWZmZXI7Ci0JCWZvciAo aSA9IDA7IGkgPCBOdW1CYWNrZW5kU3RhdFNsb3RzOyBpKyspCi0JCXsKLQkJCUJhY2tlbmRTdGF0 dXNBcnJheVtpXS5zdF9jbGllbnRob3N0bmFtZSA9IGJ1ZmZlcjsKLQkJCWJ1ZmZlciArPSBOQU1F REFUQUxFTjsKLQkJfQorCQlCYWNrZW5kU3RhdHVzQXJyYXlbaV0uc3RfY2xpZW50aG9zdG5hbWUg PSBidWZmZXI7CisJCWJ1ZmZlciArPSBOQU1FREFUQUxFTjsKIAl9CiAKLQkvKiBDcmVhdGUgb3Ig YXR0YWNoIHRvIHRoZSBzaGFyZWQgYWN0aXZpdHkgYnVmZmVyICovCi0JQmFja2VuZEFjdGl2aXR5 QnVmZmVyU2l6ZSA9IG11bF9zaXplKHBnc3RhdF90cmFja19hY3Rpdml0eV9xdWVyeV9zaXplLAot CQkJCQkJCQkJCSBOdW1CYWNrZW5kU3RhdFNsb3RzKTsKLQlCYWNrZW5kQWN0aXZpdHlCdWZmZXIg PSAoY2hhciAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkJhY2tlbmQgQWN0aXZpdHkgQnVmZmVyIiwK LQkJCQkJCUJhY2tlbmRBY3Rpdml0eUJ1ZmZlclNpemUsCi0JCQkJCQkmZm91bmQpOwotCi0JaWYg KCFmb3VuZCkKKwkvKiBJbml0aWFsaXplIHN0X2FjdGl2aXR5IHBvaW50ZXJzLiAqLworCWJ1ZmZl ciA9IEJhY2tlbmRBY3Rpdml0eUJ1ZmZlcjsKKwlmb3IgKGkgPSAwOyBpIDwgTnVtQmFja2VuZFN0 YXRTbG90czsgaSsrKQogCXsKLQkJTWVtU2V0KEJhY2tlbmRBY3Rpdml0eUJ1ZmZlciwgMCwgQmFj a2VuZEFjdGl2aXR5QnVmZmVyU2l6ZSk7Ci0KLQkJLyogSW5pdGlhbGl6ZSBzdF9hY3Rpdml0eSBw b2ludGVycy4gKi8KLQkJYnVmZmVyID0gQmFja2VuZEFjdGl2aXR5QnVmZmVyOwotCQlmb3IgKGkg PSAwOyBpIDwgTnVtQmFja2VuZFN0YXRTbG90czsgaSsrKQotCQl7Ci0JCQlCYWNrZW5kU3RhdHVz QXJyYXlbaV0uc3RfYWN0aXZpdHlfcmF3ID0gYnVmZmVyOwotCQkJYnVmZmVyICs9IHBnc3RhdF90 cmFja19hY3Rpdml0eV9xdWVyeV9zaXplOwotCQl9CisJCUJhY2tlbmRTdGF0dXNBcnJheVtpXS5z dF9hY3Rpdml0eV9yYXcgPSBidWZmZXI7CisJCWJ1ZmZlciArPSBwZ3N0YXRfdHJhY2tfYWN0aXZp dHlfcXVlcnlfc2l6ZTsKIAl9CiAKICNpZmRlZiBVU0VfU1NMCi0JLyogQ3JlYXRlIG9yIGF0dGFj aCB0byB0aGUgc2hhcmVkIFNTTCBzdGF0dXMgYnVmZmVyICovCi0Jc2l6ZSA9IG11bF9zaXplKHNp emVvZihQZ0JhY2tlbmRTU0xTdGF0dXMpLCBOdW1CYWNrZW5kU3RhdFNsb3RzKTsKLQlCYWNrZW5k U3NsU3RhdHVzQnVmZmVyID0gKFBnQmFja2VuZFNTTFN0YXR1cyAqKQotCQlTaG1lbUluaXRTdHJ1 Y3QoIkJhY2tlbmQgU1NMIFN0YXR1cyBCdWZmZXIiLCBzaXplLCAmZm91bmQpOwotCi0JaWYgKCFm b3VuZCkKIAl7CiAJCVBnQmFja2VuZFNTTFN0YXR1cyAqcHRyOwogCi0JCU1lbVNldChCYWNrZW5k U3NsU3RhdHVzQnVmZmVyLCAwLCBzaXplKTsKLQogCQkvKiBJbml0aWFsaXplIHN0X3NzbHN0YXR1 cyBwb2ludGVycy4gKi8KIAkJcHRyID0gQmFja2VuZFNzbFN0YXR1c0J1ZmZlcjsKIAkJZm9yIChp ID0gMDsgaSA8IE51bUJhY2tlbmRTdGF0U2xvdHM7IGkrKykKQEAgLTIxMSwxNyArMTc3LDkgQEAg QmFja2VuZFN0YXR1c1NobWVtSW5pdCh2b2lkKQogI2VuZGlmCiAKICNpZmRlZiBFTkFCTEVfR1NT Ci0JLyogQ3JlYXRlIG9yIGF0dGFjaCB0byB0aGUgc2hhcmVkIEdTU0FQSSBzdGF0dXMgYnVmZmVy ICovCi0Jc2l6ZSA9IG11bF9zaXplKHNpemVvZihQZ0JhY2tlbmRHU1NTdGF0dXMpLCBOdW1CYWNr ZW5kU3RhdFNsb3RzKTsKLQlCYWNrZW5kR3NzU3RhdHVzQnVmZmVyID0gKFBnQmFja2VuZEdTU1N0 YXR1cyAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkJhY2tlbmQgR1NTIFN0YXR1cyBCdWZmZXIiLCBz aXplLCAmZm91bmQpOwotCi0JaWYgKCFmb3VuZCkKIAl7CiAJCVBnQmFja2VuZEdTU1N0YXR1cyAq cHRyOwogCi0JCU1lbVNldChCYWNrZW5kR3NzU3RhdHVzQnVmZmVyLCAwLCBzaXplKTsKLQogCQkv KiBJbml0aWFsaXplIHN0X2dzc3N0YXR1cyBwb2ludGVycy4gKi8KIAkJcHRyID0gQmFja2VuZEdz c1N0YXR1c0J1ZmZlcjsKIAkJZm9yIChpID0gMDsgaSA8IE51bUJhY2tlbmRTdGF0U2xvdHM7IGkr KykKQEAgLTIzMyw2ICsxOTEsMTMgQEAgQmFja2VuZFN0YXR1c1NobWVtSW5pdCh2b2lkKQogI2Vu ZGlmCiB9CiAKK3N0YXRpYyB2b2lkCitCYWNrZW5kU3RhdHVzU2htZW1BdHRhY2godm9pZCAqYXJn KQoreworCUJhY2tlbmRBY3Rpdml0eUJ1ZmZlclNpemUgPSBtdWxfc2l6ZShwZ3N0YXRfdHJhY2tf YWN0aXZpdHlfcXVlcnlfc2l6ZSwKKwkJCQkJCQkJCQkgTnVtQmFja2VuZFN0YXRTbG90cyk7Cit9 CisKIC8qCiAgKiBJbml0aWFsaXplIHBnc3RhdHMgYmFja2VuZCBhY3Rpdml0eSBzdGF0ZSwgYW5k IHNldCB1cCBvdXIgb24tcHJvYy1leGl0CiAgKiBob29rLiAgQ2FsbGVkIGZyb20gSW5pdFBvc3Rn cmVzIGFuZCBBdXhpbGlhcnlQcm9jZXNzTWFpbi4gIE15UHJvY051bWJlciBtdXN0CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfc2htZW0uYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9zaG1lbS5jCmluZGV4IDMzZmJkY2E5NjA5Li45NTVm YWY1ZWJjNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3No bWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3NobWVtLmMKQEAg LTE0LDYgKzE0LDcgQEAKIAogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv c2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1dGls cy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3Bnc3RhdF9pbnRlcm5hbC5oIgogCkBAIC01 Nyw2ICs1OCwxMyBAQCBzdGF0aWMgdm9pZCBwZ3N0YXRfcmVsZWFzZV9tYXRjaGluZ19lbnRyeV9y ZWZzKGJvb2wgZGlzY2FyZF9wZW5kaW5nLCBSZWxlYXNlTWF0YwogCiBzdGF0aWMgdm9pZCBwZ3N0 YXRfc2V0dXBfbWVtY3h0KHZvaWQpOwogCitzdGF0aWMgdm9pZCBTdGF0c1NobWVtUmVxdWVzdCh2 b2lkICphcmcpOworc3RhdGljIHZvaWQgU3RhdHNTaG1lbUluaXQodm9pZCAqYXJnKTsKKworY29u c3QgU2htZW1DYWxsYmFja3MgU3RhdHNTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9 IFN0YXRzU2htZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gU3RhdHNTaG1lbUluaXQsCit9OwogCiAv KiBwYXJhbWV0ZXIgZm9yIHRoZSBzaGFyZWQgaGFzaCAqLwogc3RhdGljIGNvbnN0IGRzaGFzaF9w YXJhbWV0ZXJzIGRzaF9wYXJhbXMgPSB7CkBAIC0xMjMsNyArMTMxLDcgQEAgcGdzdGF0X2RzYV9p bml0X3NpemUodm9pZCkKIC8qCiAgKiBDb21wdXRlIHNoYXJlZCBtZW1vcnkgc3BhY2UgbmVlZGVk IGZvciBjdW11bGF0aXZlIHN0YXRpc3RpY3MKICAqLwotU2l6ZQorc3RhdGljIFNpemUKIFN0YXRz U2htZW1TaXplKHZvaWQpCiB7CiAJU2l6ZQkJc3o7CkBAIC0xNDksMTAyICsxNTcsOTggQEAgU3Rh dHNTaG1lbVNpemUodm9pZCkKIAlyZXR1cm4gc3o7CiB9CiAKKy8qCisgKiBSZWdpc3RlciBzaGFy ZWQgbWVtb3J5IGFyZWEgZm9yIGN1bXVsYXRpdmUgc3RhdGlzdGljcworICovCitzdGF0aWMgdm9p ZAorU3RhdHNTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQoreworCVNobWVtUmVxdWVzdFN0cnVjdCgu bmFtZSA9ICJTaGFyZWQgTWVtb3J5IFN0YXRzIiwKKwkJCQkJICAgLnNpemUgPSBTdGF0c1NobWVt U2l6ZSgpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZwZ1N0YXRMb2NhbC5zaG1lbSwKKwkJ KTsKK30KKwogLyoKICAqIEluaXRpYWxpemUgY3VtdWxhdGl2ZSBzdGF0aXN0aWNzIHN5c3RlbSBk dXJpbmcgc3RhcnR1cAogICovCi12b2lkCi1TdGF0c1NobWVtSW5pdCh2b2lkKQorc3RhdGljIHZv aWQKK1N0YXRzU2htZW1Jbml0KHZvaWQgKmFyZykKIHsKLQlib29sCQlmb3VuZDsKLQlTaXplCQlz ejsKKwlkc2FfYXJlYSAgICpkc2E7CisJZHNoYXNoX3RhYmxlICpkc2g7CisJUGdTdGF0X1NobWVt Q29udHJvbCAqY3RsID0gcGdTdGF0TG9jYWwuc2htZW07CisJY2hhcgkgICAqcCA9IChjaGFyICop IGN0bDsKIAotCXN6ID0gU3RhdHNTaG1lbVNpemUoKTsKLQlwZ1N0YXRMb2NhbC5zaG1lbSA9IChQ Z1N0YXRfU2htZW1Db250cm9sICopCi0JCVNobWVtSW5pdFN0cnVjdCgiU2hhcmVkIE1lbW9yeSBT dGF0cyIsIHN6LCAmZm91bmQpOworCS8qIHRoZSBhbGxvY2F0aW9uIG9mIHBnU3RhdExvY2FsLnNo bWVtIGl0c2VsZiAqLworCXAgKz0gTUFYQUxJR04oc2l6ZW9mKFBnU3RhdF9TaG1lbUNvbnRyb2wp KTsKIAotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIpCi0JewotCQlkc2FfYXJlYSAgICpkc2E7Ci0J CWRzaGFzaF90YWJsZSAqZHNoOwotCQlQZ1N0YXRfU2htZW1Db250cm9sICpjdGwgPSBwZ1N0YXRM b2NhbC5zaG1lbTsKLQkJY2hhcgkgICAqcCA9IChjaGFyICopIGN0bDsKKwkvKgorCSAqIENyZWF0 ZSBhIHNtYWxsIGRzYSBhbGxvY2F0aW9uIGluIHBsYWluIHNoYXJlZCBtZW1vcnkuIFRoaXMgaXMg cmVxdWlyZWQKKwkgKiBiZWNhdXNlIHBvc3RtYXN0ZXIgY2Fubm90IHVzZSBkc20gc2VnbWVudHMu IEl0IGFsc28gcHJvdmlkZXMgYSBzbWFsbAorCSAqIGVmZmljaWVuY3kgd2luLgorCSAqLworCWN0 bC0+cmF3X2RzYV9hcmVhID0gcDsKKwlkc2EgPSBkc2FfY3JlYXRlX2luX3BsYWNlKGN0bC0+cmF3 X2RzYV9hcmVhLAorCQkJCQkJCSAgcGdzdGF0X2RzYV9pbml0X3NpemUoKSwKKwkJCQkJCQkgIExX VFJBTkNIRV9QR1NUQVRTX0RTQSwgTlVMTCk7CisJZHNhX3Bpbihkc2EpOwogCi0JCUFzc2VydCgh Zm91bmQpOworCS8qCisJICogVG8gZW5zdXJlIGRzaGFzaCBpcyBjcmVhdGVkIGluICJwbGFpbiIg c2hhcmVkIG1lbW9yeSwgdGVtcG9yYXJpbHkgbGltaXQKKwkgKiBzaXplIG9mIGRzYSB0byB0aGUg aW5pdGlhbCBzaXplIG9mIHRoZSBkc2EuCisJICovCisJZHNhX3NldF9zaXplX2xpbWl0KGRzYSwg cGdzdGF0X2RzYV9pbml0X3NpemUoKSk7CiAKLQkJLyogdGhlIGFsbG9jYXRpb24gb2YgcGdTdGF0 TG9jYWwuc2htZW0gaXRzZWxmICovCi0JCXAgKz0gTUFYQUxJR04oc2l6ZW9mKFBnU3RhdF9TaG1l bUNvbnRyb2wpKTsKKwkvKgorCSAqIFdpdGggdGhlIGxpbWl0IGluIHBsYWNlLCBjcmVhdGUgdGhl IGRzaGFzaCB0YWJsZS4gWFhYOiBJdCdkIGJlIG5pY2UgaWYKKwkgKiB0aGVyZSB3ZXJlIGRzaGFz aF9jcmVhdGVfaW5fcGxhY2UoKS4KKwkgKi8KKwlkc2ggPSBkc2hhc2hfY3JlYXRlKGRzYSwgJmRz aF9wYXJhbXMsIE5VTEwpOworCWN0bC0+aGFzaF9oYW5kbGUgPSBkc2hhc2hfZ2V0X2hhc2hfdGFi bGVfaGFuZGxlKGRzaCk7CiAKLQkJLyoKLQkJICogQ3JlYXRlIGEgc21hbGwgZHNhIGFsbG9jYXRp b24gaW4gcGxhaW4gc2hhcmVkIG1lbW9yeS4gVGhpcyBpcwotCQkgKiByZXF1aXJlZCBiZWNhdXNl IHBvc3RtYXN0ZXIgY2Fubm90IHVzZSBkc20gc2VnbWVudHMuIEl0IGFsc28KLQkJICogcHJvdmlk ZXMgYSBzbWFsbCBlZmZpY2llbmN5IHdpbi4KLQkJICovCi0JCWN0bC0+cmF3X2RzYV9hcmVhID0g cDsKLQkJZHNhID0gZHNhX2NyZWF0ZV9pbl9wbGFjZShjdGwtPnJhd19kc2FfYXJlYSwKLQkJCQkJ CQkJICBwZ3N0YXRfZHNhX2luaXRfc2l6ZSgpLAotCQkJCQkJCQkgIExXVFJBTkNIRV9QR1NUQVRT X0RTQSwgTlVMTCk7Ci0JCWRzYV9waW4oZHNhKTsKKwkvKiBsaWZ0IGxpbWl0IHNldCBhYm92ZSAq LworCWRzYV9zZXRfc2l6ZV9saW1pdChkc2EsIC0xKTsKIAotCQkvKgotCQkgKiBUbyBlbnN1cmUg ZHNoYXNoIGlzIGNyZWF0ZWQgaW4gInBsYWluIiBzaGFyZWQgbWVtb3J5LCB0ZW1wb3JhcmlseQot CQkgKiBsaW1pdCBzaXplIG9mIGRzYSB0byB0aGUgaW5pdGlhbCBzaXplIG9mIHRoZSBkc2EuCi0J CSAqLwotCQlkc2Ffc2V0X3NpemVfbGltaXQoZHNhLCBwZ3N0YXRfZHNhX2luaXRfc2l6ZSgpKTsK KwkvKgorCSAqIFBvc3RtYXN0ZXIgd2lsbCBuZXZlciBhY2Nlc3MgdGhlc2UgYWdhaW4sIHRodXMg ZnJlZSB0aGUgbG9jYWwKKwkgKiBkc2EvZHNoYXNoIHJlZmVyZW5jZXMuCisJICovCisJZHNoYXNo X2RldGFjaChkc2gpOworCWRzYV9kZXRhY2goZHNhKTsKIAotCQkvKgotCQkgKiBXaXRoIHRoZSBs aW1pdCBpbiBwbGFjZSwgY3JlYXRlIHRoZSBkc2hhc2ggdGFibGUuIFhYWDogSXQnZCBiZSBuaWNl Ci0JCSAqIGlmIHRoZXJlIHdlcmUgZHNoYXNoX2NyZWF0ZV9pbl9wbGFjZSgpLgotCQkgKi8KLQkJ ZHNoID0gZHNoYXNoX2NyZWF0ZShkc2EsICZkc2hfcGFyYW1zLCBOVUxMKTsKLQkJY3RsLT5oYXNo X2hhbmRsZSA9IGRzaGFzaF9nZXRfaGFzaF90YWJsZV9oYW5kbGUoZHNoKTsKKwlwZ19hdG9taWNf aW5pdF91NjQoJmN0bC0+Z2NfcmVxdWVzdF9jb3VudCwgMSk7CiAKLQkJLyogbGlmdCBsaW1pdCBz ZXQgYWJvdmUgKi8KLQkJZHNhX3NldF9zaXplX2xpbWl0KGRzYSwgLTEpOworCS8qIERvIHRoZSBw ZXIta2luZCBpbml0aWFsaXphdGlvbiAqLworCWZvciAoUGdTdGF0X0tpbmQga2luZCA9IFBHU1RB VF9LSU5EX01JTjsga2luZCA8PSBQR1NUQVRfS0lORF9NQVg7IGtpbmQrKykKKwl7CisJCWNvbnN0 IFBnU3RhdF9LaW5kSW5mbyAqa2luZF9pbmZvID0gcGdzdGF0X2dldF9raW5kX2luZm8oa2luZCk7 CisJCWNoYXIJICAgKnB0cjsKIAotCQkvKgotCQkgKiBQb3N0bWFzdGVyIHdpbGwgbmV2ZXIgYWNj ZXNzIHRoZXNlIGFnYWluLCB0aHVzIGZyZWUgdGhlIGxvY2FsCi0JCSAqIGRzYS9kc2hhc2ggcmVm ZXJlbmNlcy4KLQkJICovCi0JCWRzaGFzaF9kZXRhY2goZHNoKTsKLQkJZHNhX2RldGFjaChkc2Ep OworCQlpZiAoIWtpbmRfaW5mbykKKwkJCWNvbnRpbnVlOwogCi0JCXBnX2F0b21pY19pbml0X3U2 NCgmY3RsLT5nY19yZXF1ZXN0X2NvdW50LCAxKTsKKwkJLyogaW5pdGlhbGl6ZSBlbnRyeSBjb3Vu dCB0cmFja2luZyAqLworCQlpZiAoa2luZF9pbmZvLT50cmFja19lbnRyeV9jb3VudCkKKwkJCXBn X2F0b21pY19pbml0X3U2NCgmY3RsLT5lbnRyeV9jb3VudHNba2luZCAtIDFdLCAwKTsKIAotCQkv KiBEbyB0aGUgcGVyLWtpbmQgaW5pdGlhbGl6YXRpb24gKi8KLQkJZm9yIChQZ1N0YXRfS2luZCBr aW5kID0gUEdTVEFUX0tJTkRfTUlOOyBraW5kIDw9IFBHU1RBVF9LSU5EX01BWDsga2luZCsrKQor CQkvKiBpbml0aWFsaXplIGZpeGVkLW51bWJlcmVkIHN0YXRzICovCisJCWlmIChraW5kX2luZm8t PmZpeGVkX2Ftb3VudCkKIAkJewotCQkJY29uc3QgUGdTdGF0X0tpbmRJbmZvICpraW5kX2luZm8g PSBwZ3N0YXRfZ2V0X2tpbmRfaW5mbyhraW5kKTsKLQkJCWNoYXIJICAgKnB0cjsKLQotCQkJaWYg KCFraW5kX2luZm8pCi0JCQkJY29udGludWU7Ci0KLQkJCS8qIGluaXRpYWxpemUgZW50cnkgY291 bnQgdHJhY2tpbmcgKi8KLQkJCWlmIChraW5kX2luZm8tPnRyYWNrX2VudHJ5X2NvdW50KQotCQkJ CXBnX2F0b21pY19pbml0X3U2NCgmY3RsLT5lbnRyeV9jb3VudHNba2luZCAtIDFdLCAwKTsKLQot CQkJLyogaW5pdGlhbGl6ZSBmaXhlZC1udW1iZXJlZCBzdGF0cyAqLwotCQkJaWYgKGtpbmRfaW5m by0+Zml4ZWRfYW1vdW50KQorCQkJaWYgKHBnc3RhdF9pc19raW5kX2J1aWx0aW4oa2luZCkpCisJ CQkJcHRyID0gKChjaGFyICopIGN0bCkgKyBraW5kX2luZm8tPnNoYXJlZF9jdGxfb2ZmOworCQkJ ZWxzZQogCQkJewotCQkJCWlmIChwZ3N0YXRfaXNfa2luZF9idWlsdGluKGtpbmQpKQotCQkJCQlw dHIgPSAoKGNoYXIgKikgY3RsKSArIGtpbmRfaW5mby0+c2hhcmVkX2N0bF9vZmY7Ci0JCQkJZWxz ZQotCQkJCXsKLQkJCQkJaW50CQkJaWR4ID0ga2luZCAtIFBHU1RBVF9LSU5EX0NVU1RPTV9NSU47 Ci0KLQkJCQkJQXNzZXJ0KGtpbmRfaW5mby0+c2hhcmVkX3NpemUgIT0gMCk7Ci0JCQkJCWN0bC0+ Y3VzdG9tX2RhdGFbaWR4XSA9IFNobWVtQWxsb2Moa2luZF9pbmZvLT5zaGFyZWRfc2l6ZSk7Ci0J CQkJCXB0ciA9IGN0bC0+Y3VzdG9tX2RhdGFbaWR4XTsKLQkJCQl9Ci0KLQkJCQlraW5kX2luZm8t PmluaXRfc2htZW1fY2IocHRyKTsKKwkJCQlpbnQJCQlpZHggPSBraW5kIC0gUEdTVEFUX0tJTkRf Q1VTVE9NX01JTjsKKworCQkJCUFzc2VydChraW5kX2luZm8tPnNoYXJlZF9zaXplICE9IDApOwor CQkJCWN0bC0+Y3VzdG9tX2RhdGFbaWR4XSA9IFNobWVtQWxsb2Moa2luZF9pbmZvLT5zaGFyZWRf c2l6ZSk7CisJCQkJcHRyID0gY3RsLT5jdXN0b21fZGF0YVtpZHhdOwogCQkJfQorCisJCQlraW5k X2luZm8tPmluaXRfc2htZW1fY2IocHRyKTsKIAkJfQogCX0KLQllbHNlCi0JewotCQlBc3NlcnQo Zm91bmQpOwotCX0KIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVu dC5jCmluZGV4IDJiNzY5Njc3NzZjLi45NTYzNWM3ZjU2YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3dhaXRfZXZlbnQuYwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uv bG1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9z aG1lbS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInN0b3Jh Z2Uvc3Bpbi5oIgogI2luY2x1ZGUgInV0aWxzL3dhaXRfZXZlbnQuaCIKIApAQCAtOTUsNTkgKzk2 LDQ3IEBAIHN0YXRpYyBXYWl0RXZlbnRDdXN0b21Db3VudGVyRGF0YSAqV2FpdEV2ZW50Q3VzdG9t Q291bnRlcjsKIHN0YXRpYyB1aW50MzIgV2FpdEV2ZW50Q3VzdG9tTmV3KHVpbnQzMiBjbGFzc0lk LCBjb25zdCBjaGFyICp3YWl0X2V2ZW50X25hbWUpOwogc3RhdGljIGNvbnN0IGNoYXIgKkdldFdh aXRFdmVudEN1c3RvbUlkZW50aWZpZXIodWludDMyIHdhaXRfZXZlbnRfaW5mbyk7CiAKK3N0YXRp YyB2b2lkIFdhaXRFdmVudEN1c3RvbVNobWVtUmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZv aWQgV2FpdEV2ZW50Q3VzdG9tU2htZW1Jbml0KHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVtQ2Fs bGJhY2tzIFdhaXRFdmVudEN1c3RvbVNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0g V2FpdEV2ZW50Q3VzdG9tU2htZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gV2FpdEV2ZW50Q3VzdG9t U2htZW1Jbml0LAorfTsKKwogLyoKLSAqICBSZXR1cm4gdGhlIHNwYWNlIGZvciBkeW5hbWljIHNo YXJlZCBoYXNoIHRhYmxlcyBhbmQgZHluYW1pYyBhbGxvY2F0aW9uIGNvdW50ZXIuCisgKiBSZWdp c3RlciBzaG1lbSBzcGFjZSBmb3IgZHluYW1pYyBzaGFyZWQgaGFzaCBhbmQgZHluYW1pYyBhbGxv Y2F0aW9uIGNvdW50ZXIuCiAgKi8KLVNpemUKLVdhaXRFdmVudEN1c3RvbVNobWVtU2l6ZSh2b2lk KQorc3RhdGljIHZvaWQKK1dhaXRFdmVudEN1c3RvbVNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7 Ci0JU2l6ZQkJc3o7Ci0KLQlzeiA9IE1BWEFMSUdOKHNpemVvZihXYWl0RXZlbnRDdXN0b21Db3Vu dGVyRGF0YSkpOwotCXN6ID0gYWRkX3NpemUoc3osIGhhc2hfZXN0aW1hdGVfc2l6ZShXQUlUX0VW RU5UX0NVU1RPTV9IQVNIX1NJWkUsCi0JCQkJCQkJCQkJIHNpemVvZihXYWl0RXZlbnRDdXN0b21F bnRyeUJ5SW5mbykpKTsKLQlzeiA9IGFkZF9zaXplKHN6LCBoYXNoX2VzdGltYXRlX3NpemUoV0FJ VF9FVkVOVF9DVVNUT01fSEFTSF9TSVpFLAotCQkJCQkJCQkJCSBzaXplb2YoV2FpdEV2ZW50Q3Vz dG9tRW50cnlCeU5hbWUpKSk7Ci0JcmV0dXJuIHN6OworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFt ZSA9ICJXYWl0RXZlbnRDdXN0b21Db3VudGVyRGF0YSIsCisJCQkJCSAgIC5zaXplID0gc2l6ZW9m KFdhaXRFdmVudEN1c3RvbUNvdW50ZXJEYXRhKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAm V2FpdEV2ZW50Q3VzdG9tQ291bnRlciwKKwkJKTsKKwlTaG1lbVJlcXVlc3RIYXNoKC5uYW1lID0g IldhaXRFdmVudEN1c3RvbSBoYXNoIGJ5IHdhaXQgZXZlbnQgaW5mb3JtYXRpb24iLAorCQkJCQkg LnB0ciA9ICZXYWl0RXZlbnRDdXN0b21IYXNoQnlJbmZvLAorCQkJCQkgLm5lbGVtcyA9IFdBSVRf RVZFTlRfQ1VTVE9NX0hBU0hfU0laRSwKKwkJCQkJIC5oYXNoX2luZm8ua2V5c2l6ZSA9IHNpemVv Zih1aW50MzIpLAorCQkJCQkgLmhhc2hfaW5mby5lbnRyeXNpemUgPSBzaXplb2YoV2FpdEV2ZW50 Q3VzdG9tRW50cnlCeUluZm8pLAorCQkJCQkgLmhhc2hfZmxhZ3MgPSBIQVNIX0VMRU0gfCBIQVNI X0JMT0JTLAorCQkpOworCVNobWVtUmVxdWVzdEhhc2goLm5hbWUgPSAiV2FpdEV2ZW50Q3VzdG9t IGhhc2ggYnkgbmFtZSIsCisJCQkJCSAucHRyID0gJldhaXRFdmVudEN1c3RvbUhhc2hCeU5hbWUs CisJCQkJCSAubmVsZW1zID0gV0FJVF9FVkVOVF9DVVNUT01fSEFTSF9TSVpFLAorCS8qIGtleSBp cyBhIE5VTEwtdGVybWluYXRlZCBzdHJpbmcgKi8KKwkJCQkJIC5oYXNoX2luZm8ua2V5c2l6ZSA9 IHNpemVvZihjaGFyW05BTUVEQVRBTEVOXSksCisJCQkJCSAuaGFzaF9pbmZvLmVudHJ5c2l6ZSA9 IHNpemVvZihXYWl0RXZlbnRDdXN0b21FbnRyeUJ5TmFtZSksCisJCQkJCSAuaGFzaF9mbGFncyA9 IEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUywKKwkJKTsKIH0KIAotLyoKLSAqIEFsbG9jYXRlIHNo bWVtIHNwYWNlIGZvciBkeW5hbWljIHNoYXJlZCBoYXNoIGFuZCBkeW5hbWljIGFsbG9jYXRpb24g Y291bnRlci4KLSAqLwotdm9pZAotV2FpdEV2ZW50Q3VzdG9tU2htZW1Jbml0KHZvaWQpCitzdGF0 aWMgdm9pZAorV2FpdEV2ZW50Q3VzdG9tU2htZW1Jbml0KHZvaWQgKmFyZykKIHsKLQlib29sCQlm b3VuZDsKLQlIQVNIQ1RMCQlpbmZvOwotCi0JV2FpdEV2ZW50Q3VzdG9tQ291bnRlciA9IChXYWl0 RXZlbnRDdXN0b21Db3VudGVyRGF0YSAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIldhaXRFdmVudEN1 c3RvbUNvdW50ZXJEYXRhIiwKLQkJCQkJCXNpemVvZihXYWl0RXZlbnRDdXN0b21Db3VudGVyRGF0 YSksICZmb3VuZCk7Ci0KLQlpZiAoIWZvdW5kKQotCXsKLQkJLyogaW5pdGlhbGl6ZSB0aGUgYWxs b2NhdGlvbiBjb3VudGVyIGFuZCBpdHMgc3BpbmxvY2suICovCi0JCVdhaXRFdmVudEN1c3RvbUNv dW50ZXItPm5leHRJZCA9IFdBSVRfRVZFTlRfQ1VTVE9NX0lOSVRJQUxfSUQ7Ci0JCVNwaW5Mb2Nr SW5pdCgmV2FpdEV2ZW50Q3VzdG9tQ291bnRlci0+bXV0ZXgpOwotCX0KLQotCS8qIGluaXRpYWxp emUgb3IgYXR0YWNoIHRoZSBoYXNoIHRhYmxlcyB0byBzdG9yZSBjdXN0b20gd2FpdCBldmVudHMg Ki8KLQlpbmZvLmtleXNpemUgPSBzaXplb2YodWludDMyKTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNp emVvZihXYWl0RXZlbnRDdXN0b21FbnRyeUJ5SW5mbyk7Ci0JV2FpdEV2ZW50Q3VzdG9tSGFzaEJ5 SW5mbyA9Ci0JCVNobWVtSW5pdEhhc2goIldhaXRFdmVudEN1c3RvbSBoYXNoIGJ5IHdhaXQgZXZl bnQgaW5mb3JtYXRpb24iLAotCQkJCQkgIFdBSVRfRVZFTlRfQ1VTVE9NX0hBU0hfU0laRSwKLQkJ CQkJICAmaW5mbywKLQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKLQotCS8qIGtleSBp cyBhIE5VTEwtdGVybWluYXRlZCBzdHJpbmcgKi8KLQlpbmZvLmtleXNpemUgPSBzaXplb2YoY2hh cltOQU1FREFUQUxFTl0pOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKFdhaXRFdmVudEN1c3Rv bUVudHJ5QnlOYW1lKTsKLQlXYWl0RXZlbnRDdXN0b21IYXNoQnlOYW1lID0KLQkJU2htZW1Jbml0 SGFzaCgiV2FpdEV2ZW50Q3VzdG9tIGhhc2ggYnkgbmFtZSIsCi0JCQkJCSAgV0FJVF9FVkVOVF9D VVNUT01fSEFTSF9TSVpFLAotCQkJCQkgICZpbmZvLAotCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hf U1RSSU5HUyk7CisJLyogaW5pdGlhbGl6ZSB0aGUgYWxsb2NhdGlvbiBjb3VudGVyIGFuZCBpdHMg c3BpbmxvY2suICovCisJV2FpdEV2ZW50Q3VzdG9tQ291bnRlci0+bmV4dElkID0gV0FJVF9FVkVO VF9DVVNUT01fSU5JVElBTF9JRDsKKwlTcGluTG9ja0luaXQoJldhaXRFdmVudEN1c3RvbUNvdW50 ZXItPm11dGV4KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv aW5qZWN0aW9uX3BvaW50LmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2luamVjdGlvbl9wb2lu dC5jCmluZGV4IGMwNmIwZTliODAwLi5hN2M5OWUwOTdlYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9pbmplY3Rpb25fcG9pbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL2luamVjdGlvbl9wb2ludC5jCkBAIC0xNyw2ICsxNyw3IEBACiAgKi8KICNpbmNsdWRlICJw b3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAi dXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAKICNpZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUwpA QCAtMTA5LDYgKzExMCwxMSBAQCB0eXBlZGVmIHN0cnVjdCBJbmplY3Rpb25Qb2ludENhY2hlRW50 cnkKIAogc3RhdGljIEhUQUIgKkluamVjdGlvblBvaW50Q2FjaGUgPSBOVUxMOwogCisjaWZkZWYg VVNFX0lOSkVDVElPTl9QT0lOVFMKK3N0YXRpYyB2b2lkIEluamVjdGlvblBvaW50U2htZW1SZXF1 ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBJbmplY3Rpb25Qb2ludFNobWVtSW5pdCh2b2lk ICphcmcpOworI2VuZGlmCisKIC8qCiAgKiBpbmplY3Rpb25fcG9pbnRfY2FjaGVfYWRkCiAgKgpA QCAtMjI2LDQ1ICsyMzIsMzQgQEAgaW5qZWN0aW9uX3BvaW50X2NhY2hlX2dldChjb25zdCBjaGFy ICpuYW1lKQogfQogI2VuZGlmCQkJCQkJCS8qIFVTRV9JTkpFQ1RJT05fUE9JTlRTICovCiAKLS8q Ci0gKiBSZXR1cm4gdGhlIHNwYWNlIGZvciBkeW5hbWljIHNoYXJlZCBoYXNoIHRhYmxlLgotICov Ci1TaXplCi1JbmplY3Rpb25Qb2ludFNobWVtU2l6ZSh2b2lkKQoteworY29uc3QgU2htZW1DYWxs YmFja3MgSW5qZWN0aW9uUG9pbnRTaG1lbUNhbGxiYWNrcyA9IHsKICNpZmRlZiBVU0VfSU5KRUNU SU9OX1BPSU5UUwotCVNpemUJCXN6ID0gMDsKLQotCXN6ID0gYWRkX3NpemUoc3osIHNpemVvZihJ bmplY3Rpb25Qb2ludHNDdGwpKTsKLQlyZXR1cm4gc3o7Ci0jZWxzZQotCXJldHVybiAwOworCS5y ZXF1ZXN0X2ZuID0gSW5qZWN0aW9uUG9pbnRTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBJbmpl Y3Rpb25Qb2ludFNobWVtSW5pdCwKICNlbmRpZgotfQorfTsKIAogLyoKLSAqIEFsbG9jYXRlIHNo bWVtIHNwYWNlIGZvciBkeW5hbWljIHNoYXJlZCBoYXNoLgorICogUmVzZXJ2ZSBzcGFjZSBmb3Ig dGhlIGR5bmFtaWMgc2hhcmVkIGhhc2ggdGFibGUKICAqLwotdm9pZAotSW5qZWN0aW9uUG9pbnRT aG1lbUluaXQodm9pZCkKLXsKICNpZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUwotCWJvb2wJCWZv dW5kOworc3RhdGljIHZvaWQKK0luamVjdGlvblBvaW50U2htZW1SZXF1ZXN0KHZvaWQgKmFyZykK K3sKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiSW5qZWN0aW9uUG9pbnQgaGFzaCIsCisJ CQkJCSAgIC5zaXplID0gc2l6ZW9mKEluamVjdGlvblBvaW50c0N0bCksCisJCQkJCSAgIC5wdHIg PSAodm9pZCAqKikgJkFjdGl2ZUluamVjdGlvblBvaW50cywKKwkJKTsKK30KIAotCUFjdGl2ZUlu amVjdGlvblBvaW50cyA9IFNobWVtSW5pdFN0cnVjdCgiSW5qZWN0aW9uUG9pbnQgaGFzaCIsCi0J CQkJCQkJCQkJCXNpemVvZihJbmplY3Rpb25Qb2ludHNDdGwpLAotCQkJCQkJCQkJCQkmZm91bmQp OwotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIpCi0JewotCQlBc3NlcnQoIWZvdW5kKTsKLQkJcGdf YXRvbWljX2luaXRfdTMyKCZBY3RpdmVJbmplY3Rpb25Qb2ludHMtPm1heF9pbnVzZSwgMCk7Ci0J CWZvciAoaW50IGkgPSAwOyBpIDwgTUFYX0lOSkVDVElPTl9QT0lOVFM7IGkrKykKLQkJCXBnX2F0 b21pY19pbml0X3U2NCgmQWN0aXZlSW5qZWN0aW9uUG9pbnRzLT5lbnRyaWVzW2ldLmdlbmVyYXRp b24sIDApOwotCX0KLQllbHNlCi0JCUFzc2VydChmb3VuZCk7Ci0jZW5kaWYKK3N0YXRpYyB2b2lk CitJbmplY3Rpb25Qb2ludFNobWVtSW5pdCh2b2lkICphcmcpCit7CisJcGdfYXRvbWljX2luaXRf dTMyKCZBY3RpdmVJbmplY3Rpb25Qb2ludHMtPm1heF9pbnVzZSwgMCk7CisJZm9yIChpbnQgaSA9 IDA7IGkgPCBNQVhfSU5KRUNUSU9OX1BPSU5UUzsgaSsrKQorCQlwZ19hdG9taWNfaW5pdF91NjQo JkFjdGl2ZUluamVjdGlvblBvaW50cy0+ZW50cmllc1tpXS5nZW5lcmF0aW9uLCAwKTsKIH0KKyNl bmRpZgogCiAvKgogICogQXR0YWNoIGEgbmV3IGluamVjdGlvbiBwb2ludC4KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUu aAppbmRleCBkYTc1MDNjNTdiNi4uMzA5N2U5YmIxYWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9uYnRyZWUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKQEAgLTEz MDAsOCArMTMwMCw2IEBAIGV4dGVybiBCVEN5Y2xlSWQgX2J0X3ZhY3V1bV9jeWNsZWlkKFJlbGF0 aW9uIHJlbCk7CiBleHRlcm4gQlRDeWNsZUlkIF9idF9zdGFydF92YWN1dW0oUmVsYXRpb24gcmVs KTsKIGV4dGVybiB2b2lkIF9idF9lbmRfdmFjdXVtKFJlbGF0aW9uIHJlbCk7CiBleHRlcm4gdm9p ZCBfYnRfZW5kX3ZhY3V1bV9jYWxsYmFjayhpbnQgY29kZSwgRGF0dW0gYXJnKTsKLWV4dGVybiBT aXplIEJUcmVlU2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgQlRyZWVTaG1lbUluaXQodm9p ZCk7CiBleHRlcm4gYnl0ZWEgKmJ0b3B0aW9ucyhEYXR1bSByZWxvcHRpb25zLCBib29sIHZhbGlk YXRlKTsKIGV4dGVybiBib29sIGJ0cHJvcGVydHkoT2lkIGluZGV4X29pZCwgaW50IGF0dG5vLAog CQkJCQkgICBJbmRleEFNUHJvcGVydHkgcHJvcCwgY29uc3QgY2hhciAqcHJvcG5hbWUsCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3luY3NjYW4uaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9zeW5jc2Nhbi5oCmluZGV4IDI0Y2YzMzI5NGU1Li4zMmY4MzMyYWFlZSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvYWNjZXNzL3N5bmNzY2FuLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3N5 bmNzY2FuLmgKQEAgLTI0LDcgKzI0LDUgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgdHJhY2Vf c3luY3NjYW47CiAKIGV4dGVybiB2b2lkIHNzX3JlcG9ydF9sb2NhdGlvbihSZWxhdGlvbiByZWws IEJsb2NrTnVtYmVyIGxvY2F0aW9uKTsKIGV4dGVybiBCbG9ja051bWJlciBzc19nZXRfbG9jYXRp b24oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciByZWxuYmxvY2tzKTsKLWV4dGVybiB2b2lkIFN5 bmNTY2FuU2htZW1Jbml0KHZvaWQpOwotZXh0ZXJuIFNpemUgU3luY1NjYW5TaG1lbVNpemUodm9p ZCk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3R3b3BoYXNlLmgg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvdHdvcGhhc2UuaAppbmRleCA3NjFkNTZhNWYzZC4uMWQyZmY0 MmM5YjcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90d29waGFzZS5oCisrKyBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy90d29waGFzZS5oCkBAIC0zMyw5ICszMyw2IEBAIHR5cGVkZWYgc3Ry dWN0IEdsb2JhbFRyYW5zYWN0aW9uRGF0YSAqR2xvYmFsVHJhbnNhY3Rpb247CiAvKiBHVUMgdmFy aWFibGUgKi8KIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3ByZXBhcmVkX3hhY3RzOwogCi1l eHRlcm4gU2l6ZSBUd29QaGFzZVNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFR3b1BoYXNl U2htZW1Jbml0KHZvaWQpOwotCiBleHRlcm4gdm9pZCBBdEFib3J0X1R3b3BoYXNlKHZvaWQpOwog ZXh0ZXJuIHZvaWQgUG9zdFByZXBhcmVfVHdvcGhhc2Uodm9pZCk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCmluZGV4 IDRhZjM4ZTc0Y2U0Li40MzdiNGYzMjM0OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNz L3hsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCkBAIC0yNTksOCArMjU5LDYg QEAgZXh0ZXJuIHZvaWQgSW5pdExvY2FsRGF0YUNoZWNrc3VtU3RhdGUodm9pZCk7CiBleHRlcm4g dm9pZCBTZXRMb2NhbERhdGFDaGVja3N1bVN0YXRlKHVpbnQzMiBkYXRhX2NoZWNrc3VtX3ZlcnNp b24pOwogZXh0ZXJuIGJvb2wgR2V0RGVmYXVsdENoYXJTaWduZWRuZXNzKHZvaWQpOwogZXh0ZXJu IFhMb2dSZWNQdHIgR2V0RmFrZUxTTkZvclVubG9nZ2VkUmVsKHZvaWQpOwotZXh0ZXJuIFNpemUg WExPR1NobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFhMT0dTaG1lbUluaXQodm9pZCk7CiBl eHRlcm4gdm9pZCBCb290U3RyYXBYTE9HKHVpbnQzMiBkYXRhX2NoZWNrc3VtX3ZlcnNpb24pOwog ZXh0ZXJuIHZvaWQgSW5pdGlhbGl6ZVdhbENvbnNpc3RlbmN5Q2hlY2tpbmcodm9pZCk7CiBleHRl cm4gdm9pZCBMb2NhbFByb2Nlc3NDb250cm9sRmlsZShib29sIHJlc2V0KTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncHJlZmV0Y2hlci5oIGIvc3JjL2luY2x1ZGUvYWNjZXNz L3hsb2dwcmVmZXRjaGVyLmgKaW5kZXggN2VjNDBjNGI3OGIuLjU2YTgxNjc2ZDkyIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3ByZWZldGNoZXIuaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MveGxvZ3ByZWZldGNoZXIuaApAQCAtMzQsOSArMzQsNiBAQCB0eXBlZGVmIHN0cnVj dCBYTG9nUHJlZmV0Y2hlciBYTG9nUHJlZmV0Y2hlcjsKIAogZXh0ZXJuIHZvaWQgWExvZ1ByZWZl dGNoUmVjb25maWd1cmUodm9pZCk7CiAKLWV4dGVybiBzaXplX3QgWExvZ1ByZWZldGNoU2htZW1T aXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgWExvZ1ByZWZldGNoU2htZW1Jbml0KHZvaWQpOwotCiBl eHRlcm4gdm9pZCBYTG9nUHJlZmV0Y2hSZXNldFN0YXRzKHZvaWQpOwogCiBleHRlcm4gWExvZ1By ZWZldGNoZXIgKlhMb2dQcmVmZXRjaGVyQWxsb2NhdGUoWExvZ1JlYWRlclN0YXRlICpyZWFkZXIp OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5oIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5oCmluZGV4IDI4NDIxMDZiMjg1Li5iYTc3NTBkY2Ew YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5oCisrKyBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3ZlcnkuaApAQCAtMTUzLDkgKzE1Myw2IEBAIGV4dGVy biBQR0RMTElNUE9SVCBib29sIHJlYWNoZWRDb25zaXN0ZW5jeTsKIC8qIEFyZSB3ZSBjdXJyZW50 bHkgaW4gc3RhbmRieSBtb2RlPyAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgU3RhbmRieU1v ZGU7CiAKLWV4dGVybiBTaXplIFhMb2dSZWNvdmVyeVNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2 b2lkIFhMb2dSZWNvdmVyeVNobWVtSW5pdCh2b2lkKTsKLQogZXh0ZXJuIHZvaWQgSW5pdFdhbFJl Y292ZXJ5KENvbnRyb2xGaWxlRGF0YSAqQ29udHJvbEZpbGUsCiAJCQkJCQkJYm9vbCAqd2FzU2h1 dGRvd25fcHRyLCBib29sICpoYXZlQmFja3VwTGFiZWxfcHRyLAogCQkJCQkJCWJvb2wgKmhhdmVU YmxzcGNNYXBfcHRyKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nd2FpdC5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2d3YWl0LmgKaW5kZXggZDEyNTMxZDMyYjguLjA3MTU3 ZjIyMGVhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3dhaXQuaAorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3dhaXQuaApAQCAtMTAwLDggKzEwMCw2IEBAIHR5cGVkZWYg c3RydWN0IFdhaXRMU05TdGF0ZQogCiBleHRlcm4gUEdETExJTVBPUlQgV2FpdExTTlN0YXRlICp3 YWl0TFNOU3RhdGU7CiAKLWV4dGVybiBTaXplIFdhaXRMU05TaG1lbVNpemUodm9pZCk7Ci1leHRl cm4gdm9pZCBXYWl0TFNOU2htZW1Jbml0KHZvaWQpOwogZXh0ZXJuIFhMb2dSZWNQdHIgR2V0Q3Vy cmVudExTTkZvcldhaXRUeXBlKFdhaXRMU05UeXBlIGxzblR5cGUpOwogZXh0ZXJuIHZvaWQgV2Fp dExTTldha2V1cChXYWl0TFNOVHlwZSBsc25UeXBlLCBYTG9nUmVjUHRyIGN1cnJlbnRMU04pOwog ZXh0ZXJuIHZvaWQgV2FpdExTTkNsZWFudXAodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9wZ3N0YXQuaCBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCmluZGV4IDhlMzU0OWMzNzUyLi4yNzg2 YTdjNWZmYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGdzdGF0LmgKKysrIGIvc3JjL2luY2x1 ZGUvcGdzdGF0LmgKQEAgLTU0MSwxMCArNTQxLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X0Jh Y2tlbmRQZW5kaW5nCiAgKiBGdW5jdGlvbnMgaW4gcGdzdGF0LmMKICAqLwogCi0vKiBmdW5jdGlv bnMgY2FsbGVkIGZyb20gcG9zdG1hc3RlciAqLwotZXh0ZXJuIFNpemUgU3RhdHNTaG1lbVNpemUo dm9pZCk7Ci1leHRlcm4gdm9pZCBTdGF0c1NobWVtSW5pdCh2b2lkKTsKLQogLyogRnVuY3Rpb25z IGNhbGxlZCBkdXJpbmcgc2VydmVyIHN0YXJ0dXAgLyBzaHV0ZG93biAqLwogZXh0ZXJuIHZvaWQg cGdzdGF0X3Jlc3RvcmVfc3RhdHModm9pZCk7CiBleHRlcm4gdm9pZCBwZ3N0YXRfZGlzY2FyZF9z dGF0cyh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1 bS5oIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgKaW5kZXggYjIxZDExMWQ0 ZDUuLjg5NTRmNmIyOGVlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92 YWN1dW0uaAorKysgYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaApAQCAtNjYs OCArNjYsNCBAQCBwZ19ub3JldHVybiBleHRlcm4gdm9pZCBBdXRvVmFjV29ya2VyTWFpbihjb25z dCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydAogZXh0ZXJuIGJvb2wgQXV0b1ZhY3V1 bVJlcXVlc3RXb3JrKEF1dG9WYWN1dW1Xb3JrSXRlbVR5cGUgdHlwZSwKIAkJCQkJCQkJICBPaWQg cmVsYXRpb25JZCwgQmxvY2tOdW1iZXIgYmxrbm8pOwogCi0vKiBzaGFyZWQgbWVtb3J5IHN0dWZm ICovCi1leHRlcm4gU2l6ZSBBdXRvVmFjdXVtU2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQg QXV0b1ZhY3V1bVNobWVtSW5pdCh2b2lkKTsKLQogI2VuZGlmCQkJCQkJCS8qIEFVVE9WQUNVVU1f SCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dvcmtlcl9pbnRlcm5h bHMuaCBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3b3JrZXJfaW50ZXJuYWxzLmgKaW5kZXgg Yjc4OWNhZjQwMzQuLmI2MjYxYmMwMWRmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb3N0bWFz dGVyL2Jnd29ya2VyX2ludGVybmFscy5oCisrKyBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3 b3JrZXJfaW50ZXJuYWxzLmgKQEAgLTQxLDggKzQxLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVnaXN0 ZXJlZEJnV29ya2VyCiAKIGV4dGVybiBQR0RMTElNUE9SVCBkbGlzdF9oZWFkIEJhY2tncm91bmRX b3JrZXJMaXN0OwogCi1leHRlcm4gU2l6ZSBCYWNrZ3JvdW5kV29ya2VyU2htZW1TaXplKHZvaWQp OwotZXh0ZXJuIHZvaWQgQmFja2dyb3VuZFdvcmtlclNobWVtSW5pdCh2b2lkKTsKIGV4dGVybiB2 b2lkIEJhY2tncm91bmRXb3JrZXJTdGF0ZUNoYW5nZShib29sIGFsbG93X25ld193b3JrZXJzKTsK IGV4dGVybiB2b2lkIEZvcmdldEJhY2tncm91bmRXb3JrZXIoUmVnaXN0ZXJlZEJnV29ya2VyICpy dyk7CiBleHRlcm4gdm9pZCBSZXBvcnRCYWNrZ3JvdW5kV29ya2VyUElEKFJlZ2lzdGVyZWRCZ1dv cmtlciAqcncpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dyaXRlci5o IGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dyaXRlci5oCmluZGV4IDQ3NDcwY2JhODkzLi4z NmVlYTBiMWFiMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9iZ3dyaXRlci5o CisrKyBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuaApAQCAtMzksOSArMzksNiBA QCBleHRlcm4gYm9vbCBGb3J3YXJkU3luY1JlcXVlc3QoY29uc3QgRmlsZVRhZyAqZnRhZywgU3lu Y1JlcXVlc3RUeXBlIHR5cGUpOwogCiBleHRlcm4gdm9pZCBBYnNvcmJTeW5jUmVxdWVzdHModm9p ZCk7CiAKLWV4dGVybiBTaXplIENoZWNrcG9pbnRlclNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2 b2lkIENoZWNrcG9pbnRlclNobWVtSW5pdCh2b2lkKTsKLQogZXh0ZXJuIGJvb2wgRmlyc3RDYWxs U2luY2VMYXN0Q2hlY2twb2ludCh2b2lkKTsKIAogI2VuZGlmCQkJCQkJCS8qIF9CR1dSSVRFUl9I ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2RhdGFjaGVja3N1bV9zdGF0 ZS5oIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9kYXRhY2hlY2tzdW1fc3RhdGUuaAppbmRleCAz NDM0OTRlZGNjOC4uMDU2MjU1Mzk2MDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0 ZXIvZGF0YWNoZWNrc3VtX3N0YXRlLmgKKysrIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9kYXRh Y2hlY2tzdW1fc3RhdGUuaApAQCAtMTcsMTAgKzE3LDYgQEAKIAogI2luY2x1ZGUgInN0b3JhZ2Uv cHJvY3NpZ25hbC5oIgogCi0vKiBTaGFyZWQgbWVtb3J5ICovCi1leHRlcm4gU2l6ZSBEYXRhQ2hl Y2tzdW1zU2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgRGF0YUNoZWNrc3Vtc1NobWVtSW5p dCh2b2lkKTsKLQogLyogUG9zc2libGUgb3BlcmF0aW9ucyB0aGUgRGF0YWNoZWNrc3Vtc3dvcmtl ciBjYW4gcGVyZm9ybSAqLwogdHlwZWRlZiBlbnVtIERhdGFDaGVja3N1bXNXb3JrZXJPcGVyYXRp b24KIHsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvcGdhcmNoLmggYi9zcmMv aW5jbHVkZS9wb3N0bWFzdGVyL3BnYXJjaC5oCmluZGV4IGZhYTc2MDljZDgxLi45NzcyYmI1NzNh MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9wZ2FyY2guaAorKysgYi9zcmMv aW5jbHVkZS9wb3N0bWFzdGVyL3BnYXJjaC5oCkBAIC0yNiw4ICsyNiw2IEBACiAjZGVmaW5lIE1B WF9YRk5fQ0hBUlMJNDAKICNkZWZpbmUgVkFMSURfWEZOX0NIQVJTICIwMTIzNDU2Nzg5QUJDREVG Lmhpc3RvcnkuYmFja3VwLnBhcnRpYWwiCiAKLWV4dGVybiBTaXplIFBnQXJjaFNobWVtU2l6ZSh2 b2lkKTsKLWV4dGVybiB2b2lkIFBnQXJjaFNobWVtSW5pdCh2b2lkKTsKIGV4dGVybiBib29sIFBn QXJjaENhblJlc3RhcnQodm9pZCk7CiBwZ19ub3JldHVybiBleHRlcm4gdm9pZCBQZ0FyY2hpdmVy TWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVwX2RhdGFfbGVuKTsK IGV4dGVybiB2b2lkIFBnQXJjaFdha2V1cCh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5oIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci93YWxz dW1tYXJpemVyLmgKaW5kZXggYTRjMDU1MDY2YjQuLmI5YTc1NWZhZGJjIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9w b3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuaApAQCAtMTksOCArMTksNiBAQAogZXh0ZXJuIFBHRExM SU1QT1JUIGJvb2wgc3VtbWFyaXplX3dhbDsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgd2FsX3N1 bW1hcnlfa2VlcF90aW1lOwogCi1leHRlcm4gU2l6ZSBXYWxTdW1tYXJpemVyU2htZW1TaXplKHZv aWQpOwotZXh0ZXJuIHZvaWQgV2FsU3VtbWFyaXplclNobWVtSW5pdCh2b2lkKTsKIHBnX25vcmV0 dXJuIGV4dGVybiB2b2lkIFdhbFN1bW1hcml6ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0 YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9sZW4pOwogCiBleHRlcm4gdm9pZCBHZXRXYWxTdW1tYXJp emVyU3RhdGUoVGltZUxpbmVJRCAqc3VtbWFyaXplZF90bGksCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsY3RsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9s b2dpY2FsY3RsLmgKaW5kZXggNDk1NTU0YzUzMmMuLjBiYzEzMDJmMTMwIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsY3RsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vbG9naWNhbGN0bC5oCkBAIC0xNCw4ICsxNCw2IEBACiAjaWZuZGVmIExPR0lDQUxD VExfSAogI2RlZmluZSBMT0dJQ0FMQ1RMX0gKIAotZXh0ZXJuIFNpemUgTG9naWNhbERlY29kaW5n Q3RsU2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgTG9naWNhbERlY29kaW5nQ3RsU2htZW1J bml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgU3RhcnR1cExvZ2ljYWxEZWNvZGluZ1N0YXR1cyhib29s IGxhc3Rfc3RhdHVzKTsKIGV4dGVybiB2b2lkIEluaXRpYWxpemVQcm9jZXNzWExvZ0xvZ2ljYWxJ bmZvKHZvaWQpOwogZXh0ZXJuIGJvb2wgUHJvY2Vzc0JhcnJpZXJVcGRhdGVYTG9nTG9naWNhbElu Zm8odm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1 bmNoZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCmluZGV4 IDUwNGI3MTA1MzZhLi41ZjBjMWI5YzY4MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbGxhdW5jaGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9n aWNhbGxhdW5jaGVyLmgKQEAgLTE5LDkgKzE5LDYgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCBt YXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uOwogZXh0ZXJuIHZvaWQg QXBwbHlMYXVuY2hlclJlZ2lzdGVyKHZvaWQpOwogZXh0ZXJuIHZvaWQgQXBwbHlMYXVuY2hlck1h aW4oRGF0dW0gbWFpbl9hcmcpOwogCi1leHRlcm4gU2l6ZSBBcHBseUxhdW5jaGVyU2htZW1TaXpl KHZvaWQpOwotZXh0ZXJuIHZvaWQgQXBwbHlMYXVuY2hlclNobWVtSW5pdCh2b2lkKTsKLQogZXh0 ZXJuIHZvaWQgQXBwbHlMYXVuY2hlckZvcmdldFdvcmtlclN0YXJ0VGltZShPaWQgc3ViaWQpOwog CiBleHRlcm4gdm9pZCBBcHBseUxhdW5jaGVyV2FrZXVwQXRDb21taXQodm9pZCk7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaCBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL29yaWdpbi5oCmluZGV4IGViNDZiNDFiNGI3Li5hNjlmYWY2ZWFhZiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vb3JpZ2luLmgKQEAgLTg0LDggKzg0LDQgQEAgZXh0ZXJuIHZvaWQgcmVwbG9yaWdp bl9yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKIGV4dGVybiB2b2lkIHJlcGxvcmlnaW5f ZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwogZXh0ZXJuIGNv bnN0IGNoYXIgKnJlcGxvcmlnaW5faWRlbnRpZnkodWludDggaW5mbyk7CiAKLS8qIHNoYXJlZCBt ZW1vcnkgYWxsb2NhdGlvbiAqLwotZXh0ZXJuIFNpemUgUmVwbGljYXRpb25PcmlnaW5TaG1lbVNp emUodm9pZCk7Ci1leHRlcm4gdm9pZCBSZXBsaWNhdGlvbk9yaWdpblNobWVtSW5pdCh2b2lkKTsK LQogI2VuZGlmCQkJCQkJCS8qIFBHX09SSUdJTl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9zbG90LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKaW5k ZXggNGI0NzA5ZjZlMmMuLjFhMzU1N2RlNjA3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9zbG90LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCkBAIC0z MjcsMTAgKzMyNyw2IEBAIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3JlcGxpY2F0aW9uX3Ns b3RzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGNoYXIgKnN5bmNocm9uaXplZF9zdGFuZGJ5X3Nsb3Rz OwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBpZGxlX3JlcGxpY2F0aW9uX3Nsb3RfdGltZW91dF9z ZWNzOwogCi0vKiBzaG1lbSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgKi8KLWV4dGVybiBTaXpl IFJlcGxpY2F0aW9uU2xvdHNTaG1lbVNpemUodm9pZCk7Ci1leHRlcm4gdm9pZCBSZXBsaWNhdGlv blNsb3RzU2htZW1Jbml0KHZvaWQpOwotCiAvKiBtYW5hZ2VtZW50IG9mIGluZGl2aWR1YWwgc2xv dHMgKi8KIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdENyZWF0ZShjb25zdCBjaGFyICpuYW1l LCBib29sIGRiX3NwZWNpZmljLAogCQkJCQkJCQkgIFJlcGxpY2F0aW9uU2xvdFBlcnNpc3RlbmN5 IHBlcnNpc3RlbmN5LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdHN5 bmMuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3RzeW5jLmgKaW5kZXggZTU0NmQwZDA1 MGQuLmQyMTIxY2QzZWQ3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90 c3luYy5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3RzeW5jLmgKQEAgLTMxLDgg KzMxLDYgQEAgcGdfbm9yZXR1cm4gZXh0ZXJuIHZvaWQgUmVwbFNsb3RTeW5jV29ya2VyTWFpbihj b25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdAogZXh0ZXJuIHZvaWQgU2h1dERvd25TbG90 U3luYyh2b2lkKTsKIGV4dGVybiBib29sIFNsb3RTeW5jV29ya2VyQ2FuUmVzdGFydCh2b2lkKTsK IGV4dGVybiBib29sIElzU3luY2luZ1JlcGxpY2F0aW9uU2xvdHModm9pZCk7Ci1leHRlcm4gU2l6 ZSBTbG90U3luY1NobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFNsb3RTeW5jU2htZW1Jbml0 KHZvaWQpOwogZXh0ZXJuIHZvaWQgU3luY1JlcGxpY2F0aW9uU2xvdHMoV2FsUmVjZWl2ZXJDb25u ICp3cmNvbm4pOwogCiAjZW5kaWYJCQkJCQkJLyogU0xPVFNZTkNfSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3dhbHJlY2VpdmVyLmgKaW5kZXggODVkMjRjODcyOTguLjQ3YzA3NTc0ZDRkIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oCisrKyBiL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgKQEAgLTQ5MSw4ICs0OTEsNiBAQCBwZ19u b3JldHVybiBleHRlcm4gdm9pZCBXYWxSZWNlaXZlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9k YXRhLCBzaXplX3Qgc3RhcnR1cAogZXh0ZXJuIHZvaWQgV2FsUmN2UmVxdWVzdEFwcGx5UmVwbHko dm9pZCk7CiAKIC8qIHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiB3YWxyZWNlaXZlcmZ1bmNz LmMgKi8KLWV4dGVybiBTaXplIFdhbFJjdlNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFdh bFJjdlNobWVtSW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIFNodXRkb3duV2FsUmN2KHZvaWQpOwog ZXh0ZXJuIGJvb2wgV2FsUmN2U3RyZWFtaW5nKHZvaWQpOwogZXh0ZXJuIGJvb2wgV2FsUmN2UnVu bmluZyh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRl ci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKaW5kZXggYTRkZjNiOGUw YWUuLjg5NTJjODQ4ZDE5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxz ZW5kZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXIuaApAQCAtNDEs OCArNDEsNiBAQCBleHRlcm4gdm9pZCBXYWxTbmRFcnJvckNsZWFudXAodm9pZCk7CiBleHRlcm4g dm9pZCBQaHlzaWNhbFdha2V1cExvZ2ljYWxXYWxTbmQodm9pZCk7CiBleHRlcm4gWExvZ1JlY1B0 ciBHZXRTdGFuZGJ5Rmx1c2hSZWNQdHIoVGltZUxpbmVJRCAqdGxpKTsKIGV4dGVybiB2b2lkIFdh bFNuZFNpZ25hbHModm9pZCk7Ci1leHRlcm4gU2l6ZSBXYWxTbmRTaG1lbVNpemUodm9pZCk7Ci1l eHRlcm4gdm9pZCBXYWxTbmRTaG1lbUluaXQodm9pZCk7CiBleHRlcm4gdm9pZCBXYWxTbmRXYWtl dXAoYm9vbCBwaHlzaWNhbCwgYm9vbCBsb2dpY2FsKTsKIGV4dGVybiB2b2lkIFdhbFNuZEluaXRT dG9wcGluZyh2b2lkKTsKIGV4dGVybiB2b2lkIFdhbFNuZFdhaXRTdG9wcGluZyh2b2lkKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oIGIvc3JjL2luY2x1ZGUvc3RvcmFn ZS9sb2NrLmgKaW5kZXggZmE2OGU2ZWNlY2UuLmVlM2NiMWRjMjAzIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9zdG9yYWdlL2xvY2suaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaApA QCAtMzc1LDggKzM3NSw2IEBAIHR5cGVkZWYgZW51bQogLyoKICAqIGZ1bmN0aW9uIHByb3RvdHlw ZXMKICAqLwotZXh0ZXJuIHZvaWQgTG9ja01hbmFnZXJTaG1lbUluaXQodm9pZCk7Ci1leHRlcm4g U2l6ZSBMb2NrTWFuYWdlclNobWVtU2l6ZSh2b2lkKTsKIGV4dGVybiB2b2lkIEluaXRMb2NrTWFu YWdlckFjY2Vzcyh2b2lkKTsKIGV4dGVybiBMb2NrTWV0aG9kIEdldExvY2tzTWV0aG9kVGFibGUo Y29uc3QgTE9DSyAqbG9jayk7CiBleHRlcm4gTG9ja01ldGhvZCBHZXRMb2NrVGFnc01ldGhvZFRh YmxlKGNvbnN0IExPQ0tUQUcgKmxvY2t0YWcpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3Rv cmFnZS9zdWJzeXN0ZW1saXN0LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3Qu aAppbmRleCBkOGUxMTc1NmE2MS4uNWUwOTI1NTJjNzIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lz dGVtbGlzdC5oCkBAIC0zMiw2ICszMiw5IEBAIFBHX1NITUVNX1NVQlNZU1RFTShEU01SZWdpc3Ry eVNobWVtQ2FsbGJhY2tzKQogCiAvKiB4bG9nLCBjbG9nLCBhbmQgYnVmZmVycyAqLwogUEdfU0hN RU1fU1VCU1lTVEVNKFZhcnN1cFNobWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKFhM T0dTaG1lbUNhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RFTShYTG9nUHJlZmV0Y2hTaG1lbUNh bGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RFTShYTG9nUmVjb3ZlcnlTaG1lbUNhbGxiYWNrcykK IFBHX1NITUVNX1NVQlNZU1RFTShDTE9HU2htZW1DYWxsYmFja3MpCiBQR19TSE1FTV9TVUJTWVNU RU0oQ29tbWl0VHNTaG1lbUNhbGxiYWNrcykKIFBHX1NITUVNX1NVQlNZU1RFTShTVUJUUkFOU1No bWVtQ2FsbGJhY2tzKQpAQCAtNDAsMTIgKzQzLDE4IEBAIFBHX1NITUVNX1NVQlNZU1RFTShCdWZm ZXJNYW5hZ2VyU2htZW1DYWxsYmFja3MpCiBQR19TSE1FTV9TVUJTWVNURU0oU3RyYXRlZ3lDdGxT aG1lbUNhbGxiYWNrcykKIFBHX1NITUVNX1NVQlNZU1RFTShCdWZUYWJsZVNobWVtQ2FsbGJhY2tz KQogCisvKiBsb2NrIG1hbmFnZXIgKi8KK1BHX1NITUVNX1NVQlNZU1RFTShMb2NrTWFuYWdlclNo bWVtQ2FsbGJhY2tzKQorCiAvKiBwcmVkaWNhdGUgbG9jayBtYW5hZ2VyICovCiBQR19TSE1FTV9T VUJTWVNURU0oUHJlZGljYXRlTG9ja1NobWVtQ2FsbGJhY2tzKQogCiAvKiBwcm9jZXNzIHRhYmxl ICovCiBQR19TSE1FTV9TVUJTWVNURU0oUHJvY0dsb2JhbFNobWVtQ2FsbGJhY2tzKQogUEdfU0hN RU1fU1VCU1lTVEVNKFByb2NBcnJheVNobWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVN KEJhY2tlbmRTdGF0dXNTaG1lbUNhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RFTShUd29QaGFz ZVNobWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKEJhY2tncm91bmRXb3JrZXJTaG1l bUNhbGxiYWNrcykKIAogLyogc2hhcmVkLWludmFsIG1lc3NhZ2luZyAqLwogUEdfU0hNRU1fU1VC U1lTVEVNKFNoYXJlZEludmFsU2htZW1DYWxsYmFja3MpCkBAIC01Myw5ICs2MiwyNyBAQCBQR19T SE1FTV9TVUJTWVNURU0oU2hhcmVkSW52YWxTaG1lbUNhbGxiYWNrcykKIC8qIGludGVycHJvY2Vz cyBzaWduYWxpbmcgbWVjaGFuaXNtcyAqLwogUEdfU0hNRU1fU1VCU1lTVEVNKFBNU2lnbmFsU2ht ZW1DYWxsYmFja3MpCiBQR19TSE1FTV9TVUJTWVNURU0oUHJvY1NpZ25hbFNobWVtQ2FsbGJhY2tz KQorUEdfU0hNRU1fU1VCU1lTVEVNKENoZWNrcG9pbnRlclNobWVtQ2FsbGJhY2tzKQorUEdfU0hN RU1fU1VCU1lTVEVNKEF1dG9WYWN1dW1TaG1lbUNhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RF TShSZXBsaWNhdGlvblNsb3RzU2htZW1DYWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNURU0oUmVw bGljYXRpb25PcmlnaW5TaG1lbUNhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RFTShXYWxTbmRT aG1lbUNhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RFTShXYWxSY3ZTaG1lbUNhbGxiYWNrcykK K1BHX1NITUVNX1NVQlNZU1RFTShXYWxTdW1tYXJpemVyU2htZW1DYWxsYmFja3MpCitQR19TSE1F TV9TVUJTWVNURU0oUGdBcmNoU2htZW1DYWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNURU0oQXBw bHlMYXVuY2hlclNobWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKFNsb3RTeW5jU2ht ZW1DYWxsYmFja3MpCiAKIC8qIG90aGVyIG1vZHVsZXMgdGhhdCBuZWVkIHNvbWUgc2hhcmVkIG1l bW9yeSBzcGFjZSAqLworUEdfU0hNRU1fU1VCU1lTVEVNKEJUcmVlU2htZW1DYWxsYmFja3MpCitQ R19TSE1FTV9TVUJTWVNURU0oU3luY1NjYW5TaG1lbUNhbGxiYWNrcykKIFBHX1NITUVNX1NVQlNZ U1RFTShBc3luY1NobWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKFN0YXRzU2htZW1D YWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNURU0oV2FpdEV2ZW50Q3VzdG9tU2htZW1DYWxsYmFj a3MpCitQR19TSE1FTV9TVUJTWVNURU0oSW5qZWN0aW9uUG9pbnRTaG1lbUNhbGxiYWNrcykKK1BH X1NITUVNX1NVQlNZU1RFTShXYWl0TFNOU2htZW1DYWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNU RU0oTG9naWNhbERlY29kaW5nQ3RsU2htZW1DYWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNURU0o RGF0YUNoZWNrc3Vtc1NobWVtQ2FsbGJhY2tzKQogCiAvKiBBSU8gc3Vic3lzdGVtLiBUaGlzIGRl bGVnYXRlcyB0byB0aGUgbWV0aG9kLXNwZWNpZmljIGNhbGxiYWNrcyAqLwogUEdfU0hNRU1fU1VC U1lTVEVNKEFpb1NobWVtQ2FsbGJhY2tzKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMv YmFja2VuZF9zdGF0dXMuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3RhdHVzLmgKaW5k ZXggZGRkMDYzMDRlOTcuLmEzMzRlMDk2ZTRhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGls cy9iYWNrZW5kX3N0YXR1cy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3RhdHVz LmgKQEAgLTI5OCwxNCArMjk4LDYgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCBwZ3N0YXRfdHJh Y2tfYWN0aXZpdHlfcXVlcnlfc2l6ZTsKIGV4dGVybiBQR0RMTElNUE9SVCBQZ0JhY2tlbmRTdGF0 dXMgKk15QkVFbnRyeTsKIAogCi0vKiAtLS0tLS0tLS0tCi0gKiBGdW5jdGlvbnMgY2FsbGVkIGZy b20gcG9zdG1hc3RlcgotICogLS0tLS0tLS0tLQotICovCi1leHRlcm4gU2l6ZSBCYWNrZW5kU3Rh dHVzU2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgQmFja2VuZFN0YXR1c1NobWVtSW5pdCh2 b2lkKTsKLQotCiAvKiAtLS0tLS0tLS0tCiAgKiBGdW5jdGlvbnMgY2FsbGVkIGZyb20gYmFja2Vu ZHMKICAqIC0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2luamVjdGlv bl9wb2ludC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvaW5qZWN0aW9uX3BvaW50LmgKaW5kZXggMjdh MjUyNjUyNGYuLmZhYmQxNDU1YzNjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9pbmpl Y3Rpb25fcG9pbnQuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9pbmplY3Rpb25fcG9pbnQuaApA QCAtNDYsOSArNDYsNiBAQCB0eXBlZGVmIHZvaWQgKCpJbmplY3Rpb25Qb2ludENhbGxiYWNrKSAo Y29uc3QgY2hhciAqbmFtZSwKIAkJCQkJCQkJCQljb25zdCB2b2lkICpwcml2YXRlX2RhdGEsCiAJ CQkJCQkJCQkJdm9pZCAqYXJnKTsKIAotZXh0ZXJuIFNpemUgSW5qZWN0aW9uUG9pbnRTaG1lbVNp emUodm9pZCk7Ci1leHRlcm4gdm9pZCBJbmplY3Rpb25Qb2ludFNobWVtSW5pdCh2b2lkKTsKLQog ZXh0ZXJuIHZvaWQgSW5qZWN0aW9uUG9pbnRBdHRhY2goY29uc3QgY2hhciAqbmFtZSwKIAkJCQkJ CQkJIGNvbnN0IGNoYXIgKmxpYnJhcnksCiAJCQkJCQkJCSBjb25zdCBjaGFyICpmdW5jdGlvbiwK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNsdWRl L3V0aWxzL3dhaXRfZXZlbnQuaAppbmRleCAzNGMyN2NjM2RjMy4uODZlZTM0ODIyMGQgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAorKysgYi9zcmMvaW5jbHVkZS91 dGlscy93YWl0X2V2ZW50LmgKQEAgLTQyLDggKzQyLDYgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIHVp bnQzMiAqbXlfd2FpdF9ldmVudF9pbmZvOwogZXh0ZXJuIHVpbnQzMiBXYWl0RXZlbnRFeHRlbnNp b25OZXcoY29uc3QgY2hhciAqd2FpdF9ldmVudF9uYW1lKTsKIGV4dGVybiB1aW50MzIgV2FpdEV2 ZW50SW5qZWN0aW9uUG9pbnROZXcoY29uc3QgY2hhciAqd2FpdF9ldmVudF9uYW1lKTsKIAotZXh0 ZXJuIHZvaWQgV2FpdEV2ZW50Q3VzdG9tU2htZW1Jbml0KHZvaWQpOwotZXh0ZXJuIFNpemUgV2Fp dEV2ZW50Q3VzdG9tU2htZW1TaXplKHZvaWQpOwogZXh0ZXJuIGNoYXIgKipHZXRXYWl0RXZlbnRD dXN0b21OYW1lcyh1aW50MzIgY2xhc3NJZCwgaW50ICpud2FpdGV2ZW50cyk7CiAKIC8qIC0tLS0t LS0tLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9pbmpl Y3Rpb25fcG9pbnRzLmMgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvaW5qZWN0 aW9uX3BvaW50cy5jCmluZGV4IGQ1OWM1YWQwNTgyLi4wZjFhZjUxMzY3MyAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2luamVjdGlvbl9wb2ludHMuYworKysg Yi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvaW5qZWN0aW9uX3BvaW50cy5jCkBA IC0xMDcsOSArMTA3LDEzIEBAIGV4dGVybiBQR0RMTEVYUE9SVCB2b2lkIGluamVjdGlvbl93YWl0 KGNvbnN0IGNoYXIgKm5hbWUsCiAvKiB0cmFjayBpZiBpbmplY3Rpb24gcG9pbnRzIGF0dGFjaGVk IGluIHRoaXMgcHJvY2VzcyBhcmUgbGlua2VkIHRvIGl0ICovCiBzdGF0aWMgYm9vbCBpbmplY3Rp b25fcG9pbnRfbG9jYWwgPSBmYWxzZTsKIAotLyogU2hhcmVkIG1lbW9yeSBpbml0IGNhbGxiYWNr cyAqLwotc3RhdGljIHNobWVtX3JlcXVlc3RfaG9va190eXBlIHByZXZfc2htZW1fcmVxdWVzdF9o b29rID0gTlVMTDsKLXN0YXRpYyBzaG1lbV9zdGFydHVwX2hvb2tfdHlwZSBwcmV2X3NobWVtX3N0 YXJ0dXBfaG9vayA9IE5VTEw7CitzdGF0aWMgdm9pZCBpbmplY3Rpb25fc2htZW1fcmVxdWVzdCh2 b2lkICphcmcpOworc3RhdGljIHZvaWQgaW5qZWN0aW9uX3NobWVtX2luaXQodm9pZCAqYXJnKTsK Kworc3RhdGljIGNvbnN0IFNobWVtQ2FsbGJhY2tzIGluamVjdGlvbl9zaG1lbV9jYWxsYmFja3Mg PSB7CisJLnJlcXVlc3RfZm4gPSBpbmplY3Rpb25fc2htZW1fcmVxdWVzdCwKKwkuaW5pdF9mbiA9 IGluamVjdGlvbl9zaG1lbV9pbml0LAorfTsKIAogLyoKICAqIFJvdXRpbmUgZm9yIHNoYXJlZCBt ZW1vcnkgYXJlYSBpbml0aWFsaXphdGlvbiwgdXNlZCBhcyBhIGNhbGxiYWNrCkBAIC0xMjYsNDQg KzEzMCwyMyBAQCBpbmplY3Rpb25fcG9pbnRfaW5pdF9zdGF0ZSh2b2lkICpwdHIsIHZvaWQgKmFy ZykKIAlDb25kaXRpb25WYXJpYWJsZUluaXQoJnN0YXRlLT53YWl0X3BvaW50KTsKIH0KIAotLyog U2hhcmVkIG1lbW9yeSBpbml0aWFsaXphdGlvbiB3aGVuIGxvYWRpbmcgbW9kdWxlICovCiBzdGF0 aWMgdm9pZAotaW5qZWN0aW9uX3NobWVtX3JlcXVlc3Qodm9pZCkKK2luamVjdGlvbl9zaG1lbV9y ZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlTaXplCQlzaXplOwotCi0JaWYgKHByZXZfc2htZW1fcmVx dWVzdF9ob29rKQotCQlwcmV2X3NobWVtX3JlcXVlc3RfaG9vaygpOwotCi0Jc2l6ZSA9IE1BWEFM SUdOKHNpemVvZihJbmplY3Rpb25Qb2ludFNoYXJlZFN0YXRlKSk7Ci0JUmVxdWVzdEFkZGluU2ht ZW1TcGFjZShzaXplKTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiaW5qZWN0aW9uX3Bv aW50cyIsCisJCQkJCSAgIC5zaXplID0gc2l6ZW9mKEluamVjdGlvblBvaW50U2hhcmVkU3RhdGUp LAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZpbmpfc3RhdGUsCisJCSk7CiB9CiAKIHN0YXRp YyB2b2lkCi1pbmplY3Rpb25fc2htZW1fc3RhcnR1cCh2b2lkKQoraW5qZWN0aW9uX3NobWVtX2lu aXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kOwotCi0JaWYgKHByZXZfc2htZW1fc3RhcnR1 cF9ob29rKQotCQlwcmV2X3NobWVtX3N0YXJ0dXBfaG9vaygpOwotCi0JLyogQ3JlYXRlIG9yIGF0 dGFjaCB0byB0aGUgc2hhcmVkIG1lbW9yeSBzdGF0ZSAqLwotCUxXTG9ja0FjcXVpcmUoQWRkaW5T aG1lbUluaXRMb2NrLCBMV19FWENMVVNJVkUpOwotCi0JaW5qX3N0YXRlID0gU2htZW1Jbml0U3Ry dWN0KCJpbmplY3Rpb25fcG9pbnRzIiwKLQkJCQkJCQkJc2l6ZW9mKEluamVjdGlvblBvaW50U2hh cmVkU3RhdGUpLAotCQkJCQkJCQkmZm91bmQpOwotCi0JaWYgKCFmb3VuZCkKLQl7Ci0JCS8qCi0J CSAqIEZpcnN0IHRpbWUgdGhyb3VnaCwgc28gaW5pdGlhbGl6ZS4gIFRoaXMgaXMgc2hhcmVkIHdp dGggdGhlIGR5bmFtaWMKLQkJICogaW5pdGlhbGl6YXRpb24gdXNpbmcgYSBEU00uCi0JCSAqLwot CQlpbmplY3Rpb25fcG9pbnRfaW5pdF9zdGF0ZShpbmpfc3RhdGUsIE5VTEwpOwotCX0KLQotCUxX TG9ja1JlbGVhc2UoQWRkaW5TaG1lbUluaXRMb2NrKTsKKwkvKgorCSAqIEZpcnN0IHRpbWUgdGhy b3VnaCwgc28gaW5pdGlhbGl6ZS4gIFRoaXMgaXMgc2hhcmVkIHdpdGggdGhlIGR5bmFtaWMKKwkg KiBpbml0aWFsaXphdGlvbiB1c2luZyBhIERTTS4KKwkgKi8KKwlpbmplY3Rpb25fcG9pbnRfaW5p dF9zdGF0ZShpbmpfc3RhdGUsIE5VTEwpOwogfQogCiAvKgpAQCAtNjAxLDkgKzU4NCw1IEBAIF9Q R19pbml0KHZvaWQpCiAJaWYgKCFwcm9jZXNzX3NoYXJlZF9wcmVsb2FkX2xpYnJhcmllc19pbl9w cm9ncmVzcykKIAkJcmV0dXJuOwogCi0JLyogU2hhcmVkIG1lbW9yeSBpbml0aWFsaXphdGlvbiAq LwotCXByZXZfc2htZW1fcmVxdWVzdF9ob29rID0gc2htZW1fcmVxdWVzdF9ob29rOwotCXNobWVt X3JlcXVlc3RfaG9vayA9IGluamVjdGlvbl9zaG1lbV9yZXF1ZXN0OwotCXByZXZfc2htZW1fc3Rh cnR1cF9ob29rID0gc2htZW1fc3RhcnR1cF9ob29rOwotCXNobWVtX3N0YXJ0dXBfaG9vayA9IGlu amVjdGlvbl9zaG1lbV9zdGFydHVwOworCVJlZ2lzdGVyU2htZW1DYWxsYmFja3MoJmluamVjdGlv bl9zaG1lbV9jYWxsYmFja3MpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2Fpby90ZXN0X2Fpby5jIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Fpby90ZXN0X2Fpby5jCmlu ZGV4IGQ3NTMwNjgxMTkyLi4zNWVmYmExYTVlMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2Fpby90ZXN0X2Fpby5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9haW8vdGVz dF9haW8uYwpAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9jaGVja3N1bS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9u X3ZhcmlhYmxlLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdl L2x3bG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv cHJvY251bWJlci5oIgpAQCAtNDQsNiArNDMsNyBAQAogUEdfTU9EVUxFX01BR0lDOwogCiAKKy8q IEluIHNoYXJlZCBtZW1vcnkgKi8KIHR5cGVkZWYgc3RydWN0IEluaklvRXJyb3JTdGF0ZQogewog CUNvbmRpdGlvblZhcmlhYmxlIGN2OwpAQCAtNzQsOCArNzQsMTUgQEAgdHlwZWRlZiBzdHJ1Y3Qg QmxvY2tzUmVhZFN0cmVhbURhdGEKIHN0YXRpYyBJbmpJb0Vycm9yU3RhdGUgKmlual9pb19lcnJv cl9zdGF0ZTsKIAogLyogU2hhcmVkIG1lbW9yeSBpbml0IGNhbGxiYWNrcyAqLwotc3RhdGljIHNo bWVtX3JlcXVlc3RfaG9va190eXBlIHByZXZfc2htZW1fcmVxdWVzdF9ob29rID0gTlVMTDsKLXN0 YXRpYyBzaG1lbV9zdGFydHVwX2hvb2tfdHlwZSBwcmV2X3NobWVtX3N0YXJ0dXBfaG9vayA9IE5V TEw7CitzdGF0aWMgdm9pZCB0ZXN0X2Fpb19zaG1lbV9yZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0 aWMgdm9pZCB0ZXN0X2Fpb19zaG1lbV9pbml0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCB0ZXN0 X2Fpb19zaG1lbV9hdHRhY2godm9pZCAqYXJnKTsKKworc3RhdGljIGNvbnN0IFNobWVtQ2FsbGJh Y2tzIGlual9pb19zaG1lbV9jYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4gPSB0ZXN0X2Fpb19z aG1lbV9yZXF1ZXN0LAorCS5pbml0X2ZuID0gdGVzdF9haW9fc2htZW1faW5pdCwKKwkuYXR0YWNo X2ZuID0gdGVzdF9haW9fc2htZW1fYXR0YWNoLAorfTsKIAogCiBzdGF0aWMgUGdBaW9IYW5kbGUg Kmxhc3RfaGFuZGxlOwpAQCAtODMsNzAgKzkwLDU1IEBAIHN0YXRpYyBQZ0Fpb0hhbmRsZSAqbGFz dF9oYW5kbGU7CiAKIAogc3RhdGljIHZvaWQKLXRlc3RfYWlvX3NobWVtX3JlcXVlc3Qodm9pZCkK K3Rlc3RfYWlvX3NobWVtX3JlcXVlc3Qodm9pZCAqYXJnKQogewotCWlmIChwcmV2X3NobWVtX3Jl cXVlc3RfaG9vaykKLQkJcHJldl9zaG1lbV9yZXF1ZXN0X2hvb2soKTsKLQotCVJlcXVlc3RBZGRp blNobWVtU3BhY2Uoc2l6ZW9mKEluaklvRXJyb3JTdGF0ZSkpOworCVNobWVtUmVxdWVzdFN0cnVj dCgubmFtZSA9ICJ0ZXN0X2FpbyBpbmplY3Rpb24gcG9pbnRzIiwKKwkJCQkJICAgLnNpemUgPSBz aXplb2YoSW5qSW9FcnJvclN0YXRlKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmaW5qX2lv X2Vycm9yX3N0YXRlLAorCQkpOwogfQogCiBzdGF0aWMgdm9pZAotdGVzdF9haW9fc2htZW1fc3Rh cnR1cCh2b2lkKQordGVzdF9haW9fc2htZW1faW5pdCh2b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91 bmQ7Ci0KLQlpZiAocHJldl9zaG1lbV9zdGFydHVwX2hvb2spCi0JCXByZXZfc2htZW1fc3RhcnR1 cF9ob29rKCk7Ci0KLQkvKiBDcmVhdGUgb3IgYXR0YWNoIHRvIHRoZSBzaGFyZWQgbWVtb3J5IHN0 YXRlICovCi0JTFdMb2NrQWNxdWlyZShBZGRpblNobWVtSW5pdExvY2ssIExXX0VYQ0xVU0lWRSk7 Ci0KLQlpbmpfaW9fZXJyb3Jfc3RhdGUgPSBTaG1lbUluaXRTdHJ1Y3QoImluamVjdGlvbl9wb2lu dHMiLAotCQkJCQkJCQkJCSBzaXplb2YoSW5qSW9FcnJvclN0YXRlKSwKLQkJCQkJCQkJCQkgJmZv dW5kKTsKLQotCWlmICghZm91bmQpCi0JewotCQkvKiBGaXJzdCB0aW1lIHRocm91Z2gsIGluaXRp YWxpemUgKi8KLQkJaW5qX2lvX2Vycm9yX3N0YXRlLT5lbmFibGVkX3Nob3J0X3JlYWQgPSBmYWxz ZTsKLQkJaW5qX2lvX2Vycm9yX3N0YXRlLT5lbmFibGVkX3Jlb3BlbiA9IGZhbHNlOwotCQlpbmpf aW9fZXJyb3Jfc3RhdGUtPmVuYWJsZWRfY29tcGxldGlvbl93YWl0ID0gZmFsc2U7CisJLyogRmly c3QgdGltZSB0aHJvdWdoLCBpbml0aWFsaXplICovCisJaW5qX2lvX2Vycm9yX3N0YXRlLT5lbmFi bGVkX3Nob3J0X3JlYWQgPSBmYWxzZTsKKwlpbmpfaW9fZXJyb3Jfc3RhdGUtPmVuYWJsZWRfcmVv cGVuID0gZmFsc2U7CisJaW5qX2lvX2Vycm9yX3N0YXRlLT5lbmFibGVkX2NvbXBsZXRpb25fd2Fp dCA9IGZhbHNlOwogCi0JCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmaW5qX2lvX2Vycm9yX3N0YXRl LT5jdik7Ci0JCWlual9pb19lcnJvcl9zdGF0ZS0+Y29tcGxldGlvbl93YWl0X2V2ZW50ID0gV2Fp dEV2ZW50SW5qZWN0aW9uUG9pbnROZXcoImNvbXBsZXRpb25fd2FpdCIpOworCUNvbmRpdGlvblZh cmlhYmxlSW5pdCgmaW5qX2lvX2Vycm9yX3N0YXRlLT5jdik7CisJaW5qX2lvX2Vycm9yX3N0YXRl LT5jb21wbGV0aW9uX3dhaXRfZXZlbnQgPSBXYWl0RXZlbnRJbmplY3Rpb25Qb2ludE5ldygiY29t cGxldGlvbl93YWl0Iik7CiAKICNpZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUwotCQlJbmplY3Rp b25Qb2ludEF0dGFjaCgiYWlvLXByb2Nlc3MtY29tcGxldGlvbi1iZWZvcmUtc2hhcmVkIiwKLQkJ CQkJCQkgInRlc3RfYWlvIiwKLQkJCQkJCQkgImlual9pb19jb21wbGV0aW9uX2hvb2siLAotCQkJ CQkJCSBOVUxMLAotCQkJCQkJCSAwKTsKLQkJSW5qZWN0aW9uUG9pbnRMb2FkKCJhaW8tcHJvY2Vz cy1jb21wbGV0aW9uLWJlZm9yZS1zaGFyZWQiKTsKLQotCQlJbmplY3Rpb25Qb2ludEF0dGFjaCgi YWlvLXdvcmtlci1hZnRlci1yZW9wZW4iLAotCQkJCQkJCSAidGVzdF9haW8iLAotCQkJCQkJCSAi aW5qX2lvX3Jlb3BlbiIsCi0JCQkJCQkJIE5VTEwsCi0JCQkJCQkJIDApOwotCQlJbmplY3Rpb25Q b2ludExvYWQoImFpby13b3JrZXItYWZ0ZXItcmVvcGVuIik7CisJSW5qZWN0aW9uUG9pbnRBdHRh Y2goImFpby1wcm9jZXNzLWNvbXBsZXRpb24tYmVmb3JlLXNoYXJlZCIsCisJCQkJCQkgInRlc3Rf YWlvIiwKKwkJCQkJCSAiaW5qX2lvX2NvbXBsZXRpb25faG9vayIsCisJCQkJCQkgTlVMTCwKKwkJ CQkJCSAwKTsKKwlJbmplY3Rpb25Qb2ludExvYWQoImFpby1wcm9jZXNzLWNvbXBsZXRpb24tYmVm b3JlLXNoYXJlZCIpOworCisJSW5qZWN0aW9uUG9pbnRBdHRhY2goImFpby13b3JrZXItYWZ0ZXIt cmVvcGVuIiwKKwkJCQkJCSAidGVzdF9haW8iLAorCQkJCQkJICJpbmpfaW9fcmVvcGVuIiwKKwkJ CQkJCSBOVUxMLAorCQkJCQkJIDApOworCUluamVjdGlvblBvaW50TG9hZCgiYWlvLXdvcmtlci1h ZnRlci1yZW9wZW4iKTsKIAogI2VuZGlmCi0JfQotCWVsc2UKLQl7Ci0JCS8qCi0JCSAqIFByZS1s b2FkIHRoZSBpbmplY3Rpb24gcG9pbnRzIG5vdywgc28gd2UgY2FuIGNhbGwgdGhlbSBpbiBhCi0J CSAqIGNyaXRpY2FsIHNlY3Rpb24uCi0JCSAqLworfQorCitzdGF0aWMgdm9pZAordGVzdF9haW9f c2htZW1fYXR0YWNoKHZvaWQgKmFyZykKK3sKKwkvKgorCSAqIFByZS1sb2FkIHRoZSBpbmplY3Rp b24gcG9pbnRzIG5vdywgc28gd2UgY2FuIGNhbGwgdGhlbSBpbiBhIGNyaXRpY2FsCisJICogc2Vj dGlvbi4KKwkgKi8KICNpZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUwotCQlJbmplY3Rpb25Qb2lu dExvYWQoImFpby1wcm9jZXNzLWNvbXBsZXRpb24tYmVmb3JlLXNoYXJlZCIpOwotCQlJbmplY3Rp b25Qb2ludExvYWQoImFpby13b3JrZXItYWZ0ZXItcmVvcGVuIik7Ci0JCWVsb2coTE9HLCAiaW5q ZWN0aW9uIHBvaW50IGxvYWRlZCIpOworCUluamVjdGlvblBvaW50TG9hZCgiYWlvLXByb2Nlc3Mt Y29tcGxldGlvbi1iZWZvcmUtc2hhcmVkIik7CisJSW5qZWN0aW9uUG9pbnRMb2FkKCJhaW8td29y a2VyLWFmdGVyLXJlb3BlbiIpOworCWVsb2coTE9HLCAiaW5qZWN0aW9uIHBvaW50IGxvYWRlZCIp OwogI2VuZGlmCi0JfQotCi0JTFdMb2NrUmVsZWFzZShBZGRpblNobWVtSW5pdExvY2spOwogfQog CiB2b2lkCkBAIC0xNTUsMTAgKzE0Nyw3IEBAIF9QR19pbml0KHZvaWQpCiAJaWYgKCFwcm9jZXNz X3NoYXJlZF9wcmVsb2FkX2xpYnJhcmllc19pbl9wcm9ncmVzcykKIAkJcmV0dXJuOwogCi0JcHJl dl9zaG1lbV9yZXF1ZXN0X2hvb2sgPSBzaG1lbV9yZXF1ZXN0X2hvb2s7Ci0Jc2htZW1fcmVxdWVz dF9ob29rID0gdGVzdF9haW9fc2htZW1fcmVxdWVzdDsKLQlwcmV2X3NobWVtX3N0YXJ0dXBfaG9v ayA9IHNobWVtX3N0YXJ0dXBfaG9vazsKLQlzaG1lbV9zdGFydHVwX2hvb2sgPSB0ZXN0X2Fpb19z aG1lbV9zdGFydHVwOworCVJlZ2lzdGVyU2htZW1DYWxsYmFja3MoJmlual9pb19zaG1lbV9jYWxs YmFja3MpOwogfQogCiAKLS0gCjIuMzQuMQoK --00000000000057312d064eb03f86 Content-Type: text/x-patch; charset="US-ASCII"; name="v20260405-0015-resizable-shared-memory-structures.patch" Content-Disposition: attachment; filename="v20260405-0015-resizable-shared-memory-structures.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnlchnfg14 RnJvbSA3N2NhMWVhM2YyN2Q3OWU4YzU5YTk4Yjg5ZWU0NmQzZGQxN2JlMmRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdt YWlsLmNvbT4KRGF0ZTogVHVlLCAxNyBGZWIgMjAyNiAxNjo1MToyMCArMDUzMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjYwNDA1IDE1LzE1XSByZXNpemFibGUgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmVz CgpSZXNpemFibGUgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmVzIGNhbiBiZSBhbGxvY2F0ZWQgYnkg c3BlY2lmeWluZyBhIG5ldwptZW1iZXIgU2htZW1TdHJ1Y3RPcHRzOjptYXhpbXVtX3NpemUuIEF0 IHRoZSBzdGFydHVwIG9yIHdoZW4gdGhlCnN0cnVjdHVyZSBpcyBjcmVhdGVkLCB3ZSByZXNlcnZl IGFkZHJlc3Mgc3BhY2Ugd29ydGggbWF4aW11bV9zaXplIGluIHRoZQpzaGFyZWQgbWVtb3J5IHNl Z21lbnQuIEl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlIHN1YnN5c3RlbSB3aGljaCBjcmVhdGVzCnRo ZSBzdHJ1Y3R1cmUgd291bGQgaW5pdGlhbGl6ZSBvbmx5IHRoZSBpbml0aWFsIHNpemUgd29ydGgg b2YgbWVtb3J5CndoZW4gY3JlYXRpbmcgaXQuIEluIGFuIG1tYXAnZWQgbWVtb3J5LCB0aGlzIHNo b3VsZCBhbGxvY2F0ZSBtZW1vcnkKd29ydGggdGhlIGluaXRpYWwgc2l6ZS4gSXQgc2hvdWxkIG5v dCBhbGxvY2F0ZSBtYXhpbXVtX3NpemUgd29ydGggb2YKbWVtb3J5IGluaXRpYWxseS4gQXMgdGhl IHN0cnVjdHVyZSBpcyByZXNpemVkIHVzaW5nIFNobWVtUmVzaXplU3RydWN0KCkKbWVtb3J5IGlz IGZyZWVkIG9yIGFsbG9jYXRlZCBpbiBjaHVua3Mgb2YgbWVtb3J5IHBhZ2VzIHdoZW4gc2hyaW5r aW5nCmFuZCBleHBhbmRpbmcgdGhlIHN0cnVjdHVyZSByZXNwZWN0aXZlbHkuCgpSZXNpemFibGUg c2hhcmVkIG1lbW9yeSBmZWF0dXJlIGRlcGVuZHMgdXBvbiBleGlzdGVuY2Ugb2YgZnVuY3Rpb24K bWFkdmlzZSgpIGFuZCBjb25zdGFudHMgTUFEVl9SRU1PVkUgYW5kIE1BRFZfV1JJVEVfUE9QVUxB VEUuCgpPbiB0aGUgcGxhdGZvcm1zIHdoaWNoIGRvIG5vdCBoYXZlIHRoZXNlLCB3ZSBkaXNhYmxl IHRoaXMgZmVhdHVyZSBhdApjb21waWxlIHRpbWUuIFRoZSBjb21taXQgaW50cm9kdWNlcyBhIGNv bXBpbGUgdGltZSBmbGFnCkhBVkVfUkVTSVpBQkxFX1NITUVNIHdoaWNoIGlzIGRlZmluZWQgaWYg TUFEVl9SRU1PVkUgYW5kCk1BRFZfV1JJVEVfUE9QVUxBVEUgZXhpc3QuIFdlIGRvbid0IGNoZWNr IGV4aXN0ZW5jZSBvZiBtYWR2aXNlCnNlcGFyYXRlbHksIHNpbmNlIGV4aXN0ZW5jZSBvZiB0aGUg Y29uc3RhbnRzIGltcGxpZXMgZXhpc3RlbmNlIG9mIHRoZQpmdW5jdGlvbi4KCkhBVkVfUkVTSVpB QkxFX1NITUVNIGlzIG5vdCBkZWZpbmVkIGluIEVYRUNfQkFDS0VORCBidWlsZHMgc2luY2UgdGhh dCdzCmxhcmdlbHkgdXNlZCBmb3IgV2luZG93cyB3aGVyZSB0aGUgQVBJcyB0byBmcmVlIGFuZCBh bGxvY2F0ZSBtZW1vcnkgZnJvbQphbmQgdG8gYSBnaXZlbiBhZGRyZXNzIHNwYWNlIGFyZSBub3Qg a25vd24gdG8gdGhlIGF1dGhvciByaWdodCBub3cuCkdpdmVuIHRoYXQgUG9zdGdyZVNRTCBpcyB1 c2VkIHdpZGVseSBvbiBMaW51eCwgcHJvdmlkaW5nIHRoaXMgZmVhdHVyZSBvbgpMaW51eCBjb3Zl cnMgYmVuZWZpdHMgbW9zdCBvZiBpdHMgdXNlcnMuIE9uY2Ugd2UgZmlndXJlIG91dCB0aGUgcmVx dWlyZWQKV2luZG93cyBBUElzLCB3ZSB3aWxsIHN1cHBvcnQgdGhpcyBmZWF0dXJlIG9uIFdpbmRv d3MgYXMgd2VsbC4KClRoZSBmZWF0dXJlIGlzIGFsc28gbm90IGF2YWlsYWJsZSB3aGVuIFN5cy1W IHNoYXJlZCBtZW1vcnkgaXMgdXNlZCBldmVuCm9uIExpbnV4IHNpbmNlIHdlIGRvIG5vdCBrbm93 IHdoZXRoZXIgcmVxdWlyZWQgU3lzLVYgQVBJcyBleGlzdDsgbW9zdGx5CnRoZXkgZG9uJ3QuIFNp bmNlIHRoYXQgY29tYmluYXRpb24gaXMgb25seSBhdmFpbGFibGUgZm9yIGRldmVsb3BtZW50IGFu ZAp0ZXN0aW5nLCBub3Qgc3VwcG9ydGluZyB0aGUgZmVhdHVyZSB0aGVyZSBpc24ndCBnb2luZyB0 byBpbXBhY3QKUG9zdGdyZVNRTCB1c2Vycy4KClVzaW5nIEhBVkVfUkVTSVpBQkxFX1NITUVNIHdl IGRpc2FibGUgY29tcGlsaW5nIHRoZSBjb2RlIHJlbGF0ZWQgdG8KcmVzaXphYmxlIHNoYXJlZCBt ZW1vcnkgc3RydWN0dXJlcyBvbiB0aGUgcGxhdGZvcm1zIHdoaWNoIGRvIG5vdCBzdXBwb3J0CnRo ZSBmZWF0dXJlLiBCdXQgd2UgYWxzbyBoYXZlIHJ1biB0aW1lIGNoZWNrcyB0byBkaXNhYmxlIHRo aXMgZmVhdHVyZQp3aGVuIFN5cy1WIHNoYXJlZCBtZW1vcnkgaXMgdXNlZC4gSW4gb3JkZXIgdG8g a25vdyB3aGV0aGVyIGEgZ2l2ZW4KaW5zdGFuY2Ugb2YgcnVubmluZyBzZXJ2ZXIgc3VwcG9ydHMg cmVzaXphYmxlIHN0cnVjdHVyZXMsIHdlIGhhdmUKaW50cm9kdWNlZCBHVUMgaGF2ZV9yZXNpemFi bGVfc2htZW0uCgpBdXRob3I6IEFzaHV0b3NoIEJhcGF0IDxhc2h1dG9zaC5iYXBhdC5vc3NAZ21h aWwuY29tPgotLS0KIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgNCArCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAg fCAgMTUgKwogZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sICAgICAgICAgICAgICAgIHwg IDMwICstCiBkb2Mvc3JjL3NnbWwveGZ1bmMuc2dtbCAgICAgICAgICAgICAgICAgICAgICAgfCAg NTQgKysrCiBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg MTYgKwogc3JjL2JhY2tlbmQvcG9ydC9zeXN2X3NobWVtLmMgICAgICAgICAgICAgICAgIHwgIDY5 ICsrKysKIHNyYy9iYWNrZW5kL3BvcnQvd2luMzJfc2htZW0uYyAgICAgICAgICAgICAgICB8ICAy MyArKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyAgICAgICAgICAgICAgIHwgMjY5 ICsrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRh dCAgICAgfCAgIDcgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAg ICAgIHwgICA3ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAg ICB8ICAgNCArLQogc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4gICAgICAgICAgICAgICAgICAg IHwgICA4ICsKIHNyYy9pbmNsdWRlL3BnX2NvbmZpZ19tYW51YWwuaCAgICAgICAgICAgICAgICB8 ICAgOSArCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3BnX3NobWVtLmggICAgICAgICAgICAgICAgfCAg IDUgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oICAgICAgICAgICAgICAgICAgIHwgIDE1 ICsKIHNyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICB8ICAgMSAr CiBzcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgfCAgIDEgKwog c3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vTWFrZWZpbGUgICAgIHwgIDI1ICsrCiBz cmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9tZXNvbi5idWlsZCAgfCAgMzYgKysKIC4u Li9yZXNpemFibGVfc2htZW0vcmVzaXphYmxlX3NobWVtLS0xLjAuc3FsICB8ICAzNyArKwogLi4u L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL3Jlc2l6YWJsZV9zaG1lbS5jIHwgMzI5ICsrKysrKysr KysrKysrKysrKwogLi4uL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0uY29udHJvbCAg IHwgICA0ICsKIC4uLi9yZXNpemFibGVfc2htZW0vdC8wMDFfcmVzaXphYmxlX3NobWVtLnBsICB8 IDIzNSArKysrKysrKysrKysrCiAuLi4vdGVzdF9zaG1lbS90LzAwMV9sYXRlX3NobWVtX2FsbG9j LnBsICAgICAgfCAgMjMgKysKIC4uLi9tb2R1bGVzL3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS0tMS4w LnNxbCAgICB8ICAgNCArCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS5j ICAgICAgfCAgMjAgKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICAg ICAgICB8ICAgNiArLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAg ICAgIHwgICAxICsKIDI4IGZpbGVzIGNoYW5nZWQsIDEyMjEgaW5zZXJ0aW9ucygrKSwgMzYgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVf c2htZW0vTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Jlc2l6 YWJsZV9zaG1lbS9tZXNvbi5idWlsZAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVs ZXMvcmVzaXphYmxlX3NobWVtL3Jlc2l6YWJsZV9zaG1lbS0tMS4wLnNxbAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL3Jlc2l6YWJsZV9zaG1lbS5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vcmVz aXphYmxlX3NobWVtLmNvbnRyb2wKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVz L3Jlc2l6YWJsZV9zaG1lbS90LzAwMV9yZXNpemFibGVfc2htZW0ucGwKCmRpZmYgLS1naXQgYS9j b25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggZmY1ZGQ2NDQ2OGUuLjdhY2Q4NDRjY2Iy IDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0xODk1LDYg KzE4OTUsMTAgQEAgQUNfQ0hFQ0tfREVDTFMoW21lbXNldF9zXSwgW10sIFtdLCBbI2RlZmluZSBf X1NURENfV0FOVF9MSUJfRVhUMV9fIDEKICMgVGhpcyBpcyBwcm9iYWJseSBvbmx5IHByZXNlbnQg b24gbWFjT1MsIGJ1dCBtYXkgYXMgd2VsbCBjaGVjayBhbHdheXMKIEFDX0NIRUNLX0RFQ0xTKEZf RlVMTEZTWU5DLCBbXSwgW10sIFsjaW5jbHVkZSA8ZmNudGwuaD5dKQogCisjIExpbnV4LXNwZWNp ZmljIG1hZHZpc2UgY29uc3RhbnRzIG5lZWRlZCBmb3IgcmVzaXphYmxlIHNoYXJlZCBtZW1vcnku IFNlZSBzaW1pbGFyIGNoZWNrcyBpbiBtZXNvbi5idWlsZCBmb3IgZXhwbGFuYXRpb24gb2Ygd2h5 IHRoZXNlIGNoZWNrcyBhcmUgaGVyZS4KK0FDX0NIRUNLX0RFQ0xTKFtNQURWX1BPUFVMQVRFX1dS SVRFXSwgW10sIFtdLCBbI2luY2x1ZGUgPHN5cy9tbWFuLmg+XSkKK0FDX0NIRUNLX0RFQ0xTKFtN QURWX1JFTU9WRV0sIFtdLCBbXSwgWyNpbmNsdWRlIDxzeXMvbW1hbi5oPl0pCisKIEFDX1JFUExB Q0VfRlVOQ1MobTRfbm9ybWFsaXplKFsKIAlleHBsaWNpdF9iemVybwogCWdldG9wdApkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21s CmluZGV4IGQzZmVhNzM4Y2EzLi5hNDJhMTczNDQ1ZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtMTIwNzIsNiAr MTIwNzIsMjEgQEAgZHluYW1pY19saWJyYXJ5X3BhdGggPSAnL3Vzci9sb2NhbC9saWIvcG9zdGdy ZXNxbDokbGliZGlyJwogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAK KyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWhhdmUtcmVzaXphYmxlLXNobWVtIiB4cmVmbGFi ZWw9ImhhdmVfcmVzaXphYmxlX3NobWVtIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPmhhdmVfcmVz aXphYmxlX3NobWVtPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pCisgICAgICA8aW5k ZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmhhdmVfcmVzaXphYmxlX3NobWVtPC92 YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0 ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAg ICAgICBSZXBvcnRzIHdoZXRoZXIgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1l PiBoYXMgYmVlbiBidWlsdAorICAgICAgICB3aXRoIDxsaXRlcmFsPkhBVkVfUkVTSVpBQkxFX1NI TUVNPC9saXRlcmFsPiBlbmFibGVkIGFuZCBzdXBwb3J0cworICAgICAgICA8bGluayBsaW5rZW5k PSJ4ZnVuYy1zaGFyZWQtYWRkaW4tcmVzaXphYmxlIj5SZXNpemFibGUgc2hhcmVkIG1lbW9yeSBz dHJ1Y3R1cmVzPC9saW5rPi4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAg ICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtaHVnZS1wYWdl cy1zdGF0dXMiIHhyZWZsYWJlbD0iaHVnZV9wYWdlc19zdGF0dXMiPgogICAgICAgPHRlcm0+PHZh cm5hbWU+aHVnZV9wYWdlc19zdGF0dXM8L3Zhcm5hbWU+ICg8dHlwZT5lbnVtPC90eXBlPikKICAg ICAgIDxpbmRleHRlcm0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNn bWwgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKaW5kZXggMmViZWM2OTI4ZDUuLjBl Yzg0NWZlMDYzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCkBAIC00MjQzLDggKzQyNDMsMzQgQEAg U0VMRUNUICogRlJPTSBwZ19sb2NrcyBwbCBMRUZUIEpPSU4gcGdfcHJlcGFyZWRfeGFjdHMgcHB4 CiAgICAgICAgU2l6ZSBvZiB0aGUgYWxsb2NhdGlvbiBpbiBieXRlcyBpbmNsdWRpbmcgcGFkZGlu Zy4gRm9yIGFub255bW91cwogICAgICAgIGFsbG9jYXRpb25zLCBubyBpbmZvcm1hdGlvbiBhYm91 dCBwYWRkaW5nIGlzIGF2YWlsYWJsZSwgc28gdGhlCiAgICAgICAgPGxpdGVyYWw+c2l6ZTwvbGl0 ZXJhbD4gYW5kIDxsaXRlcmFsPmFsbG9jYXRlZF9zaXplPC9saXRlcmFsPiBjb2x1bW5zCi0gICAg ICAgd2lsbCBhbHdheXMgYmUgZXF1YWwuIFBhZGRpbmcgaXMgbm90IG1lYW5pbmdmdWwgZm9yIGZy ZWUgbWVtb3J5LCBzbwotICAgICAgIHRoZSBjb2x1bW5zIHdpbGwgYmUgZXF1YWwgaW4gdGhhdCBj YXNlIGFsc28uCisgICAgICAgd2lsbCBhbHdheXMgYmUgZXF1YWwuIFBhZGRpbmcgaXMgbm90IG1l YW5pbmdmdWwgZm9yIGZyZWUgbWVtb3J5LCBzbyB0aGUKKyAgICAgICBjb2x1bW5zIHdpbGwgYmUg ZXF1YWwgaW4gdGhhdCBjYXNlIGFsc28uIEZvciByZXNpemFibGUgYWxsb2NhdGlvbnMgd2hpY2gK KyAgICAgICBtYXkgc3BhbiBtdWx0aXBsZSBtZW1vcnkgcGFnZXMsIHRoZSBwYWRkaW5nIGluY2x1 ZGVzIHRoZSBwYWRkaW5nIGR1ZSB0bworICAgICAgIHBhZ2UgYWxpZ25tZW50LgorICAgICAgPC9w YXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9s ZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgor ICAgICAgIDxzdHJ1Y3RmaWVsZD5tYXhpbXVtX3NpemU8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQ4 PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTWF4aW11bSBzaXpl IGluIGJ5dGVzIHRoYXQgdGhlIHJlc2l6YWJsZSBhbGxvY2F0aW9uIGNhbiBncm93IHRvLiBaZXJv IGZvcgorICAgICAgIGZpeGVkLXNpemUgYWxsb2NhdGlvbnMsIGZvciBhbm9ueW1vdXMgYWxsb2Nh dGlvbnMsIGFuZCBmb3IgZnJlZSBtZW1vcnkuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAg PC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2Vu dHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxk PmFsbG9jYXRlZF9zcGFjZTwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDg8L3R5cGU+CisgICAgICA8 L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBBZGRyZXNzIHNwYWNlIHJlc2VydmVkIGZvciB0 aGUgYWxsb2NhdGlvbiBpbiBieXRlcy4gRm9yIHJlc2l6YWJsZQorICAgICAgIHN0cnVjdHVyZXMs IHRoaXMgaXMgdGhlIHRvdGFsIGFkZHJlc3Mgc3BhY2UgcmVzZXJ2ZWQgdG8gYWNjb21tb2RhdGUK KyAgICAgICBncm93dGggdXAgdG8gPHN0cnVjdGZpZWxkPm1heGltdW1fc2l6ZTwvc3RydWN0Zmll bGQ+LCBhbmQgaXMgZ3JlYXRlcgorICAgICAgIHRoYW4gb3IgZXF1YWwgdG8gPHN0cnVjdGZpZWxk PmFsbG9jYXRlZF9zaXplPC9zdHJ1Y3RmaWVsZD4uIEZvcgorICAgICAgIGZpeGVkLXNpemUgYWxs b2NhdGlvbnMsIGFub255bW91cyBhbGxvY2F0aW9ucywgYW5kIGZyZWUgbWVtb3J5IHRoaXMKKyAg ICAgICBpcyBzYW1lIGFzIDxzdHJ1Y3RmaWVsZD5hbGxvY2F0ZWRfc2l6ZTwvc3RydWN0ZmllbGQ+ LgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogICAgIDwvdGJvZHk+CmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwveGZ1bmMuc2dtbCBiL2RvYy9zcmMvc2dtbC94ZnVuYy5zZ21s CmluZGV4IGFlZDNmMmYwMDcxLi41ZTAwZDkxMzRhOSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L3hmdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3hmdW5jLnNnbWwKQEAgLTM3NDgsNiArMzc0 OCw2MCBAQCBteV9zaG1lbV9pbml0KHZvaWQgKmFyZykKICAgICAgPC9wYXJhPgogICAgIDwvc2Vj dDM+CiAKKyAgICA8c2VjdDMgaWQ9InhmdW5jLXNoYXJlZC1hZGRpbi1yZXNpemFibGUiPgorICAg ICA8dGl0bGU+UmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlczwvdGl0bGU+CisKKyAg ICAgPHBhcmE+CisgICAgIEEgcmVzaXphYmxlIG1lbW9yeSBzdHJ1Y3R1cmUgY2FuIGJlIHJlcXVl c3RlZCB1c2luZworICAgICA8ZnVuY3Rpb24+U2htZW1SZXF1ZXN0U3RydWN0PC9mdW5jdGlvbj4g YnkgcGFzc2luZworICAgICA8cGFyYW1ldGVyPi5tYXhpbXVtX3NpemU8L3BhcmFtZXRlcj4gYWxv bmcgd2l0aAorICAgICA8cGFyYW1ldGVyPi5zaXplPC9wYXJhbWV0ZXI+LiA8cGFyYW1ldGVyPi5t YXhpbXVtX3NpemU8L3BhcmFtZXRlcj4gaXMKKyAgICAgbWF4aW11bSBzaXplIHVwdG8gd2hpY2gg dGhlIHN0cnVjdHVyZSBjYW4gZ3JvdyB3aGVyZSBhcworICAgICA8cGFyYW1ldGVyPi5zaXplPC9w YXJhbWV0ZXI+IGlzIHRoZSBpbml0aWFsIHNpemUgb2YgdGhlIHN0cnVjdHVyZS4gIFdoaWxlCisg ICAgIGNvbnRpZ3VvdXMgYWRkcmVzcyBzcGFjZSB3b3J0aCA8cGFyYW1ldGVyPm1heGltdW1fc2l6 ZTwvcGFyYW1ldGVyPiBpcworICAgICBhbGxvY2F0ZWQgdG8gdGhlIHN0cnVjdHVyZSwgb25seSBt ZW1vcnkgd29ydGggPHBhcmFtZXRlcj5zaXplPC9wYXJhbWV0ZXI+CisgICAgIGJ5dGVzIGlzIGFs bG9jYXRlZCBpbml0aWFsbHkuIFRoZSA8ZnVuY3Rpb24+aW5pdF9mbjwvZnVuY3Rpb24+IHNob3Vs ZCBvbmx5CisgICAgIGluaXRpYWxpemUgdGhlIDxwYXJhbWV0ZXI+c2l6ZTwvcGFyYW1ldGVyPiBh bW91bnQgb2YgbWVtb3J5LiBUaGUgYWN0dWFsCisgICAgIG1lbW9yeSBhbGxvY2F0ZWQgdG8gdGhp cyBzdHJ1Y3R1cmUgYXQgYW55IHBvaW50IGluIHRpbWUgaXMgZ2l2ZW4gYnkgPGxpbmsKKyAgICAg bGlua2VuZD0idmlldy1wZy1zaG1lbS1hbGxvY2F0aW9ucyI+PHN0cnVjdG5hbWU+cGdfc2htZW1f YWxsb2NhdGlvbnM8L3N0cnVjdG5hbWU+LjxzdHJ1Y3RmaWVsZD5hbGxvY2F0ZWRfc2l6ZTwvc3Ry dWN0ZmllbGQ+PC9saW5rPgorICAgICBhbmQgdGhlIGFkZHJlc3Mgc3BhY2UgcmVzZXJ2ZWQgZm9y IHRoaXMgc3RydWN0dXJlIGlzIGdpdmVuIGJ5IDxsaW5rCisgICAgIGxpbmtlbmQ9InZpZXctcGct c2htZW0tYWxsb2NhdGlvbnMiPjxzdHJ1Y3RuYW1lPnBnX3NobWVtX2FsbG9jYXRpb25zPC9zdHJ1 Y3RuYW1lPi48c3RydWN0ZmllbGQ+YWxsb2NhdGVkX3NwYWNlPC9zdHJ1Y3RmaWVsZD48L2xpbms+ LgorICAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICBUaGUgc3RydWN0dXJlIGNhbiBiZSBy ZXNpemVkIHVzaW5nIDxmdW5jdGlvbj5TaG1lbVJlc2l6ZVN0cnVjdDwvZnVuY3Rpb24+IGJ5Cisg ICAgcGFzc2luZyBpdCB0aGUgc3RydWN0dXJlJ3MgPHN0cnVjdG5hbWU+U2htZW1TdHJ1Y3REZXNj PC9zdHJ1Y3RuYW1lPiBhbmQgdGhlCisgICAgbmV3IHNpemUgd2hpY2ggY2FuIGJlIGFueXdoZXJl IGJldHdlZW4gMCB0bworICAgIDxwYXJhbWV0ZXI+bWF4aW11bV9zaXplPC9wYXJhbWV0ZXI+LiBJ ZiB0aGUgbmV3IHNpemUgaXMgc21hbGxlciB0aGFuIHRoZQorICAgIGN1cnJlbnQgc2l6ZSBvZiB0 aGUgc3RydWN0dXJlLCB0aGUgbWVtb3J5IGJldHdlZW4gdGhlIG5ldyBzaXplIGFuZCBjdXJyZW50 CisgICAgc2l6ZSBpcyBmcmVlZCB3aGlsZSBrZWVwaW5nIHRoZSBjb250ZW50cyBvZiB0aGUgbWVt b3J5IHVwdG8gbmV3IHNpemUgaW50YWN0LgorICAgIElmIHRoZSBuZXcgc2l6ZSBpcyBncmVhdGVy IHRoYW4gdGhlIGN1cnJlbnQgc2l6ZSwgbWVtb3J5IGlzIGFsbG9jYXRlZCB1cHRvCisgICAgbmV3 IHNpemUgd2hpbGUga2VlcGluZyB0aGUgY3VycmVudCBjb250ZW50cyBvZiB0aGUgc3RydWN0dXJl IGludGFjdC4gVGhlCisgICAgc3RhcnRpbmcgYWRkcmVzcyBvZiB0aGUgc3RydWN0dXJlIGRvZXMg bm90IGNoYW5nZSBiZWNhdXNlIG9mIHJlc2l6aW5nCisgICAgb3BlcmF0aW9uLiBUaGUgY2FsbGVy IG1heSBuZWVkIHRvIHRha2UgY2FyZSBvZiB0aGUgYWRkaXRpb25hbAorICAgIHN5bmNocm9uaXph dGlvbiBiZXR3ZWVuIHRoZSByZXNpemluZyBwcm9jZXNzIGFuZCB0aGUgcHJvY2Vzc2VzIHVzaW5n IHRoZQorICAgIHNoYXJlZCBzdHJ1Y3R1cmUuIEFsc28gYWNjZXNzaW5nIHRoZSBtZW1vcnkgYmV5 b25kIHRoZSBjdXJyZW50IHNpemUgb2YgdGhlCisgICAgc3RydWN0dXJlIHdpbGwgbm90IGNhdXNl IGFueSBzZWdtZW50YXRpb24gZmF1bHQgb3IgYSBidXMgZXJyb3IuIE1lbW9yeSB3aWxsCisgICAg YmUgYWxsb2NhdGVkIGR1cmluZyBzdWNoIGEgd3JpdGUgYWNjZXNzLiAwcyB3aWxsIGJlIHJldHVy bmVkIG9uIHN1Y2ggYSByZWFkCisgICAgYWNjZXNzIGlmIG1lbW9yeSBpcyBub3QgYWxsb2NhdGVk IHlldC4gVGhlIGFkZGl0aW9uYWwgc3luY2hyb25pemF0aW9uIG1heQorICAgIHVzZSBtcHJvdGVj dCgpIHdpdGggUFJPVF9OT05FIGluIGV2ZXJ5IGJhY2tlbmQgdGhhdCBtYXkgYWNjZXNzIHRoaXMg bWVtb3J5CisgICAgdG8gZW5zdXJlIHRoYXQgc3VjaCBhbiBhY2Nlc3MgcmVzdWx0cyBpbiBhIGZh dWx0LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgIFRoaXMgZnVuY3Rpb25hbGl0eSBp cyBhdmFpbGFibGUgb25seSBvbiB0aGUgcGxhdGZvcm1zIHdoaWNoIHByb3ZpZGUgdGhlIEFQSXMK KyAgICBuZWNlc3NhcnkgdG8gcmVzZXJ2ZSBjb250aWd1b3VzIGFkZHJlc3Mgc3BhY2UgYW5kIHRv IGFsbG9jYXRlIG9yIGZyZWUgbWVtb3J5CisgICAgaW4gdGhhdCBhZGRyZXNzIHNwYWNlIG9uIGRl bWFuZC4gTWFjcm8gPHN5bWJvbD5IQVZFX1JFU0laQUJMRV9TSE1FTTwvc3ltYm9sPgorICAgIGlz IGRlZmluZWQgb24gc3VjaCBwbGF0Zm9ybXMuIEl0IGNhbiBiZSB1c2VkIHRvIGd1YXJkIGNvZGUg cmVsYXRlZCB0bworICAgIHJlc2l6aW5nIGEgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUuIFRoZSBm dW5jdGlvbmFsaXR5IGlzIGF2YWlsYWJsZSBvbiB3aXRoCisgICAgbW1hcCdlZCBtZW1vcnksIHNv IHN1YnN5c3RlbXMgd2hpY2ggdXNlIHJlc2l6YWJsZSBzdHJ1Y3R1cmVzIG1heSBoYXZlIHRvCisg ICAgYWRkdGlvbmFsbHkgZGlzYWJsZSByZXNpemFibGUgbWVtb3J5IHVzYWdlIHdoZW4gPHN5bWJv bD5zaGFyZWRfbWVtb3J5X3R5cGU8L3N5bWJvbD4gaXMgbm90CisgICAgPHN5bWJvbD5TSE1FTV9U WVBFX01NQVA8L3N5bWJvbD4uIEEgR1VDIDx4cmVmIGxpbmtlbmQ9Imd1Yy1oYXZlLXJlc2l6YWJs ZS1zaG1lbSIvPiBpcyBzZXQgdG8KKyAgICA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4gd2hlbiB0aGlz IGZ1bmN0aW9uYWxpdHkgaXMgYXZhaWxhYmxlIGluIGEgcnVubmluZworICAgIHNlcnZlciwgPGxp dGVyYWw+b2ZmPC9saXRlcmFsPiBvdGhlcndpc2UuCisgICAgPC9wYXJhPgorICAgIDwvc2VjdDM+ CisKICAgICA8c2VjdDMgaWQ9InhmdW5jLXNoYXJlZC1hZGRpbi1keW5hbWljIj4KICAgICAgPHRp dGxlPkFsbG9jYXRpbmcgRHluYW1pYyBTaGFyZWQgTWVtb3J5IEFmdGVyIFN0YXJ0dXA8L3RpdGxl PgogCmRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCmluZGV4IDQzZDVmZmMz MGIxLi43OTA4NDU3NjJlMSAxMDA2NDQKLS0tIGEvbWVzb24uYnVpbGQKKysrIGIvbWVzb24uYnVp bGQKQEAgLTI5MDQsNiArMjkwNCwyMiBAQCBkZWNsX2NoZWNrcyA9IFsKICAgWyd0aW1pbmdzYWZl X2JjbXAnLCAgJ3N0cmluZy5oJ10sCiBdCiAKKyMgTGludXgtc3BlY2lmaWMgbWFkdmlzZSBjb25z dGFudHMgbmVlZGVkIGZvciByZXNpemFibGUgc2hhcmVkIG1lbW9yeS4KKyMgVXN1YWxseSB3ZSB1 c2UgQUNfQ0hFQ0tfREVDTFMgdG8gY2hlY2sgZm9yIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucywgYnV0 IGluIHRoaXMKKyMgY2FzZSB3ZSBhcmUgdXNpbmcgaXQgdG8gZGV0ZWN0IGV4aXN0ZW5jZSBvZiBj b25zdGFudHMuIFRoZXNlIGNvbnN0YW50cyBhcmUKKyMgdXNlZCB0byBkZWZpbmUgSEFWRV9SRVNJ WkFCTEVfU0hNRU0gd2hpY2ggaXMgdXNlZCBpbiBzdG9yYWdlL3BnX3NobWVtLmggYXMKKyMgd2Vs bCBhcyBzdG9yYWdlL3NobWVtLmguIFRoZSBmaXJzdCBhYnN0cmFjdHMgdGhlIEFQSXMgdG8gYWxs b2NhdGUgc2hhcmVkCisjIG1lbW9yeSBzZWdtZW50cyBmcm9tIHRoZSBvcGVyYXRpbmcgc3lzdGVt IHdoZXJlYXMgdGhlIHNlY29uZCBhYnN0cmFjdHMgQVBJcyB0bworIyBhbGxvY2F0ZSBzaGFyZWQg bWVtb3J5IHRvIHZhcmlvdXMgc3Vic3lzdGVtcy4gU2luY2UgdGhleSBhcmUgcmVsYXRlZCBidXQK KyMgb3J0aG9nb25hbCB0byBlYWNoIG90aGVyLCBpbmNsdWRpbmcgYW55IG9uZSBvZiB0aGVtIGlu IHRoZSBvdGhlciBmaWxlIGRvZXNuJ3QKKyMgbWFrZSBzZW5zZS4gcGdfY29uZmlnX21hbnVhbC5o IGlzIHRoZSBvbmx5IHBsYWNlIHdoZXJlIEhBVkVfUkVTSVpBQkxFX1NITUVNCisjIGNhbiBiZSBk ZWZpbmVkIGFuZCBtYWRlIGF2YWlsYWJsZSB0byBib3RoIHdpdGhvdXQgaW5jbHVkaW5nIHN5cy9t bWFuLmguIEJ1dAorIyBmb3IgdGhhdCB3ZSBuZWVkIGNvbnN0YW50cyB0aGF0IGluZGljYXRlIHRo ZSBleGlzdGVuY2Ugb2YgZm9sbG93aW5nIGRlZmluZXMuCitkZWNsX2NoZWNrcyArPSBbCisgIFsn TUFEVl9QT1BVTEFURV9XUklURScsICdzeXMvbW1hbi5oJ10sCisgIFsnTUFEVl9SRU1PVkUnLCAn c3lzL21tYW4uaCddLAorXQorCiAjIE5lZWQgdG8gY2hlY2sgZm9yIGZ1bmN0aW9uIGRlY2xhcmF0 aW9ucyBmb3IgdGhlc2UgZnVuY3Rpb25zLCBiZWNhdXNlCiAjIGNoZWNraW5nIGZvciBsaWJyYXJ5 IHN5bWJvbHMgd291bGRuJ3QgaGFuZGxlIGRlcGxveW1lbnQgdGFyZ2V0CiAjIHJlc3RyaWN0aW9u cyBvbiBtYWNPUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9ydC9zeXN2X3NobWVtLmMgYi9z cmMvYmFja2VuZC9wb3J0L3N5c3Zfc2htZW0uYwppbmRleCAyZTM4ODZjZjlmZS4uOGQ4NTlkZmJi ZmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BvcnQvc3lzdl9zaG1lbS5jCisrKyBiL3NyYy9i YWNrZW5kL3BvcnQvc3lzdl9zaG1lbS5jCkBAIC01ODksNiArNTg5LDI3IEBAIGNoZWNrX2h1Z2Vf cGFnZV9zaXplKGludCAqbmV3dmFsLCB2b2lkICoqZXh0cmEsIEd1Y1NvdXJjZSBzb3VyY2UpCiAJ cmV0dXJuIHRydWU7CiB9CiAKKy8qCisgKiBHZXQgdGhlIHBhZ2Ugc2l6ZSBiZWluZyB1c2VkIGJ5 IHRoZSBzaGFyZWQgbWVtb3J5LgorICoKKyAqIFRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVk IG9ubHkgYWZ0ZXIgdGhlIHNoYXJlZCBtZW1vcnkgaGFzIGJlZW4gc2V0dXAuCisgKi8KK1NpemUK K0dldE9TUGFnZVNpemUodm9pZCkKK3sKKwlTaXplCQlvc19wYWdlX3NpemU7CisKKwlBc3NlcnQo aHVnZV9wYWdlc19zdGF0dXMgIT0gSFVHRV9QQUdFU19VTktOT1dOKTsKKworCW9zX3BhZ2Vfc2l6 ZSA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKKworCS8qIElmIGh1Z2UgcGFnZXMgYXJlIGFjdHVh bGx5IGluIHVzZSwgdXNlIGh1Z2UgcGFnZSBzaXplICovCisJaWYgKGh1Z2VfcGFnZXNfc3RhdHVz ID09IEhVR0VfUEFHRVNfT04pCisJCUdldEh1Z2VQYWdlU2l6ZSgmb3NfcGFnZV9zaXplLCBOVUxM KTsKKworCXJldHVybiBvc19wYWdlX3NpemU7Cit9CisKIC8qCiAgKiBDcmVhdGVzIGFuIGFub255 bW91cyBtbWFwKCllZCBzaGFyZWQgbWVtb3J5IHNlZ21lbnQuCiAgKgpAQCAtOTkxLDMgKzEwMTIs NTEgQEAgUEdTaGFyZWRNZW1vcnlEZXRhY2godm9pZCkKIAkJQW5vbnltb3VzU2htZW0gPSBOVUxM OwogCX0KIH0KKworI2lmZGVmIEhBVkVfUkVTSVpBQkxFX1NITUVNCisvKgorICogTWFrZSBzdXJl IHRoYXQgdGhlIG1lbW9yeSBvZiBnaXZlbiBzaXplIGZyb20gdGhlIGdpdmVuIGFkZHJlc3MgaXMg cmVsZWFzZWQuCisgKgorICogVGhlIGFkZHJlc3MgYW5kIHNpemUgYXJlIGV4cGVjdGVkIHRvIGJl IHBhZ2UgYWxpZ25lZC4KKyAqCisgKiBPbmx5IHN1cHBvcnRlZCBvbiBwbGF0Zm9ybXMgdGhhdCBz dXBwb3J0IGFub255bW91cyBzaGFyZWQgbWVtb3J5LgorICovCit2b2lkCitQR1NoYXJlZE1lbW9y eUVuc3VyZUZyZWVkKHZvaWQgKmFkZHIsIFNpemUgc2l6ZSkKK3sKKwlpZiAoIUFub255bW91c1No bWVtKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJvbmx5IGFub255bW91cyBzaGFyZWQgbWVtb3J5IGNh biBiZSBmcmVlZCIpKSk7CisKKwlBc3NlcnQoYWRkciA9PSAodm9pZCAqKSBUWVBFQUxJR04oR2V0 T1NQYWdlU2l6ZSgpLCBhZGRyKSk7CisJQXNzZXJ0KHNpemUgPT0gVFlQRUFMSUdOKEdldE9TUGFn ZVNpemUoKSwgc2l6ZSkpOworCisJaWYgKG1hZHZpc2UoYWRkciwgc2l6ZSwgTUFEVl9SRU1PVkUp ID09IC0xKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJtc2coImNvdWxkIG5vdCBmcmVlIHNo YXJlZCBtZW1vcnk6ICVtIikpKTsKK30KKworLyoKKyAqIE1ha2Ugc3VyZSB0aGF0IHRoZSBtZW1v cnkgb2YgZ2l2ZW4gc2l6ZSBmcm9tIHRoZSBnaXZlbiBhZGRyZXNzIGlzIGFsbG9jYXRlZC4KKyAq CisgKiBUaGUgYWRkcmVzcyBhbmQgc2l6ZSBhcmUgZXhwZWN0ZWQgdG8gYmUgcGFnZSBhbGlnbmVk LgorICoKKyAqIE9ubHkgc3VwcG9ydGVkIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgYW5vbnlt b3VzIHNoYXJlZCBtZW1vcnkuCisgKi8KK3ZvaWQKK1BHU2hhcmVkTWVtb3J5RW5zdXJlQWxsb2Nh dGVkKHZvaWQgKmFkZHIsIFNpemUgc2l6ZSkKK3sKKwlpZiAoIUFub255bW91c1NobWVtKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKKwkJCQkgZXJybXNnKCJvbmx5IGFub255bW91cyBzaGFyZWQgbWVtb3J5IGNhbiBiZSBhbGxv Y2F0ZWQgYXQgcnVudGltZSIpKSk7CisKKwlBc3NlcnQoYWRkciA9PSAodm9pZCAqKSBUWVBFQUxJ R04oR2V0T1NQYWdlU2l6ZSgpLCBhZGRyKSk7CisJQXNzZXJ0KHNpemUgPT0gVFlQRUFMSUdOKEdl dE9TUGFnZVNpemUoKSwgc2l6ZSkpOworCisJaWYgKG1hZHZpc2UoYWRkciwgc2l6ZSwgTUFEVl9Q T1BVTEFURV9XUklURSkgPT0gLTEpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycm1zZygiY291 bGQgbm90IGFsbG9jYXRlIHNoYXJlZCBtZW1vcnk6ICVtIikpKTsKK30KKyNlbmRpZgkJCQkJCQkv KiBIQVZFX1JFU0laQUJMRV9TSE1FTSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9ydC93 aW4zMl9zaG1lbS5jIGIvc3JjL2JhY2tlbmQvcG9ydC93aW4zMl9zaG1lbS5jCmluZGV4IDc5NGU0 ZmNiMmFkLi5kYzJlZTAxODg0NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9ydC93aW4zMl9z aG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3BvcnQvd2luMzJfc2htZW0uYwpAQCAtNjQ4LDMgKzY0 OCwyNiBAQCBjaGVja19odWdlX3BhZ2Vfc2l6ZShpbnQgKm5ld3ZhbCwgdm9pZCAqKmV4dHJhLCBH dWNTb3VyY2Ugc291cmNlKQogCX0KIAlyZXR1cm4gdHJ1ZTsKIH0KKworLyoKKyAqIEdldCB0aGUg cGFnZSBzaXplIHVzZWQgYnkgdGhlIHNoYXJlZCBtZW1vcnkuCisgKgorICogVGhlIGZ1bmN0aW9u IHNob3VsZCBiZSBjYWxsZWQgb25seSBhZnRlciB0aGUgc2hhcmVkIG1lbW9yeSBoYXMgYmVlbiBz ZXR1cC4KKyAqLworU2l6ZQorR2V0T1NQYWdlU2l6ZSh2b2lkKQoreworCVNZU1RFTV9JTkZPIHN5 c2luZm87CisJU2l6ZQkJb3NfcGFnZV9zaXplOworCisJQXNzZXJ0KGh1Z2VfcGFnZXNfc3RhdHVz ICE9IEhVR0VfUEFHRVNfVU5LTk9XTik7CisKKwlHZXRTeXN0ZW1JbmZvKCZzeXNpbmZvKTsKKwlv c19wYWdlX3NpemUgPSBzeXNpbmZvLmR3UGFnZVNpemU7CisKKwkvKiBJZiBodWdlIHBhZ2VzIGFy ZSBhY3R1YWxseSBpbiB1c2UsIHVzZSBodWdlIHBhZ2Ugc2l6ZSAqLworCWlmIChodWdlX3BhZ2Vz X3N0YXR1cyA9PSBIVUdFX1BBR0VTX09OKQorCQlHZXRIdWdlUGFnZVNpemUoJm9zX3BhZ2Vfc2l6 ZSwgTlVMTCk7CisKKwlyZXR1cm4gb3NfcGFnZV9zaXplOworfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVt LmMKaW5kZXggOTczODExZTU0NWUuLjQ3ZGNkNTY2ZmQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVt LmMKQEAgLTE5LDExICsxOSwxMSBAQAogICogbWV0aG9kcykuICBUaGUgcm91dGluZXMgaW4gdGhp cyBmaWxlIGFyZSB1c2VkIGZvciBhbGxvY2F0aW5nIGFuZAogICogYmluZGluZyB0byBzaGFyZWQg bWVtb3J5IGRhdGEgc3RydWN0dXJlcy4KICAqCi0gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBmYWNp bGl0aWVzIHRvIGFsbG9jYXRlIGZpeGVkLXNpemUgc3RydWN0dXJlcyBpbiBzaGFyZWQKLSAqIG1l bW9yeSwgZm9yIHRoaW5ncyBsaWtlIHZhcmlhYmxlcyBzaGFyZWQgYmV0d2VlbiBhbGwgYmFja2Vu ZCBwcm9jZXNzZXMuCi0gKiBFYWNoIHN1Y2ggc3RydWN0dXJlIGhhcyBhIHN0cmluZyBuYW1lIHRv IGlkZW50aWZ5IGl0LCBzcGVjaWZpZWQgd2hlbiBpdCBpcwotICogcmVxdWVzdGVkLiAgc2htZW1f aGFzaC5jIHByb3ZpZGVzIGEgc2hhcmVkIGhhc2ggdGFibGUgaW1wbGVtZW50YXRpb24gb24gdG9w Ci0gKiBvZiB0aGF0LgorICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgZmFjaWxpdGllcyB0byBhbGxv Y2F0ZSBmaXhlZC1zaXplIGFzIHdlbGwgYXMgcmVzaXphYmxlCisgKiBzdHJ1Y3R1cmVzIGluIHNo YXJlZCBtZW1vcnksIGZvciB0aGluZ3MgbGlrZSB2YXJpYWJsZXMgc2hhcmVkIGJldHdlZW4gYWxs CisgKiBiYWNrZW5kIHByb2Nlc3Nlcy4gRWFjaCBzdWNoIHN0cnVjdHVyZSBoYXMgYSBzdHJpbmcg bmFtZSB0byBpZGVudGlmeSBpdCwKKyAqIHNwZWNpZmllZCB3aGVuIGl0IGlzIHJlcXVlc3RlZC4g IHNobWVtX2hhc2guYyBwcm92aWRlcyBhIHNoYXJlZCBoYXNoIHRhYmxlCisgKiBpbXBsZW1lbnRh dGlvbiBvbiB0b3Agb2YgZml4ZWQtc2l6ZSBzdHJ1Y3R1cmVzLgogICoKICAqIFNoYXJlZCBtZW1v cnkgYXJlYXMgc2hvdWxkIHVzdWFsbHkgbm90IGJlIGFsbG9jYXRlZCBhZnRlciBwb3N0bWFzdGVy CiAgKiBzdGFydHVwLCBhbHRob3VnaCB3ZSBkbyBhbGxvdyBzbWFsbCBhbGxvY2F0aW9ucyBsYXRl ciBmb3IgdGhlIGJlbmVmaXQgb2YKQEAgLTEwNiw2ICsxMDYsMjEgQEAKICAqICgqU2htZW1TdHJ1 Y3REZXNjLT5wdHIpLCBhbmQgY2FsbHMgdGhlIGF0dGFjaF9mbiBjYWxsYmFjaywgaWYgYW55LCBm b3IKICAqIGFkZGl0aW9uYWwgcGVyLWJhY2tlbmQgc2V0dXAuCiAgKgorICogUmVzaXphYmxlIHNo YXJlZCBtZW1vcnkgc3RydWN0dXJlcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICoKKyAqIEluIG9yZGVyIHRvIGFsbG9jYXRlIHJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5 IHN0cnVjdHVyZXMsIHNldAorICogU2htZW1SZXF1ZXN0U3RydWN0T3B0czo6bWF4aW11bV9zaXpl IHRvIHRoZSBtYXhpbXVtIHNpemUgdGhhdCB0aGUgc3RydWN0dXJlCisgKiBjYW4gZ3JvdyB0by4g IFRoZSBhZGRyZXNzIHNwYWNlIGZvciB0aGUgbWF4aW11bSBzaXplIHdpbGwgYmUgcmVzZXJ2ZWQg YXQKKyAqIHN0YXJ0dXAsIGJ1dCBtZW1vcnkgaXMgYWxsb2NhdGVkIG9yIGZyZWVkIGFzIHRoZSBz dHJ1Y3R1cmUgZ3Jvd3Mgb3Igc2hyaW5rcworICogcmVzcGVjdGl2ZWx5LiBTaG1lbVJlcXVlc3RT dHJ1Y3RPcHRzOjpzaXplIHNob3VsZCBiZSBzZXQgdG8gdGhlIGluaXRpYWwgc2l6ZQorICogb2Yg dGhlIHN0cnVjdHVyZSwgd2hpY2ggaXMgdGhlIGFtb3VudCBvZiBtZW1vcnkgYWxsb2NhdGVkIGF0 IHRoZSBzdGFydHVwLgorICogQWZ0ZXIgc3RhcnR1cCwgdGhlIHN0cnVjdHVyZSBjYW4gYmUgcmVz aXplZCBieSBjYWxsaW5nIFNobWVtUmVzaXplU3RydWN0KCkgYnkKKyAqIHBhc3NpbmcgaXQgdGhl IFNobWVtU3RydWN0RGVzYyBmb3IgdGhlIHN0cnVjdHVyZSBhbmQgdGhlIG5ldyBzaXplLgorICoK KyAqIFdoaWxlIHJlc2l6YWJsZSBzdHJ1Y3R1cmVzIGNhbiBiZSBjcmVhdGVkIGFmdGVyIHRoZSBz dGFydHVwLCB0aGUgbWVtb3J5CisgKiBhdmFpbGFibGUgZm9yIHRoZW0gaXMgcXVpdGUgbGltaXRl ZC4KKyAqCiAgKiBMZWdhY3kgU2htZW1Jbml0U3RydWN0KCkvU2htZW1Jbml0SGFzaCgpIGZ1bmN0 aW9ucwogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAqCkBAIC0xNzAsNiArMTg1LDE4IEBAIHR5cGVkZWYgc3RydWN0CiAJU2htZW1SZXF1ZXN0 S2luZCBraW5kOwogfSBTaG1lbVJlcXVlc3Q7CiAKKy8qCisgKiBBIGNvbnZlbmllbnQgbWFjcm8g dG8gZ2V0IHRoZSBzcGFjZSByZXF1aXJlZCBmb3IgYSBzaG1lbSByZXF1ZXN0IGNvbnNpc3RlbnRs eS4KKyAqIEEgcmVzaXphYmxlIHN0cnVjdHVyZSwgcmVxdWVzdGVkIGJ5IG5vbi16ZXJvIG1heGlt dW1fc2l6ZSwgcmVxdWlyZXMgc3BhY2UgZm9yCisgKiBpdHMgbWF4aW11bSBzaXplLgorICovCisj aWZkZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0KKyNkZWZpbmUgU0hNRU1fUkVRVUVTVF9TUEFDRV9T SVpFKHJlcXVlc3QpIFwKKwkoKHJlcXVlc3QpLT5vcHRpb25zLT5tYXhpbXVtX3NpemUgPiAwID8g KHJlcXVlc3QpLT5vcHRpb25zLT5tYXhpbXVtX3NpemUgOiAocmVxdWVzdCktPm9wdGlvbnMtPnNp emUpCisjZWxzZQorI2RlZmluZSBTSE1FTV9SRVFVRVNUX1NQQUNFX1NJWkUocmVxdWVzdCkgKChy ZXF1ZXN0KS0+b3B0aW9ucy0+c2l6ZSkKKyNlbmRpZgorCiBzdGF0aWMgTGlzdCAqcGVuZGluZ19z aG1lbV9yZXF1ZXN0czsKIAogLyoKQEAgLTI3Miw2ICsyOTksMTAgQEAgdHlwZWRlZiBzdHJ1Y3QK IAl2b2lkCSAgICpsb2NhdGlvbjsJCS8qIGxvY2F0aW9uIGluIHNoYXJlZCBtZW0gKi8KIAlTaXpl CQlzaXplOwkJCS8qICMgYnl0ZXMgcmVxdWVzdGVkIGZvciB0aGUgc3RydWN0dXJlICovCiAJU2l6 ZQkJYWxsb2NhdGVkX3NpemU7IC8qICMgYnl0ZXMgYWN0dWFsbHkgYWxsb2NhdGVkICovCisjaWZk ZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0KKwlTaXplCQltYXhpbXVtX3NpemU7CS8qIHRoZSBtYXhp bXVtIHNpemUgdGhlIHN0cnVjdHVyZSBjYW4gZ3JvdyB0byAqLworCVNpemUJCWFsbG9jYXRlZF9z cGFjZTsJLyogdGhlIHRvdGFsIGFkZHJlc3Mgc3BhY2UgYWxsb2NhdGVkICovCisjZW5kaWYKIH0g U2htZW1JbmRleEVudDsKIAogLyogVG8gZ2V0IHJlbGlhYmxlIHJlc3VsdHMgZm9yIE5VTUEgaW5x dWlyeSB3ZSBuZWVkIHRvICJ0b3VjaCBwYWdlcyIgb25jZSAqLwpAQCAtMjgwLDYgKzMxMSw5IEBA IHN0YXRpYyBib29sIGZpcnN0TnVtYVRvdWNoID0gdHJ1ZTsKIHN0YXRpYyB2b2lkIENhbGxTaG1l bUNhbGxiYWNrc0FmdGVyU3RhcnR1cChjb25zdCBTaG1lbUNhbGxiYWNrcyAqY2FsbGJhY2tzKTsK IHN0YXRpYyB2b2lkIEluaXRTaG1lbUluZGV4RW50cnkoU2htZW1SZXF1ZXN0ICpyZXF1ZXN0KTsK IHN0YXRpYyBib29sIEF0dGFjaFNobWVtSW5kZXhFbnRyeShTaG1lbVJlcXVlc3QgKnJlcXVlc3Qs IGJvb2wgbWlzc2luZ19vayk7CisjaWZkZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0KK3N0YXRpYyBT aXplIEVzdGltYXRlQWxsb2NhdGVkU2l6ZShTaG1lbUluZGV4RW50ICplbnRyeSk7CisjZW5kaWYK IAogRGF0dW0JCXBnX251bWFfYXZhaWxhYmxlKFBHX0ZVTkNUSU9OX0FSR1MpOwogCkBAIC0zNTAs NiArMzg0LDExIEBAIFNobWVtUmVxdWVzdEludGVybmFsKFNobWVtU3RydWN0T3B0cyAqb3B0aW9u cywgU2htZW1SZXF1ZXN0S2luZCBraW5kKQogCQlpZiAob3B0aW9ucy0+c2l6ZSA8PSAwICYmIG9w dGlvbnMtPnNpemUgIT0gU0hNRU1fQVRUQUNIX1VOS05PV05fU0laRSkKIAkJCWVsb2coRVJST1Is ICJpbnZhbGlkIHNpemUgJXpkIGZvciBzaGFyZWQgbWVtb3J5IHJlcXVlc3QgZm9yIFwiJXNcIiIs CiAJCQkJIG9wdGlvbnMtPnNpemUsIG9wdGlvbnMtPm5hbWUpOworI2lmZGVmIEhBVkVfUkVTSVpB QkxFX1NITUVNCisJCWlmIChvcHRpb25zLT5tYXhpbXVtX3NpemUgPCAwICYmIG9wdGlvbnMtPm1h eGltdW1fc2l6ZSAhPSBTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFKQorCQkJZWxvZyhFUlJPUiwg ImludmFsaWQgbWF4aW11bV9zaXplICV6ZCBmb3Igc2hhcmVkIG1lbW9yeSByZXF1ZXN0IGZvciBc IiVzXCIiLAorCQkJCSBvcHRpb25zLT5tYXhpbXVtX3NpemUsIG9wdGlvbnMtPm5hbWUpOworI2Vu ZGlmCiAJfQogCWVsc2UKIAl7CkBAIC0zNTgsOCArMzk3LDI0IEBAIFNobWVtUmVxdWVzdEludGVy bmFsKFNobWVtU3RydWN0T3B0cyAqb3B0aW9ucywgU2htZW1SZXF1ZXN0S2luZCBraW5kKQogCQlp ZiAob3B0aW9ucy0+c2l6ZSA8PSAwKQogCQkJZWxvZyhFUlJPUiwgImludmFsaWQgc2l6ZSAlemQg Zm9yIHNoYXJlZCBtZW1vcnkgcmVxdWVzdCBmb3IgXCIlc1wiIiwKIAkJCQkgb3B0aW9ucy0+c2l6 ZSwgb3B0aW9ucy0+bmFtZSk7CisjaWZkZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0KKwkJaWYgKG9w dGlvbnMtPm1heGltdW1fc2l6ZSA9PSBTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFKQorCQkJZWxv ZyhFUlJPUiwgIlNITUVNX0FUVEFDSF9VTktOT1dOX1NJWkUgY2Fubm90IGJlIHVzZWQgZHVyaW5n IHN0YXJ0dXAiKTsKKwkJaWYgKG9wdGlvbnMtPm1heGltdW1fc2l6ZSA8IDApCisJCQllbG9nKEVS Uk9SLCAiaW52YWxpZCBtYXhpbXVtX3NpemUgJXpkIGZvciBzaGFyZWQgbWVtb3J5IHJlcXVlc3Qg Zm9yIFwiJXNcIiIsCisJCQkJIG9wdGlvbnMtPm1heGltdW1fc2l6ZSwgb3B0aW9ucy0+bmFtZSk7 CisjZW5kaWYKIAl9CiAKKyNpZmRlZiBIQVZFX1JFU0laQUJMRV9TSE1FTQorCWlmIChvcHRpb25z LT5tYXhpbXVtX3NpemUgPiAwICYmIG9wdGlvbnMtPnNpemUgPj0gb3B0aW9ucy0+bWF4aW11bV9z aXplKQorCQllbG9nKEVSUk9SLCAicmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlIFwi JXNcIiBzaG91bGQgaGF2ZSBtYXhpbXVtIHNpemUgKCV6ZCkgZ3JlYXRlciB0aGFuIHNpemUgKCV6 ZCkiLAorCQkJIG9wdGlvbnMtPm5hbWUsIG9wdGlvbnMtPm1heGltdW1fc2l6ZSwgb3B0aW9ucy0+ c2l6ZSk7CisKKwlpZiAob3B0aW9ucy0+bWF4aW11bV9zaXplID4gMCAmJiBzaGFyZWRfbWVtb3J5 X3R5cGUgIT0gU0hNRU1fVFlQRV9NTUFQKQorCQllbG9nKEVSUk9SLCAicmVzaXphYmxlIHNoYXJl ZCBtZW1vcnkgcmVxdWlyZXMgc2hhcmVkX21lbW9yeV90eXBlID0gbW1hcCIpOworI2VuZGlmCisK IAlpZiAoc2htZW1fcmVxdWVzdF9zdGF0ZSAhPSBTUlNfUkVRVUVTVElORykKIAkJZWxvZyhFUlJP UiwgIlNobWVtUmVxdWVzdFN0cnVjdCBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSBhIHNobWVtX3Jl cXVlc3QgY2FsbGJhY2siKTsKIApAQCAtMzc5LDggKzQzNCwxMyBAQCBTaG1lbVJlcXVlc3RJbnRl cm5hbChTaG1lbVN0cnVjdE9wdHMgKm9wdGlvbnMsIFNobWVtUmVxdWVzdEtpbmQga2luZCkKIH0K IAogLyoKLSAqCVNobWVtR2V0UmVxdWVzdGVkU2l6ZSgpIC0tLSBlc3RpbWF0ZSB0aGUgdG90YWwg c2l6ZSBvZiBhbGwgcmVnaXN0ZXJlZCBzaGFyZWQKLSAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWVtb3J5IHN0cnVjdHVyZXMuCisgKiBTaG1lbUdldFJlcXVlc3RlZFNpemUoKSAtLS0g ZXN0aW1hdGUgdGhlIHRvdGFsIHNpemUgb2YgYWxsIHJlZ2lzdGVyZWQgc2hhcmVkCisgKiBtZW1v cnkgc3RydWN0dXJlcy4KKyAqCisgKiBXaGVuIG1heGltdW1fc2l6ZSBpcyBzcGVjaWZpZWQgd2hl biByZXF1ZXN0aW5nIHJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5CisgKiBzdHJ1Y3R1cmVzLiBXZSB1 c2UgdGhhdCwgaW5zdGVhZCBvZiB0aGUgKGluaXRpYWwpIHNpemUsIGZvciB0aGUgZXN0aW1hdGlv biwKKyAqIHRvIGVuc3VyZSB0aGF0IGVub3VnaCBzcGFjZSBpcyByZXNlcnZlZCBmb3IgZ3Jvd2lu ZyB0aGUgcmVzaXphYmxlIHN0cnVjdHVyZXMKKyAqIHRvIGl0cyBtYXhpbXVtIHNpemUuCiAgKgog ICogVGhpcyBpcyBjYWxsZWQgb25jZSBhdCBwb3N0bWFzdGVyIHN0YXJ0dXAsIGJlZm9yZSB0aGUg c2hhcmVkIG1lbW9yeSBzZWdtZW50CiAgKiBoYXMgYmVlbiBjcmVhdGVkLgpAQCAtMzk4LDcgKzQ1 OCw3IEBAIFNobWVtR2V0UmVxdWVzdGVkU2l6ZSh2b2lkKQogCS8qIG1lbW9yeSBuZWVkZWQgZm9y IGFsbCB0aGUgcmVxdWVzdGVkIGFyZWFzICovCiAJZm9yZWFjaF9wdHIoU2htZW1SZXF1ZXN0LCBy ZXF1ZXN0LCBwZW5kaW5nX3NobWVtX3JlcXVlc3RzKQogCXsKLQkJc2l6ZSA9IGFkZF9zaXplKHNp emUsIHJlcXVlc3QtPm9wdGlvbnMtPnNpemUpOworCQlzaXplID0gYWRkX3NpemUoc2l6ZSwgU0hN RU1fUkVRVUVTVF9TUEFDRV9TSVpFKHJlcXVlc3QpKTsKIAkJLyogY2FsY3VsYXRlIGFsaWdubWVu dCBwYWRkaW5nIGxpa2UgU2htZW1BbGxvY1JhdygpIGRvZXMgKi8KIAkJc2l6ZSA9IFRZUEVBTElH TihNYXgocmVxdWVzdC0+b3B0aW9ucy0+YWxpZ25tZW50LCBQR19DQUNIRV9MSU5FX1NJWkUpLAog CQkJCQkJIHNpemUpOwpAQCAtNTA2LDYgKzU2Niw3IEBAIEluaXRTaG1lbUluZGV4RW50cnkoU2ht ZW1SZXF1ZXN0ICpyZXF1ZXN0KQogCVNobWVtSW5kZXhFbnQgKmluZGV4X2VudHJ5OwogCWJvb2wJ CWZvdW5kOwogCXNpemVfdAkJYWxsb2NhdGVkX3NpemU7CisJc2l6ZV90CQlyZXF1ZXN0ZWRfc2l6 ZTsKIAl2b2lkCSAgICpzdHJ1Y3RQdHI7CiAKIAkvKiBsb29rIGl0IHVwIGluIHRoZSBzaG1lbSBp bmRleCAqLwpAQCAtNTIzLDEwICs1ODQsMTggQEAgSW5pdFNobWVtSW5kZXhFbnRyeShTaG1lbVJl cXVlc3QgKnJlcXVlc3QpCiAJfQogCiAJLyoKLQkgKiBXZSBpbnNlcnRlZCB0aGUgZW50cnkgdG8g dGhlIHNoYXJlZCBtZW1vcnkgaW5kZXguICBBbGxvY2F0ZSByZXF1ZXN0ZWQKLQkgKiBhbW91bnQg b2Ygc2hhcmVkIG1lbW9yeSBmb3IgaXQsIGFuZCBpbml0aWFsaXplIHRoZSBpbmRleCBlbnRyeS4K KwkgKiBXZSBpbnNlcnRlZCB0aGUgZW50cnkgdG8gdGhlIHNoYXJlZCBtZW1vcnkgaW5kZXguIEFs bG9jYXRlIHJlcXVlc3RlZAorCSAqIGFtb3VudCBvZiBhZGRyZXNzIHNwYWNlIGluIHRoZSBzaGFy ZWQgbWVtb3J5IHNlZ21lbnQgZm9yIGl0LCBhbmQgZG8KKwkgKiBiYXNpYyBpbml0aWFsaXppb24u IFRoZSBtZW1vcnkgZ2V0cyBhbGxvY2F0ZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uIGFzCisJICog dGhlIGNvcnJlc3BvbmRpbmcgbWVtb3J5IHBhZ2VzIGFyZSB3cml0dGVuIHRvLiAgQWxsb2NhdGUg ZW5vdWdoIHNwYWNlCisJICogZm9yIGEgcmVzaXphYmxlIHN0cnVjdHVyZSB0byBncm93IHRvIGl0 cyBtYXhpbXVtIHNpemUuIEl0IGlzIGV4cGVjdGVkCisJICogdGhhdCB0aGUgaW5pdGlhbGl6YXRp b24gY2FsbGJhY2sgd2lsbCB1c2Ugb25seSBhcyBtdWNoIG1lbW9yeSBhcyB0aGUKKwkgKiBpbml0 aWFsIHNpemUgb2YgdGhlIHJlc2l6YWJsZSBzdHJ1Y3R1cmUuIChXZWxsLCBpZiBpdCBkb2Vzbid0 LCBtb3JlCisJICogbWVtb3J5IHdpbGwgYmUgYWxsb2NhdGVkIGluaXRpYWxseSB0aGFuIGV4cGVj dGVkLCBubyBmdXJ0aGVyIGhhcm0gaXMKKwkgKiBkb25lLikKIAkgKi8KLQlzdHJ1Y3RQdHIgPSBT aG1lbUFsbG9jUmF3KHJlcXVlc3QtPm9wdGlvbnMtPnNpemUsCisJcmVxdWVzdGVkX3NpemUgPSBT SE1FTV9SRVFVRVNUX1NQQUNFX1NJWkUocmVxdWVzdCk7CisJc3RydWN0UHRyID0gU2htZW1BbGxv Y1JhdyhyZXF1ZXN0ZWRfc2l6ZSwKIAkJCQkJCQkgIHJlcXVlc3QtPm9wdGlvbnMtPmFsaWdubWVu dCwKIAkJCQkJCQkgICZhbGxvY2F0ZWRfc2l6ZSk7CiAJaWYgKHN0cnVjdFB0ciA9PSBOVUxMKQpA QCAtNTM1LDEzICs2MDQsMjIgQEAgSW5pdFNobWVtSW5kZXhFbnRyeShTaG1lbVJlcXVlc3QgKnJl cXVlc3QpCiAJCWhhc2hfc2VhcmNoKFNobWVtSW5kZXgsIG5hbWUsIEhBU0hfUkVNT1ZFLCBOVUxM KTsKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX09VVF9PRl9NRU1PUlkp LAotCQkJCSBlcnJtc2coIm5vdCBlbm91Z2ggc2hhcmVkIG1lbW9yeSBmb3IgZGF0YSBzdHJ1Y3R1 cmUiCisJCQkJIGVycm1zZygibm90IGVub3VnaCBzaGFyZWQgbWVtb3J5IHNwYWNlIGZvciBkYXRh IHN0cnVjdHVyZSIKIAkJCQkJCSIgXCIlc1wiICglenUgYnl0ZXMgcmVxdWVzdGVkKSIsCi0JCQkJ CQluYW1lLCByZXF1ZXN0LT5vcHRpb25zLT5zaXplKSkpOworCQkJCQkJbmFtZSwgcmVxdWVzdGVk X3NpemUpKSk7CiAJfQogCWluZGV4X2VudHJ5LT5zaXplID0gcmVxdWVzdC0+b3B0aW9ucy0+c2l6 ZTsKIAlpbmRleF9lbnRyeS0+YWxsb2NhdGVkX3NpemUgPSBhbGxvY2F0ZWRfc2l6ZTsKIAlpbmRl eF9lbnRyeS0+bG9jYXRpb24gPSBzdHJ1Y3RQdHI7CisjaWZkZWYgSEFWRV9SRVNJWkFCTEVfU0hN RU0KKwlpbmRleF9lbnRyeS0+YWxsb2NhdGVkX3NwYWNlID0gYWxsb2NhdGVkX3NpemU7CisJaW5k ZXhfZW50cnktPm1heGltdW1fc2l6ZSA9IHJlcXVlc3QtPm9wdGlvbnMtPm1heGltdW1fc2l6ZTsK KwlpZiAocmVxdWVzdC0+b3B0aW9ucy0+bWF4aW11bV9zaXplID4gMCkKKwl7CisJCS8qIEFkanVz dCBhbGxvY2F0ZWQgc2l6ZSBvZiBhIHJlc2l6YWJsZSBzdHJ1Y3R1cmUuICovCisJCWluZGV4X2Vu dHJ5LT5hbGxvY2F0ZWRfc2l6ZSA9IEVzdGltYXRlQWxsb2NhdGVkU2l6ZShpbmRleF9lbnRyeSk7 CisJfQorI2VuZGlmCiAKIAkvKiBJbml0aWFsaXplIGRlcGVuZGluZyBvbiB0aGUga2luZCBvZiBz aG1lbSBhcmVhIGl0IGlzICovCiAJc3dpdGNoIChyZXF1ZXN0LT5raW5kKQpAQCAtNTg2LDcgKzY2 NCw3IEBAIEF0dGFjaFNobWVtSW5kZXhFbnRyeShTaG1lbVJlcXVlc3QgKnJlcXVlc3QsIGJvb2wg bWlzc2luZ19vaykKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAotCS8qIENoZWNrIHRoYXQgdGhlIHNp emUgaW4gdGhlIGluZGV4IG1hdGNoZXMgdGhlIHJlcXVlc3QuICovCisJLyogQ2hlY2sgdGhhdCB0 aGUgc2l6ZXMgaW4gdGhlIGluZGV4IG1hdGNoIHRoZSByZXF1ZXN0LiAqLwogCWlmIChpbmRleF9l bnRyeS0+c2l6ZSAhPSByZXF1ZXN0LT5vcHRpb25zLT5zaXplICYmCiAJCXJlcXVlc3QtPm9wdGlv bnMtPnNpemUgIT0gU0hNRU1fQVRUQUNIX1VOS05PV05fU0laRSkKIAl7CkBAIC01OTYsNiArNjc0 LDE4IEBAIEF0dGFjaFNobWVtSW5kZXhFbnRyeShTaG1lbVJlcXVlc3QgKnJlcXVlc3QsIGJvb2wg bWlzc2luZ19vaykKIAkJCQkJCW5hbWUsIGluZGV4X2VudHJ5LT5zaXplLCByZXF1ZXN0LT5vcHRp b25zLT5zaXplKSkpOwogCX0KIAorI2lmZGVmIEhBVkVfUkVTSVpBQkxFX1NITUVNCisJaWYgKGlu ZGV4X2VudHJ5LT5tYXhpbXVtX3NpemUgIT0gcmVxdWVzdC0+b3B0aW9ucy0+bWF4aW11bV9zaXpl ICYmCisJCXJlcXVlc3QtPm9wdGlvbnMtPm1heGltdW1fc2l6ZSAhPSBTSE1FTV9BVFRBQ0hfVU5L Tk9XTl9TSVpFKQorCXsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNnKCJzaGFyZWQgbWVt b3J5IHN0cnVjdCBcIiVzXCIgd2FzIGNyZWF0ZWQgd2l0aCIgXAorCQkJCQkJIiBkaWZmZXJlbnQg bWF4aW11bV9zaXplOiBleGlzdGluZyAlenUsIHJlcXVlc3RlZCAlenUiLAorCQkJCQkJbmFtZSwg aW5kZXhfZW50cnktPm1heGltdW1fc2l6ZSwKKwkJCQkJCXJlcXVlc3QtPm9wdGlvbnMtPm1heGlt dW1fc2l6ZSkpKTsKKwl9CisjZW5kaWYKKwogCS8qCiAJICogUmUtZXN0YWJsaXNoIHRoZSBjYWxs ZXIncyBwb2ludGVyIHZhcmlhYmxlLCBvciBkbyBvdGhlciBhY3Rpb25zIHRvCiAJICogYXR0YWNo IGRlcGVuZGluZyBvbiB0aGUga2luZCBvZiBzaG1lbSBhcmVhIGl0IGlzLgpAQCAtNjE3LDYgKzcw NywxMTUgQEAgQXR0YWNoU2htZW1JbmRleEVudHJ5KFNobWVtUmVxdWVzdCAqcmVxdWVzdCwgYm9v bCBtaXNzaW5nX29rKQogCXJldHVybiB0cnVlOwogfQogCisjaWZkZWYgSEFWRV9SRVNJWkFCTEVf U0hNRU0KKy8qCisgKiBFc3RpbWF0ZSB0aGUgYWN0dWFsIG1lbW9yeSBhbGxvY2F0ZWQgZm9yIGEg cmVzaXphYmxlIHN0cnVjdHVyZS4KKyAqCisgKiAuLi4gYmFzZWQgb24gdGhlIGFzc3VtcHRpb24g dGhhdCB0aGUgbWVtb3J5IGlzIGFsbG9jYXRlZCBpbiBwYWdlcy4KKyAqCisgKiBUaGUgbWVtb3J5 IHBhZ2VzIGNvdmVyZWQgYnkgdGhlIGN1cnJlbnQgc2l6ZSBvZiBhIHJlc2l6YWJsZSBzdHJ1Y3R1 cmUgYXJlCisgKiBmdWxseSBhbGxvY2F0ZWQgd2hlbiB0aGUgY3VycmVudGx5IGFsbG9jYXRlZCBw YXJ0IG9mIHRoZSBzdHJ1Y3R1cmUgaXMgd3JpdHRlbgorICogdG8uIFRoZSBtZW1vcnkgcGFnZSB3 aGVyZSB0aGUgbWF4aW1hbCBzdHJ1Y3R1cmUgZW5kcyBhbHNvIGhvc3RzIHRoZSBuZXh0CisgKiBz dHJ1Y3R1cmUsIHVubGVzcyB0aGUgbWF4aW1hbCBzdHJ1Y3R1cmUgZW5kcyBvbiBhIHBhZ2UgYm91 bmRhcnkuIEhlbmNlIHRoYXQKKyAqIHBhZ2UgaXMgYWxsb2NhdGVkIHdoZW4gdGhlIG5leHQgc3Ry dWN0dXJlIGlzIHdyaXR0ZW4gdG8uIFRoZSBtZW1vcnkgcGFnZXMKKyAqIGJldHdlZW4gdGhlIHBh Z2Ugd2hlcmUgdGhlIGN1cnJlbnQgc3RydWN0dXJlIGVuZHMgYW5kIHRoZSBwYWdlIHdoZXJlIHRo ZSBuZXh0CisgKiBzdHJ1Y3R1cmUgc3RhcnRzIHJlbWFpbiB1bmFsbG9jYXRlZC4gVGh1cyB0aGUg bWVtb3J5IGFsbG9jYXRlZCBmb3IgYQorICogcmVzaXphYmxlIHN0cnVjdHVyZSBjYW4gYmUgZXN0 aW1hdGVkIGFzIHRoZSB0b3RhbCBhZGRyZXNzIHNwYWNlIHJlc2VydmVkIGZvcgorICogdGhlIHN0 cnVjdHVyZSBtaW51cyB0aGUgdW5hbGxvY2F0ZWQgbWVtb3J5IHBhZ2VzIGJldHdlZW4gdGhlIGN1 cnJlbnQgZW5kIGFuZAorICogdGhlIG5leHQgc3RydWN0dXJlLgorICovCitzdGF0aWMgU2l6ZQor RXN0aW1hdGVBbGxvY2F0ZWRTaXplKFNobWVtSW5kZXhFbnQgKmVudHJ5KQoreworCVNpemUJCXBh Z2Vfc2l6ZSA9IEdldE9TUGFnZVNpemUoKTsKKwljaGFyCSAgICphbGlnbl9lbmQgPSAoY2hhciAq KSBUWVBFQUxJR04ocGFnZV9zaXplLCAoY2hhciAqKSBlbnRyeS0+bG9jYXRpb24gKyBlbnRyeS0+ c2l6ZSk7CisJY2hhcgkgICAqZmxvb3JfbWF4X2VuZCA9IChjaGFyICopIFRZUEVBTElHTl9ET1dO KHBhZ2Vfc2l6ZSwgKGNoYXIgKikgZW50cnktPmxvY2F0aW9uICsgZW50cnktPm1heGltdW1fc2l6 ZSk7CisKKwlBc3NlcnQoZW50cnktPm1heGltdW1fc2l6ZSA+PSBlbnRyeS0+c2l6ZSk7CisJQXNz ZXJ0KGVudHJ5LT5hbGxvY2F0ZWRfc3BhY2UgPj0gZW50cnktPm1heGltdW1fc2l6ZSk7CisKKwlp ZiAoYWxpZ25fZW5kIDwgZmxvb3JfbWF4X2VuZCkKKwkJcmV0dXJuIGVudHJ5LT5hbGxvY2F0ZWRf c3BhY2UgLSAoZmxvb3JfbWF4X2VuZCAtIGFsaWduX2VuZCk7CisKKwlyZXR1cm4gZW50cnktPmFs bG9jYXRlZF9zcGFjZTsKK30KKworLyoKKyAqIFNobWVtUmVzaXplU3RydWN0KCkgLS0tIHJlc2l6 ZSBhIHJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IHN0cnVjdHVyZS4KKyAqCisgKiBJZiB0aGUgc3Ry dWN0dXJlIGlzIGJlaW5nIHNocnVuaywgdGhlIG1lbW9yeSBwYWdlcyB0aGF0IGFyZSBubyBsb25n ZXIgbmVlZGVkCisgKiBhcmUgZnJlZWQuIElmIHRoZSBzdHJ1Y3R1cmUgaXMgYmVpbmcgZXhwYW5k ZWQsIHRoZSBtZW1vcnkgcGFnZXMgdGhhdCBhcmUKKyAqIG5lZWRlZCBmb3IgdGhlIG5ldyBzaXpl IGFyZSBhbGxvY2F0ZWQuIFNlZSBFc3RpbWF0ZUFsbG9jYXRlZFNpemUoKSBmb3IKKyAqIGV4cGxh bmF0aW9uIG9mIHdoaWNoIHBhZ2VzIGFyZSBhbGxvY2F0ZWQgZm9yIGEgcmVzaXphYmxlIHN0cnVj dHVyZS4KKyAqLwordm9pZAorU2htZW1SZXNpemVTdHJ1Y3QoY29uc3QgY2hhciAqbmFtZSwgU2l6 ZSBuZXdfc2l6ZSkKK3sKKwlTaG1lbUluZGV4RW50ICpyZXN1bHQ7CisJYm9vbAkJZm91bmQ7CisJ U2l6ZQkJcGFnZV9zaXplID0gR2V0T1NQYWdlU2l6ZSgpOworCWNoYXIJICAgKm5ld19lbmQ7CisK KwlBc3NlcnQobmV3X3NpemUgPiAwKTsKKworCS8qCisJICogUmVzaXphYmxlIHNoYXJlZCBtZW1v cnkgc3RydWN0dXJlcyBhcmUgb25seSBzdXBwb3J0ZWQgd2l0aCBtbWFwJ2VkCisJICogbWVtb3J5 LgorCSAqLworCUFzc2VydChzaGFyZWRfbWVtb3J5X3R5cGUgPT0gU0hNRU1fVFlQRV9NTUFQKTsK KworCS8qIGxvb2sgaXQgdXAgaW4gdGhlIHNobWVtIGluZGV4ICovCisJTFdMb2NrQWNxdWlyZShT aG1lbUluZGV4TG9jaywgTFdfRVhDTFVTSVZFKTsKKwlyZXN1bHQgPSAoU2htZW1JbmRleEVudCAq KSBoYXNoX3NlYXJjaChTaG1lbUluZGV4LCBuYW1lLCBIQVNIX0ZJTkQsICZmb3VuZCk7CisJaWYg KCFmb3VuZCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9O T1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJzaG1lbSBzdHJ1Y3QgXCIl c1wiIGlzIG5vdCBpbml0aWFsaXplZCIsIG5hbWUpKSk7CisKKwlBc3NlcnQocmVzdWx0KTsKKwor CWlmIChyZXN1bHQtPm1heGltdW1fc2l6ZSA8PSAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShl cnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBl cnJtc2coInNoYXJlZCBtZW1vcnkgc3RydWN0IFwiJXNcIiBpcyBub3QgcmVzaXphYmxlIiwgbmFt ZSkpKTsKKworCWlmIChyZXN1bHQtPm1heGltdW1fc2l6ZSA8IG5ld19zaXplKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1JFU09VUkNFUyksCisJ CQkJIGVycm1zZygibm90IGVub3VnaCBhZGRyZXNzIHNwYWNlIGlzIHJlc2VydmVkIGZvciByZXNp emluZyBzdHJ1Y3R1cmUgXCIlc1wiIiBcCisJCQkJCQkiKHJlcXVpcmVkICV6dSBieXRlcywgcmVz ZXJ2ZWQgJXp1IGJ5dGVzKSIsCisJCQkJCQluYW1lLCBuZXdfc2l6ZSwgcmVzdWx0LT5tYXhpbXVt X3NpemUpKSk7CisKKwkvKgorCSAqIFdoZW4gc2hyaW5raW5nIHRoZSBtZW1vcnkgZnJvbSB0aGUg cGFnZSBhbGlnbmVkIG5ldyBlbmQgdG8gdGhlIHN0YXJ0IG9mCisJICogdGhlIHBhZ2UgY29udGFp bmluZyBlbmQgb2YgdGhlIHJlc2VydmVkIHNwYWNlIGlzIG5vdCByZXF1aXJlZC4gV2hlcmVhcwor CSAqIHdoZW4gZXhwYW5kaW5nIHRoZSBtZW1vcnkgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHBhZ2Ug Y29udGFpbmluZyB0aGUKKwkgKiBzdGFydCBvZiB0aGUgc3RydWN0dXJlIHRvIHRoZSBwYWdlIGFs aWduZWQgbmV3IGVuZCBpcyByZXF1aXJlZC4KKwkgKi8KKwluZXdfZW5kID0gKGNoYXIgKikgVFlQ RUFMSUdOKHBhZ2Vfc2l6ZSwgKGNoYXIgKikgcmVzdWx0LT5sb2NhdGlvbiArIG5ld19zaXplKTsK KwlpZiAobmV3X3NpemUgPCByZXN1bHQtPnNpemUpCisJeworCQljaGFyCSAgICptYXhfZW5kID0g KGNoYXIgKikgVFlQRUFMSUdOX0RPV04ocGFnZV9zaXplLCAoY2hhciAqKSByZXN1bHQtPmxvY2F0 aW9uICsgcmVzdWx0LT5tYXhpbXVtX3NpemUpOworCisJCWlmIChtYXhfZW5kID4gbmV3X2VuZCkK KwkJCVBHU2hhcmVkTWVtb3J5RW5zdXJlRnJlZWQobmV3X2VuZCwgbWF4X2VuZCAtIG5ld19lbmQp OworCX0KKwllbHNlIGlmIChuZXdfc2l6ZSA+IHJlc3VsdC0+c2l6ZSkKKwl7CisJCWNoYXIJICAg KnN0cnVjdF9zdGFydCA9IChjaGFyICopIFRZUEVBTElHTl9ET1dOKHBhZ2Vfc2l6ZSwgKGNoYXIg KikgcmVzdWx0LT5sb2NhdGlvbik7CisKKwkJaWYgKG5ld19lbmQgPiBzdHJ1Y3Rfc3RhcnQpCisJ CQlQR1NoYXJlZE1lbW9yeUVuc3VyZUFsbG9jYXRlZChzdHJ1Y3Rfc3RhcnQsIG5ld19lbmQgLSBz dHJ1Y3Rfc3RhcnQpOworCX0KKworCS8qIFVwZGF0ZSBzaG1lbSBpbmRleCBlbnRyeS4gKi8KKwly ZXN1bHQtPnNpemUgPSBuZXdfc2l6ZTsKKwlyZXN1bHQtPmFsbG9jYXRlZF9zaXplID0gRXN0aW1h dGVBbGxvY2F0ZWRTaXplKHJlc3VsdCk7CisKKwlMV0xvY2tSZWxlYXNlKFNobWVtSW5kZXhMb2Nr KTsKK30KKyNlbmRpZgkJCQkJCQkvKiBIQVZFX1JFU0laQUJMRV9TSE1FTSAqLworCiAvKgogICoJ SW5pdFNobWVtQWxsb2NhdG9yKCkgLS0tIHNldCB1cCBiYXNpYyBwb2ludGVycyB0byBzaGFyZWQg bWVtb3J5LgogICoKQEAgLTcyMyw2ICs5MjIsMTAgQEAgSW5pdFNobWVtQWxsb2NhdG9yKFBHU2ht ZW1IZWFkZXIgKnNlZ2hkcikKIAkJQXNzZXJ0KCFmb3VuZCk7CiAJCXJlc3VsdC0+c2l6ZSA9IFNo bWVtQWxsb2NhdG9yLT5pbmRleF9zaXplOwogCQlyZXN1bHQtPmFsbG9jYXRlZF9zaXplID0gU2ht ZW1BbGxvY2F0b3ItPmluZGV4X3NpemU7CisjaWZkZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0KKwkJ cmVzdWx0LT5tYXhpbXVtX3NpemUgPSAwOworCQlyZXN1bHQtPmFsbG9jYXRlZF9zcGFjZSA9IHJl c3VsdC0+YWxsb2NhdGVkX3NpemU7CisjZW5kaWYKIAkJcmVzdWx0LT5sb2NhdGlvbiA9IFNobWVt QWxsb2NhdG9yLT5pbmRleDsKIAl9CiB9CkBAIC0xMDY0LDcgKzEyNjcsNyBAQCBtdWxfc2l6ZShT aXplIHMxLCBTaXplIHMyKQogRGF0dW0KIHBnX2dldF9zaG1lbV9hbGxvY2F0aW9ucyhQR19GVU5D VElPTl9BUkdTKQogewotI2RlZmluZSBQR19HRVRfU0hNRU1fU0laRVNfQ09MUyA0CisjZGVmaW5l IFBHX0dFVF9TSE1FTV9TSVpFU19DT0xTIDYKIAlSZXR1cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0 dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87CiAJSEFTSF9TRVFfU1RBVFVTIGhzdGF0 OwogCVNobWVtSW5kZXhFbnQgKmVudDsKQEAgLTEwODYsNyArMTI4OSwyMyBAQCBwZ19nZXRfc2ht ZW1fYWxsb2NhdGlvbnMoUEdfRlVOQ1RJT05fQVJHUykKIAkJdmFsdWVzWzFdID0gSW50NjRHZXRE YXR1bSgoY2hhciAqKSBlbnQtPmxvY2F0aW9uIC0gKGNoYXIgKikgU2htZW1TZWdIZHIpOwogCQl2 YWx1ZXNbMl0gPSBJbnQ2NEdldERhdHVtKGVudC0+c2l6ZSk7CiAJCXZhbHVlc1szXSA9IEludDY0 R2V0RGF0dW0oZW50LT5hbGxvY2F0ZWRfc2l6ZSk7CisjaWZkZWYgSEFWRV9SRVNJWkFCTEVfU0hN RU0KKwkJdmFsdWVzWzRdID0gSW50NjRHZXREYXR1bShlbnQtPm1heGltdW1fc2l6ZSk7CisJCXZh bHVlc1s1XSA9IEludDY0R2V0RGF0dW0oZW50LT5hbGxvY2F0ZWRfc3BhY2UpOworCisJCS8qCisJ CSAqIEtlZXAgdHJhY2sgb2YgdGhlIHRvdGFsIGFsbG9jYXRlZCBzcGFjZSBmb3IgbmFtZWQgc2ht ZW0gYXJlYXMsIHRvCisJCSAqIGJlIGFibGUgdG8gY2FsY3VsYXRlIHRoZSBhbW91bnQgb2Ygc2hh cmVkIG1lbW9yeSBhbGxvY2F0ZWQgZm9yCisJCSAqIGFub255bW91cyBhcmVhcyBhbmQgdGhlIGFt b3VudCBvZiBmcmVlIHNoYXJlZCBtZW1vcnkgYXQgdGhlIGVuZCBvZgorCQkgKiB0aGUgc2VnbWVu dC4KKwkJICovCisJCW5hbWVkX2FsbG9jYXRlZCArPSBlbnQtPmFsbG9jYXRlZF9zcGFjZTsKKyNl bHNlCisJCXZhbHVlc1s0XSA9IEludDY0R2V0RGF0dW0oMCk7CisJCXZhbHVlc1s1XSA9IEludDY0 R2V0RGF0dW0oZW50LT5hbGxvY2F0ZWRfc2l6ZSk7CisKIAkJbmFtZWRfYWxsb2NhdGVkICs9IGVu dC0+YWxsb2NhdGVkX3NpemU7CisjZW5kaWYKIAogCQl0dXBsZXN0b3JlX3B1dHZhbHVlcyhyc2lu Zm8tPnNldFJlc3VsdCwgcnNpbmZvLT5zZXREZXNjLAogCQkJCQkJCSB2YWx1ZXMsIG51bGxzKTsK QEAgLTEwOTcsNiArMTMxNiw4IEBAIHBnX2dldF9zaG1lbV9hbGxvY2F0aW9ucyhQR19GVU5DVElP Tl9BUkdTKQogCW51bGxzWzFdID0gdHJ1ZTsKIAl2YWx1ZXNbMl0gPSBJbnQ2NEdldERhdHVtKFNo bWVtQWxsb2NhdG9yLT5mcmVlX29mZnNldCAtIG5hbWVkX2FsbG9jYXRlZCk7CiAJdmFsdWVzWzNd ID0gdmFsdWVzWzJdOworCXZhbHVlc1s0XSA9IEludDY0R2V0RGF0dW0oMCk7CisJdmFsdWVzWzVd ID0gdmFsdWVzWzJdOwogCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHJzaW5mby0+c2V0UmVzdWx0LCBy c2luZm8tPnNldERlc2MsIHZhbHVlcywgbnVsbHMpOwogCiAJLyogb3V0cHV0IGFzLW9mLXlldCB1 bnVzZWQgc2hhcmVkIG1lbW9yeSAqLwpAQCAtMTEwNSw2ICsxMzI2LDggQEAgcGdfZ2V0X3NobWVt X2FsbG9jYXRpb25zKFBHX0ZVTkNUSU9OX0FSR1MpCiAJbnVsbHNbMV0gPSBmYWxzZTsKIAl2YWx1 ZXNbMl0gPSBJbnQ2NEdldERhdHVtKFNobWVtU2VnSGRyLT50b3RhbHNpemUgLSBTaG1lbUFsbG9j YXRvci0+ZnJlZV9vZmZzZXQpOwogCXZhbHVlc1szXSA9IHZhbHVlc1syXTsKKwl2YWx1ZXNbNF0g PSBJbnQ2NEdldERhdHVtKDApOworCXZhbHVlc1s1XSA9IHZhbHVlc1syXTsKIAl0dXBsZXN0b3Jl X3B1dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwgcnNpbmZvLT5zZXREZXNjLCB2YWx1ZXMsIG51 bGxzKTsKIAogCUxXTG9ja1JlbGVhc2UoU2htZW1JbmRleExvY2spOwpAQCAtMTI5MiwyMyArMTUx NSw5IEBAIHBnX2dldF9zaG1lbV9hbGxvY2F0aW9uc19udW1hKFBHX0ZVTkNUSU9OX0FSR1MpCiBT aXplCiBwZ19nZXRfc2htZW1fcGFnZXNpemUodm9pZCkKIHsKLQlTaXplCQlvc19wYWdlX3NpemU7 Ci0jaWZkZWYgV0lOMzIKLQlTWVNURU1fSU5GTyBzeXNpbmZvOwotCi0JR2V0U3lzdGVtSW5mbygm c3lzaW5mbyk7Ci0Jb3NfcGFnZV9zaXplID0gc3lzaW5mby5kd1BhZ2VTaXplOwotI2Vsc2UKLQlv c19wYWdlX3NpemUgPSBzeXNjb25mKF9TQ19QQUdFU0laRSk7Ci0jZW5kaWYKLQogCUFzc2VydChJ c1VuZGVyUG9zdG1hc3Rlcik7Ci0JQXNzZXJ0KGh1Z2VfcGFnZXNfc3RhdHVzICE9IEhVR0VfUEFH RVNfVU5LTk9XTik7Ci0KLQlpZiAoaHVnZV9wYWdlc19zdGF0dXMgPT0gSFVHRV9QQUdFU19PTikK LQkJR2V0SHVnZVBhZ2VTaXplKCZvc19wYWdlX3NpemUsIE5VTEwpOwogCi0JcmV0dXJuIG9zX3Bh Z2Vfc2l6ZTsKKwlyZXR1cm4gR2V0T1NQYWdlU2l6ZSgpOwogfQogCiBEYXR1bQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQgYi9zcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAppbmRleCBhMzE1YzRhYjhhYi4uYjRkOThh MWY2MTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMu ZGF0CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CkBAIC0x MjExLDYgKzEyMTEsMTMgQEAKICAgbWF4ID0+ICcxMDAwLjAnLAogfSwKIAoreyBuYW1lID0+ICdo YXZlX3Jlc2l6YWJsZV9zaG1lbScsIHR5cGUgPT4gJ2Jvb2wnLCBjb250ZXh0ID0+ICdQR0NfSU5U RVJOQUwnLCBncm91cCA9PiAnUFJFU0VUX09QVElPTlMnLAorICBzaG9ydF9kZXNjID0+ICdTaG93 cyB3aGV0aGVyIHRoZSBydW5uaW5nIHNlcnZlciBzdXBwb3J0cyByZXNpemFibGUgc2hhcmVkIG1l bW9yeS4nLAorICBmbGFncyA9PiAnR1VDX05PVF9JTl9TQU1QTEUgfCBHVUNfRElTQUxMT1dfSU5f RklMRScsCisgIHZhcmlhYmxlID0+ICdoYXZlX3Jlc2l6YWJsZV9zaG1lbV9lbmFibGVkJywKKyAg Ym9vdF92YWwgPT4gJ0hBVkVfUkVTSVpBQkxFX1NITUVNX0VOQUJMRUQnLAorfSwKKwogeyBuYW1l ID0+ICdoYmFfZmlsZScsIHR5cGUgPT4gJ3N0cmluZycsIGNvbnRleHQgPT4gJ1BHQ19QT1NUTUFT VEVSJywgZ3JvdXAgPT4gJ0ZJTEVfTE9DQVRJT05TJywKICAgc2hvcnRfZGVzYyA9PiAnU2V0cyB0 aGUgc2VydmVyXCdzICJoYmEiIGNvbmZpZ3VyYXRpb24gZmlsZS4nLAogICBmbGFncyA9PiAnR1VD X1NVUEVSVVNFUl9PTkxZJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj X3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggZDlj YTEzYmFmZjkuLjZiYjA4ZGQxMGYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNj L2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpA QCAtNjUzLDYgKzY1MywxMyBAQCBzdGF0aWMgYm9vbCBhc3NlcnRfZW5hYmxlZCA9IERFRkFVTFRf QVNTRVJUX0VOQUJMRUQ7CiAjZW5kaWYKIHN0YXRpYyBib29sIGV4ZWNfYmFja2VuZF9lbmFibGVk ID0gRVhFQ19CQUNLRU5EX0VOQUJMRUQ7CiAKKyNpZmRlZiBIQVZFX1JFU0laQUJMRV9TSE1FTQor I2RlZmluZSBIQVZFX1JFU0laQUJMRV9TSE1FTV9FTkFCTEVEIHRydWUKKyNlbHNlCisjZGVmaW5l IEhBVkVfUkVTSVpBQkxFX1NITUVNX0VOQUJMRUQgZmFsc2UKKyNlbmRpZgorc3RhdGljIGJvb2wg aGF2ZV9yZXNpemFibGVfc2htZW1fZW5hYmxlZCA9IEhBVkVfUkVTSVpBQkxFX1NITUVNX0VOQUJM RUQ7CisKIHN0YXRpYyBjaGFyICpyZWNvdmVyeV90YXJnZXRfdGltZWxpbmVfc3RyaW5nOwogc3Rh dGljIGNoYXIgKnJlY292ZXJ5X3RhcmdldF9zdHJpbmc7CiBzdGF0aWMgY2hhciAqcmVjb3Zlcnlf dGFyZ2V0X3hpZF9zdHJpbmc7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCBiZDE3N2FlYmZj Yi4uZGI0OTA0MmQ4MjggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtODY2NCw4ICs4NjY0 LDggQEAKIHsgb2lkID0+ICc1MDUyJywgZGVzY3IgPT4gJ2FsbG9jYXRpb25zIGZyb20gdGhlIG1h aW4gc2hhcmVkIG1lbW9yeSBzZWdtZW50JywKICAgcHJvbmFtZSA9PiAncGdfZ2V0X3NobWVtX2Fs bG9jYXRpb25zJywgcHJvcm93cyA9PiAnNTAnLCBwcm9yZXRzZXQgPT4gJ3QnLAogICBwcm92b2xh dGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3JlY29yZCcsIHByb2FyZ3R5cGVzID0+ICcnLAot ICBwcm9hbGxhcmd0eXBlcyA9PiAne3RleHQsaW50OCxpbnQ4LGludDh9JywgcHJvYXJnbW9kZXMg PT4gJ3tvLG8sbyxvfScsCi0gIHByb2FyZ25hbWVzID0+ICd7bmFtZSxvZmYsc2l6ZSxhbGxvY2F0 ZWRfc2l6ZX0nLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne3RleHQsaW50OCxpbnQ4LGludDgsaW50 OCxpbnQ4fScsIHByb2FyZ21vZGVzID0+ICd7byxvLG8sbyxvLG99JywKKyAgcHJvYXJnbmFtZXMg PT4gJ3tuYW1lLG9mZixzaXplLGFsbG9jYXRlZF9zaXplLG1heGltdW1fc2l6ZSxhbGxvY2F0ZWRf c3BhY2V9JywKICAgcHJvc3JjID0+ICdwZ19nZXRfc2htZW1fYWxsb2NhdGlvbnMnLAogICBwcm9h Y2wgPT4gJ3tQT1NUR1JFUz1YLHBnX3JlYWRfYWxsX3N0YXRzPVh9JyB9LAogCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbiBiL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmlu CmluZGV4IDlmNmQ1MTIzNDdlLi44ZjJhNTllYzNhOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cGdfY29uZmlnLmguaW4KKysrIGIvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4KQEAgLTg1LDYg Kzg1LDE0IEBACiAgICBkb24ndC4gKi8KICN1bmRlZiBIQVZFX0RFQ0xfRl9GVUxMRlNZTkMKIAor LyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBNQURWX1BPUFVM QVRFX1dSSVRFJywgYW5kIHRvIDAKKyAgIGlmIHlvdSBkb24ndC4gKi8KKyN1bmRlZiBIQVZFX0RF Q0xfTUFEVl9QT1BVTEFURV9XUklURQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUg ZGVjbGFyYXRpb24gb2YgYE1BRFZfUkVNT1ZFJywgYW5kIHRvIDAgaWYgeW91CisgICBkb24ndC4g Ki8KKyN1bmRlZiBIQVZFX0RFQ0xfTUFEVl9SRU1PVkUKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91 IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBtZW1zZXRfcycsIGFuZCB0byAwIGlmIHlvdQogICAg ZG9uJ3QuICovCiAjdW5kZWYgSEFWRV9ERUNMX01FTVNFVF9TCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9wZ19jb25maWdfbWFudWFsLmggYi9zcmMvaW5jbHVkZS9wZ19jb25maWdfbWFudWFsLmgK aW5kZXggNTIxYjQ5Yjg4ODguLmIwOWQ2YzkxMzI0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9w Z19jb25maWdfbWFudWFsLmgKKysrIGIvc3JjL2luY2x1ZGUvcGdfY29uZmlnX21hbnVhbC5oCkBA IC0xMzEsNiArMTMxLDE1IEBACiAjZGVmaW5lIEVYRUNfQkFDS0VORAogI2VuZGlmCiAKKy8qCisg KiBIQVZFX1JFU0laQUJMRV9TSE1FTSBpbmRpY2F0ZXMgd2hldGhlciByZXNpemFibGUgc2hhcmVk IG1lbW9yeSBzdHJ1Y3R1cmVzIGFyZQorICogc3VwcG9ydGVkLiBUaGUgaW1wbGVtZW50YXRpb24g cmVxdWlyZXMgTGludXgtc3BlY2lmaWMgbWFkdmlzZSBjb25zdGFudHMKKyAqIChNQURWX1JFTU9W RSBhbmQgTUFEVl9QT1BVTEFURV9XUklURSkuCisgKi8KKyNpZiBIQVZFX0RFQ0xfTUFEVl9SRU1P VkUgJiYgSEFWRV9ERUNMX01BRFZfUE9QVUxBVEVfV1JJVEUgJiYgIWRlZmluZWQoRVhFQ19CQUNL RU5EKQorI2RlZmluZSBIQVZFX1JFU0laQUJMRV9TSE1FTQorI2VuZGlmCisKIC8qCiAgKiBVU0Vf UE9TSVhfRkFEVklTRSBjb250cm9scyB3aGV0aGVyIFBvc3RncmVzIHdpbGwgYXR0ZW1wdCB0byB1 c2UgdGhlCiAgKiBwb3NpeF9mYWR2aXNlKCkga2VybmVsIGNhbGwuICBVc3VhbGx5IHRoZSBhdXRv bWF0aWMgY29uZmlndXJlIHRlc3RzIGFyZQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFn ZS9wZ19zaG1lbS5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wZ19zaG1lbS5oCmluZGV4IDEwYzdi MDY1ODYxLi4zZDVhY2ViYTU5YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wZ19z aG1lbS5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcGdfc2htZW0uaApAQCAtODksNiArODks MTEgQEAgZXh0ZXJuIFBHU2htZW1IZWFkZXIgKlBHU2hhcmVkTWVtb3J5Q3JlYXRlKFNpemUgc2l6 ZSwKIAkJCQkJCQkJCQkgICBQR1NobWVtSGVhZGVyICoqc2hpbSk7CiBleHRlcm4gYm9vbCBQR1No YXJlZE1lbW9yeUlzSW5Vc2UodW5zaWduZWQgbG9uZyBpZDEsIHVuc2lnbmVkIGxvbmcgaWQyKTsK IGV4dGVybiB2b2lkIFBHU2hhcmVkTWVtb3J5RGV0YWNoKHZvaWQpOworI2lmZGVmIEhBVkVfUkVT SVpBQkxFX1NITUVNCitleHRlcm4gdm9pZCBQR1NoYXJlZE1lbW9yeUVuc3VyZUZyZWVkKHZvaWQg KmFkZHIsIFNpemUgc2l6ZSk7CitleHRlcm4gdm9pZCBQR1NoYXJlZE1lbW9yeUVuc3VyZUFsbG9j YXRlZCh2b2lkICphZGRyLCBTaXplIHNpemUpOworI2VuZGlmCiBleHRlcm4gdm9pZCBHZXRIdWdl UGFnZVNpemUoU2l6ZSAqaHVnZXBhZ2VzaXplLCBpbnQgKm1tYXBfZmxhZ3MpOworZXh0ZXJuIFNp emUgR2V0T1NQYWdlU2l6ZSh2b2lkKTsKIAogI2VuZGlmCQkJCQkJCS8qIFBHX1NITUVNX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaCBiL3NyYy9pbmNsdWRlL3N0 b3JhZ2Uvc2htZW0uaAppbmRleCA5MTIxOGRiNmQ2ZS4uMTIyYmY3OTQzY2EgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3No bWVtLmgKQEAgLTU3LDYgKzU3LDE4IEBAIHR5cGVkZWYgc3RydWN0IFNobWVtU3RydWN0T3B0cwog CSAqLwogCXNpemVfdAkJYWxpZ25tZW50OwogCisjaWZkZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0K KworCS8qCisJICogTWF4aW11bSBzaXplIHRoaXMgc3RydWN0dXJlIGNhbiBncm93IHVwdG8gaW4g ZnV0dXJlLiBUaGUgbWVtb3J5IGlzIG5vdAorCSAqIGFsbG9jYXRlZCByaWdodCBhd2F5IGJ1dCB0 aGUgY29ycmVzcG9uZGluZyBhZGRyZXNzIHNwYWNlIGlzIHJlc2VydmVkIHNvCisJICogdGhhdCBt ZW1vcnkgY2FuIGJlIG1hcHBlZCB0byBpdCB3aGVuIHRoZSBzdHJ1Y3R1cmUgZ3Jvd3MuIFR5cGlj YWxseQorCSAqIHNob3VsZCBiZSB1c2VkIGZvciBsYXJnZSByZXNpemFibGUgc3RydWN0dXJlcyB3 aGljaCBuZWVkIHNldmVyYWwgcGFnZXMKKwkgKiB3b3J0aCBvZiBjb250aWd1b3VzIG1lbW9yeS4K KwkgKi8KKwlzc2l6ZV90CQltYXhpbXVtX3NpemU7CisjZW5kaWYKKwogCS8qCiAJICogV2hlbiB0 aGUgc2htZW0gYXJlYSBpcyBpbml0aWFsaXplZCBvciBhdHRhY2hlZCB0bywgcG9pbnRlciB0byBp dCBpcwogCSAqIHN0b3JlZCBpbiAqcHRyLiAgSXQgdXN1YWxseSBwb2ludHMgdG8gYSBnbG9iYWwg dmFyaWFibGUsIHVzZWQgdG8gYWNjZXNzCkBAIC0xNjYsNiArMTc4LDkgQEAgdHlwZWRlZiBzdHJ1 Y3QgU2htZW1DYWxsYmFja3MKIAogZXh0ZXJuIHZvaWQgUmVnaXN0ZXJTaG1lbUNhbGxiYWNrcyhj b25zdCBTaG1lbUNhbGxiYWNrcyAqY2FsbGJhY2tzKTsKIGV4dGVybiBib29sIFNobWVtQWRkcklz VmFsaWQoY29uc3Qgdm9pZCAqYWRkcik7CisjaWZkZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0KK2V4 dGVybiB2b2lkIFNobWVtUmVzaXplU3RydWN0KGNvbnN0IGNoYXIgKm5hbWUsIFNpemUgbmV3X3Np emUpOworI2VuZGlmCiAKIC8qCiAgKiBUaGVzZSBtYWNyb3MgcHJvdmlkZSBzeW50YWN0aWMgc3Vn YXIgZm9yIGNhbGxpbmcgdGhlIHVuZGVybHlpbmcgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9tb2R1bGVzL01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZQppbmRleCBm MWIwNGM5OTk2OS4uMmExZTc0NmJmMGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvTWFr ZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZQpAQCAtMTQsNiArMTQsNyBAQCBT VUJESVJTID0gXAogCQkgIGxpYnBxX3BpcGVsaW5lIFwKIAkJICBvYXV0aF92YWxpZGF0b3IgXAog CQkgIHBsc2FtcGxlIFwKKwkJICByZXNpemFibGVfc2htZW0gXAogCQkgIHNwZ2lzdF9uYW1lX29w cyBcCiAJCSAgdGVzdF9haW8gXAogCQkgIHRlc3RfYmluYXJ5aGVhcCBcCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWls ZAppbmRleCBmYzk5NTUyZDlhYi4uY2Q5NGUxZmVhMTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21v ZHVsZXMvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZApAQCAt MTMsNiArMTMsNyBAQCBzdWJkaXIoJ2xpYnBxX3BpcGVsaW5lJykKIHN1YmRpcignbmJ0cmVlJykK IHN1YmRpcignb2F1dGhfdmFsaWRhdG9yJykKIHN1YmRpcigncGxzYW1wbGUnKQorc3ViZGlyKCdy ZXNpemFibGVfc2htZW0nKQogc3ViZGlyKCdzcGdpc3RfbmFtZV9vcHMnKQogc3ViZGlyKCdzc2xf cGFzc3BocmFzZV9jYWxsYmFjaycpCiBzdWJkaXIoJ3Rlc3RfYWlvJykKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxl cy9yZXNpemFibGVfc2htZW0vTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjgyZGFlNzIyYWFkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy9yZXNpemFibGVfc2htZW0vTWFrZWZpbGUKQEAgLTAsMCArMSwyNSBAQAorIyBzcmMvdGVzdC9t b2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9NYWtlZmlsZQorCitQR0ZJTEVERVNDID0gInJlc2l6YWJs ZV9zaG1lbSAtIHRlc3QgbW9kdWxlIGZvciByZXNpemFibGUgc2hhcmVkIG1lbW9yeSIKKworTU9E VUxFUyA9IHJlc2l6YWJsZV9zaG1lbQorCitFWFRFTlNJT04gPSByZXNpemFibGVfc2htZW0KK0RB VEEgPSByZXNpemFibGVfc2htZW0tLTEuMC5zcWwKKworVEFQX1RFU1RTID0gMQorCisjIFRoaXMg dGVzdCByZXF1aXJlcyBsaWJyYXJ5IHRvIGJlIGxvYWRlZCBhdCB0aGUgc2VydmVyIHN0YXJ0LCBz byBkaXNhYmxlCisjIGluc3RhbGxjaGVjaworTk9fSU5TVEFMTENIRUNLID0gMQorCitpZmRlZiBV U0VfUEdYUworUEdfQ09ORklHID0gcGdfY29uZmlnCitQR1hTIDo9ICQoc2hlbGwgJChQR19DT05G SUcpIC0tcGd4cykKK2luY2x1ZGUgJChQR1hTKQorZWxzZQorc3ViZGlyID0gc3JjL3Rlc3QvbW9k dWxlcy9yZXNpemFibGVfc2htZW0KK3RvcF9idWlsZGRpciA9IC4uLy4uLy4uLy4uCitpbmNsdWRl ICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCitpbmNsdWRlICQodG9wX3NyY2Rp cikvc3JjL21ha2VmaWxlcy9wZ3hzLm1rCitlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9k dWxlcy9yZXNpemFibGVfc2htZW0vbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6 YWJsZV9zaG1lbS9tZXNvbi5idWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uNDkzYmJiYzk1YzMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Jl c2l6YWJsZV9zaG1lbS9tZXNvbi5idWlsZApAQCAtMCwwICsxLDM2IEBACisjIHNyYy90ZXN0L21v ZHVsZXMvcmVzaXphYmxlX3NobWVtL21lc29uLmJ1aWxkCisKK3Jlc2l6YWJsZV9zaG1lbV9zb3Vy Y2VzID0gZmlsZXMoCisgICdyZXNpemFibGVfc2htZW0uYycsCispCisKK2lmIGhvc3Rfc3lzdGVt ID09ICd3aW5kb3dzJworICByZXNpemFibGVfc2htZW1fc291cmNlcyArPSByY19saWJfZ2VuLnBy b2Nlc3Mod2luMzJ2ZXJfcmMsIGV4dHJhX2FyZ3M6IFsKKyAgICAnLS1OQU1FJywgJ3Jlc2l6YWJs ZV9zaG1lbScsCisgICAgJy0tRklMRURFU0MnLCAncmVzaXphYmxlX3NobWVtIC0gdGVzdCBtb2R1 bGUgZm9yIHJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5JyxdKQorZW5kaWYKKworcmVzaXphYmxlX3No bWVtID0gc2hhcmVkX21vZHVsZSgncmVzaXphYmxlX3NobWVtJywKKyAgcmVzaXphYmxlX3NobWVt X3NvdXJjZXMsCisgIGt3YXJnczogcGdfdGVzdF9tb2RfYXJncywKKykKK3Rlc3RfaW5zdGFsbF9s aWJzICs9IHJlc2l6YWJsZV9zaG1lbQorCit0ZXN0X2luc3RhbGxfZGF0YSArPSBmaWxlcygKKyAg J3Jlc2l6YWJsZV9zaG1lbS5jb250cm9sJywKKyAgJ3Jlc2l6YWJsZV9zaG1lbS0tMS4wLnNxbCcs CispCisKK3Rlc3RzICs9IHsKKyAgJ25hbWUnOiAncmVzaXphYmxlX3NobWVtJywKKyAgJ3NkJzog bWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCisgICdiZCc6IG1lc29uLmN1cnJlbnRfYnVpbGRf ZGlyKCksCisgICd0YXAnOiB7CisgICAgJ3Rlc3RzJzogWworICAgICAgJ3QvMDAxX3Jlc2l6YWJs ZV9zaG1lbS5wbCcsCisgICAgXSwKKyAgICAjIFRoaXMgdGVzdCByZXF1aXJlcyBsaWJyYXJ5IHRv IGJlIGxvYWRlZCBhdCB0aGUgc2VydmVyIHN0YXJ0LCBzbyBkaXNhYmxlCisgICAgIyBpbnN0YWxs Y2hlY2sKKyAgICAncnVubmluZ2NoZWNrJzogZmFsc2UsCisgIH0sCit9CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0tLTEuMC5zcWwg Yi9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFibGVfc2htZW0tLTEuMC5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmMxYmNiNjExN2I2Ci0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9yZXNpemFibGVfc2htZW0vcmVzaXph YmxlX3NobWVtLS0xLjAuc3FsCkBAIC0wLDAgKzEsMzcgQEAKKy8qIHNyYy90ZXN0L21vZHVsZXMv cmVzaXphYmxlX3NobWVtL3Jlc2l6YWJsZV9zaG1lbS0tMS4wLnNxbCAqLworCistLSBjb21wbGFp biBpZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVY VEVOU0lPTgorXGVjaG8gVXNlICJDUkVBVEUgRVhURU5TSU9OIHJlc2l6YWJsZV9zaG1lbSIgdG8g bG9hZCB0aGlzIGZpbGUuIFxxdWl0CisKKy0tIEZ1bmN0aW9uIHRvIHJlc2l6ZSB0aGUgdGVzdCBz dHJ1Y3R1cmUgaW4gdGhlIHNoYXJlZCBtZW1vcnkKK0NSRUFURSBGVU5DVElPTiByZXNpemFibGVf c2htZW1fcmVzaXplKG5ld19lbnRyaWVzIGludGVnZXIpCitSRVRVUk5TIHZvaWQKK0FTICdNT0RV TEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIFNUUklDVDsKKworLS0gRnVuY3Rpb24gdG8gd3JpdGUg ZGF0YSB0byBhbGwgZW50cmllcyBpbiB0aGUgdGVzdCBzdHJ1Y3R1cmUgaW4gc2hhcmVkIG1lbW9y eQorLS0gV3JpdGluZyBhbGwgdGhlIGVudHJpZXMgbWFrZXMgc3VyZSB0aGF0IHRoZSBtZW1vcnkg aXMgYWN0dWFsbHkgYWxsb2NhdGVkIGFuZAorLS0gbWFwcGVkIHRvIHRoZSBwcm9jZXNzLCBzbyB0 aGF0IHdlIGNhbiBsYXRlciBtZWFzdXJlIHRoZSBtZW1vcnkgdXNhZ2UuCitDUkVBVEUgRlVOQ1RJ T04gcmVzaXphYmxlX3NobWVtX3dyaXRlKGVudHJ5X3ZhbHVlIGludGVnZXIpCitSRVRVUk5TIHZv aWQKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIFNUUklDVDsKKworLS0gRnVuY3Rp b24gdG8gdmVyaWZ5IHRoYXQgc3BlY2lmaWVkIG51bWJlciBvZiBpbml0aWFsIGVudHJpZXMgaGF2 ZSBleHBlY3RlZCB2YWx1ZS4KKy0tIFJlYWRpbmcgYWxsIHRoZSBlbnRyaWVzIG1ha2VzIHN1cmUg dGhhdCB0aGUgbWVtb3J5IGlzIGFjdHVhbGx5IG1hcHBlZCB0byB0aGUKKy0tIHByb2Nlc3MsIHNv IHRoYXQgd2UgY2FuIGxhdGVyIG1lYXN1cmUgdGhlIG1lbW9yeSB1c2FnZS4KK0NSRUFURSBGVU5D VElPTiByZXNpemFibGVfc2htZW1fcmVhZChlbnRyeV9jb3VudCBpbnRlZ2VyLCBlbnRyeV92YWx1 ZSBpbnRlZ2VyKQorUkVUVVJOUyBib29sZWFuCitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VB R0UgQyBTVFJJQ1Q7CisKKy0tIEZ1bmN0aW9uIHRvIHJlcG9ydCBtZW1vcnkgdXNhZ2Ugc3RhdGlz dGljcyBvZiB0aGUgY2FsbGluZyBiYWNrZW5kCitDUkVBVEUgRlVOQ1RJT04gcmVzaXphYmxlX3No bWVtX3VzYWdlKE9VVCByc3NfYW5vbiBiaWdpbnQsIE9VVCByc3NfZmlsZSBiaWdpbnQsIE9VVCBy c3Nfc2htZW0gYmlnaW50LCBPVVQgdm1fc2l6ZSBiaWdpbnQpCitBUyAnTU9EVUxFX1BBVEhOQU1F JworTEFOR1VBR0UgQyBTVFJJQ1Q7CisKKy0tIEZ1bmN0aW9uIHRvIGdldCB0aGUgc2hhcmVkIG1l bW9yeSBwYWdlIHNpemUKK0NSRUFURSBGVU5DVElPTiByZXNpemFibGVfc2htZW1fcGFnZXNpemUo KQorUkVUVVJOUyBpbnRlZ2VyCitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFOR1VBR0UgQyBTVFJJ Q1Q7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS9yZXNpemFi bGVfc2htZW0uYyBiL3NyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL3Jlc2l6YWJsZV9z aG1lbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44YWZmMjY3ZGI0 NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxlX3NobWVtL3Jl c2l6YWJsZV9zaG1lbS5jCkBAIC0wLDAgKzEsMzI5IEBACisvKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KgorICogcmVzaXphYmxlX3NobWVtLmMKKyAqCQlUZXN0IG1vZHVsZSBmb3IgUG9zdGdyZVNRTCdz IHJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IGZ1bmN0aW9uYWxpdHkKKyAqCisgKiBUaGlzIG1vZHVs ZSBkZW1vbnN0cmF0ZXMgYW5kIHRlc3RzIHRoZSByZXNpemFibGUgc2hhcmVkIG1lbW9yeSBBUEkK KyAqIHByb3ZpZGVkIGJ5IHNobWVtLmMvc2htZW0uaC4KKyAqCisgKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiY29tbWFuZHMvZXh0ZW5z aW9uLmgiCisjaW5jbHVkZSAiZm1nci5oIgorI2luY2x1ZGUgImZ1bmNhcGkuaCIKKyNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCisjaW5jbHVkZSAic3Rv cmFnZS9zcGluLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGls cy9ndWMuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3Rp bWVzdGFtcC5oIgorI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKKworI2luY2x1ZGUg PHN0ZGlvLmg+CisKK1BHX01PRFVMRV9NQUdJQzsKKworLyogRGVmYXVsdCB2YWx1ZXMgZm9yIHRo ZSBHVUNzIGNvbnRyb2xsaW5nIHN0cnVjdHVyZSBzaXplICovCisjZGVmaW5lIFRFU1RfSU5JVElB TF9FTlRSSUVTX0RFRkFVTFQJCSgyNSAqIDEwMjQgKiAxMDI0KQkvKiB+MTAwTUIgKi8KKyNkZWZp bmUgVEVTVF9NQVhfRU5UUklFU19ERUZBVUxUCQkJKDEwMCAqIDEwMjQgKiAxMDI0KSAvKiB+NDAw TUIgKi8KKworI2RlZmluZSBURVNUX0VOVFJZX1NJWkUJCQlzaXplb2YoaW50MzIpCS8qIFNpemUg b2YgZWFjaCBlbnRyeSAqLworCisvKgorICogUmVzaXphYmxlIHRlc3QgZGF0YSBzdHJ1Y3R1cmUg c3RvcmVkIGluIHNoYXJlZCBtZW1vcnkuCisgKgorICogVGhlIHRlc3QgcGVyZm9ybXMgcmVzaXpp bmcsIHJlYWRzIG9yIHdyaXRlcywgb25seSBvbmUgYXQgYSB0aW1lIGFuZCBuZXZlcgorICogY29u Y3VycmVudGx5LiBIZW5jZSwgdGhlcmUgaXMgbm8gbmVlZCBmb3IgbG9ja3MgaW4gdGhlIHRlc3Qg c3RydWN0dXJlLgorICovCit0eXBlZGVmIHN0cnVjdCBUZXN0UmVzaXphYmxlU2htZW1TdHJ1Y3QK K3sKKwkvKiBNZXRhZGF0YSAqLworCWludDMyCQludW1fZW50cmllczsJLyogTnVtYmVyIG9mIGVu dHJpZXMgdGhhdCBjYW4gZml0ICovCisKKwkvKiBEYXRhIGFyZWEgLSB2YXJpYWJsZSBzaXplICov CisJaW50MzIJCWRhdGFbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKK30gVGVzdFJlc2l6YWJsZVNo bWVtU3RydWN0OworCitzdGF0aWMgVGVzdFJlc2l6YWJsZVNobWVtU3RydWN0ICpyZXNpemFibGVf c2htZW0gPSBOVUxMOworCisvKiBHVUMgdmFyaWFibGVzIGNvbnRyb2xsaW5nIHRoZSBzaXplIG9m IHRoZSB0ZXN0IHN0cnVjdHVyZSAqLworc3RhdGljIGludAl0ZXN0X2luaXRpYWxfZW50cmllczsK K3N0YXRpYyBpbnQJdGVzdF9tYXhfZW50cmllczsKKworLyogV2hldGhlciB0byB1c2UgU0hNRU1f QVRUQUNIX1VOS05PV05fU0laRSB3aGVuIGF0dGFjaGluZyB0byB0aGUgc2hhcmVkIG1lbW9yeSAq Lworc3RhdGljIGJvb2wgdXNlX3Vua25vd25fc2l6ZSA9IGZhbHNlOworCitzdGF0aWMgdm9pZCBy ZXNpemFibGVfc2htZW1fcmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgcmVzaXphYmxl X3NobWVtX3NobWVtX2luaXQodm9pZCAqYXJnKTsKKworc3RhdGljIFNobWVtQ2FsbGJhY2tzIHNo bWVtX2NhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IHJlc2l6YWJsZV9zaG1lbV9yZXF1ZXN0 LAorCS5pbml0X2ZuID0gcmVzaXphYmxlX3NobWVtX3NobWVtX2luaXQsCit9OworCisvKiBTUUwt Y2FsbGFibGUgZnVuY3Rpb25zICovCitQR19GVU5DVElPTl9JTkZPX1YxKHJlc2l6YWJsZV9zaG1l bV9yZXNpemUpOworUEdfRlVOQ1RJT05fSU5GT19WMShyZXNpemFibGVfc2htZW1fd3JpdGUpOwor UEdfRlVOQ1RJT05fSU5GT19WMShyZXNpemFibGVfc2htZW1fcmVhZCk7CitQR19GVU5DVElPTl9J TkZPX1YxKHJlc2l6YWJsZV9zaG1lbV91c2FnZSk7CitQR19GVU5DVElPTl9JTkZPX1YxKHJlc2l6 YWJsZV9zaG1lbV9wYWdlc2l6ZSk7CisKKy8qCisgKiBNb2R1bGUgbG9hZCBjYWxsYmFjaworICov Cit2b2lkCitfUEdfaW5pdCh2b2lkKQoreworCWludAkJCWd1Y19jb250ZXh0OworCisJLyoKKwkg KiBVc2UgUEdDX1BPU1RNQVNURVIgd2hlbiBsb2FkZWQgYXQgc3RhcnR1cCBzbyB0aGUgdmFsdWVz IGFyZSBmaXhlZCBvbmNlCisJICogdGhlIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBpcyBjcmVhdGVk LiAgV2hlbiBsb2FkZWQgYWZ0ZXIgc3RhcnR1cAorCSAqIFBHQ19QT1NUTUFTVEVSIGlzIG5vdCBh bGxvd2VkLCBzbyB3ZSB1c2UgUEdDX1NJR0hVUCBpbnN0ZWFkLiAgQWx0aG91Z2gKKwkgKiB3ZSBk byBub3QgaW50ZW5kIHRvIGNoYW5nZSB0aGVzZSB2YWx1ZXMgYXQgY29uZmlnIHJlbG9hZCwgUEdD X1NJR0hVUCBpcworCSAqIHRoZSBsZWFzdCBwZXJtaXNzaXZlIGNvbnRleHQgdGhhdCBhbGxvd3Mg ZGVmaW5pbmcgdGhlIEdVQyBhZnRlciBzdGFydHVwCisJICogYW5kIHN0aWxsIHByZXZlbnRzIGl0 IGZyb20gYmVpbmcgY2hhbmdlZCB2aWEgU0VULgorCSAqLworCWlmIChwcm9jZXNzX3NoYXJlZF9w cmVsb2FkX2xpYnJhcmllc19pbl9wcm9ncmVzcykKKwkJZ3VjX2NvbnRleHQgPSBQR0NfUE9TVE1B U1RFUjsKKwllbHNlCisJeworCQlndWNfY29udGV4dCA9IFBHQ19TSUdIVVA7CisJCXNobWVtX2Nh bGxiYWNrcy5mbGFncyA9IFNITUVNX0NBTExCQUNLU19BTExPV19BRlRFUl9TVEFSVFVQOworCX0K KworCURlZmluZUN1c3RvbUludFZhcmlhYmxlKCJyZXNpemFibGVfc2htZW0uaW5pdGlhbF9lbnRy aWVzIiwKKwkJCQkJCQkiSW5pdGlhbCBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgdGVzdCBzdHJ1 Y3R1cmUuIiwKKwkJCQkJCQlOVUxMLAorCQkJCQkJCSZ0ZXN0X2luaXRpYWxfZW50cmllcywKKwkJ CQkJCQlURVNUX0lOSVRJQUxfRU5UUklFU19ERUZBVUxULAorCQkJCQkJCTEsCisJCQkJCQkJSU5U X01BWCwKKwkJCQkJCQlndWNfY29udGV4dCwKKwkJCQkJCQkwLAorCQkJCQkJCU5VTEwsIE5VTEws IE5VTEwpOworCisJRGVmaW5lQ3VzdG9tSW50VmFyaWFibGUoInJlc2l6YWJsZV9zaG1lbS5tYXhf ZW50cmllcyIsCisJCQkJCQkJIk1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIHRlc3Qg c3RydWN0dXJlLiIsCisJCQkJCQkJTlVMTCwKKwkJCQkJCQkmdGVzdF9tYXhfZW50cmllcywKKwkJ CQkJCQlURVNUX01BWF9FTlRSSUVTX0RFRkFVTFQsCisJCQkJCQkJMSwKKwkJCQkJCQlJTlRfTUFY LAorCQkJCQkJCWd1Y19jb250ZXh0LAorCQkJCQkJCTAsCisJCQkJCQkJTlVMTCwgTlVMTCwgTlVM TCk7CisKKwkvKgorCSAqIFdoZW4gbG9hZGVkIGFmdGVyIHN0YXJ0dXAgYnkgYSBiYWNrZW5kIHRo YXQgaXMgbm90IGNyZWF0aW5nIHRoZQorCSAqIGV4dGVuc2lvbiwgdGhlIHNoYXJlZCBtZW1vcnkg bWlnaHQgaGF2ZSBiZWVuIHJlc2l6ZWQgdG8gYSBzaXplIG90aGVyCisJICogdGhhbiB0aGUgaW5p dGlhbCBzaXplLiBVc2UgU0hNRU1fQVRUQUNIX1VOS05PV05fU0laRSB0byBhdHRhY2ggd2l0aG91 dAorCSAqIGtub3dpbmcgdGhlIGV4YWN0IHNpemUuCisJICovCisJaWYgKCFwcm9jZXNzX3NoYXJl ZF9wcmVsb2FkX2xpYnJhcmllc19pbl9wcm9ncmVzcyAmJiAhY3JlYXRpbmdfZXh0ZW5zaW9uKQor CQl1c2VfdW5rbm93bl9zaXplID0gdHJ1ZTsKKworCVJlZ2lzdGVyU2htZW1DYWxsYmFja3MoJnNo bWVtX2NhbGxiYWNrcyk7Cit9CisKKy8qCisgKiBSZXF1ZXN0IHNoYXJlZCBtZW1vcnkgcmVzb3Vy Y2VzCisgKi8KK3N0YXRpYyB2b2lkCityZXNpemFibGVfc2htZW1fcmVxdWVzdCh2b2lkICphcmcp Cit7CisJU2l6ZQkJaW5pdGlhbF9zaXplID0gYWRkX3NpemUob2Zmc2V0b2YoVGVzdFJlc2l6YWJs ZVNobWVtU3RydWN0LCBkYXRhKSwKKwkJCQkJCQkJCQltdWxfc2l6ZSh0ZXN0X2luaXRpYWxfZW50 cmllcywgVEVTVF9FTlRSWV9TSVpFKSk7CisjaWZkZWYgSEFWRV9SRVNJWkFCTEVfU0hNRU0KKwlT aXplCQltYXhfc2l6ZSA9IGFkZF9zaXplKG9mZnNldG9mKFRlc3RSZXNpemFibGVTaG1lbVN0cnVj dCwgZGF0YSksCisJCQkJCQkJCQltdWxfc2l6ZSh0ZXN0X21heF9lbnRyaWVzLCBURVNUX0VOVFJZ X1NJWkUpKTsKKyNlbmRpZgorCisJLyogUmVnaXN0ZXIgb3VyIHJlc2l6YWJsZSBzaGFyZWQgbWVt b3J5IHN0cnVjdHVyZSAqLworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJyZXNpemFibGVf c2htZW0iLAorCQkJCQkgICAuc2l6ZSA9IHVzZV91bmtub3duX3NpemUgPyBTSE1FTV9BVFRBQ0hf VU5LTk9XTl9TSVpFIDogaW5pdGlhbF9zaXplLAorI2lmZGVmIEhBVkVfUkVTSVpBQkxFX1NITUVN CisJCQkJCSAgIC5tYXhpbXVtX3NpemUgPSBtYXhfc2l6ZSwKKyNlbmRpZgorCQkJCQkgICAucHRy ID0gKHZvaWQgKiopICZyZXNpemFibGVfc2htZW0sCisJCSk7Cit9CisKKy8qCisgKiBJbml0aWFs aXplIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlCisgKi8KK3N0YXRpYyB2b2lkCityZXNpemFibGVf c2htZW1fc2htZW1faW5pdCh2b2lkICphcmcpCit7CisJLyoKKwkgKiBTaGFyZWQgbWVtb3J5IHN0 cnVjdHVyZSBzaG91bGQgaGF2ZSBiZWVuIGFscmVhZHkgYWxsb2NhdGVkLiBJbml0aWFsaXplCisJ ICogaXQuCisJICovCisJQXNzZXJ0KHJlc2l6YWJsZV9zaG1lbSAhPSBOVUxMKTsKKworCXJlc2l6 YWJsZV9zaG1lbS0+bnVtX2VudHJpZXMgPSB0ZXN0X2luaXRpYWxfZW50cmllczsKKwltZW1zZXQo cmVzaXphYmxlX3NobWVtLT5kYXRhLCAwLCBtdWxfc2l6ZSh0ZXN0X2luaXRpYWxfZW50cmllcywg VEVTVF9FTlRSWV9TSVpFKSk7Cit9CisKKy8qCisgKiBSZXNpemUgdGhlIHNoYXJlZCBtZW1vcnkg c3RydWN0dXJlIHRvIGFjY29tbW9kYXRlIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mCisgKiBlbnRy aWVzLgorICovCitEYXR1bQorcmVzaXphYmxlX3NobWVtX3Jlc2l6ZShQR19GVU5DVElPTl9BUkdT KQoreworI2lmZGVmIEhBVkVfUkVTSVpBQkxFX1NITUVNCisJaW50MzIJCW5ld19lbnRyaWVzID0g UEdfR0VUQVJHX0lOVDMyKDApOworCVNpemUJCW5ld19zaXplOworCisJaWYgKCFyZXNpemFibGVf c2htZW0pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9U X0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygicmVzaXphYmxlX3NobWVtIGlz IG5vdCBpbml0aWFsaXplZCIpKSk7CisKKwluZXdfc2l6ZSA9IGFkZF9zaXplKG9mZnNldG9mKFRl c3RSZXNpemFibGVTaG1lbVN0cnVjdCwgZGF0YSksCisJCQkJCQltdWxfc2l6ZShuZXdfZW50cmll cywgVEVTVF9FTlRSWV9TSVpFKSk7CisJU2htZW1SZXNpemVTdHJ1Y3QoInJlc2l6YWJsZV9zaG1l bSIsIG5ld19zaXplKTsKKwlyZXNpemFibGVfc2htZW0tPm51bV9lbnRyaWVzID0gbmV3X2VudHJp ZXM7CisKKwlQR19SRVRVUk5fVk9JRCgpOworI2Vsc2UKKwllcmVwb3J0KEVSUk9SLAorCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJIGVycm1zZygicmVzaXph YmxlIHNoYXJlZCBtZW1vcnkgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIikpKTsK KyNlbmRpZgorfQorCisvKgorICogV3JpdGUgdGhlIGdpdmVuIGludGVnZXIgdmFsdWUgdG8gYWxs IGVudHJpZXMgaW4gdGhlIGRhdGEgYXJyYXkuCisgKi8KK0RhdHVtCityZXNpemFibGVfc2htZW1f d3JpdGUoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlpbnQzMgkJZW50cnlfdmFsdWUgPSBQR19HRVRB UkdfSU5UMzIoMCk7CisJaW50MzIJCWk7CisKKwlpZiAoIXJlc2l6YWJsZV9zaG1lbSkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlT SVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJyZXNpemFibGVfc2htZW0gaXMgbm90IGluaXRpYWxp emVkIikpKTsKKworCS8qIFdyaXRlIHRoZSB2YWx1ZSB0byBhbGwgY3VycmVudCBlbnRyaWVzICov CisJZm9yIChpID0gMDsgaSA8IHJlc2l6YWJsZV9zaG1lbS0+bnVtX2VudHJpZXM7IGkrKykKKwkJ cmVzaXphYmxlX3NobWVtLT5kYXRhW2ldID0gZW50cnlfdmFsdWU7CisKKwlQR19SRVRVUk5fVk9J RCgpOworfQorCisvKgorICogQ2hlY2sgd2hldGhlciB0aGUgZmlyc3QgJ2VudHJ5X2NvdW50JyBl bnRyaWVzIGFsbCBoYXZlIHRoZSBleHBlY3RlZCAnZW50cnlfdmFsdWUnLgorICogUmV0dXJucyB0 cnVlIGlmIGFsbCBtYXRjaCwgZmFsc2Ugb3RoZXJ3aXNlLgorICovCitEYXR1bQorcmVzaXphYmxl X3NobWVtX3JlYWQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlpbnQzMgkJZW50cnlfY291bnQgPSBQ R19HRVRBUkdfSU5UMzIoMCk7CisJaW50MzIJCWVudHJ5X3ZhbHVlID0gUEdfR0VUQVJHX0lOVDMy KDEpOworCWludDMyCQlpOworCisJaWYgKHJlc2l6YWJsZV9zaG1lbSA9PSBOVUxMKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJ VEVfU1RBVEUpLAorCQkJCSBlcnJtc2coInJlc2l6YWJsZV9zaG1lbSBpcyBub3QgaW5pdGlhbGl6 ZWQiKSkpOworCisJaWYgKGVudHJ5X2NvdW50IDwgMCB8fCBlbnRyeV9jb3VudCA+IHJlc2l6YWJs ZV9zaG1lbS0+bnVtX2VudHJpZXMpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJIGVycm1zZygiZW50cnlfY291bnQg JWQgaXMgb3V0IG9mIHJhbmdlICgwLi4lZCkiLCBlbnRyeV9jb3VudCwgcmVzaXphYmxlX3NobWVt LT5udW1fZW50cmllcykpKTsKKworCWZvciAoaSA9IDA7IGkgPCBlbnRyeV9jb3VudDsgaSsrKQor CXsKKwkJaWYgKHJlc2l6YWJsZV9zaG1lbS0+ZGF0YVtpXSAhPSBlbnRyeV92YWx1ZSkKKwkJCVBH X1JFVFVSTl9CT09MKGZhbHNlKTsKKwl9CisKKwlQR19SRVRVUk5fQk9PTCh0cnVlKTsKK30KKwor LyoKKyAqIFJlcG9ydCBtdWx0aXBsZSBtZW1vcnkgdXNhZ2Ugc3RhdGlzdGljcyBvZiB0aGUgY2Fs bGluZyBiYWNrZW5kIHByb2Nlc3MKKyAqIGFzIHJlcG9ydGVkIGJ5IHRoZSBrZXJuZWwuCisgKiBS ZXR1cm5zIFJzc0Fub24sIFJzc0ZpbGUsIFJzc1NobWVtLCBWbVNpemUgZnJvbSAvcHJvYy9zZWxm L3N0YXR1cyBhcyBhIHJlY29yZC4KKyAqCisgKiBUaGUgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IHRo ZXNlIHZhbHVlcyB3aWxsIGJlIGF2YWlsYWJsZSBpbgorICogL3Byb2Mvc2VsZi9zdGF0dXMsIGFu eSBzeXN0ZW0gd2hpY2ggYWxzbyBzdXBwb3J0IG1hZHZpc2Ugd2l0aCBNQURWX1JFTU9WRSBhbmQK KyAqIE1BRFZfUE9QVUxBVEVfV1JJVEUuCisgKi8KK0RhdHVtCityZXNpemFibGVfc2htZW1fdXNh Z2UoUEdfRlVOQ1RJT05fQVJHUykKK3sKKyNpZmRlZiBIQVZFX1JFU0laQUJMRV9TSE1FTQorCUZJ TEUJICAgKmY7CisJY2hhcgkJbGluZVsyNTZdOworCWludDY0CQlyc3NfYW5vbl9rYiA9IC0xOwor CWludDY0CQlyc3NfZmlsZV9rYiA9IC0xOworCWludDY0CQlyc3Nfc2htZW1fa2IgPSAtMTsKKwlp bnQ2NAkJdm1fc2l6ZV9rYiA9IC0xOworCWludAkJCWZvdW5kID0gMDsKKwlUdXBsZURlc2MJdHVw ZGVzYzsKKwlEYXR1bQkJdmFsdWVzWzRdOworCWJvb2wJCW51bGxzWzRdOworCUhlYXBUdXBsZQl0 dXBsZTsKKworCS8qIE9wZW4gL3Byb2Mvc2VsZi9zdGF0dXMgdG8gcmVhZCBtZW1vcnkgaW5mb3Jt YXRpb24gKi8KKwlmID0gZm9wZW4oIi9wcm9jL3NlbGYvc3RhdHVzIiwgInIiKTsKKwlpZiAoZiA9 PSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2Vzcygp LAorCQkJCSBlcnJtc2coImNvdWxkIG5vdCBvcGVuIC9wcm9jL3NlbGYvc3RhdHVzOiAlbSIpKSk7 CisKKwkvKiBMb29rIGZvciB0aGUgbWVtb3J5IHVzYWdlIGxpbmVzICovCisJd2hpbGUgKGZnZXRz KGxpbmUsIHNpemVvZihsaW5lKSwgZikgIT0gTlVMTCAmJiBmb3VuZCA8IDQpCisJeworCQlpZiAo cnNzX2Fub25fa2IgPT0gLTEgJiYgc3NjYW5mKGxpbmUsICJSc3NBbm9uOiAlbGQga0IiLCAmcnNz X2Fub25fa2IpID09IDEpCisJCQlmb3VuZCsrOworCQllbHNlIGlmIChyc3NfZmlsZV9rYiA9PSAt MSAmJiBzc2NhbmYobGluZSwgIlJzc0ZpbGU6ICVsZCBrQiIsICZyc3NfZmlsZV9rYikgPT0gMSkK KwkJCWZvdW5kKys7CisJCWVsc2UgaWYgKHJzc19zaG1lbV9rYiA9PSAtMSAmJiBzc2NhbmYobGlu ZSwgIlJzc1NobWVtOiAlbGQga0IiLCAmcnNzX3NobWVtX2tiKSA9PSAxKQorCQkJZm91bmQrKzsK KwkJZWxzZSBpZiAodm1fc2l6ZV9rYiA9PSAtMSAmJiBzc2NhbmYobGluZSwgIlZtU2l6ZTogJWxk IGtCIiwgJnZtX3NpemVfa2IpID09IDEpCisJCQlmb3VuZCsrOworCX0KKworCWZjbG9zZShmKTsK KworCS8qIEJ1aWxkIHR1cGxlIGRlc2NyaXB0b3IgZm9yIG91ciByZXN1bHQgdHlwZSAqLworCWlm IChnZXRfY2FsbF9yZXN1bHRfdHlwZShmY2luZm8sIE5VTEwsICZ0dXBkZXNjKSAhPSBUWVBFRlVO Q19DT01QT1NJVEUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFU VVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coImZ1bmN0aW9uIHJldHVybmluZyByZWNv cmQgY2FsbGVkIGluIGNvbnRleHQgIgorCQkJCQkJInRoYXQgY2Fubm90IGFjY2VwdCBhIHJlY29y ZCIpKSk7CisKKwkvKiBCdWlsZCB0aGUgcmVzdWx0IHR1cGxlICovCisJdmFsdWVzWzBdID0gSW50 NjRHZXREYXR1bShyc3NfYW5vbl9rYiA+PSAwID8gcnNzX2Fub25fa2IgKiAxMDI0IDogMCk7CisJ dmFsdWVzWzFdID0gSW50NjRHZXREYXR1bShyc3NfZmlsZV9rYiA+PSAwID8gcnNzX2ZpbGVfa2Ig KiAxMDI0IDogMCk7CisJdmFsdWVzWzJdID0gSW50NjRHZXREYXR1bShyc3Nfc2htZW1fa2IgPj0g MCA/IHJzc19zaG1lbV9rYiAqIDEwMjQgOiAwKTsKKwl2YWx1ZXNbM10gPSBJbnQ2NEdldERhdHVt KHZtX3NpemVfa2IgPj0gMCA/IHZtX3NpemVfa2IgKiAxMDI0IDogMCk7CisKKwludWxsc1swXSA9 IG51bGxzWzFdID0gbnVsbHNbMl0gPSBudWxsc1szXSA9IGZhbHNlOworCisJdHVwbGUgPSBoZWFw X2Zvcm1fdHVwbGUodHVwZGVzYywgdmFsdWVzLCBudWxscyk7CisJUEdfUkVUVVJOX0RBVFVNKEhl YXBUdXBsZUdldERhdHVtKHR1cGxlKSk7CisjZWxzZQorCWVyZXBvcnQoRVJST1IsCisJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkgZXJybXNnKCJyZXNpemFi bGUgc2hhcmVkIG1lbW9yeSBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iKSkpOwor I2VuZGlmCit9CisKKy8qCisgKiByZXNpemFibGVfc2htZW1fcGFnZXNpemUoKSAtIEdldCB0aGUg c2hhcmVkIG1lbW9yeSBwYWdlIHNpemUKKyAqLworRGF0dW0KK3Jlc2l6YWJsZV9zaG1lbV9wYWdl c2l6ZShQR19GVU5DVElPTl9BUkdTKQoreworCVBHX1JFVFVSTl9JTlQzMihwZ19nZXRfc2htZW1f cGFnZXNpemUoKSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9z aG1lbS9yZXNpemFibGVfc2htZW0uY29udHJvbCBiL3NyYy90ZXN0L21vZHVsZXMvcmVzaXphYmxl X3NobWVtL3Jlc2l6YWJsZV9zaG1lbS5jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi44MDMxMzAzZmUwZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21v ZHVsZXMvcmVzaXphYmxlX3NobWVtL3Jlc2l6YWJsZV9zaG1lbS5jb250cm9sCkBAIC0wLDAgKzEs NCBAQAorIyByZXNpemFibGVfc2htZW0gZXh0ZW5zaW9uIHRlc3QgbW9kdWxlCitjb21tZW50ID0g J3Rlc3QgbW9kdWxlIGZvciB0ZXN0aW5nIHJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IHN0cnVjdHVy ZSBmdW5jdGlvbmFsaXR5JworZGVmYXVsdF92ZXJzaW9uID0gJzEuMCcKK21vZHVsZV9wYXRobmFt ZSA9ICckbGliZGlyL3Jlc2l6YWJsZV9zaG1lbScKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVs ZXMvcmVzaXphYmxlX3NobWVtL3QvMDAxX3Jlc2l6YWJsZV9zaG1lbS5wbCBiL3NyYy90ZXN0L21v ZHVsZXMvcmVzaXphYmxlX3NobWVtL3QvMDAxX3Jlc2l6YWJsZV9zaG1lbS5wbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjMxMzJlYTFhZTMKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9tb2R1bGVzL3Jlc2l6YWJsZV9zaG1lbS90LzAwMV9yZXNpemFibGVfc2ht ZW0ucGwKQEAgLTAsMCArMSwyMzUgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LTIwMjYsIFBvc3Rn cmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2Fybmlu Z3MgRkFUQUwgPT4gJ2FsbCc7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKKyMgVGVzdCByZXNp emFibGUgc2hhcmVkIG1lbW9yeSBmdW5jdGlvbmFsaXR5LCBib3RoIHdoZW4gbG9hZGVkIGF0IHN0 YXJ0dXAgdmlhCisjIHNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcyBhbmQgd2hlbiBsb2FkZWQgYWZ0 ZXIgc3RhcnR1cCAobGF0ZSBhbGxvY2F0aW9uKS4KKworIyBWZXJpZnkgdGhhdCBSc3NTaG1lbSBk b2VzIG5vdCBleGNlZWQgdGhlIHRvdGFsIGFsbG9jYXRlZCBzaGFyZWQgbWVtb3J5LgorIyBBbGxv Y2F0ZWQgc2hhcmVkIG1lbW9yeSBzaG91bGQgYmUgbW9zdGx5IHRoZSBtZW1vcnkgYWxsb2NhdGVk IHRvIHRoZQorIyByZXNpemFibGVfc2htZW0gc3RydWN0dXJlLiBBbnkgbGFyZ2UgaW5jcmVhc2Ug aW4gZXhwZWN0ZWQgUnNzU2htZW0gc2hvdWxkCisjIHJlZmxlY3QgdGhlIHVuZXhwZWN0ZWQgaW5j cmVhc2UgaW4gbWVtb3J5IGFsbG9jYXRlZCB0byB0aGUgcmVzaXphYmxlX3NobWVtCisjIHN0cnVj dHVyZS4KK3N1YiBjaGVja19zaG1lbV91c2FnZQoreworCW15ICgkc2Vzc2lvbiwgJGxhYmVsLCAk bm9kZSkgPSBAXzsKKworCW15ICRyc3Nfc2htZW0gPSAkc2Vzc2lvbi0+cXVlcnlfc2FmZSgnU0VM RUNUIHJzc19zaG1lbSBGUk9NIHJlc2l6YWJsZV9zaG1lbV91c2FnZSgpOycsCisJCQkJCQkJCQkJ IHZlcmJvc2UgPT4gMCk7CisJbXkgJHRvdGFsX2FsbG9jID0gJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkJCQkJCQkJICAgIlNFTEVDVCBzdW0oYWxsb2NhdGVkX3NpemUpIEZST00gcGdf c2htZW1fYWxsb2NhdGlvbnM7Iik7CisKKwlub3RlICIkbGFiZWw6IFJzc1NobWVtPSRyc3Nfc2ht ZW0sIHN1bShhbGxvY2F0ZWRfc2l6ZSk9JHRvdGFsX2FsbG9jIjsKKwlvaygkcnNzX3NobWVtIDw9 ICR0b3RhbF9hbGxvYywgIiRsYWJlbDogUnNzU2htZW0gZG9lcyBub3QgZXhjZWVkIHRvdGFsIGFs bG9jYXRlZCBzaXplIik7Cit9CisKKyMgVGVzdCBhIHJlc2l6ZSBvcGVyYXRpb246IHJlc2l6ZSwg dmVyaWZ5IG9sZCBkYXRhLCB3cml0ZSBuZXcgZGF0YSwgdmVyaWZ5CisjIG5ldyBkYXRhLCBhbmQg Y2hlY2sgc2htZW0gdXNhZ2UuICBSZXR1cm5zIHVwZGF0ZWQgKCRudW1fZW50cmllcywgJHZhbHVl KS4KK3N1YiB0ZXN0X3Jlc2l6ZQoreworCW15ICgkbm9kZSwgJHByZWZpeCwgJG9sZF9udW1fZW50 cmllcywgJG9sZF92YWx1ZSwgJG5ld19udW1fZW50cmllcywgJG5ld192YWx1ZSwgJGxhYmVsKSA9 IEBfOworCisJJGxhYmVsID0gIiRwcmVmaXg6ICRsYWJlbCI7CisKKwlteSAkc2Vzc2lvbjEgPSAk bm9kZS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOworCW15ICRzZXNzaW9uMiA9ICRub2Rl LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7CisKKwkkc2Vzc2lvbjEtPnF1ZXJ5X3NhZmUo IlNFTEVDVCByZXNpemFibGVfc2htZW1fcmVzaXplKCRuZXdfbnVtX2VudHJpZXMpOyIsCisJCQkJ CQkgIHZlcmJvc2UgPT4gMCk7CisKKwkjIE9sZCBkYXRhIHNob3VsZCBzdGlsbCBiZSBpbnRhY3Qg aW4gdGhlIChwb3NzaWJseSBzbWFsbGVyKSBhcmVhCisJbXkgJHJlYWRhYmxlX2VudHJpZXMgPSAo JG5ld19udW1fZW50cmllcyA8ICRvbGRfbnVtX2VudHJpZXMpID8gJG5ld19udW1fZW50cmllcyA6 ICRvbGRfbnVtX2VudHJpZXM7CisJaXMoJHNlc3Npb24xLT5xdWVyeV9zYWZlKCJTRUxFQ1QgcmVz aXphYmxlX3NobWVtX3JlYWQoJHJlYWRhYmxlX2VudHJpZXMsICRvbGRfdmFsdWUpOyIsCisJCQkJ CQkJIHZlcmJvc2UgPT4gMCksCisJICAgJ3QnLCAib2xkIGRhdGEgcmVhZGFibGUgYWZ0ZXIgJGxh YmVsIik7CisKKwkkc2Vzc2lvbjItPnF1ZXJ5X3NhZmUoIlNFTEVDVCByZXNpemFibGVfc2htZW1f d3JpdGUoJG5ld192YWx1ZSk7IiwKKwkJCQkJCSAgdmVyYm9zZSA9PiAwKTsKKwlpcygkc2Vzc2lv bjEtPnF1ZXJ5X3NhZmUoIlNFTEVDVCByZXNpemFibGVfc2htZW1fcmVhZCgkbmV3X251bV9lbnRy aWVzLCAkbmV3X3ZhbHVlKTsiLAorCQkJCQkJCSB2ZXJib3NlID0+IDApLAorCSAgICd0JywgIm5l dyBkYXRhIHJlYWRhYmxlIGFmdGVyICRsYWJlbCIpOworCisJY2hlY2tfc2htZW1fdXNhZ2UoJHNl c3Npb24xLCAiJGxhYmVsIChzZXNzaW9uIDEpIiwgJG5vZGUpOworCWNoZWNrX3NobWVtX3VzYWdl KCRzZXNzaW9uMiwgIiRsYWJlbCAoc2Vzc2lvbiAyKSIsICRub2RlKTsKKworCSRzZXNzaW9uMS0+ cXVpdDsKKwkkc2Vzc2lvbjItPnF1aXQ7CisKKwlyZXR1cm4gKCRuZXdfbnVtX2VudHJpZXMsICRu ZXdfdmFsdWUpOworfQorCisjIFJ1biB0aGUgZnVsbCBzdWl0ZSBvZiByZXNpemFibGUgc2hhcmVk IG1lbW9yeSB0ZXN0cyBvbiB0aGUgZ2l2ZW4gbm9kZS4KK3N1YiBydW5fcmVzaXphYmxlX3Rlc3Rz Cit7CisJbXkgKCRub2RlLCAkaW5pdGlhbF9lbnRyaWVzLCAkbWF4X2VudHJpZXMsICRwcmVmaXgp ID0gQF87CisKKwlteSAkaGF2ZV9yZXNpemFibGVfc2htZW0gPSAkbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICdTSE9XIGhhdmVfcmVzaXphYmxlX3NobWVtOycpIGVxICdvbic7CisKKwlteSAk bnVtX2VudHJpZXMgPSAkaW5pdGlhbF9lbnRyaWVzOworCisJIyBCYXNpYyByZWFkL3dyaXRlIHNo b3VsZCB3b3JrIG9uIGFsbCBwbGF0Zm9ybXMKKwlteSAkdmFsdWUgPSAxMDA7CisJJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHJlc2l6YWJsZV9zaG1lbV93cml0ZSgkdmFsdWUp OyIpOworCWlzKCRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCByZXNpemFibGVf c2htZW1fcmVhZCgkbnVtX2VudHJpZXMsICR2YWx1ZSk7IiksCisJICAgJ3QnLCAiJHByZWZpeDog ZGF0YSByZWFkIGFmdGVyIHdyaXRlIHN1Y2Nlc3NmdWwiKTsKKworCWlmICgkaGF2ZV9yZXNpemFi bGVfc2htZW0pCisJeworCQkjIEluaXRpYWwgc3RydWN0dXJlIHN0YXRlCisJCW15ICRzZXNzaW9u MSA9ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7CisJCW15ICRzZXNzaW9uMiA9 ICRub2RlLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJyk7CisKKwkJJHZhbHVlID0gMTAwOwor CQkjIFdyaXRlIGFuZCByZWFkIHRoZSBpbml0aWFsIHNldCBvZiBlbnRyaWVzLgorCQkkc2Vzc2lv bjEtPnF1ZXJ5X3NhZmUoIlNFTEVDVCByZXNpemFibGVfc2htZW1fd3JpdGUoJHZhbHVlKTsiLCB2 ZXJib3NlID0+IDApOworCQlpcygkc2Vzc2lvbjItPnF1ZXJ5X3NhZmUoIlNFTEVDVCByZXNpemFi bGVfc2htZW1fcmVhZCgkbnVtX2VudHJpZXMsICR2YWx1ZSk7IiwKKwkJCQkJCQkJIHZlcmJvc2Ug PT4gMCksCisJCSAgICd0JywgIiRwcmVmaXg6IGRhdGEgcmVhZCBhZnRlciB3cml0ZSBzdWNjZXNz ZnVsIik7CisJCWNoZWNrX3NobWVtX3VzYWdlKCRzZXNzaW9uMSwgIiRwcmVmaXg6IGluaXRpYWwg d3JpdGUgKHNlc3Npb24gMSkiLCAkbm9kZSk7CisJCWNoZWNrX3NobWVtX3VzYWdlKCRzZXNzaW9u MiwgIiRwcmVmaXg6IGluaXRpYWwgd3JpdGUgKHNlc3Npb24gMikiLCAkbm9kZSk7CisJCSRzZXNz aW9uMS0+cXVpdDsKKwkJJHNlc3Npb24yLT5xdWl0OworCisJCSMgVmVyaWZ5IG5vIG90aGVyIHN0 cnVjdHVyZSBpcyByZXNpemFibGUKKwkJaXMoJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGNvdW50KCopIEZST00gcGdfc2htZW1fYWxsb2NhdGlvbnMgV0hFUkUgbmFtZSA8PiAn cmVzaXphYmxlX3NobWVtJyBBTkQgbWF4aW11bV9zaXplIDw+IDA7IiksCisJCQkJCQkJJzAnLCAi JHByZWZpeDogbm8gb3RoZXIgcmVzaXphYmxlIHN0cnVjdHVyZXMiKTsKKworCQkjIFJlc2l6ZSB0 byBtYXhpbXVtCisJCSgkbnVtX2VudHJpZXMsICR2YWx1ZSkgPSB0ZXN0X3Jlc2l6ZSgkbm9kZSwg JHByZWZpeCwgJG51bV9lbnRyaWVzLCAkdmFsdWUsCisJCQkJCQkJCQkJCSAkbWF4X2VudHJpZXMs IDUwMCwgJ3Jlc2l6ZSB0byBtYXhpbXVtJyk7CisKKwkJIyBTaHJpbmsgdG8gNzUlIG9mIG1heAor CQlteSAkc2hyaW5rX2VudHJpZXMgPSBpbnQoJG1heF9lbnRyaWVzICogMyAvIDQpOworCQkoJG51 bV9lbnRyaWVzLCAkdmFsdWUpID0gdGVzdF9yZXNpemUoJG5vZGUsICRwcmVmaXgsICRudW1fZW50 cmllcywgJHZhbHVlLAorCQkJCQkJCQkJCQkgJHNocmlua19lbnRyaWVzLCA5OTksICdzaHJpbmtp bmcnKTsKKworCQkjIFJlc2l6ZSB0byB0aGUgc2FtZSBzaXplIChuby1vcCkKKwkJKCRudW1fZW50 cmllcywgJHZhbHVlKSA9IHRlc3RfcmVzaXplKCRub2RlLCAkcHJlZml4LCAkbnVtX2VudHJpZXMs ICR2YWx1ZSwKKwkJCQkJCQkJCQkJICRudW1fZW50cmllcywgMTk5OSwgJ25vLW9wIHJlc2l6ZScp OworCisJCSMgVGVzdCByZXNpemUgZmFpbHVyZSAoYXR0ZW1wdCB0byByZXNpemUgYmV5b25kIG1h eCAtIHNob3VsZCBmYWlsKQorCQlteSAoJHJldCwgJHN0ZG91dCwgJHN0ZGVycikgPQorCQkJJG5v ZGUtPnBzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCByZXNpemFibGVfc2htZW1fcmVzaXplKCIgLiAo JG1heF9lbnRyaWVzICogMikgLiAiKTsiKTsKKwkJb2soJHJldCAhPSAwIHx8ICRzdGRlcnIgPX4g L0VSUk9SLywgIiRwcmVmaXg6IFJlc2l6ZSBiZXlvbmQgbWF4aW11bSBmYWlscyIpOworCX0KKwll bHNlCisJeworCQkjIE9uIHVuc3VwcG9ydGVkIHBsYXRmb3JtcywgcmVzaXppbmcgc2hvdWxkIGZh aWwgd2l0aCBhIGNsZWFyIGVycm9yCisJCW15ICgkcmV0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9CisJ CQkkbm9kZS0+cHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHJlc2l6YWJsZV9zaG1lbV9yZXNpemUo JG51bV9lbnRyaWVzKTsiKTsKKwkJb2soJHJldCAhPSAwLCAiJHByZWZpeDogcmVzaXplIGZhaWxz IG9uIHVuc3VwcG9ydGVkIHBsYXRmb3JtIik7CisJCWxpa2UoJHN0ZGVyciwgcXIvbm90IHN1cHBv cnRlZC8sICIkcHJlZml4OiByZXNpemUgZXJyb3IgbWVudGlvbnMgbm90IHN1cHBvcnRlZCIpOwor CX0KK30KKworIyMjIFNldCB1cCBhIHRlc3Qgbm9kZS4KKyMKKyNDb25maWd1cmUgbWluaW1hbCBz aGFyZWQgbWVtb3J5IHNvIHRoYXQgdGhlIHJlc2l6YWJsZV9zaG1lbSBzdHJ1Y3R1cmUgZG9taW5h dGVzCisjYW5kIGFueSB1bmV4cGVjdGVkIGluY3JlYXNlIGlzIGVhc3kgdG8gZGV0ZWN0LgorIyMj CitteSAkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncmVzaXphYmxlX3No bWVtJyk7Ciskbm9kZS0+aW5pdDsKKworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLCAnc2hhcmVkX2J1ZmZlcnMgPSAxMjhrQicpOworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLCAnbWF4X2Nvbm5lY3Rpb25zID0gNScpOworJG5vZGUtPmFwcGVuZF9jb25m KCdwb3N0Z3Jlc3FsLmNvbmYnLCAnbWF4X3dvcmtlcl9wcm9jZXNzZXMgPSAwJyk7Ciskbm9kZS0+ YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdtYXhfd2FsX3NlbmRlcnMgPSAwJyk7Cisk bm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdtYXhfcHJlcGFyZWRfdHJhbnNh Y3Rpb25zID0gMCcpOworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnbWF4 X2xvY2tzX3Blcl90cmFuc2FjdGlvbiA9IDEwJyk7Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicsICdtYXhfcHJlZF9sb2Nrc19wZXJfdHJhbnNhY3Rpb24gPSAxMCcpOworJG5v ZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnd2FsX2J1ZmZlcnMgPSAzMmtCJyk7 CisKKyMjIworIyBUZXN0IDE6IFN0YXJ0dXAgYWxsb2NhdGlvbiB2aWEgc2hhcmVkX3ByZWxvYWRf bGlicmFyaWVzCisjIyMKK215ICRzdGFydHVwX2luaXRpYWwgPSAyNSAqIDEwMjQgKiAxMDI0Owor bXkgJHN0YXJ0dXBfbWF4ID0gMTAwICogMTAyNCAqIDEwMjQ7CisKKyRub2RlLT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywgJ3NoYXJlZF9wcmVsb2FkX2xpYnJhcmllcyA9IHJlc2l6YWJs ZV9zaG1lbScpOworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAicmVzaXph YmxlX3NobWVtLmluaXRpYWxfZW50cmllcyA9ICRzdGFydHVwX2luaXRpYWwiKTsKKyRub2RlLT5h cHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgInJlc2l6YWJsZV9zaG1lbS5tYXhfZW50cmll cyA9ICRzdGFydHVwX21heCIpOworJG5vZGUtPnN0YXJ0OworJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAnQ1JFQVRFIEVYVEVOU0lPTiByZXNpemFibGVfc2htZW07Jyk7CitydW5fcmVzaXph YmxlX3Rlc3RzKCRub2RlLCAkc3RhcnR1cF9pbml0aWFsLCAkc3RhcnR1cF9tYXgsICdzdGFydHVw Jyk7CisKK215ICRoYXZlX3Jlc2l6YWJsZV9zaG1lbSA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgJ1NIT1cgaGF2ZV9yZXNpemFibGVfc2htZW07JykgZXEgJ29uJzsKKworIyMjCisjIFRl c3QgMjogTGF0ZSBhbGxvY2F0aW9uIChsb2FkZWQgYWZ0ZXIgc3RhcnR1cCwgbm90IGluIHNoYXJl ZF9wcmVsb2FkX2xpYnJhcmllcykuCisjIFVzZSBtdWNoIHNtYWxsZXIgc2l6ZXMgc2luY2Ugb25s eSB+MTAwS0Igb2Ygc2hhcmVkIG1lbW9yeSBpcyBhdmFpbGFibGUgZm9yCisjIHN0cnVjdHVyZXMg YWxsb2NhdGVkIGFmdGVyIHN0YXJ0dXAuCisjIyMKK215ICRsYXRlX2luaXRpYWwgPSA1ICogMTAy NDsKK215ICRsYXRlX21heCA9IDEyICogMTAyNDsKKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxcXsKKwlBTFRFUiBTWVNURU0gUkVTRVQgc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzOwor CUFMVEVSIFNZU1RFTSBTRVQgcmVzaXphYmxlX3NobWVtLmluaXRpYWxfZW50cmllcyA9ICRsYXRl X2luaXRpYWw7CisJQUxURVIgU1lTVEVNIFNFVCByZXNpemFibGVfc2htZW0ubWF4X2VudHJpZXMg PSAkbGF0ZV9tYXg7Cit9KTsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgRVhU RU5TSU9OIHJlc2l6YWJsZV9zaG1lbTsnKTsKKyRub2RlLT5yZXN0YXJ0OworCiskbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgRVhURU5TSU9OIHJlc2l6YWJsZV9zaG1lbTsnKTsK K3J1bl9yZXNpemFibGVfdGVzdHMoJG5vZGUsICRsYXRlX2luaXRpYWwsICRsYXRlX21heCwgJ2xh dGUnKTsKKworIyMjCisjIFRlc3Qgc3lzdiBzaGFyZWQgbWVtb3J5IGRvZXMgbm90IHN1cHBvcnQg cmVzaXphYmxlIHNobWVtLiAgT25seSByZWxldmFudCBvbgorIyBwbGF0Zm9ybXMgdGhhdCBzdXBw b3J0IHJlc2l6YWJsZSBzaG1lbSAoSEFWRV9SRVNJWkFCTEVfU0hNRU0pLCBzaW5jZSB0aGUKKyMg bW9kdWxlIG9ubHkgc2V0cyBtYXhpbXVtX3NpemUgaW4gdGhhdCBjYXNlLgorIyMjCitpZiAoJGhh dmVfcmVzaXphYmxlX3NobWVtKQoreworCSMjIworCSMgVGVzdCAzOiBWZXJpZnkgdGhhdCBDUkVB VEUgRVhURU5TSU9OIGZhaWxzIHdpdGggc3lzdiBzaGFyZWQgbWVtb3J5CisJIyB3aGVuIGxvYWRl ZCBhZnRlciBzdGFydHVwIChub3QgaW4gc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzKS4KKwkjIyMK Kwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIEVYVEVOU0lPTiByZXNpemFibGVf c2htZW07Jyk7CisKKwkjIFJlbW92ZSBzZXR0aW5ncyB0aGF0IHdvdWxkIGNhdXNlIHRoZSBsaWJy YXJ5IHRvIGF1dG8tbG9hZCBhdCBzdGFydHVwOgorCSMgc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVz IGFuZCBtb2R1bGUtcHJlZml4ZWQgR1VDcy4gIEFMVEVSIFNZU1RFTSBSRVNFVAorCSMgb25seSBh ZmZlY3RzIHBvc3RncmVzcWwuYXV0by5jb25mLCBzbyB3ZSBtdXN0IHVzZSBhZGp1c3RfY29uZiB0 byByZW1vdmUKKwkjIGZyb20gcG9zdGdyZXNxbC5jb25mLgorCSRub2RlLT5hZGp1c3RfY29uZign cG9zdGdyZXNxbC5jb25mJywgJ3NoYXJlZF9wcmVsb2FkX2xpYnJhcmllcycsIHVuZGVmKTsKKwkk bm9kZS0+YWRqdXN0X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICdyZXNpemFibGVfc2htZW0uaW5p dGlhbF9lbnRyaWVzJywgdW5kZWYpOworCSRub2RlLT5hZGp1c3RfY29uZigncG9zdGdyZXNxbC5j b25mJywgJ3Jlc2l6YWJsZV9zaG1lbS5tYXhfZW50cmllcycsIHVuZGVmKTsKKwkkbm9kZS0+YWRq dXN0X2NvbmYoJ3Bvc3RncmVzcWwuYXV0by5jb25mJywgJ3NoYXJlZF9wcmVsb2FkX2xpYnJhcmll cycsIHVuZGVmKTsKKwkkbm9kZS0+YWRqdXN0X2NvbmYoJ3Bvc3RncmVzcWwuYXV0by5jb25mJywg J3Jlc2l6YWJsZV9zaG1lbS5pbml0aWFsX2VudHJpZXMnLCB1bmRlZik7CisJJG5vZGUtPmFkanVz dF9jb25mKCdwb3N0Z3Jlc3FsLmF1dG8uY29uZicsICdyZXNpemFibGVfc2htZW0ubWF4X2VudHJp ZXMnLCB1bmRlZik7CisJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwkJQUxURVIg U1lTVEVNIFNFVCBzaGFyZWRfbWVtb3J5X3R5cGUgPSAnc3lzdic7CisJfSk7CisKKwkkbm9kZS0+ cmVzdGFydDsKKworCW15ICgkcmV0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9CisJCSRub2RlLT5wc3Fs KCdwb3N0Z3JlcycsICdDUkVBVEUgRVhURU5TSU9OIHJlc2l6YWJsZV9zaG1lbTsnKTsKKwlvaygk cmV0ICE9IDAsICdDUkVBVEUgRVhURU5TSU9OIGZhaWxzIHdpdGggcmVzaXphYmxlIHNobWVtIG9u IHN5c3YnKTsKKwlsaWtlKCRzdGRlcnIsIHFyL3Jlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IHJlcXVp cmVzIHNoYXJlZF9tZW1vcnlfdHlwZSA9IG1tYXAvLAorCQknQ1JFQVRFIEVYVEVOU0lPTiBlcnJv ciBtZW50aW9ucyBzaGFyZWRfbWVtb3J5X3R5cGUgPSBtbWFwIHJlcXVpcmVtZW50Jyk7CisKKwkj IyMKKwkjIFRlc3QgNDogVmVyaWZ5IHRoYXQgcmVzaXphYmxlIHN0cnVjdHVyZXMgYXJlIGFsc28g cmVqZWN0ZWQgd2l0aCBzeXN2CisJIyBzaGFyZWQgbWVtb3J5IHdoZW4gbG9hZGVkIGF0IHN0YXJ0 dXAgdmlhIHNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcy4KKwkjIyMKKwkkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHFxeworCQlBTFRFUiBTWVNURU0gU0VUIHNoYXJlZF9wcmVsb2FkX2xpYnJh cmllcyA9ICdyZXNpemFibGVfc2htZW0nOworCQlBTFRFUiBTWVNURU0gU0VUIHJlc2l6YWJsZV9z aG1lbS5pbml0aWFsX2VudHJpZXMgPSAkc3RhcnR1cF9pbml0aWFsOworCQlBTFRFUiBTWVNURU0g U0VUIHJlc2l6YWJsZV9zaG1lbS5tYXhfZW50cmllcyA9ICRzdGFydHVwX21heDsKKwl9KTsKKwkk bm9kZS0+c3RvcDsKKworCW9rKCEkbm9kZS0+c3RhcnQoZmFpbF9vayA9PiAxKSwKKwkJJ3NlcnZl ciBmYWlscyB0byBzdGFydCB3aXRoIHJlc2l6YWJsZSBzaG1lbSBvbiBzeXN2Jyk7CisKKwlteSAk bG9nID0gc2x1cnBfZmlsZSgkbm9kZS0+bG9nZmlsZSk7CisJbGlrZSgkbG9nLCBxci9yZXNpemFi bGUgc2hhcmVkIG1lbW9yeSByZXF1aXJlcyBzaGFyZWRfbWVtb3J5X3R5cGUgPSBtbWFwLywKKwkJ J2xvZyBtZW50aW9ucyBzaGFyZWRfbWVtb3J5X3R5cGUgPSBtbWFwIHJlcXVpcmVtZW50Jyk7Cit9 CisKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3No bWVtL3QvMDAxX2xhdGVfc2htZW1fYWxsb2MucGwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2ht ZW0vdC8wMDFfbGF0ZV9zaG1lbV9hbGxvYy5wbAppbmRleCBjMTU0ZjU3NjgyYS4uYzg5YjE0MDg3 MWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90LzAwMV9sYXRlX3No bWVtX2FsbG9jLnBsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90LzAwMV9sYXRl X3NobWVtX2FsbG9jLnBsCkBAIC00NSw1ICs0NSwyOCBAQCBlbHNlCiAgICBvaygkYXR0YWNoX2Nv dW50MSA9PSAwICYmICRhdHRhY2hfY291bnQyID09IDAsICJhdHRhY2ggY2FsbGJhY2sgaXMgbm90 IGNhbGxlZCB3aGVuIGxvYWRlZCB2aWEgc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzIik7CiB9CiAK KyMjIworIyBUZXN0IHRoYXQgYSBmaXhlZC1zaXplIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJlIGNh bm5vdCBiZSByZXNpemVkLgorIyBPbmx5IHJlbGV2YW50IG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBv cnQgcmVzaXphYmxlIHNobWVtLgorIyMjCitteSAkaGF2ZV9yZXNpemFibGVfc2htZW0gPQorICAk bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdTSE9XIGhhdmVfcmVzaXphYmxlX3NobWVtOycp IGVxICdvbic7CisKK2lmICgkaGF2ZV9yZXNpemFibGVfc2htZW0pCit7CisgICAjIFRyeSBleHBh bmRpbmcgdGhlIGZpeGVkLXNpemUgc3RydWN0dXJlCisgICBteSAoJHJldCwgJHN0ZG91dCwgJHN0 ZGVycikgPQorICAgICAkbm9kZS0+cHNxbCgicG9zdGdyZXMiLCAiU0VMRUNUIHRlc3Rfc2htZW1f cmVzaXplX2ZpeGVkKDEwMDApOyIpOworICAgaXNudCgkcmV0LCAwLCAiZXhwYW5kaW5nIGEgZml4 ZWQtc2l6ZSBzdHJ1Y3R1cmUgZmFpbHMiKTsKKyAgIGxpa2UoJHN0ZGVyciwgcXIvaXMgbm90IHJl c2l6YWJsZS8sICJleHBhbmQgZXJyb3IgbWVzc2FnZSBtZW50aW9ucyBub3QgcmVzaXphYmxlIik7 CisKKyAgICMgVHJ5IHNocmlua2luZyB0aGUgZml4ZWQtc2l6ZSBzdHJ1Y3R1cmUKKyAgICgkcmV0 LCAkc3Rkb3V0LCAkc3RkZXJyKSA9CisgICAgICRub2RlLT5wc3FsKCJwb3N0Z3JlcyIsICJTRUxF Q1QgdGVzdF9zaG1lbV9yZXNpemVfZml4ZWQoMSk7Iik7CisgICBpc250KCRyZXQsIDAsICJzaHJp bmtpbmcgYSBmaXhlZC1zaXplIHN0cnVjdHVyZSBmYWlscyIpOworICAgbGlrZSgkc3RkZXJyLCBx ci9pcyBub3QgcmVzaXphYmxlLywgInNocmluayBlcnJvciBtZXNzYWdlIG1lbnRpb25zIG5vdCBy ZXNpemFibGUiKTsKK30KKwogJG5vZGUtPnN0b3A7CisKIGRvbmVfdGVzdGluZygpOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0tLTEuMC5zcWwgYi9z cmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS0tMS4wLnNxbAppbmRleCAyZDAx ZmQ5MjU2Yy4uZTE2OWQwZDc3MzMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9z aG1lbS90ZXN0X3NobWVtLS0xLjAuc3FsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1l bS90ZXN0X3NobWVtLS0xLjAuc3FsCkBAIC03LDMgKzcsNyBAQAogQ1JFQVRFIEZVTkNUSU9OIGdl dF90ZXN0X3NobWVtX2F0dGFjaF9jb3VudCgpCiBSRVRVUk5TIHBnX2NhdGFsb2cuaW50NCBTVFJJ Q1QKIEFTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CisKK0NSRUFURSBGVU5DVElPTiB0 ZXN0X3NobWVtX3Jlc2l6ZV9maXhlZChwZ19jYXRhbG9nLmludDQpCitSRVRVUk5TIHBnX2NhdGFs b2cudm9pZCBTVFJJQ1QKK0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS5jIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0uYwppbmRleCA5YmQ0MDEyYjQzNS4uZmMyZmQ2 Nzg4N2YgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0X3NobWVt LmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0uYwpAQCAtOTks MyArOTksMjMgQEAgZ2V0X3Rlc3Rfc2htZW1fYXR0YWNoX2NvdW50KFBHX0ZVTkNUSU9OX0FSR1Mp CiAJCWVsb2coRVJST1IsICJzaG1lbSBhcmVhIG5vdCB5ZXQgaW5pdGlhbGl6ZWQiKTsKIAlQR19S RVRVUk5fSU5UMzIoVGVzdFNobWVtLT5hdHRhY2hfY291bnQpOwogfQorCisvKgorICogQXR0ZW1w dCB0byByZXNpemUgdGhlIGZpeGVkLXNpemUgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUuICBUaGlz IHNob3VsZAorICogZmFpbCBiZWNhdXNlIHRoZSBzdHJ1Y3R1cmUgd2FzIG5vdCBhbGxvY2F0ZWQg d2l0aCBhIG1heGltdW1fc2l6ZS4KKyAqLworUEdfRlVOQ1RJT05fSU5GT19WMSh0ZXN0X3NobWVt X3Jlc2l6ZV9maXhlZCk7CitEYXR1bQordGVzdF9zaG1lbV9yZXNpemVfZml4ZWQoUEdfRlVOQ1RJ T05fQVJHUykKK3sKKyNpZmRlZiBIQVZFX1JFU0laQUJMRV9TSE1FTQorCWludDMyCQluZXdfc2l6 ZSA9IFBHX0dFVEFSR19JTlQzMigwKTsKKworCVNobWVtUmVzaXplU3RydWN0KCJ0ZXN0X3NobWVt IGFyZWEiLCBuZXdfc2l6ZSk7CisJUEdfUkVUVVJOX1ZPSUQoKTsKKyNlbHNlCisJZXJlcG9ydChF UlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCSBl cnJtc2coInJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBw bGF0Zm9ybSIpKSk7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5k ZXggODFhNzNjNDI2ZDIuLmI4NDJjN2IxOWNkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3J1bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVz Lm91dApAQCAtMTc3MCw4ICsxNzcwLDEwIEBAIHBnX3NoYWRvd3wgU0VMRUNUIHBnX2F1dGhpZC5y b2xuYW1lIEFTIHVzZW5hbWUsCiBwZ19zaG1lbV9hbGxvY2F0aW9uc3wgU0VMRUNUIG5hbWUsCiAg ICAgb2ZmLAogICAgIHNpemUsCi0gICAgYWxsb2NhdGVkX3NpemUKLSAgIEZST00gcGdfZ2V0X3No bWVtX2FsbG9jYXRpb25zKCkgcGdfZ2V0X3NobWVtX2FsbG9jYXRpb25zKG5hbWUsIG9mZiwgc2l6 ZSwgYWxsb2NhdGVkX3NpemUpOworICAgIGFsbG9jYXRlZF9zaXplLAorICAgIG1heGltdW1fc2l6 ZSwKKyAgICBhbGxvY2F0ZWRfc3BhY2UKKyAgIEZST00gcGdfZ2V0X3NobWVtX2FsbG9jYXRpb25z KCkgcGdfZ2V0X3NobWVtX2FsbG9jYXRpb25zKG5hbWUsIG9mZiwgc2l6ZSwgYWxsb2NhdGVkX3Np emUsIG1heGltdW1fc2l6ZSwgYWxsb2NhdGVkX3NwYWNlKTsKIHBnX3NobWVtX2FsbG9jYXRpb25z X251bWF8IFNFTEVDVCBuYW1lLAogICAgIG51bWFfbm9kZSwKICAgICBzaXplCmRpZmYgLS1naXQg YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CmluZGV4IDNjMzUwOTczNjFkLi44MWJmMTJjYmMxYSAxMDA2NDQKLS0tIGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKQEAgLTMxNDYsNiArMzE0Niw3IEBAIFRlc3REU01SZWdpc3RyeUhhc2hF bnRyeQogVGVzdERTTVJlZ2lzdHJ5U3RydWN0CiBUZXN0RGVjb2RpbmdEYXRhCiBUZXN0RGVjb2Rp bmdUeG5EYXRhCitUZXN0UmVzaXphYmxlU2htZW1TdHJ1Y3QKIFRlc3RTaG1lbURhdGEKIFRlc3RT cGVjCiBUZXN0VmFsdWVUeXBlCi0tIAoyLjM0LjEKCg== --00000000000057312d064eb03f86--