Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vLrN7-00CYqq-32 for pgsql-hackers@arkaria.postgresql.org; Wed, 19 Nov 2025 23:13:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vLrN6-00G8zF-1m for pgsql-hackers@arkaria.postgresql.org; Wed, 19 Nov 2025 23:13:56 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vLrN5-00G8z5-1h for pgsql-hackers@lists.postgresql.org; Wed, 19 Nov 2025 23:13:56 +0000 Received: from mail-ed1-x533.google.com ([2a00:1450:4864:20::533]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vLrMu-000QAr-1b for pgsql-hackers@lists.postgresql.org; Wed, 19 Nov 2025 23:13:54 +0000 Received: by mail-ed1-x533.google.com with SMTP id 4fb4d7f45d1cf-640a0812658so361675a12.0 for ; Wed, 19 Nov 2025 15:13:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763594024; x=1764198824; 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=cH1p3/4NBjslBKGNxOCP7Kc9AGmJmvhWhbs0KIe5Ye8=; b=YhF9H8eVotKAJlCNm9w3Pi8u3aprLWsJlU8whv8Q04O3M0/R4JM7G3xc6MFqophW+n m9MxRphuzp9Hb8qc4jr7u0yJUKG77P62xomUuJ+kLdd4TjEltC8CQe0jvbpzLmQCR0eN tnTfjY+g9KrTVXvQBMKHBM6Lgpzz4zd7UPm1yrjF10fYxjpPjZKM2VSqvnh7+SJbmXn1 69LN1ZL2JjqkxFQDNJ4UCIK12rX1TdRN8zB+Bgtke5RHlRBCiWHtvJ7Mt4LxFUjE/lWZ hL/R8reQUF73J16Q6z6KE2rXI3cw8UjMwO0FSgdNBHQJ9IqR3I2/QxP0LGhGqU6Q7swN 5yqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763594024; x=1764198824; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=cH1p3/4NBjslBKGNxOCP7Kc9AGmJmvhWhbs0KIe5Ye8=; b=IzmuUctjXIeFA1ORZNWtHQ6Wb3079f6QR5wu7u66sNiYZeSJym4AIxxXyQqWuhtN9V mYfhWSu7EHQ06VjOiPGxgRu4u+c/IavmN2+R0lEQLAkv38js6r/ZkVvpFumbwAGW+xKr Whk4DjKnIkfBNHzRIj1lIxFwOyzEUXA3OStuwbcIrsbDPSJLCK/m1a09CW5OJJkRWvBP zDOkx0WDcsrLnXIJPQb/KctV+dtX/VT+rrFXHne8I3z2/A8Y/TeQsmaxvoRFKy2O2yJR jNdbOGf5PerszgVJGyN+YkcB/sUp84Kh/4JsDeYk+v/3m+VMOCSSj8f0+KUv81ttmCm9 gbhw== X-Forwarded-Encrypted: i=1; AJvYcCW/BwM94Dvi/yhuAWii6hQA+ZFX+JRr1rhJn6XjGvIFF63hqGPQfytqkQLg/Us3XeEAice/JLCjFsf/i6+r@lists.postgresql.org X-Gm-Message-State: AOJu0Yy7JmAlWnoQvGuI/jycECFb9zEY9E3SQdkTsAC7uuKH9OJoXNes ByisIUV1I3jmTO+f99p0N4mce6rgkSMsxoVF8iwehSK7J9hkxqjDwaLjKYk3opbV/JeYDRuxlh8 Cd0HKdpP/uGUVFyWJJ6n4TPXaoZHEIfU= X-Gm-Gg: ASbGncsyeK4sXoBz8zYp6ig1IqXQ1WjNMpBEzzbZOCa1gVG8O3eGi8CG8/hc1dsMOvQ DRbzAKgl6ZzZzasUVc9sBVS93hrszxaRI/dSlFwUQWA/6WOlC3oVZ20u2WsZEtZElrUZZE7Yqw4 GCrwP/2JwqY3Ng0+gvP33f5aJ62ifVwr9kQk7jUkpNsS3OJ1GnbS6my092gSjZhaYPFy+129rBd yCsBQpj0h9M35dTYRoteUsqXOD8qUFuT/xZtjLOZWcZOOHjn+Aeh6bDVNLxd4sEaUR/MeWI X-Google-Smtp-Source: AGHT+IHTORVjhm1icjn+jlaKwcrMloFYnzmunyMWTVHHAwKh5gC7qQ8TsgynGmTDN38mZgYiuiqrMBxsBTfnYnzdC+8= X-Received: by 2002:a05:6402:13cc:b0:640:bb20:41be with SMTP id 4fb4d7f45d1cf-645363bf7cfmr1128695a12.5.1763594023533; Wed, 19 Nov 2025 15:13:43 -0800 (PST) MIME-Version: 1.0 References: <2wk7jo4m4qwh5sn33pfgerdjfujebbccsmmlownybddbh6nawl@mdyyqpqzxjek> In-Reply-To: From: Melanie Plageman Date: Wed, 19 Nov 2025 18:13:30 -0500 X-Gm-Features: AWmQ_bnFPXbvnRliHBcb8wvaoDoqSSH8O1bSePGBQ_UVpP7pLn8LKQSGUQ6rB8k 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="0000000000004d8ca00643fabb4a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000004d8ca00643fabb4a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Nov 19, 2025 at 4:35=E2=80=AFAM Kirill Reshke wrote: > > Hi! I looked up these 0002-0003 patches once again, LGTM. In > particular, I think 0002 & 0003 makes VM bits management more simple. Thanks for the review! > My only review comment is about 0003: > Should we make frz_conflict_horizon not a heap_page_will_freeze's > argument but rather just another field of PruneState struct? If i'm > not mistaken, 'frz_conflict_horizon' fits good to be a part of pruning > state Since it is passed into one of the helpers, I think I agree. Attached v21 has this change. - Melanie --0000000000004d8ca00643fabb4a Content-Type: text/x-patch; charset="UTF-8"; name="v21-0001-Refactor-heap_page_prune_and_freeze-parameters-i.patch" Content-Disposition: attachment; filename="v21-0001-Refactor-heap_page_prune_and_freeze-parameters-i.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi6maghg0 RnJvbSBhODcxMzJjNDJjYWU5Mzc5Y2VhNTJkZjkxZTEwZDhkNWUyNjc3ZTE2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDExOjEwOjI1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjEgMDEvMTJdIFJlZmFjdG9yIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgcGFy YW1ldGVycwogaW50byBhIHN0cnVjdApNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRl eHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoK aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBoYWQgYWNjdW11bGF0ZWQgYW4gdW53aWVsZHkg bnVtYmVyIG9mIGlucHV0CnBhcmFtZXRlcnMgYW5kIHVwY29taW5nIHdvcmsgdG8gaGFuZGxlIFZN IHVwZGF0ZXMgaW4gdGhpcyBmdW5jdGlvbiB3aWxsCmFkZCBldmVuIG1vcmUuCgpJbnRyb2R1Y2Ug YSBuZXcgUHJ1bmVGcmVlemVQYXJhbXMgc3RydWN0IHRvIGdyb3VwIHRoZSBmdW5jdGlvbuKAmXMg aW5wdXQKcGFyYW1ldGVycywgaW1wcm92aW5nIHJlYWRhYmlsaXR5IGFuZCBtYWludGFpbmFiaWxp dHkuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ ClJldmlld2VkLWJ5OiBLaXJpbGwgUmVzaGtlIDxyZXNoa2VraXJpbGxAZ21haWwuY29tPgpTdWdn ZXN0ZWQtYnk6IEFuZHJlcyBGcmV1bmQgPGFuZHJlc0BhbmFyYXplbC5kZT4KRGlzY3Vzc2lvbjog aHR0cHM6Ly9wb3N0Z3IuZXMvbS95bjR6cDM1a2tkc2p4NndmNDd6Y2ZteGdleHh0NGgyb2c0N3B2 bncyeDVpZnlyczNxYyU0MDd1dzZqeXl4dXlmNwotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jICB8IDkxICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8IDEyICsrLS0KIHNyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW0uaCAgICAgICAgICB8IDYzICsrKysrKysrKysrKysrKy0tLS0KIHNyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0ICAgICB8ICAxICsKIDQgZmlsZXMgY2hhbmdlZCwgMTAwIGlu c2VydGlvbnMoKyksIDY3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFw LmMKaW5kZXggMjMxYmVhNjc5YzYuLmU5ZTE0Y2I0MmI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYwpAQCAtMjYxLDEyICsyNjEsMTggQEAgaGVhcF9wYWdlX3BydW5lX29wdChSZWxh dGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikKIAkJCVBydW5lRnJlZXplUmVzdWx0IHByZXN1 bHQ7CiAKIAkJCS8qCi0JCQkgKiBGb3Igbm93LCBwYXNzIG1hcmtfdW51c2VkX25vdyBhcyBmYWxz ZSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3IKLQkJCSAqIG5vdCB0aGUgcmVsYXRpb24gaGFzIGlu ZGV4ZXMsIHNpbmNlIHdlIGNhbm5vdCBzYWZlbHkgZGV0ZXJtaW5lCi0JCQkgKiB0aGF0IGR1cmlu ZyBvbi1hY2Nlc3MgcHJ1bmluZyB3aXRoIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLgorCQkJ ICogV2UgZG9uJ3QgcGFzcyB0aGUgSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVyBvcHRp b24KKwkJCSAqIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QgdGhlIHJlbGF0aW9uIGhhcyBp bmRleGVzLCBzaW5jZSB3ZQorCQkJICogY2Fubm90IHNhZmVseSBkZXRlcm1pbmUgdGhhdCBkdXJp bmcgb24tYWNjZXNzIHBydW5pbmcgd2l0aCB0aGUKKwkJCSAqIGN1cnJlbnQgaW1wbGVtZW50YXRp b24uCiAJCQkgKi8KLQkJCWhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKHJlbGF0aW9uLCBidWZm ZXIsIHZpc3Rlc3QsIDAsCi0JCQkJCQkJCQkgICBOVUxMLCAmcHJlc3VsdCwgUFJVTkVfT05fQUND RVNTLCAmZHVtbXlfb2ZmX2xvYywgTlVMTCwgTlVMTCk7CisJCQlQcnVuZUZyZWV6ZVBhcmFtcyBw YXJhbXMgPSB7LnJlbGF0aW9uID0gcmVsYXRpb24sLmJ1ZmZlciA9IGJ1ZmZlciwKKwkJCQkucmVh c29uID0gUFJVTkVfT05fQUNDRVNTLC5vcHRpb25zID0gMCwKKwkJCQkudmlzdGVzdCA9IHZpc3Rl c3QsLmN1dG9mZnMgPSBOVUxMCisJCQl9OworCisJCQloZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZSgmcGFyYW1zLCAmcHJlc3VsdCwgJmR1bW15X29mZl9sb2MsCisJCQkJCQkJCQkgICBOVUxMLCBO VUxMKTsKIAogCQkJLyoKIAkJCSAqIFJlcG9ydCB0aGUgbnVtYmVyIG9mIHR1cGxlcyByZWNsYWlt ZWQgdG8gcGdzdGF0cy4gIFRoaXMgaXMKQEAgLTQxOSw2MCArNDI1LDQ0IEBAIGhlYXBfcGFnZV93 aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKICAqIGFsc28gbmVl ZCB0byBhY2NvdW50IGZvciBhIHJlZHVjdGlvbiBpbiB0aGUgbGVuZ3RoIG9mIHRoZSBsaW5lIHBv aW50ZXIKICAqIGFycmF5IGZvbGxvd2luZyBhcnJheSB0cnVuY2F0aW9uIGJ5IHVzLgogICoKLSAq IElmIHRoZSBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0LCB3ZSB3aWxsIGFsc28gZnJl ZXplIHR1cGxlcyBpZiBpdCdzCi0gKiByZXF1aXJlZCBpbiBvcmRlciB0byBhZHZhbmNlIHJlbGZy b3plbnhpZCAvIHJlbG1pbm14aWQsIG9yIGlmIGl0J3MKLSAqIGNvbnNpZGVyZWQgYWR2YW50YWdl b3VzIGZvciBvdmVyYWxsIHN5c3RlbSBwZXJmb3JtYW5jZSB0byBkbyBzbyBub3cuICBUaGUKLSAq ICdjdXRvZmZzJywgJ3ByZXN1bHQnLCAnbmV3X3JlbGZyb3plbl94aWQnIGFuZCAnbmV3X3JlbG1p bl9teGlkJyBhcmd1bWVudHMKLSAqIGFyZSByZXF1aXJlZCB3aGVuIGZyZWV6aW5nLiAgV2hlbiBI RUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0LCB3ZSBhbHNvCi0gKiBzZXQgcHJlc3VsdC0+ YWxsX3Zpc2libGUgYW5kIHByZXN1bHQtPmFsbF9mcm96ZW4gb24gZXhpdCwgdG8gaW5kaWNhdGUg aWYKLSAqIHRoZSBWTSBiaXRzIGNhbiBiZSBzZXQuICBUaGV5IGFyZSBhbHdheXMgc2V0IHRvIGZh bHNlIHdoZW4gdGhlCi0gKiBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgbm90IHNldCwgYmVj YXVzZSBhdCB0aGUgbW9tZW50IG9ubHkgY2FsbGVycwotICogdGhhdCBhbHNvIGZyZWV6ZSBuZWVk IHRoYXQgaW5mb3JtYXRpb24uCi0gKgotICogdmlzdGVzdCBpcyB1c2VkIHRvIGRpc3Rpbmd1aXNo IHdoZXRoZXIgdHVwbGVzIGFyZSBERUFEIG9yIFJFQ0VOVExZX0RFQUQKLSAqIChzZWUgaGVhcF9w cnVuZV9zYXRpc2ZpZXNfdmFjdXVtKS4KLSAqCi0gKiBvcHRpb25zOgotICogICBNQVJLX1VOVVNF RF9OT1cgaW5kaWNhdGVzIHRoYXQgZGVhZCBpdGVtcyBjYW4gYmUgc2V0IExQX1VOVVNFRCBkdXJp bmcKLSAqICAgcHJ1bmluZy4KKyAqIHBhcmFtcyBjb250YWlucyB0aGUgaW5wdXQgcGFyYW1ldGVy cyB1c2VkIHRvIGNvbnRyb2wgZnJlZXppbmcgYW5kIHBydW5pbmcKKyAqIGJlaGF2aW9yLiBTZWUg dGhlIGRlZmluaXRpb24gb2YgUHJ1bmVGcmVlemVQYXJhbXMgZm9yIG1vcmUgb24gd2hhdCBlYWNo CisgKiBwYXJhbWV0ZXIgZG9lcy4KICAqCi0gKiAgIEZSRUVaRSBpbmRpY2F0ZXMgdGhhdCB3ZSB3 aWxsIGFsc28gZnJlZXplIHR1cGxlcywgYW5kIHdpbGwgcmV0dXJuCi0gKiAgICdhbGxfdmlzaWJs ZScsICdhbGxfZnJvemVuJyBmbGFncyB0byB0aGUgY2FsbGVyLgotICoKLSAqIGN1dG9mZnMgY29u dGFpbnMgdGhlIGZyZWV6ZSBjdXRvZmZzLCBlc3RhYmxpc2hlZCBieSBWQUNVVU0gYXQgdGhlIGJl Z2lubmluZwotICogb2YgdmFjdXVtaW5nIHRoZSByZWxhdGlvbi4gIFJlcXVpcmVkIGlmIEhFQVBf UFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQuCi0gKiBjdXRvZmZzLT5PbGRlc3RYbWluIGlzIGFs c28gdXNlZCB0byBkZXRlcm1pbmUgaWYgZGVhZCB0dXBsZXMgYXJlCi0gKiBIRUFQVFVQTEVfUkVD RU5UTFlfREVBRCBvciBIRUFQVFVQTEVfREVBRC4KKyAqIElmIHRoZSBIRUFQX1BBR0VfUFJVTkVf RlJFRVpFIG9wdGlvbiBpcyBzZXQgaW4gcGFyYW1zLCB3ZSB3aWxsIGZyZWV6ZQorICogdHVwbGVz IGlmIGl0J3MgcmVxdWlyZWQgaW4gb3JkZXIgdG8gYWR2YW5jZSByZWxmcm96ZW54aWQgLyByZWxt aW5teGlkLCBvcgorICogaWYgaXQncyBjb25zaWRlcmVkIGFkdmFudGFnZW91cyBmb3Igb3ZlcmFs bCBzeXN0ZW0gcGVyZm9ybWFuY2UgdG8gZG8gc28KKyAqIG5vdy4gIFRoZSAncGFyYW1zLmN1dG9m ZnMnLCAncHJlc3VsdCcsICduZXdfcmVsZnJvemVuX3hpZCcgYW5kCisgKiAnbmV3X3JlbG1pbl9t eGlkJyBhcmd1bWVudHMgYXJlIHJlcXVpcmVkIHdoZW4gZnJlZXppbmcuICBXaGVuCisgKiBIRUFQ X1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBwYXNzZWQsIHdlIGFsc28gc2V0IHByZXN1bHQt PmFsbF92aXNpYmxlCisgKiBhbmQgcHJlc3VsdC0+YWxsX2Zyb3plbiBvbiBleGl0LCB0byBpbmRp Y2F0ZSBpZiB0aGUgVk0gYml0cyBjYW4gYmUgc2V0LgorICogVGhleSBhcmUgYWx3YXlzIHNldCB0 byBmYWxzZSB3aGVuIHRoZSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBub3QKKyAq IHBhc3NlZCwgYmVjYXVzZSBhdCB0aGUgbW9tZW50IG9ubHkgY2FsbGVycyB0aGF0IGFsc28gZnJl ZXplIG5lZWQgdGhhdAorICogaW5mb3JtYXRpb24uCiAgKgogICogcHJlc3VsdCBjb250YWlucyBv dXRwdXQgcGFyYW1ldGVycyBuZWVkZWQgYnkgY2FsbGVycywgc3VjaCBhcyB0aGUgbnVtYmVyIG9m CiAgKiB0dXBsZXMgcmVtb3ZlZCBhbmQgdGhlIG9mZnNldHMgb2YgZGVhZCBpdGVtcyBvbiB0aGUg cGFnZSBhZnRlciBwcnVuaW5nLgogICogaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBpcyBy ZXNwb25zaWJsZSBmb3IgaW5pdGlhbGl6aW5nIGl0LiAgUmVxdWlyZWQKICAqIGJ5IGFsbCBjYWxs ZXJzLgogICoKLSAqIHJlYXNvbiBpbmRpY2F0ZXMgd2h5IHRoZSBwcnVuaW5nIGlzIHBlcmZvcm1l ZC4gIEl0IGlzIGluY2x1ZGVkIGluIHRoZSBXQUwKLSAqIHJlY29yZCBmb3IgZGVidWdnaW5nIGFu ZCBhbmFseXNpcyBwdXJwb3NlcywgYnV0IG90aGVyd2lzZSBoYXMgbm8gZWZmZWN0LgotICoKICAq IG9mZl9sb2MgaXMgdGhlIG9mZnNldCBsb2NhdGlvbiByZXF1aXJlZCBieSB0aGUgY2FsbGVyIHRv IHVzZSBpbiBlcnJvcgogICogY2FsbGJhY2suCiAgKgogICogbmV3X3JlbGZyb3plbl94aWQgYW5k IG5ld19yZWxtaW5fbXhpZCBtdXN0IHByb3ZpZGVkIGJ5IHRoZSBjYWxsZXIgaWYgdGhlCi0gKiBI RUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0LiAgT24gZW50cnksIHRoZXkgY29udGFpbiB0 aGUgb2xkZXN0IFhJRCBhbmQKLSAqIG11bHRpLVhJRCBzZWVuIG9uIHRoZSByZWxhdGlvbiBzbyBm YXIuICBUaGV5IHdpbGwgYmUgdXBkYXRlZCB3aXRoIG9sZGVzdAotICogdmFsdWVzIHByZXNlbnQg b24gdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4gIEFmdGVyIHByb2Nlc3NpbmcgdGhlIHdob2xlCi0g KiByZWxhdGlvbiwgVkFDVVVNIGNhbiB1c2UgdGhlc2UgdmFsdWVzIGFzIHRoZSBuZXcgcmVsZnJv emVueGlkL3JlbG1pbm14aWQKLSAqIGZvciB0aGUgcmVsYXRpb24uCisgKiBIRUFQX1BBR0VfUFJV TkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQgaW4gcGFyYW1zLiAgT24gZW50cnksIHRoZXkgY29udGFp biB0aGUKKyAqIG9sZGVzdCBYSUQgYW5kIG11bHRpLVhJRCBzZWVuIG9uIHRoZSByZWxhdGlvbiBz byBmYXIuICBUaGV5IHdpbGwgYmUgdXBkYXRlZAorICogd2l0aCBvbGRlc3QgdmFsdWVzIHByZXNl bnQgb24gdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4gIEFmdGVyIHByb2Nlc3NpbmcgdGhlCisgKiB3 aG9sZSByZWxhdGlvbiwgVkFDVVVNIGNhbiB1c2UgdGhlc2UgdmFsdWVzIGFzIHRoZSBuZXcKKyAq IHJlbGZyb3plbnhpZC9yZWxtaW5teGlkIGZvciB0aGUgcmVsYXRpb24uCiAgKi8KIHZvaWQKLWhl YXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVy LAotCQkJCQkJICAgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCi0JCQkJCQkgICBpbnQgb3B0aW9u cywKLQkJCQkJCSAgIHN0cnVjdCBWYWN1dW1DdXRvZmZzICpjdXRvZmZzLAoraGVhcF9wYWdlX3By dW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCQkJCSAgIFBydW5l RnJlZXplUmVzdWx0ICpwcmVzdWx0LAotCQkJCQkJICAgUHJ1bmVSZWFzb24gcmVhc29uLAogCQkJ CQkJICAgT2Zmc2V0TnVtYmVyICpvZmZfbG9jLAogCQkJCQkJICAgVHJhbnNhY3Rpb25JZCAqbmV3 X3JlbGZyb3plbl94aWQsCiAJCQkJCQkgICBNdWx0aVhhY3RJZCAqbmV3X3JlbG1pbl9teGlkKQog eworCUJ1ZmZlcgkJYnVmZmVyID0gcGFyYW1zLT5idWZmZXI7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZl ckdldFBhZ2UoYnVmZmVyKTsKIAlCbG9ja051bWJlciBibG9ja25vID0gQnVmZmVyR2V0QmxvY2tO dW1iZXIoYnVmZmVyKTsKIAlPZmZzZXROdW1iZXIgb2ZmbnVtLApAQCAtNDg2LDEwICs0NzYsMTEg QEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBi dWZmZXIsCiAJaW50NjQJCWZwaV9iZWZvcmUgPSBwZ1dhbFVzYWdlLndhbF9mcGk7CiAKIAkvKiBD b3B5IHBhcmFtZXRlcnMgdG8gcHJzdGF0ZSAqLwotCXByc3RhdGUudmlzdGVzdCA9IHZpc3Rlc3Q7 Ci0JcHJzdGF0ZS5tYXJrX3VudXNlZF9ub3cgPSAob3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9N QVJLX1VOVVNFRF9OT1cpICE9IDA7Ci0JcHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSA9IChvcHRpb25z ICYgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSkgIT0gMDsKLQlwcnN0YXRlLmN1dG9mZnMgPSBjdXRv ZmZzOworCXByc3RhdGUudmlzdGVzdCA9IHBhcmFtcy0+dmlzdGVzdDsKKwlwcnN0YXRlLm1hcmtf dW51c2VkX25vdyA9CisJCShwYXJhbXMtPm9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfTUFSS19V TlVTRURfTk9XKSAhPSAwOworCXByc3RhdGUuYXR0ZW1wdF9mcmVlemUgPSAocGFyYW1zLT5vcHRp b25zICYgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSkgIT0gMDsKKwlwcnN0YXRlLmN1dG9mZnMgPSBw YXJhbXMtPmN1dG9mZnM7CiAKIAkvKgogCSAqIE91ciBzdHJhdGVneSBpcyB0byBzY2FuIHRoZSBw YWdlIGFuZCBtYWtlIGxpc3RzIG9mIGl0ZW1zIHRvIGNoYW5nZSwKQEAgLTU4Myw3ICs1NzQsNyBA QCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1 ZmZlciwKIAlwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCA9IEludmFsaWRUcmFuc2FjdGlv bklkOwogCiAJbWF4b2ZmID0gUGFnZUdldE1heE9mZnNldE51bWJlcihwYWdlKTsKLQl0dXAudF90 YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOworCXR1cC50X3RhYmxlT2lkID0g UmVsYXRpb25HZXRSZWxpZChwYXJhbXMtPnJlbGF0aW9uKTsKIAogCS8qCiAJICogRGV0ZXJtaW5l IEhUU1YgZm9yIGFsbCB0dXBsZXMsIGFuZCBxdWV1ZSB0aGVtIHVwIGZvciBwcm9jZXNzaW5nIGFz IEhPVApAQCAtNzg2LDcgKzc3Nyw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0 aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIERlY2lkZSBpZiB3ZSB3YW50IHRvIGdv IGFoZWFkIHdpdGggZnJlZXppbmcgYWNjb3JkaW5nIHRvIHRoZSBmcmVlemUKIAkgKiBwbGFucyB3 ZSBwcmVwYXJlZCwgb3Igbm90LgogCSAqLwotCWRvX2ZyZWV6ZSA9IGhlYXBfcGFnZV93aWxsX2Zy ZWV6ZShyZWxhdGlvbiwgYnVmZmVyLAorCWRvX2ZyZWV6ZSA9IGhlYXBfcGFnZV93aWxsX2ZyZWV6 ZShwYXJhbXMtPnJlbGF0aW9uLCBidWZmZXIsCiAJCQkJCQkJCQkgIGRpZF90dXBsZV9oaW50X2Zw aSwKIAkJCQkJCQkJCSAgZG9fcHJ1bmUsCiAJCQkJCQkJCQkgIGRvX2hpbnRfcHJ1bmUsCkBAIC04 MzgsNyArODI5LDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRp b24sIEJ1ZmZlciBidWZmZXIsCiAJCS8qCiAJCSAqIEVtaXQgYSBXQUwgWExPR19IRUFQMl9QUlVO RSogcmVjb3JkIHNob3dpbmcgd2hhdCB3ZSBkaWQKIAkJICovCi0JCWlmIChSZWxhdGlvbk5lZWRz V0FMKHJlbGF0aW9uKSkKKwkJaWYgKFJlbGF0aW9uTmVlZHNXQUwocGFyYW1zLT5yZWxhdGlvbikp CiAJCXsKIAkJCS8qCiAJCQkgKiBUaGUgc25hcHNob3RDb25mbGljdEhvcml6b24gZm9yIHRoZSB3 aG9sZSByZWNvcmQgc2hvdWxkIGJlIHRoZQpAQCAtODc2LDExICs4NjcsMTEgQEAgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQll bHNlCiAJCQkJY29uZmxpY3RfeGlkID0gcHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQ7CiAKLQkJ CWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUocmVsYXRpb24sIGJ1ZmZlciwKKwkJCWxvZ19oZWFw X3BydW5lX2FuZF9mcmVlemUocGFyYW1zLT5yZWxhdGlvbiwgYnVmZmVyLAogCQkJCQkJCQkJICBJ bnZhbGlkQnVmZmVyLAkvKiB2bWJ1ZmZlciAqLwogCQkJCQkJCQkJICAwLAkvKiB2bWZsYWdzICov CiAJCQkJCQkJCQkgIGNvbmZsaWN0X3hpZCwKLQkJCQkJCQkJCSAgdHJ1ZSwgcmVhc29uLAorCQkJ CQkJCQkJICB0cnVlLCBwYXJhbXMtPnJlYXNvbiwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5mcm96ZW4s IHByc3RhdGUubmZyb3plbiwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5yZWRpcmVjdGVkLCBwcnN0YXRl Lm5yZWRpcmVjdGVkLAogCQkJCQkJCQkJICBwcnN0YXRlLm5vd2RlYWQsIHByc3RhdGUubmRlYWQs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggZGViOWEzZGMwZDEuLjJiOWU1 YzdmODFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0xOTY1LDcgKzE5 NjUsMTAgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIHsKIAlSZWxhdGlv bglyZWwgPSB2YWNyZWwtPnJlbDsKIAlQcnVuZUZyZWV6ZVJlc3VsdCBwcmVzdWx0OwotCWludAkJ CXBydW5lX29wdGlvbnMgPSAwOworCVBydW5lRnJlZXplUGFyYW1zIHBhcmFtcyA9IHsucmVsYXRp b24gPSByZWwsLmJ1ZmZlciA9IGJ1ZiwKKwkJLnJlYXNvbiA9IFBSVU5FX1ZBQ1VVTV9TQ0FOLC5v cHRpb25zID0gSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSwKKwkJLmN1dG9mZnMgPSAmdmFjcmVsLT5j dXRvZmZzLC52aXN0ZXN0ID0gdmFjcmVsLT52aXN0ZXN0CisJfTsKIAogCUFzc2VydChCdWZmZXJH ZXRCbG9ja051bWJlcihidWYpID09IGJsa25vKTsKIApAQCAtMTk4NCwxMiArMTk4NywxMSBAQCBs YXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCSAqIHR1cGxlcy4gUHJ1bmluZyB3 aWxsIGhhdmUgZGV0ZXJtaW5lZCB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBpcwogCSAqIGFsbC12 aXNpYmxlLgogCSAqLwotCXBydW5lX29wdGlvbnMgPSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFOwog CWlmICh2YWNyZWwtPm5pbmRleGVzID09IDApCi0JCXBydW5lX29wdGlvbnMgfD0gSEVBUF9QQUdF X1BSVU5FX01BUktfVU5VU0VEX05PVzsKKwkJcGFyYW1zLm9wdGlvbnMgfD0gSEVBUF9QQUdFX1BS VU5FX01BUktfVU5VU0VEX05PVzsKIAotCWhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKHJlbCwg YnVmLCB2YWNyZWwtPnZpc3Rlc3QsIHBydW5lX29wdGlvbnMsCi0JCQkJCQkJICAgJnZhY3JlbC0+ Y3V0b2ZmcywgJnByZXN1bHQsIFBSVU5FX1ZBQ1VVTV9TQ0FOLAorCWhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKCZwYXJhbXMsCisJCQkJCQkJICAgJnByZXN1bHQsCiAJCQkJCQkJICAgJnZhY3Jl bC0+b2ZmbnVtLAogCQkJCQkJCSAgICZ2YWNyZWwtPk5ld1JlbGZyb3plblhpZCwgJnZhY3JlbC0+ TmV3UmVsbWluTXhpZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCA5MDlkYjczYjdiYi4uNjMyYzQz MzJhOGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMv aW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTIyMSw2ICsyMjEsNTYgQEAgdHlwZWRlZiBzdHJ1 Y3QgSGVhcFBhZ2VGcmVlemUKIAogfSBIZWFwUGFnZUZyZWV6ZTsKIAorCisvKiAncmVhc29uJyBj b2RlcyBmb3IgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSAqLwordHlwZWRlZiBlbnVtCit7 CisJUFJVTkVfT05fQUNDRVNTLAkJCS8qIG9uLWFjY2VzcyBwcnVuaW5nICovCisJUFJVTkVfVkFD VVVNX1NDQU4sCQkJLyogVkFDVVVNIDFzdCBoZWFwIHBhc3MgKi8KKwlQUlVORV9WQUNVVU1fQ0xF QU5VUCwJCS8qIFZBQ1VVTSAybmQgaGVhcCBwYXNzICovCit9IFBydW5lUmVhc29uOworCisvKgor ICogSW5wdXQgcGFyYW1ldGVycyB0byBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpCisgKi8K K3R5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUGFyYW1zCit7CisJUmVsYXRpb24JcmVsYXRpb247 CQkvKiByZWxhdGlvbiBjb250YWluaW5nIGJ1ZmZlciB0byBiZSBwcnVuZWQgKi8KKwlCdWZmZXIJ CWJ1ZmZlcjsJCQkvKiBidWZmZXIgdG8gYmUgcHJ1bmVkICovCisKKwkvKgorCSAqIFRoZSByZWFz b24gcHJ1bmluZyB3YXMgcGVyZm9ybWVkLiAgSXQgaXMgdXNlZCB0byBzZXQgdGhlIFdBTCByZWNv cmQKKwkgKiBvcGNvZGUgd2hpY2ggaXMgdXNlZCBmb3IgZGVidWdnaW5nIGFuZCBhbmFseXNpcyBw dXJwb3Nlcy4KKwkgKi8KKwlQcnVuZVJlYXNvbiByZWFzb247CisKKwkvKgorCSAqIENvbnRhaW5z IGZsYWcgYml0czoKKwkgKgorCSAqIEhFQVBfUEFHRV9QUlVORV9NQVJLX1VOVVNFRF9OT1cgaW5k aWNhdGVzIHRoYXQgZGVhZCBpdGVtcyBjYW4gYmUgc2V0CisJICogTFBfVU5VU0VEIGR1cmluZyBw cnVuaW5nLgorCSAqCisJICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBpbmRpY2F0ZXMgdGhhdCB3 ZSB3aWxsIGFsc28gZnJlZXplIHR1cGxlcywgYW5kCisJICogd2lsbCByZXR1cm4gJ2FsbF92aXNp YmxlJywgJ2FsbF9mcm96ZW4nIGZsYWdzIHRvIHRoZSBjYWxsZXIuCisJICovCisJaW50CQkJb3B0 aW9uczsKKworCS8qCisJICogdmlzdGVzdCBpcyB1c2VkIHRvIGRpc3Rpbmd1aXNoIHdoZXRoZXIg dHVwbGVzIGFyZSBERUFEIG9yIFJFQ0VOVExZX0RFQUQKKwkgKiAoc2VlIGhlYXBfcHJ1bmVfc2F0 aXNmaWVzX3ZhY3V1bSkuCisJICovCisJR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3Q7CisKKwkvKgor CSAqIENvbnRhaW5zIHRoZSBjdXRvZmZzIHVzZWQgZm9yIGZyZWV6aW5nLiBUaGV5IGFyZSByZXF1 aXJlZCBpZiB0aGUKKwkgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQuIGN1 dG9mZnMtPk9sZGVzdFhtaW4gaXMgYWxzbyB1c2VkCisJICogdG8gZGV0ZXJtaW5lIGlmIGRlYWQg dHVwbGVzIGFyZSBIRUFQVFVQTEVfUkVDRU5UTFlfREVBRCBvcgorCSAqIEhFQVBUVVBMRV9ERUFE LiBDdXJyZW50bHkgb25seSB2YWN1dW0gcGFzc2VzIGluIGN1dG9mZnMuIFZhY3V1bQorCSAqIGNh bGN1bGF0ZXMgdGhlbSBvbmNlLCBhdCB0aGUgYmVnaW5uaW5nIG9mIHZhY3V1bWluZyB0aGUgcmVs YXRpb24uCisJICovCisJc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnM7Cit9IFBydW5lRnJl ZXplUGFyYW1zOworCiAvKgogICogUGVyLXBhZ2Ugc3RhdGUgcmV0dXJuZWQgYnkgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoKQogICovCkBAIC0yNjQsMTMgKzMxNCw2IEBAIHR5cGVkZWYgc3Ry dWN0IFBydW5lRnJlZXplUmVzdWx0CiAJT2Zmc2V0TnVtYmVyIGRlYWRvZmZzZXRzW01heEhlYXBU dXBsZXNQZXJQYWdlXTsKIH0gUHJ1bmVGcmVlemVSZXN1bHQ7CiAKLS8qICdyZWFzb24nIGNvZGVz IGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpICovCi10eXBlZGVmIGVudW0KLXsKLQlQ UlVORV9PTl9BQ0NFU1MsCQkJLyogb24tYWNjZXNzIHBydW5pbmcgKi8KLQlQUlVORV9WQUNVVU1f U0NBTiwJCQkvKiBWQUNVVU0gMXN0IGhlYXAgcGFzcyAqLwotCVBSVU5FX1ZBQ1VVTV9DTEVBTlVQ LAkJLyogVkFDVVVNIDJuZCBoZWFwIHBhc3MgKi8KLX0gUHJ1bmVSZWFzb247CiAKIC8qIC0tLS0t LS0tLS0tLS0tLS0KICAqCQlmdW5jdGlvbiBwcm90b3R5cGVzIGZvciBoZWFwIGFjY2VzcyBtZXRo b2QKQEAgLTM2NywxMiArNDEwLDggQEAgZXh0ZXJuIFRyYW5zYWN0aW9uSWQgaGVhcF9pbmRleF9k ZWxldGVfdHVwbGVzKFJlbGF0aW9uIHJlbCwKIAogLyogaW4gaGVhcC9wcnVuZWhlYXAuYyAqLwog ZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVy IGJ1ZmZlcik7Ci1leHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlv biByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKLQkJCQkJCQkJCSAgIEdsb2JhbFZpc1N0YXRlICp2 aXN0ZXN0LAotCQkJCQkJCQkJICAgaW50IG9wdGlvbnMsCi0JCQkJCQkJCQkgICBzdHJ1Y3QgVmFj dXVtQ3V0b2ZmcyAqY3V0b2ZmcywKK2V4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkJCQkJCQkgICBQcnVuZUZyZWV6ZVJl c3VsdCAqcHJlc3VsdCwKLQkJCQkJCQkJCSAgIFBydW5lUmVhc29uIHJlYXNvbiwKIAkJCQkJCQkJ CSAgIE9mZnNldE51bWJlciAqb2ZmX2xvYywKIAkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKm5l d19yZWxmcm96ZW5feGlkLAogCQkJCQkJCQkJICAgTXVsdGlYYWN0SWQgKm5ld19yZWxtaW5fbXhp ZCk7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDU3ZjJhOWNjZGM1Li5jNzUxYzI1YTA0 ZCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTIzNDgsNiArMjM0OCw3IEBAIFByb2pl Y3Rpb25QYXRoCiBQcm9tcHRJbnRlcnJ1cHRDb250ZXh0CiBQcm90b2NvbFZlcnNpb24KIFByc1N0 b3JhZ2UKK1BydW5lRnJlZXplUGFyYW1zCiBQcnVuZUZyZWV6ZVJlc3VsdAogUHJ1bmVSZWFzb24K IFBydW5lU3RhdGUKLS0gCjIuNDMuMAoK --0000000000004d8ca00643fabb4a Content-Type: text/x-patch; charset="US-ASCII"; name="v21-0002-Keep-all_frozen-updated-in-heap_page_prune_and_f.patch" Content-Disposition: attachment; filename="v21-0002-Keep-all_frozen-updated-in-heap_page_prune_and_f.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi6mal0g1 RnJvbSBiZWRiYTc1M2JiOWZjYzM3YjNiNWYxYTdlMzhjMDI4Mjg4NTA1MjBkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDE0OjU1OjQwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjEgMDIvMTJdIEtlZXAgYWxsX2Zyb3plbiB1cGRhdGVkIGluCiBoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZQoKUHJldmlvdXNseSwgd2UgcmVsaWVkIG9uIGFsbF92aXNpYmxlIGFuZCBh bGxfZnJvemVuIGJlaW5nIHVzZWQgdG9nZXRoZXIKdG8gZW5zdXJlIHRoYXQgYWxsX2Zyb3plbiB3 YXMgY29ycmVjdCwgYnV0IGl0IGlzIGJldHRlciB0byBrZWVwIGJvdGgKZmllbGRzIHVwZGF0ZWQu CgpGdXR1cmUgY2hhbmdlcyB3aWxsIHNlcGFyYXRlIHRoZWlyIHVzYWdlLCBzbyB3ZSBzaG91bGQg bm90IGRlcGVuZCBvbgphbGxfdmlzaWJsZSBmb3IgdGhlIHZhbGlkaXR5IG9mIGFsbF9mcm96ZW4u CgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJl dmlld2VkLWJ5OiBLaXJpbGwgUmVzaGtlIDxyZXNoa2VraXJpbGxAZ21haWwuY29tPgpEaXNjdXNz aW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL2ZsYXQvQ0FBS1J1X1pNdzZOcGRfcW0yS00lMkJGd1Ez Y01PTXgxRGgzVk1ocDgtVjdTT0x4ZEs5LWclNDBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICB8IDYwICsrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8ICA5ICsrLS0tCiAy IGZpbGVzIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggZTllMTRjYjQyYjcuLjdjZDUxYzdiZTMzIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMTQzLDEwICsxNDMsNiBAQCB0eXBl ZGVmIHN0cnVjdAogCSAqIHdoZXRoZXIgdG8gZnJlZXplIHRoZSBwYWdlIG9yIG5vdC4gIFRoZSBh bGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbgogCSAqIHZhbHVlcyByZXR1cm5lZCB0byB0aGUgY2Fs bGVyIGFyZSBhZGp1c3RlZCB0byBpbmNsdWRlIExQX0RFQUQgaXRlbXMgYXQKIAkgKiB0aGUgZW5k LgotCSAqCi0JICogYWxsX2Zyb3plbiBzaG91bGQgb25seSBiZSBjb25zaWRlcmVkIHZhbGlkIGlm IGFsbF92aXNpYmxlIGlzIGFsc28gc2V0OwotCSAqIHdlIGRvbid0IGJvdGhlciB0byBjbGVhciB0 aGUgYWxsX2Zyb3plbiBmbGFnIGV2ZXJ5IHRpbWUgd2UgY2xlYXIgdGhlCi0JICogYWxsX3Zpc2li bGUgZmxhZy4KIAkgKi8KIAlib29sCQlhbGxfdmlzaWJsZTsKIAlib29sCQlhbGxfZnJvemVuOwpA QCAtMzU5LDggKzM1NSwxMCBAQCBoZWFwX3BhZ2Vfd2lsbF9mcmVlemUoUmVsYXRpb24gcmVsYXRp b24sIEJ1ZmZlciBidWZmZXIsCiAJCSAqIGFueW1vcmUuICBUaGUgb3Bwb3J0dW5pc3RpYyBmcmVl emUgaGV1cmlzdGljIG11c3QgYmUgaW1wcm92ZWQ7CiAJCSAqIGhvd2V2ZXIsIGZvciBub3csIHRy eSB0byBhcHByb3hpbWF0ZSB0aGUgb2xkIGxvZ2ljLgogCQkgKi8KLQkJaWYgKHByc3RhdGUtPmFs bF92aXNpYmxlICYmIHByc3RhdGUtPmFsbF9mcm96ZW4gJiYgcHJzdGF0ZS0+bmZyb3plbiA+IDAp CisJCWlmIChwcnN0YXRlLT5hbGxfZnJvemVuICYmIHByc3RhdGUtPm5mcm96ZW4gPiAwKQogCQl7 CisJCQlBc3NlcnQocHJzdGF0ZS0+YWxsX3Zpc2libGUpOworCiAJCQkvKgogCQkJICogRnJlZXpp bmcgd291bGQgbWFrZSB0aGUgcGFnZSBhbGwtZnJvemVuLiAgSGF2ZSBhbHJlYWR5IGVtaXR0ZWQK IAkJCSAqIGFuIEZQSSBvciB3aWxsIGRvIHNvIGFueXdheT8KQEAgLTU0NCw5ICs1NDIsOSBAQCBo ZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCSAq IGRlYWQgdHVwbGVzIHdoaWNoIGFyZSBub3QgeWV0IHJlbW92YWJsZS4gIEhvd2V2ZXIsIGRlYWQg dHVwbGVzIHdoaWNoCiAJICogd2lsbCBiZSByZW1vdmVkIGJ5IHRoZSBlbmQgb2YgdmFjdXVtaW5n IHNob3VsZCBub3QgcHJlY2x1ZGUgdXMgZnJvbQogCSAqIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6 aW5nLiAgQmVjYXVzZSBvZiB0aGF0LCB3ZSBkbyBub3QgY2xlYXIKLQkgKiBhbGxfdmlzaWJsZSB3 aGVuIHdlIHNlZSBMUF9ERUFEIGl0ZW1zLiAgV2UgZml4IHRoYXQgYXQgdGhlIGVuZCBvZiB0aGUK LQkgKiBmdW5jdGlvbiwgd2hlbiB3ZSByZXR1cm4gdGhlIHZhbHVlIHRvIHRoZSBjYWxsZXIsIHNv IHRoYXQgdGhlIGNhbGxlcgotCSAqIGRvZXNuJ3Qgc2V0IHRoZSBWTSBiaXQgaW5jb3JyZWN0bHku CisJICogYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gd2hlbiB3ZSBzZWUgTFBfREVBRCBpdGVt cy4gIFdlIGZpeCB0aGF0IGF0CisJICogdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24sIHdoZW4gd2Ug cmV0dXJuIHRoZSB2YWx1ZSB0byB0aGUgY2FsbGVyLCBzbworCSAqIHRoYXQgdGhlIGNhbGxlciBk b2Vzbid0IHNldCB0aGUgVk0gYml0cyBpbmNvcnJlY3RseS4KIAkgKi8KIAlpZiAocHJzdGF0ZS5h dHRlbXB0X2ZyZWV6ZSkKIAl7CkBAIC03ODMsNiArNzgxLDggQEAgaGVhcF9wYWdlX3BydW5lX2Fu ZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCQkJCQkJCSAgZG9faGludF9w cnVuZSwKIAkJCQkJCQkJCSAgJnByc3RhdGUpOwogCisJQXNzZXJ0KCFwcnN0YXRlLmFsbF9mcm96 ZW4gfHwgcHJzdGF0ZS5hbGxfdmlzaWJsZSk7CisKIAkvKiBBbnkgZXJyb3Igd2hpbGUgYXBwbHlp bmcgdGhlIGNoYW5nZXMgaXMgY3JpdGljYWwgKi8KIAlTVEFSVF9DUklUX1NFQ1RJT04oKTsKIApA QCAtODUyLDcgKzg1Miw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXpl UGFyYW1zICpwYXJhbXMsCiAJCQkgKi8KIAkJCWlmIChkb19mcmVlemUpCiAJCQl7Ci0JCQkJaWYg KHByc3RhdGUuYWxsX3Zpc2libGUgJiYgcHJzdGF0ZS5hbGxfZnJvemVuKQorCQkJCWlmIChwcnN0 YXRlLmFsbF9mcm96ZW4pCiAJCQkJCWZyel9jb25mbGljdF9ob3Jpem9uID0gcHJzdGF0ZS52aXNp YmlsaXR5X2N1dG9mZl94aWQ7CiAJCQkJZWxzZQogCQkJCXsKQEAgLTg4OSwxNiArODg5LDE2IEBA IGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJ cHJlc3VsdC0+cmVjZW50bHlfZGVhZF90dXBsZXMgPSBwcnN0YXRlLnJlY2VudGx5X2RlYWRfdHVw bGVzOwogCiAJLyoKLQkgKiBJdCB3YXMgY29udmVuaWVudCB0byBpZ25vcmUgTFBfREVBRCBpdGVt cyBpbiBhbGxfdmlzaWJsZSBlYXJsaWVyIG9uIHRvCi0JICogbWFrZSB0aGUgY2hvaWNlIG9mIHdo ZXRoZXIgb3Igbm90IHRvIGZyZWV6ZSB0aGUgcGFnZSB1bmFmZmVjdGVkIGJ5IHRoZQotCSAqIHNo b3J0LXRlcm0gcHJlc2VuY2Ugb2YgTFBfREVBRCBpdGVtcy4gIFRoZXNlIExQX0RFQUQgaXRlbXMg d2VyZQotCSAqIGVmZmVjdGl2ZWx5IGFzc3VtZWQgdG8gYmUgTFBfVU5VU0VEIGl0ZW1zIGluIHRo ZSBtYWtpbmcuICBJdCBkb2Vzbid0Ci0JICogbWF0dGVyIHdoaWNoIHZhY3V1bSBoZWFwIHBhc3Mg KGluaXRpYWwgcGFzcyBvciBmaW5hbCBwYXNzKSBlbmRzIHVwCi0JICogc2V0dGluZyB0aGUgcGFn ZSBhbGwtZnJvemVuLCBhcyBsb25nIGFzIHRoZSBvbmdvaW5nIFZBQ1VVTSBkb2VzIGl0LgorCSAq IEl0IHdhcyBjb252ZW5pZW50IHRvIGlnbm9yZSBMUF9ERUFEIGl0ZW1zIGluIGFsbF92aXNpYmxl L2FsbF9mcm96ZW4KKwkgKiBlYXJsaWVyIG9uIHRvIG1ha2UgdGhlIGNob2ljZSBvZiB3aGV0aGVy IG9yIG5vdCB0byBmcmVlemUgdGhlIHBhZ2UKKwkgKiB1bmFmZmVjdGVkIGJ5IHRoZSBzaG9ydC10 ZXJtIHByZXNlbmNlIG9mIExQX0RFQUQgaXRlbXMuICBUaGVzZSBMUF9ERUFECisJICogaXRlbXMg d2VyZSBlZmZlY3RpdmVseSBhc3N1bWVkIHRvIGJlIExQX1VOVVNFRCBpdGVtcyBpbiB0aGUgbWFr aW5nLiAgSXQKKwkgKiBkb2Vzbid0IG1hdHRlciB3aGljaCB2YWN1dW0gaGVhcCBwYXNzIChpbml0 aWFsIHBhc3Mgb3IgZmluYWwgcGFzcykgZW5kcworCSAqIHVwIHNldHRpbmcgdGhlIHBhZ2UgYWxs LWZyb3plbiwgYXMgbG9uZyBhcyB0aGUgb25nb2luZyBWQUNVVU0gZG9lcyBpdC4KIAkgKgotCSAq IE5vdyB0aGF0IGZyZWV6aW5nIGhhcyBiZWVuIGZpbmFsaXplZCwgdW5zZXQgYWxsX3Zpc2libGUg aWYgdGhlcmUgYXJlCi0JICogYW55IExQX0RFQUQgaXRlbXMgb24gdGhlIHBhZ2UuICBJdCBuZWVk cyB0byByZWZsZWN0IHRoZSBwcmVzZW50IHN0YXRlCi0JICogb2YgdGhlIHBhZ2UsIGFzIGV4cGVj dGVkIGJ5IG91ciBjYWxsZXIuCisJICogTm93IHRoYXQgZnJlZXppbmcgaGFzIGJlZW4gZmluYWxp emVkLCB1bnNldCBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbgorCSAqIGlmIHRoZXJlIGFyZSBh bnkgTFBfREVBRCBpdGVtcyBvbiB0aGUgcGFnZS4gIEl0IG5lZWRzIHRvIHJlZmxlY3QgdGhlCisJ ICogcHJlc2VudCBzdGF0ZSBvZiB0aGUgcGFnZSwgYXMgZXhwZWN0ZWQgYnkgb3VyIGNhbGxlci4K IAkgKi8KIAlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJiBwcnN0YXRlLmxwZGVhZF9pdGVtcyA9 PSAwKQogCXsKQEAgLTEyODksOCArMTI4OSw5IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX2RlYWQoUHJ1 bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSwKIAlwcnN0YXRlLT5uZGVhZCsr OwogCiAJLyoKLQkgKiBEZWxpYmVyYXRlbHkgZGVsYXkgdW5zZXR0aW5nIGFsbF92aXNpYmxlIHVu dGlsIGxhdGVyIGR1cmluZyBwcnVuaW5nLgotCSAqIFJlbW92YWJsZSBkZWFkIHR1cGxlcyBzaG91 bGRuJ3QgcHJlY2x1ZGUgZnJlZXppbmcgdGhlIHBhZ2UuCisJICogRGVsaWJlcmF0ZWx5IGRlbGF5 IHVuc2V0dGluZyBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB1bnRpbCBsYXRlcgorCSAqIGR1 cmluZyBwcnVuaW5nLiBSZW1vdmFibGUgZGVhZCB0dXBsZXMgc2hvdWxkbid0IHByZWNsdWRlIGZy ZWV6aW5nIHRoZQorCSAqIHBhZ2UuCiAJICovCiAKIAkvKiBSZWNvcmQgdGhlIGRlYWQgb2Zmc2V0 IGZvciB2YWN1dW0gKi8KQEAgLTE0MTgsNiArMTQxOSw3IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3Vu Y2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXRO dW1iCiAJCQkJaWYgKCFIZWFwVHVwbGVIZWFkZXJYbWluQ29tbWl0dGVkKGh0dXApKQogCQkJCXsK IAkJCQkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJCQkJcHJzdGF0ZS0+YWxsX2Zy b3plbiA9IGZhbHNlOwogCQkJCQlicmVhazsKIAkJCQl9CiAKQEAgLTE0MzIsMTQgKzE0MzQsMTUg QEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdlIHBhZ2UsIFBydW5l U3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAogCQkJCS8qCiAJCQkJICogRm9yIG5vdyBhbHdh eXMgdXNlIHByc3RhdGUtPmN1dG9mZnMgZm9yIHRoaXMgdGVzdCwgYmVjYXVzZQotCQkJCSAqIHdl IG9ubHkgdXBkYXRlICdhbGxfdmlzaWJsZScgd2hlbiBmcmVlemluZyBpcyByZXF1ZXN0ZWQuIFdl Ci0JCQkJICogY291bGQgdXNlIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCBpbnN0ZWFkLCBp ZiBhCi0JCQkJICogbm9uLWZyZWV6aW5nIGNhbGxlciB3YW50ZWQgdG8gc2V0IHRoZSBWTSBiaXQu CisJCQkJICogd2Ugb25seSB1cGRhdGUgJ2FsbF92aXNpYmxlJyBhbmQgJ2FsbF9mcm96ZW4nIHdo ZW4gZnJlZXppbmcKKwkJCQkgKiBpcyByZXF1ZXN0ZWQuIFdlIGNvdWxkIHVzZSBHbG9iYWxWaXNU ZXN0SXNSZW1vdmFibGVYaWQKKwkJCQkgKiBpbnN0ZWFkLCBpZiBhIG5vbi1mcmVlemluZyBjYWxs ZXIgd2FudGVkIHRvIHNldCB0aGUgVk0gYml0LgogCQkJCSAqLwogCQkJCUFzc2VydChwcnN0YXRl LT5jdXRvZmZzKTsKIAkJCQlpZiAoIVRyYW5zYWN0aW9uSWRQcmVjZWRlcyh4bWluLCBwcnN0YXRl LT5jdXRvZmZzLT5PbGRlc3RYbWluKSkKIAkJCQl7CiAJCQkJCXByc3RhdGUtPmFsbF92aXNpYmxl ID0gZmFsc2U7CisJCQkJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAkJCQkJYnJlYWs7 CiAJCQkJfQogCkBAIC0xNDUzLDYgKzE0NTYsNyBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5n ZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYgog CQljYXNlIEhFQVBUVVBMRV9SRUNFTlRMWV9ERUFEOgogCQkJcHJzdGF0ZS0+cmVjZW50bHlfZGVh ZF90dXBsZXMrKzsKIAkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CisJCQlwcnN0YXRl LT5hbGxfZnJvemVuID0gZmFsc2U7CiAKIAkJCS8qCiAJCQkgKiBUaGlzIHR1cGxlIHdpbGwgc29v biBiZWNvbWUgREVBRC4gIFVwZGF0ZSB0aGUgaGludCBmaWVsZCBzbwpAQCAtMTQ3Miw2ICsxNDc2 LDcgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdlIHBhZ2UsIFBy dW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAkJCSAqIGRvZXMsIHNvIGJlIGNvbnNpc3Rl bnQuCiAJCQkgKi8KIAkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CisJCQlwcnN0YXRl LT5hbGxfZnJvemVuID0gZmFsc2U7CiAKIAkJCS8qCiAJCQkgKiBJZiB3ZSB3YW50ZWQgdG8gb3B0 aW1pemUgZm9yIGFib3J0cywgd2UgbWlnaHQgY29uc2lkZXIgbWFya2luZwpAQCAtMTQ5MCw2ICsx NDk1LDcgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdlIHBhZ2Us IFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAkJCSAqLwogCQkJcHJzdGF0ZS0+bGl2 ZV90dXBsZXMrKzsKIAkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CisJCQlwcnN0YXRl LT5hbGxfZnJvemVuID0gZmFsc2U7CiAKIAkJCS8qCiAJCQkgKiBUaGlzIHR1cGxlIG1heSBzb29u IGJlY29tZSBERUFELiAgVXBkYXRlIHRoZSBoaW50IGZpZWxkIHNvIHRoYXQKQEAgLTE1NTQsMTAg KzE1NjAsMTAgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX2RlYWQoUGFnZSBwYWdl LCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIKIAkgKiBoYXN0dXAvbm9uZW1wdHlf cGFnZXMgYXMgcHJvdmlzaW9uYWwgbm8gbWF0dGVyIGhvdyBMUF9ERUFEIGl0ZW1zIGFyZQogCSAq IGhhbmRsZWQgKGhhbmRsZWQgaGVyZSwgb3IgaGFuZGxlZCBsYXRlciBvbikuCiAJICoKLQkgKiBT aW1pbGFybHksIGRvbid0IHVuc2V0IGFsbF92aXNpYmxlIHVudGlsIGxhdGVyLCBhdCB0aGUgZW5k IG9mCi0JICogaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKS4gIFRoaXMgd2lsbCBhbGxvdyB1 cyB0byBhdHRlbXB0IHRvIGZyZWV6ZQotCSAqIHRoZSBwYWdlIGFmdGVyIHBydW5pbmcuICBBcyBs b25nIGFzIHdlIHVuc2V0IGl0IGJlZm9yZSB1cGRhdGluZyB0aGUKLQkgKiB2aXNpYmlsaXR5IG1h cCwgdGhpcyB3aWxsIGJlIGNvcnJlY3QuCisJICogU2ltaWxhcmx5LCBkb24ndCB1bnNldCBhbGxf dmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB1bnRpbCBsYXRlciwgYXQgdGhlCisJICogZW5kIG9mIGhl YXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkuICBUaGlzIHdpbGwgYWxsb3cgdXMgdG8gYXR0ZW1w dCB0bworCSAqIGZyZWV6ZSB0aGUgcGFnZSBhZnRlciBwcnVuaW5nLiAgQXMgbG9uZyBhcyB3ZSB1 bnNldCBpdCBiZWZvcmUgdXBkYXRpbmcKKwkgKiB0aGUgdmlzaWJpbGl0eSBtYXAsIHRoaXMgd2ls bCBiZSBjb3JyZWN0LgogCSAqLwogCiAJLyogUmVjb3JkIHRoZSBkZWFkIG9mZnNldCBmb3IgdmFj dXVtICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggMmI5ZTVjN2Y4MWIu LmUxYjc0NTY4MjNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0yMDE3 LDcgKzIwMTcsNiBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCSAqIGFn cmVlbWVudCB3aXRoIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpIHVzaW5nIGFuIGFzc2VydGlv bi4KIAkgKi8KICNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCi0JLyogTm90ZSB0aGF0IGFsbF9m cm96ZW4gdmFsdWUgZG9lcyBub3QgbWF0dGVyIHdoZW4gIWFsbF92aXNpYmxlICovCiAJaWYgKHBy ZXN1bHQuYWxsX3Zpc2libGUpCiAJewogCQlUcmFuc2FjdGlvbklkIGRlYnVnX2N1dG9mZjsKQEAg LTIwNzEsNiArMjA3MCw3IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJ Kmhhc19scGRlYWRfaXRlbXMgPSAocHJlc3VsdC5scGRlYWRfaXRlbXMgPiAwKTsKIAogCUFzc2Vy dCghcHJlc3VsdC5hbGxfdmlzaWJsZSB8fCAhKCpoYXNfbHBkZWFkX2l0ZW1zKSk7CisJQXNzZXJ0 KCFwcmVzdWx0LmFsbF9mcm96ZW4gfHwgcHJlc3VsdC5hbGxfdmlzaWJsZSk7CiAKIAkvKgogCSAq IEhhbmRsZSBzZXR0aW5nIHZpc2liaWxpdHkgbWFwIGJpdCBiYXNlZCBvbiBpbmZvcm1hdGlvbiBm cm9tIHRoZSBWTSAoYXMKQEAgLTIxNzYsMTEgKzIxNzYsMTAgQEAgbGF6eV9zY2FuX3BydW5lKExW UmVsU3RhdGUgKnZhY3JlbCwKIAogCS8qCiAJICogSWYgdGhlIGFsbC12aXNpYmxlIHBhZ2UgaXMg YWxsLWZyb3plbiBidXQgbm90IG1hcmtlZCBhcyBzdWNoIHlldCwgbWFyawotCSAqIGl0IGFzIGFs bC1mcm96ZW4uICBOb3RlIHRoYXQgYWxsX2Zyb3plbiBpcyBvbmx5IHZhbGlkIGlmIGFsbF92aXNp YmxlIGlzCi0JICogdHJ1ZSwgc28gd2UgbXVzdCBjaGVjayBib3RoIGFsbF92aXNpYmxlIGFuZCBh bGxfZnJvemVuLgorCSAqIGl0IGFzIGFsbC1mcm96ZW4uCiAJICovCi0JZWxzZSBpZiAoYWxsX3Zp c2libGVfYWNjb3JkaW5nX3RvX3ZtICYmIHByZXN1bHQuYWxsX3Zpc2libGUgJiYKLQkJCSBwcmVz dWx0LmFsbF9mcm96ZW4gJiYgIVZNX0FMTF9GUk9aRU4odmFjcmVsLT5yZWwsIGJsa25vLCAmdm1i dWZmZXIpKQorCWVsc2UgaWYgKGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSAmJiBwcmVzdWx0 LmFsbF9mcm96ZW4gJiYKKwkJCSAhVk1fQUxMX0ZST1pFTih2YWNyZWwtPnJlbCwgYmxrbm8sICZ2 bWJ1ZmZlcikpCiAJewogCQl1aW50OAkJb2xkX3ZtYml0czsKIAotLSAKMi40My4wCgo= --0000000000004d8ca00643fabb4a Content-Type: text/x-patch; charset="UTF-8"; name="v21-0003-Update-PruneState.all_-visible-frozen-earlier-in.patch" Content-Disposition: attachment; filename="v21-0003-Update-PruneState.all_-visible-frozen-earlier-in.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi6marbg2 RnJvbSAwMjFhZDgwMTIwNWM0NDU4MWM2OGQ4MjZhMDNlNTNlZDY3OGFiZGYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDE1OjIxOjQ5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjEgMDMvMTJdIFVwZGF0ZSBQcnVuZVN0YXRlLmFsbF9bdmlzaWJsZXxmcm96ZW5dIGVh cmxpZXIgaW4KIHBydW5pbmcKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3Bs YWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCkluIHRo ZSBwcnVuZS9mcmVlemUgcGF0aCwgd2UgY3VycmVudGx5IGRlbGF5IGNsZWFyaW5nIGFsbF92aXNp YmxlIGFuZAphbGxfZnJvemVuIGluIHRoZSBwcmVzZW5jZSBvZiBkZWFkIGl0ZW1zLiBUaGlzIGFs bG93cyBvcHBvcnR1bmlzdGljCmZyZWV6aW5nIGlmIHRoZSBwYWdlIHdvdWxkIG90aGVyd2lzZSBi ZSBmdWxseSBmcm96ZW4sIHNpbmNlIHRob3NlIGRlYWQKaXRlbXMgYXJlIGxhdGVyIHJlbW92ZWQg aW4gdmFjdXVt4oCZcyB0aGlyZCBwaGFzZS4KClRvIG1vdmUgdGhlIFZNIHVwZGF0ZSBpbnRvIHRo ZSBzYW1lIFdBTCByZWNvcmQgdGhhdApwcnVuZXMgYW5kIGZyZWV6ZXMgdHVwbGVzLCB3ZSBtdXN0 IGtub3cgd2hldGhlciB0aGUgcGFnZSB3aWxsCmJlIG1hcmtlZCBhbGwtdmlzaWJsZS9hbGwtZnJv emVuIGJlZm9yZSBlbWl0dGluZyBXQUwuCgpUaGUgb25seSBiYXJyaWVyIHRvIHVwZGF0aW5nIHRo ZXNlIGZsYWdzIGltbWVkaWF0ZWx5IGFmdGVyIGRlY2lkaW5nCndoZXRoZXIgdG8gb3Bwb3J0dW5p c3RpY2FsbHkgZnJlZXplIGlzIHRoYXQgd2UgcHJldmlvdXNseSB1c2VkCmFsbF9mcm96ZW4gdG8g Y29tcHV0ZSB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiB3aGVuIGZyZWV6aW5nCnR1cGxl cy4gQnkgZGV0ZXJtaW5pbmcgdGhlIGN1dG9mZiBlYXJsaWVyLCB3ZSBjYW4gdXBkYXRlIHRoZSBm bGFncwppbW1lZGlhdGVseSBhZnRlciBtYWtpbmcgdGhlIGZyZWV6ZSBkZWNpc2lvbi4KClRoaXMg aXMgcmVxdWlyZWQgdG8gc2V0IHRoZSBWTSBpbiB0aGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1f U0NBTgpyZWNvcmQgZW1pdHRlZCBieSBwcnVuaW5nIGFuZCBmcmVlemluZy4KCkF1dGhvcjogTWVs YW5pZSBQbGFnZW1hbiA8bWVsYW5pZXBsYWdlbWFuQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEtp cmlsbCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8v cG9zdGdyLmVzL20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9NeDFEaDNWTWhw OC1WN1NPTHhkSzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvcHJ1bmVoZWFwLmMgfCAxMTYgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogMSBmaWxl IGNoYW5nZWQsIDU4IGluc2VydGlvbnMoKyksIDU4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggN2NkNTFjN2JlMzMuLjhlNDA1NjUzODFmIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMTI5LDYgKzEyOSwxMyBAQCB0eXBlZGVmIHN0 cnVjdAogCWludAkJCWxwZGVhZF9pdGVtczsJLyogbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBhcnJh eSAqLwogCU9mZnNldE51bWJlciAqZGVhZG9mZnNldHM7CS8qIHBvaW50cyBkaXJlY3RseSB0byBw cmVzdWx0LT5kZWFkb2Zmc2V0cyAqLwogCisJLyoKKwkgKiBUaGUgc25hcHNob3QgY29uZmxpY3Qg aG9yaXpvbiB1c2VkIHdoZW4gZnJlZXppbmcgdHVwbGVzLiBUaGUgZmluYWwKKwkgKiBzbmFwc2hv dCBjb25mbGljdCBob3Jpem9uIGZvciB0aGUgcmVjb3JkIG1heSBiZSBuZXdlciBpZiBwcnVuaW5n CisJICogcmVtb3ZlcyBuZXdlciB0cmFuc2FjdGlvbiBJRHMuCisJICovCisJVHJhbnNhY3Rpb25J ZCBmcnpfY29uZmxpY3RfaG9yaXpvbjsKKwogCS8qCiAJICogYWxsX3Zpc2libGUgYW5kIGFsbF9m cm96ZW4gaW5kaWNhdGUgaWYgdGhlIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuCiAJICogYml0 cyBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgY2FuIGJlIHNldCBmb3IgdGhpcyBwYWdlIGFmdGVyIHBy dW5pbmcuCkBAIC0xMzgsMTEgKzE0NSwxMSBAQCB0eXBlZGVmIHN0cnVjdAogCSAqIGJpdHMuICBJ dCBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3plIHNvbWUgdHVwbGVzLCBhbmQgYWxsX2Zyb3plbiBp cwogCSAqIHRydWUuCiAJICoKLQkgKiBOT1RFOiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBk b24ndCBpbmNsdWRlIExQX0RFQUQgaXRlbXMuICBUaGF0J3MKLQkgKiBjb252ZW5pZW50IGZvciBo ZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLCB0byB1c2UgdGhlbSB0byBkZWNpZGUKLQkgKiB3 aGV0aGVyIHRvIGZyZWV6ZSB0aGUgcGFnZSBvciBub3QuICBUaGUgYWxsX3Zpc2libGUgYW5kIGFs bF9mcm96ZW4KLQkgKiB2YWx1ZXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciBhcmUgYWRqdXN0ZWQg dG8gaW5jbHVkZSBMUF9ERUFEIGl0ZW1zIGF0Ci0JICogdGhlIGVuZC4KKwkgKiBOT1RFOiBhbGxf dmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBpbml0aWFsbHkgZG9uJ3QgaW5jbHVkZSBMUF9ERUFEIGl0 ZW1zLgorCSAqIFRoYXQncyBjb252ZW5pZW50IGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZSgpIHRvIHVzZSB0aGVtIHRvCisJICogZGVjaWRlIHdoZXRoZXIgdG8gZnJlZXplIHRoZSBwYWdl IG9yIG5vdC4gIFRoZSBhbGxfdmlzaWJsZSBhbmQKKwkgKiBhbGxfZnJvemVuIHZhbHVlcyByZXR1 cm5lZCB0byB0aGUgY2FsbGVyIGFyZSBhZGp1c3RlZCB0byBpbmNsdWRlCisJICogTFBfREVBRCBp dGVtcyBhZnRlciB3ZSBkZXRlcm1pbmUgd2hldGhlciB0byBvcHBvcnR1bmlzdGljYWxseSBmcmVl emUuCiAJICovCiAJYm9vbAkJYWxsX3Zpc2libGU7CiAJYm9vbAkJYWxsX2Zyb3plbjsKQEAgLTM4 OCw2ICszOTUsMjIgQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBC dWZmZXIgYnVmZmVyLAogCQkgKiBjcml0aWNhbCBzZWN0aW9uLgogCQkgKi8KIAkJaGVhcF9wcmVf ZnJlZXplX2NoZWNrcyhidWZmZXIsIHByc3RhdGUtPmZyb3plbiwgcHJzdGF0ZS0+bmZyb3plbik7 CisKKwkJLyoKKwkJICogQ2FsY3VsYXRlIHdoYXQgdGhlIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6 b24gc2hvdWxkIGJlIGZvciBhIHJlY29yZAorCQkgKiBmcmVlemluZyB0dXBsZXMuIFdlIGNhbiB1 c2UgdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBhcyBvdXIgY3V0b2ZmCisJCSAqIGZvciBjb25m bGljdHMgd2hlbiB0aGUgd2hvbGUgcGFnZSBpcyBlbGlnaWJsZSB0byBiZWNvbWUgYWxsLWZyb3pl bgorCQkgKiBpbiB0aGUgVk0gb25jZSB3ZSdyZSBkb25lIHdpdGggaXQuIE90aGVyd2lzZSwgd2Ug Z2VuZXJhdGUgYQorCQkgKiBjb25zZXJ2YXRpdmUgY3V0b2ZmIGJ5IHN0ZXBwaW5nIGJhY2sgZnJv bSBPbGRlc3RYbWluLgorCQkgKi8KKwkJaWYgKHByc3RhdGUtPmFsbF9mcm96ZW4pCisJCQlwcnN0 YXRlLT5mcnpfY29uZmxpY3RfaG9yaXpvbiA9IHByc3RhdGUtPnZpc2liaWxpdHlfY3V0b2ZmX3hp ZDsKKwkJZWxzZQorCQl7CisJCQkvKiBBdm9pZHMgZmFsc2UgY29uZmxpY3RzIHdoZW4gaG90X3N0 YW5kYnlfZmVlZGJhY2sgaW4gdXNlICovCisJCQlwcnN0YXRlLT5mcnpfY29uZmxpY3RfaG9yaXpv biA9IHByc3RhdGUtPmN1dG9mZnMtPk9sZGVzdFhtaW47CisJCQlUcmFuc2FjdGlvbklkUmV0cmVh dChwcnN0YXRlLT5mcnpfY29uZmxpY3RfaG9yaXpvbik7CisJCX0KIAl9CiAJZWxzZSBpZiAocHJz dGF0ZS0+bmZyb3plbiA+IDApCiAJewpAQCAtNDMzLDEwICs0NTYsMTAgQEAgaGVhcF9wYWdlX3dp bGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogICogbm93LiAgVGhl ICdwYXJhbXMuY3V0b2ZmcycsICdwcmVzdWx0JywgJ25ld19yZWxmcm96ZW5feGlkJyBhbmQKICAq ICduZXdfcmVsbWluX214aWQnIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQgd2hlbiBmcmVlemluZy4g IFdoZW4KICAqIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIHBhc3NlZCwgd2UgYWxz byBzZXQgcHJlc3VsdC0+YWxsX3Zpc2libGUKLSAqIGFuZCBwcmVzdWx0LT5hbGxfZnJvemVuIG9u IGV4aXQsIHRvIGluZGljYXRlIGlmIHRoZSBWTSBiaXRzIGNhbiBiZSBzZXQuCi0gKiBUaGV5IGFy ZSBhbHdheXMgc2V0IHRvIGZhbHNlIHdoZW4gdGhlIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgb3B0 aW9uIGlzIG5vdAotICogcGFzc2VkLCBiZWNhdXNlIGF0IHRoZSBtb21lbnQgb25seSBjYWxsZXJz IHRoYXQgYWxzbyBmcmVlemUgbmVlZCB0aGF0Ci0gKiBpbmZvcm1hdGlvbi4KKyAqIGFuZCBwcmVz dWx0LT5hbGxfZnJvemVuIGFmdGVyIGRldGVybWluaW5nIHdoZXRoZXIgb3Igbm90IHRvCisgKiBv cHBvcnVuaXN0aWNhbGx5IGZyZWV6ZSwgdG8gaW5kaWNhdGUgaWYgdGhlIFZNIGJpdHMgY2FuIGJl IHNldC4gIFRoZXkgYXJlCisgKiBhbHdheXMgc2V0IHRvIGZhbHNlIHdoZW4gdGhlIEhFQVBfUEFH RV9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIG5vdCBwYXNzZWQsCisgKiBiZWNhdXNlIGF0IHRoZSBt b21lbnQgb25seSBjYWxsZXJzIHRoYXQgYWxzbyBmcmVlemUgbmVlZCB0aGF0IGluZm9ybWF0aW9u LgogICoKICAqIHByZXN1bHQgY29udGFpbnMgb3V0cHV0IHBhcmFtZXRlcnMgbmVlZGVkIGJ5IGNh bGxlcnMsIHN1Y2ggYXMgdGhlIG51bWJlciBvZgogICogdHVwbGVzIHJlbW92ZWQgYW5kIHRoZSBv ZmZzZXRzIG9mIGRlYWQgaXRlbXMgb24gdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4KQEAgLTUyMiw2 ICs1NDUsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAq cGFyYW1zLAogCXByc3RhdGUuaGFzdHVwID0gZmFsc2U7CiAJcHJzdGF0ZS5scGRlYWRfaXRlbXMg PSAwOwogCXByc3RhdGUuZGVhZG9mZnNldHMgPSBwcmVzdWx0LT5kZWFkb2Zmc2V0czsKKwlwcnN0 YXRlLmZyel9jb25mbGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIAkvKgog CSAqIENhbGxlciBtYXkgdXBkYXRlIHRoZSBWTSBhZnRlciB3ZSdyZSBkb25lLiAgV2UgY2FuIGtl ZXAgdHJhY2sgb2YKQEAgLTU0MSwxMCArNTY1LDEwIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJICogYXJlIHR1cGxlcyBwcmVzZW50IHRo YXQgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIG9yIGlmIHRoZXJlIGFyZQogCSAqIGRlYWQg dHVwbGVzIHdoaWNoIGFyZSBub3QgeWV0IHJlbW92YWJsZS4gIEhvd2V2ZXIsIGRlYWQgdHVwbGVz IHdoaWNoCiAJICogd2lsbCBiZSByZW1vdmVkIGJ5IHRoZSBlbmQgb2YgdmFjdXVtaW5nIHNob3Vs ZCBub3QgcHJlY2x1ZGUgdXMgZnJvbQotCSAqIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6aW5nLiAg QmVjYXVzZSBvZiB0aGF0LCB3ZSBkbyBub3QgY2xlYXIKLQkgKiBhbGxfdmlzaWJsZSBhbmQgYWxs X2Zyb3plbiB3aGVuIHdlIHNlZSBMUF9ERUFEIGl0ZW1zLiAgV2UgZml4IHRoYXQgYXQKLQkgKiB0 aGUgZW5kIG9mIHRoZSBmdW5jdGlvbiwgd2hlbiB3ZSByZXR1cm4gdGhlIHZhbHVlIHRvIHRoZSBj YWxsZXIsIHNvCi0JICogdGhhdCB0aGUgY2FsbGVyIGRvZXNuJ3Qgc2V0IHRoZSBWTSBiaXRzIGlu Y29ycmVjdGx5LgorCSAqIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6aW5nLiAgQmVjYXVzZSBvZiB0 aGF0LCB3ZSBkbyBub3QgaW1tZWRpYXRlbHkKKwkgKiBjbGVhciBhbGxfdmlzaWJsZSBhbmQgYWxs X2Zyb3plbiB3aGVuIHdlIHNlZSBMUF9ERUFEIGl0ZW1zLiAgV2UgZml4CisJICogdGhhdCBhZnRl ciBzY2FubmluZyB0aGUgbGluZSBwb2ludGVycywgYmVmb3JlIHdlIHJldHVybiB0aGUgdmFsdWUg dG8KKwkgKiB0aGUgY2FsbGVyLCBzbyB0aGF0IHRoZSBjYWxsZXIgZG9lc24ndCBzZXQgdGhlIFZN IGJpdHMgaW5jb3JyZWN0bHkuCiAJICovCiAJaWYgKHByc3RhdGUuYXR0ZW1wdF9mcmVlemUpCiAJ ewpAQCAtNzgxLDYgKzgwNSwyMiBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZy ZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJCQkJCQkJICBkb19oaW50X3BydW5lLAogCQkJCQkJCQkJ ICAmcHJzdGF0ZSk7CiAKKwkvKgorCSAqIFdoaWxlIHNjYW5uaW5nIHRoZSBsaW5lIHBvaW50ZXJz LCB3ZSBkaWQgbm90IGNsZWFyCisJICogYWxsX3Zpc2libGUvYWxsX2Zyb3plbiB3aGVuIGVuY291 bnRlcmluZyBMUF9ERUFEIGl0ZW1zIGJlY2F1c2Ugd2UKKwkgKiB3YW50ZWQgdGhlIGRlY2lzaW9u IHdoZXRoZXIgb3Igbm90IHRvIGZyZWV6ZSB0aGUgcGFnZSB0byBiZSB1bmFmZmVjdGVkCisJICog YnkgdGhlIHNob3J0LXRlcm0gcHJlc2VuY2Ugb2YgTFBfREVBRCBpdGVtcy4gIFRoZXNlIExQX0RF QUQgaXRlbXMgYXJlCisJICogZWZmZWN0aXZlbHkgYXNzdW1lZCB0byBiZSBMUF9VTlVTRUQgaXRl bXMgaW4gdGhlIG1ha2luZy4gIEl0IGRvZXNuJ3QKKwkgKiBtYXR0ZXIgd2hpY2ggdmFjdXVtIGhl YXAgcGFzcyAoaW5pdGlhbCBwYXNzIG9yIGZpbmFsIHBhc3MpIGVuZHMgdXAKKwkgKiBzZXR0aW5n IHRoZSBwYWdlIGFsbC1mcm96ZW4sIGFzIGxvbmcgYXMgdGhlIG9uZ29pbmcgVkFDVVVNIGRvZXMg aXQuCisJICoKKwkgKiBOb3cgdGhhdCB3ZSBmaW5pc2hlZCBkZXRlcm1pbmluZyB3aGV0aGVyIG9y IG5vdCB0byBmcmVlemUgdGhlIHBhZ2UsCisJICogdXBkYXRlIGFsbF92aXNpYmxlIGFuZCBhbGxf ZnJvemVuIHNvIHRoYXQgdGhleSByZWZsZWN0IHRoZSB0cnVlIHN0YXRlCisJICogb2YgdGhlIHBh Z2UgZm9yIHNldHRpbmcgUERfQUxMX1ZJU0lCTEUgYW5kIFZNIGJpdHMuCisJICovCisJaWYgKHBy c3RhdGUubHBkZWFkX2l0ZW1zID4gMCkKKwkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHByc3RhdGUu YWxsX2Zyb3plbiA9IGZhbHNlOworCiAJQXNzZXJ0KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwgcHJz dGF0ZS5hbGxfdmlzaWJsZSk7CiAKIAkvKiBBbnkgZXJyb3Igd2hpbGUgYXBwbHlpbmcgdGhlIGNo YW5nZXMgaXMgY3JpdGljYWwgKi8KQEAgLTg0MSwyOSArODgxLDExIEBAIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkgKiBvbiB0aGUgc3Rh bmRieSB3aXRoIHhpZHMgb2xkZXIgdGhhbiB0aGUgeW91bmdlc3QgdHVwbGUgdGhpcwogCQkJICog cmVjb3JkIHdpbGwgZnJlZXplIHdpbGwgY29uZmxpY3QuCiAJCQkgKi8KLQkJCVRyYW5zYWN0aW9u SWQgZnJ6X2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAkJCVRyYW5z YWN0aW9uSWQgY29uZmxpY3RfeGlkOwogCi0JCQkvKgotCQkJICogV2UgY2FuIHVzZSB0aGUgdmlz aWJpbGl0eV9jdXRvZmZfeGlkIGFzIG91ciBjdXRvZmYgZm9yCi0JCQkgKiBjb25mbGljdHMgd2hl biB0aGUgd2hvbGUgcGFnZSBpcyBlbGlnaWJsZSB0byBiZWNvbWUgYWxsLWZyb3plbgotCQkJICog aW4gdGhlIFZNIG9uY2Ugd2UncmUgZG9uZSB3aXRoIGl0LiAgT3RoZXJ3aXNlIHdlIGdlbmVyYXRl IGEKLQkJCSAqIGNvbnNlcnZhdGl2ZSBjdXRvZmYgYnkgc3RlcHBpbmcgYmFjayBmcm9tIE9sZGVz dFhtaW4uCi0JCQkgKi8KLQkJCWlmIChkb19mcmVlemUpCi0JCQl7Ci0JCQkJaWYgKHByc3RhdGUu YWxsX2Zyb3plbikKLQkJCQkJZnJ6X2NvbmZsaWN0X2hvcml6b24gPSBwcnN0YXRlLnZpc2liaWxp dHlfY3V0b2ZmX3hpZDsKLQkJCQllbHNlCi0JCQkJewotCQkJCQkvKiBBdm9pZHMgZmFsc2UgY29u ZmxpY3RzIHdoZW4gaG90X3N0YW5kYnlfZmVlZGJhY2sgaW4gdXNlICovCi0JCQkJCWZyel9jb25m bGljdF9ob3Jpem9uID0gcHJzdGF0ZS5jdXRvZmZzLT5PbGRlc3RYbWluOwotCQkJCQlUcmFuc2Fj dGlvbklkUmV0cmVhdChmcnpfY29uZmxpY3RfaG9yaXpvbik7Ci0JCQkJfQotCQkJfQotCi0JCQlp ZiAoVHJhbnNhY3Rpb25JZEZvbGxvd3MoZnJ6X2NvbmZsaWN0X2hvcml6b24sIHByc3RhdGUubGF0 ZXN0X3hpZF9yZW1vdmVkKSkKLQkJCQljb25mbGljdF94aWQgPSBmcnpfY29uZmxpY3RfaG9yaXpv bjsKKwkJCWlmIChUcmFuc2FjdGlvbklkRm9sbG93cyhwcnN0YXRlLmZyel9jb25mbGljdF9ob3Jp em9uLAorCQkJCQkJCQkJIHByc3RhdGUubGF0ZXN0X3hpZF9yZW1vdmVkKSkKKwkJCQljb25mbGlj dF94aWQgPSBwcnN0YXRlLmZyel9jb25mbGljdF9ob3Jpem9uOwogCQkJZWxzZQogCQkJCWNvbmZs aWN0X3hpZCA9IHByc3RhdGUubGF0ZXN0X3hpZF9yZW1vdmVkOwogCkBAIC04ODcsMzAgKzkwOSw4 IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMs CiAJcHJlc3VsdC0+bmZyb3plbiA9IHByc3RhdGUubmZyb3plbjsKIAlwcmVzdWx0LT5saXZlX3R1 cGxlcyA9IHByc3RhdGUubGl2ZV90dXBsZXM7CiAJcHJlc3VsdC0+cmVjZW50bHlfZGVhZF90dXBs ZXMgPSBwcnN0YXRlLnJlY2VudGx5X2RlYWRfdHVwbGVzOwotCi0JLyoKLQkgKiBJdCB3YXMgY29u dmVuaWVudCB0byBpZ25vcmUgTFBfREVBRCBpdGVtcyBpbiBhbGxfdmlzaWJsZS9hbGxfZnJvemVu Ci0JICogZWFybGllciBvbiB0byBtYWtlIHRoZSBjaG9pY2Ugb2Ygd2hldGhlciBvciBub3QgdG8g ZnJlZXplIHRoZSBwYWdlCi0JICogdW5hZmZlY3RlZCBieSB0aGUgc2hvcnQtdGVybSBwcmVzZW5j ZSBvZiBMUF9ERUFEIGl0ZW1zLiAgVGhlc2UgTFBfREVBRAotCSAqIGl0ZW1zIHdlcmUgZWZmZWN0 aXZlbHkgYXNzdW1lZCB0byBiZSBMUF9VTlVTRUQgaXRlbXMgaW4gdGhlIG1ha2luZy4gIEl0Ci0J ICogZG9lc24ndCBtYXR0ZXIgd2hpY2ggdmFjdXVtIGhlYXAgcGFzcyAoaW5pdGlhbCBwYXNzIG9y IGZpbmFsIHBhc3MpIGVuZHMKLQkgKiB1cCBzZXR0aW5nIHRoZSBwYWdlIGFsbC1mcm96ZW4sIGFz IGxvbmcgYXMgdGhlIG9uZ29pbmcgVkFDVVVNIGRvZXMgaXQuCi0JICoKLQkgKiBOb3cgdGhhdCBm cmVlemluZyBoYXMgYmVlbiBmaW5hbGl6ZWQsIHVuc2V0IGFsbF92aXNpYmxlIGFuZCBhbGxfZnJv emVuCi0JICogaWYgdGhlcmUgYXJlIGFueSBMUF9ERUFEIGl0ZW1zIG9uIHRoZSBwYWdlLiAgSXQg bmVlZHMgdG8gcmVmbGVjdCB0aGUKLQkgKiBwcmVzZW50IHN0YXRlIG9mIHRoZSBwYWdlLCBhcyBl eHBlY3RlZCBieSBvdXIgY2FsbGVyLgotCSAqLwotCWlmIChwcnN0YXRlLmFsbF92aXNpYmxlICYm IHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApCi0JewotCQlwcmVzdWx0LT5hbGxfdmlzaWJsZSA9 IHByc3RhdGUuYWxsX3Zpc2libGU7Ci0JCXByZXN1bHQtPmFsbF9mcm96ZW4gPSBwcnN0YXRlLmFs bF9mcm96ZW47Ci0JfQotCWVsc2UKLQl7Ci0JCXByZXN1bHQtPmFsbF92aXNpYmxlID0gZmFsc2U7 Ci0JCXByZXN1bHQtPmFsbF9mcm96ZW4gPSBmYWxzZTsKLQl9Ci0KKwlwcmVzdWx0LT5hbGxfdmlz aWJsZSA9IHByc3RhdGUuYWxsX3Zpc2libGU7CisJcHJlc3VsdC0+YWxsX2Zyb3plbiA9IHByc3Rh dGUuYWxsX2Zyb3plbjsKIAlwcmVzdWx0LT5oYXN0dXAgPSBwcnN0YXRlLmhhc3R1cDsKIAogCS8q Ci0tIAoyLjQzLjAKCg== --0000000000004d8ca00643fabb4a Content-Type: text/x-patch; charset="US-ASCII"; name="v21-0004-Split-heap_page_prune_and_freeze-into-helpers.patch" Content-Disposition: attachment; filename="v21-0004-Split-heap_page_prune_and_freeze-into-helpers.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi6mavqm3 RnJvbSBmZDA3MGQ2OTU0ZTUxNTY1MjNkYWZlMzUzOTI2NTQ0NTNjMWQ4Njg0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDE3IE5vdiAyMDI1IDE1OjExOjI3IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCB2MjEgMDQvMTJdIFNwbGl0IGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgaW50byBo ZWxwZXJzCgpSZWZhY3RvciB0aGUgc2V0dXAgYW5kIHBsYW5uaW5nIHBoYXNlcyBvZiBwcnVuaW5n IGFuZCBmcmVlemluZyBpbnRvCmhlbHBlcnMuIFRoaXMgc3RyZWFtbGluZXMgaGVhcF9wYWdlX3By dW5lX2FuZF9mcmVlemUoKSBhbmQgbWFrZXMgaXQgbW9yZQpjbGVhciB3aGVuIHRoZSBleGFtaW5h dGlvbiBvZiB0dXBsZXMgZW5kcyBhbmQgcGFnZSBtb2RpZmljYXRpb25zIGJlZ2luLgotLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIHwgNTU5ICsrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzMDcgaW5zZXJ0aW9ucygrKSwgMjUyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggOGU0MDU2NTM4MWYu LmIxMGM1ZWIxMTYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMTU3LDYg KzE1NywxNCBAQCB0eXBlZGVmIHN0cnVjdAogfSBQcnVuZVN0YXRlOwogCiAvKiBMb2NhbCBmdW5j dGlvbnMgKi8KK3N0YXRpYyB2b2lkIHBydW5lX2ZyZWV6ZV9zZXR1cChQcnVuZUZyZWV6ZVBhcmFt cyAqcGFyYW1zLAorCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgbmV3X3JlbGZyb3plbl94aWQsCisJ CQkJCQkJICAgTXVsdGlYYWN0SWQgbmV3X3JlbG1pbl9teGlkLAorCQkJCQkJCSAgIGNvbnN0IFBy dW5lRnJlZXplUmVzdWx0ICpwcmVzdWx0LAorCQkJCQkJCSAgIFBydW5lU3RhdGUgKnByc3RhdGUp Oworc3RhdGljIHZvaWQgcHJ1bmVfZnJlZXplX3BsYW4oT2lkIHJlbG9pZCwgQnVmZmVyIGJ1ZmZl ciwKKwkJCQkJCQkgIFBydW5lU3RhdGUgKnByc3RhdGUsCisJCQkJCQkJICBPZmZzZXROdW1iZXIg Km9mZl9sb2MpOwogc3RhdGljIEhUU1ZfUmVzdWx0IGhlYXBfcHJ1bmVfc2F0aXNmaWVzX3ZhY3V1 bShQcnVuZVN0YXRlICpwcnN0YXRlLAogCQkJCQkJCQkJCQkgICBIZWFwVHVwbGUgdHVwLAogCQkJ CQkJCQkJCQkgICBCdWZmZXIgYnVmZmVyKTsKQEAgLTMwOCwyMDAgKzMxNiwyMiBAQCBoZWFwX3Bh Z2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQogfQogCiAvKgot ICogRGVjaWRlIHdoZXRoZXIgdG8gcHJvY2VlZCB3aXRoIGZyZWV6aW5nIGFjY29yZGluZyB0byB0 aGUgZnJlZXplIHBsYW5zCi0gKiBwcmVwYXJlZCBmb3IgdGhlIGdpdmVuIGhlYXAgYnVmZmVyLiBJ ZiBmcmVlemluZyBpcyBjaG9zZW4sIHRoaXMgZnVuY3Rpb24KLSAqIHBlcmZvcm1zIHNldmVyYWwg cHJlLWZyZWV6ZSBjaGVja3MuCi0gKgotICogVGhlIHZhbHVlcyBvZiBkb19wcnVuZSwgZG9faGlu dF9wcnVuZSwgYW5kIGRpZF90dXBsZV9oaW50X2ZwaSBtdXN0IGJlCi0gKiBkZXRlcm1pbmVkIGJl Zm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCi0gKgotICogcHJzdGF0ZSBpcyBib3RoIGFuIGlu cHV0IGFuZCBvdXRwdXQgcGFyYW1ldGVyLgotICoKLSAqIFJldHVybnMgdHJ1ZSBpZiB3ZSBzaG91 bGQgYXBwbHkgdGhlIGZyZWV6ZSBwbGFucyBhbmQgZnJlZXplIHR1cGxlcyBvbiB0aGUKLSAqIHBh Z2UsIGFuZCBmYWxzZSBvdGhlcndpc2UuCisgKiBIZWxwZXIgZm9yIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKCkgdG8gaW5pdGlhbGl6ZSB0aGUgUHJ1bmVTdGF0ZSB1c2luZworICogdGhlIHBy b3ZpZGVkIHBhcmFtZXRlcnMuCiAgKi8KLXN0YXRpYyBib29sCi1oZWFwX3BhZ2Vfd2lsbF9mcmVl emUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCi0JCQkJCSAgYm9vbCBkaWRfdHVw bGVfaGludF9mcGksCi0JCQkJCSAgYm9vbCBkb19wcnVuZSwKLQkJCQkJICBib29sIGRvX2hpbnRf cHJ1bmUsCi0JCQkJCSAgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSkKLXsKLQlib29sCQlkb19mcmVlemUg PSBmYWxzZTsKLQotCS8qCi0JICogSWYgdGhlIGNhbGxlciBzcGVjaWZpZWQgd2Ugc2hvdWxkIG5v dCBhdHRlbXB0IHRvIGZyZWV6ZSBhbnkgdHVwbGVzLAotCSAqIHZhbGlkYXRlIHRoYXQgZXZlcnl0 aGluZyBpcyBpbiB0aGUgcmlnaHQgc3RhdGUgYW5kIHJldHVybi4KLQkgKi8KLQlpZiAoIXByc3Rh dGUtPmF0dGVtcHRfZnJlZXplKQotCXsKLQkJQXNzZXJ0KCFwcnN0YXRlLT5hbGxfZnJvemVuICYm IHByc3RhdGUtPm5mcm96ZW4gPT0gMCk7Ci0JCUFzc2VydChwcnN0YXRlLT5scGRlYWRfaXRlbXMg PT0gMCB8fCAhcHJzdGF0ZS0+YWxsX3Zpc2libGUpOwotCQlyZXR1cm4gZmFsc2U7Ci0JfQotCi0J aWYgKHByc3RhdGUtPnBhZ2VmcnouZnJlZXplX3JlcXVpcmVkKQotCXsKLQkJLyoKLQkJICogaGVh cF9wcmVwYXJlX2ZyZWV6ZV90dXBsZSBpbmRpY2F0ZWQgdGhhdCBhdCBsZWFzdCBvbmUgWElEL01Y SUQgZnJvbQotCQkgKiBiZWZvcmUgRnJlZXplTGltaXQvTXVsdGlYYWN0Q3V0b2ZmIGlzIHByZXNl bnQuICBNdXN0IGZyZWV6ZSB0bwotCQkgKiBhZHZhbmNlIHJlbGZyb3plbnhpZC9yZWxtaW5teGlk LgotCQkgKi8KLQkJZG9fZnJlZXplID0gdHJ1ZTsKLQl9Ci0JZWxzZQotCXsKLQkJLyoKLQkJICog T3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXplIHRoZSBwYWdlIGlmIHdlIGFyZSBnZW5lcmF0aW5nIGFu IEZQSQotCQkgKiBhbnl3YXkgYW5kIGlmIGRvaW5nIHNvIG1lYW5zIHRoYXQgd2UgY2FuIHNldCB0 aGUgcGFnZSBhbGwtZnJvemVuCi0JCSAqIGFmdGVyd2FyZHMgKG1pZ2h0IG5vdCBoYXBwZW4gdW50 aWwgVkFDVVVNJ3MgZmluYWwgaGVhcCBwYXNzKS4KLQkJICoKLQkJICogWFhYOiBQcmV2aW91c2x5 LCB3ZSBrbmV3IGlmIHBydW5pbmcgZW1pdHRlZCBhbiBGUEkgYnkgY2hlY2tpbmcKLQkJICogcGdX YWxVc2FnZS53YWxfZnBpIGJlZm9yZSBhbmQgYWZ0ZXIgcHJ1bmluZy4gIE9uY2UgdGhlIGZyZWV6 ZSBhbmQKLQkJICogcHJ1bmUgcmVjb3JkcyB3ZXJlIGNvbWJpbmVkLCB0aGlzIGhldXJpc3RpYyBj b3VsZG4ndCBiZSB1c2VkCi0JCSAqIGFueW1vcmUuICBUaGUgb3Bwb3J0dW5pc3RpYyBmcmVlemUg aGV1cmlzdGljIG11c3QgYmUgaW1wcm92ZWQ7Ci0JCSAqIGhvd2V2ZXIsIGZvciBub3csIHRyeSB0 byBhcHByb3hpbWF0ZSB0aGUgb2xkIGxvZ2ljLgotCQkgKi8KLQkJaWYgKHByc3RhdGUtPmFsbF9m cm96ZW4gJiYgcHJzdGF0ZS0+bmZyb3plbiA+IDApCi0JCXsKLQkJCUFzc2VydChwcnN0YXRlLT5h bGxfdmlzaWJsZSk7Ci0KLQkJCS8qCi0JCQkgKiBGcmVlemluZyB3b3VsZCBtYWtlIHRoZSBwYWdl IGFsbC1mcm96ZW4uICBIYXZlIGFscmVhZHkgZW1pdHRlZAotCQkJICogYW4gRlBJIG9yIHdpbGwg ZG8gc28gYW55d2F5PwotCQkJICovCi0JCQlpZiAoUmVsYXRpb25OZWVkc1dBTChyZWxhdGlvbikp Ci0JCQl7Ci0JCQkJaWYgKGRpZF90dXBsZV9oaW50X2ZwaSkKLQkJCQkJZG9fZnJlZXplID0gdHJ1 ZTsKLQkJCQllbHNlIGlmIChkb19wcnVuZSkKLQkJCQl7Ci0JCQkJCWlmIChYTG9nQ2hlY2tCdWZm ZXJOZWVkc0JhY2t1cChidWZmZXIpKQotCQkJCQkJZG9fZnJlZXplID0gdHJ1ZTsKLQkJCQl9Ci0J CQkJZWxzZSBpZiAoZG9faGludF9wcnVuZSkKLQkJCQl7Ci0JCQkJCWlmIChYTG9nSGludEJpdElz TmVlZGVkKCkgJiYgWExvZ0NoZWNrQnVmZmVyTmVlZHNCYWNrdXAoYnVmZmVyKSkKLQkJCQkJCWRv X2ZyZWV6ZSA9IHRydWU7Ci0JCQkJfQotCQkJfQotCQl9Ci0JfQotCi0JaWYgKGRvX2ZyZWV6ZSkK LQl7Ci0JCS8qCi0JCSAqIFZhbGlkYXRlIHRoZSB0dXBsZXMgd2Ugd2lsbCBiZSBmcmVlemluZyBi ZWZvcmUgZW50ZXJpbmcgdGhlCi0JCSAqIGNyaXRpY2FsIHNlY3Rpb24uCi0JCSAqLwotCQloZWFw X3ByZV9mcmVlemVfY2hlY2tzKGJ1ZmZlciwgcHJzdGF0ZS0+ZnJvemVuLCBwcnN0YXRlLT5uZnJv emVuKTsKLQotCQkvKgotCQkgKiBDYWxjdWxhdGUgd2hhdCB0aGUgc25hcHNob3QgY29uZmxpY3Qg aG9yaXpvbiBzaG91bGQgYmUgZm9yIGEgcmVjb3JkCi0JCSAqIGZyZWV6aW5nIHR1cGxlcy4gV2Ug Y2FuIHVzZSB0aGUgdmlzaWJpbGl0eV9jdXRvZmZfeGlkIGFzIG91ciBjdXRvZmYKLQkJICogZm9y IGNvbmZsaWN0cyB3aGVuIHRoZSB3aG9sZSBwYWdlIGlzIGVsaWdpYmxlIHRvIGJlY29tZSBhbGwt ZnJvemVuCi0JCSAqIGluIHRoZSBWTSBvbmNlIHdlJ3JlIGRvbmUgd2l0aCBpdC4gT3RoZXJ3aXNl LCB3ZSBnZW5lcmF0ZSBhCi0JCSAqIGNvbnNlcnZhdGl2ZSBjdXRvZmYgYnkgc3RlcHBpbmcgYmFj ayBmcm9tIE9sZGVzdFhtaW4uCi0JCSAqLwotCQlpZiAocHJzdGF0ZS0+YWxsX2Zyb3plbikKLQkJ CXByc3RhdGUtPmZyel9jb25mbGljdF9ob3Jpem9uID0gcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRv ZmZfeGlkOwotCQllbHNlCi0JCXsKLQkJCS8qIEF2b2lkcyBmYWxzZSBjb25mbGljdHMgd2hlbiBo b3Rfc3RhbmRieV9mZWVkYmFjayBpbiB1c2UgKi8KLQkJCXByc3RhdGUtPmZyel9jb25mbGljdF9o b3Jpem9uID0gcHJzdGF0ZS0+Y3V0b2Zmcy0+T2xkZXN0WG1pbjsKLQkJCVRyYW5zYWN0aW9uSWRS ZXRyZWF0KHByc3RhdGUtPmZyel9jb25mbGljdF9ob3Jpem9uKTsKLQkJfQotCX0KLQllbHNlIGlm IChwcnN0YXRlLT5uZnJvemVuID4gMCkKLQl7Ci0JCS8qCi0JCSAqIFRoZSBwYWdlIGNvbnRhaW5l ZCBzb21lIHR1cGxlcyB0aGF0IHdlcmUgbm90IGFscmVhZHkgZnJvemVuLCBhbmQgd2UKLQkJICog Y2hvc2Ugbm90IHRvIGZyZWV6ZSB0aGVtIG5vdy4gIFRoZSBwYWdlIHdvbid0IGJlIGFsbC1mcm96 ZW4gdGhlbi4KLQkJICovCi0JCUFzc2VydCghcHJzdGF0ZS0+cGFnZWZyei5mcmVlemVfcmVxdWly ZWQpOwotCi0JCXByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKLQkJcHJzdGF0ZS0+bmZyb3pl biA9IDA7CS8qIGF2b2lkIG1pc2NvdW50cyBpbiBpbnN0cnVtZW50YXRpb24gKi8KLQl9Ci0JZWxz ZQotCXsKLQkJLyoKLQkJICogV2UgaGF2ZSBubyBmcmVlemUgcGxhbnMgdG8gZXhlY3V0ZS4gIFRo ZSBwYWdlIG1pZ2h0IGFscmVhZHkgYmUKLQkJICogYWxsLWZyb3plbiAocGVyaGFwcyBvbmx5IGZv bGxvd2luZyBwcnVuaW5nKSwgdGhvdWdoLiAgU3VjaCBwYWdlcwotCQkgKiBjYW4gYmUgbWFya2Vk IGFsbC1mcm96ZW4gaW4gdGhlIFZNIGJ5IG91ciBjYWxsZXIsIGV2ZW4gdGhvdWdoIG5vbmUKLQkJ ICogb2YgaXRzIHR1cGxlcyB3ZXJlIG5ld2x5IGZyb3plbiBoZXJlLgotCQkgKi8KLQl9Ci0KLQly ZXR1cm4gZG9fZnJlZXplOwotfQotCi0KLS8qCi0gKiBQcnVuZSBhbmQgcmVwYWlyIGZyYWdtZW50 YXRpb24gYW5kIHBvdGVudGlhbGx5IGZyZWV6ZSB0dXBsZXMgb24gdGhlCi0gKiBzcGVjaWZpZWQg cGFnZS4KLSAqCi0gKiBDYWxsZXIgbXVzdCBoYXZlIHBpbiBhbmQgYnVmZmVyIGNsZWFudXAgbG9j ayBvbiB0aGUgcGFnZS4gIE5vdGUgdGhhdCB3ZQotICogZG9uJ3QgdXBkYXRlIHRoZSBGU00gaW5m b3JtYXRpb24gZm9yIHBhZ2Ugb24gY2FsbGVyJ3MgYmVoYWxmLiAgQ2FsbGVyIG1pZ2h0Ci0gKiBh bHNvIG5lZWQgdG8gYWNjb3VudCBmb3IgYSByZWR1Y3Rpb24gaW4gdGhlIGxlbmd0aCBvZiB0aGUg bGluZSBwb2ludGVyCi0gKiBhcnJheSBmb2xsb3dpbmcgYXJyYXkgdHJ1bmNhdGlvbiBieSB1cy4K LSAqCi0gKiBwYXJhbXMgY29udGFpbnMgdGhlIGlucHV0IHBhcmFtZXRlcnMgdXNlZCB0byBjb250 cm9sIGZyZWV6aW5nIGFuZCBwcnVuaW5nCi0gKiBiZWhhdmlvci4gU2VlIHRoZSBkZWZpbml0aW9u IG9mIFBydW5lRnJlZXplUGFyYW1zIGZvciBtb3JlIG9uIHdoYXQgZWFjaAotICogcGFyYW1ldGVy IGRvZXMuCi0gKgotICogSWYgdGhlIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIHNl dCBpbiBwYXJhbXMsIHdlIHdpbGwgZnJlZXplCi0gKiB0dXBsZXMgaWYgaXQncyByZXF1aXJlZCBp biBvcmRlciB0byBhZHZhbmNlIHJlbGZyb3plbnhpZCAvIHJlbG1pbm14aWQsIG9yCi0gKiBpZiBp dCdzIGNvbnNpZGVyZWQgYWR2YW50YWdlb3VzIGZvciBvdmVyYWxsIHN5c3RlbSBwZXJmb3JtYW5j ZSB0byBkbyBzbwotICogbm93LiAgVGhlICdwYXJhbXMuY3V0b2ZmcycsICdwcmVzdWx0JywgJ25l d19yZWxmcm96ZW5feGlkJyBhbmQKLSAqICduZXdfcmVsbWluX214aWQnIGFyZ3VtZW50cyBhcmUg cmVxdWlyZWQgd2hlbiBmcmVlemluZy4gIFdoZW4KLSAqIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUg b3B0aW9uIGlzIHBhc3NlZCwgd2UgYWxzbyBzZXQgcHJlc3VsdC0+YWxsX3Zpc2libGUKLSAqIGFu ZCBwcmVzdWx0LT5hbGxfZnJvemVuIGFmdGVyIGRldGVybWluaW5nIHdoZXRoZXIgb3Igbm90IHRv Ci0gKiBvcHBvcnVuaXN0aWNhbGx5IGZyZWV6ZSwgdG8gaW5kaWNhdGUgaWYgdGhlIFZNIGJpdHMg Y2FuIGJlIHNldC4gIFRoZXkgYXJlCi0gKiBhbHdheXMgc2V0IHRvIGZhbHNlIHdoZW4gdGhlIEhF QVBfUEFHRV9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIG5vdCBwYXNzZWQsCi0gKiBiZWNhdXNlIGF0 IHRoZSBtb21lbnQgb25seSBjYWxsZXJzIHRoYXQgYWxzbyBmcmVlemUgbmVlZCB0aGF0IGluZm9y bWF0aW9uLgotICoKLSAqIHByZXN1bHQgY29udGFpbnMgb3V0cHV0IHBhcmFtZXRlcnMgbmVlZGVk IGJ5IGNhbGxlcnMsIHN1Y2ggYXMgdGhlIG51bWJlciBvZgotICogdHVwbGVzIHJlbW92ZWQgYW5k IHRoZSBvZmZzZXRzIG9mIGRlYWQgaXRlbXMgb24gdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4KLSAq IGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgaXMgcmVzcG9uc2libGUgZm9yIGluaXRpYWxp emluZyBpdC4gIFJlcXVpcmVkCi0gKiBieSBhbGwgY2FsbGVycy4KLSAqCi0gKiBvZmZfbG9jIGlz IHRoZSBvZmZzZXQgbG9jYXRpb24gcmVxdWlyZWQgYnkgdGhlIGNhbGxlciB0byB1c2UgaW4gZXJy b3IKLSAqIGNhbGxiYWNrLgotICoKLSAqIG5ld19yZWxmcm96ZW5feGlkIGFuZCBuZXdfcmVsbWlu X214aWQgbXVzdCBwcm92aWRlZCBieSB0aGUgY2FsbGVyIGlmIHRoZQotICogSEVBUF9QQUdFX1BS VU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0IGluIHBhcmFtcy4gIE9uIGVudHJ5LCB0aGV5IGNvbnRh aW4gdGhlCi0gKiBvbGRlc3QgWElEIGFuZCBtdWx0aS1YSUQgc2VlbiBvbiB0aGUgcmVsYXRpb24g c28gZmFyLiAgVGhleSB3aWxsIGJlIHVwZGF0ZWQKLSAqIHdpdGggb2xkZXN0IHZhbHVlcyBwcmVz ZW50IG9uIHRoZSBwYWdlIGFmdGVyIHBydW5pbmcuICBBZnRlciBwcm9jZXNzaW5nIHRoZQotICog d2hvbGUgcmVsYXRpb24sIFZBQ1VVTSBjYW4gdXNlIHRoZXNlIHZhbHVlcyBhcyB0aGUgbmV3Ci0g KiByZWxmcm96ZW54aWQvcmVsbWlubXhpZCBmb3IgdGhlIHJlbGF0aW9uLgotICovCi12b2lkCi1o ZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAotCQkJ CQkJICAgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1bHQsCi0JCQkJCQkgICBPZmZzZXROdW1iZXIg Km9mZl9sb2MsCi0JCQkJCQkgICBUcmFuc2FjdGlvbklkICpuZXdfcmVsZnJvemVuX3hpZCwKLQkJ CQkJCSAgIE11bHRpWGFjdElkICpuZXdfcmVsbWluX214aWQpCitzdGF0aWMgdm9pZAorcHJ1bmVf ZnJlZXplX3NldHVwKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCisJCQkJICAgVHJhbnNhY3Rp b25JZCBuZXdfcmVsZnJvemVuX3hpZCwKKwkJCQkgICBNdWx0aVhhY3RJZCBuZXdfcmVsbWluX214 aWQsCisJCQkJICAgY29uc3QgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1bHQsCisJCQkJICAgUHJ1 bmVTdGF0ZSAqcHJzdGF0ZSkKIHsKLQlCdWZmZXIJCWJ1ZmZlciA9IHBhcmFtcy0+YnVmZmVyOwot CVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7Ci0JQmxvY2tOdW1iZXIgYmxvY2tu byA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlcik7Ci0JT2Zmc2V0TnVtYmVyIG9mZm51bSwK LQkJCQltYXhvZmY7Ci0JUHJ1bmVTdGF0ZQlwcnN0YXRlOwotCUhlYXBUdXBsZURhdGEgdHVwOwot CWJvb2wJCWRvX2ZyZWV6ZTsKLQlib29sCQlkb19wcnVuZTsKLQlib29sCQlkb19oaW50X3BydW5l OwotCWJvb2wJCWRpZF90dXBsZV9oaW50X2ZwaTsKLQlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBnV2Fs VXNhZ2Uud2FsX2ZwaTsKLQogCS8qIENvcHkgcGFyYW1ldGVycyB0byBwcnN0YXRlICovCi0JcHJz dGF0ZS52aXN0ZXN0ID0gcGFyYW1zLT52aXN0ZXN0OwotCXByc3RhdGUubWFya191bnVzZWRfbm93 ID0KKwlwcnN0YXRlLT52aXN0ZXN0ID0gcGFyYW1zLT52aXN0ZXN0OworCXByc3RhdGUtPm1hcmtf dW51c2VkX25vdyA9CiAJCShwYXJhbXMtPm9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfTUFSS19V TlVTRURfTk9XKSAhPSAwOwotCXByc3RhdGUuYXR0ZW1wdF9mcmVlemUgPSAocGFyYW1zLT5vcHRp b25zICYgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSkgIT0gMDsKLQlwcnN0YXRlLmN1dG9mZnMgPSBw YXJhbXMtPmN1dG9mZnM7CisJcHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUgPSAocGFyYW1zLT5vcHRp b25zICYgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSkgIT0gMDsKKwlwcnN0YXRlLT5jdXRvZmZzID0g cGFyYW1zLT5jdXRvZmZzOwogCiAJLyoKIAkgKiBPdXIgc3RyYXRlZ3kgaXMgdG8gc2NhbiB0aGUg cGFnZSBhbmQgbWFrZSBsaXN0cyBvZiBpdGVtcyB0byBjaGFuZ2UsCkBAIC01MTQsNDEgKzM0NCw0 MiBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1z LAogCSAqIHBydW5hYmxlLCB3ZSB3aWxsIHNhdmUgdGhlIGxvd2VzdCByZWxldmFudCBYSUQgaW4g bmV3X3BydW5lX3hpZC4gQWxzbwogCSAqIGluaXRpYWxpemUgdGhlIHJlc3Qgb2Ygb3VyIHdvcmtp bmcgc3RhdGUuCiAJICovCi0JcHJzdGF0ZS5uZXdfcHJ1bmVfeGlkID0gSW52YWxpZFRyYW5zYWN0 aW9uSWQ7Ci0JcHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKLQlwcnN0YXRlLm5yZWRpcmVjdGVkID0gcHJzdGF0ZS5uZGVhZCA9IHByc3RhdGUubnVudXNl ZCA9IHByc3RhdGUubmZyb3plbiA9IDA7Ci0JcHJzdGF0ZS5ucm9vdF9pdGVtcyA9IDA7Ci0JcHJz dGF0ZS5uaGVhcG9ubHlfaXRlbXMgPSAwOworCXByc3RhdGUtPm5ld19wcnVuZV94aWQgPSBJbnZh bGlkVHJhbnNhY3Rpb25JZDsKKwlwcnN0YXRlLT5sYXRlc3RfeGlkX3JlbW92ZWQgPSBJbnZhbGlk VHJhbnNhY3Rpb25JZDsKKwlwcnN0YXRlLT5ucmVkaXJlY3RlZCA9IHByc3RhdGUtPm5kZWFkID0g cHJzdGF0ZS0+bnVudXNlZCA9IDA7CisJcHJzdGF0ZS0+bmZyb3plbiA9IDA7CisJcHJzdGF0ZS0+ bnJvb3RfaXRlbXMgPSAwOworCXByc3RhdGUtPm5oZWFwb25seV9pdGVtcyA9IDA7CiAKIAkvKiBp bml0aWFsaXplIHBhZ2UgZnJlZXppbmcgd29ya2luZyBzdGF0ZSAqLwotCXByc3RhdGUucGFnZWZy ei5mcmVlemVfcmVxdWlyZWQgPSBmYWxzZTsKLQlpZiAocHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSkK KwlwcnN0YXRlLT5wYWdlZnJ6LmZyZWV6ZV9yZXF1aXJlZCA9IGZhbHNlOworCWlmIChwcnN0YXRl LT5hdHRlbXB0X2ZyZWV6ZSkKIAl7Ci0JCUFzc2VydChuZXdfcmVsZnJvemVuX3hpZCAmJiBuZXdf cmVsbWluX214aWQpOwotCQlwcnN0YXRlLnBhZ2VmcnouRnJlZXplUGFnZVJlbGZyb3plblhpZCA9 ICpuZXdfcmVsZnJvemVuX3hpZDsKLQkJcHJzdGF0ZS5wYWdlZnJ6Lk5vRnJlZXplUGFnZVJlbGZy b3plblhpZCA9ICpuZXdfcmVsZnJvemVuX3hpZDsKLQkJcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6ZVBh Z2VSZWxtaW5NeGlkID0gKm5ld19yZWxtaW5fbXhpZDsKLQkJcHJzdGF0ZS5wYWdlZnJ6Lk5vRnJl ZXplUGFnZVJlbG1pbk14aWQgPSAqbmV3X3JlbG1pbl9teGlkOworCQlwcnN0YXRlLT5wYWdlZnJ6 LkZyZWV6ZVBhZ2VSZWxmcm96ZW5YaWQgPSBuZXdfcmVsZnJvemVuX3hpZDsKKwkJcHJzdGF0ZS0+ cGFnZWZyei5Ob0ZyZWV6ZVBhZ2VSZWxmcm96ZW5YaWQgPSBuZXdfcmVsZnJvemVuX3hpZDsKKwkJ cHJzdGF0ZS0+cGFnZWZyei5GcmVlemVQYWdlUmVsbWluTXhpZCA9IG5ld19yZWxtaW5fbXhpZDsK KwkJcHJzdGF0ZS0+cGFnZWZyei5Ob0ZyZWV6ZVBhZ2VSZWxtaW5NeGlkID0gbmV3X3JlbG1pbl9t eGlkOwogCX0KIAllbHNlCiAJewotCQlBc3NlcnQobmV3X3JlbGZyb3plbl94aWQgPT0gTlVMTCAm JiBuZXdfcmVsbWluX214aWQgPT0gTlVMTCk7Ci0JCXByc3RhdGUucGFnZWZyei5GcmVlemVQYWdl UmVsbWluTXhpZCA9IEludmFsaWRNdWx0aVhhY3RJZDsKLQkJcHJzdGF0ZS5wYWdlZnJ6Lk5vRnJl ZXplUGFnZVJlbG1pbk14aWQgPSBJbnZhbGlkTXVsdGlYYWN0SWQ7Ci0JCXByc3RhdGUucGFnZWZy ei5GcmVlemVQYWdlUmVsZnJvemVuWGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JCXByc3Rh dGUucGFnZWZyei5Ob0ZyZWV6ZVBhZ2VSZWxmcm96ZW5YaWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKKwkJQXNzZXJ0KG5ld19yZWxmcm96ZW5feGlkID09IEludmFsaWRUcmFuc2FjdGlvbklkICYm CisJCQkgICBuZXdfcmVsbWluX214aWQgPT0gSW52YWxpZE11bHRpWGFjdElkKTsKKwkJcHJzdGF0 ZS0+cGFnZWZyei5GcmVlemVQYWdlUmVsbWluTXhpZCA9IEludmFsaWRNdWx0aVhhY3RJZDsKKwkJ cHJzdGF0ZS0+cGFnZWZyei5Ob0ZyZWV6ZVBhZ2VSZWxtaW5NeGlkID0gSW52YWxpZE11bHRpWGFj dElkOworCQlwcnN0YXRlLT5wYWdlZnJ6LkZyZWV6ZVBhZ2VSZWxmcm96ZW5YaWQgPSBJbnZhbGlk VHJhbnNhY3Rpb25JZDsKKwkJcHJzdGF0ZS0+cGFnZWZyei5Ob0ZyZWV6ZVBhZ2VSZWxmcm96ZW5Y aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAl9CiAKLQlwcnN0YXRlLm5kZWxldGVkID0gMDsK LQlwcnN0YXRlLmxpdmVfdHVwbGVzID0gMDsKLQlwcnN0YXRlLnJlY2VudGx5X2RlYWRfdHVwbGVz ID0gMDsKLQlwcnN0YXRlLmhhc3R1cCA9IGZhbHNlOwotCXByc3RhdGUubHBkZWFkX2l0ZW1zID0g MDsKLQlwcnN0YXRlLmRlYWRvZmZzZXRzID0gcHJlc3VsdC0+ZGVhZG9mZnNldHM7Ci0JcHJzdGF0 ZS5mcnpfY29uZmxpY3RfaG9yaXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCXByc3RhdGUt Pm5kZWxldGVkID0gMDsKKwlwcnN0YXRlLT5saXZlX3R1cGxlcyA9IDA7CisJcHJzdGF0ZS0+cmVj ZW50bHlfZGVhZF90dXBsZXMgPSAwOworCXByc3RhdGUtPmhhc3R1cCA9IGZhbHNlOworCXByc3Rh dGUtPmxwZGVhZF9pdGVtcyA9IDA7CisJcHJzdGF0ZS0+ZGVhZG9mZnNldHMgPSAoT2Zmc2V0TnVt YmVyICopIHByZXN1bHQtPmRlYWRvZmZzZXRzOworCXByc3RhdGUtPmZyel9jb25mbGljdF9ob3Jp em9uID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIAkvKgotCSAqIENhbGxlciBtYXkgdXBkYXRl IHRoZSBWTSBhZnRlciB3ZSdyZSBkb25lLiAgV2UgY2FuIGtlZXAgdHJhY2sgb2YKKwkgKiBWYWN1 dW0gbWF5IHVwZGF0ZSB0aGUgVk0gYWZ0ZXIgd2UncmUgZG9uZS4gIFdlIGNhbiBrZWVwIHRyYWNr IG9mCiAJICogd2hldGhlciB0aGUgcGFnZSB3aWxsIGJlIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJv emVuIGFmdGVyIHBydW5pbmcgYW5kCiAJICogZnJlZXppbmcgdG8gaGVscCB0aGUgY2FsbGVyIHRv IGRvIHRoYXQuCiAJICoKQEAgLTU3MCwxMCArNDAxLDEwIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRf ZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJICogdGhhdCBhZnRlciBzY2Fubmlu ZyB0aGUgbGluZSBwb2ludGVycywgYmVmb3JlIHdlIHJldHVybiB0aGUgdmFsdWUgdG8KIAkgKiB0 aGUgY2FsbGVyLCBzbyB0aGF0IHRoZSBjYWxsZXIgZG9lc24ndCBzZXQgdGhlIFZNIGJpdHMgaW5j b3JyZWN0bHkuCiAJICovCi0JaWYgKHByc3RhdGUuYXR0ZW1wdF9mcmVlemUpCisJaWYgKHByc3Rh dGUtPmF0dGVtcHRfZnJlZXplKQogCXsKLQkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHRydWU7Ci0J CXByc3RhdGUuYWxsX2Zyb3plbiA9IHRydWU7CisJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gdHJ1 ZTsKKwkJcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IHRydWU7CiAJfQogCWVsc2UKIAl7CkBAIC01ODEs OCArNDEyLDggQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMg KnBhcmFtcywKIAkJICogSW5pdGlhbGl6aW5nIHRvIGZhbHNlIGFsbG93cyBza2lwcGluZyB0aGUg d29yayB0byB1cGRhdGUgdGhlbSBpbgogCQkgKiBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRf bHBfbm9ybWFsKCkuCiAJCSAqLwotCQlwcnN0YXRlLmFsbF92aXNpYmxlID0gZmFsc2U7Ci0JCXBy c3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNlOworCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNl OworCQlwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CiAJfQogCiAJLyoKQEAgLTU5MywxMCAr NDI0LDI5IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpw YXJhbXMsCiAJICogcnVubmluZyB0cmFuc2FjdGlvbiBvbiB0aGUgc3RhbmRieSBkb2VzIG5vdCBz ZWUgdHVwbGVzIG9uIHRoZSBwYWdlIGFzCiAJICogYWxsLXZpc2libGUsIHNvIHRoZSBjb25mbGlj dCBob3Jpem9uIHJlbWFpbnMgSW52YWxpZFRyYW5zYWN0aW9uSWQuCiAJICovCi0JcHJzdGF0ZS52 aXNpYmlsaXR5X2N1dG9mZl94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlwcnN0YXRlLT52 aXNpYmlsaXR5X2N1dG9mZl94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKK30KIAotCW1heG9m ZiA9IFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSk7Ci0JdHVwLnRfdGFibGVPaWQgPSBSZWxh dGlvbkdldFJlbGlkKHBhcmFtcy0+cmVsYXRpb24pOworLyoKKyAqIEhlbHBlciBmb3IgaGVhcF9w YWdlX3BydW5lX2FuZF9mcmVlemUoKS4gSXRlcmF0ZXMgb3ZlciBldmVyeSB0dXBsZSBvbiB0aGUK KyAqIHBhZ2UsIGV4YW1pbmVzIGl0cyB2aXNpYmlsaXR5IGluZm9ybWF0aW9uLCBhbmQgZGV0ZXJt aW5lcyB0aGUgYXBwcm9wcmlhdGUKKyAqIGFjdGlvbiBmb3IgZWFjaCB0dXBsZS4gQWxsIHR1cGxl cyBhcmUgcHJvY2Vzc2VkIGFuZCBjbGFzc2lmaWVkIGR1cmluZyB0aGlzCisgKiBwaGFzZSwgYnV0 IG5vIG1vZGlmaWNhdGlvbnMgYXJlIG1hZGUgdG8gdGhlIHBhZ2UgdW50aWwgdGhlIGxhdGVyIGV4 ZWN1dGlvbgorICogc3RhZ2UuCisgKgorICogKm9mZl9sb2MgaXMgdXNlZCBmb3IgZXJyb3IgY2Fs bGJhY2sgYW5kIGNsZWFyZWQgYmVmb3JlIHJldHVybmluZy4KKyAqLworc3RhdGljIHZvaWQKK3By dW5lX2ZyZWV6ZV9wbGFuKE9pZCByZWxvaWQsIEJ1ZmZlciBidWZmZXIsIFBydW5lU3RhdGUgKnBy c3RhdGUsCisJCQkJICBPZmZzZXROdW1iZXIgKm9mZl9sb2MpCit7CisJUGFnZQkJcGFnZSA9IEJ1 ZmZlckdldFBhZ2UoYnVmZmVyKTsKKwlCbG9ja051bWJlciBibG9ja25vID0gQnVmZmVyR2V0Qmxv Y2tOdW1iZXIoYnVmZmVyKTsKKwlPZmZzZXROdW1iZXIgbWF4b2ZmID0gUGFnZUdldE1heE9mZnNl dE51bWJlcihwYWdlKTsKKwlPZmZzZXROdW1iZXIgb2ZmbnVtOworCUhlYXBUdXBsZURhdGEgdHVw OworCisJdHVwLnRfdGFibGVPaWQgPSByZWxvaWQ7CiAKIAkvKgogCSAqIERldGVybWluZSBIVFNW IGZvciBhbGwgdHVwbGVzLCBhbmQgcXVldWUgdGhlbSB1cCBmb3IgcHJvY2Vzc2luZyBhcyBIT1QK QEAgLTYzMSwxMyArNDgxLDEzIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJl ZXplUGFyYW1zICpwYXJhbXMsCiAJCSAqLwogCQkqb2ZmX2xvYyA9IG9mZm51bTsKIAotCQlwcnN0 YXRlLnByb2Nlc3NlZFtvZmZudW1dID0gZmFsc2U7Ci0JCXByc3RhdGUuaHRzdltvZmZudW1dID0g LTE7CisJCXByc3RhdGUtPnByb2Nlc3NlZFtvZmZudW1dID0gZmFsc2U7CisJCXByc3RhdGUtPmh0 c3Zbb2ZmbnVtXSA9IC0xOwogCiAJCS8qIE5vdGhpbmcgdG8gZG8gaWYgc2xvdCBkb2Vzbid0IGNv bnRhaW4gYSB0dXBsZSAqLwogCQlpZiAoIUl0ZW1JZElzVXNlZChpdGVtaWQpKQogCQl7Ci0JCQlo ZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfdW51c2VkKHBhZ2UsICZwcnN0YXRlLCBvZmZu dW0pOworCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX3VudXNlZChwYWdlLCBwcnN0 YXRlLCBvZmZudW0pOwogCQkJY29udGludWU7CiAJCX0KIApAQCAtNjQ3LDE3ICs0OTcsMTcgQEAg aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJ CSAqIElmIHRoZSBjYWxsZXIgc2V0IG1hcmtfdW51c2VkX25vdyB0cnVlLCB3ZSBjYW4gc2V0IGRl YWQgbGluZQogCQkJICogcG9pbnRlcnMgTFBfVU5VU0VEIG5vdy4KIAkJCSAqLwotCQkJaWYgKHVu bGlrZWx5KHByc3RhdGUubWFya191bnVzZWRfbm93KSkKLQkJCQloZWFwX3BydW5lX3JlY29yZF91 bnVzZWQoJnByc3RhdGUsIG9mZm51bSwgZmFsc2UpOworCQkJaWYgKHVubGlrZWx5KHByc3RhdGUt Pm1hcmtfdW51c2VkX25vdykpCisJCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW51c2VkKHByc3RhdGUs IG9mZm51bSwgZmFsc2UpOwogCQkJZWxzZQotCQkJCWhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdl ZF9scF9kZWFkKHBhZ2UsICZwcnN0YXRlLCBvZmZudW0pOworCQkJCWhlYXBfcHJ1bmVfcmVjb3Jk X3VuY2hhbmdlZF9scF9kZWFkKHBhZ2UsIHByc3RhdGUsIG9mZm51bSk7CiAJCQljb250aW51ZTsK IAkJfQogCiAJCWlmIChJdGVtSWRJc1JlZGlyZWN0ZWQoaXRlbWlkKSkKIAkJewogCQkJLyogVGhp cyBpcyB0aGUgc3RhcnQgb2YgYSBIT1QgY2hhaW4gKi8KLQkJCXByc3RhdGUucm9vdF9pdGVtc1tw cnN0YXRlLm5yb290X2l0ZW1zKytdID0gb2ZmbnVtOworCQkJcHJzdGF0ZS0+cm9vdF9pdGVtc1tw cnN0YXRlLT5ucm9vdF9pdGVtcysrXSA9IG9mZm51bTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKQEAg LTY3MSwyMSArNTIxLDE1IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXpl UGFyYW1zICpwYXJhbXMsCiAJCXR1cC50X2xlbiA9IEl0ZW1JZEdldExlbmd0aChpdGVtaWQpOwog CQlJdGVtUG9pbnRlclNldCgmdHVwLnRfc2VsZiwgYmxvY2tubywgb2ZmbnVtKTsKIAotCQlwcnN0 YXRlLmh0c3Zbb2ZmbnVtXSA9IGhlYXBfcHJ1bmVfc2F0aXNmaWVzX3ZhY3V1bSgmcHJzdGF0ZSwg JnR1cCwKLQkJCQkJCQkJCQkJCQkJICAgYnVmZmVyKTsKKwkJcHJzdGF0ZS0+aHRzdltvZmZudW1d ID0gaGVhcF9wcnVuZV9zYXRpc2ZpZXNfdmFjdXVtKHByc3RhdGUsICZ0dXAsCisJCQkJCQkJCQkJ CQkJCQlidWZmZXIpOwogCiAJCWlmICghSGVhcFR1cGxlSGVhZGVySXNIZWFwT25seShodHVwKSkK LQkJCXByc3RhdGUucm9vdF9pdGVtc1twcnN0YXRlLm5yb290X2l0ZW1zKytdID0gb2ZmbnVtOwor CQkJcHJzdGF0ZS0+cm9vdF9pdGVtc1twcnN0YXRlLT5ucm9vdF9pdGVtcysrXSA9IG9mZm51bTsK IAkJZWxzZQotCQkJcHJzdGF0ZS5oZWFwb25seV9pdGVtc1twcnN0YXRlLm5oZWFwb25seV9pdGVt cysrXSA9IG9mZm51bTsKKwkJCXByc3RhdGUtPmhlYXBvbmx5X2l0ZW1zW3Byc3RhdGUtPm5oZWFw b25seV9pdGVtcysrXSA9IG9mZm51bTsKIAl9CiAKLQkvKgotCSAqIElmIGNoZWNrc3VtcyBhcmUg ZW5hYmxlZCwgaGVhcF9wcnVuZV9zYXRpc2ZpZXNfdmFjdXVtKCkgbWF5IGhhdmUgY2F1c2VkCi0J ICogYW4gRlBJIHRvIGJlIGVtaXR0ZWQuCi0JICovCi0JZGlkX3R1cGxlX2hpbnRfZnBpID0gZnBp X2JlZm9yZSAhPSBwZ1dhbFVzYWdlLndhbF9mcGk7Ci0KIAkvKgogCSAqIFByb2Nlc3MgSE9UIGNo YWlucy4KIAkgKgpAQCAtNjk3LDMwICs1NDEsMzAgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVl emUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkgKiB0aGUgcGFnZSBpbnN0ZWFkIG9mIHVz aW5nIHRoZSByb290X2l0ZW1zIGFycmF5LCBhbHNvIGRpZCBpdCBpbgogCSAqIGFzY2VuZGluZyBv ZmZzZXQgbnVtYmVyIG9yZGVyLikKIAkgKi8KLQlmb3IgKGludCBpID0gcHJzdGF0ZS5ucm9vdF9p dGVtcyAtIDE7IGkgPj0gMDsgaS0tKQorCWZvciAoaW50IGkgPSBwcnN0YXRlLT5ucm9vdF9pdGVt cyAtIDE7IGkgPj0gMDsgaS0tKQogCXsKLQkJb2ZmbnVtID0gcHJzdGF0ZS5yb290X2l0ZW1zW2ld OworCQlvZmZudW0gPSBwcnN0YXRlLT5yb290X2l0ZW1zW2ldOwogCiAJCS8qIElnbm9yZSBpdGVt cyBhbHJlYWR5IHByb2Nlc3NlZCBhcyBwYXJ0IG9mIGFuIGVhcmxpZXIgY2hhaW4gKi8KLQkJaWYg KHByc3RhdGUucHJvY2Vzc2VkW29mZm51bV0pCisJCWlmIChwcnN0YXRlLT5wcm9jZXNzZWRbb2Zm bnVtXSkKIAkJCWNvbnRpbnVlOwogCiAJCS8qIHNlZSBwcmVjZWRpbmcgbG9vcCAqLwogCQkqb2Zm X2xvYyA9IG9mZm51bTsKIAogCQkvKiBQcm9jZXNzIHRoaXMgaXRlbSBvciBjaGFpbiBvZiBpdGVt cyAqLwotCQloZWFwX3BydW5lX2NoYWluKHBhZ2UsIGJsb2Nrbm8sIG1heG9mZiwgb2ZmbnVtLCAm cHJzdGF0ZSk7CisJCWhlYXBfcHJ1bmVfY2hhaW4ocGFnZSwgYmxvY2tubywgbWF4b2ZmLCBvZmZu dW0sIHByc3RhdGUpOwogCX0KIAogCS8qCiAJICogUHJvY2VzcyBhbnkgaGVhcC1vbmx5IHR1cGxl cyB0aGF0IHdlcmUgbm90IGFscmVhZHkgcHJvY2Vzc2VkIGFzIHBhcnQgb2YKIAkgKiBhIEhPVCBj aGFpbi4KIAkgKi8KLQlmb3IgKGludCBpID0gcHJzdGF0ZS5uaGVhcG9ubHlfaXRlbXMgLSAxOyBp ID49IDA7IGktLSkKKwlmb3IgKGludCBpID0gcHJzdGF0ZS0+bmhlYXBvbmx5X2l0ZW1zIC0gMTsg aSA+PSAwOyBpLS0pCiAJewotCQlvZmZudW0gPSBwcnN0YXRlLmhlYXBvbmx5X2l0ZW1zW2ldOwor CQlvZmZudW0gPSBwcnN0YXRlLT5oZWFwb25seV9pdGVtc1tpXTsKIAotCQlpZiAocHJzdGF0ZS5w cm9jZXNzZWRbb2ZmbnVtXSkKKwkJaWYgKHByc3RhdGUtPnByb2Nlc3NlZFtvZmZudW1dKQogCQkJ Y29udGludWU7CiAKIAkJLyogc2VlIHByZWNlZGluZyBsb29wICovCkBAIC03MzksNyArNTgzLDcg QEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywK IAkJICogcmV0dXJuIHRydWUgZm9yIGFuIFhNSU5fSU5WQUxJRCB0dXBsZSwgc28gdGhpcyBjb2Rl IHdpbGwgd29yayBldmVuCiAJCSAqIHdoZW4gdGhlcmUgd2VyZSBzZXF1ZW50aWFsIHVwZGF0ZXMg d2l0aGluIHRoZSBhYm9ydGVkIHRyYW5zYWN0aW9uLikKIAkJICovCi0JCWlmIChwcnN0YXRlLmh0 c3Zbb2ZmbnVtXSA9PSBIRUFQVFVQTEVfREVBRCkKKwkJaWYgKHByc3RhdGUtPmh0c3Zbb2ZmbnVt XSA9PSBIRUFQVFVQTEVfREVBRCkKIAkJewogCQkJSXRlbUlkCQlpdGVtaWQgPSBQYWdlR2V0SXRl bUlkKHBhZ2UsIG9mZm51bSk7CiAJCQlIZWFwVHVwbGVIZWFkZXIgaHR1cCA9IChIZWFwVHVwbGVI ZWFkZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIGl0ZW1pZCk7CkBAIC03NDcsOCArNTkxLDggQEAgaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCWlm IChsaWtlbHkoIUhlYXBUdXBsZUhlYWRlcklzSG90VXBkYXRlZChodHVwKSkpCiAJCQl7CiAJCQkJ SGVhcFR1cGxlSGVhZGVyQWR2YW5jZUNvbmZsaWN0SG9yaXpvbihodHVwLAotCQkJCQkJCQkJCQkJ CSAgJnByc3RhdGUubGF0ZXN0X3hpZF9yZW1vdmVkKTsKLQkJCQloZWFwX3BydW5lX3JlY29yZF91 bnVzZWQoJnByc3RhdGUsIG9mZm51bSwgdHJ1ZSk7CisJCQkJCQkJCQkJCQkJICAmcHJzdGF0ZS0+ bGF0ZXN0X3hpZF9yZW1vdmVkKTsKKwkJCQloZWFwX3BydW5lX3JlY29yZF91bnVzZWQocHJzdGF0 ZSwgb2ZmbnVtLCB0cnVlKTsKIAkJCX0KIAkJCWVsc2UKIAkJCXsKQEAgLTc2NSw3ICs2MDksNyBA QCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAog CQkJfQogCQl9CiAJCWVsc2UKLQkJCWhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3Jt YWwocGFnZSwgJnByc3RhdGUsIG9mZm51bSk7CisJCQloZWFwX3BydW5lX3JlY29yZF91bmNoYW5n ZWRfbHBfbm9ybWFsKHBhZ2UsIHByc3RhdGUsIG9mZm51bSk7CiAJfQogCiAJLyogV2Ugc2hvdWxk IG5vdyBoYXZlIHByb2Nlc3NlZCBldmVyeSB0dXBsZSBleGFjdGx5IG9uY2UgICovCkBAIC03NzYs MTIgKzYyMCwyMjMgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJh bXMgKnBhcmFtcywKIAl7CiAJCSpvZmZfbG9jID0gb2ZmbnVtOwogCi0JCUFzc2VydChwcnN0YXRl LnByb2Nlc3NlZFtvZmZudW1dKTsKKwkJQXNzZXJ0KHByc3RhdGUtPnByb2Nlc3NlZFtvZmZudW1d KTsKIAl9CiAjZW5kaWYKIAogCS8qIENsZWFyIHRoZSBvZmZzZXQgaW5mb3JtYXRpb24gb25jZSB3 ZSBoYXZlIHByb2Nlc3NlZCB0aGUgZ2l2ZW4gcGFnZS4gKi8KIAkqb2ZmX2xvYyA9IEludmFsaWRP ZmZzZXROdW1iZXI7Cit9CisKKy8qCisgKiBEZWNpZGUgd2hldGhlciB0byBwcm9jZWVkIHdpdGgg ZnJlZXppbmcgYWNjb3JkaW5nIHRvIHRoZSBmcmVlemUgcGxhbnMKKyAqIHByZXBhcmVkIGZvciB0 aGUgZ2l2ZW4gaGVhcCBidWZmZXIuIElmIGZyZWV6aW5nIGlzIGNob3NlbiwgdGhpcyBmdW5jdGlv bgorICogcGVyZm9ybXMgc2V2ZXJhbCBwcmUtZnJlZXplIGNoZWNrcy4KKyAqCisgKiBUaGUgdmFs dWVzIG9mIGRvX3BydW5lLCBkb19oaW50X3BydW5lLCBhbmQgZGlkX3R1cGxlX2hpbnRfZnBpIG11 c3QgYmUKKyAqIGRldGVybWluZWQgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KKyAqCisg KiBwcnN0YXRlIGlzIGJvdGggYW4gaW5wdXQgYW5kIG91dHB1dCBwYXJhbWV0ZXIuCisgKgorICog UmV0dXJucyB0cnVlIGlmIHdlIHNob3VsZCBhcHBseSB0aGUgZnJlZXplIHBsYW5zIGFuZCBmcmVl emUgdHVwbGVzIG9uIHRoZQorICogcGFnZSwgYW5kIGZhbHNlIG90aGVyd2lzZS4KKyAqLworc3Rh dGljIGJvb2wKK2hlYXBfcGFnZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVy IGJ1ZmZlciwKKwkJCQkJICBib29sIGRpZF90dXBsZV9oaW50X2ZwaSwKKwkJCQkJICBib29sIGRv X3BydW5lLAorCQkJCQkgIGJvb2wgZG9faGludF9wcnVuZSwKKwkJCQkJICBQcnVuZVN0YXRlICpw cnN0YXRlKQoreworCWJvb2wJCWRvX2ZyZWV6ZSA9IGZhbHNlOworCisJLyoKKwkgKiBJZiB0aGUg Y2FsbGVyIHNwZWNpZmllZCB3ZSBzaG91bGQgbm90IGF0dGVtcHQgdG8gZnJlZXplIGFueSB0dXBs ZXMsCisJICogdmFsaWRhdGUgdGhhdCBldmVyeXRoaW5nIGlzIGluIHRoZSByaWdodCBzdGF0ZSBh bmQgcmV0dXJuLgorCSAqLworCWlmICghcHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUpCisJeworCQlB c3NlcnQoIXByc3RhdGUtPmFsbF9mcm96ZW4gJiYgcHJzdGF0ZS0+bmZyb3plbiA9PSAwKTsKKwkJ QXNzZXJ0KHByc3RhdGUtPmxwZGVhZF9pdGVtcyA9PSAwIHx8ICFwcnN0YXRlLT5hbGxfdmlzaWJs ZSk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlpZiAocHJzdGF0ZS0+cGFnZWZyei5mcmVlemVf cmVxdWlyZWQpCisJeworCQkvKgorCQkgKiBoZWFwX3ByZXBhcmVfZnJlZXplX3R1cGxlIGluZGlj YXRlZCB0aGF0IGF0IGxlYXN0IG9uZSBYSUQvTVhJRCBmcm9tCisJCSAqIGJlZm9yZSBGcmVlemVM aW1pdC9NdWx0aVhhY3RDdXRvZmYgaXMgcHJlc2VudC4gIE11c3QgZnJlZXplIHRvCisJCSAqIGFk dmFuY2UgcmVsZnJvemVueGlkL3JlbG1pbm14aWQuCisJCSAqLworCQlkb19mcmVlemUgPSB0cnVl OworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBPcHBvcnR1bmlzdGljYWxseSBmcmVlemUgdGhl IHBhZ2UgaWYgd2UgYXJlIGdlbmVyYXRpbmcgYW4gRlBJCisJCSAqIGFueXdheSBhbmQgaWYgZG9p bmcgc28gbWVhbnMgdGhhdCB3ZSBjYW4gc2V0IHRoZSBwYWdlIGFsbC1mcm96ZW4KKwkJICogYWZ0 ZXJ3YXJkcyAobWlnaHQgbm90IGhhcHBlbiB1bnRpbCBWQUNVVU0ncyBmaW5hbCBoZWFwIHBhc3Mp LgorCQkgKgorCQkgKiBYWFg6IFByZXZpb3VzbHksIHdlIGtuZXcgaWYgcHJ1bmluZyBlbWl0dGVk IGFuIEZQSSBieSBjaGVja2luZworCQkgKiBwZ1dhbFVzYWdlLndhbF9mcGkgYmVmb3JlIGFuZCBh ZnRlciBwcnVuaW5nLiAgT25jZSB0aGUgZnJlZXplIGFuZAorCQkgKiBwcnVuZSByZWNvcmRzIHdl cmUgY29tYmluZWQsIHRoaXMgaGV1cmlzdGljIGNvdWxkbid0IGJlIHVzZWQKKwkJICogYW55bW9y ZS4gIFRoZSBvcHBvcnR1bmlzdGljIGZyZWV6ZSBoZXVyaXN0aWMgbXVzdCBiZSBpbXByb3ZlZDsK KwkJICogaG93ZXZlciwgZm9yIG5vdywgdHJ5IHRvIGFwcHJveGltYXRlIHRoZSBvbGQgbG9naWMu CisJCSAqLworCQlpZiAocHJzdGF0ZS0+YWxsX2Zyb3plbiAmJiBwcnN0YXRlLT5uZnJvemVuID4g MCkKKwkJeworCQkJQXNzZXJ0KHByc3RhdGUtPmFsbF92aXNpYmxlKTsKKworCQkJLyoKKwkJCSAq IEZyZWV6aW5nIHdvdWxkIG1ha2UgdGhlIHBhZ2UgYWxsLWZyb3plbi4gIEhhdmUgYWxyZWFkeSBl bWl0dGVkCisJCQkgKiBhbiBGUEkgb3Igd2lsbCBkbyBzbyBhbnl3YXk/CisJCQkgKi8KKwkJCWlm IChSZWxhdGlvbk5lZWRzV0FMKHJlbGF0aW9uKSkKKwkJCXsKKwkJCQlpZiAoZGlkX3R1cGxlX2hp bnRfZnBpKQorCQkJCQlkb19mcmVlemUgPSB0cnVlOworCQkJCWVsc2UgaWYgKGRvX3BydW5lKQor CQkJCXsKKwkJCQkJaWYgKFhMb2dDaGVja0J1ZmZlck5lZWRzQmFja3VwKGJ1ZmZlcikpCisJCQkJ CQlkb19mcmVlemUgPSB0cnVlOworCQkJCX0KKwkJCQllbHNlIGlmIChkb19oaW50X3BydW5lKQor CQkJCXsKKwkJCQkJaWYgKFhMb2dIaW50Qml0SXNOZWVkZWQoKSAmJiBYTG9nQ2hlY2tCdWZmZXJO ZWVkc0JhY2t1cChidWZmZXIpKQorCQkJCQkJZG9fZnJlZXplID0gdHJ1ZTsKKwkJCQl9CisJCQl9 CisJCX0KKwl9CisKKwlpZiAoZG9fZnJlZXplKQorCXsKKwkJLyoKKwkJICogVmFsaWRhdGUgdGhl IHR1cGxlcyB3ZSB3aWxsIGJlIGZyZWV6aW5nIGJlZm9yZSBlbnRlcmluZyB0aGUKKwkJICogY3Jp dGljYWwgc2VjdGlvbi4KKwkJICovCisJCWhlYXBfcHJlX2ZyZWV6ZV9jaGVja3MoYnVmZmVyLCBw cnN0YXRlLT5mcm96ZW4sIHByc3RhdGUtPm5mcm96ZW4pOworCisJCS8qCisJCSAqIENhbGN1bGF0 ZSB3aGF0IHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uIHNob3VsZCBiZSBmb3IgYSByZWNv cmQKKwkJICogZnJlZXppbmcgdHVwbGVzLiBXZSBjYW4gdXNlIHRoZSB2aXNpYmlsaXR5X2N1dG9m Zl94aWQgYXMgb3VyIGN1dG9mZgorCQkgKiBmb3IgY29uZmxpY3RzIHdoZW4gdGhlIHdob2xlIHBh Z2UgaXMgZWxpZ2libGUgdG8gYmVjb21lIGFsbC1mcm96ZW4KKwkJICogaW4gdGhlIFZNIG9uY2Ug d2UncmUgZG9uZSB3aXRoIGl0LiBPdGhlcndpc2UsIHdlIGdlbmVyYXRlIGEKKwkJICogY29uc2Vy dmF0aXZlIGN1dG9mZiBieSBzdGVwcGluZyBiYWNrIGZyb20gT2xkZXN0WG1pbi4KKwkJICovCisJ CWlmIChwcnN0YXRlLT5hbGxfZnJvemVuKQorCQkJcHJzdGF0ZS0+ZnJ6X2NvbmZsaWN0X2hvcml6 b24gPSBwcnN0YXRlLT52aXNpYmlsaXR5X2N1dG9mZl94aWQ7CisJCWVsc2UKKwkJeworCQkJLyog QXZvaWRzIGZhbHNlIGNvbmZsaWN0cyB3aGVuIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGluIHVzZSAq LworCQkJcHJzdGF0ZS0+ZnJ6X2NvbmZsaWN0X2hvcml6b24gPSBwcnN0YXRlLT5jdXRvZmZzLT5P bGRlc3RYbWluOworCQkJVHJhbnNhY3Rpb25JZFJldHJlYXQocHJzdGF0ZS0+ZnJ6X2NvbmZsaWN0 X2hvcml6b24pOworCQl9CisJfQorCWVsc2UgaWYgKHByc3RhdGUtPm5mcm96ZW4gPiAwKQorCXsK KwkJLyoKKwkJICogVGhlIHBhZ2UgY29udGFpbmVkIHNvbWUgdHVwbGVzIHRoYXQgd2VyZSBub3Qg YWxyZWFkeSBmcm96ZW4sIGFuZCB3ZQorCQkgKiBjaG9zZSBub3QgdG8gZnJlZXplIHRoZW0gbm93 LiAgVGhlIHBhZ2Ugd29uJ3QgYmUgYWxsLWZyb3plbiB0aGVuLgorCQkgKi8KKwkJQXNzZXJ0KCFw cnN0YXRlLT5wYWdlZnJ6LmZyZWV6ZV9yZXF1aXJlZCk7CisKKwkJcHJzdGF0ZS0+YWxsX2Zyb3pl biA9IGZhbHNlOworCQlwcnN0YXRlLT5uZnJvemVuID0gMDsJLyogYXZvaWQgbWlzY291bnRzIGlu IGluc3RydW1lbnRhdGlvbiAqLworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBXZSBoYXZlIG5v IGZyZWV6ZSBwbGFucyB0byBleGVjdXRlLiAgVGhlIHBhZ2UgbWlnaHQgYWxyZWFkeSBiZQorCQkg KiBhbGwtZnJvemVuIChwZXJoYXBzIG9ubHkgZm9sbG93aW5nIHBydW5pbmcpLCB0aG91Z2guICBT dWNoIHBhZ2VzCisJCSAqIGNhbiBiZSBtYXJrZWQgYWxsLWZyb3plbiBpbiB0aGUgVk0gYnkgb3Vy IGNhbGxlciwgZXZlbiB0aG91Z2ggbm9uZQorCQkgKiBvZiBpdHMgdHVwbGVzIHdlcmUgbmV3bHkg ZnJvemVuIGhlcmUuCisJCSAqLworCX0KKworCXJldHVybiBkb19mcmVlemU7Cit9CisKKworLyoK KyAqIFBydW5lIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBhbmQgcG90ZW50aWFsbHkgZnJlZXpl IHR1cGxlcyBvbiB0aGUKKyAqIHNwZWNpZmllZCBwYWdlLgorICoKKyAqIENhbGxlciBtdXN0IGhh dmUgcGluIGFuZCBidWZmZXIgY2xlYW51cCBsb2NrIG9uIHRoZSBwYWdlLiAgTm90ZSB0aGF0IHdl CisgKiBkb24ndCB1cGRhdGUgdGhlIEZTTSBpbmZvcm1hdGlvbiBmb3IgcGFnZSBvbiBjYWxsZXIn cyBiZWhhbGYuICBDYWxsZXIgbWlnaHQKKyAqIGFsc28gbmVlZCB0byBhY2NvdW50IGZvciBhIHJl ZHVjdGlvbiBpbiB0aGUgbGVuZ3RoIG9mIHRoZSBsaW5lIHBvaW50ZXIKKyAqIGFycmF5IGZvbGxv d2luZyBhcnJheSB0cnVuY2F0aW9uIGJ5IHVzLgorICoKKyAqIHBhcmFtcyBjb250YWlucyB0aGUg aW5wdXQgcGFyYW1ldGVycyB1c2VkIHRvIGNvbnRyb2wgZnJlZXppbmcgYW5kIHBydW5pbmcKKyAq IGJlaGF2aW9yLiBTZWUgdGhlIGRlZmluaXRpb24gb2YgUHJ1bmVGcmVlemVQYXJhbXMgZm9yIG1v cmUgb24gd2hhdCBlYWNoCisgKiBwYXJhbWV0ZXIgZG9lcy4KKyAqCisgKiBJZiB0aGUgSEVBUF9Q QUdFX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0IGluIHBhcmFtcywgd2Ugd2lsbCBmcmVlemUK KyAqIHR1cGxlcyBpZiBpdCdzIHJlcXVpcmVkIGluIG9yZGVyIHRvIGFkdmFuY2UgcmVsZnJvemVu eGlkIC8gcmVsbWlubXhpZCwgb3IKKyAqIGlmIGl0J3MgY29uc2lkZXJlZCBhZHZhbnRhZ2VvdXMg Zm9yIG92ZXJhbGwgc3lzdGVtIHBlcmZvcm1hbmNlIHRvIGRvIHNvCisgKiBub3cuICBUaGUgJ3Bh cmFtcy5jdXRvZmZzJywgJ3ByZXN1bHQnLCAnbmV3X3JlbGZyb3plbl94aWQnIGFuZAorICogJ25l d19yZWxtaW5fbXhpZCcgYXJndW1lbnRzIGFyZSByZXF1aXJlZCB3aGVuIGZyZWV6aW5nLiAgV2hl bgorICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgcGFzc2VkLCB3ZSBhbHNvIHNl dCBwcmVzdWx0LT5hbGxfdmlzaWJsZQorICogYW5kIHByZXN1bHQtPmFsbF9mcm96ZW4gYWZ0ZXIg ZGV0ZXJtaW5pbmcgd2hldGhlciBvciBub3QgdG8KKyAqIG9wcG9ydW5pc3RpY2FsbHkgZnJlZXpl LCB0byBpbmRpY2F0ZSBpZiB0aGUgVk0gYml0cyBjYW4gYmUgc2V0LiAgVGhleSBhcmUKKyAqIGFs d2F5cyBzZXQgdG8gZmFsc2Ugd2hlbiB0aGUgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBvcHRpb24g aXMgbm90IHBhc3NlZCwKKyAqIGJlY2F1c2UgYXQgdGhlIG1vbWVudCBvbmx5IGNhbGxlcnMgdGhh dCBhbHNvIGZyZWV6ZSBuZWVkIHRoYXQgaW5mb3JtYXRpb24uCisgKgorICogcHJlc3VsdCBjb250 YWlucyBvdXRwdXQgcGFyYW1ldGVycyBuZWVkZWQgYnkgY2FsbGVycywgc3VjaCBhcyB0aGUgbnVt YmVyIG9mCisgKiB0dXBsZXMgcmVtb3ZlZCBhbmQgdGhlIG9mZnNldHMgb2YgZGVhZCBpdGVtcyBv biB0aGUgcGFnZSBhZnRlciBwcnVuaW5nLgorICogaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUo KSBpcyByZXNwb25zaWJsZSBmb3IgaW5pdGlhbGl6aW5nIGl0LiAgUmVxdWlyZWQKKyAqIGJ5IGFs bCBjYWxsZXJzLgorICoKKyAqIG9mZl9sb2MgaXMgdGhlIG9mZnNldCBsb2NhdGlvbiByZXF1aXJl ZCBieSB0aGUgY2FsbGVyIHRvIHVzZSBpbiBlcnJvcgorICogY2FsbGJhY2suCisgKgorICogbmV3 X3JlbGZyb3plbl94aWQgYW5kIG5ld19yZWxtaW5fbXhpZCBtdXN0IHByb3ZpZGVkIGJ5IHRoZSBj YWxsZXIgaWYgdGhlCisgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQgaW4g cGFyYW1zLiAgT24gZW50cnksIHRoZXkgY29udGFpbiB0aGUKKyAqIG9sZGVzdCBYSUQgYW5kIG11 bHRpLVhJRCBzZWVuIG9uIHRoZSByZWxhdGlvbiBzbyBmYXIuICBUaGV5IHdpbGwgYmUgdXBkYXRl ZAorICogd2l0aCBvbGRlc3QgdmFsdWVzIHByZXNlbnQgb24gdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmlu Zy4gIEFmdGVyIHByb2Nlc3NpbmcgdGhlCisgKiB3aG9sZSByZWxhdGlvbiwgVkFDVVVNIGNhbiB1 c2UgdGhlc2UgdmFsdWVzIGFzIHRoZSBuZXcKKyAqIHJlbGZyb3plbnhpZC9yZWxtaW5teGlkIGZv ciB0aGUgcmVsYXRpb24uCisgKi8KK3ZvaWQKK2hlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBy dW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCisJCQkJCQkgICBQcnVuZUZyZWV6ZVJlc3VsdCAqcHJl c3VsdCwKKwkJCQkJCSAgIE9mZnNldE51bWJlciAqb2ZmX2xvYywKKwkJCQkJCSAgIFRyYW5zYWN0 aW9uSWQgKm5ld19yZWxmcm96ZW5feGlkLAorCQkJCQkJICAgTXVsdGlYYWN0SWQgKm5ld19yZWxt aW5fbXhpZCkKK3sKKwlCdWZmZXIJCWJ1ZmZlciA9IHBhcmFtcy0+YnVmZmVyOworCVBhZ2UJCXBh Z2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CisJUHJ1bmVTdGF0ZQlwcnN0YXRlOworCWJvb2wJ CWRvX2ZyZWV6ZTsKKwlib29sCQlkb19wcnVuZTsKKwlib29sCQlkb19oaW50X3BydW5lOworCWJv b2wJCWRpZF90dXBsZV9oaW50X2ZwaTsKKwlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uu d2FsX2ZwaTsKKworCS8qIEluaXRpYWxpemUgcHJzdGF0ZSAqLworCXBydW5lX2ZyZWV6ZV9zZXR1 cChwYXJhbXMsCisJCQkJCSAgIG5ld19yZWxmcm96ZW5feGlkID8KKwkJCQkJICAgKm5ld19yZWxm cm96ZW5feGlkIDogSW52YWxpZFRyYW5zYWN0aW9uSWQsCisJCQkJCSAgIG5ld19yZWxtaW5fbXhp ZCA/CisJCQkJCSAgICpuZXdfcmVsbWluX214aWQgOiBJbnZhbGlkTXVsdGlYYWN0SWQsCisJCQkJ CSAgIHByZXN1bHQsCisJCQkJCSAgICZwcnN0YXRlKTsKKworCS8qCisJICogRXhhbWluZSBhbGwg bGluZSBwb2ludGVycyBhbmQgdHVwbGUgdmlzaWJpbGl0eSBpbmZvcm1hdGlvbiB0byBkZXRlcm1p bmUKKwkgKiB3aGljaCBsaW5lIHBvaW50ZXJzIHNob3VsZCBjaGFuZ2Ugc3RhdGUgYW5kIHdoaWNo IHR1cGxlcyBtYXkgYmUgZnJvemVuLgorCSAqIFByZXBhcmUgcXVldWUgb2Ygc3RhdGUgY2hhbmdl cyB0byBsYXRlciBiZSBleGVjdXRlZCBpbiBhIGNyaXRpY2FsCisJICogc2VjdGlvbi4KKwkgKi8K KwlwcnVuZV9mcmVlemVfcGxhbihSZWxhdGlvbkdldFJlbGlkKHBhcmFtcy0+cmVsYXRpb24pLAor CQkJCQkgIGJ1ZmZlciwgJnByc3RhdGUsIG9mZl9sb2MpOworCisJLyoKKwkgKiBJZiBjaGVja3N1 bXMgYXJlIGVuYWJsZWQsIGNhbGxpbmcgaGVhcF9wcnVuZV9zYXRpc2ZpZXNfdmFjdXVtKCkgd2hp bGUKKwkgKiBjaGVja2luZyB0dXBsZSB2aXNpYmlsaXR5IGluZm9ybWF0aW9uIGluIHBydW5lX2Zy ZWV6ZV9wbGFuKCkgbWF5IGhhdmUKKwkgKiBjYXVzZWQgYW4gRlBJIHRvIGJlIGVtaXR0ZWQuCisJ ICovCisJZGlkX3R1cGxlX2hpbnRfZnBpID0gZnBpX2JlZm9yZSAhPSBwZ1dhbFVzYWdlLndhbF9m cGk7CiAKIAlkb19wcnVuZSA9IHByc3RhdGUubnJlZGlyZWN0ZWQgPiAwIHx8CiAJCXByc3RhdGUu bmRlYWQgPiAwIHx8Ci0tIAoyLjQzLjAKCg== --0000000000004d8ca00643fabb4a Content-Type: text/x-patch; charset="UTF-8"; name="v21-0005-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Disposition: attachment; filename="v21-0005-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi6mazv44 RnJvbSBhOWFmODQ2NjVhZTc2MWU5ZmJhNDZmODM1YTVlZmQ4NDk3MzlkYTIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDggT2N0IDIwMjUgMTU6Mzk6MDEgLTA0MDAKU3ViamVjdDogW1BB VENIIHYyMSAwNS8xMl0gRWxpbWluYXRlIFhMT0dfSEVBUDJfVklTSUJMRSBmcm9tIHZhY3V1bSBw aGFzZSBJCiBwcnVuZS9mcmVlemUKClZhY3V1bSBubyBsb25nZXIgZW1pdHMgYSBzZXBhcmF0ZSBX QUwgcmVjb3JkIGZvciBlYWNoIHBhZ2Ugc2V0CmFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4gZHVy aW5nIHBoYXNlIEkuIEluc3RlYWQsIHZpc2liaWxpdHkgbWFwCnVwZGF0ZXMgYXJlIG5vdyBpbmNs dWRlZCBpbiB0aGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQgdGhhdAppcyBh bHJlYWR5IGVtaXR0ZWQgZm9yIHBydW5pbmcgYW5kIGZyZWV6aW5nLgoKUHJldmlvdXNseSwgaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBkZXRlcm1pbmVkIHdoZXRoZXIgYSBwYWdlIHdhcwph bGwtdmlzaWJsZSwgYnV0IHRoZSBjb3JyZXNwb25kaW5nIFZNIGJpdHMgd2VyZSBvbmx5IHNldCBs YXRlciBpbgpsYXp5X3NjYW5fcHJ1bmUoKS4gTm93IHRoZSBWTSBpcyB1cGRhdGVkIGltbWVkaWF0 ZWx5IGluCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCksIGF0IHRoZSBzYW1lIHRpbWUgYXMg dGhlIGhlYXAKbW9kaWZpY2F0aW9ucy4KClRoaXMgY2hhbmdlIGFwcGxpZXMgb25seSB0byB2YWN1 dW0gcGhhc2UgSSwgbm90IHRvIHBydW5pbmcgcGVyZm9ybWVkCmR1cmluZyBub3JtYWwgcGFnZSBh Y2Nlc3MuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBSb2JlcnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZp ZXdlZC1ieTogS2lyaWxsIFJlc2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KRGlzY3Vzc2lv bjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9mbGF0L0NBQUtSdV9aTXc2TnBkX3FtMktNJTJCRndRM2NN T014MURoM1ZNaHA4LVY3U09MeGRLOS1nJTQwbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIHwgIDM3ICsrLQogc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMgICB8IDQ2MSArKysrKysrKysrKysrKysrKysrKystLS0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICB8IDI0MSArLS0tLS0tLS0tLS0tLQog c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICB8ICA0MyArKy0KIDQgZmlsZXMg Y2hhbmdlZCwgNDQ3IGluc2VydGlvbnMoKyksIDMzNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCAxMWNiM2Y3NGRhNS4uMmFmNzI0NDUxYzMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtMTA0LDYgKzEwNCw4IEBAIGhl YXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCU9mZnNldE51 bWJlciAqZnJ6X29mZnNldHM7CiAJCWNoYXIJICAgKmRhdGFwdHIgPSBYTG9nUmVjR2V0QmxvY2tE YXRhKHJlY29yZCwgMCwgJmRhdGFsZW4pOwogCQlib29sCQlkb19wcnVuZTsKKwkJYm9vbAkJc2V0 X2xzbiA9IGZhbHNlOworCQlib29sCQltYXJrX2J1ZmZlcl9kaXJ0eSA9IGZhbHNlOwogCiAJCWhl YXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGRhdGFwdHIsIHhscmVjLmZsYWdz LAogCQkJCQkJCQkJCQkgICAmbnBsYW5zLCAmcGxhbnMsICZmcnpfb2Zmc2V0cywKQEAgLTE1Nywx NyArMTU5LDM2IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAJCS8qIFRoZXJlIHNob3VsZCBiZSBubyBtb3JlIGRhdGEgKi8KIAkJQXNzZXJ0KChjaGFy ICopIGZyel9vZmZzZXRzID09IGRhdGFwdHIgKyBkYXRhbGVuKTsKIAotCQlpZiAodm1mbGFncyAm IFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykKLQkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwot Ci0JCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOworCQlpZiAoZG9fcHJ1bmUgfHwgbnBsYW5zID4g MCkKKwkJCW1hcmtfYnVmZmVyX2RpcnR5ID0gc2V0X2xzbiA9IHRydWU7CiAKIAkJLyoKLQkJICog U2VlIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoKSBmb3IgY29tbWVudGFyeSBvbiB3aGVuIHdl IHNldCB0aGUKLQkJICogaGVhcCBwYWdlIExTTi4KKwkJICogVGhlIGNyaXRpY2FsIGludGVncml0 eSByZXF1aXJlbWVudCBoZXJlIGlzIHRoYXQgd2UgbXVzdCBuZXZlciBlbmQKKwkJICogdXAgd2l0 aCB3aXRoIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgc2V0IGFuZCB0aGUgcGFnZS1sZXZlbAorCQkg KiBQRF9BTExfVklTSUJMRSBiaXQgY2xlYXIuICBJZiB0aGF0IHdlcmUgdG8gb2NjdXIsIGEgc3Vi c2VxdWVudCBwYWdlCisJCSAqIG1vZGlmaWNhdGlvbiB3b3VsZCBmYWlsIHRvIGNsZWFyIHRoZSB2 aXNpYmlsaXR5IG1hcCBiaXQuCisJCSAqCisJCSAqIHZtZmxhZ3MgbWF5IGJlIG5vbnplcm8gd2l0 aCBQRF9BTExfVklTSUJMRSBhbHJlYWR5IHNldCAoZS5nLiB3aGVuCisJCSAqIG1hcmtpbmcgYW4g YWxsLXZpc2libGUgcGFnZSBhbGwtZnJvemVuKS4gSWYgb25seSB0aGUgVk0gaXMgdXBkYXRlZCwK KwkJICogdGhlIGhlYXAgcGFnZSBuZWVkIG5vdCBiZSBkaXJ0aWVkLgogCQkgKi8KLQkJaWYgKGRv X3BydW5lIHx8IG5wbGFucyA+IDAgfHwKLQkJCSgodm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFM SURfQklUUykgJiYgWExvZ0hpbnRCaXRJc05lZWRlZCgpKSkKKwkJaWYgKCh2bWZsYWdzICYgVklT SUJJTElUWU1BUF9WQUxJRF9CSVRTKSAmJiAhUGFnZUlzQWxsVmlzaWJsZShwYWdlKSkKKwkJewor CQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7CisJCQltYXJrX2J1ZmZlcl9kaXJ0eSA9IHRydWU7 CisKKwkJCS8qCisJCQkgKiBTZWUgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZSgpIGZvciBjb21t ZW50YXJ5IG9uIHdoZW4gd2Ugc2V0CisJCQkgKiB0aGUgaGVhcCBwYWdlIExTTi4KKwkJCSAqLwor CQkJaWYgKFhMb2dIaW50Qml0SXNOZWVkZWQoKSkKKwkJCQlzZXRfbHNuID0gdHJ1ZTsKKwkJfQor CisJCWlmIChtYXJrX2J1ZmZlcl9kaXJ0eSkKKwkJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwor CisJCWlmIChzZXRfbHNuKQogCQkJUGFnZVNldExTTihwYWdlLCBsc24pOwogCiAJCS8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IGIxMGM1ZWIxMTYzLi5iYTU3OGMxY2UwZiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTE5LDcgKzE5LDcgQEAKICNpbmNs dWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL211bHRpeGFjdC5o IgogI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCi0jaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxp dHltYXBkZWZzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXAuaCIKICNpbmNsdWRl ICJhY2Nlc3MveGxvZy5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvdmFjdXVtLmgiCkBAIC00NCw2ICs0NCw4IEBAIHR5cGVkZWYgc3RydWN0CiAJ Ym9vbAkJbWFya191bnVzZWRfbm93OwogCS8qIHdoZXRoZXIgdG8gYXR0ZW1wdCBmcmVlemluZyB0 dXBsZXMgKi8KIAlib29sCQlhdHRlbXB0X2ZyZWV6ZTsKKwkvKiB3aGV0aGVyIG9yIG5vdCB0byBh dHRlbXB0IHVwZGF0aW5nIHRoZSBWTSAqLworCWJvb2wJCWF0dGVtcHRfdXBkYXRlX3ZtOwogCXN0 cnVjdCBWYWN1dW1DdXRvZmZzICpjdXRvZmZzOwogCiAJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNDAsMTYgKzE0MiwxNyBAQCB0 eXBlZGVmIHN0cnVjdAogCSAqIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIGluZGljYXRlIGlm IHRoZSBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbgogCSAqIGJpdHMgaW4gdGhlIHZpc2liaWxp dHkgbWFwIGNhbiBiZSBzZXQgZm9yIHRoaXMgcGFnZSBhZnRlciBwcnVuaW5nLgogCSAqCi0JICog dmlzaWJpbGl0eV9jdXRvZmZfeGlkIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBv biB0aGUgcGFnZS4KLQkgKiBUaGUgY2FsbGVyIGNhbiB1c2UgaXQgYXMgdGhlIGNvbmZsaWN0IGhv cml6b24sIHdoZW4gc2V0dGluZyB0aGUgVk0KLQkgKiBiaXRzLiAgSXQgaXMgb25seSB2YWxpZCBp ZiB3ZSBmcm96ZSBzb21lIHR1cGxlcywgYW5kIGFsbF9mcm96ZW4gaXMKLQkgKiB0cnVlLgorCSAq IHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBpcyB0aGUgbmV3ZXN0IHhtaW4gb2YgbGl2ZSB0dXBsZXMg b24gdGhlIHBhZ2UuIEl0CisJICogY2FuIGJlIHVzZWQgYXMgdGhlIGNvbmZsaWN0IGhvcml6b24g d2hlbiBzZXR0aW5nIHRoZSBWTSBvciB3aGVuCisJICogZnJlZXppbmcgYWxsIHRoZSB0dXBsZXMg b24gdGhlIHBhZ2UuIEl0IGlzIG9ubHkgdmFsaWQgd2hlbiBhbGwgdGhlIGxpdmUKKwkgKiB0dXBs ZXMgb24gdGhlIHBhZ2UgYXJlIGFsbC12aXNpYmxlLgogCSAqCiAJICogTk9URTogYWxsX3Zpc2li bGUgYW5kIGFsbF9mcm96ZW4gaW5pdGlhbGx5IGRvbid0IGluY2x1ZGUgTFBfREVBRCBpdGVtcy4K IAkgKiBUaGF0J3MgY29udmVuaWVudCBmb3IgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSB0 byB1c2UgdGhlbSB0bwotCSAqIGRlY2lkZSB3aGV0aGVyIHRvIGZyZWV6ZSB0aGUgcGFnZSBvciBu b3QuICBUaGUgYWxsX3Zpc2libGUgYW5kCi0JICogYWxsX2Zyb3plbiB2YWx1ZXMgcmV0dXJuZWQg dG8gdGhlIGNhbGxlciBhcmUgYWRqdXN0ZWQgdG8gaW5jbHVkZQotCSAqIExQX0RFQUQgaXRlbXMg YWZ0ZXIgd2UgZGV0ZXJtaW5lIHdoZXRoZXIgdG8gb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXplLgor CSAqIGRlY2lkZSB3aGV0aGVyIHRvIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6ZSB0aGUgcGFnZSBv ciBub3QuICBUaGUKKwkgKiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB2YWx1ZXMgdWx0aW1h dGVseSB1c2VkIHRvIHNldCB0aGUgVk0gYXJlCisJICogYWRqdXN0ZWQgdG8gaW5jbHVkZSBMUF9E RUFEIGl0ZW1zIGFmdGVyIHdlIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0bworCSAqIG9wcG9y dHVuaXN0aWNhbGx5IGZyZWV6ZS4KIAkgKi8KIAlib29sCQlhbGxfdmlzaWJsZTsKIAlib29sCQlh bGxfZnJvemVuOwpAQCAtMTg4LDEwICsxOTEsMjEgQEAgc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9y ZWNvcmRfdW5jaGFuZ2VkX2xwX3JlZGlyZWN0KFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE4K IAogc3RhdGljIHZvaWQgcGFnZV92ZXJpZnlfcmVkaXJlY3RzKFBhZ2UgcGFnZSk7CiAKK3N0YXRp YyBUcmFuc2FjdGlvbklkIGdldF9jb25mbGljdF94aWQoYm9vbCBkb19wcnVuZSwgYm9vbCBkb19m cmVlemUsIGJvb2wgZG9fc2V0X3ZtLAorCQkJCQkJCQkJICBUcmFuc2FjdGlvbklkIGxhdGVzdF94 aWRfcmVtb3ZlZCwgVHJhbnNhY3Rpb25JZCBmcnpfY29uZmxpY3RfaG9yaXpvbiwKKwkJCQkJCQkJ CSAgVHJhbnNhY3Rpb25JZCB2aXNpYmlsaXR5X2N1dG9mZl94aWQsIGJvb2wgYmxrX2FscmVhZHlf YXYsCisJCQkJCQkJCQkgIGJvb2wgc2V0X2Jsa19hbGxfZnJvemVuKTsKIHN0YXRpYyBib29sIGhl YXBfcGFnZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJ CQkJCQkJICBib29sIGRpZF90dXBsZV9oaW50X2ZwaSwgYm9vbCBkb19wcnVuZSwgYm9vbCBkb19o aW50X3BydW5lLAogCQkJCQkJCQkgIFBydW5lU3RhdGUgKnByc3RhdGUpOwotCitzdGF0aWMgYm9v bCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdmlzKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJCQkgICBC bG9ja051bWJlciBoZWFwX2JsaywKKwkJCQkJCQkJICAgQnVmZmVyIGhlYXBfYnVmLAorCQkJCQkJ CQkgICBCdWZmZXIgdm1idWZmZXIsCisJCQkJCQkJCSAgIGJvb2wgYmxrX2tub3duX2F2LAorCQkJ CQkJCQkgICBjb25zdCBQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJCQkJCQkgICB1aW50OCAqdm1m bGFncywKKwkJCQkJCQkJICAgYm9vbCAqZG9fc2V0X3BkX3Zpcyk7CiAKIC8qCiAgKiBPcHRpb25h bGx5IHBydW5lIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBpbiB0aGUgc3BlY2lmaWVkIHBhZ2Uu CkBAIC0yNzgsNiArMjkyLDcgQEAgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlv biwgQnVmZmVyIGJ1ZmZlcikKIAkJCSAqIGN1cnJlbnQgaW1wbGVtZW50YXRpb24uCiAJCQkgKi8K IAkJCVBydW5lRnJlZXplUGFyYW1zIHBhcmFtcyA9IHsucmVsYXRpb24gPSByZWxhdGlvbiwuYnVm ZmVyID0gYnVmZmVyLAorCQkJCS52bWJ1ZmZlciA9IEludmFsaWRCdWZmZXIsLmJsa19rbm93bl9h diA9IGZhbHNlLAogCQkJCS5yZWFzb24gPSBQUlVORV9PTl9BQ0NFU1MsLm9wdGlvbnMgPSAwLAog CQkJCS52aXN0ZXN0ID0gdmlzdGVzdCwuY3V0b2ZmcyA9IE5VTEwKIAkJCX07CkBAIC0zMzEsNiAr MzQ2LDggQEAgcHJ1bmVfZnJlZXplX3NldHVwKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJ cHJzdGF0ZS0+bWFya191bnVzZWRfbm93ID0KIAkJKHBhcmFtcy0+b3B0aW9ucyAmIEhFQVBfUEFH RV9QUlVORV9NQVJLX1VOVVNFRF9OT1cpICE9IDA7CiAJcHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUg PSAocGFyYW1zLT5vcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSkgIT0gMDsKKwlwcnN0 YXRlLT5hdHRlbXB0X3VwZGF0ZV92bSA9CisJCShwYXJhbXMtPm9wdGlvbnMgJiBIRUFQX1BBR0Vf UFJVTkVfVVBEQVRFX1ZJUykgIT0gMDsKIAlwcnN0YXRlLT5jdXRvZmZzID0gcGFyYW1zLT5jdXRv ZmZzOwogCiAJLyoKQEAgLTM3OSw1MCArMzk2LDU0IEBAIHBydW5lX2ZyZWV6ZV9zZXR1cChQcnVu ZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCXByc3RhdGUtPmZyel9jb25mbGljdF9ob3Jpem9uID0g SW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIAkvKgotCSAqIFZhY3V1bSBtYXkgdXBkYXRlIHRoZSBW TSBhZnRlciB3ZSdyZSBkb25lLiAgV2UgY2FuIGtlZXAgdHJhY2sgb2YKLQkgKiB3aGV0aGVyIHRo ZSBwYWdlIHdpbGwgYmUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4gYWZ0ZXIgcHJ1bmluZyBh bmQKLQkgKiBmcmVlemluZyB0byBoZWxwIHRoZSBjYWxsZXIgdG8gZG8gdGhhdC4KKwkgKiBUcmFj ayB3aGV0aGVyIHRoZSBwYWdlIGNvdWxkIGJlIG1hcmtlZCBhbGwtdmlzaWJsZSBhbmQvb3IgYWxs LWZyb3plbi4KKwkgKiBUaGlzIGluZm9ybWF0aW9uIGlzIHVzZWQgZm9yIG9wcG9ydHVuaXN0aWMg ZnJlZXppbmcgYW5kIGZvciB1cGRhdGluZworCSAqIHRoZSB2aXNpYmlsaXR5IG1hcCAoVk0pIGlm IHJlcXVlc3RlZCBieSB0aGUgY2FsbGVyLgorCSAqCisJICogQ3VycmVudGx5LCBvbmx5IFZBQ1VV TSBwZXJmb3JtcyBmcmVlemluZywgYnV0IG90aGVyIGNhbGxlcnMgbWF5IGluIHRoZQorCSAqIGZ1 dHVyZS4gVmlzaWJpbGl0eSBib29ra2VlcGluZyBpcyByZXF1aXJlZCBub3QganVzdCBmb3Igc2V0 dGluZyB0aGUgVk0KKwkgKiBiaXRzLCBidXQgYWxzbyBmb3Igb3Bwb3J0dW5pc3RpYyBmcmVlemlu Zzogd2Ugb25seSBjb25zaWRlciBmcmVlemluZyBpZgorCSAqIHRoZSBwYWdlIHdvdWxkIGJlY29t ZSBhbGwtZnJvemVuLCBvciBpZiBpdCB3b3VsZCBiZSBhbGwtZnJvemVuIGV4Y2VwdAorCSAqIGZv ciBkZWFkIHR1cGxlcyB0aGF0IFZBQ1VVTSB3aWxsIHJlbW92ZS4gSWYgYXR0ZW1wdF91cGRhdGVf dm0gaXMgZmFsc2UsCisJICogd2Ugd2lsbCBub3Qgc2V0IHRoZSBWTSBiaXQgZXZlbiBpZiB0aGUg cGFnZSBpcyBmb3VuZCB0byBiZSBhbGwtdmlzaWJsZS4KIAkgKgotCSAqIEN1cnJlbnRseSwgb25s eSBWQUNVVU0gc2V0cyB0aGUgVk0gYml0cy4gIFRvIHNhdmUgdGhlIGVmZm9ydCwgb25seSBkbwot CSAqIHRoZSBib29ra2VlcGluZyBpZiB0aGUgY2FsbGVyIG5lZWRzIGl0LiAgQ3VycmVudGx5LCB0 aGF0J3MgdGllZCB0bwotCSAqIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUsIGJ1dCBpdCBjb3VsZCBi ZSBhIHNlcGFyYXRlIGZsYWcgaWYgeW91IHdhbnRlZAotCSAqIHRvIHVwZGF0ZSB0aGUgVk0gYml0 cyB3aXRob3V0IGFsc28gZnJlZXppbmcgb3IgZnJlZXplIHdpdGhvdXQgYWxzbwotCSAqIHNldHRp bmcgdGhlIFZNIGJpdHMuCisJICogSWYgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WSVMgaXMgcGFz c2VkIHdpdGhvdXQgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSwKKwkgKiBwcnN0YXRlLmFsbF9mcm96 ZW4gbXVzdCBiZSBpbml0aWFsaXplZCB0byBmYWxzZSwgc2luY2Ugd2Ugd2lsbCBub3QgY2FsbAor CSAqIGhlYXBfcHJlcGFyZV9mcmVlemVfdHVwbGUoKSBmb3IgZWFjaCB0dXBsZS4KIAkgKgotCSAq IEluIGFkZGl0aW9uIHRvIHRlbGxpbmcgdGhlIGNhbGxlciB3aGV0aGVyIGl0IGNhbiBzZXQgdGhl IFZNIGJpdCwgd2UKLQkgKiBhbHNvIHVzZSAnYWxsX3Zpc2libGUnIGFuZCAnYWxsX2Zyb3plbicg Zm9yIG91ciBvd24gZGVjaXNpb24tbWFraW5nLiBJZgotCSAqIHRoZSB3aG9sZSBwYWdlIHdvdWxk IGJlY29tZSBmcm96ZW4sIHdlIGNvbnNpZGVyIG9wcG9ydHVuaXN0aWNhbGx5Ci0JICogZnJlZXpp bmcgdHVwbGVzLiAgV2Ugd2lsbCBub3QgYmUgYWJsZSB0byBmcmVlemUgdGhlIHdob2xlIHBhZ2Ug aWYgdGhlcmUKLQkgKiBhcmUgdHVwbGVzIHByZXNlbnQgdGhhdCBhcmUgbm90IHZpc2libGUgdG8g ZXZlcnlvbmUgb3IgaWYgdGhlcmUgYXJlCi0JICogZGVhZCB0dXBsZXMgd2hpY2ggYXJlIG5vdCB5 ZXQgcmVtb3ZhYmxlLiAgSG93ZXZlciwgZGVhZCB0dXBsZXMgd2hpY2gKLQkgKiB3aWxsIGJlIHJl bW92ZWQgYnkgdGhlIGVuZCBvZiB2YWN1dW1pbmcgc2hvdWxkIG5vdCBwcmVjbHVkZSB1cyBmcm9t Ci0JICogb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXppbmcuICBCZWNhdXNlIG9mIHRoYXQsIHdlIGRv IG5vdCBpbW1lZGlhdGVseQotCSAqIGNsZWFyIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIHdo ZW4gd2Ugc2VlIExQX0RFQUQgaXRlbXMuICBXZSBmaXgKLQkgKiB0aGF0IGFmdGVyIHNjYW5uaW5n IHRoZSBsaW5lIHBvaW50ZXJzLCBiZWZvcmUgd2UgcmV0dXJuIHRoZSB2YWx1ZSB0bwotCSAqIHRo ZSBjYWxsZXIsIHNvIHRoYXQgdGhlIGNhbGxlciBkb2Vzbid0IHNldCB0aGUgVk0gYml0cyBpbmNv cnJlY3RseS4KKwkgKiBEZWFkIHR1cGxlcyB0aGF0IHdpbGwgYmUgcmVtb3ZlZCBieSB0aGUgZW5k IG9mIHZhY3V1bSBzaG91bGQgbm90CisJICogcHJldmVudCBvcHBvcnR1bmlzdGljIGZyZWV6aW5n LiBUaGVyZWZvcmUsIHdlIGRvIG5vdCBjbGVhciBhbGxfdmlzaWJsZQorCSAqIGFuZCBhbGxfZnJv emVuIHdoZW4gd2UgZW5jb3VudGVyIExQX0RFQUQgaXRlbXMuIEluc3RlYWQsIHdlIGNvcnJlY3QK KwkgKiB0aGVtIGFmdGVyIGRlY2lkaW5nIHdoZXRoZXIgdG8gZnJlZXplLCBidXQgYmVmb3JlIHVw ZGF0aW5nIHRoZSBWTSwgdG8KKwkgKiBhdm9pZCBzZXR0aW5nIHRoZSBWTSBiaXRzIGluY29ycmVj dGx5LgorCSAqCisJICogSWYgbmVpdGhlciBmcmVlemluZyBub3IgVk0gdXBkYXRlcyBhcmUgcmVx dWVzdGVkLCB3ZSBza2lwIHRoZSBleHRyYQorCSAqIGJvb2trZWVwaW5nLiBJbiB0aGlzIGNhc2Us IGluaXRpYWxpemluZyBhbGxfdmlzaWJsZSB0byBmYWxzZSBhbGxvd3MKKwkgKiBoZWFwX3BydW5l X3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKCkgdG8gYnlwYXNzIHVubmVjZXNzYXJ5IHdvcmsu CiAJICovCiAJaWYgKHByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQogCXsKIAkJcHJzdGF0ZS0+YWxs X3Zpc2libGUgPSB0cnVlOwogCQlwcnN0YXRlLT5hbGxfZnJvemVuID0gdHJ1ZTsKIAl9CisJZWxz ZSBpZiAocHJzdGF0ZS0+YXR0ZW1wdF91cGRhdGVfdm0pCisJeworCQlwcnN0YXRlLT5hbGxfdmlz aWJsZSA9IHRydWU7CisJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKKwl9CiAJZWxzZQog CXsKLQkJLyoKLQkJICogSW5pdGlhbGl6aW5nIHRvIGZhbHNlIGFsbG93cyBza2lwcGluZyB0aGUg d29yayB0byB1cGRhdGUgdGhlbSBpbgotCQkgKiBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRf bHBfbm9ybWFsKCkuCi0JCSAqLwogCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOwogCQlw cnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CiAJfQogCiAJLyoKLQkgKiBUaGUgdmlzaWJpbGl0 eSBjdXRvZmYgeGlkIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUKLQkg KiBwYWdlLiAgSW4gdGhlIGNvbW1vbiBjYXNlLCB0aGlzIHdpbGwgYmUgc2V0IGFzIHRoZSBjb25m bGljdCBob3Jpem9uIHRoZQotCSAqIGNhbGxlciBjYW4gdXNlIGZvciB1cGRhdGluZyB0aGUgVk0u ICBJZiwgYXQgdGhlIGVuZCBvZiBmcmVlemluZyBhbmQKLQkgKiBwcnVuaW5nLCB0aGUgcGFnZSBp cyBhbGwtZnJvemVuLCB0aGVyZSBpcyBubyBwb3NzaWJpbGl0eSB0aGF0IGFueQotCSAqIHJ1bm5p bmcgdHJhbnNhY3Rpb24gb24gdGhlIHN0YW5kYnkgZG9lcyBub3Qgc2VlIHR1cGxlcyBvbiB0aGUg cGFnZSBhcwotCSAqIGFsbC12aXNpYmxlLCBzbyB0aGUgY29uZmxpY3QgaG9yaXpvbiByZW1haW5z IEludmFsaWRUcmFuc2FjdGlvbklkLgorCSAqIFRoZSB2aXNpYmlsaXR5IGN1dG9mZiB4aWQgaXMg dGhlIG5ld2VzdCB4bWluIG9mIGxpdmUsIGNvbW1pdHRlZCB0dXBsZXMKKwkgKiBvbGRlciB0aGFu IE9sZGVzdFhtaW4gb24gdGhlIHBhZ2UuIFRoaXMgZmllbGQgaXMgb25seSBrZXB0IHVwLXRvLWRh dGUKKwkgKiBpZiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZS4gQXMgc29vbiBhcyBhIHR1cGxlIGlz IGVuY291bnRlcmVkIHRoYXQgaXMKKwkgKiBub3QgdmlzaWJsZSB0byBhbGwsIHRoaXMgZmllbGQg aXMgdW5tYWludGFpbmVkLiBBcyBsb25nIGFzIGl0IGlzCisJICogbWFpbnRhaW5lZCwgaXQgY2Fu IGJlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uCisJICog d2hlbiB1cGRhdGluZyB0aGUgVk0gYW5kL29yIGZyZWV6aW5nIGFsbCB0aGUgdHVwbGVzIG9uIHRo ZSBwYWdlLgogCSAqLwogCXByc3RhdGUtPnZpc2liaWxpdHlfY3V0b2ZmX3hpZCA9IEludmFsaWRU cmFuc2FjdGlvbklkOwogfQpAQCAtNzU3LDEwICs3NzgsMTMzIEBAIGhlYXBfcGFnZV93aWxsX2Zy ZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAlyZXR1cm4gZG9fZnJlZXpl OwogfQogCisvKgorICogRGVjaWRlIHdoZXRoZXIgdG8gc2V0IHRoZSB2aXNpYmlsaXR5IG1hcCBi aXRzIGZvciBoZWFwX2JsaywgdXNpbmcKKyAqIGluZm9ybWF0aW9uIGZyb20gUHJ1bmVTdGF0ZSBh bmQgYmxrX2tub3duX2F2LiBTb21lIGNhbGxlcnMgbWF5IGFscmVhZHkKKyAqIGhhdmUgZXhhbWlu ZWQgdGhpcyBwYWdl4oCZcyBWTSBiaXRzIChlLmcuLCBWQUNVVU0gaW4gdGhlIHByZXZpb3VzCisg KiBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSBjYWxsKSBhbmQgY2FuIHBhc3MgdGhhdCBhbG9u Zy4KKyAqCisgKiBSZXR1cm5zIHRydWUgaWYgb25lIG9yIGJvdGggVk0gYml0cyBzaG91bGQgYmUg c2V0LCBhbG9uZyB3aXRoIHRoZSBkZXNpcmVkCisgKiBmbGFncyBpbiAqdm1mbGFncy4gQWxzbyBp bmRpY2F0ZXMgdmlhIGRvX3NldF9wZF92aXMgd2hldGhlciBQRF9BTExfVklTSUJMRQorICogc2hv dWxkIGJlIHNldCBvbiB0aGUgaGVhcCBwYWdlLgorICovCitzdGF0aWMgYm9vbAoraGVhcF9wYWdl X3dpbGxfc2V0X3ZpcyhSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJICAgQmxvY2tOdW1iZXIgaGVh cF9ibGssCisJCQkJCSAgIEJ1ZmZlciBoZWFwX2J1ZiwKKwkJCQkJICAgQnVmZmVyIHZtYnVmZmVy LAorCQkJCQkgICBib29sIGJsa19rbm93bl9hdiwKKwkJCQkJICAgY29uc3QgUHJ1bmVTdGF0ZSAq cHJzdGF0ZSwKKwkJCQkJICAgdWludDggKnZtZmxhZ3MsCisJCQkJCSAgIGJvb2wgKmRvX3NldF9w ZF92aXMpCit7CisJUGFnZQkJaGVhcF9wYWdlID0gQnVmZmVyR2V0UGFnZShoZWFwX2J1Zik7CisJ Ym9vbAkJZG9fc2V0X3ZtID0gZmFsc2U7CisKKwkqZG9fc2V0X3BkX3ZpcyA9IGZhbHNlOworCisJ aWYgKCFwcnN0YXRlLT5hdHRlbXB0X3VwZGF0ZV92bSkKKwl7CisJCUFzc2VydCghcHJzdGF0ZS0+ YWxsX3Zpc2libGUgJiYgIXByc3RhdGUtPmFsbF9mcm96ZW4pOworCQlBc3NlcnQoKnZtZmxhZ3Mg PT0gMCk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlpZiAocHJzdGF0ZS0+YWxsX3Zpc2libGUg JiYgIVBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSkKKwkJKmRvX3NldF9wZF92aXMgPSB0cnVl OworCisJaWYgKChwcnN0YXRlLT5hbGxfdmlzaWJsZSAmJiAhYmxrX2tub3duX2F2KSB8fAorCQko cHJzdGF0ZS0+YWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTihyZWxhdGlvbiwgaGVhcF9ibGss ICZ2bWJ1ZmZlcikpKQorCXsKKwkJKnZtZmxhZ3MgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxF OworCQlpZiAocHJzdGF0ZS0+YWxsX2Zyb3plbikKKwkJCSp2bWZsYWdzIHw9IFZJU0lCSUxJVFlN QVBfQUxMX0ZST1pFTjsKKworCQlkb19zZXRfdm0gPSB0cnVlOworCX0KKworCS8qCisJICogTm93 IGhhbmRsZSB0d28gcG90ZW50aWFsIGNvcnJ1cHRpb24gY2FzZXM6CisJICoKKwkgKiBUaGVzZSBk byBub3QgbmVlZCB0byBoYXBwZW4gaW4gYSBjcml0aWNhbCBzZWN0aW9uIGFuZCBhcmUgbm90CisJ ICogV0FMLWxvZ2dlZC4KKwkgKgorCSAqIEFzIG9mIFBvc3RncmVTUUwgOS4yLCB0aGUgdmlzaWJp bGl0eSBtYXAgYml0IHNob3VsZCBuZXZlciBiZSBzZXQgaWYgdGhlCisJICogcGFnZS1sZXZlbCBi aXQgaXMgY2xlYXIuICBIb3dldmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQgaW4gdmFjdXVtIHRoZSBi aXQKKwkgKiBnb3QgY2xlYXJlZCBhZnRlciBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSB3YXMg Y2FsbGVkLCBzbyB3ZSBtdXN0CisJICogcmVjaGVjayB3aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBj b25jbHVkaW5nIHRoYXQgdGhlIFZNIGlzIGNvcnJ1cHQuCisJICovCisJZWxzZSBpZiAoYmxrX2tu b3duX2F2ICYmICFQYWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkgJiYKKwkJCSB2aXNpYmlsaXR5 bWFwX2dldF9zdGF0dXMocmVsYXRpb24sIGhlYXBfYmxrLCAmdm1idWZmZXIpICE9IDApCisJewor CQllcmVwb3J0KFdBUk5JTkcsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCks CisJCQkJIGVycm1zZygicGFnZSBpcyBub3QgbWFya2VkIGFsbC12aXNpYmxlIGJ1dCB2aXNpYmls aXR5IG1hcCBiaXQgaXMgc2V0IGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKKwkJCQkJCVJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9uKSwgaGVhcF9ibGspKSk7CisKKwkJdmlzaWJp bGl0eW1hcF9jbGVhcihyZWxhdGlvbiwgaGVhcF9ibGssIHZtYnVmZmVyLAorCQkJCQkJCVZJU0lC SUxJVFlNQVBfVkFMSURfQklUUyk7CisJfQorCisJLyoKKwkgKiBJdCdzIHBvc3NpYmxlIGZvciB0 aGUgdmFsdWUgcmV0dXJuZWQgYnkKKwkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlv bklkKCkgdG8gbW92ZSBiYWNrd2FyZHMsIHNvIGl0J3Mgbm90CisJICogd3JvbmcgZm9yIHVzIHRv IHNlZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZlcnlvbmUKKwkg KiB5ZXQsIHdoaWxlIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBzYWZl IHhtaW4gdmFsdWUKKwkgKiBuZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRlc3ROb25S ZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgaXMKKwkgKiBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0aW1l cyByZXR1cm5zIGEgdmFsdWUgdGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCisJICogc28gaWYg d2Ugc2VlIHRoYXQgY29udHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxlcyB0 aGF0IHdlCisJICogdGhpbmsgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBhY3R1YWxs eSBhcmUsIGFuZCB0aGUKKwkgKiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJlY3QuCisJICoK KwkgKiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ugd2l0aCBQ RF9BTExfVklTSUJMRSBzZXQsCisJICogaG93ZXZlci4KKwkgKi8KKwllbHNlIGlmIChwcnN0YXRl LT5scGRlYWRfaXRlbXMgPiAwICYmIFBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSkKKwl7CisJ CWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwK KwkJCQkgZXJybXNnKCJwYWdlIGNvbnRhaW5pbmcgTFBfREVBRCBpdGVtcyBpcyBtYXJrZWQgYXMg YWxsLXZpc2libGUgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAorCQkJCQkJUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pLCBoZWFwX2JsaykpKTsKKworCQlQYWdlQ2xlYXJBbGxW aXNpYmxlKGhlYXBfcGFnZSk7CisJCU1hcmtCdWZmZXJEaXJ0eShoZWFwX2J1Zik7CisJCXZpc2li aWxpdHltYXBfY2xlYXIocmVsYXRpb24sIGhlYXBfYmxrLCB2bWJ1ZmZlciwKKwkJCQkJCQlWSVNJ QklMSVRZTUFQX1ZBTElEX0JJVFMpOworCX0KKworCXJldHVybiBkb19zZXRfdm07Cit9CisKKwor I2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKworLyoKKyAqIFdyYXBwZXIgZm9yIGhlYXBfcGFn ZV93b3VsZF9iZV9hbGxfdmlzaWJsZSgpIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBjYWxsZXJzCisg KiB0aGF0IGV4cGVjdCBubyBMUF9ERUFEIG9uIHRoZSBwYWdlLiBDdXJyZW50bHkgYXNzZXJ0LW9u bHksIGJ1dCB0aGVyZSBpcyBubworICogcmVhc29uIG5vdCB0byB1c2UgaXQgb3V0c2lkZSBvZiBh c3NlcnRzLgorICovCitzdGF0aWMgYm9vbAoraGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0 aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKKwkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJ CQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwKKwkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5 X2N1dG9mZl94aWQsCisJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSkKK3sKKwor CXJldHVybiBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUocmVsLCBidWYsCisJCQkJCQkJ CQkJICBPbGRlc3RYbWluLAorCQkJCQkJCQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIGFsbF9m cm96ZW4sCisJCQkJCQkJCQkJICB2aXNpYmlsaXR5X2N1dG9mZl94aWQsCisJCQkJCQkJCQkJICBs b2dnaW5nX29mZm51bSk7Cit9CisjZW5kaWYKIAogLyoKICAqIFBydW5lIGFuZCByZXBhaXIgZnJh Z21lbnRhdGlvbiBhbmQgcG90ZW50aWFsbHkgZnJlZXplIHR1cGxlcyBvbiB0aGUKLSAqIHNwZWNp ZmllZCBwYWdlLgorICogc3BlY2lmaWVkIHBhZ2UuIElmIHRoZSBwYWdlJ3MgdmlzaWJpbGl0eSBz dGF0dXMgaGFzIGNoYW5nZWQsIHVwZGF0ZSBpdCBpbgorICogdGhlIFZNLgogICoKICAqIENhbGxl ciBtdXN0IGhhdmUgcGluIGFuZCBidWZmZXIgY2xlYW51cCBsb2NrIG9uIHRoZSBwYWdlLiAgTm90 ZSB0aGF0IHdlCiAgKiBkb24ndCB1cGRhdGUgdGhlIEZTTSBpbmZvcm1hdGlvbiBmb3IgcGFnZSBv biBjYWxsZXIncyBiZWhhbGYuICBDYWxsZXIgbWlnaHQKQEAgLTc3NSwxMiArOTE5LDEzIEBAIGhl YXBfcGFnZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKICAq IHR1cGxlcyBpZiBpdCdzIHJlcXVpcmVkIGluIG9yZGVyIHRvIGFkdmFuY2UgcmVsZnJvemVueGlk IC8gcmVsbWlubXhpZCwgb3IKICAqIGlmIGl0J3MgY29uc2lkZXJlZCBhZHZhbnRhZ2VvdXMgZm9y IG92ZXJhbGwgc3lzdGVtIHBlcmZvcm1hbmNlIHRvIGRvIHNvCiAgKiBub3cuICBUaGUgJ3BhcmFt cy5jdXRvZmZzJywgJ3ByZXN1bHQnLCAnbmV3X3JlbGZyb3plbl94aWQnIGFuZAotICogJ25ld19y ZWxtaW5fbXhpZCcgYXJndW1lbnRzIGFyZSByZXF1aXJlZCB3aGVuIGZyZWV6aW5nLiAgV2hlbgot ICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgcGFzc2VkLCB3ZSBhbHNvIHNldCBw cmVzdWx0LT5hbGxfdmlzaWJsZQotICogYW5kIHByZXN1bHQtPmFsbF9mcm96ZW4gYWZ0ZXIgZGV0 ZXJtaW5pbmcgd2hldGhlciBvciBub3QgdG8KLSAqIG9wcG9ydW5pc3RpY2FsbHkgZnJlZXplLCB0 byBpbmRpY2F0ZSBpZiB0aGUgVk0gYml0cyBjYW4gYmUgc2V0LiAgVGhleSBhcmUKLSAqIGFsd2F5 cyBzZXQgdG8gZmFsc2Ugd2hlbiB0aGUgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMg bm90IHBhc3NlZCwKLSAqIGJlY2F1c2UgYXQgdGhlIG1vbWVudCBvbmx5IGNhbGxlcnMgdGhhdCBh bHNvIGZyZWV6ZSBuZWVkIHRoYXQgaW5mb3JtYXRpb24uCisgKiAnbmV3X3JlbG1pbl9teGlkJyBh cmd1bWVudHMgYXJlIHJlcXVpcmVkIHdoZW4gZnJlZXppbmcuCisgKgorICogSWYgSEVBUF9QQUdF X1BSVU5FX1VQREFURV9WSVMgaXMgc2V0IGluIHBhcmFtcyBhbmQgdGhlIHZpc2liaWxpdHkgc3Rh dHVzIG9mCisgKiB0aGUgcGFnZSBoYXMgY2hhbmdlZCwgd2Ugd2lsbCB1cGRhdGUgdGhlIFZNIGF0 IHRoZSBzYW1lIHRpbWUgYXMgcHJ1bmluZyBhbmQKKyAqIGZyZWV6aW5nIHRoZSBoZWFwIHBhZ2Uu IFdlIHdpbGwgYWxzbyB1cGRhdGUgcHJlc3VsdC0+b2xkX3ZtYml0cyBhbmQKKyAqIHByZXN1bHQt Pm5ld192bWJpdHMgd2l0aCB0aGUgc3RhdGUgb2YgdGhlIFZNIGJlZm9yZSBhbmQgYWZ0ZXIgdXBk YXRpbmcgaXQKKyAqIGZvciB0aGUgY2FsbGVyIHRvIHVzZSBpbiBib29ra2VlcGluZy4KICAqCiAg KiBwcmVzdWx0IGNvbnRhaW5zIG91dHB1dCBwYXJhbWV0ZXJzIG5lZWRlZCBieSBjYWxsZXJzLCBz dWNoIGFzIHRoZSBudW1iZXIgb2YKICAqIHR1cGxlcyByZW1vdmVkIGFuZCB0aGUgb2Zmc2V0cyBv ZiBkZWFkIGl0ZW1zIG9uIHRoZSBwYWdlIGFmdGVyIHBydW5pbmcuCkBAIC04MDUsMTMgKzk1MCwy MCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1z LAogCQkJCQkJICAgTXVsdGlYYWN0SWQgKm5ld19yZWxtaW5fbXhpZCkKIHsKIAlCdWZmZXIJCWJ1 ZmZlciA9IHBhcmFtcy0+YnVmZmVyOworCUJ1ZmZlcgkJdm1idWZmZXIgPSBwYXJhbXMtPnZtYnVm ZmVyOwogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CisJQmxvY2tOdW1iZXIg YmxvY2tubyA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlcik7CiAJUHJ1bmVTdGF0ZQlwcnN0 YXRlOwogCWJvb2wJCWRvX2ZyZWV6ZTsKIAlib29sCQlkb19wcnVuZTsKIAlib29sCQlkb19oaW50 X3BydW5lOworCWJvb2wJCWRvX3NldF92bTsKKwlib29sCQlkb19zZXRfcGRfdmlzOwogCWJvb2wJ CWRpZF90dXBsZV9oaW50X2ZwaTsKIAlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uud2Fs X2ZwaTsKKwlUcmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklk OworCXVpbnQ4CQluZXdfdm1iaXRzID0gMDsKKwl1aW50OAkJb2xkX3ZtYml0cyA9IDA7CiAKIAkv KiBJbml0aWFsaXplIHByc3RhdGUgKi8KIAlwcnVuZV9mcmVlemVfc2V0dXAocGFyYW1zLApAQCAt ODc3LDYgKzEwMjksMzQgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQ YXJhbXMgKnBhcmFtcywKIAkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHByc3RhdGUuYWxsX2Zyb3pl biA9IGZhbHNlOwogCiAJQXNzZXJ0KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwgcHJzdGF0ZS5hbGxf dmlzaWJsZSk7CisJQXNzZXJ0KCFwcnN0YXRlLmFsbF92aXNpYmxlIHx8IChwcnN0YXRlLmxwZGVh ZF9pdGVtcyA9PSAwKSk7CisKKwkvKgorCSAqIERlY2lkZSB3aGV0aGVyIHRvIHNldCB0aGUgcGFn ZS1sZXZlbCBQRF9BTExfVklTSUJMRSBiaXQgYW5kIHRoZSBWTSBiaXRzCisJICogYmFzZWQgb24g aW5mb3JtYXRpb24gZnJvbSB0aGUgVk0gYW5kIHRoZSBhbGxfdmlzaWJsZS9hbGxfZnJvemVuIGZs YWdzLgorCSAqCisJICogV2hpbGUgaXQgaXMgdmFsaWQgZm9yIFBEX0FMTF9WSVNJQkxFIHRvIGJl IHNldCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nCisJICogVk0gYml0IGlzIGNsZWFyLCB3ZSBzdHJv bmdseSBwcmVmZXIgdG8ga2VlcCB0aGVtIGluIHN5bmMuCisJICoKKwkgKiBBY2NvcmRpbmdseSwg d2UgYWxzbyBhbGxvdyB1cGRhdGluZyBvbmx5IHRoZSBWTSB3aGVuIFBEX0FMTF9WSVNJQkxFIGhh cworCSAqIGFscmVhZHkgYmVlbiBzZXQuIFNldHRpbmcgb25seSB0aGUgVk0gaXMgbW9zdCBjb21t b24gd2hlbiBzZXR0aW5nIGFuCisJICogYWxyZWFkeSBhbGwtdmlzaWJsZSBwYWdlIGFsbC1mcm96 ZW4uCisJICovCisJZG9fc2V0X3ZtID0gaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhwYXJhbXMtPnJl bGF0aW9uLAorCQkJCQkJCQkJICAgYmxvY2tubywgYnVmZmVyLCB2bWJ1ZmZlciwgcGFyYW1zLT5i bGtfa25vd25fYXYsCisJCQkJCQkJCQkgICAmcHJzdGF0ZSwgJm5ld192bWJpdHMsICZkb19zZXRf cGRfdmlzKTsKKworCS8qIFdlIHNob3VsZCBvbmx5IHNldCB0aGUgVk0gaWYgUERfQUxMX1ZJU0lC TEUgaXMgc2V0IG9yIHdpbGwgYmUgKi8KKwlBc3NlcnQoIWRvX3NldF92bSB8fCBkb19zZXRfcGRf dmlzIHx8IFBhZ2VJc0FsbFZpc2libGUocGFnZSkpOworCisJY29uZmxpY3RfeGlkID0gZ2V0X2Nv bmZsaWN0X3hpZChkb19wcnVuZSwgZG9fZnJlZXplLCBkb19zZXRfdm0sCisJCQkJCQkJCQlwcnN0 YXRlLmxhdGVzdF94aWRfcmVtb3ZlZCwgcHJzdGF0ZS5mcnpfY29uZmxpY3RfaG9yaXpvbiwKKwkJ CQkJCQkJCXByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkLCBwYXJhbXMtPmJsa19rbm93bl9h diwKKwkJCQkJCQkJCShkb19zZXRfdm0gJiYgKG5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FM TF9GUk9aRU4pKSk7CisKKwkvKiBMb2NrIHZtYnVmZmVyIGJlZm9yZSBlbnRlcmluZyBhIGNyaXRp Y2FsIHNlY3Rpb24gKi8KKwlpZiAoZG9fc2V0X3ZtKQorCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBC VUZGRVJfTE9DS19FWENMVVNJVkUpOwogCiAJLyogQW55IGVycm9yIHdoaWxlIGFwcGx5aW5nIHRo ZSBjaGFuZ2VzIGlzIGNyaXRpY2FsICovCiAJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CkBAIC04OTgs MTQgKzEwNzgsMTcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJh bXMgKnBhcmFtcywKIAogCQkvKgogCQkgKiBJZiB0aGF0J3MgYWxsIHdlIGhhZCB0byBkbyB0byB0 aGUgcGFnZSwgdGhpcyBpcyBhIG5vbi1XQUwtbG9nZ2VkCi0JCSAqIGhpbnQuICBJZiB3ZSBhcmUg Z29pbmcgdG8gZnJlZXplIG9yIHBydW5lIHRoZSBwYWdlLCB3ZSB3aWxsIG1hcmsKLQkJICogdGhl IGJ1ZmZlciBkaXJ0eSBiZWxvdy4KKwkJICogaGludC4gIElmIHdlIGFyZSBnb2luZyB0byBmcmVl emUgb3IgcHJ1bmUgdGhlIHBhZ2Ugb3Igc2V0CisJCSAqIFBEX0FMTF9WSVNJQkxFLCB3ZSB3aWxs IG1hcmsgdGhlIGJ1ZmZlciBkaXJ0eSBiZWxvdy4KKwkJICoKKwkJICogU2V0dGluZyBQRF9BTExf VklTSUJMRSBpcyBmdWxseSBXQUwtbG9nZ2VkIGJlY2F1c2UgaXQgaXMgZm9yYmlkZGVuCisJCSAq IGZvciB0aGUgVk0gdG8gYmUgc2V0IGFuZCBQRF9BTExfVklTSUJMRSB0byBiZSBjbGVhci4KIAkJ ICovCi0JCWlmICghZG9fZnJlZXplICYmICFkb19wcnVuZSkKKwkJaWYgKCFkb19mcmVlemUgJiYg IWRvX3BydW5lICYmICFkb19zZXRfcGRfdmlzKQogCQkJTWFya0J1ZmZlckRpcnR5SGludChidWZm ZXIsIHRydWUpOwogCX0KIAotCWlmIChkb19wcnVuZSB8fCBkb19mcmVlemUpCisJaWYgKGRvX3By dW5lIHx8IGRvX2ZyZWV6ZSB8fCBkb19zZXRfdm0pCiAJewogCQkvKiBBcHBseSB0aGUgcGxhbm5l ZCBpdGVtIGNoYW5nZXMgYW5kIHJlcGFpciBwYWdlIGZyYWdtZW50YXRpb24uICovCiAJCWlmIChk b19wcnVuZSkKQEAgLTkxOSwzNiArMTEwMiw0MyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQlpZiAoZG9fZnJlZXplKQogCQkJaGVhcF9m cmVlemVfcHJlcGFyZWRfdHVwbGVzKGJ1ZmZlciwgcHJzdGF0ZS5mcm96ZW4sIHByc3RhdGUubmZy b3plbik7CiAKLQkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CisJCWlmIChkb19zZXRfcGRfdmlz KQorCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7CiAKLQkJLyoKLQkJICogRW1pdCBhIFdBTCBY TE9HX0hFQVAyX1BSVU5FKiByZWNvcmQgc2hvd2luZyB3aGF0IHdlIGRpZAotCQkgKi8KLQkJaWYg KFJlbGF0aW9uTmVlZHNXQUwocGFyYW1zLT5yZWxhdGlvbikpCisJCWlmIChkb19wcnVuZSB8fCBk b19mcmVlemUgfHwgZG9fc2V0X3BkX3ZpcykKKwkJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwor CisJCWlmIChkb19zZXRfdm0pCiAJCXsKLQkJCS8qCi0JCQkgKiBUaGUgc25hcHNob3RDb25mbGlj dEhvcml6b24gZm9yIHRoZSB3aG9sZSByZWNvcmQgc2hvdWxkIGJlIHRoZQotCQkJICogbW9zdCBj b25zZXJ2YXRpdmUgb2YgYWxsIHRoZSBob3Jpem9ucyBjYWxjdWxhdGVkIGZvciBhbnkgb2YgdGhl Ci0JCQkgKiBwb3NzaWJsZSBtb2RpZmljYXRpb25zLiAgSWYgdGhpcyByZWNvcmQgd2lsbCBwcnVu ZSB0dXBsZXMsIGFueQotCQkJICogdHJhbnNhY3Rpb25zIG9uIHRoZSBzdGFuZGJ5IG9sZGVyIHRo YW4gdGhlIHlvdW5nZXN0IHhtYXggb2YgdGhlCi0JCQkgKiBtb3N0IHJlY2VudGx5IHJlbW92ZWQg dHVwbGUgdGhpcyByZWNvcmQgd2lsbCBwcnVuZSB3aWxsCi0JCQkgKiBjb25mbGljdC4gIElmIHRo aXMgcmVjb3JkIHdpbGwgZnJlZXplIHR1cGxlcywgYW55IHRyYW5zYWN0aW9ucwotCQkJICogb24g dGhlIHN0YW5kYnkgd2l0aCB4aWRzIG9sZGVyIHRoYW4gdGhlIHlvdW5nZXN0IHR1cGxlIHRoaXMK LQkJCSAqIHJlY29yZCB3aWxsIGZyZWV6ZSB3aWxsIGNvbmZsaWN0LgotCQkJICovCi0JCQlUcmFu c2FjdGlvbklkIGNvbmZsaWN0X3hpZDsKKwkJCUFzc2VydChQYWdlSXNBbGxWaXNpYmxlKHBhZ2Up KTsKIAotCQkJaWYgKFRyYW5zYWN0aW9uSWRGb2xsb3dzKHByc3RhdGUuZnJ6X2NvbmZsaWN0X2hv cml6b24sCi0JCQkJCQkJCQkgcHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQpKQotCQkJCWNvbmZs aWN0X3hpZCA9IHByc3RhdGUuZnJ6X2NvbmZsaWN0X2hvcml6b247Ci0JCQllbHNlCi0JCQkJY29u ZmxpY3RfeGlkID0gcHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQ7CisJCQlvbGRfdm1iaXRzID0g dmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKGJsb2Nrbm8sCisJCQkJCQkJCQkJCQkgIHZtYnVmZmVy LCBuZXdfdm1iaXRzLAorCQkJCQkJCQkJCQkJICBwYXJhbXMtPnJlbGF0aW9uLT5yZF9sb2NhdG9y KTsKKwkJCWlmIChvbGRfdm1iaXRzID09IG5ld192bWJpdHMpCisJCQl7CisJCQkJTG9ja0J1ZmZl cih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKwkJCQkvKiBVbnNldCBzbyB3ZSBkb24n dCBlbWl0IFdBTCBzaW5jZSBubyBjaGFuZ2Ugb2NjdXJyZWQgKi8KKwkJCQlkb19zZXRfdm0gPSBm YWxzZTsKKwkJCX0KKwkJfQogCisJCS8qCisJCSAqIEVtaXQgYSBXQUwgWExPR19IRUFQMl9QUlVO RSogcmVjb3JkIHNob3dpbmcgd2hhdCB3ZSBkaWQuIElmIHdlIHdlcmUKKwkJICogb25seSB1cGRh dGluZyB0aGUgVk0gYW5kIGl0IHR1cm5zIG91dCBpdCB3YXMgYWxyZWFkeSBzZXQsIHdlIHdpbGwK KwkJICogaGF2ZSB1bnNldCBkb19zZXRfdm0gZWFybGllci4gQXMgc3VjaCwgY2hlY2sgaXQgYWdh aW4gYmVmb3JlCisJCSAqIGVtaXR0aW5nIHRoZSByZWNvcmQuCisJCSAqLworCQlpZiAoUmVsYXRp b25OZWVkc1dBTChwYXJhbXMtPnJlbGF0aW9uKSAmJgorCQkJKGRvX3BydW5lIHx8IGRvX2ZyZWV6 ZSB8fCBkb19zZXRfdm0pKQorCQl7CiAJCQlsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKHBhcmFt cy0+cmVsYXRpb24sIGJ1ZmZlciwKLQkJCQkJCQkJCSAgSW52YWxpZEJ1ZmZlciwJLyogdm1idWZm ZXIgKi8KLQkJCQkJCQkJCSAgMCwJLyogdm1mbGFncyAqLworCQkJCQkJCQkJICBkb19zZXRfdm0g PyB2bWJ1ZmZlciA6IEludmFsaWRCdWZmZXIsCisJCQkJCQkJCQkgIGRvX3NldF92bSA/IG5ld192 bWJpdHMgOiAwLAogCQkJCQkJCQkJICBjb25mbGljdF94aWQsCi0JCQkJCQkJCQkgIHRydWUsIHBh cmFtcy0+cmVhc29uLAorCQkJCQkJCQkJICB0cnVlLCAvKiBjbGVhbnVwIGxvY2sgKi8KKwkJCQkJ CQkJCSAgZG9fc2V0X3BkX3ZpcywKKwkJCQkJCQkJCSAgcGFyYW1zLT5yZWFzb24sCiAJCQkJCQkJ CQkgIHByc3RhdGUuZnJvemVuLCBwcnN0YXRlLm5mcm96ZW4sCiAJCQkJCQkJCQkgIHByc3RhdGUu cmVkaXJlY3RlZCwgcHJzdGF0ZS5ucmVkaXJlY3RlZCwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5ub3dk ZWFkLCBwcnN0YXRlLm5kZWFkLApAQCAtOTU4LDI4ICsxMTQ4LDQ3IEBAIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAKIAlFTkRfQ1JJVF9TRUNU SU9OKCk7CiAKKwlpZiAoZG9fc2V0X3ZtKQorCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJf TE9DS19VTkxPQ0spOworCisJLyoKKwkgKiBEdXJpbmcgaXRzIHNlY29uZCBwYXNzIG92ZXIgdGhl IGhlYXAsIFZBQ1VVTSBjYWxscworCSAqIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSgp IHRvIGRldGVybWluZSB3aGV0aGVyIGEgcGFnZSBpcworCSAqIGFsbC12aXNpYmxlIGFuZCBhbGwt ZnJvemVuLiBUaGUgbG9naWMgaGVyZSBpcyBzaW1pbGFyLiBBZnRlciBjb21wbGV0aW5nCisJICog cHJ1bmluZyBhbmQgZnJlZXppbmcsIHVzZSBhbiBhc3NlcnRpb24gdG8gdmVyaWZ5IHRoYXQgb3Vy IHJlc3VsdHMKKwkgKiByZW1haW4gY29uc2lzdGVudCB3aXRoIGhlYXBfcGFnZV93b3VsZF9iZV9h bGxfdmlzaWJsZSgpLgorCSAqLworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlpZiAocHJz dGF0ZS5hbGxfdmlzaWJsZSkKKwl7CisJCVRyYW5zYWN0aW9uSWQgZGVidWdfY3V0b2ZmOworCQli b29sCQlkZWJ1Z19hbGxfZnJvemVuOworCisJCUFzc2VydChwcnN0YXRlLmxwZGVhZF9pdGVtcyA9 PSAwKTsKKwkJQXNzZXJ0KHByc3RhdGUuY3V0b2Zmcyk7CisKKwkJaWYgKCFoZWFwX3BhZ2VfaXNf YWxsX3Zpc2libGUocGFyYW1zLT5yZWxhdGlvbiwgYnVmZmVyLAorCQkJCQkJCQkJICBwcnN0YXRl LmN1dG9mZnMtPk9sZGVzdFhtaW4sCisJCQkJCQkJCQkgICZkZWJ1Z19hbGxfZnJvemVuLAorCQkJ CQkJCQkJICAmZGVidWdfY3V0b2ZmLCBvZmZfbG9jKSkKKwkJCUFzc2VydChmYWxzZSk7CisKKwkJ QXNzZXJ0KHByc3RhdGUuYWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJvemVuKTsKKworCQlBc3Nl cnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYnVnX2N1dG9mZikgfHwKKwkJCSAgIGRlYnVnX2N1 dG9mZiA9PSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCk7CisJfQorI2VuZGlmCisKIAkv KiBDb3B5IGluZm9ybWF0aW9uIGJhY2sgZm9yIGNhbGxlciAqLwogCXByZXN1bHQtPm5kZWxldGVk ID0gcHJzdGF0ZS5uZGVsZXRlZDsKIAlwcmVzdWx0LT5ubmV3bHBkZWFkID0gcHJzdGF0ZS5uZGVh ZDsKIAlwcmVzdWx0LT5uZnJvemVuID0gcHJzdGF0ZS5uZnJvemVuOwogCXByZXN1bHQtPmxpdmVf dHVwbGVzID0gcHJzdGF0ZS5saXZlX3R1cGxlczsKIAlwcmVzdWx0LT5yZWNlbnRseV9kZWFkX3R1 cGxlcyA9IHByc3RhdGUucmVjZW50bHlfZGVhZF90dXBsZXM7Ci0JcHJlc3VsdC0+YWxsX3Zpc2li bGUgPSBwcnN0YXRlLmFsbF92aXNpYmxlOwotCXByZXN1bHQtPmFsbF9mcm96ZW4gPSBwcnN0YXRl LmFsbF9mcm96ZW47CiAJcHJlc3VsdC0+aGFzdHVwID0gcHJzdGF0ZS5oYXN0dXA7Ci0KLQkvKgot CSAqIEZvciBjYWxsZXJzIHBsYW5uaW5nIHRvIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAsIHRo ZSBjb25mbGljdCBob3Jpem9uCi0JICogZm9yIHRoYXQgcmVjb3JkIG11c3QgYmUgdGhlIG5ld2Vz dCB4bWluIG9uIHRoZSBwYWdlLiAgSG93ZXZlciwgaWYgdGhlCi0JICogcGFnZSBpcyBjb21wbGV0 ZWx5IGZyb3plbiwgdGhlcmUgY2FuIGJlIG5vIGNvbmZsaWN0IGFuZCB0aGUKLQkgKiB2bV9jb25m bGljdF9ob3Jpem9uIHNob3VsZCByZW1haW4gSW52YWxpZFRyYW5zYWN0aW9uSWQuICBUaGlzIGlu Y2x1ZGVzCi0JICogdGhlIGNhc2UgdGhhdCB3ZSBqdXN0IGZyb3plIGFsbCB0aGUgdHVwbGVzOyB0 aGUgcHJ1bmUtZnJlZXplIHJlY29yZAotCSAqIGluY2x1ZGVkIHRoZSBjb25mbGljdCBYSUQgYWxy ZWFkeSBzbyB0aGUgY2FsbGVyIGRvZXNuJ3QgbmVlZCBpdC4KLQkgKi8KLQlpZiAocHJlc3VsdC0+ YWxsX2Zyb3plbikKLQkJcHJlc3VsdC0+dm1fY29uZmxpY3RfaG9yaXpvbiA9IEludmFsaWRUcmFu c2FjdGlvbklkOwotCWVsc2UKLQkJcHJlc3VsdC0+dm1fY29uZmxpY3RfaG9yaXpvbiA9IHByc3Rh dGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkOworCXByZXN1bHQtPm5ld192bWJpdHMgPSBuZXdfdm1i aXRzOworCXByZXN1bHQtPm9sZF92bWJpdHMgPSBvbGRfdm1iaXRzOwogCiAJcHJlc3VsdC0+bHBk ZWFkX2l0ZW1zID0gcHJzdGF0ZS5scGRlYWRfaXRlbXM7CiAJLyogdGhlIHByZXN1bHQtPmRlYWRv ZmZzZXRzIGFycmF5IHdhcyBhbHJlYWR5IGZpbGxlZCBpbiAqLwpAQCAtMTQ3MSw2ICsxNjgwLDgg QEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdlIHBhZ2UsIFBydW5l U3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAkJCXsKIAkJCQlUcmFuc2FjdGlvbklkIHhtaW47 CiAKKwkJCQlBc3NlcnQocHJzdGF0ZS0+YXR0ZW1wdF91cGRhdGVfdm0pOworCiAJCQkJaWYgKCFI ZWFwVHVwbGVIZWFkZXJYbWluQ29tbWl0dGVkKGh0dXApKQogCQkJCXsKIAkJCQkJcHJzdGF0ZS0+ YWxsX3Zpc2libGUgPSBmYWxzZTsKQEAgLTIxMjEsNiArMjMzMiw2NSBAQCBoZWFwX2xvZ19mcmVl emVfcGxhbihIZWFwVHVwbGVGcmVlemUgKnR1cGxlcywgaW50IG50dXBsZXMsCiAJcmV0dXJuIG5w bGFuczsKIH0KIAorLyoKKyAqIENhbGN1bGF0ZSB0aGUgY29uZmxpY3QgaG9yaXpvbiBmb3IgdGhl IHdob2xlIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX1NDQU4KKyAqIHJlY29yZC4KKyAqLworc3Rh dGljIFRyYW5zYWN0aW9uSWQKK2dldF9jb25mbGljdF94aWQoYm9vbCBkb19wcnVuZSwgYm9vbCBk b19mcmVlemUsIGJvb2wgZG9fc2V0X3ZtLAorCQkJCSBUcmFuc2FjdGlvbklkIGxhdGVzdF94aWRf cmVtb3ZlZCwgVHJhbnNhY3Rpb25JZCBmcnpfY29uZmxpY3RfaG9yaXpvbiwKKwkJCQkgVHJhbnNh Y3Rpb25JZCB2aXNpYmlsaXR5X2N1dG9mZl94aWQsIGJvb2wgYmxrX2FscmVhZHlfYXYsCisJCQkJ IGJvb2wgc2V0X2Jsa19hbGxfZnJvemVuKQoreworCVRyYW5zYWN0aW9uSWQgY29uZmxpY3RfeGlk OworCisJLyoKKwkgKiBXZSBjYW4gb21pdCB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiBp ZiB3ZSBhcmUgbm90IHBydW5pbmcgb3IKKwkgKiBmcmVlemluZyBhbnkgdHVwbGVzIGFuZCBhcmUg c2V0dGluZyBhbiBhbHJlYWR5IGFsbC12aXNpYmxlIHBhZ2UKKwkgKiBhbGwtZnJvemVuIGluIHRo ZSBWTS4gSW4gdGhpcyBjYXNlLCBhbGwgb2YgdGhlIHR1cGxlcyBvbiB0aGUgcGFnZSBtdXN0CisJ ICogYWxyZWFkeSBiZSB2aXNpYmxlIHRvIGFsbCBNVkNDIHNuYXBzaG90cyBvbiB0aGUgc3RhbmRi eS4KKwkgKi8KKwlpZiAoIWRvX3BydW5lICYmICFkb19mcmVlemUgJiYKKwkJZG9fc2V0X3ZtICYm IGJsa19hbHJlYWR5X2F2ICYmIHNldF9ibGtfYWxsX2Zyb3plbikKKwkJcmV0dXJuIEludmFsaWRU cmFuc2FjdGlvbklkOworCisJLyoKKwkgKiBUaGUgc25hcHNob3RDb25mbGljdEhvcml6b24gZm9y IHRoZSB3aG9sZSByZWNvcmQgc2hvdWxkIGJlIHRoZSBtb3N0CisJICogY29uc2VydmF0aXZlIG9m IGFsbCB0aGUgaG9yaXpvbnMgY2FsY3VsYXRlZCBmb3IgYW55IG9mIHRoZSBwb3NzaWJsZQorCSAq IG1vZGlmaWNhdGlvbnMuICBJZiB0aGlzIHJlY29yZCB3aWxsIHBydW5lIHR1cGxlcywgYW55IHRy YW5zYWN0aW9ucyBvbgorCSAqIHRoZSBzdGFuZGJ5IG9sZGVyIHRoYW4gdGhlIHlvdW5nZXN0IHht YXggb2YgdGhlIG1vc3QgcmVjZW50bHkgcmVtb3ZlZAorCSAqIHR1cGxlIHRoaXMgcmVjb3JkIHdp bGwgcHJ1bmUgd2lsbCBjb25mbGljdC4gIElmIHRoaXMgcmVjb3JkIHdpbGwgZnJlZXplCisJICog dHVwbGVzLCBhbnkgdHJhbnNhY3Rpb25zIG9uIHRoZSBzdGFuZGJ5IHdpdGggeGlkcyBvbGRlciB0 aGFuIHRoZQorCSAqIHlvdW5nZXN0IHR1cGxlIHRoaXMgcmVjb3JkIHdpbGwgZnJlZXplIHdpbGwg Y29uZmxpY3QuCisJICovCisJY29uZmxpY3RfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisK KwkvKgorCSAqIElmIHdlIGFyZSB1cGRhdGluZyB0aGUgVk0sIHRoZSBjb25mbGljdCBob3Jpem9u IGlzIGFsbW9zdCBhbHdheXMgdGhlCisJICogdmlzaWJpbGl0eSBjdXRvZmYgWElELgorCSAqCisJ ICogU2VwYXJhdGVseSwgaWYgd2UgYXJlIGZyZWV6aW5nIGFueSB0dXBsZXMsIGFzIGFuIG9wdGlt aXphdGlvbiwgd2UgY2FuCisJICogdXNlIHRoZSB2aXNpYmlsaXR5X2N1dG9mZl94aWQgYXMgdGhl IGNvbmZsaWN0IGhvcml6b24gaWYgdGhlIHBhZ2Ugd2lsbAorCSAqIGJlIGFsbC1mcm96ZW4uIFRo aXMgaXMgdHJ1ZSBldmVuIGlmIHRoZXJlIGFyZSBMUF9ERUFEIGxpbmUgcG9pbnRlcnMKKwkgKiBi ZWNhdXNlIHdlIGlnbm9yZWQgdGhvc2Ugd2hlbiBtYWludGFpbmluZyB0aGUgdmlzaWJpbGl0eV9j dXRvZmZfeGlkLgorCSAqIFRoaXMgd2lsbCBoYXZlIGJlZW4gY2FsY3VsYXRlZCBlYXJsaWVyIGFz IHRoZSBmcnpfY29uZmxpY3RfaG9yaXpvbiB3aGVuCisJICogd2UgZGV0ZXJtaW5lZCB3ZSB3b3Vs ZCBmcmVlemUuCisJICovCisJaWYgKGRvX3NldF92bSkKKwkJY29uZmxpY3RfeGlkID0gdmlzaWJp bGl0eV9jdXRvZmZfeGlkOworCWVsc2UgaWYgKGRvX2ZyZWV6ZSkKKwkJY29uZmxpY3RfeGlkID0g ZnJ6X2NvbmZsaWN0X2hvcml6b247CisKKwkvKgorCSAqIElmIHdlIGFyZSByZW1vdmluZyB0dXBs ZXMgd2l0aCBhIHlvdW5nZXIgeG1heCB0aGFuIG91ciBzbyBmYXIKKwkgKiBjYWxjdWxhdGVkIGNv bmZsaWN0X3hpZCwgd2UgbXVzdCB1c2UgdGhpcyBhcyBvdXIgaG9yaXpvbi4KKwkgKi8KKwlpZiAo VHJhbnNhY3Rpb25JZEZvbGxvd3MobGF0ZXN0X3hpZF9yZW1vdmVkLCBjb25mbGljdF94aWQpKQor CQljb25mbGljdF94aWQgPSBsYXRlc3RfeGlkX3JlbW92ZWQ7CisKKwlyZXR1cm4gY29uZmxpY3Rf eGlkOworfQorCiAvKgogICogV3JpdGUgYW4gWExPR19IRUFQMl9QUlVORSogV0FMIHJlY29yZAog ICoKQEAgLTIxNDUsNiArMjQxNSwxNSBAQCBoZWFwX2xvZ19mcmVlemVfcGxhbihIZWFwVHVwbGVG cmVlemUgKnR1cGxlcywgaW50IG50dXBsZXMsCiAgKiBjYXNlLCB2bWJ1ZmZlciBzaG91bGQgYWxy ZWFkeSBoYXZlIGJlZW4gdXBkYXRlZCBhbmQgbWFya2VkIGRpcnR5IGFuZCBzaG91bGQKICAqIHN0 aWxsIGJlIHBpbm5lZCBhbmQgbG9ja2VkLgogICoKKyAqIHNldF9wZF9hbGxfdmlzIGluZGljYXRl cyB0aGF0IHdlIHNldCBQRF9BTExfVklTSUJMRSBhbmQgdGh1cyBzaG91bGQgdXBkYXRlCisgKiB0 aGUgcGFnZSBMU04gd2hlbiBjaGVja3N1bXMvd2FsX2xvZ19oaW50cyBhcmUgZW5hYmxlZCBldmVu IGlmIHdlIGRpZCBub3QKKyAqIHBydW5lIG9yIGZyZWV6ZSB0dXBsZXMgb24gdGhlIHBhZ2UuCisg KgorICogSW4gc29tZSBjYXNlcywgc3VjaCBhcyB3aGVuIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKCkgaXMgc2V0dGluZyBhbgorICogYWxyZWFkeSBtYXJrZWQgYWxsLXZpc2libGUgcGFnZSBh bGwtZnJvemVuLCBQRF9BTExfVklTSUJMRSBtYXkgYWxyZWFkeSBiZQorICogc2V0LiBTbywgaXQg aXMgcG9zc2libGUgZm9yIHZtZmxhZ3MgdG8gYmUgbm9uLXplcm8gYW5kIHNldF9wZF9hbGxfdmlz IHRvIGJlCisgKiBmYWxzZS4KKyAqCiAgKiBOb3RlOiBUaGlzIGZ1bmN0aW9uIHNjcmliYmxlcyBv biB0aGUgJ2Zyb3plbicgYXJyYXkuCiAgKgogICogTm90ZTogVGhpcyBpcyBjYWxsZWQgaW4gYSBj cml0aWNhbCBzZWN0aW9uLCBzbyBjYXJlZnVsIHdoYXQgeW91IGRvIGhlcmUuCkBAIC0yMTU0LDYg KzI0MzMsNyBAQCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBC dWZmZXIgYnVmZmVyLAogCQkJCQkJICBCdWZmZXIgdm1idWZmZXIsIHVpbnQ4IHZtZmxhZ3MsCiAJ CQkJCQkgIFRyYW5zYWN0aW9uSWQgY29uZmxpY3RfeGlkLAogCQkJCQkJICBib29sIGNsZWFudXBf bG9jaywKKwkJCQkJCSAgYm9vbCBzZXRfcGRfYWxsX3ZpcywKIAkJCQkJCSAgUHJ1bmVSZWFzb24g cmVhc29uLAogCQkJCQkJICBIZWFwVHVwbGVGcmVlemUgKmZyb3plbiwgaW50IG5mcm96ZW4sCiAJ CQkJCQkgIE9mZnNldE51bWJlciAqcmVkaXJlY3RlZCwgaW50IG5yZWRpcmVjdGVkLApAQCAtMjE5 MCw3ICsyNDcwLDcgQEAgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlv biwgQnVmZmVyIGJ1ZmZlciwKIAkgKi8KIAlpZiAoIWRvX3BydW5lICYmCiAJCW5mcm96ZW4gPT0g MCAmJgotCQkoIWRvX3NldF92bSB8fCAhWExvZ0hpbnRCaXRJc05lZWRlZCgpKSkKKwkJKCFzZXRf cGRfYWxsX3ZpcyB8fCAhWExvZ0hpbnRCaXRJc05lZWRlZCgpKSkKIAkJcmVnYnVmX2ZsYWdzX2hl YXAgfD0gUkVHQlVGX05PX0lNQUdFOwogCiAJLyoKQEAgLTIzMDgsNyArMjU4OCw4IEBAIGxvZ19o ZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJ ICogU2VlIGNvbW1lbnQgYXQgdGhlIHRvcCBvZiB0aGUgZnVuY3Rpb24gYWJvdXQgcmVnYnVmX2Zs YWdzX2hlYXAgZm9yCiAJICogZGV0YWlscyBvbiB3aGVuIHdlIGNhbiBhZHZhbmNlIHRoZSBwYWdl IExTTi4KIAkgKi8KLQlpZiAoZG9fcHJ1bmUgfHwgbmZyb3plbiA+IDAgfHwgKGRvX3NldF92bSAm JiBYTG9nSGludEJpdElzTmVlZGVkKCkpKQorCWlmIChkb19wcnVuZSB8fCBuZnJvemVuID4gMCB8 fAorCQkoc2V0X3BkX2FsbF92aXMgJiYgWExvZ0hpbnRCaXRJc05lZWRlZCgpKSkKIAl7CiAJCUFz c2VydChCdWZmZXJJc0RpcnR5KGJ1ZmZlcikpOwogCQlQYWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2Uo YnVmZmVyKSwgcmVjcHRyKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zh Y3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCBl MWI3NDU2ODIzZC4uYTdhOTc0YjY2MzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMKQEAgLTQ2NCwyMCArNDY0LDYgQEAgc3RhdGljIHZvaWQgZGVhZF9pdGVtc19hZGQoTFZSZWxT dGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgT2Zmc2V0TnVtYmVyICoKIHN0YXRpYyB2 b2lkIGRlYWRfaXRlbXNfcmVzZXQoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRpYyB2b2lkIGRl YWRfaXRlbXNfY2xlYW51cChMVlJlbFN0YXRlICp2YWNyZWwpOwogCi0jaWZkZWYgVVNFX0FTU0VS VF9DSEVDS0lORwotc3RhdGljIGJvb2wgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9u IHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCi0J CQkJCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwKLQkJCQkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNp YmlsaXR5X2N1dG9mZl94aWQsCi0JCQkJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51 bSk7Ci0jZW5kaWYKLXN0YXRpYyBib29sIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShS ZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCi0JCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBPbGRl c3RYbWluLAotCQkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqZGVhZG9mZnNldHMsCi0JCQkJCQkJ CQkJICAgaW50IG5kZWFkb2Zmc2V0cywKLQkJCQkJCQkJCQkgICBib29sICphbGxfZnJvemVuLAot CQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKLQkJCQkJ CQkJCQkgICBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKIHN0YXRpYyB2b2lkIHVwZGF0 ZV9yZWxzdGF0c19hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIHZvaWQg dmFjdXVtX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CiBzdGF0aWMgdm9pZCB1cGRhdGVfdmFj dXVtX2Vycm9yX2luZm8oTFZSZWxTdGF0ZSAqdmFjcmVsLApAQCAtMTk2Niw3ICsxOTUyLDkgQEAg bGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAlSZWxhdGlvbglyZWwgPSB2YWNy ZWwtPnJlbDsKIAlQcnVuZUZyZWV6ZVJlc3VsdCBwcmVzdWx0OwogCVBydW5lRnJlZXplUGFyYW1z IHBhcmFtcyA9IHsucmVsYXRpb24gPSByZWwsLmJ1ZmZlciA9IGJ1ZiwKLQkJLnJlYXNvbiA9IFBS VU5FX1ZBQ1VVTV9TQ0FOLC5vcHRpb25zID0gSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSwKKwkJLnZt YnVmZmVyID0gdm1idWZmZXIsLmJsa19rbm93bl9hdiA9IGFsbF92aXNpYmxlX2FjY29yZGluZ190 b192bSwKKwkJLnJlYXNvbiA9IFBSVU5FX1ZBQ1VVTV9TQ0FOLAorCQkub3B0aW9ucyA9IEhFQVBf UEFHRV9QUlVORV9GUkVFWkUgfCBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZJUywKIAkJLmN1dG9m ZnMgPSAmdmFjcmVsLT5jdXRvZmZzLC52aXN0ZXN0ID0gdmFjcmVsLT52aXN0ZXN0CiAJfTsKIApA QCAtMjAwOSwzMyArMTk5Nyw2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWws CiAJCXZhY3JlbC0+bmV3X2Zyb3plbl90dXBsZV9wYWdlcysrOwogCX0KIAotCS8qCi0JICogVkFD VVVNIHdpbGwgY2FsbCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoKSBkdXJpbmcgdGhlIHNlY29u ZCBwYXNzIG92ZXIKLQkgKiB0aGUgaGVhcCB0byBkZXRlcm1pbmUgYWxsX3Zpc2libGUgYW5kIGFs bF9mcm96ZW4gZm9yIHRoZSBwYWdlIC0tIHRoaXMKLQkgKiBpcyBhIHNwZWNpYWxpemVkIHZlcnNp b24gb2YgdGhlIGxvZ2ljIGZyb20gdGhpcyBmdW5jdGlvbi4gIE5vdyB0aGF0Ci0JICogd2UndmUg ZmluaXNoZWQgcHJ1bmluZyBhbmQgZnJlZXppbmcsIG1ha2Ugc3VyZSB0aGF0IHdlJ3JlIGluIHRv dGFsCi0JICogYWdyZWVtZW50IHdpdGggaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKCkgdXNpbmcg YW4gYXNzZXJ0aW9uLgotCSAqLwotI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKLQlpZiAocHJl c3VsdC5hbGxfdmlzaWJsZSkKLQl7Ci0JCVRyYW5zYWN0aW9uSWQgZGVidWdfY3V0b2ZmOwotCQli b29sCQlkZWJ1Z19hbGxfZnJvemVuOwotCi0JCUFzc2VydChwcmVzdWx0LmxwZGVhZF9pdGVtcyA9 PSAwKTsKLQotCQlpZiAoIWhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSh2YWNyZWwtPnJlbCwgYnVm LAotCQkJCQkJCQkJICB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwgJmRlYnVnX2FsbF9mcm96 ZW4sCi0JCQkJCQkJCQkgICZkZWJ1Z19jdXRvZmYsICZ2YWNyZWwtPm9mZm51bSkpCi0JCQlBc3Nl cnQoZmFsc2UpOwotCi0JCUFzc2VydChwcmVzdWx0LmFsbF9mcm96ZW4gPT0gZGVidWdfYWxsX2Zy b3plbik7Ci0KLQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChkZWJ1Z19jdXRvZmYpIHx8 Ci0JCQkgICBkZWJ1Z19jdXRvZmYgPT0gcHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uKTsKLQl9 Ci0jZW5kaWYKLQogCS8qCiAJICogTm93IHNhdmUgZGV0YWlscyBvZiB0aGUgTFBfREVBRCBpdGVt cyBmcm9tIHRoZSBwYWdlIGluIHZhY3JlbAogCSAqLwpAQCAtMjA2OSwxNjggKzIwMzAsMjYgQEAg bGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkvKiBEaWQgd2UgZmluZCBMUF9E RUFEIGl0ZW1zPyAqLwogCSpoYXNfbHBkZWFkX2l0ZW1zID0gKHByZXN1bHQubHBkZWFkX2l0ZW1z ID4gMCk7CiAKLQlBc3NlcnQoIXByZXN1bHQuYWxsX3Zpc2libGUgfHwgISgqaGFzX2xwZGVhZF9p dGVtcykpOwotCUFzc2VydCghcHJlc3VsdC5hbGxfZnJvemVuIHx8IHByZXN1bHQuYWxsX3Zpc2li bGUpOwotCiAJLyoKLQkgKiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQg b24gaW5mb3JtYXRpb24gZnJvbSB0aGUgVk0gKGFzCi0JICogb2YgbGFzdCBoZWFwX3ZhY19zY2Fu X25leHRfYmxvY2soKSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCi0JICogYWxsX2Zy b3plbiB2YXJpYWJsZXMKKwkgKiBGb3IgdGhlIHB1cnBvc2VzIG9mIGxvZ2dpbmcsIGNvdW50IHdo ZXRoZXIgb3Igbm90IHRoZSBwYWdlIHdhcyBuZXdseQorCSAqIHNldCBhbGwtdmlzaWJsZSBhbmQs IHBvdGVudGlhbGx5LCBhbGwtZnJvemVuLgogCSAqLwotCWlmICghYWxsX3Zpc2libGVfYWNjb3Jk aW5nX3RvX3ZtICYmIHByZXN1bHQuYWxsX3Zpc2libGUpCisJaWYgKChwcmVzdWx0Lm9sZF92bWJp dHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSA9PSAwICYmCisJCShwcmVzdWx0Lm5ld192 bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSAhPSAwKQogCXsKLQkJdWludDgJCW9s ZF92bWJpdHM7Ci0JCXVpbnQ4CQlmbGFncyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7Ci0K LQkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKLQkJewotCQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklk SXNWYWxpZChwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24pKTsKLQkJCWZsYWdzIHw9IFZJU0lC SUxJVFlNQVBfQUxMX0ZST1pFTjsKLQkJfQotCi0JCS8qCi0JCSAqIEl0IHNob3VsZCBuZXZlciBi ZSB0aGUgY2FzZSB0aGF0IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlzIHNldAotCQkgKiB3aGls ZSB0aGUgcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIsIGJ1dCB0aGUgcmV2ZXJzZSBpcyBhbGxvd2Vk IChpZgotCQkgKiBjaGVja3N1bXMgYXJlIG5vdCBlbmFibGVkKS4gIFJlZ2FyZGxlc3MsIHNldCBi b3RoIGJpdHMgc28gdGhhdCB3ZQotCQkgKiBnZXQgYmFjayBpbiBzeW5jLgotCQkgKgotCQkgKiBO QjogSWYgdGhlIGhlYXAgcGFnZSBpcyBhbGwtdmlzaWJsZSBidXQgdGhlIFZNIGJpdCBpcyBub3Qg c2V0LCB3ZQotCQkgKiBkb24ndCBuZWVkIHRvIGRpcnR5IHRoZSBoZWFwIHBhZ2UuICBIb3dldmVy LCBpZiBjaGVja3N1bXMgYXJlCi0JCSAqIGVuYWJsZWQsIHdlIGRvIG5lZWQgdG8gbWFrZSBzdXJl IHRoYXQgdGhlIGhlYXAgcGFnZSBpcyBkaXJ0aWVkCi0JCSAqIGJlZm9yZSBwYXNzaW5nIGl0IHRv IHZpc2liaWxpdHltYXBfc2V0KCksIGJlY2F1c2UgaXQgbWF5IGJlIGxvZ2dlZC4KLQkJICogR2l2 ZW4gdGhhdCB0aGlzIHNpdHVhdGlvbiBzaG91bGQgb25seSBoYXBwZW4gaW4gcmFyZSBjYXNlcyBh ZnRlciBhCi0JCSAqIGNyYXNoLCBpdCBpcyBub3Qgd29ydGggb3B0aW1pemluZy4KLQkJICovCi0J CVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQlNYXJrQnVmZmVyRGlydHkoYnVmKTsKLQkJb2xk X3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0KHZhY3JlbC0+cmVsLCBibGtubywgYnVmLAotCQkJ CQkJCQkJICAgSW52YWxpZFhMb2dSZWNQdHIsCi0JCQkJCQkJCQkgICB2bWJ1ZmZlciwgcHJlc3Vs dC52bV9jb25mbGljdF9ob3Jpem9uLAotCQkJCQkJCQkJICAgZmxhZ3MpOwotCi0JCS8qCi0JCSAq IElmIHRoZSBwYWdlIHdhc24ndCBhbHJlYWR5IHNldCBhbGwtdmlzaWJsZSBhbmQvb3IgYWxsLWZy b3plbiBpbiB0aGUKLQkJICogVk0sIGNvdW50IGl0IGFzIG5ld2x5IHNldCBmb3IgbG9nZ2luZy4K LQkJICovCi0JCWlmICgob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpID09 IDApCi0JCXsKLQkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfcGFnZXMrKzsKLQkJCWlmIChwcmVz dWx0LmFsbF9mcm96ZW4pCi0JCQl7Ci0JCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9mcm96ZW5f cGFnZXMrKzsKLQkJCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVlOwotCQkJfQotCQl9Ci0JCWVsc2Ug aWYgKChvbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSA9PSAwICYmCi0JCQkJ IHByZXN1bHQuYWxsX2Zyb3plbikKKwkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9wYWdlcysrOwor CQlpZiAoKHByZXN1bHQubmV3X3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikgIT0g MCkKIAkJewotCQkJdmFjcmVsLT52bV9uZXdfZnJvemVuX3BhZ2VzKys7CisJCQl2YWNyZWwtPnZt X25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwogCQkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsK IAkJfQogCX0KLQotCS8qCi0JICogQXMgb2YgUG9zdGdyZVNRTCA5LjIsIHRoZSB2aXNpYmlsaXR5 IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBpZiB0aGUKLQkgKiBwYWdlLWxldmVsIGJpdCBp cyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgYml0IGdvdAotCSAqIGNs ZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNhbGxlZCwgc28gd2Ug bXVzdCByZWNoZWNrCi0JICogd2l0aCBidWZmZXIgbG9jayBiZWZvcmUgY29uY2x1ZGluZyB0aGF0 IHRoZSBWTSBpcyBjb3JydXB0LgotCSAqLwotCWVsc2UgaWYgKGFsbF92aXNpYmxlX2FjY29yZGlu Z190b192bSAmJiAhUGFnZUlzQWxsVmlzaWJsZShwYWdlKSAmJgotCQkJIHZpc2liaWxpdHltYXBf Z2V0X3N0YXR1cyh2YWNyZWwtPnJlbCwgYmxrbm8sICZ2bWJ1ZmZlcikgIT0gMCkKLQl7Ci0JCWVy ZXBvcnQoV0FSTklORywKLQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKLQkJ CQkgZXJybXNnKCJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2libGUgYnV0IHZpc2liaWxpdHkg bWFwIGJpdCBpcyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAotCQkJCQkJdmFjcmVs LT5yZWxuYW1lLCBibGtubykpKTsKLQotCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHZhY3JlbC0+cmVs LCBibGtubywgdm1idWZmZXIsCi0JCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKLQl9 Ci0KLQkvKgotCSAqIEl0J3MgcG9zc2libGUgZm9yIHRoZSB2YWx1ZSByZXR1cm5lZCBieQotCSAq IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSB0byBtb3ZlIGJhY2t3YXJkcywg c28gaXQncyBub3QKLQkgKiB3cm9uZyBmb3IgdXMgdG8gc2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0 byBub3QgYmUgdmlzaWJsZSB0byBldmVyeW9uZQotCSAqIHlldCwgd2hpbGUgUERfQUxMX1ZJU0lC TEUgaXMgYWxyZWFkeSBzZXQuIFRoZSByZWFsIHNhZmUgeG1pbiB2YWx1ZQotCSAqIG5ldmVyIG1v dmVzIGJhY2t3YXJkcywgYnV0IEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSBp cwotCSAqIGNvbnNlcnZhdGl2ZSBhbmQgc29tZXRpbWVzIHJldHVybnMgYSB2YWx1ZSB0aGF0J3Mg dW5uZWNlc3NhcmlseSBzbWFsbCwKLQkgKiBzbyBpZiB3ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9u IGl0IGp1c3QgbWVhbnMgdGhhdCB0aGUgdHVwbGVzIHRoYXQgd2UKLQkgKiB0aGluayBhcmUgbm90 IHZpc2libGUgdG8gZXZlcnlvbmUgeWV0IGFjdHVhbGx5IGFyZSwgYW5kIHRoZQotCSAqIFBEX0FM TF9WSVNJQkxFIGZsYWcgaXMgY29ycmVjdC4KLQkgKgotCSAqIFRoZXJlIHNob3VsZCBuZXZlciBi ZSBMUF9ERUFEIGl0ZW1zIG9uIGEgcGFnZSB3aXRoIFBEX0FMTF9WSVNJQkxFIHNldCwKLQkgKiBo b3dldmVyLgotCSAqLwotCWVsc2UgaWYgKHByZXN1bHQubHBkZWFkX2l0ZW1zID4gMCAmJiBQYWdl SXNBbGxWaXNpYmxlKHBhZ2UpKQotCXsKLQkJZXJlcG9ydChXQVJOSU5HLAotCQkJCShlcnJjb2Rl KEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAotCQkJCSBlcnJtc2coInBhZ2UgY29udGFpbmluZyBM UF9ERUFEIGl0ZW1zIGlzIG1hcmtlZCBhcyBhbGwtdmlzaWJsZSBpbiByZWxhdGlvbiBcIiVzXCIg cGFnZSAldSIsCi0JCQkJCQl2YWNyZWwtPnJlbG5hbWUsIGJsa25vKSkpOwotCi0JCVBhZ2VDbGVh ckFsbFZpc2libGUocGFnZSk7Ci0JCU1hcmtCdWZmZXJEaXJ0eShidWYpOwotCQl2aXNpYmlsaXR5 bWFwX2NsZWFyKHZhY3JlbC0+cmVsLCBibGtubywgdm1idWZmZXIsCi0JCQkJCQkJVklTSUJJTElU WU1BUF9WQUxJRF9CSVRTKTsKLQl9Ci0KLQkvKgotCSAqIElmIHRoZSBhbGwtdmlzaWJsZSBwYWdl IGlzIGFsbC1mcm96ZW4gYnV0IG5vdCBtYXJrZWQgYXMgc3VjaCB5ZXQsIG1hcmsKLQkgKiBpdCBh cyBhbGwtZnJvemVuLgotCSAqLwotCWVsc2UgaWYgKGFsbF92aXNpYmxlX2FjY29yZGluZ190b192 bSAmJiBwcmVzdWx0LmFsbF9mcm96ZW4gJiYKLQkJCSAhVk1fQUxMX0ZST1pFTih2YWNyZWwtPnJl bCwgYmxrbm8sICZ2bWJ1ZmZlcikpCisJZWxzZSBpZiAoKHByZXN1bHQub2xkX3ZtYml0cyAmIFZJ U0lCSUxJVFlNQVBfQUxMX0ZST1pFTikgPT0gMCAmJgorCQkJIChwcmVzdWx0Lm5ld192bWJpdHMg JiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pICE9IDApCiAJewotCQl1aW50OAkJb2xkX3ZtYml0 czsKLQotCQkvKgotCQkgKiBBdm9pZCByZWx5aW5nIG9uIGFsbF92aXNpYmxlX2FjY29yZGluZ190 b192bSBhcyBhIHByb3h5IGZvciB0aGUKLQkJICogcGFnZS1sZXZlbCBQRF9BTExfVklTSUJMRSBi aXQgYmVpbmcgc2V0LCBzaW5jZSBpdCBtaWdodCBoYXZlIGJlY29tZQotCQkgKiBzdGFsZSAtLSBl dmVuIHdoZW4gYWxsX3Zpc2libGUgaXMgc2V0Ci0JCSAqLwotCQlpZiAoIVBhZ2VJc0FsbFZpc2li bGUocGFnZSkpCi0JCXsKLQkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJTWFya0J1ZmZl ckRpcnR5KGJ1Zik7Ci0JCX0KLQotCQkvKgotCQkgKiBTZXQgdGhlIHBhZ2UgYWxsLWZyb3plbiAo YW5kIGFsbC12aXNpYmxlKSBpbiB0aGUgVk0uCi0JCSAqCi0JCSAqIFdlIGNhbiBwYXNzIEludmFs aWRUcmFuc2FjdGlvbklkIGFzIG91ciBjdXRvZmZfeGlkLCBzaW5jZSBhCi0JCSAqIHNuYXBzaG90 Q29uZmxpY3RIb3Jpem9uIHN1ZmZpY2llbnQgdG8gbWFrZSBldmVyeXRoaW5nIHNhZmUgZm9yIFJF RE8KLQkJICogd2FzIGxvZ2dlZCB3aGVuIHRoZSBwYWdlJ3MgdHVwbGVzIHdlcmUgZnJvemVuLgot CQkgKi8KLQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChwcmVzdWx0LnZtX2NvbmZsaWN0 X2hvcml6b24pKTsKLQkJb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0KHZhY3JlbC0+cmVs LCBibGtubywgYnVmLAotCQkJCQkJCQkJICAgSW52YWxpZFhMb2dSZWNQdHIsCi0JCQkJCQkJCQkg ICB2bWJ1ZmZlciwgSW52YWxpZFRyYW5zYWN0aW9uSWQsCi0JCQkJCQkJCQkgICBWSVNJQklMSVRZ TUFQX0FMTF9WSVNJQkxFIHwKLQkJCQkJCQkJCSAgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7 Ci0KLQkJLyoKLQkJICogVGhlIHBhZ2Ugd2FzIGxpa2VseSBhbHJlYWR5IHNldCBhbGwtdmlzaWJs ZSBpbiB0aGUgVk0uIEhvd2V2ZXIsCi0JCSAqIHRoZXJlIGlzIGEgc21hbGwgY2hhbmNlIHRoYXQg aXQgd2FzIG1vZGlmaWVkIHNvbWV0aW1lIGJldHdlZW4KLQkJICogc2V0dGluZyBhbGxfdmlzaWJs ZV9hY2NvcmRpbmdfdG9fdm0gYW5kIGNoZWNraW5nIHRoZSB2aXNpYmlsaXR5Ci0JCSAqIGR1cmlu ZyBwcnVuaW5nLiBDaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIG9sZF92bWJpdHMgYW55d2F5IHRv Ci0JCSAqIGVuc3VyZSB0aGUgdmlzaWJpbGl0eSBtYXAgY291bnRlcnMgdXNlZCBmb3IgbG9nZ2lu ZyBhcmUgYWNjdXJhdGUuCi0JCSAqLwotCQlpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQ X0FMTF9WSVNJQkxFKSA9PSAwKQotCQl7Ci0JCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2Vz Kys7Ci0JCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwotCQkJKnZtX3Bh Z2VfZnJvemVuID0gdHJ1ZTsKLQkJfQotCi0JCS8qCi0JCSAqIFdlIGFscmVhZHkgY2hlY2tlZCB0 aGF0IHRoZSBwYWdlIHdhcyBub3Qgc2V0IGFsbC1mcm96ZW4gaW4gdGhlIFZNCi0JCSAqIGFib3Zl LCBzbyB3ZSBkb24ndCBuZWVkIHRvIHRlc3QgdGhlIHZhbHVlIG9mIG9sZF92bWJpdHMuCi0JCSAq LwotCQllbHNlCi0JCXsKLQkJCXZhY3JlbC0+dm1fbmV3X2Zyb3plbl9wYWdlcysrOwotCQkJKnZt X3BhZ2VfZnJvemVuID0gdHJ1ZTsKLQkJfQorCQlBc3NlcnQoKHByZXN1bHQubmV3X3ZtYml0cyAm IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpICE9IDApOworCQl2YWNyZWwtPnZtX25ld19mcm96 ZW5fcGFnZXMrKzsKKwkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKIAl9CiAKIAlyZXR1cm4gcHJl c3VsdC5uZGVsZXRlZDsKQEAgLTI5NTIsNiArMjc3MSw3IEBAIGxhenlfdmFjdXVtX2hlYXBfcGFn ZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBCdWZmZXIgYnVmZmVyLAog CQkJCQkJCQkgIHZtZmxhZ3MsCiAJCQkJCQkJCSAgY29uZmxpY3RfeGlkLAogCQkJCQkJCQkgIGZh bHNlLAkvKiBubyBjbGVhbnVwIGxvY2sgcmVxdWlyZWQgKi8KKwkJCQkJCQkJICAodm1mbGFncyAm IFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykgIT0gMCwKIAkJCQkJCQkJICBQUlVORV9WQUNVVU1f Q0xFQU5VUCwKIAkJCQkJCQkJICBOVUxMLCAwLAkvKiBmcm96ZW4gKi8KIAkJCQkJCQkJICBOVUxM LCAwLAkvKiByZWRpcmVjdGVkICovCkBAIC0zNjMyLDMwICszNDUyLDYgQEAgZGVhZF9pdGVtc19j bGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCkKIAl2YWNyZWwtPnB2cyA9IE5VTEw7CiB9CiAKLSNp ZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCi0KLS8qCi0gKiBXcmFwcGVyIGZvciBoZWFwX3BhZ2Vf d291bGRfYmVfYWxsX3Zpc2libGUoKSB3aGljaCBjYW4gYmUgdXNlZCBmb3IgY2FsbGVycwotICog dGhhdCBleHBlY3Qgbm8gTFBfREVBRCBvbiB0aGUgcGFnZS4gQ3VycmVudGx5IGFzc2VydC1vbmx5 LCBidXQgdGhlcmUgaXMgbm8KLSAqIHJlYXNvbiBub3QgdG8gdXNlIGl0IG91dHNpZGUgb2YgYXNz ZXJ0cy4KLSAqLwotc3RhdGljIGJvb2wKLWhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlv biByZWwsIEJ1ZmZlciBidWYsCi0JCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAotCQkJ CQkJIGJvb2wgKmFsbF9mcm96ZW4sCi0JCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9j dXRvZmZfeGlkLAotCQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pCi17Ci0KLQly ZXR1cm4gaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKHJlbCwgYnVmLAotCQkJCQkJCQkJ CSAgT2xkZXN0WG1pbiwKLQkJCQkJCQkJCQkgIE5VTEwsIDAsCi0JCQkJCQkJCQkJICBhbGxfZnJv emVuLAotCQkJCQkJCQkJCSAgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAotCQkJCQkJCQkJCSAgbG9n Z2luZ19vZmZudW0pOwotfQotI2VuZGlmCi0KIC8qCiAgKiBDaGVjayB3aGV0aGVyIHRoZSBoZWFw IHBhZ2UgaW4gYnVmIGlzIGFsbC12aXNpYmxlIGV4Y2VwdCBmb3IgdGhlIGRlYWQKICAqIHR1cGxl cyByZWZlcmVuY2VkIGluIHRoZSBkZWFkb2Zmc2V0cyBhcnJheS4KQEAgLTM2NzgsMTUgKzM0NzQs MTIgQEAgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwK ICAqICAtICpsb2dnaW5nX29mZm51bTogT2Zmc2V0TnVtYmVyIG9mIGN1cnJlbnQgdHVwbGUgYmVp bmcgcHJvY2Vzc2VkOwogICogICAgIHVzZWQgYnkgdmFjdXVtJ3MgZXJyb3IgY2FsbGJhY2sgc3lz dGVtLgogICoKLSAqIENhbGxlcnMgbG9va2luZyB0byB2ZXJpZnkgdGhhdCB0aGUgcGFnZSBpcyBh bHJlYWR5IGFsbC12aXNpYmxlIGNhbiBjYWxsCi0gKiBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUo KS4KLSAqCiAgKiBUaGlzIGxvZ2ljIGlzIGNsb3NlbHkgcmVsYXRlZCB0byBoZWFwX3BydW5lX3Jl Y29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKCkuCiAgKiBJZiB5b3UgbW9kaWZ5IHRoaXMgZnVuY3Rp b24sIGVuc3VyZSBjb25zaXN0ZW5jeSB3aXRoIHRoYXQgY29kZS4gQW4KICAqIGFzc2VydGlvbiBj cm9zcy1jaGVja3MgdGhhdCBib3RoIHJlbWFpbiBpbiBhZ3JlZW1lbnQuIERvIG5vdCBpbnRyb2R1 Y2UgbmV3CiAgKiBzaWRlLWVmZmVjdHMuCiAgKi8KLXN0YXRpYyBib29sCitib29sCiBoZWFwX3Bh Z2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJ CSAgIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKIAkJCQkJCQkgICBPZmZzZXROdW1iZXIgKmRl YWRvZmZzZXRzLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDYzMmM0MzMyYThjLi45MzdiNDZhNzdkYiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaApAQCAtNDIsNiArNDIsNyBAQAogLyogIm9wdGlvbnMiIGZsYWcgYml0 cyBmb3IgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUgKi8KICNkZWZpbmUgSEVBUF9QQUdFX1BS VU5FX01BUktfVU5VU0VEX05PVwkJKDEgPDwgMCkKICNkZWZpbmUgSEVBUF9QQUdFX1BSVU5FX0ZS RUVaRQkJCQkoMSA8PCAxKQorI2RlZmluZSBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZJUwkJCSgx IDw8IDIpCiAKIHR5cGVkZWYgc3RydWN0IEJ1bGtJbnNlcnRTdGF0ZURhdGEgKkJ1bGtJbnNlcnRT dGF0ZTsKIHR5cGVkZWYgc3RydWN0IEdsb2JhbFZpc1N0YXRlIEdsb2JhbFZpc1N0YXRlOwpAQCAt MjM4LDYgKzIzOSwxNiBAQCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVBhcmFtcwogCVJlbGF0 aW9uCXJlbGF0aW9uOwkJLyogcmVsYXRpb24gY29udGFpbmluZyBidWZmZXIgdG8gYmUgcHJ1bmVk ICovCiAJQnVmZmVyCQlidWZmZXI7CQkJLyogYnVmZmVyIHRvIGJlIHBydW5lZCAqLwogCisJLyoK KwkgKgorCSAqIHZtYnVmZmVyIGlzIHRoZSBidWZmZXIgdGhhdCBtdXN0IGFscmVhZHkgY29udGFp biBjb250YWluIHRoZSByZXF1aXJlZAorCSAqIGJsb2NrIG9mIHRoZSB2aXNpYmlsaXR5IG1hcCBp ZiB3ZSBhcmUgdG8gdXBkYXRlIGl0LiBibGtfa25vd25fYXYgaXMgdGhlCisJICogdmlzaWJpbGl0 eSBzdGF0dXMgb2YgdGhlIGhlYXAgYmxvY2sgYXMgb2YgdGhlIGxhc3QgY2FsbCB0bworCSAqIGZp bmRfbmV4dF91bnNraXBwYWJsZV9ibG9jaygpLgorCSAqLworCUJ1ZmZlcgkJdm1idWZmZXI7CisJ Ym9vbAkJYmxrX2tub3duX2F2OworCiAJLyoKIAkgKiBUaGUgcmVhc29uIHBydW5pbmcgd2FzIHBl cmZvcm1lZC4gIEl0IGlzIHVzZWQgdG8gc2V0IHRoZSBXQUwgcmVjb3JkCiAJICogb3Bjb2RlIHdo aWNoIGlzIHVzZWQgZm9yIGRlYnVnZ2luZyBhbmQgYW5hbHlzaXMgcHVycG9zZXMuCkBAIC0yNTAs OCArMjYxLDEwIEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUGFyYW1zCiAJICogSEVBUF9Q QUdFX1BSVU5FX01BUktfVU5VU0VEX05PVyBpbmRpY2F0ZXMgdGhhdCBkZWFkIGl0ZW1zIGNhbiBi ZSBzZXQKIAkgKiBMUF9VTlVTRUQgZHVyaW5nIHBydW5pbmcuCiAJICoKLQkgKiBIRUFQX1BBR0Vf UFJVTkVfRlJFRVpFIGluZGljYXRlcyB0aGF0IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzLCBh bmQKLQkgKiB3aWxsIHJldHVybiAnYWxsX3Zpc2libGUnLCAnYWxsX2Zyb3plbicgZmxhZ3MgdG8g dGhlIGNhbGxlci4KKwkgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIGluZGljYXRlcyB0aGF0IHdl IHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzCisJICoKKwkgKiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRF X1ZJUyBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIHNldCB0aGUgcGFnZSdzIHN0YXR1cworCSAqIGlu IHRoZSBWTS4KIAkgKi8KIAlpbnQJCQlvcHRpb25zOwogCkBAIC0yODUsMTkgKzI5OCwxNSBAQCB0 eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVJlc3VsdAogCWludAkJCXJlY2VudGx5X2RlYWRfdHVw bGVzOwogCiAJLyoKLQkgKiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBpbmRpY2F0ZSBpZiB0 aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4KLQkgKiBiaXRzIGluIHRoZSB2aXNpYmlsaXR5 IG1hcCBjYW4gYmUgc2V0IGZvciB0aGlzIHBhZ2UsIGFmdGVyIHBydW5pbmcuCi0JICoKLQkgKiB2 bV9jb25mbGljdF9ob3Jpem9uIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0 aGUgcGFnZS4gIFRoZQotCSAqIGNhbGxlciBjYW4gdXNlIGl0IGFzIHRoZSBjb25mbGljdCBob3Jp em9uIHdoZW4gc2V0dGluZyB0aGUgVk0gYml0cy4gIEl0Ci0JICogaXMgb25seSB2YWxpZCBpZiB3 ZSBmcm96ZSBzb21lIHR1cGxlcyAobmZyb3plbiA+IDApLCBhbmQgYWxsX2Zyb3plbiBpcwotCSAq IHRydWUuCisJICogb2xkX3ZtYml0cyBhcmUgdGhlIHN0YXRlIG9mIHRoZSBhbGwtdmlzaWJsZSBh bmQgYWxsLWZyb3plbiBiaXRzIGluIHRoZQorCSAqIHZpc2liaWxpdHkgbWFwIGJlZm9yZSB1cGRh dGluZyBpdCBkdXJpbmcgcGhhc2UgSSBvZiB2YWN1dW1pbmcuCisJICogbmV3X3ZtYml0cyBhcmUg dGhlIHN0YXRlIG9mIHRob3NlIGJpdHMgYWZ0ZXIgcGhhc2UgSSBvZiB2YWN1dW1pbmcuCiAJICoK LQkgKiBUaGVzZSBhcmUgb25seSBzZXQgaWYgdGhlIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBp cyBzZXQuCisJICogVGhlc2UgYXJlIG9ubHkgc2V0IGlmIHRoZSBIRUFQX1BBR0VfUFJVTkVfVVBE QVRFX1ZJUyBvcHRpb24gaXMgc2V0IGFuZAorCSAqIHdlIGhhdmUgYXR0ZW1wdGVkIHRvIHVwZGF0 ZSB0aGUgVk0uCiAJICovCi0JYm9vbAkJYWxsX3Zpc2libGU7Ci0JYm9vbAkJYWxsX2Zyb3plbjsK LQlUcmFuc2FjdGlvbklkIHZtX2NvbmZsaWN0X2hvcml6b247CisJdWludDgJCW5ld192bWJpdHM7 CisJdWludDgJCW9sZF92bWJpdHM7CiAKIAkvKgogCSAqIFdoZXRoZXIgb3Igbm90IHRoZSBwYWdl IG1ha2VzIHJlbCB0cnVuY2F0aW9uIHVuc2FmZS4gIFRoaXMgaXMgc2V0IHRvCkBAIC00MjQsNiAr NDMzLDcgQEAgZXh0ZXJuIHZvaWQgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiBy ZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJCSAgQnVmZmVyIHZtYnVmZmVyLCB1aW50 OCB2bWZsYWdzLAogCQkJCQkJCQkJICBUcmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZCwKIAkJCQkJ CQkJCSAgYm9vbCBjbGVhbnVwX2xvY2ssCisJCQkJCQkJCQkgIGJvb2wgc2V0X3BkX2FsbF92aXMs CiAJCQkJCQkJCQkgIFBydW5lUmVhc29uIHJlYXNvbiwKIAkJCQkJCQkJCSAgSGVhcFR1cGxlRnJl ZXplICpmcm96ZW4sIGludCBuZnJvemVuLAogCQkJCQkJCQkJICBPZmZzZXROdW1iZXIgKnJlZGly ZWN0ZWQsIGludCBucmVkaXJlY3RlZCwKQEAgLTQzMyw2ICs0NDMsMTMgQEAgZXh0ZXJuIHZvaWQg bG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZl ciwKIC8qIGluIGhlYXAvdmFjdXVtbGF6eS5jICovCiBleHRlcm4gdm9pZCBoZWFwX3ZhY3V1bV9y ZWwoUmVsYXRpb24gcmVsLAogCQkJCQkJCWNvbnN0IFZhY3V1bVBhcmFtcyBwYXJhbXMsIEJ1ZmZl ckFjY2Vzc1N0cmF0ZWd5IGJzdHJhdGVneSk7CitleHRlcm4gYm9vbCBoZWFwX3BhZ2Vfd291bGRf YmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAorCQkJCQkJCQkJCSAgIFRy YW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKmRlYWRv ZmZzZXRzLAorCQkJCQkJCQkJCSAgIGludCBuZGVhZG9mZnNldHMsCisJCQkJCQkJCQkJICAgYm9v bCAqYWxsX2Zyb3plbiwKKwkJCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1 dG9mZl94aWQsCisJCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSk7CiAK IC8qIGluIGhlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYyAqLwogZXh0ZXJuIGJvb2wgSGVhcFR1cGxl U2F0aXNmaWVzVmlzaWJpbGl0eShIZWFwVHVwbGUgaHR1cCwgU25hcHNob3Qgc25hcHNob3QsCi0t IAoyLjQzLjAKCg== --0000000000004d8ca00643fabb4a Content-Type: text/x-patch; charset="US-ASCII"; name="v21-0006-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Disposition: attachment; filename="v21-0006-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi6mb3nk5 RnJvbSBlMTE3ZTIwYWViY2JjNGIzYmZlNWIwNzdkOWYxMjJlMTcxYThjNmZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjIxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjEgMDYvMTJdIEVsaW1pbmF0ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZnJvbSBlbXB0eS1w YWdlIHZhY3V1bQoKQXMgcGFydCBvZiByZW1vdmluZyBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jk cywgcGhhc2UgSSBvZiBWQUNVVU0gbm93Cm1hcmtzIGVtcHR5IHBhZ2VzIGFsbC12aXNpYmxlIGlu IGEgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQuCgpBdXRob3I6IE1lbGFuaWUg UGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQg SGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYyB8IDM2ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3ZhY3V1bWxhenkuYwppbmRleCBhN2E5NzRiNjYzOS4uZmE3YmUwZjg1N2YgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTE4NzIsOSArMTg3MiwxMiBAQCBsYXp5X3Nj YW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1i ZXIgYmxrbm8sCiAJCSAqLwogCQlpZiAoIVBhZ2VJc0FsbFZpc2libGUocGFnZSkpCiAJCXsKKwkJ CS8qIExvY2sgdm1idWZmZXIgYmVmb3JlIGVudGVyaW5nIGNyaXRpY2FsIHNlY3Rpb24gKi8KKwkJ CUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisKIAkJCVNUQVJU X0NSSVRfU0VDVElPTigpOwogCi0JCQkvKiBtYXJrIGJ1ZmZlciBkaXJ0eSBiZWZvcmUgd3JpdGlu ZyBhIFdBTCByZWNvcmQgKi8KKwkJCS8qIE1hcmsgYnVmZmVyIGRpcnR5IGJlZm9yZSB3cml0aW5n IGFueSBXQUwgcmVjb3JkcyAqLwogCQkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7CiAKIAkJCS8qCkBA IC0xODkxLDEzICsxODk0LDM0IEBAIGxhenlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0ZSAq dmFjcmVsLCBCdWZmZXIgYnVmLCBCbG9ja051bWJlciBibGtubywKIAkJCQlsb2dfbmV3cGFnZV9i dWZmZXIoYnVmLCB0cnVlKTsKIAogCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQl2aXNp YmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJCQkgIEludmFsaWRY TG9nUmVjUHRyLAotCQkJCQkJCSAgdm1idWZmZXIsIEludmFsaWRUcmFuc2FjdGlvbklkLAotCQkJ CQkJCSAgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJICBWSVNJQklMSVRZTUFQ X0FMTF9GUk9aRU4pOworCQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKGJsa25vLAorCQkJCQkJ CQkJIHZtYnVmZmVyLAorCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJ CQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJCQkJCQkJCSB2YWNyZWwtPnJlbC0+ cmRfbG9jYXRvcik7CisKKwkJCS8qCisJCQkgKiBFbWl0IFdBTCBmb3Igc2V0dGluZyBQRF9BTExf VklTSUJMRSBvbiB0aGUgaGVhcCBwYWdlIGFuZAorCQkJICogc2V0dGluZyB0aGUgVk0uCisJCQkg Ki8KKwkJCWlmIChSZWxhdGlvbk5lZWRzV0FMKHZhY3JlbC0+cmVsKSkKKwkJCQlsb2dfaGVhcF9w cnVuZV9hbmRfZnJlZXplKHZhY3JlbC0+cmVsLCBidWYsCisJCQkJCQkJCQkJICB2bWJ1ZmZlciwK KwkJCQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAorCQkJCQkJCQkJCSAgVklT SUJJTElUWU1BUF9BTExfRlJPWkVOLAorCQkJCQkJCQkJCSAgSW52YWxpZFRyYW5zYWN0aW9uSWQs IC8qIGNvbmZsaWN0IHhpZCAqLworCQkJCQkJCQkJCSAgZmFsc2UsCS8qIGNsZWFudXAgbG9jayAq LworCQkJCQkJCQkJCSAgdHJ1ZSwgLyogc2V0X3BkX2FsbF92aXMgKi8KKwkJCQkJCQkJCQkgIFBS VU5FX1ZBQ1VVTV9TQ0FOLAkvKiByZWFzb24gKi8KKwkJCQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJ CQkJCQkJICBOVUxMLCAwLAorCQkJCQkJCQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5VTEws IDApOworCiAJCQlFTkRfQ1JJVF9TRUNUSU9OKCk7CiAKKwkJCUxvY2tCdWZmZXIodm1idWZmZXIs IEJVRkZFUl9MT0NLX1VOTE9DSyk7CisKIAkJCS8qIENvdW50IHRoZSBuZXdseSBhbGwtZnJvemVu IHBhZ2VzIGZvciBsb2dnaW5nICovCiAJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7 CiAJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwotLSAKMi40My4wCgo= --0000000000004d8ca00643fabb4a Content-Type: text/x-patch; charset="US-ASCII"; name="v21-0007-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Disposition: attachment; filename="v21-0007-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi6mb6cu6 RnJvbSAxZDNmOWU4ZjM5NzUwODgwOGMwMWJjYzgyNzI5NDAxNGVhYzViMTliIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjEgMDcvMTJdIFJlbW92ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZW50aXJlbHkKCkFzIG5v IHJlbWFpbmluZyB1c2VycyBlbWl0IFhMT0dfSEVBUDJfVklTSUJMRSByZWNvcmRzLgpUaGlzIGlu Y2x1ZGVzIGRlbGV0aW5nIHRoZSB4bF9oZWFwX3Zpc2libGUgc3RydWN0IGFuZCBhbGwgZnVuY3Rp b25zCnJlc3BvbnNpYmxlIGZvciBlbWl0dGluZyBvciByZXBsYXlpbmcgWExPR19IRUFQMl9WSVNJ QkxFIHJlY29yZHMuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBn bWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXkgQm9yb2RpbiA8eDRtbW1AeWFuZGV4LXRlYW0u cnU+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZtYXNrLmMgICAgICB8ICAgNCAr LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICB8ICA1NCArLS0tLS0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyAgICB8IDE1NSArKy0tLS0t LS0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAg ICB8ICAxOCArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgfCAg MTYgKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgIHwgMTEyICst LS0tLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jICAg fCAgMTAgLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgfCAgIDEg LQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jICAgICAgICB8ICAxMiArLQogc3Jj L2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggICAgICAgICB8ICAyOCArLS0tCiBzcmMvaW5j bHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oICAgICAgIHwgIDEzICstCiBzcmMvaW5jbHVkZS9h Y2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCAgIHwgICA5IC0tCiBzcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdCAgICAgICAgIHwgICAxIC0KIDEzIGZpbGVzIGNoYW5nZWQsIDU0IGluc2Vy dGlvbnMoKyksIDM3OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvY29tbW9uL2J1Zm1hc2suYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5j CmluZGV4IGJiMjYwY2ZmYTY4Li41ZjA3ZjE3OTQxNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2NvbW1vbi9idWZtYXNrLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9i dWZtYXNrLmMKQEAgLTU2LDggKzU2LDggQEAgbWFza19wYWdlX2hpbnRfYml0cyhQYWdlIHBhZ2Up CiAKIAkvKgogCSAqIER1cmluZyByZXBsYXksIGlmIHRoZSBwYWdlIExTTiBoYXMgYWR2YW5jZWQg cGFzdCBvdXIgWExPRyByZWNvcmQncyBMU04sCi0JICogd2UgZG9uJ3QgbWFyayB0aGUgcGFnZSBh bGwtdmlzaWJsZS4gU2VlIGhlYXBfeGxvZ192aXNpYmxlKCkgZm9yCi0JICogZGV0YWlscy4KKwkg KiB3ZSBkb24ndCBtYXJrIHRoZSBwYWdlIGFsbC12aXNpYmxlLiBTZWUgaGVhcF94bG9nX3BydW5l X2FuZF9mcmVlemUoKQorCSAqIGZvciBtb3JlIGRldGFpbHMuCiAJICovCiAJUGFnZUNsZWFyQWxs VmlzaWJsZShwYWdlKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggNGIwYzQ5ZjRi YjAuLjJiZmYzN2UwM2I1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw 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 c3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCBiYTU3OGMxY2UwZi4uODAwMzdkNjkwZTMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0xMTEyLDkgKzExMTIsOSBAQCBoZWFwX3Bh Z2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQl7CiAJCQlB c3NlcnQoUGFnZUlzQWxsVmlzaWJsZShwYWdlKSk7CiAKLQkJCW9sZF92bWJpdHMgPSB2aXNpYmls aXR5bWFwX3NldF92bWJpdHMoYmxvY2tubywKLQkJCQkJCQkJCQkJCSAgdm1idWZmZXIsIG5ld192 bWJpdHMsCi0JCQkJCQkJCQkJCQkgIHBhcmFtcy0+cmVsYXRpb24tPnJkX2xvY2F0b3IpOworCQkJ b2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0KGJsb2Nrbm8sCisJCQkJCQkJCQkJICAgdm1i dWZmZXIsIG5ld192bWJpdHMsCisJCQkJCQkJCQkJICAgcGFyYW1zLT5yZWxhdGlvbi0+cmRfbG9j YXRvcik7CiAJCQlpZiAob2xkX3ZtYml0cyA9PSBuZXdfdm1iaXRzKQogCQkJewogCQkJCUxvY2tC dWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CkBAIC0yMzk2LDE0ICsyMzk2LDE4 IEBAIGdldF9jb25mbGljdF94aWQoYm9vbCBkb19wcnVuZSwgYm9vbCBkb19mcmVlemUsIGJvb2wg ZG9fc2V0X3ZtLAogICoKICAqIFRoaXMgaXMgdXNlZCBmb3Igc2V2ZXJhbCBkaWZmZXJlbnQgcGFn ZSBtYWludGVuYW5jZSBvcGVyYXRpb25zOgogICoKLSAqIC0gUGFnZSBwcnVuaW5nLCBpbiBWQUNV VU0ncyAxc3QgcGFzcyBvciBvbiBhY2Nlc3M6IFNvbWUgaXRlbXMgYXJlCisgKiAtIFBhZ2UgcHJ1 bmluZywgaW4gdmFjdXVtIHBoYXNlIEkgb3Igb24tYWNjZXNzOiBTb21lIGl0ZW1zIGFyZQogICog ICByZWRpcmVjdGVkLCBzb21lIG1hcmtlZCBkZWFkLCBhbmQgc29tZSByZW1vdmVkIGFsdG9nZXRo ZXIuCiAgKgotICogLSBGcmVlemluZzogSXRlbXMgYXJlIG1hcmtlZCBhcyAnZnJvemVuJy4KKyAq IC0gRnJlZXppbmc6IER1cmluZyB2YWN1dW0gcGhhc2UgSSwgaXRlbXMgYXJlIG1hcmtlZCBhcyAn ZnJvemVuJwogICoKLSAqIC0gVmFjdXVtLCAybmQgcGFzczogSXRlbXMgdGhhdCBhcmUgYWxyZWFk eSBMUF9ERUFEIGFyZSBtYXJrZWQgYXMgdW51c2VkLgorICogLSBSZWFwaW5nOiBEdXJpbmcgdmFj dXVtIHBoYXNlIElJSSwgaXRlbXMgdGhhdCBhcmUgYWxyZWFkeSBMUF9ERUFEIGFyZQorICogICBt YXJrZWQgYXMgdW51c2VkLgogICoKLSAqIFRoZXkgaGF2ZSBlbm91Z2ggY29tbW9uYWxpdGllcyB0 aGF0IHdlIHVzZSBhIHNpbmdsZSBXQUwgcmVjb3JkIGZvciB0aGVtCisgKiAtIFZNIHVwZGF0ZXM6 IEFmdGVyIHZhY3V1bSBwaGFzZXMgSSBhbmQgSUlJLCB0aGUgaGVhcCBwYWdlIG1heSBiZSBtYXJr ZWQKKyAqICAgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4uCisgKgorICogVGhlc2UgY2hhbmdl cyBhbGwgaGFwcGVuIHRvZ2V0aGVyLCBzbyB3ZSB1c2UgYSBzaW5nbGUgV0FMIHJlY29yZCBmb3Ig dGhlbQogICogYWxsLgogICoKICAqIElmIHJlcGxheWluZyB0aGUgcmVjb3JkIHJlcXVpcmVzIGEg Y2xlYW51cCBsb2NrLCBwYXNzIGNsZWFudXBfbG9jayA9IHRydWUuCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKaW5kZXggZmE3YmUwZjg1N2YuLmZkNjhkZmNmY2UyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0xODk0LDExICsxODk0LDExIEBAIGxhenlfc2Nh bl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLCBCbG9ja051bWJl ciBibGtubywKIAkJCQlsb2dfbmV3cGFnZV9idWZmZXIoYnVmLCB0cnVlKTsKIAogCQkJUGFnZVNl dEFsbFZpc2libGUocGFnZSk7Ci0JCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxrbm8sCi0J CQkJCQkJCQkgdm1idWZmZXIsCi0JCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8 Ci0JCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOLAotCQkJCQkJCQkJIHZhY3JlbC0+ cmVsLT5yZF9sb2NhdG9yKTsKKwkJCXZpc2liaWxpdHltYXBfc2V0KGJsa25vLAorCQkJCQkJCSAg dm1idWZmZXIsCisJCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkg IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKKwkJCQkJCQkgIHZhY3JlbC0+cmVsLT5yZF9sb2Nh dG9yKTsKIAogCQkJLyoKIAkJCSAqIEVtaXQgV0FMIGZvciBzZXR0aW5nIFBEX0FMTF9WSVNJQkxF IG9uIHRoZSBoZWFwIHBhZ2UgYW5kCkBAIC0yNzc2LDkgKzI3NzYsOSBAQCBsYXp5X3ZhY3V1bV9o ZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1 ZmZlciwKIAkJICogc2V0IFBEX0FMTF9WSVNJQkxFLgogCQkgKi8KIAkJUGFnZVNldEFsbFZpc2li bGUocGFnZSk7Ci0JCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKLQkJCQkJCQkJIHZt YnVmZmVyLCB2bWZsYWdzLAotCQkJCQkJCQkgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOworCQl2 aXNpYmlsaXR5bWFwX3NldChibGtubywKKwkJCQkJCSAgdm1idWZmZXIsIHZtZmxhZ3MsCisJCQkJ CQkgIHZhY3JlbC0+cmVsLT5yZF9sb2NhdG9yKTsKIAkJY29uZmxpY3RfeGlkID0gdmlzaWJpbGl0 eV9jdXRvZmZfeGlkOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmlzaWJpbGl0eW1hcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5j CmluZGV4IGQxNDU4OGU5MmFlLi43OTk3ZTkyNjg3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3Zpc2liaWxpdHltYXAuYwpAQCAtMTQsOCArMTQsNyBAQAogICoJCXZpc2liaWxpdHltYXBfY2xl YXIgIC0gY2xlYXIgYml0cyBmb3Igb25lIHBhZ2UgaW4gdGhlIHZpc2liaWxpdHkgbWFwCiAgKgkJ dmlzaWJpbGl0eW1hcF9waW4JIC0gcGluIGEgbWFwIHBhZ2UgZm9yIHNldHRpbmcgYSBiaXQKICAq CQl2aXNpYmlsaXR5bWFwX3Bpbl9vayAtIGNoZWNrIHdoZXRoZXIgY29ycmVjdCBtYXAgcGFnZSBp cyBhbHJlYWR5IHBpbm5lZAotICoJCXZpc2liaWxpdHltYXBfc2V0CSAtIHNldCBiaXQocykgaW4g YSBwcmV2aW91c2x5IHBpbm5lZCBwYWdlIGFuZCBsb2cKLSAqCQl2aXNpYmlsaXR5bWFwX3NldF92 bWJpdHMgLSBzZXQgYml0KHMpIGluIGEgcGlubmVkIHBhZ2UKKyAqCQl2aXNpYmlsaXR5bWFwX3Nl dAkgLSBzZXQgYml0KHMpIGluIGEgcHJldmlvdXNseSBwaW5uZWQgcGFnZQogICoJCXZpc2liaWxp dHltYXBfZ2V0X3N0YXR1cyAtIGdldCBzdGF0dXMgb2YgYml0cwogICoJCXZpc2liaWxpdHltYXBf Y291bnQgIC0gY291bnQgbnVtYmVyIG9mIGJpdHMgc2V0IGluIHZpc2liaWxpdHkgbWFwCiAgKgkJ dmlzaWJpbGl0eW1hcF9wcmVwYXJlX3RydW5jYXRlIC0KQEAgLTIyMCwxMDkgKzIxOSw2IEBAIHZp 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 LQlBc3NlcnQoSW5SZWNvdmVyeSB8fCAhWExvZ1JlY1B0cklzVmFsaWQocmVjcHRyKSk7Ci0JQXNz ZXJ0KEluUmVjb3ZlcnkgfHwgUGFnZUlzQWxsVmlzaWJsZShCdWZmZXJHZXRQYWdlKGhlYXBCdWYp KSk7Ci0JQXNzZXJ0KChmbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykgPT0gZmxhZ3Mp OwotCi0JLyogTXVzdCBuZXZlciBzZXQgYWxsX2Zyb3plbiBiaXQgd2l0aG91dCBhbHNvIHNldHRp bmcgYWxsX3Zpc2libGUgYml0ICovCi0JQXNzZXJ0KGZsYWdzICE9IFZJU0lCSUxJVFlNQVBfQUxM X0ZST1pFTik7Ci0KLQkvKiBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIHJpZ2h0IGhlYXAgcGFnZSBw aW5uZWQsIGlmIHByZXNlbnQgKi8KLQlpZiAoQnVmZmVySXNWYWxpZChoZWFwQnVmKSAmJiBCdWZm ZXJHZXRCbG9ja051bWJlcihoZWFwQnVmKSAhPSBoZWFwQmxrKQotCQllbG9nKEVSUk9SLCAid3Jv bmcgaGVhcCBidWZmZXIgcGFzc2VkIHRvIHZpc2liaWxpdHltYXBfc2V0Iik7Ci0KLQlBc3NlcnQo IUJ1ZmZlcklzVmFsaWQoaGVhcEJ1ZikgfHwKLQkJICAgQnVmZmVySXNMb2NrZWRCeU1lSW5Nb2Rl KGhlYXBCdWYsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSkpOwotCi0JLyogQ2hlY2sgdGhhdCB3ZSBo YXZlIHRoZSByaWdodCBWTSBwYWdlIHBpbm5lZCAqLwotCWlmICghQnVmZmVySXNWYWxpZCh2bUJ1 ZikgfHwgQnVmZmVyR2V0QmxvY2tOdW1iZXIodm1CdWYpICE9IG1hcEJsb2NrKQotCQllbG9nKEVS Uk9SLCAid3JvbmcgVk0gYnVmZmVyIHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCIpOwotCi0J cGFnZSA9IEJ1ZmZlckdldFBhZ2Uodm1CdWYpOwotCW1hcCA9ICh1aW50OCAqKSBQYWdlR2V0Q29u dGVudHMocGFnZSk7Ci0JTG9ja0J1ZmZlcih2bUJ1ZiwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsK LQotCXN0YXR1cyA9IChtYXBbbWFwQnl0ZV0gPj4gbWFwT2Zmc2V0KSAmIFZJU0lCSUxJVFlNQVBf VkFMSURfQklUUzsKLQlpZiAoZmxhZ3MgIT0gc3RhdHVzKQotCXsKLQkJU1RBUlRfQ1JJVF9TRUNU SU9OKCk7Ci0KLQkJbWFwW21hcEJ5dGVdIHw9IChmbGFncyA8PCBtYXBPZmZzZXQpOwotCQlNYXJr QnVmZmVyRGlydHkodm1CdWYpOwotCi0JCWlmIChSZWxhdGlvbk5lZWRzV0FMKHJlbCkpCi0JCXsK LQkJCWlmICghWExvZ1JlY1B0cklzVmFsaWQocmVjcHRyKSkKLQkJCXsKLQkJCQlBc3NlcnQoIUlu UmVjb3ZlcnkpOwotCQkJCXJlY3B0ciA9IGxvZ19oZWFwX3Zpc2libGUocmVsLCBoZWFwQnVmLCB2 bUJ1ZiwgY3V0b2ZmX3hpZCwgZmxhZ3MpOwotCi0JCQkJLyoKLQkJCQkgKiBJZiBkYXRhIGNoZWNr c3VtcyBhcmUgZW5hYmxlZCAob3Igd2FsX2xvZ19oaW50cz1vbiksIHdlCi0JCQkJICogbmVlZCB0 byBwcm90ZWN0IHRoZSBoZWFwIHBhZ2UgZnJvbSBiZWluZyB0b3JuLgotCQkJCSAqCi0JCQkJICog SWYgbm90LCB0aGVuIHdlIG11c3QgKm5vdCogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBMU04uIElu Ci0JCQkJICogdGhpcyBjYXNlLCB0aGUgRlBJIGZvciB0aGUgaGVhcCBwYWdlIHdhcyBvbWl0dGVk IGZyb20gdGhlCi0JCQkJICogV0FMIHJlY29yZCBpbnNlcnRlZCBhYm92ZSwgc28gaXQgd291bGQg YmUgaW5jb3JyZWN0IHRvCi0JCQkJICogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBMU04uCi0JCQkJ ICovCi0JCQkJaWYgKFhMb2dIaW50Qml0SXNOZWVkZWQoKSkKLQkJCQl7Ci0JCQkJCVBhZ2UJCWhl YXBQYWdlID0gQnVmZmVyR2V0UGFnZShoZWFwQnVmKTsKLQotCQkJCQlQYWdlU2V0TFNOKGhlYXBQ YWdlLCByZWNwdHIpOwotCQkJCX0KLQkJCX0KLQkJCVBhZ2VTZXRMU04ocGFnZSwgcmVjcHRyKTsK LQkJfQotCi0JCUVORF9DUklUX1NFQ1RJT04oKTsKLQl9Ci0KLQlMb2NrQnVmZmVyKHZtQnVmLCBC VUZGRVJfTE9DS19VTkxPQ0spOwotCXJldHVybiBzdGF0dXM7Ci19Ci0KIC8qCiAgKiBTZXQgVk0g KHZpc2liaWxpdHkgbWFwKSBmbGFncyBpbiB0aGUgVk0gYmxvY2sgaW4gdm1CdWYuCiAgKgpAQCAt MzQ0LDkgKzI0MCw5IEBAIHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1i ZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCiAgKiBybG9jYXRvciBpcyB1c2VkIG9ubHkgZm9y IGRlYnVnZ2luZyBtZXNzYWdlcy4KICAqLwogdWludDgKLXZpc2liaWxpdHltYXBfc2V0X3ZtYml0 cyhCbG9ja051bWJlciBoZWFwQmxrLAotCQkJCQkJIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3Ms Ci0JCQkJCQkgY29uc3QgUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IpCit2aXNpYmlsaXR5bWFwX3Nl dChCbG9ja051bWJlciBoZWFwQmxrLAorCQkJCSAgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncywK KwkJCQkgIGNvbnN0IFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yKQogewogCUJsb2NrTnVtYmVyIG1h cEJsb2NrID0gSEVBUEJMS19UT19NQVBCTE9DSyhoZWFwQmxrKTsKIAl1aW50MzIJCW1hcEJ5dGUg PSBIRUFQQkxLX1RPX01BUEJZVEUoaGVhcEJsayk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9o ZWFwZGVzYy5jCmluZGV4IGNhMjZkMWYwZWQxLi4wODQ2MWZkZjU5MyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKQEAgLTM0OSwxMyArMzQ5LDYgQEAgaGVhcDJfZGVzYyhT dHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCQl9CiAJCX0KIAl9Ci0J ZWxzZSBpZiAoaW5mbyA9PSBYTE9HX0hFQVAyX1ZJU0lCTEUpCi0JewotCQl4bF9oZWFwX3Zpc2li bGUgKnhscmVjID0gKHhsX2hlYXBfdmlzaWJsZSAqKSByZWM7Ci0KLQkJYXBwZW5kU3RyaW5nSW5m byhidWYsICJzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjogJXUsIGZsYWdzOiAweCUwMlgiLAotCQkJ CQkJIHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwgeGxyZWMtPmZsYWdzKTsKLQl9CiAJ ZWxzZSBpZiAoaW5mbyA9PSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVCkKIAl7CiAJCXhsX2hlYXBf bXVsdGlfaW5zZXJ0ICp4bHJlYyA9ICh4bF9oZWFwX211bHRpX2luc2VydCAqKSByZWM7CkBAIC00 NjEsOSArNDU0LDYgQEAgaGVhcDJfaWRlbnRpZnkodWludDggaW5mbykKIAkJY2FzZSBYTE9HX0hF QVAyX1BSVU5FX1ZBQ1VVTV9DTEVBTlVQOgogCQkJaWQgPSAiUFJVTkVfVkFDVVVNX0NMRUFOVVAi OwogCQkJYnJlYWs7Ci0JCWNhc2UgWExPR19IRUFQMl9WSVNJQkxFOgotCQkJaWQgPSAiVklTSUJM RSI7Ci0JCQlicmVhazsKIAkJY2FzZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVDoKIAkJCWlkID0g Ik1VTFRJX0lOU0VSVCI7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2RlY29kZS5jCmluZGV4IGNjMDNmMDcwNmU5Li4yZmRkNGFmOTBhOCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCkBAIC00NTQsNyArNDU0LDYgQEAgaGVhcDJfZGVj b2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQog CQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfT05fQUNDRVNTOgogCQljYXNlIFhMT0dfSEVBUDJfUFJV TkVfVkFDVVVNX1NDQU46CiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUDoK LQkJY2FzZSBYTE9HX0hFQVAyX1ZJU0lCTEU6CiAJCWNhc2UgWExPR19IRUFQMl9MT0NLX1VQREFU RUQ6CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3N0YW5kYnkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRl eCA0MjIyYmRhYjA3OC4uYzYxOTY0M2UxMjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3N0YW5kYnkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMK QEAgLTQ3NSwxMiArNDc1LDEyIEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90 KFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCiAJICogSWYgd2UgZ2V0IHBh c3NlZCBJbnZhbGlkVHJhbnNhY3Rpb25JZCB0aGVuIHdlIGRvIG5vdGhpbmcgKG5vIGNvbmZsaWN0 KS4KIAkgKgogCSAqIFRoaXMgY2FuIGhhcHBlbiB3aGVuIHJlcGxheWluZyBhbHJlYWR5LWFwcGxp ZWQgV0FMIHJlY29yZHMgYWZ0ZXIgYQotCSAqIHN0YW5kYnkgY3Jhc2ggb3IgcmVzdGFydCwgb3Ig d2hlbiByZXBsYXlpbmcgYW4gWExPR19IRUFQMl9WSVNJQkxFCi0JICogcmVjb3JkIHRoYXQgbWFy a3MgYXMgZnJvemVuIGEgcGFnZSB3aGljaCB3YXMgYWxyZWFkeSBhbGwtdmlzaWJsZS4gIEl0J3MK LQkgKiBhbHNvIHF1aXRlIGNvbW1vbiB3aXRoIHJlY29yZHMgZ2VuZXJhdGVkIGR1cmluZyBpbmRl eCBkZWxldGlvbgotCSAqIChvcmlnaW5hbCBleGVjdXRpb24gb2YgdGhlIGRlbGV0aW9uIGNhbiBy ZWFzb24gdGhhdCBhIHJlY292ZXJ5IGNvbmZsaWN0Ci0JICogd2hpY2ggaXMgc3VmZmljaWVudCBm b3IgdGhlIGRlbGV0aW9uIG9wZXJhdGlvbiBtdXN0IHRha2UgcGxhY2UgYmVmb3JlCi0JICogcmVw bGF5IG9mIHRoZSBkZWxldGlvbiByZWNvcmQgaXRzZWxmKS4KKwkgKiBzdGFuZGJ5IGNyYXNoIG9y IHJlc3RhcnQsIG9yIHdoZW4gcmVwbGF5aW5nIGEgcmVjb3JkIHRoYXQgbWFya3MgYXMKKwkgKiBm cm96ZW4gYSBwYWdlIHdoaWNoIHdhcyBhbHJlYWR5IG1hcmtlZCBhbGwtdmlzaWJsZSBpbiB0aGUg dmlzaWJpbGl0eQorCSAqIG1hcC4gIEl0J3MgYWxzbyBxdWl0ZSBjb21tb24gd2l0aCByZWNvcmRz IGdlbmVyYXRlZCBkdXJpbmcgaW5kZXgKKwkgKiBkZWxldGlvbiAob3JpZ2luYWwgZXhlY3V0aW9u IG9mIHRoZSBkZWxldGlvbiBjYW4gcmVhc29uIHRoYXQgYSByZWNvdmVyeQorCSAqIGNvbmZsaWN0 IHdoaWNoIGlzIHN1ZmZpY2llbnQgZm9yIHRoZSBkZWxldGlvbiBvcGVyYXRpb24gbXVzdCB0YWtl IHBsYWNlCisJICogYmVmb3JlIHJlcGxheSBvZiB0aGUgZGVsZXRpb24gcmVjb3JkIGl0c2VsZiku CiAJICovCiAJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChzbmFwc2hvdENvbmZsaWN0SG9yaXpv bikpCiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxv Zy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKaW5kZXggMTZjMmIyZTNjOWMu LmU5ZTc3YmQ2NzhiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cu aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaApAQCAtNjAsNyArNjAsNiBA QAogI2RlZmluZSBYTE9HX0hFQVAyX1BSVU5FX09OX0FDQ0VTUwkJMHgxMAogI2RlZmluZSBYTE9H X0hFQVAyX1BSVU5FX1ZBQ1VVTV9TQ0FOCTB4MjAKICNkZWZpbmUgWExPR19IRUFQMl9QUlVORV9W QUNVVU1fQ0xFQU5VUAkweDMwCi0jZGVmaW5lIFhMT0dfSEVBUDJfVklTSUJMRQkJMHg0MAogI2Rl ZmluZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVCAweDUwCiAjZGVmaW5lIFhMT0dfSEVBUDJfTE9D S19VUERBVEVEIDB4NjAKICNkZWZpbmUgWExPR19IRUFQMl9ORVdfQ0lECQkweDcwCkBAIC0yOTQs NyArMjkzLDEzIEBAIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfcHJ1bmUKIAogI2RlZmluZSBTaXpl T2ZIZWFwUHJ1bmUgKG9mZnNldG9mKHhsX2hlYXBfcHJ1bmUsIGZsYWdzKSArIHNpemVvZih1aW50 MTYpKQogCi0vKiB0byBoYW5kbGUgcmVjb3ZlcnkgY29uZmxpY3QgZHVyaW5nIGxvZ2ljYWwgZGVj b2Rpbmcgb24gc3RhbmRieSAqLworLyoKKyAqIFRvIGhhbmRsZSByZWNvdmVyeSBjb25mbGljdCBk dXJpbmcgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5LCB3ZSBtdXN0IGtub3cKKyAqIGlmIHRo ZSB0YWJsZSBpcyBhIGNhdGFsb2cgdGFibGUuIE5vdGUgdGhhdCBpbiB2aXNpYmlsaXR5bWFwZGVm cy5oCisgKiBWSVNJQkxJVFlNQVBfWExPR19DQVRBTE9HX1JFTCBpcyBhbHNvIGRlZmluZWQgYXMg KDEgPDwgMikuIHhsX2hlYXBfcHJ1bmUKKyAqIHJlY29yZHMgc2hvdWxkIHVzZSBYTEhQX0lTX0NB VEFMT0dfUkVMLCBub3QgVklTSUJJTElZVE1BUF9YTE9HX0NBVEFMT0dfUkVMIC0tCisgKiBldmVu IGlmIHRoZXkgb25seSBjb250YWluIHVwZGF0ZXMgdG8gdGhlIFZNLgorICovCiAjZGVmaW5lCQlY TEhQX0lTX0NBVEFMT0dfUkVMCQkJKDEgPDwgMSkKIAogLyoKQEAgLTQ0MywyMCArNDQ4LDYgQEAg dHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9pbnBsYWNlCiAKICNkZWZpbmUgTWluU2l6ZU9mSGVhcElu cGxhY2UJKG9mZnNldG9mKHhsX2hlYXBfaW5wbGFjZSwgbm1zZ3MpICsgc2l6ZW9mKGludCkpCiAK LS8qCi0gKiBUaGlzIGlzIHdoYXQgd2UgbmVlZCB0byBrbm93IGFib3V0IHNldHRpbmcgYSB2aXNp YmlsaXR5IG1hcCBiaXQKLSAqCi0gKiBCYWNrdXAgYmxrIDA6IHZpc2liaWxpdHkgbWFwIGJ1ZmZl cgotICogQmFja3VwIGJsayAxOiBoZWFwIGJ1ZmZlcgotICovCi10eXBlZGVmIHN0cnVjdCB4bF9o ZWFwX3Zpc2libGUKLXsKLQlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwot CXVpbnQ4CQlmbGFnczsKLX0geGxfaGVhcF92aXNpYmxlOwotCi0jZGVmaW5lIFNpemVPZkhlYXBW aXNpYmxlIChvZmZzZXRvZih4bF9oZWFwX3Zpc2libGUsIGZsYWdzKSArIHNpemVvZih1aW50OCkp Ci0KIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfbmV3X2NpZAogewogCS8qCkBAIC01MDAsMTEgKzQ5 MSw2IEBAIGV4dGVybiB2b2lkIGhlYXAyX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJT dGF0ZSAqcmVjb3JkKTsKIGV4dGVybiBjb25zdCBjaGFyICpoZWFwMl9pZGVudGlmeSh1aW50OCBp bmZvKTsKIGV4dGVybiB2b2lkIGhlYXBfeGxvZ19sb2dpY2FsX3Jld3JpdGUoWExvZ1JlYWRlclN0 YXRlICpyKTsKIAotZXh0ZXJuIFhMb2dSZWNQdHIgbG9nX2hlYXBfdmlzaWJsZShSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwKLQkJCQkJCQkJICAgQnVmZmVyIHZtX2J1ZmZlciwKLQkJ CQkJCQkJICAgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKLQkJCQkJCQkJ ICAgdWludDggdm1mbGFncyk7Ci0KIC8qIGluIGhlYXBkZXNjLmMsIHNvIGl0IGNhbiBiZSBzaGFy ZWQgYmV0d2VlbiBmcm9udGVuZC9iYWNrZW5kIGNvZGUgKi8KIGV4dGVybiB2b2lkIGhlYXBfeGxv Z19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGNoYXIgKmN1cnNvciwgdWludDE2IGZsYWdz LAogCQkJCQkJCQkJCQkJICAgaW50ICpucGxhbnMsIHhsaHBfZnJlZXplX3BsYW4gKipwbGFucywK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oCmluZGV4IGM2ZmEzN2JlOTY4Li4wNWJhNjc4NmI0 NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaAorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oCkBAIC0xNSw3ICsxNSw2IEBACiAjZGVm aW5lIFZJU0lCSUxJVFlNQVBfSAogCiAjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZz LmgiCi0jaW5jbHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9ibG9j ay5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9yZWxmaWxl bG9jYXRvci5oIgpAQCAtMzIsMTUgKzMxLDkgQEAgZXh0ZXJuIGJvb2wgdmlzaWJpbGl0eW1hcF9j bGVhcihSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssCiBleHRlcm4gdm9pZCB2aXNp YmlsaXR5bWFwX3BpbihSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssCiAJCQkJCQkJ ICBCdWZmZXIgKnZtYnVmKTsKIGV4dGVybiBib29sIHZpc2liaWxpdHltYXBfcGluX29rKEJsb2Nr TnVtYmVyIGhlYXBCbGssIEJ1ZmZlciB2bWJ1Zik7Ci1leHRlcm4gdWludDggdmlzaWJpbGl0eW1h cF9zZXQoUmVsYXRpb24gcmVsLAotCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZl ciBoZWFwQnVmLAotCQkJCQkJCSAgIFhMb2dSZWNQdHIgcmVjcHRyLAotCQkJCQkJCSAgIEJ1ZmZl ciB2bUJ1ZiwKLQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIGN1dG9mZl94aWQsCi0JCQkJCQkJICAg dWludDggZmxhZ3MpOwotZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhCbG9j a051bWJlciBoZWFwQmxrLAotCQkJCQkJCQkJICBCdWZmZXIgdm1CdWYsIHVpbnQ4IGZsYWdzLAot CQkJCQkJCQkJICBjb25zdCBSZWxGaWxlTG9jYXRvciBybG9jYXRvcik7CitleHRlcm4gdWludDgg dmlzaWJpbGl0eW1hcF9zZXQoQmxvY2tOdW1iZXIgaGVhcEJsaywKKwkJCQkJCQkgICBCdWZmZXIg dm1CdWYsIHVpbnQ4IGZsYWdzLAorCQkJCQkJCSAgIGNvbnN0IFJlbEZpbGVMb2NhdG9yIHJsb2Nh dG9yKTsKIGV4dGVybiB1aW50OCB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMoUmVsYXRpb24gcmVs LCBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgKnZtYnVmKTsKIGV4dGVybiB2b2lkIHZpc2li aWxpdHltYXBfY291bnQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciAqYWxsX3Zpc2libGUsIEJs b2NrTnVtYmVyICphbGxfZnJvemVuKTsKIGV4dGVybiBCbG9ja051bWJlciB2aXNpYmlsaXR5bWFw X3ByZXBhcmVfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv YWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0 eW1hcGRlZnMuaAppbmRleCA1YWQ1YzAyMDg3Ny4uZTAxYmNlNGM5OWYgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oCkBAIC0yMSwxNCArMjEsNSBAQAogI2RlZmluZSBWSVNJ QklMSVRZTUFQX0FMTF9GUk9aRU4JMHgwMgogI2RlZmluZSBWSVNJQklMSVRZTUFQX1ZBTElEX0JJ VFMJMHgwMwkvKiBPUiBvZiBhbGwgdmFsaWQgdmlzaWJpbGl0eW1hcAogCQkJCQkJCQkJCQkgKiBm bGFncyBiaXRzICovCi0vKgotICogVG8gZGV0ZWN0IHJlY292ZXJ5IGNvbmZsaWN0cyBkdXJpbmcg bG9naWNhbCBkZWNvZGluZyBvbiBhIHN0YW5kYnksIHdlIG5lZWQKLSAqIHRvIGtub3cgaWYgYSB0 YWJsZSBpcyBhIHVzZXIgY2F0YWxvZyB0YWJsZS4gRm9yIHRoYXQgd2UgYWRkIGFuIGFkZGl0aW9u YWwKLSAqIGJpdCBpbnRvIHhsX2hlYXBfdmlzaWJsZS5mbGFncywgaW4gYWRkaXRpb24gdG8gdGhl IGFib3ZlLgotICoKLSAqIE5COiBWSVNJQklMSVRZTUFQX1hMT0dfKiBtYXkgbm90IGJlIHBhc3Nl ZCB0byB2aXNpYmlsaXR5bWFwX3NldCgpLgotICovCi0jZGVmaW5lIFZJU0lCSUxJVFlNQVBfWExP R19DQVRBTE9HX1JFTAkweDA0Ci0jZGVmaW5lIFZJU0lCSUxJVFlNQVBfWExPR19WQUxJRF9CSVRT CShWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMgfCBWSVNJQklMSVRZTUFQX1hMT0dfQ0FUQUxPR19S RUwpCiAKICNlbmRpZgkJCQkJCQkvKiBWSVNJQklMSVRZTUFQREVGU19IICovCmRpZmYgLS1naXQg YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CmluZGV4IGM3NTFjMjVhMDRkLi4yYTk5NTFiNzE4OCAxMDA2NDQKLS0tIGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKQEAgLTQyOTIsNyArNDI5Miw2IEBAIHhsX2hlYXBfcHJ1bmUKIHhsX2hl YXBfcmV3cml0ZV9tYXBwaW5nCiB4bF9oZWFwX3RydW5jYXRlCiB4bF9oZWFwX3VwZGF0ZQoteGxf aGVhcF92aXNpYmxlCiB4bF9pbnZhbGlkX3BhZ2UKIHhsX2ludmFsaWRfcGFnZV9rZXkKIHhsX2lu dmFsaWRhdGlvbnMKLS0gCjIuNDMuMAoK --0000000000004d8ca00643fabb4a Content-Type: text/x-patch; charset="UTF-8"; name="v21-0008-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Disposition: attachment; filename="v21-0008-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi6mb9oo7 RnJvbSAyMDI5YmRlYzQ5ZTg4MGU4ZDM0NTNjZDdhMjI0NmE5M2U2OWI4NjdkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBGcmksIDE4IEp1bCAyMDI1IDE2OjMwOjA0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjEgMDgvMTJdIFJlbmFtZSBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoKSB0bwog R2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBl OiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhi aXQKClRoZSBmdW5jdGlvbiBpcyBjdXJyZW50bHkgb25seSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIg YSB0dXBsZeKAmXMgeG1heCBpcwp2aXNpYmxlIHRvIGFsbCB0cmFuc2FjdGlvbnMgKGFuZCB0aHVz IHJlbW92YWJsZSkuIFVwY29taW5nIGNoYW5nZXMgd2lsbAphbHNvIHVzZSBpdCB0byB0ZXN0IHdo ZXRoZXIgYSB0dXBsZeKAmXMgeG1pbiBpcyB2aXNpYmxlIHRvIGFsbCB0bwpkZWNpZGUgaWYgYSBw YWdlIGNhbiBiZSBtYXJrZWQgYWxsLXZpc2libGUgaW4gdGhlIHZpc2liaWxpdHkgbWFwLgoKVGhl IG5ldyBuYW1lLCBHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwoKSwgYmV0dGVyIHJlZmxlY3RzIHRo aXMgYnJvYWRlcgpwdXJwb3NlLgoKUmV2aWV3ZWQtYnk6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtp cmlsbEBnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2li aWxpdHkuYyB8ICA2ICsrKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMg ICAgICAgICB8IDEyICsrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2 YWN1dW0uYyAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXku YyAgICAgICAgIHwgMTcgKysrKysrKystLS0tLS0tLS0KIHNyYy9pbmNsdWRlL3V0aWxzL3NuYXBt Z3IuaCAgICAgICAgICAgICAgICAgfCAgNCArKy0tCiA1IGZpbGVzIGNoYW5nZWQsIDIwIGluc2Vy dGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW1fdmlzaWJpbGl0eS5jCmluZGV4IDA1ZjY5NDZmZTYwLi40ZWJjOGFiZGJlYiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jCkBAIC0xNDQ3LDcgKzE0NDcs NyBAQCBIZWFwVHVwbGVTYXRpc2ZpZXNOb25WYWN1dW1hYmxlKEhlYXBUdXBsZSBodHVwLCBTbmFw c2hvdCBzbmFwc2hvdCwKIAl7CiAJCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChkZWFkX2Fm dGVyKSk7CiAKLQkJaWYgKEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZChzbmFwc2hvdC0+dmlz dGVzdCwgZGVhZF9hZnRlcikpCisJCWlmIChHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwoc25hcHNo b3QtPnZpc3Rlc3QsIGRlYWRfYWZ0ZXIpKQogCQkJcmVzID0gSEVBUFRVUExFX0RFQUQ7CiAJfQog CWVsc2UKQEAgLTE1MTIsOCArMTUxMiw4IEBAIEhlYXBUdXBsZUlzU3VyZWx5RGVhZChIZWFwVHVw bGUgaHR1cCwgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QpCiAJCXJldHVybiBmYWxzZTsKIAogCS8q IERlbGV0ZXIgY29tbWl0dGVkLCBzbyB0dXBsZSBpcyBkZWFkIGlmIHRoZSBYSUQgaXMgb2xkIGVu b3VnaC4gKi8KLQlyZXR1cm4gR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKHZpc3Rlc3QsCi0J CQkJCQkJCQkgICBIZWFwVHVwbGVIZWFkZXJHZXRSYXdYbWF4KHR1cGxlKSk7CisJcmV0dXJuIEds b2JhbFZpc1hpZFZpc2libGVUb0FsbCh2aXN0ZXN0LAorCQkJCQkJCQkJSGVhcFR1cGxlSGVhZGVy R2V0UmF3WG1heCh0dXBsZSkpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwppbmRleCA4MDAzN2Q2OTBlMy4uOTg5YWY3NjU3MDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jCkBAIC0yNTAsNyArMjUwLDcgQEAgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlv biByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikKIAkgKi8KIAl2aXN0ZXN0ID0gR2xvYmFsVmlzVGVz dEZvcihyZWxhdGlvbik7CiAKLQlpZiAoIUdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCh2aXN0 ZXN0LCBwcnVuZV94aWQpKQorCWlmICghR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHZpc3Rlc3Qs IHBydW5lX3hpZCkpCiAJCXJldHVybjsKIAogCS8qCkBAIC00NzYsNyArNDc2LDcgQEAgcHJ1bmVf ZnJlZXplX3BsYW4oT2lkIHJlbG9pZCwgQnVmZmVyIGJ1ZmZlciwgUHJ1bmVTdGF0ZSAqcHJzdGF0 ZSwKIAkgKiBEZXRlcm1pbmluZyBIVFNWIG9ubHkgb25jZSBmb3IgZWFjaCB0dXBsZSBpcyByZXF1 aXJlZCBmb3IgY29ycmVjdG5lc3MsCiAJICogdG8gZGVhbCB3aXRoIGNhc2VzIHdoZXJlIHJ1bm5p bmcgSFRTViB0d2ljZSBjb3VsZCByZXN1bHQgaW4gZGlmZmVyZW50CiAJICogcmVzdWx0cy4gIEZv ciBleGFtcGxlLCBSRUNFTlRMWV9ERUFEIGNhbiB0dXJuIHRvIERFQUQgaWYgYW5vdGhlcgotCSAq IGNoZWNrZWQgaXRlbSBjYXVzZXMgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlRnVsbFhpZCgpIHRv IHVwZGF0ZSB0aGUKKwkgKiBjaGVja2VkIGl0ZW0gY2F1c2VzIEdsb2JhbFZpc0Z1bGxYaWRWaXNp YmxlVG9BbGwoKSB0byB1cGRhdGUgdGhlCiAJICogaG9yaXpvbiwgb3IgSU5TRVJUX0lOX1BST0dS RVNTIGNhbiBjaGFuZ2UgdG8gREVBRCBpZiB0aGUgaW5zZXJ0aW5nCiAJICogdHJhbnNhY3Rpb24g YWJvcnRzLgogCSAqCkBAIC0xMjM4LDExICsxMjM4LDExIEBAIGhlYXBfcHJ1bmVfc2F0aXNmaWVz X3ZhY3V1bShQcnVuZVN0YXRlICpwcnN0YXRlLCBIZWFwVHVwbGUgdHVwLCBCdWZmZXIgYnVmZmVy KQogCSAqIERldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGUgdHVwbGUgaXMgY29uc2lkZXJlZCBk ZWFkIHdoZW4gY29tcGFyZWQKIAkgKiB3aXRoIHRoZSBwcm92aWRlZCBHbG9iYWxWaXNTdGF0ZS4g T24tYWNjZXNzIHBydW5pbmcgZG9lcyBub3QgcHJvdmlkZQogCSAqIFZhY3V1bUN1dG9mZnMuIEFu ZCBmb3IgdmFjdXVtLCBldmVuIGlmIHRoZSB0dXBsZSdzIHhtYXggaXMgbm90IG9sZGVyCi0JICog dGhhbiBPbGRlc3RYbWluLCBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoKSBjb3VsZCBmaW5k IHRoZSByb3cgZGVhZAotCSAqIGlmIHRoZSBHbG9iYWxWaXNTdGF0ZSBoYXMgYmVlbiB1cGRhdGVk IHNpbmNlIHRoZSBiZWdpbm5pbmcgb2YgdmFjdXVtaW5nCisJICogdGhhbiBPbGRlc3RYbWluLCBH bG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwoKSBjb3VsZCBmaW5kIHRoZSByb3cgZGVhZCBpZgorCSAq IHRoZSBHbG9iYWxWaXNTdGF0ZSBoYXMgYmVlbiB1cGRhdGVkIHNpbmNlIHRoZSBiZWdpbm5pbmcg b2YgdmFjdXVtaW5nCiAJICogdGhlIHJlbGF0aW9uLgogCSAqLwotCWlmIChHbG9iYWxWaXNUZXN0 SXNSZW1vdmFibGVYaWQocHJzdGF0ZS0+dmlzdGVzdCwgZGVhZF9hZnRlcikpCisJaWYgKEdsb2Jh bFZpc1hpZFZpc2libGVUb0FsbChwcnN0YXRlLT52aXN0ZXN0LCBkZWFkX2FmdGVyKSkKIAkJcmV0 dXJuIEhFQVBUVVBMRV9ERUFEOwogCiAJcmV0dXJuIHJlczsKQEAgLTE3MDEsNyArMTcwMSw3IEBA IGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0 YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iCiAJCQkJLyoKIAkJCQkgKiBGb3Igbm93IGFsd2F5cyB1 c2UgcHJzdGF0ZS0+Y3V0b2ZmcyBmb3IgdGhpcyB0ZXN0LCBiZWNhdXNlCiAJCQkJICogd2Ugb25s eSB1cGRhdGUgJ2FsbF92aXNpYmxlJyBhbmQgJ2FsbF9mcm96ZW4nIHdoZW4gZnJlZXppbmcKLQkJ CQkgKiBpcyByZXF1ZXN0ZWQuIFdlIGNvdWxkIHVzZSBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVY aWQKKwkJCQkgKiBpcyByZXF1ZXN0ZWQuIFdlIGNvdWxkIHVzZSBHbG9iYWxWaXNYaWRWaXNpYmxl VG9BbGwoKQogCQkJCSAqIGluc3RlYWQsIGlmIGEgbm9uLWZyZWV6aW5nIGNhbGxlciB3YW50ZWQg dG8gc2V0IHRoZSBWTSBiaXQuCiAJCQkJICovCiAJCQkJQXNzZXJ0KHByc3RhdGUtPmN1dG9mZnMp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKaW5kZXggNzFlZjJlNTAzNmYuLjFj MGViNDI1ZWU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1 bS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKQEAgLTUzNiw3 ICs1MzYsNyBAQCB2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9sZGVyKFJlbGF0aW9uIGluZGV4LCBS ZWxhdGlvbiBoZWFwcmVsLCBCdWZmZXIgYnVmZmVyKQogCQkgKi8KIAkJaWYgKGR0LT50dXBzdGF0 ZSA9PSBTUEdJU1RfUkVESVJFQ1QgJiYKIAkJCSghVHJhbnNhY3Rpb25JZElzVmFsaWQoZHQtPnhp ZCkgfHwKLQkJCSBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQodmlzdGVzdCwgZHQtPnhpZCkp KQorCQkJIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCh2aXN0ZXN0LCBkdC0+eGlkKSkpCiAJCXsK IAkJCWR0LT50dXBzdGF0ZSA9IFNQR0lTVF9QTEFDRUhPTERFUjsKIAkJCUFzc2VydChvcGFxdWUt Pm5SZWRpcmVjdGlvbiA+IDApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv cHJvY2FycmF5LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwppbmRleCAy MDBmNzJjNmUyNS4uMjM1YzNiNTg0ZjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3Byb2NhcnJheS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5j CkBAIC00MTgxLDggKzQxODEsNyBAQCBHbG9iYWxWaXNVcGRhdGUodm9pZCkKICAqIFNlZSBjb21t ZW50IGZvciBHbG9iYWxWaXNTdGF0ZSBmb3IgZGV0YWlscy4KICAqLwogYm9vbAotR2xvYmFsVmlz VGVzdElzUmVtb3ZhYmxlRnVsbFhpZChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsCi0JCQkJCQkJCUZ1 bGxUcmFuc2FjdGlvbklkIGZ4aWQpCitHbG9iYWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKEdsb2Jh bFZpc1N0YXRlICpzdGF0ZSwgRnVsbFRyYW5zYWN0aW9uSWQgZnhpZCkKIHsKIAkvKgogCSAqIElm IGZ4aWQgaXMgb2xkZXIgdGhhbiBtYXliZV9uZWVkZWQgYm91bmQsIGl0IGRlZmluaXRlbHkgaXMg dmlzaWJsZSB0bwpAQCAtNDIxNiwxNCArNDIxNSwxNCBAQCBHbG9iYWxWaXNUZXN0SXNSZW1vdmFi bGVGdWxsWGlkKEdsb2JhbFZpc1N0YXRlICpzdGF0ZSwKIH0KIAogLyoKLSAqIFdyYXBwZXIgYXJv dW5kIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoKSBmb3IgMzJiaXQgeGlkcy4KKyAq IFdyYXBwZXIgYXJvdW5kIEdsb2JhbFZpc0Z1bGxYaWRWaXNpYmxlVG9BbGwoKSBmb3IgMzJiaXQg eGlkcy4KICAqCiAgKiBJdCBpcyBjcnVjaWFsIHRoYXQgdGhpcyBvbmx5IGdldHMgY2FsbGVkIGZv ciB4aWRzIGZyb20gYSBzb3VyY2UgdGhhdAogICogcHJvdGVjdHMgYWdhaW5zdCB4aWQgd3JhcGFy b3VuZHMgKGUuZy4gZnJvbSBhIHRhYmxlIGFuZCB0aHVzIHByb3RlY3RlZCBieQogICogcmVsZnJv emVueGlkKS4KICAqLwogYm9vbAotR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKEdsb2JhbFZp c1N0YXRlICpzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpCitHbG9iYWxWaXNYaWRWaXNpYmxlVG9B bGwoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBUcmFuc2FjdGlvbklkIHhpZCkKIHsKIAlGdWxsVHJh bnNhY3Rpb25JZCBmeGlkOwogCkBAIC00MjM3LDEyICs0MjM2LDEyIEBAIEdsb2JhbFZpc1Rlc3RJ c1JlbW92YWJsZVhpZChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIFRyYW5zYWN0aW9uSWQgeGlkKQog CSAqLwogCWZ4aWQgPSBGdWxsWGlkUmVsYXRpdmVUbyhzdGF0ZS0+ZGVmaW5pdGVseV9uZWVkZWQs IHhpZCk7CiAKLQlyZXR1cm4gR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlRnVsbFhpZChzdGF0ZSwg ZnhpZCk7CisJcmV0dXJuIEdsb2JhbFZpc0Z1bGxYaWRWaXNpYmxlVG9BbGwoc3RhdGUsIGZ4aWQp OwogfQogCiAvKgogICogQ29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgR2xvYmFsVmlzVGVzdEZv cigpIGFuZAotICogR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlRnVsbFhpZCgpLCBzZWUgdGhlaXIg Y29tbWVudHMuCisgKiBHbG9iYWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKCksIHNlZSB0aGVpciBj b21tZW50cy4KICAqLwogYm9vbAogR2xvYmFsVmlzQ2hlY2tSZW1vdmFibGVGdWxsWGlkKFJlbGF0 aW9uIHJlbCwgRnVsbFRyYW5zYWN0aW9uSWQgZnhpZCkKQEAgLTQyNTEsMTIgKzQyNTAsMTIgQEAg R2xvYmFsVmlzQ2hlY2tSZW1vdmFibGVGdWxsWGlkKFJlbGF0aW9uIHJlbCwgRnVsbFRyYW5zYWN0 aW9uSWQgZnhpZCkKIAogCXN0YXRlID0gR2xvYmFsVmlzVGVzdEZvcihyZWwpOwogCi0JcmV0dXJu IEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoc3RhdGUsIGZ4aWQpOworCXJldHVybiBH bG9iYWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKHN0YXRlLCBmeGlkKTsKIH0KIAogLyoKICAqIENv bnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIEdsb2JhbFZpc1Rlc3RGb3IoKSBhbmQKLSAqIEdsb2Jh bFZpc1Rlc3RJc1JlbW92YWJsZVhpZCgpLCBzZWUgdGhlaXIgY29tbWVudHMuCisgKiBHbG9iYWxW aXNUZXN0SXNWaXNpYmxlWGlkKCksIHNlZSB0aGVpciBjb21tZW50cy4KICAqLwogYm9vbAogR2xv YmFsVmlzQ2hlY2tSZW1vdmFibGVYaWQoUmVsYXRpb24gcmVsLCBUcmFuc2FjdGlvbklkIHhpZCkK QEAgLTQyNjUsNyArNDI2NCw3IEBAIEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxlWGlkKFJlbGF0aW9u IHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQpCiAKIAlzdGF0ZSA9IEdsb2JhbFZpc1Rlc3RGb3IocmVs KTsKIAotCXJldHVybiBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoc3RhdGUsIHhpZCk7CisJ cmV0dXJuIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChzdGF0ZSwgeGlkKTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3NuYXBtZ3IuaCBiL3NyYy9pbmNsdWRlL3V0aWxz L3NuYXBtZ3IuaAppbmRleCA2MDRjMWY5MDIxNi4uYTBlYTJjZmNlYTIgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3V0aWxzL3NuYXBtZ3IuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9zbmFwbWdy LmgKQEAgLTEwMCw4ICsxMDAsOCBAQCBleHRlcm4gY2hhciAqRXhwb3J0U25hcHNob3QoU25hcHNo b3Qgc25hcHNob3QpOwogICovCiB0eXBlZGVmIHN0cnVjdCBHbG9iYWxWaXNTdGF0ZSBHbG9iYWxW aXNTdGF0ZTsKIGV4dGVybiBHbG9iYWxWaXNTdGF0ZSAqR2xvYmFsVmlzVGVzdEZvcihSZWxhdGlv biByZWwpOwotZXh0ZXJuIGJvb2wgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKEdsb2JhbFZp c1N0YXRlICpzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpOwotZXh0ZXJuIGJvb2wgR2xvYmFsVmlz VGVzdElzUmVtb3ZhYmxlRnVsbFhpZChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIEZ1bGxUcmFuc2Fj dGlvbklkIGZ4aWQpOworZXh0ZXJuIGJvb2wgR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKEdsb2Jh bFZpc1N0YXRlICpzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpOworZXh0ZXJuIGJvb2wgR2xvYmFs VmlzRnVsbFhpZFZpc2libGVUb0FsbChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIEZ1bGxUcmFuc2Fj dGlvbklkIGZ4aWQpOwogZXh0ZXJuIGJvb2wgR2xvYmFsVmlzQ2hlY2tSZW1vdmFibGVYaWQoUmVs YXRpb24gcmVsLCBUcmFuc2FjdGlvbklkIHhpZCk7CiBleHRlcm4gYm9vbCBHbG9iYWxWaXNDaGVj a1JlbW92YWJsZUZ1bGxYaWQoUmVsYXRpb24gcmVsLCBGdWxsVHJhbnNhY3Rpb25JZCBmeGlkKTsK IAotLSAKMi40My4wCgo= --0000000000004d8ca00643fabb4a Content-Type: text/x-patch; charset="UTF-8"; name="v21-0009-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Disposition: attachment; filename="v21-0009-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi6mbczc8 RnJvbSAyMjM0ZTRiYzk4YzE3M2Q3NDBjMjdhYTU1MzQ3ZTkyYmFlYzNlNmQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM4OjI0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjEgMDkvMTJdIFVzZSBHbG9iYWxWaXNTdGF0ZSBpbiB2YWN1dW0gdG8gZGV0ZXJtaW5l 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 KysrKysrKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgICAg fCA0MyArKysrKysrKystLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1 bWxhenkuYyAgICAgICAgfCAxMCArKy0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAg ICAgICAgICAgICAgICB8IDExICsrKy0tLQogNCBmaWxlcyBjaGFuZ2VkLCA1OCBpbnNlcnRpb25z KCspLCAzNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW1fdmlzaWJpbGl0eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zp c2liaWxpdHkuYwppbmRleCA0ZWJjOGFiZGJlYi4uZWRkNTI5ZGMzYzAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYwpAQCAtMTE4OSw2ICsxMTg5LDM0IEBA IEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bShIZWFwVHVwbGUgaHR1cCwgVHJhbnNhY3Rpb25JZCBP bGRlc3RYbWluLAogCXJldHVybiByZXM7CiB9CiAKKy8qCisgKiBOZWFybHkgdGhlIHNhbWUgYXMg SGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtLCBidXQgdXNlcyBhIEdsb2JhbFZpc1N0YXRlIHRvCisg KiBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgYSB0dXBsZSBpcyBIRUFQVFVQTEVfREVBRCBPcgor ICogSEVBUFRVUExFX1JFQ0VOVExZX0RFQUQuIEl0IHNlcnZlcyB0aGUgc2FtZSBwdXJwb3NlIGJ1 dCBjYW4gYmUgdXNlZCBieQorICogY2FsbGVycyB0aGF0IGhhdmUgbm90IGNhbGN1bGF0ZWQgYSBz aW5nbGUgT2xkZXN0WG1pbiB2YWx1ZS4KKyAqLworSFRTVl9SZXN1bHQKK0hlYXBUdXBsZVNhdGlz Zmllc1ZhY3V1bUdsb2JhbFZpcyhIZWFwVHVwbGUgaHR1cCwgR2xvYmFsVmlzU3RhdGUgKnZpc3Rl c3QsCisJCQkJCQkJCSAgQnVmZmVyIGJ1ZmZlcikKK3sKKwlUcmFuc2FjdGlvbklkIGRlYWRfYWZ0 ZXIgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlIVFNWX1Jlc3VsdCByZXM7CisKKwlyZXMgPSBI ZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW1Ib3Jpem9uKGh0dXAsIGJ1ZmZlciwgJmRlYWRfYWZ0ZXIp OworCisJaWYgKHJlcyA9PSBIRUFQVFVQTEVfUkVDRU5UTFlfREVBRCkKKwl7CisJCUFzc2VydChU cmFuc2FjdGlvbklkSXNWYWxpZChkZWFkX2FmdGVyKSk7CisKKwkJaWYgKEdsb2JhbFZpc1hpZFZp c2libGVUb0FsbCh2aXN0ZXN0LCBkZWFkX2FmdGVyKSkKKwkJCXJlcyA9IEhFQVBUVVBMRV9ERUFE OworCX0KKwllbHNlCisJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVhZF9hZnRlcikp OworCisJcmV0dXJuIHJlczsKK30KKwogLyoKICAqIFdvcmsgaG9yc2UgZm9yIEhlYXBUdXBsZVNh dGlzZmllc1ZhY3V1bSBhbmQgc2ltaWxhciByb3V0aW5lcy4KICAqCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jCmluZGV4IDk4OWFmNzY1NzAyLi4wNDBlZmU4MGYyZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTQzOSwxMSArNDM5LDEyIEBAIHBydW5lX2ZyZWV6ZV9z ZXR1cChQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCiAJLyoKIAkgKiBUaGUgdmlzaWJpbGl0 eSBjdXRvZmYgeGlkIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlLCBjb21taXR0ZWQgdHVwbGVz Ci0JICogb2xkZXIgdGhhbiBPbGRlc3RYbWluIG9uIHRoZSBwYWdlLiBUaGlzIGZpZWxkIGlzIG9u bHkga2VwdCB1cC10by1kYXRlCi0JICogaWYgdGhlIHBhZ2UgaXMgYWxsLXZpc2libGUuIEFzIHNv b24gYXMgYSB0dXBsZSBpcyBlbmNvdW50ZXJlZCB0aGF0IGlzCi0JICogbm90IHZpc2libGUgdG8g YWxsLCB0aGlzIGZpZWxkIGlzIHVubWFpbnRhaW5lZC4gQXMgbG9uZyBhcyBpdCBpcwotCSAqIG1h aW50YWluZWQsIGl0IGNhbiBiZSB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgc25hcHNob3QgY29uZmxp Y3QgaG9yaXpvbgotCSAqIHdoZW4gdXBkYXRpbmcgdGhlIFZNIGFuZC9vciBmcmVlemluZyBhbGwg dGhlIHR1cGxlcyBvbiB0aGUgcGFnZS4KKwkgKiBvbiB0aGUgcGFnZSBvbGRlciB0aGFuIHRoZSB2 aXNpYmlsaXR5IGhvcml6b24gcmVwcmVzZW50ZWQgaW4gdGhlCisJICogR2xvYmFsVmlzU3RhdGUu IFRoaXMgZmllbGQgaXMgb25seSBrZXB0IHVwLXRvLWRhdGUgaWYgdGhlIHBhZ2UgaXMKKwkgKiBh bGwtdmlzaWJsZS4gQXMgc29vbiBhcyBhIHR1cGxlIGlzIGVuY291bnRlcmVkIHRoYXQgaXMgbm90 IHZpc2libGUgdG8KKwkgKiBhbGwsIHRoaXMgZmllbGQgaXMgdW5tYWludGFpbmVkLiBBcyBsb25n IGFzIGl0IGlzIG1haW50YWluZWQsIGl0IGNhbiBiZQorCSAqIHVzZWQgdG8gY2FsY3VsYXRlIHRo ZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uIHdoZW4gdXBkYXRpbmcgdGhlIFZNCisJICogYW5k L29yIGZyZWV6aW5nIGFsbCB0aGUgdHVwbGVzIG9uIHRoZSBwYWdlLgogCSAqLwogCXByc3RhdGUt PnZpc2liaWxpdHlfY3V0b2ZmX3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogfQpAQCAtODg2 LDE0ICs4ODcsMTMgQEAgaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhSZWxhdGlvbiByZWxhdGlvbiwK ICAqLwogc3RhdGljIGJvb2wKIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWws IEJ1ZmZlciBidWYsCi0JCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJIEds b2JhbFZpc1N0YXRlICp2aXN0ZXN0LAogCQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4sCiAJCQkJCQkg VHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAogCQkJCQkJIE9mZnNldE51bWJl ciAqbG9nZ2luZ19vZmZudW0pCiB7CiAKLQlyZXR1cm4gaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92 aXNpYmxlKHJlbCwgYnVmLAotCQkJCQkJCQkJCSAgT2xkZXN0WG1pbiwKKwlyZXR1cm4gaGVhcF9w YWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKHJlbCwgYnVmLCB2aXN0ZXN0LAogCQkJCQkJCQkJCSAg TlVMTCwgMCwKIAkJCQkJCQkJCQkgIGFsbF9mcm96ZW4sCiAJCQkJCQkJCQkJICB2aXNpYmlsaXR5 X2N1dG9mZl94aWQsCkBAIC05OTQsNiArOTk0LDE2IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCXByc3RhdGUubmRlYWQgPiAwIHx8CiAJ CXByc3RhdGUubnVudXNlZCA+IDA7CiAKKwkvKgorCSAqIEFmdGVyIHByb2Nlc3NpbmcgYWxsIHRo ZSBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZSwgaWYgdGhlIG5ld2VzdCB4bWluCisJICogYW1vbmdz dCB0aGVtIGlzIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lLCB0aGUgcGFnZSBjYW5ub3QgYmUKKwkg KiBhbGwtdmlzaWJsZS4KKwkgKi8KKwlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJgorCQlUcmFu c2FjdGlvbklkSXNOb3JtYWwocHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQpICYmCisJCSFH bG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwocHJzdGF0ZS52aXN0ZXN0LCBwcnN0YXRlLnZpc2liaWxp dHlfY3V0b2ZmX3hpZCkpCisJCXByc3RhdGUuYWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF9mcm96 ZW4gPSBmYWxzZTsKKwogCS8qCiAJICogRXZlbiBpZiB3ZSBkb24ndCBwcnVuZSBhbnl0aGluZywg aWYgd2UgZm91bmQgYSBuZXcgdmFsdWUgZm9yIHRoZQogCSAqIHBkX3BydW5lX3hpZCBmaWVsZCBv ciB0aGUgcGFnZSB3YXMgbWFya2VkIGZ1bGwsIHdlIHdpbGwgdXBkYXRlIHRoZSBoaW50CkBAIC0x MTY1LDEwICsxMTc1LDkgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQ YXJhbXMgKnBhcmFtcywKIAkJYm9vbAkJZGVidWdfYWxsX2Zyb3plbjsKIAogCQlBc3NlcnQocHJz dGF0ZS5scGRlYWRfaXRlbXMgPT0gMCk7Ci0JCUFzc2VydChwcnN0YXRlLmN1dG9mZnMpOwogCiAJ CWlmICghaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKHBhcmFtcy0+cmVsYXRpb24sIGJ1ZmZlciwK LQkJCQkJCQkJCSAgcHJzdGF0ZS5jdXRvZmZzLT5PbGRlc3RYbWluLAorCQkJCQkJCQkJICBwcnN0 YXRlLnZpc3Rlc3QsCiAJCQkJCQkJCQkgICZkZWJ1Z19hbGxfZnJvemVuLAogCQkJCQkJCQkJICAm ZGVidWdfY3V0b2ZmLCBvZmZfbG9jKSkKIAkJCUFzc2VydChmYWxzZSk7CkBAIC0xNjk4LDIwICsx NzA3LDYgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdlIHBhZ2Us IFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAkJCQkgKi8KIAkJCQl4bWluID0gSGVh cFR1cGxlSGVhZGVyR2V0WG1pbihodHVwKTsKIAotCQkJCS8qCi0JCQkJICogRm9yIG5vdyBhbHdh eXMgdXNlIHByc3RhdGUtPmN1dG9mZnMgZm9yIHRoaXMgdGVzdCwgYmVjYXVzZQotCQkJCSAqIHdl IG9ubHkgdXBkYXRlICdhbGxfdmlzaWJsZScgYW5kICdhbGxfZnJvemVuJyB3aGVuIGZyZWV6aW5n Ci0JCQkJICogaXMgcmVxdWVzdGVkLiBXZSBjb3VsZCB1c2UgR2xvYmFsVmlzWGlkVmlzaWJsZVRv QWxsKCkKLQkJCQkgKiBpbnN0ZWFkLCBpZiBhIG5vbi1mcmVlemluZyBjYWxsZXIgd2FudGVkIHRv IHNldCB0aGUgVk0gYml0LgotCQkJCSAqLwotCQkJCUFzc2VydChwcnN0YXRlLT5jdXRvZmZzKTsK LQkJCQlpZiAoIVRyYW5zYWN0aW9uSWRQcmVjZWRlcyh4bWluLCBwcnN0YXRlLT5jdXRvZmZzLT5P bGRlc3RYbWluKSkKLQkJCQl7Ci0JCQkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7Ci0J CQkJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKLQkJCQkJYnJlYWs7Ci0JCQkJfQotCiAJ CQkJLyogVHJhY2sgbmV3ZXN0IHhtaW4gb24gcGFnZS4gKi8KIAkJCQlpZiAoVHJhbnNhY3Rpb25J ZEZvbGxvd3MoeG1pbiwgcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRvZmZfeGlkKSAmJgogCQkJCQlU cmFuc2FjdGlvbklkSXNOb3JtYWwoeG1pbikpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMKaW5kZXggZmQ2OGRmY2ZjZTIuLmZkZjM3NjI1Y2QwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jCkBAIC0yNzMwLDcgKzI3MzAsNyBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2Uo TFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkg KiBkb25lIG91dHNpZGUgdGhlIGNyaXRpY2FsIHNlY3Rpb24uCiAJICovCiAJaWYgKGhlYXBfcGFn ZV93b3VsZF9iZV9hbGxfdmlzaWJsZSh2YWNyZWwtPnJlbCwgYnVmZmVyLAotCQkJCQkJCQkJICAg dmFjcmVsLT5jdXRvZmZzLk9sZGVzdFhtaW4sCisJCQkJCQkJCQkgICB2YWNyZWwtPnZpc3Rlc3Qs CiAJCQkJCQkJCQkgICBkZWFkb2Zmc2V0cywgbnVtX29mZnNldHMsCiAJCQkJCQkJCQkgICAmYWxs X2Zyb3plbiwgJnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKIAkJCQkJCQkJCSAgICZ2YWNyZWwtPm9m Zm51bSkpCkBAIC0zNDg5LDcgKzM0ODksNyBAQCBkZWFkX2l0ZW1zX2NsZWFudXAoTFZSZWxTdGF0 ZSAqdmFjcmVsKQogICogUmV0dXJucyB0cnVlIGlmIHRoZSBwYWdlIGlzIGFsbC12aXNpYmxlIG90 aGVyIHRoYW4gdGhlIHByb3ZpZGVkCiAgKiBkZWFkb2Zmc2V0cyBhbmQgZmFsc2Ugb3RoZXJ3aXNl LgogICoKLSAqIE9sZGVzdFhtaW4gaXMgdXNlZCB0byBkZXRlcm1pbmUgdmlzaWJpbGl0eS4KKyAq IHZpc3Rlc3QgaXMgdXNlZCB0byBkZXRlcm1pbmUgdmlzaWJpbGl0eS4KICAqCiAgKiBPdXRwdXQg cGFyYW1ldGVyczoKICAqCkBAIC0zNTA1LDcgKzM1MDUsNyBAQCBkZWFkX2l0ZW1zX2NsZWFudXAo TFZSZWxTdGF0ZSAqdmFjcmVsKQogICovCiBib29sCiBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zp c2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQg T2xkZXN0WG1pbiwKKwkJCQkJCQkgICBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCQkg ICBPZmZzZXROdW1iZXIgKmRlYWRvZmZzZXRzLAogCQkJCQkJCSAgIGludCBuZGVhZG9mZnNldHMs CiAJCQkJCQkJICAgYm9vbCAqYWxsX2Zyb3plbiwKQEAgLTM1NzksNyArMzU3OSw3IEBAIGhlYXBf cGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAKIAkJ LyogVmlzaWJpbGl0eSBjaGVja3MgbWF5IGRvIElPIG9yIGFsbG9jYXRlIG1lbW9yeSAqLwogCQlB c3NlcnQoQ3JpdFNlY3Rpb25Db3VudCA9PSAwKTsKLQkJc3dpdGNoIChIZWFwVHVwbGVTYXRpc2Zp ZXNWYWN1dW0oJnR1cGxlLCBPbGRlc3RYbWluLCBidWYpKQorCQlzd2l0Y2ggKEhlYXBUdXBsZVNh dGlzZmllc1ZhY3V1bUdsb2JhbFZpcygmdHVwbGUsIHZpc3Rlc3QsIGJ1ZikpCiAJCXsKIAkJCWNh c2UgSEVBUFRVUExFX0xJVkU6CiAJCQkJewpAQCAtMzU5OCw3ICszNTk4LDcgQEAgaGVhcF9wYWdl X3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJICog dGhhdCBldmVyeW9uZSBzZWVzIGl0IGFzIGNvbW1pdHRlZD8KIAkJCQkJICovCiAJCQkJCXhtaW4g PSBIZWFwVHVwbGVIZWFkZXJHZXRYbWluKHR1cGxlLnRfZGF0YSk7Ci0JCQkJCWlmICghVHJhbnNh Y3Rpb25JZFByZWNlZGVzKHhtaW4sIE9sZGVzdFhtaW4pKQorCQkJCQlpZiAoIUdsb2JhbFZpc1hp ZFZpc2libGVUb0FsbCh2aXN0ZXN0LCB4bWluKSkKIAkJCQkJewogCQkJCQkJYWxsX3Zpc2libGUg PSBmYWxzZTsKIAkJCQkJCSphbGxfZnJvemVuID0gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXgg OTM3YjQ2YTc3ZGIuLjJiNmE1MjFlNGVhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC0yNzYsMTAgKzI3 Niw5IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUGFyYW1zCiAKIAkvKgogCSAqIENvbnRh aW5zIHRoZSBjdXRvZmZzIHVzZWQgZm9yIGZyZWV6aW5nLiBUaGV5IGFyZSByZXF1aXJlZCBpZiB0 aGUKLQkgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQuIGN1dG9mZnMtPk9s ZGVzdFhtaW4gaXMgYWxzbyB1c2VkCi0JICogdG8gZGV0ZXJtaW5lIGlmIGRlYWQgdHVwbGVzIGFy ZSBIRUFQVFVQTEVfUkVDRU5UTFlfREVBRCBvcgotCSAqIEhFQVBUVVBMRV9ERUFELiBDdXJyZW50 bHkgb25seSB2YWN1dW0gcGFzc2VzIGluIGN1dG9mZnMuIFZhY3V1bQotCSAqIGNhbGN1bGF0ZXMg dGhlbSBvbmNlLCBhdCB0aGUgYmVnaW5uaW5nIG9mIHZhY3V1bWluZyB0aGUgcmVsYXRpb24uCisJ ICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0LiBDdXJyZW50bHkgb25seSB2 YWN1dW0gcGFzc2VzIGluCisJICogY3V0b2Zmcy4gVmFjdXVtIGNhbGN1bGF0ZXMgdGhlbSBvbmNl LCBhdCB0aGUgYmVnaW5uaW5nIG9mIHZhY3V1bWluZyB0aGUKKwkgKiByZWxhdGlvbi4KIAkgKi8K IAlzdHJ1Y3QgVmFjdXVtQ3V0b2ZmcyAqY3V0b2ZmczsKIH0gUHJ1bmVGcmVlemVQYXJhbXM7CkBA IC00NDQsNyArNDQzLDcgQEAgZXh0ZXJuIHZvaWQgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShS ZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIGV4dGVybiB2b2lkIGhlYXBfdmFjdXVt X3JlbChSZWxhdGlvbiByZWwsCiAJCQkJCQkJY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywgQnVm ZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KTsKIGV4dGVybiBib29sIGhlYXBfcGFnZV93b3Vs ZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCi0JCQkJCQkJCQkJICAg VHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJCQkJCSAgIEdsb2JhbFZpc1N0YXRlICp2 aXN0ZXN0LAogCQkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqZGVhZG9mZnNldHMsCiAJCQkJCQkJ CQkJICAgaW50IG5kZWFkb2Zmc2V0cywKIAkJCQkJCQkJCQkgICBib29sICphbGxfZnJvemVuLApA QCAtNDU4LDYgKzQ1Nyw4IEBAIGV4dGVybiBUTV9SZXN1bHQgSGVhcFR1cGxlU2F0aXNmaWVzVXBk YXRlKEhlYXBUdXBsZSBodHVwLCBDb21tYW5kSWQgY3VyY2lkLAogCQkJCQkJCQkJCSAgQnVmZmVy IGJ1ZmZlcik7CiBleHRlcm4gSFRTVl9SZXN1bHQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKEhl YXBUdXBsZSBodHVwLCBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAJCQkJCQkJCQkJCUJ1ZmZl ciBidWZmZXIpOworZXh0ZXJuIEhUU1ZfUmVzdWx0IEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bUds b2JhbFZpcyhIZWFwVHVwbGUgaHR1cCwKKwkJCQkJCQkJCQkJCQkgR2xvYmFsVmlzU3RhdGUgKnZp c3Rlc3QsIEJ1ZmZlciBidWZmZXIpOwogZXh0ZXJuIEhUU1ZfUmVzdWx0IEhlYXBUdXBsZVNhdGlz Zmllc1ZhY3V1bUhvcml6b24oSGVhcFR1cGxlIGh0dXAsIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJ CQkJCQkgICBUcmFuc2FjdGlvbklkICpkZWFkX2FmdGVyKTsKIGV4dGVybiB2b2lkIEhlYXBUdXBs ZVNldEhpbnRCaXRzKEhlYXBUdXBsZUhlYWRlciB0dXBsZSwgQnVmZmVyIGJ1ZmZlciwKLS0gCjIu NDMuMAoK --0000000000004d8ca00643fabb4a Content-Type: text/x-patch; charset="UTF-8"; name="v21-0010-Unset-all_visible-sooner-if-not-freezing.patch" Content-Disposition: attachment; filename="v21-0010-Unset-all_visible-sooner-if-not-freezing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi6mbfu59 RnJvbSA1ODI0MmM5NWEzZTczN2YzNjU5OTEzZjI0YjIyMjE5ZGJhZmUxOTUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDE1OjIyOjM1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjEgMTAvMTJdIFVuc2V0IGFsbF92aXNpYmxlIHNvb25lciBpZiBub3QgZnJlZXppbmcK TUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04 CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCkluIHRoZSBwcnVuZS9mcmVlemUgcGF0 aCwgd2UgY3VycmVudGx5IGRlbGF5IGNsZWFyaW5nIGFsbF92aXNpYmxlIGFuZAphbGxfZnJvemVu IGluIHRoZSBwcmVzZW5jZSBvZiBkZWFkIGl0ZW1zIHRvIGFsbG93IG9wcG9ydHVuaXN0aWMKZnJl ZXppbmcuCgpIb3dldmVyLCBpZiBubyBmcmVlemluZyB3aWxsIGJlIGF0dGVtcHRlZCwgdGhlcmXi gJlzIG5vIG5lZWQgdG8gZGVsYXkuCkNsZWFyaW5nIHRoZSBmbGFncyBlYXJsaWVyIGF2b2lkcyBl eHRyYSBib29ra2VlcGluZyBpbgpoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFs KCkuIFRoaXMgY3VycmVudGx5IGhhcyBubyBydW50aW1lCmVmZmVjdCBiZWNhdXNlIGFsbCBjYWxs ZXJzIHRoYXQgY29uc2lkZXIgc2V0dGluZyB0aGUgVk0gYWxzbyBwcmVwYXJlCmZyZWV6ZSBwbGFu cywgYnV0IHVwY29taW5nIGNoYW5nZXMgd2lsbCBhbGxvdyBvbi1hY2Nlc3MgcHJ1bmluZyB0byBz ZXQKdGhlIFZNIHdpdGhvdXQgZnJlZXppbmcuIFRoZSBleHRyYSBib29ra2VlcGluZyB3YXMgbm90 aWNlYWJsZSBpbiBhCnByb2ZpbGUgb2Ygb24tYWNjZXNzIFZNIHNldHRpbmcuCi0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgfCAxNSArKysrKysrKysrKysrLS0KIDEgZmls ZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggMDQwZWZlODBmMmUuLjkwMjcwMDgxYWNkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMTU2NCw4ICsxNTY0LDEzIEBAIGhlYXBfcHJ1 bmVfcmVjb3JkX2RlYWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSwK IAkvKgogCSAqIERlbGliZXJhdGVseSBkZWxheSB1bnNldHRpbmcgYWxsX3Zpc2libGUgYW5kIGFs bF9mcm96ZW4gdW50aWwgbGF0ZXIKIAkgKiBkdXJpbmcgcHJ1bmluZy4gUmVtb3ZhYmxlIGRlYWQg dHVwbGVzIHNob3VsZG4ndCBwcmVjbHVkZSBmcmVlemluZyB0aGUKLQkgKiBwYWdlLgorCSAqIHBh Z2UuIElmIHdlIHdvbid0IGF0dGVtcHQgZnJlZXppbmcsIGp1c3QgdW5zZXQgYWxsLXZpc2libGUg bm93LCB0aG91Z2guCiAJICovCisJaWYgKCFwcnN0YXRlLT5hdHRlbXB0X2ZyZWV6ZSkKKwl7CisJ CXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CisJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSBm YWxzZTsKKwl9CiAKIAkvKiBSZWNvcmQgdGhlIGRlYWQgb2Zmc2V0IGZvciB2YWN1dW0gKi8KIAlw cnN0YXRlLT5kZWFkb2Zmc2V0c1twcnN0YXRlLT5scGRlYWRfaXRlbXMrK10gPSBvZmZudW07CkBA IC0xODI0LDggKzE4MjksMTQgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX2RlYWQo UGFnZSBwYWdlLCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIKIAkgKiBTaW1pbGFy bHksIGRvbid0IHVuc2V0IGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIHVudGlsIGxhdGVyLCBh dCB0aGUKIAkgKiBlbmQgb2YgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKS4gIFRoaXMgd2ls bCBhbGxvdyB1cyB0byBhdHRlbXB0IHRvCiAJICogZnJlZXplIHRoZSBwYWdlIGFmdGVyIHBydW5p bmcuICBBcyBsb25nIGFzIHdlIHVuc2V0IGl0IGJlZm9yZSB1cGRhdGluZwotCSAqIHRoZSB2aXNp YmlsaXR5IG1hcCwgdGhpcyB3aWxsIGJlIGNvcnJlY3QuCisJICogdGhlIHZpc2liaWxpdHkgbWFw LCB0aGlzIHdpbGwgYmUgY29ycmVjdC4gSWYgd2Ugd29uJ3QgYXR0ZW1wdCBmcmVlemluZywKKwkg KiB0aG91Z2gsIGp1c3QgdW5zZXQgYWxsLXZpc2libGUgbm93LgogCSAqLworCWlmICghcHJzdGF0 ZS0+YXR0ZW1wdF9mcmVlemUpCisJeworCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOwor CQlwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CisJfQogCiAJLyogUmVjb3JkIHRoZSBkZWFk IG9mZnNldCBmb3IgdmFjdXVtICovCiAJcHJzdGF0ZS0+ZGVhZG9mZnNldHNbcHJzdGF0ZS0+bHBk ZWFkX2l0ZW1zKytdID0gb2ZmbnVtOwotLSAKMi40My4wCgo= --0000000000004d8ca00643fabb4a Content-Type: text/x-patch; charset="UTF-8"; name="v21-0011-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Disposition: attachment; filename="v21-0011-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi6mbka310 RnJvbSBmOTYyZWVlMjc2MGY3ZjA5MjdhMzE4YWMwNWI1NWU0OGVlYTNjZWMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM0OjMwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjEgMTEvMTJdIEFsbG93IG9uLWFjY2VzcyBwcnVuaW5nIHRvIHNldCBwYWdlcyBhbGwt dmlzaWJsZQoKTWFueSBxdWVyaWVzIGRvIG5vdCBtb2RpZnkgdGhlIHVuZGVybHlpbmcgcmVsYXRp b24uIEZvciBzdWNoIHF1ZXJpZXMsIGlmCm9uLWFjY2VzcyBwcnVuaW5nIG9jY3VycyBkdXJpbmcg dGhlIHNjYW4sIHdlIGNhbiBjaGVjayB3aGV0aGVyIHRoZSBwYWdlCmhhcyBiZWNvbWUgYWxsLXZp c2libGUgYW5kIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAgYWNjb3JkaW5nbHkuClByZXZpb3Vz bHksIG9ubHkgdmFjdXVtIGFuZCBDT1BZIEZSRUVaRSBtYXJrZWQgcGFnZXMgYXMgYWxsLXZpc2li bGUgb3IKYWxsLWZyb3plbi4KClN1cHBvcnRpbmcgdGhpcyByZXF1aXJlcyBwYXNzaW5nIGluZm9y bWF0aW9uIGFib3V0IHdoZXRoZXIgdGhlIHJlbGF0aW9uCmlzIG1vZGlmaWVkIGZyb20gdGhlIGV4 ZWN1dG9yIGRvd24gdG8gdGhlIHNjYW4gZGVzY3JpcHRvci4KClRoaXMgY29tbWl0IGltcGxlbWVu dHMgb24tYWNjZXNzIFZNIHNldHRpbmcgZm9yIHNlcXVlbnRpYWwgc2NhbnMgYXMgd2VsbAphcyBm b3IgdGhlIHVuZGVybHlpbmcgaGVhcCByZWxhdGlvbiBpbiBpbmRleCBzY2FucyBhbmQgYml0bWFw IGhlYXAKc2NhbnMuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBn bWFpbC5jb20+ClJldmlld2VkLWJ5OiBLaXJpbGwgUmVzaGtlIDxyZXNoa2VraXJpbGxAZ21haWwu Y29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL2ZsYXQvQ0FBS1J1X1pNdzZOcGRf cW0yS00lMkJGd1EzY01PTXgxRGgzVk1ocDgtVjdTT0x4ZEs5LWclNDBtYWlsLmdtYWlsLmNvbQot LS0KIGNvbnRyaWIvcGdyb3dsb2Nrcy9wZ3Jvd2xvY2tzLmMgICAgICAgICAgICAgICB8ICAyICst CiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgICAgICAgICAgICAgICAgfCAgMyArLQog c3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyAgICAgICAgICAgIHwgIDMgKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8IDE1ICsrKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICAgICB8IDIyICsrKystLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgICAgICAgIHwgNjkgKysrKysr KysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgICAgICAgICAg ICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMgICAgICAgICAg ICB8ICA2ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyAgICAgICAgICAg fCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyAgICAgICAgICAgIHwg IDggKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb25zdHJhaW50LmMgICAgICAgICAgICAgfCAg MiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgICAgICAgICAgICAgICAgIHwgIDIg Ky0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICA0ICst CiBzcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jICAgICAgICAgICAgICAgfCAgNCArLQog c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgICAgICAgICAgIHwgIDIgKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAgICAgICB8ICA0ICsrCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyAgICAgICAgfCAgOCArLS0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICAgICAgICB8ICAyICsKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jICAgICB8ICA5ICsrLQogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYyAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyAgICAgICAgICB8IDExICsrLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAgICAgICAgIHwgMjYgKysrKysrLQogc3JjL2JhY2tl bmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYyAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9zZWxmdW5jcy5jICAgICAgICAgICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9h Y2Nlc3MvZ2VuYW0uaCAgICAgICAgICAgICAgICAgICAgfCAgMyArLQogc3JjL2luY2x1ZGUvYWNj ZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgICAgIHwgMzAgKysrKysrKy0KIHNyYy9pbmNsdWRl L2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgICAgICB8IDE5ICsrLS0tCiBzcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgNiArKwogLi4uL3QvMDM1X3N0 YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbCAgICAgICAgIHwgIDMgKy0KIDI5IGZpbGVzIGNoYW5n ZWQsIDIxMCBpbnNlcnRpb25zKCspLCA2NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250 cmliL3Bncm93bG9ja3MvcGdyb3dsb2Nrcy5jIGIvY29udHJpYi9wZ3Jvd2xvY2tzL3Bncm93bG9j a3MuYwppbmRleCBmODgyNjkzMzJiNi4uMjdmMDFkODA1NWYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv cGdyb3dsb2Nrcy9wZ3Jvd2xvY2tzLmMKKysrIGIvY29udHJpYi9wZ3Jvd2xvY2tzL3Bncm93bG9j a3MuYwpAQCAtMTE0LDcgKzExNCw3IEBAIHBncm93bG9ja3MoUEdfRlVOQ1RJT05fQVJHUykKIAkJ CQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSk7CiAKIAkvKiBTY2FuIHRoZSByZWxh dGlvbiAqLwotCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVsLCBHZXRBY3RpdmVTbmFwc2hvdCgp LCAwLCBOVUxMKTsKKwlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJlbCwgR2V0QWN0aXZlU25hcHNo b3QoKSwgMCwgTlVMTCwgMCk7CiAJaHNjYW4gPSAoSGVhcFNjYW5EZXNjKSBzY2FuOwogCiAJYXR0 aW5tZXRhID0gVHVwbGVEZXNjR2V0QXR0SW5NZXRhZGF0YShyc2luZm8tPnNldERlc2MpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2JyaW4vYnJpbi5jCmluZGV4IGNiMzMzMTkyMWNiLi5iOTYxMzc4N2I4NSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9icmluL2JyaW4uYwpAQCAtMjg0Miw3ICsyODQyLDggQEAgX2JyaW5fcGFyYWxsZWxfc2Nhbl9h bmRfYnVpbGQoQnJpbkJ1aWxkU3RhdGUgKnN0YXRlLAogCWluZGV4SW5mby0+aWlfQ29uY3VycmVu dCA9IGJyaW5zaGFyZWQtPmlzY29uY3VycmVudDsKIAogCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5f cGFyYWxsZWwoaGVhcCwKLQkJCQkJCQkJCVBhcmFsbGVsVGFibGVTY2FuRnJvbUJyaW5TaGFyZWQo YnJpbnNoYXJlZCkpOworCQkJCQkJCQkJUGFyYWxsZWxUYWJsZVNjYW5Gcm9tQnJpblNoYXJlZChi cmluc2hhcmVkKSwKKwkJCQkJCQkJCTApOwogCiAJcmVsdHVwbGVzID0gdGFibGVfaW5kZXhfYnVp bGRfc2NhbihoZWFwLCBpbmRleCwgaW5kZXhJbmZvLCB0cnVlLCB0cnVlLAogCQkJCQkJCQkJICAg YnJpbmJ1aWxkQ2FsbGJhY2tQYXJhbGxlbCwgc3RhdGUsIHNjYW4pOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4v Z2luaW5zZXJ0LmMKaW5kZXggYzJiODc5YjJiZjYuLjE0Nzg0NDY5MGExIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9naW4vZ2luaW5zZXJ0LmMKQEAgLTIwNTgsNyArMjA1OCw4IEBAIF9naW5fcGFyYWxsZWxfc2Nh bl9hbmRfYnVpbGQoR2luQnVpbGRTdGF0ZSAqc3RhdGUsCiAJaW5kZXhJbmZvLT5paV9Db25jdXJy ZW50ID0gZ2luc2hhcmVkLT5pc2NvbmN1cnJlbnQ7CiAKIAlzY2FuID0gdGFibGVfYmVnaW5zY2Fu X3BhcmFsbGVsKGhlYXAsCi0JCQkJCQkJCQlQYXJhbGxlbFRhYmxlU2NhbkZyb21HaW5CdWlsZFNo YXJlZChnaW5zaGFyZWQpKTsKKwkJCQkJCQkJCVBhcmFsbGVsVGFibGVTY2FuRnJvbUdpbkJ1aWxk U2hhcmVkKGdpbnNoYXJlZCksCisJCQkJCQkJCQkwKTsKIAogCXJlbHR1cGxlcyA9IHRhYmxlX2lu ZGV4X2J1aWxkX3NjYW4oaGVhcCwgaW5kZXgsIGluZGV4SW5mbywgdHJ1ZSwgcHJvZ3Jlc3MsCiAJ CQkJCQkJCQkgICBnaW5CdWlsZENhbGxiYWNrUGFyYWxsZWwsIHN0YXRlLCBzY2FuKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggMmJmZjM3ZTAzYjUuLmFlNTNlMzExY2UxIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtNTU1LDYgKzU1NSw3IEBAIGhlYXBfcHJlcGFyZV9wYWdl c2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCUJ1ZmZlcgkJYnVmZmVyID0gc2Nhbi0+cnNfY2J1 ZjsKIAlCbG9ja051bWJlciBibG9jayA9IHNjYW4tPnJzX2NibG9jazsKIAlTbmFwc2hvdAlzbmFw c2hvdDsKKwlCdWZmZXIJICAgKnZtYnVmZmVyID0gTlVMTDsKIAlQYWdlCQlwYWdlOwogCWludAkJ CWxpbmVzOwogCWJvb2wJCWFsbF92aXNpYmxlOwpAQCAtNTY5LDcgKzU3MCw5IEBAIGhlYXBfcHJl cGFyZV9wYWdlc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCS8qCiAJICogUHJ1bmUgYW5kIHJl cGFpciBmcmFnbWVudGF0aW9uIGZvciB0aGUgd2hvbGUgcGFnZSwgaWYgcG9zc2libGUuCiAJICov Ci0JaGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19iYXNlLnJzX3JkLCBidWZmZXIpOworCWlm IChzc2Nhbi0+cnNfZmxhZ3MgJiBTT19ISU5UX1JFTF9SRUFEX09OTFkpCisJCXZtYnVmZmVyID0g JnNjYW4tPnJzX3ZtYnVmZmVyOworCWhlYXBfcGFnZV9wcnVuZV9vcHQoc2Nhbi0+cnNfYmFzZS5y c19yZCwgYnVmZmVyLCB2bWJ1ZmZlcik7CiAKIAkvKgogCSAqIFdlIG11c3QgaG9sZCBzaGFyZSBs b2NrIG9uIHRoZSBidWZmZXIgY29udGVudCB3aGlsZSBleGFtaW5pbmcgdHVwbGUKQEAgLTEyNDYs NiArMTI0OSw3IEBAIGhlYXBfYmVnaW5zY2FuKFJlbGF0aW9uIHJlbGF0aW9uLCBTbmFwc2hvdCBz bmFwc2hvdCwKIAkJCQkJCQkJCQkJCQkJICBzaXplb2YoVEJNSXRlcmF0ZVJlc3VsdCkpOwogCX0K IAorCXNjYW4tPnJzX3ZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKIAogCXJldHVybiAoVGFibGVT Y2FuRGVzYykgc2NhbjsKIH0KQEAgLTEyODQsNiArMTI4OCwxMiBAQCBoZWFwX3Jlc2NhbihUYWJs ZVNjYW5EZXNjIHNzY2FuLCBTY2FuS2V5IGtleSwgYm9vbCBzZXRfcGFyYW1zLAogCQlzY2FuLT5y c19jYnVmID0gSW52YWxpZEJ1ZmZlcjsKIAl9CiAKKwlpZiAoQnVmZmVySXNWYWxpZChzY2FuLT5y c192bWJ1ZmZlcikpCisJeworCQlSZWxlYXNlQnVmZmVyKHNjYW4tPnJzX3ZtYnVmZmVyKTsKKwkJ c2Nhbi0+cnNfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOworCX0KKwogCS8qCiAJICogU09fVFlQ RV9CSVRNQVBTQ0FOIHdvdWxkIGJlIGNsZWFuZWQgdXAgaGVyZSwgYnV0IGl0IGRvZXMgbm90IGhv bGQgYW55CiAJICogYWRkaXRpb25hbCBkYXRhIHZzIGEgbm9ybWFsIEhlYXBTY2FuCkBAIC0xMzE2 LDYgKzEzMjYsOSBAQCBoZWFwX2VuZHNjYW4oVGFibGVTY2FuRGVzYyBzc2NhbikKIAlpZiAoQnVm ZmVySXNWYWxpZChzY2FuLT5yc19jYnVmKSkKIAkJUmVsZWFzZUJ1ZmZlcihzY2FuLT5yc19jYnVm KTsKIAorCWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4tPnJzX3ZtYnVmZmVyKSkKKwkJUmVsZWFzZUJ1 ZmZlcihzY2FuLT5yc192bWJ1ZmZlcik7CisKIAkvKgogCSAqIE11c3QgZnJlZSB0aGUgcmVhZCBz dHJlYW0gYmVmb3JlIGZyZWVpbmcgdGhlIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5LgogCSAqLwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggYmNiYWM4NDRiYjYuLjI3 ZTM0OThmNWY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFu ZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAg LTc5LDEyICs3OSwxNCBAQCBoZWFwYW1fc2xvdF9jYWxsYmFja3MoUmVsYXRpb24gcmVsYXRpb24p CiAgKi8KIAogc3RhdGljIEluZGV4RmV0Y2hUYWJsZURhdGEgKgotaGVhcGFtX2luZGV4X2ZldGNo X2JlZ2luKFJlbGF0aW9uIHJlbCkKK2hlYXBhbV9pbmRleF9mZXRjaF9iZWdpbihSZWxhdGlvbiBy ZWwsIHVpbnQzMiBmbGFncykKIHsKIAlJbmRleEZldGNoSGVhcERhdGEgKmhzY2FuID0gcGFsbG9j MChzaXplb2YoSW5kZXhGZXRjaEhlYXBEYXRhKSk7CiAKIAloc2Nhbi0+eHNfYmFzZS5yZWwgPSBy ZWw7CiAJaHNjYW4tPnhzX2NidWYgPSBJbnZhbGlkQnVmZmVyOworCWhzY2FuLT54c192bWJ1ZmZl ciA9IEludmFsaWRCdWZmZXI7CisJaHNjYW4tPm1vZGlmaWVzX2Jhc2VfcmVsID0gIShmbGFncyAm IFNPX0hJTlRfUkVMX1JFQURfT05MWSk7CiAKIAlyZXR1cm4gJmhzY2FuLT54c19iYXNlOwogfQpA QCAtOTksNiArMTAxLDEyIEBAIGhlYXBhbV9pbmRleF9mZXRjaF9yZXNldChJbmRleEZldGNoVGFi bGVEYXRhICpzY2FuKQogCQlSZWxlYXNlQnVmZmVyKGhzY2FuLT54c19jYnVmKTsKIAkJaHNjYW4t PnhzX2NidWYgPSBJbnZhbGlkQnVmZmVyOwogCX0KKworCWlmIChCdWZmZXJJc1ZhbGlkKGhzY2Fu LT54c192bWJ1ZmZlcikpCisJeworCQlSZWxlYXNlQnVmZmVyKGhzY2FuLT54c192bWJ1ZmZlcik7 CisJCWhzY2FuLT54c192bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJfQogfQogCiBzdGF0aWMg dm9pZApAQCAtMTM4LDcgKzE0Niw4IEBAIGhlYXBhbV9pbmRleF9mZXRjaF90dXBsZShzdHJ1Y3Qg SW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbiwKIAkJICogUHJ1bmUgcGFnZSwgYnV0IG9ubHkgaWYg d2Ugd2VyZW4ndCBhbHJlYWR5IG9uIHRoaXMgcGFnZQogCQkgKi8KIAkJaWYgKHByZXZfYnVmICE9 IGhzY2FuLT54c19jYnVmKQotCQkJaGVhcF9wYWdlX3BydW5lX29wdChoc2Nhbi0+eHNfYmFzZS5y ZWwsIGhzY2FuLT54c19jYnVmKTsKKwkJCWhlYXBfcGFnZV9wcnVuZV9vcHQoaHNjYW4tPnhzX2Jh c2UucmVsLCBoc2Nhbi0+eHNfY2J1ZiwKKwkJCQkJCQkJaHNjYW4tPm1vZGlmaWVzX2Jhc2VfcmVs ID8gTlVMTCA6ICZoc2Nhbi0+eHNfdm1idWZmZXIpOwogCX0KIAogCS8qIE9idGFpbiBzaGFyZS1s b2NrIG9uIHRoZSBidWZmZXIgc28gd2UgY2FuIGV4YW1pbmUgdmlzaWJpbGl0eSAqLwpAQCAtNzUz LDcgKzc2Miw3IEBAIGhlYXBhbV9yZWxhdGlvbl9jb3B5X2Zvcl9jbHVzdGVyKFJlbGF0aW9uIE9s ZEhlYXAsIFJlbGF0aW9uIE5ld0hlYXAsCiAKIAkJdGFibGVTY2FuID0gTlVMTDsKIAkJaGVhcFNj YW4gPSBOVUxMOwotCQlpbmRleFNjYW4gPSBpbmRleF9iZWdpbnNjYW4oT2xkSGVhcCwgT2xkSW5k ZXgsIFNuYXBzaG90QW55LCBOVUxMLCAwLCAwKTsKKwkJaW5kZXhTY2FuID0gaW5kZXhfYmVnaW5z Y2FuKE9sZEhlYXAsIE9sZEluZGV4LCBTbmFwc2hvdEFueSwgTlVMTCwgMCwgMCwgMCk7CiAJCWlu ZGV4X3Jlc2NhbihpbmRleFNjYW4sIE5VTEwsIDAsIE5VTEwsIDApOwogCX0KIAllbHNlCkBAIC03 NjIsNyArNzcxLDcgQEAgaGVhcGFtX3JlbGF0aW9uX2NvcHlfZm9yX2NsdXN0ZXIoUmVsYXRpb24g T2xkSGVhcCwgUmVsYXRpb24gTmV3SGVhcCwKIAkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJh bShQUk9HUkVTU19DTFVTVEVSX1BIQVNFLAogCQkJCQkJCQkJIFBST0dSRVNTX0NMVVNURVJfUEhB U0VfU0VRX1NDQU5fSEVBUCk7CiAKLQkJdGFibGVTY2FuID0gdGFibGVfYmVnaW5zY2FuKE9sZEhl YXAsIFNuYXBzaG90QW55LCAwLCAoU2NhbktleSkgTlVMTCk7CisJCXRhYmxlU2NhbiA9IHRhYmxl X2JlZ2luc2NhbihPbGRIZWFwLCBTbmFwc2hvdEFueSwgMCwgKFNjYW5LZXkpIE5VTEwsIDApOwog CQloZWFwU2NhbiA9IChIZWFwU2NhbkRlc2MpIHRhYmxlU2NhbjsKIAkJaW5kZXhTY2FuID0gTlVM TDsKIApAQCAtMjQ3MSw2ICsyNDgwLDcgQEAgQml0bWFwSGVhcFNjYW5OZXh0QmxvY2soVGFibGVT Y2FuRGVzYyBzY2FuLAogCVRCTUl0ZXJhdGVSZXN1bHQgKnRibXJlczsKIAlPZmZzZXROdW1iZXIg b2Zmc2V0c1tUQk1fTUFYX1RVUExFU19QRVJfUEFHRV07CiAJaW50CQkJbm9mZnNldHMgPSAtMTsK KwlCdWZmZXIJICAgKnZtYnVmZmVyID0gTlVMTDsKIAogCUFzc2VydChzY2FuLT5yc19mbGFncyAm IFNPX1RZUEVfQklUTUFQU0NBTik7CiAJQXNzZXJ0KGhzY2FuLT5yc19yZWFkX3N0cmVhbSk7CkBA IC0yNTE3LDcgKzI1MjcsOSBAQCBCaXRtYXBIZWFwU2Nhbk5leHRCbG9jayhUYWJsZVNjYW5EZXNj IHNjYW4sCiAJLyoKIAkgKiBQcnVuZSBhbmQgcmVwYWlyIGZyYWdtZW50YXRpb24gZm9yIHRoZSB3 aG9sZSBwYWdlLCBpZiBwb3NzaWJsZS4KIAkgKi8KLQloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4t PnJzX3JkLCBidWZmZXIpOworCWlmIChzY2FuLT5yc19mbGFncyAmIFNPX0hJTlRfUkVMX1JFQURf T05MWSkKKwkJdm1idWZmZXIgPSAmaHNjYW4tPnJzX3ZtYnVmZmVyOworCWhlYXBfcGFnZV9wcnVu ZV9vcHQoc2Nhbi0+cnNfcmQsIGJ1ZmZlciwgdm1idWZmZXIpOwogCiAJLyoKIAkgKiBXZSBtdXN0 IGhvbGQgc2hhcmUgbG9jayBvbiB0aGUgYnVmZmVyIGNvbnRlbnQgd2hpbGUgZXhhbWluaW5nIHR1 cGxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDkwMjcwMDgxYWNkLi4xMjQ3 MjJmMTc3OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTIwMyw3ICsyMDMs OSBAQCBzdGF0aWMgYm9vbCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdmlzKFJlbGF0aW9uIHJlbGF0aW9u LAogCQkJCQkJCQkgICBCdWZmZXIgaGVhcF9idWYsCiAJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZl ciwKIAkJCQkJCQkJICAgYm9vbCBibGtfa25vd25fYXYsCi0JCQkJCQkJCSAgIGNvbnN0IFBydW5l U3RhdGUgKnByc3RhdGUsCisJCQkJCQkJCSAgIFBydW5lUmVhc29uIHJlYXNvbiwKKwkJCQkJCQkJ ICAgYm9vbCBkb19wcnVuZSwgYm9vbCBkb19mcmVlemUsCisJCQkJCQkJCSAgIFBydW5lU3RhdGUg KnByc3RhdGUsCiAJCQkJCQkJCSAgIHVpbnQ4ICp2bWZsYWdzLAogCQkJCQkJCQkgICBib29sICpk b19zZXRfcGRfdmlzKTsKIApAQCAtMjE4LDkgKzIyMCwxMyBAQCBzdGF0aWMgYm9vbCBoZWFwX3Bh Z2Vfd2lsbF9zZXRfdmlzKFJlbGF0aW9uIHJlbGF0aW9uLAogICogaWYgdGhlcmUncyBub3QgYW55 IHVzZSBpbiBwcnVuaW5nLgogICoKICAqIENhbGxlciBtdXN0IGhhdmUgcGluIG9uIHRoZSBidWZm ZXIsIGFuZCBtdXN0ICpub3QqIGhhdmUgYSBsb2NrIG9uIGl0LgorICoKKyAqIElmIHZtYnVmZmVy IGlzIG5vdCBOVUxMLCBpdCBpcyBva2F5IGZvciBwcnVuaW5nIHRvIHNldCB0aGUgdmlzaWJpbGl0 eSBtYXAgaWYKKyAqIHRoZSBwYWdlIGlzIGFsbC12aXNpYmxlLiBXZSB3aWxsIHRha2UgY2FyZSBv ZiBwaW5uaW5nIGFuZCwgaWYgbmVlZGVkLAorICogcmVhZGluZyBpbiB0aGUgcGFnZSBvZiB0aGUg dmlzaWJpbGl0eSBtYXAuCiAgKi8KIHZvaWQKLWhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24g cmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpCitoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyLCBCdWZmZXIgKnZtYnVmZmVyKQogewogCVBhZ2UJCXBhZ2Ug PSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAJVHJhbnNhY3Rpb25JZCBwcnVuZV94aWQ7CkBAIC0y OTcsNiArMzAzLDEzIEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1 ZmZlciBidWZmZXIpCiAJCQkJLnZpc3Rlc3QgPSB2aXN0ZXN0LC5jdXRvZmZzID0gTlVMTAogCQkJ fTsKIAorCQkJaWYgKHZtYnVmZmVyKQorCQkJeworCQkJCXZpc2liaWxpdHltYXBfcGluKHJlbGF0 aW9uLCBCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLCB2bWJ1ZmZlcik7CisJCQkJcGFyYW1z Lm9wdGlvbnMgPSBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZJUzsKKwkJCQlwYXJhbXMudm1idWZm ZXIgPSAqdm1idWZmZXI7CisJCQl9CisKIAkJCWhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCZw YXJhbXMsICZwcmVzdWx0LCAmZHVtbXlfb2ZmX2xvYywKIAkJCQkJCQkJCSAgIE5VTEwsIE5VTEwp OwogCkBAIC03ODUsNiArNzk4LDkgQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogICogaGF2ZSBleGFtaW5lZCB0aGlzIHBhZ2XigJlzIFZN IGJpdHMgKGUuZy4sIFZBQ1VVTSBpbiB0aGUgcHJldmlvdXMKICAqIGhlYXBfdmFjX3NjYW5fbmV4 dF9ibG9jaygpIGNhbGwpIGFuZCBjYW4gcGFzcyB0aGF0IGFsb25nLgogICoKKyAqIFRoaXMgc2hv dWxkIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGRvX2ZyZWV6ZSBoYXMgYmVlbiBkZWNpZGVkIChhbmQg ZG9fcHJ1bmUKKyAqIGhhcyBiZWVuIHNldCksIGFzIHRoZXNlIGZhY3RvciBpbnRvIG91ciBoZXVy aXN0aWMtYmFzZWQgZGVjaXNpb24uCisgKgogICogUmV0dXJucyB0cnVlIGlmIG9uZSBvciBib3Ro IFZNIGJpdHMgc2hvdWxkIGJlIHNldCwgYWxvbmcgd2l0aCB0aGUgZGVzaXJlZAogICogZmxhZ3Mg aW4gKnZtZmxhZ3MuIEFsc28gaW5kaWNhdGVzIHZpYSBkb19zZXRfcGRfdmlzIHdoZXRoZXIgUERf QUxMX1ZJU0lCTEUKICAqIHNob3VsZCBiZSBzZXQgb24gdGhlIGhlYXAgcGFnZS4KQEAgLTc5NSw3 ICs4MTEsOSBAQCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdmlzKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJ CQkgICBCdWZmZXIgaGVhcF9idWYsCiAJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlciwKIAkJCQkJICAg Ym9vbCBibGtfa25vd25fYXYsCi0JCQkJCSAgIGNvbnN0IFBydW5lU3RhdGUgKnByc3RhdGUsCisJ CQkJCSAgIFBydW5lUmVhc29uIHJlYXNvbiwKKwkJCQkJICAgYm9vbCBkb19wcnVuZSwgYm9vbCBk b19mcmVlemUsCisJCQkJCSAgIFBydW5lU3RhdGUgKnByc3RhdGUsCiAJCQkJCSAgIHVpbnQ4ICp2 bWZsYWdzLAogCQkJCQkgICBib29sICpkb19zZXRfcGRfdmlzKQogewpAQCAtODExLDYgKzgyOSwy MyBAQCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdmlzKFJlbGF0aW9uIHJlbGF0aW9uLAogCQlyZXR1cm4g ZmFsc2U7CiAJfQogCisJLyoKKwkgKiBJZiB0aGlzIGlzIGFuIG9uLWFjY2VzcyBjYWxsIGFuZCB3 ZSdyZSBub3QgYWN0dWFsbHkgcHJ1bmluZywgYXZvaWQKKwkgKiBzZXR0aW5nIHRoZSB2aXNpYmls aXR5IG1hcCBpZiBpdCB3b3VsZCBuZXdseSBkaXJ0eSB0aGUgaGVhcCBwYWdlIG9yLCBpZgorCSAq IHRoZSBwYWdlIGlzIGFscmVhZHkgZGlydHksIGlmIGRvaW5nIHNvIHdvdWxkIHJlcXVpcmUgaW5j bHVkaW5nIGEKKwkgKiBmdWxsLXBhZ2UgaW1hZ2UgKEZQSSkgb2YgdGhlIGhlYXAgcGFnZSBpbiB0 aGUgV0FMLiBUaGlzIHNpdHVhdGlvbgorCSAqIHNob3VsZCBiZSByYXJlLCBhcyBvbi1hY2Nlc3Mg cHJ1bmluZyBpcyBvbmx5IGF0dGVtcHRlZCB3aGVuCisJICogcGRfcHJ1bmVfeGlkIGlzIHZhbGlk LgorCSAqLworCWlmIChyZWFzb24gPT0gUFJVTkVfT05fQUNDRVNTICYmCisJCXByc3RhdGUtPmFs bF92aXNpYmxlICYmCisJCSFkb19wcnVuZSAmJiAhZG9fZnJlZXplICYmCisJCSghQnVmZmVySXNE aXJ0eShoZWFwX2J1ZikgfHwgWExvZ0NoZWNrQnVmZmVyTmVlZHNCYWNrdXAoaGVhcF9idWYpKSkK Kwl7CisJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNl OworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAJaWYgKHByc3RhdGUtPmFsbF92aXNpYmxlICYmICFQ YWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkpCiAJCSpkb19zZXRfcGRfdmlzID0gdHJ1ZTsKIApA QCAtODM0LDYgKzg2OSwxMSBAQCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdmlzKFJlbGF0aW9uIHJlbGF0 aW9uLAogCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLiAgSG93ZXZlciwgaXQncyBwb3NzaWJs ZSB0aGF0IGluIHZhY3V1bSB0aGUgYml0CiAJICogZ290IGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNf c2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNhbGxlZCwgc28gd2UgbXVzdAogCSAqIHJlY2hlY2sgd2l0 aCBidWZmZXIgbG9jayBiZWZvcmUgY29uY2x1ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0Lgor CSAqCisJICogVGhpcyB3aWxsIG5ldmVyIHRyaWdnZXIgZm9yIG9uLWFjY2VzcyBwcnVuaW5nIGJl Y2F1c2UgaXQgY291bGRuJ3QgaGF2ZQorCSAqIGRvbmUgYSBwcmV2aW91cyB2aXNpYmlsaXR5IG1h cCBsb29rdXAgYW5kIHRodXMgd2lsbCBhbHdheXMgcGFzcworCSAqIGJsa19rbm93bl9hdiBhcyBm YWxzZS4gQSBmdXR1cmUgdmFjdXVtIHdpbGwgaGF2ZSB0byB0YWtlIGNhcmUgb2YgZml4aW5nCisJ ICogdGhlIGNvcnJ1cHRpb24uCiAJICovCiAJZWxzZSBpZiAoYmxrX2tub3duX2F2ICYmICFQYWdl SXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkgJiYKIAkJCSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMo cmVsYXRpb24sIGhlYXBfYmxrLCAmdm1idWZmZXIpICE9IDApCkBAIC05OTQsNiArMTAzNCwxNCBA QCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAog CQlwcnN0YXRlLm5kZWFkID4gMCB8fAogCQlwcnN0YXRlLm51bnVzZWQgPiAwOwogCisJLyoKKwkg KiBFdmVuIGlmIHdlIGRvbid0IHBydW5lIGFueXRoaW5nLCBpZiB3ZSBmb3VuZCBhIG5ldyB2YWx1 ZSBmb3IgdGhlCisJICogcGRfcHJ1bmVfeGlkIGZpZWxkIG9yIHRoZSBwYWdlIHdhcyBtYXJrZWQg ZnVsbCwgd2Ugd2lsbCB1cGRhdGUgdGhlIGhpbnQKKwkgKiBiaXQuCisJICovCisJZG9faGludF9w cnVuZSA9ICgoUGFnZUhlYWRlcikgcGFnZSktPnBkX3BydW5lX3hpZCAhPSBwcnN0YXRlLm5ld19w cnVuZV94aWQgfHwKKwkJUGFnZUlzRnVsbChwYWdlKTsKKwogCS8qCiAJICogQWZ0ZXIgcHJvY2Vz c2luZyBhbGwgdGhlIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLCBpZiB0aGUgbmV3ZXN0IHhtaW4K IAkgKiBhbW9uZ3N0IHRoZW0gaXMgbm90IHZpc2libGUgdG8gZXZlcnlvbmUsIHRoZSBwYWdlIGNh bm5vdCBiZQpAQCAtMTAwNCwxNCArMTA1Miw2IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCSFHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwo cHJzdGF0ZS52aXN0ZXN0LCBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkpCiAJCXByc3Rh dGUuYWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF9mcm96ZW4gPSBmYWxzZTsKIAotCS8qCi0JICog RXZlbiBpZiB3ZSBkb24ndCBwcnVuZSBhbnl0aGluZywgaWYgd2UgZm91bmQgYSBuZXcgdmFsdWUg Zm9yIHRoZQotCSAqIHBkX3BydW5lX3hpZCBmaWVsZCBvciB0aGUgcGFnZSB3YXMgbWFya2VkIGZ1 bGwsIHdlIHdpbGwgdXBkYXRlIHRoZSBoaW50Ci0JICogYml0LgotCSAqLwotCWRvX2hpbnRfcHJ1 bmUgPSAoKFBhZ2VIZWFkZXIpIHBhZ2UpLT5wZF9wcnVuZV94aWQgIT0gcHJzdGF0ZS5uZXdfcHJ1 bmVfeGlkIHx8Ci0JCVBhZ2VJc0Z1bGwocGFnZSk7Ci0KIAkvKgogCSAqIERlY2lkZSBpZiB3ZSB3 YW50IHRvIGdvIGFoZWFkIHdpdGggZnJlZXppbmcgYWNjb3JkaW5nIHRvIHRoZSBmcmVlemUKIAkg KiBwbGFucyB3ZSBwcmVwYXJlZCwgb3Igbm90LgpAQCAtMTA1NCw2ICsxMDk0LDcgQEAgaGVhcF9w YWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkgKi8KIAlk b19zZXRfdm0gPSBoZWFwX3BhZ2Vfd2lsbF9zZXRfdmlzKHBhcmFtcy0+cmVsYXRpb24sCiAJCQkJ CQkJCQkgICBibG9ja25vLCBidWZmZXIsIHZtYnVmZmVyLCBwYXJhbXMtPmJsa19rbm93bl9hdiwK KwkJCQkJCQkJCSAgIHBhcmFtcy0+cmVhc29uLCBkb19wcnVuZSwgZG9fZnJlZXplLAogCQkJCQkJ CQkJICAgJnByc3RhdGUsICZuZXdfdm1iaXRzLCAmZG9fc2V0X3BkX3Zpcyk7CiAKIAkvKiBXZSBz aG91bGQgb25seSBzZXQgdGhlIFZNIGlmIFBEX0FMTF9WSVNJQkxFIGlzIHNldCBvciB3aWxsIGJl ICovCkBAIC0yMzQwLDcgKzIzODEsNyBAQCBoZWFwX2xvZ19mcmVlemVfcGxhbihIZWFwVHVwbGVG cmVlemUgKnR1cGxlcywgaW50IG50dXBsZXMsCiAKIC8qCiAgKiBDYWxjdWxhdGUgdGhlIGNvbmZs aWN0IGhvcml6b24gZm9yIHRoZSB3aG9sZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9TQ0FOCi0g KiByZWNvcmQuCisgKiBvciBYTE9HX0hFQVAyX1BSVU5FX09OX0FDQ0VTUyByZWNvcmQuCiAgKi8K IHN0YXRpYyBUcmFuc2FjdGlvbklkCiBnZXRfY29uZmxpY3RfeGlkKGJvb2wgZG9fcHJ1bmUsIGJv b2wgZG9fZnJlZXplLCBib29sIGRvX3NldF92bSwKQEAgLTI0MTAsOCArMjQ1MSw4IEBAIGdldF9j b25mbGljdF94aWQoYm9vbCBkb19wcnVuZSwgYm9vbCBkb19mcmVlemUsIGJvb2wgZG9fc2V0X3Zt LAogICogLSBSZWFwaW5nOiBEdXJpbmcgdmFjdXVtIHBoYXNlIElJSSwgaXRlbXMgdGhhdCBhcmUg YWxyZWFkeSBMUF9ERUFEIGFyZQogICogICBtYXJrZWQgYXMgdW51c2VkLgogICoKLSAqIC0gVk0g dXBkYXRlczogQWZ0ZXIgdmFjdXVtIHBoYXNlcyBJIGFuZCBJSUksIHRoZSBoZWFwIHBhZ2UgbWF5 IGJlIG1hcmtlZAotICogICBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbi4KKyAqIC0gVk0gdXBk YXRlczogQWZ0ZXIgdmFjdXVtIHBoYXNlcyBJIGFuZCBJSUkgYW5kIG9uLWFjY2VzcywgdGhlIGhl YXAgcGFnZQorICogICBtYXkgYmUgbWFya2VkIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuLgog ICoKICAqIFRoZXNlIGNoYW5nZXMgYWxsIGhhcHBlbiB0b2dldGhlciwgc28gd2UgdXNlIGEgc2lu Z2xlIFdBTCByZWNvcmQgZm9yIHRoZW0KICAqIGFsbC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9pbmRleC9nZW5hbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMK aW5kZXggMGNiMjdhZjEzMTAuLjFlNzk5MmRiZWIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaW5kZXgvZ2VuYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0u YwpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHN5c3RhYmxlX2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVs YXRpb24sCiAJCX0KIAogCQlzeXNzY2FuLT5pc2NhbiA9IGluZGV4X2JlZ2luc2NhbihoZWFwUmVs YXRpb24sIGlyZWwsCi0JCQkJCQkJCQkJIHNuYXBzaG90LCBOVUxMLCBua2V5cywgMCk7CisJCQkJ CQkJCQkJIHNuYXBzaG90LCBOVUxMLCBua2V5cywgMCwgMCk7CiAJCWluZGV4X3Jlc2NhbihzeXNz Y2FuLT5pc2NhbiwgaWR4a2V5LCBua2V5cywgTlVMTCwgMCk7CiAJCXN5c3NjYW4tPnNjYW4gPSBO VUxMOwogCkBAIC03MDgsNyArNzA4LDcgQEAgc3lzdGFibGVfYmVnaW5zY2FuX29yZGVyZWQoUmVs YXRpb24gaGVhcFJlbGF0aW9uLAogCX0KIAogCXN5c3NjYW4tPmlzY2FuID0gaW5kZXhfYmVnaW5z Y2FuKGhlYXBSZWxhdGlvbiwgaW5kZXhSZWxhdGlvbiwKLQkJCQkJCQkJCSBzbmFwc2hvdCwgTlVM TCwgbmtleXMsIDApOworCQkJCQkJCQkJIHNuYXBzaG90LCBOVUxMLCBua2V5cywgMCwgMCk7CiAJ aW5kZXhfcmVzY2FuKHN5c3NjYW4tPmlzY2FuLCBpZHhrZXksIG5rZXlzLCBOVUxMLCAwKTsKIAlz eXNzY2FuLT5zY2FuID0gTlVMTDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2lu ZGV4L2luZGV4YW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKaW5kZXgg MDQ5MmQ5MmQyM2IuLmI1NTIzY2YyYWIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aW5kZXgvaW5kZXhhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMK QEAgLTI1Nyw3ICsyNTcsNyBAQCBpbmRleF9iZWdpbnNjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9u LAogCQkJCVJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiAJCQkJU25hcHNob3Qgc25hcHNob3QsCiAJ CQkJSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50LAotCQkJCWludCBua2V5cywg aW50IG5vcmRlcmJ5cykKKwkJCQlpbnQgbmtleXMsIGludCBub3JkZXJieXMsIHVpbnQzMiBmbGFn cykKIHsKIAlJbmRleFNjYW5EZXNjIHNjYW47CiAKQEAgLTI4NCw3ICsyODQsNyBAQCBpbmRleF9i ZWdpbnNjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCXNjYW4tPmluc3RydW1lbnQgPSBpbnN0 cnVtZW50OwogCiAJLyogcHJlcGFyZSB0byBmZXRjaCBpbmRleCBtYXRjaGVzIGZyb20gdGFibGUg Ki8KLQlzY2FuLT54c19oZWFwZmV0Y2ggPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbihoZWFwUmVs YXRpb24pOworCXNjYW4tPnhzX2hlYXBmZXRjaCA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKGhl YXBSZWxhdGlvbiwgZmxhZ3MpOwogCiAJcmV0dXJuIHNjYW47CiB9CkBAIC02MTUsNyArNjE1LDcg QEAgaW5kZXhfYmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9uIGhlYXByZWwsIFJlbGF0aW9uIGlu ZGV4cmVsLAogCXNjYW4tPmluc3RydW1lbnQgPSBpbnN0cnVtZW50OwogCiAJLyogcHJlcGFyZSB0 byBmZXRjaCBpbmRleCBtYXRjaGVzIGZyb20gdGFibGUgKi8KLQlzY2FuLT54c19oZWFwZmV0Y2gg PSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbihoZWFwcmVsKTsKKwlzY2FuLT54c19oZWFwZmV0Y2gg PSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbihoZWFwcmVsLCAwKTsKIAogCXJldHVybiBzY2FuOwog fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwppbmRleCA0NTRhZGFlZTdkYy4uMDJhYjAy MzNlNTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBAIC0xOTI1LDcgKzE5MjUs NyBAQCBfYnRfcGFyYWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNwb29sLCBCVFNwb29s ICpidHNwb29sMiwKIAlpbmRleEluZm8gPSBCdWlsZEluZGV4SW5mbyhidHNwb29sLT5pbmRleCk7 CiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0gYnRzaGFyZWQtPmlzY29uY3VycmVudDsKIAlz Y2FuID0gdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKGJ0c3Bvb2wtPmhlYXAsCi0JCQkJCQkJCQlQ YXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChidHNoYXJlZCkpOworCQkJCQkJCQkJUGFyYWxs ZWxUYWJsZVNjYW5Gcm9tQlRTaGFyZWQoYnRzaGFyZWQpLCAwKTsKIAlyZWx0dXBsZXMgPSB0YWJs ZV9pbmRleF9idWlsZF9zY2FuKGJ0c3Bvb2wtPmhlYXAsIGJ0c3Bvb2wtPmluZGV4LCBpbmRleElu Zm8sCiAJCQkJCQkJCQkgICB0cnVlLCBwcm9ncmVzcywgX2J0X2J1aWxkX2NhbGxiYWNrLAogCQkJ CQkJCQkJICAgJmJ1aWxkc3RhdGUsIHNjYW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3RhYmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMK aW5kZXggNWU0MTQwNDkzN2UuLjU1OGM0NDk3OTkzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJs ZWFtLmMKQEAgLTUwLDYgKzUwLDcgQEAgY2hhcgkgICAqZGVmYXVsdF90YWJsZV9hY2Nlc3NfbWV0 aG9kID0gREVGQVVMVF9UQUJMRV9BQ0NFU1NfTUVUSE9EOwogYm9vbAkJc3luY2hyb25pemVfc2Vx c2NhbnMgPSB0cnVlOwogCiAKKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogU2xvdCBmdW5j dGlvbnMuCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNjMsMTAgKzE2NCwxMSBAQCB0YWJs ZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsIFBhcmFsbGVsVGFibGVTY2Fu RGVzYyBwc2NhbiwKIH0KIAogVGFibGVTY2FuRGVzYwotdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVs KFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4pCit0YWJsZV9i ZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24gcmVsYXRpb24sIFBhcmFsbGVsVGFibGVTY2FuRGVz YyBwc2NhbiwgdWludDMyIGZsYWdzKQogewogCVNuYXBzaG90CXNuYXBzaG90OwotCXVpbnQzMgkJ ZmxhZ3MgPSBTT19UWVBFX1NFUVNDQU4gfAorCisJZmxhZ3MgfD0gU09fVFlQRV9TRVFTQ0FOIHwK IAkJU09fQUxMT1dfU1RSQVQgfCBTT19BTExPV19TWU5DIHwgU09fQUxMT1dfUEFHRU1PREU7CiAK IAlBc3NlcnQoUmVsRmlsZUxvY2F0b3JFcXVhbHMocmVsYXRpb24tPnJkX2xvY2F0b3IsIHBzY2Fu LT5waHNfbG9jYXRvcikpOwpAQCAtMjE3LDcgKzIxOSw3IEBAIHRhYmxlX2luZGV4X2ZldGNoX3R1 cGxlX2NoZWNrKFJlbGF0aW9uIHJlbCwKIAlib29sCQlmb3VuZDsKIAogCXNsb3QgPSB0YWJsZV9z bG90X2NyZWF0ZShyZWwsIE5VTEwpOwotCXNjYW4gPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbihy ZWwpOworCXNjYW4gPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbihyZWwsIDApOwogCWZvdW5kID0g dGFibGVfaW5kZXhfZmV0Y2hfdHVwbGUoc2NhbiwgdGlkLCBzbmFwc2hvdCwgc2xvdCwgJmNhbGxf YWdhaW4sCiAJCQkJCQkJCQlhbGxfZGVhZCk7CiAJdGFibGVfaW5kZXhfZmV0Y2hfZW5kKHNjYW4p OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29uc3RyYWludC5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29uc3RyYWludC5jCmluZGV4IDM0OTdhODIyMWYyLi45N2M4Mjc4ZTM2 ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29uc3RyYWludC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2NvbnN0cmFpbnQuYwpAQCAtMTA2LDcgKzEwNiw3IEBAIHVuaXF1 ZV9rZXlfcmVjaGVjayhQR19GVU5DVElPTl9BUkdTKQogCSAqLwogCXRtcHRpZCA9IGNoZWNrdGlk OwogCXsKLQkJSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbiA9IHRhYmxlX2luZGV4X2ZldGNoX2Jl Z2luKHRyaWdkYXRhLT50Z19yZWxhdGlvbik7CisJCUluZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW4g PSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbih0cmlnZGF0YS0+dGdfcmVsYXRpb24sIDApOwogCQli b29sCQljYWxsX2FnYWluID0gZmFsc2U7CiAKIAkJaWYgKCF0YWJsZV9pbmRleF9mZXRjaF90dXBs ZShzY2FuLCAmdG1wdGlkLCBTbmFwc2hvdFNlbGYsIHNsb3QsCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5dG8uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCmlu ZGV4IGNlZjQ1MjU4NGU1Li4yMmI0NTNkYzYxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKQEAgLTEx NTYsNyArMTE1Niw3IEBAIENvcHlSZWxhdGlvblRvKENvcHlUb1N0YXRlIGNzdGF0ZSwgUmVsYXRp b24gcmVsLCBSZWxhdGlvbiByb290X3JlbCwgdWludDY0ICpwcm9jCiAJQXR0ck1hcCAgICAqbWFw ID0gTlVMTDsKIAlUdXBsZVRhYmxlU2xvdCAqcm9vdF9zbG90ID0gTlVMTDsKIAotCXNjYW5kZXNj ID0gdGFibGVfYmVnaW5zY2FuKHJlbCwgR2V0QWN0aXZlU25hcHNob3QoKSwgMCwgTlVMTCk7CisJ c2NhbmRlc2MgPSB0YWJsZV9iZWdpbnNjYW4ocmVsLCBHZXRBY3RpdmVTbmFwc2hvdCgpLCAwLCBO VUxMLCAwKTsKIAlzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUocmVsLCBOVUxMKTsKIAogCS8qCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDIzZWJhYTNmMjMwLi42NmM0MTgwNTlmZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTYzNDUsNyArNjM0NSw3IEBAIEFUUmV3cml0ZVRh YmxlKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgT2lkIE9JRE5ld0hlYXApCiAJCSAqIGNoZWNraW5n IGFsbCB0aGUgY29uc3RyYWludHMuCiAJCSAqLwogCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNo b3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7Ci0JCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ob2xkcmVs LCBzbmFwc2hvdCwgMCwgTlVMTCk7CisJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ob2xkcmVsLCBz bmFwc2hvdCwgMCwgTlVMTCwgMCk7CiAKIAkJLyoKIAkJICogU3dpdGNoIHRvIHBlci10dXBsZSBt ZW1vcnkgY29udGV4dCBhbmQgcmVzZXQgaXQgZm9yIGVhY2ggdHVwbGUKQEAgLTEzNzMwLDcgKzEz NzMwLDcgQEAgdmFsaWRhdGVGb3JlaWduS2V5Q29uc3RyYWludChjaGFyICpjb25uYW1lLAogCSAq LwogCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKIAlz bG90ID0gdGFibGVfc2xvdF9jcmVhdGUocmVsLCBOVUxMKTsKLQlzY2FuID0gdGFibGVfYmVnaW5z Y2FuKHJlbCwgc25hcHNob3QsIDAsIE5VTEwpOworCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVs LCBzbmFwc2hvdCwgMCwgTlVMTCwgMCk7CiAKIAlwZXJUdXBDeHQgPSBBbGxvY1NldENvbnRleHRD cmVhdGUoQ3VycmVudE1lbW9yeUNvbnRleHQsCiAJCQkJCQkJCQkgICJ2YWxpZGF0ZUZvcmVpZ25L ZXlDb25zdHJhaW50IiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRz LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jCmluZGV4IDU5Nzk1ODAxMzlmLi4z NTU2MGFjNjBkOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jCkBAIC0zMTU0LDcgKzMxNTQsNyBA QCB2YWxpZGF0ZURvbWFpbk5vdE51bGxDb25zdHJhaW50KE9pZCBkb21haW5vaWQpCiAKIAkJLyog U2NhbiBhbGwgdHVwbGVzIGluIHRoaXMgcmVsYXRpb24gKi8KIAkJc25hcHNob3QgPSBSZWdpc3Rl clNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOwotCQlzY2FuID0gdGFibGVfYmVnaW5zY2Fu KHRlc3RyZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsKKwkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbih0 ZXN0cmVsLCBzbmFwc2hvdCwgMCwgTlVMTCwgMCk7CiAJCXNsb3QgPSB0YWJsZV9zbG90X2NyZWF0 ZSh0ZXN0cmVsLCBOVUxMKTsKIAkJd2hpbGUgKHRhYmxlX3NjYW5fZ2V0bmV4dHNsb3Qoc2Nhbiwg Rm9yd2FyZFNjYW5EaXJlY3Rpb24sIHNsb3QpKQogCQl7CkBAIC0zMjM1LDcgKzMyMzUsNyBAQCB2 YWxpZGF0ZURvbWFpbkNoZWNrQ29uc3RyYWludChPaWQgZG9tYWlub2lkLCBjb25zdCBjaGFyICpj Y2JpbiwgTE9DS01PREUgbG9ja21vZAogCiAJCS8qIFNjYW4gYWxsIHR1cGxlcyBpbiB0aGlzIHJl bGF0aW9uICovCiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hv dCgpKTsKLQkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbih0ZXN0cmVsLCBzbmFwc2hvdCwgMCwgTlVM TCk7CisJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4odGVzdHJlbCwgc25hcHNob3QsIDAsIE5VTEws IDApOwogCQlzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUodGVzdHJlbCwgTlVMTCk7CiAJCXdoaWxl ICh0YWJsZV9zY2FuX2dldG5leHRzbG90KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uLCBzbG90 KSkKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwppbmRleCA0MDE2MDZmODQwYS4u NGUzOWFjMDBmMzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGlu Zy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCkBAIC04MTUsNyAr ODE1LDcgQEAgY2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50KFJlbGF0aW9uIGhl YXAsIFJlbGF0aW9uIGluZGV4LAogcmV0cnk6CiAJY29uZmxpY3QgPSBmYWxzZTsKIAlmb3VuZF9z ZWxmID0gZmFsc2U7Ci0JaW5kZXhfc2NhbiA9IGluZGV4X2JlZ2luc2NhbihoZWFwLCBpbmRleCwg JkRpcnR5U25hcHNob3QsIE5VTEwsIGluZG5rZXlhdHRzLCAwKTsKKwlpbmRleF9zY2FuID0gaW5k ZXhfYmVnaW5zY2FuKGhlYXAsIGluZGV4LCAmRGlydHlTbmFwc2hvdCwgTlVMTCwgaW5kbmtleWF0 dHMsIDAsIDApOwogCWluZGV4X3Jlc2NhbihpbmRleF9zY2FuLCBzY2Fua2V5cywgaW5kbmtleWF0 dHMsIE5VTEwsIDApOwogCiAJd2hpbGUgKGluZGV4X2dldG5leHRfc2xvdChpbmRleF9zY2FuLCBG b3J3YXJkU2NhbkRpcmVjdGlvbiwgZXhpc3Rpbmdfc2xvdCkpCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YwppbmRleCAyN2M5ZWVjNjk3Yi4uMDYzMGE1YWY3OWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YwpAQCAtOTE2LDYgKzkxNiwxMCBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50 IGVmbGFncykKIAkJCQkJYnJlYWs7CiAJCQl9CiAKKwkJCS8qIElmIGl0IGhhcyBhIHJvd21hcmss IHRoZSByZWxhdGlvbiBpcyBtb2RpZmllZCAqLworCQkJZXN0YXRlLT5lc19tb2RpZmllZF9yZWxp ZHMgPSBibXNfYWRkX21lbWJlcihlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcywKKwkJCQkJCQkJ CQkJCQkJcmMtPnJ0aSk7CisKIAkJCS8qIENoZWNrIHRoYXQgcmVsYXRpb24gaXMgYSBsZWdhbCB0 YXJnZXQgZm9yIG1hcmtpbmcgKi8KIAkJCWlmIChyZWxhdGlvbikKIAkJCQlDaGVja1ZhbGlkUm93 TWFya1JlbChyZWxhdGlvbiwgcmMtPm1hcmtUeXBlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Jl cGxpY2F0aW9uLmMKaW5kZXggZGVmMzI3NzRjOTAuLjQ3M2QyMzZlNTUxIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUmVwbGljYXRpb24uYwpAQCAtMjA0LDcgKzIwNCw3IEBAIFJlbGF0aW9uRmlu ZFJlcGxUdXBsZUJ5SW5kZXgoUmVsYXRpb24gcmVsLCBPaWQgaWR4b2lkLAogCXNrZXlfYXR0b2Zm ID0gYnVpbGRfcmVwbGluZGV4X3NjYW5fa2V5KHNrZXksIHJlbCwgaWR4cmVsLCBzZWFyY2hzbG90 KTsKIAogCS8qIFN0YXJ0IGFuIGluZGV4IHNjYW4uICovCi0Jc2NhbiA9IGluZGV4X2JlZ2luc2Nh bihyZWwsIGlkeHJlbCwgJnNuYXAsIE5VTEwsIHNrZXlfYXR0b2ZmLCAwKTsKKwlzY2FuID0gaW5k ZXhfYmVnaW5zY2FuKHJlbCwgaWR4cmVsLCAmc25hcCwgTlVMTCwgc2tleV9hdHRvZmYsIDAsIDAp OwogCiByZXRyeToKIAlmb3VuZCA9IGZhbHNlOwpAQCAtMzgyLDcgKzM4Miw3IEBAIFJlbGF0aW9u RmluZFJlcGxUdXBsZVNlcShSZWxhdGlvbiByZWwsIExvY2tUdXBsZU1vZGUgbG9ja21vZGUsCiAK IAkvKiBTdGFydCBhIGhlYXAgc2Nhbi4gKi8KIAlJbml0RGlydHlTbmFwc2hvdChzbmFwKTsKLQlz Y2FuID0gdGFibGVfYmVnaW5zY2FuKHJlbCwgJnNuYXAsIDAsIE5VTEwpOworCXNjYW4gPSB0YWJs ZV9iZWdpbnNjYW4ocmVsLCAmc25hcCwgMCwgTlVMTCwgMCk7CiAJc2NhbnNsb3QgPSB0YWJsZV9z bG90X2NyZWF0ZShyZWwsIE5VTEwpOwogCiByZXRyeToKQEAgLTYwMSw3ICs2MDEsNyBAQCBSZWxh dGlvbkZpbmREZWxldGVkVHVwbGVJbmZvU2VxKFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3Qg KnNlYXJjaHNsb3QsCiAJICogbm90IHlldCBjb21taXR0ZWQgb3IgdGhvc2UganVzdCBjb21taXR0 ZWQgcHJpb3IgdG8gdGhlIHNjYW4gYXJlCiAJICogZXhjbHVkZWQgaW4gdXBkYXRlX21vc3RfcmVj ZW50X2RlbGV0aW9uX2luZm8oKS4KIAkgKi8KLQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJlbCwg U25hcHNob3RBbnksIDAsIE5VTEwpOworCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVsLCBTbmFw c2hvdEFueSwgMCwgTlVMTCwgMCk7CiAJc2NhbnNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShyZWws IE5VTEwpOwogCiAJdGFibGVfcmVzY2FuKHNjYW4sIE5VTEwpOwpAQCAtNjY1LDcgKzY2NSw3IEBA IFJlbGF0aW9uRmluZERlbGV0ZWRUdXBsZUluZm9CeUluZGV4KFJlbGF0aW9uIHJlbCwgT2lkIGlk eG9pZCwKIAkgKiBub3QgeWV0IGNvbW1pdHRlZCBvciB0aG9zZSBqdXN0IGNvbW1pdHRlZCBwcmlv ciB0byB0aGUgc2NhbiBhcmUKIAkgKiBleGNsdWRlZCBpbiB1cGRhdGVfbW9zdF9yZWNlbnRfZGVs ZXRpb25faW5mbygpLgogCSAqLwotCXNjYW4gPSBpbmRleF9iZWdpbnNjYW4ocmVsLCBpZHhyZWws IFNuYXBzaG90QW55LCBOVUxMLCBza2V5X2F0dG9mZiwgMCk7CisJc2NhbiA9IGluZGV4X2JlZ2lu c2NhbihyZWwsIGlkeHJlbCwgU25hcHNob3RBbnksIE5VTEwsIHNrZXlfYXR0b2ZmLCAwLCAwKTsK IAogCWluZGV4X3Jlc2NhbihzY2FuLCBza2V5LCBza2V5X2F0dG9mZiwgTlVMTCwgMCk7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1V0aWxzLmMKaW5kZXggZmRjNjVjMmI0MmIuLjI4YTA2ZGNkMjQ0IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjVXRpbHMuYwpAQCAtODkzLDYgKzg5Myw4IEBAIEV4ZWNJbml0UmVzdWx0 UmVsYXRpb24oRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJ CWVzdGF0ZS0+ZXNfcmVzdWx0X3JlbGF0aW9ucyA9IChSZXN1bHRSZWxJbmZvICoqKQogCQkJcGFs bG9jMChlc3RhdGUtPmVzX3JhbmdlX3RhYmxlX3NpemUgKiBzaXplb2YoUmVzdWx0UmVsSW5mbyAq KSk7CiAJZXN0YXRlLT5lc19yZXN1bHRfcmVsYXRpb25zW3J0aSAtIDFdID0gcmVzdWx0UmVsSW5m bzsKKwllc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyA9IGJtc19hZGRfbWVtYmVyKGVzdGF0ZS0+ ZXNfbW9kaWZpZWRfcmVsaWRzLAorCQkJCQkJCQkJCQkJcnRpKTsKIAogCS8qCiAJICogU2F2aW5n IGluIHRoZSBsaXN0IGFsbG93cyB0byBhdm9pZCBuZWVkbGVzc2x5IHRyYXZlcnNpbmcgdGhlIHdo b2xlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCmluZGV4IGJmMjRm M2Q3ZmUwLi4wZDg1NGRiNTFhMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJpdG1hcEhlYXBzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhl YXBzY2FuLmMKQEAgLTEwNSwxMSArMTA1LDE4IEBAIEJpdG1hcFRhYmxlU2NhblNldHVwKEJpdG1h cEhlYXBTY2FuU3RhdGUgKm5vZGUpCiAJICovCiAJaWYgKCFub2RlLT5zcy5zc19jdXJyZW50U2Nh bkRlc2MpCiAJeworCQl1aW50MzIJCWZsYWdzID0gMDsKKworCQlpZiAoIWJtc19pc19tZW1iZXIo KChTY2FuICopIG5vZGUtPnNzLnBzLnBsYW4pLT5zY2FucmVsaWQsCisJCQkJCQkgICBub2RlLT5z cy5wcy5zdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKSkKKwkJCWZsYWdzID0gU09fSElOVF9SRUxf UkVBRF9PTkxZOworCiAJCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9CiAJCQl0YWJsZV9i ZWdpbnNjYW5fYm0obm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAogCQkJCQkJCSAgIG5vZGUt PnNzLnBzLnN0YXRlLT5lc19zbmFwc2hvdCwKIAkJCQkJCQkgICAwLAotCQkJCQkJCSAgIE5VTEwp OworCQkJCQkJCSAgIE5VTEwsCisJCQkJCQkJICAgZmxhZ3MpOwogCX0KIAogCW5vZGUtPnNzLnNz X2N1cnJlbnRTY2FuRGVzYy0+c3QucnNfdGJtaXRlcmF0b3IgPSB0Ym1pdGVyYXRvcjsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCmluZGV4IGY0NjRjY2E5NTA3Li44N2Iw NGIxYjg4ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNj YW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCkBAIC05 NCw3ICs5NCw3IEBAIEluZGV4T25seU5leHQoSW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQogCQkJ CQkJCQkgICBlc3RhdGUtPmVzX3NuYXBzaG90LAogCQkJCQkJCQkgICAmbm9kZS0+aW9zc19JbnN0 cnVtZW50LAogCQkJCQkJCQkgICBub2RlLT5pb3NzX051bVNjYW5LZXlzLAotCQkJCQkJCQkgICBu b2RlLT5pb3NzX051bU9yZGVyQnlLZXlzKTsKKwkJCQkJCQkJICAgbm9kZS0+aW9zc19OdW1PcmRl ckJ5S2V5cywgMCk7CiAKIAkJbm9kZS0+aW9zc19TY2FuRGVzYyA9IHNjYW5kZXNjOwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKaW5kZXggZjM2OTI5ZGVlYzMuLjkwZjkyOWNlNzQx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCkBAIC0xMDIsNiArMTAyLDEyIEBA IEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAogCWlmIChzY2FuZGVzYyA9PSBOVUxM KQogCXsKKwkJdWludDMyCQlmbGFncyA9IDA7CisKKwkJaWYgKCFibXNfaXNfbWVtYmVyKCgoU2Nh biAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkLAorCQkJCQkJICAgZXN0YXRlLT5lc19t b2RpZmllZF9yZWxpZHMpKQorCQkJZmxhZ3MgPSBTT19ISU5UX1JFTF9SRUFEX09OTFk7CisKIAkJ LyoKIAkJICogV2UgcmVhY2ggaGVyZSBpZiB0aGUgaW5kZXggc2NhbiBpcyBub3QgcGFyYWxsZWws IG9yIGlmIHdlJ3JlCiAJCSAqIHNlcmlhbGx5IGV4ZWN1dGluZyBhbiBpbmRleCBzY2FuIHRoYXQg d2FzIHBsYW5uZWQgdG8gYmUgcGFyYWxsZWwuCkBAIC0xMTEsNyArMTE3LDggQEAgSW5kZXhOZXh0 KEluZGV4U2NhblN0YXRlICpub2RlKQogCQkJCQkJCQkgICBlc3RhdGUtPmVzX3NuYXBzaG90LAog CQkJCQkJCQkgICAmbm9kZS0+aXNzX0luc3RydW1lbnQsCiAJCQkJCQkJCSAgIG5vZGUtPmlzc19O dW1TY2FuS2V5cywKLQkJCQkJCQkJICAgbm9kZS0+aXNzX051bU9yZGVyQnlLZXlzKTsKKwkJCQkJ CQkJICAgbm9kZS0+aXNzX051bU9yZGVyQnlLZXlzLAorCQkJCQkJCQkgICBmbGFncyk7CiAKIAkJ bm9kZS0+aXNzX1NjYW5EZXNjID0gc2NhbmRlc2M7CiAKQEAgLTIwNyw3ICsyMTQsNyBAQCBJbmRl eE5leHRXaXRoUmVvcmRlcihJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkJCQkJCQkJICAgZXN0YXRl LT5lc19zbmFwc2hvdCwKIAkJCQkJCQkJICAgJm5vZGUtPmlzc19JbnN0cnVtZW50LAogCQkJCQkJ CQkgICBub2RlLT5pc3NfTnVtU2NhbktleXMsCi0JCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1PcmRl ckJ5S2V5cyk7CisJCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1PcmRlckJ5S2V5cywgMCk7CiAKIAkJ bm9kZS0+aXNzX1NjYW5EZXNjID0gc2NhbmRlc2M7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nh bi5jCmluZGV4IDk0MDQ3ZDI5NDMwLi40ZDBjYmI5ZGVlNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U2Vxc2Nhbi5jCkBAIC02NSwxMyArNjUsMjAgQEAgU2VxTmV4dChTZXFTY2FuU3RhdGUgKm5vZGUp CiAKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7CisJCXVpbnQzMgkJZmxhZ3MgPSAwOworCisJ CWlmICghYm1zX2lzX21lbWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxp ZCwKKwkJCQkJCSAgIGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKSkKKwkJCWZsYWdzID0gU09f SElOVF9SRUxfUkVBRF9PTkxZOworCiAJCS8qCiAJCSAqIFdlIHJlYWNoIGhlcmUgaWYgdGhlIHNj YW4gaXMgbm90IHBhcmFsbGVsLCBvciBpZiB3ZSdyZSBzZXJpYWxseQogCQkgKiBleGVjdXRpbmcg YSBzY2FuIHRoYXQgd2FzIHBsYW5uZWQgdG8gYmUgcGFyYWxsZWwuCiAJCSAqLwogCQlzY2FuZGVz YyA9IHRhYmxlX2JlZ2luc2Nhbihub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sCiAJCQkJCQkJ CSAgIGVzdGF0ZS0+ZXNfc25hcHNob3QsCi0JCQkJCQkJCSAgIDAsIE5VTEwpOworCQkJCQkJCQkg ICAwLCBOVUxMLCBmbGFncyk7CisKIAkJbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gc2Nh bmRlc2M7CiAJfQogCkBAIC0zNjcsMTQgKzM3NCwyMCBAQCBFeGVjU2VxU2NhbkluaXRpYWxpemVE U00oU2VxU2NhblN0YXRlICpub2RlLAogewogCUVTdGF0ZQkgICAqZXN0YXRlID0gbm9kZS0+c3Mu cHMuc3RhdGU7CiAJUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuOworCXVpbnQzMgkJZmxhZ3Mg PSAwOwogCiAJcHNjYW4gPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywgbm9kZS0+cHNjYW5f bGVuKTsKIAl0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShub2RlLT5zcy5zc19jdXJyZW50 UmVsYXRpb24sCiAJCQkJCQkJCSAgcHNjYW4sCiAJCQkJCQkJCSAgZXN0YXRlLT5lc19zbmFwc2hv dCk7CiAJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBub2RlLT5zcy5wcy5wbGFuLT5wbGFuX25v ZGVfaWQsIHBzY2FuKTsKKwlpZiAoIWJtc19pc19tZW1iZXIoKChTY2FuICopIG5vZGUtPnNzLnBz LnBsYW4pLT5zY2FucmVsaWQsCisJCQkJCSAgIGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKSkK KwkJZmxhZ3MgPSBTT19ISU5UX1JFTF9SRUFEX09OTFk7CisKIAlub2RlLT5zcy5zc19jdXJyZW50 U2NhbkRlc2MgPQotCQl0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3VycmVu dFJlbGF0aW9uLCBwc2Nhbik7CisJCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5z c19jdXJyZW50UmVsYXRpb24sIHBzY2FuLAorCQkJCQkJCQkgZmxhZ3MpOwogfQogCiAvKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCkBAIC00MDQsOCArNDE3LDE1IEBAIEV4ZWNTZXFTY2FuSW5pdGlhbGl6ZVdvcmtlcihTZXFT Y2FuU3RhdGUgKm5vZGUsCiAJCQkJCQkJUGFyYWxsZWxXb3JrZXJDb250ZXh0ICpwd2N4dCkKIHsK IAlQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW47CisJdWludDMyCQlmbGFncyA9IDA7CisKKwlp ZiAoIWJtc19pc19tZW1iZXIoKChTY2FuICopIG5vZGUtPnNzLnBzLnBsYW4pLT5zY2FucmVsaWQs CisJCQkJCSAgIG5vZGUtPnNzLnBzLnN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMpKQorCQlmbGFn cyA9IFNPX0hJTlRfUkVMX1JFQURfT05MWTsKIAogCXBzY2FuID0gc2htX3RvY19sb29rdXAocHdj eHQtPnRvYywgbm9kZS0+c3MucHMucGxhbi0+cGxhbl9ub2RlX2lkLCBmYWxzZSk7CiAJbm9kZS0+ c3Muc3NfY3VycmVudFNjYW5EZXNjID0KLQkJdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKG5vZGUt PnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwgcHNjYW4pOworCQl0YWJsZV9iZWdpbnNjYW5fcGFyYWxs ZWwobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAorCQkJCQkJCQkgcHNjYW4sCisJCQkJCQkJ CSBmbGFncyk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJv dW5kcy5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYwppbmRleCA4YmEw MzhjNWVmNC4uZDNiMzQwZWUyYTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmlu Zy9wYXJ0Ym91bmRzLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMu YwpAQCAtMzM3MCw3ICszMzcwLDcgQEAgY2hlY2tfZGVmYXVsdF9wYXJ0aXRpb25fY29udGVudHMo UmVsYXRpb24gcGFyZW50LCBSZWxhdGlvbiBkZWZhdWx0X3JlbCwKIAkJZWNvbnRleHQgPSBHZXRQ ZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7CiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hv dChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKIAkJdHVwc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHBh cnRfcmVsLCAmZXN0YXRlLT5lc190dXBsZVRhYmxlKTsKLQkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nh bihwYXJ0X3JlbCwgc25hcHNob3QsIDAsIE5VTEwpOworCQlzY2FuID0gdGFibGVfYmVnaW5zY2Fu KHBhcnRfcmVsLCBzbmFwc2hvdCwgMCwgTlVMTCwgMCk7CiAKIAkJLyoKIAkJICogU3dpdGNoIHRv IHBlci10dXBsZSBtZW1vcnkgY29udGV4dCBhbmQgcmVzZXQgaXQgZm9yIGVhY2ggdHVwbGUKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3NlbGZ1bmNzLmMKaW5kZXggNTQwYWE5NjI4ZDcuLjI4NDM0MTQ2ZWJhIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9hZHQvc2VsZnVuY3MuYwpAQCAtNzEwMCw3ICs3MTAwLDcgQEAgZ2V0X2FjdHVhbF92 YXJpYWJsZV9lbmRwb2ludChSZWxhdGlvbiBoZWFwUmVsLAogCiAJaW5kZXhfc2NhbiA9IGluZGV4 X2JlZ2luc2NhbihoZWFwUmVsLCBpbmRleFJlbCwKIAkJCQkJCQkJICZTbmFwc2hvdE5vblZhY3V1 bWFibGUsIE5VTEwsCi0JCQkJCQkJCSAxLCAwKTsKKwkJCQkJCQkJIDEsIDAsIDApOwogCS8qIFNl dCBpdCB1cCBmb3IgaW5kZXgtb25seSBzY2FuICovCiAJaW5kZXhfc2Nhbi0+eHNfd2FudF9pdHVw ID0gdHJ1ZTsKIAlpbmRleF9yZXNjYW4oaW5kZXhfc2Nhbiwgc2NhbmtleXMsIDEsIE5VTEwsIDAp OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvZ2VuYW0uaAppbmRleCA5MjAwYTIyYmQ5Zi4uMmY5ZTllYTYzMTggMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5h bS5oCkBAIC0xNzcsNyArMTc3LDcgQEAgZXh0ZXJuIEluZGV4U2NhbkRlc2MgaW5kZXhfYmVnaW5z Y2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJCSBSZWxhdGlvbiBpbmRleFJlbGF0 aW9uLAogCQkJCQkJCQkJIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkJIEluZGV4U2Nhbklu c3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKLQkJCQkJCQkJCSBpbnQgbmtleXMsIGludCBub3Jk ZXJieXMpOworCQkJCQkJCQkJIGludCBua2V5cywgaW50IG5vcmRlcmJ5cywgdWludDMyIGZsYWdz KTsKIGV4dGVybiBJbmRleFNjYW5EZXNjIGluZGV4X2JlZ2luc2Nhbl9iaXRtYXAoUmVsYXRpb24g aW5kZXhSZWxhdGlvbiwKIAkJCQkJCQkJCQkJU25hcHNob3Qgc25hcHNob3QsCiAJCQkJCQkJCQkJ CUluZGV4U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKQEAgLTIwNCw2ICsyMDQsNyBA QCBleHRlcm4gSW5kZXhTY2FuRGVzYyBpbmRleF9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24g aGVhcHJlbCwKIAkJCQkJCQkJCQkJICBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1l bnQsCiAJCQkJCQkJCQkJCSAgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzLAogCQkJCQkJCQkJCQkg IFBhcmFsbGVsSW5kZXhTY2FuRGVzYyBwc2Nhbik7CisKIGV4dGVybiBJdGVtUG9pbnRlciBpbmRl eF9nZXRuZXh0X3RpZChJbmRleFNjYW5EZXNjIHNjYW4sCiAJCQkJCQkJCQkgU2NhbkRpcmVjdGlv biBkaXJlY3Rpb24pOwogZXh0ZXJuIGJvb2wgaW5kZXhfZmV0Y2hfaGVhcChJbmRleFNjYW5EZXNj IHNjYW4sIFR1cGxlVGFibGVTbG90ICpzbG90KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCAyYjZhNTIx ZTRlYS4uMWUzZGY1NDYyOGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTk1LDYgKzk1LDEzIEBAIHR5 cGVkZWYgc3RydWN0IEhlYXBTY2FuRGVzY0RhdGEKIAkgKi8KIAlQYXJhbGxlbEJsb2NrVGFibGVT Y2FuV29ya2VyRGF0YSAqcnNfcGFyYWxsZWx3b3JrZXJkYXRhOwogCisJLyoKKwkgKiBGb3Igc2Vx dWVudGlhbCBzY2FucyBhbmQgYml0bWFwIGhlYXAgc2NhbnMuIElmIHRoZSByZWxhdGlvbiBpcyBu b3QKKwkgKiBiZWluZyBtb2RpZmllZCwgb24tYWNjZXNzIHBydW5pbmcgbWF5IHJlYWQgaW4gdGhl IGN1cnJlbnQgaGVhcCBwYWdlJ3MKKwkgKiBjb3JyZXNwb25kaW5nIFZNIGJsb2NrIHRvIHRoaXMg YnVmZmVyLgorCSAqLworCUJ1ZmZlcgkJcnNfdm1idWZmZXI7CisKIAkvKiB0aGVzZSBmaWVsZHMg b25seSB1c2VkIGluIHBhZ2UtYXQtYS10aW1lIG1vZGUgYW5kIGZvciBiaXRtYXAgc2NhbnMgKi8K IAl1aW50MzIJCXJzX2NpbmRleDsJCS8qIGN1cnJlbnQgdHVwbGUncyBpbmRleCBpbiB2aXN0dXBs ZXMgKi8KIAl1aW50MzIJCXJzX250dXBsZXM7CQkvKiBudW1iZXIgb2YgdmlzaWJsZSB0dXBsZXMg b24gcGFnZSAqLwpAQCAtMTE3LDggKzEyNCwyNCBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEZldGNo SGVhcERhdGEKIHsKIAlJbmRleEZldGNoVGFibGVEYXRhIHhzX2Jhc2U7CS8qIEFNIGluZGVwZW5k ZW50IHBhcnQgb2YgdGhlIGRlc2NyaXB0b3IgKi8KIAotCUJ1ZmZlcgkJeHNfY2J1ZjsJCS8qIGN1 cnJlbnQgaGVhcCBidWZmZXIgaW4gc2NhbiwgaWYgYW55ICovCi0JLyogTkI6IGlmIHhzX2NidWYg aXMgbm90IEludmFsaWRCdWZmZXIsIHdlIGhvbGQgYSBwaW4gb24gdGhhdCBidWZmZXIgKi8KKwkv KgorCSAqIEN1cnJlbnQgaGVhcCBidWZmZXIgaW4gc2NhbiwgaWYgYW55LiBOQjogaWYgeHNfY2J1 ZiBpcyBub3QKKwkgKiBJbnZhbGlkQnVmZmVyLCB3ZSBob2xkIGEgcGluIG9uIHRoYXQgYnVmZmVy LgorCSAqLworCUJ1ZmZlcgkJeHNfY2J1ZjsKKworCS8qCisJICogRm9yIGluZGV4IHNjYW5zIHRo YXQgZG8gbm90IG1vZGlmeSB0aGUgdW5kZXJseWluZyBoZWFwIHRhYmxlLCBvbi1hY2Nlc3MKKwkg KiBwcnVuaW5nIG1heSByZWFkIGluIHRoZSBjdXJyZW50IGhlYXAgcGFnZSdzIGNvcnJlc3BvbmRp bmcgVk0gYmxvY2sgdG8KKwkgKiB0aGlzIGJ1ZmZlci4KKwkgKi8KKwlCdWZmZXIJCXhzX3ZtYnVm ZmVyOworCisJLyoKKwkgKiBTb21lIG9wdGltaXphdGlvbnMgY2FuIG9ubHkgYmUgcGVyZm9ybWVk IGlmIHRoZSBxdWVyeSBkb2VzIG5vdCBtb2RpZnkKKwkgKiB0aGUgdW5kZXJseWluZyByZWxhdGlv bi4gVHJhY2sgdGhhdCBoZXJlLgorCSAqLworCWJvb2wJCW1vZGlmaWVzX2Jhc2VfcmVsOwogfSBJ bmRleEZldGNoSGVhcERhdGE7CiAKIC8qIFJlc3VsdCBjb2RlcyBmb3IgSGVhcFR1cGxlU2F0aXNm aWVzVmFjdXVtICovCkBAIC00MTcsNyArNDQwLDggQEAgZXh0ZXJuIFRyYW5zYWN0aW9uSWQgaGVh cF9pbmRleF9kZWxldGVfdHVwbGVzKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCQkJICBUTV9JbmRl eERlbGV0ZU9wICpkZWxzdGF0ZSk7CiAKIC8qIGluIGhlYXAvcHJ1bmVoZWFwLmMgKi8KLWV4dGVy biB2b2lkIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZm ZXIpOworZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwg QnVmZmVyIGJ1ZmZlciwKKwkJCQkJCQkJQnVmZmVyICp2bWJ1ZmZlcik7CiBleHRlcm4gdm9pZCBo ZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJ CQkJCQkJICAgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1bHQsCiAJCQkJCQkJCQkgICBPZmZzZXRO dW1iZXIgKm9mZl9sb2MsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCBlMTZiZjAyNTY5Mi4uMDA0MjYz NjQ2M2YgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtNjMsNiArNjMsOCBAQCB0eXBlZGVmIGVudW0g U2Nhbk9wdGlvbnMKIAogCS8qIHVucmVnaXN0ZXIgc25hcHNob3QgYXQgc2NhbiBlbmQ/ICovCiAJ U09fVEVNUF9TTkFQU0hPVCA9IDEgPDwgOSwKKwkvKiBzZXQgaWYgdGhlIHF1ZXJ5IGRvZXNuJ3Qg bW9kaWZ5IHRoZSByZWwgKi8KKwlTT19ISU5UX1JFTF9SRUFEX09OTFkgPSAxIDw8IDEwLAogfQkJ CVNjYW5PcHRpb25zOwogCiAvKgpAQCAtNDIwLDcgKzQyMiw3IEBAIHR5cGVkZWYgc3RydWN0IFRh YmxlQW1Sb3V0aW5lCiAJICoKIAkgKiBUdXBsZXMgZm9yIGFuIGluZGV4IHNjYW4gY2FuIHRoZW4g YmUgZmV0Y2hlZCB2aWEgaW5kZXhfZmV0Y2hfdHVwbGUuCiAJICovCi0Jc3RydWN0IEluZGV4RmV0 Y2hUYWJsZURhdGEgKigqaW5kZXhfZmV0Y2hfYmVnaW4pIChSZWxhdGlvbiByZWwpOworCXN0cnVj dCBJbmRleEZldGNoVGFibGVEYXRhICooKmluZGV4X2ZldGNoX2JlZ2luKSAoUmVsYXRpb24gcmVs LCB1aW50MzIgZmxhZ3MpOwogCiAJLyoKIAkgKiBSZXNldCBpbmRleCBmZXRjaC4gVHlwaWNhbGx5 IHRoaXMgd2lsbCByZWxlYXNlIGNyb3NzIGluZGV4IGZldGNoCkBAIC04NzQsOSArODc2LDkgQEAg ZXh0ZXJuIFR1cGxlVGFibGVTbG90ICp0YWJsZV9zbG90X2NyZWF0ZShSZWxhdGlvbiByZWxhdGlv biwgTGlzdCAqKnJlZ2xpc3QpOwogICovCiBzdGF0aWMgaW5saW5lIFRhYmxlU2NhbkRlc2MKIHRh YmxlX2JlZ2luc2NhbihSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAotCQkJCWludCBu a2V5cywgU2NhbktleURhdGEgKmtleSkKKwkJCQlpbnQgbmtleXMsIFNjYW5LZXlEYXRhICprZXks IHVpbnQzMiBmbGFncykKIHsKLQl1aW50MzIJCWZsYWdzID0gU09fVFlQRV9TRVFTQ0FOIHwKKwlm bGFncyB8PSBTT19UWVBFX1NFUVNDQU4gfAogCQlTT19BTExPV19TVFJBVCB8IFNPX0FMTE9XX1NZ TkMgfCBTT19BTExPV19QQUdFTU9ERTsKIAogCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPnNjYW5f YmVnaW4ocmVsLCBzbmFwc2hvdCwgbmtleXMsIGtleSwgTlVMTCwgZmxhZ3MpOwpAQCAtOTE5LDkg KzkyMSw5IEBAIHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNu YXBzaG90LAogICovCiBzdGF0aWMgaW5saW5lIFRhYmxlU2NhbkRlc2MKIHRhYmxlX2JlZ2luc2Nh bl9ibShSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBzaG90LAotCQkJCSAgIGludCBua2V5cywg U2NhbktleURhdGEgKmtleSkKKwkJCQkgICBpbnQgbmtleXMsIFNjYW5LZXlEYXRhICprZXksIHVp bnQzMiBmbGFncykKIHsKLQl1aW50MzIJCWZsYWdzID0gU09fVFlQRV9CSVRNQVBTQ0FOIHwgU09f QUxMT1dfUEFHRU1PREU7CisJZmxhZ3MgfD0gU09fVFlQRV9CSVRNQVBTQ0FOIHwgU09fQUxMT1df UEFHRU1PREU7CiAKIAlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT5zY2FuX2JlZ2luKHJlbCwgc25h cHNob3QsIG5rZXlzLCBrZXksCiAJCQkJCQkJCQkgICBOVUxMLCBmbGFncyk7CkBAIC0xMTI4LDcg KzExMzAsOCBAQCBleHRlcm4gdm9pZCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShSZWxh dGlvbiByZWwsCiAgKiBDYWxsZXIgbXVzdCBob2xkIGEgc3VpdGFibGUgbG9jayBvbiB0aGUgcmVs YXRpb24uCiAgKi8KIGV4dGVybiBUYWJsZVNjYW5EZXNjIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxl bChSZWxhdGlvbiByZWxhdGlvbiwKLQkJCQkJCQkJCQkJICBQYXJhbGxlbFRhYmxlU2NhbkRlc2Mg cHNjYW4pOworCQkJCQkJCQkJCQkgIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbiwKKwkJCQkJ CQkJCQkJICB1aW50MzIgZmxhZ3MpOwogCiAvKgogICogUmVzdGFydCBhIHBhcmFsbGVsIHNjYW4u ICBDYWxsIHRoaXMgaW4gdGhlIGxlYWRlciBwcm9jZXNzLiAgQ2FsbGVyIGlzCkBAIC0xMTU0LDkg KzExNTcsOSBAQCB0YWJsZV9wYXJhbGxlbHNjYW5fcmVpbml0aWFsaXplKFJlbGF0aW9uIHJlbCwg UGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQogICogVHVwbGVzIGZvciBhbiBpbmRleCBzY2Fu IGNhbiB0aGVuIGJlIGZldGNoZWQgdmlhIHRhYmxlX2luZGV4X2ZldGNoX3R1cGxlKCkuCiAgKi8K IHN0YXRpYyBpbmxpbmUgSW5kZXhGZXRjaFRhYmxlRGF0YSAqCi10YWJsZV9pbmRleF9mZXRjaF9i ZWdpbihSZWxhdGlvbiByZWwpCit0YWJsZV9pbmRleF9mZXRjaF9iZWdpbihSZWxhdGlvbiByZWws IHVpbnQzMiBmbGFncykKIHsKLQlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT5pbmRleF9mZXRjaF9i ZWdpbihyZWwpOworCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPmluZGV4X2ZldGNoX2JlZ2luKHJl bCwgZmxhZ3MpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCAxOGFlOGYwZDRiYi4u MGMzYjBkNjAxNjggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC02NzYsNiArNjc2LDEyIEBAIHR5 cGVkZWYgc3RydWN0IEVTdGF0ZQogCQkJCQkJCQkJICogRXhlY0RvSW5pdGlhbFBydW5pbmcoKSAq LwogCWNvbnN0IGNoYXIgKmVzX3NvdXJjZVRleHQ7CS8qIFNvdXJjZSB0ZXh0IGZyb20gUXVlcnlE ZXNjICovCiAKKwkvKgorCSAqIFJUIGluZGV4ZXMgb2YgcmVsYXRpb25zIG1vZGlmaWVkIGJ5IHRo ZSBxdWVyeSBlaXRoZXIgdGhyb3VnaAorCSAqIFVQREFURS9ERUxFVEUvSU5TRVJUL01FUkdFIG9y IFNFTEVDVCBGT1IgVVBEQVRFCisJICovCisJQml0bWFwc2V0ICAqZXNfbW9kaWZpZWRfcmVsaWRz OworCiAJSnVua0ZpbHRlciAqZXNfanVua0ZpbHRlcjsJLyogdG9wLWxldmVsIGp1bmsgZmlsdGVy LCBpZiBhbnkgKi8KIAogCS8qIElmIHF1ZXJ5IGNhbiBpbnNlcnQvZGVsZXRlIHR1cGxlcywgdGhl IGNvbW1hbmQgSUQgdG8gbWFyayB0aGVtIHdpdGggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Y292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbCBiL3NyYy90ZXN0L3JlY292 ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbAppbmRleCBlYmUyZmFlMTc4OS4u YmRkOWYwYTYyY2QgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlf bG9naWNhbF9kZWNvZGluZy5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5 X2xvZ2ljYWxfZGVjb2RpbmcucGwKQEAgLTI5Niw2ICsyOTYsNyBAQCB3YWxfbGV2ZWwgPSAnbG9n aWNhbCcKIG1heF9yZXBsaWNhdGlvbl9zbG90cyA9IDQKIG1heF93YWxfc2VuZGVycyA9IDQKIGF1 dG92YWN1dW0gPSBvZmYKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KIH0pOwogJG5vZGVfcHJp bWFyeS0+ZHVtcF9pbmZvOwogJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CkBAIC03NDgsNyArNzQ5LDcg QEAgY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRoYW5kbGUsCiAkbG9nc3RhcnQgPSAtcyAk bm9kZV9zdGFuZGJ5LT5sb2dmaWxlOwogCiByZWFjdGl2ZV9zbG90c19jaGFuZ2VfaGZzX2FuZF93 YWl0X2Zvcl94bWlucygnc2hhcmVkX3Jvd19yZW1vdmFsXycsCi0JJ25vX2NvbmZsaWN0XycsIDAs IDEpOworCSdub19jb25mbGljdF8nLCAxLCAwKTsKIAogIyBUaGlzIHNob3VsZCBub3QgdHJpZ2dl ciBhIGNvbmZsaWN0CiB3YWl0X3VudGlsX3ZhY3V1bV9jYW5fcmVtb3ZlKAotLSAKMi40My4wCgo= --0000000000004d8ca00643fabb4a Content-Type: text/x-patch; charset="UTF-8"; name="v21-0012-Set-pd_prune_xid-on-insert.patch" Content-Disposition: attachment; filename="v21-0012-Set-pd_prune_xid-on-insert.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mi6mbnlb11 RnJvbSA0ZTBmZWJlMDNjZDMwNWU4MWNiNzMyMzVkNzUwOTAxZTllZjM3OWYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE2OjEyOjU2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjEgMTIvMTJdIFNldCBwZF9wcnVuZV94aWQgb24gaW5zZXJ0Ck1JTUUtVmVyc2lvbjog MS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5z ZmVyLUVuY29kaW5nOiA4Yml0CgpOb3cgdGhhdCB2aXNpYmlsaXR5IG1hcCAoVk0pIHVwZGF0ZXMg Y2FuIG9jY3VyIGR1cmluZyByZWFkLW9ubHkgcXVlcmllcywKaXQgbWFrZXMgc2Vuc2UgdG8gYWxz byBzZXQgdGhlIHBhZ2XigJlzIHBkX3BydW5lX3hpZCBoaW50IGR1cmluZyBpbnNlcnRzLgpUaGlz IGVuYWJsZXMgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSB0byBydW4gYWZ0ZXIgYSBwYWdl IGlzCmZpbGxlZCB3aXRoIG5ld2x5IGluc2VydGVkIHR1cGxlcyB0aGUgZmlyc3QgdGltZSBpdCBp cyByZWFkLgoKVGhpcyBjaGFuZ2UgYWxzbyBhZGRyZXNzZXMgYSBsb25nLXN0YW5kaW5nIG5vdGUg aW4gaGVhcF9pbnNlcnQoKSBhbmQKaGVhcF9tdWx0aV9pbnNlcnQoKSwgd2hpY2ggb2JzZXJ2ZWQg dGhhdCBzZXR0aW5nIHBkX3BydW5lX3hpZCB3b3VsZApoZWxwIGNsZWFuIHVwIGFib3J0ZWQgaW5z ZXJ0aW9ucyBzb29uZXIuIFdpdGhvdXQgaXQsIHN1Y2ggdHVwbGVzIG1pZ2h0CmxpbmdlciB1bnRp bCBWQUNVVU0sIHdoZXJlYXMgbm93IHRoZXkgY2FuIGJlIHBydW5lZCBlYXJsaWVyLgoKU2V0dGlu ZyBwZF9wcnVuZV94aWQgb24gaW5zZXJ0IGNhbiBjYXVzZSBhIHBhZ2UgdG8gYmUgZGlydGllZCBh bmQKd3JpdHRlbiBvdXQgd2hlbiBpdCBwcmV2aW91c2x5IHdvdWxkIG5vdCBoYXZlIGJlZW4sIGFm ZmV0Y3RpbmcgdGhlCnJlcG9ydGVkIG51bWJlciBvZiBoaXRzIGluIHRoZSBpbmRleC1raWxsdHVw bGVzIGlzb2xhdGlvbiB0ZXN0LiBJdCBpcwp1bmNsZWFyIGlmIHRoaXMgaXMgYSBidWcgaW4gdGhl IHdheSBoaXRzIGFyZSB0cmFja2VkLCBhIGZhdWx0eSB0ZXN0CmV4cGVjdGF0aW9uLCBvciBpZiBz aW1wbHkgdXBkYXRpbmcgdGhlIHRlc3QncyBleHBlY3RlZCBvdXRwdXQgaXMKc3VmZmljaWVudCBy ZW1lZGlhdGlvbi4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAg ICAgICAgfCAyNSArKysrKysrKysrKysrLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1feGxvZy5jICAgICAgICAgfCAxNSArKysrKysrKysrLQogLi4uL2lzb2xhdGlvbi9leHBl Y3RlZC9pbmRleC1raWxsdHVwbGVzLm91dCAgIHwgIDYgKystLS0KIDMgZmlsZXMgY2hhbmdlZCwg MzQgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0u YwppbmRleCBhZTUzZTMxMWNlMS4uZjMyOWY0OTc0ODAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k 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 --0000000000004d8ca00643fabb4a--