Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pFA4Z-0006q0-ML for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Jan 2023 08:33:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pFA4Y-0002JL-Gx for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Jan 2023 08:33:30 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pFA4Y-0002JC-0p for pgsql-hackers@lists.postgresql.org; Tue, 10 Jan 2023 08:33:30 +0000 Received: from mail-wr1-x436.google.com ([2a00:1450:4864:20::436]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pFA4S-0003tF-SF for pgsql-hackers@postgresql.org; Tue, 10 Jan 2023 08:33:29 +0000 Received: by mail-wr1-x436.google.com with SMTP id m7so10890509wrn.10 for ; Tue, 10 Jan 2023 00:33:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=xiBMA3hSbOu/XkHc5FPcaAaa3oocA5CDYXeX3fdBHMQ=; b=R6xyK6E7eUb5aLr2RX/NYwnGhUYo+uQUdEokTS0YSVjhcrWiAEgD+I+B7Hgj5Ep0+p VWWo+4suc6cxM9gqcfOM3F+U1O5bC79L9bSuZy6BLTqynZLNPq/lEfoQ/30g3gUqotYq /kYcXuiyEPYZU6+XGUGYNqLHFo+crzvQ9o74SBkgGQzJ0pIvklFqLu+qK9a3+nuj6d6m aUdV1Y/ReMwR/cHkDJJMLIrxYUdMBmDiaSUHfHuc42osWBT03OlYz42O/UjvuVaHdrur U0CKT4gFYjDMofEqDIrOx4QoOMX3SBMvg5tmamrYwtxkzAq/AaXd+si48cU5wZW8hKDp pVnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=xiBMA3hSbOu/XkHc5FPcaAaa3oocA5CDYXeX3fdBHMQ=; b=yH04rNrq07ZiGE8vfQ2cpJwiDiN+8CuJe1PnntYTjkuvTID//V/QkUCjBkIXJFcLcZ hvb+Fj8/Q0VR9CIsmrNwG6pcV2iXLprM5yAJK0cwzcDs506Un5VE51NKfy5OMYZiSQFj CP/gUy0LQCE7WKm2KbyCcNtk4zPCFCRZbXjEe+beKGcP0VfEEAN9bUZk5YjWuyekIJVF nZj7Hu4scGJh/XwArZ+xhfpXZwdUAD9Xh5n99DJ6GgdpgPly/+K/G/Q5exJ/Uemv2TJk fWbp045Y8fgMaKJWpewy3MeEF4PnQCB/3gqeQU2MWqsA/8rqUkhlERrUYpWBfOF+Cd/2 6pIQ== X-Gm-Message-State: AFqh2kpAFecy3gxqT98m9VmEubL4vJMD7xPDV+whZIeM0QkC+uJLrCn1 vAwHoNypwe+1SWFrQbesv1k= X-Google-Smtp-Source: AMrXdXtMZvihLei5AXT/fJIh9UoVC0MqkkD6lP2StcUB/EYS55N9Mz8VQtJukILdzxSmuwxp6m16Iw== X-Received: by 2002:a5d:6952:0:b0:274:3f67:470 with SMTP id r18-20020a5d6952000000b002743f670470mr48534820wrw.51.1673339603602; Tue, 10 Jan 2023 00:33:23 -0800 (PST) Received: from [192.168.15.123] ([54.239.6.187]) by smtp.gmail.com with ESMTPSA id y7-20020a5d4707000000b00291f1a5ced6sm10388088wrq.53.2023.01.10.00.33.22 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 10 Jan 2023 00:33:22 -0800 (PST) Content-Type: multipart/mixed; boundary="------------rNN4FJ950ueQmmYvLj50n8vA" Message-ID: <6f8503b7-93d6-e78d-1d61-09cfec4d59c9@gmail.com> Date: Tue, 10 Jan 2023 09:33:21 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: Minimal logical decoding on standbys To: Andres Freund , Robert Haas , Thomas Munro Cc: Alvaro Herrera , Ibrar Ahmed , Amit Khandekar , fabriziomello@gmail.com, tushar , Rahila Syed , pgsql-hackers References: <20221214173552.sshklqvwezeo52h3@alap3.anarazel.de> <1f2ad9fd-53ff-74cc-a602-72d45423bcab@gmail.com> <05c0c4f3-82eb-bc6d-c876-5a265c05927b@gmail.com> <20230106034036.2m4qnn7ep7b5ipet@awork3.anarazel.de> Content-Language: en-US From: "Drouvot, Bertrand" In-Reply-To: <20230106034036.2m4qnn7ep7b5ipet@awork3.anarazel.de> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------rNN4FJ950ueQmmYvLj50n8vA Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, On 1/6/23 4:40 AM, Andres Freund wrote: > Hi, > 0002: > > >> +/* >> + * Helper for InvalidateConflictingLogicalReplicationSlot -- acquires the given slot >> + * and mark it invalid, if necessary and possible. >> + * >> + * Returns whether ReplicationSlotControlLock was released in the interim (and >> + * in that case we're not holding the lock at return, otherwise we are). >> + * >> + * This is inherently racy, because we release the LWLock >> + * for syscalls, so caller must restart if we return true. >> + */ >> +static bool >> +InvalidatePossiblyConflictingLogicalReplicationSlot(ReplicationSlot *s, TransactionId xid) > > This appears to be a near complete copy of InvalidatePossiblyObsoleteSlot(). I > don't think we should have two versions of that non-trivial code. Seems we > could just have an additional argument for InvalidatePossiblyObsoleteSlot()? Good point, done in V37 attached. The new logical slot invalidation handling has been "merged" with the obsolete LSN case into 2 new functions (InvalidateObsoleteOrConflictingLogicalReplicationSlots() and InvalidatePossiblyObsoleteOrConflictingLogicalSlot()), removing InvalidateObsoleteReplicationSlots() and InvalidatePossiblyObsoleteSlot(). > > >> + ereport(LOG, >> + (errmsg("invalidating slot \"%s\" because it conflicts with recovery", NameStr(slotname)))); >> + > > I think this should report more details, similar to what > InvalidateObsoleteReplicationSlots() does. > Agree, done in V37 (adding more details about the xid horizon and wal_level < logical on master cases). > >> --- a/src/backend/replication/logical/logicalfuncs.c >> +++ b/src/backend/replication/logical/logicalfuncs.c >> @@ -216,11 +216,14 @@ pg_logical_slot_get_changes_guts(FunctionCallInfo fcinfo, bool confirm, bool bin >> >> /* >> * After the sanity checks in CreateDecodingContext, make sure the >> - * restart_lsn is valid. Avoid "cannot get changes" wording in this >> + * restart_lsn is valid or both xmin and catalog_xmin are valid. >> + * Avoid "cannot get changes" wording in this >> * errmsg because that'd be confusingly ambiguous about no changes >> * being available. >> */ >> - if (XLogRecPtrIsInvalid(MyReplicationSlot->data.restart_lsn)) >> + if (XLogRecPtrIsInvalid(MyReplicationSlot->data.restart_lsn) >> + || (!TransactionIdIsValid(MyReplicationSlot->data.xmin) >> + && !TransactionIdIsValid(MyReplicationSlot->data.catalog_xmin))) >> ereport(ERROR, >> (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), >> errmsg("can no longer get changes from replication slot \"%s\"", > > Hm. Feels like we should introduce a helper like SlotIsInvalidated() instead > of having this condition in a bunch of places. > Agree, LogicalReplicationSlotIsInvalid() has been added in V37. >> + if (!TransactionIdIsValid(MyReplicationSlot->data.xmin) >> + && !TransactionIdIsValid(MyReplicationSlot->data.catalog_xmin)) >> + ereport(ERROR, >> + (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), >> + errmsg("cannot read from logical replication slot \"%s\"", >> + cmd->slotname), >> + errdetail("This slot has been invalidated because it was conflicting with recovery."))); >> + > > This is a more precise error than the one in > pg_logical_slot_get_changes_guts(). > > I think both places should output the same error. Agree, done in V37 attached. > ISTM that the relevant code > should be in CreateDecodingContext(). Imo the code to deal with the WAL > version of this has been misplaced... > Looks like a good idea. I'll start a dedicated thread to move the already existing error reporting code part of pg_logical_slot_get_changes_guts() and StartLogicalReplication() into CreateDecodingContext(). >> --- a/src/backend/storage/ipc/procarray.c >> +++ b/src/backend/storage/ipc/procarray.c >> @@ -3477,6 +3477,10 @@ SignalVirtualTransaction(VirtualTransactionId vxid, ProcSignalReason sigmode, >> >> GET_VXID_FROM_PGPROC(procvxid, *proc); >> >> + /* >> + * Note: vxid.localTransactionId can be invalid, which means the >> + * request is to signal the pid that is not running a transaction. >> + */ >> if (procvxid.backendId == vxid.backendId && >> procvxid.localTransactionId == vxid.localTransactionId) >> { > > I can't really parse the comment. > Looks like it's there since a long time ago (before I started working on this thread). I did not pay that much attention to it, but now that you say it I'm not sure why it as been previously added. Given that 1) I don't get it too and 2) that this comment is the only one modification in this file then V37 just removes it. >> @@ -500,6 +502,9 @@ ResolveRecoveryConflictWithSnapshot(TransactionId snapshotConflictHorizon, >> PROCSIG_RECOVERY_CONFLICT_SNAPSHOT, >> WAIT_EVENT_RECOVERY_CONFLICT_SNAPSHOT, >> true); >> + >> + if (isCatalogRel) >> + InvalidateConflictingLogicalReplicationSlots(locator.dbOid, snapshotConflictHorizon); >> } > > Might be worth checking if wal_level >= logical before the somewhat expensive > InvalidateConflictingLogicalReplicationSlots(). > Good point, done in V37. > >> @@ -3051,6 +3054,25 @@ RecoveryConflictInterrupt(ProcSignalReason reason) >> case PROCSIG_RECOVERY_CONFLICT_LOCK: >> case PROCSIG_RECOVERY_CONFLICT_TABLESPACE: >> case PROCSIG_RECOVERY_CONFLICT_SNAPSHOT: >> + case PROCSIG_RECOVERY_CONFLICT_LOGICALSLOT: >> + /* >> + * For conflicts that require a logical slot to be invalidated, the >> + * requirement is for the signal receiver to release the slot, >> + * so that it could be invalidated by the signal sender. So for >> + * normal backends, the transaction should be aborted, just >> + * like for other recovery conflicts. But if it's walsender on >> + * standby, then it has to be killed so as to release an >> + * acquired logical slot. >> + */ >> + if (am_cascading_walsender && >> + reason == PROCSIG_RECOVERY_CONFLICT_LOGICALSLOT && >> + MyReplicationSlot && SlotIsLogical(MyReplicationSlot)) >> + { >> + RecoveryConflictPending = true; >> + QueryCancelPending = true; >> + InterruptPending = true; >> + break; >> + } >> >> /* >> * If we aren't in a transaction any longer then ignore. > > Why does the walsender need to be killed? I think it might just be that > IsTransactionOrTransactionBlock() might return false, even though we want to > cancel. The code actually seems to only cancel (QueryCancelPending is set > rather than ProcDiePending), but the comment talks about killing? > Oh right, this comment is also there since a long time ago. I think the code is OK (as we break in that case and so we don't go through IsTransactionOrTransactionBlock()). So, V37 just modifies the comment. Please find attached, V37 taking care of: 0001: commit message modifications and renaming VISIBILITYMAP_ON_CATALOG_ACCESSIBLE_IN_LOGICAL_DECODING to VISIBILITYMAP_IS_CATALOG_REL (It does not touch the other remarks as they are still discussed in [1]). 0002: All your remarks mentioned above. I'll look at the ones you've done in [2] on 0003, 0004 and 0006. Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com [1]: https://www.postgresql.org/message-id/5c5151a6-a1a3-6c38-7d68-543c9faa22f4%40gmail.com [2]: https://www.postgresql.org/message-id/20230106034036.2m4qnn7ep7b5ipet%40awork3.anarazel.de --------------rNN4FJ950ueQmmYvLj50n8vA Content-Type: text/plain; charset=UTF-8; name="v37-0006-Fixing-Walsender-corner-case-with-logical-decodi.patch" Content-Disposition: attachment; filename*0="v37-0006-Fixing-Walsender-corner-case-with-logical-decodi.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA2YjM4OTQxOGJiZTExNzJkNzJiMWExN2YyOTk3YjNmMGM1YjdiZmE1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAxMCBKYW4gMjAyMyAwNzo1MzozMCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjM3IDYvNl0gRml4aW5nIFdhbHNlbmRlciBjb3JuZXIgY2FzZSB3aXRoIGxvZ2ljYWwg ZGVjb2Rpbmcgb24KIHN0YW5kYnkuCgpUaGUgcHJvYmxlbSBpcyB0aGF0IFdhbFNuZFdhaXRG b3JXYWwoKSB3YWl0cyBmb3IgdGhlICpyZXBsYXkqIExTTiB0bwppbmNyZWFzZSwgYnV0IGdl dHMgd29rZW4gdXAgYnkgd2FscmVjZWl2ZXIgd2hlbiBuZXcgV0FMIGhhcyBiZWVuCmZsdXNo ZWQuIFdoaWNoIG1lYW5zIHRoYXQgdHlwaWNhbGx5IHdhbHNlbmRlcnMgd2lsbCBnZXQgd29r ZW4gdXAgYXQgdGhlCnNhbWUgdGltZSB0aGF0IHRoZSBzdGFydHVwIHByb2Nlc3Mgd2lsbCBi ZSAtIHdoaWNoIG1lYW5zIHRoYXQgYnkgdGhlCnRpbWUgdGhlIGxvZ2ljYWwgd2Fsc2VuZGVy IGNoZWNrcyBHZXRYTG9nUmVwbGF5UmVjUHRyKCkgaXQncyB1bmxpa2VseQp0aGF0IHRoZSBz dGFydHVwIHByb2Nlc3MgYWxyZWFkeSByZXBsYXllZCB0aGUgcmVjb3JkIGFuZCB1cGRhdGVk ClhMb2dDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0ci4KCkludHJvZHVjaW5nIGEgbmV3IGNv bmRpdGlvbiB2YXJpYWJsZSB0byBmaXggdGhpcyBjb3JuZXIgY2FzZS4KLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYyB8IDI4ICsrKysrKysrKysrKysr KysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAgICB8IDMx ICsrKysrKysrKysrKysrKysrLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93 YWl0X2V2ZW50LmMgICB8ICAzICsrKwogc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVy eS5oICAgICAgICAgfCAgMyArKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRl ci5oICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oICAgICAg ICAgICAgfCAgMSArCiA2IGZpbGVzIGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKyksIDggZGVs ZXRpb25zKC0pCiAgNDEuMiUgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vCiAgNDguNSUg c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vCiAgIDMuNiUgc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvCiAgIDMuNCUgc3JjL2luY2x1ZGUvYWNjZXNzLwoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKaW5kZXggYmMzYzNlYjNlNy4uOThjOTZlYjg2 NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5 LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKQEAg LTM1OCw2ICszNTgsOSBAQCB0eXBlZGVmIHN0cnVjdCBYTG9nUmVjb3ZlcnlDdGxEYXRhCiAJ UmVjb3ZlcnlQYXVzZVN0YXRlIHJlY292ZXJ5UGF1c2VTdGF0ZTsKIAlDb25kaXRpb25WYXJp YWJsZSByZWNvdmVyeU5vdFBhdXNlZENWOwogCisJLyogUmVwbGF5IHN0YXRlIChzZWUgZ2V0 UmVwbGF5ZWRDVigpIGZvciBtb3JlIGV4cGxhbmF0aW9uKSAqLworCUNvbmRpdGlvblZhcmlh YmxlIHJlcGxheWVkQ1Y7CisKIAlzbG9ja190CQlpbmZvX2xjazsJCS8qIGxvY2tzIHNoYXJl ZCB2YXJpYWJsZXMgc2hvd24gYWJvdmUgKi8KIH0gWExvZ1JlY292ZXJ5Q3RsRGF0YTsKIApA QCAtNDY3LDYgKzQ3MCw3IEBAIFhMb2dSZWNvdmVyeVNobWVtSW5pdCh2b2lkKQogCVNwaW5M b2NrSW5pdCgmWExvZ1JlY292ZXJ5Q3RsLT5pbmZvX2xjayk7CiAJSW5pdFNoYXJlZExhdGNo KCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5V2FrZXVwTGF0Y2gpOwogCUNvbmRpdGlvblZh cmlhYmxlSW5pdCgmWExvZ1JlY292ZXJ5Q3RsLT5yZWNvdmVyeU5vdFBhdXNlZENWKTsKKwlD b25kaXRpb25WYXJpYWJsZUluaXQoJlhMb2dSZWNvdmVyeUN0bC0+cmVwbGF5ZWRDVik7CiB9 CiAKIC8qCkBAIC0xOTE2LDYgKzE5MjAsMTEgQEAgQXBwbHlXYWxSZWNvcmQoWExvZ1JlYWRl clN0YXRlICp4bG9ncmVhZGVyLCBYTG9nUmVjb3JkICpyZWNvcmQsIFRpbWVMaW5lSUQgKnJl cGwKIAlYTG9nUmVjb3ZlcnlDdGwtPmxhc3RSZXBsYXllZFRMSSA9ICpyZXBsYXlUTEk7CiAJ U3BpbkxvY2tSZWxlYXNlKCZYTG9nUmVjb3ZlcnlDdGwtPmluZm9fbGNrKTsKIAorCS8qCisJ ICogd2FrZSB1cCB3YWxzZW5kZXIocykgdXNlZCBieSBsb2dpY2FsIGRlY29kaW5nIG9uIHN0 YW5kYnkuCisJICovCisJQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNhc3QoJlhMb2dSZWNvdmVy eUN0bC0+cmVwbGF5ZWRDVik7CisKIAkvKgogCSAqIElmIHJtX3JlZG8gY2FsbGVkIFhMb2dS ZXF1ZXN0V2FsUmVjZWl2ZXJSZXBseSwgdGhlbiB3ZSB3YWtlIHVwIHRoZQogCSAqIHJlY2Vp dmVyIHNvIHRoYXQgaXQgbm90aWNlcyB0aGUgdXBkYXRlZCBsYXN0UmVwbGF5ZWRFbmRSZWNQ dHIgYW5kIHNlbmRzCkBAIC00OTE2LDMgKzQ5MjUsMjIgQEAgYXNzaWduX3JlY292ZXJ5X3Rh cmdldF94aWQoY29uc3QgY2hhciAqbmV3dmFsLCB2b2lkICpleHRyYSkKIAllbHNlCiAJCXJl Y292ZXJ5VGFyZ2V0ID0gUkVDT1ZFUllfVEFSR0VUX1VOU0VUOwogfQorCisvKgorICogUmV0 dXJuIHRoZSBDb25kaXRpb25WYXJpYWJsZSBpbmRpY2F0aW5nIHRoYXQgYSByZXBsYXkgaGFz IGJlZW4gZG9uZS4KKyAqCisgKiBUaGlzIGlzIG5lZWRlZCBmb3IgbG9naWNhbCBkZWNvZGlu ZyBvbiBzdGFuZGJ5LiBJbmRlZWQgdGhlICJwcm9ibGVtIiBpcyB0aGF0CisgKiBXYWxTbmRX YWl0Rm9yV2FsKCkgd2FpdHMgZm9yIHRoZSAqcmVwbGF5KiBMU04gdG8gaW5jcmVhc2UsIGJ1 dCBnZXRzIHdva2VuIHVwCisgKiBieSB3YWxyZWNlaXZlciB3aGVuIG5ldyBXQUwgaGFzIGJl ZW4gZmx1c2hlZC4gV2hpY2ggbWVhbnMgdGhhdCB0eXBpY2FsbHkKKyAqIHdhbHNlbmRlcnMg d2lsbCBnZXQgd29rZW4gdXAgYXQgdGhlIHNhbWUgdGltZSB0aGF0IHRoZSBzdGFydHVwIHBy b2Nlc3MKKyAqIHdpbGwgYmUgLSB3aGljaCBtZWFucyB0aGF0IGJ5IHRoZSB0aW1lIHRoZSBs b2dpY2FsIHdhbHNlbmRlciBjaGVja3MKKyAqIEdldFhMb2dSZXBsYXlSZWNQdHIoKSBpdCdz IHVubGlrZWx5IHRoYXQgdGhlIHN0YXJ0dXAgcHJvY2VzcyBhbHJlYWR5IHJlcGxheWVkCisg KiB0aGUgcmVjb3JkIGFuZCB1cGRhdGVkIFhMb2dDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0 ci4KKyAqCisgKiBUaGUgQ29uZGl0aW9uVmFyaWFibGUgWExvZ1JlY292ZXJ5Q3RsLT5yZXBs YXllZENWIHNvbHZlcyB0aGlzIGNvcm5lciBjYXNlLgorICovCitDb25kaXRpb25WYXJpYWJs ZSAqCitnZXRSZXBsYXllZENWKHZvaWQpCit7CisJcmV0dXJuICZYTG9nUmVjb3ZlcnlDdGwt PnJlcGxheWVkQ1Y7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCmluZGV4 IGU4OWMyMTBhOGUuLmIwYjZkNmZmYzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNl bmRlci5jCkBAIC0xNTQ4LDYgKzE1NDgsNyBAQCBXYWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQ dHIgbG9jKQogewogCWludAkJCXdha2VFdmVudHM7CiAJc3RhdGljIFhMb2dSZWNQdHIgUmVj ZW50Rmx1c2hQdHIgPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwlDb25kaXRpb25WYXJpYWJsZSAq cmVwbGF5ZWRDViA9IGdldFJlcGxheWVkQ1YoKTsKIAogCS8qCiAJICogRmFzdCBwYXRoIHRv IGF2b2lkIGFjcXVpcmluZyB0aGUgc3BpbmxvY2sgaW4gY2FzZSB3ZSBhbHJlYWR5IGtub3cg d2UKQEAgLTE1NjYsNyArMTU2Nyw2IEBAIFdhbFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBs b2MpCiAKIAlmb3IgKDs7KQogCXsKLQkJbG9uZwkJc2xlZXB0aW1lOwogCiAJCS8qIENsZWFy IGFueSBhbHJlYWR5LXBlbmRpbmcgd2FrZXVwcyAqLwogCQlSZXNldExhdGNoKE15TGF0Y2gp OwpAQCAtMTY1MCwyMCArMTY1MCwzNSBAQCBXYWxTbmRXYWl0Rm9yV2FsKFhMb2dSZWNQdHIg bG9jKQogCQlXYWxTbmRLZWVwYWxpdmVJZk5lY2Vzc2FyeSgpOwogCiAJCS8qCi0JCSAqIFNs ZWVwIHVudGlsIHNvbWV0aGluZyBoYXBwZW5zIG9yIHdlIHRpbWUgb3V0LiAgQWxzbyB3YWl0 IGZvciB0aGUKLQkJICogc29ja2V0IGJlY29taW5nIHdyaXRhYmxlLCBpZiB0aGVyZSdzIHN0 aWxsIHBlbmRpbmcgb3V0cHV0LgorCQkgKiBXaGVuIG5vdCBpbiByZWNvdmVyeSwgc2xlZXAg dW50aWwgc29tZXRoaW5nIGhhcHBlbnMgb3Igd2UgdGltZSBvdXQuCisJCSAqIEFsc28gd2Fp dCBmb3IgdGhlIHNvY2tldCBiZWNvbWluZyB3cml0YWJsZSwgaWYgdGhlcmUncyBzdGlsbCBw ZW5kaW5nIG91dHB1dC4KIAkJICogT3RoZXJ3aXNlIHdlIG1pZ2h0IHNpdCBvbiBzZW5kYWJs ZSBvdXRwdXQgZGF0YSB3aGlsZSB3YWl0aW5nIGZvcgogCQkgKiBuZXcgV0FMIHRvIGJlIGdl bmVyYXRlZC4gIChCdXQgaWYgd2UgaGF2ZSBub3RoaW5nIHRvIHNlbmQsIHdlIGRvbid0CiAJ CSAqIHdhbnQgdG8gd2FrZSBvbiBzb2NrZXQtd3JpdGFibGUuKQogCQkgKi8KLQkJc2xlZXB0 aW1lID0gV2FsU25kQ29tcHV0ZVNsZWVwdGltZShHZXRDdXJyZW50VGltZXN0YW1wKCkpOwor CQlpZiAoIVJlY292ZXJ5SW5Qcm9ncmVzcygpKQorCQl7CisJCQlsb25nCQlzbGVlcHRpbWU7 CisJCQlzbGVlcHRpbWUgPSBXYWxTbmRDb21wdXRlU2xlZXB0aW1lKEdldEN1cnJlbnRUaW1l c3RhbXAoKSk7CiAKLQkJd2FrZUV2ZW50cyA9IFdMX1NPQ0tFVF9SRUFEQUJMRTsKKwkJCXdh a2VFdmVudHMgPSBXTF9TT0NLRVRfUkVBREFCTEU7CiAKLQkJaWYgKHBxX2lzX3NlbmRfcGVu ZGluZygpKQotCQkJd2FrZUV2ZW50cyB8PSBXTF9TT0NLRVRfV1JJVEVBQkxFOworCQkJaWYg KHBxX2lzX3NlbmRfcGVuZGluZygpKQorCQkJCXdha2VFdmVudHMgfD0gV0xfU09DS0VUX1dS SVRFQUJMRTsKIAotCQlXYWxTbmRXYWl0KHdha2VFdmVudHMsIHNsZWVwdGltZSwgV0FJVF9F VkVOVF9XQUxfU0VOREVSX1dBSVRfV0FMKTsKKwkJCVdhbFNuZFdhaXQod2FrZUV2ZW50cywg c2xlZXB0aW1lICogMTAsIFdBSVRfRVZFTlRfV0FMX1NFTkRFUl9XQUlUX1dBTCk7CisJCX0K KwkJZWxzZQorCQkvKgorCQkgKiBXZSBhcmUgaW4gdGhlIGxvZ2ljYWwgZGVjb2Rpbmcgb24g c3RhbmRieSBjYXNlLgorCQkgKiBXZSBhcmUgd2FpdGluZyBmb3IgdGhlIHN0YXJ0dXAgcHJv Y2VzcyB0byByZXBsYXkgd2FsIHJlY29yZChzKSB1c2luZworCQkgKiBhIHRpbWVvdXQgaW4g Y2FzZSB3ZSBhcmUgcmVxdWVzdGVkIHRvIHN0b3AuCisJCSAqLworCQl7CisJCQlDb25kaXRp b25WYXJpYWJsZVByZXBhcmVUb1NsZWVwKHJlcGxheWVkQ1YpOworCQkJQ29uZGl0aW9uVmFy aWFibGVUaW1lZFNsZWVwKHJlcGxheWVkQ1YsIDEwMDAsCisJCQkJCQkJCQkJV0FJVF9FVkVO VF9XQUxfU0VOREVSX1dBSVRfUkVQTEFZKTsKKwkJfQogCX0KIAogCS8qIHJlYWN0aXZhdGUg bGF0Y2ggc28gV2FsU25kTG9vcCBrbm93cyB0byBjb250aW51ZSAqLwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCmluZGV4IDZlNDU5OTI3OGMuLjM4Yzc0N2I3 ODYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKQEAgLTQ2 Myw2ICs0NjMsOSBAQCBwZ3N0YXRfZ2V0X3dhaXRfaXBjKFdhaXRFdmVudElQQyB3KQogCQlj YXNlIFdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX1dBSVRfU1RBUlQ6CiAJCQlldmVudF9uYW1l ID0gIldhbFJlY2VpdmVyV2FpdFN0YXJ0IjsKIAkJCWJyZWFrOworCQljYXNlIFdBSVRfRVZF TlRfV0FMX1NFTkRFUl9XQUlUX1JFUExBWToKKwkJCWV2ZW50X25hbWUgPSAiV2FsUmVjZWl2 ZXJXYWl0UmVwbGF5IjsKKwkJCWJyZWFrOwogCQljYXNlIFdBSVRfRVZFTlRfWEFDVF9HUk9V UF9VUERBVEU6CiAJCQlldmVudF9uYW1lID0gIlhhY3RHcm91cFVwZGF0ZSI7CiAJCQlicmVh azsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3ZlcnkuaCBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3ZlcnkuaAppbmRleCA0N2MyOTM1MGY1Li5iNjVj MmNmMWYwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlY292ZXJ5LmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5oCkBAIC0xNSw2ICsxNSw3 IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCiAjaW5jbHVkZSAibGliL3N0 cmluZ2luZm8uaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJz dG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogCiAvKgogICogUmVjb3ZlcnkgdGFyZ2V0 IHR5cGUuCkBAIC0xNTUsNCArMTU2LDYgQEAgZXh0ZXJuIHZvaWQgUmVjb3ZlcnlSZXF1aXJl c0ludFBhcmFtZXRlcihjb25zdCBjaGFyICpwYXJhbV9uYW1lLCBpbnQgY3VyclZhbHVlLAog CiBleHRlcm4gdm9pZCB4bG9nX291dGRlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJT dGF0ZSAqcmVjb3JkKTsKIAorZXh0ZXJuIENvbmRpdGlvblZhcmlhYmxlICpnZXRSZXBsYXll ZENWKHZvaWQpOworCiAjZW5kaWYJCQkJCQkJLyogWExPR1JFQ09WRVJZX0ggKi8KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKaW5kZXggNTJiYjNlMmFhZS4uMmZkNzQ1ZmU3 MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKKysr IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKQEAgLTEzLDYgKzEzLDcg QEAKICNkZWZpbmUgX1dBTFNFTkRFUl9ICiAKICNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNs dWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogCiAvKgogICogV2hhdCB0byBk byB3aXRoIGEgc25hcHNob3QgaW4gY3JlYXRlIHJlcGxpY2F0aW9uIHNsb3QgY29tbWFuZC4K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNs dWRlL3V0aWxzL3dhaXRfZXZlbnQuaAppbmRleCA2Y2FjZDZlZGFmLi4wNGEzN2ZlZWU0IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKKysrIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCkBAIC0xMzAsNiArMTMwLDcgQEAgdHlwZWRlZiBl bnVtCiAJV0FJVF9FVkVOVF9TWU5DX1JFUCwKIAlXQUlUX0VWRU5UX1dBTF9SRUNFSVZFUl9F WElULAogCVdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX1dBSVRfU1RBUlQsCisJV0FJVF9FVkVO VF9XQUxfU0VOREVSX1dBSVRfUkVQTEFZLAogCVdBSVRfRVZFTlRfWEFDVF9HUk9VUF9VUERB VEUKIH0gV2FpdEV2ZW50SVBDOwogCi0tIAoyLjM0LjEKCg== --------------rNN4FJ950ueQmmYvLj50n8vA Content-Type: text/plain; charset=UTF-8; name="v37-0005-Doc-changes-describing-details-about-logical-dec.patch" Content-Disposition: attachment; filename*0="v37-0005-Doc-changes-describing-details-about-logical-dec.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwZWNlOGY5Yjc2YmRhYTRkMDhiMGE5MzExNzkxYzJkMDAzMDU2NWVhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAxMCBKYW4gMjAyMyAwNzo1MjoyNyArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjM3IDUvNl0gRG9jIGNoYW5nZXMgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGxvZ2lj YWwKIGRlY29kaW5nLgoKQXV0aG9yOiBBbmRyZXMgRnJldW5kIChpbiBhbiBvbGRlciB2ZXJz aW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2b3QKUmV2aWV3ZWQtQnk6IEJl cnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJyaXppbyBk ZSBSb3llcyBNZWxsbwotLS0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbCB8 IDIxICsrKysrKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlv bnMoKykKIDEwMC4wJSBkb2Mvc3JjL3NnbWwvCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L2xvZ2ljYWxkZWNvZGluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5z Z21sCmluZGV4IDRjZjg2M2E3NmYuLjAzODc1NThkNzUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbGRl Y29kaW5nLnNnbWwKQEAgLTMxNiw2ICszMTYsMjcgQEAgcG9zdGdyZXM9IyBzZWxlY3QgKiBm cm9tIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVM TCwgTlUKICAgICAgbWF5IGNvbnN1bWUgY2hhbmdlcyBmcm9tIGEgc2xvdCBhdCBhbnkgZ2l2 ZW4gdGltZS4KICAgICA8L3BhcmE+CiAKKyAgICA8cGFyYT4KKyAgICAgQSBsb2dpY2FsIHJl cGxpY2F0aW9uIHNsb3QgY2FuIGFsc28gYmUgY3JlYXRlZCBvbiBhIGhvdCBzdGFuZGJ5LiBU byBwcmV2ZW50CisgICAgIDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gZnJvbSByZW1vdmlu ZyByZXF1aXJlZCByb3dzIGZyb20gdGhlIHN5c3RlbQorICAgICBjYXRhbG9ncywgPHZhcm5h bWU+aG90X3N0YW5kYnlfZmVlZGJhY2s8L3Zhcm5hbWU+IHNob3VsZCBiZSBzZXQgb24gdGhl CisgICAgIHN0YW5kYnkuIEluIHNwaXRlIG9mIHRoYXQsIGlmIGFueSByZXF1aXJlZCByb3dz IGdldCByZW1vdmVkLCB0aGUgc2xvdCBnZXRzCisgICAgIGludmFsaWRhdGVkLiBJdCdzIGhp Z2hseSByZWNvbW1lbmRlZCB0byB1c2UgYSBwaHlzaWNhbCBzbG90IGJldHdlZW4gdGhlIHBy aW1hcnkKKyAgICAgYW5kIHRoZSBzdGFuZGJ5LiBPdGhlcndpc2UsIGhvdF9zdGFuZGJ5X2Zl ZWRiYWNrIHdpbGwgd29yaywgYnV0IG9ubHkgd2hpbGUgdGhlCisgICAgIGNvbm5lY3Rpb24g aXMgYWxpdmUgKGZvciBleGFtcGxlIGEgbm9kZSByZXN0YXJ0IHdvdWxkIGJyZWFrIGl0KS4g RXhpc3RpbmcKKyAgICAgbG9naWNhbCBzbG90cyBvbiBzdGFuZGJ5IGFsc28gZ2V0IGludmFs aWRhdGVkIGlmIHdhbF9sZXZlbCBvbiBwcmltYXJ5IGlzIHJlZHVjZWQgdG8KKyAgICAgbGVz cyB0aGFuICdsb2dpY2FsJy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgRm9y IGEgbG9naWNhbCBzbG90IHRvIGJlIGNyZWF0ZWQsIGl0IGJ1aWxkcyBhIGhpc3RvcmljIHNu YXBzaG90LCBmb3Igd2hpY2gKKyAgICAgaW5mb3JtYXRpb24gb2YgYWxsIHRoZSBjdXJyZW50 bHkgcnVubmluZyB0cmFuc2FjdGlvbnMgaXMgZXNzZW50aWFsLiBPbgorICAgICBwcmltYXJ5 LCB0aGlzIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSwgYnV0IG9uIHN0YW5kYnksIHRoaXMg aW5mb3JtYXRpb24KKyAgICAgaGFzIHRvIGJlIG9idGFpbmVkIGZyb20gcHJpbWFyeS4gU28s IHNsb3QgY3JlYXRpb24gbWF5IHdhaXQgZm9yIHNvbWUKKyAgICAgYWN0aXZpdHkgdG8gaGFw cGVuIG9uIHRoZSBwcmltYXJ5LiBJZiB0aGUgcHJpbWFyeSBpcyBpZGxlLCBjcmVhdGluZyBh CisgICAgIGxvZ2ljYWwgc2xvdCBvbiBzdGFuZGJ5IG1heSB0YWtlIGEgbm90aWNlYWJsZSB0 aW1lLgorICAgIDwvcGFyYT4KKwogICAgIDxjYXV0aW9uPgogICAgICA8cGFyYT4KICAgICAg IFJlcGxpY2F0aW9uIHNsb3RzIHBlcnNpc3QgYWNyb3NzIGNyYXNoZXMgYW5kIGtub3cgbm90 aGluZyBhYm91dCB0aGUgc3RhdGUKLS0gCjIuMzQuMQoK --------------rNN4FJ950ueQmmYvLj50n8vA Content-Type: text/plain; charset=UTF-8; name="v37-0004-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename*0="v37-0004-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSBkYmJkOWZhZDYxMDJhNjAyODc4ZmQxYzM4YmEwNTc2NDE4NWRkMzM3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAxMCBKYW4gMjAyMyAwNzo1MTo0MiArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjM3IDQvNl0gTmV3IFRBUCB0ZXN0IGZvciBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5k YnkuCgpBdXRob3I6IENyYWlnIFJpbmdlciAoaW4gYW4gb2xkZXIgdmVyc2lvbiksIEFtaXQg S2hhbmRla2FyLCBCZXJ0cmFuZCBEcm91dm90ClJldmlld2VkLUJ5OiBCZXJ0cmFuZCBEcm91 dm90LCBBbmRyZXMgRnJldW5kLCBSb2JlcnQgSGFhcywgRmFicml6aW8gZGUgUm95ZXMgTWVs bG8KLS0tCiBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtICAgICAg fCAgMzcgKysKIHNyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkICAgICAgICAgICAgICAg ICB8ICAgMSArCiAuLi4vdC8wMzRfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsICAgICAg ICAgfCA0NzkgKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDUxNyBpbnNl cnRpb25zKCspCiAgIDYuMCUgc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvCiAgOTMu NyUgc3JjL3Rlc3QvcmVjb3ZlcnkvdC8KCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9wZXJsL1Bv c3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtIGIvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rl c3QvQ2x1c3Rlci5wbQppbmRleCAwNDkyMWNhM2EzLi42ZjNjOWE2OTEwIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVyLnBtCisrKyBiL3NyYy90 ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KQEAgLTMwMzcsNiArMzAzNyw0 MyBAQCAkU0lHe1RFUk19ID0gJFNJR3tJTlR9ID0gc3ViIHsKIAogPXBvZAogCis9aXRlbSAk bm9kZS0+Y3JlYXRlX2xvZ2ljYWxfc2xvdF9vbl9zdGFuZGJ5KHNlbGYsIG1hc3Rlciwgc2xv dF9uYW1lLCBkYm5hbWUpCisKK0NyZWF0ZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3Qgb24g Z2l2ZW4gc3RhbmRieQorCis9Y3V0CisKK3N1YiBjcmVhdGVfbG9naWNhbF9zbG90X29uX3N0 YW5kYnkKK3sKKwlteSAoJHNlbGYsICRtYXN0ZXIsICRzbG90X25hbWUsICRkYm5hbWUpID0g QF87CisJbXkgKCRzdGRvdXQsICRzdGRlcnIpOworCisJbXkgJGhhbmRsZTsKKworCSRoYW5k bGUgPSBJUEM6OlJ1bjo6c3RhcnQoWydwZ19yZWN2bG9naWNhbCcsICctZCcsICRzZWxmLT5j b25uc3RyKCRkYm5hbWUpLCAnLVAnLCAndGVzdF9kZWNvZGluZycsICctUycsICRzbG90X25h bWUsICctLWNyZWF0ZS1zbG90J10sICc+JywgXCRzdGRvdXQsICcyPicsIFwkc3RkZXJyKTsK KworCSMgT25jZSBzbG90IHJlc3RhcnRfbHNuIGlzIGNyZWF0ZWQsIHRoZSBzdGFuZGJ5IGxv b2tzIGZvciB4bF9ydW5uaW5nX3hhY3RzCisJIyBXQUwgcmVjb3JkIGZyb20gdGhlIHJlc3Rh cnRfbHNuIG9ud2FyZHMuIFNvIGZpcnN0bHksIHdhaXQgdW50aWwgdGhlIHNsb3QKKwkjIHJl c3RhcnRfbHNuIGlzIGV2YWx1YXRlZC4KKworCSRzZWxmLT5wb2xsX3F1ZXJ5X3VudGlsKAor CQkncG9zdGdyZXMnLCBxcVsKKwkJU0VMRUNUIHJlc3RhcnRfbHNuIElTIE5PVCBOVUxMCisJ CUZST00gcGdfY2F0YWxvZy5wZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUg PSAnJHNsb3RfbmFtZScKKwldKSBvciBkaWUgInRpbWVkIG91dCB3YWl0aW5nIGZvciBsb2dp Y2FsIHNsb3QgdG8gY2FsY3VsYXRlIGl0cyByZXN0YXJ0X2xzbiI7CisKKwkjIE5vdyBhcnJh bmdlIGZvciB0aGUgeGxfcnVubmluZ194YWN0cyByZWNvcmQgZm9yIHdoaWNoIHBnX3JlY3Zs b2dpY2FsCisJIyBpcyB3YWl0aW5nLgorCSRtYXN0ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAnQ0hFQ0tQT0lOVCcpOworCisJJGhhbmRsZS0+ZmluaXNoKCk7CisKKwlpcygkc2VsZi0+ c2xvdCgkc2xvdF9uYW1lKS0+eydzbG90X3R5cGUnfSwgJ2xvZ2ljYWwnLCAkc2xvdF9uYW1l IC4gJyBvbiBzdGFuZGJ5IGNyZWF0ZWQnKQorCQlvciBkaWUgImNvdWxkIG5vdCBjcmVhdGUg c2xvdCIgLiAkc2xvdF9uYW1lOworfQorCis9cG9kCisKID1iYWNrCiAKID1jdXQKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvcmVjb3Zl cnkvbWVzb24uYnVpbGQKaW5kZXggZWRhYWExYTNjZS4uNTJiMjgxNmM3YSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvcmVjb3Zl cnkvbWVzb24uYnVpbGQKQEAgLTQwLDYgKzQwLDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3Qv MDMxX3JlY292ZXJ5X2NvbmZsaWN0LnBsJywKICAgICAgICd0LzAzMl9yZWxmaWxlbm9kZV9y ZXVzZS5wbCcsCiAgICAgICAndC8wMzNfcmVwbGF5X3RzcF9kcm9wcy5wbCcsCisgICAgICAn dC8wMzRfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsJywKICAgICBdLAogICB9LAogfQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzRfc3RhbmRieV9sb2dpY2FsX2Rl Y29kaW5nLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzRfc3RhbmRieV9sb2dpY2FsX2Rl Y29kaW5nLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQyNTg4 NDRjOGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNF9zdGFu ZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKQEAgLTAsMCArMSw0NzkgQEAKKyMgbG9naWNhbCBk ZWNvZGluZyBvbiBzdGFuZGJ5IDogdGVzdCBsb2dpY2FsIGRlY29kaW5nLAorIyByZWNvdmVy eSBjb25mbGljdCBhbmQgc3RhbmRieSBwcm9tb3Rpb24uCisKK3VzZSBzdHJpY3Q7Cit1c2Ug d2FybmluZ3M7CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFRlc3Q6 Ok1vcmUgdGVzdHMgPT4gNDI7CisKK215ICgkc3RkaW4sICRzdGRvdXQsICRzdGRlcnIsICRy ZXQsICRoYW5kbGUsICRzbG90KTsKKworbXkgJG5vZGVfcHJpbWFyeSA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJpbWFyeScpOworbXkgJG5vZGVfc3RhbmRieSA9IFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3RhbmRieScpOworCisjIE5hbWUgZm9y IHRoZSBwaHlzaWNhbCBzbG90IG9uIHByaW1hcnkKK215ICRwcmltYXJ5X3Nsb3RuYW1lID0g J3ByaW1hcnlfcGh5c2ljYWwnOworCisjIGZpbmQgJHBhdCBpbiBsb2dmaWxlIG9mICRub2Rl IGFmdGVyICRvZmYtdGggYnl0ZQorc3ViIGZpbmRfaW5fbG9nCit7CisJbXkgKCRub2RlLCAk cGF0LCAkb2ZmKSA9IEBfOworCisJJG9mZiA9IDAgdW5sZXNzIGRlZmluZWQgJG9mZjsKKwlt eSAkbG9nID0gUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnNsdXJwX2ZpbGUoJG5vZGUtPmxv Z2ZpbGUpOworCXJldHVybiAwIGlmIChsZW5ndGgoJGxvZykgPD0gJG9mZik7CisKKwkkbG9n ID0gc3Vic3RyKCRsb2csICRvZmYpOworCisJcmV0dXJuICRsb2cgPX4gbS8kcGF0LzsKK30K KworIyBGZXRjaCB4bWluIGNvbHVtbnMgZnJvbSBzbG90J3MgcGdfcmVwbGljYXRpb25fc2xv dHMgcm93LCBhZnRlciB3YWl0aW5nIGZvcgorIyBnaXZlbiBib29sZWFuIGNvbmRpdGlvbiB0 byBiZSB0cnVlIHRvIGVuc3VyZSB3ZSd2ZSByZWFjaGVkIGEgcXVpZXNjZW50IHN0YXRlLgor c3ViIHdhaXRfZm9yX3htaW5zCit7CisJbXkgKCRub2RlLCAkc2xvdG5hbWUsICRjaGVja19l eHByKSA9IEBfOworCisJJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3Jlcycs IHFxWworCQlTRUxFQ1QgJGNoZWNrX2V4cHIKKwkJRlJPTSBwZ19jYXRhbG9nLnBnX3JlcGxp Y2F0aW9uX3Nsb3RzCisJCVdIRVJFIHNsb3RfbmFtZSA9ICckc2xvdG5hbWUnOworCV0pIG9y IGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIHNsb3QgeG1pbnMgdG8gYWR2YW5jZSI7Cit9 CisKKyMgQ3JlYXRlIHRoZSByZXF1aXJlZCBsb2dpY2FsIHNsb3RzIG9uIHN0YW5kYnkuCitz dWIgY3JlYXRlX2xvZ2ljYWxfc2xvdHMKK3sKKwkkbm9kZV9zdGFuZGJ5LT5jcmVhdGVfbG9n aWNhbF9zbG90X29uX3N0YW5kYnkoJG5vZGVfcHJpbWFyeSwgJ2luYWN0aXZlc2xvdCcsICd0 ZXN0ZGInKTsKKwkkbm9kZV9zdGFuZGJ5LT5jcmVhdGVfbG9naWNhbF9zbG90X29uX3N0YW5k YnkoJG5vZGVfcHJpbWFyeSwgJ2FjdGl2ZXNsb3QnLCAndGVzdGRiJyk7Cit9CisKKyMgQWNx dWlyZSBvbmUgb2YgdGhlIHN0YW5kYnkgbG9naWNhbCBzbG90cyBjcmVhdGVkIGJ5IGNyZWF0 ZV9sb2dpY2FsX3Nsb3RzKCkuCisjIEluIGNhc2Ugd2FpdCBpcyB0cnVlIHdlIGFyZSB3YWl0 aW5nIGZvciBhbiBhY3RpdmUgcGlkIG9uIHRoZSAnYWN0aXZlc2xvdCcgc2xvdC4KKyMgSWYg d2FpdCBpcyBub3QgdHJ1ZSBpdCBtZWFucyB3ZSBhcmUgdGVzdGluZyBhIGtub3duIGZhaWx1 cmUgc2NlbmFyaW8uCitzdWIgbWFrZV9zbG90X2FjdGl2ZQoreworCW15ICR3YWl0ID0gc2hp ZnQ7CisJbXkgJHNsb3RfdXNlcl9oYW5kbGU7CisKKwlwcmludCAic3RhcnRpbmcgcGdfcmVj dmxvZ2ljYWxcbiI7CisJJHNsb3RfdXNlcl9oYW5kbGUgPSBJUEM6OlJ1bjo6c3RhcnQoWydw Z19yZWN2bG9naWNhbCcsICctZCcsICRub2RlX3N0YW5kYnktPmNvbm5zdHIoJ3Rlc3RkYicp LCAnLVMnLCAnYWN0aXZlc2xvdCcsICctZicsICctJywgJy0tbm8tbG9vcCcsICctLXN0YXJ0 J10sICc+JywgXCRzdGRvdXQsICcyPicsIFwkc3RkZXJyKTsKKworCWlmICgkd2FpdCkKKwkj IG1ha2Ugc3VyZSBhY3RpdmVzbG90IGlzIGluIHVzZQorCXsKKwkJJG5vZGVfc3RhbmRieS0+ cG9sbF9xdWVyeV91bnRpbCgndGVzdGRiJywKKwkJCSJTRUxFQ1QgRVhJU1RTIChTRUxFQ1Qg MSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9ICdhY3RpdmVz bG90JyBBTkQgYWN0aXZlX3BpZCBJUyBOT1QgTlVMTCkiCisJCSkgb3IgZGllICJzbG90IG5l dmVyIGJlY2FtZSBhY3RpdmUiOworCX0KKworCXJldHVybiAkc2xvdF91c2VyX2hhbmRsZTsK K30KKworIyBDaGVjayBwZ19yZWN2bG9naWNhbCBzdGRlcnIKK3N1YiBjaGVja19wZ19yZWN2 bG9naWNhbF9zdGRlcnIKK3sKKwlteSAoJHNsb3RfdXNlcl9oYW5kbGUsICRjaGVja19zdGRl cnIpID0gQF87CisJbXkgJHJldHVybjsKKworCSMgb3VyIGNsaWVudCBzaG91bGQndmUgdGVy bWluYXRlZCBpbiByZXNwb25zZSB0byB0aGUgd2Fsc2VuZGVyIGVycm9yCisJJHNsb3RfdXNl cl9oYW5kbGUtPmZpbmlzaDsKKwkkcmV0dXJuID0gJD87CisJY21wX29rKCRyZXR1cm4sICIh PSIsIDAsICJwZ19yZWN2bG9naWNhbCBleGl0ZWQgbm9uLXplcm8iKTsKKwlpZiAoJHJldHVy bikgeworCQlsaWtlKCRzdGRlcnIsIHFyLyRjaGVja19zdGRlcnIvLCAnc2xvdCBoYXMgYmVl biBpbnZhbGlkYXRlZCcpOworCX0KKworCXJldHVybiAwOworfQorCisjIENoZWNrIGlmIGFs bCB0aGUgc2xvdHMgb24gc3RhbmRieSBhcmUgZHJvcHBlZC4gVGhlc2UgaW5jbHVkZSB0aGUg J2FjdGl2ZXNsb3QnCisjIHRoYXQgd2FzIGFjcXVpcmVkIGJ5IG1ha2Vfc2xvdF9hY3RpdmUo KSwgYW5kIHRoZSBub24tYWN0aXZlICdpbmFjdGl2ZXNsb3QnLgorc3ViIGNoZWNrX3Nsb3Rz X2Ryb3BwZWQKK3sKKwlteSAoJHNsb3RfdXNlcl9oYW5kbGUpID0gQF87CisKKwlpcygkbm9k ZV9zdGFuZGJ5LT5zbG90KCdpbmFjdGl2ZXNsb3QnKS0+eydzbG90X3R5cGUnfSwgJycsICdp bmFjdGl2ZXNsb3Qgb24gc3RhbmRieSBkcm9wcGVkJyk7CisJaXMoJG5vZGVfc3RhbmRieS0+ c2xvdCgnYWN0aXZlc2xvdCcpLT57J3Nsb3RfdHlwZSd9LCAnJywgJ2FjdGl2ZXNsb3Qgb24g c3RhbmRieSBkcm9wcGVkJyk7CisKKwljaGVja19wZ19yZWN2bG9naWNhbF9zdGRlcnIoJHNs b3RfdXNlcl9oYW5kbGUsICJjb25mbGljdCB3aXRoIHJlY292ZXJ5Iik7Cit9CisKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworIyBJbml0aWFsaXplIHByaW1hcnkgbm9kZQorIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisKKyRub2RlX3ByaW1hcnktPmluaXQoYWxsb3dzX3N0cmVh bWluZyA9PiAxLCBoYXNfYXJjaGl2aW5nID0+IDEpOworJG5vZGVfcHJpbWFyeS0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHF7Cit3YWxfbGV2ZWwgPSAnbG9naWNhbCcKK21h eF9yZXBsaWNhdGlvbl9zbG90cyA9IDQKK21heF93YWxfc2VuZGVycyA9IDQKK2xvZ19taW5f bWVzc2FnZXMgPSAnZGVidWcyJworbG9nX2Vycm9yX3ZlcmJvc2l0eSA9IHZlcmJvc2UKK30p OworJG5vZGVfcHJpbWFyeS0+ZHVtcF9pbmZvOworJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CisK KyRub2RlX3ByaW1hcnktPnBzcWwoJ3Bvc3RncmVzJywgcVtDUkVBVEUgREFUQUJBU0UgdGVz dGRiXSk7CisKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbU0VMRUNU ICogRlJPTSBwZ19jcmVhdGVfcGh5c2ljYWxfcmVwbGljYXRpb25fc2xvdCgnJHByaW1hcnlf c2xvdG5hbWUnKTtdKTsKK215ICRiYWNrdXBfbmFtZSA9ICdiMSc7Ciskbm9kZV9wcmltYXJ5 LT5iYWNrdXAoJGJhY2t1cF9uYW1lKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg SW5pdGlhbGl6ZSBzdGFuZGJ5IG5vZGUKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyRu b2RlX3N0YW5kYnktPmluaXRfZnJvbV9iYWNrdXAoCisJJG5vZGVfcHJpbWFyeSwgJGJhY2t1 cF9uYW1lLAorCWhhc19zdHJlYW1pbmcgPT4gMSwKKwloYXNfcmVzdG9yaW5nID0+IDEpOwor JG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJcXFbcHJp bWFyeV9zbG90X25hbWUgPSAnJHByaW1hcnlfc2xvdG5hbWUnXSk7Ciskbm9kZV9zdGFuZGJ5 LT5zdGFydDsKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRi eSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7CisKKworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB0 aGF0IGxvZ2ljYWwgZGVjb2Rpbmcgb24gdGhlIHN0YW5kYnkKKyMgYmVoYXZlcyBjb3JyZWN0 bHkuCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworCitjcmVhdGVfbG9naWNhbF9zbG90cygpOworCiskbm9kZV9wcmltYXJ5LT5zYWZlX3Bz cWwoJ3Rlc3RkYicsIHFxW0NSRUFURSBUQUJMRSBkZWNvZGluZ190ZXN0KHggaW50ZWdlciwg eSB0ZXh0KTtdKTsKKyRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbSU5T RVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsMTApIHM7XSk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2Nh dGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1 c2gnKSk7CisKK215ICRyZXN1bHQgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3Rk YicsCisJcXFbU0VMRUNUIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygnYWN0aXZlc2xv dCcsIE5VTEwsIE5VTEwpO10pOworCisjIHRlc3QgaWYgYmFzaWMgZGVjb2Rpbmcgd29ya3MK K2lzKHNjYWxhcihteSBAZm9vYmFyID0gc3BsaXQgL14vbSwgJHJlc3VsdCksCisJMTQsICdE ZWNvZGluZyBwcm9kdWNlZCAxNCByb3dzJyk7CisKKyMgSW5zZXJ0IHNvbWUgcm93cyBhbmQg dmVyaWZ5IHRoYXQgd2UgZ2V0IHRoZSBzYW1lIHJlc3VsdHMgZnJvbSBwZ19yZWN2bG9naWNh bAorIyBhbmQgdGhlIFNRTCBpbnRlcmZhY2UuCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwo J3Rlc3RkYicsCisJcXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBz LCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsNCkgcztdCispOworCitteSAkZXhw ZWN0ZWQgPSBxe0JFR0lOCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4 W2ludGVnZXJdOjEgeVt0ZXh0XTonMScKK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJ TlNFUlQ6IHhbaW50ZWdlcl06MiB5W3RleHRdOicyJwordGFibGUgcHVibGljLmRlY29kaW5n X3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTozIHlbdGV4dF06JzMnCit0YWJsZSBwdWJsaWMu ZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjQgeVt0ZXh0XTonNCcKK0NPTU1J VH07CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwg J3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7CisKK215ICRzdGRvdXRf c3FsID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAorCXFxW1NFTEVDVCBk YXRhIEZST00gcGdfbG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygnYWN0aXZlc2xvdCcsIE5V TEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEn KTtdCispOworCitpcygkc3Rkb3V0X3NxbCwgJGV4cGVjdGVkLCAnZ290IGV4cGVjdGVkIG91 dHB1dCBmcm9tIFNRTCBkZWNvZGluZyBzZXNzaW9uJyk7CisKK215ICRlbmRwb3MgPSAkbm9k ZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJIlNFTEVDVCBsc24gRlJPTSBwZ19s b2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdhY3RpdmVzbG90JywgTlVMTCwgTlVMTCkgT1JE RVIgQlkgbHNuIERFU0MgTElNSVQgMTsiCispOworcHJpbnQgIndhaXRpbmcgdG8gcmVwbGF5 ICRlbmRwb3NcbiI7CisKKyMgSW5zZXJ0IHNvbWUgcm93cyBhZnRlciAkZW5kcG9zLCB3aGlj aCB3ZSB3b24ndCByZWFkLgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAor CXFxW0lOU0VSVCBJTlRPIGRlY29kaW5nX3Rlc3QoeCx5KSBTRUxFQ1Qgcywgczo6dGV4dCBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg1LDUwKSBzO10KKyk7CisKKyRub2RlX3ByaW1hcnktPndh aXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnkt PmxzbignZmx1c2gnKSk7CisKK215ICRzdGRvdXRfcmVjdiA9ICRub2RlX3N0YW5kYnktPnBn X3JlY3Zsb2dpY2FsX3VwdG8oCisgICAgJ3Rlc3RkYicsICdhY3RpdmVzbG90JywgJGVuZHBv cywgMTgwLAorICAgICdpbmNsdWRlLXhpZHMnICAgICA9PiAnMCcsCisgICAgJ3NraXAtZW1w dHkteGFjdHMnID0+ICcxJyk7CitjaG9tcCgkc3Rkb3V0X3JlY3YpOworaXMoJHN0ZG91dF9y ZWN2LCAkZXhwZWN0ZWQsCisgICAgJ2dvdCBzYW1lIGV4cGVjdGVkIG91dHB1dCBmcm9tIHBn X3JlY3Zsb2dpY2FsIGRlY29kaW5nIHNlc3Npb24nKTsKKworJG5vZGVfc3RhbmRieS0+cG9s bF9xdWVyeV91bnRpbCgndGVzdGRiJywKKwkiU0VMRUNUIEVYSVNUUyAoU0VMRUNUIDEgRlJP TSBwZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUgPSAnYWN0aXZlc2xvdCcg QU5EIGFjdGl2ZV9waWQgSVMgTlVMTCkiCispIG9yIGRpZSAic2xvdCBuZXZlciBiZWNhbWUg aW5hY3RpdmUiOworCiskc3Rkb3V0X3JlY3YgPSAkbm9kZV9zdGFuZGJ5LT5wZ19yZWN2bG9n aWNhbF91cHRvKAorICAgICd0ZXN0ZGInLCAnYWN0aXZlc2xvdCcsICRlbmRwb3MsIDE4MCwK KyAgICAnaW5jbHVkZS14aWRzJyAgICAgPT4gJzAnLAorICAgICdza2lwLWVtcHR5LXhhY3Rz JyA9PiAnMScpOworY2hvbXAoJHN0ZG91dF9yZWN2KTsKK2lzKCRzdGRvdXRfcmVjdiwgJycs ICdwZ19yZWN2bG9naWNhbCBhY2tub3dsZWRnZWQgY2hhbmdlcycpOworCiskbm9kZV9wcmlt YXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBEQVRBQkFTRSBvdGhlcmRiJyk7 CisKK2lzKCAkbm9kZV9wcmltYXJ5LT5wc3FsKAorICAgICAgICAnb3RoZXJkYicsCisgICAg ICAgICJTRUxFQ1QgbHNuIEZST00gcGdfbG9naWNhbF9zbG90X3BlZWtfY2hhbmdlcygnYWN0 aXZlc2xvdCcsIE5VTEwsIE5VTEwpIE9SREVSIEJZIGxzbiBERVNDIExJTUlUIDE7IgorICAg ICksCisgICAgMywKKyAgICAncmVwbGF5aW5nIGxvZ2ljYWwgc2xvdCBmcm9tIGFub3RoZXIg ZGF0YWJhc2UgZmFpbHMnKTsKKworIyBkcm9wIHRoZSBsb2dpY2FsIHNsb3RzCiskbm9kZV9z dGFuZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25f c2xvdCgnaW5hY3RpdmVzbG90JyldKTsKKyRub2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVz JywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdhY3RpdmVzbG90JyldKTsK KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KyMgUmVjb3ZlcnkgY29uZmxpY3Q6IEludmFsaWRhdGUgY29uZmxpY3Rpbmcgc2xvdHMsIGlu Y2x1ZGluZyBpbi11c2Ugc2xvdHMKKyMgU2NlbmFyaW8gMTogaG90X3N0YW5kYnlfZmVlZGJh Y2sgb2ZmIGFuZCB2YWN1dW0gRlVMTAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoKTsKKworIyBP bmUgd2F5IHRvIHJlcHJvZHVjZSByZWNvdmVyeSBjb25mbGljdCBpcyB0byBydW4gVkFDVVVN IEZVTEwgd2l0aAorIyBob3Rfc3RhbmRieV9mZWVkYmFjayB0dXJuZWQgb2ZmIG9uIHRoZSBz dGFuZGJ5LgorJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZics cVsKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb2ZmCitdKTsKKyRub2RlX3N0YW5kYnktPnJl c3RhcnQ7CisjIGVuc3VyZSB3YWxyZWNlaXZlciBmZWVkYmFjayBvZmYgYnkgd2FpdGluZyBm b3IgZXhwZWN0ZWQgeG1pbiBhbmQKKyMgY2F0YWxvZ194bWluIG9uIHByaW1hcnkuIEJvdGgg c2hvdWxkIGJlIE5VTEwgc2luY2UgaHNfZmVlZGJhY2sgaXMgb2ZmCit3YWl0X2Zvcl94bWlu cygkbm9kZV9wcmltYXJ5LCAkcHJpbWFyeV9zbG90bmFtZSwKKwkJCSAgICJ4bWluIElTIE5V TEwgQU5EIGNhdGFsb2dfeG1pbiBJUyBOVUxMIik7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3Rf YWN0aXZlKDEpOworCisjIFRoaXMgc2hvdWxkIHRyaWdnZXIgdGhlIGNvbmZsaWN0Ciskbm9k ZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsICdWQUNVVU0gRlVMTCcpOworCiskbm9k ZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAk bm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlz c3VlZAorb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRh dGluZyBzbG90IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCBy ZWNvdmVyeSIpLAorICAnaW5hY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dl ZCB3aXRoIHZhY3V1bSBGVUxMJyk7CisKK29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0 YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBcImFjdGl2ZXNsb3RcIiBiZWNhdXNlIGl0 IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiksCisgICdhY3RpdmVzbG90IHNsb3QgaW52YWxp ZGF0aW9uIGlzIGxvZ2dlZCB3aXRoIHZhY3V1bSBGVUxMJyk7CisKKyMgVmVyaWZ5IHRoYXQg cGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMuY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IGhh cyBiZWVuIHVwZGF0ZWQKK29rKCAkbm9kZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAor CSdwb3N0Z3JlcycsCisJInNlbGVjdCAoY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90ID0gMSkg ZnJvbSBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVyZSBkYXRuYW1lID0gJ3Rlc3Rk YiciLCAndCcpLAorCSdjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdXBkYXRlZCcpIG9yIGRp ZSAiVGltZWQgb3V0IHdhaXRpbmcgY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IHRvIGJlIHVw ZGF0ZWQiOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgwKTsKKyMgV2UgYXJlIG5v dCBhYmxlIHRvIHJlYWQgZnJvbSB0aGUgc2xvdCBhcyBpdCBoYXMgYmVlbiBpbnZhbGlkYXRl ZAorY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRoYW5kbGUsICJjYW5ub3QgcmVhZCBm cm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcImFjdGl2ZXNsb3RcIiIpOworCisjIFR1 cm4gaG90X3N0YW5kYnlfZmVlZGJhY2sgYmFjayBvbgorJG5vZGVfc3RhbmRieS0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicscVsKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24K K10pOworJG5vZGVfc3RhbmRieS0+cmVzdGFydDsKKworIyBlbnN1cmUgd2FscmVjZWl2ZXIg ZmVlZGJhY2sgc2VudCBieSB3YWl0aW5nIGZvciBleHBlY3RlZCB4bWluIGFuZAorIyBjYXRh bG9nX3htaW4gb24gcHJpbWFyeS4gV2l0aCBob3Rfc3RhbmRieV9mZWVkYmFjayBvbiwgeG1p biBzaG91bGQgYWR2YW5jZSwKKyMgYnV0IGNhdGFsb2dfeG1pbiBzaG91bGQgc3RpbGwgcmVt YWluIE5VTEwgc2luY2UgdGhlcmUgaXMgbm8gbG9naWNhbCBzbG90Lgord2FpdF9mb3JfeG1p bnMoJG5vZGVfcHJpbWFyeSwgJHByaW1hcnlfc2xvdG5hbWUsCisJCQkgICAieG1pbiBJUyBO T1QgTlVMTCBBTkQgY2F0YWxvZ194bWluIElTIE5VTEwiKTsKKworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmVjb3ZlcnkgY29uZmxp Y3Q6IEludmFsaWRhdGUgY29uZmxpY3Rpbmcgc2xvdHMsIGluY2x1ZGluZyBpbi11c2Ugc2xv dHMKKyMgU2NlbmFyaW8gMjogY29uZmxpY3QgZHVlIHRvIHJvdyByZW1vdmFsIHdpdGggaG90 X3N0YW5kYnlfZmVlZGJhY2sgb2ZmLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBnZXQgdGhlIHBvc2l0aW9uIHRvIHNlYXJjaCBm cm9tIGluIHRoZSBzdGFuZGJ5IGxvZ2ZpbGUKK215ICRsb2dzdGFydCA9IC1zICRub2RlX3N0 YW5kYnktPmxvZ2ZpbGU7CisKKyMgZHJvcCB0aGUgbG9naWNhbCBzbG90cworJG5vZGVfc3Rh bmRieS0+cHNxbCgncG9zdGdyZXMnLCBxW1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Ns b3QoJ2luYWN0aXZlc2xvdCcpXSk7Ciskbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3Jlcycs IHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnYWN0aXZlc2xvdCcpXSk7CisK K2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCk7CisKKyMgT25lIHdheSB0byBwcm9kdWNlIHJlY292 ZXJ5IGNvbmZsaWN0IGlzIHRvIGNyZWF0ZS9kcm9wIGEgcmVsYXRpb24gYW5kIGxhdW5jaCBh IHZhY3V1bQorIyB3aXRoIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHR1cm5lZCBvZmYgb24gdGhl IHN0YW5kYnkuCiskbm9kZV9zdGFuZGJ5LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JyxxWworaG90X3N0YW5kYnlfZmVlZGJhY2sgPSBvZmYKK10pOworJG5vZGVfc3RhbmRieS0+ cmVzdGFydDsKKyMgZW5zdXJlIHdhbHJlY2VpdmVyIGZlZWRiYWNrIG9mZiBieSB3YWl0aW5n IGZvciBleHBlY3RlZCB4bWluIGFuZAorIyBjYXRhbG9nX3htaW4gb24gcHJpbWFyeS4gQm90 aCBzaG91bGQgYmUgTlVMTCBzaW5jZSBoc19mZWVkYmFjayBpcyBvZmYKK3dhaXRfZm9yX3ht aW5zKCRub2RlX3ByaW1hcnksICRwcmltYXJ5X3Nsb3RuYW1lLAorCQkJICAgInhtaW4gSVMg TlVMTCBBTkQgY2F0YWxvZ194bWluIElTIE5VTEwiKTsKKworJGhhbmRsZSA9IG1ha2Vfc2xv dF9hY3RpdmUoMSk7CisKKyMgVGhpcyBzaG91bGQgdHJpZ2dlciB0aGUgY29uZmxpY3QKKyRu b2RlX3ByaW1hcnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbQ1JFQVRFIFRBQkxFIGNvbmZs aWN0X3Rlc3QoeCBpbnRlZ2VyLCB5IHRleHQpO10pOworJG5vZGVfcHJpbWFyeS0+c2FmZV9w c3FsKCd0ZXN0ZGInLCBxcVtEUk9QIFRBQkxFIGNvbmZsaWN0X3Rlc3Q7XSk7Ciskbm9kZV9w cmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsICdWQUNVVU0nKTsKKworJG5vZGVfcHJpbWFy eS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJp bWFyeS0+bHNuKCdmbHVzaCcpKTsKKworIyBtZXNzYWdlIHNob3VsZCBiZSBpc3N1ZWQKK29r KCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xv dCBcImluYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3Zlcnki LCAkbG9nc3RhcnQpLAorICAnaW5hY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxv Z2dlZCBkdWUgdG8gcm93IHJlbW92YWwnKTsKKworb2soIGZpbmRfaW5fbG9nKAorICAgJG5v ZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiYWN0aXZlc2xvdFwiIGJlY2F1 c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnYWN0aXZl c2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgZHVlIHRvIHJvdyByZW1vdmFsJyk7 CisKKyMgVmVyaWZ5IHRoYXQgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMuY29uZmxfYWN0 aXZlX2xvZ2ljYWxzbG90IGhhcyBiZWVuIHVwZGF0ZWQKKyMgd2Ugbm93IGV4cGVjdCAyIGNv bmZsaWN0cyByZXBvcnRlZCBhcyB0aGUgY291bnRlciBwZXJzaXN0IGFjcm9zcyByZXN0YXJ0 cworb2soICRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoCisJJ3Bvc3RncmVzJywK Kwkic2VsZWN0IChjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgPSAyKSBmcm9tIHBnX3N0YXRf ZGF0YWJhc2VfY29uZmxpY3RzIHdoZXJlIGRhdG5hbWUgPSAndGVzdGRiJyIsICd0JyksCisJ J2NvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB1cGRhdGVkJykgb3IgZGllICJUaW1lZCBvdXQg d2FpdGluZyBjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdG8gYmUgdXBkYXRlZCI7CisKKyRo YW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDApOworIyBXZSBhcmUgbm90IGFibGUgdG8gcmVh ZCBmcm9tIHRoZSBzbG90IGFzIGl0IGhhcyBiZWVuIGludmFsaWRhdGVkCitjaGVja19wZ19y ZWN2bG9naWNhbF9zdGRlcnIoJGhhbmRsZSwgImNhbm5vdCByZWFkIGZyb20gbG9naWNhbCBy ZXBsaWNhdGlvbiBzbG90IFwiYWN0aXZlc2xvdFwiIik7CisKKyMgVHVybiBob3Rfc3RhbmRi eV9mZWVkYmFjayBiYWNrIG9uCiskbm9kZV9zdGFuZGJ5LT5hcHBlbmRfY29uZigncG9zdGdy ZXNxbC5jb25mJyxxWworaG90X3N0YW5kYnlfZmVlZGJhY2sgPSBvbgorXSk7Ciskbm9kZV9z dGFuZGJ5LT5yZXN0YXJ0OworCisjIGVuc3VyZSB3YWxyZWNlaXZlciBmZWVkYmFjayBzZW50 IGJ5IHdhaXRpbmcgZm9yIGV4cGVjdGVkIHhtaW4gYW5kCisjIGNhdGFsb2dfeG1pbiBvbiBw cmltYXJ5LiBXaXRoIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIG9uLCB4bWluIHNob3VsZCBhZHZh bmNlLAorIyBidXQgY2F0YWxvZ194bWluIHNob3VsZCBzdGlsbCByZW1haW4gTlVMTCBzaW5j ZSB0aGVyZSBpcyBubyBsb2dpY2FsIHNsb3QuCit3YWl0X2Zvcl94bWlucygkbm9kZV9wcmlt YXJ5LCAkcHJpbWFyeV9zbG90bmFtZSwKKwkJCSAgICJ4bWluIElTIE5PVCBOVUxMIEFORCBj YXRhbG9nX3htaW4gSVMgTlVMTCIpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBSZWNvdmVyeSBjb25mbGljdDogSW52YWxpZGF0 ZSBjb25mbGljdGluZyBzbG90cywgaW5jbHVkaW5nIGluLXVzZSBzbG90cworIyBTY2VuYXJp byAzOiBpbmNvcnJlY3Qgd2FsX2xldmVsIG9uIHByaW1hcnkuCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIGdldCB0aGUgcG9zaXRp b24gdG8gc2VhcmNoIGZyb20gaW4gdGhlIHN0YW5kYnkgbG9nZmlsZQorJGxvZ3N0YXJ0ID0g LXMgJG5vZGVfc3RhbmRieS0+bG9nZmlsZTsKKworIyBkcm9wIHRoZSBsb2dpY2FsIHNsb3Rz Ciskbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVw bGljYXRpb25fc2xvdCgnaW5hY3RpdmVzbG90JyldKTsKKyRub2RlX3N0YW5kYnktPnBzcWwo J3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdhY3RpdmVz bG90JyldKTsKKworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoKTsKKworJGhhbmRsZSA9IG1ha2Vf c2xvdF9hY3RpdmUoMSk7CisKKyMgTWFrZSBwcmltYXJ5IHdhbF9sZXZlbCByZXBsaWNhLiBU aGlzIHdpbGwgdHJpZ2dlciBzbG90IGNvbmZsaWN0LgorJG5vZGVfcHJpbWFyeS0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicscVsKK3dhbF9sZXZlbCA9ICdyZXBsaWNhJworXSk7 Ciskbm9kZV9wcmltYXJ5LT5yZXN0YXJ0OworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9j YXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2Zs dXNoJykpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAorb2soIGZpbmRfaW5fbG9n KAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiaW5hY3RpdmVz bG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIsICRsb2dzdGFydCks CisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9nZ2VkIGR1ZSB0byB3 YWxfbGV2ZWwnKTsKKworb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAg ImludmFsaWRhdGluZyBzbG90IFwiYWN0aXZlc2xvdFwiIGJlY2F1c2UgaXQgY29uZmxpY3Rz IHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAnYWN0aXZlc2xvdCBzbG90IGludmFs aWRhdGlvbiBpcyBsb2dnZWQgZHVlIHRvIHdhbF9sZXZlbCcpOworCisjIFZlcmlmeSB0aGF0 IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzLmNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCBo YXMgYmVlbiB1cGRhdGVkCisjIHdlIG5vdyBleHBlY3QgMyBjb25mbGljdHMgcmVwb3J0ZWQg YXMgdGhlIGNvdW50ZXIgcGVyc2lzdCBhY3Jvc3MgcmVzdGFydHMKK29rKCAkbm9kZV9zdGFu ZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsCisJInNlbGVjdCAoY29uZmxf YWN0aXZlX2xvZ2ljYWxzbG90ID0gMykgZnJvbSBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0 cyB3aGVyZSBkYXRuYW1lID0gJ3Rlc3RkYiciLCAndCcpLAorCSdjb25mbF9hY3RpdmVfbG9n aWNhbHNsb3QgdXBkYXRlZCcpIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgY29uZmxfYWN0 aXZlX2xvZ2ljYWxzbG90IHRvIGJlIHVwZGF0ZWQiOworCiskaGFuZGxlID0gbWFrZV9zbG90 X2FjdGl2ZSgwKTsKKyMgV2UgYXJlIG5vdCBhYmxlIHRvIHJlYWQgZnJvbSB0aGUgc2xvdCBh cyBpdCByZXF1aXJlcyB3YWxfbGV2ZWwgYXQgbGVhc3QgbG9naWNhbCBvbiBtYXN0ZXIKK2No ZWNrX3BnX3JlY3Zsb2dpY2FsX3N0ZGVycigkaGFuZGxlLCAibG9naWNhbCBkZWNvZGluZyBv biBzdGFuZGJ5IHJlcXVpcmVzIHdhbF9sZXZlbCB0byBiZSBhdCBsZWFzdCBsb2dpY2FsIG9u IG1hc3RlciIpOworCisjIFJlc3RvcmUgcHJpbWFyeSB3YWxfbGV2ZWwKKyRub2RlX3ByaW1h cnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLHFbCit3YWxfbGV2ZWwgPSAnbG9n aWNhbCcKK10pOworJG5vZGVfcHJpbWFyeS0+cmVzdGFydDsKKyRub2RlX3ByaW1hcnktPndh aXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnkt PmxzbignZmx1c2gnKSk7CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDApOworIyBh cyB0aGUgc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCB3ZSBzaG91bGQgbm90IGJlIGFibGUg dG8gcmVhZAorY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRoYW5kbGUsICJjYW5ub3Qg cmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcImFjdGl2ZXNsb3RcIiIpOwor CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor IyBEUk9QIERBVEFCQVNFIHNob3VsZCBkcm9wcyBpdCdzIHNsb3RzLCBpbmNsdWRpbmcgYWN0 aXZlIHNsb3RzLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworJG5vZGVfc3RhbmRieS0+cHNxbCgncG9zdGdyZXMnLCBxW1NFTEVDVCBw Z19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ2luYWN0aXZlc2xvdCcpXSk7Ciskbm9kZV9zdGFu ZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xv dCgnYWN0aXZlc2xvdCcpXSk7CitjcmVhdGVfbG9naWNhbF9zbG90cygpOworJGhhbmRsZSA9 IG1ha2Vfc2xvdF9hY3RpdmUoMSk7CisjIENyZWF0ZSBhIHNsb3Qgb24gYSBkYXRhYmFzZSB0 aGF0IHdvdWxkIG5vdCBiZSBkcm9wcGVkLiBUaGlzIHNsb3Qgc2hvdWxkIG5vdAorIyBnZXQg ZHJvcHBlZC4KKyRub2RlX3N0YW5kYnktPmNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3RhbmRi eSgkbm9kZV9wcmltYXJ5LCAnb3RoZXJzbG90JywgJ3Bvc3RncmVzJyk7CisKKyMgZHJvcGRi IG9uIHRoZSBwcmltYXJ5IHRvIHZlcmlmeSBzbG90cyBhcmUgZHJvcHBlZCBvbiBzdGFuZGJ5 Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcVtEUk9QIERBVEFCQVNF IHRlc3RkYl0pOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0 YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCitpcygk bm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxW1NFTEVDVCBFWElTVFMo U0VMRUNUIDEgRlJPTSBwZ19kYXRhYmFzZSBXSEVSRSBkYXRuYW1lID0gJ3Rlc3RkYicpXSks ICdmJywKKwknZGF0YWJhc2UgZHJvcHBlZCBvbiBzdGFuZGJ5Jyk7CisKK2NoZWNrX3Nsb3Rz X2Ryb3BwZWQoJGhhbmRsZSk7CisKK2lzKCRub2RlX3N0YW5kYnktPnNsb3QoJ290aGVyc2xv dCcpLT57J3Nsb3RfdHlwZSd9LCAnbG9naWNhbCcsCisJJ290aGVyc2xvdCBvbiBzdGFuZGJ5 IG5vdCBkcm9wcGVkJyk7CisKKyMgQ2xlYW51cCA6IG1hbnVhbGx5IGRyb3AgdGhlIHNsb3Qg dGhhdCB3YXMgbm90IGRyb3BwZWQuCiskbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3Jlcycs IHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnb3RoZXJzbG90JyldKTsKKwor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg VGVzdCBzdGFuZGJ5IHByb21vdGlvbiBhbmQgbG9naWNhbCBkZWNvZGluZyBiZWhhdmlvcgor IyBhZnRlciB0aGUgc3RhbmRieSBnZXRzIHByb21vdGVkLgorIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworJG5vZGVfcHJpbWFyeS0+cHNx bCgncG9zdGdyZXMnLCBxW0NSRUFURSBEQVRBQkFTRSB0ZXN0ZGJdKTsKKyRub2RlX3ByaW1h cnktPnNhZmVfcHNxbCgndGVzdGRiJywgcXFbQ1JFQVRFIFRBQkxFIGRlY29kaW5nX3Rlc3Qo eCBpbnRlZ2VyLCB5IHRleHQpO10pOworCisjIGNyZWF0ZSB0aGUgbG9naWNhbCBzbG90cwor Y3JlYXRlX2xvZ2ljYWxfc2xvdHMoKTsKKworIyBJbnNlcnQgc29tZSByb3dzIGJlZm9yZSB0 aGUgcHJvbW90aW9uCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFb SU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsNCkgcztdCispOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zv cl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24o J2ZsdXNoJykpOworCisjIHByb21vdGUKKyRub2RlX3N0YW5kYnktPnByb21vdGU7CisKKyMg aW5zZXJ0IHNvbWUgcm93cyBvbiBwcm9tb3RlZCBzdGFuZGJ5Ciskbm9kZV9zdGFuZGJ5LT5z YWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkp IFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDUsNykgcztdCispOwor CisKKyRleHBlY3RlZCA9IHF7QkVHSU4KK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJ TlNFUlQ6IHhbaW50ZWdlcl06MSB5W3RleHRdOicxJwordGFibGUgcHVibGljLmRlY29kaW5n X3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXToyIHlbdGV4dF06JzInCit0YWJsZSBwdWJsaWMu ZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjMgeVt0ZXh0XTonMycKK3RhYmxl IHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06NCB5W3RleHRdOic0 JworQ09NTUlUCitCRUdJTgordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDog eFtpbnRlZ2VyXTo1IHlbdGV4dF06JzUnCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDog SU5TRVJUOiB4W2ludGVnZXJdOjYgeVt0ZXh0XTonNicKK3RhYmxlIHB1YmxpYy5kZWNvZGlu Z190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06NyB5W3RleHRdOic3JworQ09NTUlUfTsKKwor IyBjaGVjayB0aGF0IHdlIGFyZSBkZWNvZGluZyBwcmUgYW5kIHBvc3QgcHJvbW90aW9uIGlu c2VydGVkIHJvd3MKKyRzdGRvdXRfc3FsID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCd0 ZXN0ZGInLAorCXFxW1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X3BlZWtfY2hh bmdlcygnYWN0aXZlc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcsICdz a2lwLWVtcHR5LXhhY3RzJywgJzEnKTtdCispOworCitpcygkc3Rkb3V0X3NxbCwgJGV4cGVj dGVkLCAnZ290IGV4cGVjdGVkIG91dHB1dCBmcm9tIFNRTCBkZWNvZGluZyBzZXNzaW9uIG9u IHByb21vdGVkIHN0YW5kYnknKTsKLS0gCjIuMzQuMQoK --------------rNN4FJ950ueQmmYvLj50n8vA Content-Type: text/plain; charset=UTF-8; name="v37-0003-Allow-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename="v37-0003-Allow-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSAwMTRjMjQxMWVmMTE2MTk5YmNhNzZlMzM1ZjcyZWM5NGIxN2JiY2U2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAxMCBKYW4gMjAyMyAwNzo1MDo0MyArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjM3IDMvNl0gQWxsb3cgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5LgoKQWxsb3cg YSBsb2dpY2FsIHNsb3QgdG8gYmUgY3JlYXRlZCBvbiBzdGFuZGJ5LiBSZXN0cmljdCBpdHMg dXNhZ2UKb3IgaXRzIGNyZWF0aW9uIGlmIHdhbF9sZXZlbCBvbiBwcmltYXJ5IGlzIGxlc3Mg dGhhbiBsb2dpY2FsLgpEdXJpbmcgc2xvdCBjcmVhdGlvbiwgaXQncyByZXN0YXJ0X2xzbiBp cyBzZXQgdG8gdGhlIGxhc3QgcmVwbGF5ZWQKTFNOLiBFZmZlY3RpdmVseSwgYSBsb2dpY2Fs IHNsb3QgY3JlYXRpb24gb24gc3RhbmRieSB3YWl0cyBmb3IgYW4KeGxfcnVubmluZ194YWN0 IHJlY29yZCB0byBhcnJpdmUgZnJvbSBwcmltYXJ5LiBDb25mbGljdGluZyBzbG90cwp3b3Vs ZCBiZSBoYW5kbGVkIGluIG5leHQgY29tbWl0cy4KCkF1dGhvcjogQW5kcmVzIEZyZXVuZCAo aW4gYW4gb2xkZXIgdmVyc2lvbiksIEFtaXQgS2hhbmRla2FyLCBCZXJ0cmFuZCBEcm91dm90 ClJldmlld2VkLUJ5OiBCZXJ0cmFuZCBEcm91dm90LCBBbmRyZXMgRnJldW5kLCBSb2JlcnQg SGFhcywgRmFicml6aW8gZGUgUm95ZXMgTWVsbG8KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nLmMgICAgICAgICB8IDExICsrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvZGVjb2RlLmMgIHwgMjIgKysrKysrLQogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9sb2dpY2FsLmMgfCAzNyArKysrKysrLS0tLS0KIHNyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Nsb3QuYyAgICAgICAgICAgIHwgNzEgKysrKysrKysrKysrKysrLS0t LS0tLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jICAgICAgIHwgMjcg KysrKystLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oICAgICAgICAgICAgICAgICB8 ICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgMTE3IGluc2VydGlvbnMoKyksIDUyIGRlbGV0aW9u cygtKQogICA0LjUlIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtLwogIDM2LjYlIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvCiAgNTcuOSUgc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmluZGV4IDg2MjU5NDI1MTYu LmVkYmVhZDI5NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKQEAgLTQ0NjIs NiArNDQ2MiwxNyBAQCBMb2NhbFByb2Nlc3NDb250cm9sRmlsZShib29sIHJlc2V0KQogCVJl YWRDb250cm9sRmlsZSgpOwogfQogCisvKgorICogR2V0IHRoZSB3YWxfbGV2ZWwgZnJvbSB0 aGUgY29udHJvbCBmaWxlLiBGb3IgYSBzdGFuZGJ5LCB0aGlzIHZhbHVlIHNob3VsZCBiZQor ICogY29uc2lkZXJlZCBhcyBpdHMgYWN0aXZlIHdhbF9sZXZlbCwgYmVjYXVzZSBpdCBtYXkg YmUgZGlmZmVyZW50IGZyb20gd2hhdAorICogd2FzIG9yaWdpbmFsbHkgY29uZmlndXJlZCBv biBzdGFuZGJ5LgorICovCitXYWxMZXZlbAorR2V0QWN0aXZlV2FsTGV2ZWxPblN0YW5kYnko dm9pZCkKK3sKKwlyZXR1cm4gQ29udHJvbEZpbGUtPndhbF9sZXZlbDsKK30KKwogLyoKICAq IEluaXRpYWxpemF0aW9uIG9mIHNoYXJlZCBtZW1vcnkgZm9yIFhMT0cKICAqLwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKaW5kZXggYTUzZTIzYzY3OS4u YzFlNDNkZDJiMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29k ZS5jCkBAIC0xNTIsMTEgKzE1MiwzMSBAQCB4bG9nX2RlY29kZShMb2dpY2FsRGVjb2RpbmdD b250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZikKIAkJCSAqIGNhbiByZXN0YXJ0 IGZyb20gdGhlcmUuCiAJCQkgKi8KIAkJCWJyZWFrOworCQljYXNlIFhMT0dfUEFSQU1FVEVS X0NIQU5HRToKKwkJeworCQkJeGxfcGFyYW1ldGVyX2NoYW5nZSAqeGxyZWMgPQorCQkJCSh4 bF9wYXJhbWV0ZXJfY2hhbmdlICopIFhMb2dSZWNHZXREYXRhKGJ1Zi0+cmVjb3JkKTsKKwor CQkJLyoKKwkJCSAqIElmIHdhbF9sZXZlbCBvbiBwcmltYXJ5IGlzIHJlZHVjZWQgdG8gbGVz cyB0aGFuIGxvZ2ljYWwsIHRoZW4gd2UKKwkJCSAqIHdhbnQgdG8gcHJldmVudCBleGlzdGlu ZyBsb2dpY2FsIHNsb3RzIGZyb20gYmVpbmcgdXNlZC4KKwkJCSAqIEV4aXN0aW5nIGxvZ2lj YWwgc2xvdHMgb24gc3RhbmRieSBnZXQgaW52YWxpZGF0ZWQgd2hlbiB0aGlzIFdBTAorCQkJ ICogcmVjb3JkIGlzIHJlcGxheWVkOyBhbmQgZnVydGhlciwgc2xvdCBjcmVhdGlvbiBmYWls cyB3aGVuIHRoZQorCQkJICogd2FsIGxldmVsIGlzIG5vdCBzdWZmaWNpZW50OyBidXQgYWxs IHRoZXNlIG9wZXJhdGlvbnMgYXJlIG5vdAorCQkJICogc3luY2hyb25pemVkLCBzbyBhIGxv Z2ljYWwgc2xvdCBtYXkgY3JlZXAgaW4gd2hpbGUgdGhlIHdhbF9sZXZlbAorCQkJICogaXMg YmVpbmcgcmVkdWNlZC4gSGVuY2UgdGhpcyBleHRyYSBjaGVjay4KKwkJCSAqLworCQkJaWYg KHhscmVjLT53YWxfbGV2ZWwgPCBXQUxfTEVWRUxfTE9HSUNBTCkKKwkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lU RV9TVEFURSksCisJCQkJCQkgZXJybXNnKCJsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkg cmVxdWlyZXMgIgorCQkJCQkJCQkid2FsX2xldmVsIHRvIGJlIGF0IGxlYXN0IGxvZ2ljYWwg b24gbWFzdGVyIikpKTsKKwkJCWJyZWFrOworCQl9CiAJCWNhc2UgWExPR19OT09QOgogCQlj YXNlIFhMT0dfTkVYVE9JRDoKIAkJY2FzZSBYTE9HX1NXSVRDSDoKIAkJY2FzZSBYTE9HX0JB Q0tVUF9FTkQ6Ci0JCWNhc2UgWExPR19QQVJBTUVURVJfQ0hBTkdFOgogCQljYXNlIFhMT0df UkVTVE9SRV9QT0lOVDoKIAkJY2FzZSBYTE9HX0ZQV19DSEFOR0U6CiAJCWNhc2UgWExPR19G UElfRk9SX0hJTlQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2xvZ2ljYWwuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNh bC5jCmluZGV4IDUyZDFmZTYyNjkuLmIzMTNhYTkzYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jCkBAIC0xMTksMjMgKzExOSwyMiBAQCBDaGVj a0xvZ2ljYWxEZWNvZGluZ1JlcXVpcmVtZW50cyh2b2lkKQogCQkJCShlcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCSBlcnJtc2coImxv Z2ljYWwgZGVjb2RpbmcgcmVxdWlyZXMgYSBkYXRhYmFzZSBjb25uZWN0aW9uIikpKTsKIAot CS8qIC0tLS0KLQkgKiBUT0RPOiBXZSBnb3QgdG8gY2hhbmdlIHRoYXQgc29tZWRheSBzb29u Li4uCi0JICoKLQkgKiBUaGVyZSdzIGJhc2ljYWxseSB0aHJlZSB0aGluZ3MgbWlzc2luZyB0 byBhbGxvdyB0aGlzOgotCSAqIDEpIFdlIG5lZWQgdG8gYmUgYWJsZSB0byBjb3JyZWN0bHkg YW5kIHF1aWNrbHkgaWRlbnRpZnkgdGhlIHRpbWVsaW5lIGEKLQkgKgkgIExTTiBiZWxvbmdz IHRvCi0JICogMikgV2UgbmVlZCB0byBmb3JjZSBob3Rfc3RhbmRieV9mZWVkYmFjayB0byBi ZSBlbmFibGVkIGF0IGFsbCB0aW1lcyBzbwotCSAqCSAgdGhlIHByaW1hcnkgY2Fubm90IHJl bW92ZSByb3dzIHdlIG5lZWQuCi0JICogMykgc3VwcG9ydCBkcm9wcGluZyByZXBsaWNhdGlv biBzbG90cyByZWZlcnJpbmcgdG8gYSBkYXRhYmFzZSwgaW4KLQkgKgkgIGRiYXNlX3JlZG8u IFRoZXJlIGNhbid0IGJlIGFueSBhY3RpdmUgb25lcyBkdWUgdG8gSFMgcmVjb3ZlcnkKLQkg KgkgIGNvbmZsaWN0cywgc28gdGhhdCBzaG91bGQgYmUgcmVsYXRpdmVseSBlYXN5LgotCSAq IC0tLS0KLQkgKi8KIAlpZiAoUmVjb3ZlcnlJblByb2dyZXNzKCkpCi0JCWVyZXBvcnQoRVJS T1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJ CSBlcnJtc2coImxvZ2ljYWwgZGVjb2RpbmcgY2Fubm90IGJlIHVzZWQgd2hpbGUgaW4gcmVj b3ZlcnkiKSkpOworCXsKKwkJLyoKKwkJICogVGhpcyBjaGVjayBtYXkgaGF2ZSByYWNlIGNv bmRpdGlvbnMsIGJ1dCB3aGVuZXZlcgorCQkgKiBYTE9HX1BBUkFNRVRFUl9DSEFOR0UgaW5k aWNhdGVzIHRoYXQgd2FsX2xldmVsIGhhcyBjaGFuZ2VkLCB3ZQorCQkgKiB2ZXJpZnkgdGhh dCB0aGVyZSBhcmUgbm8gZXhpc3RpbmcgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90cy4gQW5k IHRvCisJCSAqIGF2b2lkIHJhY2VzIGFyb3VuZCBjcmVhdGluZyBhIG5ldyBzbG90LAorCQkg KiBDaGVja0xvZ2ljYWxEZWNvZGluZ1JlcXVpcmVtZW50cygpIGlzIGNhbGxlZCBvbmNlIGJl Zm9yZSBjcmVhdGluZworCQkgKiB0aGUgc2xvdCwgYW5kIG9uY2Ugd2hlbiBsb2dpY2FsIGRl Y29kaW5nIGlzIGluaXRpYWxseSBzdGFydGluZyB1cC4KKwkJICovCisJCWlmIChHZXRBY3Rp dmVXYWxMZXZlbE9uU3RhbmRieSgpIDwgV0FMX0xFVkVMX0xPR0lDQUwpCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlT SVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygibG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5 IHJlcXVpcmVzICIKKwkJCQkJCQkid2FsX2xldmVsIHRvIGJlIGF0IGxlYXN0IGxvZ2ljYWwg b24gbWFzdGVyIikpKTsKKwl9CiB9CiAKIC8qCkBAIC0zMzEsNiArMzMwLDEyIEBAIENyZWF0 ZUluaXREZWNvZGluZ0NvbnRleHQoY29uc3QgY2hhciAqcGx1Z2luLAogCUxvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eDsKIAlNZW1vcnlDb250ZXh0IG9sZF9jb250ZXh0OwogCisJLyoK KwkgKiBPbiBzdGFuZGJ5LCB0aGlzIGNoZWNrIGlzIGFsc28gcmVxdWlyZWQgd2hpbGUgY3Jl YXRpbmcgdGhlIHNsb3QuIENoZWNrCisJICogdGhlIGNvbW1lbnRzIGluIHRoaXMgZnVuY3Rp b24uCisJICovCisJQ2hlY2tMb2dpY2FsRGVjb2RpbmdSZXF1aXJlbWVudHMoKTsKKwogCS8q IHNob3J0ZXIgbGluZXMuLi4gKi8KIAlzbG90ID0gTXlSZXBsaWNhdGlvblNsb3Q7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Nsb3QuYwppbmRleCBmMjI1NzJiZTMwLi45NzFjYjJiZDhjIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vc2xvdC5jCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAic3Rv cmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRl ICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgImFjY2Vzcy94bG9ncmVjb3ZlcnkuaCIK IAogLyoKICAqIFJlcGxpY2F0aW9uIHNsb3Qgb24tZGlzayBkYXRhIHN0cnVjdHVyZS4KQEAg LTExNzUsMzcgKzExNzYsNDYgQEAgUmVwbGljYXRpb25TbG90UmVzZXJ2ZVdhbCh2b2lkKQog CQkvKgogCQkgKiBGb3IgbG9naWNhbCBzbG90cyBsb2cgYSBzdGFuZGJ5IHNuYXBzaG90IGFu ZCBzdGFydCBsb2dpY2FsIGRlY29kaW5nCiAJCSAqIGF0IGV4YWN0bHkgdGhhdCBwb3NpdGlv bi4gVGhhdCBhbGxvd3MgdGhlIHNsb3QgdG8gc3RhcnQgdXAgbW9yZQotCQkgKiBxdWlja2x5 LgorCQkgKiBxdWlja2x5LiBCdXQgb24gYSBzdGFuZGJ5IHdlIGNhbm5vdCBkbyBXQUwgd3Jp dGVzLCBzbyBqdXN0IHVzZSB0aGUKKwkJICogcmVwbGF5IHBvaW50ZXI7IGVmZmVjdGl2ZWx5 LCBhbiBhdHRlbXB0IHRvIGNyZWF0ZSBhIGxvZ2ljYWwgc2xvdCBvbgorCQkgKiBzdGFuZGJ5 IHdpbGwgY2F1c2UgaXQgdG8gd2FpdCBmb3IgYW4geGxfcnVubmluZ194YWN0IHJlY29yZCB0 byBiZQorCQkgKiBsb2dnZWQgaW5kZXBlbmRlbnRseSBvbiB0aGUgcHJpbWFyeSwgc28gdGhh dCBhIHNuYXBzaG90IGNhbiBiZSBidWlsdAorCQkgKiB1c2luZyB0aGUgcmVjb3JkLgogCQkg KgotCQkgKiBUaGF0J3Mgbm90IG5lZWRlZCAob3IgaW5kZWVkIGhlbHBmdWwpIGZvciBwaHlz aWNhbCBzbG90cyBhcyB0aGV5J2xsCi0JCSAqIHN0YXJ0IHJlcGxheSBhdCB0aGUgbGFzdCBs b2dnZWQgY2hlY2twb2ludCBhbnl3YXkuIEluc3RlYWQgcmV0dXJuCi0JCSAqIHRoZSBsb2Nh dGlvbiBvZiB0aGUgbGFzdCByZWRvIExTTi4gV2hpbGUgdGhhdCBzbGlnaHRseSBpbmNyZWFz ZXMKLQkJICogdGhlIGNoYW5jZSB0aGF0IHdlIGhhdmUgdG8gcmV0cnksIGl0J3Mgd2hlcmUg YSBiYXNlIGJhY2t1cCBoYXMgdG8KLQkJICogc3RhcnQgcmVwbGF5IGF0LgorCQkgKiBOb25l IG9mIHRoaXMgaXMgbmVlZGVkIChvciBpbmRlZWQgaGVscGZ1bCkgZm9yIHBoeXNpY2FsIHNs b3RzIGFzCisJCSAqIHRoZXknbGwgc3RhcnQgcmVwbGF5IGF0IHRoZSBsYXN0IGxvZ2dlZCBj aGVja3BvaW50IGFueXdheS4gSW5zdGVhZAorCQkgKiByZXR1cm4gdGhlIGxvY2F0aW9uIG9m IHRoZSBsYXN0IHJlZG8gTFNOLiBXaGlsZSB0aGF0IHNsaWdodGx5CisJCSAqIGluY3JlYXNl cyB0aGUgY2hhbmNlIHRoYXQgd2UgaGF2ZSB0byByZXRyeSwgaXQncyB3aGVyZSBhIGJhc2Ug YmFja3VwCisJCSAqIGhhcyB0byBzdGFydCByZXBsYXkgYXQuCiAJCSAqLwotCQlpZiAoIVJl Y292ZXJ5SW5Qcm9ncmVzcygpICYmIFNsb3RJc0xvZ2ljYWwoc2xvdCkpCisJCWlmIChTbG90 SXNQaHlzaWNhbChzbG90KSkKKwkJCXJlc3RhcnRfbHNuID0gR2V0UmVkb1JlY1B0cigpOwor CQllbHNlIGlmIChSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKIAkJewotCQkJWExvZ1JlY1B0cglm bHVzaHB0cjsKLQotCQkJLyogc3RhcnQgYXQgY3VycmVudCBpbnNlcnQgcG9zaXRpb24gKi8K LQkJCXJlc3RhcnRfbHNuID0gR2V0WExvZ0luc2VydFJlY1B0cigpOwotCQkJU3BpbkxvY2tB Y3F1aXJlKCZzbG90LT5tdXRleCk7Ci0JCQlzbG90LT5kYXRhLnJlc3RhcnRfbHNuID0gcmVz dGFydF9sc247Ci0JCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKLQotCQkJLyog bWFrZSBzdXJlIHdlIGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIHN0YXJ0ICovCi0JCQlm bHVzaHB0ciA9IExvZ1N0YW5kYnlTbmFwc2hvdCgpOworCQkJcmVzdGFydF9sc24gPSBHZXRY TG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCQkJLyoKKwkJCSAqIFJlcGxheSBwb2ludGVyIG1h eSBwb2ludCBvbmUgcGFzdCB0aGUgZW5kIG9mIHRoZSByZWNvcmQuIElmIHRoYXQKKwkJCSAq IGlzIGEgWExPRyBwYWdlIGJvdW5kYXJ5LCBpdCB3aWxsIG5vdCBiZSBhIHZhbGlkIExTTiBm b3IgdGhlCisJCQkgKiBzdGFydCBvZiBhIHJlY29yZCwgc28gYnVtcCBpdCB1cCBwYXN0IHRo ZSBwYWdlIGhlYWRlci4KKwkJCSAqLworCQkJaWYgKCFYUmVjT2ZmSXNWYWxpZChyZXN0YXJ0 X2xzbikpCisJCQl7CisJCQkJaWYgKHJlc3RhcnRfbHNuICUgWExPR19CTENLU1ogIT0gMCkK KwkJCQkJZWxvZyhFUlJPUiwgImludmFsaWQgcmVwbGF5IHBvaW50ZXIiKTsKIAotCQkJLyog YW5kIG1ha2Ugc3VyZSBpdCdzIGZzeW5jZWQgdG8gZGlzayAqLwotCQkJWExvZ0ZsdXNoKGZs dXNocHRyKTsKKwkJCQkvKiBGb3IgdGhlIGZpcnN0IHBhZ2Ugb2YgYSBzZWdtZW50IGZpbGUs IGl0J3MgYSBsb25nIGhlYWRlciAqLworCQkJCWlmIChYTG9nU2VnbWVudE9mZnNldChyZXN0 YXJ0X2xzbiwgd2FsX3NlZ21lbnRfc2l6ZSkgPT0gMCkKKwkJCQkJcmVzdGFydF9sc24gKz0g U2l6ZU9mWExvZ0xvbmdQSEQ7CisJCQkJZWxzZQorCQkJCQlyZXN0YXJ0X2xzbiArPSBTaXpl T2ZYTG9nU2hvcnRQSEQ7CisJCQl9CiAJCX0KIAkJZWxzZQotCQl7Ci0JCQlyZXN0YXJ0X2xz biA9IEdldFJlZG9SZWNQdHIoKTsKLQkJCVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0ZXgp OwotCQkJc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3RhcnRfbHNuOwotCQkJU3Bpbkxv Y2tSZWxlYXNlKCZzbG90LT5tdXRleCk7Ci0JCX0KKwkJCXJlc3RhcnRfbHNuID0gR2V0WExv Z0luc2VydFJlY1B0cigpOworCisJCVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0ZXgpOwor CQlzbG90LT5kYXRhLnJlc3RhcnRfbHNuID0gcmVzdGFydF9sc247CisJCVNwaW5Mb2NrUmVs ZWFzZSgmc2xvdC0+bXV0ZXgpOwogCiAJCS8qIHByZXZlbnQgV0FMIHJlbW92YWwgYXMgZmFz dCBhcyBwb3NzaWJsZSAqLwogCQlSZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVkTFNO KCk7CkBAIC0xMjIxLDYgKzEyMzEsMTcgQEAgUmVwbGljYXRpb25TbG90UmVzZXJ2ZVdhbCh2 b2lkKQogCQlpZiAoWExvZ0dldExhc3RSZW1vdmVkU2Vnbm8oKSA8IHNlZ25vKQogCQkJYnJl YWs7CiAJfQorCisJaWYgKCFSZWNvdmVyeUluUHJvZ3Jlc3MoKSAmJiBTbG90SXNMb2dpY2Fs KHNsb3QpKQorCXsKKwkJWExvZ1JlY1B0cglmbHVzaHB0cjsKKworCQkvKiBtYWtlIHN1cmUg d2UgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gc3RhcnQgKi8KKwkJZmx1c2hwdHIgPSBM b2dTdGFuZGJ5U25hcHNob3QoKTsKKworCQkvKiBhbmQgbWFrZSBzdXJlIGl0J3MgZnN5bmNl ZCB0byBkaXNrICovCisJCVhMb2dGbHVzaChmbHVzaHB0cik7CisJfQogfQogCiAvKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwppbmRleCA4N2FiNDY3NDQ2Li5lODljMjEw YThlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwpAQCAtOTA2LDE0ICs5 MDYsMTggQEAgbG9naWNhbF9yZWFkX3hsb2dfcGFnZShYTG9nUmVhZGVyU3RhdGUgKnN0YXRl LCBYTG9nUmVjUHRyIHRhcmdldFBhZ2VQdHIsIGludCByZXEKIAlpbnQJCQljb3VudDsKIAlX QUxSZWFkRXJyb3IgZXJyaW5mbzsKIAlYTG9nU2VnTm8Jc2Vnbm87Ci0JVGltZUxpbmVJRAlj dXJyVExJID0gR2V0V0FMSW5zZXJ0aW9uVGltZUxpbmUoKTsKKwlUaW1lTGluZUlECWN1cnJU TEk7CiAKIAkvKgotCSAqIFNpbmNlIGxvZ2ljYWwgZGVjb2RpbmcgaXMgb25seSBwZXJtaXR0 ZWQgb24gYSBwcmltYXJ5IHNlcnZlciwgd2Uga25vdwotCSAqIHRoYXQgdGhlIGN1cnJlbnQg dGltZWxpbmUgSUQgY2FuJ3QgYmUgY2hhbmdpbmcgYW55IG1vcmUuIElmIHdlIGRpZCB0aGlz Ci0JICogb24gYSBzdGFuZGJ5LCB3ZSdkIGhhdmUgdG8gd29ycnkgYWJvdXQgdGhlIHZhbHVl cyB3ZSBjb21wdXRlIGhlcmUKLQkgKiBiZWNvbWluZyBpbnZhbGlkIGR1ZSB0byBhIHByb21v dGlvbiBvciB0aW1lbGluZSBjaGFuZ2UuCisJICogU2luY2UgbG9naWNhbCBkZWNvZGluZyBp cyBhbHNvIHBlcm1pdHRlZCBvbiBhIHN0YW5kYnkgc2VydmVyLCB3ZSBuZWVkCisJICogdG8g Y2hlY2sgaWYgdGhlIHNlcnZlciBpcyBpbiByZWNvdmVyeSB0byBkZWNpZGUgaG93IHRvIGdl dCB0aGUgY3VycmVudAorCSAqIHRpbWVsaW5lIElEIChzbyB0aGF0IGl0IGFsc28gY292ZXIg dGhlIHByb21vdGlvbiBvciB0aW1lbGluZSBjaGFuZ2UgY2FzZXMpLgogCSAqLworCWlmICgh UmVjb3ZlcnlJblByb2dyZXNzKCkpCisJCWN1cnJUTEkgPSBHZXRXQUxJbnNlcnRpb25UaW1l TGluZSgpOworCWVsc2UKKwkJR2V0WExvZ1JlcGxheVJlY1B0cigmY3VyclRMSSk7CisKIAlY TG9nUmVhZERldGVybWluZVRpbWVsaW5lKHN0YXRlLCB0YXJnZXRQYWdlUHRyLCByZXFMZW4s IGN1cnJUTEkpOwogCXNlbmRUaW1lTGluZUlzSGlzdG9yaWMgPSAoc3RhdGUtPmN1cnJUTEkg IT0gY3VyclRMSSk7CiAJc2VuZFRpbWVMaW5lID0gc3RhdGUtPmN1cnJUTEk7CkBAIC0zMDc0 LDEwICszMDc4LDEyIEBAIFhMb2dTZW5kTG9naWNhbCh2b2lkKQogCSAqIElmIGZpcnN0IHRp bWUgdGhyb3VnaCBpbiB0aGlzIHNlc3Npb24sIGluaXRpYWxpemUgZmx1c2hQdHIuICBPdGhl cndpc2UsCiAJICogd2Ugb25seSBuZWVkIHRvIHVwZGF0ZSBmbHVzaFB0ciBpZiBFbmRSZWNQ dHIgaXMgcGFzdCBpdC4KIAkgKi8KLQlpZiAoZmx1c2hQdHIgPT0gSW52YWxpZFhMb2dSZWNQ dHIpCi0JCWZsdXNoUHRyID0gR2V0Rmx1c2hSZWNQdHIoTlVMTCk7Ci0JZWxzZSBpZiAobG9n aWNhbF9kZWNvZGluZ19jdHgtPnJlYWRlci0+RW5kUmVjUHRyID49IGZsdXNoUHRyKQotCQlm bHVzaFB0ciA9IEdldEZsdXNoUmVjUHRyKE5VTEwpOworCWlmIChmbHVzaFB0ciA9PSBJbnZh bGlkWExvZ1JlY1B0ciB8fAorCQlsb2dpY2FsX2RlY29kaW5nX2N0eC0+cmVhZGVyLT5FbmRS ZWNQdHIgPj0gZmx1c2hQdHIpCisJeworCQlmbHVzaFB0ciA9IChhbV9jYXNjYWRpbmdfd2Fs c2VuZGVyID8KKwkJCQkJR2V0U3RhbmRieUZsdXNoUmVjUHRyKE5VTEwpIDogR2V0Rmx1c2hS ZWNQdHIoTlVMTCkpOworCX0KIAogCS8qIElmIEVuZFJlY1B0ciBpcyBzdGlsbCBwYXN0IG91 ciBmbHVzaFB0ciwgaXQgbWVhbnMgd2UgY2F1Z2h0IHVwLiAqLwogCWlmIChsb2dpY2FsX2Rl Y29kaW5nX2N0eC0+cmVhZGVyLT5FbmRSZWNQdHIgPj0gZmx1c2hQdHIpCkBAIC0zMTY4LDcg KzMxNzQsOCBAQCBHZXRTdGFuZGJ5Rmx1c2hSZWNQdHIoVGltZUxpbmVJRCAqdGxpKQogCXJl Y2VpdmVQdHIgPSBHZXRXYWxSY3ZGbHVzaFJlY1B0cihOVUxMLCAmcmVjZWl2ZVRMSSk7CiAJ cmVwbGF5UHRyID0gR2V0WExvZ1JlcGxheVJlY1B0cigmcmVwbGF5VExJKTsKIAotCSp0bGkg PSByZXBsYXlUTEk7CisJaWYgKHRsaSkKKwkJKnRsaSA9IHJlcGxheVRMSTsKIAogCXJlc3Vs dCA9IHJlcGxheVB0cjsKIAlpZiAocmVjZWl2ZVRMSSA9PSByZXBsYXlUTEkgJiYgcmVjZWl2 ZVB0ciA+IHJlcGxheVB0cikKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9n LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCmluZGV4IGNmZTU0MDk3MzguLjQ4Y2E4 NTIzODEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3hsb2cuaApAQCAtMjMwLDYgKzIzMCw3IEBAIGV4dGVybiB2b2lk IFhMT0dTaG1lbUluaXQodm9pZCk7CiBleHRlcm4gdm9pZCBCb290U3RyYXBYTE9HKHZvaWQp OwogZXh0ZXJuIHZvaWQgSW5pdGlhbGl6ZVdhbENvbnNpc3RlbmN5Q2hlY2tpbmcodm9pZCk7 CiBleHRlcm4gdm9pZCBMb2NhbFByb2Nlc3NDb250cm9sRmlsZShib29sIHJlc2V0KTsKK2V4 dGVybiBXYWxMZXZlbCBHZXRBY3RpdmVXYWxMZXZlbE9uU3RhbmRieSh2b2lkKTsKIGV4dGVy biB2b2lkIFN0YXJ0dXBYTE9HKHZvaWQpOwogZXh0ZXJuIHZvaWQgU2h1dGRvd25YTE9HKGlu dCBjb2RlLCBEYXR1bSBhcmcpOwogZXh0ZXJuIHZvaWQgQ3JlYXRlQ2hlY2tQb2ludChpbnQg ZmxhZ3MpOwotLSAKMi4zNC4xCgo= --------------rNN4FJ950ueQmmYvLj50n8vA Content-Type: text/plain; charset=UTF-8; name="v37-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Disposition: attachment; filename="v37-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSA0ZDdjNzZmNDJmMWE3MGZhMjE0OTZlNjQ5NjZlODc5ZTg2MGEyNGUxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAxMCBKYW4gMjAyMyAwNzo0OTo1MyArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjM3IDIvNl0gSGFuZGxlIGxvZ2ljYWwgc2xvdCBjb25mbGljdHMgb24gc3RhbmRieS4K CkR1cmluZyBXQUwgcmVwbGF5IG9uIHN0YW5kYnksIHdoZW4gc2xvdCBjb25mbGljdCBpcyBp ZGVudGlmaWVkLAppbnZhbGlkYXRlIHN1Y2ggc2xvdHMuIEFsc28gZG8gdGhlIHNhbWUgdGhp bmcgaWYgd2FsX2xldmVsIG9uIG1hc3RlcgppcyByZWR1Y2VkIHRvIGJlbG93IGxvZ2ljYWwg YW5kIHRoZXJlIGFyZSBleGlzdGluZyBsb2dpY2FsIHNsb3RzCm9uIHN0YW5kYnkuIEludHJv ZHVjZSBhIG5ldyBQcm9jU2lnbmFsUmVhc29uIHZhbHVlIGZvciBzbG90CmNvbmZsaWN0IHJl Y292ZXJ5LiBBcnJhbmdlIGZvciBhIG5ldyBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyBm aWVsZDoKY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90LgoKQXV0aG9yOiBBbmRyZXMgRnJldW5k IChpbiBhbiBvbGRlciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2 b3QKUmV2aWV3ZWQtQnk6IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVy dCBIYWFzLCBGYWJyaXppbyBkZSBSb3llcyBNZWxsbwotLS0KIGRvYy9zcmMvc2dtbC9tb25p dG9yaW5nLnNnbWwgICAgICAgICAgICAgICAgICB8ICAxMSArCiBzcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0eGxvZy5jICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaF94bG9nLmMgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHhsb2cuYyAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQv YWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICAgICAgICAgICB8ICAyNCArKy0KIHNyYy9iYWNr ZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAgICAgICB8ICAgMyArLQogLi4uL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMgICAgICAgIHwgIDEzICstCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgICAgICAgICAgICAgICAgfCAxOTEgKysrKysr KysrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyAgICAg ICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jICAg ICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyAgICAg ICAgICAgICB8ICAxMyArLQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAg ICAgICAgICAgIHwgIDI0ICsrKwogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0 X2RhdGFiYXNlLmMgIHwgICA0ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5j cy5jICAgICAgICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0 ICAgICAgICAgICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvcGdzdGF0LmggICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3Qu aCAgICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2ln bmFsLmggICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRi eS5oICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3J1bGVzLm91dCAgICAgICAgICAgfCAgIDMgKy0KIDIyIGZpbGVzIGNoYW5nZWQsIDI2OCBp bnNlcnRpb25zKCspLCA1NSBkZWxldGlvbnMoLSkKICAgMy40JSBkb2Mvc3JjL3NnbWwvCiAg IDguNSUgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vCiAgIDUuMyUgc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC8KICA1Ni43JSBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi8K ICAgNS4yJSBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy8KICAgNy4zJSBzcmMvYmFja2VuZC90 Y29wLwogICA1LjUlIHNyYy9iYWNrZW5kLwogICAzLjUlIHNyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uLwogICAzLjQlIHNyYy9pbmNsdWRlLwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9t b25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IDM1 OGQyZmY5MGYuLmFhYmY3NDQ3OGQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9y aW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbApAQCAtNDMzOSw2 ICs0MzM5LDE3IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBG Uk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgZGVhZGxv Y2tzCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJj b2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmNvbmZsX2FjdGl2ZV9s b2dpY2Fsc2xvdDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAgICAgIDwv cGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE51bWJlciBvZiBhY3RpdmUgbG9naWNhbCBz bG90cyBpbiB0aGlzIGRhdGFiYXNlIHRoYXQgaGF2ZSBiZWVuCisgICAgICAgaW52YWxpZGF0 ZWQgYmVjYXVzZSB0aGV5IGNvbmZsaWN0IHdpdGggcmVjb3ZlcnkgKG5vdGUgdGhhdCBpbmFj dGl2ZSBvbmVzCisgICAgICAgYXJlIGFsc28gaW52YWxpZGF0ZWQgYnV0IGRvIG5vdCBpbmNy ZW1lbnQgdGhpcyBjb3VudGVyKQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93 PgogICAgIDwvdGJvZHk+CiAgICA8L3Rncm91cD4KICAgPC90YWJsZT4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0eGxvZy5jCmluZGV4IDU5ZTMxZmNjMTIuLjBjYzlhNzg1OGEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwpAQCAtMTk3LDYgKzE5Nyw3IEBAIGdpc3RS ZWRvRGVsZXRlUmVjb3JkKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlYTG9nUmVjR2V0 QmxvY2tUYWcocmVjb3JkLCAwLCAmcmxvY2F0b3IsIE5VTEwsIE5VTEwpOwogCiAJCVJlc29s dmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+c25hcHNob3RDb25mbGlj dEhvcml6b24sCisJCQkJCQkJCQkJCXhsZGF0YS0+aXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJ CQlybG9jYXRvcik7CiAJfQogCkBAIC0zOTAsNiArMzkxLDcgQEAgZ2lzdFJlZG9QYWdlUmV1 c2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJICovCiAJaWYgKEluSG90U3RhbmRieSkK IAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3RGdWxsWGlkKHhscmVjLT5z bmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJCSAgIHhscmVjLT5pc0NhdGFs b2dSZWwsCiAJCQkJCQkJCQkJCQkgICB4bHJlYy0+bG9jYXRvcik7CiB9CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKaW5kZXggMDhjZWI5MTI4OC4uYjg1NjMwNDc0NiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKQEAgLTEwMDMsNiArMTAwMyw3 IEBAIGhhc2hfeGxvZ192YWN1dW1fb25lX3BhZ2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQp CiAKIAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJsb2NhdG9yLCBOVUxMLCBO VUxMKTsKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxkYXRhLT5z bmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxkYXRhLT5pc0NhdGFsb2dS ZWwsCiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtLmMKaW5kZXggZDA3MzM5MjNkNC4uYjA2ZmE2OTc2NCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtLmMKQEAgLTg3NTIsNiArODc1Miw3IEBAIGhlYXBfeGxvZ19wcnVuZShYTG9n UmVhZGVyU3RhdGUgKnJlY29yZCkKIAkgKi8KIAlpZiAoSW5Ib3RTdGFuZGJ5KQogCQlSZXNv bHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25hcHNob3RDb25mbGlj dEhvcml6b24sCisJCQkJCQkJCQkJCXhscmVjLT5pc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQkJ CXJsb2NhdG9yKTsKIAogCS8qCkBAIC04OTIxLDYgKzg5MjIsNyBAQCBoZWFwX3hsb2dfdmlz aWJsZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkgKi8KIAlpZiAoSW5Ib3RTdGFuZGJ5 KQogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25hcHNo b3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhscmVjLT5mbGFncyAmIFZJU0lCSUxJ VFlNQVBfSVNfQ0FUQUxPR19SRUwsCiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAogCS8qCkBA IC05MTc2LDYgKzkxNzgsNyBAQCBoZWFwX3hsb2dfZnJlZXplX3BhZ2UoWExvZ1JlYWRlclN0 YXRlICpyZWNvcmQpCiAKIAkJWExvZ1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJsb2Nh dG9yLCBOVUxMLCBOVUxMKTsKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNo b3QoeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQl4bHJlYy0+ aXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJCQlybG9jYXRvcik7CiAJfQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCmluZGV4IDQxNGNhNGY2ZGUuLmM4N2U0NmVkNjYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCkBAIC02NjksNiArNjY5LDcgQEAg YnRyZWVfeGxvZ19kZWxldGUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCVhMb2dSZWNH ZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZybG9jYXRvciwgTlVMTCwgTlVMTCk7CiAKIAkJUmVz b2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxyZWMtPnNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uLAorCQkJCQkJCQkJCQl4bHJlYy0+aXNDYXRhbG9nUmVsLAogCQkJCQkJCQkJ CQlybG9jYXRvcik7CiAJfQogCkBAIC0xMDA3LDYgKzEwMDgsNyBAQCBidHJlZV94bG9nX3Jl dXNlX3BhZ2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAlpZiAoSW5Ib3RTdGFuZGJ5 KQogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdEZ1bGxYaWQoeGxyZWMt PnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQkJICAgeGxyZWMtPmlzQ2F0 YWxvZ1JlbCwKIAkJCQkJCQkJCQkJCSAgIHhscmVjLT5sb2NhdG9yKTsKIH0KIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYwppbmRleCBiMDcxYjU5YzhhLi40NTlhYzkyOWJh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYwpAQCAtODc5LDYgKzg3OSw3 IEBAIHNwZ1JlZG9WYWN1dW1SZWRpcmVjdChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAog CQlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAwLCAmbG9jYXRvciwgTlVMTCwgTlVMTCk7 CiAJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+c25hcHNo b3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhsZGF0YS0+aXNDYXRhbG9nUmVsLAog CQkJCQkJCQkJCQlsb2NhdG9yKTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cu YwppbmRleCAwMDcwZDU2YjBiLi44NjI1OTQyNTE2IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGxvZy5jCkBAIC02NDQyLDYgKzY0NDIsNyBAQCBDcmVhdGVDaGVja1BvaW50KGludCBm bGFncykKIAlWaXJ0dWFsVHJhbnNhY3Rpb25JZCAqdnhpZHM7CiAJaW50CQkJbnZ4aWRzOwog CWludAkJCW9sZFhMb2dBbGxvd2VkID0gMDsKKwlib29sCQlpbnZhbGlkYXRlZCA9IGZhbHNl OwogCiAJLyoKIAkgKiBBbiBlbmQtb2YtcmVjb3ZlcnkgY2hlY2twb2ludCBpcyByZWFsbHkg YSBzaHV0ZG93biBjaGVja3BvaW50LCBqdXN0CkBAIC02ODAyLDcgKzY4MDMsOCBAQCBDcmVh dGVDaGVja1BvaW50KGludCBmbGFncykKIAkgKi8KIAlYTEJ5dGVUb1NlZyhSZWRvUmVjUHRy LCBfbG9nU2VnTm8sIHdhbF9zZWdtZW50X3NpemUpOwogCUtlZXBMb2dTZWcocmVjcHRyLCAm X2xvZ1NlZ05vKTsKLQlpZiAoSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhf bG9nU2VnTm8pKQorCUludmFsaWRhdGVPYnNvbGV0ZU9yQ29uZmxpY3RpbmdMb2dpY2FsUmVw bGljYXRpb25TbG90cyhfbG9nU2VnTm8sICZpbnZhbGlkYXRlZCwgSW52YWxpZE9pZCwgTlVM TCk7CisJaWYgKGludmFsaWRhdGVkKQogCXsKIAkJLyoKIAkJICogU29tZSBzbG90cyBoYXZl IGJlZW4gaW52YWxpZGF0ZWQ7IHJlY2FsY3VsYXRlIHRoZSBvbGQtc2VnbWVudApAQCAtNzA4 MSw2ICs3MDgzLDcgQEAgQ3JlYXRlUmVzdGFydFBvaW50KGludCBmbGFncykKIAlYTG9nUmVj UHRyCWVuZHB0cjsKIAlYTG9nU2VnTm8JX2xvZ1NlZ05vOwogCVRpbWVzdGFtcFR6IHh0aW1l OworCWJvb2wJCWludmFsaWRhdGVkID0gZmFsc2U7CiAKIAkvKiBDb25jdXJyZW50IGNoZWNr cG9pbnQvcmVzdGFydHBvaW50IGNhbm5vdCBoYXBwZW4gKi8KIAlBc3NlcnQoIUlzVW5kZXJQ b3N0bWFzdGVyIHx8IE15QmFja2VuZFR5cGUgPT0gQl9DSEVDS1BPSU5URVIpOwpAQCAtNzI0 Niw3ICs3MjQ5LDggQEAgQ3JlYXRlUmVzdGFydFBvaW50KGludCBmbGFncykKIAlyZXBsYXlQ dHIgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKCZyZXBsYXlUTEkpOwogCWVuZHB0ciA9IChyZWNl aXZlUHRyIDwgcmVwbGF5UHRyKSA/IHJlcGxheVB0ciA6IHJlY2VpdmVQdHI7CiAJS2VlcExv Z1NlZyhlbmRwdHIsICZfbG9nU2VnTm8pOwotCWlmIChJbnZhbGlkYXRlT2Jzb2xldGVSZXBs aWNhdGlvblNsb3RzKF9sb2dTZWdObykpCisJSW52YWxpZGF0ZU9ic29sZXRlT3JDb25mbGlj dGluZ0xvZ2ljYWxSZXBsaWNhdGlvblNsb3RzKF9sb2dTZWdObywgJmludmFsaWRhdGVkLCBJ bnZhbGlkT2lkLCBOVUxMKTsKKwlpZiAoaW52YWxpZGF0ZWQpCiAJewogCQkvKgogCQkgKiBT b21lIHNsb3RzIGhhdmUgYmVlbiBpbnZhbGlkYXRlZDsgcmVjYWxjdWxhdGUgdGhlIG9sZC1z ZWdtZW50CkBAIC03OTU4LDYgKzc5NjIsMjIgQEAgeGxvZ19yZWRvKFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKQogCQkvKiBVcGRhdGUgb3VyIGNvcHkgb2YgdGhlIHBhcmFtZXRlcnMgaW4g cGdfY29udHJvbCAqLwogCQltZW1jcHkoJnhscmVjLCBYTG9nUmVjR2V0RGF0YShyZWNvcmQp LCBzaXplb2YoeGxfcGFyYW1ldGVyX2NoYW5nZSkpOwogCisJCS8qCisJCSAqIEludmFsaWRh dGUgbG9naWNhbCBzbG90cyBpZiB3ZSBhcmUgaW4gaG90IHN0YW5kYnkgYW5kIHRoZSBwcmlt YXJ5IGRvZXMgbm90CisJCSAqIGhhdmUgYSBXQUwgbGV2ZWwgc3VmZmljaWVudCBmb3IgbG9n aWNhbCBkZWNvZGluZy4gTm8gbmVlZCB0byBzZWFyY2gKKwkJICogZm9yIHBvdGVudGlhbGx5 IGNvbmZsaWN0aW5nIGxvZ2ljYWxseSBzbG90cyBpZiBzdGFuZGJ5IGlzIHJ1bm5pbmcKKwkJ ICogd2l0aCB3YWxfbGV2ZWwgbG93ZXIgdGhhbiBsb2dpY2FsLCBiZWNhdXNlIGluIHRoYXQg Y2FzZSwgd2Ugd291bGQKKwkJICogaGF2ZSBlaXRoZXIgZGlzYWxsb3dlZCBjcmVhdGlvbiBv ZiBsb2dpY2FsIHNsb3RzIG9yIGludmFsaWRhdGVkIGV4aXN0aW5nCisJCSAqIG9uZXMuCisJ CSAqLworCQlpZiAoSW5SZWNvdmVyeSAmJiBJbkhvdFN0YW5kYnkgJiYKKwkJCXhscmVjLndh bF9sZXZlbCA8IFdBTF9MRVZFTF9MT0dJQ0FMICYmCisJCQl3YWxfbGV2ZWwgPj0gV0FMX0xF VkVMX0xPR0lDQUwpCisJCXsKKwkJCVRyYW5zYWN0aW9uSWQgQ29uZmxpY3RIb3Jpem9uID0g SW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJCQlJbnZhbGlkYXRlT2Jzb2xldGVPckNvbmZsaWN0 aW5nTG9naWNhbFJlcGxpY2F0aW9uU2xvdHMoSW52YWxpZFhMb2dSZWNQdHIsIE5VTEwsIElu dmFsaWRPaWQsICZDb25mbGljdEhvcml6b24pOworCQl9CisKIAkJTFdMb2NrQWNxdWlyZShD b250cm9sRmlsZUxvY2ssIExXX0VYQ0xVU0lWRSk7CiAJCUNvbnRyb2xGaWxlLT5NYXhDb25u ZWN0aW9ucyA9IHhscmVjLk1heENvbm5lY3Rpb25zOwogCQlDb250cm9sRmlsZS0+bWF4X3dv cmtlcl9wcm9jZXNzZXMgPSB4bHJlYy5tYXhfd29ya2VyX3Byb2Nlc3NlczsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCA0NDdjOWI5NzBmLi42MDgwYzE3YWM0 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKKysr IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC0xMDY1LDcgKzEw NjUsOCBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cyBBUwogICAg ICAgICAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9jayhELm9pZCkgQVMgY29uZmxf bG9jaywKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBzaG90KEQu b2lkKSBBUyBjb25mbF9zbmFwc2hvdCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2Nv bmZsaWN0X2J1ZmZlcnBpbihELm9pZCkgQVMgY29uZmxfYnVmZmVycGluLAotICAgICAgICAg ICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhELm9pZCkgQVMg Y29uZmxfZGVhZGxvY2sKKyAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3N0 YXJ0dXBfZGVhZGxvY2soRC5vaWQpIEFTIGNvbmZsX2RlYWRsb2NrLAorICAgICAgICAgICAg cGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9naWNhbHNsb3QoRC5vaWQpIEFTIGNvbmZsX2Fj dGl2ZV9sb2dpY2Fsc2xvdAogICAgIEZST00gcGdfZGF0YWJhc2UgRDsKIAogQ1JFQVRFIFZJ RVcgcGdfc3RhdF91c2VyX2Z1bmN0aW9ucyBBUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKaW5kZXggZmExYjY0MWEyYi4uMDcwZmQz NzhlOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dp Y2FsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2lj YWxmdW5jcy5jCkBAIC0yMTYsOSArMjE2LDkgQEAgcGdfbG9naWNhbF9zbG90X2dldF9jaGFu Z2VzX2d1dHMoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJvb2wgY29uZmlybSwgYm9vbCBi aW4KIAogCQkvKgogCQkgKiBBZnRlciB0aGUgc2FuaXR5IGNoZWNrcyBpbiBDcmVhdGVEZWNv ZGluZ0NvbnRleHQsIG1ha2Ugc3VyZSB0aGUKLQkJICogcmVzdGFydF9sc24gaXMgdmFsaWQu ICBBdm9pZCAiY2Fubm90IGdldCBjaGFuZ2VzIiB3b3JkaW5nIGluIHRoaXMKLQkJICogZXJy bXNnIGJlY2F1c2UgdGhhdCdkIGJlIGNvbmZ1c2luZ2x5IGFtYmlndW91cyBhYm91dCBubyBj aGFuZ2VzCi0JCSAqIGJlaW5nIGF2YWlsYWJsZS4KKwkJICogcmVzdGFydF9sc24gaXMgdmFs aWQgb3IgYm90aCB4bWluIGFuZCBjYXRhbG9nX3htaW4gYXJlIHZhbGlkLiBBdm9pZAorCQkg KiAiY2Fubm90IGdldCBjaGFuZ2VzIiB3b3JkaW5nIGluIHRoaXMgZXJybXNnIGJlY2F1c2Ug dGhhdCdkIGJlCisJCSAqIGNvbmZ1c2luZ2x5IGFtYmlndW91cyBhYm91dCBubyBjaGFuZ2Vz IGJlaW5nIGF2YWlsYWJsZS4KIAkJICovCiAJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKE15 UmVwbGljYXRpb25TbG90LT5kYXRhLnJlc3RhcnRfbHNuKSkKIAkJCWVyZXBvcnQoRVJST1Is CkBAIC0yMjcsNiArMjI3LDEzIEBAIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlc19ndXRz KEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29sIGNvbmZpcm0sIGJvb2wgYmluCiAJCQkJ CQkJTmFtZVN0cigqbmFtZSkpLAogCQkJCQkgZXJyZGV0YWlsKCJUaGlzIHNsb3QgaGFzIG5l dmVyIHByZXZpb3VzbHkgcmVzZXJ2ZWQgV0FMLCBvciBpdCBoYXMgYmVlbiBpbnZhbGlkYXRl ZC4iKSkpOwogCisJCWlmIChMb2dpY2FsUmVwbGljYXRpb25TbG90SXNJbnZhbGlkKE15UmVw bGljYXRpb25TbG90KSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJj YW5ub3QgcmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAorCQkJ CQkJCU5hbWVTdHIoKm5hbWUpKSwKKwkJCQkJIGVycmRldGFpbCgiVGhpcyBzbG90IGhhcyBi ZWVuIGludmFsaWRhdGVkIGJlY2F1c2UgaXQgd2FzIGNvbmZsaWN0aW5nIHdpdGggcmVjb3Zl cnkuIikpKTsKKwogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKIAkJ LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwppbmRleCBmMjg2OTE4ZjY5Li5mMjI1NzJiZTMw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCkBAIC0xMjI0LDIwICsxMjI0LDIxIEBAIFJl cGxpY2F0aW9uU2xvdFJlc2VydmVXYWwodm9pZCkKIH0KIAogLyoKLSAqIEhlbHBlciBmb3Ig SW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyAtLSBhY3F1aXJlcyB0aGUgZ2l2 ZW4gc2xvdAotICogYW5kIG1hcmsgaXQgaW52YWxpZCwgaWYgbmVjZXNzYXJ5IGFuZCBwb3Nz aWJsZS4KKyAqIEhlbHBlciBmb3IgSW52YWxpZGF0ZU9ic29sZXRlT3JDb25mbGljdGluZ0xv Z2ljYWxSZXBsaWNhdGlvblNsb3RzCisgKgorICogQWNxdWlyZXMgdGhlIGdpdmVuIHNsb3Qg YW5kIG1hcmsgaXQgaW52YWxpZCwgaWYgbmVjZXNzYXJ5IGFuZCBwb3NzaWJsZS4KICAqCiAg KiBSZXR1cm5zIHdoZXRoZXIgUmVwbGljYXRpb25TbG90Q29udHJvbExvY2sgd2FzIHJlbGVh c2VkIGluIHRoZSBpbnRlcmltIChhbmQKICAqIGluIHRoYXQgY2FzZSB3ZSdyZSBub3QgaG9s ZGluZyB0aGUgbG9jayBhdCByZXR1cm4sIG90aGVyd2lzZSB3ZSBhcmUpLgogICoKLSAqIFNl dHMgKmludmFsaWRhdGVkIHRydWUgaWYgdGhlIHNsb3Qgd2FzIGludmFsaWRhdGVkLiAoVW50 b3VjaGVkIG90aGVyd2lzZS4pCisgKiBTZXRzICppbnZhbGlkYXRlZCB0cnVlIGlmIGFuIG9i c29sZXRlIHNsb3Qgd2FzIGludmFsaWRhdGVkLiAoVW50b3VjaGVkIG90aGVyd2lzZS4pCiAg KgogICogVGhpcyBpcyBpbmhlcmVudGx5IHJhY3ksIGJlY2F1c2Ugd2UgcmVsZWFzZSB0aGUg TFdMb2NrCiAgKiBmb3Igc3lzY2FsbHMsIHNvIGNhbGxlciBtdXN0IHJlc3RhcnQgaWYgd2Ug cmV0dXJuIHRydWUuCiAgKi8KIHN0YXRpYyBib29sCi1JbnZhbGlkYXRlUG9zc2libHlPYnNv bGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVjUHRyIG9sZGVzdExTTiwKLQkJ CQkJCQkgICBib29sICppbnZhbGlkYXRlZCkKK0ludmFsaWRhdGVQb3NzaWJseU9ic29sZXRl T3JDb25mbGljdGluZ0xvZ2ljYWxTbG90KFJlcGxpY2F0aW9uU2xvdCAqcywgWExvZ1JlY1B0 ciBvbGRlc3RMU04sCisJCQkJCQkJCQkJCQkgICBib29sICppbnZhbGlkYXRlZCwgVHJhbnNh Y3Rpb25JZCAqeGlkKQogewogCWludAkJCWxhc3Rfc2lnbmFsZWRfcGlkID0gMDsKIAlib29s CQlyZWxlYXNlZF9sb2NrID0gZmFsc2U7CkBAIC0xMjQ1LDYgKzEyNDYsOSBAQCBJbnZhbGlk YXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90ICpzLCBYTG9nUmVjUHRy IG9sZGVzdExTTiwKIAlmb3IgKDs7KQogCXsKIAkJWExvZ1JlY1B0cglyZXN0YXJ0X2xzbjsK KwkJVHJhbnNhY3Rpb25JZCBzbG90X3htaW47CisJCVRyYW5zYWN0aW9uSWQgc2xvdF9jYXRh bG9nX3htaW47CisKIAkJTmFtZURhdGEJc2xvdG5hbWU7CiAJCWludAkJCWFjdGl2ZV9waWQg PSAwOwogCkBAIC0xMjYxLDE4ICsxMjY1LDMzIEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29s ZXRlU2xvdChSZXBsaWNhdGlvblNsb3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0TFNOLAogCQkg KiBDaGVjayBpZiB0aGUgc2xvdCBuZWVkcyB0byBiZSBpbnZhbGlkYXRlZC4gSWYgaXQgbmVl ZHMgdG8gYmUKIAkJICogaW52YWxpZGF0ZWQsIGFuZCBpcyBub3QgY3VycmVudGx5IGFjcXVp cmVkLCBhY3F1aXJlIGl0IGFuZCBtYXJrIGl0CiAJCSAqIGFzIGhhdmluZyBiZWVuIGludmFs aWRhdGVkLiAgV2UgZG8gdGhpcyB3aXRoIHRoZSBzcGlubG9jayBoZWxkIHRvCi0JCSAqIGF2 b2lkIHJhY2UgY29uZGl0aW9ucyAtLSBmb3IgZXhhbXBsZSB0aGUgcmVzdGFydF9sc24gY291 bGQgbW92ZQotCQkgKiBmb3J3YXJkLCBvciB0aGUgc2xvdCBjb3VsZCBiZSBkcm9wcGVkLgor CQkgKiBhdm9pZCByYWNlIGNvbmRpdGlvbnMgLS0gZm9yIGV4YW1wbGUgdGhlIHJlc3RhcnRf bHNuIChvciB0aGUKKwkJICogeG1pbihzKSBjb3VsZCkgbW92ZSBmb3J3YXJkIG9yIHRoZSBz bG90IGNvdWxkIGJlIGRyb3BwZWQuCiAJCSAqLwogCQlTcGluTG9ja0FjcXVpcmUoJnMtPm11 dGV4KTsKIAogCQlyZXN0YXJ0X2xzbiA9IHMtPmRhdGEucmVzdGFydF9sc247CisJCXNsb3Rf eG1pbiA9IHMtPmRhdGEueG1pbjsKKwkJc2xvdF9jYXRhbG9nX3htaW4gPSBzLT5kYXRhLmNh dGFsb2dfeG1pbjsKKworCQkvKiBzbG90IGhhcyBiZWVuIGludmFsaWRhdGVkIChsb2dpY2Fs IGRlY29kaW5nIGNvbmZsaWN0IGNhc2UpICovCisJCWlmICgoeGlkICYmCisJCQkgKChMb2dp Y2FsUmVwbGljYXRpb25TbG90SXNJbnZhbGlkKHMpKQorCQkJICB8fAogCiAJCS8qCi0JCSAq IElmIHRoZSBzbG90IGlzIGFscmVhZHkgaW52YWxpZCBvciBpcyBmcmVzaCBlbm91Z2gsIHdl IGRvbid0IG5lZWQgdG8KLQkJICogZG8gYW55dGhpbmcuCisJCSAqIFdlIGFyZSBub3QgZm9y Y2luZyBmb3IgaW52YWxpZGF0aW9uIGJlY2F1c2UgdGhlIHhpZCBpcyB2YWxpZCBhbmQKKwkJ ICogdGhpcyBpcyBhIG5vbiBjb25mbGljdGluZyBzbG90LgogCQkgKi8KLQkJaWYgKFhMb2dS ZWNQdHJJc0ludmFsaWQocmVzdGFydF9sc24pIHx8IHJlc3RhcnRfbHNuID49IG9sZGVzdExT TikKKwkJCSAgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKCp4aWQpICYmICEoCisJCQkJCQkJCQkJ CSAgIChUcmFuc2FjdGlvbklkSXNWYWxpZChzbG90X3htaW4pICYmIFRyYW5zYWN0aW9uSWRQ cmVjZWRlc09yRXF1YWxzKHNsb3RfeG1pbiwgKnhpZCkpCisJCQkJCQkJCQkJCSAgIHx8CisJ CQkJCQkJCQkJCSAgIChUcmFuc2FjdGlvbklkSXNWYWxpZChzbG90X2NhdGFsb2dfeG1pbikg JiYgVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMoc2xvdF9jYXRhbG9nX3htaW4sICp4 aWQpKQorCQkJCQkJCQkJCQkgICApKQorCQkJICApKQorCQkJfHwKKwkJLyogc2xvdCBoYXMg YmVlbiBpbnZhbGlkYXRlZCAob2Jzb2xldGUgTFNOIGNhc2UpICovCisJCQkoIXhpZCAmJiAo WExvZ1JlY1B0cklzSW52YWxpZChyZXN0YXJ0X2xzbikgfHwgcmVzdGFydF9sc24gPj0gb2xk ZXN0TFNOKSkpCiAJCXsKIAkJCVNwaW5Mb2NrUmVsZWFzZSgmcy0+bXV0ZXgpOwogCQkJaWYg KHJlbGVhc2VkX2xvY2spCkBAIC0xMjkyLDExICsxMzExLDE4IEBAIEludmFsaWRhdGVQb3Nz aWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0 TFNOLAogCQl7CiAJCQlNeVJlcGxpY2F0aW9uU2xvdCA9IHM7CiAJCQlzLT5hY3RpdmVfcGlk ID0gTXlQcm9jUGlkOwotCQkJcy0+ZGF0YS5pbnZhbGlkYXRlZF9hdCA9IHJlc3RhcnRfbHNu OwotCQkJcy0+ZGF0YS5yZXN0YXJ0X2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwotCi0JCQkv KiBMZXQgY2FsbGVyIGtub3cgKi8KLQkJCSppbnZhbGlkYXRlZCA9IHRydWU7CisJCQlpZiAo eGlkKQorCQkJeworCQkJCXMtPmRhdGEueG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwor CQkJCXMtPmRhdGEuY2F0YWxvZ194bWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJCQl9 CisJCQllbHNlCisJCQl7CisJCQkJcy0+ZGF0YS5pbnZhbGlkYXRlZF9hdCA9IHJlc3RhcnRf bHNuOworCQkJCXMtPmRhdGEucmVzdGFydF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwkJ CQkvKiBMZXQgY2FsbGVyIGtub3cgKi8KKwkJCQkqaW52YWxpZGF0ZWQgPSB0cnVlOworCQkJ fQogCQl9CiAKIAkJU3BpbkxvY2tSZWxlYXNlKCZzLT5tdXRleCk7CkBAIC0xMzI3LDE1ICsx MzUzLDM5IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNs b3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0TFNOLAogCQkJICovCiAJCQlpZiAobGFzdF9zaWdu YWxlZF9waWQgIT0gYWN0aXZlX3BpZCkKIAkJCXsKLQkJCQllcmVwb3J0KExPRywKLQkJCQkJ CWVycm1zZygidGVybWluYXRpbmcgcHJvY2VzcyAlZCB0byByZWxlYXNlIHJlcGxpY2F0aW9u IHNsb3QgXCIlc1wiIiwKLQkJCQkJCQkgICBhY3RpdmVfcGlkLCBOYW1lU3RyKHNsb3RuYW1l KSksCi0JCQkJCQllcnJkZXRhaWwoIlRoZSBzbG90J3MgcmVzdGFydF9sc24gJVgvJVggZXhj ZWVkcyB0aGUgbGltaXQgYnkgJWxsdSBieXRlcy4iLAotCQkJCQkJCQkgIExTTl9GT1JNQVRf QVJHUyhyZXN0YXJ0X2xzbiksCi0JCQkJCQkJCSAgKHVuc2lnbmVkIGxvbmcgbG9uZykgKG9s ZGVzdExTTiAtIHJlc3RhcnRfbHNuKSksCi0JCQkJCQllcnJoaW50KCJZb3UgbWlnaHQgbmVl ZCB0byBpbmNyZWFzZSBtYXhfc2xvdF93YWxfa2VlcF9zaXplLiIpKTsKKwkJCQlpZiAoeGlk KQorCQkJCXsKKwkJCQkJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKCp4aWQpKQorCQkJCQl7 CisJCQkJCQllcmVwb3J0KExPRywKKwkJCQkJCQkJZXJybXNnKCJ0ZXJtaW5hdGluZyBwcm9j ZXNzICVkIGJlY2F1c2UgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIgY29uZmxpY3RzIHdpdGgg cmVjb3ZlcnkiLAorCQkJCQkJCQkJICAgYWN0aXZlX3BpZCwgTmFtZVN0cihzbG90bmFtZSkp LAorCQkJCQkJCQllcnJkZXRhaWwoIlRoZSBzbG90IGNvbmZsaWN0ZWQgd2l0aCB4aWQgaG9y aXpvbiAldS4iLAorCQkJCQkJCQkJCSAgKnhpZCkpOworCQkJCQl9CisJCQkJCWVsc2UKKwkJ CQkJeworCQkJCQkJZXJlcG9ydChMT0csCisJCQkJCQkJCWVycm1zZygidGVybWluYXRpbmcg cHJvY2VzcyAlZCBiZWNhdXNlIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIGNvbmZsaWN0cyB3 aXRoIHJlY292ZXJ5IiwKKwkJCQkJCQkJCSAgIGFjdGl2ZV9waWQsIE5hbWVTdHIoc2xvdG5h bWUpKSwKKwkJCQkJCQkJZXJyZGV0YWlsKCJMb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkg cmVxdWlyZXMgd2FsX2xldmVsIHRvIGJlIGF0IGxlYXN0IGxvZ2ljYWwgb24gbWFzdGVyIikp OworCQkJCQl9CisKKwkJCQkJKHZvaWQpIFNlbmRQcm9jU2lnbmFsKGFjdGl2ZV9waWQsIFBS T0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QsIEludmFsaWRCYWNrZW5kSWQp OworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQllcmVwb3J0KExPRywKKwkJCQkJCQll cnJtc2coInRlcm1pbmF0aW5nIHByb2Nlc3MgJWQgdG8gcmVsZWFzZSByZXBsaWNhdGlvbiBz bG90IFwiJXNcIiIsCisJCQkJCQkJCSAgIGFjdGl2ZV9waWQsIE5hbWVTdHIoc2xvdG5hbWUp KSwKKwkJCQkJCQllcnJkZXRhaWwoIlRoZSBzbG90J3MgcmVzdGFydF9sc24gJVgvJVggZXhj ZWVkcyB0aGUgbGltaXQgYnkgJWxsdSBieXRlcy4iLAorCQkJCQkJCQkJICBMU05fRk9STUFU X0FSR1MocmVzdGFydF9sc24pLAorCQkJCQkJCQkJICAodW5zaWduZWQgbG9uZyBsb25nKSAo b2xkZXN0TFNOIC0gcmVzdGFydF9sc24pKSwKKwkJCQkJCQllcnJoaW50KCJZb3UgbWlnaHQg bmVlZCB0byBpbmNyZWFzZSBtYXhfc2xvdF93YWxfa2VlcF9zaXplLiIpKTsKKworCQkJCQko dm9pZCkga2lsbChhY3RpdmVfcGlkLCBTSUdURVJNKTsKKwkJCQl9CiAKLQkJCQkodm9pZCkg a2lsbChhY3RpdmVfcGlkLCBTSUdURVJNKTsKIAkJCQlsYXN0X3NpZ25hbGVkX3BpZCA9IGFj dGl2ZV9waWQ7CiAJCQl9CiAKQEAgLTEzNjksMTMgKzE0MTksMzMgQEAgSW52YWxpZGF0ZVBv c3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdCAqcywgWExvZ1JlY1B0ciBvbGRl c3RMU04sCiAJCQlSZXBsaWNhdGlvblNsb3RTYXZlKCk7CiAJCQlSZXBsaWNhdGlvblNsb3RS ZWxlYXNlKCk7CiAKLQkJCWVyZXBvcnQoTE9HLAotCQkJCQllcnJtc2coImludmFsaWRhdGlu ZyBvYnNvbGV0ZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiIsCi0JCQkJCQkgICBOYW1lU3Ry KHNsb3RuYW1lKSksCi0JCQkJCWVycmRldGFpbCgiVGhlIHNsb3QncyByZXN0YXJ0X2xzbiAl WC8lWCBleGNlZWRzIHRoZSBsaW1pdCBieSAlbGx1IGJ5dGVzLiIsCi0JCQkJCQkJICBMU05f Rk9STUFUX0FSR1MocmVzdGFydF9sc24pLAotCQkJCQkJCSAgKHVuc2lnbmVkIGxvbmcgbG9u ZykgKG9sZGVzdExTTiAtIHJlc3RhcnRfbHNuKSksCi0JCQkJCWVycmhpbnQoIllvdSBtaWdo dCBuZWVkIHRvIGluY3JlYXNlIG1heF9zbG90X3dhbF9rZWVwX3NpemUuIikpOworCQkJaWYg KHhpZCkKKwkJCXsKKwkJCQlwZ3N0YXRfZHJvcF9yZXBsc2xvdChzKTsKKworCQkJCWlmIChU cmFuc2FjdGlvbklkSXNWYWxpZCgqeGlkKSkKKwkJCQl7CisJCQkJCWVyZXBvcnQoTE9HLAor CQkJCQkJCWVycm1zZygiaW52YWxpZGF0aW5nIHNsb3QgXCIlc1wiIGJlY2F1c2UgaXQgY29u ZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCBOYW1lU3RyKHNsb3RuYW1lKSksCisJCQkJCQkJZXJy ZGV0YWlsKCJUaGUgc2xvdCBjb25mbGljdGVkIHdpdGggeGlkIGhvcml6b24gJXUuIiwgKnhp ZCkpOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQllcmVwb3J0KExPRywKKwkJCQkJ CQllcnJtc2coImludmFsaWRhdGluZyBzbG90IFwiJXNcIiBiZWNhdXNlIGl0IGNvbmZsaWN0 cyB3aXRoIHJlY292ZXJ5IiwgTmFtZVN0cihzbG90bmFtZSkpLAorCQkJCQkJCWVycmRldGFp bCgiTG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IHJlcXVpcmVzIHdhbF9sZXZlbCB0byBi ZSBhdCBsZWFzdCBsb2dpY2FsIG9uIG1hc3RlciIpKTsKKwkJCQl9CisJCQl9CisJCQllbHNl CisJCQl7CisJCQkJZXJlcG9ydChMT0csCisJCQkJCQllcnJtc2coImludmFsaWRhdGluZyBv YnNvbGV0ZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiIsCisJCQkJCQkJICAgTmFtZVN0cihz bG90bmFtZSkpLAorCQkJCQkJZXJyZGV0YWlsKCJUaGUgc2xvdCdzIHJlc3RhcnRfbHNuICVY LyVYIGV4Y2VlZHMgdGhlIGxpbWl0IGJ5ICVsbHUgYnl0ZXMuIiwKKwkJCQkJCQkJICBMU05f Rk9STUFUX0FSR1MocmVzdGFydF9sc24pLAorCQkJCQkJCQkgICh1bnNpZ25lZCBsb25nIGxv bmcpIChvbGRlc3RMU04gLSByZXN0YXJ0X2xzbikpLAorCQkJCQkJZXJyaGludCgiWW91IG1p Z2h0IG5lZWQgdG8gaW5jcmVhc2UgbWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZS4iKSk7CisJCQl9 CiAKIAkJCS8qIGRvbmUgd2l0aCB0aGlzIHNsb3QgZm9yIG5vdyAqLwogCQkJYnJlYWs7CkBA IC0xMzg4LDIwICsxNDU4LDM4IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChS ZXBsaWNhdGlvblNsb3QgKnMsIFhMb2dSZWNQdHIgb2xkZXN0TFNOLAogfQogCiAvKgotICog TWFyayBhbnkgc2xvdCB0aGF0IHBvaW50cyB0byBhbiBMU04gb2xkZXIgdGhhbiB0aGUgZ2l2 ZW4gc2VnbWVudAotICogYXMgaW52YWxpZDsgaXQgcmVxdWlyZXMgV0FMIHRoYXQncyBhYm91 dCB0byBiZSByZW1vdmVkLgorICogSW52YWxpZGF0ZSBPYnNvbGV0ZSBzbG90cyBvciByZXNv bHZlIHJlY292ZXJ5IGNvbmZsaWN0cyB3aXRoIGxvZ2ljYWwgc2xvdHMuCiAgKgotICogUmV0 dXJucyB0cnVlIHdoZW4gYW55IHNsb3QgaGF2ZSBnb3QgaW52YWxpZGF0ZWQuCisgKiBPYnNv bGV0ZSBjYXNlIChha2EgeGlkIGlzIE5VTEwpOgogICoKLSAqIE5CIC0gdGhpcyBydW5zIGFz IHBhcnQgb2YgY2hlY2twb2ludCwgc28gYXZvaWQgcmFpc2luZyBlcnJvcnMgaWYgcG9zc2li bGUuCisgKgkgTWFyayBhbnkgc2xvdCB0aGF0IHBvaW50cyB0byBhbiBMU04gb2xkZXIgdGhh biB0aGUgZ2l2ZW4gc2VnbWVudAorICoJIGFzIGludmFsaWQ7IGl0IHJlcXVpcmVzIFdBTCB0 aGF0J3MgYWJvdXQgdG8gYmUgcmVtb3ZlZC4KKyAqCSBiZWVuaW52YWxpZGF0ZWQgaXMgc2V0 IHRvIHRydWUgd2hlbiBhbnkgc2xvdCBoYXZlIGdvdCBpbnZhbGlkYXRlZC4KKyAqCisgKiAg TG9naWNhbCByZXBsaWNhdGlvbiBzbG90IGNhc2U6CisgKgorICoJIFdoZW4geGlkIGlzIHZh bGlkLCBpdCBtZWFucyB0aGF0IHdlIGFyZSBhYm91dCB0byByZW1vdmUgcm93cyBvbGRlciB0 aGFuIHhpZC4KKyAqCSBUaGVyZWZvcmUgd2UgbmVlZCB0byBpbnZhbGlkYXRlIHNsb3RzIHRo YXQgZGVwZW5kIG9uIHNlZWluZyB0aG9zZSByb3dzLgorICoJIFdoZW4geGlkIGlzIGludmFs aWQsIGludmFsaWRhdGUgYWxsIGxvZ2ljYWwgc2xvdHMuIFRoaXMgaXMgcmVxdWlyZWQgd2hl biB0aGUKKyAqCSBtYXN0ZXIgd2FsX2xldmVsIGlzIHNldCBiYWNrIHRvIHJlcGxpY2EsIHNv IGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMgbmVlZCB0bworICoJIGJlIGludmFsaWRhdGVkLgog ICovCi1ib29sCi1JbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKFhMb2dTZWdO byBvbGRlc3RTZWdubykKK3ZvaWQKK0ludmFsaWRhdGVPYnNvbGV0ZU9yQ29uZmxpY3RpbmdM b2dpY2FsUmVwbGljYXRpb25TbG90cyhYTG9nU2VnTm8gb2xkZXN0U2Vnbm8sIGJvb2wgKmJl ZW5pbnZhbGlkYXRlZCwgT2lkIGRib2lkLCBUcmFuc2FjdGlvbklkICp4aWQpCiB7Ci0JWExv Z1JlY1B0cglvbGRlc3RMU047Ci0JYm9vbAkJaW52YWxpZGF0ZWQgPSBmYWxzZTsKIAotCVhM b2dTZWdOb09mZnNldFRvUmVjUHRyKG9sZGVzdFNlZ25vLCAwLCB3YWxfc2VnbWVudF9zaXpl LCBvbGRlc3RMU04pOworCVhMb2dSZWNQdHIJb2xkZXN0TFNOID0gSW52YWxpZFhMb2dSZWNQ dHI7CisKKwlBc3NlcnQobWF4X3JlcGxpY2F0aW9uX3Nsb3RzID49IDApOworCisJaWYgKG1h eF9yZXBsaWNhdGlvbl9zbG90cyA9PSAwKQorCQlyZXR1cm47CisKKwlpZiAoIXhpZCkKKwl7 CisJCSpiZWVuaW52YWxpZGF0ZWQgPSBmYWxzZTsKKwkJWExvZ1NlZ05vT2Zmc2V0VG9SZWNQ dHIob2xkZXN0U2Vnbm8sIDAsIHdhbF9zZWdtZW50X3NpemUsIG9sZGVzdExTTik7CisJfQog CiByZXN0YXJ0OgogCUxXTG9ja0FjcXVpcmUoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2ss IExXX1NIQVJFRCk7CkBAIC0xNDEyLDI0ICsxNTAwLDM1IEBAIHJlc3RhcnQ6CiAJCWlmICgh cy0+aW5fdXNlKQogCQkJY29udGludWU7CiAKLQkJaWYgKEludmFsaWRhdGVQb3NzaWJseU9i c29sZXRlU2xvdChzLCBvbGRlc3RMU04sICZpbnZhbGlkYXRlZCkpCisJCWlmICh4aWQpCiAJ CXsKLQkJCS8qIGlmIHRoZSBsb2NrIHdhcyByZWxlYXNlZCwgc3RhcnQgZnJvbSBzY3JhdGNo ICovCi0JCQlnb3RvIHJlc3RhcnQ7CisJCQkvKiB3ZSBhcmUgb25seSBkZWFsaW5nIHdpdGgg KmxvZ2ljYWwqIHNsb3QgY29uZmxpY3RzICovCisJCQlpZiAoIVNsb3RJc0xvZ2ljYWwocykp CisJCQkJY29udGludWU7CisKKwkJCS8qCisJCQkgKiBub3QgdGhlIGRhdGFiYXNlIG9mIGlu dGVyZXN0IGFuZCB3ZSBkb24ndCB3YW50IGFsbCB0aGUKKwkJCSAqIGRhdGFiYXNlLCBza2lw CisJCQkgKi8KKwkJCWlmIChzLT5kYXRhLmRhdGFiYXNlICE9IGRib2lkICYmIFRyYW5zYWN0 aW9uSWRJc1ZhbGlkKCp4aWQpKQorCQkJCWNvbnRpbnVlOwogCQl9CisKKwkJaWYgKEludmFs aWRhdGVQb3NzaWJseU9ic29sZXRlT3JDb25mbGljdGluZ0xvZ2ljYWxTbG90KHMsIG9sZGVz dExTTiwgYmVlbmludmFsaWRhdGVkLCB4aWQpKQorCQkJZ290byByZXN0YXJ0OwogCX0KKwog CUxXTG9ja1JlbGVhc2UoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2spOwogCiAJLyoKLQkg KiBJZiBhbnkgc2xvdHMgaGF2ZSBiZWVuIGludmFsaWRhdGVkLCByZWNhbGN1bGF0ZSB0aGUg cmVzb3VyY2UgbGltaXRzLgorCSAqIElmIGFueSBvYnNvbGV0ZSBzbG90cyBoYXZlIGJlZW4g aW52YWxpZGF0ZWQsIHJlY2FsY3VsYXRlIHRoZSByZXNvdXJjZQorCSAqIGxpbWl0cy4KIAkg Ki8KLQlpZiAoaW52YWxpZGF0ZWQpCisJaWYgKCF4aWQgJiYgKmJlZW5pbnZhbGlkYXRlZCkK IAl7CiAJCVJlcGxpY2F0aW9uU2xvdHNDb21wdXRlUmVxdWlyZWRYbWluKGZhbHNlKTsKIAkJ UmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTigpOwogCX0KLQotCXJldHVybiBp bnZhbGlkYXRlZDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMK aW5kZXggMDE1YWUyOTk1ZC4uODdhYjQ2NzQ0NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v d2Fsc2VuZGVyLmMKQEAgLTEyNTMsNiArMTI1MywxNCBAQCBTdGFydExvZ2ljYWxSZXBsaWNh dGlvbihTdGFydFJlcGxpY2F0aW9uQ21kICpjbWQpCiAKIAlSZXBsaWNhdGlvblNsb3RBY3F1 aXJlKGNtZC0+c2xvdG5hbWUsIHRydWUpOwogCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS54bWluKQorCQkgJiYgIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRhLmNhdGFsb2dfeG1pbikpCisJCWVyZXBv cnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJ U0lURV9TVEFURSksCisJCQkJIGVycm1zZygiY2Fubm90IHJlYWQgZnJvbSBsb2dpY2FsIHJl cGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwKKwkJCQkJCWNtZC0+c2xvdG5hbWUpLAorCQkJCSBl cnJkZXRhaWwoIlRoaXMgc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCBiZWNhdXNlIGl0IHdh cyBjb25mbGljdGluZyB3aXRoIHJlY292ZXJ5LiIpKSk7CisKIAlpZiAoWExvZ1JlY1B0cklz SW52YWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbikpCiAJCWVyZXBv cnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJ U0lURV9TVEFURSksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9j c2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKaW5kZXgg Mzk1YjJjZjY5MC4uYzg1Y2I1Y2MxOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvcHJvY3NpZ25hbC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2Nz aWduYWwuYwpAQCAtNjczLDYgKzY3Myw5IEBAIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVy KFNJR05BTF9BUkdTKQogCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19SRUNPVkVSWV9D T05GTElDVF9TTkFQU0hPVCkpCiAJCVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJ R19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVCk7CiAKKwlpZiAoQ2hlY2tQcm9jU2lnbmFs KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1QpKQorCQlSZWNvdmVyeUNv bmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1Qp OworCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NU QVJUVVBfREVBRExPQ0spKQogCQlSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdf UkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRVUF9ERUFETE9DSyk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3N0YW5kYnkuYwppbmRleCA5NGNjODYwZjVmLi5kYWJhNzY2OTQ3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKKysrIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvc3RhbmRieS5jCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAidXRp bHMvcHNfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZW91dC5oIgogI2luY2x1ZGUg InV0aWxzL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKIAog LyogVXNlci1zZXR0YWJsZSBHVUMgcGFyYW1ldGVycyAqLwogaW50CQkJdmFjdXVtX2RlZmVy X2NsZWFudXBfYWdlOwpAQCAtNDc1LDYgKzQ3Niw3IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZs aWN0V2l0aFZpcnR1YWxYSURzKFZpcnR1YWxUcmFuc2FjdGlvbklkICp3YWl0bGlzdCwKICAq Lwogdm9pZAogUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rp b25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCWJvb2wgaXNDYXRhbG9n UmVsLAogCQkJCQkJCQkJUmVsRmlsZUxvY2F0b3IgbG9jYXRvcikKIHsKIAlWaXJ0dWFsVHJh bnNhY3Rpb25JZCAqYmFja2VuZHM7CkBAIC01MDAsNiArNTAyLDkgQEAgUmVzb2x2ZVJlY292 ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0 SG9yaXpvbiwKIAkJCQkJCQkJCQkgICBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBT SE9ULAogCQkJCQkJCQkJCSAgIFdBSVRfRVZFTlRfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNI T1QsCiAJCQkJCQkJCQkJICAgdHJ1ZSk7CisKKwlpZiAod2FsX2xldmVsID49IFdBTF9MRVZF TF9MT0dJQ0FMICYmIGlzQ2F0YWxvZ1JlbCkKKwkJSW52YWxpZGF0ZU9ic29sZXRlT3JDb25m bGljdGluZ0xvZ2ljYWxSZXBsaWNhdGlvblNsb3RzKEludmFsaWRYTG9nUmVjUHRyLCBOVUxM LCBsb2NhdG9yLmRiT2lkLCAmc25hcHNob3RDb25mbGljdEhvcml6b24pOwogfQogCiAvKgpA QCAtNTA4LDYgKzUxMyw3IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90 KFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCiAgKi8KIHZvaWQKIFJl c29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90RnVsbFhpZChGdWxsVHJhbnNhY3Rp b25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkgICBib29sIGlzQ2F0 YWxvZ1JlbCwKIAkJCQkJCQkJCQkgICBSZWxGaWxlTG9jYXRvciBsb2NhdG9yKQogewogCS8q CkBAIC01MjYsNyArNTMyLDkgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNo b3RGdWxsWGlkKEZ1bGxUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3IKIAkJVHJh bnNhY3Rpb25JZCB0cnVuY2F0ZWQ7CiAKIAkJdHJ1bmNhdGVkID0gWGlkRnJvbUZ1bGxUcmFu c2FjdGlvbklkKHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uKTsKLQkJUmVzb2x2ZVJlY292ZXJ5 Q29uZmxpY3RXaXRoU25hcHNob3QodHJ1bmNhdGVkLCBsb2NhdG9yKTsKKwkJUmVzb2x2ZVJl Y292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QodHJ1bmNhdGVkLAorCQkJCQkJCQkJCQlpc0Nh dGFsb2dSZWwsCisJCQkJCQkJCQkJCWxvY2F0b3IpOwogCX0KIH0KIApAQCAtMTQ4Nyw2ICsx NDk1LDkgQEAgZ2V0X3JlY292ZXJ5X2NvbmZsaWN0X2Rlc2MoUHJvY1NpZ25hbFJlYXNvbiBy ZWFzb24pCiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVDoKIAkJ CXJlYXNvbkRlc2MgPSBfKCJyZWNvdmVyeSBjb25mbGljdCBvbiBzbmFwc2hvdCIpOwogCQkJ YnJlYWs7CisJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDoK KwkJCXJlYXNvbkRlc2MgPSBfKCJyZWNvdmVyeSBjb25mbGljdCBvbiByZXBsaWNhdGlvbiBz bG90Iik7CisJCQlicmVhazsKIAkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NU QVJUVVBfREVBRExPQ0s6CiAJCQlyZWFzb25EZXNjID0gXygicmVjb3ZlcnkgY29uZmxpY3Qg b24gYnVmZmVyIGRlYWRsb2NrIik7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRl eCAyMjRhYjI5MGFmLi45ZTA2MTQwZjEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29w L3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0yNDgy LDYgKzI0ODIsOSBAQCBlcnJkZXRhaWxfcmVjb3ZlcnlfY29uZmxpY3Qodm9pZCkKIAkJY2Fz ZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UOgogCQkJZXJyZGV0YWlsKCJV c2VyIHF1ZXJ5IG1pZ2h0IGhhdmUgbmVlZGVkIHRvIHNlZSByb3cgdmVyc2lvbnMgdGhhdCBt dXN0IGJlIHJlbW92ZWQuIik7CiAJCQlicmVhazsKKwkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZ X0NPTkZMSUNUX0xPR0lDQUxTTE9UOgorCQkJZXJyZGV0YWlsKCJVc2VyIHdhcyB1c2luZyB0 aGUgbG9naWNhbCBzbG90IHRoYXQgbXVzdCBiZSBkcm9wcGVkLiIpOworCQkJYnJlYWs7CiAJ CWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLOgogCQkJ ZXJyZGV0YWlsKCJVc2VyIHRyYW5zYWN0aW9uIGNhdXNlZCBidWZmZXIgZGVhZGxvY2sgd2l0 aCByZWNvdmVyeS4iKTsKIAkJCWJyZWFrOwpAQCAtMzA1MSw2ICszMDU0LDI3IEBAIFJlY292 ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUHJvY1NpZ25hbFJlYXNvbiByZWFzb24pCiAJCQljYXNl IFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9DSzoKIAkJCWNhc2UgUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVF9UQUJMRVNQQUNFOgogCQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NP TkZMSUNUX1NOQVBTSE9UOgorCQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xP R0lDQUxTTE9UOgorCisJCQkJLyoKKwkJCQkgKiBGb3IgY29uZmxpY3RzIHRoYXQgcmVxdWly ZSBhIGxvZ2ljYWwgc2xvdCB0byBiZQorCQkJCSAqIGludmFsaWRhdGVkLCB0aGUgcmVxdWly ZW1lbnQgaXMgZm9yIHRoZSBzaWduYWwgcmVjZWl2ZXIgdG8KKwkJCQkgKiByZWxlYXNlIHRo ZSBzbG90LCBzbyB0aGF0IGl0IGNvdWxkIGJlIGludmFsaWRhdGVkIGJ5IHRoZQorCQkJCSAq IHNpZ25hbCBzZW5kZXIuIFNvIGZvciBub3JtYWwgYmFja2VuZHMsIHRoZSB0cmFuc2FjdGlv bgorCQkJCSAqIHNob3VsZCBiZSBhYm9ydGVkLCBqdXN0IGxpa2UgZm9yIG90aGVyIHJlY292 ZXJ5IGNvbmZsaWN0cy4KKwkJCQkgKiBCdXQgaWYgaXQncyB3YWxzZW5kZXIgb24gc3RhbmRi eSwgd2UgZG9uJ3Qgd2FudCB0byBnbworCQkJCSAqIHRocm91Z2ggdGhlIGZvbGxvd2luZyBJ c1RyYW5zYWN0aW9uT3JUcmFuc2FjdGlvbkJsb2NrKCkKKwkJCQkgKiBjaGVjaywgc28gYnJl YWsgaGVyZS4KKwkJCQkgKi8KKwkJCQlpZiAoYW1fY2FzY2FkaW5nX3dhbHNlbmRlciAmJgor CQkJCQlyZWFzb24gPT0gUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCAm JgorCQkJCQlNeVJlcGxpY2F0aW9uU2xvdCAmJiBTbG90SXNMb2dpY2FsKE15UmVwbGljYXRp b25TbG90KSkKKwkJCQl7CisJCQkJCVJlY292ZXJ5Q29uZmxpY3RQZW5kaW5nID0gdHJ1ZTsK KwkJCQkJUXVlcnlDYW5jZWxQZW5kaW5nID0gdHJ1ZTsKKwkJCQkJSW50ZXJydXB0UGVuZGlu ZyA9IHRydWU7CisJCQkJCWJyZWFrOworCQkJCX0KIAogCQkJCS8qCiAJCQkJICogSWYgd2Ug YXJlbid0IGluIGEgdHJhbnNhY3Rpb24gYW55IGxvbmdlciB0aGVuIGlnbm9yZS4KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKaW5kZXggNmU2 NTBjZWFhZC4uNzE0OWYyMmY3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvcGdzdGF0X2RhdGFiYXNlLmMKQEAgLTEwOSw2ICsxMDksOSBAQCBwZ3N0YXRfcmVwb3J0 X3JlY292ZXJ5X2NvbmZsaWN0KGludCByZWFzb24pCiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVS WV9DT05GTElDVF9CVUZGRVJQSU46CiAJCQlkYmVudHJ5LT5jb25mbGljdF9idWZmZXJwaW4r KzsKIAkJCWJyZWFrOworCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNB TFNMT1Q6CisJCQlkYmVudHJ5LT5jb25mbGljdF9sb2dpY2Fsc2xvdCsrOworCQkJYnJlYWs7 CiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLOgog CQkJZGJlbnRyeS0+Y29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jaysrOwogCQkJYnJlYWs7CkBA IC0zODcsNiArMzkwLDcgQEAgcGdzdGF0X2RhdGFiYXNlX2ZsdXNoX2NiKFBnU3RhdF9FbnRy eVJlZiAqZW50cnlfcmVmLCBib29sIG5vd2FpdCkKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChj b25mbGljdF90YWJsZXNwYWNlKTsKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChjb25mbGljdF9s b2NrKTsKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChjb25mbGljdF9zbmFwc2hvdCk7CisJUEdT VEFUX0FDQ1VNX0RCQ09VTlQoY29uZmxpY3RfbG9naWNhbHNsb3QpOwogCVBHU1RBVF9BQ0NV TV9EQkNPVU5UKGNvbmZsaWN0X2J1ZmZlcnBpbik7CiAJUEdTVEFUX0FDQ1VNX0RCQ09VTlQo Y29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3Rh dGZ1bmNzLmMKaW5kZXggNmNkZGQ3NGFhNy4uM2NlNjlhNGJiYyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3Bnc3RhdGZ1bmNzLmMKQEAgLTEwNTUsNiArMTA1NSw4IEBAIFBHX1NUQVRfR0VU X0RCRU5UUllfSU5UNjQoeGFjdF9jb21taXQpCiAvKiBwZ19zdGF0X2dldF9kYl94YWN0X3Jv bGxiYWNrICovCiBQR19TVEFUX0dFVF9EQkVOVFJZX0lOVDY0KHhhY3Rfcm9sbGJhY2spCiAK Ky8qIHBnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90ICovCitQR19TVEFUX0dF VF9EQkVOVFJZX0lOVDY0KGNvbmZsaWN0X2xvZ2ljYWxzbG90KQogCiBEYXR1bQogcGdfc3Rh dF9nZXRfZGJfc3RhdF9yZXNldF90aW1lKFBHX0ZVTkNUSU9OX0FSR1MpCkBAIC0xMDg4LDYg KzEwOTAsNyBAQCBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9hbGwoUEdfRlVOQ1RJT05fQVJH UykKIAkJcmVzdWx0ID0gKGludDY0KSAoZGJlbnRyeS0+Y29uZmxpY3RfdGFibGVzcGFjZSAr CiAJCQkJCQkgIGRiZW50cnktPmNvbmZsaWN0X2xvY2sgKwogCQkJCQkJICBkYmVudHJ5LT5j b25mbGljdF9zbmFwc2hvdCArCisJCQkJCQkgIGRiZW50cnktPmNvbmZsaWN0X2xvZ2ljYWxz bG90ICsKIAkJCQkJCSAgZGJlbnRyeS0+Y29uZmxpY3RfYnVmZmVycGluICsKIAkJCQkJCSAg ZGJlbnRyeS0+Y29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0CmluZGV4IDM4MTBkZTdiMjIuLjAxZjRmZmVmOWEgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdApAQCAtNTU1MCw2ICs1NTUwLDExIEBACiAgIHByb25hbWUgPT4gJ3Bn X3N0YXRfZ2V0X2RiX2NvbmZsaWN0X3NuYXBzaG90JywgcHJvdm9sYXRpbGUgPT4gJ3MnLAog ICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBl cyA9PiAnb2lkJywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zbmFw c2hvdCcgfSwKK3sgb2lkID0+ICc5OTAxJywKKyAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IHJl Y292ZXJ5IGNvbmZsaWN0cyBpbiBkYXRhYmFzZSBjYXVzZWQgYnkgbG9naWNhbCByZXBsaWNh dGlvbiBzbG90JywKKyAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9n aWNhbHNsb3QnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3BhcmFsbGVsID0+ICdyJywg cHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAorICBwcm9zcmMg PT4gJ3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90JyB9LAogeyBvaWQgPT4g JzMwNjgnLAogICBkZXNjciA9PiAnc3RhdGlzdGljczogcmVjb3ZlcnkgY29uZmxpY3RzIGlu IGRhdGFiYXNlIGNhdXNlZCBieSBzaGFyZWQgYnVmZmVyIHBpbicsCiAgIHByb25hbWUgPT4g J3BnX3N0YXRfZ2V0X2RiX2NvbmZsaWN0X2J1ZmZlcnBpbicsIHByb3ZvbGF0aWxlID0+ICdz JywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oIGIvc3JjL2luY2x1ZGUvcGdz dGF0LmgKaW5kZXggZDNlOTY1ZDc0NC4uNjRkYzRlOTllZCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcGdzdGF0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKQEAgLTI5MSw2ICsy OTEsNyBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfU3RhdERCRW50cnkKIAlQZ1N0YXRfQ291 bnRlciBjb25mbGljdF90YWJsZXNwYWNlOwogCVBnU3RhdF9Db3VudGVyIGNvbmZsaWN0X2xv Y2s7CiAJUGdTdGF0X0NvdW50ZXIgY29uZmxpY3Rfc25hcHNob3Q7CisJUGdTdGF0X0NvdW50 ZXIgY29uZmxpY3RfbG9naWNhbHNsb3Q7CiAJUGdTdGF0X0NvdW50ZXIgY29uZmxpY3RfYnVm ZmVycGluOwogCVBnU3RhdF9Db3VudGVyIGNvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2s7CiAJ UGdTdGF0X0NvdW50ZXIgdGVtcF9maWxlczsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3Nsb3QuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaAppbmRl eCA4ODcyYzgwY2RmLi5kMzkyYjVlZWM1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9zbG90LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCkBA IC0xNyw2ICsxNyw4IEBACiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAjaW5jbHVkZSAi cmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKIAorI2RlZmluZSBMb2dpY2FsUmVwbGljYXRp b25TbG90SXNJbnZhbGlkKHMpICghVHJhbnNhY3Rpb25JZElzVmFsaWQocy0+ZGF0YS54bWlu KSAmJiBcCisJCQkJCQkJCQkJCSAhVHJhbnNhY3Rpb25JZElzVmFsaWQocy0+ZGF0YS5jYXRh bG9nX3htaW4pKQogLyoKICAqIEJlaGF2aW91ciBvZiByZXBsaWNhdGlvbiBzbG90cywgdXBv biByZWxlYXNlIG9yIGNyYXNoLgogICoKQEAgLTIxNSw3ICsyMTcsNyBAQCBleHRlcm4gdm9p ZCBSZXBsaWNhdGlvblNsb3RzQ29tcHV0ZVJlcXVpcmVkTFNOKHZvaWQpOwogZXh0ZXJuIFhM b2dSZWNQdHIgUmVwbGljYXRpb25TbG90c0NvbXB1dGVMb2dpY2FsUmVzdGFydExTTih2b2lk KTsKIGV4dGVybiBib29sIFJlcGxpY2F0aW9uU2xvdHNDb3VudERCU2xvdHMoT2lkIGRib2lk LCBpbnQgKm5zbG90cywgaW50ICpuYWN0aXZlKTsKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9u U2xvdHNEcm9wREJTbG90cyhPaWQgZGJvaWQpOwotZXh0ZXJuIGJvb2wgSW52YWxpZGF0ZU9i c29sZXRlUmVwbGljYXRpb25TbG90cyhYTG9nU2VnTm8gb2xkZXN0U2Vnbm8pOworZXh0ZXJu IHZvaWQgSW52YWxpZGF0ZU9ic29sZXRlT3JDb25mbGljdGluZ0xvZ2ljYWxSZXBsaWNhdGlv blNsb3RzKFhMb2dTZWdObyBvbGRlc3RTZWdubywgYm9vbCAqYmVlbmludmFsaWRhdGVkLCBP aWQgZGJvaWQsIFRyYW5zYWN0aW9uSWQgKnhpZCk7CiBleHRlcm4gUmVwbGljYXRpb25TbG90 ICpTZWFyY2hOYW1lZFJlcGxpY2F0aW9uU2xvdChjb25zdCBjaGFyICpuYW1lLCBib29sIG5l ZWRfbG9jayk7CiBleHRlcm4gaW50CVJlcGxpY2F0aW9uU2xvdEluZGV4KFJlcGxpY2F0aW9u U2xvdCAqc2xvdCk7CiBleHRlcm4gYm9vbCBSZXBsaWNhdGlvblNsb3ROYW1lKGludCBpbmRl eCwgTmFtZSBuYW1lKTsKQEAgLTIyNyw1ICsyMjksNiBAQCBleHRlcm4gdm9pZCBDaGVja1Bv aW50UmVwbGljYXRpb25TbG90cyh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgQ2hlY2tTbG90UmVx dWlyZW1lbnRzKHZvaWQpOwogZXh0ZXJuIHZvaWQgQ2hlY2tTbG90UGVybWlzc2lvbnModm9p ZCk7CitleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhMb2dpY2FsU2xv dHMoT2lkIGRib2lkLCBUcmFuc2FjdGlvbklkIHhpZCwgY2hhciAqcmVhc29uKTsKIAogI2Vu ZGlmCQkJCQkJCS8qIFNMT1RfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFn ZS9wcm9jc2lnbmFsLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAppbmRl eCA5MDVhZjIyMzFiLi4yZjUyMTAwYjAwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2NzaWduYWwuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwu aApAQCAtNDIsNiArNDIsNyBAQCB0eXBlZGVmIGVudW0KIAlQUk9DU0lHX1JFQ09WRVJZX0NP TkZMSUNUX1RBQkxFU1BBQ0UsCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0NLLAog CVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1QsCisJUFJPQ1NJR19SRUNPVkVS WV9DT05GTElDVF9MT0dJQ0FMU0xPVCwKIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0JV RkZFUlBJTiwKIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVBRExPQ0ss CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5oIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKaW5kZXggMmVmZmRlYTEyNi4uNDFmNGRjMzcyZSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKKysrIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKQEAgLTMwLDggKzMwLDEwIEBAIGV4dGVybiB2b2lk IEluaXRSZWNvdmVyeVRyYW5zYWN0aW9uRW52aXJvbm1lbnQodm9pZCk7CiBleHRlcm4gdm9p ZCBTaHV0ZG93blJlY292ZXJ5VHJhbnNhY3Rpb25FbnZpcm9ubWVudCh2b2lkKTsKIAogZXh0 ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rp b25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJCWJvb2wgaXNDYXRh bG9nUmVsLAogCQkJCQkJCQkJCQkJUmVsRmlsZUxvY2F0b3IgbG9jYXRvcik7CiBleHRlcm4g dm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdEZ1bGxYaWQoRnVsbFRy YW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCQkJICAg Ym9vbCBpc0NhdGFsb2dSZWwsCiAJCQkJCQkJCQkJCQkJICAgUmVsRmlsZUxvY2F0b3IgbG9j YXRvcik7CiBleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhUYWJsZXNw YWNlKE9pZCB0c2lkKTsKIGV4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0 aERhdGFiYXNlKE9pZCBkYmlkKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQK aW5kZXggZmI5ZjkzNmQ0My4uMWNjNjJjNDQ3ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQKQEAgLTE4NjgsNyArMTg2OCw4IEBAIHBnX3N0YXRfZGF0YWJhc2VfY29u ZmxpY3RzfCBTRUxFQ1QgZC5vaWQgQVMgZGF0aWQsCiAgICAgcGdfc3RhdF9nZXRfZGJfY29u ZmxpY3RfbG9jayhkLm9pZCkgQVMgY29uZmxfbG9jaywKICAgICBwZ19zdGF0X2dldF9kYl9j b25mbGljdF9zbmFwc2hvdChkLm9pZCkgQVMgY29uZmxfc25hcHNob3QsCiAgICAgcGdfc3Rh dF9nZXRfZGJfY29uZmxpY3RfYnVmZmVycGluKGQub2lkKSBBUyBjb25mbF9idWZmZXJwaW4s Ci0gICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhkLm9pZCkg QVMgY29uZmxfZGVhZGxvY2sKKyAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zdGFydHVw X2RlYWRsb2NrKGQub2lkKSBBUyBjb25mbF9kZWFkbG9jaywKKyAgICBwZ19zdGF0X2dldF9k Yl9jb25mbGljdF9sb2dpY2Fsc2xvdChkLm9pZCkgQVMgY29uZmxfYWN0aXZlX2xvZ2ljYWxz bG90CiAgICBGUk9NIHBnX2RhdGFiYXNlIGQ7CiBwZ19zdGF0X2dzc2FwaXwgU0VMRUNUIHMu cGlkLAogICAgIHMuZ3NzX2F1dGggQVMgZ3NzX2F1dGhlbnRpY2F0ZWQsCi0tIAoyLjM0LjEK Cg== --------------rNN4FJ950ueQmmYvLj50n8vA Content-Type: text/plain; charset=UTF-8; name="v37-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch" Content-Disposition: attachment; filename*0="v37-0001-Add-info-in-WAL-records-in-preparation-for-logic.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBlMWEyMDA4NTI2ODdlMGE1MmVmM2U1Yzk1N2EzNmFkNTA0NjNiNWZjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogVHVlLCAxMCBKYW4gMjAyMyAwNzo0NDowMCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggdjM3IDEvNl0gQWRkIGluZm8gaW4gV0FMIHJlY29yZHMgaW4gcHJlcGFyYXRpb24gZm9y IGxvZ2ljYWwKIHNsb3QgY29uZmxpY3QgaGFuZGxpbmcuCk1JTUUtVmVyc2lvbjogMS4wCkNv bnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVy LUVuY29kaW5nOiA4Yml0CgpPdmVyYWxsIGRlc2lnbjoKCjEuIFdlIHdhbnQgdG8gZW5hYmxl IGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieXMsIGJ1dCByZXBsYXkgb2YgV0FMCmZyb20g dGhlIHByaW1hcnkgbWlnaHQgcmVtb3ZlIGRhdGEgdGhhdCBpcyBuZWVkZWQgYnkgbG9naWNh bCBkZWNvZGluZywKY2F1c2luZyByZXBsaWNhdGlvbiBjb25mbGljdHMgbXVjaCBhcyBob3Qg c3RhbmRieSBkb2VzLgoKMi4gT3VyIGNob3NlbiBzdHJhdGVneSBmb3IgZGVhbGluZyB3aXRo IHRoaXMgdHlwZSBvZiByZXBsaWNhdGlvbiBzbG90CmlzIHRvIGludmFsaWRhdGUgbG9naWNh bCBzbG90cyBmb3Igd2hpY2ggbmVlZGVkIGRhdGEgaGFzIGJlZW4gcmVtb3ZlZC4KCjMuIFRv IGRvIHRoaXMgd2UgbmVlZCB0aGUgbGF0ZXN0UmVtb3ZlZFhpZCBmb3IgZWFjaCBjaGFuZ2Us IGp1c3QgYXMgd2UKZG8gZm9yIHBoeXNpY2FsIHJlcGxpY2F0aW9uIGNvbmZsaWN0cywgYnV0 IHdlIGFsc28gbmVlZCB0byBrbm93CndoZXRoZXIgYW55IHBhcnRpY3VsYXIgY2hhbmdlIHdh cyB0byBkYXRhIHRoYXQgbG9naWNhbCByZXBsaWNhdGlvbgptaWdodCBhY2Nlc3MuCgo0LiBX ZSBjYW4ndCByZWx5IG9uIHRoZSBzdGFuZGJ5J3MgcmVsY2FjaGUgZW50cmllcyBmb3IgdGhp cyBwdXJwb3NlIGluCmFueSB3YXksIGJlY2F1c2UgdGhlIHN0YXJ0dXAgcHJvY2VzcyBjYW4n dCBhY2Nlc3MgY2F0YWxvZyBjb250ZW50cy4KCjUuIFRoZXJlZm9yZSBldmVyeSBXQUwgcmVj b3JkIHRoYXQgcG90ZW50aWFsbHkgcmVtb3ZlcyBkYXRhIGZyb20gdGhlCmluZGV4IG9yIGhl YXAgbXVzdCBjYXJyeSBhIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCBpdCBpcyBv bmUKdGhhdCBtaWdodCBiZSBhY2Nlc3NlZCBkdXJpbmcgbG9naWNhbCBkZWNvZGluZy4KCldo eSBkbyB3ZSBuZWVkIHRoaXMgZm9yIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieT8KCkZp cnN0LCBsZXQncyBmb3JnZXQgYWJvdXQgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5IGFu ZCByZWNhbGwgdGhhdApvbiBhIHByaW1hcnkgZGF0YWJhc2UsIGFueSBjYXRhbG9nIHJvd3Mg dGhhdCBtYXkgYmUgbmVlZGVkIGJ5IGEgbG9naWNhbApkZWNvZGluZyByZXBsaWNhdGlvbiBz bG90IGFyZSBub3QgcmVtb3ZlZC4KClRoaXMgaXMgZG9uZSB0aGFua3MgdG8gdGhlIGNhdGFs b2dfeG1pbiBhc3NvY2lhdGVkIHdpdGggdGhlIGxvZ2ljYWwKcmVwbGljYXRpb24gc2xvdC4K CkJ1dCwgd2l0aCBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnksIGluIHRoZSBmb2xsb3dp bmcgY2FzZXM6CgotIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGlzIG9mZgotIGhvdF9zdGFuZGJ5 X2ZlZWRiYWNrIGlzIG9uIGJ1dCB0aGVyZSBpcyBubyBhIHBoeXNpY2FsIHNsb3QgYmV0d2Vl bgogIHRoZSBwcmltYXJ5IGFuZCB0aGUgc3RhbmRieS4gVGhlbiwgaG90X3N0YW5kYnlfZmVl ZGJhY2sgd2lsbCB3b3JrLAogIGJ1dCBvbmx5IHdoaWxlIHRoZSBjb25uZWN0aW9uIGlzIGFs aXZlIChmb3IgZXhhbXBsZSBhIG5vZGUgcmVzdGFydAogIHdvdWxkIGJyZWFrIGl0KQoKVGhl biwgdGhlIHByaW1hcnkgbWF5IGRlbGV0ZSBzeXN0ZW0gY2F0YWxvZyByb3dzIHRoYXQgY291 bGQgYmUgbmVlZGVkCmJ5IHRoZSBsb2dpY2FsIGRlY29kaW5nIG9uIHRoZSBzdGFuZGJ5IChh cyBpdCBkb2VzIG5vdCBrbm93IGFib3V0IHRoZQpjYXRhbG9nX3htaW4gb24gdGhlIHN0YW5k YnkpLgoKU28sIGl04oCZcyBtYW5kYXRvcnkgdG8gaWRlbnRpZnkgdGhvc2Ugcm93cyBhbmQg aW52YWxpZGF0ZSB0aGUgc2xvdHMKdGhhdCBtYXkgbmVlZCB0aGVtIGlmIGFueS4gSWRlbnRp ZnlpbmcgdGhvc2Ugcm93cyBpcyB0aGUgcHVycG9zZSBvZgp0aGlzIGNvbW1pdC4KCkltcGxl bWVudGF0aW9uOgoKaGVuIGEgV0FMIHJlcGxheSBvbiBzdGFuZGJ5IGluZGljYXRlcyB0aGF0 IGEgY2F0YWxvZyB0YWJsZSB0dXBsZSBpcwp0byBiZSBkZWxldGVkIGJ5IGFuIHhpZCB0aGF0 IGlzIGdyZWF0ZXIgdGhhbiBhIGxvZ2ljYWwgc2xvdCdzCmNhdGFsb2dfeG1pbiwgdGhlbiB0 aGF0IG1lYW5zIHRoZSBzbG90J3MgY2F0YWxvZ194bWluIGNvbmZsaWN0cyB3aXRoCnRoZSB4 aWQsIGFuZCB3ZSBuZWVkIHRvIGhhbmRsZSB0aGUgY29uZmxpY3QuIFdoaWxlIHN1YnNlcXVl bnQgY29tbWl0cwp3aWxsIGRvIHRoZSBhY3R1YWwgY29uZmxpY3QgaGFuZGxpbmcsIHRoaXMg Y29tbWl0IGFkZHMgYSBuZXcgZmllbGQKaXNDYXRhbG9nUmVsIGluIHN1Y2ggV0FMIHJlY29y ZHMgKGFuZCBhIG5ldyBiaXQgc2V0IGluIHRoZQp4bF9oZWFwX3Zpc2libGUgZmxhZ3MgZmll bGQpLCB0aGF0IGlzIHRydWUgZm9yIGNhdGFsb2cgdGFibGVzLCBzbyBhcyB0bwphcnJhbmdl IGZvciBjb25mbGljdCBoYW5kbGluZy4KCkR1ZSB0byB0aGlzIG5ldyBmaWVsZCBiZWluZyBh ZGRlZCwgeGxfaGFzaF92YWN1dW1fb25lX3BhZ2UgYW5kCmdpc3R4bG9nRGVsZXRlIGRvIG5v dyBjb250YWluIHRoZSBvZmZzZXRzIHRvIGJlIGRlbGV0ZWQgYXMgYQpGTEVYSUJMRV9BUlJB WV9NRU1CRVIuIFRoaXMgaXMgbmVlZGVkIHRvIGVuc3VyZSBjb3JyZWN0IGFsaWduZW1lbnQu Ckl0J3Mgbm90IG5lZWRlZCBvbiB0aGUgb3RoZXJzIHN0cnVjdCB3aGVyZSBpc0NhdGFsb2dS ZWwgaGFzCmJlZW4gYWRkZWQuCgpUbyBpbnRyb2R1Y2UgdGhlIG5ldyBpc0NhdGFsb2dSZWwg ZmllbGQgZm9yIGluZGV4ZXMsIGluZGlzdXNlcmNhdGFsb2cgaGFzCmJlZW4gYWRkZWQgdG8g cGdfaW5kZXguIEl0IGFsbG93cyB1cyB0byBjaGVjayBpZiB0aGVyZSBpcyBhIHJpc2sgb2Yg Y29uZmxpY3QKb24gaW5kZXhlcyAod2l0aG91dCBoYXZpbmcgdG8gdGFibGVfb3BlbigpIHRo ZSBsaW5rZWQgdGFibGUgYW5kIHNvIHByZXZlbnQKYW55IHJpc2sgb2YgZGVhZGxvY2sgb24g aXQuKQoKQXV0aG9yOiBBbmRyZXMgRnJldW5kIChpbiBhbiBvbGRlciB2ZXJzaW9uKSwgQW1p dCBLaGFuZGVrYXIsIEJlcnRyYW5kCkRyb3V2b3QKUmV2aWV3ZWQtQnk6IEJlcnRyYW5kIERy b3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJyaXppbyBkZQpSb3llcyBN ZWxsbwotLS0KIGNvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9kZGwub3V0ICB8IDY1 ICsrKysrKysrKysrKysrKysrKysrKysrKysKIGNvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwv ZGRsLnNxbCAgICAgICB8IDIzICsrKysrKysrKwogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNn bWwgICAgICAgICAgICAgIHwgMTEgKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24v cmVsb3B0aW9ucy5jICB8ICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxv Zy5jICAgICAgfCAxMSArKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9n LmMgICAgIHwgMTIgKystLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQu YyAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICB8 ICA1ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgICAgfCAgMSAr CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgfCAgMyArLQogc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRwYWdlLmMgICAgIHwgIDIgKwogc3JjL2JhY2tl bmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYyAgIHwgIDEgKwogc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jICAgICAgICAgICAgIHwgMTAgKystLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMgICAgICAgIHwgNTUgKysrKysrKysrKysrKysrKysrKystCiBzcmMv aW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaCAgICAgICAgICAgfCAxMSArKystLQogc3JjL2lu Y2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5oICAgICAgICAgIHwgIDggKy0tCiBzcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCAgICAgICAgfCAgOCArLS0KIHNyYy9pbmNsdWRlL2Fj Y2Vzcy9uYnR4bG9nLmggICAgICAgICAgICB8ICA2ICsrLQogc3JjL2luY2x1ZGUvYWNjZXNz L3NwZ3hsb2cuaCAgICAgICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2li aWxpdHltYXBkZWZzLmggIHwgIDkgKystLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19pbmRl eC5oICAgICAgICAgIHwgIDIgKwogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggICAgICAgICAg ICAgICAgIHwgMTQgKysrKystCiAyMiBmaWxlcyBjaGFuZ2VkLCAyMTcgaW5zZXJ0aW9ucygr KSwgNDQgZGVsZXRpb25zKC0pCiAgMjUuNyUgY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVj dGVkLwogIDExLjAlIGNvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvCiAgIDQuMyUgZG9jL3Ny Yy9zZ21sLwogICAzLjclIHNyYy9iYWNrZW5kL2FjY2Vzcy9naXN0LwogICAzLjclIHNyYy9i YWNrZW5kL2FjY2Vzcy9oYXNoLwogICA1LjElIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwLwog IDE0LjklIHNyYy9iYWNrZW5kL2NvbW1hbmRzLwogICA1LjIlIHNyYy9iYWNrZW5kLwogIDIw LjYlIHNyYy9pbmNsdWRlL2FjY2Vzcy8KICAgNC4zJSBzcmMvaW5jbHVkZS91dGlscy8KCmRp ZmYgLS1naXQgYS9jb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvZGRsLm91dCBiL2Nv bnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9kZGwub3V0CmluZGV4IDlhMjhiNWRkYzUu LjQ4ZmI0NGM1NzUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3Rl ZC9kZGwub3V0CisrKyBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9kZGwub3V0 CkBAIC00ODMsNiArNDgzLDcgQEAgQ1JFQVRFIFRBQkxFIHJlcGxpY2F0aW9uX21ldGFkYXRh ICgKICkKIFdJVEggKHVzZXJfY2F0YWxvZ190YWJsZSA9IHRydWUpCiA7CitDUkVBVEUgSU5E RVggcmVwbGljYXRpb25fbWV0YWRhdGFfaWR4MSBvbiByZXBsaWNhdGlvbl9tZXRhZGF0YShy ZWxhdGlvbik7CiBcZCsgcmVwbGljYXRpb25fbWV0YWRhdGEKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicHVibGljLnJlcGxpY2F0 aW9uX21ldGFkYXRhIgogICBDb2x1bW4gIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxh YmxlIHwgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgICAgICAg IHwgU3RvcmFnZSAgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKQEAgLTQ5MiwxMSAr NDkzLDE5IEBAIFdJVEggKHVzZXJfY2F0YWxvZ190YWJsZSA9IHRydWUpCiAgb3B0aW9ucyAg fCB0ZXh0W10gIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBleHRlbmRlZCB8ICAgICAgICAgICAg ICB8IAogSW5kZXhlczoKICAgICAicmVwbGljYXRpb25fbWV0YWRhdGFfcGtleSIgUFJJTUFS WSBLRVksIGJ0cmVlIChpZCkKKyAgICAicmVwbGljYXRpb25fbWV0YWRhdGFfaWR4MSIgYnRy ZWUgKHJlbGF0aW9uKQogT3B0aW9uczogdXNlcl9jYXRhbG9nX3RhYmxlPXRydWUKIAorU0VM RUNUIGJvb2xfYW5kKGluZGlzdXNlcmNhdGFsb2cpIGZyb20gcGdfaW5kZXggd2hlcmUgaW5k cmVsaWQgPSAncmVwbGljYXRpb25fbWV0YWRhdGEnOjpyZWdjbGFzczsKKyBib29sX2FuZCAK Ky0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKIElOU0VSVCBJTlRPIHJlcGxpY2F0aW9uX21l dGFkYXRhKHJlbGF0aW9uLCBvcHRpb25zKQogVkFMVUVTICgnZm9vJywgQVJSQVlbJ2EnLCAn YiddKTsKIEFMVEVSIFRBQkxFIHJlcGxpY2F0aW9uX21ldGFkYXRhIFJFU0VUICh1c2VyX2Nh dGFsb2dfdGFibGUpOworQ1JFQVRFIElOREVYIHJlcGxpY2F0aW9uX21ldGFkYXRhX2lkeDIg b24gcmVwbGljYXRpb25fbWV0YWRhdGEocmVsYXRpb24pOwogXGQrIHJlcGxpY2F0aW9uX21l dGFkYXRhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVGFibGUgInB1YmxpYy5yZXBsaWNhdGlvbl9tZXRhZGF0YSIKICAgQ29sdW1uICB8ICBU eXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgICAgICAgRGVm YXVsdCAgICAgICAgICAgICAgICAgICAgICB8IFN0b3JhZ2UgIHwgU3RhdHMgdGFyZ2V0IHwg RGVzY3JpcHRpb24gCkBAIC01MDYsMTAgKzUxNSwxOSBAQCBBTFRFUiBUQUJMRSByZXBsaWNh dGlvbl9tZXRhZGF0YSBSRVNFVCAodXNlcl9jYXRhbG9nX3RhYmxlKTsKICBvcHRpb25zICB8 IHRleHRbXSAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGV4dGVuZGVkIHwgICAgICAgICAgICAg IHwgCiBJbmRleGVzOgogICAgICJyZXBsaWNhdGlvbl9tZXRhZGF0YV9wa2V5IiBQUklNQVJZ IEtFWSwgYnRyZWUgKGlkKQorICAgICJyZXBsaWNhdGlvbl9tZXRhZGF0YV9pZHgxIiBidHJl ZSAocmVsYXRpb24pCisgICAgInJlcGxpY2F0aW9uX21ldGFkYXRhX2lkeDIiIGJ0cmVlIChy ZWxhdGlvbikKKworU0VMRUNUIGJvb2xfb3IoaW5kaXN1c2VyY2F0YWxvZykgZnJvbSBwZ19p bmRleCB3aGVyZSBpbmRyZWxpZCA9ICdyZXBsaWNhdGlvbl9tZXRhZGF0YSc6OnJlZ2NsYXNz OworIGJvb2xfb3IgCistLS0tLS0tLS0KKyBmCisoMSByb3cpCiAKIElOU0VSVCBJTlRPIHJl cGxpY2F0aW9uX21ldGFkYXRhKHJlbGF0aW9uLCBvcHRpb25zKQogVkFMVUVTICgnYmFyJywg QVJSQVlbJ2EnLCAnYiddKTsKIEFMVEVSIFRBQkxFIHJlcGxpY2F0aW9uX21ldGFkYXRhIFNF VCAodXNlcl9jYXRhbG9nX3RhYmxlID0gdHJ1ZSk7CitDUkVBVEUgSU5ERVggcmVwbGljYXRp b25fbWV0YWRhdGFfaWR4MyBvbiByZXBsaWNhdGlvbl9tZXRhZGF0YShyZWxhdGlvbik7CiBc ZCsgcmVwbGljYXRpb25fbWV0YWRhdGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBUYWJsZSAicHVibGljLnJlcGxpY2F0aW9uX21ldGFkYXRh IgogICBDb2x1bW4gIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAg ICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgICAgICAgIHwgU3RvcmFnZSAg fCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKQEAgLTUxOSwxNSArNTM3LDUyIEBAIEFM VEVSIFRBQkxFIHJlcGxpY2F0aW9uX21ldGFkYXRhIFNFVCAodXNlcl9jYXRhbG9nX3RhYmxl ID0gdHJ1ZSk7CiAgb3B0aW9ucyAgfCB0ZXh0W10gIHwgICAgICAgICAgIHwgICAgICAgICAg fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBl eHRlbmRlZCB8ICAgICAgICAgICAgICB8IAogSW5kZXhlczoKICAgICAicmVwbGljYXRpb25f bWV0YWRhdGFfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVlIChpZCkKKyAgICAicmVwbGljYXRp b25fbWV0YWRhdGFfaWR4MSIgYnRyZWUgKHJlbGF0aW9uKQorICAgICJyZXBsaWNhdGlvbl9t ZXRhZGF0YV9pZHgyIiBidHJlZSAocmVsYXRpb24pCisgICAgInJlcGxpY2F0aW9uX21ldGFk YXRhX2lkeDMiIGJ0cmVlIChyZWxhdGlvbikKIE9wdGlvbnM6IHVzZXJfY2F0YWxvZ190YWJs ZT10cnVlCiAKK1NFTEVDVCBib29sX2FuZChpbmRpc3VzZXJjYXRhbG9nKSBmcm9tIHBnX2lu ZGV4IHdoZXJlIGluZHJlbGlkID0gJ3JlcGxpY2F0aW9uX21ldGFkYXRhJzo6cmVnY2xhc3M7 CisgYm9vbF9hbmQgCistLS0tLS0tLS0tCisgdAorKDEgcm93KQorCiBJTlNFUlQgSU5UTyBy ZXBsaWNhdGlvbl9tZXRhZGF0YShyZWxhdGlvbiwgb3B0aW9ucykKIFZBTFVFUyAoJ2JsdWIn LCBOVUxMKTsKKy0tIEFsc28gY2hlY2tpbmcgdGhhdCBpbmRpc3VzZXJjYXRhbG9nIGlzIHNl dCBjb3JyZWN0bHkgd2hlbiBhIHRhYmxlIGlzIGNyZWF0ZWQgd2l0aCB1c2VyX2NhdGFsb2df dGFibGUgPSBmYWxzZQorQ1JFQVRFIFRBQkxFIHJlcGxpY2F0aW9uX21ldGFkYXRhX2ZhbHNl ICgKKyAgICBpZCBzZXJpYWwgcHJpbWFyeSBrZXksCisgICAgcmVsYXRpb24gbmFtZSBOT1Qg TlVMTCwKKyAgICBvcHRpb25zIHRleHRbXQorKQorV0lUSCAodXNlcl9jYXRhbG9nX3RhYmxl ID0gZmFsc2UpCis7CitDUkVBVEUgSU5ERVggcmVwbGljYXRpb25fbWV0YWRhdGFfZmFsc2Vf aWR4MSBvbiByZXBsaWNhdGlvbl9tZXRhZGF0YV9mYWxzZShyZWxhdGlvbik7CitcZCsgcmVw bGljYXRpb25fbWV0YWRhdGFfZmFsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBUYWJsZSAicHVibGljLnJlcGxpY2F0aW9uX21ldGFkYXRh X2ZhbHNlIgorICBDb2x1bW4gIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwg ICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0ICAgICAgICAgICAgICAgICAgICAgICAg IHwgU3RvcmFnZSAgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tCisgaWQgICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAg IHwgbm90IG51bGwgfCBuZXh0dmFsKCdyZXBsaWNhdGlvbl9tZXRhZGF0YV9mYWxzZV9pZF9z ZXEnOjpyZWdjbGFzcykgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8IAorIHJlbGF0aW9u IHwgbmFtZSAgICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4gICAgfCAgICAg ICAgICAgICAgfCAKKyBvcHRpb25zICB8IHRleHRbXSAgfCAgICAgICAgICAgfCAgICAgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IGV4dGVuZGVkIHwgICAgICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJyZXBs aWNhdGlvbl9tZXRhZGF0YV9mYWxzZV9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGlkKQor ICAgICJyZXBsaWNhdGlvbl9tZXRhZGF0YV9mYWxzZV9pZHgxIiBidHJlZSAocmVsYXRpb24p CitPcHRpb25zOiB1c2VyX2NhdGFsb2dfdGFibGU9ZmFsc2UKKworU0VMRUNUIGJvb2xfb3Io aW5kaXN1c2VyY2F0YWxvZykgZnJvbSBwZ19pbmRleCB3aGVyZSBpbmRyZWxpZCA9ICdyZXBs aWNhdGlvbl9tZXRhZGF0YV9mYWxzZSc6OnJlZ2NsYXNzOworIGJvb2xfb3IgCistLS0tLS0t LS0KKyBmCisoMSByb3cpCisKIC0tIG1ha2Ugc3VyZSByZXdyaXRlcyBkb24ndCB3b3JrCiBB TFRFUiBUQUJMRSByZXBsaWNhdGlvbl9tZXRhZGF0YSBBREQgQ09MVU1OIHJld3JpdGVtZW9y bm90IGludDsKIEFMVEVSIFRBQkxFIHJlcGxpY2F0aW9uX21ldGFkYXRhIEFMVEVSIENPTFVN TiByZXdyaXRlbWVvcm5vdCBUWVBFIHRleHQ7CiBFUlJPUjogIGNhbm5vdCByZXdyaXRlIHRh YmxlICJyZXBsaWNhdGlvbl9tZXRhZGF0YSIgdXNlZCBhcyBhIGNhdGFsb2cgdGFibGUKIEFM VEVSIFRBQkxFIHJlcGxpY2F0aW9uX21ldGFkYXRhIFNFVCAodXNlcl9jYXRhbG9nX3RhYmxl ID0gZmFsc2UpOworQ1JFQVRFIElOREVYIHJlcGxpY2F0aW9uX21ldGFkYXRhX2lkeDQgb24g cmVwbGljYXRpb25fbWV0YWRhdGEocmVsYXRpb24pOwogXGQrIHJlcGxpY2F0aW9uX21ldGFk YXRhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVGFibGUgInB1YmxpYy5yZXBsaWNhdGlvbl9tZXRhZGF0YSIKICAgICAgQ29sdW1uICAg ICB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8ICAgICAgICAgICAgICAgICAg ICAgRGVmYXVsdCAgICAgICAgICAgICAgICAgICAgICB8IFN0b3JhZ2UgIHwgU3RhdHMgdGFy Z2V0IHwgRGVzY3JpcHRpb24gCkBAIC01MzgsOCArNTkzLDE4IEBAIEFMVEVSIFRBQkxFIHJl cGxpY2F0aW9uX21ldGFkYXRhIFNFVCAodXNlcl9jYXRhbG9nX3RhYmxlID0gZmFsc2UpOwog IHJld3JpdGVtZW9ybm90IHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhaW4g ICAgfCAgICAgICAgICAgICAgfCAKIEluZGV4ZXM6CiAgICAgInJlcGxpY2F0aW9uX21ldGFk YXRhX3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAoaWQpCisgICAgInJlcGxpY2F0aW9uX21l dGFkYXRhX2lkeDEiIGJ0cmVlIChyZWxhdGlvbikKKyAgICAicmVwbGljYXRpb25fbWV0YWRh dGFfaWR4MiIgYnRyZWUgKHJlbGF0aW9uKQorICAgICJyZXBsaWNhdGlvbl9tZXRhZGF0YV9p ZHgzIiBidHJlZSAocmVsYXRpb24pCisgICAgInJlcGxpY2F0aW9uX21ldGFkYXRhX2lkeDQi IGJ0cmVlIChyZWxhdGlvbikKIE9wdGlvbnM6IHVzZXJfY2F0YWxvZ190YWJsZT1mYWxzZQog CitTRUxFQ1QgYm9vbF9vcihpbmRpc3VzZXJjYXRhbG9nKSBmcm9tIHBnX2luZGV4IHdoZXJl IGluZHJlbGlkID0gJ3JlcGxpY2F0aW9uX21ldGFkYXRhJzo6cmVnY2xhc3M7CisgYm9vbF9v ciAKKy0tLS0tLS0tLQorIGYKKygxIHJvdykKKwogSU5TRVJUIElOVE8gcmVwbGljYXRpb25f bWV0YWRhdGEocmVsYXRpb24sIG9wdGlvbnMpCiBWQUxVRVMgKCd6YXBob2QnLCBOVUxMKTsK IFNFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNz aW9uX3Nsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0 eS14YWN0cycsICcxJyk7CmRpZmYgLS1naXQgYS9jb250cmliL3Rlc3RfZGVjb2Rpbmcvc3Fs L2RkbC5zcWwgYi9jb250cmliL3Rlc3RfZGVjb2Rpbmcvc3FsL2RkbC5zcWwKaW5kZXggNGY3 NmJlZDcyYy4uNTFiYWFjNWM0ZSAxMDA2NDQKLS0tIGEvY29udHJpYi90ZXN0X2RlY29kaW5n L3NxbC9kZGwuc3FsCisrKyBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvZGRsLnNxbApA QCAtMjc2LDI5ICsyNzYsNTIgQEAgQ1JFQVRFIFRBQkxFIHJlcGxpY2F0aW9uX21ldGFkYXRh ICgKICkKIFdJVEggKHVzZXJfY2F0YWxvZ190YWJsZSA9IHRydWUpCiA7CisKK0NSRUFURSBJ TkRFWCByZXBsaWNhdGlvbl9tZXRhZGF0YV9pZHgxIG9uIHJlcGxpY2F0aW9uX21ldGFkYXRh KHJlbGF0aW9uKTsKKwogXGQrIHJlcGxpY2F0aW9uX21ldGFkYXRhCitTRUxFQ1QgYm9vbF9h bmQoaW5kaXN1c2VyY2F0YWxvZykgZnJvbSBwZ19pbmRleCB3aGVyZSBpbmRyZWxpZCA9ICdy ZXBsaWNhdGlvbl9tZXRhZGF0YSc6OnJlZ2NsYXNzOwogCiBJTlNFUlQgSU5UTyByZXBsaWNh dGlvbl9tZXRhZGF0YShyZWxhdGlvbiwgb3B0aW9ucykKIFZBTFVFUyAoJ2ZvbycsIEFSUkFZ WydhJywgJ2InXSk7CiAKIEFMVEVSIFRBQkxFIHJlcGxpY2F0aW9uX21ldGFkYXRhIFJFU0VU ICh1c2VyX2NhdGFsb2dfdGFibGUpOworQ1JFQVRFIElOREVYIHJlcGxpY2F0aW9uX21ldGFk YXRhX2lkeDIgb24gcmVwbGljYXRpb25fbWV0YWRhdGEocmVsYXRpb24pOwogXGQrIHJlcGxp Y2F0aW9uX21ldGFkYXRhCitTRUxFQ1QgYm9vbF9vcihpbmRpc3VzZXJjYXRhbG9nKSBmcm9t IHBnX2luZGV4IHdoZXJlIGluZHJlbGlkID0gJ3JlcGxpY2F0aW9uX21ldGFkYXRhJzo6cmVn Y2xhc3M7CiAKIElOU0VSVCBJTlRPIHJlcGxpY2F0aW9uX21ldGFkYXRhKHJlbGF0aW9uLCBv cHRpb25zKQogVkFMVUVTICgnYmFyJywgQVJSQVlbJ2EnLCAnYiddKTsKIAogQUxURVIgVEFC TEUgcmVwbGljYXRpb25fbWV0YWRhdGEgU0VUICh1c2VyX2NhdGFsb2dfdGFibGUgPSB0cnVl KTsKK0NSRUFURSBJTkRFWCByZXBsaWNhdGlvbl9tZXRhZGF0YV9pZHgzIG9uIHJlcGxpY2F0 aW9uX21ldGFkYXRhKHJlbGF0aW9uKTsKIFxkKyByZXBsaWNhdGlvbl9tZXRhZGF0YQorU0VM RUNUIGJvb2xfYW5kKGluZGlzdXNlcmNhdGFsb2cpIGZyb20gcGdfaW5kZXggd2hlcmUgaW5k cmVsaWQgPSAncmVwbGljYXRpb25fbWV0YWRhdGEnOjpyZWdjbGFzczsKIAogSU5TRVJUIElO VE8gcmVwbGljYXRpb25fbWV0YWRhdGEocmVsYXRpb24sIG9wdGlvbnMpCiBWQUxVRVMgKCdi bHViJywgTlVMTCk7CiAKKy0tIEFsc28gY2hlY2tpbmcgdGhhdCBpbmRpc3VzZXJjYXRhbG9n IGlzIHNldCBjb3JyZWN0bHkgd2hlbiBhIHRhYmxlIGlzIGNyZWF0ZWQgd2l0aCB1c2VyX2Nh dGFsb2dfdGFibGUgPSBmYWxzZQorQ1JFQVRFIFRBQkxFIHJlcGxpY2F0aW9uX21ldGFkYXRh X2ZhbHNlICgKKyAgICBpZCBzZXJpYWwgcHJpbWFyeSBrZXksCisgICAgcmVsYXRpb24gbmFt ZSBOT1QgTlVMTCwKKyAgICBvcHRpb25zIHRleHRbXQorKQorV0lUSCAodXNlcl9jYXRhbG9n X3RhYmxlID0gZmFsc2UpCis7CisKK0NSRUFURSBJTkRFWCByZXBsaWNhdGlvbl9tZXRhZGF0 YV9mYWxzZV9pZHgxIG9uIHJlcGxpY2F0aW9uX21ldGFkYXRhX2ZhbHNlKHJlbGF0aW9uKTsK K1xkKyByZXBsaWNhdGlvbl9tZXRhZGF0YV9mYWxzZQorU0VMRUNUIGJvb2xfb3IoaW5kaXN1 c2VyY2F0YWxvZykgZnJvbSBwZ19pbmRleCB3aGVyZSBpbmRyZWxpZCA9ICdyZXBsaWNhdGlv bl9tZXRhZGF0YV9mYWxzZSc6OnJlZ2NsYXNzOworCiAtLSBtYWtlIHN1cmUgcmV3cml0ZXMg ZG9uJ3Qgd29yawogQUxURVIgVEFCTEUgcmVwbGljYXRpb25fbWV0YWRhdGEgQUREIENPTFVN TiByZXdyaXRlbWVvcm5vdCBpbnQ7CiBBTFRFUiBUQUJMRSByZXBsaWNhdGlvbl9tZXRhZGF0 YSBBTFRFUiBDT0xVTU4gcmV3cml0ZW1lb3Jub3QgVFlQRSB0ZXh0OwogCiBBTFRFUiBUQUJM RSByZXBsaWNhdGlvbl9tZXRhZGF0YSBTRVQgKHVzZXJfY2F0YWxvZ190YWJsZSA9IGZhbHNl KTsKK0NSRUFURSBJTkRFWCByZXBsaWNhdGlvbl9tZXRhZGF0YV9pZHg0IG9uIHJlcGxpY2F0 aW9uX21ldGFkYXRhKHJlbGF0aW9uKTsKIFxkKyByZXBsaWNhdGlvbl9tZXRhZGF0YQorU0VM RUNUIGJvb2xfb3IoaW5kaXN1c2VyY2F0YWxvZykgZnJvbSBwZ19pbmRleCB3aGVyZSBpbmRy ZWxpZCA9ICdyZXBsaWNhdGlvbl9tZXRhZGF0YSc6OnJlZ2NsYXNzOwogCiBJTlNFUlQgSU5U TyByZXBsaWNhdGlvbl9tZXRhZGF0YShyZWxhdGlvbiwgb3B0aW9ucykKIFZBTFVFUyAoJ3ph cGhvZCcsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCBjMWU0MDQ4MDU0Li4yMjYxNmEw NTc5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtNDQ0Nyw2ICs0NDQ3LDE3IEBAIFNDUkFNLVNI QS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJs ZT46PHJlcGxhY2VhYmxlPiZsCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+ CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5 Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxk PmluZGlzdXNlcmNhdGFsb2c8L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAg ICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgSWYgdHJ1ZSwgdGhlIGluZGV4IGlz IGxpbmtlZCB0byBhIHRhYmxlIHRoYXQgaXMgZGVjbGFyZWQgYXMgYW4gYWRkaXRpb25hbAor ICAgICAgIGNhdGFsb2cgdGFibGUgZm9yIHB1cnBvc2VzIG9mIGxvZ2ljYWwgcmVwbGljYXRp b24gKG1lYW5zIGhhcyA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRldGFibGUiPjxsaXRlcmFs PnVzZXJfY2F0YWxvZ190YWJsZTwvbGl0ZXJhbD48L2xpbms+KQorICAgICAgIHNldCB0byB0 cnVlLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxyb3c+ CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5pbmRpc3JlcGxpZGVu dDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvY29tbW9uL3JlbG9wdGlvbnMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9j b21tb24vcmVsb3B0aW9ucy5jCmluZGV4IDE0YzIzMTAxYWQuLmY1MzY4ZTNhNWIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jCkBAIC0xMjAsNyArMTIwLDcg QEAgc3RhdGljIHJlbG9wdF9ib29sIGJvb2xSZWxPcHRzW10gPQogCQkJUkVMT1BUX0tJTkRf SEVBUCwKIAkJCUFjY2Vzc0V4Y2x1c2l2ZUxvY2sKIAkJfSwKLQkJZmFsc2UKKwkJSEVBUF9E RUZBVUxUX1VTRVJfQ0FUQUxPR19UQUJMRQogCX0sCiAJewogCQl7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2dpc3QvZ2lzdHhsb2cuYwppbmRleCBmNjU4NjQyNTRhLi41OWUzMWZjYzEyIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKQEAgLTE3Nyw2ICsxNzcsNyBAQCBnaXN0UmVk b0RlbGV0ZVJlY29yZChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAlnaXN0eGxvZ0RlbGV0 ZSAqeGxkYXRhID0gKGdpc3R4bG9nRGVsZXRlICopIFhMb2dSZWNHZXREYXRhKHJlY29yZCk7 CiAJQnVmZmVyCQlidWZmZXI7CiAJUGFnZQkJcGFnZTsKKwlPZmZzZXROdW1iZXIgKnRvRGVs ZXRlID0geGxkYXRhLT5vZmZzZXRzOwogCiAJLyoKIAkgKiBJZiB3ZSBoYXZlIGFueSBjb25m bGljdCBwcm9jZXNzaW5nIHRvIGRvLCBpdCBtdXN0IGhhcHBlbiBiZWZvcmUgd2UKQEAgLTIw MywxNCArMjA0LDcgQEAgZ2lzdFJlZG9EZWxldGVSZWNvcmQoWExvZ1JlYWRlclN0YXRlICpy ZWNvcmQpCiAJewogCQlwYWdlID0gKFBhZ2UpIEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAot CQlpZiAoWExvZ1JlY0dldERhdGFMZW4ocmVjb3JkKSA+IFNpemVPZkdpc3R4bG9nRGVsZXRl KQotCQl7Ci0JCQlPZmZzZXROdW1iZXIgKnRvZGVsZXRlOwotCi0JCQl0b2RlbGV0ZSA9IChP ZmZzZXROdW1iZXIgKikgKChjaGFyICopIHhsZGF0YSArIFNpemVPZkdpc3R4bG9nRGVsZXRl KTsKLQotCQkJUGFnZUluZGV4TXVsdGlEZWxldGUocGFnZSwgdG9kZWxldGUsIHhsZGF0YS0+ bnRvZGVsZXRlKTsKLQkJfQorCQlQYWdlSW5kZXhNdWx0aURlbGV0ZShwYWdlLCB0b0RlbGV0 ZSwgeGxkYXRhLT5udG9kZWxldGUpOwogCiAJCUdpc3RDbGVhclBhZ2VIYXNHYXJiYWdlKHBh Z2UpOwogCQlHaXN0TWFya1R1cGxlc0RlbGV0ZWQocGFnZSk7CkBAIC02MDgsNiArNjAyLDcg QEAgZ2lzdFhMb2dQYWdlUmV1c2UoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBibGtubywg RnVsbFRyYW5zYWN0aW9uSWQgZGVsZXRlWGlkKQogCSAqLwogCiAJLyogWExPRyBzdHVmZiAq LworCXhscmVjX3JldXNlLmlzQ2F0YWxvZ1JlbCA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5M b2dpY2FsRGVjb2RpbmcocmVsKTsKIAl4bHJlY19yZXVzZS5sb2NhdG9yID0gcmVsLT5yZF9s b2NhdG9yOwogCXhscmVjX3JldXNlLmJsb2NrID0gYmxrbm87CiAJeGxyZWNfcmV1c2Uuc25h cHNob3RDb25mbGljdEhvcml6b24gPSBkZWxldGVYaWQ7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGFzaC9oYXNoX3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNo L2hhc2hfeGxvZy5jCmluZGV4IGYzOGI0MmVmYjkuLjA4Y2ViOTEyODggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jCkBAIC05ODAsOCArOTgwLDEwIEBAIGhhc2hfeGxv Z192YWN1dW1fb25lX3BhZ2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJUGFnZQkJcGFn ZTsKIAlYTG9nUmVkb0FjdGlvbiBhY3Rpb247CiAJSGFzaFBhZ2VPcGFxdWUgcGFnZW9wYXF1 ZTsKKwlPZmZzZXROdW1iZXIgKnRvRGVsZXRlOwogCiAJeGxkYXRhID0gKHhsX2hhc2hfdmFj dXVtX29uZV9wYWdlICopIFhMb2dSZWNHZXREYXRhKHJlY29yZCk7CisJdG9EZWxldGUgPSB4 bGRhdGEtPm9mZnNldHM7CiAKIAkvKgogCSAqIElmIHdlIGhhdmUgYW55IGNvbmZsaWN0IHBy b2Nlc3NpbmcgdG8gZG8sIGl0IG11c3QgaGFwcGVuIGJlZm9yZSB3ZQpAQCAtMTAxMCwxNSAr MTAxMiw3IEBAIGhhc2hfeGxvZ192YWN1dW1fb25lX3BhZ2UoWExvZ1JlYWRlclN0YXRlICpy ZWNvcmQpCiAJewogCQlwYWdlID0gKFBhZ2UpIEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAot CQlpZiAoWExvZ1JlY0dldERhdGFMZW4ocmVjb3JkKSA+IFNpemVPZkhhc2hWYWN1dW1PbmVQ YWdlKQotCQl7Ci0JCQlPZmZzZXROdW1iZXIgKnVudXNlZDsKLQotCQkJdW51c2VkID0gKE9m ZnNldE51bWJlciAqKSAoKGNoYXIgKikgeGxkYXRhICsgU2l6ZU9mSGFzaFZhY3V1bU9uZVBh Z2UpOwotCi0JCQlQYWdlSW5kZXhNdWx0aURlbGV0ZShwYWdlLCB1bnVzZWQsIHhsZGF0YS0+ bnR1cGxlcyk7Ci0JCX0KLQorCQlQYWdlSW5kZXhNdWx0aURlbGV0ZShwYWdlLCB0b0RlbGV0 ZSwgeGxkYXRhLT5udHVwbGVzKTsKIAkJLyoKIAkJICogTWFyayB0aGUgcGFnZSBhcyBub3Qg Y29udGFpbmluZyBhbnkgTFBfREVBRCBpdGVtcy4gU2VlIGNvbW1lbnRzIGluCiAJCSAqIF9o YXNoX3ZhY3V1bV9vbmVfcGFnZSgpIGZvciBkZXRhaWxzLgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hh c2gvaGFzaGluc2VydC5jCmluZGV4IGE2MDRlMzE4OTEuLjIyNjU2YjI0ZTIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNlcnQuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMKQEAgLTQzMiw2ICs0MzIsNyBAQCBfaGFz aF92YWN1dW1fb25lX3BhZ2UoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBocmVsLCBCdWZmZXIg bWV0YWJ1ZiwgQnVmZmVyIGJ1ZikKIAkJCXhsX2hhc2hfdmFjdXVtX29uZV9wYWdlIHhscmVj OwogCQkJWExvZ1JlY1B0cglyZWNwdHI7CiAKKwkJCXhscmVjLmlzQ2F0YWxvZ1JlbCA9IFJl bGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoaHJlbCk7CiAJCQl4bHJlYy5z bmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwogCQkJ eGxyZWMubnR1cGxlcyA9IG5kZWxldGFibGU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt LmMKaW5kZXggNjNjNGYwMWYwZi4uZDA3MzM5MjNkNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtLmMKQEAgLTY4NzEsNiArNjg3MSw3IEBAIGhlYXBfZnJlZXplX2V4ZWN1dGVfcHJl cGFyZWQoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmZmVyLAogCQlucGxhbnMgPSBoZWFwX3hs b2dfZnJlZXplX3BsYW4odHVwbGVzLCBudHVwbGVzLCBwbGFucywgb2Zmc2V0cyk7CiAKIAkJ eGxyZWMuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBzbmFwc2hvdENvbmZsaWN0SG9yaXpv bjsKKwkJeGxyZWMuaXNDYXRhbG9nUmVsID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2lj YWxEZWNvZGluZyhyZWwpOwogCQl4bHJlYy5ucGxhbnMgPSBucGxhbnM7CiAKIAkJWExvZ0Jl Z2luSW5zZXJ0KCk7CkBAIC04MzAzLDcgKzgzMDQsNyBAQCBib3R0b211cF9zb3J0X2FuZF9z aHJpbmsoVE1fSW5kZXhEZWxldGVPcCAqZGVsc3RhdGUpCiAgKiB1cGRhdGUgdGhlIGhlYXAg cGFnZSdzIExTTi4KICAqLwogWExvZ1JlY1B0cgotbG9nX2hlYXBfdmlzaWJsZShSZWxGaWxl TG9jYXRvciBybG9jYXRvciwgQnVmZmVyIGhlYXBfYnVmZmVyLCBCdWZmZXIgdm1fYnVmZmVy LAorbG9nX2hlYXBfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwg QnVmZmVyIHZtX2J1ZmZlciwKIAkJCQkgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0 SG9yaXpvbiwgdWludDggdm1mbGFncykKIHsKIAl4bF9oZWFwX3Zpc2libGUgeGxyZWM7CkBA IC04MzE1LDYgKzgzMTYsOCBAQCBsb2dfaGVhcF92aXNpYmxlKFJlbEZpbGVMb2NhdG9yIHJs b2NhdG9yLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1ZmZlciB2bV9idWZmZXIsCiAKIAl4bHJl Yy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwog CXhscmVjLmZsYWdzID0gdm1mbGFnczsKKwlpZiAoUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxv Z2ljYWxEZWNvZGluZyhyZWwpKQorCQl4bHJlYy5mbGFncyB8PSBWSVNJQklMSVRZTUFQX0lT X0NBVEFMT0dfUkVMOwogCVhMb2dCZWdpbkluc2VydCgpOwogCVhMb2dSZWdpc3RlckRhdGEo KGNoYXIgKikgJnhscmVjLCBTaXplT2ZIZWFwVmlzaWJsZSk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggNGU2NWNiY2FkZi4uM2YwMzQyMzUxZiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTQxOCw2ICs0MTgsNyBAQCBoZWFw X3BhZ2VfcHJ1bmUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQl4bF9o ZWFwX3BydW5lIHhscmVjOwogCQkJWExvZ1JlY1B0cglyZWNwdHI7CiAKKwkJCXhscmVjLmlz Q2F0YWxvZ1JlbCA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcocmVs YXRpb24pOwogCQkJeGxyZWMuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBwcnN0YXRlLnNu YXBzaG90Q29uZmxpY3RIb3Jpem9uOwogCQkJeGxyZWMubnJlZGlyZWN0ZWQgPSBwcnN0YXRl Lm5yZWRpcmVjdGVkOwogCQkJeGxyZWMubmRlYWQgPSBwcnN0YXRlLm5kZWFkOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCmluZGV4IDFkMWNhNDIzYTkuLjA0 NWM2MWVkYjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxp dHltYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMK QEAgLTI4Myw4ICsyODMsNyBAQCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJs b2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAogCQkJaWYgKFhMb2dSZWNQdHJJ c0ludmFsaWQocmVjcHRyKSkKIAkJCXsKIAkJCQlBc3NlcnQoIUluUmVjb3ZlcnkpOwotCQkJ CXJlY3B0ciA9IGxvZ19oZWFwX3Zpc2libGUocmVsLT5yZF9sb2NhdG9yLCBoZWFwQnVmLCB2 bUJ1ZiwKLQkJCQkJCQkJCQkgIGN1dG9mZl94aWQsIGZsYWdzKTsKKwkJCQlyZWNwdHIgPSBs b2dfaGVhcF92aXNpYmxlKHJlbCwgaGVhcEJ1Ziwgdm1CdWYsIGN1dG9mZl94aWQsIGZsYWdz KTsKIAogCQkJCS8qCiAJCQkJICogSWYgZGF0YSBjaGVja3N1bXMgYXJlIGVuYWJsZWQgKG9y IHdhbF9sb2dfaGludHM9b24pLCB3ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L25idHJlZS9uYnRwYWdlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2Uu YwppbmRleCAzZmVlZTI4ZDE5Li5lZGM0ZmU4NjZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0 cmVlL25idHBhZ2UuYwpAQCAtODM2LDYgKzgzNiw3IEBAIF9idF9sb2dfcmV1c2VfcGFnZShS ZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBGdWxsVHJhbnNhY3Rpb25JZCBzYWZl eGlkKQogCSAqLwogCiAJLyogWExPRyBzdHVmZiAqLworCXhscmVjX3JldXNlLmlzQ2F0YWxv Z1JlbCA9IFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcocmVsKTsKIAl4 bHJlY19yZXVzZS5sb2NhdG9yID0gcmVsLT5yZF9sb2NhdG9yOwogCXhscmVjX3JldXNlLmJs b2NrID0gYmxrbm87CiAJeGxyZWNfcmV1c2Uuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBz YWZleGlkOwpAQCAtMTM1OCw2ICsxMzU5LDcgQEAgX2J0X2RlbGl0ZW1zX2RlbGV0ZShSZWxh dGlvbiByZWwsIEJ1ZmZlciBidWYsCiAJCVhMb2dSZWNQdHIJcmVjcHRyOwogCQl4bF9idHJl ZV9kZWxldGUgeGxyZWNfZGVsZXRlOwogCisJCXhscmVjX2RlbGV0ZS5pc0NhdGFsb2dSZWwg PSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKHJlbCk7CiAJCXhscmVj X2RlbGV0ZS5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNuYXBzaG90Q29uZmxpY3RIb3Jp em9uOwogCQl4bHJlY19kZWxldGUubmRlbGV0ZWQgPSBuZGVsZXRhYmxlOwogCQl4bHJlY19k ZWxldGUubnVwZGF0ZWQgPSBudXBkYXRhYmxlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qv c3BndmFjdXVtLmMKaW5kZXggM2FkYjE4ZjJkOC4uYWZkOTI3NWExMCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCkBAIC01MDMsNiArNTAzLDcgQEAgdmFjdXVt UmVkaXJlY3RBbmRQbGFjZWhvbGRlcihSZWxhdGlvbiBpbmRleCwgQnVmZmVyIGJ1ZmZlcikK IAlzcGd4bG9nVmFjdXVtUmVkaXJlY3QgeGxyZWM7CiAJR2xvYmFsVmlzU3RhdGUgKnZpc3Rl c3Q7CiAKKwl4bHJlYy5pc0NhdGFsb2dSZWwgPSBSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9n aWNhbERlY29kaW5nKGluZGV4KTsKIAl4bHJlYy5uVG9QbGFjZWhvbGRlciA9IDA7CiAJeGxy ZWMuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9pbmRleC5jCmluZGV4IGU2NTc5ZjI5NzkuLmEwMzg0MDBmZTEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL2luZGV4LmMKQEAgLTEyMyw3ICsxMjMsOCBAQCBzdGF0aWMgdm9pZCBVcGRhdGVJbmRl eFJlbGF0aW9uKE9pZCBpbmRleG9pZCwgT2lkIGhlYXBvaWQsCiAJCQkJCQkJCWJvb2wgaXNl eGNsdXNpb24sCiAJCQkJCQkJCWJvb2wgaW1tZWRpYXRlLAogCQkJCQkJCQlib29sIGlzdmFs aWQsCi0JCQkJCQkJCWJvb2wgaXNyZWFkeSk7CisJCQkJCQkJCWJvb2wgaXNyZWFkeSwKKwkJ CQkJCQkJYm9vbCBpc191c2VyX2NhdGFsb2cpOwogc3RhdGljIHZvaWQgaW5kZXhfdXBkYXRl X3N0YXRzKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkgICBib29sIGhhc2luZGV4LAogCQkJCQkJ CSAgIGRvdWJsZSByZWx0dXBsZXMpOwpAQCAtNTQ1LDcgKzU0Niw4IEBAIFVwZGF0ZUluZGV4 UmVsYXRpb24oT2lkIGluZGV4b2lkLAogCQkJCQlib29sIGlzZXhjbHVzaW9uLAogCQkJCQli b29sIGltbWVkaWF0ZSwKIAkJCQkJYm9vbCBpc3ZhbGlkLAotCQkJCQlib29sIGlzcmVhZHkp CisJCQkJCWJvb2wgaXNyZWFkeSwKKwkJCQkJYm9vbCBpc191c2VyX2NhdGFsb2cpCiB7CiAJ aW50MnZlY3RvciAqaW5ka2V5OwogCW9pZHZlY3RvciAgKmluZGNvbGxhdGlvbjsKQEAgLTYy Miw2ICs2MjQsNyBAQCBVcGRhdGVJbmRleFJlbGF0aW9uKE9pZCBpbmRleG9pZCwKIAl2YWx1 ZXNbQW51bV9wZ19pbmRleF9pbmRjaGVja3htaW4gLSAxXSA9IEJvb2xHZXREYXR1bShmYWxz ZSk7CiAJdmFsdWVzW0FudW1fcGdfaW5kZXhfaW5kaXNyZWFkeSAtIDFdID0gQm9vbEdldERh dHVtKGlzcmVhZHkpOwogCXZhbHVlc1tBbnVtX3BnX2luZGV4X2luZGlzbGl2ZSAtIDFdID0g Qm9vbEdldERhdHVtKHRydWUpOworCXZhbHVlc1tBbnVtX3BnX2luZGV4X2luZGlzdXNlcmNh dGFsb2cgLSAxXSA9IEJvb2xHZXREYXR1bShpc191c2VyX2NhdGFsb2cpOwogCXZhbHVlc1tB bnVtX3BnX2luZGV4X2luZGlzcmVwbGlkZW50IC0gMV0gPSBCb29sR2V0RGF0dW0oZmFsc2Up OwogCXZhbHVlc1tBbnVtX3BnX2luZGV4X2luZGtleSAtIDFdID0gUG9pbnRlckdldERhdHVt KGluZGtleSk7CiAJdmFsdWVzW0FudW1fcGdfaW5kZXhfaW5kY29sbGF0aW9uIC0gMV0gPSBQ b2ludGVyR2V0RGF0dW0oaW5kY29sbGF0aW9uKTsKQEAgLTEwMjAsNyArMTAyMyw4IEBAIGlu ZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQlpc3ByaW1hcnksIGlz X2V4Y2x1c2lvbiwKIAkJCQkJCShjb25zdHJfZmxhZ3MgJiBJTkRFWF9DT05TVFJfQ1JFQVRF X0RFRkVSUkFCTEUpID09IDAsCiAJCQkJCQkhY29uY3VycmVudCAmJiAhaW52YWxpZCwKLQkJ CQkJCSFjb25jdXJyZW50KTsKKwkJCQkJCSFjb25jdXJyZW50LAorCQkJCQkJUmVsYXRpb25J c1VzZWRBc0NhdGFsb2dUYWJsZShoZWFwUmVsYXRpb24pKTsKIAogCS8qCiAJICogUmVnaXN0 ZXIgcmVsY2FjaGUgaW52YWxpZGF0aW9uIG9uIHRoZSBpbmRleGVzJyBoZWFwIHJlbGF0aW9u LCB0bwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCAxZGIzYmQ5ZTJlLi4wOTI3 NDlkMTAzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMTAzLDYgKzEwMyw3 IEBACiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90aW1l c3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxz L3JlbC5oIgogCiAvKgogICogT04gQ09NTUlUIGFjdGlvbiBsaXN0CkBAIC0xNDE0OCw2ICsx NDE0OSwxMCBAQCBBVEV4ZWNTZXRSZWxPcHRpb25zKFJlbGF0aW9uIHJlbCwgTGlzdCAqZGVm TGlzdCwgQWx0ZXJUYWJsZVR5cGUgb3BlcmF0aW9uLAogCURhdHVtCQlyZXBsX3ZhbFtOYXR0 c19wZ19jbGFzc107CiAJYm9vbAkJcmVwbF9udWxsW05hdHRzX3BnX2NsYXNzXTsKIAlib29s CQlyZXBsX3JlcGxbTmF0dHNfcGdfY2xhc3NdOworCUxpc3RDZWxsICAgKmNlbGw7CisJTGlz dAkgICAqcmVsX29wdGlvbnM7CisJYm9vbAkJY2F0YWxvZ190YWJsZV92YWwgPSBIRUFQX0RF RkFVTFRfVVNFUl9DQVRBTE9HX1RBQkxFOworCWJvb2wJCWNhdGFsb2dfdGFibGUgPSBmYWxz ZTsKIAlzdGF0aWMgY2hhciAqdmFsaWRuc3BzW10gPSBIRUFQX1JFTE9QVF9OQU1FU1BBQ0VT OwogCiAJaWYgKGRlZkxpc3QgPT0gTklMICYmIG9wZXJhdGlvbiAhPSBBVF9SZXBsYWNlUmVs T3B0aW9ucykKQEAgLTE0MjE0LDcgKzE0MjE5LDYgQEAgQVRFeGVjU2V0UmVsT3B0aW9ucyhS ZWxhdGlvbiByZWwsIExpc3QgKmRlZkxpc3QsIEFsdGVyVGFibGVUeXBlIG9wZXJhdGlvbiwK IAl7CiAJCVF1ZXJ5CSAgICp2aWV3X3F1ZXJ5ID0gZ2V0X3ZpZXdfcXVlcnkocmVsKTsKIAkJ TGlzdAkgICAqdmlld19vcHRpb25zID0gdW50cmFuc2Zvcm1SZWxPcHRpb25zKG5ld09wdGlv bnMpOwotCQlMaXN0Q2VsbCAgICpjZWxsOwogCQlib29sCQljaGVja19vcHRpb24gPSBmYWxz ZTsKIAogCQlmb3JlYWNoKGNlbGwsIHZpZXdfb3B0aW9ucykKQEAgLTE0MjQyLDYgKzE0MjQ2 LDIwIEBAIEFURXhlY1NldFJlbE9wdGlvbnMoUmVsYXRpb24gcmVsLCBMaXN0ICpkZWZMaXN0 LCBBbHRlclRhYmxlVHlwZSBvcGVyYXRpb24sCiAJCX0KIAl9CiAKKwkvKiBJZiB1c2VyX2Nh dGFsb2dfdGFibGUgaXMgcGFydCBvZiB0aGUgbmV3IG9wdGlvbnMsIHJlY29yZCBpdHMgbmV3 IHZhbHVlICovCisJcmVsX29wdGlvbnMgPSB1bnRyYW5zZm9ybVJlbE9wdGlvbnMobmV3T3B0 aW9ucyk7CisKKwlmb3JlYWNoKGNlbGwsIHJlbF9vcHRpb25zKQorCXsKKwkJRGVmRWxlbSAg ICAqZGVmZWwgPSAoRGVmRWxlbSAqKSBsZmlyc3QoY2VsbCk7CisKKwkJaWYgKHN0cmNtcChk ZWZlbC0+ZGVmbmFtZSwgInVzZXJfY2F0YWxvZ190YWJsZSIpID09IDApCisJCXsKKwkJCWNh dGFsb2dfdGFibGUgPSB0cnVlOworCQkJY2F0YWxvZ190YWJsZV92YWwgPSBkZWZHZXRCb29s ZWFuKGRlZmVsKTsKKwkJfQorCX0KKwogCS8qCiAJICogQWxsIHdlIG5lZWQgZG8gaGVyZSBp cyB1cGRhdGUgdGhlIHBnX2NsYXNzIHJvdzsgdGhlIG5ldyBvcHRpb25zIHdpbGwgYmUKIAkg KiBwcm9wYWdhdGVkIGludG8gcmVsY2FjaGVzIGR1cmluZyBwb3N0LWNvbW1pdCBjYWNoZSBp bnZhbC4KQEAgLTE0MjY4LDYgKzE0Mjg2LDQxIEBAIEFURXhlY1NldFJlbE9wdGlvbnMoUmVs YXRpb24gcmVsLCBMaXN0ICpkZWZMaXN0LCBBbHRlclRhYmxlVHlwZSBvcGVyYXRpb24sCiAK IAlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOwogCisJLyogVXBkYXRlIHRoZSBpbmRleGVzIGlm IHRoZXJlIGlzIGEgbmVlZCB0byAqLworCWlmIChjYXRhbG9nX3RhYmxlIHx8IG9wZXJhdGlv biA9PSBBVF9SZXNldFJlbE9wdGlvbnMpCisJeworCQlSZWxhdGlvbglwZ19pbmRleDsKKwkJ SGVhcFR1cGxlCXBnX2luZGV4X3R1cGxlOworCQlGb3JtX3BnX2luZGV4IHBnX2luZGV4X2Zv cm07CisJCUxpc3RDZWxsICAgKmluZGV4OworCisJCXBnX2luZGV4ID0gdGFibGVfb3BlbihJ bmRleFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJCWZvcmVhY2goaW5kZXgs IFJlbGF0aW9uR2V0SW5kZXhMaXN0KHJlbCkpCisJCXsKKwkJCU9pZAkJCXRoaXNJbmRleE9p ZCA9IGxmaXJzdF9vaWQoaW5kZXgpOworCisJCQlwZ19pbmRleF90dXBsZSA9IFNlYXJjaFN5 c0NhY2hlQ29weTEoSU5ERVhSRUxJRCwKKwkJCQkJCQkJCQkJCSBPYmplY3RJZEdldERhdHVt KHRoaXNJbmRleE9pZCkpOworCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHBnX2luZGV4X3R1 cGxlKSkKKwkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgaW5kZXgg JXUiLCB0aGlzSW5kZXhPaWQpOworCQkJcGdfaW5kZXhfZm9ybSA9IChGb3JtX3BnX2luZGV4 KSBHRVRTVFJVQ1QocGdfaW5kZXhfdHVwbGUpOworCisJCQkvKiBNb2RpZnkgdGhlIGluZGV4 IG9ubHkgaWYgdXNlcl9jYXRhbG9nX3RhYmxlIGRpZmZlciAqLworCQkJaWYgKGNhdGFsb2df dGFibGVfdmFsICE9IHBnX2luZGV4X2Zvcm0tPmluZGlzdXNlcmNhdGFsb2cpCisJCQl7CisJ CQkJcGdfaW5kZXhfZm9ybS0+aW5kaXN1c2VyY2F0YWxvZyA9IGNhdGFsb2dfdGFibGVfdmFs OworCQkJCUNhdGFsb2dUdXBsZVVwZGF0ZShwZ19pbmRleCwgJnBnX2luZGV4X3R1cGxlLT50 X3NlbGYsIHBnX2luZGV4X3R1cGxlKTsKKwkJCQlJbnZva2VPYmplY3RQb3N0QWx0ZXJIb29r QXJnKEluZGV4UmVsYXRpb25JZCwgdGhpc0luZGV4T2lkLCAwLAorCQkJCQkJCQkJCQkgSW52 YWxpZE9pZCwgdHJ1ZSk7CisJCQl9CisKKwkJCWhlYXBfZnJlZXR1cGxlKHBnX2luZGV4X3R1 cGxlKTsKKwkJfQorCisJCXRhYmxlX2Nsb3NlKHBnX2luZGV4LCBSb3dFeGNsdXNpdmVMb2Nr KTsKKwl9CisKIAkvKiByZXBlYXQgdGhlIHdob2xlIGV4ZXJjaXNlIGZvciB0aGUgdG9hc3Qg dGFibGUsIGlmIHRoZXJlJ3Mgb25lICovCiAJaWYgKE9pZElzVmFsaWQocmVsLT5yZF9yZWwt PnJlbHRvYXN0cmVsaWQpKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9n aXN0eGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmgKaW5kZXggMDlmOWIw ZjhjNi4uMTkxZjBlNTgwOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4 bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmgKQEAgLTUxLDEzICs1 MSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBnaXN0eGxvZ0RlbGV0ZQogewogCVRyYW5zYWN0aW9u SWQgc25hcHNob3RDb25mbGljdEhvcml6b247CiAJdWludDE2CQludG9kZWxldGU7CQkvKiBu dW1iZXIgb2YgZGVsZXRlZCBvZmZzZXRzICovCisJYm9vbCAgICAgICAgaXNDYXRhbG9nUmVs OwogCi0JLyoKLQkgKiBJbiBwYXlsb2FkIG9mIGJsayAwIDogdG9kZWxldGUgT2Zmc2V0TnVt YmVycwotCSAqLworCS8qIFRPREVMRVRFIE9GRlNFVCBOVU1CRVJTICovCisJT2Zmc2V0TnVt YmVyIG9mZnNldHNbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKIH0gZ2lzdHhsb2dEZWxldGU7 CiAKLSNkZWZpbmUgU2l6ZU9mR2lzdHhsb2dEZWxldGUJKG9mZnNldG9mKGdpc3R4bG9nRGVs ZXRlLCBudG9kZWxldGUpICsgc2l6ZW9mKHVpbnQxNikpCisjZGVmaW5lIFNpemVPZkdpc3R4 bG9nRGVsZXRlIG9mZnNldG9mKGdpc3R4bG9nRGVsZXRlLCBvZmZzZXRzKQogCiAvKgogICog QmFja3VwIEJsayAwOiBJZiB0aGlzIG9wZXJhdGlvbiBjb21wbGV0ZXMgYSBwYWdlIHNwbGl0 LCBieSBpbnNlcnRpbmcgYQpAQCAtMTAwLDkgKzEwMCwxMCBAQCB0eXBlZGVmIHN0cnVjdCBn aXN0eGxvZ1BhZ2VSZXVzZQogCVJlbEZpbGVMb2NhdG9yIGxvY2F0b3I7CiAJQmxvY2tOdW1i ZXIgYmxvY2s7CiAJRnVsbFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b247 CisJYm9vbCAgICAgICAgaXNDYXRhbG9nUmVsOwogfSBnaXN0eGxvZ1BhZ2VSZXVzZTsKIAot I2RlZmluZSBTaXplT2ZHaXN0eGxvZ1BhZ2VSZXVzZQkob2Zmc2V0b2YoZ2lzdHhsb2dQYWdl UmV1c2UsIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uKSArIHNpemVvZihGdWxsVHJhbnNhY3Rp b25JZCkpCisjZGVmaW5lIFNpemVPZkdpc3R4bG9nUGFnZVJldXNlCShvZmZzZXRvZihnaXN0 eGxvZ1BhZ2VSZXVzZSwgaXNDYXRhbG9nUmVsKSArIHNpemVvZihib29sKSkKIAogZXh0ZXJu IHZvaWQgZ2lzdF9yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKIGV4dGVybiB2b2lk IGdpc3RfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2hhc2hfeGxvZy5oCmluZGV4IGEyZjBmMzkyMTMuLjRhNzllMGMwYTQgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoX3hsb2cuaAorKysgYi9zcmMvaW5j bHVkZS9hY2Nlc3MvaGFzaF94bG9nLmgKQEAgLTI1MiwxMiArMjUyLDEyIEBAIHR5cGVkZWYg c3RydWN0IHhsX2hhc2hfdmFjdXVtX29uZV9wYWdlCiB7CiAJVHJhbnNhY3Rpb25JZCBzbmFw c2hvdENvbmZsaWN0SG9yaXpvbjsKIAlpbnQJCQludHVwbGVzOwotCi0JLyogVEFSR0VUIE9G RlNFVCBOVU1CRVJTIEZPTExPVyBBVCBUSEUgRU5EICovCisJYm9vbCAgICAgICAgaXNDYXRh bG9nUmVsOworCS8qIFRBUkdFVCBPRkZTRVQgTlVNQkVSUyAqLworCU9mZnNldE51bWJlciBv ZmZzZXRzW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07CiB9IHhsX2hhc2hfdmFjdXVtX29uZV9w YWdlOwogCi0jZGVmaW5lIFNpemVPZkhhc2hWYWN1dW1PbmVQYWdlIFwKLQkob2Zmc2V0b2Yo eGxfaGFzaF92YWN1dW1fb25lX3BhZ2UsIG50dXBsZXMpICsgc2l6ZW9mKGludCkpCisjZGVm aW5lIFNpemVPZkhhc2hWYWN1dW1PbmVQYWdlIG9mZnNldG9mKHhsX2hhc2hfdmFjdXVtX29u ZV9wYWdlLCBvZmZzZXRzKQogCiBleHRlcm4gdm9pZCBoYXNoX3JlZG8oWExvZ1JlYWRlclN0 YXRlICpyZWNvcmQpOwogZXh0ZXJuIHZvaWQgaGFzaF9kZXNjKFN0cmluZ0luZm8gYnVmLCBY TG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtX3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCmlu ZGV4IDhjYjBkOGRhMTkuLjFkNDMxODFhNDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW1feGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxv Zy5oCkBAIC0yNDUsMTAgKzI0NSwxMSBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3BydW5l CiAJVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKIAl1aW50MTYJCW5y ZWRpcmVjdGVkOwogCXVpbnQxNgkJbmRlYWQ7CisJYm9vbCAgICAgICAgaXNDYXRhbG9nUmVs OwogCS8qIE9GRlNFVCBOVU1CRVJTIGFyZSBpbiB0aGUgYmxvY2sgcmVmZXJlbmNlIDAgKi8K IH0geGxfaGVhcF9wcnVuZTsKIAotI2RlZmluZSBTaXplT2ZIZWFwUHJ1bmUgKG9mZnNldG9m KHhsX2hlYXBfcHJ1bmUsIG5kZWFkKSArIHNpemVvZih1aW50MTYpKQorI2RlZmluZSBTaXpl T2ZIZWFwUHJ1bmUgKG9mZnNldG9mKHhsX2hlYXBfcHJ1bmUsIGlzQ2F0YWxvZ1JlbCkgKyBz aXplb2YoYm9vbCkpCiAKIC8qCiAgKiBUaGUgdmFjdXVtIHBhZ2UgcmVjb3JkIGlzIHNpbWls YXIgdG8gdGhlIHBydW5lIHJlY29yZCwgYnV0IGNhbiBvbmx5IG1hcmsKQEAgLTM0NCwxMiAr MzQ1LDEzIEBAIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfZnJlZXplX3BhZ2UKIHsKIAlUcmFu c2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwogCXVpbnQxNgkJbnBsYW5zOwor CWJvb2wgICAgICAgIGlzQ2F0YWxvZ1JlbDsKIAogCS8qIEZSRUVaRSBQTEFOUyBGT0xMT1cg Ki8KIAkvKiBPRkZTRVQgTlVNQkVSIEFSUkFZIEZPTExPV1MgKi8KIH0geGxfaGVhcF9mcmVl emVfcGFnZTsKIAotI2RlZmluZSBTaXplT2ZIZWFwRnJlZXplUGFnZSAob2Zmc2V0b2YoeGxf aGVhcF9mcmVlemVfcGFnZSwgbnBsYW5zKSArIHNpemVvZih1aW50MTYpKQorI2RlZmluZSBT aXplT2ZIZWFwRnJlZXplUGFnZSAob2Zmc2V0b2YoeGxfaGVhcF9mcmVlemVfcGFnZSwgaXND YXRhbG9nUmVsKSArIHNpemVvZihib29sKSkKIAogLyoKICAqIFRoaXMgaXMgd2hhdCB3ZSBu ZWVkIHRvIGtub3cgYWJvdXQgc2V0dGluZyBhIHZpc2liaWxpdHkgbWFwIGJpdApAQCAtNDA4 LDcgKzQxMCw3IEBAIGV4dGVybiB2b2lkIGhlYXAyX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhM b2dSZWFkZXJTdGF0ZSAqcmVjb3JkKTsKIGV4dGVybiBjb25zdCBjaGFyICpoZWFwMl9pZGVu dGlmeSh1aW50OCBpbmZvKTsKIGV4dGVybiB2b2lkIGhlYXBfeGxvZ19sb2dpY2FsX3Jld3Jp dGUoWExvZ1JlYWRlclN0YXRlICpyKTsKIAotZXh0ZXJuIFhMb2dSZWNQdHIgbG9nX2hlYXBf dmlzaWJsZShSZWxGaWxlTG9jYXRvciBybG9jYXRvciwgQnVmZmVyIGhlYXBfYnVmZmVyLAor ZXh0ZXJuIFhMb2dSZWNQdHIgbG9nX2hlYXBfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZl ciBoZWFwX2J1ZmZlciwKIAkJCQkJCQkJICAgQnVmZmVyIHZtX2J1ZmZlciwKIAkJCQkJCQkJ ICAgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKIAkJCQkJCQkJICAg dWludDggdm1mbGFncyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxv Zy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25idHhsb2cuaAppbmRleCBlZGQxMzMzZDliLi45 OWQ4N2Q3MTg5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oCisr KyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4bG9nLmgKQEAgLTE4OCw5ICsxODgsMTAgQEAg dHlwZWRlZiBzdHJ1Y3QgeGxfYnRyZWVfcmV1c2VfcGFnZQogCVJlbEZpbGVMb2NhdG9yIGxv Y2F0b3I7CiAJQmxvY2tOdW1iZXIgYmxvY2s7CiAJRnVsbFRyYW5zYWN0aW9uSWQgc25hcHNo b3RDb25mbGljdEhvcml6b247CisJYm9vbCAgICAgICAgaXNDYXRhbG9nUmVsOwogfSB4bF9i dHJlZV9yZXVzZV9wYWdlOwogCi0jZGVmaW5lIFNpemVPZkJ0cmVlUmV1c2VQYWdlCShzaXpl b2YoeGxfYnRyZWVfcmV1c2VfcGFnZSkpCisjZGVmaW5lIFNpemVPZkJ0cmVlUmV1c2VQYWdl CShvZmZzZXRvZih4bF9idHJlZV9yZXVzZV9wYWdlLCBpc0NhdGFsb2dSZWwpICsgc2l6ZW9m KGJvb2wpKQogCiAvKgogICogeGxfYnRyZWVfdmFjdXVtIGFuZCB4bF9idHJlZV9kZWxldGUg cmVjb3JkcyBkZXNjcmliZSBkZWxldGlvbiBvZiBpbmRleApAQCAtMjM1LDEzICsyMzYsMTQg QEAgdHlwZWRlZiBzdHJ1Y3QgeGxfYnRyZWVfZGVsZXRlCiAJVHJhbnNhY3Rpb25JZCBzbmFw c2hvdENvbmZsaWN0SG9yaXpvbjsKIAl1aW50MTYJCW5kZWxldGVkOwogCXVpbnQxNgkJbnVw ZGF0ZWQ7CisJYm9vbCAgICAgICAgaXNDYXRhbG9nUmVsOwogCiAJLyogREVMRVRFRCBUQVJH RVQgT0ZGU0VUIE5VTUJFUlMgRk9MTE9XICovCiAJLyogVVBEQVRFRCBUQVJHRVQgT0ZGU0VU IE5VTUJFUlMgRk9MTE9XICovCiAJLyogVVBEQVRFRCBUVVBMRVMgTUVUQURBVEEgKHhsX2J0 cmVlX3VwZGF0ZSkgQVJSQVkgRk9MTE9XUyAqLwogfSB4bF9idHJlZV9kZWxldGU7CiAKLSNk ZWZpbmUgU2l6ZU9mQnRyZWVEZWxldGUJKG9mZnNldG9mKHhsX2J0cmVlX2RlbGV0ZSwgbnVw ZGF0ZWQpICsgc2l6ZW9mKHVpbnQxNikpCisjZGVmaW5lIFNpemVPZkJ0cmVlRGVsZXRlCShv ZmZzZXRvZih4bF9idHJlZV9kZWxldGUsIGlzQ2F0YWxvZ1JlbCkgKyBzaXplb2YoYm9vbCkp CiAKIC8qCiAgKiBUaGUgb2Zmc2V0cyB0aGF0IGFwcGVhciBpbiB4bF9idHJlZV91cGRhdGUg bWV0YWRhdGEgYXJlIG9mZnNldHMgaW50byB0aGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9zcGd4bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oCmluZGV4 IGI5ZDY3NTM1MzMuLjI5YTZhYTU3YTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9zcGd4bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaApAQCAtMjQw LDYgKzI0MCw3IEBAIHR5cGVkZWYgc3RydWN0IHNwZ3hsb2dWYWN1dW1SZWRpcmVjdAogCXVp bnQxNgkJblRvUGxhY2Vob2xkZXI7IC8qIG51bWJlciBvZiByZWRpcmVjdHMgdG8gbWFrZSBw bGFjZWhvbGRlcnMgKi8KIAlPZmZzZXROdW1iZXIgZmlyc3RQbGFjZWhvbGRlcjsJLyogZmly c3QgcGxhY2Vob2xkZXIgdHVwbGUgdG8gcmVtb3ZlICovCiAJVHJhbnNhY3Rpb25JZCBzbmFw c2hvdENvbmZsaWN0SG9yaXpvbjsJLyogbmV3ZXN0IFhJRCBvZiByZW1vdmVkIHJlZGlyZWN0 cyAqLworCWJvb2wgICAgICAgIGlzQ2F0YWxvZ1JlbDsKIAogCS8qIG9mZnNldHMgb2YgcmVk aXJlY3QgdHVwbGVzIHRvIG1ha2UgcGxhY2Vob2xkZXJzIGZvbGxvdyAqLwogCU9mZnNldE51 bWJlciBvZmZzZXRzW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy92aXNpYmlsaXR5bWFwZGVmcy5oCmluZGV4IDkxNjViOTQ1NmIuLmIyN2ZkYzBhZWYgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwZGVmcy5oCkBAIC0xNyw5ICsxNywx MCBAQAogI2RlZmluZSBCSVRTX1BFUl9IRUFQQkxPQ0sgMgogCiAvKiBGbGFncyBmb3IgYml0 IG1hcCAqLwotI2RlZmluZSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFCTB4MDEKLSNkZWZp bmUgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOCTB4MDIKLSNkZWZpbmUgVklTSUJJTElUWU1B UF9WQUxJRF9CSVRTCTB4MDMJLyogT1Igb2YgYWxsIHZhbGlkIHZpc2liaWxpdHltYXAKLQkJ CQkJCQkJCQkJICogZmxhZ3MgYml0cyAqLworI2RlZmluZSBWSVNJQklMSVRZTUFQX0FMTF9W SVNJQkxFCQkJCQkJCQkweDAxCisjZGVmaW5lIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTgkJ CQkJCQkJMHgwMgorI2RlZmluZSBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMJCQkJCQkJCTB4 MDMJLyogT1Igb2YgYWxsIHZhbGlkIHZpc2liaWxpdHltYXAKKwkJCQkJCQkJCQkJCQkJCQkJ CSAqIGZsYWdzIGJpdHMgKi8KKyNkZWZpbmUgVklTSUJJTElUWU1BUF9JU19DQVRBTE9HX1JF TAkweDA0CiAKICNlbmRpZgkJCQkJCQkvKiBWSVNJQklMSVRZTUFQREVGU19IICovCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4LmggYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2luZGV4LmgKaW5kZXggYjA1OTI1NzFkYS4uZjVmNWRlMTYwMyAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19pbmRleC5oCisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfaW5kZXguaApAQCAtNDMsNiArNDMsOCBAQCBDQVRBTE9HKHBnX2luZGV4 LDI2MTAsSW5kZXhSZWxhdGlvbklkKSBCS0lfU0NIRU1BX01BQ1JPCiAJYm9vbAkJaW5kY2hl Y2t4bWluOwkvKiBtdXN0IHdlIHdhaXQgZm9yIHhtaW4gdG8gYmUgb2xkPyAqLwogCWJvb2wJ CWluZGlzcmVhZHk7CQkvKiBpcyB0aGlzIGluZGV4IHJlYWR5IGZvciBpbnNlcnRzPyAqLwog CWJvb2wJCWluZGlzbGl2ZTsJCS8qIGlzIHRoaXMgaW5kZXggYWxpdmUgYXQgYWxsPyAqLwor CWJvb2wJCWluZGlzdXNlcmNhdGFsb2c7CS8qIGlzIHRoaXMgaW5kZXggbGlua2VkIHRvIGEg dXNlciBjYXRhbG9nCisJCQkJCQkJCQkgKiByZWxhdGlvbj8gKi8KIAlib29sCQlpbmRpc3Jl cGxpZGVudDsgLyogaXMgdGhpcyBpbmRleCB0aGUgaWRlbnRpdHkgZm9yIHJlcGxpY2F0aW9u PyAqLwogCiAJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlLCBidXQgd2Ug YWxsb3cgZGlyZWN0IGFjY2VzcyB0byBpbmRrZXkgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKaW5kZXggYWY5Nzg1 MDM4ZC4uMmVmMTkyYzE2OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgK KysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs dWRlICJzdG9yYWdlL3NtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9yZWxjYWNoZS5oIgogI2lu Y2x1ZGUgInV0aWxzL3JlbHRyaWdnZXIuaCIKKyNpbmNsdWRlICJjYXRhbG9nL2NhdGFsb2cu aCIKIAogCiAvKgpAQCAtMzQzLDYgKzM0NCw3IEBAIHR5cGVkZWYgc3RydWN0IFN0ZFJkT3B0 aW9ucwogCiAjZGVmaW5lIEhFQVBfTUlOX0ZJTExGQUNUT1IJCQkxMAogI2RlZmluZSBIRUFQ X0RFRkFVTFRfRklMTEZBQ1RPUgkJMTAwCisjZGVmaW5lIEhFQVBfREVGQVVMVF9VU0VSX0NB VEFMT0dfVEFCTEUJCWZhbHNlCiAKIC8qCiAgKiBSZWxhdGlvbkdldFRvYXN0VHVwbGVUYXJn ZXQKQEAgLTM4NSw2ICszODcsMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgU3RkUmRPcHRpb25zCiAJ ICAocmVsYXRpb24pLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9NQVRWSUVXKSA/IFwK IAkgKChTdGRSZE9wdGlvbnMgKikgKHJlbGF0aW9uKS0+cmRfb3B0aW9ucyktPnVzZXJfY2F0 YWxvZ190YWJsZSA6IGZhbHNlKQogCisvKgorICogSW5kZXhJc0xpbmtlZFRvVXNlckNhdGFs b2dUYWJsZQorICoJCVJldHVybnMgd2hldGhlciB0aGUgcmVsYXRpb24gc2hvdWxkIGJlIHRy ZWF0ZWQgYXMgYW4gaW5kZXggbGlua2VkIHRvCisgKgkJYSB1c2VyIGNhdGFsb2cgdGFibGUg ZnJvbSB0aGUgcG92IG9mIGxvZ2ljYWwgZGVjb2RpbmcuCisgKi8KKyNkZWZpbmUgSW5kZXhJ c0xpbmtlZFRvVXNlckNhdGFsb2dUYWJsZShyZWxhdGlvbikJXAorCSgocmVsYXRpb24pLT5y ZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9JTkRFWCAmJiBcCisJIChyZWxhdGlvbiktPnJk X2luZGV4LT5pbmRpc3VzZXJjYXRhbG9nKQorCiAvKgogICogUmVsYXRpb25HZXRQYXJhbGxl bFdvcmtlcnMKICAqCQlSZXR1cm5zIHRoZSByZWxhdGlvbidzIHBhcmFsbGVsX3dvcmtlcnMg cmVsb3B0aW9uIHNldHRpbmcuCkBAIC02ODIsNyArNjkzLDggQEAgUmVsYXRpb25DbG9zZVNt Z3IoUmVsYXRpb24gcmVsYXRpb24pCiAjZGVmaW5lIFJlbGF0aW9uSXNBY2Nlc3NpYmxlSW5M b2dpY2FsRGVjb2RpbmcocmVsYXRpb24pIFwKIAkoWExvZ0xvZ2ljYWxJbmZvQWN0aXZlKCkg JiYgXAogCSBSZWxhdGlvbk5lZWRzV0FMKHJlbGF0aW9uKSAmJiBcCi0JIChJc0NhdGFsb2dS ZWxhdGlvbihyZWxhdGlvbikgfHwgUmVsYXRpb25Jc1VzZWRBc0NhdGFsb2dUYWJsZShyZWxh dGlvbikpKQorCSAoSXNDYXRhbG9nUmVsYXRpb24ocmVsYXRpb24pIHx8IFJlbGF0aW9uSXNV c2VkQXNDYXRhbG9nVGFibGUocmVsYXRpb24pIHx8IFwKKwkgIEluZGV4SXNMaW5rZWRUb1Vz ZXJDYXRhbG9nVGFibGUocmVsYXRpb24pKSkKIAogLyoKICAqIFJlbGF0aW9uSXNMb2dpY2Fs bHlMb2dnZWQKLS0gCjIuMzQuMQoK --------------rNN4FJ950ueQmmYvLj50n8vA--