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.94.2) (envelope-from ) id 1vGKD1-00CXn0-BE for pgsql-hackers@arkaria.postgresql.org; Tue, 04 Nov 2025 16:48:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1vGKD0-00F8dt-4P for pgsql-hackers@arkaria.postgresql.org; Tue, 04 Nov 2025 16:48:37 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vGKCz-00F8dl-Hr for pgsql-hackers@lists.postgresql.org; Tue, 04 Nov 2025 16:48:36 +0000 Received: from mail-ed1-x52e.google.com ([2a00:1450:4864:20::52e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vGKCt-005xjc-14 for pgsql-hackers@lists.postgresql.org; Tue, 04 Nov 2025 16:48:36 +0000 Received: by mail-ed1-x52e.google.com with SMTP id 4fb4d7f45d1cf-6407e617ad4so31708a12.0 for ; Tue, 04 Nov 2025 08:48:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762274910; x=1762879710; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=fFub/wfMjz6Km4PGeIOd20+/yx2zyZc7AnTjgv7bJ2Q=; b=VsxcCUCBDcbLpEH4MiRlHJH/7Y9D4bS3hNR4dHW7peXJ4tjNC8LqvO/U7SYxgwRTtk 0tj6HGWnnSth3blf6gBv3rDttGo0eG2GqzZvd/vadxRvCQJOj714eF1UO5IsbWw35SIR YNWqeTi5mBqWIJILdvuUV12QhcEnALFbkiqNwH5efNSgYoPOkgRAFFFBm4LuiZ1TjA43 2z+CC+9y1A5C0Nezoel4zF45+laliqWfClqrtr7rH0JioM0k5xOiJoHK+dD+kb2nIX6W ugd+W/pM1sTV8uNDG/rG7gmIkcbfyIg4zPn155B4h6GulwDQ3pwdNJWEg6iOU96SA9d7 nMug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762274910; x=1762879710; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=fFub/wfMjz6Km4PGeIOd20+/yx2zyZc7AnTjgv7bJ2Q=; b=A4z2WPxiOIh1IzAjqx21ta4nqi0HI26evNX0M7k6/prTNBlfr3ktKrk6TJwE2XaIb+ Ip27el9IzInE6PjPRbBKsPNizdMvyc/Sliqs7JBciBMBTP5+vW12IGXCSu+5PDZQeFwV f5Hy4ji279TkxuFYav2WZK3OsOQ8u2lnne/IgOHOT4WWKG+iYJzwoK4m4scsjv1NhOTv aqQXdSBhsmQUGFS8nVrG7STOWbxMwBSuvQn1/JBSvEYQAKUT2rmtZnWreD+MjPhJwM5u Xx1aEqKFhxuCV+y5HOOO4wlRfiv6f3ScGHZWxjX9rUHM+umWz4hwVkdMUqPs9XMn9MMz ioHQ== X-Forwarded-Encrypted: i=1; AJvYcCUQnwO5fdauZ7JIsGOSbiTt64lieilZ5QQfLptzKyYc+lQzYcFVLUGZF06cIxOtKel5LVqCGudLKg2Vwpbh@lists.postgresql.org X-Gm-Message-State: AOJu0YwakdjbDnNex0Hq4YbSWHyvVGg6fwlaADOOSD5L7q8XkBDVdLBQ aZG00j+pesandgTmVcw+es1SaN/FE7YORqkzfDzDngd2TdVDPf3YfMNYSZ8Oa5hjtVTLYbFufUf LkT6QXGa3IlAGHV2cTgNYZEjaRB8+2Kk= X-Gm-Gg: ASbGncsx+O5U9pbXmKqHKWCMWHznxF3dA7V670UWfgtjtZGBY7la06hue4WiTpJSyF1 Ao3+DTvJIbom8e++cpHOHM2CVwdtA8jQWk4L3onBsw1RbJan3BYpsGvD7c1cffclcHNcLD7fkq6 kh1eqXBM5AMsUEHtFiBQKUEwyAJR1TuRPk95GerFX5WqBo2DlDevGV4PeGX31wrlrxApUj0EWSl 65r2nKg7g6V4a83CCU8IWsW96+KR7prUQytkPiqlzkRBWVMIjx72c22bbDgLpvsolnRHhhIadS4 WRWcrL4Jjq21Ws3Yvg== X-Google-Smtp-Source: AGHT+IGznnVPMfXkcTDRsl/J08IXQb0xs7SgDmm6LbGdGeZqs3Sw0hxhaRC2/EGKr9glRgT4OAekVFXoWwkCHOd4cDA= X-Received: by 2002:a05:6402:20c3:20b0:640:cf02:79e7 with SMTP id 4fb4d7f45d1cf-6410387eff0mr174617a12.12.1762274909533; Tue, 04 Nov 2025 08:48:29 -0800 (PST) MIME-Version: 1.0 References: <2wk7jo4m4qwh5sn33pfgerdjfujebbccsmmlownybddbh6nawl@mdyyqpqzxjek> In-Reply-To: From: Melanie Plageman Date: Tue, 4 Nov 2025 11:48:15 -0500 X-Gm-Features: AWmQ_bld8MOVsO4bkAWr9vlhjkNEgVPD3MDBzAo4qgZ66sGUDUxEHQcJLpKrx9c Message-ID: Subject: Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: Kirill Reshke Cc: Andres Freund , Robert Haas , Andrey Borodin , PostgreSQL Hackers , Heikki Linnakangas Content-Type: multipart/mixed; boundary="000000000000fb0f430642c7990f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000fb0f430642c7990f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks for the review! On Wed, Oct 29, 2025 at 7:03=E2=80=AFAM Kirill Reshke wrote: > > get_conflict_xid function logic is bit strange for me, it assigns > conflict_xid to some value, but in the very end we have > > > + /* > >+ * We can omit the snapshot conflict horizon if we are not pruning or > >+ * freezing any tuples and are setting an already all-visible page > >+ * all-frozen in the VM. In this case, all of the tuples on the page mu= st > >+ * already be visible to all MVCC snapshots on the standby. > >+ */ > >+ if (!do_prune && !do_freeze && > >+ do_set_vm && blk_already_av && set_blk_all_frozen) > > + conflict_xid =3D InvalidTransactionId; > > I feel like we should move this check to the beginning of the > function, and just return InvalidTransactionId in that if cond. You're right. I've changed it as you suggest in attached v19. > > + if (old_vmbits =3D=3D new_vmbits) > > + { > > + LockBuffer(vmbuffer, BUFFER_LOCK_UNLOCK); > > + /* Unset so we don't emit WAL since no change occurred */ > > + do_set_vm =3D false; > > + } > > and then > > > END_CRIT_SECTION(); > > + if (do_set_vm) > > + LockBuffer(vmbuffer, BUFFER_LOCK_UNLOCK); > > + > > So, in the heap_page_prune_and_freeze function we release buffer lock > both inside and outside the crit section. As I understand, this is > actually safe. I also looked in other xlog coding practices for other > access methods (GiST, GIN, ....), and I can see that some of them > release buffers before leaving crit sections and some of them after. > But I still suggest to be in sync with 'Write-Ahead Log Coding' > section of > src/backend/access/transam/README, which says: > > 6. END_CRIT_SECTION() > > 7. Unlock and unpin the buffer(s). > > Let's be consistent in this at least in this single function context. I see what you are saying. However, I don't see a good way to determine whether or not we need to unlock the VM without introducing another local variable in the outermost scope -- like "unlock_vm". This function already has a lot of local variables, so I'm loath to do that. And we want do_set_vm to reflect whether or not we actually set it in case it gets used in the future. This function doesn't lock or unlock the heap buffer so it doesn't seem as urgent to me to follow the letter of the law in this case. Attached patch doesn't have this change, but this is what it would look lik= e: /* Lock vmbuffer before entering a critical section */ + unlock_vm =3D do_set_vm; if (do_set_vm) LockBuffer(vmbuffer, BUFFER_LOCK_EXCLUSIVE); @@ -1112,12 +1114,9 @@ heap_page_prune_and_freeze(PruneFreezeParams *params= , old_vmbits =3D visibilitymap_set(blockno, vmbuffer, new_vmbits, params->relation->rd_locator); - if (old_vmbits =3D=3D new_vmbits) - { - LockBuffer(vmbuffer, BUFFER_LOCK_UNLOCK); - /* Unset so we don't emit WAL since no change occurred */ - do_set_vm =3D false; - } + + /* Unset so we don't emit WAL since no change occurred */ + do_set_vm =3D old_vmbits !=3D new_vmbits; } /* @@ -1145,7 +1144,7 @@ heap_page_prune_and_freeze(PruneFreezeParams *params, END_CRIT_SECTION(); - if (do_set_vm) + if (unlock_vm) LockBuffer(vmbuffer, BUFFER_LOCK_UNLOCK); > In 0010: > > I'm not terribly convenient that adding SO_ALLOW_VM_SET to TAM > ScanOptions is the right thing to do. Looks like VM bits are something > that make sense for HEAP AM for not for any TAM. So, don't we break > some layer of abstraction here? Would it be better for HEAP AM to set > some flags in heap_beginscan? I don't see another good way of doing it. The information about whether or not the relation is modified in the query is gathered during planning and saved in the plan. We need to get that information to the scan descriptor, which is all we have when we call heap_page_prune_opt() during the scan. The scan descriptor is created by the table AM implementations of scan_begin(). The table AM callbacks don't pass down the plan -- which makes sense; the scan shouldn't know about the plan. They do pass down flags, so I thought it made the most sense to add a flag. Note that I was able to avoid modifying the actual table and index AM callbacks (scan_begin() and ambeginscan()). I only made new wrappers that took "modifies_rel". Now, it is true that referring to the VM is somewhat of a layering violation. Though, other table AMs may use the information about if the query modifies the relation -- which is really what this flag represents. The ScanOptions are usually either a type or a call to action. Which is why I felt a bit uncomfortable calling it something like SO_MODIFIES_REL -- which is less of an option and more a piece of information. And it makes it sound like the scan modifies the rel, which is not the case. I wonder if there is another solution. Or maybe we call it SO_QUERY_MODIFIES_REL? - Melanie --000000000000fb0f430642c7990f Content-Type: text/x-patch; charset="UTF-8"; name="v19-0001-Refactor-heap_page_prune_and_freeze-parameters-i.patch" Content-Disposition: attachment; filename="v19-0001-Refactor-heap_page_prune_and_freeze-parameters-i.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhksvs8c0 RnJvbSAzMzhmNmUzMWJmMDI5NTI3YTM4OThmZWUxZmJlNTg3ZTI0ZGU5ZjVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDExOjEwOjI1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTkgMDEvMTJdIFJlZmFjdG9yIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgcGFy YW1ldGVycwogaW50byBhIHN0cnVjdApNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRl eHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoK aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBoYWQgYWNjdW11bGF0ZWQgYW4gdW53aWVsZHkg bnVtYmVyIG9mIGlucHV0CnBhcmFtZXRlcnMsIGFuZCB1cGNvbWluZyB3b3JrIHRvIGhhbmRsZSBW TSB1cGRhdGVzIGluIHRoaXMgZnVuY3Rpb24gd2lsbAphZGQgZXZlbiBtb3JlLgoKSW50cm9kdWNl IGEgbmV3IFBydW5lRnJlZXplUGFyYW1zIHN0cnVjdCB0byBncm91cCB0aGUgZnVuY3Rpb27igJlz IGlucHV0CnBhcmFtZXRlcnMsIGltcHJvdmluZyByZWFkYWJpbGl0eSBhbmQgbWFpbnRhaW5hYmls aXR5LgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS95bjR6cDM1a2tkc2p4NndmNDd6 Y2ZteGdleHh0NGgyb2c0N3B2bncyeDVpZnlyczNxYyU0MDd1dzZqeXl4dXlmNwotLS0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICB8IDg2ICsrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8IDE2ICsrKyst LQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgIHwgNjIgKysrKysrKysrKysr KysrKy0tLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICB8ICAxICsKIDQg ZmlsZXMgY2hhbmdlZCwgMTAxIGluc2VydGlvbnMoKyksIDY0IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggMjMxYmVhNjc5YzYuLjQ1MGIyZWI2NDk0IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMjU4LDE1ICsyNTgsMjMgQEAgaGVh cF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikKIAkJaWYg KFBhZ2VJc0Z1bGwocGFnZSkgfHwgUGFnZUdldEhlYXBGcmVlU3BhY2UocGFnZSkgPCBtaW5mcmVl KQogCQl7CiAJCQlPZmZzZXROdW1iZXIgZHVtbXlfb2ZmX2xvYzsKKwkJCVBydW5lRnJlZXplUGFy YW1zIHBhcmFtczsKIAkJCVBydW5lRnJlZXplUmVzdWx0IHByZXN1bHQ7CiAKKwkJCXBhcmFtcy5y ZWxhdGlvbiA9IHJlbGF0aW9uOworCQkJcGFyYW1zLmJ1ZmZlciA9IGJ1ZmZlcjsKKwkJCXBhcmFt cy5yZWFzb24gPSBQUlVORV9PTl9BQ0NFU1M7CisJCQlwYXJhbXMudmlzdGVzdCA9IHZpc3Rlc3Q7 CisJCQlwYXJhbXMuY3V0b2ZmcyA9IE5VTEw7CisKIAkJCS8qCiAJCQkgKiBGb3Igbm93LCBwYXNz IG1hcmtfdW51c2VkX25vdyBhcyBmYWxzZSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3IKIAkJCSAq IG5vdCB0aGUgcmVsYXRpb24gaGFzIGluZGV4ZXMsIHNpbmNlIHdlIGNhbm5vdCBzYWZlbHkgZGV0 ZXJtaW5lCiAJCQkgKiB0aGF0IGR1cmluZyBvbi1hY2Nlc3MgcHJ1bmluZyB3aXRoIHRoZSBjdXJy ZW50IGltcGxlbWVudGF0aW9uLgogCQkJICovCi0JCQloZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZShyZWxhdGlvbiwgYnVmZmVyLCB2aXN0ZXN0LCAwLAotCQkJCQkJCQkJICAgTlVMTCwgJnByZXN1 bHQsIFBSVU5FX09OX0FDQ0VTUywgJmR1bW15X29mZl9sb2MsIE5VTEwsIE5VTEwpOworCQkJcGFy YW1zLm9wdGlvbnMgPSAwOworCisJCQloZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgmcGFyYW1z LCAmcHJlc3VsdCwgJmR1bW15X29mZl9sb2MsIE5VTEwsIE5VTEwpOwogCiAJCQkvKgogCQkJICog UmVwb3J0IHRoZSBudW1iZXIgb2YgdHVwbGVzIHJlY2xhaW1lZCB0byBwZ3N0YXRzLiAgVGhpcyBp cwpAQCAtNDE5LDYwICs0MjcsNDMgQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogICogYWxzbyBuZWVkIHRvIGFjY291bnQgZm9yIGEgcmVk dWN0aW9uIGluIHRoZSBsZW5ndGggb2YgdGhlIGxpbmUgcG9pbnRlcgogICogYXJyYXkgZm9sbG93 aW5nIGFycmF5IHRydW5jYXRpb24gYnkgdXMuCiAgKgotICogSWYgdGhlIEhFQVBfUFJVTkVfRlJF RVpFIG9wdGlvbiBpcyBzZXQsIHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzIGlmIGl0J3MKLSAq IHJlcXVpcmVkIGluIG9yZGVyIHRvIGFkdmFuY2UgcmVsZnJvemVueGlkIC8gcmVsbWlubXhpZCwg b3IgaWYgaXQncwotICogY29uc2lkZXJlZCBhZHZhbnRhZ2VvdXMgZm9yIG92ZXJhbGwgc3lzdGVt IHBlcmZvcm1hbmNlIHRvIGRvIHNvIG5vdy4gIFRoZQotICogJ2N1dG9mZnMnLCAncHJlc3VsdCcs ICduZXdfcmVsZnJvemVuX3hpZCcgYW5kICduZXdfcmVsbWluX214aWQnIGFyZ3VtZW50cwotICog YXJlIHJlcXVpcmVkIHdoZW4gZnJlZXppbmcuICBXaGVuIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlv biBpcyBzZXQsIHdlIGFsc28KLSAqIHNldCBwcmVzdWx0LT5hbGxfdmlzaWJsZSBhbmQgcHJlc3Vs dC0+YWxsX2Zyb3plbiBvbiBleGl0LCB0byBpbmRpY2F0ZSBpZgotICogdGhlIFZNIGJpdHMgY2Fu IGJlIHNldC4gIFRoZXkgYXJlIGFsd2F5cyBzZXQgdG8gZmFsc2Ugd2hlbiB0aGUKLSAqIEhFQVBf UFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBub3Qgc2V0LCBiZWNhdXNlIGF0IHRoZSBtb21lbnQgb25s eSBjYWxsZXJzCi0gKiB0aGF0IGFsc28gZnJlZXplIG5lZWQgdGhhdCBpbmZvcm1hdGlvbi4KLSAq Ci0gKiB2aXN0ZXN0IGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggd2hldGhlciB0dXBsZXMgYXJlIERF QUQgb3IgUkVDRU5UTFlfREVBRAotICogKHNlZSBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0p LgorICogcGFyYW1zIGNvbnRhaW5zIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIHVzZWQgdG8gY29udHJv bCBmcmVlemluZyBhbmQgcHJ1bmluZworICogYmVoYXZpb3IuIFNlZSB0aGUgZGVmaW5pdGlvbiBv ZiBQcnVuZUZyZWV6ZVBhcmFtcyBmb3IgbW9yZSBvbiB3aGF0IGVhY2gKKyAqIHBhcmFtZXRlciBk b2VzLgogICoKLSAqIG9wdGlvbnM6Ci0gKiAgIE1BUktfVU5VU0VEX05PVyBpbmRpY2F0ZXMgdGhh dCBkZWFkIGl0ZW1zIGNhbiBiZSBzZXQgTFBfVU5VU0VEIGR1cmluZwotICogICBwcnVuaW5nLgot ICoKLSAqICAgRlJFRVpFIGluZGljYXRlcyB0aGF0IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVz LCBhbmQgd2lsbCByZXR1cm4KLSAqICAgJ2FsbF92aXNpYmxlJywgJ2FsbF9mcm96ZW4nIGZsYWdz IHRvIHRoZSBjYWxsZXIuCi0gKgotICogY3V0b2ZmcyBjb250YWlucyB0aGUgZnJlZXplIGN1dG9m ZnMsIGVzdGFibGlzaGVkIGJ5IFZBQ1VVTSBhdCB0aGUgYmVnaW5uaW5nCi0gKiBvZiB2YWN1dW1p bmcgdGhlIHJlbGF0aW9uLiAgUmVxdWlyZWQgaWYgSEVBUF9QUlVORV9GUkVFWkUgb3B0aW9uIGlz IHNldC4KLSAqIGN1dG9mZnMtPk9sZGVzdFhtaW4gaXMgYWxzbyB1c2VkIHRvIGRldGVybWluZSBp ZiBkZWFkIHR1cGxlcyBhcmUKLSAqIEhFQVBUVVBMRV9SRUNFTlRMWV9ERUFEIG9yIEhFQVBUVVBM RV9ERUFELgorICogSWYgdGhlIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQgaW4gcGFy YW1zLCB3ZSB3aWxsIGZyZWV6ZSB0dXBsZXMgaWYKKyAqIGl0J3MgcmVxdWlyZWQgaW4gb3JkZXIg dG8gYWR2YW5jZSByZWxmcm96ZW54aWQgLyByZWxtaW5teGlkLCBvciBpZiBpdCdzCisgKiBjb25z aWRlcmVkIGFkdmFudGFnZW91cyBmb3Igb3ZlcmFsbCBzeXN0ZW0gcGVyZm9ybWFuY2UgdG8gZG8g c28gbm93LiAgVGhlCisgKiAncGFyYW1zLmN1dG9mZnMnLCAncHJlc3VsdCcsICduZXdfcmVsZnJv emVuX3hpZCcgYW5kICduZXdfcmVsbWluX214aWQnCisgKiBhcmd1bWVudHMgYXJlIHJlcXVpcmVk IHdoZW4gZnJlZXppbmcuICBXaGVuIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcworICogcGFz c2VkLCB3ZSBhbHNvIHNldCBwcmVzdWx0LT5hbGxfdmlzaWJsZSBhbmQgcHJlc3VsdC0+YWxsX2Zy b3plbiBvbiBleGl0LAorICogdG8gaW5kaWNhdGUgaWYgdGhlIFZNIGJpdHMgY2FuIGJlIHNldC4g IFRoZXkgYXJlIGFsd2F5cyBzZXQgdG8gZmFsc2Ugd2hlbgorICogdGhlIEhFQVBfUFJVTkVfRlJF RVpFIG9wdGlvbiBpcyBub3QgcGFzc2VkLCBiZWNhdXNlIGF0IHRoZSBtb21lbnQgb25seQorICog Y2FsbGVycyB0aGF0IGFsc28gZnJlZXplIG5lZWQgdGhhdCBpbmZvcm1hdGlvbi4KICAqCiAgKiBw cmVzdWx0IGNvbnRhaW5zIG91dHB1dCBwYXJhbWV0ZXJzIG5lZWRlZCBieSBjYWxsZXJzLCBzdWNo IGFzIHRoZSBudW1iZXIgb2YKICAqIHR1cGxlcyByZW1vdmVkIGFuZCB0aGUgb2Zmc2V0cyBvZiBk ZWFkIGl0ZW1zIG9uIHRoZSBwYWdlIGFmdGVyIHBydW5pbmcuCiAgKiBoZWFwX3BhZ2VfcHJ1bmVf YW5kX2ZyZWV6ZSgpIGlzIHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXppbmcgaXQuICBSZXF1aXJl ZAogICogYnkgYWxsIGNhbGxlcnMuCiAgKgotICogcmVhc29uIGluZGljYXRlcyB3aHkgdGhlIHBy dW5pbmcgaXMgcGVyZm9ybWVkLiAgSXQgaXMgaW5jbHVkZWQgaW4gdGhlIFdBTAotICogcmVjb3Jk IGZvciBkZWJ1Z2dpbmcgYW5kIGFuYWx5c2lzIHB1cnBvc2VzLCBidXQgb3RoZXJ3aXNlIGhhcyBu byBlZmZlY3QuCi0gKgogICogb2ZmX2xvYyBpcyB0aGUgb2Zmc2V0IGxvY2F0aW9uIHJlcXVpcmVk IGJ5IHRoZSBjYWxsZXIgdG8gdXNlIGluIGVycm9yCiAgKiBjYWxsYmFjay4KICAqCiAgKiBuZXdf cmVsZnJvemVuX3hpZCBhbmQgbmV3X3JlbG1pbl9teGlkIG11c3QgcHJvdmlkZWQgYnkgdGhlIGNh bGxlciBpZiB0aGUKLSAqIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQuICBPbiBlbnRy eSwgdGhleSBjb250YWluIHRoZSBvbGRlc3QgWElEIGFuZAotICogbXVsdGktWElEIHNlZW4gb24g dGhlIHJlbGF0aW9uIHNvIGZhci4gIFRoZXkgd2lsbCBiZSB1cGRhdGVkIHdpdGggb2xkZXN0Ci0g KiB2YWx1ZXMgcHJlc2VudCBvbiB0aGUgcGFnZSBhZnRlciBwcnVuaW5nLiAgQWZ0ZXIgcHJvY2Vz c2luZyB0aGUgd2hvbGUKLSAqIHJlbGF0aW9uLCBWQUNVVU0gY2FuIHVzZSB0aGVzZSB2YWx1ZXMg YXMgdGhlIG5ldyByZWxmcm96ZW54aWQvcmVsbWlubXhpZAotICogZm9yIHRoZSByZWxhdGlvbi4K KyAqIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQgaW4gcGFyYW1zLiAgT24gZW50cnks IHRoZXkgY29udGFpbiB0aGUKKyAqIG9sZGVzdCBYSUQgYW5kIG11bHRpLVhJRCBzZWVuIG9uIHRo ZSByZWxhdGlvbiBzbyBmYXIuICBUaGV5IHdpbGwgYmUgdXBkYXRlZAorICogd2l0aCBvbGRlc3Qg dmFsdWVzIHByZXNlbnQgb24gdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4gIEFmdGVyIHByb2Nlc3Np bmcgdGhlCisgKiB3aG9sZSByZWxhdGlvbiwgVkFDVVVNIGNhbiB1c2UgdGhlc2UgdmFsdWVzIGFz IHRoZSBuZXcKKyAqIHJlbGZyb3plbnhpZC9yZWxtaW5teGlkIGZvciB0aGUgcmVsYXRpb24uCiAg Ki8KIHZvaWQKLWhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBC dWZmZXIgYnVmZmVyLAotCQkJCQkJICAgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCi0JCQkJCQkg ICBpbnQgb3B0aW9ucywKLQkJCQkJCSAgIHN0cnVjdCBWYWN1dW1DdXRvZmZzICpjdXRvZmZzLAor aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJ CQkJCSAgIFBydW5lRnJlZXplUmVzdWx0ICpwcmVzdWx0LAotCQkJCQkJICAgUHJ1bmVSZWFzb24g cmVhc29uLAogCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpvZmZfbG9jLAogCQkJCQkJICAgVHJhbnNh Y3Rpb25JZCAqbmV3X3JlbGZyb3plbl94aWQsCiAJCQkJCQkgICBNdWx0aVhhY3RJZCAqbmV3X3Jl bG1pbl9teGlkKQogeworCUJ1ZmZlcgkJYnVmZmVyID0gcGFyYW1zLT5idWZmZXI7CiAJUGFnZQkJ cGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAlCbG9ja051bWJlciBibG9ja25vID0gQnVm ZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKTsKIAlPZmZzZXROdW1iZXIgb2ZmbnVtLApAQCAtNDg2 LDEwICs0NzcsMTEgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRp b24sIEJ1ZmZlciBidWZmZXIsCiAJaW50NjQJCWZwaV9iZWZvcmUgPSBwZ1dhbFVzYWdlLndhbF9m cGk7CiAKIAkvKiBDb3B5IHBhcmFtZXRlcnMgdG8gcHJzdGF0ZSAqLwotCXByc3RhdGUudmlzdGVz dCA9IHZpc3Rlc3Q7Ci0JcHJzdGF0ZS5tYXJrX3VudXNlZF9ub3cgPSAob3B0aW9ucyAmIEhFQVBf UEFHRV9QUlVORV9NQVJLX1VOVVNFRF9OT1cpICE9IDA7Ci0JcHJzdGF0ZS5hdHRlbXB0X2ZyZWV6 ZSA9IChvcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSkgIT0gMDsKLQlwcnN0YXRlLmN1 dG9mZnMgPSBjdXRvZmZzOworCXByc3RhdGUudmlzdGVzdCA9IHBhcmFtcy0+dmlzdGVzdDsKKwlw cnN0YXRlLm1hcmtfdW51c2VkX25vdyA9CisJCShwYXJhbXMtPm9wdGlvbnMgJiBIRUFQX1BBR0Vf UFJVTkVfTUFSS19VTlVTRURfTk9XKSAhPSAwOworCXByc3RhdGUuYXR0ZW1wdF9mcmVlemUgPSAo cGFyYW1zLT5vcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSkgIT0gMDsKKwlwcnN0YXRl LmN1dG9mZnMgPSBwYXJhbXMtPmN1dG9mZnM7CiAKIAkvKgogCSAqIE91ciBzdHJhdGVneSBpcyB0 byBzY2FuIHRoZSBwYWdlIGFuZCBtYWtlIGxpc3RzIG9mIGl0ZW1zIHRvIGNoYW5nZSwKQEAgLTU4 Myw3ICs1NzUsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlv biwgQnVmZmVyIGJ1ZmZlciwKIAlwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCA9IEludmFs aWRUcmFuc2FjdGlvbklkOwogCiAJbWF4b2ZmID0gUGFnZUdldE1heE9mZnNldE51bWJlcihwYWdl KTsKLQl0dXAudF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOworCXR1cC50 X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChwYXJhbXMtPnJlbGF0aW9uKTsKIAogCS8qCiAJ ICogRGV0ZXJtaW5lIEhUU1YgZm9yIGFsbCB0dXBsZXMsIGFuZCBxdWV1ZSB0aGVtIHVwIGZvciBw cm9jZXNzaW5nIGFzIEhPVApAQCAtNzg2LDcgKzc3OCw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRf ZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIERlY2lkZSBpZiB3 ZSB3YW50IHRvIGdvIGFoZWFkIHdpdGggZnJlZXppbmcgYWNjb3JkaW5nIHRvIHRoZSBmcmVlemUK IAkgKiBwbGFucyB3ZSBwcmVwYXJlZCwgb3Igbm90LgogCSAqLwotCWRvX2ZyZWV6ZSA9IGhlYXBf cGFnZV93aWxsX2ZyZWV6ZShyZWxhdGlvbiwgYnVmZmVyLAorCWRvX2ZyZWV6ZSA9IGhlYXBfcGFn ZV93aWxsX2ZyZWV6ZShwYXJhbXMtPnJlbGF0aW9uLCBidWZmZXIsCiAJCQkJCQkJCQkgIGRpZF90 dXBsZV9oaW50X2ZwaSwKIAkJCQkJCQkJCSAgZG9fcHJ1bmUsCiAJCQkJCQkJCQkgIGRvX2hpbnRf cHJ1bmUsCkBAIC04MzgsNyArODMwLDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVs YXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCS8qCiAJCSAqIEVtaXQgYSBXQUwgWExP R19IRUFQMl9QUlVORSogcmVjb3JkIHNob3dpbmcgd2hhdCB3ZSBkaWQKIAkJICovCi0JCWlmIChS ZWxhdGlvbk5lZWRzV0FMKHJlbGF0aW9uKSkKKwkJaWYgKFJlbGF0aW9uTmVlZHNXQUwocGFyYW1z LT5yZWxhdGlvbikpCiAJCXsKIAkJCS8qCiAJCQkgKiBUaGUgc25hcHNob3RDb25mbGljdEhvcml6 b24gZm9yIHRoZSB3aG9sZSByZWNvcmQgc2hvdWxkIGJlIHRoZQpAQCAtODc2LDExICs4NjgsMTEg QEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBi dWZmZXIsCiAJCQllbHNlCiAJCQkJY29uZmxpY3RfeGlkID0gcHJzdGF0ZS5sYXRlc3RfeGlkX3Jl bW92ZWQ7CiAKLQkJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUocmVsYXRpb24sIGJ1ZmZlciwK KwkJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUocGFyYW1zLT5yZWxhdGlvbiwgYnVmZmVyLAog CQkJCQkJCQkJICBJbnZhbGlkQnVmZmVyLAkvKiB2bWJ1ZmZlciAqLwogCQkJCQkJCQkJICAwLAkv KiB2bWZsYWdzICovCiAJCQkJCQkJCQkgIGNvbmZsaWN0X3hpZCwKLQkJCQkJCQkJCSAgdHJ1ZSwg cmVhc29uLAorCQkJCQkJCQkJICB0cnVlLCBwYXJhbXMtPnJlYXNvbiwKIAkJCQkJCQkJCSAgcHJz dGF0ZS5mcm96ZW4sIHByc3RhdGUubmZyb3plbiwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5yZWRpcmVj dGVkLCBwcnN0YXRlLm5yZWRpcmVjdGVkLAogCQkJCQkJCQkJICBwcnN0YXRlLm5vd2RlYWQsIHBy c3RhdGUubmRlYWQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggNjFmZTYy M2NjNjAuLmU1NWJlMDdjYWU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBA IC0xOTY1LDEwICsxOTY1LDE2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWws CiB7CiAJUmVsYXRpb24JcmVsID0gdmFjcmVsLT5yZWw7CiAJUHJ1bmVGcmVlemVSZXN1bHQgcHJl c3VsdDsKLQlpbnQJCQlwcnVuZV9vcHRpb25zID0gMDsKKwlQcnVuZUZyZWV6ZVBhcmFtcyBwYXJh bXM7CiAKIAlBc3NlcnQoQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmKSA9PSBibGtubyk7CiAKKwlw YXJhbXMucmVsYXRpb24gPSByZWw7CisJcGFyYW1zLmJ1ZmZlciA9IGJ1ZjsKKwlwYXJhbXMucmVh c29uID0gUFJVTkVfVkFDVVVNX1NDQU47CisJcGFyYW1zLmN1dG9mZnMgPSAmdmFjcmVsLT5jdXRv ZmZzOworCXBhcmFtcy52aXN0ZXN0ID0gdmFjcmVsLT52aXN0ZXN0OworCiAJLyoKIAkgKiBQcnVu ZSBhbGwgSE9ULXVwZGF0ZSBjaGFpbnMgYW5kIHBvdGVudGlhbGx5IGZyZWV6ZSB0dXBsZXMgb24g dGhpcyBwYWdlLgogCSAqCkBAIC0xOTg0LDEyICsxOTkwLDEyIEBAIGxhenlfc2Nhbl9wcnVuZShM VlJlbFN0YXRlICp2YWNyZWwsCiAJICogdHVwbGVzLiBQcnVuaW5nIHdpbGwgaGF2ZSBkZXRlcm1p bmVkIHdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIGlzCiAJICogYWxsLXZpc2libGUuCiAJICovCi0J cHJ1bmVfb3B0aW9ucyA9IEhFQVBfUEFHRV9QUlVORV9GUkVFWkU7CisJcGFyYW1zLm9wdGlvbnMg PSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFOwogCWlmICh2YWNyZWwtPm5pbmRleGVzID09IDApCi0J CXBydW5lX29wdGlvbnMgfD0gSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVzsKKwkJcGFy YW1zLm9wdGlvbnMgfD0gSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVzsKIAotCWhlYXBf cGFnZV9wcnVuZV9hbmRfZnJlZXplKHJlbCwgYnVmLCB2YWNyZWwtPnZpc3Rlc3QsIHBydW5lX29w dGlvbnMsCi0JCQkJCQkJICAgJnZhY3JlbC0+Y3V0b2ZmcywgJnByZXN1bHQsIFBSVU5FX1ZBQ1VV TV9TQ0FOLAorCWhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCZwYXJhbXMsCisJCQkJCQkJICAg JnByZXN1bHQsCiAJCQkJCQkJICAgJnZhY3JlbC0+b2ZmbnVtLAogCQkJCQkJCSAgICZ2YWNyZWwt Pk5ld1JlbGZyb3plblhpZCwgJnZhY3JlbC0+TmV3UmVsbWluTXhpZCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aAppbmRleCA5MDlkYjczYjdiYi4uYjBiNmQzNTUyYTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTIy MSw2ICsyMjEsNTUgQEAgdHlwZWRlZiBzdHJ1Y3QgSGVhcFBhZ2VGcmVlemUKIAogfSBIZWFwUGFn ZUZyZWV6ZTsKIAorCisvKiAncmVhc29uJyBjb2RlcyBmb3IgaGVhcF9wYWdlX3BydW5lX2FuZF9m cmVlemUoKSAqLwordHlwZWRlZiBlbnVtCit7CisJUFJVTkVfT05fQUNDRVNTLAkJCS8qIG9uLWFj Y2VzcyBwcnVuaW5nICovCisJUFJVTkVfVkFDVVVNX1NDQU4sCQkJLyogVkFDVVVNIDFzdCBoZWFw IHBhc3MgKi8KKwlQUlVORV9WQUNVVU1fQ0xFQU5VUCwJCS8qIFZBQ1VVTSAybmQgaGVhcCBwYXNz ICovCit9IFBydW5lUmVhc29uOworCisvKgorICogSW5wdXQgcGFyYW1ldGVycyB0byBoZWFwX3Bh Z2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpCisgKi8KK3R5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUGFy YW1zCit7CisJUmVsYXRpb24JcmVsYXRpb247CQkvKiByZWxhdGlvbiBjb250YWluaW5nIGJ1ZmZl ciB0byBiZSBwcnVuZWQgKi8KKwlCdWZmZXIJCWJ1ZmZlcjsJCQkvKiBidWZmZXIgdG8gYmUgcHJ1 bmVkICovCisKKwkvKgorCSAqIFRoZSByZWFzb24gcHJ1bmluZyB3YXMgcGVyZm9ybWVkLiAgSXQg aXMgdXNlZCB0byBzZXQgdGhlIFdBTCByZWNvcmQKKwkgKiBvcGNvZGUgd2hpY2ggaXMgdXNlZCBm b3IgZGVidWdnaW5nIGFuZCBhbmFseXNpcyBwdXJwb3Nlcy4KKwkgKi8KKwlQcnVuZVJlYXNvbiBy ZWFzb247CisKKwkvKgorCSAqIENvbnRhaW5zIGZsYWcgYml0czoKKwkgKgorCSAqIE1BUktfVU5V U0VEX05PVyBpbmRpY2F0ZXMgdGhhdCBkZWFkIGl0ZW1zIGNhbiBiZSBzZXQgTFBfVU5VU0VEIGR1 cmluZworCSAqIHBydW5pbmcuCisJICoKKwkgKiBGUkVFWkUgaW5kaWNhdGVzIHRoYXQgd2Ugd2ls bCBhbHNvIGZyZWV6ZSB0dXBsZXMsIGFuZCB3aWxsIHJldHVybgorCSAqICdhbGxfdmlzaWJsZScs ICdhbGxfZnJvemVuJyBmbGFncyB0byB0aGUgY2FsbGVyLgorCSAqLworCWludAkJCW9wdGlvbnM7 CisKKwkvKgorCSAqIHZpc3Rlc3QgaXMgdXNlZCB0byBkaXN0aW5ndWlzaCB3aGV0aGVyIHR1cGxl cyBhcmUgREVBRCBvciBSRUNFTlRMWV9ERUFECisJICogKHNlZSBoZWFwX3BydW5lX3NhdGlzZmll c192YWN1dW0pLgorCSAqLworCUdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0OworCisJLyoKKwkgKiBj dXRvZmZzIGNvbnRhaW5zIHRoZSBmcmVlemUgY3V0b2ZmcywgZXN0YWJsaXNoZWQgYnkgVkFDVVVN IGF0IHRoZQorCSAqIGJlZ2lubmluZyBvZiB2YWN1dW1pbmcgdGhlIHJlbGF0aW9uLiAgUmVxdWly ZWQgaWYgSEVBUF9QUlVORV9GUkVFWkUKKwkgKiBvcHRpb24gaXMgc2V0LiBjdXRvZmZzLT5PbGRl c3RYbWluIGlzIGFsc28gdXNlZCB0byBkZXRlcm1pbmUgaWYgZGVhZAorCSAqIHR1cGxlcyBhcmUg SEVBUFRVUExFX1JFQ0VOVExZX0RFQUQgb3IgSEVBUFRVUExFX0RFQUQuCisJICovCisJc3RydWN0 IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnM7Cit9IFBydW5lRnJlZXplUGFyYW1zOworCiAvKgogICog UGVyLXBhZ2Ugc3RhdGUgcmV0dXJuZWQgYnkgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKQog ICovCkBAIC0yNjQsMTMgKzMxMyw2IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUmVzdWx0 CiAJT2Zmc2V0TnVtYmVyIGRlYWRvZmZzZXRzW01heEhlYXBUdXBsZXNQZXJQYWdlXTsKIH0gUHJ1 bmVGcmVlemVSZXN1bHQ7CiAKLS8qICdyZWFzb24nIGNvZGVzIGZvciBoZWFwX3BhZ2VfcHJ1bmVf YW5kX2ZyZWV6ZSgpICovCi10eXBlZGVmIGVudW0KLXsKLQlQUlVORV9PTl9BQ0NFU1MsCQkJLyog b24tYWNjZXNzIHBydW5pbmcgKi8KLQlQUlVORV9WQUNVVU1fU0NBTiwJCQkvKiBWQUNVVU0gMXN0 IGhlYXAgcGFzcyAqLwotCVBSVU5FX1ZBQ1VVTV9DTEVBTlVQLAkJLyogVkFDVVVNIDJuZCBoZWFw IHBhc3MgKi8KLX0gUHJ1bmVSZWFzb247CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqCQlmdW5j dGlvbiBwcm90b3R5cGVzIGZvciBoZWFwIGFjY2VzcyBtZXRob2QKQEAgLTM2NywxMiArNDA5LDgg QEAgZXh0ZXJuIFRyYW5zYWN0aW9uSWQgaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzKFJlbGF0aW9u IHJlbCwKIAogLyogaW4gaGVhcC9wcnVuZWhlYXAuYyAqLwogZXh0ZXJuIHZvaWQgaGVhcF9wYWdl X3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcik7Ci1leHRlcm4gdm9p ZCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1 ZmZlciwKLQkJCQkJCQkJCSAgIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0LAotCQkJCQkJCQkJICAg aW50IG9wdGlvbnMsCi0JCQkJCQkJCQkgICBzdHJ1Y3QgVmFjdXVtQ3V0b2ZmcyAqY3V0b2ZmcywK K2V4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1z ICpwYXJhbXMsCiAJCQkJCQkJCQkgICBQcnVuZUZyZWV6ZVJlc3VsdCAqcHJlc3VsdCwKLQkJCQkJ CQkJCSAgIFBydW5lUmVhc29uIHJlYXNvbiwKIAkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqb2Zm X2xvYywKIAkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKm5ld19yZWxmcm96ZW5feGlkLAogCQkJ CQkJCQkJICAgTXVsdGlYYWN0SWQgKm5ld19yZWxtaW5fbXhpZCk7CmRpZmYgLS1naXQgYS9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0CmluZGV4IDAxOGI1OTE5Y2Y2Li5hMzg0MTcxZGUwZCAxMDA2NDQKLS0tIGEvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKQEAgLTIzNDMsNiArMjM0Myw3IEBAIFByb2plY3Rpb25QYXRoCiBQcm9tcHRJbnRl cnJ1cHRDb250ZXh0CiBQcm90b2NvbFZlcnNpb24KIFByc1N0b3JhZ2UKK1BydW5lRnJlZXplUGFy YW1zCiBQcnVuZUZyZWV6ZVJlc3VsdAogUHJ1bmVSZWFzb24KIFBydW5lU3RhdGUKLS0gCjIuNDMu MAoK --000000000000fb0f430642c7990f Content-Type: text/x-patch; charset="US-ASCII"; name="v19-0002-Keep-all_frozen-updated-in-heap_page_prune_and_f.patch" Content-Disposition: attachment; filename="v19-0002-Keep-all_frozen-updated-in-heap_page_prune_and_f.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhksvxov1 RnJvbSBmMTc5YTU0OTNjOTY3MWY5YzhlY2E5MjMxMjkyZDNhNDhiZjcxNTNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDE0OjU1OjQwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTkgMDIvMTJdIEtlZXAgYWxsX2Zyb3plbiB1cGRhdGVkIGluCiBoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZQoKUHJldmlvdXNseSwgd2UgcmVsaWVkIG9uIGFsbF92aXNpYmxlIGFuZCBh bGxfZnJvemVuIGJlaW5nIHVzZWQgdG9nZXRoZXIKdG8gZW5zdXJlIHRoYXQgYWxsX2Zyb3plbiB3 YXMgY29ycmVjdCwgYnV0IGl0IGlzIGJldHRlciB0byBrZWVwIGJvdGgKZmllbGRzIHVwZGF0ZWQu CgpGdXR1cmUgY2hhbmdlcyB3aWxsIHNlcGFyYXRlIHRoZWlyIHVzYWdlLCBzbyB3ZSBzaG91bGQg bm90IGRlcGVuZCBvbgphbGxfdmlzaWJsZSBmb3IgdGhlIHZhbGlkaXR5IG9mIGFsbF9mcm96ZW4u Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgIHwgMjIgKysrKysrKysr KystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIHwgIDkg KysrKy0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggNDUwYjJlYjY0OTQuLmRh YTcxOWZjMmExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMTQzLDEwICsx NDMsNiBAQCB0eXBlZGVmIHN0cnVjdAogCSAqIHdoZXRoZXIgdG8gZnJlZXplIHRoZSBwYWdlIG9y IG5vdC4gIFRoZSBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbgogCSAqIHZhbHVlcyByZXR1cm5l ZCB0byB0aGUgY2FsbGVyIGFyZSBhZGp1c3RlZCB0byBpbmNsdWRlIExQX0RFQUQgaXRlbXMgYXQK IAkgKiB0aGUgZW5kLgotCSAqCi0JICogYWxsX2Zyb3plbiBzaG91bGQgb25seSBiZSBjb25zaWRl cmVkIHZhbGlkIGlmIGFsbF92aXNpYmxlIGlzIGFsc28gc2V0OwotCSAqIHdlIGRvbid0IGJvdGhl ciB0byBjbGVhciB0aGUgYWxsX2Zyb3plbiBmbGFnIGV2ZXJ5IHRpbWUgd2UgY2xlYXIgdGhlCi0J ICogYWxsX3Zpc2libGUgZmxhZy4KIAkgKi8KIAlib29sCQlhbGxfdmlzaWJsZTsKIAlib29sCQlh bGxfZnJvemVuOwpAQCAtMzYxLDggKzM1NywxMCBAQCBoZWFwX3BhZ2Vfd2lsbF9mcmVlemUoUmVs YXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCSAqIGFueW1vcmUuICBUaGUgb3Bwb3J0 dW5pc3RpYyBmcmVlemUgaGV1cmlzdGljIG11c3QgYmUgaW1wcm92ZWQ7CiAJCSAqIGhvd2V2ZXIs IGZvciBub3csIHRyeSB0byBhcHByb3hpbWF0ZSB0aGUgb2xkIGxvZ2ljLgogCQkgKi8KLQkJaWYg KHByc3RhdGUtPmFsbF92aXNpYmxlICYmIHByc3RhdGUtPmFsbF9mcm96ZW4gJiYgcHJzdGF0ZS0+ bmZyb3plbiA+IDApCisJCWlmIChwcnN0YXRlLT5hbGxfZnJvemVuICYmIHByc3RhdGUtPm5mcm96 ZW4gPiAwKQogCQl7CisJCQlBc3NlcnQocHJzdGF0ZS0+YWxsX3Zpc2libGUpOworCiAJCQkvKgog CQkJICogRnJlZXppbmcgd291bGQgbWFrZSB0aGUgcGFnZSBhbGwtZnJvemVuLiAgSGF2ZSBhbHJl YWR5IGVtaXR0ZWQKIAkJCSAqIGFuIEZQSSBvciB3aWxsIGRvIHNvIGFueXdheT8KQEAgLTc4NCw2 ICs3ODIsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAq cGFyYW1zLAogCQkJCQkJCQkJICBkb19oaW50X3BydW5lLAogCQkJCQkJCQkJICAmcHJzdGF0ZSk7 CiAKKwlBc3NlcnQoIXByc3RhdGUuYWxsX2Zyb3plbiB8fCBwcnN0YXRlLmFsbF92aXNpYmxlKTsK KwogCS8qIEFueSBlcnJvciB3aGlsZSBhcHBseWluZyB0aGUgY2hhbmdlcyBpcyBjcml0aWNhbCAq LwogCVNUQVJUX0NSSVRfU0VDVElPTigpOwogCkBAIC04NTMsNyArODUzLDcgQEAgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCSAqLwogCQkJ aWYgKGRvX2ZyZWV6ZSkKIAkJCXsKLQkJCQlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJiBwcnN0 YXRlLmFsbF9mcm96ZW4pCisJCQkJaWYgKHByc3RhdGUuYWxsX2Zyb3plbikKIAkJCQkJZnJ6X2Nv bmZsaWN0X2hvcml6b24gPSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKIAkJCQllbHNl CiAJCQkJewpAQCAtMTQxOCw3ICsxNDE4LDcgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2Vk X2xwX25vcm1hbChQYWdlIHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAog CQkJCWlmICghSGVhcFR1cGxlSGVhZGVyWG1pbkNvbW1pdHRlZChodHVwKSkKIAkJCQl7Ci0JCQkJ CXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CisJCQkJCXByc3RhdGUtPmFsbF92aXNpYmxl ID0gcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOwogCQkJCQlicmVhazsKIAkJCQl9CiAKQEAg LTE0NDAsNyArMTQ0MCw3IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwo UGFnZSBwYWdlLCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iCiAJCQkJQXNzZXJ0KHBy c3RhdGUtPmN1dG9mZnMpOwogCQkJCWlmICghVHJhbnNhY3Rpb25JZFByZWNlZGVzKHhtaW4sIHBy c3RhdGUtPmN1dG9mZnMtPk9sZGVzdFhtaW4pKQogCQkJCXsKLQkJCQkJcHJzdGF0ZS0+YWxsX3Zp c2libGUgPSBmYWxzZTsKKwkJCQkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLT5hbGxf ZnJvemVuID0gZmFsc2U7CiAJCQkJCWJyZWFrOwogCQkJCX0KIApAQCAtMTQ1Myw3ICsxNDUzLDcg QEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdlIHBhZ2UsIFBydW5l U3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAogCQljYXNlIEhFQVBUVVBMRV9SRUNFTlRMWV9E RUFEOgogCQkJcHJzdGF0ZS0+cmVjZW50bHlfZGVhZF90dXBsZXMrKzsKLQkJCXByc3RhdGUtPmFs bF92aXNpYmxlID0gZmFsc2U7CisJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHByc3RhdGUtPmFs bF9mcm96ZW4gPSBmYWxzZTsKIAogCQkJLyoKIAkJCSAqIFRoaXMgdHVwbGUgd2lsbCBzb29uIGJl Y29tZSBERUFELiAgVXBkYXRlIHRoZSBoaW50IGZpZWxkIHNvCkBAIC0xNDcyLDcgKzE0NzIsNyBA QCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVT dGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYgogCQkJICogYXNzdW1wdGlvbiBpcyBhIGJpdCBzaGFr eSwgYnV0IGl0IGlzIHdoYXQgYWNxdWlyZV9zYW1wbGVfcm93cygpCiAJCQkgKiBkb2VzLCBzbyBi ZSBjb25zaXN0ZW50LgogCQkJICovCi0JCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOwor CQkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CiAK IAkJCS8qCiAJCQkgKiBJZiB3ZSB3YW50ZWQgdG8gb3B0aW1pemUgZm9yIGFib3J0cywgd2UgbWln aHQgY29uc2lkZXIgbWFya2luZwpAQCAtMTQ5MCw3ICsxNDkwLDcgQEAgaGVhcF9wcnVuZV9yZWNv cmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdlIHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9m ZnNldE51bWIKIAkJCSAqIHdpbGwgY29tbWl0IGFuZCB1cGRhdGUgdGhlIGNvdW50ZXJzIGFmdGVy IHdlIHJlcG9ydC4KIAkJCSAqLwogCQkJcHJzdGF0ZS0+bGl2ZV90dXBsZXMrKzsKLQkJCXByc3Rh dGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CisJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHByc3Rh dGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAogCQkJLyoKIAkJCSAqIFRoaXMgdHVwbGUgbWF5IHNv b24gYmVjb21lIERFQUQuICBVcGRhdGUgdGhlIGhpbnQgZmllbGQgc28gdGhhdApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IGU1NWJlMDdjYWU0Li42NzBhNzQyNGIxNSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMjAyMSw3ICsyMDIxLDYgQEAgbGF6 eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkgKiBhZ3JlZW1lbnQgd2l0aCBoZWFw X3BhZ2VfaXNfYWxsX3Zpc2libGUoKSB1c2luZyBhbiBhc3NlcnRpb24uCiAJICovCiAjaWZkZWYg VVNFX0FTU0VSVF9DSEVDS0lORwotCS8qIE5vdGUgdGhhdCBhbGxfZnJvemVuIHZhbHVlIGRvZXMg bm90IG1hdHRlciB3aGVuICFhbGxfdmlzaWJsZSAqLwogCWlmIChwcmVzdWx0LmFsbF92aXNpYmxl KQogCXsKIAkJVHJhbnNhY3Rpb25JZCBkZWJ1Z19jdXRvZmY7CkBAIC0yMDc1LDYgKzIwNzQsNyBA QCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCSpoYXNfbHBkZWFkX2l0ZW1z ID0gKHByZXN1bHQubHBkZWFkX2l0ZW1zID4gMCk7CiAKIAlBc3NlcnQoIXByZXN1bHQuYWxsX3Zp c2libGUgfHwgISgqaGFzX2xwZGVhZF9pdGVtcykpOworCUFzc2VydCghcHJlc3VsdC5hbGxfZnJv emVuIHx8IHByZXN1bHQuYWxsX3Zpc2libGUpOwogCiAJLyoKIAkgKiBIYW5kbGUgc2V0dGluZyB2 aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgVk0gKGFzCkBA IC0yMTgwLDExICsyMTgwLDEwIEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWws CiAKIAkvKgogCSAqIElmIHRoZSBhbGwtdmlzaWJsZSBwYWdlIGlzIGFsbC1mcm96ZW4gYnV0IG5v dCBtYXJrZWQgYXMgc3VjaCB5ZXQsIG1hcmsKLQkgKiBpdCBhcyBhbGwtZnJvemVuLiAgTm90ZSB0 aGF0IGFsbF9mcm96ZW4gaXMgb25seSB2YWxpZCBpZiBhbGxfdmlzaWJsZSBpcwotCSAqIHRydWUs IHNvIHdlIG11c3QgY2hlY2sgYm90aCBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbi4KKwkgKiBp dCBhcyBhbGwtZnJvemVuLgogCSAqLwotCWVsc2UgaWYgKGFsbF92aXNpYmxlX2FjY29yZGluZ190 b192bSAmJiBwcmVzdWx0LmFsbF92aXNpYmxlICYmCi0JCQkgcHJlc3VsdC5hbGxfZnJvemVuICYm ICFWTV9BTExfRlJPWkVOKHZhY3JlbC0+cmVsLCBibGtubywgJnZtYnVmZmVyKSkKKwllbHNlIGlm IChhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgcHJlc3VsdC5hbGxfZnJvemVuICYmCisJ CQkgIVZNX0FMTF9GUk9aRU4odmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIpKQogCXsKIAkJ dWludDgJCW9sZF92bWJpdHM7CiAKLS0gCjIuNDMuMAoK --000000000000fb0f430642c7990f Content-Type: text/x-patch; charset="UTF-8"; name="v19-0003-Update-PruneState.all_-visible-frozen-earlier-in.patch" Content-Disposition: attachment; filename="v19-0003-Update-PruneState.all_-visible-frozen-earlier-in.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhksw6w42 RnJvbSBjMjdhYjM5ZTczOWFjZjdlOTZkMWY3ZTgxZGY5MWZjMmIyYjdmZTQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDE1OjIxOjQ5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTkgMDMvMTJdIFVwZGF0ZSBQcnVuZVN0YXRlLmFsbF9bdmlzaWJsZXxmcm96ZW5dIGVh cmxpZXIgaW4KIHBydW5pbmcKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3Bs YWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCkluIHRo ZSBwcnVuZS9mcmVlemUgcGF0aCwgd2UgY3VycmVudGx5IGRlbGF5IGNsZWFyaW5nIGFsbF92aXNp YmxlIGFuZAphbGxfZnJvemVuIGluIHRoZSBwcmVzZW5jZSBvZiBkZWFkIGl0ZW1zLiBUaGlzIGFs bG93cyBvcHBvcnR1bmlzdGljCmZyZWV6aW5nIGlmIHRoZSBwYWdlIHdvdWxkIG90aGVyd2lzZSBi ZSBmdWxseSBmcm96ZW4sIHNpbmNlIHRob3NlIGRlYWQKaXRlbXMgYXJlIGxhdGVyIHJlbW92ZWQg aW4gdmFjdXVt4oCZcyB0aGlyZCBwaGFzZS4KClRvIG1vdmUgdGhlIFZNIHVwZGF0ZSBpbnRvIHRo ZSBzYW1lIFdBTCByZWNvcmQgdGhhdApwcnVuZXMgYW5kIGZyZWV6ZXMgdHVwbGVzLCB3ZSBtdXN0 IGtub3cgd2hldGhlciB0aGUgcGFnZSB3aWxsCmJlIG1hcmtlZCBhbGwtdmlzaWJsZS9hbGwtZnJv emVuIGJlZm9yZSBlbWl0dGluZyBXQUwuCgpUaGUgb25seSBiYXJyaWVyIHRvIHVwZGF0aW5nIHRo ZXNlIGZsYWdzIGltbWVkaWF0ZWx5IGFmdGVyIGRlY2lkaW5nCndoZXRoZXIgdG8gb3Bwb3J0dW5p c3RpY2FsbHkgZnJlZXplIGlzIHRoYXQgd2UgcHJldmlvdXNseSB1c2VkCmFsbF9mcm96ZW4gdG8g Y29tcHV0ZSB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiB3aGVuIGZyZWV6aW5nCnR1cGxl cy4gQnkgZGV0ZXJtaW5pbmcgdGhlIGN1dG9mZiBlYXJsaWVyLCB3ZSBjYW4gdXBkYXRlIHRoZSBm bGFncwppbW1lZGlhdGVseSBhZnRlciBtYWtpbmcgdGhlIGZyZWV6ZSBkZWNpc2lvbi4KClRoaXMg aXMgcmVxdWlyZWQgdG8gc2V0IHRoZSBWTSBpbiB0aGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1f U0NBTgpyZWNvcmQgZW1pdHRlZCBieSBwcnVuaW5nIGFuZCBmcmVlemluZy4KLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyB8IDExNyArKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNTcgaW5zZXJ0aW9ucygrKSwgNjAgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCBkYWE3MTlmYzJhMS4uZWY4ODYx MDIyZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0xMzgsMTEgKzEzOCwx MSBAQCB0eXBlZGVmIHN0cnVjdAogCSAqIGJpdHMuICBJdCBpcyBvbmx5IHZhbGlkIGlmIHdlIGZy b3plIHNvbWUgdHVwbGVzLCBhbmQgYWxsX2Zyb3plbiBpcwogCSAqIHRydWUuCiAJICoKLQkgKiBO T1RFOiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBkb24ndCBpbmNsdWRlIExQX0RFQUQgaXRl bXMuICBUaGF0J3MKLQkgKiBjb252ZW5pZW50IGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZSgpLCB0byB1c2UgdGhlbSB0byBkZWNpZGUKLQkgKiB3aGV0aGVyIHRvIGZyZWV6ZSB0aGUgcGFn ZSBvciBub3QuICBUaGUgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4KLQkgKiB2YWx1ZXMgcmV0 dXJuZWQgdG8gdGhlIGNhbGxlciBhcmUgYWRqdXN0ZWQgdG8gaW5jbHVkZSBMUF9ERUFEIGl0ZW1z IGF0Ci0JICogdGhlIGVuZC4KKwkgKiBOT1RFOiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBp bml0aWFsbHkgZG9uJ3QgaW5jbHVkZSBMUF9ERUFEIGl0ZW1zLgorCSAqIFRoYXQncyBjb252ZW5p ZW50IGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIHRvIHVzZSB0aGVtIHRvCisJICog ZGVjaWRlIHdoZXRoZXIgdG8gZnJlZXplIHRoZSBwYWdlIG9yIG5vdC4gIFRoZSBhbGxfdmlzaWJs ZSBhbmQKKwkgKiBhbGxfZnJvemVuIHZhbHVlcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyIGFyZSBh ZGp1c3RlZCB0byBpbmNsdWRlCisJICogTFBfREVBRCBpdGVtcyBhZnRlciB3ZSBkZXRlcm1pbmUg d2hldGhlciB0byBvcHBvcnR1bmlzdGljYWxseSBmcmVlemUuCiAJICovCiAJYm9vbAkJYWxsX3Zp c2libGU7CiAJYm9vbAkJYWxsX2Zyb3plbjsKQEAgLTE3NSw3ICsxNzUsNyBAQCBzdGF0aWMgdm9p ZCBwYWdlX3ZlcmlmeV9yZWRpcmVjdHMoUGFnZSBwYWdlKTsKIAogc3RhdGljIGJvb2wgaGVhcF9w YWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJ CQkgIGJvb2wgZGlkX3R1cGxlX2hpbnRfZnBpLCBib29sIGRvX3BydW5lLCBib29sIGRvX2hpbnRf cHJ1bmUsCi0JCQkJCQkJCSAgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSk7CisJCQkJCQkJCSAgUHJ1bmVT dGF0ZSAqcHJzdGF0ZSwgVHJhbnNhY3Rpb25JZCAqZnJ6X2NvbmZsaWN0X2hvcml6b24pOwogCiAK IC8qCkBAIC0zMDgsNyArMzA4LDkgQEAgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlcikKICAqIHBlcmZvcm1zIHNldmVyYWwgcHJlLWZyZWV6ZSBjaGVj a3MuCiAgKgogICogVGhlIHZhbHVlcyBvZiBkb19wcnVuZSwgZG9faGludF9wcnVuZSwgYW5kIGRp ZF90dXBsZV9oaW50X2ZwaSBtdXN0IGJlCi0gKiBkZXRlcm1pbmVkIGJlZm9yZSBjYWxsaW5nIHRo aXMgZnVuY3Rpb24uCisgKiBkZXRlcm1pbmVkIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24u ICpmcnpfY29uZmxpY3RfaG9yaXpvbiBpcyBzZXQgdG8KKyAqIHRoZSBzbmFwc2hvdCBjb25mbGlj dCBob3Jpem9uIHdlIGZvciB0aGUgV0FMIHJlY29yZCBzaG91bGQgd2UgZGVjaWRlIHRvCisgKiBm cmVlemUgdHVwbGVzLgogICoKICAqIHByc3RhdGUgaXMgYm90aCBhbiBpbnB1dCBhbmQgb3V0cHV0 IHBhcmFtZXRlci4KICAqCkBAIC0zMjAsNyArMzIyLDggQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXpl KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkgIGJvb2wgZGlkX3R1cGxl X2hpbnRfZnBpLAogCQkJCQkgIGJvb2wgZG9fcHJ1bmUsCiAJCQkJCSAgYm9vbCBkb19oaW50X3By dW5lLAotCQkJCQkgIFBydW5lU3RhdGUgKnByc3RhdGUpCisJCQkJCSAgUHJ1bmVTdGF0ZSAqcHJz dGF0ZSwKKwkJCQkJICBUcmFuc2FjdGlvbklkICpmcnpfY29uZmxpY3RfaG9yaXpvbikKIHsKIAli b29sCQlkb19mcmVlemUgPSBmYWxzZTsKIApAQCAtMzkwLDYgKzM5MywyMiBAQCBoZWFwX3BhZ2Vf d2lsbF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCSAqIGNyaXRp Y2FsIHNlY3Rpb24uCiAJCSAqLwogCQloZWFwX3ByZV9mcmVlemVfY2hlY2tzKGJ1ZmZlciwgcHJz dGF0ZS0+ZnJvemVuLCBwcnN0YXRlLT5uZnJvemVuKTsKKworCQkvKgorCQkgKiBDYWxjdWxhdGUg d2hhdCB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiBzaG91bGQgYmUgZm9yIGEgcmVjb3Jk CisJCSAqIGZyZWV6aW5nIHR1cGxlcy4gV2UgY2FuIHVzZSB0aGUgdmlzaWJpbGl0eV9jdXRvZmZf eGlkIGFzIG91ciBjdXRvZmYKKwkJICogZm9yIGNvbmZsaWN0cyB3aGVuIHRoZSB3aG9sZSBwYWdl IGlzIGVsaWdpYmxlIHRvIGJlY29tZSBhbGwtZnJvemVuCisJCSAqIGluIHRoZSBWTSBvbmNlIHdl J3JlIGRvbmUgd2l0aCBpdC4gT3RoZXJ3aXNlLCB3ZSBnZW5lcmF0ZSBhCisJCSAqIGNvbnNlcnZh dGl2ZSBjdXRvZmYgYnkgc3RlcHBpbmcgYmFjayBmcm9tIE9sZGVzdFhtaW4uCisJCSAqLworCQlp ZiAocHJzdGF0ZS0+YWxsX2Zyb3plbikKKwkJCSpmcnpfY29uZmxpY3RfaG9yaXpvbiA9IHByc3Rh dGUtPnZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKKwkJZWxzZQorCQl7CisJCQkvKiBBdm9pZHMgZmFs c2UgY29uZmxpY3RzIHdoZW4gaG90X3N0YW5kYnlfZmVlZGJhY2sgaW4gdXNlICovCisJCQkqZnJ6 X2NvbmZsaWN0X2hvcml6b24gPSBwcnN0YXRlLT5jdXRvZmZzLT5PbGRlc3RYbWluOworCQkJVHJh bnNhY3Rpb25JZFJldHJlYXQoKmZyel9jb25mbGljdF9ob3Jpem9uKTsKKwkJfQogCX0KIAllbHNl IGlmIChwcnN0YXRlLT5uZnJvemVuID4gMCkKIAl7CkBAIC00MzQsMTAgKzQ1MywxMSBAQCBoZWFw X3BhZ2Vfd2lsbF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAgKiBj b25zaWRlcmVkIGFkdmFudGFnZW91cyBmb3Igb3ZlcmFsbCBzeXN0ZW0gcGVyZm9ybWFuY2UgdG8g ZG8gc28gbm93LiAgVGhlCiAgKiAncGFyYW1zLmN1dG9mZnMnLCAncHJlc3VsdCcsICduZXdfcmVs ZnJvemVuX3hpZCcgYW5kICduZXdfcmVsbWluX214aWQnCiAgKiBhcmd1bWVudHMgYXJlIHJlcXVp cmVkIHdoZW4gZnJlZXppbmcuICBXaGVuIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcwotICog cGFzc2VkLCB3ZSBhbHNvIHNldCBwcmVzdWx0LT5hbGxfdmlzaWJsZSBhbmQgcHJlc3VsdC0+YWxs X2Zyb3plbiBvbiBleGl0LAotICogdG8gaW5kaWNhdGUgaWYgdGhlIFZNIGJpdHMgY2FuIGJlIHNl dC4gIFRoZXkgYXJlIGFsd2F5cyBzZXQgdG8gZmFsc2Ugd2hlbgotICogdGhlIEhFQVBfUFJVTkVf RlJFRVpFIG9wdGlvbiBpcyBub3QgcGFzc2VkLCBiZWNhdXNlIGF0IHRoZSBtb21lbnQgb25seQot ICogY2FsbGVycyB0aGF0IGFsc28gZnJlZXplIG5lZWQgdGhhdCBpbmZvcm1hdGlvbi4KKyAqIHBh c3NlZCwgd2UgYWxzbyBzZXQgcHJlc3VsdC0+YWxsX3Zpc2libGUgYW5kIHByZXN1bHQtPmFsbF9m cm96ZW4gYWZ0ZXIKKyAqIGRldGVybWluaW5nIHdoZXRoZXIgb3Igbm90IHRvIG9wcG9ydW5pc3Rp Y2FsbHkgZnJlZXplLCB0byBpbmRpY2F0ZSBpZiB0aGUKKyAqIFZNIGJpdHMgY2FuIGJlIHNldC4g IFRoZXkgYXJlIGFsd2F5cyBzZXQgdG8gZmFsc2Ugd2hlbiB0aGUKKyAqIEhFQVBfUFJVTkVfRlJF RVpFIG9wdGlvbiBpcyBub3QgcGFzc2VkLCBiZWNhdXNlIGF0IHRoZSBtb21lbnQgb25seSBjYWxs ZXJzCisgKiB0aGF0IGFsc28gZnJlZXplIG5lZWQgdGhhdCBpbmZvcm1hdGlvbi4KICAqCiAgKiBw cmVzdWx0IGNvbnRhaW5zIG91dHB1dCBwYXJhbWV0ZXJzIG5lZWRlZCBieSBjYWxsZXJzLCBzdWNo IGFzIHRoZSBudW1iZXIgb2YKICAqIHR1cGxlcyByZW1vdmVkIGFuZCB0aGUgb2Zmc2V0cyBvZiBk ZWFkIGl0ZW1zIG9uIHRoZSBwYWdlIGFmdGVyIHBydW5pbmcuCkBAIC00NzMsNiArNDkzLDcgQEAg aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAli b29sCQlkb19oaW50X3BydW5lOwogCWJvb2wJCWRpZF90dXBsZV9oaW50X2ZwaTsKIAlpbnQ2NAkJ ZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uud2FsX2ZwaTsKKwlUcmFuc2FjdGlvbklkIGZyel9jb25m bGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIAkvKiBDb3B5IHBhcmFtZXRl cnMgdG8gcHJzdGF0ZSAqLwogCXByc3RhdGUudmlzdGVzdCA9IHBhcmFtcy0+dmlzdGVzdDsKQEAg LTU0MiwxMCArNTYzLDEwIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXpl UGFyYW1zICpwYXJhbXMsCiAJICogYXJlIHR1cGxlcyBwcmVzZW50IHRoYXQgYXJlIG5vdCB2aXNp YmxlIHRvIGV2ZXJ5b25lIG9yIGlmIHRoZXJlIGFyZQogCSAqIGRlYWQgdHVwbGVzIHdoaWNoIGFy ZSBub3QgeWV0IHJlbW92YWJsZS4gIEhvd2V2ZXIsIGRlYWQgdHVwbGVzIHdoaWNoCiAJICogd2ls bCBiZSByZW1vdmVkIGJ5IHRoZSBlbmQgb2YgdmFjdXVtaW5nIHNob3VsZCBub3QgcHJlY2x1ZGUg dXMgZnJvbQotCSAqIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6aW5nLiAgQmVjYXVzZSBvZiB0aGF0 LCB3ZSBkbyBub3QgY2xlYXIKLQkgKiBhbGxfdmlzaWJsZSB3aGVuIHdlIHNlZSBMUF9ERUFEIGl0 ZW1zLiAgV2UgZml4IHRoYXQgYXQgdGhlIGVuZCBvZiB0aGUKLQkgKiBmdW5jdGlvbiwgd2hlbiB3 ZSByZXR1cm4gdGhlIHZhbHVlIHRvIHRoZSBjYWxsZXIsIHNvIHRoYXQgdGhlIGNhbGxlcgotCSAq IGRvZXNuJ3Qgc2V0IHRoZSBWTSBiaXQgaW5jb3JyZWN0bHkuCisJICogb3Bwb3J0dW5pc3RpY2Fs bHkgZnJlZXppbmcuICBCZWNhdXNlIG9mIHRoYXQsIHdlIGRvIG5vdCBpbW1lZGlhdGVseQorCSAq IGNsZWFyIGFsbF92aXNpYmxlIHdoZW4gd2Ugc2VlIExQX0RFQUQgaXRlbXMuICBXZSBmaXggdGhh dCBhZnRlcgorCSAqIHNjYW5uaW5nIHRoZSBsaW5lIHBvaW50ZXJzLCBiZWZvcmUgd2UgcmV0dXJu IHRoZSB2YWx1ZSB0byB0aGUgY2FsbGVyLAorCSAqIHNvIHRoYXQgdGhlIGNhbGxlciBkb2Vzbid0 IHNldCB0aGUgVk0gYml0IGluY29ycmVjdGx5LgogCSAqLwogCWlmIChwcnN0YXRlLmF0dGVtcHRf ZnJlZXplKQogCXsKQEAgLTc4MCw3ICs4MDEsMjQgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVl emUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCQkJCQkJCSAgZGlkX3R1cGxlX2hpbnRf ZnBpLAogCQkJCQkJCQkJICBkb19wcnVuZSwKIAkJCQkJCQkJCSAgZG9faGludF9wcnVuZSwKLQkJ CQkJCQkJCSAgJnByc3RhdGUpOworCQkJCQkJCQkJICAmcHJzdGF0ZSwKKwkJCQkJCQkJCSAgJmZy el9jb25mbGljdF9ob3Jpem9uKTsKKworCS8qCisJICogV2hpbGUgc2Nhbm5pbmcgdGhlIGxpbmUg cG9pbnRlcnMsIHdlIGRpZCBub3QgY2xlYXIKKwkgKiBhbGxfdmlzaWJsZS9hbGxfZnJvemVuIHdo ZW4gZW5jb3VudGVyaW5nIExQX0RFQUQgaXRlbXMgYmVjYXVzZSB3ZQorCSAqIHdhbnRlZCB0aGUg ZGVjaXNpb24gd2hldGhlciBvciBub3QgdG8gZnJlZXplIHRoZSBwYWdlIHRvIGJlIHVuYWZmZWN0 ZWQKKwkgKiBieSB0aGUgc2hvcnQtdGVybSBwcmVzZW5jZSBvZiBMUF9ERUFEIGl0ZW1zLiAgVGhl c2UgTFBfREVBRCBpdGVtcyBhcmUKKwkgKiBlZmZlY3RpdmVseSBhc3N1bWVkIHRvIGJlIExQX1VO VVNFRCBpdGVtcyBpbiB0aGUgbWFraW5nLiAgSXQgZG9lc24ndAorCSAqIG1hdHRlciB3aGljaCB2 YWN1dW0gaGVhcCBwYXNzIChpbml0aWFsIHBhc3Mgb3IgZmluYWwgcGFzcykgZW5kcyB1cAorCSAq IHNldHRpbmcgdGhlIHBhZ2UgYWxsLWZyb3plbiwgYXMgbG9uZyBhcyB0aGUgb25nb2luZyBWQUNV VU0gZG9lcyBpdC4KKwkgKgorCSAqIE5vdyB0aGF0IHdlIGZpbmlzaGVkIGRldGVybWluaW5nIHdo ZXRoZXIgb3Igbm90IHRvIGZyZWV6ZSB0aGUgcGFnZSwKKwkgKiB1cGRhdGUgYWxsX3Zpc2libGUg YW5kIGFsbF9mcm96ZW4gc28gdGhhdCB0aGV5IHJlZmxlY3QgdGhlIHRydWUgc3RhdGUKKwkgKiBv ZiB0aGUgcGFnZSBmb3Igc2V0dGluZyBQRF9BTExfVklTSUJMRSBhbmQgVk0gYml0cy4KKwkgKi8K KwlpZiAocHJzdGF0ZS5scGRlYWRfaXRlbXMgPiAwKQorCQlwcnN0YXRlLmFsbF92aXNpYmxlID0g cHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7CiAKIAlBc3NlcnQoIXByc3RhdGUuYWxsX2Zyb3pl biB8fCBwcnN0YXRlLmFsbF92aXNpYmxlKTsKIApAQCAtODQyLDI3ICs4ODAsOCBAQCBoZWFwX3Bh Z2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJICogb24g dGhlIHN0YW5kYnkgd2l0aCB4aWRzIG9sZGVyIHRoYW4gdGhlIHlvdW5nZXN0IHR1cGxlIHRoaXMK IAkJCSAqIHJlY29yZCB3aWxsIGZyZWV6ZSB3aWxsIGNvbmZsaWN0LgogCQkJICovCi0JCQlUcmFu c2FjdGlvbklkIGZyel9jb25mbGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJ CQlUcmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZDsKIAotCQkJLyoKLQkJCSAqIFdlIGNhbiB1c2Ug dGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBhcyBvdXIgY3V0b2ZmIGZvcgotCQkJICogY29uZmxp Y3RzIHdoZW4gdGhlIHdob2xlIHBhZ2UgaXMgZWxpZ2libGUgdG8gYmVjb21lIGFsbC1mcm96ZW4K LQkJCSAqIGluIHRoZSBWTSBvbmNlIHdlJ3JlIGRvbmUgd2l0aCBpdC4gIE90aGVyd2lzZSB3ZSBn ZW5lcmF0ZSBhCi0JCQkgKiBjb25zZXJ2YXRpdmUgY3V0b2ZmIGJ5IHN0ZXBwaW5nIGJhY2sgZnJv bSBPbGRlc3RYbWluLgotCQkJICovCi0JCQlpZiAoZG9fZnJlZXplKQotCQkJewotCQkJCWlmIChw cnN0YXRlLmFsbF9mcm96ZW4pCi0JCQkJCWZyel9jb25mbGljdF9ob3Jpem9uID0gcHJzdGF0ZS52 aXNpYmlsaXR5X2N1dG9mZl94aWQ7Ci0JCQkJZWxzZQotCQkJCXsKLQkJCQkJLyogQXZvaWRzIGZh bHNlIGNvbmZsaWN0cyB3aGVuIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGluIHVzZSAqLwotCQkJCQlm cnpfY29uZmxpY3RfaG9yaXpvbiA9IHByc3RhdGUuY3V0b2Zmcy0+T2xkZXN0WG1pbjsKLQkJCQkJ VHJhbnNhY3Rpb25JZFJldHJlYXQoZnJ6X2NvbmZsaWN0X2hvcml6b24pOwotCQkJCX0KLQkJCX0K LQogCQkJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKGZyel9jb25mbGljdF9ob3Jpem9uLCBwcnN0 YXRlLmxhdGVzdF94aWRfcmVtb3ZlZCkpCiAJCQkJY29uZmxpY3RfeGlkID0gZnJ6X2NvbmZsaWN0 X2hvcml6b247CiAJCQllbHNlCkBAIC04ODgsMzAgKzkwNyw4IEBAIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJcHJlc3VsdC0+bmZyb3plbiA9 IHByc3RhdGUubmZyb3plbjsKIAlwcmVzdWx0LT5saXZlX3R1cGxlcyA9IHByc3RhdGUubGl2ZV90 dXBsZXM7CiAJcHJlc3VsdC0+cmVjZW50bHlfZGVhZF90dXBsZXMgPSBwcnN0YXRlLnJlY2VudGx5 X2RlYWRfdHVwbGVzOwotCi0JLyoKLQkgKiBJdCB3YXMgY29udmVuaWVudCB0byBpZ25vcmUgTFBf REVBRCBpdGVtcyBpbiBhbGxfdmlzaWJsZSBlYXJsaWVyIG9uIHRvCi0JICogbWFrZSB0aGUgY2hv aWNlIG9mIHdoZXRoZXIgb3Igbm90IHRvIGZyZWV6ZSB0aGUgcGFnZSB1bmFmZmVjdGVkIGJ5IHRo ZQotCSAqIHNob3J0LXRlcm0gcHJlc2VuY2Ugb2YgTFBfREVBRCBpdGVtcy4gIFRoZXNlIExQX0RF QUQgaXRlbXMgd2VyZQotCSAqIGVmZmVjdGl2ZWx5IGFzc3VtZWQgdG8gYmUgTFBfVU5VU0VEIGl0 ZW1zIGluIHRoZSBtYWtpbmcuICBJdCBkb2Vzbid0Ci0JICogbWF0dGVyIHdoaWNoIHZhY3V1bSBo ZWFwIHBhc3MgKGluaXRpYWwgcGFzcyBvciBmaW5hbCBwYXNzKSBlbmRzIHVwCi0JICogc2V0dGlu ZyB0aGUgcGFnZSBhbGwtZnJvemVuLCBhcyBsb25nIGFzIHRoZSBvbmdvaW5nIFZBQ1VVTSBkb2Vz IGl0LgotCSAqCi0JICogTm93IHRoYXQgZnJlZXppbmcgaGFzIGJlZW4gZmluYWxpemVkLCB1bnNl dCBhbGxfdmlzaWJsZSBpZiB0aGVyZSBhcmUKLQkgKiBhbnkgTFBfREVBRCBpdGVtcyBvbiB0aGUg cGFnZS4gIEl0IG5lZWRzIHRvIHJlZmxlY3QgdGhlIHByZXNlbnQgc3RhdGUKLQkgKiBvZiB0aGUg cGFnZSwgYXMgZXhwZWN0ZWQgYnkgb3VyIGNhbGxlci4KLQkgKi8KLQlpZiAocHJzdGF0ZS5hbGxf dmlzaWJsZSAmJiBwcnN0YXRlLmxwZGVhZF9pdGVtcyA9PSAwKQotCXsKLQkJcHJlc3VsdC0+YWxs X3Zpc2libGUgPSBwcnN0YXRlLmFsbF92aXNpYmxlOwotCQlwcmVzdWx0LT5hbGxfZnJvemVuID0g cHJzdGF0ZS5hbGxfZnJvemVuOwotCX0KLQllbHNlCi0JewotCQlwcmVzdWx0LT5hbGxfdmlzaWJs ZSA9IGZhbHNlOwotCQlwcmVzdWx0LT5hbGxfZnJvemVuID0gZmFsc2U7Ci0JfQotCisJcHJlc3Vs dC0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF92aXNpYmxlOworCXByZXN1bHQtPmFsbF9mcm96 ZW4gPSBwcnN0YXRlLmFsbF9mcm96ZW47CiAJcHJlc3VsdC0+aGFzdHVwID0gcHJzdGF0ZS5oYXN0 dXA7CiAKIAkvKgotLSAKMi40My4wCgo= --000000000000fb0f430642c7990f Content-Type: text/x-patch; charset="UTF-8"; name="v19-0004-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Disposition: attachment; filename="v19-0004-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhkswbjj3 RnJvbSAwMmMxYzIzNzc5YWEyMmUwNWRkZTUyYmIwMjcwMTM5OGY1MjYxNjU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDggT2N0IDIwMjUgMTU6Mzk6MDEgLTA0MDAKU3ViamVjdDogW1BB VENIIHYxOSAwNC8xMl0gRWxpbWluYXRlIFhMT0dfSEVBUDJfVklTSUJMRSBmcm9tIHZhY3V1bSBw aGFzZSBJCiBwcnVuZS9mcmVlemUKClZhY3V1bSBubyBsb25nZXIgZW1pdHMgYSBzZXBhcmF0ZSBX QUwgcmVjb3JkIGZvciBlYWNoIHBhZ2Ugc2V0CmFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4gZHVy aW5nIHBoYXNlIEkuIEluc3RlYWQsIHZpc2liaWxpdHkgbWFwCnVwZGF0ZXMgYXJlIG5vdyBpbmNs dWRlZCBpbiB0aGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQgdGhhdAppcyBh bHJlYWR5IGVtaXR0ZWQgZm9yIHBydW5pbmcgYW5kIGZyZWV6aW5nLgoKUHJldmlvdXNseSwgaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBkZXRlcm1pbmVkIHdoZXRoZXIgYSBwYWdlIHdhcwph bGwtdmlzaWJsZSwgYnV0IHRoZSBjb3JyZXNwb25kaW5nIFZNIGJpdHMgd2VyZSBvbmx5IHNldCBs YXRlciBpbgpsYXp5X3NjYW5fcHJ1bmUoKS4gTm93IHRoZSBWTSBpcyB1cGRhdGVkIGltbWVkaWF0 ZWx5IGluCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCksIGF0IHRoZSBzYW1lIHRpbWUgYXMg dGhlIGhlYXAKbW9kaWZpY2F0aW9ucy4KClRoaXMgY2hhbmdlIGFwcGxpZXMgb25seSB0byB2YWN1 dW0gcGhhc2UgSSwgbm90IHRvIHBydW5pbmcgcGVyZm9ybWVkCmR1cmluZyBub3JtYWwgcGFnZSBh Y2Nlc3MuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBSb2JlcnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZp ZXdlZC1ieTogS2lyaWxsIFJlc2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KRGlzY3Vzc2lv bjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9mbGF0L0NBQUtSdV9aTXc2TnBkX3FtMktNJTJCRndRM2NN T014MURoM1ZNaHA4LVY3U09MeGRLOS1nJTQwbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIHwgIDM3ICsrLQogc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMgICB8IDQzNSArKysrKysrKysrKysrKysrKysrKy0tLS0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICB8IDIwNyArLS0tLS0tLS0tLS0KIHNy Yy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICAgfCAgNDMgKystCiA0IGZpbGVzIGNo YW5nZWQsIDQyMiBpbnNlcnRpb25zKCspLCAzMDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV94bG9nLmMKaW5kZXggMTFjYjNmNzRkYTUuLjJhZjcyNDQ1MWMzIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKQEAgLTEwNCw2ICsxMDQsOCBAQCBoZWFw X3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlPZmZzZXROdW1i ZXIgKmZyel9vZmZzZXRzOwogCQljaGFyCSAgICpkYXRhcHRyID0gWExvZ1JlY0dldEJsb2NrRGF0 YShyZWNvcmQsIDAsICZkYXRhbGVuKTsKIAkJYm9vbAkJZG9fcHJ1bmU7CisJCWJvb2wJCXNldF9s c24gPSBmYWxzZTsKKwkJYm9vbAkJbWFya19idWZmZXJfZGlydHkgPSBmYWxzZTsKIAogCQloZWFw X3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShkYXRhcHRyLCB4bHJlYy5mbGFncywK IAkJCQkJCQkJCQkJICAgJm5wbGFucywgJnBsYW5zLCAmZnJ6X29mZnNldHMsCkBAIC0xNTcsMTcg KzE1OSwzNiBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3Jk KQogCQkvKiBUaGVyZSBzaG91bGQgYmUgbm8gbW9yZSBkYXRhICovCiAJCUFzc2VydCgoY2hhciAq KSBmcnpfb2Zmc2V0cyA9PSBkYXRhcHRyICsgZGF0YWxlbik7CiAKLQkJaWYgKHZtZmxhZ3MgJiBW SVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpCi0JCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQot CQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKKwkJaWYgKGRvX3BydW5lIHx8IG5wbGFucyA+IDAp CisJCQltYXJrX2J1ZmZlcl9kaXJ0eSA9IHNldF9sc24gPSB0cnVlOwogCiAJCS8qCi0JCSAqIFNl ZSBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKCkgZm9yIGNvbW1lbnRhcnkgb24gd2hlbiB3ZSBz ZXQgdGhlCi0JCSAqIGhlYXAgcGFnZSBMU04uCisJCSAqIFRoZSBjcml0aWNhbCBpbnRlZ3JpdHkg cmVxdWlyZW1lbnQgaGVyZSBpcyB0aGF0IHdlIG11c3QgbmV2ZXIgZW5kCisJCSAqIHVwIHdpdGgg d2l0aCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IHNldCBhbmQgdGhlIHBhZ2UtbGV2ZWwKKwkJICog UERfQUxMX1ZJU0lCTEUgYml0IGNsZWFyLiAgSWYgdGhhdCB3ZXJlIHRvIG9jY3VyLCBhIHN1YnNl cXVlbnQgcGFnZQorCQkgKiBtb2RpZmljYXRpb24gd291bGQgZmFpbCB0byBjbGVhciB0aGUgdmlz aWJpbGl0eSBtYXAgYml0LgorCQkgKgorCQkgKiB2bWZsYWdzIG1heSBiZSBub256ZXJvIHdpdGgg UERfQUxMX1ZJU0lCTEUgYWxyZWFkeSBzZXQgKGUuZy4gd2hlbgorCQkgKiBtYXJraW5nIGFuIGFs bC12aXNpYmxlIHBhZ2UgYWxsLWZyb3plbikuIElmIG9ubHkgdGhlIFZNIGlzIHVwZGF0ZWQsCisJ CSAqIHRoZSBoZWFwIHBhZ2UgbmVlZCBub3QgYmUgZGlydGllZC4KIAkJICovCi0JCWlmIChkb19w cnVuZSB8fCBucGxhbnMgPiAwIHx8Ci0JCQkoKHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElE X0JJVFMpICYmIFhMb2dIaW50Qml0SXNOZWVkZWQoKSkpCisJCWlmICgodm1mbGFncyAmIFZJU0lC SUxJVFlNQVBfVkFMSURfQklUUykgJiYgIVBhZ2VJc0FsbFZpc2libGUocGFnZSkpCisJCXsKKwkJ CVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOworCQkJbWFya19idWZmZXJfZGlydHkgPSB0cnVlOwor CisJCQkvKgorCQkJICogU2VlIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoKSBmb3IgY29tbWVu dGFyeSBvbiB3aGVuIHdlIHNldAorCQkJICogdGhlIGhlYXAgcGFnZSBMU04uCisJCQkgKi8KKwkJ CWlmIChYTG9nSGludEJpdElzTmVlZGVkKCkpCisJCQkJc2V0X2xzbiA9IHRydWU7CisJCX0KKwor CQlpZiAobWFya19idWZmZXJfZGlydHkpCisJCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKKwor CQlpZiAoc2V0X2xzbikKIAkJCVBhZ2VTZXRMU04ocGFnZSwgbHNuKTsKIAogCQkvKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCBlZjg4NjEwMjJmMS4uOGRhZmJkMzQ0ZDggMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0xOSw3ICsxOSw3IEBACiAjaW5jbHVk ZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIK ICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgotI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5 bWFwZGVmcy5oIgorI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwLmgiCiAjaW5jbHVkZSAi YWNjZXNzL3hsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgogI2luY2x1ZGUg ImNvbW1hbmRzL3ZhY3V1bS5oIgpAQCAtNDQsNiArNDQsOCBAQCB0eXBlZGVmIHN0cnVjdAogCWJv b2wJCW1hcmtfdW51c2VkX25vdzsKIAkvKiB3aGV0aGVyIHRvIGF0dGVtcHQgZnJlZXppbmcgdHVw bGVzICovCiAJYm9vbAkJYXR0ZW1wdF9mcmVlemU7CisJLyogd2hldGhlciBvciBub3QgdG8gYXR0 ZW1wdCB1cGRhdGluZyB0aGUgVk0gKi8KKwlib29sCQlhdHRlbXB0X3VwZGF0ZV92bTsKIAlzdHJ1 Y3QgVmFjdXVtQ3V0b2ZmcyAqY3V0b2ZmczsKIAogCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTMzLDE2ICsxMzUsMTcgQEAgdHlw ZWRlZiBzdHJ1Y3QKIAkgKiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBpbmRpY2F0ZSBpZiB0 aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4KIAkgKiBiaXRzIGluIHRoZSB2aXNpYmlsaXR5 IG1hcCBjYW4gYmUgc2V0IGZvciB0aGlzIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4KIAkgKgotCSAqIHZp c2liaWxpdHlfY3V0b2ZmX3hpZCBpcyB0aGUgbmV3ZXN0IHhtaW4gb2YgbGl2ZSB0dXBsZXMgb24g dGhlIHBhZ2UuCi0JICogVGhlIGNhbGxlciBjYW4gdXNlIGl0IGFzIHRoZSBjb25mbGljdCBob3Jp em9uLCB3aGVuIHNldHRpbmcgdGhlIFZNCi0JICogYml0cy4gIEl0IGlzIG9ubHkgdmFsaWQgaWYg d2UgZnJvemUgc29tZSB0dXBsZXMsIGFuZCBhbGxfZnJvemVuIGlzCi0JICogdHJ1ZS4KKwkgKiB2 aXNpYmlsaXR5X2N1dG9mZl94aWQgaXMgdGhlIG5ld2VzdCB4bWluIG9mIGxpdmUgdHVwbGVzIG9u IHRoZSBwYWdlLiBJdAorCSAqIGNhbiBiZSB1c2VkIGFzIHRoZSBjb25mbGljdCBob3Jpem9uIHdo ZW4gc2V0dGluZyB0aGUgVk0gb3Igd2hlbgorCSAqIGZyZWV6aW5nIGFsbCB0aGUgdHVwbGVzIG9u IHRoZSBwYWdlLiBJdCBpcyBvbmx5IHZhbGlkIHdoZW4gYWxsIHRoZSBsaXZlCisJICogdHVwbGVz IG9uIHRoZSBwYWdlIGFyZSBhbGwtdmlzaWJsZS4KIAkgKgogCSAqIE5PVEU6IGFsbF92aXNpYmxl IGFuZCBhbGxfZnJvemVuIGluaXRpYWxseSBkb24ndCBpbmNsdWRlIExQX0RFQUQgaXRlbXMuCiAJ ICogVGhhdCdzIGNvbnZlbmllbnQgZm9yIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgdG8g dXNlIHRoZW0gdG8KLQkgKiBkZWNpZGUgd2hldGhlciB0byBmcmVlemUgdGhlIHBhZ2Ugb3Igbm90 LiAgVGhlIGFsbF92aXNpYmxlIGFuZAotCSAqIGFsbF9mcm96ZW4gdmFsdWVzIHJldHVybmVkIHRv IHRoZSBjYWxsZXIgYXJlIGFkanVzdGVkIHRvIGluY2x1ZGUKLQkgKiBMUF9ERUFEIGl0ZW1zIGFm dGVyIHdlIGRldGVybWluZSB3aGV0aGVyIHRvIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6ZS4KKwkg KiBkZWNpZGUgd2hldGhlciB0byBvcHBvcnR1bmlzdGljYWxseSBmcmVlemUgdGhlIHBhZ2Ugb3Ig bm90LiAgVGhlCisJICogYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gdmFsdWVzIHVsdGltYXRl bHkgdXNlZCB0byBzZXQgdGhlIFZNIGFyZQorCSAqIGFkanVzdGVkIHRvIGluY2x1ZGUgTFBfREVB RCBpdGVtcyBhZnRlciB3ZSBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgdG8KKwkgKiBvcHBvcnR1 bmlzdGljYWxseSBmcmVlemUuCiAJICovCiAJYm9vbAkJYWxsX3Zpc2libGU7CiAJYm9vbAkJYWxs X2Zyb3plbjsKQEAgLTE3MywxMCArMTc2LDIxIEBAIHN0YXRpYyB2b2lkIGhlYXBfcHJ1bmVfcmVj b3JkX3VuY2hhbmdlZF9scF9yZWRpcmVjdChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROCiAK IHN0YXRpYyB2b2lkIHBhZ2VfdmVyaWZ5X3JlZGlyZWN0cyhQYWdlIHBhZ2UpOwogCitzdGF0aWMg VHJhbnNhY3Rpb25JZCBnZXRfY29uZmxpY3RfeGlkKGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJl ZXplLCBib29sIGRvX3NldF92bSwKKwkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBsYXRlc3RfeGlk X3JlbW92ZWQsIFRyYW5zYWN0aW9uSWQgZnJ6X2NvbmZsaWN0X2hvcml6b24sCisJCQkJCQkJCQkg IFRyYW5zYWN0aW9uSWQgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLCBib29sIGJsa19hbHJlYWR5X2F2 LAorCQkJCQkJCQkJICBib29sIHNldF9ibGtfYWxsX2Zyb3plbik7CiBzdGF0aWMgYm9vbCBoZWFw X3BhZ2Vfd2lsbF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJ CQkJCSAgYm9vbCBkaWRfdHVwbGVfaGludF9mcGksIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9faGlu dF9wcnVuZSwKIAkJCQkJCQkJICBQcnVuZVN0YXRlICpwcnN0YXRlLCBUcmFuc2FjdGlvbklkICpm cnpfY29uZmxpY3RfaG9yaXpvbik7Ci0KK3N0YXRpYyBib29sIGhlYXBfcGFnZV93aWxsX3NldF92 aXMoUmVsYXRpb24gcmVsYXRpb24sCisJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLAor CQkJCQkJCQkgICBCdWZmZXIgaGVhcF9idWYsCisJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlciwK KwkJCQkJCQkJICAgYm9vbCBibGtfa25vd25fYXYsCisJCQkJCQkJCSAgIGNvbnN0IFBydW5lU3Rh dGUgKnByc3RhdGUsCisJCQkJCQkJCSAgIHVpbnQ4ICp2bWZsYWdzLAorCQkJCQkJCQkgICBib29s ICpkb19zZXRfcGRfdmlzKTsKIAogLyoKICAqIE9wdGlvbmFsbHkgcHJ1bmUgYW5kIHJlcGFpciBm cmFnbWVudGF0aW9uIGluIHRoZSBzcGVjaWZpZWQgcGFnZS4KQEAgLTI2Miw2ICsyNzYsOCBAQCBo ZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQogCQkJ cGFyYW1zLnJlYXNvbiA9IFBSVU5FX09OX0FDQ0VTUzsKIAkJCXBhcmFtcy52aXN0ZXN0ID0gdmlz dGVzdDsKIAkJCXBhcmFtcy5jdXRvZmZzID0gTlVMTDsKKwkJCXBhcmFtcy52bWJ1ZmZlciA9IElu dmFsaWRCdWZmZXI7CisJCQlwYXJhbXMuYmxrX2tub3duX2F2ID0gZmFsc2U7CiAKIAkJCS8qCiAJ CQkgKiBGb3Igbm93LCBwYXNzIG1hcmtfdW51c2VkX25vdyBhcyBmYWxzZSByZWdhcmRsZXNzIG9m IHdoZXRoZXIgb3IKQEAgLTQzNCwxMCArNDUwLDEwOCBAQCBoZWFwX3BhZ2Vfd2lsbF9mcmVlemUo UmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJcmV0dXJuIGRvX2ZyZWV6ZTsKIH0K IAorLyoKKyAqIERlY2lkZSB3aGV0aGVyIHRvIHNldCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0cyBm b3IgaGVhcF9ibGssIHVzaW5nCisgKiBpbmZvcm1hdGlvbiBmcm9tIFBydW5lU3RhdGUgYW5kIGJs a19rbm93bl9hdi4gU29tZSBjYWxsZXJzIG1heSBhbHJlYWR5CisgKiBoYXZlIGV4YW1pbmVkIHRo aXMgcGFnZeKAmXMgVk0gYml0cyAoZS5nLiwgVkFDVVVNIGluIHRoZSBwcmV2aW91cworICogaGVh cF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgY2FsbCkgYW5kIGNhbiBwYXNzIHRoYXQgYWxvbmcuCisg KgorICogUmV0dXJucyB0cnVlIGlmIG9uZSBvciBib3RoIFZNIGJpdHMgc2hvdWxkIGJlIHNldCwg YWxvbmcgd2l0aCB0aGUgZGVzaXJlZAorICogZmxhZ3MgaW4gKnZtZmxhZ3MuIEFsc28gaW5kaWNh dGVzIHZpYSBkb19zZXRfcGRfdmlzIHdoZXRoZXIgUERfQUxMX1ZJU0lCTEUKKyAqIHNob3VsZCBi ZSBzZXQgb24gdGhlIGhlYXAgcGFnZS4KKyAqLworc3RhdGljIGJvb2wKK2hlYXBfcGFnZV93aWxs X3NldF92aXMoUmVsYXRpb24gcmVsYXRpb24sCisJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxr LAorCQkJCQkgICBCdWZmZXIgaGVhcF9idWYsCisJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlciwKKwkJ CQkJICAgYm9vbCBibGtfa25vd25fYXYsCisJCQkJCSAgIGNvbnN0IFBydW5lU3RhdGUgKnByc3Rh dGUsCisJCQkJCSAgIHVpbnQ4ICp2bWZsYWdzLAorCQkJCQkgICBib29sICpkb19zZXRfcGRfdmlz KQoreworCVBhZ2UJCWhlYXBfcGFnZSA9IEJ1ZmZlckdldFBhZ2UoaGVhcF9idWYpOworCWJvb2wJ CWRvX3NldF92bSA9IGZhbHNlOworCisJKmRvX3NldF9wZF92aXMgPSBmYWxzZTsKKworCWlmICgh cHJzdGF0ZS0+YXR0ZW1wdF91cGRhdGVfdm0pCisJeworCQlBc3NlcnQoIXByc3RhdGUtPmFsbF92 aXNpYmxlICYmICFwcnN0YXRlLT5hbGxfZnJvemVuKTsKKwkJQXNzZXJ0KCp2bWZsYWdzID09IDAp OworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJaWYgKHByc3RhdGUtPmFsbF92aXNpYmxlICYmICFQ YWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkpCisJCSpkb19zZXRfcGRfdmlzID0gdHJ1ZTsKKwor CWlmICgocHJzdGF0ZS0+YWxsX3Zpc2libGUgJiYgIWJsa19rbm93bl9hdikgfHwKKwkJKHByc3Rh dGUtPmFsbF9mcm96ZW4gJiYgIVZNX0FMTF9GUk9aRU4ocmVsYXRpb24sIGhlYXBfYmxrLCAmdm1i dWZmZXIpKSkKKwl7CisJCSp2bWZsYWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKKwkJ aWYgKHByc3RhdGUtPmFsbF9mcm96ZW4pCisJCQkqdm1mbGFncyB8PSBWSVNJQklMSVRZTUFQX0FM TF9GUk9aRU47CisKKwkJZG9fc2V0X3ZtID0gdHJ1ZTsKKwl9CisKKwkvKgorCSAqIE5vdyBoYW5k bGUgdHdvIHBvdGVudGlhbCBjb3JydXB0aW9uIGNhc2VzOgorCSAqCisJICogVGhlc2UgZG8gbm90 IG5lZWQgdG8gaGFwcGVuIGluIGEgY3JpdGljYWwgc2VjdGlvbiBhbmQgYXJlIG5vdAorCSAqIFdB TC1sb2dnZWQuCisJICoKKwkgKiBBcyBvZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkg bWFwIGJpdCBzaG91bGQgbmV2ZXIgYmUgc2V0IGlmIHRoZQorCSAqIHBhZ2UtbGV2ZWwgYml0IGlz IGNsZWFyLiAgSG93ZXZlciwgaXQncyBwb3NzaWJsZSB0aGF0IGluIHZhY3V1bSB0aGUgYml0CisJ ICogZ290IGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNhbGxl ZCwgc28gd2UgbXVzdAorCSAqIHJlY2hlY2sgd2l0aCBidWZmZXIgbG9jayBiZWZvcmUgY29uY2x1 ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgorCSAqLworCWVsc2UgaWYgKGJsa19rbm93bl9h diAmJiAhUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpICYmCisJCQkgdmlzaWJpbGl0eW1hcF9n ZXRfc3RhdHVzKHJlbGF0aW9uLCBoZWFwX2JsaywgJnZtYnVmZmVyKSAhPSAwKQorCXsKKwkJZXJl cG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAorCQkJ CSBlcnJtc2coInBhZ2UgaXMgbm90IG1hcmtlZCBhbGwtdmlzaWJsZSBidXQgdmlzaWJpbGl0eSBt YXAgYml0IGlzIHNldCBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCisJCQkJCQlSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbiksIGhlYXBfYmxrKSkpOworCisJCXZpc2liaWxpdHlt YXBfY2xlYXIocmVsYXRpb24sIGhlYXBfYmxrLCB2bWJ1ZmZlciwKKwkJCQkJCQlWSVNJQklMSVRZ TUFQX1ZBTElEX0JJVFMpOworCX0KKworCS8qCisJICogSXQncyBwb3NzaWJsZSBmb3IgdGhlIHZh bHVlIHJldHVybmVkIGJ5CisJICogR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgp IHRvIG1vdmUgYmFja3dhcmRzLCBzbyBpdCdzIG5vdAorCSAqIHdyb25nIGZvciB1cyB0byBzZWUg dHVwbGVzIHRoYXQgYXBwZWFyIHRvIG5vdCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lCisJICogeWV0 LCB3aGlsZSBQRF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNldC4gVGhlIHJlYWwgc2FmZSB4bWlu IHZhbHVlCisJICogbmV2ZXIgbW92ZXMgYmFja3dhcmRzLCBidXQgR2V0T2xkZXN0Tm9uUmVtb3Zh YmxlVHJhbnNhY3Rpb25JZCgpIGlzCisJICogY29uc2VydmF0aXZlIGFuZCBzb21ldGltZXMgcmV0 dXJucyBhIHZhbHVlIHRoYXQncyB1bm5lY2Vzc2FyaWx5IHNtYWxsLAorCSAqIHNvIGlmIHdlIHNl ZSB0aGF0IGNvbnRyYWRpY3Rpb24gaXQganVzdCBtZWFucyB0aGF0IHRoZSB0dXBsZXMgdGhhdCB3 ZQorCSAqIHRoaW5rIGFyZSBub3QgdmlzaWJsZSB0byBldmVyeW9uZSB5ZXQgYWN0dWFsbHkgYXJl LCBhbmQgdGhlCisJICogUERfQUxMX1ZJU0lCTEUgZmxhZyBpcyBjb3JyZWN0LgorCSAqCisJICog VGhlcmUgc2hvdWxkIG5ldmVyIGJlIExQX0RFQUQgaXRlbXMgb24gYSBwYWdlIHdpdGggUERfQUxM X1ZJU0lCTEUgc2V0LAorCSAqIGhvd2V2ZXIuCisJICovCisJZWxzZSBpZiAocHJzdGF0ZS0+bHBk ZWFkX2l0ZW1zID4gMCAmJiBQYWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkpCisJeworCQllcmVw b3J0KFdBUk5JTkcsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCisJCQkJ IGVycm1zZygicGFnZSBjb250YWluaW5nIExQX0RFQUQgaXRlbXMgaXMgbWFya2VkIGFzIGFsbC12 aXNpYmxlIGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbGF0aW9uKSwgaGVhcF9ibGspKSk7CisKKwkJUGFnZUNsZWFyQWxsVmlzaWJs ZShoZWFwX3BhZ2UpOworCQlNYXJrQnVmZmVyRGlydHkoaGVhcF9idWYpOworCQl2aXNpYmlsaXR5 bWFwX2NsZWFyKHJlbGF0aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElU WU1BUF9WQUxJRF9CSVRTKTsKKwl9CisKKwlyZXR1cm4gZG9fc2V0X3ZtOworfQogCiAvKgogICog UHJ1bmUgYW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGFuZCBwb3RlbnRpYWxseSBmcmVlemUgdHVw bGVzIG9uIHRoZQotICogc3BlY2lmaWVkIHBhZ2UuCisgKiBzcGVjaWZpZWQgcGFnZS4gSWYgdGhl IHBhZ2UncyB2aXNpYmlsaXR5IHN0YXR1cyBoYXMgY2hhbmdlZCwgdXBkYXRlIGl0IGluCisgKiB0 aGUgVk0uCiAgKgogICogQ2FsbGVyIG11c3QgaGF2ZSBwaW4gYW5kIGJ1ZmZlciBjbGVhbnVwIGxv Y2sgb24gdGhlIHBhZ2UuICBOb3RlIHRoYXQgd2UKICAqIGRvbid0IHVwZGF0ZSB0aGUgRlNNIGlu Zm9ybWF0aW9uIGZvciBwYWdlIG9uIGNhbGxlcidzIGJlaGFsZi4gIENhbGxlciBtaWdodApAQCAt NDUyLDEyICs1NjYsMTMgQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9u LCBCdWZmZXIgYnVmZmVyLAogICogaXQncyByZXF1aXJlZCBpbiBvcmRlciB0byBhZHZhbmNlIHJl bGZyb3plbnhpZCAvIHJlbG1pbm14aWQsIG9yIGlmIGl0J3MKICAqIGNvbnNpZGVyZWQgYWR2YW50 YWdlb3VzIGZvciBvdmVyYWxsIHN5c3RlbSBwZXJmb3JtYW5jZSB0byBkbyBzbyBub3cuICBUaGUK ICAqICdwYXJhbXMuY3V0b2ZmcycsICdwcmVzdWx0JywgJ25ld19yZWxmcm96ZW5feGlkJyBhbmQg J25ld19yZWxtaW5fbXhpZCcKLSAqIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQgd2hlbiBmcmVlemlu Zy4gIFdoZW4gSEVBUF9QUlVORV9GUkVFWkUgb3B0aW9uIGlzCi0gKiBwYXNzZWQsIHdlIGFsc28g c2V0IHByZXN1bHQtPmFsbF92aXNpYmxlIGFuZCBwcmVzdWx0LT5hbGxfZnJvemVuIGFmdGVyCi0g KiBkZXRlcm1pbmluZyB3aGV0aGVyIG9yIG5vdCB0byBvcHBvcnVuaXN0aWNhbGx5IGZyZWV6ZSwg dG8gaW5kaWNhdGUgaWYgdGhlCi0gKiBWTSBiaXRzIGNhbiBiZSBzZXQuICBUaGV5IGFyZSBhbHdh eXMgc2V0IHRvIGZhbHNlIHdoZW4gdGhlCi0gKiBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMg bm90IHBhc3NlZCwgYmVjYXVzZSBhdCB0aGUgbW9tZW50IG9ubHkgY2FsbGVycwotICogdGhhdCBh bHNvIGZyZWV6ZSBuZWVkIHRoYXQgaW5mb3JtYXRpb24uCisgKiBhcmd1bWVudHMgYXJlIHJlcXVp cmVkIHdoZW4gZnJlZXppbmcuCisgKgorICogSWYgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WSVMg aXMgc2V0IGluIHBhcmFtcyBhbmQgdGhlIHZpc2liaWxpdHkgc3RhdHVzIG9mCisgKiB0aGUgcGFn ZSBoYXMgY2hhbmdlZCwgd2Ugd2lsbCB1cGRhdGUgdGhlIFZNIGF0IHRoZSBzYW1lIHRpbWUgYXMg cHJ1bmluZyBhbmQKKyAqIGZyZWV6aW5nIHRoZSBoZWFwIHBhZ2UuIFdlIHdpbGwgYWxzbyB1cGRh dGUgcHJlc3VsdC0+b2xkX3ZtYml0cyBhbmQKKyAqIHByZXN1bHQtPm5ld192bWJpdHMgd2l0aCB0 aGUgc3RhdGUgb2YgdGhlIFZNIGJlZm9yZSBhbmQgYWZ0ZXIgdXBkYXRpbmcgaXQKKyAqIGZvciB0 aGUgY2FsbGVyIHRvIHVzZSBpbiBib29ra2VlcGluZy4KICAqCiAgKiBwcmVzdWx0IGNvbnRhaW5z IG91dHB1dCBwYXJhbWV0ZXJzIG5lZWRlZCBieSBjYWxsZXJzLCBzdWNoIGFzIHRoZSBudW1iZXIg b2YKICAqIHR1cGxlcyByZW1vdmVkIGFuZCB0aGUgb2Zmc2V0cyBvZiBkZWFkIGl0ZW1zIG9uIHRo ZSBwYWdlIGFmdGVyIHBydW5pbmcuCkBAIC00ODIsNiArNTk3LDcgQEAgaGVhcF9wYWdlX3BydW5l X2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCQkJCSAgIE11bHRpWGFj dElkICpuZXdfcmVsbWluX214aWQpCiB7CiAJQnVmZmVyCQlidWZmZXIgPSBwYXJhbXMtPmJ1ZmZl cjsKKwlCdWZmZXIJCXZtYnVmZmVyID0gcGFyYW1zLT52bWJ1ZmZlcjsKIAlQYWdlCQlwYWdlID0g QnVmZmVyR2V0UGFnZShidWZmZXIpOwogCUJsb2NrTnVtYmVyIGJsb2Nrbm8gPSBCdWZmZXJHZXRC bG9ja051bWJlcihidWZmZXIpOwogCU9mZnNldE51bWJlciBvZmZudW0sCkBAIC00OTEsMTUgKzYw NywyMiBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFy YW1zLAogCWJvb2wJCWRvX2ZyZWV6ZTsKIAlib29sCQlkb19wcnVuZTsKIAlib29sCQlkb19oaW50 X3BydW5lOworCWJvb2wJCWRvX3NldF92bTsKKwlib29sCQlkb19zZXRfcGRfdmlzOwogCWJvb2wJ CWRpZF90dXBsZV9oaW50X2ZwaTsKIAlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uud2Fs X2ZwaTsKIAlUcmFuc2FjdGlvbklkIGZyel9jb25mbGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5z YWN0aW9uSWQ7CisJVHJhbnNhY3Rpb25JZCBjb25mbGljdF94aWQgPSBJbnZhbGlkVHJhbnNhY3Rp b25JZDsKKwl1aW50OAkJbmV3X3ZtYml0cyA9IDA7CisJdWludDgJCW9sZF92bWJpdHMgPSAwOwog CiAJLyogQ29weSBwYXJhbWV0ZXJzIHRvIHByc3RhdGUgKi8KIAlwcnN0YXRlLnZpc3Rlc3QgPSBw YXJhbXMtPnZpc3Rlc3Q7CiAJcHJzdGF0ZS5tYXJrX3VudXNlZF9ub3cgPQogCQkocGFyYW1zLT5v cHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVykgIT0gMDsKIAlwcnN0YXRl LmF0dGVtcHRfZnJlZXplID0gKHBhcmFtcy0+b3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9GUkVF WkUpICE9IDA7CisJcHJzdGF0ZS5hdHRlbXB0X3VwZGF0ZV92bSA9CisJCShwYXJhbXMtPm9wdGlv bnMgJiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZJUykgIT0gMDsKIAlwcnN0YXRlLmN1dG9mZnMg PSBwYXJhbXMtPmN1dG9mZnM7CiAKIAkvKgpAQCAtNTQ2LDUwICs2NjksNTQgQEAgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAlwcnN0YXRlLmRl YWRvZmZzZXRzID0gcHJlc3VsdC0+ZGVhZG9mZnNldHM7CiAKIAkvKgotCSAqIENhbGxlciBtYXkg dXBkYXRlIHRoZSBWTSBhZnRlciB3ZSdyZSBkb25lLiAgV2UgY2FuIGtlZXAgdHJhY2sgb2YKLQkg KiB3aGV0aGVyIHRoZSBwYWdlIHdpbGwgYmUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4gYWZ0 ZXIgcHJ1bmluZyBhbmQKLQkgKiBmcmVlemluZyB0byBoZWxwIHRoZSBjYWxsZXIgdG8gZG8gdGhh dC4KKwkgKiBUcmFjayB3aGV0aGVyIHRoZSBwYWdlIGNvdWxkIGJlIG1hcmtlZCBhbGwtdmlzaWJs ZSBhbmQvb3IgYWxsLWZyb3plbi4KKwkgKiBUaGlzIGluZm9ybWF0aW9uIGlzIHVzZWQgZm9yIG9w cG9ydHVuaXN0aWMgZnJlZXppbmcgYW5kIGZvciB1cGRhdGluZworCSAqIHRoZSB2aXNpYmlsaXR5 IG1hcCAoVk0pIGlmIHJlcXVlc3RlZCBieSB0aGUgY2FsbGVyLgorCSAqCisJICogQ3VycmVudGx5 LCBvbmx5IFZBQ1VVTSBwZXJmb3JtcyBmcmVlemluZywgYnV0IG90aGVyIGNhbGxlcnMgbWF5IGlu IHRoZQorCSAqIGZ1dHVyZS4gVmlzaWJpbGl0eSBib29ra2VlcGluZyBpcyByZXF1aXJlZCBub3Qg anVzdCBmb3Igc2V0dGluZyB0aGUgVk0KKwkgKiBiaXRzLCBidXQgYWxzbyBmb3Igb3Bwb3J0dW5p c3RpYyBmcmVlemluZzogd2Ugb25seSBjb25zaWRlciBmcmVlemluZyBpZgorCSAqIHRoZSBwYWdl IHdvdWxkIGJlY29tZSBhbGwtZnJvemVuLCBvciBpZiBpdCB3b3VsZCBiZSBhbGwtZnJvemVuIGV4 Y2VwdAorCSAqIGZvciBkZWFkIHR1cGxlcyB0aGF0IFZBQ1VVTSB3aWxsIHJlbW92ZS4gSWYgYXR0 ZW1wdF91cGRhdGVfdm0gaXMgZmFsc2UsCisJICogd2Ugd2lsbCBub3Qgc2V0IHRoZSBWTSBiaXQg ZXZlbiBpZiB0aGUgcGFnZSBpcyBmb3VuZCB0byBiZSBhbGwtdmlzaWJsZS4KKwkgKgorCSAqIElm IEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVklTIGlzIHBhc3NlZCB3aXRob3V0IEhFQVBfUEFHRV9Q UlVORV9GUkVFWkUsCisJICogcHJzdGF0ZS5hbGxfZnJvemVuIG11c3QgYmUgaW5pdGlhbGl6ZWQg dG8gZmFsc2UsIHNpbmNlIHdlIHdpbGwgbm90IGNhbGwKKwkgKiBoZWFwX3ByZXBhcmVfZnJlZXpl X3R1cGxlKCkgZm9yIGVhY2ggdHVwbGUuCiAJICoKLQkgKiBDdXJyZW50bHksIG9ubHkgVkFDVVVN IHNldHMgdGhlIFZNIGJpdHMuICBUbyBzYXZlIHRoZSBlZmZvcnQsIG9ubHkgZG8KLQkgKiB0aGUg Ym9va2tlZXBpbmcgaWYgdGhlIGNhbGxlciBuZWVkcyBpdC4gIEN1cnJlbnRseSwgdGhhdCdzIHRp ZWQgdG8KLQkgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFLCBidXQgaXQgY291bGQgYmUgYSBzZXBh cmF0ZSBmbGFnIGlmIHlvdSB3YW50ZWQKLQkgKiB0byB1cGRhdGUgdGhlIFZNIGJpdHMgd2l0aG91 dCBhbHNvIGZyZWV6aW5nIG9yIGZyZWV6ZSB3aXRob3V0IGFsc28KLQkgKiBzZXR0aW5nIHRoZSBW TSBiaXRzLgorCSAqIERlYWQgdHVwbGVzIHRoYXQgd2lsbCBiZSByZW1vdmVkIGJ5IHRoZSBlbmQg b2YgdmFjdXVtIHNob3VsZCBub3QKKwkgKiBwcmV2ZW50IG9wcG9ydHVuaXN0aWMgZnJlZXppbmcu IFRoZXJlZm9yZSwgd2UgZG8gbm90IGNsZWFyIGFsbF92aXNpYmxlCisJICogd2hlbiB3ZSBlbmNv dW50ZXIgTFBfREVBRCBpdGVtcy4gSW5zdGVhZCwgd2UgY29ycmVjdCBhbGxfdmlzaWJsZSBhZnRl cgorCSAqIGRlY2lkaW5nIHdoZXRoZXIgdG8gZnJlZXplLCBidXQgYmVmb3JlIHVwZGF0aW5nIHRo ZSBWTSwgdG8gYXZvaWQKKwkgKiBzZXR0aW5nIHRoZSBWTSBiaXQgaW5jb3JyZWN0bHkuCiAJICoK LQkgKiBJbiBhZGRpdGlvbiB0byB0ZWxsaW5nIHRoZSBjYWxsZXIgd2hldGhlciBpdCBjYW4gc2V0 IHRoZSBWTSBiaXQsIHdlCi0JICogYWxzbyB1c2UgJ2FsbF92aXNpYmxlJyBhbmQgJ2FsbF9mcm96 ZW4nIGZvciBvdXIgb3duIGRlY2lzaW9uLW1ha2luZy4gSWYKLQkgKiB0aGUgd2hvbGUgcGFnZSB3 b3VsZCBiZWNvbWUgZnJvemVuLCB3ZSBjb25zaWRlciBvcHBvcnR1bmlzdGljYWxseQotCSAqIGZy ZWV6aW5nIHR1cGxlcy4gIFdlIHdpbGwgbm90IGJlIGFibGUgdG8gZnJlZXplIHRoZSB3aG9sZSBw YWdlIGlmIHRoZXJlCi0JICogYXJlIHR1cGxlcyBwcmVzZW50IHRoYXQgYXJlIG5vdCB2aXNpYmxl IHRvIGV2ZXJ5b25lIG9yIGlmIHRoZXJlIGFyZQotCSAqIGRlYWQgdHVwbGVzIHdoaWNoIGFyZSBu b3QgeWV0IHJlbW92YWJsZS4gIEhvd2V2ZXIsIGRlYWQgdHVwbGVzIHdoaWNoCi0JICogd2lsbCBi ZSByZW1vdmVkIGJ5IHRoZSBlbmQgb2YgdmFjdXVtaW5nIHNob3VsZCBub3QgcHJlY2x1ZGUgdXMg ZnJvbQotCSAqIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6aW5nLiAgQmVjYXVzZSBvZiB0aGF0LCB3 ZSBkbyBub3QgaW1tZWRpYXRlbHkKLQkgKiBjbGVhciBhbGxfdmlzaWJsZSB3aGVuIHdlIHNlZSBM UF9ERUFEIGl0ZW1zLiAgV2UgZml4IHRoYXQgYWZ0ZXIKLQkgKiBzY2FubmluZyB0aGUgbGluZSBw b2ludGVycywgYmVmb3JlIHdlIHJldHVybiB0aGUgdmFsdWUgdG8gdGhlIGNhbGxlciwKLQkgKiBz byB0aGF0IHRoZSBjYWxsZXIgZG9lc24ndCBzZXQgdGhlIFZNIGJpdCBpbmNvcnJlY3RseS4KKwkg KiBJZiBuZWl0aGVyIGZyZWV6aW5nIG5vciBWTSB1cGRhdGVzIGFyZSByZXF1ZXN0ZWQsIHdlIHNr aXAgdGhlIGV4dHJhCisJICogYm9va2tlZXBpbmcuIEluIHRoaXMgY2FzZSwgaW5pdGlhbGl6aW5n IGFsbF92aXNpYmxlIHRvIGZhbHNlIGFsbG93cworCSAqIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hh bmdlZF9scF9ub3JtYWwoKSB0byBieXBhc3MgdW5uZWNlc3Nhcnkgd29yay4KIAkgKi8KIAlpZiAo cHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSkKIAl7CiAJCXByc3RhdGUuYWxsX3Zpc2libGUgPSB0cnVl OwogCQlwcnN0YXRlLmFsbF9mcm96ZW4gPSB0cnVlOwogCX0KKwllbHNlIGlmIChwcnN0YXRlLmF0 dGVtcHRfdXBkYXRlX3ZtKQorCXsKKwkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHRydWU7CisJCXBy c3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNlOworCX0KIAllbHNlCiAJewotCQkvKgotCQkgKiBJbml0 aWFsaXppbmcgdG8gZmFsc2UgYWxsb3dzIHNraXBwaW5nIHRoZSB3b3JrIHRvIHVwZGF0ZSB0aGVt IGluCi0JCSAqIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoKS4KLQkJICov CiAJCXByc3RhdGUuYWxsX3Zpc2libGUgPSBmYWxzZTsKIAkJcHJzdGF0ZS5hbGxfZnJvemVuID0g ZmFsc2U7CiAJfQogCiAJLyoKLQkgKiBUaGUgdmlzaWJpbGl0eSBjdXRvZmYgeGlkIGlzIHRoZSBu ZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUKLQkgKiBwYWdlLiAgSW4gdGhlIGNvbW1v biBjYXNlLCB0aGlzIHdpbGwgYmUgc2V0IGFzIHRoZSBjb25mbGljdCBob3Jpem9uIHRoZQotCSAq IGNhbGxlciBjYW4gdXNlIGZvciB1cGRhdGluZyB0aGUgVk0uICBJZiwgYXQgdGhlIGVuZCBvZiBm cmVlemluZyBhbmQKLQkgKiBwcnVuaW5nLCB0aGUgcGFnZSBpcyBhbGwtZnJvemVuLCB0aGVyZSBp cyBubyBwb3NzaWJpbGl0eSB0aGF0IGFueQotCSAqIHJ1bm5pbmcgdHJhbnNhY3Rpb24gb24gdGhl IHN0YW5kYnkgZG9lcyBub3Qgc2VlIHR1cGxlcyBvbiB0aGUgcGFnZSBhcwotCSAqIGFsbC12aXNp YmxlLCBzbyB0aGUgY29uZmxpY3QgaG9yaXpvbiByZW1haW5zIEludmFsaWRUcmFuc2FjdGlvbklk LgorCSAqIFRoZSB2aXNpYmlsaXR5IGN1dG9mZiB4aWQgaXMgdGhlIG5ld2VzdCB4bWluIG9mIGxp dmUsIGNvbW1pdHRlZCB0dXBsZXMKKwkgKiBvbGRlciB0aGFuIE9sZGVzdFhtaW4gb24gdGhlIHBh Z2UuIFRoaXMgZmllbGQgaXMgb25seSBrZXB0IHVwLXRvLWRhdGUKKwkgKiBpZiB0aGUgcGFnZSBp cyBhbGwtdmlzaWJsZS4gQXMgc29vbiBhcyBhIHR1cGxlIGlzIGVuY291bnRlcmVkIHRoYXQgaXMK KwkgKiBub3QgdmlzaWJsZSB0byBhbGwsIHRoaXMgZmllbGQgaXMgdW5tYWludGFpbmVkLiBBcyBs b25nIGFzIGl0IGlzCisJICogbWFpbnRhaW5lZCwgaXQgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRl IHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uCisJICogd2hlbiB1cGRhdGluZyB0aGUgVk0g YW5kL29yIGZyZWV6aW5nIGFsbCB0aGUgdHVwbGVzIG9uIHRoZSBwYWdlLgogCSAqLwogCXByc3Rh dGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKQEAgLTgy MSw2ICs5NDgsMzQgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJh bXMgKnBhcmFtcywKIAkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHByc3RhdGUuYWxsX2Zyb3plbiA9 IGZhbHNlOwogCiAJQXNzZXJ0KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwgcHJzdGF0ZS5hbGxfdmlz aWJsZSk7CisJQXNzZXJ0KCFwcnN0YXRlLmFsbF92aXNpYmxlIHx8IChwcnN0YXRlLmxwZGVhZF9p dGVtcyA9PSAwKSk7CisKKwkvKgorCSAqIERlY2lkZSB3aGV0aGVyIHRvIHNldCB0aGUgcGFnZS1s ZXZlbCBQRF9BTExfVklTSUJMRSBiaXQgYW5kIHRoZSBWTSBiaXRzCisJICogYmFzZWQgb24gaW5m b3JtYXRpb24gZnJvbSB0aGUgVk0gYW5kIHRoZSBhbGxfdmlzaWJsZS9hbGxfZnJvemVuIGZsYWdz LgorCSAqCisJICogV2hpbGUgaXQgaXMgdmFsaWQgZm9yIFBEX0FMTF9WSVNJQkxFIHRvIGJlIHNl dCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nCisJICogVk0gYml0IGlzIGNsZWFyLCB3ZSBzdHJvbmds eSBwcmVmZXIgdG8ga2VlcCB0aGVtIGluIHN5bmMuCisJICoKKwkgKiBBY2NvcmRpbmdseSwgd2Ug YWxzbyBhbGxvdyB1cGRhdGluZyBvbmx5IHRoZSBWTSB3aGVuIFBEX0FMTF9WSVNJQkxFIGhhcwor CSAqIGFscmVhZHkgYmVlbiBzZXQuIFNldHRpbmcgb25seSB0aGUgVk0gaXMgbW9zdCBjb21tb24g d2hlbiBzZXR0aW5nIGFuCisJICogYWxyZWFkeSBhbGwtdmlzaWJsZSBwYWdlIGFsbC1mcm96ZW4u CisJICovCisJZG9fc2V0X3ZtID0gaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhwYXJhbXMtPnJlbGF0 aW9uLAorCQkJCQkJCQkJICAgYmxvY2tubywgYnVmZmVyLCB2bWJ1ZmZlciwgcGFyYW1zLT5ibGtf a25vd25fYXYsCisJCQkJCQkJCQkgICAmcHJzdGF0ZSwgJm5ld192bWJpdHMsICZkb19zZXRfcGRf dmlzKTsKKworCS8qIFdlIHNob3VsZCBvbmx5IHNldCB0aGUgVk0gaWYgUERfQUxMX1ZJU0lCTEUg aXMgc2V0IG9yIHdpbGwgYmUgKi8KKwlBc3NlcnQoIWRvX3NldF92bSB8fCBkb19zZXRfcGRfdmlz IHx8IFBhZ2VJc0FsbFZpc2libGUocGFnZSkpOworCisJY29uZmxpY3RfeGlkID0gZ2V0X2NvbmZs aWN0X3hpZChkb19wcnVuZSwgZG9fZnJlZXplLCBkb19zZXRfdm0sCisJCQkJCQkJCQlwcnN0YXRl LmxhdGVzdF94aWRfcmVtb3ZlZCwgZnJ6X2NvbmZsaWN0X2hvcml6b24sCisJCQkJCQkJCQlwcnN0 YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwgcGFyYW1zLT5ibGtfa25vd25fYXYsCisJCQkJCQkJ CQkoZG9fc2V0X3ZtICYmIChuZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSkp OworCisJLyogTG9jayB2bWJ1ZmZlciBiZWZvcmUgZW50ZXJpbmcgYSBjcml0aWNhbCBzZWN0aW9u ICovCisJaWYgKGRvX3NldF92bSkKKwkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tf RVhDTFVTSVZFKTsKIAogCS8qIEFueSBlcnJvciB3aGlsZSBhcHBseWluZyB0aGUgY2hhbmdlcyBp cyBjcml0aWNhbCAqLwogCVNUQVJUX0NSSVRfU0VDVElPTigpOwpAQCAtODQyLDE0ICs5OTcsMTcg QEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywK IAogCQkvKgogCQkgKiBJZiB0aGF0J3MgYWxsIHdlIGhhZCB0byBkbyB0byB0aGUgcGFnZSwgdGhp cyBpcyBhIG5vbi1XQUwtbG9nZ2VkCi0JCSAqIGhpbnQuICBJZiB3ZSBhcmUgZ29pbmcgdG8gZnJl ZXplIG9yIHBydW5lIHRoZSBwYWdlLCB3ZSB3aWxsIG1hcmsKLQkJICogdGhlIGJ1ZmZlciBkaXJ0 eSBiZWxvdy4KKwkJICogaGludC4gIElmIHdlIGFyZSBnb2luZyB0byBmcmVlemUgb3IgcHJ1bmUg dGhlIHBhZ2Ugb3Igc2V0CisJCSAqIFBEX0FMTF9WSVNJQkxFLCB3ZSB3aWxsIG1hcmsgdGhlIGJ1 ZmZlciBkaXJ0eSBiZWxvdy4KKwkJICoKKwkJICogU2V0dGluZyBQRF9BTExfVklTSUJMRSBpcyBm dWxseSBXQUwtbG9nZ2VkIGJlY2F1c2UgaXQgaXMgZm9yYmlkZGVuCisJCSAqIGZvciB0aGUgVk0g dG8gYmUgc2V0IGFuZCBQRF9BTExfVklTSUJMRSB0byBiZSBjbGVhci4KIAkJICovCi0JCWlmICgh ZG9fZnJlZXplICYmICFkb19wcnVuZSkKKwkJaWYgKCFkb19mcmVlemUgJiYgIWRvX3BydW5lICYm ICFkb19zZXRfcGRfdmlzKQogCQkJTWFya0J1ZmZlckRpcnR5SGludChidWZmZXIsIHRydWUpOwog CX0KIAotCWlmIChkb19wcnVuZSB8fCBkb19mcmVlemUpCisJaWYgKGRvX3BydW5lIHx8IGRvX2Zy ZWV6ZSB8fCBkb19zZXRfdm0pCiAJewogCQkvKiBBcHBseSB0aGUgcGxhbm5lZCBpdGVtIGNoYW5n ZXMgYW5kIHJlcGFpciBwYWdlIGZyYWdtZW50YXRpb24uICovCiAJCWlmIChkb19wcnVuZSkKQEAg LTg2MywzNSArMTAyMSw0MyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6 ZVBhcmFtcyAqcGFyYW1zLAogCQlpZiAoZG9fZnJlZXplKQogCQkJaGVhcF9mcmVlemVfcHJlcGFy ZWRfdHVwbGVzKGJ1ZmZlciwgcHJzdGF0ZS5mcm96ZW4sIHByc3RhdGUubmZyb3plbik7CiAKLQkJ TWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CisJCWlmIChkb19zZXRfcGRfdmlzKQorCQkJUGFnZVNl dEFsbFZpc2libGUocGFnZSk7CiAKLQkJLyoKLQkJICogRW1pdCBhIFdBTCBYTE9HX0hFQVAyX1BS VU5FKiByZWNvcmQgc2hvd2luZyB3aGF0IHdlIGRpZAotCQkgKi8KLQkJaWYgKFJlbGF0aW9uTmVl ZHNXQUwocGFyYW1zLT5yZWxhdGlvbikpCisJCWlmIChkb19wcnVuZSB8fCBkb19mcmVlemUgfHwg ZG9fc2V0X3BkX3ZpcykKKwkJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOworCisJCWlmIChkb19z ZXRfdm0pCiAJCXsKLQkJCS8qCi0JCQkgKiBUaGUgc25hcHNob3RDb25mbGljdEhvcml6b24gZm9y IHRoZSB3aG9sZSByZWNvcmQgc2hvdWxkIGJlIHRoZQotCQkJICogbW9zdCBjb25zZXJ2YXRpdmUg b2YgYWxsIHRoZSBob3Jpem9ucyBjYWxjdWxhdGVkIGZvciBhbnkgb2YgdGhlCi0JCQkgKiBwb3Nz aWJsZSBtb2RpZmljYXRpb25zLiAgSWYgdGhpcyByZWNvcmQgd2lsbCBwcnVuZSB0dXBsZXMsIGFu eQotCQkJICogdHJhbnNhY3Rpb25zIG9uIHRoZSBzdGFuZGJ5IG9sZGVyIHRoYW4gdGhlIHlvdW5n ZXN0IHhtYXggb2YgdGhlCi0JCQkgKiBtb3N0IHJlY2VudGx5IHJlbW92ZWQgdHVwbGUgdGhpcyBy ZWNvcmQgd2lsbCBwcnVuZSB3aWxsCi0JCQkgKiBjb25mbGljdC4gIElmIHRoaXMgcmVjb3JkIHdp bGwgZnJlZXplIHR1cGxlcywgYW55IHRyYW5zYWN0aW9ucwotCQkJICogb24gdGhlIHN0YW5kYnkg d2l0aCB4aWRzIG9sZGVyIHRoYW4gdGhlIHlvdW5nZXN0IHR1cGxlIHRoaXMKLQkJCSAqIHJlY29y ZCB3aWxsIGZyZWV6ZSB3aWxsIGNvbmZsaWN0LgotCQkJICovCi0JCQlUcmFuc2FjdGlvbklkIGNv bmZsaWN0X3hpZDsKKwkJCUFzc2VydChQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKTsKIAotCQkJaWYg KFRyYW5zYWN0aW9uSWRGb2xsb3dzKGZyel9jb25mbGljdF9ob3Jpem9uLCBwcnN0YXRlLmxhdGVz dF94aWRfcmVtb3ZlZCkpCi0JCQkJY29uZmxpY3RfeGlkID0gZnJ6X2NvbmZsaWN0X2hvcml6b247 Ci0JCQllbHNlCi0JCQkJY29uZmxpY3RfeGlkID0gcHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQ7 CisJCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKGJsb2Nrbm8sCisJCQkJ CQkJCQkJCQkgIHZtYnVmZmVyLCBuZXdfdm1iaXRzLAorCQkJCQkJCQkJCQkJICBwYXJhbXMtPnJl bGF0aW9uLT5yZF9sb2NhdG9yKTsKKwkJCWlmIChvbGRfdm1iaXRzID09IG5ld192bWJpdHMpCisJ CQl7CisJCQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKwkJCQkv KiBVbnNldCBzbyB3ZSBkb24ndCBlbWl0IFdBTCBzaW5jZSBubyBjaGFuZ2Ugb2NjdXJyZWQgKi8K KwkJCQlkb19zZXRfdm0gPSBmYWxzZTsKKwkJCX0KKwkJfQogCisJCS8qCisJCSAqIEVtaXQgYSBX QUwgWExPR19IRUFQMl9QUlVORSogcmVjb3JkIHNob3dpbmcgd2hhdCB3ZSBkaWQuIElmIHdlIHdl cmUKKwkJICogb25seSB1cGRhdGluZyB0aGUgVk0gYW5kIGl0IHR1cm5zIG91dCBpdCB3YXMgYWxy ZWFkeSBzZXQsIHdlIHdpbGwKKwkJICogaGF2ZSB1bnNldCBkb19zZXRfdm0gZWFybGllci4gQXMg c3VjaCwgY2hlY2sgaXQgYWdhaW4gYmVmb3JlCisJCSAqIGVtaXR0aW5nIHRoZSByZWNvcmQuCisJ CSAqLworCQlpZiAoUmVsYXRpb25OZWVkc1dBTChwYXJhbXMtPnJlbGF0aW9uKSAmJgorCQkJKGRv X3BydW5lIHx8IGRvX2ZyZWV6ZSB8fCBkb19zZXRfdm0pKQorCQl7CiAJCQlsb2dfaGVhcF9wcnVu ZV9hbmRfZnJlZXplKHBhcmFtcy0+cmVsYXRpb24sIGJ1ZmZlciwKLQkJCQkJCQkJCSAgSW52YWxp ZEJ1ZmZlciwJLyogdm1idWZmZXIgKi8KLQkJCQkJCQkJCSAgMCwJLyogdm1mbGFncyAqLworCQkJ CQkJCQkJICBkb19zZXRfdm0gPyB2bWJ1ZmZlciA6IEludmFsaWRCdWZmZXIsCisJCQkJCQkJCQkg IGRvX3NldF92bSA/IG5ld192bWJpdHMgOiAwLAogCQkJCQkJCQkJICBjb25mbGljdF94aWQsCi0J CQkJCQkJCQkgIHRydWUsIHBhcmFtcy0+cmVhc29uLAorCQkJCQkJCQkJICB0cnVlLCAvKiBjbGVh bnVwIGxvY2sgKi8KKwkJCQkJCQkJCSAgZG9fc2V0X3BkX3ZpcywKKwkJCQkJCQkJCSAgcGFyYW1z LT5yZWFzb24sCiAJCQkJCQkJCQkgIHByc3RhdGUuZnJvemVuLCBwcnN0YXRlLm5mcm96ZW4sCiAJ CQkJCQkJCQkgIHByc3RhdGUucmVkaXJlY3RlZCwgcHJzdGF0ZS5ucmVkaXJlY3RlZCwKIAkJCQkJ CQkJCSAgcHJzdGF0ZS5ub3dkZWFkLCBwcnN0YXRlLm5kZWFkLApAQCAtOTAxLDI4ICsxMDY3LDQ3 IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMs CiAKIAlFTkRfQ1JJVF9TRUNUSU9OKCk7CiAKKwlpZiAoZG9fc2V0X3ZtKQorCQlMb2NrQnVmZmVy KHZtYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCisJLyoKKwkgKiBEdXJpbmcgaXRzIHNl Y29uZCBwYXNzIG92ZXIgdGhlIGhlYXAsIFZBQ1VVTSBjYWxscworCSAqIGhlYXBfcGFnZV93b3Vs ZF9iZV9hbGxfdmlzaWJsZSgpIHRvIGRldGVybWluZSB3aGV0aGVyIGEgcGFnZSBpcworCSAqIGFs bC12aXNpYmxlIGFuZCBhbGwtZnJvemVuLiBUaGUgbG9naWMgaGVyZSBpcyBzaW1pbGFyLiBBZnRl ciBjb21wbGV0aW5nCisJICogcHJ1bmluZyBhbmQgZnJlZXppbmcsIHVzZSBhbiBhc3NlcnRpb24g dG8gdmVyaWZ5IHRoYXQgb3VyIHJlc3VsdHMKKwkgKiByZW1haW4gY29uc2lzdGVudCB3aXRoIGhl YXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSgpLgorCSAqLworI2lmZGVmIFVTRV9BU1NFUlRf Q0hFQ0tJTkcKKwlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSkKKwl7CisJCVRyYW5zYWN0aW9uSWQg ZGVidWdfY3V0b2ZmOworCQlib29sCQlkZWJ1Z19hbGxfZnJvemVuOworCisJCUFzc2VydChwcnN0 YXRlLmxwZGVhZF9pdGVtcyA9PSAwKTsKKwkJQXNzZXJ0KHByc3RhdGUuY3V0b2Zmcyk7CisKKwkJ aWYgKCFoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUocGFyYW1zLT5yZWxhdGlvbiwgYnVmZmVyLAor CQkJCQkJCQkJICBwcnN0YXRlLmN1dG9mZnMtPk9sZGVzdFhtaW4sCisJCQkJCQkJCQkgICZkZWJ1 Z19hbGxfZnJvemVuLAorCQkJCQkJCQkJICAmZGVidWdfY3V0b2ZmLCBvZmZfbG9jKSkKKwkJCUFz c2VydChmYWxzZSk7CisKKwkJQXNzZXJ0KHByc3RhdGUuYWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxf ZnJvemVuKTsKKworCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYnVnX2N1dG9mZikg fHwKKwkJCSAgIGRlYnVnX2N1dG9mZiA9PSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCk7 CisJfQorI2VuZGlmCisKIAkvKiBDb3B5IGluZm9ybWF0aW9uIGJhY2sgZm9yIGNhbGxlciAqLwog CXByZXN1bHQtPm5kZWxldGVkID0gcHJzdGF0ZS5uZGVsZXRlZDsKIAlwcmVzdWx0LT5ubmV3bHBk ZWFkID0gcHJzdGF0ZS5uZGVhZDsKIAlwcmVzdWx0LT5uZnJvemVuID0gcHJzdGF0ZS5uZnJvemVu OwogCXByZXN1bHQtPmxpdmVfdHVwbGVzID0gcHJzdGF0ZS5saXZlX3R1cGxlczsKIAlwcmVzdWx0 LT5yZWNlbnRseV9kZWFkX3R1cGxlcyA9IHByc3RhdGUucmVjZW50bHlfZGVhZF90dXBsZXM7Ci0J cHJlc3VsdC0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF92aXNpYmxlOwotCXByZXN1bHQtPmFs bF9mcm96ZW4gPSBwcnN0YXRlLmFsbF9mcm96ZW47CiAJcHJlc3VsdC0+aGFzdHVwID0gcHJzdGF0 ZS5oYXN0dXA7Ci0KLQkvKgotCSAqIEZvciBjYWxsZXJzIHBsYW5uaW5nIHRvIHVwZGF0ZSB0aGUg dmlzaWJpbGl0eSBtYXAsIHRoZSBjb25mbGljdCBob3Jpem9uCi0JICogZm9yIHRoYXQgcmVjb3Jk IG11c3QgYmUgdGhlIG5ld2VzdCB4bWluIG9uIHRoZSBwYWdlLiAgSG93ZXZlciwgaWYgdGhlCi0J ICogcGFnZSBpcyBjb21wbGV0ZWx5IGZyb3plbiwgdGhlcmUgY2FuIGJlIG5vIGNvbmZsaWN0IGFu ZCB0aGUKLQkgKiB2bV9jb25mbGljdF9ob3Jpem9uIHNob3VsZCByZW1haW4gSW52YWxpZFRyYW5z YWN0aW9uSWQuICBUaGlzIGluY2x1ZGVzCi0JICogdGhlIGNhc2UgdGhhdCB3ZSBqdXN0IGZyb3pl IGFsbCB0aGUgdHVwbGVzOyB0aGUgcHJ1bmUtZnJlZXplIHJlY29yZAotCSAqIGluY2x1ZGVkIHRo ZSBjb25mbGljdCBYSUQgYWxyZWFkeSBzbyB0aGUgY2FsbGVyIGRvZXNuJ3QgbmVlZCBpdC4KLQkg Ki8KLQlpZiAocHJlc3VsdC0+YWxsX2Zyb3plbikKLQkJcHJlc3VsdC0+dm1fY29uZmxpY3RfaG9y aXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwotCWVsc2UKLQkJcHJlc3VsdC0+dm1fY29uZmxp Y3RfaG9yaXpvbiA9IHByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkOworCXByZXN1bHQtPm5l d192bWJpdHMgPSBuZXdfdm1iaXRzOworCXByZXN1bHQtPm9sZF92bWJpdHMgPSBvbGRfdm1iaXRz OwogCiAJcHJlc3VsdC0+bHBkZWFkX2l0ZW1zID0gcHJzdGF0ZS5scGRlYWRfaXRlbXM7CiAJLyog dGhlIHByZXN1bHQtPmRlYWRvZmZzZXRzIGFycmF5IHdhcyBhbHJlYWR5IGZpbGxlZCBpbiAqLwpA QCAtMTQxMyw2ICsxNTk4LDggQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1h bChQYWdlIHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAkJCXsKIAkJCQlU cmFuc2FjdGlvbklkIHhtaW47CiAKKwkJCQlBc3NlcnQocHJzdGF0ZS0+YXR0ZW1wdF91cGRhdGVf dm0pOworCiAJCQkJaWYgKCFIZWFwVHVwbGVIZWFkZXJYbWluQ29tbWl0dGVkKGh0dXApKQogCQkJ CXsKIAkJCQkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFs c2U7CkBAIC0yMDU4LDYgKzIyNDUsNjUgQEAgaGVhcF9sb2dfZnJlZXplX3BsYW4oSGVhcFR1cGxl RnJlZXplICp0dXBsZXMsIGludCBudHVwbGVzLAogCXJldHVybiBucGxhbnM7CiB9CiAKKy8qCisg KiBDYWxjdWxhdGUgdGhlIGNvbmZsaWN0IGhvcml6b24gZm9yIHRoZSB3aG9sZSBYTE9HX0hFQVAy X1BSVU5FX1ZBQ1VVTV9TQ0FOCisgKiByZWNvcmQuCisgKi8KK3N0YXRpYyBUcmFuc2FjdGlvbklk CitnZXRfY29uZmxpY3RfeGlkKGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLCBib29sIGRv X3NldF92bSwKKwkJCQkgVHJhbnNhY3Rpb25JZCBsYXRlc3RfeGlkX3JlbW92ZWQsIFRyYW5zYWN0 aW9uSWQgZnJ6X2NvbmZsaWN0X2hvcml6b24sCisJCQkJIFRyYW5zYWN0aW9uSWQgdmlzaWJpbGl0 eV9jdXRvZmZfeGlkLCBib29sIGJsa19hbHJlYWR5X2F2LAorCQkJCSBib29sIHNldF9ibGtfYWxs X2Zyb3plbikKK3sKKwlUcmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZDsKKworCS8qCisJICogV2Ug Y2FuIG9taXQgdGhlIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24gaWYgd2UgYXJlIG5vdCBwcnVu aW5nIG9yCisJICogZnJlZXppbmcgYW55IHR1cGxlcyBhbmQgYXJlIHNldHRpbmcgYW4gYWxyZWFk eSBhbGwtdmlzaWJsZSBwYWdlCisJICogYWxsLWZyb3plbiBpbiB0aGUgVk0uIEluIHRoaXMgY2Fz ZSwgYWxsIG9mIHRoZSB0dXBsZXMgb24gdGhlIHBhZ2UgbXVzdAorCSAqIGFscmVhZHkgYmUgdmlz aWJsZSB0byBhbGwgTVZDQyBzbmFwc2hvdHMgb24gdGhlIHN0YW5kYnkuCisJICovCisJaWYgKCFk b19wcnVuZSAmJiAhZG9fZnJlZXplICYmCisJCWRvX3NldF92bSAmJiBibGtfYWxyZWFkeV9hdiAm JiBzZXRfYmxrX2FsbF9mcm96ZW4pCisJCXJldHVybiBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwor CS8qCisJICogVGhlIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uIGZvciB0aGUgd2hvbGUgcmVjb3Jk IHNob3VsZCBiZSB0aGUgbW9zdAorCSAqIGNvbnNlcnZhdGl2ZSBvZiBhbGwgdGhlIGhvcml6b25z IGNhbGN1bGF0ZWQgZm9yIGFueSBvZiB0aGUgcG9zc2libGUKKwkgKiBtb2RpZmljYXRpb25zLiAg SWYgdGhpcyByZWNvcmQgd2lsbCBwcnVuZSB0dXBsZXMsIGFueSB0cmFuc2FjdGlvbnMgb24KKwkg KiB0aGUgc3RhbmRieSBvbGRlciB0aGFuIHRoZSB5b3VuZ2VzdCB4bWF4IG9mIHRoZSBtb3N0IHJl Y2VudGx5IHJlbW92ZWQKKwkgKiB0dXBsZSB0aGlzIHJlY29yZCB3aWxsIHBydW5lIHdpbGwgY29u ZmxpY3QuICBJZiB0aGlzIHJlY29yZCB3aWxsIGZyZWV6ZQorCSAqIHR1cGxlcywgYW55IHRyYW5z YWN0aW9ucyBvbiB0aGUgc3RhbmRieSB3aXRoIHhpZHMgb2xkZXIgdGhhbiB0aGUKKwkgKiB5b3Vu Z2VzdCB0dXBsZSB0aGlzIHJlY29yZCB3aWxsIGZyZWV6ZSB3aWxsIGNvbmZsaWN0LgorCSAqLwor CWNvbmZsaWN0X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCisJLyoKKwkgKiBJZiB3ZSBh cmUgdXBkYXRpbmcgdGhlIFZNLCB0aGUgY29uZmxpY3QgaG9yaXpvbiBpcyBhbG1vc3QgYWx3YXlz IHRoZQorCSAqIHZpc2liaWxpdHkgY3V0b2ZmIFhJRC4KKwkgKgorCSAqIFNlcGFyYXRlbHksIGlm IHdlIGFyZSBmcmVlemluZyBhbnkgdHVwbGVzLCBhcyBhbiBvcHRpbWl6YXRpb24sIHdlIGNhbgor CSAqIHVzZSB0aGUgdmlzaWJpbGl0eV9jdXRvZmZfeGlkIGFzIHRoZSBjb25mbGljdCBob3Jpem9u IGlmIHRoZSBwYWdlIHdpbGwKKwkgKiBiZSBhbGwtZnJvemVuLiBUaGlzIGlzIHRydWUgZXZlbiBp ZiB0aGVyZSBhcmUgTFBfREVBRCBsaW5lIHBvaW50ZXJzCisJICogYmVjYXVzZSB3ZSBpZ25vcmVk IHRob3NlIHdoZW4gbWFpbnRhaW5pbmcgdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZC4KKwkgKiBU aGlzIHdpbGwgaGF2ZSBiZWVuIGNhbGN1bGF0ZWQgZWFybGllciBhcyB0aGUgZnJ6X2NvbmZsaWN0 X2hvcml6b24gd2hlbgorCSAqIHdlIGRldGVybWluZWQgd2Ugd291bGQgZnJlZXplLgorCSAqLwor CWlmIChkb19zZXRfdm0pCisJCWNvbmZsaWN0X3hpZCA9IHZpc2liaWxpdHlfY3V0b2ZmX3hpZDsK KwllbHNlIGlmIChkb19mcmVlemUpCisJCWNvbmZsaWN0X3hpZCA9IGZyel9jb25mbGljdF9ob3Jp em9uOworCisJLyoKKwkgKiBJZiB3ZSBhcmUgcmVtb3ZpbmcgdHVwbGVzIHdpdGggYSB5b3VuZ2Vy IHhtYXggdGhhbiBvdXIgc28gZmFyCisJICogY2FsY3VsYXRlZCBjb25mbGljdF94aWQsIHdlIG11 c3QgdXNlIHRoaXMgYXMgb3VyIGhvcml6b24uCisJICovCisJaWYgKFRyYW5zYWN0aW9uSWRGb2xs b3dzKGxhdGVzdF94aWRfcmVtb3ZlZCwgY29uZmxpY3RfeGlkKSkKKwkJY29uZmxpY3RfeGlkID0g bGF0ZXN0X3hpZF9yZW1vdmVkOworCisJcmV0dXJuIGNvbmZsaWN0X3hpZDsKK30KKwogLyoKICAq IFdyaXRlIGFuIFhMT0dfSEVBUDJfUFJVTkUqIFdBTCByZWNvcmQKICAqCkBAIC0yMDgyLDYgKzIz MjgsMTUgQEAgaGVhcF9sb2dfZnJlZXplX3BsYW4oSGVhcFR1cGxlRnJlZXplICp0dXBsZXMsIGlu dCBudHVwbGVzLAogICogY2FzZSwgdm1idWZmZXIgc2hvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIHVw ZGF0ZWQgYW5kIG1hcmtlZCBkaXJ0eSBhbmQgc2hvdWxkCiAgKiBzdGlsbCBiZSBwaW5uZWQgYW5k IGxvY2tlZC4KICAqCisgKiBzZXRfcGRfYWxsX3ZpcyBpbmRpY2F0ZXMgdGhhdCB3ZSBzZXQgUERf QUxMX1ZJU0lCTEUgYW5kIHRodXMgc2hvdWxkIHVwZGF0ZQorICogdGhlIHBhZ2UgTFNOIHdoZW4g Y2hlY2tzdW1zL3dhbF9sb2dfaGludHMgYXJlIGVuYWJsZWQgZXZlbiBpZiB3ZSBkaWQgbm90Cisg KiBwcnVuZSBvciBmcmVlemUgdHVwbGVzIG9uIHRoZSBwYWdlLgorICoKKyAqIEluIHNvbWUgY2Fz ZXMsIHN1Y2ggYXMgd2hlbiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIGlzIHNldHRpbmcg YW4KKyAqIGFscmVhZHkgbWFya2VkIGFsbC12aXNpYmxlIHBhZ2UgYWxsLWZyb3plbiwgUERfQUxM X1ZJU0lCTEUgbWF5IGFscmVhZHkgYmUKKyAqIHNldC4gU28sIGl0IGlzIHBvc3NpYmxlIGZvciB2 bWZsYWdzIHRvIGJlIG5vbi16ZXJvIGFuZCBzZXRfcGRfYWxsX3ZpcyB0byBiZQorICogZmFsc2Uu CisgKgogICogTm90ZTogVGhpcyBmdW5jdGlvbiBzY3JpYmJsZXMgb24gdGhlICdmcm96ZW4nIGFy cmF5LgogICoKICAqIE5vdGU6IFRoaXMgaXMgY2FsbGVkIGluIGEgY3JpdGljYWwgc2VjdGlvbiwg c28gY2FyZWZ1bCB3aGF0IHlvdSBkbyBoZXJlLgpAQCAtMjA5MSw2ICsyMzQ2LDcgQEAgbG9nX2hl YXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJ CQkJCSAgQnVmZmVyIHZtYnVmZmVyLCB1aW50OCB2bWZsYWdzLAogCQkJCQkJICBUcmFuc2FjdGlv bklkIGNvbmZsaWN0X3hpZCwKIAkJCQkJCSAgYm9vbCBjbGVhbnVwX2xvY2ssCisJCQkJCQkgIGJv b2wgc2V0X3BkX2FsbF92aXMsCiAJCQkJCQkgIFBydW5lUmVhc29uIHJlYXNvbiwKIAkJCQkJCSAg SGVhcFR1cGxlRnJlZXplICpmcm96ZW4sIGludCBuZnJvemVuLAogCQkJCQkJICBPZmZzZXROdW1i ZXIgKnJlZGlyZWN0ZWQsIGludCBucmVkaXJlY3RlZCwKQEAgLTIxMjcsNyArMjM4Myw3IEBAIGxv Z19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIs CiAJICovCiAJaWYgKCFkb19wcnVuZSAmJgogCQluZnJvemVuID09IDAgJiYKLQkJKCFkb19zZXRf dm0gfHwgIVhMb2dIaW50Qml0SXNOZWVkZWQoKSkpCisJCSghc2V0X3BkX2FsbF92aXMgfHwgIVhM b2dIaW50Qml0SXNOZWVkZWQoKSkpCiAJCXJlZ2J1Zl9mbGFnc19oZWFwIHw9IFJFR0JVRl9OT19J TUFHRTsKIAogCS8qCkBAIC0yMjQ1LDcgKzI1MDEsOCBAQCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJl ZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIFNlZSBjb21tZW50IGF0 IHRoZSB0b3Agb2YgdGhlIGZ1bmN0aW9uIGFib3V0IHJlZ2J1Zl9mbGFnc19oZWFwIGZvcgogCSAq IGRldGFpbHMgb24gd2hlbiB3ZSBjYW4gYWR2YW5jZSB0aGUgcGFnZSBMU04uCiAJICovCi0JaWYg KGRvX3BydW5lIHx8IG5mcm96ZW4gPiAwIHx8IChkb19zZXRfdm0gJiYgWExvZ0hpbnRCaXRJc05l ZWRlZCgpKSkKKwlpZiAoZG9fcHJ1bmUgfHwgbmZyb3plbiA+IDAgfHwKKwkJKHNldF9wZF9hbGxf dmlzICYmIFhMb2dIaW50Qml0SXNOZWVkZWQoKSkpCiAJewogCQlBc3NlcnQoQnVmZmVySXNEaXJ0 eShidWZmZXIpKTsKIAkJUGFnZVNldExTTihCdWZmZXJHZXRQYWdlKGJ1ZmZlciksIHJlY3B0cik7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggNjcwYTc0MjRiMTUuLjYwNTI5 ZmNmOWQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC00NjQsMTMgKzQ2 NCw2IEBAIHN0YXRpYyB2b2lkIGRlYWRfaXRlbXNfYWRkKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxv Y2tOdW1iZXIgYmxrbm8sIE9mZnNldE51bWJlciAqCiBzdGF0aWMgdm9pZCBkZWFkX2l0ZW1zX3Jl c2V0KExWUmVsU3RhdGUgKnZhY3JlbCk7CiBzdGF0aWMgdm9pZCBkZWFkX2l0ZW1zX2NsZWFudXAo TFZSZWxTdGF0ZSAqdmFjcmVsKTsKIAotI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKLXN0YXRp YyBib29sIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYs Ci0JCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAotCQkJCQkJCQkJIGJvb2wgKmFs bF9mcm96ZW4sCi0JCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlk LAotCQkJCQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pOwotI2VuZGlmCiBzdGF0 aWMgYm9vbCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZm ZXIgYnVmLAogCQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKIAkJCQkJCQkJ CQkgICBPZmZzZXROdW1iZXIgKmRlYWRvZmZzZXRzLApAQCAtMTk3NCw2ICsxOTY3LDggQEAgbGF6 eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAlwYXJhbXMucmVhc29uID0gUFJVTkVf VkFDVVVNX1NDQU47CiAJcGFyYW1zLmN1dG9mZnMgPSAmdmFjcmVsLT5jdXRvZmZzOwogCXBhcmFt cy52aXN0ZXN0ID0gdmFjcmVsLT52aXN0ZXN0OworCXBhcmFtcy52bWJ1ZmZlciA9IHZtYnVmZmVy OworCXBhcmFtcy5ibGtfa25vd25fYXYgPSBhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm07CiAK IAkvKgogCSAqIFBydW5lIGFsbCBIT1QtdXBkYXRlIGNoYWlucyBhbmQgcG90ZW50aWFsbHkgZnJl ZXplIHR1cGxlcyBvbiB0aGlzIHBhZ2UuCkBAIC0xOTkwLDcgKzE5ODUsNyBAQCBsYXp5X3NjYW5f cHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCSAqIHR1cGxlcy4gUHJ1bmluZyB3aWxsIGhhdmUg ZGV0ZXJtaW5lZCB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBpcwogCSAqIGFsbC12aXNpYmxlLgog CSAqLwotCXBhcmFtcy5vcHRpb25zID0gSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRTsKKwlwYXJhbXMu b3B0aW9ucyA9IEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgfCBIRUFQX1BBR0VfUFJVTkVfVVBEQVRF X1ZJUzsKIAlpZiAodmFjcmVsLT5uaW5kZXhlcyA9PSAwKQogCQlwYXJhbXMub3B0aW9ucyB8PSBI RUFQX1BBR0VfUFJVTkVfTUFSS19VTlVTRURfTk9XOwogCkBAIC0yMDEzLDMzICsyMDA4LDYgQEAg bGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkJdmFjcmVsLT5uZXdfZnJvemVu X3R1cGxlX3BhZ2VzKys7CiAJfQogCi0JLyoKLQkgKiBWQUNVVU0gd2lsbCBjYWxsIGhlYXBfcGFn ZV9pc19hbGxfdmlzaWJsZSgpIGR1cmluZyB0aGUgc2Vjb25kIHBhc3Mgb3ZlcgotCSAqIHRoZSBo ZWFwIHRvIGRldGVybWluZSBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBmb3IgdGhlIHBhZ2Ug LS0gdGhpcwotCSAqIGlzIGEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiB0aGUgbG9naWMgZnJvbSB0 aGlzIGZ1bmN0aW9uLiAgTm93IHRoYXQKLQkgKiB3ZSd2ZSBmaW5pc2hlZCBwcnVuaW5nIGFuZCBm cmVlemluZywgbWFrZSBzdXJlIHRoYXQgd2UncmUgaW4gdG90YWwKLQkgKiBhZ3JlZW1lbnQgd2l0 aCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoKSB1c2luZyBhbiBhc3NlcnRpb24uCi0JICovCi0j aWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwotCWlmIChwcmVzdWx0LmFsbF92aXNpYmxlKQotCXsK LQkJVHJhbnNhY3Rpb25JZCBkZWJ1Z19jdXRvZmY7Ci0JCWJvb2wJCWRlYnVnX2FsbF9mcm96ZW47 Ci0KLQkJQXNzZXJ0KHByZXN1bHQubHBkZWFkX2l0ZW1zID09IDApOwotCi0JCWlmICghaGVhcF9w YWdlX2lzX2FsbF92aXNpYmxlKHZhY3JlbC0+cmVsLCBidWYsCi0JCQkJCQkJCQkgIHZhY3JlbC0+ Y3V0b2Zmcy5PbGRlc3RYbWluLCAmZGVidWdfYWxsX2Zyb3plbiwKLQkJCQkJCQkJCSAgJmRlYnVn X2N1dG9mZiwgJnZhY3JlbC0+b2ZmbnVtKSkKLQkJCUFzc2VydChmYWxzZSk7Ci0KLQkJQXNzZXJ0 KHByZXN1bHQuYWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJvemVuKTsKLQotCQlBc3NlcnQoIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKGRlYnVnX2N1dG9mZikgfHwKLQkJCSAgIGRlYnVnX2N1dG9mZiA9 PSBwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24pOwotCX0KLSNlbmRpZgotCiAJLyoKIAkgKiBO b3cgc2F2ZSBkZXRhaWxzIG9mIHRoZSBMUF9ERUFEIGl0ZW1zIGZyb20gdGhlIHBhZ2UgaW4gdmFj cmVsCiAJICovCkBAIC0yMDczLDE2OCArMjA0MSwyNiBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxT dGF0ZSAqdmFjcmVsLAogCS8qIERpZCB3ZSBmaW5kIExQX0RFQUQgaXRlbXM/ICovCiAJKmhhc19s cGRlYWRfaXRlbXMgPSAocHJlc3VsdC5scGRlYWRfaXRlbXMgPiAwKTsKIAotCUFzc2VydCghcHJl c3VsdC5hbGxfdmlzaWJsZSB8fCAhKCpoYXNfbHBkZWFkX2l0ZW1zKSk7Ci0JQXNzZXJ0KCFwcmVz dWx0LmFsbF9mcm96ZW4gfHwgcHJlc3VsdC5hbGxfdmlzaWJsZSk7Ci0KIAkvKgotCSAqIEhhbmRs ZSBzZXR0aW5nIHZpc2liaWxpdHkgbWFwIGJpdCBiYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRo ZSBWTSAoYXMKLQkgKiBvZiBsYXN0IGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIGNhbGwpLCBh bmQgZnJvbSBhbGxfdmlzaWJsZSBhbmQKLQkgKiBhbGxfZnJvemVuIHZhcmlhYmxlcworCSAqIEZv ciB0aGUgcHVycG9zZXMgb2YgbG9nZ2luZywgY291bnQgd2hldGhlciBvciBub3QgdGhlIHBhZ2Ug d2FzIG5ld2x5CisJICogc2V0IGFsbC12aXNpYmxlIGFuZCwgcG90ZW50aWFsbHksIGFsbC1mcm96 ZW4uCiAJICovCi0JaWYgKCFhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgcHJlc3VsdC5h bGxfdmlzaWJsZSkKKwlpZiAoKHByZXN1bHQub2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxM X1ZJU0lCTEUpID09IDAgJiYKKwkJKHByZXN1bHQubmV3X3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEUpICE9IDApCiAJewotCQl1aW50OAkJb2xkX3ZtYml0czsKLQkJdWludDgJCWZs YWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKLQotCQlpZiAocHJlc3VsdC5hbGxfZnJv emVuKQotCQl7Ci0JCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQudm1fY29u ZmxpY3RfaG9yaXpvbikpOwotCQkJZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVOOwot CQl9Ci0KLQkJLyoKLQkJICogSXQgc2hvdWxkIG5ldmVyIGJlIHRoZSBjYXNlIHRoYXQgdGhlIHZp c2liaWxpdHkgbWFwIHBhZ2UgaXMgc2V0Ci0JCSAqIHdoaWxlIHRoZSBwYWdlLWxldmVsIGJpdCBp cyBjbGVhciwgYnV0IHRoZSByZXZlcnNlIGlzIGFsbG93ZWQgKGlmCi0JCSAqIGNoZWNrc3VtcyBh cmUgbm90IGVuYWJsZWQpLiAgUmVnYXJkbGVzcywgc2V0IGJvdGggYml0cyBzbyB0aGF0IHdlCi0J CSAqIGdldCBiYWNrIGluIHN5bmMuCi0JCSAqCi0JCSAqIE5COiBJZiB0aGUgaGVhcCBwYWdlIGlz IGFsbC12aXNpYmxlIGJ1dCB0aGUgVk0gYml0IGlzIG5vdCBzZXQsIHdlCi0JCSAqIGRvbid0IG5l ZWQgdG8gZGlydHkgdGhlIGhlYXAgcGFnZS4gIEhvd2V2ZXIsIGlmIGNoZWNrc3VtcyBhcmUKLQkJ ICogZW5hYmxlZCwgd2UgZG8gbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaGVhcCBwYWdlIGlz IGRpcnRpZWQKLQkJICogYmVmb3JlIHBhc3NpbmcgaXQgdG8gdmlzaWJpbGl0eW1hcF9zZXQoKSwg YmVjYXVzZSBpdCBtYXkgYmUgbG9nZ2VkLgotCQkgKiBHaXZlbiB0aGF0IHRoaXMgc2l0dWF0aW9u IHNob3VsZCBvbmx5IGhhcHBlbiBpbiByYXJlIGNhc2VzIGFmdGVyIGEKLQkJICogY3Jhc2gsIGl0 IGlzIG5vdCB3b3J0aCBvcHRpbWl6aW5nLgotCQkgKi8KLQkJUGFnZVNldEFsbFZpc2libGUocGFn ZSk7Ci0JCU1hcmtCdWZmZXJEaXJ0eShidWYpOwotCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1h cF9zZXQodmFjcmVsLT5yZWwsIGJsa25vLCBidWYsCi0JCQkJCQkJCQkgICBJbnZhbGlkWExvZ1Jl Y1B0ciwKLQkJCQkJCQkJCSAgIHZtYnVmZmVyLCBwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24s Ci0JCQkJCQkJCQkgICBmbGFncyk7Ci0KLQkJLyoKLQkJICogSWYgdGhlIHBhZ2Ugd2Fzbid0IGFs cmVhZHkgc2V0IGFsbC12aXNpYmxlIGFuZC9vciBhbGwtZnJvemVuIGluIHRoZQotCQkgKiBWTSwg Y291bnQgaXQgYXMgbmV3bHkgc2V0IGZvciBsb2dnaW5nLgotCQkgKi8KLQkJaWYgKChvbGRfdm1i aXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgPT0gMCkKLQkJewotCQkJdmFjcmVsLT52 bV9uZXdfdmlzaWJsZV9wYWdlcysrOwotCQkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKLQkJCXsK LQkJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwotCQkJCSp2bV9wYWdl X2Zyb3plbiA9IHRydWU7Ci0JCQl9Ci0JCX0KLQkJZWxzZSBpZiAoKG9sZF92bWJpdHMgJiBWSVNJ QklMSVRZTUFQX0FMTF9GUk9aRU4pID09IDAgJiYKLQkJCQkgcHJlc3VsdC5hbGxfZnJvemVuKQor CQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7CisJCWlmICgocHJlc3VsdC5uZXdfdm1i aXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSAhPSAwKQogCQl7Ci0JCQl2YWNyZWwtPnZt X25ld19mcm96ZW5fcGFnZXMrKzsKKwkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfZnJvemVuX3Bh Z2VzKys7CiAJCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVlOwogCQl9CiAJfQotCi0JLyoKLQkgKiBB cyBvZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBzaG91bGQgbmV2ZXIg YmUgc2V0IGlmIHRoZQotCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLiAgSG93ZXZlciwgaXQn cyBwb3NzaWJsZSB0aGF0IHRoZSBiaXQgZ290Ci0JICogY2xlYXJlZCBhZnRlciBoZWFwX3ZhY19z Y2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3ZSBtdXN0IHJlY2hlY2sKLQkgKiB3aXRo IGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQgdGhlIFZNIGlzIGNvcnJ1cHQuCi0J ICovCi0JZWxzZSBpZiAoYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmICFQYWdlSXNBbGxW aXNpYmxlKHBhZ2UpICYmCi0JCQkgdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHZhY3JlbC0+cmVs LCBibGtubywgJnZtYnVmZmVyKSAhPSAwKQorCWVsc2UgaWYgKChwcmVzdWx0Lm9sZF92bWJpdHMg JiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pID09IDAgJiYKKwkJCSAocHJlc3VsdC5uZXdfdm1i aXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSAhPSAwKQogCXsKLQkJZXJlcG9ydChXQVJO SU5HLAotCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAotCQkJCSBlcnJtc2co InBhZ2UgaXMgbm90IG1hcmtlZCBhbGwtdmlzaWJsZSBidXQgdmlzaWJpbGl0eSBtYXAgYml0IGlz IHNldCBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCi0JCQkJCQl2YWNyZWwtPnJlbG5hbWUs IGJsa25vKSkpOwotCi0JCXZpc2liaWxpdHltYXBfY2xlYXIodmFjcmVsLT5yZWwsIGJsa25vLCB2 bWJ1ZmZlciwKLQkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwotCX0KLQotCS8qCi0J ICogSXQncyBwb3NzaWJsZSBmb3IgdGhlIHZhbHVlIHJldHVybmVkIGJ5Ci0JICogR2V0T2xkZXN0 Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgpIHRvIG1vdmUgYmFja3dhcmRzLCBzbyBpdCdzIG5v dAotCSAqIHdyb25nIGZvciB1cyB0byBzZWUgdHVwbGVzIHRoYXQgYXBwZWFyIHRvIG5vdCBiZSB2 aXNpYmxlIHRvIGV2ZXJ5b25lCi0JICogeWV0LCB3aGlsZSBQRF9BTExfVklTSUJMRSBpcyBhbHJl YWR5IHNldC4gVGhlIHJlYWwgc2FmZSB4bWluIHZhbHVlCi0JICogbmV2ZXIgbW92ZXMgYmFja3dh cmRzLCBidXQgR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgpIGlzCi0JICogY29u c2VydmF0aXZlIGFuZCBzb21ldGltZXMgcmV0dXJucyBhIHZhbHVlIHRoYXQncyB1bm5lY2Vzc2Fy aWx5IHNtYWxsLAotCSAqIHNvIGlmIHdlIHNlZSB0aGF0IGNvbnRyYWRpY3Rpb24gaXQganVzdCBt ZWFucyB0aGF0IHRoZSB0dXBsZXMgdGhhdCB3ZQotCSAqIHRoaW5rIGFyZSBub3QgdmlzaWJsZSB0 byBldmVyeW9uZSB5ZXQgYWN0dWFsbHkgYXJlLCBhbmQgdGhlCi0JICogUERfQUxMX1ZJU0lCTEUg ZmxhZyBpcyBjb3JyZWN0LgotCSAqCi0JICogVGhlcmUgc2hvdWxkIG5ldmVyIGJlIExQX0RFQUQg aXRlbXMgb24gYSBwYWdlIHdpdGggUERfQUxMX1ZJU0lCTEUgc2V0LAotCSAqIGhvd2V2ZXIuCi0J ICovCi0JZWxzZSBpZiAocHJlc3VsdC5scGRlYWRfaXRlbXMgPiAwICYmIFBhZ2VJc0FsbFZpc2li bGUocGFnZSkpCi0JewotCQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9E QVRBX0NPUlJVUFRFRCksCi0JCQkJIGVycm1zZygicGFnZSBjb250YWluaW5nIExQX0RFQUQgaXRl bXMgaXMgbWFya2VkIGFzIGFsbC12aXNpYmxlIGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwK LQkJCQkJCXZhY3JlbC0+cmVsbmFtZSwgYmxrbm8pKSk7Ci0KLQkJUGFnZUNsZWFyQWxsVmlzaWJs ZShwYWdlKTsKLQkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7Ci0JCXZpc2liaWxpdHltYXBfY2xlYXIo dmFjcmVsLT5yZWwsIGJsa25vLCB2bWJ1ZmZlciwKLQkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElE X0JJVFMpOwotCX0KLQotCS8qCi0JICogSWYgdGhlIGFsbC12aXNpYmxlIHBhZ2UgaXMgYWxsLWZy b3plbiBidXQgbm90IG1hcmtlZCBhcyBzdWNoIHlldCwgbWFyawotCSAqIGl0IGFzIGFsbC1mcm96 ZW4uCi0JICovCi0JZWxzZSBpZiAoYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmIHByZXN1 bHQuYWxsX2Zyb3plbiAmJgotCQkJICFWTV9BTExfRlJPWkVOKHZhY3JlbC0+cmVsLCBibGtubywg JnZtYnVmZmVyKSkKLQl7Ci0JCXVpbnQ4CQlvbGRfdm1iaXRzOwotCi0JCS8qCi0JCSAqIEF2b2lk IHJlbHlpbmcgb24gYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIGFzIGEgcHJveHkgZm9yIHRo ZQotCQkgKiBwYWdlLWxldmVsIFBEX0FMTF9WSVNJQkxFIGJpdCBiZWluZyBzZXQsIHNpbmNlIGl0 IG1pZ2h0IGhhdmUgYmVjb21lCi0JCSAqIHN0YWxlIC0tIGV2ZW4gd2hlbiBhbGxfdmlzaWJsZSBp cyBzZXQKLQkJICovCi0JCWlmICghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSkKLQkJewotCQkJUGFn ZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQlNYXJrQnVmZmVyRGlydHkoYnVmKTsKLQkJfQotCi0J CS8qCi0JCSAqIFNldCB0aGUgcGFnZSBhbGwtZnJvemVuIChhbmQgYWxsLXZpc2libGUpIGluIHRo ZSBWTS4KLQkJICoKLQkJICogV2UgY2FuIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQgYXMgb3Vy IGN1dG9mZl94aWQsIHNpbmNlIGEKLQkJICogc25hcHNob3RDb25mbGljdEhvcml6b24gc3VmZmlj aWVudCB0byBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETwotCQkgKiB3YXMgbG9nZ2VkIHdo ZW4gdGhlIHBhZ2UncyB0dXBsZXMgd2VyZSBmcm96ZW4uCi0JCSAqLwotCQlBc3NlcnQoIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbikpOwotCQlvbGRfdm1i aXRzID0gdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVsLT5yZWwsIGJsa25vLCBidWYsCi0JCQkJCQkJ CQkgICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkJCSAgIHZtYnVmZmVyLCBJbnZhbGlkVHJh bnNhY3Rpb25JZCwKLQkJCQkJCQkJCSAgIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAotCQkJ CQkJCQkJICAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKLQotCQkvKgotCQkgKiBUaGUgcGFn ZSB3YXMgbGlrZWx5IGFscmVhZHkgc2V0IGFsbC12aXNpYmxlIGluIHRoZSBWTS4gSG93ZXZlciwK LQkJICogdGhlcmUgaXMgYSBzbWFsbCBjaGFuY2UgdGhhdCBpdCB3YXMgbW9kaWZpZWQgc29tZXRp bWUgYmV0d2VlbgotCQkgKiBzZXR0aW5nIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSBhbmQg Y2hlY2tpbmcgdGhlIHZpc2liaWxpdHkKLQkJICogZHVyaW5nIHBydW5pbmcuIENoZWNrIHRoZSBy ZXR1cm4gdmFsdWUgb2Ygb2xkX3ZtYml0cyBhbnl3YXkgdG8KLQkJICogZW5zdXJlIHRoZSB2aXNp YmlsaXR5IG1hcCBjb3VudGVycyB1c2VkIGZvciBsb2dnaW5nIGFyZSBhY2N1cmF0ZS4KLQkJICov Ci0JCWlmICgob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpID09IDApCi0J CXsKLQkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfcGFnZXMrKzsKLQkJCXZhY3JlbC0+dm1fbmV3 X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVlOwotCQl9 Ci0KLQkJLyoKLQkJICogV2UgYWxyZWFkeSBjaGVja2VkIHRoYXQgdGhlIHBhZ2Ugd2FzIG5vdCBz ZXQgYWxsLWZyb3plbiBpbiB0aGUgVk0KLQkJICogYWJvdmUsIHNvIHdlIGRvbid0IG5lZWQgdG8g dGVzdCB0aGUgdmFsdWUgb2Ygb2xkX3ZtYml0cy4KLQkJICovCi0JCWVsc2UKLQkJewotCQkJdmFj cmVsLT52bV9uZXdfZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVlOwot CQl9CisJCUFzc2VydCgocHJlc3VsdC5uZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklT SUJMRSkgIT0gMCk7CisJCXZhY3JlbC0+dm1fbmV3X2Zyb3plbl9wYWdlcysrOworCQkqdm1fcGFn ZV9mcm96ZW4gPSB0cnVlOwogCX0KIAogCXJldHVybiBwcmVzdWx0Lm5kZWxldGVkOwpAQCAtMjk1 Niw2ICsyNzgyLDcgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwg QmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCSAgdm1mbGFncywKIAkJ CQkJCQkJICBjb25mbGljdF94aWQsCiAJCQkJCQkJCSAgZmFsc2UsCS8qIG5vIGNsZWFudXAgbG9j ayByZXF1aXJlZCAqLworCQkJCQkJCQkgICh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9C SVRTKSAhPSAwLAogCQkJCQkJCQkgIFBSVU5FX1ZBQ1VVTV9DTEVBTlVQLAogCQkJCQkJCQkgIE5V TEwsIDAsCS8qIGZyb3plbiAqLwogCQkJCQkJCQkgIE5VTEwsIDAsCS8qIHJlZGlyZWN0ZWQgKi8K QEAgLTM2NDMsNyArMzQ3MCw3IEBAIGRlYWRfaXRlbXNfY2xlYW51cChMVlJlbFN0YXRlICp2YWNy ZWwpCiAgKiB0aGF0IGV4cGVjdCBubyBMUF9ERUFEIG9uIHRoZSBwYWdlLiBDdXJyZW50bHkgYXNz ZXJ0LW9ubHksIGJ1dCB0aGVyZSBpcyBubwogICogcmVhc29uIG5vdCB0byB1c2UgaXQgb3V0c2lk ZSBvZiBhc3NlcnRzLgogICovCi1zdGF0aWMgYm9vbAorYm9vbAogaGVhcF9wYWdlX2lzX2FsbF92 aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCSBUcmFuc2FjdGlvbklkIE9s ZGVzdFhtaW4sCiAJCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCBi MGI2ZDM1NTJhNi4uMTQ3MTk0MGI0YTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9o ZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTQyLDYgKzQyLDcg QEAKIC8qICJvcHRpb25zIiBmbGFnIGJpdHMgZm9yIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl ICovCiAjZGVmaW5lIEhFQVBfUEFHRV9QUlVORV9NQVJLX1VOVVNFRF9OT1cJCSgxIDw8IDApCiAj ZGVmaW5lIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUJCQkJKDEgPDwgMSkKKyNkZWZpbmUgSEVBUF9Q QUdFX1BSVU5FX1VQREFURV9WSVMJCQkoMSA8PCAyKQogCiB0eXBlZGVmIHN0cnVjdCBCdWxrSW5z ZXJ0U3RhdGVEYXRhICpCdWxrSW5zZXJ0U3RhdGU7CiB0eXBlZGVmIHN0cnVjdCBHbG9iYWxWaXNT dGF0ZSBHbG9iYWxWaXNTdGF0ZTsKQEAgLTIzOCw2ICsyMzksMTYgQEAgdHlwZWRlZiBzdHJ1Y3Qg UHJ1bmVGcmVlemVQYXJhbXMKIAlSZWxhdGlvbglyZWxhdGlvbjsJCS8qIHJlbGF0aW9uIGNvbnRh aW5pbmcgYnVmZmVyIHRvIGJlIHBydW5lZCAqLwogCUJ1ZmZlcgkJYnVmZmVyOwkJCS8qIGJ1ZmZl ciB0byBiZSBwcnVuZWQgKi8KIAorCS8qCisJICoKKwkgKiB2bWJ1ZmZlciBpcyB0aGUgYnVmZmVy IHRoYXQgbXVzdCBhbHJlYWR5IGNvbnRhaW4gY29udGFpbiB0aGUgcmVxdWlyZWQKKwkgKiBibG9j ayBvZiB0aGUgdmlzaWJpbGl0eSBtYXAgaWYgd2UgYXJlIHRvIHVwZGF0ZSBpdC4gYmxrX2tub3du X2F2IGlzIHRoZQorCSAqIHZpc2liaWxpdHkgc3RhdHVzIG9mIHRoZSBoZWFwIGJsb2NrIGFzIG9m IHRoZSBsYXN0IGNhbGwgdG8KKwkgKiBmaW5kX25leHRfdW5za2lwcGFibGVfYmxvY2soKS4KKwkg Ki8KKwlCdWZmZXIJCXZtYnVmZmVyOworCWJvb2wJCWJsa19rbm93bl9hdjsKKwogCS8qCiAJICog VGhlIHJlYXNvbiBwcnVuaW5nIHdhcyBwZXJmb3JtZWQuICBJdCBpcyB1c2VkIHRvIHNldCB0aGUg V0FMIHJlY29yZAogCSAqIG9wY29kZSB3aGljaCBpcyB1c2VkIGZvciBkZWJ1Z2dpbmcgYW5kIGFu YWx5c2lzIHB1cnBvc2VzLgpAQCAtMjUwLDggKzI2MSw5IEBAIHR5cGVkZWYgc3RydWN0IFBydW5l RnJlZXplUGFyYW1zCiAJICogTUFSS19VTlVTRURfTk9XIGluZGljYXRlcyB0aGF0IGRlYWQgaXRl bXMgY2FuIGJlIHNldCBMUF9VTlVTRUQgZHVyaW5nCiAJICogcHJ1bmluZy4KIAkgKgotCSAqIEZS RUVaRSBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIGFsc28gZnJlZXplIHR1cGxlcywgYW5kIHdpbGwg cmV0dXJuCi0JICogJ2FsbF92aXNpYmxlJywgJ2FsbF9mcm96ZW4nIGZsYWdzIHRvIHRoZSBjYWxs ZXIuCisJICogRlJFRVpFIGluZGljYXRlcyB0aGF0IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVz CisJICoKKwkgKiBVUERBVEVfVklTIGluZGljYXRlcyB0aGF0IHdlIHdpbGwgc2V0IHRoZSBwYWdl J3Mgc3RhdHVzIGluIHRoZSBWTS4KIAkgKi8KIAlpbnQJCQlvcHRpb25zOwogCkBAIC0yODQsMTkg KzI5NiwxNSBAQCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVJlc3VsdAogCWludAkJCXJlY2Vu dGx5X2RlYWRfdHVwbGVzOwogCiAJLyoKLQkgKiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBp bmRpY2F0ZSBpZiB0aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4KLQkgKiBiaXRzIGluIHRo ZSB2aXNpYmlsaXR5IG1hcCBjYW4gYmUgc2V0IGZvciB0aGlzIHBhZ2UsIGFmdGVyIHBydW5pbmcu Ci0JICoKLQkgKiB2bV9jb25mbGljdF9ob3Jpem9uIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZl IHR1cGxlcyBvbiB0aGUgcGFnZS4gIFRoZQotCSAqIGNhbGxlciBjYW4gdXNlIGl0IGFzIHRoZSBj b25mbGljdCBob3Jpem9uIHdoZW4gc2V0dGluZyB0aGUgVk0gYml0cy4gIEl0Ci0JICogaXMgb25s eSB2YWxpZCBpZiB3ZSBmcm96ZSBzb21lIHR1cGxlcyAobmZyb3plbiA+IDApLCBhbmQgYWxsX2Zy b3plbiBpcwotCSAqIHRydWUuCisJICogb2xkX3ZtYml0cyBhcmUgdGhlIHN0YXRlIG9mIHRoZSBh bGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbiBiaXRzIGluIHRoZQorCSAqIHZpc2liaWxpdHkgbWFw IGJlZm9yZSB1cGRhdGluZyBpdCBkdXJpbmcgcGhhc2UgSSBvZiB2YWN1dW1pbmcuCisJICogbmV3 X3ZtYml0cyBhcmUgdGhlIHN0YXRlIG9mIHRob3NlIGJpdHMgYWZ0ZXIgcGhhc2UgSSBvZiB2YWN1 dW1pbmcuCiAJICoKLQkgKiBUaGVzZSBhcmUgb25seSBzZXQgaWYgdGhlIEhFQVBfUFJVTkVfRlJF RVpFIG9wdGlvbiBpcyBzZXQuCisJICogVGhlc2UgYXJlIG9ubHkgc2V0IGlmIHRoZSBIRUFQX1BB R0VfUFJVTkVfVVBEQVRFX1ZJUyBvcHRpb24gaXMgc2V0IGFuZAorCSAqIHdlIGhhdmUgYXR0ZW1w dGVkIHRvIHVwZGF0ZSB0aGUgVk0uCiAJICovCi0JYm9vbAkJYWxsX3Zpc2libGU7Ci0JYm9vbAkJ YWxsX2Zyb3plbjsKLQlUcmFuc2FjdGlvbklkIHZtX2NvbmZsaWN0X2hvcml6b247CisJdWludDgJ CW5ld192bWJpdHM7CisJdWludDgJCW9sZF92bWJpdHM7CiAKIAkvKgogCSAqIFdoZXRoZXIgb3Ig bm90IHRoZSBwYWdlIG1ha2VzIHJlbCB0cnVuY2F0aW9uIHVuc2FmZS4gIFRoaXMgaXMgc2V0IHRv CkBAIC00MjMsNiArNDMxLDcgQEAgZXh0ZXJuIHZvaWQgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6 ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJCSAgQnVmZmVyIHZt YnVmZmVyLCB1aW50OCB2bWZsYWdzLAogCQkJCQkJCQkJICBUcmFuc2FjdGlvbklkIGNvbmZsaWN0 X3hpZCwKIAkJCQkJCQkJCSAgYm9vbCBjbGVhbnVwX2xvY2ssCisJCQkJCQkJCQkgIGJvb2wgc2V0 X3BkX2FsbF92aXMsCiAJCQkJCQkJCQkgIFBydW5lUmVhc29uIHJlYXNvbiwKIAkJCQkJCQkJCSAg SGVhcFR1cGxlRnJlZXplICpmcm96ZW4sIGludCBuZnJvemVuLAogCQkJCQkJCQkJICBPZmZzZXRO dW1iZXIgKnJlZGlyZWN0ZWQsIGludCBucmVkaXJlY3RlZCwKQEAgLTQzMyw2ICs0NDIsMTQgQEAg ZXh0ZXJuIHZvaWQgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwg QnVmZmVyIGJ1ZmZlciwKIGV4dGVybiB2b2lkIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWws CiAJCQkJCQkJY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywgQnVmZmVyQWNjZXNzU3RyYXRlZ3kg YnN0cmF0ZWd5KTsKIAorI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKK2V4dGVybiBib29sIGhl YXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCisJCQkJCQkJ CQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4s CisJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAorCQkJCQkJ CQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pOworI2VuZGlmCisKIC8qIGluIGhlYXAv aGVhcGFtX3Zpc2liaWxpdHkuYyAqLwogZXh0ZXJuIGJvb2wgSGVhcFR1cGxlU2F0aXNmaWVzVmlz aWJpbGl0eShIZWFwVHVwbGUgaHR1cCwgU25hcHNob3Qgc25hcHNob3QsCiAJCQkJCQkJCQkJIEJ1 ZmZlciBidWZmZXIpOwotLSAKMi40My4wCgo= --000000000000fb0f430642c7990f Content-Type: text/x-patch; charset="US-ASCII"; name="v19-0005-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Disposition: attachment; filename="v19-0005-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhkswg114 RnJvbSA5MGVmNWIxODVlNDk0MGY4YjZlYWIyOTE0NjBmZTcxMTVkMGU3MDgwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjIxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTkgMDUvMTJdIEVsaW1pbmF0ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZnJvbSBlbXB0eS1w YWdlIHZhY3V1bQoKQXMgcGFydCBvZiByZW1vdmluZyBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jk cywgcGhhc2UgSSBvZiBWQUNVVU0gbm93Cm1hcmtzIGVtcHR5IHBhZ2VzIGFsbC12aXNpYmxlIGlu IGEgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQuCgpBdXRob3I6IE1lbGFuaWUg UGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQg SGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYyB8IDM2ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3ZhY3V1bWxhenkuYwppbmRleCA2MDUyOWZjZjlkNy4uOGM0MDJiNWIxZDQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTE4NzksOSArMTg3OSwxMiBAQCBsYXp5X3Nj YW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1i ZXIgYmxrbm8sCiAJCSAqLwogCQlpZiAoIVBhZ2VJc0FsbFZpc2libGUocGFnZSkpCiAJCXsKKwkJ CS8qIExvY2sgdm1idWZmZXIgYmVmb3JlIGVudGVyaW5nIGNyaXRpY2FsIHNlY3Rpb24gKi8KKwkJ CUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisKIAkJCVNUQVJU X0NSSVRfU0VDVElPTigpOwogCi0JCQkvKiBtYXJrIGJ1ZmZlciBkaXJ0eSBiZWZvcmUgd3JpdGlu ZyBhIFdBTCByZWNvcmQgKi8KKwkJCS8qIE1hcmsgYnVmZmVyIGRpcnR5IGJlZm9yZSB3cml0aW5n IGFueSBXQUwgcmVjb3JkcyAqLwogCQkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7CiAKIAkJCS8qCkBA IC0xODk4LDEzICsxOTAxLDM0IEBAIGxhenlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0ZSAq dmFjcmVsLCBCdWZmZXIgYnVmLCBCbG9ja051bWJlciBibGtubywKIAkJCQlsb2dfbmV3cGFnZV9i dWZmZXIoYnVmLCB0cnVlKTsKIAogCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQl2aXNp YmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJCQkgIEludmFsaWRY TG9nUmVjUHRyLAotCQkJCQkJCSAgdm1idWZmZXIsIEludmFsaWRUcmFuc2FjdGlvbklkLAotCQkJ CQkJCSAgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJICBWSVNJQklMSVRZTUFQ X0FMTF9GUk9aRU4pOworCQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKGJsa25vLAorCQkJCQkJ CQkJIHZtYnVmZmVyLAorCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJ CQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJCQkJCQkJCSB2YWNyZWwtPnJlbC0+ cmRfbG9jYXRvcik7CisKKwkJCS8qCisJCQkgKiBFbWl0IFdBTCBmb3Igc2V0dGluZyBQRF9BTExf VklTSUJMRSBvbiB0aGUgaGVhcCBwYWdlIGFuZAorCQkJICogc2V0dGluZyB0aGUgVk0uCisJCQkg Ki8KKwkJCWlmIChSZWxhdGlvbk5lZWRzV0FMKHZhY3JlbC0+cmVsKSkKKwkJCQlsb2dfaGVhcF9w cnVuZV9hbmRfZnJlZXplKHZhY3JlbC0+cmVsLCBidWYsCisJCQkJCQkJCQkJICB2bWJ1ZmZlciwK KwkJCQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJCQkJCQkJCSAgVklT SUJJTElUWU1BUF9BTExfRlJPWkVOLAorCQkJCQkJCQkJCSAgSW52YWxpZFRyYW5zYWN0aW9uSWQs IC8qIGNvbmZsaWN0IHhpZCAqLworCQkJCQkJCQkJCSAgZmFsc2UsCS8qIGNsZWFudXAgbG9jayAq LworCQkJCQkJCQkJCSAgdHJ1ZSwgLyogc2V0X3BkX2FsbF92aXMgKi8KKwkJCQkJCQkJCQkgIFBS VU5FX1ZBQ1VVTV9TQ0FOLAkvKiByZWFzb24gKi8KKwkJCQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJ CQkJCQkJICBOVUxMLCAwLAorCQkJCQkJCQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5VTEws IDApOworCiAJCQlFTkRfQ1JJVF9TRUNUSU9OKCk7CiAKKwkJCUxvY2tCdWZmZXIodm1idWZmZXIs IEJVRkZFUl9MT0NLX1VOTE9DSyk7CisKIAkJCS8qIENvdW50IHRoZSBuZXdseSBhbGwtZnJvemVu IHBhZ2VzIGZvciBsb2dnaW5nICovCiAJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7 CiAJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwotLSAKMi40My4wCgo= --000000000000fb0f430642c7990f Content-Type: text/x-patch; charset="US-ASCII"; name="v19-0006-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Disposition: attachment; filename="v19-0006-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhkswk8d5 RnJvbSAyNTIxNmQ3NGM1ZGVkNzQwZmI1YjUyYmViNzQ4NzdjN2E3MDFjM2IwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTkgMDYvMTJdIFJlbW92ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZW50aXJlbHkKCkFzIG5v IHJlbWFpbmluZyB1c2VycyBlbWl0IFhMT0dfSEVBUDJfVklTSUJMRSByZWNvcmRzLgpUaGlzIGlu Y2x1ZGVzIGRlbGV0aW5nIHRoZSB4bF9oZWFwX3Zpc2libGUgc3RydWN0IGFuZCBhbGwgZnVuY3Rp b25zCnJlc3BvbnNpYmxlIGZvciBlbWl0dGluZyBvciByZXBsYXlpbmcgWExPR19IRUFQMl9WSVNJ QkxFIHJlY29yZHMuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBn bWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXkgQm9yb2RpbiA8eDRtbW1AeWFuZGV4LXRlYW0u cnU+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZtYXNrLmMgICAgICB8ICAgNCAr LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICB8ICA1NCArLS0tLS0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyAgICB8IDE1NSArKy0tLS0t LS0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAg ICB8ICAxOCArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgfCAg MTYgKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgIHwgMTExICst LS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jICAg fCAgMTAgLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgfCAgIDEg LQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jICAgICAgICB8ICAxMiArLQogc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggICAgICAgICB8ICAyOCArLS0tCiBzcmMvaW5j bHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oICAgICAgIHwgIDEzICstCiBzcmMvaW5jbHVkZS9h Y2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCAgIHwgICA5IC0tCiBzcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdCAgICAgICAgIHwgICAxIC0KIDEzIGZpbGVzIGNoYW5nZWQsIDU0IGluc2Vy dGlvbnMoKyksIDM3OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvY29tbW9uL2J1Zm1hc2suYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5j CmluZGV4IGJiMjYwY2ZmYTY4Li41ZjA3ZjE3OTQxNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2NvbW1vbi9idWZtYXNrLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9i dWZtYXNrLmMKQEAgLTU2LDggKzU2LDggQEAgbWFza19wYWdlX2hpbnRfYml0cyhQYWdlIHBhZ2Up CiAKIAkvKgogCSAqIER1cmluZyByZXBsYXksIGlmIHRoZSBwYWdlIExTTiBoYXMgYWR2YW5jZWQg cGFzdCBvdXIgWExPRyByZWNvcmQncyBMU04sCi0JICogd2UgZG9uJ3QgbWFyayB0aGUgcGFnZSBh bGwtdmlzaWJsZS4gU2VlIGhlYXBfeGxvZ192aXNpYmxlKCkgZm9yCi0JICogZGV0YWlscy4KKwkg KiB3ZSBkb24ndCBtYXJrIHRoZSBwYWdlIGFsbC12aXNpYmxlLiBTZWUgaGVhcF94bG9nX3BydW5l X2FuZF9mcmVlemUoKQorCSAqIGZvciBtb3JlIGRldGFpbHMuCiAJICovCiAJUGFnZUNsZWFyQWxs VmlzaWJsZShwYWdlKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggMzZmZWU5Yzk5 NGUuLmEwYzU5MjNhNTYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtMjUyNCwxMSAr MjUyNCwxMSBAQCBoZWFwX211bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVUYWJs ZVNsb3QgKipzbG90cywgaW50IG50dXBsZXMsCiAJCWVsc2UgaWYgKGFsbF9mcm96ZW5fc2V0KQog CQl7CiAJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJCXZpc2liaWxpdHltYXBfc2V0X3Zt Yml0cyhCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLAotCQkJCQkJCQkJIHZtYnVmZmVyLAot CQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAotCQkJCQkJCQkJIFZJU0lCSUxJ VFlNQVBfQUxMX0ZST1pFTiwKLQkJCQkJCQkJCSByZWxhdGlvbi0+cmRfbG9jYXRvcik7CisJCQl2 aXNpYmlsaXR5bWFwX3NldChCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLAorCQkJCQkJCSAg dm1idWZmZXIsCisJCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkg IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJCQkJCQkgIHJlbGF0aW9uLT5yZF9sb2NhdG9y KTsKIAkJfQogCiAJCS8qCkBAIC04Nzk3LDUwICs4Nzk3LDYgQEAgYm90dG9tdXBfc29ydF9hbmRf c2hyaW5rKFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRlKQogCXJldHVybiBuYmxvY2tzZmF2b3Jh YmxlOwogfQogCi0vKgotICogUGVyZm9ybSBYTG9nSW5zZXJ0IGZvciBhIGhlYXAtdmlzaWJsZSBv cGVyYXRpb24uICAnYmxvY2snIGlzIHRoZSBibG9jawotICogYmVpbmcgbWFya2VkIGFsbC12aXNp YmxlLCBhbmQgdm1fYnVmZmVyIGlzIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUKLSAqIGNvcnJl c3BvbmRpbmcgdmlzaWJpbGl0eSBtYXAgYmxvY2suICBCb3RoIHNob3VsZCBoYXZlIGFscmVhZHkg YmVlbiBtb2RpZmllZAotICogYW5kIGRpcnRpZWQuCi0gKgotICogc25hcHNob3RDb25mbGljdEhv cml6b24gY29tZXMgZnJvbSB0aGUgbGFyZ2VzdCB4bWluIG9uIHRoZSBwYWdlIGJlaW5nCi0gKiBt YXJrZWQgYWxsLXZpc2libGUuICBSRURPIHJvdXRpbmUgdXNlcyBpdCB0byBnZW5lcmF0ZSByZWNv dmVyeSBjb25mbGljdHMuCi0gKgotICogSWYgY2hlY2tzdW1zIG9yIHdhbF9sb2dfaGludHMgYXJl IGVuYWJsZWQsIHdlIG1heSBhbHNvIGdlbmVyYXRlIGEgZnVsbC1wYWdlCi0gKiBpbWFnZSBvZiBo ZWFwX2J1ZmZlci4gT3RoZXJ3aXNlLCB3ZSBvcHRpbWl6ZSBhd2F5IHRoZSBGUEkgKGJ5IHNwZWNp ZnlpbmcKLSAqIFJFR0JVRl9OT19JTUFHRSBmb3IgdGhlIGhlYXAgYnVmZmVyKSwgaW4gd2hpY2gg Y2FzZSB0aGUgY2FsbGVyIHNob3VsZCAqbm90KgotICogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBM U04uCi0gKi8KLVhMb2dSZWNQdHIKLWxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZm ZXIgaGVhcF9idWZmZXIsIEJ1ZmZlciB2bV9idWZmZXIsCi0JCQkJIFRyYW5zYWN0aW9uSWQgc25h cHNob3RDb25mbGljdEhvcml6b24sIHVpbnQ4IHZtZmxhZ3MpCi17Ci0JeGxfaGVhcF92aXNpYmxl IHhscmVjOwotCVhMb2dSZWNQdHIJcmVjcHRyOwotCXVpbnQ4CQlmbGFnczsKLQotCUFzc2VydChC dWZmZXJJc1ZhbGlkKGhlYXBfYnVmZmVyKSk7Ci0JQXNzZXJ0KEJ1ZmZlcklzVmFsaWQodm1fYnVm ZmVyKSk7Ci0KLQl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uOwotCXhscmVjLmZsYWdzID0gdm1mbGFnczsKLQlpZiAoUmVsYXRpb25Jc0FjY2Vz c2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWwpKQotCQl4bHJlYy5mbGFncyB8PSBWSVNJQklMSVRZ TUFQX1hMT0dfQ0FUQUxPR19SRUw7Ci0JWExvZ0JlZ2luSW5zZXJ0KCk7Ci0JWExvZ1JlZ2lzdGVy RGF0YSgmeGxyZWMsIFNpemVPZkhlYXBWaXNpYmxlKTsKLQotCVhMb2dSZWdpc3RlckJ1ZmZlcigw LCB2bV9idWZmZXIsIDApOwotCi0JZmxhZ3MgPSBSRUdCVUZfU1RBTkRBUkQ7Ci0JaWYgKCFYTG9n SGludEJpdElzTmVlZGVkKCkpCi0JCWZsYWdzIHw9IFJFR0JVRl9OT19JTUFHRTsKLQlYTG9nUmVn aXN0ZXJCdWZmZXIoMSwgaGVhcF9idWZmZXIsIGZsYWdzKTsKLQotCXJlY3B0ciA9IFhMb2dJbnNl cnQoUk1fSEVBUDJfSUQsIFhMT0dfSEVBUDJfVklTSUJMRSk7Ci0KLQlyZXR1cm4gcmVjcHRyOwot fQotCiAvKgogICogUGVyZm9ybSBYTG9nSW5zZXJ0IGZvciBhIGhlYXAtdXBkYXRlIG9wZXJhdGlv bi4gIENhbGxlciBtdXN0IGFscmVhZHkKICAqIGhhdmUgbW9kaWZpZWQgdGhlIGJ1ZmZlcihzKSBh bmQgbWFya2VkIHRoZW0gZGlydHkuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW1feGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpp bmRleCAyYWY3MjQ0NTFjMy4uNWFiNDZlOGJmOGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX3hsb2cuYwpAQCAtMjUxLDcgKzI1MSw3IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExv Z1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCWlmIChQYWdlSXNOZXcodm1wYWdlKSkKIAkJCVBhZ2VJ bml0KHZtcGFnZSwgQkxDS1NaLCAwKTsKIAotCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxr bm8sIHZtYnVmZmVyLCB2bWZsYWdzLCBybG9jYXRvcik7CisJCXZpc2liaWxpdHltYXBfc2V0KGJs a25vLCB2bWJ1ZmZlciwgdm1mbGFncywgcmxvY2F0b3IpOwogCiAJCUFzc2VydChCdWZmZXJJc0Rp cnR5KHZtYnVmZmVyKSk7CiAJCVBhZ2VTZXRMU04odm1wYWdlLCBsc24pOwpAQCAtMjY0LDE0MiAr MjY0LDYgQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkK IAkJWExvZ1JlY29yZFBhZ2VXaXRoRnJlZVNwYWNlKHJsb2NhdG9yLCBibGtubywgZnJlZXNwYWNl KTsKIH0KIAotLyoKLSAqIFJlcGxheSBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jkcy4KLSAqCi0g KiBUaGUgY3JpdGljYWwgaW50ZWdyaXR5IHJlcXVpcmVtZW50IGhlcmUgaXMgdGhhdCB3ZSBtdXN0 IG5ldmVyIGVuZCB1cCB3aXRoCi0gKiBhIHNpdHVhdGlvbiB3aGVyZSB0aGUgdmlzaWJpbGl0eSBt YXAgYml0IGlzIHNldCwgYW5kIHRoZSBwYWdlLWxldmVsCi0gKiBQRF9BTExfVklTSUJMRSBiaXQg aXMgY2xlYXIuICBJZiB0aGF0IHdlcmUgdG8gb2NjdXIsIHRoZW4gYSBzdWJzZXF1ZW50Ci0gKiBw YWdlIG1vZGlmaWNhdGlvbiB3b3VsZCBmYWlsIHRvIGNsZWFyIHRoZSB2aXNpYmlsaXR5IG1hcCBi aXQuCi0gKi8KLXN0YXRpYyB2b2lkCi1oZWFwX3hsb2dfdmlzaWJsZShYTG9nUmVhZGVyU3RhdGUg KnJlY29yZCkKLXsKLQlYTG9nUmVjUHRyCWxzbiA9IHJlY29yZC0+RW5kUmVjUHRyOwotCXhsX2hl YXBfdmlzaWJsZSAqeGxyZWMgPSAoeGxfaGVhcF92aXNpYmxlICopIFhMb2dSZWNHZXREYXRhKHJl Y29yZCk7Ci0JQnVmZmVyCQl2bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7Ci0JQnVmZmVyCQlidWZm ZXI7Ci0JUGFnZQkJcGFnZTsKLQlSZWxGaWxlTG9jYXRvciBybG9jYXRvcjsKLQlCbG9ja051bWJl ciBibGtubzsKLQlYTG9nUmVkb0FjdGlvbiBhY3Rpb247Ci0KLQlBc3NlcnQoKHhscmVjLT5mbGFn cyAmIFZJU0lCSUxJVFlNQVBfWExPR19WQUxJRF9CSVRTKSA9PSB4bHJlYy0+ZmxhZ3MpOwotCi0J WExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMSwgJnJsb2NhdG9yLCBOVUxMLCAmYmxrbm8pOwot Ci0JLyoKLQkgKiBJZiB0aGVyZSBhcmUgYW55IEhvdCBTdGFuZGJ5IHRyYW5zYWN0aW9ucyBydW5u aW5nIHRoYXQgaGF2ZSBhbiB4bWluCi0JICogaG9yaXpvbiBvbGQgZW5vdWdoIHRoYXQgdGhpcyBw YWdlIGlzbid0IGFsbC12aXNpYmxlIGZvciB0aGVtLCB0aGV5Ci0JICogbWlnaHQgaW5jb3JyZWN0 bHkgZGVjaWRlIHRoYXQgYW4gaW5kZXgtb25seSBzY2FuIGNhbiBza2lwIGEgaGVhcCBmZXRjaC4K LQkgKgotCSAqIE5COiBJdCBtaWdodCBiZSBiZXR0ZXIgdG8gdGhyb3cgc29tZSBraW5kIG9mICJz b2Z0IiBjb25mbGljdCBoZXJlIHRoYXQKLQkgKiBmb3JjZXMgYW55IGluZGV4LW9ubHkgc2NhbiB0 aGF0IGlzIGluIGZsaWdodCB0byBwZXJmb3JtIGhlYXAgZmV0Y2hlcywKLQkgKiByYXRoZXIgdGhh biBraWxsaW5nIHRoZSB0cmFuc2FjdGlvbiBvdXRyaWdodC4KLQkgKi8KLQlpZiAoSW5Ib3RTdGFu ZGJ5KQotCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25hcHNo b3RDb25mbGljdEhvcml6b24sCi0JCQkJCQkJCQkJCXhscmVjLT5mbGFncyAmIFZJU0lCSUxJVFlN QVBfWExPR19DQVRBTE9HX1JFTCwKLQkJCQkJCQkJCQkJcmxvY2F0b3IpOwotCi0JLyoKLQkgKiBS ZWFkIHRoZSBoZWFwIHBhZ2UsIGlmIGl0IHN0aWxsIGV4aXN0cy4gSWYgdGhlIGhlYXAgZmlsZSBo YXMgZHJvcHBlZCBvcgotCSAqIHRydW5jYXRlZCBsYXRlciBpbiByZWNvdmVyeSwgd2UgZG9uJ3Qg bmVlZCB0byB1cGRhdGUgdGhlIHBhZ2UsIGJ1dCB3ZSdkCi0JICogYmV0dGVyIHN0aWxsIHVwZGF0 ZSB0aGUgdmlzaWJpbGl0eSBtYXAuCi0JICovCi0JYWN0aW9uID0gWExvZ1JlYWRCdWZmZXJGb3JS ZWRvKHJlY29yZCwgMSwgJmJ1ZmZlcik7Ci0JaWYgKGFjdGlvbiA9PSBCTEtfTkVFRFNfUkVETykK LQl7Ci0JCS8qCi0JCSAqIFdlIGRvbid0IGJ1bXAgdGhlIExTTiBvZiB0aGUgaGVhcCBwYWdlIHdo ZW4gc2V0dGluZyB0aGUgdmlzaWJpbGl0eQotCQkgKiBtYXAgYml0ICh1bmxlc3MgY2hlY2tzdW1z IG9yIHdhbF9oaW50X2JpdHMgaXMgZW5hYmxlZCwgaW4gd2hpY2gKLQkJICogY2FzZSB3ZSBtdXN0 KS4gVGhpcyBleHBvc2VzIHVzIHRvIHRvcm4gcGFnZSBoYXphcmRzLCBidXQgc2luY2UKLQkJICog d2UncmUgbm90IGluc3BlY3RpbmcgdGhlIGV4aXN0aW5nIHBhZ2UgY29udGVudHMgaW4gYW55IHdh eSwgd2UKLQkJICogZG9uJ3QgY2FyZS4KLQkJICovCi0JCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1 ZmZlcik7Ci0KLQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0KLQkJaWYgKFhMb2dIaW50Qml0 SXNOZWVkZWQoKSkKLQkJCVBhZ2VTZXRMU04ocGFnZSwgbHNuKTsKLQotCQlNYXJrQnVmZmVyRGly dHkoYnVmZmVyKTsKLQl9Ci0JZWxzZSBpZiAoYWN0aW9uID09IEJMS19SRVNUT1JFRCkKLQl7Ci0J CS8qCi0JCSAqIElmIGhlYXAgYmxvY2sgd2FzIGJhY2tlZCB1cCwgd2UgYWxyZWFkeSByZXN0b3Jl ZCBpdCBhbmQgdGhlcmUncwotCQkgKiBub3RoaW5nIG1vcmUgdG8gZG8uIChUaGlzIGNhbiBvbmx5 IGhhcHBlbiB3aXRoIGNoZWNrc3VtcyBvcgotCQkgKiB3YWxfbG9nX2hpbnRzIGVuYWJsZWQuKQot CQkgKi8KLQl9Ci0KLQlpZiAoQnVmZmVySXNWYWxpZChidWZmZXIpKQotCXsKLQkJU2l6ZQkJc3Bh Y2UgPSBQYWdlR2V0RnJlZVNwYWNlKEJ1ZmZlckdldFBhZ2UoYnVmZmVyKSk7Ci0KLQkJVW5sb2Nr UmVsZWFzZUJ1ZmZlcihidWZmZXIpOwotCi0JCS8qCi0JCSAqIFNpbmNlIEZTTSBpcyBub3QgV0FM LWxvZ2dlZCBhbmQgb25seSB1cGRhdGVkIGhldXJpc3RpY2FsbHksIGl0Ci0JCSAqIGVhc2lseSBi ZWNvbWVzIHN0YWxlIGluIHN0YW5kYnlzLiAgSWYgdGhlIHN0YW5kYnkgaXMgbGF0ZXIgcHJvbW90 ZWQKLQkJICogYW5kIHJ1bnMgVkFDVVVNLCBpdCB3aWxsIHNraXAgdXBkYXRpbmcgaW5kaXZpZHVh bCBmcmVlIHNwYWNlCi0JCSAqIGZpZ3VyZXMgZm9yIHBhZ2VzIHRoYXQgYmVjYW1lIGFsbC12aXNp YmxlIChvciBhbGwtZnJvemVuLCBkZXBlbmRpbmcKLQkJICogb24gdGhlIHZhY3V1bSBtb2RlLCkg d2hpY2ggaXMgdHJvdWJsZXNvbWUgd2hlbiBGcmVlU3BhY2VNYXBWYWN1dW0KLQkJICogcHJvcGFn YXRlcyB0b28gb3B0aW1pc3RpYyBmcmVlIHNwYWNlIHZhbHVlcyB0byB1cHBlciBGU00gbGF5ZXJz OwotCQkgKiBsYXRlciBpbnNlcnRlcnMgdHJ5IHRvIHVzZSBzdWNoIHBhZ2VzIG9ubHkgdG8gZmlu ZCBvdXQgdGhhdCB0aGV5Ci0JCSAqIGFyZSB1bnVzYWJsZS4gIFRoaXMgY2FuIGNhdXNlIGxvbmcg c3RhbGxzIHdoZW4gdGhlcmUgYXJlIG1hbnkgc3VjaAotCQkgKiBwYWdlcy4KLQkJICoKLQkJICog Rm9yZXN0YWxsIHRob3NlIHByb2JsZW1zIGJ5IHVwZGF0aW5nIEZTTSdzIGlkZWEgYWJvdXQgYSBw YWdlIHRoYXQKLQkJICogaXMgYmVjb21pbmcgYWxsLXZpc2libGUgb3IgYWxsLWZyb3plbi4KLQkJ ICoKLQkJICogRG8gdGhpcyByZWdhcmRsZXNzIG9mIGEgZnVsbC1wYWdlIGltYWdlIGJlaW5nIGFw cGxpZWQsIHNpbmNlIHRoZQotCQkgKiBGU00gZGF0YSBpcyBub3QgaW4gdGhlIHBhZ2UgYW55d2F5 LgotCQkgKi8KLQkJaWYgKHhscmVjLT5mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykK LQkJCVhMb2dSZWNvcmRQYWdlV2l0aEZyZWVTcGFjZShybG9jYXRvciwgYmxrbm8sIHNwYWNlKTsK LQl9Ci0KLQkvKgotCSAqIEV2ZW4gaWYgd2Ugc2tpcHBlZCB0aGUgaGVhcCBwYWdlIHVwZGF0ZSBk dWUgdG8gdGhlIExTTiBpbnRlcmxvY2ssIGl0J3MKLQkgKiBzdGlsbCBzYWZlIHRvIHVwZGF0ZSB0 aGUgdmlzaWJpbGl0eSBtYXAuICBBbnkgV0FMIHJlY29yZCB0aGF0IGNsZWFycwotCSAqIHRoZSB2 aXNpYmlsaXR5IG1hcCBiaXQgZG9lcyBzbyBiZWZvcmUgY2hlY2tpbmcgdGhlIHBhZ2UgTFNOLCBz byBhbnkKLQkgKiBiaXRzIHRoYXQgbmVlZCB0byBiZSBjbGVhcmVkIHdpbGwgc3RpbGwgYmUgY2xl YXJlZC4KLQkgKi8KLQlpZiAoWExvZ1JlYWRCdWZmZXJGb3JSZWRvRXh0ZW5kZWQocmVjb3JkLCAw LCBSQk1fWkVST19PTl9FUlJPUiwgZmFsc2UsCi0JCQkJCQkJCQkgICZ2bWJ1ZmZlcikgPT0gQkxL X05FRURTX1JFRE8pCi0JewotCQlQYWdlCQl2bXBhZ2UgPSBCdWZmZXJHZXRQYWdlKHZtYnVmZmVy KTsKLQkJUmVsYXRpb24JcmVsbjsKLQkJdWludDgJCXZtYml0czsKLQotCQkvKiBpbml0aWFsaXpl IHRoZSBwYWdlIGlmIGl0IHdhcyByZWFkIGFzIHplcm9zICovCi0JCWlmIChQYWdlSXNOZXcodm1w YWdlKSkKLQkJCVBhZ2VJbml0KHZtcGFnZSwgQkxDS1NaLCAwKTsKLQotCQkvKiByZW1vdmUgVklT SUJJTElUWU1BUF9YTE9HXyogKi8KLQkJdm1iaXRzID0geGxyZWMtPmZsYWdzICYgVklTSUJJTElU WU1BUF9WQUxJRF9CSVRTOwotCi0JCS8qCi0JCSAqIFhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4dGVu ZGVkIGxvY2tlZCB0aGUgYnVmZmVyLiBCdXQKLQkJICogdmlzaWJpbGl0eW1hcF9zZXQgd2lsbCBo YW5kbGUgbG9ja2luZyBpdHNlbGYuCi0JCSAqLwotCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZG RVJfTE9DS19VTkxPQ0spOwotCi0JCXJlbG4gPSBDcmVhdGVGYWtlUmVsY2FjaGVFbnRyeShybG9j YXRvcik7Ci0KLQkJdmlzaWJpbGl0eW1hcF9zZXQocmVsbiwgYmxrbm8sIEludmFsaWRCdWZmZXIs IGxzbiwgdm1idWZmZXIsCi0JCQkJCQkgIHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwg dm1iaXRzKTsKLQotCQlSZWxlYXNlQnVmZmVyKHZtYnVmZmVyKTsKLQkJRnJlZUZha2VSZWxjYWNo ZUVudHJ5KHJlbG4pOwotCX0KLQllbHNlIGlmIChCdWZmZXJJc1ZhbGlkKHZtYnVmZmVyKSkKLQkJ VW5sb2NrUmVsZWFzZUJ1ZmZlcih2bWJ1ZmZlcik7Ci19Ci0KIC8qCiAgKiBHaXZlbiBhbiAiaW5m b2JpdHMiIGZpZWxkIGZyb20gYW4gWExvZyByZWNvcmQsIHNldCB0aGUgY29ycmVjdCBiaXRzIGlu IHRoZQogICogZ2l2ZW4gaW5mb21hc2sgYW5kIGluZm9tYXNrMiBmb3IgdGhlIHR1cGxlIHRvdWNo ZWQgYnkgdGhlIHJlY29yZC4KQEAgLTc3Nyw4ICs2NDEsOCBAQCBoZWFwX3hsb2dfbXVsdGlfaW5z ZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCSAqCiAJICogRHVyaW5nIHJlY292ZXJ5LCBo b3dldmVyLCBubyBjb25jdXJyZW50IHdyaXRlcnMgZXhpc3QuIFRoZXJlZm9yZSwKIAkgKiB1cGRh dGluZyB0aGUgVk0gd2l0aG91dCBob2xkaW5nIHRoZSBoZWFwIHBhZ2UgbG9jayBpcyBzYWZlIGVu b3VnaC4gVGhpcwotCSAqIHNhbWUgYXBwcm9hY2ggaXMgdGFrZW4gd2hlbiByZXBsYXlpbmcgeGxf aGVhcF92aXNpYmxlIHJlY29yZHMgKHNlZQotCSAqIGhlYXBfeGxvZ192aXNpYmxlKCkpLgorCSAq IHNhbWUgYXBwcm9hY2ggaXMgdGFrZW4gd2hlbiByZXBsYXlpbmcgWExPR19IRUFQMl9QUlVORSog cmVjb3JkcyAoc2VlCisJICogaGVhcF94bG9nX3BydW5lX2FuZF9mcmVlemUoKSkuCiAJICovCiAJ aWYgKCh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9GUk9aRU5fU0VUKSAmJgogCQlYTG9n UmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChyZWNvcmQsIDEsIFJCTV9aRVJPX09OX0VSUk9SLCBm YWxzZSwKQEAgLTc5MCwxMSArNjU0LDExIEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpCiAJCWlmIChQYWdlSXNOZXcodm1wYWdlKSkKIAkJCVBhZ2VJbml0 KHZtcGFnZSwgQkxDS1NaLCAwKTsKIAotCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxrbm8s Ci0JCQkJCQkJCSB2bWJ1ZmZlciwKLQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUg fAotCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOLAotCQkJCQkJCQkgcmxvY2F0b3Ip OworCQl2aXNpYmlsaXR5bWFwX3NldChibGtubywKKwkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkg IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9G Uk9aRU4sCisJCQkJCQkgIHJsb2NhdG9yKTsKIAogCQlBc3NlcnQoQnVmZmVySXNEaXJ0eSh2bWJ1 ZmZlcikpOwogCQlQYWdlU2V0TFNOKHZtcGFnZSwgbHNuKTsKQEAgLTEzNzUsOSArMTIzOSw2IEBA IGhlYXAyX3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCWNhc2UgWExPR19IRUFQMl9Q UlVORV9WQUNVVU1fQ0xFQU5VUDoKIAkJCWhlYXBfeGxvZ19wcnVuZV9mcmVlemUocmVjb3JkKTsK IAkJCWJyZWFrOwotCQljYXNlIFhMT0dfSEVBUDJfVklTSUJMRToKLQkJCWhlYXBfeGxvZ192aXNp YmxlKHJlY29yZCk7Ci0JCQlicmVhazsKIAkJY2FzZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVDoK IAkJCWhlYXBfeGxvZ19tdWx0aV9pbnNlcnQocmVjb3JkKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCA4ZGFmYmQzNDRkOC4uMTQ2OTBjZDYyYWUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0xMDMxLDkgKzEwMzEsOSBAQCBoZWFwX3Bh Z2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQl7CiAJCQlB c3NlcnQoUGFnZUlzQWxsVmlzaWJsZShwYWdlKSk7CiAKLQkJCW9sZF92bWJpdHMgPSB2aXNpYmls aXR5bWFwX3NldF92bWJpdHMoYmxvY2tubywKLQkJCQkJCQkJCQkJCSAgdm1idWZmZXIsIG5ld192 bWJpdHMsCi0JCQkJCQkJCQkJCQkgIHBhcmFtcy0+cmVsYXRpb24tPnJkX2xvY2F0b3IpOworCQkJ b2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0KGJsb2Nrbm8sCisJCQkJCQkJCQkJICAgdm1i dWZmZXIsIG5ld192bWJpdHMsCisJCQkJCQkJCQkJICAgcGFyYW1zLT5yZWxhdGlvbi0+cmRfbG9j YXRvcik7CiAJCQlpZiAob2xkX3ZtYml0cyA9PSBuZXdfdm1iaXRzKQogCQkJewogCQkJCUxvY2tC dWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CkBAIC0yMzA5LDE0ICsyMzA5LDE4 IEBAIGdldF9jb25mbGljdF94aWQoYm9vbCBkb19wcnVuZSwgYm9vbCBkb19mcmVlemUsIGJvb2wg ZG9fc2V0X3ZtLAogICoKICAqIFRoaXMgaXMgdXNlZCBmb3Igc2V2ZXJhbCBkaWZmZXJlbnQgcGFn ZSBtYWludGVuYW5jZSBvcGVyYXRpb25zOgogICoKLSAqIC0gUGFnZSBwcnVuaW5nLCBpbiBWQUNV VU0ncyAxc3QgcGFzcyBvciBvbiBhY2Nlc3M6IFNvbWUgaXRlbXMgYXJlCisgKiAtIFBhZ2UgcHJ1 bmluZywgaW4gdmFjdXVtIHBoYXNlIEkgb3Igb24tYWNjZXNzOiBTb21lIGl0ZW1zIGFyZQogICog ICByZWRpcmVjdGVkLCBzb21lIG1hcmtlZCBkZWFkLCBhbmQgc29tZSByZW1vdmVkIGFsdG9nZXRo ZXIuCiAgKgotICogLSBGcmVlemluZzogSXRlbXMgYXJlIG1hcmtlZCBhcyAnZnJvemVuJy4KKyAq IC0gRnJlZXppbmc6IER1cmluZyB2YWN1dW0gcGhhc2UgSSwgaXRlbXMgYXJlIG1hcmtlZCBhcyAn ZnJvemVuJwogICoKLSAqIC0gVmFjdXVtLCAybmQgcGFzczogSXRlbXMgdGhhdCBhcmUgYWxyZWFk eSBMUF9ERUFEIGFyZSBtYXJrZWQgYXMgdW51c2VkLgorICogLSBSZWFwaW5nOiBEdXJpbmcgdmFj dXVtIHBoYXNlIElJSSwgaXRlbXMgdGhhdCBhcmUgYWxyZWFkeSBMUF9ERUFEIGFyZQorICogICBt YXJrZWQgYXMgdW51c2VkLgogICoKLSAqIFRoZXkgaGF2ZSBlbm91Z2ggY29tbW9uYWxpdGllcyB0 aGF0IHdlIHVzZSBhIHNpbmdsZSBXQUwgcmVjb3JkIGZvciB0aGVtCisgKiAtIFZNIHVwZGF0ZXM6 IEFmdGVyIHZhY3V1bSBwaGFzZXMgSSBhbmQgSUlJLCB0aGUgaGVhcCBwYWdlIG1heSBiZSBtYXJr ZWQKKyAqICAgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4uCisgKgorICogVGhlc2UgY2hhbmdl cyBhbGwgaGFwcGVuIHRvZ2V0aGVyLCBzbyB3ZSB1c2UgYSBzaW5nbGUgV0FMIHJlY29yZCBmb3Ig dGhlbQogICogYWxsLgogICoKICAqIElmIHJlcGxheWluZyB0aGUgcmVjb3JkIHJlcXVpcmVzIGEg Y2xlYW51cCBsb2NrLCBwYXNzIGNsZWFudXBfbG9jayA9IHRydWUuCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKaW5kZXggOGM0MDJiNWIxZDQuLmZmNmYwZDFkMGFmIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0xOTAxLDExICsxOTAxLDExIEBAIGxhenlfc2Nh bl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLCBCbG9ja051bWJl ciBibGtubywKIAkJCQlsb2dfbmV3cGFnZV9idWZmZXIoYnVmLCB0cnVlKTsKIAogCQkJUGFnZVNl dEFsbFZpc2libGUocGFnZSk7Ci0JCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxrbm8sCi0J CQkJCQkJCQkgdm1idWZmZXIsCi0JCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8 Ci0JCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOLAotCQkJCQkJCQkJIHZhY3JlbC0+ cmVsLT5yZF9sb2NhdG9yKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0KGJsa25vLAorCQkJCQkJCSAg dm1idWZmZXIsCisJCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkg IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJCQkJCQkgIHZhY3JlbC0+cmVsLT5yZF9sb2Nh dG9yKTsKIAogCQkJLyoKIAkJCSAqIEVtaXQgV0FMIGZvciBzZXR0aW5nIFBEX0FMTF9WSVNJQkxF IG9uIHRoZSBoZWFwIHBhZ2UgYW5kCkBAIC0yNzg3LDkgKzI3ODcsOSBAQCBsYXp5X3ZhY3V1bV9o ZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1 ZmZlciwKIAkJICogc2V0IFBEX0FMTF9WSVNJQkxFLgogCQkgKi8KIAkJUGFnZVNldEFsbFZpc2li bGUocGFnZSk7Ci0JCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKLQkJCQkJCQkJIHZt YnVmZmVyLCB2bWZsYWdzLAotCQkJCQkJCQkgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOworCQl2 aXNpYmlsaXR5bWFwX3NldChibGtubywKKwkJCQkJCSAgdm1idWZmZXIsIHZtZmxhZ3MsCisJCQkJ CQkgIHZhY3JlbC0+cmVsLT5yZF9sb2NhdG9yKTsKIAkJY29uZmxpY3RfeGlkID0gdmlzaWJpbGl0 eV9jdXRvZmZfeGlkOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmlzaWJpbGl0eW1hcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5j CmluZGV4IDJmNWU2MWUyMzkyLi5hNzViNWJiNmIxMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3Zpc2liaWxpdHltYXAuYwpAQCAtMTQsOCArMTQsNyBAQAogICoJCXZpc2liaWxpdHltYXBfY2xl YXIgIC0gY2xlYXIgYml0cyBmb3Igb25lIHBhZ2UgaW4gdGhlIHZpc2liaWxpdHkgbWFwCiAgKgkJ dmlzaWJpbGl0eW1hcF9waW4JIC0gcGluIGEgbWFwIHBhZ2UgZm9yIHNldHRpbmcgYSBiaXQKICAq CQl2aXNpYmlsaXR5bWFwX3Bpbl9vayAtIGNoZWNrIHdoZXRoZXIgY29ycmVjdCBtYXAgcGFnZSBp cyBhbHJlYWR5IHBpbm5lZAotICoJCXZpc2liaWxpdHltYXBfc2V0CSAtIHNldCBiaXQocykgaW4g YSBwcmV2aW91c2x5IHBpbm5lZCBwYWdlIGFuZCBsb2cKLSAqCQl2aXNpYmlsaXR5bWFwX3NldF92 bWJpdHMgLSBzZXQgYml0KHMpIGluIGEgcGlubmVkIHBhZ2UKKyAqCQl2aXNpYmlsaXR5bWFwX3Nl dAkgLSBzZXQgYml0KHMpIGluIGEgcHJldmlvdXNseSBwaW5uZWQgcGFnZQogICoJCXZpc2liaWxp dHltYXBfZ2V0X3N0YXR1cyAtIGdldCBzdGF0dXMgb2YgYml0cwogICoJCXZpc2liaWxpdHltYXBf Y291bnQgIC0gY291bnQgbnVtYmVyIG9mIGJpdHMgc2V0IGluIHZpc2liaWxpdHkgbWFwCiAgKgkJ dmlzaWJpbGl0eW1hcF9wcmVwYXJlX3RydW5jYXRlIC0KQEAgLTIyMCwxMDggKzIxOSw2IEBAIHZp c2liaWxpdHltYXBfcGluX29rKEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciB2bWJ1ZikKIAly ZXR1cm4gQnVmZmVySXNWYWxpZCh2bWJ1ZikgJiYgQnVmZmVyR2V0QmxvY2tOdW1iZXIodm1idWYp ID09IG1hcEJsb2NrOwogfQogCi0vKgotICoJdmlzaWJpbGl0eW1hcF9zZXQgLSBzZXQgYml0KHMp IG9uIGEgcHJldmlvdXNseSBwaW5uZWQgcGFnZQotICoKLSAqIHJlY3B0ciBpcyB0aGUgTFNOIG9m IHRoZSBYTE9HIHJlY29yZCB3ZSdyZSByZXBsYXlpbmcsIGlmIHdlJ3JlIGluIHJlY292ZXJ5LAot ICogb3IgSW52YWxpZFhMb2dSZWNQdHIgaW4gbm9ybWFsIHJ1bm5pbmcuICBUaGUgVk0gcGFnZSBM U04gaXMgYWR2YW5jZWQgdG8gdGhlCi0gKiBvbmUgcHJvdmlkZWQ7IGluIG5vcm1hbCBydW5uaW5n LCB3ZSBnZW5lcmF0ZSBhIG5ldyBYTE9HIHJlY29yZCBhbmQgc2V0IHRoZQotICogcGFnZSBMU04g dG8gdGhhdCB2YWx1ZSAodGhvdWdoIHRoZSBoZWFwIHBhZ2UncyBMU04gbWF5ICpub3QqIGJlIHVw ZGF0ZWQ7Ci0gKiBzZWUgYmVsb3cpLiAgY3V0b2ZmX3hpZCBpcyB0aGUgbGFyZ2VzdCB4bWluIG9u IHRoZSBwYWdlIGJlaW5nIG1hcmtlZAotICogYWxsLXZpc2libGU7IGl0IGlzIG5lZWRlZCBmb3Ig SG90IFN0YW5kYnksIGFuZCBjYW4gYmUgSW52YWxpZFRyYW5zYWN0aW9uSWQKLSAqIGlmIHRoZSBw YWdlIGNvbnRhaW5zIG5vIHR1cGxlcy4gIEl0IGNhbiBhbHNvIGJlIHNldCB0byBJbnZhbGlkVHJh bnNhY3Rpb25JZAotICogd2hlbiBhIHBhZ2UgdGhhdCBpcyBhbHJlYWR5IGFsbC12aXNpYmxlIGlz IGJlaW5nIG1hcmtlZCBhbGwtZnJvemVuLgotICoKLSAqIENhbGxlciBpcyBleHBlY3RlZCB0byBz ZXQgdGhlIGhlYXAgcGFnZSdzIFBEX0FMTF9WSVNJQkxFIGJpdCBiZWZvcmUgY2FsbGluZwotICog dGhpcyBmdW5jdGlvbi4gRXhjZXB0IGluIHJlY292ZXJ5LCBjYWxsZXIgc2hvdWxkIGFsc28gcGFz cyB0aGUgaGVhcAotICogYnVmZmVyLiBXaGVuIGNoZWNrc3VtcyBhcmUgZW5hYmxlZCBhbmQgd2Un cmUgbm90IGluIHJlY292ZXJ5LCB3ZSBtdXN0IGFkZAotICogdGhlIGhlYXAgYnVmZmVyIHRvIHRo ZSBXQUwgY2hhaW4gdG8gcHJvdGVjdCBpdCBmcm9tIGJlaW5nIHRvcm4uCi0gKgotICogWW91IG11 c3QgcGFzcyBhIGJ1ZmZlciBjb250YWluaW5nIHRoZSBjb3JyZWN0IG1hcCBwYWdlIHRvIHRoaXMg ZnVuY3Rpb24uCi0gKiBDYWxsIHZpc2liaWxpdHltYXBfcGluIGZpcnN0IHRvIHBpbiB0aGUgcmln aHQgb25lLiBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgZG8KLSAqIGFueSBJL08uCi0gKgotICogUmV0 dXJucyB0aGUgc3RhdGUgb2YgdGhlIHBhZ2UncyBWTSBiaXRzIGJlZm9yZSBzZXR0aW5nIGZsYWdz LgotICovCi11aW50OAotdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJl ciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKLQkJCQkgIFhMb2dSZWNQdHIgcmVjcHRyLCBCdWZm ZXIgdm1CdWYsIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKLQkJCQkgIHVpbnQ4IGZsYWdzKQot ewotCUJsb2NrTnVtYmVyIG1hcEJsb2NrID0gSEVBUEJMS19UT19NQVBCTE9DSyhoZWFwQmxrKTsK LQl1aW50MzIJCW1hcEJ5dGUgPSBIRUFQQkxLX1RPX01BUEJZVEUoaGVhcEJsayk7Ci0JdWludDgJ CW1hcE9mZnNldCA9IEhFQVBCTEtfVE9fT0ZGU0VUKGhlYXBCbGspOwotCVBhZ2UJCXBhZ2U7Ci0J dWludDgJICAgKm1hcDsKLQl1aW50OAkJc3RhdHVzOwotCi0jaWZkZWYgVFJBQ0VfVklTSUJJTElU WU1BUAotCWVsb2coREVCVUcxLCAidm1fc2V0IGZsYWdzIDB4JTAyWCBmb3IgJXMgJWQiLAotCQkg ZmxhZ3MsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksIGhlYXBCbGspOwotI2VuZGlmCi0K LQlBc3NlcnQoSW5SZWNvdmVyeSB8fCBYTG9nUmVjUHRySXNJbnZhbGlkKHJlY3B0cikpOwotCUFz c2VydChJblJlY292ZXJ5IHx8IFBhZ2VJc0FsbFZpc2libGUoQnVmZmVyR2V0UGFnZShoZWFwQnVm KSkpOwotCUFzc2VydCgoZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpID09IGZsYWdz KTsKLQotCS8qIE11c3QgbmV2ZXIgc2V0IGFsbF9mcm96ZW4gYml0IHdpdGhvdXQgYWxzbyBzZXR0 aW5nIGFsbF92aXNpYmxlIGJpdCAqLwotCUFzc2VydChmbGFncyAhPSBWSVNJQklMSVRZTUFQX0FM TF9GUk9aRU4pOwotCi0JLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSByaWdodCBoZWFwIHBhZ2Ug cGlubmVkLCBpZiBwcmVzZW50ICovCi0JaWYgKEJ1ZmZlcklzVmFsaWQoaGVhcEJ1ZikgJiYgQnVm ZmVyR2V0QmxvY2tOdW1iZXIoaGVhcEJ1ZikgIT0gaGVhcEJsaykKLQkJZWxvZyhFUlJPUiwgIndy b25nIGhlYXAgYnVmZmVyIHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCIpOwotCi0JQXNzZXJ0 KCFCdWZmZXJJc1ZhbGlkKGhlYXBCdWYpIHx8Ci0JCSAgIEJ1ZmZlcklzTG9ja2VkQnlNZUluTW9k ZShoZWFwQnVmLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpKTsKLQotCS8qIENoZWNrIHRoYXQgd2Ug aGF2ZSB0aGUgcmlnaHQgVk0gcGFnZSBwaW5uZWQgKi8KLQlpZiAoIUJ1ZmZlcklzVmFsaWQodm1C dWYpIHx8IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHZtQnVmKSAhPSBtYXBCbG9jaykKLQkJZWxvZyhF UlJPUiwgIndyb25nIFZNIGJ1ZmZlciBwYXNzZWQgdG8gdmlzaWJpbGl0eW1hcF9zZXQiKTsKLQot CXBhZ2UgPSBCdWZmZXJHZXRQYWdlKHZtQnVmKTsKLQltYXAgPSAodWludDggKikgUGFnZUdldENv bnRlbnRzKHBhZ2UpOwotCUxvY2tCdWZmZXIodm1CdWYsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7 Ci0KLQlzdGF0dXMgPSAobWFwW21hcEJ5dGVdID4+IG1hcE9mZnNldCkgJiBWSVNJQklMSVRZTUFQ X1ZBTElEX0JJVFM7Ci0JaWYgKGZsYWdzICE9IHN0YXR1cykKLQl7Ci0JCVNUQVJUX0NSSVRfU0VD VElPTigpOwotCi0JCW1hcFttYXBCeXRlXSB8PSAoZmxhZ3MgPDwgbWFwT2Zmc2V0KTsKLQkJTWFy a0J1ZmZlckRpcnR5KHZtQnVmKTsKLQotCQlpZiAoUmVsYXRpb25OZWVkc1dBTChyZWwpKQotCQl7 Ci0JCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChyZWNwdHIpKQotCQkJewotCQkJCUFzc2VydCgh SW5SZWNvdmVyeSk7Ci0JCQkJcmVjcHRyID0gbG9nX2hlYXBfdmlzaWJsZShyZWwsIGhlYXBCdWYs IHZtQnVmLCBjdXRvZmZfeGlkLCBmbGFncyk7Ci0KLQkJCQkvKgotCQkJCSAqIElmIGRhdGEgY2hl Y2tzdW1zIGFyZSBlbmFibGVkIChvciB3YWxfbG9nX2hpbnRzPW9uKSwgd2UKLQkJCQkgKiBuZWVk IHRvIHByb3RlY3QgdGhlIGhlYXAgcGFnZSBmcm9tIGJlaW5nIHRvcm4uCi0JCQkJICoKLQkJCQkg KiBJZiBub3QsIHRoZW4gd2UgbXVzdCAqbm90KiB1cGRhdGUgdGhlIGhlYXAgcGFnZSdzIExTTi4g SW4KLQkJCQkgKiB0aGlzIGNhc2UsIHRoZSBGUEkgZm9yIHRoZSBoZWFwIHBhZ2Ugd2FzIG9taXR0 ZWQgZnJvbSB0aGUKLQkJCQkgKiBXQUwgcmVjb3JkIGluc2VydGVkIGFib3ZlLCBzbyBpdCB3b3Vs ZCBiZSBpbmNvcnJlY3QgdG8KLQkJCQkgKiB1cGRhdGUgdGhlIGhlYXAgcGFnZSdzIExTTi4KLQkJ CQkgKi8KLQkJCQlpZiAoWExvZ0hpbnRCaXRJc05lZWRlZCgpKQotCQkJCXsKLQkJCQkJUGFnZQkJ aGVhcFBhZ2UgPSBCdWZmZXJHZXRQYWdlKGhlYXBCdWYpOwotCi0JCQkJCVBhZ2VTZXRMU04oaGVh cFBhZ2UsIHJlY3B0cik7Ci0JCQkJfQotCQkJfQotCQkJUGFnZVNldExTTihwYWdlLCByZWNwdHIp OwotCQl9Ci0KLQkJRU5EX0NSSVRfU0VDVElPTigpOwotCX0KLQotCUxvY2tCdWZmZXIodm1CdWYs IEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0JcmV0dXJuIHN0YXR1czsKLX0KIAogLyoKICAqIFNldCBW TSAodmlzaWJpbGl0eSBtYXApIGZsYWdzIGluIHRoZSBWTSBibG9jayBpbiB2bUJ1Zi4KQEAgLTM0 NCw5ICsyNDEsOSBAQCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVy IGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAogICogcmxvY2F0b3IgaXMgdXNlZCBvbmx5IGZvciBk ZWJ1Z2dpbmcgbWVzc2FnZXMuCiAgKi8KIHVpbnQ4Ci12aXNpYmlsaXR5bWFwX3NldF92bWJpdHMo QmxvY2tOdW1iZXIgaGVhcEJsaywKLQkJCQkJCSBCdWZmZXIgdm1CdWYsIHVpbnQ4IGZsYWdzLAot CQkJCQkJIGNvbnN0IFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yKQordmlzaWJpbGl0eW1hcF9zZXQo QmxvY2tOdW1iZXIgaGVhcEJsaywKKwkJCQkgIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3MsCisJ CQkJICBjb25zdCBSZWxGaWxlTG9jYXRvciBybG9jYXRvcikKIHsKIAlCbG9ja051bWJlciBtYXBC bG9jayA9IEhFQVBCTEtfVE9fTUFQQkxPQ0soaGVhcEJsayk7CiAJdWludDMyCQltYXBCeXRlID0g SEVBUEJMS19UT19NQVBCWVRFKGhlYXBCbGspOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVh cGRlc2MuYwppbmRleCBjYTI2ZDFmMGVkMS4uMDg0NjFmZGY1OTMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9ybWdyZGVzYy9oZWFwZGVzYy5jCkBAIC0zNDksMTMgKzM0OSw2IEBAIGhlYXAyX2Rlc2MoU3Ry aW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJfQogCQl9CiAJfQotCWVs c2UgaWYgKGluZm8gPT0gWExPR19IRUFQMl9WSVNJQkxFKQotCXsKLQkJeGxfaGVhcF92aXNpYmxl ICp4bHJlYyA9ICh4bF9oZWFwX3Zpc2libGUgKikgcmVjOwotCi0JCWFwcGVuZFN0cmluZ0luZm8o YnVmLCAic25hcHNob3RDb25mbGljdEhvcml6b246ICV1LCBmbGFnczogMHglMDJYIiwKLQkJCQkJ CSB4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sIHhscmVjLT5mbGFncyk7Ci0JfQogCWVs c2UgaWYgKGluZm8gPT0gWExPR19IRUFQMl9NVUxUSV9JTlNFUlQpCiAJewogCQl4bF9oZWFwX211 bHRpX2luc2VydCAqeGxyZWMgPSAoeGxfaGVhcF9tdWx0aV9pbnNlcnQgKikgcmVjOwpAQCAtNDYx LDkgKzQ1NCw2IEBAIGhlYXAyX2lkZW50aWZ5KHVpbnQ4IGluZm8pCiAJCWNhc2UgWExPR19IRUFQ Ml9QUlVORV9WQUNVVU1fQ0xFQU5VUDoKIAkJCWlkID0gIlBSVU5FX1ZBQ1VVTV9DTEVBTlVQIjsK IAkJCWJyZWFrOwotCQljYXNlIFhMT0dfSEVBUDJfVklTSUJMRToKLQkJCWlkID0gIlZJU0lCTEUi OwotCQkJYnJlYWs7CiAJCWNhc2UgWExPR19IRUFQMl9NVUxUSV9JTlNFUlQ6CiAJCQlpZCA9ICJN VUxUSV9JTlNFUlQiOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2RlY29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9k ZWNvZGUuYwppbmRleCBjYzAzZjA3MDZlOS4uMmZkZDRhZjkwYTggMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwpAQCAtNDU0LDcgKzQ1NCw2IEBAIGhlYXAyX2RlY29k ZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZikKIAkJ Y2FzZSBYTE9HX0hFQVAyX1BSVU5FX09OX0FDQ0VTUzoKIAkJY2FzZSBYTE9HX0hFQVAyX1BSVU5F X1ZBQ1VVTV9TQ0FOOgogCQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX0NMRUFOVVA6Ci0J CWNhc2UgWExPR19IRUFQMl9WSVNJQkxFOgogCQljYXNlIFhMT0dfSEVBUDJfTE9DS19VUERBVEVE OgogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9zdGFuZGJ5LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKaW5kZXgg NDIyMmJkYWIwNzguLmM2MTk2NDNlMTIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9zdGFuZGJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCkBA IC00NzUsMTIgKzQ3NSwxMiBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChU cmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAogCSAqIElmIHdlIGdldCBwYXNz ZWQgSW52YWxpZFRyYW5zYWN0aW9uSWQgdGhlbiB3ZSBkbyBub3RoaW5nIChubyBjb25mbGljdCku CiAJICoKIAkgKiBUaGlzIGNhbiBoYXBwZW4gd2hlbiByZXBsYXlpbmcgYWxyZWFkeS1hcHBsaWVk IFdBTCByZWNvcmRzIGFmdGVyIGEKLQkgKiBzdGFuZGJ5IGNyYXNoIG9yIHJlc3RhcnQsIG9yIHdo ZW4gcmVwbGF5aW5nIGFuIFhMT0dfSEVBUDJfVklTSUJMRQotCSAqIHJlY29yZCB0aGF0IG1hcmtz IGFzIGZyb3plbiBhIHBhZ2Ugd2hpY2ggd2FzIGFscmVhZHkgYWxsLXZpc2libGUuICBJdCdzCi0J ICogYWxzbyBxdWl0ZSBjb21tb24gd2l0aCByZWNvcmRzIGdlbmVyYXRlZCBkdXJpbmcgaW5kZXgg ZGVsZXRpb24KLQkgKiAob3JpZ2luYWwgZXhlY3V0aW9uIG9mIHRoZSBkZWxldGlvbiBjYW4gcmVh c29uIHRoYXQgYSByZWNvdmVyeSBjb25mbGljdAotCSAqIHdoaWNoIGlzIHN1ZmZpY2llbnQgZm9y IHRoZSBkZWxldGlvbiBvcGVyYXRpb24gbXVzdCB0YWtlIHBsYWNlIGJlZm9yZQotCSAqIHJlcGxh eSBvZiB0aGUgZGVsZXRpb24gcmVjb3JkIGl0c2VsZikuCisJICogc3RhbmRieSBjcmFzaCBvciBy ZXN0YXJ0LCBvciB3aGVuIHJlcGxheWluZyBhIHJlY29yZCB0aGF0IG1hcmtzIGFzCisJICogZnJv emVuIGEgcGFnZSB3aGljaCB3YXMgYWxyZWFkeSBtYXJrZWQgYWxsLXZpc2libGUgaW4gdGhlIHZp c2liaWxpdHkKKwkgKiBtYXAuICBJdCdzIGFsc28gcXVpdGUgY29tbW9uIHdpdGggcmVjb3JkcyBn ZW5lcmF0ZWQgZHVyaW5nIGluZGV4CisJICogZGVsZXRpb24gKG9yaWdpbmFsIGV4ZWN1dGlvbiBv ZiB0aGUgZGVsZXRpb24gY2FuIHJlYXNvbiB0aGF0IGEgcmVjb3ZlcnkKKwkgKiBjb25mbGljdCB3 aGljaCBpcyBzdWZmaWNpZW50IGZvciB0aGUgZGVsZXRpb24gb3BlcmF0aW9uIG11c3QgdGFrZSBw bGFjZQorCSAqIGJlZm9yZSByZXBsYXkgb2YgdGhlIGRlbGV0aW9uIHJlY29yZCBpdHNlbGYpLgog CSAqLwogCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoc25hcHNob3RDb25mbGljdEhvcml6b24p KQogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cu aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCmluZGV4IDE2YzJiMmUzYzljLi5l OWU3N2JkNjc4YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAgLTYwLDcgKzYwLDYgQEAK ICNkZWZpbmUgWExPR19IRUFQMl9QUlVORV9PTl9BQ0NFU1MJCTB4MTAKICNkZWZpbmUgWExPR19I RUFQMl9QUlVORV9WQUNVVU1fU0NBTgkweDIwCiAjZGVmaW5lIFhMT0dfSEVBUDJfUFJVTkVfVkFD VVVNX0NMRUFOVVAJMHgzMAotI2RlZmluZSBYTE9HX0hFQVAyX1ZJU0lCTEUJCTB4NDAKICNkZWZp bmUgWExPR19IRUFQMl9NVUxUSV9JTlNFUlQgMHg1MAogI2RlZmluZSBYTE9HX0hFQVAyX0xPQ0tf VVBEQVRFRCAweDYwCiAjZGVmaW5lIFhMT0dfSEVBUDJfTkVXX0NJRAkJMHg3MApAQCAtMjk0LDcg KzI5MywxMyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3BydW5lCiAKICNkZWZpbmUgU2l6ZU9m SGVhcFBydW5lIChvZmZzZXRvZih4bF9oZWFwX3BydW5lLCBmbGFncykgKyBzaXplb2YodWludDE2 KSkKIAotLyogdG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsIGRlY29k aW5nIG9uIHN0YW5kYnkgKi8KKy8qCisgKiBUbyBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVy aW5nIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSwgd2UgbXVzdCBrbm93CisgKiBpZiB0aGUg dGFibGUgaXMgYSBjYXRhbG9nIHRhYmxlLiBOb3RlIHRoYXQgaW4gdmlzaWJpbGl0eW1hcGRlZnMu aAorICogVklTSUJMSVRZTUFQX1hMT0dfQ0FUQUxPR19SRUwgaXMgYWxzbyBkZWZpbmVkIGFzICgx IDw8IDIpLiB4bF9oZWFwX3BydW5lCisgKiByZWNvcmRzIHNob3VsZCB1c2UgWExIUF9JU19DQVRB TE9HX1JFTCwgbm90IFZJU0lCSUxJWVRNQVBfWExPR19DQVRBTE9HX1JFTCAtLQorICogZXZlbiBp ZiB0aGV5IG9ubHkgY29udGFpbiB1cGRhdGVzIHRvIHRoZSBWTS4KKyAqLwogI2RlZmluZQkJWExI UF9JU19DQVRBTE9HX1JFTAkJCSgxIDw8IDEpCiAKIC8qCkBAIC00NDMsMjAgKzQ0OCw2IEBAIHR5 cGVkZWYgc3RydWN0IHhsX2hlYXBfaW5wbGFjZQogCiAjZGVmaW5lIE1pblNpemVPZkhlYXBJbnBs YWNlCShvZmZzZXRvZih4bF9oZWFwX2lucGxhY2UsIG5tc2dzKSArIHNpemVvZihpbnQpKQogCi0v KgotICogVGhpcyBpcyB3aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCBzZXR0aW5nIGEgdmlzaWJp bGl0eSBtYXAgYml0Ci0gKgotICogQmFja3VwIGJsayAwOiB2aXNpYmlsaXR5IG1hcCBidWZmZXIK LSAqIEJhY2t1cCBibGsgMTogaGVhcCBidWZmZXIKLSAqLwotdHlwZWRlZiBzdHJ1Y3QgeGxfaGVh cF92aXNpYmxlCi17Ci0JVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKLQl1 aW50OAkJZmxhZ3M7Ci19IHhsX2hlYXBfdmlzaWJsZTsKLQotI2RlZmluZSBTaXplT2ZIZWFwVmlz aWJsZSAob2Zmc2V0b2YoeGxfaGVhcF92aXNpYmxlLCBmbGFncykgKyBzaXplb2YodWludDgpKQot CiB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX25ld19jaWQKIHsKIAkvKgpAQCAtNTAwLDExICs0OTEs NiBAQCBleHRlcm4gdm9pZCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3Rh dGUgKnJlY29yZCk7CiBleHRlcm4gY29uc3QgY2hhciAqaGVhcDJfaWRlbnRpZnkodWludDggaW5m byk7CiBleHRlcm4gdm9pZCBoZWFwX3hsb2dfbG9naWNhbF9yZXdyaXRlKFhMb2dSZWFkZXJTdGF0 ZSAqcik7CiAKLWV4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVs LCBCdWZmZXIgaGVhcF9idWZmZXIsCi0JCQkJCQkJCSAgIEJ1ZmZlciB2bV9idWZmZXIsCi0JCQkJ CQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCi0JCQkJCQkJCSAg IHVpbnQ4IHZtZmxhZ3MpOwotCiAvKiBpbiBoZWFwZGVzYy5jLCBzbyBpdCBjYW4gYmUgc2hhcmVk IGJldHdlZW4gZnJvbnRlbmQvYmFja2VuZCBjb2RlICovCiBleHRlcm4gdm9pZCBoZWFwX3hsb2df ZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShjaGFyICpjdXJzb3IsIHVpbnQxNiBmbGFncywK IAkJCQkJCQkJCQkJCSAgIGludCAqbnBsYW5zLCB4bGhwX2ZyZWV6ZV9wbGFuICoqcGxhbnMsCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaAppbmRleCBjNmZhMzdiZTk2OC4uMDViYTY3ODZiNDcg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaApAQCAtMTUsNyArMTUsNiBAQAogI2RlZmlu ZSBWSVNJQklMSVRZTUFQX0gKIAogI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5o IgotI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYmxvY2su aCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcmVsZmlsZWxv Y2F0b3IuaCIKQEAgLTMyLDE1ICszMSw5IEBAIGV4dGVybiBib29sIHZpc2liaWxpdHltYXBfY2xl YXIoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAogZXh0ZXJuIHZvaWQgdmlzaWJp bGl0eW1hcF9waW4oUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAogCQkJCQkJCSAg QnVmZmVyICp2bWJ1Zik7CiBleHRlcm4gYm9vbCB2aXNpYmlsaXR5bWFwX3Bpbl9vayhCbG9ja051 bWJlciBoZWFwQmxrLCBCdWZmZXIgdm1idWYpOwotZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBf c2V0KFJlbGF0aW9uIHJlbCwKLQkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIg aGVhcEJ1ZiwKLQkJCQkJCQkgICBYTG9nUmVjUHRyIHJlY3B0ciwKLQkJCQkJCQkgICBCdWZmZXIg dm1CdWYsCi0JCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkLAotCQkJCQkJCSAgIHVp bnQ4IGZsYWdzKTsKLWV4dGVybiB1aW50OCB2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoQmxvY2tO dW1iZXIgaGVhcEJsaywKLQkJCQkJCQkJCSAgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncywKLQkJ CQkJCQkJCSAgY29uc3QgUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IpOworZXh0ZXJuIHVpbnQ4IHZp c2liaWxpdHltYXBfc2V0KEJsb2NrTnVtYmVyIGhlYXBCbGssCisJCQkJCQkJICAgQnVmZmVyIHZt QnVmLCB1aW50OCBmbGFncywKKwkJCQkJCQkgICBjb25zdCBSZWxGaWxlTG9jYXRvciBybG9jYXRv cik7CiBleHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKFJlbGF0aW9uIHJlbCwg QmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyICp2bWJ1Zik7CiBleHRlcm4gdm9pZCB2aXNpYmls aXR5bWFwX2NvdW50KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgKmFsbF92aXNpYmxlLCBCbG9j a051bWJlciAqYWxsX2Zyb3plbik7CiBleHRlcm4gQmxvY2tOdW1iZXIgdmlzaWJpbGl0eW1hcF9w cmVwYXJlX3RydW5jYXRlKFJlbGF0aW9uIHJlbCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHlt YXBkZWZzLmgKaW5kZXggNWFkNWMwMjA4NzcuLmUwMWJjZTRjOTlmIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nl c3MvdmlzaWJpbGl0eW1hcGRlZnMuaApAQCAtMjEsMTQgKzIxLDUgQEAKICNkZWZpbmUgVklTSUJJ TElUWU1BUF9BTExfRlJPWkVOCTB4MDIKICNkZWZpbmUgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRT CTB4MDMJLyogT1Igb2YgYWxsIHZhbGlkIHZpc2liaWxpdHltYXAKIAkJCQkJCQkJCQkJICogZmxh Z3MgYml0cyAqLwotLyoKLSAqIFRvIGRldGVjdCByZWNvdmVyeSBjb25mbGljdHMgZHVyaW5nIGxv Z2ljYWwgZGVjb2Rpbmcgb24gYSBzdGFuZGJ5LCB3ZSBuZWVkCi0gKiB0byBrbm93IGlmIGEgdGFi bGUgaXMgYSB1c2VyIGNhdGFsb2cgdGFibGUuIEZvciB0aGF0IHdlIGFkZCBhbiBhZGRpdGlvbmFs Ci0gKiBiaXQgaW50byB4bF9oZWFwX3Zpc2libGUuZmxhZ3MsIGluIGFkZGl0aW9uIHRvIHRoZSBh Ym92ZS4KLSAqCi0gKiBOQjogVklTSUJJTElUWU1BUF9YTE9HXyogbWF5IG5vdCBiZSBwYXNzZWQg dG8gdmlzaWJpbGl0eW1hcF9zZXQoKS4KLSAqLwotI2RlZmluZSBWSVNJQklMSVRZTUFQX1hMT0df Q0FUQUxPR19SRUwJMHgwNAotI2RlZmluZSBWSVNJQklMSVRZTUFQX1hMT0dfVkFMSURfQklUUwko VklTSUJJTElUWU1BUF9WQUxJRF9CSVRTIHwgVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVM KQogCiAjZW5kaWYJCQkJCQkJLyogVklTSUJJTElUWU1BUERFRlNfSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdAppbmRleCBhMzg0MTcxZGUwZC4uNmI0YTQwZjYxNmMgMTAwNjQ0Ci0tLSBhL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CkBAIC00MjgxLDcgKzQyODEsNiBAQCB4bF9oZWFwX3BydW5lCiB4bF9oZWFw X3Jld3JpdGVfbWFwcGluZwogeGxfaGVhcF90cnVuY2F0ZQogeGxfaGVhcF91cGRhdGUKLXhsX2hl YXBfdmlzaWJsZQogeGxfaW52YWxpZF9wYWdlCiB4bF9pbnZhbGlkX3BhZ2Vfa2V5CiB4bF9pbnZh bGlkYXRpb25zCi0tIAoyLjQzLjAKCg== --000000000000fb0f430642c7990f Content-Type: text/x-patch; charset="UTF-8"; name="v19-0007-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Disposition: attachment; filename="v19-0007-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhkswpox6 RnJvbSA0NGUwZDMwYTM2NzJhMjgxODdlMGZiMWRhMDE0ZjA1NzQ3YzAwZDI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBGcmksIDE4IEp1bCAyMDI1IDE2OjMwOjA0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTkgMDcvMTJdIFJlbmFtZSBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoKSB0bwog R2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBl OiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhi aXQKClRoZSBmdW5jdGlvbiBpcyBjdXJyZW50bHkgb25seSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIg YSB0dXBsZeKAmXMgeG1heCBpcwp2aXNpYmxlIHRvIGFsbCB0cmFuc2FjdGlvbnMgKGFuZCB0aHVz IHJlbW92YWJsZSkuIFVwY29taW5nIGNoYW5nZXMgd2lsbAphbHNvIHVzZSBpdCB0byB0ZXN0IHdo ZXRoZXIgYSB0dXBsZeKAmXMgeG1pbiBpcyB2aXNpYmxlIHRvIGFsbCB0bwpkZWNpZGUgaWYgYSBw YWdlIGNhbiBiZSBtYXJrZWQgYWxsLXZpc2libGUgaW4gdGhlIHZpc2liaWxpdHkgbWFwLgoKVGhl IG5ldyBuYW1lLCBHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwoKSwgYmV0dGVyIHJlZmxlY3RzIHRo aXMgYnJvYWRlcgpwdXJwb3NlLgoKUmV2aWV3ZWQtYnk6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtp cmlsbEBnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2li aWxpdHkuYyB8ICA2ICsrKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMg ICAgICAgICB8IDE2ICsrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qv c3BndmFjdXVtLmMgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2Fy cmF5LmMgICAgICAgICB8IDE3ICsrKysrKysrLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy9z bmFwbWdyLmggICAgICAgICAgICAgICAgIHwgIDQgKystLQogNSBmaWxlcyBjaGFuZ2VkLCAyMiBp bnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX3Zpc2liaWxpdHkuYwppbmRleCAwNWY2OTQ2ZmU2MC4uNGViYzhhYmRiZWIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYwpAQCAtMTQ0Nyw3ICsx NDQ3LDcgQEAgSGVhcFR1cGxlU2F0aXNmaWVzTm9uVmFjdXVtYWJsZShIZWFwVHVwbGUgaHR1cCwg U25hcHNob3Qgc25hcHNob3QsCiAJewogCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVh ZF9hZnRlcikpOwogCi0JCWlmIChHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoc25hcHNob3Qt PnZpc3Rlc3QsIGRlYWRfYWZ0ZXIpKQorCQlpZiAoR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHNu YXBzaG90LT52aXN0ZXN0LCBkZWFkX2FmdGVyKSkKIAkJCXJlcyA9IEhFQVBUVVBMRV9ERUFEOwog CX0KIAllbHNlCkBAIC0xNTEyLDggKzE1MTIsOCBAQCBIZWFwVHVwbGVJc1N1cmVseURlYWQoSGVh cFR1cGxlIGh0dXAsIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0KQogCQlyZXR1cm4gZmFsc2U7CiAK IAkvKiBEZWxldGVyIGNvbW1pdHRlZCwgc28gdHVwbGUgaXMgZGVhZCBpZiB0aGUgWElEIGlzIG9s ZCBlbm91Z2guICovCi0JcmV0dXJuIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCh2aXN0ZXN0 LAotCQkJCQkJCQkJICAgSGVhcFR1cGxlSGVhZGVyR2V0UmF3WG1heCh0dXBsZSkpOworCXJldHVy biBHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwodmlzdGVzdCwKKwkJCQkJCQkJCUhlYXBUdXBsZUhl YWRlckdldFJhd1htYXgodHVwbGUpKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMKaW5kZXggMTQ2OTBjZDYyYWUuLmQwM2I3NTRiMmNjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9wcnVuZWhlYXAuYwpAQCAtMjM1LDcgKzIzNSw3IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVs YXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpCiAJICovCiAJdmlzdGVzdCA9IEdsb2JhbFZp c1Rlc3RGb3IocmVsYXRpb24pOwogCi0JaWYgKCFHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQo dmlzdGVzdCwgcHJ1bmVfeGlkKSkKKwlpZiAoIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCh2aXN0 ZXN0LCBwcnVuZV94aWQpKQogCQlyZXR1cm47CiAKIAkvKgpAQCAtNzMwLDkgKzczMCw5IEBAIGhl YXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJICog RGV0ZXJtaW5pbmcgSFRTViBvbmx5IG9uY2UgZm9yIGVhY2ggdHVwbGUgaXMgcmVxdWlyZWQgZm9y IGNvcnJlY3RuZXNzLAogCSAqIHRvIGRlYWwgd2l0aCBjYXNlcyB3aGVyZSBydW5uaW5nIEhUU1Yg dHdpY2UgY291bGQgcmVzdWx0IGluIGRpZmZlcmVudAogCSAqIHJlc3VsdHMuICBGb3IgZXhhbXBs ZSwgUkVDRU5UTFlfREVBRCBjYW4gdHVybiB0byBERUFEIGlmIGFub3RoZXIKLQkgKiBjaGVja2Vk IGl0ZW0gY2F1c2VzIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoKSB0byB1cGRhdGUg dGhlCi0JICogaG9yaXpvbiwgb3IgSU5TRVJUX0lOX1BST0dSRVNTIGNhbiBjaGFuZ2UgdG8gREVB RCBpZiB0aGUgaW5zZXJ0aW5nCi0JICogdHJhbnNhY3Rpb24gYWJvcnRzLgorCSAqIGNoZWNrZWQg aXRlbSBjYXVzZXMgR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkgdG8gdXBkYXRlIHRoZSBob3Jp em9uLAorCSAqIG9yIElOU0VSVF9JTl9QUk9HUkVTUyBjYW4gY2hhbmdlIHRvIERFQUQgaWYgdGhl IGluc2VydGluZyB0cmFuc2FjdGlvbgorCSAqIGFib3J0cy4KIAkgKgogCSAqIEl0J3MgYWxzbyBn b29kIGZvciBwZXJmb3JtYW5jZS4gTW9zdCBjb21tb25seSB0dXBsZXMgd2l0aGluIGEgcGFnZSBh cmUKIAkgKiBzdG9yZWQgYXQgZGVjcmVhc2luZyBvZmZzZXRzICh3aGlsZSB0aGUgaXRlbXMgYXJl IHN0b3JlZCBhdCBpbmNyZWFzaW5nCkBAIC0xMTU3LDExICsxMTU3LDExIEBAIGhlYXBfcHJ1bmVf c2F0aXNmaWVzX3ZhY3V1bShQcnVuZVN0YXRlICpwcnN0YXRlLCBIZWFwVHVwbGUgdHVwLCBCdWZm ZXIgYnVmZmVyKQogCSAqIERldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGUgdHVwbGUgaXMgY29u c2lkZXJlZCBkZWFkIHdoZW4gY29tcGFyZWQKIAkgKiB3aXRoIHRoZSBwcm92aWRlZCBHbG9iYWxW aXNTdGF0ZS4gT24tYWNjZXNzIHBydW5pbmcgZG9lcyBub3QgcHJvdmlkZQogCSAqIFZhY3V1bUN1 dG9mZnMuIEFuZCBmb3IgdmFjdXVtLCBldmVuIGlmIHRoZSB0dXBsZSdzIHhtYXggaXMgbm90IG9s ZGVyCi0JICogdGhhbiBPbGRlc3RYbWluLCBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoKSBj b3VsZCBmaW5kIHRoZSByb3cgZGVhZAotCSAqIGlmIHRoZSBHbG9iYWxWaXNTdGF0ZSBoYXMgYmVl biB1cGRhdGVkIHNpbmNlIHRoZSBiZWdpbm5pbmcgb2YgdmFjdXVtaW5nCisJICogdGhhbiBPbGRl c3RYbWluLCBHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwoKSBjb3VsZCBmaW5kIHRoZSByb3cgZGVh ZCBpZgorCSAqIHRoZSBHbG9iYWxWaXNTdGF0ZSBoYXMgYmVlbiB1cGRhdGVkIHNpbmNlIHRoZSBi ZWdpbm5pbmcgb2YgdmFjdXVtaW5nCiAJICogdGhlIHJlbGF0aW9uLgogCSAqLwotCWlmIChHbG9i YWxWaXNUZXN0SXNSZW1vdmFibGVYaWQocHJzdGF0ZS0+dmlzdGVzdCwgZGVhZF9hZnRlcikpCisJ aWYgKEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChwcnN0YXRlLT52aXN0ZXN0LCBkZWFkX2FmdGVy KSkKIAkJcmV0dXJuIEhFQVBUVVBMRV9ERUFEOwogCiAJcmV0dXJuIHJlczsKQEAgLTE2MTgsNyAr MTYxOCw3IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdl LCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iCiAJCQkJLyoKIAkJCQkgKiBGb3Igbm93 IGFsd2F5cyB1c2UgcHJzdGF0ZS0+Y3V0b2ZmcyBmb3IgdGhpcyB0ZXN0LCBiZWNhdXNlCiAJCQkJ ICogd2Ugb25seSB1cGRhdGUgJ2FsbF92aXNpYmxlJyB3aGVuIGZyZWV6aW5nIGlzIHJlcXVlc3Rl ZC4gV2UKLQkJCQkgKiBjb3VsZCB1c2UgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkIGluc3Rl YWQsIGlmIGEKKwkJCQkgKiBjb3VsZCB1c2UgR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkgaW5z dGVhZCwgaWYgYQogCQkJCSAqIG5vbi1mcmVlemluZyBjYWxsZXIgd2FudGVkIHRvIHNldCB0aGUg Vk0gYml0LgogCQkJCSAqLwogCQkJCUFzc2VydChwcnN0YXRlLT5jdXRvZmZzKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCmluZGV4IDcxZWYyZTUwMzZmLi4xYzBlYjQyNWVlOSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCkBAIC01MzYsNyArNTM2LDcgQEAg dmFjdXVtUmVkaXJlY3RBbmRQbGFjZWhvbGRlcihSZWxhdGlvbiBpbmRleCwgUmVsYXRpb24gaGVh cHJlbCwgQnVmZmVyIGJ1ZmZlcikKIAkJICovCiAJCWlmIChkdC0+dHVwc3RhdGUgPT0gU1BHSVNU X1JFRElSRUNUICYmCiAJCQkoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGR0LT54aWQpIHx8Ci0JCQkg R2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKHZpc3Rlc3QsIGR0LT54aWQpKSkKKwkJCSBHbG9i YWxWaXNYaWRWaXNpYmxlVG9BbGwodmlzdGVzdCwgZHQtPnhpZCkpKQogCQl7CiAJCQlkdC0+dHVw c3RhdGUgPSBTUEdJU1RfUExBQ0VIT0xERVI7CiAJCQlBc3NlcnQob3BhcXVlLT5uUmVkaXJlY3Rp b24gPiAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5j IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKaW5kZXggMjAwZjcyYzZlMjUu LjIzNWMzYjU4NGY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJy YXkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwpAQCAtNDE4MSw4 ICs0MTgxLDcgQEAgR2xvYmFsVmlzVXBkYXRlKHZvaWQpCiAgKiBTZWUgY29tbWVudCBmb3IgR2xv YmFsVmlzU3RhdGUgZm9yIGRldGFpbHMuCiAgKi8KIGJvb2wKLUdsb2JhbFZpc1Rlc3RJc1JlbW92 YWJsZUZ1bGxYaWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLAotCQkJCQkJCQlGdWxsVHJhbnNhY3Rp b25JZCBmeGlkKQorR2xvYmFsVmlzRnVsbFhpZFZpc2libGVUb0FsbChHbG9iYWxWaXNTdGF0ZSAq c3RhdGUsIEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQpCiB7CiAJLyoKIAkgKiBJZiBmeGlkIGlzIG9s ZGVyIHRoYW4gbWF5YmVfbmVlZGVkIGJvdW5kLCBpdCBkZWZpbml0ZWx5IGlzIHZpc2libGUgdG8K QEAgLTQyMTYsMTQgKzQyMTUsMTQgQEAgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlRnVsbFhpZChH bG9iYWxWaXNTdGF0ZSAqc3RhdGUsCiB9CiAKIC8qCi0gKiBXcmFwcGVyIGFyb3VuZCBHbG9iYWxW aXNUZXN0SXNSZW1vdmFibGVGdWxsWGlkKCkgZm9yIDMyYml0IHhpZHMuCisgKiBXcmFwcGVyIGFy b3VuZCBHbG9iYWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKCkgZm9yIDMyYml0IHhpZHMuCiAgKgog ICogSXQgaXMgY3J1Y2lhbCB0aGF0IHRoaXMgb25seSBnZXRzIGNhbGxlZCBmb3IgeGlkcyBmcm9t IGEgc291cmNlIHRoYXQKICAqIHByb3RlY3RzIGFnYWluc3QgeGlkIHdyYXBhcm91bmRzIChlLmcu IGZyb20gYSB0YWJsZSBhbmQgdGh1cyBwcm90ZWN0ZWQgYnkKICAqIHJlbGZyb3plbnhpZCkuCiAg Ki8KIGJvb2wKLUdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZChHbG9iYWxWaXNTdGF0ZSAqc3Rh dGUsIFRyYW5zYWN0aW9uSWQgeGlkKQorR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKEdsb2JhbFZp c1N0YXRlICpzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpCiB7CiAJRnVsbFRyYW5zYWN0aW9uSWQg ZnhpZDsKIApAQCAtNDIzNywxMiArNDIzNiwxMiBAQCBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVY aWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBUcmFuc2FjdGlvbklkIHhpZCkKIAkgKi8KIAlmeGlk ID0gRnVsbFhpZFJlbGF0aXZlVG8oc3RhdGUtPmRlZmluaXRlbHlfbmVlZGVkLCB4aWQpOwogCi0J cmV0dXJuIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoc3RhdGUsIGZ4aWQpOworCXJl dHVybiBHbG9iYWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKHN0YXRlLCBmeGlkKTsKIH0KIAogLyoK ICAqIENvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIEdsb2JhbFZpc1Rlc3RGb3IoKSBhbmQKLSAq IEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoKSwgc2VlIHRoZWlyIGNvbW1lbnRzLgor ICogR2xvYmFsVmlzRnVsbFhpZFZpc2libGVUb0FsbCgpLCBzZWUgdGhlaXIgY29tbWVudHMuCiAg Ki8KIGJvb2wKIEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxlRnVsbFhpZChSZWxhdGlvbiByZWwsIEZ1 bGxUcmFuc2FjdGlvbklkIGZ4aWQpCkBAIC00MjUxLDEyICs0MjUwLDEyIEBAIEdsb2JhbFZpc0No ZWNrUmVtb3ZhYmxlRnVsbFhpZChSZWxhdGlvbiByZWwsIEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQp CiAKIAlzdGF0ZSA9IEdsb2JhbFZpc1Rlc3RGb3IocmVsKTsKIAotCXJldHVybiBHbG9iYWxWaXNU ZXN0SXNSZW1vdmFibGVGdWxsWGlkKHN0YXRlLCBmeGlkKTsKKwlyZXR1cm4gR2xvYmFsVmlzRnVs bFhpZFZpc2libGVUb0FsbChzdGF0ZSwgZnhpZCk7CiB9CiAKIC8qCiAgKiBDb252ZW5pZW5jZSB3 cmFwcGVyIGFyb3VuZCBHbG9iYWxWaXNUZXN0Rm9yKCkgYW5kCi0gKiBHbG9iYWxWaXNUZXN0SXNS ZW1vdmFibGVYaWQoKSwgc2VlIHRoZWlyIGNvbW1lbnRzLgorICogR2xvYmFsVmlzVGVzdElzVmlz aWJsZVhpZCgpLCBzZWUgdGhlaXIgY29tbWVudHMuCiAgKi8KIGJvb2wKIEdsb2JhbFZpc0NoZWNr UmVtb3ZhYmxlWGlkKFJlbGF0aW9uIHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQpCkBAIC00MjY1LDcg KzQyNjQsNyBAQCBHbG9iYWxWaXNDaGVja1JlbW92YWJsZVhpZChSZWxhdGlvbiByZWwsIFRyYW5z YWN0aW9uSWQgeGlkKQogCiAJc3RhdGUgPSBHbG9iYWxWaXNUZXN0Rm9yKHJlbCk7CiAKLQlyZXR1 cm4gR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKHN0YXRlLCB4aWQpOworCXJldHVybiBHbG9i YWxWaXNYaWRWaXNpYmxlVG9BbGwoc3RhdGUsIHhpZCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmggYi9zcmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmgK aW5kZXggNjA0YzFmOTAyMTYuLmEwZWEyY2ZjZWEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91 dGlscy9zbmFwbWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc25hcG1nci5oCkBAIC0xMDAs OCArMTAwLDggQEAgZXh0ZXJuIGNoYXIgKkV4cG9ydFNuYXBzaG90KFNuYXBzaG90IHNuYXBzaG90 KTsKICAqLwogdHlwZWRlZiBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGUgR2xvYmFsVmlzU3RhdGU7CiBl eHRlcm4gR2xvYmFsVmlzU3RhdGUgKkdsb2JhbFZpc1Rlc3RGb3IoUmVsYXRpb24gcmVsKTsKLWV4 dGVybiBib29sIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZChHbG9iYWxWaXNTdGF0ZSAqc3Rh dGUsIFRyYW5zYWN0aW9uSWQgeGlkKTsKLWV4dGVybiBib29sIEdsb2JhbFZpc1Rlc3RJc1JlbW92 YWJsZUZ1bGxYaWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNhY3Rpb25JZCBmeGlk KTsKK2V4dGVybiBib29sIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChHbG9iYWxWaXNTdGF0ZSAq c3RhdGUsIFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBib29sIEdsb2JhbFZpc0Z1bGxYaWRW aXNpYmxlVG9BbGwoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNhY3Rpb25JZCBmeGlk KTsKIGV4dGVybiBib29sIEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxlWGlkKFJlbGF0aW9uIHJlbCwg VHJhbnNhY3Rpb25JZCB4aWQpOwogZXh0ZXJuIGJvb2wgR2xvYmFsVmlzQ2hlY2tSZW1vdmFibGVG dWxsWGlkKFJlbGF0aW9uIHJlbCwgRnVsbFRyYW5zYWN0aW9uSWQgZnhpZCk7CiAKLS0gCjIuNDMu MAoK --000000000000fb0f430642c7990f Content-Type: text/x-patch; charset="UTF-8"; name="v19-0008-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Disposition: attachment; filename="v19-0008-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhkswsv37 RnJvbSA3ZTg5MjZmYzYyNTZkYzA5NjZiMGM2NWU0ZmNlYzAwMzFmYmQyOTg4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM4OjI0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTkgMDgvMTJdIFVzZSBHbG9iYWxWaXNTdGF0ZSBpbiB2YWN1dW0gdG8gZGV0ZXJtaW5l IHBhZ2UKIGxldmVsIHZpc2liaWxpdHkKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0 ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQK CkR1cmluZyB2YWN1dW0ncyBmaXJzdCBhbmQgdGhpcmQgcGhhc2VzLCB3ZSBleGFtaW5lIHR1cGxl cycgdmlzaWJpbGl0eQp0byBkZXRlcm1pbmUgaWYgd2UgY2FuIHNldCB0aGUgcGFnZSBhbGwtdmlz aWJsZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAuCgpQcmV2aW91c2x5LCB0aGlzIGNoZWNrIGNvbXBh cmVkIHR1cGxlIHhtaW5zIGFnYWluc3QgYSBzaW5nbGUgWElEIGNob3NlbiBhdAp0aGUgc3RhcnQg b2YgdmFjdXVtIChPbGRlc3RYbWluKS4gV2Ugbm93IHVzZSBHbG9iYWxWaXNTdGF0ZSwgd2hpY2gg YWxzbwplbmFibGVzIGZ1dHVyZSB3b3JrIHRvIHNldCB0aGUgVk0gZHVyaW5nIG9uLWFjY2VzcyBw cnVuaW5nLCBzaW5jZSBvcmRpbmFyeQpxdWVyaWVzIGhhdmUgYWNjZXNzIHRvIEdsb2JhbFZpc1N0 YXRlIGJ1dCBub3QgT2xkZXN0WG1pbi4KClRoaXMgYWxzbyBiZW5lZml0cyB2YWN1dW0gZGlyZWN0 bHk6IGluIHNvbWUgY2FzZXMsIEdsb2JhbFZpc1N0YXRlIG1heQphZHZhbmNlIGR1cmluZyBhIHZh Y3V1bSwgYWxsb3dpbmcgbW9yZSBwYWdlcyB0byBiZWNvbWUgY29uc2lkZXJlZAphbGwtdmlzaWJs ZS4gQW5kLCBpbiB0aGUgZnV0dXJlLCB3ZSBjb3VsZCBlYXNpbHkgYWRkIGEgaGV1cmlzdGljIHRv CnVwZGF0ZSBHbG9iYWxWaXNTdGF0ZSBtb3JlIGZyZXF1ZW50bHkgZHVyaW5nIHZhY3V1bXMgb2Yg bGFyZ2UgdGFibGVzLiBJbgp0aGUgcmFyZSBjYXNlIHRoYXQgdGhlIEdsb2JhbFZpc1N0YXRlIG1v dmVzIGJhY2t3YXJkLCB2YWN1dW0gZmFsbHMgYmFjawp0byBPbGRlc3RYbWluIHRvIGVuc3VyZSB3 ZSBkb27igJl0IGF0dGVtcHQgdG8gZnJlZXplIGEgZGVhZCB0dXBsZSB0aGF0Cndhc27igJl0IHll dCBwcnVuYWJsZSBhY2NvcmRpbmcgdG8gdGhlIEdsb2JhbFZpc1N0YXRlLgoKQmVjYXVzZSBjb21w YXJpbmcgYSB0cmFuc2FjdGlvbiBJRCBhZ2FpbnN0IEdsb2JhbFZpc1N0YXRlIGlzIG1vcmUKZXhw ZW5zaXZlIHRoYW4gY29tcGFyaW5nIGFnYWluc3QgYSBzaW5nbGUgWElELCB3ZSBkZWZlciB0aGlz IGNoZWNrIHVudGlsCmFmdGVyIHNjYW5uaW5nIGFsbCB0dXBsZXMgb24gdGhlIHBhZ2UuIElmIHZp c2liaWxpdHlfY3V0b2ZmX3hpZCB3YXMKbWFpbnRhaW5lZCwgd2UgcGVyZm9ybSB0aGUgR2xvYmFs VmlzU3RhdGUgY2hlY2sgb25seSBvbmNlIHBlciBwYWdlLgpUaGlzIGlzIHNhZmUgYmVjYXVzZSB2 aXNpYmlsaXR5X2N1dG9mZl94aWQgcmVjb3JkcyB0aGUgbmV3ZXN0IHhtaW4gb24KdGhlIHBhZ2U7 IGlmIGl0IGlzIGdsb2JhbGx5IHZpc2libGUsIHRoZW4gdGhlIGVudGlyZSBwYWdlIGlzIGFsbC12 aXNpYmxlLgoKVGhpcyBhcHByb2FjaCBtYXkgcmVzdWx0IGluIGV4YW1pbmluZyBtb3JlIHR1cGxl IHhtaW5zIHRoYW4gYmVmb3JlLApzaW5jZSB3aXRoIE9sZGVzdFhtaW4gd2UgY291bGQgc29tZXRp bWVzIHJ1bGUgb3V0IHRoZSBwYWdlIGJlaW5nCmFsbC12aXNpYmxlIGVhcmxpZXIuIEhvd2V2ZXIs IHByb2ZpbGluZyBzaG93cyB0aGUgYWRkaXRpb25hbCBjb3N0IGlzIG5vdApzaWduaWZpY2FudC4K LS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jIHwgMjggKysr KysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgICAg ICB8IDM3ICsrKysrKysrKystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jICAgICAgICB8IDE3ICsrKysrLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaCAgICAgICAgICAgICAgICAgfCAgNyArKy0tCiA0IGZpbGVzIGNoYW5nZWQsIDU3IGluc2Vy dGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW1fdmlzaWJpbGl0eS5jCmluZGV4IDRlYmM4YWJkYmViLi5lZGQ1MjlkYzNjMCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jCkBAIC0xMTg5LDYgKzExODks MzQgQEAgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKEhlYXBUdXBsZSBodHVwLCBUcmFuc2FjdGlv bklkIE9sZGVzdFhtaW4sCiAJcmV0dXJuIHJlczsKIH0KIAorLyoKKyAqIE5lYXJseSB0aGUgc2Ft ZSBhcyBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0sIGJ1dCB1c2VzIGEgR2xvYmFsVmlzU3RhdGUg dG8KKyAqIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCBhIHR1cGxlIGlzIEhFQVBUVVBMRV9ERUFE IE9yCisgKiBIRUFQVFVQTEVfUkVDRU5UTFlfREVBRC4gSXQgc2VydmVzIHRoZSBzYW1lIHB1cnBv c2UgYnV0IGNhbiBiZSB1c2VkIGJ5CisgKiBjYWxsZXJzIHRoYXQgaGF2ZSBub3QgY2FsY3VsYXRl ZCBhIHNpbmdsZSBPbGRlc3RYbWluIHZhbHVlLgorICovCitIVFNWX1Jlc3VsdAorSGVhcFR1cGxl U2F0aXNmaWVzVmFjdXVtR2xvYmFsVmlzKEhlYXBUdXBsZSBodHVwLCBHbG9iYWxWaXNTdGF0ZSAq dmlzdGVzdCwKKwkJCQkJCQkJICBCdWZmZXIgYnVmZmVyKQoreworCVRyYW5zYWN0aW9uSWQgZGVh ZF9hZnRlciA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCUhUU1ZfUmVzdWx0IHJlczsKKworCXJl cyA9IEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bUhvcml6b24oaHR1cCwgYnVmZmVyLCAmZGVhZF9h ZnRlcik7CisKKwlpZiAocmVzID09IEhFQVBUVVBMRV9SRUNFTlRMWV9ERUFEKQorCXsKKwkJQXNz ZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYWRfYWZ0ZXIpKTsKKworCQlpZiAoR2xvYmFsVmlz WGlkVmlzaWJsZVRvQWxsKHZpc3Rlc3QsIGRlYWRfYWZ0ZXIpKQorCQkJcmVzID0gSEVBUFRVUExF X0RFQUQ7CisJfQorCWVsc2UKKwkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChkZWFkX2Fm dGVyKSk7CisKKwlyZXR1cm4gcmVzOworfQorCiAvKgogICogV29yayBob3JzZSBmb3IgSGVhcFR1 cGxlU2F0aXNmaWVzVmFjdXVtIGFuZCBzaW1pbGFyIHJvdXRpbmVzLgogICoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggZDAzYjc1NGIyY2MuLmQzYzU3ZWVkZmUzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtNzEyLDExICs3MTIsMTIgQEAgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAogCS8qCiAJICog VGhlIHZpc2liaWxpdHkgY3V0b2ZmIHhpZCBpcyB0aGUgbmV3ZXN0IHhtaW4gb2YgbGl2ZSwgY29t bWl0dGVkIHR1cGxlcwotCSAqIG9sZGVyIHRoYW4gT2xkZXN0WG1pbiBvbiB0aGUgcGFnZS4gVGhp cyBmaWVsZCBpcyBvbmx5IGtlcHQgdXAtdG8tZGF0ZQotCSAqIGlmIHRoZSBwYWdlIGlzIGFsbC12 aXNpYmxlLiBBcyBzb29uIGFzIGEgdHVwbGUgaXMgZW5jb3VudGVyZWQgdGhhdCBpcwotCSAqIG5v dCB2aXNpYmxlIHRvIGFsbCwgdGhpcyBmaWVsZCBpcyB1bm1haW50YWluZWQuIEFzIGxvbmcgYXMg aXQgaXMKLQkgKiBtYWludGFpbmVkLCBpdCBjYW4gYmUgdXNlZCB0byBjYWxjdWxhdGUgdGhlIHNu YXBzaG90IGNvbmZsaWN0IGhvcml6b24KLQkgKiB3aGVuIHVwZGF0aW5nIHRoZSBWTSBhbmQvb3Ig ZnJlZXppbmcgYWxsIHRoZSB0dXBsZXMgb24gdGhlIHBhZ2UuCisJICogb24gdGhlIHBhZ2Ugb2xk ZXIgdGhhbiB0aGUgdmlzaWJpbGl0eSBob3Jpem9uIHJlcHJlc2VudGVkIGluIHRoZQorCSAqIEds b2JhbFZpc1N0YXRlLiBUaGlzIGZpZWxkIGlzIG9ubHkga2VwdCB1cC10by1kYXRlIGlmIHRoZSBw YWdlIGlzCisJICogYWxsLXZpc2libGUuIEFzIHNvb24gYXMgYSB0dXBsZSBpcyBlbmNvdW50ZXJl ZCB0aGF0IGlzIG5vdCB2aXNpYmxlIHRvCisJICogYWxsLCB0aGlzIGZpZWxkIGlzIHVubWFpbnRh aW5lZC4gQXMgbG9uZyBhcyBpdCBpcyBtYWludGFpbmVkLCBpdCBjYW4gYmUKKwkgKiB1c2VkIHRv IGNhbGN1bGF0ZSB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiB3aGVuIHVwZGF0aW5nIHRo ZSBWTQorCSAqIGFuZC9vciBmcmVlemluZyBhbGwgdGhlIHR1cGxlcyBvbiB0aGUgcGFnZS4KIAkg Ki8KIAlwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklk OwogCkBAIC05MTIsNiArOTEzLDE2IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5l RnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCXByc3RhdGUubmRlYWQgPiAwIHx8CiAJCXByc3RhdGUu bnVudXNlZCA+IDA7CiAKKwkvKgorCSAqIEFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZSBsaXZlIHR1 cGxlcyBvbiB0aGUgcGFnZSwgaWYgdGhlIG5ld2VzdCB4bWluCisJICogYW1vbmdzdCB0aGVtIGlz IG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lLCB0aGUgcGFnZSBjYW5ub3QgYmUKKwkgKiBhbGwtdmlz aWJsZS4KKwkgKi8KKwlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJgorCQlUcmFuc2FjdGlvbklk SXNOb3JtYWwocHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQpICYmCisJCSFHbG9iYWxWaXNY aWRWaXNpYmxlVG9BbGwocHJzdGF0ZS52aXN0ZXN0LCBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2Zm X3hpZCkpCisJCXByc3RhdGUuYWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF9mcm96ZW4gPSBmYWxz ZTsKKwogCS8qCiAJICogRXZlbiBpZiB3ZSBkb24ndCBwcnVuZSBhbnl0aGluZywgaWYgd2UgZm91 bmQgYSBuZXcgdmFsdWUgZm9yIHRoZQogCSAqIHBkX3BydW5lX3hpZCBmaWVsZCBvciB0aGUgcGFn ZSB3YXMgbWFya2VkIGZ1bGwsIHdlIHdpbGwgdXBkYXRlIHRoZSBoaW50CkBAIC0xMDg0LDEwICsx MDk1LDkgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBh cmFtcywKIAkJYm9vbAkJZGVidWdfYWxsX2Zyb3plbjsKIAogCQlBc3NlcnQocHJzdGF0ZS5scGRl YWRfaXRlbXMgPT0gMCk7Ci0JCUFzc2VydChwcnN0YXRlLmN1dG9mZnMpOwogCiAJCWlmICghaGVh cF9wYWdlX2lzX2FsbF92aXNpYmxlKHBhcmFtcy0+cmVsYXRpb24sIGJ1ZmZlciwKLQkJCQkJCQkJ CSAgcHJzdGF0ZS5jdXRvZmZzLT5PbGRlc3RYbWluLAorCQkJCQkJCQkJICBwcnN0YXRlLnZpc3Rl c3QsCiAJCQkJCQkJCQkgICZkZWJ1Z19hbGxfZnJvemVuLAogCQkJCQkJCQkJICAmZGVidWdfY3V0 b2ZmLCBvZmZfbG9jKSkKIAkJCUFzc2VydChmYWxzZSk7CkBAIC0xNjE1LDE5ICsxNjI1LDYgQEAg aGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdlIHBhZ2UsIFBydW5lU3Rh dGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAkJCQkgKi8KIAkJCQl4bWluID0gSGVhcFR1cGxlSGVh ZGVyR2V0WG1pbihodHVwKTsKIAotCQkJCS8qCi0JCQkJICogRm9yIG5vdyBhbHdheXMgdXNlIHBy c3RhdGUtPmN1dG9mZnMgZm9yIHRoaXMgdGVzdCwgYmVjYXVzZQotCQkJCSAqIHdlIG9ubHkgdXBk YXRlICdhbGxfdmlzaWJsZScgd2hlbiBmcmVlemluZyBpcyByZXF1ZXN0ZWQuIFdlCi0JCQkJICog Y291bGQgdXNlIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCgpIGluc3RlYWQsIGlmIGEKLQkJCQkg KiBub24tZnJlZXppbmcgY2FsbGVyIHdhbnRlZCB0byBzZXQgdGhlIFZNIGJpdC4KLQkJCQkgKi8K LQkJCQlBc3NlcnQocHJzdGF0ZS0+Y3V0b2Zmcyk7Ci0JCQkJaWYgKCFUcmFuc2FjdGlvbklkUHJl Y2VkZXMoeG1pbiwgcHJzdGF0ZS0+Y3V0b2Zmcy0+T2xkZXN0WG1pbikpCi0JCQkJewotCQkJCQlw cnN0YXRlLT5hbGxfdmlzaWJsZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKLQkJCQkJ YnJlYWs7Ci0JCQkJfQotCiAJCQkJLyogVHJhY2sgbmV3ZXN0IHhtaW4gb24gcGFnZS4gKi8KIAkJ CQlpZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3MoeG1pbiwgcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRv ZmZfeGlkKSAmJgogCQkJCQlUcmFuc2FjdGlvbklkSXNOb3JtYWwoeG1pbikpCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggZmY2ZjBkMWQwYWYuLjVlM2MxZDUwMzc4IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC00NjUsNyArNDY1LDcgQEAgc3RhdGlj IHZvaWQgZGVhZF9pdGVtc19yZXNldChMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIHZvaWQg ZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCk7CiAKIHN0YXRpYyBib29sIGhl YXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCi0J CQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJCQkJCSAgIEdsb2Jh bFZpc1N0YXRlICp2aXN0ZXN0LAogCQkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqZGVhZG9mZnNl dHMsCiAJCQkJCQkJCQkJICAgaW50IG5kZWFkb2Zmc2V0cywKIAkJCQkJCQkJCQkgICBib29sICph bGxfZnJvemVuLApAQCAtMjc0MSw3ICsyNzQxLDcgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExW UmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJICog ZG9uZSBvdXRzaWRlIHRoZSBjcml0aWNhbCBzZWN0aW9uLgogCSAqLwogCWlmIChoZWFwX3BhZ2Vf d291bGRfYmVfYWxsX3Zpc2libGUodmFjcmVsLT5yZWwsIGJ1ZmZlciwKLQkJCQkJCQkJCSAgIHZh Y3JlbC0+Y3V0b2Zmcy5PbGRlc3RYbWluLAorCQkJCQkJCQkJICAgdmFjcmVsLT52aXN0ZXN0LAog CQkJCQkJCQkJICAgZGVhZG9mZnNldHMsIG51bV9vZmZzZXRzLAogCQkJCQkJCQkJICAgJmFsbF9m cm96ZW4sICZ2aXNpYmlsaXR5X2N1dG9mZl94aWQsCiAJCQkJCQkJCQkgICAmdmFjcmVsLT5vZmZu dW0pKQpAQCAtMzQ5NiwxNCArMzQ5NiwxMyBAQCBkZWFkX2l0ZW1zX2NsZWFudXAoTFZSZWxTdGF0 ZSAqdmFjcmVsKQogICovCiBib29sCiBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24g cmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJ CSBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCSBib29sICphbGxfZnJvemVuLAogCQkJ CQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKIAkJCQkJCSBPZmZzZXRO dW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKQogewogCi0JcmV0dXJuIGhlYXBfcGFnZV93b3VsZF9iZV9h bGxfdmlzaWJsZShyZWwsIGJ1ZiwKLQkJCQkJCQkJCQkgIE9sZGVzdFhtaW4sCisJcmV0dXJuIGhl YXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShyZWwsIGJ1ZiwgdmlzdGVzdCwKIAkJCQkJCQkJ CQkgIE5VTEwsIDAsCiAJCQkJCQkJCQkJICBhbGxfZnJvemVuLAogCQkJCQkJCQkJCSAgdmlzaWJp bGl0eV9jdXRvZmZfeGlkLApAQCAtMzUyNCw3ICszNTIzLDcgQEAgaGVhcF9wYWdlX2lzX2FsbF92 aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUg cGFnZSBpcyBhbGwtdmlzaWJsZSBvdGhlciB0aGFuIHRoZSBwcm92aWRlZAogICogZGVhZG9mZnNl dHMgYW5kIGZhbHNlIG90aGVyd2lzZS4KICAqCi0gKiBPbGRlc3RYbWluIGlzIHVzZWQgdG8gZGV0 ZXJtaW5lIHZpc2liaWxpdHkuCisgKiB2aXN0ZXN0IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHZpc2li aWxpdHkuCiAgKgogICogT3V0cHV0IHBhcmFtZXRlcnM6CiAgKgpAQCAtMzU0Myw3ICszNTQyLDcg QEAgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKICAq Lwogc3RhdGljIGJvb2wKIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBidWYsCi0JCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJ CQkJCSAgIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0LAogCQkJCQkJCSAgIE9mZnNldE51bWJlciAq ZGVhZG9mZnNldHMsCiAJCQkJCQkJICAgaW50IG5kZWFkb2Zmc2V0cywKIAkJCQkJCQkgICBib29s ICphbGxfZnJvemVuLApAQCAtMzYxNyw3ICszNjE2LDcgQEAgaGVhcF9wYWdlX3dvdWxkX2JlX2Fs bF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAogCQkvKiBWaXNpYmlsaXR5IGNo ZWNrcyBtYXkgZG8gSU8gb3IgYWxsb2NhdGUgbWVtb3J5ICovCiAJCUFzc2VydChDcml0U2VjdGlv bkNvdW50ID09IDApOwotCQlzd2l0Y2ggKEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bSgmdHVwbGUs IE9sZGVzdFhtaW4sIGJ1ZikpCisJCXN3aXRjaCAoSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtR2xv YmFsVmlzKCZ0dXBsZSwgdmlzdGVzdCwgYnVmKSkKIAkJewogCQkJY2FzZSBIRUFQVFVQTEVfTElW RToKIAkJCQl7CkBAIC0zNjM2LDcgKzM2MzUsNyBAQCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zp c2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkgKiB0aGF0IGV2ZXJ5b25lIHNl ZXMgaXQgYXMgY29tbWl0dGVkPwogCQkJCQkgKi8KIAkJCQkJeG1pbiA9IEhlYXBUdXBsZUhlYWRl ckdldFhtaW4odHVwbGUudF9kYXRhKTsKLQkJCQkJaWYgKCFUcmFuc2FjdGlvbklkUHJlY2VkZXMo eG1pbiwgT2xkZXN0WG1pbikpCisJCQkJCWlmICghR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHZp c3Rlc3QsIHhtaW4pKQogCQkJCQl7CiAJCQkJCQlhbGxfdmlzaWJsZSA9IGZhbHNlOwogCQkJCQkJ KmFsbF9mcm96ZW4gPSBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCAxNDcxOTQwYjRhNC4uNGZj NmVkZjQyNjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTI3Niw4ICsyNzYsNyBAQCB0eXBlZGVmIHN0 cnVjdCBQcnVuZUZyZWV6ZVBhcmFtcwogCS8qCiAJICogY3V0b2ZmcyBjb250YWlucyB0aGUgZnJl ZXplIGN1dG9mZnMsIGVzdGFibGlzaGVkIGJ5IFZBQ1VVTSBhdCB0aGUKIAkgKiBiZWdpbm5pbmcg b2YgdmFjdXVtaW5nIHRoZSByZWxhdGlvbi4gIFJlcXVpcmVkIGlmIEhFQVBfUFJVTkVfRlJFRVpF Ci0JICogb3B0aW9uIGlzIHNldC4gY3V0b2Zmcy0+T2xkZXN0WG1pbiBpcyBhbHNvIHVzZWQgdG8g ZGV0ZXJtaW5lIGlmIGRlYWQKLQkgKiB0dXBsZXMgYXJlIEhFQVBUVVBMRV9SRUNFTlRMWV9ERUFE IG9yIEhFQVBUVVBMRV9ERUFELgorCSAqIG9wdGlvbiBpcyBzZXQuCiAJICovCiAJc3RydWN0IFZh Y3V1bUN1dG9mZnMgKmN1dG9mZnM7CiB9IFBydW5lRnJlZXplUGFyYW1zOwpAQCAtNDQ0LDcgKzQ0 Myw3IEBAIGV4dGVybiB2b2lkIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsCiAKICNpZmRl ZiBVU0VfQVNTRVJUX0NIRUNLSU5HCiBleHRlcm4gYm9vbCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2li bGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xk ZXN0WG1pbiwKKwkJCQkJCQkJCSBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCQkJCSBi b29sICphbGxfZnJvemVuLAogCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0 b2ZmX3hpZCwKIAkJCQkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKQEAgLTQ1 Nyw2ICs0NTYsOCBAQCBleHRlcm4gVE1fUmVzdWx0IEhlYXBUdXBsZVNhdGlzZmllc1VwZGF0ZShI ZWFwVHVwbGUgaHR1cCwgQ29tbWFuZElkIGN1cmNpZCwKIAkJCQkJCQkJCQkgIEJ1ZmZlciBidWZm ZXIpOwogZXh0ZXJuIEhUU1ZfUmVzdWx0IEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bShIZWFwVHVw bGUgaHR1cCwgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAogCQkJCQkJCQkJCQlCdWZmZXIgYnVm ZmVyKTsKK2V4dGVybiBIVFNWX1Jlc3VsdCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW1HbG9iYWxW aXMoSGVhcFR1cGxlIGh0dXAsCisJCQkJCQkJCQkJCQkJIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0 LCBCdWZmZXIgYnVmZmVyKTsKIGV4dGVybiBIVFNWX1Jlc3VsdCBIZWFwVHVwbGVTYXRpc2ZpZXNW YWN1dW1Ib3Jpem9uKEhlYXBUdXBsZSBodHVwLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkJCQkJ ICAgVHJhbnNhY3Rpb25JZCAqZGVhZF9hZnRlcik7CiBleHRlcm4gdm9pZCBIZWFwVHVwbGVTZXRI aW50Qml0cyhIZWFwVHVwbGVIZWFkZXIgdHVwbGUsIEJ1ZmZlciBidWZmZXIsCi0tIAoyLjQzLjAK Cg== --000000000000fb0f430642c7990f Content-Type: text/x-patch; charset="UTF-8"; name="v19-0009-Unset-all_visible-sooner-if-not-freezing.patch" Content-Disposition: attachment; filename="v19-0009-Unset-all_visible-sooner-if-not-freezing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhkswvq88 RnJvbSA2NzVjOGFhNjlmZDQ1NmRmZWUwMTFkNDBjOTEzZjMzY2Q4NjZjYWI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDE1OjIyOjM1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTkgMDkvMTJdIFVuc2V0IGFsbF92aXNpYmxlIHNvb25lciBpZiBub3QgZnJlZXppbmcK TUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04 CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCkluIHRoZSBwcnVuZS9mcmVlemUgcGF0 aCwgd2UgY3VycmVudGx5IGRlbGF5IGNsZWFyaW5nIGFsbF92aXNpYmxlIGFuZAphbGxfZnJvemVu IGluIHRoZSBwcmVzZW5jZSBvZiBkZWFkIGl0ZW1zIHRvIGFsbG93IG9wcG9ydHVuaXN0aWMKZnJl ZXppbmcuCgpIb3dldmVyLCBpZiBubyBmcmVlemluZyB3aWxsIGJlIGF0dGVtcHRlZCwgdGhlcmXi gJlzIG5vIG5lZWQgdG8gZGVsYXkuCkNsZWFyaW5nIHRoZSBmbGFncyBlYXJsaWVyIGF2b2lkcyBl eHRyYSBib29ra2VlcGluZyBpbgpoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFs KCkuIFRoaXMgY3VycmVudGx5IGhhcyBubyBydW50aW1lCmVmZmVjdCBiZWNhdXNlIGFsbCBjYWxs ZXJzIHRoYXQgY29uc2lkZXIgc2V0dGluZyB0aGUgVk0gYWxzbyBwcmVwYXJlCmZyZWV6ZSBwbGFu cywgYnV0IHVwY29taW5nIGNoYW5nZXMgd2lsbCBhbGxvdyBvbi1hY2Nlc3MgcHJ1bmluZyB0byBz ZXQKdGhlIFZNIHdpdGhvdXQgZnJlZXppbmcuIFRoZSBleHRyYSBib29ra2VlcGluZyB3YXMgbm90 aWNlYWJsZSBpbiBhCnByb2ZpbGUgb2Ygb24tYWNjZXNzIFZNIHNldHRpbmcuCi0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgfCAxMCArKysrKysrKy0tCiAxIGZpbGUgY2hh bmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMKaW5kZXggZDNjNTdlZWRmZTMuLjdmNDU3YWJmOGUxIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMTQ4Myw4ICsxNDgzLDExIEBAIGhlYXBfcHJ1bmVfcmVj b3JkX2RlYWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSwKIAogCS8q CiAJICogRGVsaWJlcmF0ZWx5IGRlbGF5IHVuc2V0dGluZyBhbGxfdmlzaWJsZSB1bnRpbCBsYXRl ciBkdXJpbmcgcHJ1bmluZy4KLQkgKiBSZW1vdmFibGUgZGVhZCB0dXBsZXMgc2hvdWxkbid0IHBy ZWNsdWRlIGZyZWV6aW5nIHRoZSBwYWdlLgorCSAqIFJlbW92YWJsZSBkZWFkIHR1cGxlcyBzaG91 bGRuJ3QgcHJlY2x1ZGUgZnJlZXppbmcgdGhlIHBhZ2UuIElmIHdlIHdvbid0CisJICogYXR0ZW1w dCBmcmVlemluZywganVzdCB1bnNldCBhbGwtdmlzaWJsZSBub3csIHRob3VnaC4KIAkgKi8KKwlp ZiAoIXByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQorCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHBy c3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAogCS8qIFJlY29yZCB0aGUgZGVhZCBvZmZzZXQg Zm9yIHZhY3V1bSAqLwogCXByc3RhdGUtPmRlYWRvZmZzZXRzW3Byc3RhdGUtPmxwZGVhZF9pdGVt cysrXSA9IG9mZm51bTsKQEAgLTE3MzksOCArMTc0MiwxMSBAQCBoZWFwX3BydW5lX3JlY29yZF91 bmNoYW5nZWRfbHBfZGVhZChQYWdlIHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51 bWJlcgogCSAqIFNpbWlsYXJseSwgZG9uJ3QgdW5zZXQgYWxsX3Zpc2libGUgdW50aWwgbGF0ZXIs IGF0IHRoZSBlbmQgb2YKIAkgKiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLiAgVGhpcyB3 aWxsIGFsbG93IHVzIHRvIGF0dGVtcHQgdG8gZnJlZXplCiAJICogdGhlIHBhZ2UgYWZ0ZXIgcHJ1 bmluZy4gIEFzIGxvbmcgYXMgd2UgdW5zZXQgaXQgYmVmb3JlIHVwZGF0aW5nIHRoZQotCSAqIHZp c2liaWxpdHkgbWFwLCB0aGlzIHdpbGwgYmUgY29ycmVjdC4KKwkgKiB2aXNpYmlsaXR5IG1hcCwg dGhpcyB3aWxsIGJlIGNvcnJlY3QuIElmIHdlIHdvbid0IGF0dGVtcHQgZnJlZXppbmcsCisJICog dGhvdWdoLCBqdXN0IHVuc2V0IGFsbC12aXNpYmxlIG5vdy4KIAkgKi8KKwlpZiAoIXByc3RhdGUt PmF0dGVtcHRfZnJlZXplKQorCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHByc3RhdGUtPmFsbF9m cm96ZW4gPSBmYWxzZTsKIAogCS8qIFJlY29yZCB0aGUgZGVhZCBvZmZzZXQgZm9yIHZhY3V1bSAq LwogCXByc3RhdGUtPmRlYWRvZmZzZXRzW3Byc3RhdGUtPmxwZGVhZF9pdGVtcysrXSA9IG9mZm51 bTsKLS0gCjIuNDMuMAoK --000000000000fb0f430642c7990f Content-Type: text/x-patch; charset="UTF-8"; name="v19-0010-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Disposition: attachment; filename="v19-0010-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhkswyuy9 RnJvbSA4NTc5MmU4OGE4MzZhNzkwOWEyNzc4M2IxODAxZTFkYTBlNTEzOTllIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM0OjMwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTkgMTAvMTJdIEFsbG93IG9uLWFjY2VzcyBwcnVuaW5nIHRvIHNldCBwYWdlcyBhbGwt dmlzaWJsZQoKTWFueSBxdWVyaWVzIGRvIG5vdCBtb2RpZnkgdGhlIHVuZGVybHlpbmcgcmVsYXRp b24uIEZvciBzdWNoIHF1ZXJpZXMsIGlmCm9uLWFjY2VzcyBwcnVuaW5nIG9jY3VycyBkdXJpbmcg dGhlIHNjYW4sIHdlIGNhbiBjaGVjayB3aGV0aGVyIHRoZSBwYWdlCmhhcyBiZWNvbWUgYWxsLXZp c2libGUgYW5kIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAgYWNjb3JkaW5nbHkuClByZXZpb3Vz bHksIG9ubHkgdmFjdXVtIGFuZCBDT1BZIEZSRUVaRSBtYXJrZWQgcGFnZXMgYXMgYWxsLXZpc2li bGUgb3IKYWxsLWZyb3plbi4KClN1cHBvcnRpbmcgdGhpcyByZXF1aXJlcyBwYXNzaW5nIGluZm9y bWF0aW9uIGFib3V0IHdoZXRoZXIgdGhlIHJlbGF0aW9uCmlzIG1vZGlmaWVkIGZyb20gdGhlIGV4 ZWN1dG9yIGRvd24gdG8gdGhlIHNjYW4gZGVzY3JpcHRvci4KClRoaXMgY29tbWl0IGltcGxlbWVu dHMgb24tYWNjZXNzIFZNIHNldHRpbmcgZm9yIHNlcXVlbnRpYWwgc2NhbnMgYXMgd2VsbAphcyBm b3IgdGhlIHVuZGVybHlpbmcgaGVhcCByZWxhdGlvbiBpbiBpbmRleCBzY2FucyBhbmQgYml0bWFw IGhlYXAKc2NhbnMuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBn bWFpbC5jb20+ClJldmlld2VkLWJ5OiBLaXJpbGwgUmVzaGtlIDxyZXNoa2VraXJpbGxAZ21haWwu Y29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL2ZsYXQvQ0FBS1J1X1pNdzZOcGRf cW0yS00lMkJGd1EzY01PTXgxRGgzVk1ocDgtVjdTT0x4ZEs5LWclNDBtYWlsLmdtYWlsLmNvbQot LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8IDE1ICsr Ky0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICAgICB8IDE1ICsr Ky0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgICAgICB8IDczICsr KysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMgICAg ICAgICAgICB8IDQ2ICsrKysrKysrKysrKwogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxl YW0uYyAgICAgICAgICAgIHwgMzkgKysrKysrKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y01haW4uYyAgICAgICAgICAgICAgIHwgIDQgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0 aWxzLmMgICAgICAgICAgICAgIHwgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1h cEhlYXBzY2FuLmMgICAgIHwgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNj YW4uYyAgICAgICAgICB8IDE4ICsrKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nh bi5jICAgICAgICAgICAgfCAyNCArKysrLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oICAg ICAgICAgICAgICAgICAgICB8IDExICsrKwogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAg ICAgICAgICAgICAgICAgIHwgMjQgKysrKystCiBzcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5o ICAgICAgICAgICAgICAgICAgfCAgNiArKwogc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCAg ICAgICAgICAgICAgICAgIHwgMzAgKysrKysrKy0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oICAgICAgICAgICAgICAgICB8ICA2ICsrCiAuLi4vdC8wMzVfc3RhbmRieV9sb2dpY2FsX2Rl Y29kaW5nLnBsICAgICAgICAgfCAgMyArLQogMTYgZmlsZXMgY2hhbmdlZCwgMjg0IGluc2VydGlv bnMoKyksIDM5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggYTBj NTkyM2E1NjMuLjI2MGY5ODFkNDU3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtNTU1 LDYgKzU1NSw3IEBAIGhlYXBfcHJlcGFyZV9wYWdlc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQog CUJ1ZmZlcgkJYnVmZmVyID0gc2Nhbi0+cnNfY2J1ZjsKIAlCbG9ja051bWJlciBibG9jayA9IHNj YW4tPnJzX2NibG9jazsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKKwlCdWZmZXIJICAgKnZtYnVmZmVy ID0gTlVMTDsKIAlQYWdlCQlwYWdlOwogCWludAkJCWxpbmVzOwogCWJvb2wJCWFsbF92aXNpYmxl OwpAQCAtNTY5LDcgKzU3MCw5IEBAIGhlYXBfcHJlcGFyZV9wYWdlc2NhbihUYWJsZVNjYW5EZXNj IHNzY2FuKQogCS8qCiAJICogUHJ1bmUgYW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGZvciB0aGUg d2hvbGUgcGFnZSwgaWYgcG9zc2libGUuCiAJICovCi0JaGVhcF9wYWdlX3BydW5lX29wdChzY2Fu LT5yc19iYXNlLnJzX3JkLCBidWZmZXIpOworCWlmIChzc2Nhbi0+cnNfZmxhZ3MgJiBTT19BTExP V19WTV9TRVQpCisJCXZtYnVmZmVyID0gJnNjYW4tPnJzX3ZtYnVmZmVyOworCWhlYXBfcGFnZV9w cnVuZV9vcHQoc2Nhbi0+cnNfYmFzZS5yc19yZCwgYnVmZmVyLCB2bWJ1ZmZlcik7CiAKIAkvKgog CSAqIFdlIG11c3QgaG9sZCBzaGFyZSBsb2NrIG9uIHRoZSBidWZmZXIgY29udGVudCB3aGlsZSBl eGFtaW5pbmcgdHVwbGUKQEAgLTEyNDYsNiArMTI0OSw3IEBAIGhlYXBfYmVnaW5zY2FuKFJlbGF0 aW9uIHJlbGF0aW9uLCBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJCQkJCQkJICBzaXplb2Yo VEJNSXRlcmF0ZVJlc3VsdCkpOwogCX0KIAorCXNjYW4tPnJzX3ZtYnVmZmVyID0gSW52YWxpZEJ1 ZmZlcjsKIAogCXJldHVybiAoVGFibGVTY2FuRGVzYykgc2NhbjsKIH0KQEAgLTEyODQsNiArMTI4 OCwxMiBAQCBoZWFwX3Jlc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuLCBTY2FuS2V5IGtleSwgYm9v bCBzZXRfcGFyYW1zLAogCQlzY2FuLT5yc19jYnVmID0gSW52YWxpZEJ1ZmZlcjsKIAl9CiAKKwlp ZiAoQnVmZmVySXNWYWxpZChzY2FuLT5yc192bWJ1ZmZlcikpCisJeworCQlSZWxlYXNlQnVmZmVy KHNjYW4tPnJzX3ZtYnVmZmVyKTsKKwkJc2Nhbi0+cnNfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVy OworCX0KKwogCS8qCiAJICogU09fVFlQRV9CSVRNQVBTQ0FOIHdvdWxkIGJlIGNsZWFuZWQgdXAg aGVyZSwgYnV0IGl0IGRvZXMgbm90IGhvbGQgYW55CiAJICogYWRkaXRpb25hbCBkYXRhIHZzIGEg bm9ybWFsIEhlYXBTY2FuCkBAIC0xMzE2LDYgKzEzMjYsOSBAQCBoZWFwX2VuZHNjYW4oVGFibGVT Y2FuRGVzYyBzc2NhbikKIAlpZiAoQnVmZmVySXNWYWxpZChzY2FuLT5yc19jYnVmKSkKIAkJUmVs ZWFzZUJ1ZmZlcihzY2FuLT5yc19jYnVmKTsKIAorCWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4tPnJz X3ZtYnVmZmVyKSkKKwkJUmVsZWFzZUJ1ZmZlcihzY2FuLT5yc192bWJ1ZmZlcik7CisKIAkvKgog CSAqIE11c3QgZnJlZSB0aGUgcmVhZCBzdHJlYW0gYmVmb3JlIGZyZWVpbmcgdGhlIEJ1ZmZlckFj Y2Vzc1N0cmF0ZWd5LgogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVy LmMKaW5kZXggYmNiYWM4NDRiYjYuLmYwNWI5ZTQ5NjhkIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTg1LDYgKzg1LDcgQEAgaGVhcGFtX2luZGV4X2ZldGNo X2JlZ2luKFJlbGF0aW9uIHJlbCkKIAogCWhzY2FuLT54c19iYXNlLnJlbCA9IHJlbDsKIAloc2Nh bi0+eHNfY2J1ZiA9IEludmFsaWRCdWZmZXI7CisJaHNjYW4tPnhzX3ZtYnVmZmVyID0gSW52YWxp ZEJ1ZmZlcjsKIAogCXJldHVybiAmaHNjYW4tPnhzX2Jhc2U7CiB9CkBAIC05OSw2ICsxMDAsMTIg QEAgaGVhcGFtX2luZGV4X2ZldGNoX3Jlc2V0KEluZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW4pCiAJ CVJlbGVhc2VCdWZmZXIoaHNjYW4tPnhzX2NidWYpOwogCQloc2Nhbi0+eHNfY2J1ZiA9IEludmFs aWRCdWZmZXI7CiAJfQorCisJaWYgKEJ1ZmZlcklzVmFsaWQoaHNjYW4tPnhzX3ZtYnVmZmVyKSkK Kwl7CisJCVJlbGVhc2VCdWZmZXIoaHNjYW4tPnhzX3ZtYnVmZmVyKTsKKwkJaHNjYW4tPnhzX3Zt YnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKKwl9CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xMzgsNyAr MTQ1LDggQEAgaGVhcGFtX2luZGV4X2ZldGNoX3R1cGxlKHN0cnVjdCBJbmRleEZldGNoVGFibGVE YXRhICpzY2FuLAogCQkgKiBQcnVuZSBwYWdlLCBidXQgb25seSBpZiB3ZSB3ZXJlbid0IGFscmVh ZHkgb24gdGhpcyBwYWdlCiAJCSAqLwogCQlpZiAocHJldl9idWYgIT0gaHNjYW4tPnhzX2NidWYp Ci0JCQloZWFwX3BhZ2VfcHJ1bmVfb3B0KGhzY2FuLT54c19iYXNlLnJlbCwgaHNjYW4tPnhzX2Ni dWYpOworCQkJaGVhcF9wYWdlX3BydW5lX29wdChoc2Nhbi0+eHNfYmFzZS5yZWwsIGhzY2FuLT54 c19jYnVmLAorCQkJCQkJCQlzY2FuLT5tb2RpZmllc19iYXNlX3JlbCA/IE5VTEwgOiAmaHNjYW4t PnhzX3ZtYnVmZmVyKTsKIAl9CiAKIAkvKiBPYnRhaW4gc2hhcmUtbG9jayBvbiB0aGUgYnVmZmVy IHNvIHdlIGNhbiBleGFtaW5lIHZpc2liaWxpdHkgKi8KQEAgLTI0NzEsNiArMjQ3OSw3IEBAIEJp dG1hcEhlYXBTY2FuTmV4dEJsb2NrKFRhYmxlU2NhbkRlc2Mgc2NhbiwKIAlUQk1JdGVyYXRlUmVz dWx0ICp0Ym1yZXM7CiAJT2Zmc2V0TnVtYmVyIG9mZnNldHNbVEJNX01BWF9UVVBMRVNfUEVSX1BB R0VdOwogCWludAkJCW5vZmZzZXRzID0gLTE7CisJQnVmZmVyCSAgICp2bWJ1ZmZlciA9IE5VTEw7 CiAKIAlBc3NlcnQoc2Nhbi0+cnNfZmxhZ3MgJiBTT19UWVBFX0JJVE1BUFNDQU4pOwogCUFzc2Vy dChoc2Nhbi0+cnNfcmVhZF9zdHJlYW0pOwpAQCAtMjUxNyw3ICsyNTI2LDkgQEAgQml0bWFwSGVh cFNjYW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBzY2FuLAogCS8qCiAJICogUHJ1bmUgYW5kIHJl cGFpciBmcmFnbWVudGF0aW9uIGZvciB0aGUgd2hvbGUgcGFnZSwgaWYgcG9zc2libGUuCiAJICov Ci0JaGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19yZCwgYnVmZmVyKTsKKwlpZiAoc2Nhbi0+ cnNfZmxhZ3MgJiBTT19BTExPV19WTV9TRVQpCisJCXZtYnVmZmVyID0gJmhzY2FuLT5yc192bWJ1 ZmZlcjsKKwloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX3JkLCBidWZmZXIsIHZtYnVmZmVy KTsKIAogCS8qCiAJICogV2UgbXVzdCBob2xkIHNoYXJlIGxvY2sgb24gdGhlIGJ1ZmZlciBjb250 ZW50IHdoaWxlIGV4YW1pbmluZyB0dXBsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpp bmRleCA3ZjQ1N2FiZjhlMS4uNjMxZWI0NWJjOTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5l aGVhcC5jCkBAIC0xODgsNyArMTg4LDkgQEAgc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfc2V0 X3ZpcyhSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJCQkJICAgQnVmZmVyIGhlYXBfYnVmLAogCQkJ CQkJCQkgICBCdWZmZXIgdm1idWZmZXIsCiAJCQkJCQkJCSAgIGJvb2wgYmxrX2tub3duX2F2LAot CQkJCQkJCQkgICBjb25zdCBQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJCQkJCQkgICBQcnVuZVJl YXNvbiByZWFzb24sCisJCQkJCQkJCSAgIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLAor CQkJCQkJCQkgICBQcnVuZVN0YXRlICpwcnN0YXRlLAogCQkJCQkJCQkgICB1aW50OCAqdm1mbGFn cywKIAkJCQkJCQkJICAgYm9vbCAqZG9fc2V0X3BkX3Zpcyk7CiAKQEAgLTIwMyw5ICsyMDUsMTMg QEAgc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhSZWxhdGlvbiByZWxhdGlvbiwK ICAqIGlmIHRoZXJlJ3Mgbm90IGFueSB1c2UgaW4gcHJ1bmluZy4KICAqCiAgKiBDYWxsZXIgbXVz dCBoYXZlIHBpbiBvbiB0aGUgYnVmZmVyLCBhbmQgbXVzdCAqbm90KiBoYXZlIGEgbG9jayBvbiBp dC4KKyAqCisgKiBJZiB2bWJ1ZmZlciBpcyBub3QgTlVMTCwgaXQgaXMgb2theSBmb3IgcHJ1bmlu ZyB0byBzZXQgdGhlIHZpc2liaWxpdHkgbWFwIGlmCisgKiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJs ZS4gV2Ugd2lsbCB0YWtlIGNhcmUgb2YgcGlubmluZyBhbmQsIGlmIG5lZWRlZCwKKyAqIHJlYWRp bmcgaW4gdGhlIHBhZ2Ugb2YgdGhlIHZpc2liaWxpdHkgbWFwLgogICovCiB2b2lkCi1oZWFwX3Bh Z2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQoraGVhcF9wYWdl X3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwgQnVmZmVyICp2bWJ1 ZmZlcikKIHsKIAlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCVRyYW5zYWN0 aW9uSWQgcHJ1bmVfeGlkOwpAQCAtMjcxLDEyICsyNzcsMjEgQEAgaGVhcF9wYWdlX3BydW5lX29w dChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikKIAkJCVBydW5lRnJlZXplUGFyYW1z IHBhcmFtczsKIAkJCVBydW5lRnJlZXplUmVzdWx0IHByZXN1bHQ7CiAKKwkJCXBhcmFtcy5vcHRp b25zID0gMDsKKwkJCXBhcmFtcy52bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisKKwkJCWlmICh2 bWJ1ZmZlcikKKwkJCXsKKwkJCQl2aXNpYmlsaXR5bWFwX3BpbihyZWxhdGlvbiwgQnVmZmVyR2V0 QmxvY2tOdW1iZXIoYnVmZmVyKSwgdm1idWZmZXIpOworCQkJCXBhcmFtcy5vcHRpb25zID0gSEVB UF9QQUdFX1BSVU5FX1VQREFURV9WSVM7CisJCQkJcGFyYW1zLnZtYnVmZmVyID0gKnZtYnVmZmVy OworCQkJfQorCiAJCQlwYXJhbXMucmVsYXRpb24gPSByZWxhdGlvbjsKIAkJCXBhcmFtcy5idWZm ZXIgPSBidWZmZXI7CiAJCQlwYXJhbXMucmVhc29uID0gUFJVTkVfT05fQUNDRVNTOwogCQkJcGFy YW1zLnZpc3Rlc3QgPSB2aXN0ZXN0OwogCQkJcGFyYW1zLmN1dG9mZnMgPSBOVUxMOwotCQkJcGFy YW1zLnZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIAkJCXBhcmFtcy5ibGtfa25vd25fYXYgPSBm YWxzZTsKIAogCQkJLyoKQEAgLTQ1Niw2ICs0NzEsOSBAQCBoZWFwX3BhZ2Vfd2lsbF9mcmVlemUo UmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAgKiBoYXZlIGV4YW1pbmVkIHRoaXMg cGFnZeKAmXMgVk0gYml0cyAoZS5nLiwgVkFDVVVNIGluIHRoZSBwcmV2aW91cwogICogaGVhcF92 YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgY2FsbCkgYW5kIGNhbiBwYXNzIHRoYXQgYWxvbmcuCiAgKgor ICogVGhpcyBzaG91bGQgYmUgY2FsbGVkIG9ubHkgYWZ0ZXIgZG9fZnJlZXplIGhhcyBiZWVuIGRl Y2lkZWQgKGFuZCBkb19wcnVuZQorICogaGFzIGJlZW4gc2V0KSwgYXMgdGhlc2UgZmFjdG9yIGlu dG8gb3VyIGhldXJpc3RpYy1iYXNlZCBkZWNpc2lvbi4KKyAqCiAgKiBSZXR1cm5zIHRydWUgaWYg b25lIG9yIGJvdGggVk0gYml0cyBzaG91bGQgYmUgc2V0LCBhbG9uZyB3aXRoIHRoZSBkZXNpcmVk CiAgKiBmbGFncyBpbiAqdm1mbGFncy4gQWxzbyBpbmRpY2F0ZXMgdmlhIGRvX3NldF9wZF92aXMg d2hldGhlciBQRF9BTExfVklTSUJMRQogICogc2hvdWxkIGJlIHNldCBvbiB0aGUgaGVhcCBwYWdl LgpAQCAtNDY2LDcgKzQ4NCw5IEBAIGhlYXBfcGFnZV93aWxsX3NldF92aXMoUmVsYXRpb24gcmVs YXRpb24sCiAJCQkJCSAgIEJ1ZmZlciBoZWFwX2J1ZiwKIAkJCQkJICAgQnVmZmVyIHZtYnVmZmVy LAogCQkJCQkgICBib29sIGJsa19rbm93bl9hdiwKLQkJCQkJICAgY29uc3QgUHJ1bmVTdGF0ZSAq cHJzdGF0ZSwKKwkJCQkJICAgUHJ1bmVSZWFzb24gcmVhc29uLAorCQkJCQkgICBib29sIGRvX3By dW5lLCBib29sIGRvX2ZyZWV6ZSwKKwkJCQkJICAgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKIAkJCQkJ ICAgdWludDggKnZtZmxhZ3MsCiAJCQkJCSAgIGJvb2wgKmRvX3NldF9wZF92aXMpCiB7CkBAIC00 ODIsNiArNTAyLDIzIEBAIGhlYXBfcGFnZV93aWxsX3NldF92aXMoUmVsYXRpb24gcmVsYXRpb24s CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKKwkvKgorCSAqIElmIHRoaXMgaXMgYW4gb24tYWNjZXNz IGNhbGwgYW5kIHdlJ3JlIG5vdCBhY3R1YWxseSBwcnVuaW5nLCBhdm9pZAorCSAqIHNldHRpbmcg dGhlIHZpc2liaWxpdHkgbWFwIGlmIGl0IHdvdWxkIG5ld2x5IGRpcnR5IHRoZSBoZWFwIHBhZ2Ug b3IsIGlmCisJICogdGhlIHBhZ2UgaXMgYWxyZWFkeSBkaXJ0eSwgaWYgZG9pbmcgc28gd291bGQg cmVxdWlyZSBpbmNsdWRpbmcgYQorCSAqIGZ1bGwtcGFnZSBpbWFnZSAoRlBJKSBvZiB0aGUgaGVh cCBwYWdlIGluIHRoZSBXQUwuIFRoaXMgc2l0dWF0aW9uCisJICogc2hvdWxkIGJlIHJhcmUsIGFz IG9uLWFjY2VzcyBwcnVuaW5nIGlzIG9ubHkgYXR0ZW1wdGVkIHdoZW4KKwkgKiBwZF9wcnVuZV94 aWQgaXMgdmFsaWQuCisJICovCisJaWYgKHJlYXNvbiA9PSBQUlVORV9PTl9BQ0NFU1MgJiYKKwkJ cHJzdGF0ZS0+YWxsX3Zpc2libGUgJiYKKwkJIWRvX3BydW5lICYmICFkb19mcmVlemUgJiYKKwkJ KCFCdWZmZXJJc0RpcnR5KGhlYXBfYnVmKSB8fCBYTG9nQ2hlY2tCdWZmZXJOZWVkc0JhY2t1cCho ZWFwX2J1ZikpKQorCXsKKwkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLT5hbGxfZnJv emVuID0gZmFsc2U7CisJCXJldHVybiBmYWxzZTsKKwl9CisKIAlpZiAocHJzdGF0ZS0+YWxsX3Zp c2libGUgJiYgIVBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSkKIAkJKmRvX3NldF9wZF92aXMg PSB0cnVlOwogCkBAIC01MDUsNiArNTQyLDExIEBAIGhlYXBfcGFnZV93aWxsX3NldF92aXMoUmVs YXRpb24gcmVsYXRpb24sCiAJICogcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIuICBIb3dldmVyLCBp dCdzIHBvc3NpYmxlIHRoYXQgaW4gdmFjdXVtIHRoZSBiaXQKIAkgKiBnb3QgY2xlYXJlZCBhZnRl ciBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3ZSBtdXN0CiAJICog cmVjaGVjayB3aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQgdGhlIFZNIGlz IGNvcnJ1cHQuCisJICoKKwkgKiBUaGlzIHdpbGwgbmV2ZXIgdHJpZ2dlciBmb3Igb24tYWNjZXNz IHBydW5pbmcgYmVjYXVzZSBpdCBjb3VsZG4ndCBoYXZlCisJICogZG9uZSBhIHByZXZpb3VzIHZp c2liaWxpdHkgbWFwIGxvb2t1cCBhbmQgdGh1cyB3aWxsIGFsd2F5cyBwYXNzCisJICogYmxrX2tu b3duX2F2IGFzIGZhbHNlLiBBIGZ1dHVyZSB2YWN1dW0gd2lsbCBoYXZlIHRvIHRha2UgY2FyZSBv ZiBmaXhpbmcKKwkgKiB0aGUgY29ycnVwdGlvbi4KIAkgKi8KIAllbHNlIGlmIChibGtfa25vd25f YXYgJiYgIVBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSAmJgogCQkJIHZpc2liaWxpdHltYXBf Z2V0X3N0YXR1cyhyZWxhdGlvbiwgaGVhcF9ibGssICZ2bWJ1ZmZlcikgIT0gMCkKQEAgLTkxMyw2 ICs5NTUsMTQgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMg KnBhcmFtcywKIAkJcHJzdGF0ZS5uZGVhZCA+IDAgfHwKIAkJcHJzdGF0ZS5udW51c2VkID4gMDsK IAorCS8qCisJICogRXZlbiBpZiB3ZSBkb24ndCBwcnVuZSBhbnl0aGluZywgaWYgd2UgZm91bmQg YSBuZXcgdmFsdWUgZm9yIHRoZQorCSAqIHBkX3BydW5lX3hpZCBmaWVsZCBvciB0aGUgcGFnZSB3 YXMgbWFya2VkIGZ1bGwsIHdlIHdpbGwgdXBkYXRlIHRoZSBoaW50CisJICogYml0LgorCSAqLwor CWRvX2hpbnRfcHJ1bmUgPSAoKFBhZ2VIZWFkZXIpIHBhZ2UpLT5wZF9wcnVuZV94aWQgIT0gcHJz dGF0ZS5uZXdfcHJ1bmVfeGlkIHx8CisJCVBhZ2VJc0Z1bGwocGFnZSk7CisKIAkvKgogCSAqIEFm dGVyIHByb2Nlc3NpbmcgYWxsIHRoZSBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZSwgaWYgdGhlIG5l d2VzdCB4bWluCiAJICogYW1vbmdzdCB0aGVtIGlzIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lLCB0 aGUgcGFnZSBjYW5ub3QgYmUKQEAgLTkyMywxNCArOTczLDYgQEAgaGVhcF9wYWdlX3BydW5lX2Fu ZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJIUdsb2JhbFZpc1hpZFZpc2li bGVUb0FsbChwcnN0YXRlLnZpc3Rlc3QsIHByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkKSkK IAkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNlOwogCi0J LyoKLQkgKiBFdmVuIGlmIHdlIGRvbid0IHBydW5lIGFueXRoaW5nLCBpZiB3ZSBmb3VuZCBhIG5l dyB2YWx1ZSBmb3IgdGhlCi0JICogcGRfcHJ1bmVfeGlkIGZpZWxkIG9yIHRoZSBwYWdlIHdhcyBt YXJrZWQgZnVsbCwgd2Ugd2lsbCB1cGRhdGUgdGhlIGhpbnQKLQkgKiBiaXQuCi0JICovCi0JZG9f aGludF9wcnVuZSA9ICgoUGFnZUhlYWRlcikgcGFnZSktPnBkX3BydW5lX3hpZCAhPSBwcnN0YXRl Lm5ld19wcnVuZV94aWQgfHwKLQkJUGFnZUlzRnVsbChwYWdlKTsKLQogCS8qCiAJICogRGVjaWRl IGlmIHdlIHdhbnQgdG8gZ28gYWhlYWQgd2l0aCBmcmVlemluZyBhY2NvcmRpbmcgdG8gdGhlIGZy ZWV6ZQogCSAqIHBsYW5zIHdlIHByZXBhcmVkLCBvciBub3QuCkBAIC05NzQsNiArMTAxNiw3IEBA IGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJ ICovCiAJZG9fc2V0X3ZtID0gaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhwYXJhbXMtPnJlbGF0aW9u LAogCQkJCQkJCQkJICAgYmxvY2tubywgYnVmZmVyLCB2bWJ1ZmZlciwgcGFyYW1zLT5ibGtfa25v d25fYXYsCisJCQkJCQkJCQkgICBwYXJhbXMtPnJlYXNvbiwgZG9fcHJ1bmUsIGRvX2ZyZWV6ZSwK IAkJCQkJCQkJCSAgICZwcnN0YXRlLCAmbmV3X3ZtYml0cywgJmRvX3NldF9wZF92aXMpOwogCiAJ LyogV2Ugc2hvdWxkIG9ubHkgc2V0IHRoZSBWTSBpZiBQRF9BTExfVklTSUJMRSBpcyBzZXQgb3Ig d2lsbCBiZSAqLwpAQCAtMjI1MCw3ICsyMjkzLDcgQEAgaGVhcF9sb2dfZnJlZXplX3BsYW4oSGVh cFR1cGxlRnJlZXplICp0dXBsZXMsIGludCBudHVwbGVzLAogCiAvKgogICogQ2FsY3VsYXRlIHRo ZSBjb25mbGljdCBob3Jpem9uIGZvciB0aGUgd2hvbGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1f U0NBTgotICogcmVjb3JkLgorICogb3IgWExPR19IRUFQMl9QUlVORV9PTl9BQ0NFU1MgcmVjb3Jk LgogICovCiBzdGF0aWMgVHJhbnNhY3Rpb25JZAogZ2V0X2NvbmZsaWN0X3hpZChib29sIGRvX3By dW5lLCBib29sIGRvX2ZyZWV6ZSwgYm9vbCBkb19zZXRfdm0sCkBAIC0yMzIwLDggKzIzNjMsOCBA QCBnZXRfY29uZmxpY3RfeGlkKGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLCBib29sIGRv X3NldF92bSwKICAqIC0gUmVhcGluZzogRHVyaW5nIHZhY3V1bSBwaGFzZSBJSUksIGl0ZW1zIHRo YXQgYXJlIGFscmVhZHkgTFBfREVBRCBhcmUKICAqICAgbWFya2VkIGFzIHVudXNlZC4KICAqCi0g KiAtIFZNIHVwZGF0ZXM6IEFmdGVyIHZhY3V1bSBwaGFzZXMgSSBhbmQgSUlJLCB0aGUgaGVhcCBw YWdlIG1heSBiZSBtYXJrZWQKLSAqICAgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4uCisgKiAt IFZNIHVwZGF0ZXM6IEFmdGVyIHZhY3V1bSBwaGFzZXMgSSBhbmQgSUlJIGFuZCBvbi1hY2Nlc3Ms IHRoZSBoZWFwIHBhZ2UKKyAqICAgbWF5IGJlIG1hcmtlZCBhbGwtdmlzaWJsZSBhbmQgYWxsLWZy b3plbi4KICAqCiAgKiBUaGVzZSBjaGFuZ2VzIGFsbCBoYXBwZW4gdG9nZXRoZXIsIHNvIHdlIHVz ZSBhIHNpbmdsZSBXQUwgcmVjb3JkIGZvciB0aGVtCiAgKiBhbGwuCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4 L2luZGV4YW0uYwppbmRleCAwNDkyZDkyZDIzYi4uOGQ1ODJhOGVhZmQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2luZGV4L2luZGV4YW0uYwpAQCAtMjg5LDYgKzI4OSwzMiBAQCBpbmRleF9iZWdpbnNjYW4oUmVs YXRpb24gaGVhcFJlbGF0aW9uLAogCXJldHVybiBzY2FuOwogfQogCisvKgorICogU2ltaWxhciB0 byBpbmRleF9iZWdpbnNjYW4oKSwgYnV0IGFsbG93cyB0aGUgY2FsbGVyIHRvIGluZGljYXRlIHdo ZXRoZXIgdGhlCisgKiBxdWVyeSBtb2RpZmllcyB0aGUgdW5kZXJseWluZyBiYXNlIHJlbGF0aW9u LiBUaGlzIGlzIHVzZWQgd2hlbiB0aGUgY2FsbGVyCisgKiB3YW50cyB0byBhdHRlbXB0IG1hcmtp bmcgcGFnZXMgaW4gdGhlIGJhc2UgcmVsYXRpb24gYXMgYWxsLXZpc2libGUgaW4gdGhlCisgKiB2 aXNpYmlsaXR5IG1hcCBkdXJpbmcgb24tYWNjZXNzIHBydW5pbmcuCisgKi8KK0luZGV4U2NhbkRl c2MKK2luZGV4X2JlZ2luc2Nhbl92bXNldChSZWxhdGlvbiBoZWFwUmVsYXRpb24sCisJCQkJCSAg UmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKKwkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKKwkJCQkJ ICBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQsCisJCQkJCSAgaW50IG5rZXlz LCBpbnQgbm9yZGVyYnlzLCBib29sIG1vZGlmaWVzX2Jhc2VfcmVsKQoreworCUluZGV4U2NhbkRl c2Mgc2NhbjsKKworCXNjYW4gPSBpbmRleF9iZWdpbnNjYW4oaGVhcFJlbGF0aW9uLAorCQkJCQkJ ICAgaW5kZXhSZWxhdGlvbiwKKwkJCQkJCSAgIHNuYXBzaG90LAorCQkJCQkJICAgaW5zdHJ1bWVu dCwKKwkJCQkJCSAgIG5rZXlzLCBub3JkZXJieXMpOworCisJc2Nhbi0+eHNfaGVhcGZldGNoLT5t b2RpZmllc19iYXNlX3JlbCA9IG1vZGlmaWVzX2Jhc2VfcmVsOworCisJcmV0dXJuIHNjYW47Cit9 CisKIC8qCiAgKiBpbmRleF9iZWdpbnNjYW5fYml0bWFwIC0gc3RhcnQgYSBzY2FuIG9mIGFuIGlu ZGV4IHdpdGggYW1nZXRiaXRtYXAKICAqCkBAIC02MjAsNiArNjQ2LDI2IEBAIGluZGV4X2JlZ2lu c2Nhbl9wYXJhbGxlbChSZWxhdGlvbiBoZWFwcmVsLCBSZWxhdGlvbiBpbmRleHJlbCwKIAlyZXR1 cm4gc2NhbjsKIH0KIAorLyoKKyAqIFBhcmFsbGVsIHZlcnNpb24gb2YgaW5kZXhfYmVnaW5zY2Fu X3Ztc2V0KCkKKyAqLworSW5kZXhTY2FuRGVzYworaW5kZXhfYmVnaW5zY2FuX3BhcmFsbGVsX3Zt c2V0KFJlbGF0aW9uIGhlYXByZWwsIFJlbGF0aW9uIGluZGV4cmVsLAorCQkJCQkJCSAgIEluZGV4 U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKKwkJCQkJCQkgICBpbnQgbmtleXMsIGlu dCBub3JkZXJieXMsCisJCQkJCQkJICAgUGFyYWxsZWxJbmRleFNjYW5EZXNjIHBzY2FuLAorCQkJ CQkJCSAgIGJvb2wgbW9kaWZpZXNfYmFzZV9yZWwpCit7CisJSW5kZXhTY2FuRGVzYyBzY2FuOwor CisJc2NhbiA9IGluZGV4X2JlZ2luc2Nhbl9wYXJhbGxlbChoZWFwcmVsLCBpbmRleHJlbCwKKwkJ CQkJCQkJCWluc3RydW1lbnQsCisJCQkJCQkJCQlua2V5cywgbm9yZGVyYnlzLAorCQkJCQkJCQkJ cHNjYW4pOworCXNjYW4tPnhzX2hlYXBmZXRjaC0+bW9kaWZpZXNfYmFzZV9yZWwgPSBtb2RpZmll c19iYXNlX3JlbDsKKwlyZXR1cm4gc2NhbjsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLQogICog aW5kZXhfZ2V0bmV4dF90aWQgLSBnZXQgdGhlIG5leHQgVElEIGZyb20gYSBzY2FuCiAgKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKaW5kZXggNWU0MTQwNDkzN2UuLjNlM2EwZjcyYTcxIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKQEAgLTQ5LDYgKzQ5LDEwIEBACiBjaGFyCSAg ICpkZWZhdWx0X3RhYmxlX2FjY2Vzc19tZXRob2QgPSBERUZBVUxUX1RBQkxFX0FDQ0VTU19NRVRI T0Q7CiBib29sCQlzeW5jaHJvbml6ZV9zZXFzY2FucyA9IHRydWU7CiAKKy8qIEhlbHBlciBmb3Ig dGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKCkgYW5kIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF92 bXNldCgpICovCitzdGF0aWMgVGFibGVTY2FuRGVzYyB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWxf Y29tbW9uKFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4sCisJ CQkJCQkJCQkJCQkJIHVpbnQzMiBmbGFncyk7CisKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog ICogU2xvdCBmdW5jdGlvbnMuCkBAIC0xNjIsMTIgKzE2NiwxNCBAQCB0YWJsZV9wYXJhbGxlbHNj YW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbiwK IAl9CiB9CiAKLVRhYmxlU2NhbkRlc2MKLXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlv biByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQorLyoKKyAqIENvbW1vbiBo ZWxwZXIgZm9yIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbCgpIGFuZCB0YWJsZV9iZWdpbnNjYW5f cGFyYWxsZWxfdm1zZXQoKQorICovCitzdGF0aWMgVGFibGVTY2FuRGVzYwordGFibGVfYmVnaW5z Y2FuX3BhcmFsbGVsX2NvbW1vbihSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5E ZXNjIHBzY2FuLAorCQkJCQkJCQl1aW50MzIgZmxhZ3MpCiB7CiAJU25hcHNob3QJc25hcHNob3Q7 Ci0JdWludDMyCQlmbGFncyA9IFNPX1RZUEVfU0VRU0NBTiB8Ci0JCVNPX0FMTE9XX1NUUkFUIHwg U09fQUxMT1dfU1lOQyB8IFNPX0FMTE9XX1BBR0VNT0RFOwogCiAJQXNzZXJ0KFJlbEZpbGVMb2Nh dG9yRXF1YWxzKHJlbGF0aW9uLT5yZF9sb2NhdG9yLCBwc2Nhbi0+cGhzX2xvY2F0b3IpKTsKIApA QCAtMTg4LDYgKzE5NCwzMSBAQCB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24gcmVs YXRpb24sIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbikKIAkJCQkJCQkJCQkJcHNjYW4sIGZs YWdzKTsKIH0KIAorVGFibGVTY2FuRGVzYwordGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0 aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4pCit7CisJdWludDMyCQlm bGFncyA9IFNPX1RZUEVfU0VRU0NBTiB8CisJCVNPX0FMTE9XX1NUUkFUIHwgU09fQUxMT1dfU1lO QyB8IFNPX0FMTE9XX1BBR0VNT0RFOworCisJcmV0dXJuIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxl bF9jb21tb24ocmVsYXRpb24sIHBzY2FuLCBmbGFncyk7Cit9CisKKy8qCisgKiBQYXJhbGxlbCB2 ZXJzaW9uIG9mIHRhYmxlX2JlZ2luc2Nhbl92bXNldCgpCisgKi8KK1RhYmxlU2NhbkRlc2MKK3Rh YmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNldChSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxU YWJsZVNjYW5EZXNjIHBzY2FuLAorCQkJCQkJCSAgIGJvb2wgbW9kaWZpZXNfcmVsKQoreworCXVp bnQzMgkJZmxhZ3MgPSBTT19UWVBFX1NFUVNDQU4gfAorCQlTT19BTExPV19TVFJBVCB8IFNPX0FM TE9XX1NZTkMgfCBTT19BTExPV19QQUdFTU9ERTsKKworCWlmICghbW9kaWZpZXNfcmVsKQorCQlm bGFncyB8PSBTT19BTExPV19WTV9TRVQ7CisKKwlyZXR1cm4gdGFibGVfYmVnaW5zY2FuX3BhcmFs bGVsX2NvbW1vbihyZWxhdGlvbiwgcHNjYW4sIGZsYWdzKTsKK30KKwogCiAvKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgKiBJbmRleCBzY2FuIHJlbGF0ZWQgZnVuY3Rpb25zLgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMKaW5kZXggMjdjOWVlYzY5N2IuLjA2MzBhNWFmNzllIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMKQEAgLTkxNiw2ICs5MTYsMTAgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURl c2MsIGludCBlZmxhZ3MpCiAJCQkJCWJyZWFrOwogCQkJfQogCisJCQkvKiBJZiBpdCBoYXMgYSBy b3dtYXJrLCB0aGUgcmVsYXRpb24gaXMgbW9kaWZpZWQgKi8KKwkJCWVzdGF0ZS0+ZXNfbW9kaWZp ZWRfcmVsaWRzID0gYm1zX2FkZF9tZW1iZXIoZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMsCisJ CQkJCQkJCQkJCQkJCXJjLT5ydGkpOworCiAJCQkvKiBDaGVjayB0aGF0IHJlbGF0aW9uIGlzIGEg bGVnYWwgdGFyZ2V0IGZvciBtYXJraW5nICovCiAJCQlpZiAocmVsYXRpb24pCiAJCQkJQ2hlY2tW YWxpZFJvd01hcmtSZWwocmVsYXRpb24sIHJjLT5tYXJrVHlwZSk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNV dGlscy5jCmluZGV4IGZkYzY1YzJiNDJiLi4yOGEwNmRjZDI0NCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1V0aWxzLmMKQEAgLTg5Myw2ICs4OTMsOCBAQCBFeGVjSW5pdFJlc3VsdFJlbGF0aW9uKEVTdGF0 ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQllc3RhdGUtPmVzX3Jl c3VsdF9yZWxhdGlvbnMgPSAoUmVzdWx0UmVsSW5mbyAqKikKIAkJCXBhbGxvYzAoZXN0YXRlLT5l c19yYW5nZV90YWJsZV9zaXplICogc2l6ZW9mKFJlc3VsdFJlbEluZm8gKikpOwogCWVzdGF0ZS0+ ZXNfcmVzdWx0X3JlbGF0aW9uc1tydGkgLSAxXSA9IHJlc3VsdFJlbEluZm87CisJZXN0YXRlLT5l c19tb2RpZmllZF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcihlc3RhdGUtPmVzX21vZGlmaWVkX3Jl bGlkcywKKwkJCQkJCQkJCQkJCXJ0aSk7CiAKIAkvKgogCSAqIFNhdmluZyBpbiB0aGUgbGlzdCBh bGxvd3MgdG8gYXZvaWQgbmVlZGxlc3NseSB0cmF2ZXJzaW5nIHRoZSB3aG9sZQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwppbmRleCBiZjI0ZjNkN2ZlMC4uYWY2ZGI5 Zjc5MTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nh bi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCkBAIC0x MDUsMTEgKzEwNSwxNiBAQCBCaXRtYXBUYWJsZVNjYW5TZXR1cChCaXRtYXBIZWFwU2NhblN0YXRl ICpub2RlKQogCSAqLwogCWlmICghbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKQogCXsKKwkJ Ym9vbAkJbW9kaWZpZXNfcmVsID0KKwkJCWJtc19pc19tZW1iZXIoKChTY2FuICopIG5vZGUtPnNz LnBzLnBsYW4pLT5zY2FucmVsaWQsCisJCQkJCQkgIG5vZGUtPnNzLnBzLnN0YXRlLT5lc19tb2Rp ZmllZF9yZWxpZHMpOworCiAJCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9CiAJCQl0YWJs ZV9iZWdpbnNjYW5fYm0obm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAogCQkJCQkJCSAgIG5v ZGUtPnNzLnBzLnN0YXRlLT5lc19zbmFwc2hvdCwKIAkJCQkJCQkgICAwLAotCQkJCQkJCSAgIE5V TEwpOworCQkJCQkJCSAgIE5VTEwsCisJCQkJCQkJICAgbW9kaWZpZXNfcmVsKTsKIAl9CiAKIAlu b2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MtPnN0LnJzX3RibWl0ZXJhdG9yID0gdGJtaXRlcmF0 b3I7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKaW5kZXggZjM2OTI5ZGVlYzMuLmNi ZDFlY2FhMTVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2Fu LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCkBAIC0xMDIsMTYg KzEwMiwyMiBAQCBJbmRleE5leHQoSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAKIAlpZiAoc2NhbmRl c2MgPT0gTlVMTCkKIAl7CisKKwkJYm9vbAkJbW9kaWZpZXNfYmFzZV9yZWwgPQorCQkJYm1zX2lz X21lbWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxpZCwKKwkJCQkJCSAg ZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMpOworCiAJCS8qCiAJCSAqIFdlIHJlYWNoIGhlcmUg aWYgdGhlIGluZGV4IHNjYW4gaXMgbm90IHBhcmFsbGVsLCBvciBpZiB3ZSdyZQogCQkgKiBzZXJp YWxseSBleGVjdXRpbmcgYW4gaW5kZXggc2NhbiB0aGF0IHdhcyBwbGFubmVkIHRvIGJlIHBhcmFs bGVsLgogCQkgKi8KLQkJc2NhbmRlc2MgPSBpbmRleF9iZWdpbnNjYW4obm9kZS0+c3Muc3NfY3Vy cmVudFJlbGF0aW9uLAotCQkJCQkJCQkgICBub2RlLT5pc3NfUmVsYXRpb25EZXNjLAotCQkJCQkJ CQkgICBlc3RhdGUtPmVzX3NuYXBzaG90LAotCQkJCQkJCQkgICAmbm9kZS0+aXNzX0luc3RydW1l bnQsCi0JCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1TY2FuS2V5cywKLQkJCQkJCQkJICAgbm9kZS0+ aXNzX051bU9yZGVyQnlLZXlzKTsKKwkJc2NhbmRlc2MgPSBpbmRleF9iZWdpbnNjYW5fdm1zZXQo bm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAorCQkJCQkJCQkJCSBub2RlLT5pc3NfUmVsYXRp b25EZXNjLAorCQkJCQkJCQkJCSBlc3RhdGUtPmVzX3NuYXBzaG90LAorCQkJCQkJCQkJCSAmbm9k ZS0+aXNzX0luc3RydW1lbnQsCisJCQkJCQkJCQkJIG5vZGUtPmlzc19OdW1TY2FuS2V5cywKKwkJ CQkJCQkJCQkgbm9kZS0+aXNzX051bU9yZGVyQnlLZXlzLAorCQkJCQkJCQkJCSBtb2RpZmllc19i YXNlX3JlbCk7CiAKIAkJbm9kZS0+aXNzX1NjYW5EZXNjID0gc2NhbmRlc2M7CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlU2Vxc2Nhbi5jCmluZGV4IDk0MDQ3ZDI5NDMwLi5mZDY5Mjc1YzE4MSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCkBAIC02NSwxMyArNjUsMTggQEAgU2VxTmV4dChTZXFT Y2FuU3RhdGUgKm5vZGUpCiAKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7CisJCWJvb2wJCW1v ZGlmaWVzX3JlbCA9CisJCQlibXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFu KS0+c2NhbnJlbGlkLAorCQkJCQkJICBlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyk7CisKIAkJ LyoKIAkJICogV2UgcmVhY2ggaGVyZSBpZiB0aGUgc2NhbiBpcyBub3QgcGFyYWxsZWwsIG9yIGlm IHdlJ3JlIHNlcmlhbGx5CiAJCSAqIGV4ZWN1dGluZyBhIHNjYW4gdGhhdCB3YXMgcGxhbm5lZCB0 byBiZSBwYXJhbGxlbC4KIAkJICovCi0JCXNjYW5kZXNjID0gdGFibGVfYmVnaW5zY2FuKG5vZGUt PnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKLQkJCQkJCQkJICAgZXN0YXRlLT5lc19zbmFwc2hvdCwK LQkJCQkJCQkJICAgMCwgTlVMTCk7CisJCXNjYW5kZXNjID0gdGFibGVfYmVnaW5zY2FuX3Ztc2V0 KG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKKwkJCQkJCQkJCQkgZXN0YXRlLT5lc19zbmFw c2hvdCwKKwkJCQkJCQkJCQkgMCwgTlVMTCwgbW9kaWZpZXNfcmVsKTsKKwogCQlub2RlLT5zcy5z c19jdXJyZW50U2NhbkRlc2MgPSBzY2FuZGVzYzsKIAl9CiAKQEAgLTM2Niw2ICszNzEsNyBAQCBF eGVjU2VxU2NhbkluaXRpYWxpemVEU00oU2VxU2NhblN0YXRlICpub2RlLAogCQkJCQkJIFBhcmFs bGVsQ29udGV4dCAqcGN4dCkKIHsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBzLnN0 YXRlOworCWJvb2wJCW1vZGlmaWVzX3JlbDsKIAlQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW47 CiAKIAlwc2NhbiA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBub2RlLT5wc2Nhbl9sZW4p OwpAQCAtMzczLDggKzM3OSwxMSBAQCBFeGVjU2VxU2NhbkluaXRpYWxpemVEU00oU2VxU2NhblN0 YXRlICpub2RlLAogCQkJCQkJCQkgIHBzY2FuLAogCQkJCQkJCQkgIGVzdGF0ZS0+ZXNfc25hcHNo b3QpOwogCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgbm9kZS0+c3MucHMucGxhbi0+cGxhbl9u b2RlX2lkLCBwc2Nhbik7CisJbW9kaWZpZXNfcmVsID0gYm1zX2lzX21lbWJlcigoKFNjYW4gKikg bm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxpZCwKKwkJCQkJCQkJIGVzdGF0ZS0+ZXNfbW9kaWZp ZWRfcmVsaWRzKTsKIAlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPQotCQl0YWJsZV9iZWdp bnNjYW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLCBwc2Nhbik7CisJCXRh YmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNldChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24s IHBzY2FuLAorCQkJCQkJCQkJICAgbW9kaWZpZXNfcmVsKTsKIH0KIAogLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAt NDA0LDggKzQxMywxMyBAQCBFeGVjU2VxU2NhbkluaXRpYWxpemVXb3JrZXIoU2VxU2NhblN0YXRl ICpub2RlLAogCQkJCQkJCVBhcmFsbGVsV29ya2VyQ29udGV4dCAqcHdjeHQpCiB7CiAJUGFyYWxs ZWxUYWJsZVNjYW5EZXNjIHBzY2FuOworCWJvb2wJCW1vZGlmaWVzX3JlbCA9CisJCWJtc19pc19t ZW1iZXIoKChTY2FuICopIG5vZGUtPnNzLnBzLnBsYW4pLT5zY2FucmVsaWQsCisJCQkJCSAgbm9k ZS0+c3MucHMuc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyk7CiAKIAlwc2NhbiA9IHNobV90b2Nf bG9va3VwKHB3Y3h0LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgZmFsc2Up OwogCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9Ci0JCXRhYmxlX2JlZ2luc2Nhbl9wYXJh bGxlbChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sIHBzY2FuKTsKKwkJdGFibGVfYmVnaW5z Y2FuX3BhcmFsbGVsX3Ztc2V0KG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKKwkJCQkJCQkJ CSAgIHBzY2FuLAorCQkJCQkJCQkJICAgbW9kaWZpZXNfcmVsKTsKIH0KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKaW5k ZXggOTIwMGEyMmJkOWYuLmFhMjExMmM4ZTA0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3MvZ2VuYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaApAQCAtMTc4LDYgKzE3 OCwxMSBAQCBleHRlcm4gSW5kZXhTY2FuRGVzYyBpbmRleF9iZWdpbnNjYW4oUmVsYXRpb24gaGVh cFJlbGF0aW9uLAogCQkJCQkJCQkJIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkJIEluZGV4 U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKIAkJCQkJCQkJCSBpbnQgbmtleXMsIGlu dCBub3JkZXJieXMpOworZXh0ZXJuIEluZGV4U2NhbkRlc2MgaW5kZXhfYmVnaW5zY2FuX3Ztc2V0 KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKKwkJCQkJCQkJCQkgICBSZWxhdGlvbiBpbmRleFJlbGF0 aW9uLAorCQkJCQkJCQkJCSAgIFNuYXBzaG90IHNuYXBzaG90LAorCQkJCQkJCQkJCSAgIEluZGV4 U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKKwkJCQkJCQkJCQkgICBpbnQgbmtleXMs IGludCBub3JkZXJieXMsIGJvb2wgbW9kaWZpZXNfaGVhcF9yZWwpOwogZXh0ZXJuIEluZGV4U2Nh bkRlc2MgaW5kZXhfYmVnaW5zY2FuX2JpdG1hcChSZWxhdGlvbiBpbmRleFJlbGF0aW9uLAogCQkJ CQkJCQkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJCQkJSW5kZXhTY2FuSW5zdHJ1bWVu dGF0aW9uICppbnN0cnVtZW50LApAQCAtMjA0LDYgKzIwOSwxMiBAQCBleHRlcm4gSW5kZXhTY2Fu RGVzYyBpbmRleF9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24gaGVhcHJlbCwKIAkJCQkJCQkJ CQkJICBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQsCiAJCQkJCQkJCQkJCSAg aW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzLAogCQkJCQkJCQkJCQkgIFBhcmFsbGVsSW5kZXhTY2Fu RGVzYyBwc2Nhbik7CisKK2V4dGVybiBJbmRleFNjYW5EZXNjIGluZGV4X2JlZ2luc2Nhbl9wYXJh bGxlbF92bXNldChSZWxhdGlvbiBoZWFwcmVsLCBSZWxhdGlvbiBpbmRleHJlbCwKKwkJCQkJCQkJ CQkJCQlJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQsCisJCQkJCQkJCQkJCQkJ aW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzLAorCQkJCQkJCQkJCQkJCVBhcmFsbGVsSW5kZXhTY2Fu RGVzYyBwc2NhbiwKKwkJCQkJCQkJCQkJCQlib29sIG1vZGlmaWVzX3JlbCk7CiBleHRlcm4gSXRl bVBvaW50ZXIgaW5kZXhfZ2V0bmV4dF90aWQoSW5kZXhTY2FuRGVzYyBzY2FuLAogCQkJCQkJCQkJ IFNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uKTsKIGV4dGVybiBib29sIGluZGV4X2ZldGNoX2hlYXAo SW5kZXhTY2FuRGVzYyBzY2FuLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgK aW5kZXggNGZjNmVkZjQyNjEuLjFkMmNhYjY0ZTljIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC05NSw2 ICs5NSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBIZWFwU2NhbkRlc2NEYXRhCiAJICovCiAJUGFyYWxs ZWxCbG9ja1RhYmxlU2NhbldvcmtlckRhdGEgKnJzX3BhcmFsbGVsd29ya2VyZGF0YTsKIAorCS8q CisJICogRm9yIHNlcXVlbnRpYWwgc2NhbnMgYW5kIGJpdG1hcCBoZWFwIHNjYW5zLiBJZiB0aGUg cmVsYXRpb24gaXMgbm90CisJICogYmVpbmcgbW9kaWZpZWQsIG9uLWFjY2VzcyBwcnVuaW5nIG1h eSByZWFkIGluIHRoZSBjdXJyZW50IGhlYXAgcGFnZSdzCisJICogY29ycmVzcG9uZGluZyBWTSBi bG9jayB0byB0aGlzIGJ1ZmZlci4KKwkgKi8KKwlCdWZmZXIJCXJzX3ZtYnVmZmVyOworCiAJLyog dGhlc2UgZmllbGRzIG9ubHkgdXNlZCBpbiBwYWdlLWF0LWEtdGltZSBtb2RlIGFuZCBmb3IgYml0 bWFwIHNjYW5zICovCiAJdWludDMyCQlyc19jaW5kZXg7CQkvKiBjdXJyZW50IHR1cGxlJ3MgaW5k ZXggaW4gdmlzdHVwbGVzICovCiAJdWludDMyCQlyc19udHVwbGVzOwkJLyogbnVtYmVyIG9mIHZp c2libGUgdHVwbGVzIG9uIHBhZ2UgKi8KQEAgLTExNyw4ICsxMjQsMTggQEAgdHlwZWRlZiBzdHJ1 Y3QgSW5kZXhGZXRjaEhlYXBEYXRhCiB7CiAJSW5kZXhGZXRjaFRhYmxlRGF0YSB4c19iYXNlOwkv KiBBTSBpbmRlcGVuZGVudCBwYXJ0IG9mIHRoZSBkZXNjcmlwdG9yICovCiAKLQlCdWZmZXIJCXhz X2NidWY7CQkvKiBjdXJyZW50IGhlYXAgYnVmZmVyIGluIHNjYW4sIGlmIGFueSAqLwotCS8qIE5C OiBpZiB4c19jYnVmIGlzIG5vdCBJbnZhbGlkQnVmZmVyLCB3ZSBob2xkIGEgcGluIG9uIHRoYXQg YnVmZmVyICovCisJLyoKKwkgKiBDdXJyZW50IGhlYXAgYnVmZmVyIGluIHNjYW4sIGlmIGFueS4g TkI6IGlmIHhzX2NidWYgaXMgbm90CisJICogSW52YWxpZEJ1ZmZlciwgd2UgaG9sZCBhIHBpbiBv biB0aGF0IGJ1ZmZlci4KKwkgKi8KKwlCdWZmZXIJCXhzX2NidWY7CisKKwkvKgorCSAqIEZvciBp bmRleCBzY2FucyB0aGF0IGRvIG5vdCBtb2RpZnkgdGhlIHVuZGVybHlpbmcgaGVhcCB0YWJsZSwg b24tYWNjZXNzCisJICogcHJ1bmluZyBtYXkgcmVhZCBpbiB0aGUgY3VycmVudCBoZWFwIHBhZ2Un cyBjb3JyZXNwb25kaW5nIFZNIGJsb2NrIHRvCisJICogdGhpcyBidWZmZXIuCisJICovCisJQnVm ZmVyCQl4c192bWJ1ZmZlcjsKIH0gSW5kZXhGZXRjaEhlYXBEYXRhOwogCiAvKiBSZXN1bHQgY29k ZXMgZm9yIEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bSAqLwpAQCAtNDE1LDcgKzQzMiw4IEBAIGV4 dGVybiBUcmFuc2FjdGlvbklkIGhlYXBfaW5kZXhfZGVsZXRlX3R1cGxlcyhSZWxhdGlvbiByZWws CiAJCQkJCQkJCQkJCSAgVE1fSW5kZXhEZWxldGVPcCAqZGVsc3RhdGUpOwogCiAvKiBpbiBoZWFw L3BydW5laGVhcC5jICovCi1leHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9u IHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKTsKK2V4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9v cHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCisJCQkJCQkJCUJ1ZmZlciAqdm1i dWZmZXIpOwogZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVl emVQYXJhbXMgKnBhcmFtcywKIAkJCQkJCQkJCSAgIFBydW5lRnJlZXplUmVzdWx0ICpwcmVzdWx0 LAogCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpvZmZfbG9jLApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL3JlbHNjYW4uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKaW5k ZXggYjVlMGZiMzg2YzAuLmY0OTZlMGI0OTM5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3MvcmVsc2Nhbi5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKQEAgLTEyMSw2 ICsxMjEsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxCbG9ja1RhYmxlU2NhbldvcmtlckRh dGEgKlBhcmFsbGVsQmxvY2tUYWJsZVNjYW5Xb3JrZXI7CiB0eXBlZGVmIHN0cnVjdCBJbmRleEZl dGNoVGFibGVEYXRhCiB7CiAJUmVsYXRpb24JcmVsOworCisJLyoKKwkgKiBTb21lIG9wdGltaXph dGlvbnMgY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGlmIHRoZSBxdWVyeSBkb2VzIG5vdCBtb2RpZnkK KwkgKiB0aGUgdW5kZXJseWluZyByZWxhdGlvbi4gVHJhY2sgdGhhdCBoZXJlLgorCSAqLworCWJv b2wJCW1vZGlmaWVzX2Jhc2VfcmVsOwogfSBJbmRleEZldGNoVGFibGVEYXRhOwogCiBzdHJ1Y3Qg SW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNz L3RhYmxlYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggZTE2YmYwMjU2 OTIuLmYyNTBkNGU3YWVjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5o CisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTYzLDYgKzYzLDggQEAgdHlw ZWRlZiBlbnVtIFNjYW5PcHRpb25zCiAKIAkvKiB1bnJlZ2lzdGVyIHNuYXBzaG90IGF0IHNjYW4g ZW5kPyAqLwogCVNPX1RFTVBfU05BUFNIT1QgPSAxIDw8IDksCisJLyogd2hldGhlciBvciBub3Qg c2NhbiBzaG91bGQgYXR0ZW1wdCB0byBzZXQgdGhlIFZNICovCisJU09fQUxMT1dfVk1fU0VUID0g MSA8PCAxMCwKIH0JCQlTY2FuT3B0aW9uczsKIAogLyoKQEAgLTg4Miw2ICs4ODQsMjUgQEAgdGFi bGVfYmVnaW5zY2FuKFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QsCiAJcmV0dXJuIHJl bC0+cmRfdGFibGVhbS0+c2Nhbl9iZWdpbihyZWwsIHNuYXBzaG90LCBua2V5cywga2V5LCBOVUxM LCBmbGFncyk7CiB9CiAKKy8qCisgKiBTaW1pbGFyIHRvIHRhYmxlX2JlZ2luc2NhbigpLCBidXQg YWxsb3dzIHRoZSBjYWxsZXIgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUKKyAqIHF1ZXJ5IG1vZGlm aWVzIHRoZSByZWxhdGlvbi4gVGhpcyBpcyB1c2VkIHdoZW4gdGhlIGNhbGxlciB3YW50cyB0byBh dHRlbXB0CisgKiBtYXJraW5nIHBhZ2VzIGluIHRoZSByZWxhdGlvbiBhcyBhbGwtdmlzaWJsZSBp biB0aGUgdmlzaWJpbGl0eSBtYXAgZHVyaW5nCisgKiBvbi1hY2Nlc3MgcHJ1bmluZy4KKyAqLwor c3RhdGljIGlubGluZSBUYWJsZVNjYW5EZXNjCit0YWJsZV9iZWdpbnNjYW5fdm1zZXQoUmVsYXRp b24gcmVsLCBTbmFwc2hvdCBzbmFwc2hvdCwKKwkJCQkJICBpbnQgbmtleXMsIHN0cnVjdCBTY2Fu S2V5RGF0YSAqa2V5LCBib29sIG1vZGlmaWVzX3JlbCkKK3sKKwl1aW50MzIJCWZsYWdzID0gU09f VFlQRV9TRVFTQ0FOIHwKKwkJU09fQUxMT1dfU1RSQVQgfCBTT19BTExPV19TWU5DIHwgU09fQUxM T1dfUEFHRU1PREU7CisKKwlpZiAoIW1vZGlmaWVzX3JlbCkKKwkJZmxhZ3MgfD0gU09fQUxMT1df Vk1fU0VUOworCisJcmV0dXJuIHJlbC0+cmRfdGFibGVhbS0+c2Nhbl9iZWdpbihyZWwsIHNuYXBz aG90LCBua2V5cywga2V5LCBOVUxMLCBmbGFncyk7Cit9CisKIC8qCiAgKiBMaWtlIHRhYmxlX2Jl Z2luc2NhbigpLCBidXQgZm9yIHNjYW5uaW5nIGNhdGFsb2cuIEl0J2xsIGF1dG9tYXRpY2FsbHkg dXNlIGEKICAqIHNuYXBzaG90IGFwcHJvcHJpYXRlIGZvciBzY2FubmluZyBjYXRhbG9nIHJlbGF0 aW9ucy4KQEAgLTkxOSwxMCArOTQwLDEzIEBAIHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChSZWxhdGlv biByZWwsIFNuYXBzaG90IHNuYXBzaG90LAogICovCiBzdGF0aWMgaW5saW5lIFRhYmxlU2NhbkRl c2MKIHRhYmxlX2JlZ2luc2Nhbl9ibShSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAot CQkJCSAgIGludCBua2V5cywgU2NhbktleURhdGEgKmtleSkKKwkJCQkgICBpbnQgbmtleXMsIFNj YW5LZXlEYXRhICprZXksIGJvb2wgbW9kaWZpZXNfcmVsKQogewogCXVpbnQzMgkJZmxhZ3MgPSBT T19UWVBFX0JJVE1BUFNDQU4gfCBTT19BTExPV19QQUdFTU9ERTsKIAorCWlmICghbW9kaWZpZXNf cmVsKQorCQlmbGFncyB8PSBTT19BTExPV19WTV9TRVQ7CisKIAlyZXR1cm4gcmVsLT5yZF90YWJs ZWFtLT5zY2FuX2JlZ2luKHJlbCwgc25hcHNob3QsIG5rZXlzLCBrZXksCiAJCQkJCQkJCQkgICBO VUxMLCBmbGFncyk7CiB9CkBAIC0xMTMwLDYgKzExNTQsMTAgQEAgZXh0ZXJuIHZvaWQgdGFibGVf cGFyYWxsZWxzY2FuX2luaXRpYWxpemUoUmVsYXRpb24gcmVsLAogZXh0ZXJuIFRhYmxlU2NhbkRl c2MgdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkJ CQkgIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2Nhbik7CiAKK2V4dGVybiBUYWJsZVNjYW5EZXNj IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNldChSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJ CQkJCQkJCQlQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4sCisJCQkJCQkJCQkJCQkJYm9vbCBt b2RpZmllc19yZWwpOworCiAvKgogICogUmVzdGFydCBhIHBhcmFsbGVsIHNjYW4uICBDYWxsIHRo aXMgaW4gdGhlIGxlYWRlciBwcm9jZXNzLiAgQ2FsbGVyIGlzCiAgKiByZXNwb25zaWJsZSBmb3Ig bWFraW5nIHN1cmUgdGhhdCBhbGwgd29ya2VycyBoYXZlIGZpbmlzaGVkIHRoZSBzY2FuCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVz L2V4ZWNub2Rlcy5oCmluZGV4IDE4YWU4ZjBkNGJiLi4wYzNiMGQ2MDE2OCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmgKQEAgLTY3Niw2ICs2NzYsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJCQkJ CQkJCQkgKiBFeGVjRG9Jbml0aWFsUHJ1bmluZygpICovCiAJY29uc3QgY2hhciAqZXNfc291cmNl VGV4dDsJLyogU291cmNlIHRleHQgZnJvbSBRdWVyeURlc2MgKi8KIAorCS8qCisJICogUlQgaW5k ZXhlcyBvZiByZWxhdGlvbnMgbW9kaWZpZWQgYnkgdGhlIHF1ZXJ5IGVpdGhlciB0aHJvdWdoCisJ ICogVVBEQVRFL0RFTEVURS9JTlNFUlQvTUVSR0Ugb3IgU0VMRUNUIEZPUiBVUERBVEUKKwkgKi8K KwlCaXRtYXBzZXQgICplc19tb2RpZmllZF9yZWxpZHM7CisKIAlKdW5rRmlsdGVyICplc19qdW5r RmlsdGVyOwkvKiB0b3AtbGV2ZWwganVuayBmaWx0ZXIsIGlmIGFueSAqLwogCiAJLyogSWYgcXVl cnkgY2FuIGluc2VydC9kZWxldGUgdHVwbGVzLCB0aGUgY29tbWFuZCBJRCB0byBtYXJrIHRoZW0g d2l0aCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzVfc3RhbmRieV9sb2dp Y2FsX2RlY29kaW5nLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzVfc3RhbmRieV9sb2dpY2Fs X2RlY29kaW5nLnBsCmluZGV4IGViZTJmYWUxNzg5Li5iZGQ5ZjBhNjJjZCAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzVfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsCisrKyBi L3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbApAQCAt Mjk2LDYgKzI5Niw3IEBAIHdhbF9sZXZlbCA9ICdsb2dpY2FsJwogbWF4X3JlcGxpY2F0aW9uX3Ns b3RzID0gNAogbWF4X3dhbF9zZW5kZXJzID0gNAogYXV0b3ZhY3V1bSA9IG9mZgoraG90X3N0YW5k YnlfZmVlZGJhY2sgPSBvbgogfSk7CiAkbm9kZV9wcmltYXJ5LT5kdW1wX2luZm87CiAkbm9kZV9w cmltYXJ5LT5zdGFydDsKQEAgLTc0OCw3ICs3NDksNyBAQCBjaGVja19wZ19yZWN2bG9naWNhbF9z dGRlcnIoJGhhbmRsZSwKICRsb2dzdGFydCA9IC1zICRub2RlX3N0YW5kYnktPmxvZ2ZpbGU7CiAK IHJlYWN0aXZlX3Nsb3RzX2NoYW5nZV9oZnNfYW5kX3dhaXRfZm9yX3htaW5zKCdzaGFyZWRfcm93 X3JlbW92YWxfJywKLQknbm9fY29uZmxpY3RfJywgMCwgMSk7CisJJ25vX2NvbmZsaWN0XycsIDEs IDApOwogCiAjIFRoaXMgc2hvdWxkIG5vdCB0cmlnZ2VyIGEgY29uZmxpY3QKIHdhaXRfdW50aWxf dmFjdXVtX2Nhbl9yZW1vdmUoCi0tIAoyLjQzLjAKCg== --000000000000fb0f430642c7990f Content-Type: text/x-patch; charset="UTF-8"; name="v19-0011-Set-pd_prune_xid-on-insert.patch" Content-Disposition: attachment; filename="v19-0011-Set-pd_prune_xid-on-insert.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhksx38q10 RnJvbSBlNmI1ZDQwYzhjODc1ODE3OWNjZDJmZmU2ZTYwZGZjNzI1NDMwYzEyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE2OjEyOjU2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTkgMTEvMTJdIFNldCBwZF9wcnVuZV94aWQgb24gaW5zZXJ0Ck1JTUUtVmVyc2lvbjog MS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5z ZmVyLUVuY29kaW5nOiA4Yml0CgpOb3cgdGhhdCB2aXNpYmlsaXR5IG1hcCAoVk0pIHVwZGF0ZXMg Y2FuIG9jY3VyIGR1cmluZyByZWFkLW9ubHkgcXVlcmllcywKaXQgbWFrZXMgc2Vuc2UgdG8gYWxz byBzZXQgdGhlIHBhZ2XigJlzIHBkX3BydW5lX3hpZCBoaW50IGR1cmluZyBpbnNlcnRzLgpUaGlz IGVuYWJsZXMgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSB0byBydW4gYWZ0ZXIgYSBwYWdl IGlzCmZpbGxlZCB3aXRoIG5ld2x5IGluc2VydGVkIHR1cGxlcyB0aGUgZmlyc3QgdGltZSBpdCBp cyByZWFkLgoKVGhpcyBjaGFuZ2UgYWxzbyBhZGRyZXNzZXMgYSBsb25nLXN0YW5kaW5nIG5vdGUg aW4gaGVhcF9pbnNlcnQoKSBhbmQKaGVhcF9tdWx0aV9pbnNlcnQoKSwgd2hpY2ggb2JzZXJ2ZWQg dGhhdCBzZXR0aW5nIHBkX3BydW5lX3hpZCB3b3VsZApoZWxwIGNsZWFuIHVwIGFib3J0ZWQgaW5z ZXJ0aW9ucyBzb29uZXIuIFdpdGhvdXQgaXQsIHN1Y2ggdHVwbGVzIG1pZ2h0CmxpbmdlciB1bnRp bCBWQUNVVU0sIHdoZXJlYXMgbm93IHRoZXkgY2FuIGJlIHBydW5lZCBlYXJsaWVyLgoKU2V0dGlu ZyBwZF9wcnVuZV94aWQgb24gaW5zZXJ0IGNhbiBjYXVzZSBhIHBhZ2UgdG8gYmUgZGlydGllZCBh bmQKd3JpdHRlbiBvdXQgd2hlbiBpdCBwcmV2aW91c2x5IHdvdWxkIG5vdCBoYXZlIGJlZW4sIGFm ZmV0Y3RpbmcgdGhlCnJlcG9ydGVkIG51bWJlciBvZiBoaXRzIGluIHRoZSBpbmRleC1raWxsdHVw bGVzIGlzb2xhdGlvbiB0ZXN0LiBJdCBpcwp1bmNsZWFyIGlmIHRoaXMgaXMgYSBidWcgaW4gdGhl IHdheSBoaXRzIGFyZSB0cmFja2VkLCBhIGZhdWx0eSB0ZXN0CmV4cGVjdGF0aW9uLCBvciBpZiBz aW1wbHkgdXBkYXRpbmcgdGhlIHRlc3QncyBleHBlY3RlZCBvdXRwdXQgaXMKc3VmZmljaWVudCBy ZW1lZGlhdGlvbi4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAg ICAgICAgfCAyNSArKysrKysrKysrKysrLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1feGxvZy5jICAgICAgICAgfCAxNSArKysrKysrKysrLQogLi4uL2lzb2xhdGlvbi9leHBl Y3RlZC9pbmRleC1raWxsdHVwbGVzLm91dCAgIHwgIDYgKystLS0KIDMgZmlsZXMgY2hhbmdlZCwg MzQgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0u YwppbmRleCAyNjBmOTgxZDQ1Ny4uZWVhM2EzZDJkZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bS5jCkBAIC0yMTA0LDYgKzIxMDQsNyBAQCBoZWFwX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwg SGVhcFR1cGxlIHR1cCwgQ29tbWFuZElkIGNpZCwKIAlUcmFuc2FjdGlvbklkIHhpZCA9IEdldEN1 cnJlbnRUcmFuc2FjdGlvbklkKCk7CiAJSGVhcFR1cGxlCWhlYXB0dXA7CiAJQnVmZmVyCQlidWZm ZXI7CisJUGFnZQkJcGFnZTsKIAlCdWZmZXIJCXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIAli b29sCQlhbGxfdmlzaWJsZV9jbGVhcmVkID0gZmFsc2U7CiAKQEAgLTIxNjMsMTUgKzIxNjQsMTkg QEAgaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIENvbW1hbmRJ ZCBjaWQsCiAJfQogCiAJLyoKLQkgKiBYWFggU2hvdWxkIHdlIHNldCBQYWdlU2V0UHJ1bmFibGUg b24gdGhpcyBwYWdlID8KKwkgKiBTZXQgcGRfcHJ1bmVfeGlkIHRvIHRyaWdnZXIgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoKSBvbmNlIHRoZSBwYWdlCisJICogaXMgZnVsbCBzbyB0aGF0IHdl IGNhbiBzZXQgdGhlIHBhZ2UgYWxsLXZpc2libGUgaW4gdGhlIFZNLgogCSAqCi0JICogVGhlIGlu c2VydGluZyB0cmFuc2FjdGlvbiBtYXkgZXZlbnR1YWxseSBhYm9ydCB0aHVzIG1ha2luZyB0aGlz IHR1cGxlCi0JICogREVBRCBhbmQgaGVuY2UgYXZhaWxhYmxlIGZvciBwcnVuaW5nLiBUaG91Z2gg d2UgZG9uJ3Qgd2FudCB0byBvcHRpbWl6ZQotCSAqIGZvciBhYm9ydHMsIGlmIG5vIG90aGVyIHR1 cGxlIGluIHRoaXMgcGFnZSBpcyBVUERBVEVkL0RFTEVURWQsIHRoZQotCSAqIGFib3J0ZWQgdHVw bGUgd2lsbCBuZXZlciBiZSBwcnVuZWQgdW50aWwgbmV4dCB2YWN1dW0gaXMgdHJpZ2dlcmVkLgor CSAqIFNldHRpbmcgcGRfcHJ1bmVfeGlkIGlzIGFsc28gaGFuZHkgaWYgdGhlIGluc2VydGluZyB0 cmFuc2FjdGlvbgorCSAqIGV2ZW50dWFsbHkgYWJvcnRzIG1ha2luZyB0aGlzIHR1cGxlIERFQUQg YW5kIGhlbmNlIGF2YWlsYWJsZSBmb3IKKwkgKiBwcnVuaW5nLiBJZiBubyBvdGhlciB0dXBsZSBp biB0aGlzIHBhZ2UgaXMgVVBEQVRFZC9ERUxFVEVkLCB0aGUgYWJvcnRlZAorCSAqIHR1cGxlIHdv dWxkIG5ldmVyIG90aGVyd2lzZSBiZSBwcnVuZWQgdW50aWwgbmV4dCB2YWN1dW0gaXMgdHJpZ2dl cmVkLgogCSAqCi0JICogSWYgeW91IGRvIGFkZCBQYWdlU2V0UHJ1bmFibGUgaGVyZSwgYWRkIGl0 IGluIGhlYXBfeGxvZ19pbnNlcnQgdG9vLgorCSAqIERvbid0IHNldCBpdCBpZiB3ZSBhcmUgaW4g Ym9vdHN0cmFwIG1vZGUsIHRob3VnaC4KIAkgKi8KKwlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZm ZXIpOworCWlmIChUcmFuc2FjdGlvbklkSXNOb3JtYWwoeGlkKSkKKwkJUGFnZVNldFBydW5hYmxl KHBhZ2UsIHhpZCk7CiAKIAlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKIApAQCAtMjE4MSw3ICsy MTg2LDYgQEAgaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIENv bW1hbmRJZCBjaWQsCiAJCXhsX2hlYXBfaW5zZXJ0IHhscmVjOwogCQl4bF9oZWFwX2hlYWRlciB4 bGhkcjsKIAkJWExvZ1JlY1B0cglyZWNwdHI7Ci0JCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdl KGJ1ZmZlcik7CiAJCXVpbnQ4CQlpbmZvID0gWExPR19IRUFQX0lOU0VSVDsKIAkJaW50CQkJYnVm ZmxhZ3MgPSAwOwogCkBAIC0yNTQ1LDggKzI1NDksMTMgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVs YXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCQl9 CiAKIAkJLyoKLQkJICogWFhYIFNob3VsZCB3ZSBzZXQgUGFnZVNldFBydW5hYmxlIG9uIHRoaXMg cGFnZSA/IFNlZSBoZWFwX2luc2VydCgpCisJCSAqIFNldCBwZF9wcnVuZV94aWQuIFNlZSBoZWFw X2luc2VydCgpIGZvciBtb3JlIG9uIHdoeSB3ZSBkbyB0aGlzIHdoZW4KKwkJICogaW5zZXJ0aW5n IHR1cGxlcy4gVGhpcyBvbmx5IG1ha2VzIHNlbnNlIGlmIHdlIGFyZW4ndCBhbHJlYWR5CisJCSAq IHNldHRpbmcgdGhlIHBhZ2UgZnJvemVuIGluIHRoZSBWTS4gV2UgYWxzbyBkb24ndCBzZXQgaXQg aW4KKwkJICogYm9vdHN0cmFwIG1vZGUuCiAJCSAqLworCQlpZiAoIWFsbF9mcm96ZW5fc2V0ICYm IFRyYW5zYWN0aW9uSWRJc05vcm1hbCh4aWQpKQorCQkJUGFnZVNldFBydW5hYmxlKHBhZ2UsIHhp ZCk7CiAKIAkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1feGxvZy5jCmluZGV4IDVhYjQ2ZThiZjhmLi5kYWM2NDBmNWM5ZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC00NjIsNiArNDYyLDEyIEBAIGhlYXBfeGxvZ19p bnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJZnJlZXNwYWNlID0gUGFnZUdldEhl YXBGcmVlU3BhY2UocGFnZSk7IC8qIG5lZWRlZCB0byB1cGRhdGUgRlNNIGJlbG93ICovCiAKKwkJ LyoKKwkJICogU2V0IHRoZSBwYWdlIHBydW5hYmxlIHRvIHRyaWdnZXIgb24tYWNjZXNzIHBydW5p bmcgbGF0ZXIgd2hpY2ggbWF5CisJCSAqIHNldCB0aGUgcGFnZSBhbGwtdmlzaWJsZSBpbiB0aGUg Vk0uCisJCSAqLworCQlQYWdlU2V0UHJ1bmFibGUocGFnZSwgWExvZ1JlY0dldFhpZChyZWNvcmQp KTsKKwogCQlQYWdlU2V0TFNOKHBhZ2UsIGxzbik7CiAKIAkJaWYgKHhscmVjLT5mbGFncyAmIFhM SF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRCkKQEAgLTYxMSw5ICs2MTcsMTYgQEAgaGVhcF94 bG9nX211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJaWYgKHhscmVjLT5m bGFncyAmIFhMSF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRCkKIAkJCVBhZ2VDbGVhckFsbFZp c2libGUocGFnZSk7CiAKLQkJLyogWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVCBpbXBsaWVzIHRo YXQgYWxsIHR1cGxlcyBhcmUgdmlzaWJsZSAqLworCQkvKgorCQkgKiBYTEhfSU5TRVJUX0FMTF9G Uk9aRU5fU0VUIGltcGxpZXMgdGhhdCBhbGwgdHVwbGVzIGFyZSB2aXNpYmxlLiBJZgorCQkgKiB3 ZSBhcmUgbm90IHNldHRpbmcgdGhlIHBhZ2UgZnJvemVuLCB0aGVuIHNldCB0aGUgcGFnZSdzIHBy dW5hYmxlCisJCSAqIGhpbnQgc28gdGhhdCB3ZSB0cmlnZ2VyIG9uLWFjY2VzcyBwcnVuaW5nIGxh dGVyIHdoaWNoIG1heSBzZXQgdGhlCisJCSAqIHBhZ2UgYWxsLXZpc2libGUgaW4gdGhlIFZNLgor CQkgKi8KIAkJaWYgKHhscmVjLT5mbGFncyAmIFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQpCiAJ CQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKwkJZWxzZQorCQkJUGFnZVNldFBydW5hYmxlKHBh Z2UsIFhMb2dSZWNHZXRYaWQocmVjb3JkKSk7CiAKIAkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7 CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2luZGV4LWtpbGx0 dXBsZXMub3V0IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2luZGV4LWtpbGx0dXBsZXMu b3V0CmluZGV4IGJlN2RkZDc1NmVmLi5iMjlmMjQzNGIwMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv aXNvbGF0aW9uL2V4cGVjdGVkL2luZGV4LWtpbGx0dXBsZXMub3V0CisrKyBiL3NyYy90ZXN0L2lz b2xhdGlvbi9leHBlY3RlZC9pbmRleC1raWxsdHVwbGVzLm91dApAQCAtNTQsNyArNTQsNyBAQCBz dGVwIGZsdXNoOiBTRUxFQ1QgRlJPTSBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIHN0ZXAg cmVzdWx0OiBTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3NfaGl0IC0gY291bnRlci5o ZWFwX2FjY2Vzc2VzIEFTIG5ld19oZWFwX2FjY2Vzc2VzIEZST00gY291bnRlciwgcGdfc3RhdGlv X2FsbF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1cGxlJzsKIG5ld19oZWFw X2FjY2Vzc2VzCiAtLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAgICAgIDEKKyAgICAgICAg ICAgICAgICAyCiAoMSByb3cpCiAKIHN0ZXAgbWVhc3VyZTogVVBEQVRFIGNvdW50ZXIgU0VUIGhl YXBfYWNjZXNzZXMgPSAoU0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCBGUk9N IHBnX3N0YXRpb19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZScp OwpAQCAtMTMwLDcgKzEzMCw3IEBAIHN0ZXAgZmx1c2g6IFNFTEVDVCBGUk9NIHBnX3N0YXRfZm9y Y2VfbmV4dF9mbHVzaCgpOwogc3RlcCByZXN1bHQ6IFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhl YXBfYmxrc19oaXQgLSBjb3VudGVyLmhlYXBfYWNjZXNzZXMgQVMgbmV3X2hlYXBfYWNjZXNzZXMg RlJPTSBjb3VudGVyLCBwZ19zdGF0aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxf cHJpb3JfdHVwbGUnOwogbmV3X2hlYXBfYWNjZXNzZXMKIC0tLS0tLS0tLS0tLS0tLS0tCi0gICAg ICAgICAgICAgICAgMQorICAgICAgICAgICAgICAgIDIKICgxIHJvdykKIAogc3RlcCBtZWFzdXJl OiBVUERBVEUgY291bnRlciBTRVQgaGVhcF9hY2Nlc3NlcyA9IChTRUxFQ1QgaGVhcF9ibGtzX3Jl YWQgKyBoZWFwX2Jsa3NfaGl0IEZST00gcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVsbmFt ZSA9ICdraWxsX3ByaW9yX3R1cGxlJyk7CkBAIC0yODMsNyArMjgzLDcgQEAgc3RlcCBmbHVzaDog U0VMRUNUIEZST00gcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBzdGVwIHJlc3VsdDogU0VM RUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCAtIGNvdW50ZXIuaGVhcF9hY2Nlc3Nl cyBBUyBuZXdfaGVhcF9hY2Nlc3NlcyBGUk9NIGNvdW50ZXIsIHBnX3N0YXRpb19hbGxfdGFibGVz IFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZSc7CiBuZXdfaGVhcF9hY2Nlc3Nlcwog LS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAxCisgICAgICAgICAgICAgICAgMgog KDEgcm93KQogCiBzdGVwIG1lYXN1cmU6IFVQREFURSBjb3VudGVyIFNFVCBoZWFwX2FjY2Vzc2Vz ID0gKFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgRlJPTSBwZ19zdGF0aW9f YWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnKTsKLS0gCjIuNDMu MAoK --000000000000fb0f430642c7990f Content-Type: text/x-patch; charset="US-ASCII"; name="v19-0012-Split-heap_page_prune_and_freeze-into-helpers.patch" Content-Disposition: attachment; filename="v19-0012-Split-heap_page_prune_and_freeze-into-helpers.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhksx82j11 RnJvbSAxZmY2ZDcyN2Q2NDc3MWVkMTllMDdlNmQxNjQ0MzgwZTE2NTA4OTQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDggT2N0IDIwMjUgMTg6NDU6NDUgLTA0MDAKU3ViamVjdDogW1BB VENIIHYxOSAxMi8xMl0gU3BsaXQgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUgaW50byBoZWxw ZXJzCgpjaS1vcy1vbmx5OgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j IHwgMzE2ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxNzAg aW5zZXJ0aW9ucygrKSwgMTQ2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMKaW5kZXggNjMxZWI0NWJjOTYuLmUxOGVjMzdmZGY1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9wcnVuZWhlYXAuYwpAQCAtNTkwLDgyICs1OTAsMjAgQEAgaGVhcF9wYWdlX3dpbGxfc2V0X3Zp cyhSZWxhdGlvbiByZWxhdGlvbiwKIAlyZXR1cm4gZG9fc2V0X3ZtOwogfQogCi0vKgotICogUHJ1 bmUgYW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGFuZCBwb3RlbnRpYWxseSBmcmVlemUgdHVwbGVz IG9uIHRoZQotICogc3BlY2lmaWVkIHBhZ2UuIElmIHRoZSBwYWdlJ3MgdmlzaWJpbGl0eSBzdGF0 dXMgaGFzIGNoYW5nZWQsIHVwZGF0ZSBpdCBpbgotICogdGhlIFZNLgotICoKLSAqIENhbGxlciBt dXN0IGhhdmUgcGluIGFuZCBidWZmZXIgY2xlYW51cCBsb2NrIG9uIHRoZSBwYWdlLiAgTm90ZSB0 aGF0IHdlCi0gKiBkb24ndCB1cGRhdGUgdGhlIEZTTSBpbmZvcm1hdGlvbiBmb3IgcGFnZSBvbiBj YWxsZXIncyBiZWhhbGYuICBDYWxsZXIgbWlnaHQKLSAqIGFsc28gbmVlZCB0byBhY2NvdW50IGZv ciBhIHJlZHVjdGlvbiBpbiB0aGUgbGVuZ3RoIG9mIHRoZSBsaW5lIHBvaW50ZXIKLSAqIGFycmF5 IGZvbGxvd2luZyBhcnJheSB0cnVuY2F0aW9uIGJ5IHVzLgotICoKLSAqIHBhcmFtcyBjb250YWlu cyB0aGUgaW5wdXQgcGFyYW1ldGVycyB1c2VkIHRvIGNvbnRyb2wgZnJlZXppbmcgYW5kIHBydW5p bmcKLSAqIGJlaGF2aW9yLiBTZWUgdGhlIGRlZmluaXRpb24gb2YgUHJ1bmVGcmVlemVQYXJhbXMg Zm9yIG1vcmUgb24gd2hhdCBlYWNoCi0gKiBwYXJhbWV0ZXIgZG9lcy4KLSAqCi0gKiBJZiB0aGUg SEVBUF9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIHNldCBpbiBwYXJhbXMsIHdlIHdpbGwgZnJlZXpl IHR1cGxlcyBpZgotICogaXQncyByZXF1aXJlZCBpbiBvcmRlciB0byBhZHZhbmNlIHJlbGZyb3pl bnhpZCAvIHJlbG1pbm14aWQsIG9yIGlmIGl0J3MKLSAqIGNvbnNpZGVyZWQgYWR2YW50YWdlb3Vz IGZvciBvdmVyYWxsIHN5c3RlbSBwZXJmb3JtYW5jZSB0byBkbyBzbyBub3cuICBUaGUKLSAqICdw YXJhbXMuY3V0b2ZmcycsICdwcmVzdWx0JywgJ25ld19yZWxmcm96ZW5feGlkJyBhbmQgJ25ld19y ZWxtaW5fbXhpZCcKLSAqIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQgd2hlbiBmcmVlemluZy4KLSAq Ci0gKiBJZiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZJUyBpcyBzZXQgaW4gcGFyYW1zIGFuZCB0 aGUgdmlzaWJpbGl0eSBzdGF0dXMgb2YKLSAqIHRoZSBwYWdlIGhhcyBjaGFuZ2VkLCB3ZSB3aWxs IHVwZGF0ZSB0aGUgVk0gYXQgdGhlIHNhbWUgdGltZSBhcyBwcnVuaW5nIGFuZAotICogZnJlZXpp bmcgdGhlIGhlYXAgcGFnZS4gV2Ugd2lsbCBhbHNvIHVwZGF0ZSBwcmVzdWx0LT5vbGRfdm1iaXRz IGFuZAotICogcHJlc3VsdC0+bmV3X3ZtYml0cyB3aXRoIHRoZSBzdGF0ZSBvZiB0aGUgVk0gYmVm b3JlIGFuZCBhZnRlciB1cGRhdGluZyBpdAotICogZm9yIHRoZSBjYWxsZXIgdG8gdXNlIGluIGJv b2trZWVwaW5nLgotICoKLSAqIHByZXN1bHQgY29udGFpbnMgb3V0cHV0IHBhcmFtZXRlcnMgbmVl ZGVkIGJ5IGNhbGxlcnMsIHN1Y2ggYXMgdGhlIG51bWJlciBvZgotICogdHVwbGVzIHJlbW92ZWQg YW5kIHRoZSBvZmZzZXRzIG9mIGRlYWQgaXRlbXMgb24gdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4K LSAqIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgaXMgcmVzcG9uc2libGUgZm9yIGluaXRp YWxpemluZyBpdC4gIFJlcXVpcmVkCi0gKiBieSBhbGwgY2FsbGVycy4KLSAqCi0gKiBvZmZfbG9j IGlzIHRoZSBvZmZzZXQgbG9jYXRpb24gcmVxdWlyZWQgYnkgdGhlIGNhbGxlciB0byB1c2UgaW4g ZXJyb3IKLSAqIGNhbGxiYWNrLgotICoKLSAqIG5ld19yZWxmcm96ZW5feGlkIGFuZCBuZXdfcmVs bWluX214aWQgbXVzdCBwcm92aWRlZCBieSB0aGUgY2FsbGVyIGlmIHRoZQotICogSEVBUF9QUlVO RV9GUkVFWkUgb3B0aW9uIGlzIHNldCBpbiBwYXJhbXMuICBPbiBlbnRyeSwgdGhleSBjb250YWlu IHRoZQotICogb2xkZXN0IFhJRCBhbmQgbXVsdGktWElEIHNlZW4gb24gdGhlIHJlbGF0aW9uIHNv IGZhci4gIFRoZXkgd2lsbCBiZSB1cGRhdGVkCi0gKiB3aXRoIG9sZGVzdCB2YWx1ZXMgcHJlc2Vu dCBvbiB0aGUgcGFnZSBhZnRlciBwcnVuaW5nLiAgQWZ0ZXIgcHJvY2Vzc2luZyB0aGUKLSAqIHdo b2xlIHJlbGF0aW9uLCBWQUNVVU0gY2FuIHVzZSB0aGVzZSB2YWx1ZXMgYXMgdGhlIG5ldwotICog cmVsZnJvemVueGlkL3JlbG1pbm14aWQgZm9yIHRoZSByZWxhdGlvbi4KLSAqLwotdm9pZAotaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKLQkJCQkJ CSAgIFBydW5lRnJlZXplUmVzdWx0ICpwcmVzdWx0LAotCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpv ZmZfbG9jLAotCQkJCQkJICAgVHJhbnNhY3Rpb25JZCAqbmV3X3JlbGZyb3plbl94aWQsCi0JCQkJ CQkgICBNdWx0aVhhY3RJZCAqbmV3X3JlbG1pbl9teGlkKQorc3RhdGljIHZvaWQKK3BydW5lX2Zy ZWV6ZV9zZXR1cChQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLCBQcnVuZVN0YXRlICpwcnN0YXRl LAorCQkJCSAgIFRyYW5zYWN0aW9uSWQgKm5ld19yZWxmcm96ZW5feGlkLAorCQkJCSAgIE11bHRp WGFjdElkICpuZXdfcmVsbWluX214aWQsCisJCQkJICAgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1 bHQpCiB7Ci0JQnVmZmVyCQlidWZmZXIgPSBwYXJhbXMtPmJ1ZmZlcjsKLQlCdWZmZXIJCXZtYnVm ZmVyID0gcGFyYW1zLT52bWJ1ZmZlcjsKLQlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZm ZXIpOwotCUJsb2NrTnVtYmVyIGJsb2Nrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIp OwotCU9mZnNldE51bWJlciBvZmZudW0sCi0JCQkJbWF4b2ZmOwotCVBydW5lU3RhdGUJcHJzdGF0 ZTsKLQlIZWFwVHVwbGVEYXRhIHR1cDsKLQlib29sCQlkb19mcmVlemU7Ci0JYm9vbAkJZG9fcHJ1 bmU7Ci0JYm9vbAkJZG9faGludF9wcnVuZTsKLQlib29sCQlkb19zZXRfdm07Ci0JYm9vbAkJZG9f c2V0X3BkX3ZpczsKLQlib29sCQlkaWRfdHVwbGVfaGludF9mcGk7Ci0JaW50NjQJCWZwaV9iZWZv cmUgPSBwZ1dhbFVzYWdlLndhbF9mcGk7Ci0JVHJhbnNhY3Rpb25JZCBmcnpfY29uZmxpY3RfaG9y aXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwotCVRyYW5zYWN0aW9uSWQgY29uZmxpY3RfeGlk ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JdWludDgJCW5ld192bWJpdHMgPSAwOwotCXVpbnQ4 CQlvbGRfdm1iaXRzID0gMDsKLQogCS8qIENvcHkgcGFyYW1ldGVycyB0byBwcnN0YXRlICovCi0J cHJzdGF0ZS52aXN0ZXN0ID0gcGFyYW1zLT52aXN0ZXN0OwotCXByc3RhdGUubWFya191bnVzZWRf bm93ID0KKwlwcnN0YXRlLT52aXN0ZXN0ID0gcGFyYW1zLT52aXN0ZXN0OworCXByc3RhdGUtPm1h cmtfdW51c2VkX25vdyA9CiAJCShwYXJhbXMtPm9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfTUFS S19VTlVTRURfTk9XKSAhPSAwOwotCXByc3RhdGUuYXR0ZW1wdF9mcmVlemUgPSAocGFyYW1zLT5v cHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSkgIT0gMDsKLQlwcnN0YXRlLmF0dGVtcHRf dXBkYXRlX3ZtID0KKwlwcnN0YXRlLT5hdHRlbXB0X2ZyZWV6ZSA9IChwYXJhbXMtPm9wdGlvbnMg JiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFKSAhPSAwOworCXByc3RhdGUtPmF0dGVtcHRfdXBkYXRl X3ZtID0KIAkJKHBhcmFtcy0+b3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVklTKSAh PSAwOwotCXByc3RhdGUuY3V0b2ZmcyA9IHBhcmFtcy0+Y3V0b2ZmczsKKwlwcnN0YXRlLT5jdXRv ZmZzID0gcGFyYW1zLT5jdXRvZmZzOwogCiAJLyoKIAkgKiBPdXIgc3RyYXRlZ3kgaXMgdG8gc2Nh biB0aGUgcGFnZSBhbmQgbWFrZSBsaXN0cyBvZiBpdGVtcyB0byBjaGFuZ2UsCkBAIC02NzgsMzcg KzYxNiwzNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAq cGFyYW1zLAogCSAqIHBydW5hYmxlLCB3ZSB3aWxsIHNhdmUgdGhlIGxvd2VzdCByZWxldmFudCBY SUQgaW4gbmV3X3BydW5lX3hpZC4gQWxzbwogCSAqIGluaXRpYWxpemUgdGhlIHJlc3Qgb2Ygb3Vy IHdvcmtpbmcgc3RhdGUuCiAJICovCi0JcHJzdGF0ZS5uZXdfcHJ1bmVfeGlkID0gSW52YWxpZFRy YW5zYWN0aW9uSWQ7Ci0JcHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQgPSBJbnZhbGlkVHJhbnNh Y3Rpb25JZDsKLQlwcnN0YXRlLm5yZWRpcmVjdGVkID0gcHJzdGF0ZS5uZGVhZCA9IHByc3RhdGUu bnVudXNlZCA9IHByc3RhdGUubmZyb3plbiA9IDA7Ci0JcHJzdGF0ZS5ucm9vdF9pdGVtcyA9IDA7 Ci0JcHJzdGF0ZS5uaGVhcG9ubHlfaXRlbXMgPSAwOworCXByc3RhdGUtPm5ld19wcnVuZV94aWQg PSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlwcnN0YXRlLT5sYXRlc3RfeGlkX3JlbW92ZWQgPSBJ bnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlwcnN0YXRlLT5ucmVkaXJlY3RlZCA9IHByc3RhdGUtPm5k ZWFkID0gcHJzdGF0ZS0+bnVudXNlZCA9IHByc3RhdGUtPm5mcm96ZW4gPSAwOworCXByc3RhdGUt Pm5yb290X2l0ZW1zID0gMDsKKwlwcnN0YXRlLT5uaGVhcG9ubHlfaXRlbXMgPSAwOwogCiAJLyog aW5pdGlhbGl6ZSBwYWdlIGZyZWV6aW5nIHdvcmtpbmcgc3RhdGUgKi8KLQlwcnN0YXRlLnBhZ2Vm cnouZnJlZXplX3JlcXVpcmVkID0gZmFsc2U7Ci0JaWYgKHByc3RhdGUuYXR0ZW1wdF9mcmVlemUp CisJcHJzdGF0ZS0+cGFnZWZyei5mcmVlemVfcmVxdWlyZWQgPSBmYWxzZTsKKwlpZiAocHJzdGF0 ZS0+YXR0ZW1wdF9mcmVlemUpCiAJewogCQlBc3NlcnQobmV3X3JlbGZyb3plbl94aWQgJiYgbmV3 X3JlbG1pbl9teGlkKTsKLQkJcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6ZVBhZ2VSZWxmcm96ZW5YaWQg PSAqbmV3X3JlbGZyb3plbl94aWQ7Ci0JCXByc3RhdGUucGFnZWZyei5Ob0ZyZWV6ZVBhZ2VSZWxm cm96ZW5YaWQgPSAqbmV3X3JlbGZyb3plbl94aWQ7Ci0JCXByc3RhdGUucGFnZWZyei5GcmVlemVQ YWdlUmVsbWluTXhpZCA9ICpuZXdfcmVsbWluX214aWQ7Ci0JCXByc3RhdGUucGFnZWZyei5Ob0Zy ZWV6ZVBhZ2VSZWxtaW5NeGlkID0gKm5ld19yZWxtaW5fbXhpZDsKKwkJcHJzdGF0ZS0+cGFnZWZy ei5GcmVlemVQYWdlUmVsZnJvemVuWGlkID0gKm5ld19yZWxmcm96ZW5feGlkOworCQlwcnN0YXRl LT5wYWdlZnJ6Lk5vRnJlZXplUGFnZVJlbGZyb3plblhpZCA9ICpuZXdfcmVsZnJvemVuX3hpZDsK KwkJcHJzdGF0ZS0+cGFnZWZyei5GcmVlemVQYWdlUmVsbWluTXhpZCA9ICpuZXdfcmVsbWluX214 aWQ7CisJCXByc3RhdGUtPnBhZ2VmcnouTm9GcmVlemVQYWdlUmVsbWluTXhpZCA9ICpuZXdfcmVs bWluX214aWQ7CiAJfQogCWVsc2UKIAl7CiAJCUFzc2VydChuZXdfcmVsZnJvemVuX3hpZCA9PSBO VUxMICYmIG5ld19yZWxtaW5fbXhpZCA9PSBOVUxMKTsKLQkJcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6 ZVBhZ2VSZWxtaW5NeGlkID0gSW52YWxpZE11bHRpWGFjdElkOwotCQlwcnN0YXRlLnBhZ2Vmcnou Tm9GcmVlemVQYWdlUmVsbWluTXhpZCA9IEludmFsaWRNdWx0aVhhY3RJZDsKLQkJcHJzdGF0ZS5w YWdlZnJ6LkZyZWV6ZVBhZ2VSZWxmcm96ZW5YaWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQkJ cHJzdGF0ZS5wYWdlZnJ6Lk5vRnJlZXplUGFnZVJlbGZyb3plblhpZCA9IEludmFsaWRUcmFuc2Fj dGlvbklkOworCQlwcnN0YXRlLT5wYWdlZnJ6LkZyZWV6ZVBhZ2VSZWxtaW5NeGlkID0gSW52YWxp ZE11bHRpWGFjdElkOworCQlwcnN0YXRlLT5wYWdlZnJ6Lk5vRnJlZXplUGFnZVJlbG1pbk14aWQg PSBJbnZhbGlkTXVsdGlYYWN0SWQ7CisJCXByc3RhdGUtPnBhZ2VmcnouRnJlZXplUGFnZVJlbGZy b3plblhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCQlwcnN0YXRlLT5wYWdlZnJ6Lk5vRnJl ZXplUGFnZVJlbGZyb3plblhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCX0KIAotCXByc3Rh dGUubmRlbGV0ZWQgPSAwOwotCXByc3RhdGUubGl2ZV90dXBsZXMgPSAwOwotCXByc3RhdGUucmVj ZW50bHlfZGVhZF90dXBsZXMgPSAwOwotCXByc3RhdGUuaGFzdHVwID0gZmFsc2U7Ci0JcHJzdGF0 ZS5scGRlYWRfaXRlbXMgPSAwOwotCXByc3RhdGUuZGVhZG9mZnNldHMgPSBwcmVzdWx0LT5kZWFk b2Zmc2V0czsKKwlwcnN0YXRlLT5uZGVsZXRlZCA9IDA7CisJcHJzdGF0ZS0+bGl2ZV90dXBsZXMg PSAwOworCXByc3RhdGUtPnJlY2VudGx5X2RlYWRfdHVwbGVzID0gMDsKKwlwcnN0YXRlLT5oYXN0 dXAgPSBmYWxzZTsKKwlwcnN0YXRlLT5scGRlYWRfaXRlbXMgPSAwOworCXByc3RhdGUtPmRlYWRv ZmZzZXRzID0gcHJlc3VsdC0+ZGVhZG9mZnNldHM7CiAKIAkvKgogCSAqIFRyYWNrIHdoZXRoZXIg dGhlIHBhZ2UgY291bGQgYmUgbWFya2VkIGFsbC12aXNpYmxlIGFuZC9vciBhbGwtZnJvemVuLgpA QCAtNzM2LDIwICs2NzQsMjAgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVl emVQYXJhbXMgKnBhcmFtcywKIAkgKiBib29ra2VlcGluZy4gSW4gdGhpcyBjYXNlLCBpbml0aWFs aXppbmcgYWxsX3Zpc2libGUgdG8gZmFsc2UgYWxsb3dzCiAJICogaGVhcF9wcnVuZV9yZWNvcmRf dW5jaGFuZ2VkX2xwX25vcm1hbCgpIHRvIGJ5cGFzcyB1bm5lY2Vzc2FyeSB3b3JrLgogCSAqLwot CWlmIChwcnN0YXRlLmF0dGVtcHRfZnJlZXplKQorCWlmIChwcnN0YXRlLT5hdHRlbXB0X2ZyZWV6 ZSkKIAl7Ci0JCXByc3RhdGUuYWxsX3Zpc2libGUgPSB0cnVlOwotCQlwcnN0YXRlLmFsbF9mcm96 ZW4gPSB0cnVlOworCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHRydWU7CisJCXByc3RhdGUtPmFs bF9mcm96ZW4gPSB0cnVlOwogCX0KLQllbHNlIGlmIChwcnN0YXRlLmF0dGVtcHRfdXBkYXRlX3Zt KQorCWVsc2UgaWYgKHByc3RhdGUtPmF0dGVtcHRfdXBkYXRlX3ZtKQogCXsKLQkJcHJzdGF0ZS5h bGxfdmlzaWJsZSA9IHRydWU7Ci0JCXByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNlOworCQlwcnN0 YXRlLT5hbGxfdmlzaWJsZSA9IHRydWU7CisJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsK IAl9CiAJZWxzZQogCXsKLQkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IGZhbHNlOwotCQlwcnN0YXRl LmFsbF9mcm96ZW4gPSBmYWxzZTsKKwkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJ cHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOwogCX0KIAogCS8qCkBAIC03NjEsMTAgKzY5OSwx NCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1z LAogCSAqIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uIHdo ZW4gdXBkYXRpbmcgdGhlIFZNCiAJICogYW5kL29yIGZyZWV6aW5nIGFsbCB0aGUgdHVwbGVzIG9u IHRoZSBwYWdlLgogCSAqLwotCXByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkID0gSW52YWxp ZFRyYW5zYWN0aW9uSWQ7CisJcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRvZmZfeGlkID0gSW52YWxp ZFRyYW5zYWN0aW9uSWQ7Cit9CiAKLQltYXhvZmYgPSBQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBh Z2UpOwotCXR1cC50X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChwYXJhbXMtPnJlbGF0aW9u KTsKK3N0YXRpYyB2b2lkCitwcnVuZV9mcmVlemVfcGxhbihQcnVuZVN0YXRlICpwcnN0YXRlLCBC bG9ja051bWJlciBibG9ja25vLCBCdWZmZXIgYnVmZmVyLCBQYWdlIHBhZ2UsCisJCQkJICBPZmZz ZXROdW1iZXIgbWF4b2ZmLCBPZmZzZXROdW1iZXIgKm9mZl9sb2MsIEhlYXBUdXBsZSB0dXApCit7 CisJT2Zmc2V0TnVtYmVyIG9mZm51bTsKIAogCS8qCiAJICogRGV0ZXJtaW5lIEhUU1YgZm9yIGFs bCB0dXBsZXMsIGFuZCBxdWV1ZSB0aGVtIHVwIGZvciBwcm9jZXNzaW5nIGFzIEhPVApAQCAtNzk5 LDEzICs3NDEsMTMgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJh bXMgKnBhcmFtcywKIAkJICovCiAJCSpvZmZfbG9jID0gb2ZmbnVtOwogCi0JCXByc3RhdGUucHJv Y2Vzc2VkW29mZm51bV0gPSBmYWxzZTsKLQkJcHJzdGF0ZS5odHN2W29mZm51bV0gPSAtMTsKKwkJ cHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0gPSBmYWxzZTsKKwkJcHJzdGF0ZS0+aHRzdltvZmZu dW1dID0gLTE7CiAKIAkJLyogTm90aGluZyB0byBkbyBpZiBzbG90IGRvZXNuJ3QgY29udGFpbiBh IHR1cGxlICovCiAJCWlmICghSXRlbUlkSXNVc2VkKGl0ZW1pZCkpCiAJCXsKLQkJCWhlYXBfcHJ1 bmVfcmVjb3JkX3VuY2hhbmdlZF9scF91bnVzZWQocGFnZSwgJnByc3RhdGUsIG9mZm51bSk7CisJ CQloZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfdW51c2VkKHBhZ2UsIHByc3RhdGUsIG9m Zm51bSk7CiAJCQljb250aW51ZTsKIAkJfQogCkBAIC04MTUsMTcgKzc1NywxNyBAQCBoZWFwX3Bh Z2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJICogSWYg dGhlIGNhbGxlciBzZXQgbWFya191bnVzZWRfbm93IHRydWUsIHdlIGNhbiBzZXQgZGVhZCBsaW5l CiAJCQkgKiBwb2ludGVycyBMUF9VTlVTRUQgbm93LgogCQkJICovCi0JCQlpZiAodW5saWtlbHko cHJzdGF0ZS5tYXJrX3VudXNlZF9ub3cpKQotCQkJCWhlYXBfcHJ1bmVfcmVjb3JkX3VudXNlZCgm cHJzdGF0ZSwgb2ZmbnVtLCBmYWxzZSk7CisJCQlpZiAodW5saWtlbHkocHJzdGF0ZS0+bWFya191 bnVzZWRfbm93KSkKKwkJCQloZWFwX3BydW5lX3JlY29yZF91bnVzZWQocHJzdGF0ZSwgb2ZmbnVt LCBmYWxzZSk7CiAJCQllbHNlCi0JCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX2Rl YWQocGFnZSwgJnByc3RhdGUsIG9mZm51bSk7CisJCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFu Z2VkX2xwX2RlYWQocGFnZSwgcHJzdGF0ZSwgb2ZmbnVtKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAK IAkJaWYgKEl0ZW1JZElzUmVkaXJlY3RlZChpdGVtaWQpKQogCQl7CiAJCQkvKiBUaGlzIGlzIHRo ZSBzdGFydCBvZiBhIEhPVCBjaGFpbiAqLwotCQkJcHJzdGF0ZS5yb290X2l0ZW1zW3Byc3RhdGUu bnJvb3RfaXRlbXMrK10gPSBvZmZudW07CisJCQlwcnN0YXRlLT5yb290X2l0ZW1zW3Byc3RhdGUt Pm5yb290X2l0ZW1zKytdID0gb2ZmbnVtOwogCQkJY29udGludWU7CiAJCX0KIApAQCAtODM1LDI1 ICs3NzcsMTkgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMg KnBhcmFtcywKIAkJICogR2V0IHRoZSB0dXBsZSdzIHZpc2liaWxpdHkgc3RhdHVzIGFuZCBxdWV1 ZSBpdCB1cCBmb3IgcHJvY2Vzc2luZy4KIAkJICovCiAJCWh0dXAgPSAoSGVhcFR1cGxlSGVhZGVy KSBQYWdlR2V0SXRlbShwYWdlLCBpdGVtaWQpOwotCQl0dXAudF9kYXRhID0gaHR1cDsKLQkJdHVw LnRfbGVuID0gSXRlbUlkR2V0TGVuZ3RoKGl0ZW1pZCk7Ci0JCUl0ZW1Qb2ludGVyU2V0KCZ0dXAu dF9zZWxmLCBibG9ja25vLCBvZmZudW0pOworCQl0dXAtPnRfZGF0YSA9IGh0dXA7CisJCXR1cC0+ dF9sZW4gPSBJdGVtSWRHZXRMZW5ndGgoaXRlbWlkKTsKKwkJSXRlbVBvaW50ZXJTZXQoJnR1cC0+ dF9zZWxmLCBibG9ja25vLCBvZmZudW0pOwogCi0JCXByc3RhdGUuaHRzdltvZmZudW1dID0gaGVh cF9wcnVuZV9zYXRpc2ZpZXNfdmFjdXVtKCZwcnN0YXRlLCAmdHVwLAotCQkJCQkJCQkJCQkJCQkg ICBidWZmZXIpOworCQlwcnN0YXRlLT5odHN2W29mZm51bV0gPSBoZWFwX3BydW5lX3NhdGlzZmll c192YWN1dW0ocHJzdGF0ZSwgdHVwLAorCQkJCQkJCQkJCQkJCQkJYnVmZmVyKTsKIAogCQlpZiAo IUhlYXBUdXBsZUhlYWRlcklzSGVhcE9ubHkoaHR1cCkpCi0JCQlwcnN0YXRlLnJvb3RfaXRlbXNb cHJzdGF0ZS5ucm9vdF9pdGVtcysrXSA9IG9mZm51bTsKKwkJCXByc3RhdGUtPnJvb3RfaXRlbXNb cHJzdGF0ZS0+bnJvb3RfaXRlbXMrK10gPSBvZmZudW07CiAJCWVsc2UKLQkJCXByc3RhdGUuaGVh cG9ubHlfaXRlbXNbcHJzdGF0ZS5uaGVhcG9ubHlfaXRlbXMrK10gPSBvZmZudW07CisJCQlwcnN0 YXRlLT5oZWFwb25seV9pdGVtc1twcnN0YXRlLT5uaGVhcG9ubHlfaXRlbXMrK10gPSBvZmZudW07 CiAJfQogCi0JLyoKLQkgKiBJZiBjaGVja3N1bXMgYXJlIGVuYWJsZWQsIGhlYXBfcHJ1bmVfc2F0 aXNmaWVzX3ZhY3V1bSgpIG1heSBoYXZlIGNhdXNlZAotCSAqIGFuIEZQSSB0byBiZSBlbWl0dGVk LgotCSAqLwotCWRpZF90dXBsZV9oaW50X2ZwaSA9IGZwaV9iZWZvcmUgIT0gcGdXYWxVc2FnZS53 YWxfZnBpOwotCiAJLyoKIAkgKiBQcm9jZXNzIEhPVCBjaGFpbnMuCiAJICoKQEAgLTg2NSwzMCAr ODAxLDMwIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpw YXJhbXMsCiAJICogdGhlIHBhZ2UgaW5zdGVhZCBvZiB1c2luZyB0aGUgcm9vdF9pdGVtcyBhcnJh eSwgYWxzbyBkaWQgaXQgaW4KIAkgKiBhc2NlbmRpbmcgb2Zmc2V0IG51bWJlciBvcmRlci4pCiAJ ICovCi0JZm9yIChpbnQgaSA9IHByc3RhdGUubnJvb3RfaXRlbXMgLSAxOyBpID49IDA7IGktLSkK Kwlmb3IgKGludCBpID0gcHJzdGF0ZS0+bnJvb3RfaXRlbXMgLSAxOyBpID49IDA7IGktLSkKIAl7 Ci0JCW9mZm51bSA9IHByc3RhdGUucm9vdF9pdGVtc1tpXTsKKwkJb2ZmbnVtID0gcHJzdGF0ZS0+ cm9vdF9pdGVtc1tpXTsKIAogCQkvKiBJZ25vcmUgaXRlbXMgYWxyZWFkeSBwcm9jZXNzZWQgYXMg cGFydCBvZiBhbiBlYXJsaWVyIGNoYWluICovCi0JCWlmIChwcnN0YXRlLnByb2Nlc3NlZFtvZmZu dW1dKQorCQlpZiAocHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0pCiAJCQljb250aW51ZTsKIAog CQkvKiBzZWUgcHJlY2VkaW5nIGxvb3AgKi8KIAkJKm9mZl9sb2MgPSBvZmZudW07CiAKIAkJLyog UHJvY2VzcyB0aGlzIGl0ZW0gb3IgY2hhaW4gb2YgaXRlbXMgKi8KLQkJaGVhcF9wcnVuZV9jaGFp bihwYWdlLCBibG9ja25vLCBtYXhvZmYsIG9mZm51bSwgJnByc3RhdGUpOworCQloZWFwX3BydW5l X2NoYWluKHBhZ2UsIGJsb2Nrbm8sIG1heG9mZiwgb2ZmbnVtLCBwcnN0YXRlKTsKIAl9CiAKIAkv KgogCSAqIFByb2Nlc3MgYW55IGhlYXAtb25seSB0dXBsZXMgdGhhdCB3ZXJlIG5vdCBhbHJlYWR5 IHByb2Nlc3NlZCBhcyBwYXJ0IG9mCiAJICogYSBIT1QgY2hhaW4uCiAJICovCi0JZm9yIChpbnQg aSA9IHByc3RhdGUubmhlYXBvbmx5X2l0ZW1zIC0gMTsgaSA+PSAwOyBpLS0pCisJZm9yIChpbnQg aSA9IHByc3RhdGUtPm5oZWFwb25seV9pdGVtcyAtIDE7IGkgPj0gMDsgaS0tKQogCXsKLQkJb2Zm bnVtID0gcHJzdGF0ZS5oZWFwb25seV9pdGVtc1tpXTsKKwkJb2ZmbnVtID0gcHJzdGF0ZS0+aGVh cG9ubHlfaXRlbXNbaV07CiAKLQkJaWYgKHByc3RhdGUucHJvY2Vzc2VkW29mZm51bV0pCisJCWlm IChwcnN0YXRlLT5wcm9jZXNzZWRbb2ZmbnVtXSkKIAkJCWNvbnRpbnVlOwogCiAJCS8qIHNlZSBw cmVjZWRpbmcgbG9vcCAqLwpAQCAtOTA3LDcgKzg0Myw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRf ZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCSAqIHJldHVybiB0cnVlIGZvciBh biBYTUlOX0lOVkFMSUQgdHVwbGUsIHNvIHRoaXMgY29kZSB3aWxsIHdvcmsgZXZlbgogCQkgKiB3 aGVuIHRoZXJlIHdlcmUgc2VxdWVudGlhbCB1cGRhdGVzIHdpdGhpbiB0aGUgYWJvcnRlZCB0cmFu c2FjdGlvbi4pCiAJCSAqLwotCQlpZiAocHJzdGF0ZS5odHN2W29mZm51bV0gPT0gSEVBUFRVUExF X0RFQUQpCisJCWlmIChwcnN0YXRlLT5odHN2W29mZm51bV0gPT0gSEVBUFRVUExFX0RFQUQpCiAJ CXsKIAkJCUl0ZW1JZAkJaXRlbWlkID0gUGFnZUdldEl0ZW1JZChwYWdlLCBvZmZudW0pOwogCQkJ SGVhcFR1cGxlSGVhZGVyIGh0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdl LCBpdGVtaWQpOwpAQCAtOTE1LDggKzg1MSw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQlpZiAobGlrZWx5KCFIZWFwVHVwbGVIZWFk ZXJJc0hvdFVwZGF0ZWQoaHR1cCkpKQogCQkJewogCQkJCUhlYXBUdXBsZUhlYWRlckFkdmFuY2VD b25mbGljdEhvcml6b24oaHR1cCwKLQkJCQkJCQkJCQkJCQkgICZwcnN0YXRlLmxhdGVzdF94aWRf cmVtb3ZlZCk7Ci0JCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW51c2VkKCZwcnN0YXRlLCBvZmZudW0s IHRydWUpOworCQkJCQkJCQkJCQkJCSAgJnByc3RhdGUtPmxhdGVzdF94aWRfcmVtb3ZlZCk7CisJ CQkJaGVhcF9wcnVuZV9yZWNvcmRfdW51c2VkKHByc3RhdGUsIG9mZm51bSwgdHJ1ZSk7CiAJCQl9 CiAJCQllbHNlCiAJCQl7CkBAIC05MzMsNyArODY5LDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9m cmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCX0KIAkJfQogCQllbHNlCi0JCQlo ZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKHBhZ2UsICZwcnN0YXRlLCBvZmZu dW0pOworCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChwYWdlLCBwcnN0 YXRlLCBvZmZudW0pOwogCX0KIAogCS8qIFdlIHNob3VsZCBub3cgaGF2ZSBwcm9jZXNzZWQgZXZl cnkgdHVwbGUgZXhhY3RseSBvbmNlICAqLwpAQCAtOTQ0LDEyICs4ODAsMTEwIEBAIGhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJewogCQkqb2Zm X2xvYyA9IG9mZm51bTsKIAotCQlBc3NlcnQocHJzdGF0ZS5wcm9jZXNzZWRbb2ZmbnVtXSk7CisJ CUFzc2VydChwcnN0YXRlLT5wcm9jZXNzZWRbb2ZmbnVtXSk7CiAJfQogI2VuZGlmCiAKKwkvKgor CSAqIEFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZSBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZSwgaWYg dGhlIG5ld2VzdCB4bWluCisJICogYW1vbmdzdCB0aGVtIGlzIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5 b25lLCB0aGUgcGFnZSBjYW5ub3QgYmUKKwkgKiBhbGwtdmlzaWJsZS4KKwkgKi8KKwlpZiAocHJz dGF0ZS0+YWxsX3Zpc2libGUgJiYKKwkJVHJhbnNhY3Rpb25JZElzTm9ybWFsKHByc3RhdGUtPnZp c2liaWxpdHlfY3V0b2ZmX3hpZCkgJiYKKwkJIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChwcnN0 YXRlLT52aXN0ZXN0LCBwcnN0YXRlLT52aXNpYmlsaXR5X2N1dG9mZl94aWQpKQorCQlwcnN0YXRl LT5hbGxfdmlzaWJsZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKKwogCS8qIENsZWFy IHRoZSBvZmZzZXQgaW5mb3JtYXRpb24gb25jZSB3ZSBoYXZlIHByb2Nlc3NlZCB0aGUgZ2l2ZW4g cGFnZS4gKi8KIAkqb2ZmX2xvYyA9IEludmFsaWRPZmZzZXROdW1iZXI7Cit9CisKKy8qCisgKiBQ cnVuZSBhbmQgcmVwYWlyIGZyYWdtZW50YXRpb24gYW5kIHBvdGVudGlhbGx5IGZyZWV6ZSB0dXBs ZXMgb24gdGhlCisgKiBzcGVjaWZpZWQgcGFnZS4gSWYgdGhlIHBhZ2UncyB2aXNpYmlsaXR5IHN0 YXR1cyBoYXMgY2hhbmdlZCwgdXBkYXRlIGl0IGluCisgKiB0aGUgVk0uCisgKgorICogQ2FsbGVy IG11c3QgaGF2ZSBwaW4gYW5kIGJ1ZmZlciBjbGVhbnVwIGxvY2sgb24gdGhlIHBhZ2UuICBOb3Rl IHRoYXQgd2UKKyAqIGRvbid0IHVwZGF0ZSB0aGUgRlNNIGluZm9ybWF0aW9uIGZvciBwYWdlIG9u IGNhbGxlcidzIGJlaGFsZi4gIENhbGxlciBtaWdodAorICogYWxzbyBuZWVkIHRvIGFjY291bnQg Zm9yIGEgcmVkdWN0aW9uIGluIHRoZSBsZW5ndGggb2YgdGhlIGxpbmUgcG9pbnRlcgorICogYXJy YXkgZm9sbG93aW5nIGFycmF5IHRydW5jYXRpb24gYnkgdXMuCisgKgorICogcGFyYW1zIGNvbnRh aW5zIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIHVzZWQgdG8gY29udHJvbCBmcmVlemluZyBhbmQgcHJ1 bmluZworICogYmVoYXZpb3IuIFNlZSB0aGUgZGVmaW5pdGlvbiBvZiBQcnVuZUZyZWV6ZVBhcmFt cyBmb3IgbW9yZSBvbiB3aGF0IGVhY2gKKyAqIHBhcmFtZXRlciBkb2VzLgorICoKKyAqIElmIHRo ZSBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0IGluIHBhcmFtcywgd2Ugd2lsbCBmcmVl emUgdHVwbGVzIGlmCisgKiBpdCdzIHJlcXVpcmVkIGluIG9yZGVyIHRvIGFkdmFuY2UgcmVsZnJv emVueGlkIC8gcmVsbWlubXhpZCwgb3IgaWYgaXQncworICogY29uc2lkZXJlZCBhZHZhbnRhZ2Vv dXMgZm9yIG92ZXJhbGwgc3lzdGVtIHBlcmZvcm1hbmNlIHRvIGRvIHNvIG5vdy4gIFRoZQorICog J3BhcmFtcy5jdXRvZmZzJywgJ3ByZXN1bHQnLCAnbmV3X3JlbGZyb3plbl94aWQnIGFuZCAnbmV3 X3JlbG1pbl9teGlkJworICogYXJndW1lbnRzIGFyZSByZXF1aXJlZCB3aGVuIGZyZWV6aW5nLgor ICoKKyAqIElmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVklTIGlzIHNldCBpbiBwYXJhbXMgYW5k IHRoZSB2aXNpYmlsaXR5IHN0YXR1cyBvZgorICogdGhlIHBhZ2UgaGFzIGNoYW5nZWQsIHdlIHdp bGwgdXBkYXRlIHRoZSBWTSBhdCB0aGUgc2FtZSB0aW1lIGFzIHBydW5pbmcgYW5kCisgKiBmcmVl emluZyB0aGUgaGVhcCBwYWdlLiBXZSB3aWxsIGFsc28gdXBkYXRlIHByZXN1bHQtPm9sZF92bWJp dHMgYW5kCisgKiBwcmVzdWx0LT5uZXdfdm1iaXRzIHdpdGggdGhlIHN0YXRlIG9mIHRoZSBWTSBi ZWZvcmUgYW5kIGFmdGVyIHVwZGF0aW5nIGl0CisgKiBmb3IgdGhlIGNhbGxlciB0byB1c2UgaW4g Ym9va2tlZXBpbmcuCisgKgorICogcHJlc3VsdCBjb250YWlucyBvdXRwdXQgcGFyYW1ldGVycyBu ZWVkZWQgYnkgY2FsbGVycywgc3VjaCBhcyB0aGUgbnVtYmVyIG9mCisgKiB0dXBsZXMgcmVtb3Zl ZCBhbmQgdGhlIG9mZnNldHMgb2YgZGVhZCBpdGVtcyBvbiB0aGUgcGFnZSBhZnRlciBwcnVuaW5n LgorICogaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBpcyByZXNwb25zaWJsZSBmb3IgaW5p dGlhbGl6aW5nIGl0LiAgUmVxdWlyZWQKKyAqIGJ5IGFsbCBjYWxsZXJzLgorICoKKyAqIG9mZl9s b2MgaXMgdGhlIG9mZnNldCBsb2NhdGlvbiByZXF1aXJlZCBieSB0aGUgY2FsbGVyIHRvIHVzZSBp biBlcnJvcgorICogY2FsbGJhY2suCisgKgorICogbmV3X3JlbGZyb3plbl94aWQgYW5kIG5ld19y ZWxtaW5fbXhpZCBtdXN0IHByb3ZpZGVkIGJ5IHRoZSBjYWxsZXIgaWYgdGhlCisgKiBIRUFQX1BS VU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0IGluIHBhcmFtcy4gIE9uIGVudHJ5LCB0aGV5IGNvbnRh aW4gdGhlCisgKiBvbGRlc3QgWElEIGFuZCBtdWx0aS1YSUQgc2VlbiBvbiB0aGUgcmVsYXRpb24g c28gZmFyLiAgVGhleSB3aWxsIGJlIHVwZGF0ZWQKKyAqIHdpdGggb2xkZXN0IHZhbHVlcyBwcmVz ZW50IG9uIHRoZSBwYWdlIGFmdGVyIHBydW5pbmcuICBBZnRlciBwcm9jZXNzaW5nIHRoZQorICog d2hvbGUgcmVsYXRpb24sIFZBQ1VVTSBjYW4gdXNlIHRoZXNlIHZhbHVlcyBhcyB0aGUgbmV3Cisg KiByZWxmcm96ZW54aWQvcmVsbWlubXhpZCBmb3IgdGhlIHJlbGF0aW9uLgorICovCit2b2lkCito ZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAorCQkJ CQkJICAgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1bHQsCisJCQkJCQkgICBPZmZzZXROdW1iZXIg Km9mZl9sb2MsCisJCQkJCQkgICBUcmFuc2FjdGlvbklkICpuZXdfcmVsZnJvemVuX3hpZCwKKwkJ CQkJCSAgIE11bHRpWGFjdElkICpuZXdfcmVsbWluX214aWQpCit7CisJQnVmZmVyCQlidWZmZXIg PSBwYXJhbXMtPmJ1ZmZlcjsKKwlCdWZmZXIJCXZtYnVmZmVyID0gcGFyYW1zLT52bWJ1ZmZlcjsK KwlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOworCUJsb2NrTnVtYmVyIGJsb2Nr bm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpOworCU9mZnNldE51bWJlciBtYXhvZmY7 CisJUHJ1bmVTdGF0ZQlwcnN0YXRlOworCUhlYXBUdXBsZURhdGEgdHVwOworCWJvb2wJCWRvX2Zy ZWV6ZTsKKwlib29sCQlkb19wcnVuZTsKKwlib29sCQlkb19oaW50X3BydW5lOworCWJvb2wJCWRv X3NldF92bTsKKwlib29sCQlkb19zZXRfcGRfdmlzOworCWJvb2wJCWRpZF90dXBsZV9oaW50X2Zw aTsKKwlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uud2FsX2ZwaTsKKwlUcmFuc2FjdGlv bklkIGZyel9jb25mbGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJVHJhbnNh Y3Rpb25JZCBjb25mbGljdF94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwl1aW50OAkJbmV3 X3ZtYml0cyA9IDA7CisJdWludDgJCW9sZF92bWJpdHMgPSAwOworCisJbWF4b2ZmID0gUGFnZUdl dE1heE9mZnNldE51bWJlcihwYWdlKTsKKwl0dXAudF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVs aWQocGFyYW1zLT5yZWxhdGlvbik7CisKKwkvKiBJbml0aWFsaXplIG5lZWRlZCBzdGF0ZSBpbiBw cnN0YXRlICovCisJcHJ1bmVfZnJlZXplX3NldHVwKHBhcmFtcywgJnByc3RhdGUsIG5ld19yZWxm cm96ZW5feGlkLCBuZXdfcmVsbWluX214aWQsIHByZXN1bHQpOworCisJLyoKKwkgKiBFeGFtaW5l IGFsbCBsaW5lIHBvaW50ZXJzIGFuZCB0dXBsZSB2aXNpYmlsaXR5IGluZm9ybWF0aW9uIHRvIGRl dGVybWluZQorCSAqIHdoaWNoIGxpbmUgcG9pbnRlcnMgc2hvdWxkIGNoYW5nZSBzdGF0ZSBhbmQg d2hpY2ggdHVwbGVzIG1heSBiZSBmcm96ZW4uCisJICogUHJlcGFyZSBxdWV1ZSBvZiBzdGF0ZSBj aGFuZ2VzIHRvIGxhdGVyIGJlIGV4ZWN1dGVkIGluIGEgY3JpdGljYWwKKwkgKiBzZWN0aW9uLgor CSAqLworCXBydW5lX2ZyZWV6ZV9wbGFuKCZwcnN0YXRlLCBibG9ja25vLCBidWZmZXIsIHBhZ2Us IG1heG9mZiwgb2ZmX2xvYywgJnR1cCk7CisKKwkvKgorCSAqIElmIGNoZWNrc3VtcyBhcmUgZW5h YmxlZCwgaGVhcF9wcnVuZV9zYXRpc2ZpZXNfdmFjdXVtKCkgbWF5IGhhdmUgY2F1c2VkCisJICog YW4gRlBJIHRvIGJlIGVtaXR0ZWQuCisJICovCisJZGlkX3R1cGxlX2hpbnRfZnBpID0gZnBpX2Jl Zm9yZSAhPSBwZ1dhbFVzYWdlLndhbF9mcGk7CiAKIAlkb19wcnVuZSA9IHByc3RhdGUubnJlZGly ZWN0ZWQgPiAwIHx8CiAJCXByc3RhdGUubmRlYWQgPiAwIHx8CkBAIC05NjMsMTYgKzk5Nyw2IEBA IGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJ ZG9faGludF9wcnVuZSA9ICgoUGFnZUhlYWRlcikgcGFnZSktPnBkX3BydW5lX3hpZCAhPSBwcnN0 YXRlLm5ld19wcnVuZV94aWQgfHwKIAkJUGFnZUlzRnVsbChwYWdlKTsKIAotCS8qCi0JICogQWZ0 ZXIgcHJvY2Vzc2luZyBhbGwgdGhlIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLCBpZiB0aGUgbmV3 ZXN0IHhtaW4KLQkgKiBhbW9uZ3N0IHRoZW0gaXMgbm90IHZpc2libGUgdG8gZXZlcnlvbmUsIHRo ZSBwYWdlIGNhbm5vdCBiZQotCSAqIGFsbC12aXNpYmxlLgotCSAqLwotCWlmIChwcnN0YXRlLmFs bF92aXNpYmxlICYmCi0JCVRyYW5zYWN0aW9uSWRJc05vcm1hbChwcnN0YXRlLnZpc2liaWxpdHlf Y3V0b2ZmX3hpZCkgJiYKLQkJIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChwcnN0YXRlLnZpc3Rl c3QsIHByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkKSkKLQkJcHJzdGF0ZS5hbGxfdmlzaWJs ZSA9IHByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNlOwotCiAJLyoKIAkgKiBEZWNpZGUgaWYgd2Ug d2FudCB0byBnbyBhaGVhZCB3aXRoIGZyZWV6aW5nIGFjY29yZGluZyB0byB0aGUgZnJlZXplCiAJ ICogcGxhbnMgd2UgcHJlcGFyZWQsIG9yIG5vdC4KLS0gCjIuNDMuMAoK --000000000000fb0f430642c7990f--