Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rvUf9-00CN64-8I for pgsql-hackers@arkaria.postgresql.org; Sat, 13 Apr 2024 04:06:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rvUf6-002PS5-Fs for pgsql-hackers@arkaria.postgresql.org; Sat, 13 Apr 2024 04:06:44 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rvUf5-002PRx-V2 for pgsql-hackers@lists.postgresql.org; Sat, 13 Apr 2024 04:06:44 +0000 Received: from mail-lj1-x22f.google.com ([2a00:1450:4864:20::22f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rvUf2-000fUy-NU for pgsql-hackers@lists.postgresql.org; Sat, 13 Apr 2024 04:06:43 +0000 Received: by mail-lj1-x22f.google.com with SMTP id 38308e7fff4ca-2d47a92cfefso18324941fa.1 for ; Fri, 12 Apr 2024 21:06:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712981199; x=1713585999; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=rqN6kuh8hXKyEB+Lp1mH0NFSs32rQfRP/9ZxEZoZZ2E=; b=X5EiK/68XkySsQ1lbnR5gTIyRICgBJCeKsNhFLZpU8gBxDL0A51/EWPGoAvlC89U9X rxBDChJNjTUqY0rxtZettSP8vVrpRUYOb2VCFUykFpu7UjV8zWiGRsUbUcz2bDbwA7uJ 2aiNabxX3Q02c2OHXLXpeBA3NvNOs3OCpzqGU5Vg9Ivmyu5fvLjCsE0LsjWzrqe0S/Xf pLpOvjnvTccIy5ygh1GsO0TK2FTc7v3z/s7QeM+n0cs1gq5+mjU8nqucmSxWdqDXlXTs koFPDHdMshGCqvFqLxKkPW1R41hY1+i/DugBAg0KXhtt8RTuEE+uf6R5TleBGDb0kcC3 UO6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712981199; x=1713585999; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=rqN6kuh8hXKyEB+Lp1mH0NFSs32rQfRP/9ZxEZoZZ2E=; b=Y0W27iXImsiqtO6LS0MxXPU6EMuaco5grRmvV3mERlyshqd7Dk3/utfWq+u5tCYg77 AvO9PQ5XL8QDUDfSpkQwkRJpoUgkJEAjdQbjJbOnK44caGGx78sHvJMAJEIpMr32AE6r cLYP5BmmAKDeKrNHnXqBWAg9pRXeosHhUA30hqOIiRboRYUZDs4HCpyA/FqTWnXJLhJe uM0OGog6nYDkUDUKMSdK8/ejX683a4eRyoPddDoHc2qfKTHkfgvSJYPF+5xh1HWlTruG XplSihOyTPlu6vG0ecfo9bmcswTPR9W2k9FEMbBuUR61G0BSEc/PPH3Oweoc8jngYwO1 SsJg== X-Forwarded-Encrypted: i=1; AJvYcCXBfsotHNdnzTggR+H4FGUkbbtgKJilr6tr0LmErbYppfNTBxWM2iUImrxv50/w/tkh6DiRQC9rVRvx+/0qFN/kXOP/clHUOXuYKdS8I8KN+knu X-Gm-Message-State: AOJu0Yz7gOgy3mgkcPwm4OruUc2nPLgtIoXvt5GEm+L5vz69fEHvFcg0 bicK+4GGfGNbuPyfrMbPkJmuKQfs8VO/ghhRFDUoJrCmGwKCildy8vzeOHeE0nK1N20dDWb8J6R pANeTzzP6aJktwaIoaSqmHlln2zA= X-Google-Smtp-Source: AGHT+IHDoj9NMYbdgjcRkg6SSdszgfddG/qskCxzd07Xkogx2Da7BDob1uMqFywTKckHbOG8dJQIe+KVz6dxk5ocnxw= X-Received: by 2002:a05:651c:696:b0:2d6:9445:9267 with SMTP id x22-20020a05651c069600b002d694459267mr2319780ljb.43.1712981198372; Fri, 12 Apr 2024 21:06:38 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Bharath Rupireddy Date: Sat, 13 Apr 2024 09:36:25 +0530 Message-ID: Subject: Re: Introduce XID age and inactive timeout based replication slot invalidation To: Amit Kapila Cc: Bertrand Drouvot , shveta malik , Masahiko Sawada , Nathan Bossart , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000d623220615f28388" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d623220615f28388 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Apr 6, 2024 at 5:10=E2=80=AFPM Bharath Rupireddy wrote: > > Please see the attached v38 patch. Hi, thanks everyone for reviewing the design and patches so far. Here I'm with the v39 patches implementing inactive timeout based (0001) and XID age based (0002) invalidation mechanisms. I'm quoting the hackers who are okay with inactive timeout based invalidation mechanism: Bertrand Drouvot - https://www.postgresql.org/message-id/ZgL0N%2BxVJNkyqsKL%40ip-10-97-1-34.eu= -west-3.compute.internal and https://www.postgresql.org/message-id/ZgPHDAlM79iLtGIH%40ip-10-97-1-34.= eu-west-3.compute.internal Amit Kapila - https://www.postgresql.org/message-id/CAA4eK1L3awyzWMuymLJUm8= SoFEQe%3DDa9KUwCcAfC31RNJ1xdJA%40mail.gmail.com Nathan Bossart - https://www.postgresql.org/message-id/20240325195443.GA2923888%40nathanxps1= 3 Robert Haas - https://www.postgresql.org/message-id/CA%2BTgmoZTbaaEjSZUG1FL= 0mzxAdN3qmXksO3O9_PZhEuXTkVnRQ%40mail.gmail.com I'm quoting the hackers who are okay with XID age based invalidation mechan= ism: Nathan Bossart - https://www.postgresql.org/message-id/20240326150918.GB3181099%40nathanxps1= 3 and https://www.postgresql.org/message-id/20240327150557.GA3994937%40nathan= xps13 Alvaro Herrera - https://www.postgresql.org/message-id/202403261539.xcjfle7sksz7%40alvherre.= pgsql Bertrand Drouvot - https://www.postgresql.org/message-id/ZgPHDAlM79iLtGIH%40ip-10-97-1-34.eu-w= est-3.compute.internal Amit Kapila - https://www.postgresql.org/message-id/CAA4eK1L3awyzWMuymLJUm8= SoFEQe%3DDa9KUwCcAfC31RNJ1xdJA%40mail.gmail.com There was a point raised by Robert https://www.postgresql.org/message-id/CA%2BTgmoaRECcnyqxAxUhP5dk2S4HX%3DpGh= -p-PkA3uc%2BjG_9hiMw%40mail.gmail.com for XID age based invalidation. An issue related to vacuum_defer_cleanup_age https://git.postgresql.org/gitweb/?p=3Dpostgresql.git;a=3Dcommitdiff;h=3Dbe= 504a3e974d75be6f95c8f9b7367126034f2d12 led to the removal of the GUC https://git.postgresql.org/gitweb/?p=3Dpostgresql.git;a=3Dcommitdiff;h=3D11= 18cd37eb61e6a2428f457a8b2026a7bb3f801a. The same issue may not happen for the XID age based invaliation. This is because the XID age is not calculated using FullTransactionId but using TransactionId as the slot's xmin and catalog_xmin are tracked as TransactionId. There was a point raised by Amit https://www.postgresql.org/message-id/CAA4eK1K8wqLsMw6j0hE_SFoWAeo3Kw8UNnMf= hsWaYDF1GWYQ%2Bg%40mail.gmail.com on when to do the XID age based invalidation - whether in checkpointer or when vacuum is being run or whenever ComputeXIDHorizons gets called or in autovacuum process. For now, I've chosen the design to do these new invalidation checks in two places - 1) whenever the slot is acquired and the slot acquisition errors out if invalidated, 2) during checkpoint. However, I'm open to suggestions on this. I've also verified the case whether the replication_slot_xid_age setting can help in case of server inching towards the XID wraparound. I've created a primary and streaming standby setup with hot_standby_feedback set to on (so that the slot gets an xmin). Then, I've set replication_slot_xid_age to 2 billion on the primary, and used xid_wraparound extension to reach XID wraparound on the primary. Once I start receiving the WARNINGs about VACUUM, I did a checkpoint after which the slot got invalidated enabling my VACUUM to freeze XIDs saving my database from XID wraparound problem. Thanks a lot Masahiko Sawada for an offlist chat about the XID age calculation logic. -- Bharath Rupireddy PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --000000000000d623220615f28388 Content-Type: application/x-patch; name="v39-0001-Add-inactive_timeout-based-replication-slot-inva.patch" Content-Disposition: attachment; filename="v39-0001-Add-inactive_timeout-based-replication-slot-inva.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_luwwwfqm0 RnJvbSBmM2JhMjU2MmJhN2Q5YzRmMTNlMjgzNzQwMjYwMDI1YjhkMWM5YjBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMTIgQXByIDIwMjQgMTQ6NTI6MzUgKzAw MDAKU3ViamVjdDogW1BBVENIIHYzOSAxLzJdIEFkZCBpbmFjdGl2ZV90aW1lb3V0IGJhc2VkIHJl cGxpY2F0aW9uIHNsb3QKIGludmFsaWRhdGlvbi4KClRpbGwgbm93LCBwb3N0Z3JlcyBoYXMgdGhl IGFiaWxpdHkgdG8gaW52YWxpZGF0ZSBpbmFjdGl2ZQpyZXBsaWNhdGlvbiBzbG90cyBiYXNlZCBv biB0aGUgYW1vdW50IG9mIFdBTCAoc2V0IHZpYQptYXhfc2xvdF93YWxfa2VlcF9zaXplIEdVQykg dGhhdCB3aWxsIGJlIG5lZWRlZCBmb3IgdGhlIHNsb3RzIGluCmNhc2UgdGhleSBiZWNvbWUgYWN0 aXZlLiBIb3dldmVyLCBjaG9vc2luZyBhIGRlZmF1bHQgdmFsdWUgZm9yCm1heF9zbG90X3dhbF9r ZWVwX3NpemUgaXMgdHJpY2t5LiBCZWNhdXNlIHRoZSBhbW91bnQgb2YgV0FMIGEKY3VzdG9tZXIg Z2VuZXJhdGVzLCBhbmQgdGhlaXIgYWxsb2NhdGVkIHN0b3JhZ2Ugd2lsbCB2YXJ5IGdyZWF0bHkK aW4gcHJvZHVjdGlvbiwgbWFraW5nIGl0IGRpZmZpY3VsdCB0byBwaW4gZG93biBhIG9uZS1zaXpl LWZpdHMtYWxsCnZhbHVlLiBJdCBpcyBvZnRlbiBlYXN5IGZvciBkZXZlbG9wZXJzIHRvIHNldCBh IHRpbWVvdXQgb2Ygc2F5IDEKb3IgMiBvciAzIGRheXMsIGFmdGVyIHdoaWNoIHRoZSBpbmFjdGl2 ZSBzbG90cyBnZXQgaW52YWxpZGF0ZWQuCgpUbyBhY2hpZXZlIHRoZSBhYm92ZSwgcG9zdGdyZXMg aW50cm9kdWNlcyBhIEdVQyBhbGxvd2luZyB1c2VycwpzZXQgaW5hY3RpdmUgdGltZW91dC4gVGhl IHJlcGxpY2F0aW9uIHNsb3RzIHRoYXQgYXJlIGluYWN0aXZlCmZvciBsb25nZXIgdGhhbiBzcGVj aWZpZWQgYW1vdW50IG9mIHRpbWUgZ2V0IGludmFsaWRhdGVkLgoKVGhlIGludmFsaWRhdGlvbiBj aGVjayBoYXBwZW5zIGF0IHZhcmlvdXMgbG9jYXRpb25zIHRvIGhlbHAgYmVpbmcKYXMgbGF0ZXN0 IGFzIHBvc3NpYmxlLCB0aGVzZSBsb2NhdGlvbnMgaW5jbHVkZSB0aGUgZm9sbG93aW5nOgotIFdo ZW5ldmVyIHRoZSBzbG90IGlzIGFjcXVpcmVkIGFuZCB0aGUgc2xvdCBhY3F1aXNpdGlvbiBlcnJv cnMKb3V0IGlmIGludmFsaWRhdGVkLgotIER1cmluZyBjaGVja3BvaW50CgpOb3RlIHRoYXQgdGhp cyBuZXcgaW52YWxpZGF0aW9uIG1lY2hhbmlzbSB3b24ndCBraWNrLWluIGZvciB0aGUKc2xvdHMg dGhhdCBhcmUgY3VycmVudGx5IGJlaW5nIHN5bmNlZCBmcm9tIHRoZSBwcmltYXJ5IHRvIHRoZQpz dGFuZGJ5LCBiZWNhdXNlIHN1Y2ggc3luY2VkIHNsb3RzIGFyZSB0eXBpY2FsbHkgY29uc2lkZXJl ZCBub3QKYWN0aXZlIChmb3IgdGhlbSB0byBiZSBsYXRlciBjb25zaWRlcmVkIGFzIGluYWN0aXZl KSBhcyB0aGV5IGRvbid0CnBlcmZvcm0gbG9naWNhbCBkZWNvZGluZyB0byBwcm9kdWNlIHRoZSBj aGFuZ2VzLgoKQXV0aG9yOiBCaGFyYXRoIFJ1cGlyZWRkeQpSZXZpZXdlZC1ieTogQmVydHJhbmQg RHJvdXZvdCwgQW1pdCBLYXBpbGEsIFNodmV0YSBNYWxpawpEaXNjdXNzaW9uOiBodHRwczovL3d3 dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBTGoyQUNXNGFVZS1fdUZRT2pkV0NFTi14WG9M R2htdlJGbkw4U053X1RaNW5KZSthd0BtYWlsLmdtYWlsLmNvbQpEaXNjdXNzaW9uOiBodHRwczov L3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBJTJCVGdtb1pUYmFhRWpTWlVHMUZMMG16 eEFkTjNxbVhrc08zTzlfUFpoRXVYVGtWblJRJTQwbWFpbC5nbWFpbC5jb20KRGlzY3Vzc2lvbjog aHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC8yMDI0MDMyNjA4NDEuNWpjdjdp aG5pY2N5JTQwYWx2aGVycmUucGdzcWwKLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAg ICAgICAgICAgICAgICAgICAgfCAgMzMgKysKIGRvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dt bCAgICAgICAgICAgICAgICB8ICAgNyArCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2Fs ZnVuY3MuYyAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv c2xvdHN5bmMuYyAgICB8ICAxMSArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAg ICAgICAgICAgICAgIHwgMTg4ICsrKysrKysrKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdGZ1bmNzLmMgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93 YWxzZW5kZXIuYyAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191 cGdyYWRlX3N1cHBvcnQuYyAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNf dGFibGVzLmMgICAgICAgICAgIHwgIDEyICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdy ZXNxbC5jb25mLnNhbXBsZSB8ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90Lmgg ICAgICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkICAg ICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWNvdmVyeS90LzA1MF9pbnZhbGlkYXRl X3Nsb3RzLnBsICAgfCAyODYgKysrKysrKysrKysrKysrKysrCiAxMyBmaWxlcyBjaGFuZ2VkLCA1 MzUgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvcmVjb3ZlcnkvdC8wNTBfaW52YWxpZGF0ZV9zbG90cy5wbAoKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRleCBk OGUxMjgyZTEyLi5hNzM2NzdiOThiIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC00NTQ3LDYgKzQ1NDcsMzkgQEAg cmVzdG9yZV9jb21tYW5kID0gJ2NvcHkgIkM6XFxzZXJ2ZXJcXGFyY2hpdmVkaXJcXCVmIiAiJXAi JyAgIyBXaW5kb3dzCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAor ICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtcmVwbGljYXRpb24tc2xvdC1pbmFjdGl2ZS10aW1l b3V0IiB4cmVmbGFiZWw9InJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCI+CisgICAg ICA8dGVybT48dmFybmFtZT5yZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQ8L3Zhcm5h bWU+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHBy aW1hcnk+PHZhcm5hbWU+cmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0PC92YXJuYW1l PiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgor ICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBJ bnZhbGlkYXRlcyByZXBsaWNhdGlvbiBzbG90cyB0aGF0IGFyZSBpbmFjdGl2ZSBmb3IgbG9uZ2Vy IHRoYW4KKyAgICAgICAgc3BlY2lmaWVkIGFtb3VudCBvZiB0aW1lLiBJZiB0aGlzIHZhbHVlIGlz IHNwZWNpZmllZCB3aXRob3V0IHVuaXRzLAorICAgICAgICBpdCBpcyB0YWtlbiBhcyBzZWNvbmRz LiBBIHZhbHVlIG9mIHplcm8gKHdoaWNoIGlzIGRlZmF1bHQpIGRpc2FibGVzCisgICAgICAgIHRo ZSB0aW1lb3V0IG1lY2hhbmlzbS4gVGhpcyBwYXJhbWV0ZXIgY2FuIG9ubHkgYmUgc2V0IGluCisg ICAgICAgIHRoZSA8ZmlsZW5hbWU+cG9zdGdyZXNxbC5jb25mPC9maWxlbmFtZT4gZmlsZSBvciBv biB0aGUgc2VydmVyCisgICAgICAgIGNvbW1hbmQgbGluZS4KKyAgICAgICA8L3BhcmE+CisKKyAg ICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBpbnZhbGlkYXRpb24gY2hlY2sgaGFwcGVucyBlaXRo ZXIgd2hlbiB0aGUgc2xvdCBpcyBhY3F1aXJlZAorICAgICAgICBmb3IgdXNlIG9yIGR1cmluZyBh IGNoZWNrcG9pbnQuIFRoZSB0aW1lIHNpbmNlIHRoZSBzbG90IGhhcyBiZWNvbWUKKyAgICAgICAg aW5hY3RpdmUgaXMga25vd24gZnJvbSBpdHMKKyAgICAgICAgPHN0cnVjdGZpZWxkPmluYWN0aXZl X3NpbmNlPC9zdHJ1Y3RmaWVsZD4gdmFsdWUgdXNpbmcgd2hpY2ggdGhlCisgICAgICAgIHRpbWVv dXQgaXMgbWVhc3VyZWQuCisgICAgICAgPC9wYXJhPgorCisgICAgICAgPHBhcmE+CisgICAgICAg IE5vdGUgdGhhdCB0aGUgaW5hY3RpdmUgdGltZW91dCBpbnZhbGlkYXRpb24gbWVjaGFuaXNtIGlz IG5vdAorICAgICAgICBhcHBsaWNhYmxlIGZvciBzbG90cyBvbiB0aGUgc3RhbmRieSB0aGF0IGFy ZSBiZWluZyBzeW5jZWQgZnJvbSBhCisgICAgICAgIHByaW1hcnkgc2VydmVyICh3aG9zZSA8c3Ry dWN0ZmllbGQ+c3luY2VkPC9zdHJ1Y3RmaWVsZD4gZmllbGQgaXMKKyAgICAgICAgPGxpdGVyYWw+ dHJ1ZTwvbGl0ZXJhbD4pLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAg IDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy10cmFjay1jb21t aXQtdGltZXN0YW1wIiB4cmVmbGFiZWw9InRyYWNrX2NvbW1pdF90aW1lc3RhbXAiPgogICAgICAg PHRlcm0+PHZhcm5hbWU+dHJhY2tfY29tbWl0X3RpbWVzdGFtcDwvdmFybmFtZT4gKDx0eXBlPmJv b2xlYW48L3R5cGU+KQogICAgICAgPGluZGV4dGVybT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9zeXN0ZW0tdmlld3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAppbmRl eCA3ZWQ2MTcxNzBmLi4wNjM2MzhiZWRhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc3lzdGVt LXZpZXdzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCkBAIC0yNTgw LDYgKzI1ODAsMTMgQEAgU0VMRUNUICogRlJPTSBwZ19sb2NrcyBwbCBMRUZUIEpPSU4gcGdfcHJl cGFyZWRfeGFjdHMgcHB4CiAgICAgICAgICAgcGVyZm9ybSBsb2dpY2FsIGRlY29kaW5nLiAgSXQg aXMgc2V0IG9ubHkgZm9yIGxvZ2ljYWwgc2xvdHMuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAg IDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPgorICAgICAg ICAgIDxsaXRlcmFsPmluYWN0aXZlX3RpbWVvdXQ8L2xpdGVyYWw+IG1lYW5zIHRoYXQgdGhlIHNs b3QgaGFzIGJlZW4KKyAgICAgICAgICBpbmFjdGl2ZSBmb3IgdGhlIGR1cmF0aW9uIHNwZWNpZmll ZCBieQorICAgICAgICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1yZXBsaWNhdGlvbi1zbG90LWluYWN0 aXZlLXRpbWVvdXQiLz4gcGFyYW1ldGVyLgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xp c3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAg ICAgIDwvcm93PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9s b2dpY2FsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1 bmNzLmMKaW5kZXggYjRkZDVjY2U3NS4uNTZmYzFhNDVhOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jCkBAIC0xOTcsNyArMTk3LDcgQEAgcGdf bG9naWNhbF9zbG90X2dldF9jaGFuZ2VzX2d1dHMoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJv b2wgY29uZmlybSwgYm9vbCBiaW4KIAllbHNlCiAJCWVuZF9vZl93YWwgPSBHZXRYTG9nUmVwbGF5 UmVjUHRyKE5VTEwpOwogCi0JUmVwbGljYXRpb25TbG90QWNxdWlyZShOYW1lU3RyKCpuYW1lKSwg dHJ1ZSk7CisJUmVwbGljYXRpb25TbG90QWNxdWlyZShOYW1lU3RyKCpuYW1lKSwgdHJ1ZSwgdHJ1 ZSk7CiAKIAlQR19UUlkoKTsKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3Nsb3RzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Ns b3RzeW5jLmMKaW5kZXggYmRhMGRlNTJkYi4uYzQ3ZTU2Zjc4ZiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwpAQCAtNDUwLDcgKzQ1MCw3IEBAIGRyb3BfbG9j YWxfb2Jzb2xldGVfc2xvdHMoTGlzdCAqcmVtb3RlX3Nsb3RfbGlzdCkKIAogCQkJaWYgKHN5bmNl ZF9zbG90KQogCQkJewotCQkJCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0cihsb2NhbF9z bG90LT5kYXRhLm5hbWUpLCB0cnVlKTsKKwkJCQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVT dHIobG9jYWxfc2xvdC0+ZGF0YS5uYW1lKSwgdHJ1ZSwgZmFsc2UpOwogCQkJCVJlcGxpY2F0aW9u U2xvdERyb3BBY3F1aXJlZCgpOwogCQkJfQogCkBAIC02NTMsNiArNjUzLDEzIEBAIHN5bmNocm9u aXplX29uZV9zbG90KFJlbW90ZVNsb3QgKnJlbW90ZV9zbG90LCBPaWQgcmVtb3RlX2RiaWQpCiAJ CQkJCQkgICAiIG5hbWUgc2xvdCBcIiVzXCIgYWxyZWFkeSBleGlzdHMgb24gdGhlIHN0YW5kYnki LAogCQkJCQkJICAgcmVtb3RlX3Nsb3QtPm5hbWUpKTsKIAorCQkvKgorCQkgKiBTa2lwIHRoZSBz eW5jIGlmIHRoZSBsb2NhbCBzbG90IGlzIGFscmVhZHkgaW52YWxpZGF0ZWQuIFdlIGRvIHRoaXMK KwkJICogYmVmb3JlaGFuZCB0byBhdm9pZCBzbG90IGFjcXVpcmUgYW5kIHJlbGVhc2UuCisJCSAq LworCQlpZiAoc2xvdC0+ZGF0YS5pbnZhbGlkYXRlZCAhPSBSU19JTlZBTF9OT05FKQorCQkJcmV0 dXJuIGZhbHNlOworCiAJCS8qCiAJCSAqIFRoZSBzbG90IGhhcyBiZWVuIHN5bmNocm9uaXplZCBi ZWZvcmUuCiAJCSAqCkBAIC02NjksNyArNjc2LDcgQEAgc3luY2hyb25pemVfb25lX3Nsb3QoUmVt b3RlU2xvdCAqcmVtb3RlX3Nsb3QsIE9pZCByZW1vdGVfZGJpZCkKIAkJICogcHJlLWNoZWNrIHRv IGVuc3VyZSB0aGF0IGF0IGxlYXN0IG9uZSBvZiB0aGUgc2xvdCBwcm9wZXJ0aWVzIGlzCiAJCSAq IGNoYW5nZWQgYmVmb3JlIGFjcXVpcmluZyB0aGUgc2xvdC4KIAkJICovCi0JCVJlcGxpY2F0aW9u U2xvdEFjcXVpcmUocmVtb3RlX3Nsb3QtPm5hbWUsIHRydWUpOworCQlSZXBsaWNhdGlvblNsb3RB Y3F1aXJlKHJlbW90ZV9zbG90LT5uYW1lLCB0cnVlLCBmYWxzZSk7CiAKIAkJQXNzZXJ0KHNsb3Qg PT0gTXlSZXBsaWNhdGlvblNsb3QpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9zbG90LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKaW5kZXggY2ViZjQ0 YmIwZi4uN2NmYmMyZGZmZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xv dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwpAQCAtMTA3LDEwICsxMDcs MTEgQEAgY29uc3QgY2hhciAqY29uc3QgU2xvdEludmFsaWRhdGlvbkNhdXNlc1tdID0gewogCVtS U19JTlZBTF9XQUxfUkVNT1ZFRF0gPSAid2FsX3JlbW92ZWQiLAogCVtSU19JTlZBTF9IT1JJWk9O XSA9ICJyb3dzX3JlbW92ZWQiLAogCVtSU19JTlZBTF9XQUxfTEVWRUxdID0gIndhbF9sZXZlbF9p bnN1ZmZpY2llbnQiLAorCVtSU19JTlZBTF9JTkFDVElWRV9USU1FT1VUXSA9ICJpbmFjdGl2ZV90 aW1lb3V0IiwKIH07CiAKIC8qIE1heGltdW0gbnVtYmVyIG9mIGludmFsaWRhdGlvbiBjYXVzZXMg Ki8KLSNkZWZpbmUJUlNfSU5WQUxfTUFYX0NBVVNFUyBSU19JTlZBTF9XQUxfTEVWRUwKKyNkZWZp bmUJUlNfSU5WQUxfTUFYX0NBVVNFUyBSU19JTlZBTF9JTkFDVElWRV9USU1FT1VUCiAKIFN0YXRp Y0Fzc2VydERlY2wobGVuZ3Rob2YoU2xvdEludmFsaWRhdGlvbkNhdXNlcykgPT0gKFJTX0lOVkFM X01BWF9DQVVTRVMgKyAxKSwKIAkJCQkgImFycmF5IGxlbmd0aCBtaXNtYXRjaCIpOwpAQCAtMTQw LDYgKzE0MSw3IEBAIFJlcGxpY2F0aW9uU2xvdCAqTXlSZXBsaWNhdGlvblNsb3QgPSBOVUxMOwog LyogR1VDIHZhcmlhYmxlcyAqLwogaW50CQkJbWF4X3JlcGxpY2F0aW9uX3Nsb3RzID0gMTA7IC8q IHRoZSBtYXhpbXVtIG51bWJlciBvZiByZXBsaWNhdGlvbgogCQkJCQkJCQkJCSAqIHNsb3RzICov CitpbnQJCQlyZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQgPSAwOwogCiAvKgogICog VGhpcyBHVUMgbGlzdHMgc3RyZWFtaW5nIHJlcGxpY2F0aW9uIHN0YW5kYnkgc2VydmVyIHNsb3Qg bmFtZXMgdGhhdApAQCAtMTU5LDYgKzE2MSwxMyBAQCBzdGF0aWMgWExvZ1JlY1B0ciBzc19vbGRl c3RfZmx1c2hfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiBzdGF0aWMgdm9pZCBSZXBsaWNhdGlv blNsb3RTaG1lbUV4aXQoaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBSZXBsaWNh dGlvblNsb3REcm9wUHRyKFJlcGxpY2F0aW9uU2xvdCAqc2xvdCk7CiAKK3N0YXRpYyBib29sIElu dmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25D YXVzZSBjYXVzZSwKKwkJCQkJCQkJCQkgICBSZXBsaWNhdGlvblNsb3QgKnMsCisJCQkJCQkJCQkJ ICAgWExvZ1JlY1B0ciBvbGRlc3RMU04sCisJCQkJCQkJCQkJICAgT2lkIGRib2lkLAorCQkJCQkJ CQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJ ICAgYm9vbCAqaW52YWxpZGF0ZWQpOworCiAvKiBpbnRlcm5hbCBwZXJzaXN0ZW5jeSBmdW5jdGlv bnMgKi8KIHN0YXRpYyB2b2lkIFJlc3RvcmVTbG90RnJvbURpc2soY29uc3QgY2hhciAqbmFtZSk7 CiBzdGF0aWMgdm9pZCBDcmVhdGVTbG90T25EaXNrKFJlcGxpY2F0aW9uU2xvdCAqc2xvdCk7CkBA IC01MzUsMTIgKzU0NCwxNyBAQCBSZXBsaWNhdGlvblNsb3ROYW1lKGludCBpbmRleCwgTmFtZSBu YW1lKQogICoKICAqIEFuIGVycm9yIGlzIHJhaXNlZCBpZiBub3dhaXQgaXMgdHJ1ZSBhbmQgdGhl IHNsb3QgaXMgY3VycmVudGx5IGluIHVzZS4gSWYKICAqIG5vd2FpdCBpcyBmYWxzZSwgd2Ugc2xl ZXAgdW50aWwgdGhlIHNsb3QgaXMgcmVsZWFzZWQgYnkgdGhlIG93bmluZyBwcm9jZXNzLgorICoK KyAqIEFuIGVycm9yIGlzIHJhaXNlZCBpZiBjaGVja19mb3JfaW52YWxpZGF0aW9uIGlzIHRydWUg YW5kIHRoZSBzbG90IGdldHMKKyAqIGludmFsaWRhdGVkIG5vdyBvciBoYXMgYmVlbiBpbnZhbGlk YXRlZCBwcmV2aW91c2x5LgogICovCiB2b2lkCi1SZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNvbnN0 IGNoYXIgKm5hbWUsIGJvb2wgbm93YWl0KQorUmVwbGljYXRpb25TbG90QWNxdWlyZShjb25zdCBj aGFyICpuYW1lLCBib29sIG5vd2FpdCwKKwkJCQkJICAgYm9vbCBjaGVja19mb3JfaW52YWxpZGF0 aW9uKQogewogCVJlcGxpY2F0aW9uU2xvdCAqczsKIAlpbnQJCQlhY3RpdmVfcGlkOworCWJvb2wJ CXJlbGVhc2VkX2xvY2sgPSBmYWxzZTsKIAogCUFzc2VydChuYW1lICE9IE5VTEwpOwogCkBAIC02 MTUsNiArNjI5LDU3IEBAIHJldHJ5OgogCS8qIFdlIG1hZGUgdGhpcyBzbG90IGFjdGl2ZSwgc28g aXQncyBvdXJzIG5vdy4gKi8KIAlNeVJlcGxpY2F0aW9uU2xvdCA9IHM7CiAKKwlMV0xvY2tBY3F1 aXJlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrLCBMV19TSEFSRUQpOworCisJLyoKKwkgKiBD aGVjayBpZiB0aGUgYWNxdWlyZWQgc2xvdCBuZWVkcyB0byBiZSBpbnZhbGlkYXRlZC4gQW5kLCBl cnJvciBvdXQgaWYKKwkgKiBpdCBnZXRzIGludmFsaWRhdGVkIG5vdyBvciBoYXMgYmVlbiBpbnZh bGlkYXRlZCBwcmV2aW91c2x5LCBiZWNhdXNlCisJICogdGhlcmUncyBubyB1c2UgaW4gYWNxdWly aW5nIHRoZSBpbnZhbGlkYXRlZCBzbG90LgorCSAqCisJICogWFhYOiBDdXJyZW50bHkgd2UgY2hl Y2sgZm9yIGluYWN0aXZlX3RpbWVvdXQgaW52YWxpZGF0aW9uIGhlcmUuIFdlCisJICogbWlnaHQg bmVlZCB0byBjaGVjayBmb3Igb3RoZXIgaW52YWxpZGF0aW9ucyB0b28uCisJICovCisJaWYgKGNo ZWNrX2Zvcl9pbnZhbGlkYXRpb24pCisJeworCQlib29sCQlpbnZhbGlkYXRlZCA9IGZhbHNlOwor CisJCXJlbGVhc2VkX2xvY2sgPSBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUlNfSU5W QUxfSU5BQ1RJVkVfVElNRU9VVCwKKwkJCQkJCQkJCQkJCQkgICBzLCAwLCBJbnZhbGlkT2lkLAor CQkJCQkJCQkJCQkJCSAgIEludmFsaWRUcmFuc2FjdGlvbklkLAorCQkJCQkJCQkJCQkJCSAgICZp bnZhbGlkYXRlZCk7CisKKwkJLyoKKwkJICogSWYgdGhlIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0 ZWQsIHJlY2FsY3VsYXRlIHRoZSByZXNvdXJjZSBsaW1pdHMuCisJCSAqLworCQlpZiAoaW52YWxp ZGF0ZWQpCisJCXsKKwkJCVJlcGxpY2F0aW9uU2xvdHNDb21wdXRlUmVxdWlyZWRYbWluKGZhbHNl KTsKKwkJCVJlcGxpY2F0aW9uU2xvdHNDb21wdXRlUmVxdWlyZWRMU04oKTsKKwkJfQorCisJCWlm IChzLT5kYXRhLmludmFsaWRhdGVkID09IFJTX0lOVkFMX0lOQUNUSVZFX1RJTUVPVVQpCisJCXsK KwkJCS8qCisJCQkgKiBSZWxlYXNlIHRoZSBsb2NrIGlmIGl0J3Mgbm90IHlldCB0byBrZWVwIHRo ZSBjbGVhbnVwIHBhdGggb24KKwkJCSAqIGVycm9yIGhhcHB5LgorCQkJICovCisJCQlpZiAoIXJl bGVhc2VkX2xvY2spCisJCQkJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9j ayk7CisKKwkJCUFzc2VydChzLT5pbmFjdGl2ZV9zaW5jZSA+IDApOworCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFU RSksCisJCQkJCSBlcnJtc2coImNhbiBubyBsb25nZXIgZ2V0IGNoYW5nZXMgZnJvbSByZXBsaWNh dGlvbiBzbG90IFwiJXNcIiIsCisJCQkJCQkJTmFtZVN0cihzLT5kYXRhLm5hbWUpKSwKKwkJCQkJ IGVycmRldGFpbCgiVGhpcyBzbG90IGhhcyBiZWVuIGludmFsaWRhdGVkIGJlY2F1c2UgaXQgd2Fz IGluYWN0aXZlIHNpbmNlICVzIGZvciBtb3JlIHRoYW4gcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2 ZV90aW1lb3V0ID0gJWQgc2Vjb25kcy4iLAorCQkJCQkJCSAgIHRpbWVzdGFtcHR6X3RvX3N0cihz LT5pbmFjdGl2ZV9zaW5jZSksCisJCQkJCQkJICAgcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90 aW1lb3V0KSkpOworCQl9CisJfQorCisJaWYgKCFyZWxlYXNlZF9sb2NrKQorCQlMV0xvY2tSZWxl YXNlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrKTsKKwogCS8qCiAJICogVGhlIGNhbGwgdG8g cGdzdGF0X2FjcXVpcmVfcmVwbHNsb3QoKSBwcm90ZWN0cyBhZ2FpbnN0IHN0YXRzIGZvciBhCiAJ ICogZGlmZmVyZW50IHNsb3QsIGZyb20gYmVmb3JlIGEgcmVzdGFydCBvciBzdWNoLCBiZWluZyBw cmVzZW50IGR1cmluZwpAQCAtNzgxLDcgKzg0Niw3IEBAIFJlcGxpY2F0aW9uU2xvdERyb3AoY29u c3QgY2hhciAqbmFtZSwgYm9vbCBub3dhaXQpCiB7CiAJQXNzZXJ0KE15UmVwbGljYXRpb25TbG90 ID09IE5VTEwpOwogCi0JUmVwbGljYXRpb25TbG90QWNxdWlyZShuYW1lLCBub3dhaXQpOworCVJl cGxpY2F0aW9uU2xvdEFjcXVpcmUobmFtZSwgbm93YWl0LCBmYWxzZSk7CiAKIAkvKgogCSAqIERv IG5vdCBhbGxvdyB1c2VycyB0byBkcm9wIHRoZSBzbG90cyB3aGljaCBhcmUgY3VycmVudGx5IGJl aW5nIHN5bmNlZApAQCAtODA0LDcgKzg2OSw3IEBAIFJlcGxpY2F0aW9uU2xvdEFsdGVyKGNvbnN0 IGNoYXIgKm5hbWUsIGJvb2wgZmFpbG92ZXIpCiB7CiAJQXNzZXJ0KE15UmVwbGljYXRpb25TbG90 ID09IE5VTEwpOwogCi0JUmVwbGljYXRpb25TbG90QWNxdWlyZShuYW1lLCBmYWxzZSk7CisJUmVw bGljYXRpb25TbG90QWNxdWlyZShuYW1lLCBmYWxzZSwgdHJ1ZSk7CiAKIAlpZiAoU2xvdElzUGh5 c2ljYWwoTXlSZXBsaWNhdGlvblNsb3QpKQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTQ3Niw3ICsx NTQxLDggQEAgUmVwb3J0U2xvdEludmFsaWRhdGlvbihSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRp b25DYXVzZSBjYXVzZSwKIAkJCQkJICAgTmFtZURhdGEgc2xvdG5hbWUsCiAJCQkJCSAgIFhMb2dS ZWNQdHIgcmVzdGFydF9sc24sCiAJCQkJCSAgIFhMb2dSZWNQdHIgb2xkZXN0TFNOLAotCQkJCQkg ICBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uKQorCQkJCQkgICBUcmFuc2Fj dGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkgICBUaW1lc3RhbXBUeiBpbmFj dGl2ZV9zaW5jZSkKIHsKIAlTdHJpbmdJbmZvRGF0YSBlcnJfZGV0YWlsOwogCWJvb2wJCWhpbnQg PSBmYWxzZTsKQEAgLTE1MDYsNiArMTU3MiwxMyBAQCBSZXBvcnRTbG90SW52YWxpZGF0aW9uKFJl cGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGNhdXNlLAogCQljYXNlIFJTX0lOVkFMX1dB TF9MRVZFTDoKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmVycl9kZXRhaWwsIF8oIkxvZ2lj YWwgZGVjb2Rpbmcgb24gc3RhbmRieSByZXF1aXJlcyB3YWxfbGV2ZWwgPj0gbG9naWNhbCBvbiB0 aGUgcHJpbWFyeSBzZXJ2ZXIuIikpOwogCQkJYnJlYWs7CisJCWNhc2UgUlNfSU5WQUxfSU5BQ1RJ VkVfVElNRU9VVDoKKwkJCUFzc2VydChpbmFjdGl2ZV9zaW5jZSA+IDApOworCQkJYXBwZW5kU3Ry aW5nSW5mbygmZXJyX2RldGFpbCwKKwkJCQkJCQkgXygiVGhlIHNsb3QgaGFzIGJlZW4gaW5hY3Rp dmUgc2luY2UgJXMgZm9yIG1vcmUgdGhhbiByZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVv dXQgPSAlZCBzZWNvbmRzLiIpLAorCQkJCQkJCSB0aW1lc3RhbXB0el90b19zdHIoaW5hY3RpdmVf c2luY2UpLAorCQkJCQkJCSByZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQpOworCQkJ YnJlYWs7CiAJCWNhc2UgUlNfSU5WQUxfTk9ORToKIAkJCXBnX3VucmVhY2hhYmxlKCk7CiAJfQpA QCAtMTU0OSw2ICsxNjIyLDcgQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxp Y2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGNhdXNlLAogCVRyYW5zYWN0aW9uSWQgaW5pdGlh bF9jYXRhbG9nX2VmZmVjdGl2ZV94bWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJWExvZ1Jl Y1B0cglpbml0aWFsX3Jlc3RhcnRfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJUmVwbGljYXRp b25TbG90SW52YWxpZGF0aW9uQ2F1c2UgaW52YWxpZGF0aW9uX2NhdXNlX3ByZXYgUEdfVVNFRF9G T1JfQVNTRVJUU19PTkxZID0gUlNfSU5WQUxfTk9ORTsKKwlUaW1lc3RhbXBUeiBpbmFjdGl2ZV9z aW5jZSA9IDA7CiAKIAlmb3IgKDs7KQogCXsKQEAgLTE1NTYsNiArMTYzMCw3IEBAIEludmFsaWRh dGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBj YXVzZSwKIAkJTmFtZURhdGEJc2xvdG5hbWU7CiAJCWludAkJCWFjdGl2ZV9waWQgPSAwOwogCQlS ZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBpbnZhbGlkYXRpb25fY2F1c2UgPSBSU19J TlZBTF9OT05FOworCQlUaW1lc3RhbXBUeiBub3cgPSAwOwogCiAJCUFzc2VydChMV0xvY2tIZWxk QnlNZUluTW9kZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jaywgTFdfU0hBUkVEKSk7CiAKQEAg LTE1NjYsNiArMTY0MSwxOCBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGlj YXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCQlicmVhazsKIAkJfQogCisJCWlm IChjYXVzZSA9PSBSU19JTlZBTF9JTkFDVElWRV9USU1FT1VUICYmCisJCQkocmVwbGljYXRpb25f c2xvdF9pbmFjdGl2ZV90aW1lb3V0ID4gMCAmJgorCQkJIHMtPmluYWN0aXZlX3NpbmNlID4gMCAm JgorCQkJICEoUmVjb3ZlcnlJblByb2dyZXNzKCkgJiYgcy0+ZGF0YS5zeW5jZWQpKSkKKwkJewor CQkJLyoKKwkJCSAqIFdlIGdldCB0aGUgY3VycmVudCB0aW1lIGJlZm9yZWhhbmQgdG8gYXZvaWQg c3lzdGVtIGNhbGwgd2hpbGUKKwkJCSAqIGhvbGRpbmcgdGhlIHNwaW5sb2NrLgorCQkJICovCisJ CQlub3cgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisJCX0KKwogCQkvKgogCQkgKiBDaGVjayBp ZiB0aGUgc2xvdCBuZWVkcyB0byBiZSBpbnZhbGlkYXRlZC4gSWYgaXQgbmVlZHMgdG8gYmUKIAkJ ICogaW52YWxpZGF0ZWQsIGFuZCBpcyBub3QgY3VycmVudGx5IGFjcXVpcmVkLCBhY3F1aXJlIGl0 IGFuZCBtYXJrIGl0CkBAIC0xNjE5LDYgKzE3MDYsMzkgQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jz b2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGNhdXNlLAogCQkJCQlp ZiAoU2xvdElzTG9naWNhbChzKSkKIAkJCQkJCWludmFsaWRhdGlvbl9jYXVzZSA9IGNhdXNlOwog CQkJCQlicmVhazsKKwkJCQljYXNlIFJTX0lOVkFMX0lOQUNUSVZFX1RJTUVPVVQ6CisKKwkJCQkJ LyoKKwkJCQkJICogUXVpY2sgZXhpdCBpZiBpbmFjdGl2ZSB0aW1lb3V0IGludmFsaWRhdGlvbiBt ZWNoYW5pc20KKwkJCQkJICogaXMgZGlzYWJsZWQgb3Igc2xvdCBpcyBjdXJyZW50bHkgYmVpbmcg dXNlZCBvciB0aGUgc2xvdAorCQkJCQkgKiBvbiBzdGFuZGJ5IGlzIGN1cnJlbnRseSBiZWluZyBz eW5jZWQgZnJvbSB0aGUgcHJpbWFyeS4KKwkJCQkJICoKKwkJCQkJICogTm90ZSB0aGF0IHdlIGRv bid0IGludmFsaWRhdGUgc3luY2VkIHNsb3RzIGJlY2F1c2UsCisJCQkJCSAqIHRoZXkgYXJlIHR5 cGljYWxseSBjb25zaWRlcmVkIG5vdCBhY3RpdmUgYXMgdGhleSBkb24ndAorCQkJCQkgKiBwZXJm b3JtIGxvZ2ljYWwgZGVjb2RpbmcgdG8gcHJvZHVjZSB0aGUgY2hhbmdlcy4KKwkJCQkJICovCisJ CQkJCWlmIChyZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQgPT0gMCB8fAorCQkJCQkJ cy0+aW5hY3RpdmVfc2luY2UgPT0gMCB8fAorCQkJCQkJKFJlY292ZXJ5SW5Qcm9ncmVzcygpICYm IHMtPmRhdGEuc3luY2VkKSkKKwkJCQkJCWJyZWFrOworCisJCQkJCS8qCisJCQkJCSAqIENoZWNr IGlmIHRoZSBzbG90IG5lZWRzIHRvIGJlIGludmFsaWRhdGVkIGR1ZSB0bworCQkJCQkgKiByZXBs aWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQgR1VDLgorCQkJCQkgKi8KKwkJCQkJaWYgKFRp bWVzdGFtcERpZmZlcmVuY2VFeGNlZWRzKHMtPmluYWN0aXZlX3NpbmNlLCBub3csCisJCQkJCQkJ CQkJCQkgICByZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQgKiAxMDAwKSkKKwkJCQkJ eworCQkJCQkJaW52YWxpZGF0aW9uX2NhdXNlID0gY2F1c2U7CisJCQkJCQlpbmFjdGl2ZV9zaW5j ZSA9IHMtPmluYWN0aXZlX3NpbmNlOworCisJCQkJCQkvKgorCQkJCQkJICogSW52YWxpZGF0aW9u IGR1ZSB0byBpbmFjdGl2ZSB0aW1lb3V0IGltcGxpZXMgdGhhdAorCQkJCQkJICogbm8gb25lIGlz IHVzaW5nIHRoZSBzbG90LgorCQkJCQkJICovCisJCQkJCQlBc3NlcnQocy0+YWN0aXZlX3BpZCA9 PSAwKTsKKwkJCQkJfQorCQkJCQlicmVhazsKIAkJCQljYXNlIFJTX0lOVkFMX05PTkU6CiAJCQkJ CXBnX3VucmVhY2hhYmxlKCk7CiAJCQl9CkBAIC0xNjQ0LDExICsxNzY0LDE0IEBAIEludmFsaWRh dGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBj YXVzZSwKIAkJYWN0aXZlX3BpZCA9IHMtPmFjdGl2ZV9waWQ7CiAKIAkJLyoKLQkJICogSWYgdGhl IHNsb3QgY2FuIGJlIGFjcXVpcmVkLCBkbyBzbyBhbmQgbWFyayBpdCBpbnZhbGlkYXRlZAotCQkg KiBpbW1lZGlhdGVseS4gIE90aGVyd2lzZSB3ZSdsbCBzaWduYWwgdGhlIG93bmluZyBwcm9jZXNz LCBiZWxvdywgYW5kCi0JCSAqIHJldHJ5LgorCQkgKiBJZiB0aGUgc2xvdCBjYW4gYmUgYWNxdWly ZWQsIGRvIHNvIG9yIGlmIHRoZSBzbG90IGlzIGFscmVhZHkgb3VycywKKwkJICogdGhlbiBtYXJr IGl0IGludmFsaWRhdGVkLiAgT3RoZXJ3aXNlIHdlJ2xsIHNpZ25hbCB0aGUgb3duaW5nCisJCSAq IHByb2Nlc3MsIGJlbG93LCBhbmQgcmV0cnkuCiAJCSAqLwotCQlpZiAoYWN0aXZlX3BpZCA9PSAw KQorCQlpZiAoYWN0aXZlX3BpZCA9PSAwIHx8CisJCQkoTXlSZXBsaWNhdGlvblNsb3QgIT0gTlVM TCAmJgorCQkJIE15UmVwbGljYXRpb25TbG90ID09IHMgJiYKKwkJCSBhY3RpdmVfcGlkID09IE15 UHJvY1BpZCkpCiAJCXsKIAkJCU15UmVwbGljYXRpb25TbG90ID0gczsKIAkJCXMtPmFjdGl2ZV9w aWQgPSBNeVByb2NQaWQ7CkBAIC0xNzAzLDcgKzE4MjYsOCBAQCBJbnZhbGlkYXRlUG9zc2libHlP YnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCQl7 CiAJCQkJUmVwb3J0U2xvdEludmFsaWRhdGlvbihpbnZhbGlkYXRpb25fY2F1c2UsIHRydWUsIGFj dGl2ZV9waWQsCiAJCQkJCQkJCQkgICBzbG90bmFtZSwgcmVzdGFydF9sc24sCi0JCQkJCQkJCQkg ICBvbGRlc3RMU04sIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uKTsKKwkJCQkJCQkJCSAgIG9sZGVz dExTTiwgc25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkgICBpbmFjdGl2ZV9zaW5j ZSk7CiAKIAkJCQlpZiAoTXlCYWNrZW5kVHlwZSA9PSBCX1NUQVJUVVApCiAJCQkJCSh2b2lkKSBT ZW5kUHJvY1NpZ25hbChhY3RpdmVfcGlkLApAQCAtMTc0OSw3ICsxODczLDggQEAgSW52YWxpZGF0 ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGNh dXNlLAogCiAJCQlSZXBvcnRTbG90SW52YWxpZGF0aW9uKGludmFsaWRhdGlvbl9jYXVzZSwgZmFs c2UsIGFjdGl2ZV9waWQsCiAJCQkJCQkJCSAgIHNsb3RuYW1lLCByZXN0YXJ0X2xzbiwKLQkJCQkJ CQkJICAgb2xkZXN0TFNOLCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbik7CisJCQkJCQkJCSAgIG9s ZGVzdExTTiwgc25hcHNob3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCSAgIGluYWN0aXZlX3Np bmNlKTsKIAogCQkJLyogZG9uZSB3aXRoIHRoaXMgc2xvdCBmb3Igbm93ICovCiAJCQlicmVhazsK QEAgLTE3NzIsNiArMTg5Nyw3IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBs aWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBjYXVzZSwKICAqIC0gUlNfSU5WQUxfSE9SSVpP TjogcmVxdWlyZXMgYSBzbmFwc2hvdCA8PSB0aGUgZ2l2ZW4gaG9yaXpvbiBpbiB0aGUgZ2l2ZW4K ICAqICAgZGI7IGRib2lkIG1heSBiZSBJbnZhbGlkT2lkIGZvciBzaGFyZWQgcmVsYXRpb25zCiAg KiAtIFJTX0lOVkFMX1dBTF9MRVZFTDogaXMgbG9naWNhbAorICogLSBSU19JTlZBTF9JTkFDVElW RV9USU1FT1VUOiBpbmFjdGl2ZSB0aW1lb3V0IG9jY3VycwogICoKICAqIE5CIC0gdGhpcyBydW5z IGFzIHBhcnQgb2YgY2hlY2twb2ludCwgc28gYXZvaWQgcmFpc2luZyBlcnJvcnMgaWYgcG9zc2li bGUuCiAgKi8KQEAgLTE4MjQsNyArMTk1MCw3IEBAIHJlc3RhcnQ6CiB9CiAKIC8qCi0gKiBGbHVz aCBhbGwgcmVwbGljYXRpb24gc2xvdHMgdG8gZGlzay4KKyAqIEZsdXNoIGFsbCByZXBsaWNhdGlv biBzbG90cyB0byBkaXNrIGFuZCBpbnZhbGlkYXRlIHNsb3RzLgogICoKICAqIEl0IGlzIGNvbnZl bmllbnQgdG8gZmx1c2ggZGlydHkgcmVwbGljYXRpb24gc2xvdHMgYXQgdGhlIHRpbWUgb2YgY2hl Y2twb2ludC4KICAqIEFkZGl0aW9uYWxseSwgaW4gY2FzZSBvZiBhIHNodXRkb3duIGNoZWNrcG9p bnQsIHdlIGFsc28gaWRlbnRpZnkgdGhlIHNsb3RzCkBAIC0xODM1LDYgKzE5NjEsNyBAQCB2b2lk CiBDaGVja1BvaW50UmVwbGljYXRpb25TbG90cyhib29sIGlzX3NodXRkb3duKQogewogCWludAkJ CWk7CisJYm9vbAkJaW52YWxpZGF0ZWQgPSBmYWxzZTsKIAogCWVsb2coREVCVUcxLCAicGVyZm9y bWluZyByZXBsaWNhdGlvbiBzbG90IGNoZWNrcG9pbnQiKTsKIApAQCAtMTg4NCw2ICsyMDExLDQz IEBAIENoZWNrUG9pbnRSZXBsaWNhdGlvblNsb3RzKGJvb2wgaXNfc2h1dGRvd24pCiAJCVNhdmVT bG90VG9QYXRoKHMsIHBhdGgsIExPRyk7CiAJfQogCUxXTG9ja1JlbGVhc2UoUmVwbGljYXRpb25T bG90QWxsb2NhdGlvbkxvY2spOworCisJZWxvZyhERUJVRzEsICJwZXJmb3JtaW5nIHJlcGxpY2F0 aW9uIHNsb3QgaW52YWxpZGF0aW9uIik7CisKKwkvKgorCSAqIE5vdGUgdGhhdCB3ZSB3aWxsIG1h a2UgYW5vdGhlciBwYXNzIG92ZXIgcmVwbGljYXRpb24gc2xvdHMgZm9yCisJICogaW52YWxpZGF0 aW9ucyB0byBrZWVwIHRoZSBjb2RlIHNpbXBsZS4gVGhlIGFzc3VtcHRpb24gaGVyZSBpcyB0aGF0 IHRoZQorCSAqIHRyYXZlcnNhbCBvdmVyIHJlcGxpY2F0aW9uIHNsb3RzIGlzbid0IHRoYXQgY29z dGx5IGV2ZW4gd2l0aCBodW5kcmVkcworCSAqIG9mIHJlcGxpY2F0aW9uIHNsb3RzLiBJZiBpdCBl dmVyIHR1cm5zIG91dCB0aGF0IHRoaXMgYXNzdW1wdGlvbiBpcworCSAqIHdyb25nLCB3ZSBtaWdo dCBoYXZlIHRvIHB1dCB0aGUgaW52YWxpZGF0aW9uIGNoZWNrIGxvZ2ljIGluIHRoZSBhYm92ZQor CSAqIGxvb3AsIGZvciB0aGF0IHdlIG1pZ2h0IG5lZWQgdG8gZG8gdGhlIGZvbGxvd2luZzoKKwkg KgorCSAqIC0gQWNxdXJlIENvbnRyb2xMb2NrIGxvY2sgb25jZSBiZWZvcmUgdGhlIGxvb3AuCisJ ICoKKwkgKiAtIENhbGwgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90IGZvciBlYWNoIHNs b3QuCisJICoKKwkgKiAtIEhhbmRsZSB0aGUgY2FzZXMgaW4gd2hpY2ggQ29udHJvbExvY2sgZ2V0 cyByZWxlYXNlZCBqdXN0IGxpa2UKKwkgKiBJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNs b3RzIGRvZXMuCisJICoKKwkgKiAtIEF2b2lkIHNhdmluZyBzbG90IGluZm8gdG8gZGlzayB0d28g dGltZXMgZm9yIGVhY2ggaW52YWxpZGF0ZWQgc2xvdC4KKwkgKgorCSAqIFhYWDogU2hvdWxkIHdl IG1vdmUgaW5hY3RpdmVfdGltZW91dCBpbmF2YWxpZGF0aW9uIGNoZWNrIGNsb3NlciB0bworCSAq IHdhbF9yZW1vdmVkIGluIENyZWF0ZUNoZWNrUG9pbnQgYW5kIENyZWF0ZVJlc3RhcnRQb2ludD8K KwkgKi8KKwlpbnZhbGlkYXRlZCA9IEludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMo UlNfSU5WQUxfSU5BQ1RJVkVfVElNRU9VVCwKKwkJCQkJCQkJCQkJCQkgMCwKKwkJCQkJCQkJCQkJ CQkgSW52YWxpZE9pZCwKKwkJCQkJCQkJCQkJCQkgSW52YWxpZFRyYW5zYWN0aW9uSWQpOworCisJ aWYgKGludmFsaWRhdGVkKQorCXsKKwkJLyoKKwkJICogSWYgYW55IHNsb3RzIGhhdmUgYmVlbiBp bnZhbGlkYXRlZCwgcmVjYWxjdWxhdGUgdGhlIHJlc291cmNlCisJCSAqIGxpbWl0cy4KKwkJICov CisJCVJlcGxpY2F0aW9uU2xvdHNDb21wdXRlUmVxdWlyZWRYbWluKGZhbHNlKTsKKwkJUmVwbGlj YXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTigpOworCX0KIH0KIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vc2xvdGZ1bmNzLmMKaW5kZXggZGQ2YzFkNWE3ZS4uOWFkM2U1NTcwNCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vc2xvdGZ1bmNzLmMKQEAgLTUzOSw3ICs1MzksNyBAQCBwZ19yZXBsaWNhdGlv bl9zbG90X2FkdmFuY2UoUEdfRlVOQ1RJT05fQVJHUykKIAkJbW92ZXRvID0gTWluKG1vdmV0bywg R2V0WExvZ1JlcGxheVJlY1B0cihOVUxMKSk7CiAKIAkvKiBBY3F1aXJlIHRoZSBzbG90IHNvIHdl ICJvd24iIGl0ICovCi0JUmVwbGljYXRpb25TbG90QWNxdWlyZShOYW1lU3RyKCpzbG90bmFtZSks IHRydWUpOworCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0cigqc2xvdG5hbWUpLCB0cnVl LCB0cnVlKTsKIAogCS8qIEEgc2xvdCB3aG9zZSByZXN0YXJ0X2xzbiBoYXMgbmV2ZXIgYmVlbiBy ZXNlcnZlZCBjYW5ub3QgYmUgYWR2YW5jZWQgKi8KIAlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChN eVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbikpCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dh bHNlbmRlci5jCmluZGV4IGJjNDBjNDU0ZGUuLjk2ZWViOGI3ZDIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3dhbHNlbmRlci5jCkBAIC04NDYsNyArODQ2LDcgQEAgU3RhcnRSZXBsaWNhdGlvbihTdGFy dFJlcGxpY2F0aW9uQ21kICpjbWQpCiAKIAlpZiAoY21kLT5zbG90bmFtZSkKIAl7Ci0JCVJlcGxp Y2F0aW9uU2xvdEFjcXVpcmUoY21kLT5zbG90bmFtZSwgdHJ1ZSk7CisJCVJlcGxpY2F0aW9uU2xv dEFjcXVpcmUoY21kLT5zbG90bmFtZSwgdHJ1ZSwgdHJ1ZSk7CiAJCWlmIChTbG90SXNMb2dpY2Fs KE15UmVwbGljYXRpb25TbG90KSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVS UkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLApAQCAtMTQ1OSw3ICsxNDU5 LDcgQEAgU3RhcnRMb2dpY2FsUmVwbGljYXRpb24oU3RhcnRSZXBsaWNhdGlvbkNtZCAqY21kKQog CiAJQXNzZXJ0KCFNeVJlcGxpY2F0aW9uU2xvdCk7CiAKLQlSZXBsaWNhdGlvblNsb3RBY3F1aXJl KGNtZC0+c2xvdG5hbWUsIHRydWUpOworCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoY21kLT5zbG90 bmFtZSwgdHJ1ZSwgdHJ1ZSk7CiAKIAkvKgogCSAqIEZvcmNlIGEgZGlzY29ubmVjdCwgc28gdGhh dCB0aGUgZGVjb2RpbmcgY29kZSBkb2Vzbid0IG5lZWQgdG8gY2FyZQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jCmluZGV4IGM1NGIwOGZlMTguLjgyOTU2ZDU4ZDMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfdXBncmFkZV9zdXBwb3J0LmMKQEAgLTI5OSw3 ICsyOTksNyBAQCBiaW5hcnlfdXBncmFkZV9sb2dpY2FsX3Nsb3RfaGFzX2NhdWdodF91cChQR19G VU5DVElPTl9BUkdTKQogCXNsb3RfbmFtZSA9IFBHX0dFVEFSR19OQU1FKDApOwogCiAJLyogQWNx dWlyZSB0aGUgZ2l2ZW4gc2xvdCAqLwotCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0cigq c2xvdF9uYW1lKSwgdHJ1ZSk7CisJUmVwbGljYXRpb25TbG90QWNxdWlyZShOYW1lU3RyKCpzbG90 X25hbWUpLCB0cnVlLCBmYWxzZSk7CiAKIAlBc3NlcnQoU2xvdElzTG9naWNhbChNeVJlcGxpY2F0 aW9uU2xvdCkpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJs ZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IGM2OGZkYzAw OGIuLjc5ZTc2MzdlYzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3Rh Ymxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCkBAIC0yOTgy LDYgKzI5ODIsMTggQEAgc3RydWN0IGNvbmZpZ19pbnQgQ29uZmlndXJlTmFtZXNJbnRbXSA9CiAJ CU5VTEwsIE5VTEwsIE5VTEwKIAl9LAogCisJeworCQl7InJlcGxpY2F0aW9uX3Nsb3RfaW5hY3Rp dmVfdGltZW91dCIsIFBHQ19TSUdIVVAsIFJFUExJQ0FUSU9OX1NFTkRJTkcsCisJCQlnZXR0ZXh0 X25vb3AoIlNldHMgdGhlIGFtb3VudCBvZiB0aW1lIHRvIHdhaXQgYmVmb3JlIGludmFsaWRhdGlu ZyBhbiAiCisJCQkJCQkgImluYWN0aXZlIHJlcGxpY2F0aW9uIHNsb3QuIiksCisJCQlOVUxMLAor CQkJR1VDX1VOSVRfUworCQl9LAorCQkmcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0 LAorCQkwLCAwLCBJTlRfTUFYLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKwogCXsKIAkJeyJj b21taXRfZGVsYXkiLCBQR0NfU1VTRVQsIFdBTF9TRVRUSU5HUywKIAkJCWdldHRleHRfbm9vcCgi U2V0cyB0aGUgZGVsYXkgaW4gbWljcm9zZWNvbmRzIGJldHdlZW4gdHJhbnNhY3Rpb24gY29tbWl0 IGFuZCAiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29u Zi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUK aW5kZXggMjE2NmVhNGE4Ny4uODE5MzEwYjBhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtMzM1LDYgKzMzNSw3IEBACiAjd2FsX3NlbmRl cl90aW1lb3V0ID0gNjBzCSMgaW4gbWlsbGlzZWNvbmRzOyAwIGRpc2FibGVzCiAjdHJhY2tfY29t bWl0X3RpbWVzdGFtcCA9IG9mZgkjIGNvbGxlY3QgdGltZXN0YW1wIG9mIHRyYW5zYWN0aW9uIGNv bW1pdAogCQkJCSMgKGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0KQorI3JlcGxpY2F0aW9uX3Nsb3Rf aW5hY3RpdmVfdGltZW91dCA9IDAJIyBpbiBzZWNvbmRzOyAwIGRpc2FibGVzCiAKICMgLSBQcmlt YXJ5IFNlcnZlciAtCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3Qu aCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaAppbmRleCA3YjkzN2QxYTBjLi44NzI3 YjdiNThiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKKysrIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCkBAIC01Myw2ICs1Myw4IEBAIHR5cGVkZWYg ZW51bSBSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZQogCVJTX0lOVkFMX0hPUklaT04s CiAJLyogd2FsX2xldmVsIGluc3VmZmljaWVudCBmb3Igc2xvdCAqLwogCVJTX0lOVkFMX1dBTF9M RVZFTCwKKwkvKiBpbmFjdGl2ZSBzbG90IHRpbWVvdXQgaGFzIG9jY3VycmVkICovCisJUlNfSU5W QUxfSU5BQ1RJVkVfVElNRU9VVCwKIH0gUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2U7 CiAKIGV4dGVybiBQR0RMTElNUE9SVCBjb25zdCBjaGFyICpjb25zdCBTbG90SW52YWxpZGF0aW9u Q2F1c2VzW107CkBAIC0yMzAsNiArMjMyLDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIFJlcGxpY2F0 aW9uU2xvdCAqTXlSZXBsaWNhdGlvblNsb3Q7CiAvKiBHVUNzICovCiBleHRlcm4gUEdETExJTVBP UlQgaW50IG1heF9yZXBsaWNhdGlvbl9zbG90czsKIGV4dGVybiBQR0RMTElNUE9SVCBjaGFyICpz dGFuZGJ5X3Nsb3RfbmFtZXM7CitleHRlcm4gUEdETExJTVBPUlQgaW50IHJlcGxpY2F0aW9uX3Ns b3RfaW5hY3RpdmVfdGltZW91dDsKIAogLyogc2htZW0gaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25z ICovCiBleHRlcm4gU2l6ZSBSZXBsaWNhdGlvblNsb3RzU2htZW1TaXplKHZvaWQpOwpAQCAtMjQ1 LDcgKzI0OCw4IEBAIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdERyb3AoY29uc3QgY2hhciAq bmFtZSwgYm9vbCBub3dhaXQpOwogZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90RHJvcEFjcXVp cmVkKHZvaWQpOwogZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90QWx0ZXIoY29uc3QgY2hhciAq bmFtZSwgYm9vbCBmYWlsb3Zlcik7CiAKLWV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdEFjcXVp cmUoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBub3dhaXQpOworZXh0ZXJuIHZvaWQgUmVwbGljYXRp b25TbG90QWNxdWlyZShjb25zdCBjaGFyICpuYW1lLCBib29sIG5vd2FpdCwKKwkJCQkJCQkJICAg Ym9vbCBjaGVja19mb3JfaW52YWxpZGF0aW9uKTsKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xv dFJlbGVhc2Uodm9pZCk7CiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RDbGVhbnVwKHZvaWQp OwogZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90U2F2ZSh2b2lkKTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVp bGQKaW5kZXggYjFlYjc3YjFlYy4uYjRjNWNlMjg3NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVj b3ZlcnkvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQKQEAg LTEwLDYgKzEwLDcgQEAgdGVzdHMgKz0gewogICAgICAgICdlbmFibGVfaW5qZWN0aW9uX3BvaW50 cyc6IGdldF9vcHRpb24oJ2luamVjdGlvbl9wb2ludHMnKSA/ICd5ZXMnIDogJ25vJywKICAgICB9 LAogICAgICd0ZXN0cyc6IFsKKyAgICAgICd0LzA1MF9pbnZhbGlkYXRlX3Nsb3RzLnBsJywKICAg ICAgICd0LzAwMV9zdHJlYW1fcmVwLnBsJywKICAgICAgICd0LzAwMl9hcmNoaXZpbmcucGwnLAog ICAgICAgJ3QvMDAzX3JlY292ZXJ5X3RhcmdldHMucGwnLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVjb3ZlcnkvdC8wNTBfaW52YWxpZGF0ZV9zbG90cy5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3Qv MDUwX2ludmFsaWRhdGVfc2xvdHMucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uNDY2MzAxOWMxNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3Qv MDUwX2ludmFsaWRhdGVfc2xvdHMucGwKQEAgLTAsMCArMSwyODYgQEAKKyMgQ29weXJpZ2h0IChj KSAyMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIFRlc3QgZm9y IHJlcGxpY2F0aW9uIHNsb3RzIGludmFsaWRhdGlvbgordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5n cyBGQVRBTCA9PiAnYWxsJzsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgVGVzdDo6TW9yZTsKK3VzZSBUaW1lOjpIaVJl cyBxdyh1c2xlZXApOworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIFRlc3RjYXNlIHN0YXJ0 OiBJbnZhbGlkYXRlIHN0cmVhbWluZyBzdGFuZGJ5J3Mgc2xvdCBhcyB3ZWxsIGFzIGxvZ2ljYWwK KyMgZmFpbG92ZXIgc2xvdCBvbiBwcmltYXJ5IGR1ZSB0byByZXBsaWNhdGlvbl9zbG90X2luYWN0 aXZlX3RpbWVvdXQuIEFsc28sCisjIGNoZWNrIHRoZSBsb2dpY2FsIGZhaWxvdmVyIHNsb3Qgc3lu Y2VkIG9uIHRvIHRoZSBzdGFuZGJ5IGRvZXNuJ3QgaW52YWxpZGF0ZQorIyB0aGUgc2xvdCBvbiBp dHMgb3duLCBidXQgZ2V0cyB0aGUgaW52YWxpZGF0ZWQgc3RhdGUgZnJvbSB0aGUgcmVtb3RlIHNs b3Qgb24KKyMgdGhlIHByaW1hcnkuCisKKyMgSW5pdGlhbGl6ZSBwcmltYXJ5IG5vZGUKK215ICRw cmltYXJ5ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwcmltYXJ5Jyk7CiskcHJp bWFyeS0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CisKKyMgQXZvaWQgY2hl Y2twb2ludCBkdXJpbmcgdGhlIHRlc3QsIG90aGVyd2lzZSwgdGhlIHRlc3QgY2FuIGdldCB1bnBy ZWRpY3RhYmxlCiskcHJpbWFyeS0+YXBwZW5kX2NvbmYoCisJJ3Bvc3RncmVzcWwuY29uZicsIHF7 CitjaGVja3BvaW50X3RpbWVvdXQgPSAxaAorYXV0b3ZhY3V1bSA9IG9mZgorfSk7CiskcHJpbWFy eS0+c3RhcnQ7CisKKyMgVGFrZSBiYWNrdXAKK215ICRiYWNrdXBfbmFtZSA9ICdteV9iYWNrdXAn OworJHByaW1hcnktPmJhY2t1cCgkYmFja3VwX25hbWUpOworCisjIENyZWF0ZSBhIHN0YW5kYnkg bGlua2luZyB0byB0aGUgcHJpbWFyeSB1c2luZyB0aGUgcmVwbGljYXRpb24gc2xvdAorbXkgJHN0 YW5kYnkxID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdGFuZGJ5MScpOworJHN0 YW5kYnkxLT5pbml0X2Zyb21fYmFja3VwKCRwcmltYXJ5LCAkYmFja3VwX25hbWUsIGhhc19zdHJl YW1pbmcgPT4gMSk7CisKK215ICRjb25uc3RyXzEgPSAkcHJpbWFyeS0+Y29ubnN0cjsKKyRzdGFu ZGJ5MS0+YXBwZW5kX2NvbmYoCisJJ3Bvc3RncmVzcWwuY29uZicsIHFxKAoraG90X3N0YW5kYnlf ZmVlZGJhY2sgPSBvbgorcHJpbWFyeV9zbG90X25hbWUgPSAnc2IxX3Nsb3QnCitwcmltYXJ5X2Nv bm5pbmZvID0gJyRjb25uc3RyXzEgZGJuYW1lPXBvc3RncmVzJworKSk7CisKKyMgQ3JlYXRlIHN5 bmMgc2xvdCBvbiB0aGUgcHJpbWFyeQorJHByaW1hcnktPnBzcWwoJ3Bvc3RncmVzJywKKwlxe1NF TEVDVCBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KCdsc3ViMV9zeW5jX3Nsb3Qn LCAndGVzdF9kZWNvZGluZycsIGZhbHNlLCBmYWxzZSwgdHJ1ZSk7fQorKTsKKworJHByaW1hcnkt PnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKyAgICBTRUxFQ1QgcGdfY3JlYXRlX3BoeXNp Y2FsX3JlcGxpY2F0aW9uX3Nsb3Qoc2xvdF9uYW1lIDo9ICdzYjFfc2xvdCcsIGltbWVkaWF0ZWx5 X3Jlc2VydmUgOj0gdHJ1ZSk7CitdKTsKKworJHN0YW5kYnkxLT5zdGFydDsKKworbXkgJHN0YW5k YnkxX2xvZ3N0YXJ0ID0gLXMgJHN0YW5kYnkxLT5sb2dmaWxlOworCisjIFdhaXQgdW50aWwgc3Rh bmRieSBoYXMgcmVwbGF5ZWQgZW5vdWdoIGRhdGEKKyRwcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVw KCRzdGFuZGJ5MSk7CisKKyMgU3luY2hyb25pemUgdGhlIHByaW1hcnkgc2VydmVyIHNsb3RzIHRv IHRoZSBzdGFuZGJ5Ciskc3RhbmRieTEtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBn X3N5bmNfcmVwbGljYXRpb25fc2xvdHMoKTsiKTsKKworIyBDb25maXJtIHRoYXQgdGhlIGxvZ2lj YWwgZmFpbG92ZXIgc2xvdCBpcyBjcmVhdGVkIG9uIHRoZSBzdGFuZGJ5IGFuZCBpcworIyBmbGFn Z2VkIGFzICdzeW5jZWQnLgoraXMoICRzdGFuZGJ5MS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMn LAorCQlxe1NFTEVDVCBjb3VudCgqKSA9IDEgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cworCQkg IFdIRVJFIHNsb3RfbmFtZSA9ICdsc3ViMV9zeW5jX3Nsb3QnIEFORCBzeW5jZWQgQU5EIE5PVCB0 ZW1wb3Jhcnk7fQorCSksCisJInQiLAorCSdsb2dpY2FsIHNsb3QgbHN1YjFfc3luY19zbG90IGhh cyBzeW5jZWQgYXMgdHJ1ZSBvbiBzdGFuZGJ5Jyk7CisKK215ICRsb2dzdGFydCA9IC1zICRwcmlt YXJ5LT5sb2dmaWxlOworbXkgJGluYWN0aXZlX3RpbWVvdXQgPSAyOworCisjIFNldCB0aW1lb3V0 IHNvIHRoYXQgdGhlIG5leHQgY2hlY2twb2ludCB3aWxsIGludmFsaWRhdGUgdGhlIGluYWN0aXZl CisjIHJlcGxpY2F0aW9uIHNsb3QuCiskcHJpbWFyeS0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs IHFxWworICAgIEFMVEVSIFNZU1RFTSBTRVQgcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1l b3V0IFRPICcke2luYWN0aXZlX3RpbWVvdXR9cyc7CitdKTsKKyRwcmltYXJ5LT5yZWxvYWQ7CisK KyMgV2FpdCBmb3IgdGhlIGxvZ2ljYWwgZmFpbG92ZXIgc2xvdCB0byBiZWNvbWUgaW5hY3RpdmUg b24gdGhlIHByaW1hcnkuIE5vdGUKKyMgdGhhdCBub2JvZHkgaGFzIGFjcXVpcmVkIHRoYXQgc2xv dCB5ZXQsIHNvIGR1ZSB0bworIyByZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQgc2V0 dGluZyBhYm92ZSBpdCBtdXN0IGdldCBpbnZhbGlkYXRlZC4KK3dhaXRfZm9yX3Nsb3RfaW52YWxp ZGF0aW9uKCRwcmltYXJ5LCAnbHN1YjFfc3luY19zbG90JywgJGxvZ3N0YXJ0LAorCSRpbmFjdGl2 ZV90aW1lb3V0KTsKKworIyBTZXQgdGltZW91dCBvbiB0aGUgc3RhbmRieSBhbHNvIHRvIGNoZWNr IHRoZSBzeW5jZWQgc2xvdHMgZG9uJ3QgZ2V0CisjIGludmFsaWRhdGVkIGR1ZSB0byB0aW1lb3V0 IG9uIHRoZSBzdGFuZGJ5LgorJHN0YW5kYnkxLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFb CisgICAgQUxURVIgU1lTVEVNIFNFVCByZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQg VE8gJzJzJzsKK10pOworJHN0YW5kYnkxLT5yZWxvYWQ7CisKKyMgTm93LCBzeW5jIHRoZSBsb2dp Y2FsIGZhaWxvdmVyIHNsb3QgZnJvbSB0aGUgcmVtb3RlIHNsb3Qgb24gdGhlIHByaW1hcnkuCisj IE5vdGUgdGhhdCB0aGUgcmVtb3RlIHNsb3QgaGFzIGFscmVhZHkgYmVlbiBpbnZhbGlkYXRlZCBk dWUgdG8gaW5hY3RpdmUKKyMgdGltZW91dC4gTm93LCB0aGUgc3RhbmRieSBtdXN0IGFsc28gc2Vl IGl0IGFzIGludmFsaWRhdGVkLgorJHN0YW5kYnkxLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBwZ19zeW5jX3JlcGxpY2F0aW9uX3Nsb3RzKCk7Iik7CisKKyMgV2FpdCBmb3IgdGhlIGlu YWN0aXZlIHJlcGxpY2F0aW9uIHNsb3QgdG8gYmUgaW52YWxpZGF0ZWQuCiskc3RhbmRieTEtPnBv bGxfcXVlcnlfdW50aWwoCisJJ3Bvc3RncmVzJywgcXFbCisJU0VMRUNUIENPVU5UKHNsb3RfbmFt ZSkgPSAxIEZST00gcGdfcmVwbGljYXRpb25fc2xvdHMKKwkJV0hFUkUgc2xvdF9uYW1lID0gJ2xz dWIxX3N5bmNfc2xvdCcgQU5ECisJCWludmFsaWRhdGlvbl9yZWFzb24gPSAnaW5hY3RpdmVfdGlt ZW91dCc7CitdKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciByZXBs aWNhdGlvbiBzbG90IGxzdWIxX3N5bmNfc2xvdCBpbnZhbGlkYXRpb24gdG8gYmUgc3luY2VkIG9u IHN0YW5kYnkiOworCisjIFN5bmNlZCBzbG90IG11c3RuJ3QgZ2V0IGludmFsaWRhdGVkIG9uIHRo ZSBzdGFuZGJ5IGV2ZW4gYWZ0ZXIgYSBjaGVja3BvaW50LAorIyBpdCBtdXN0IHN5bmMgaW52YWxp ZGF0aW9uIGZyb20gdGhlIHByaW1hcnkuIFNvLCB3ZSBtdXN0IG5vdCBzZWUgdGhlIHNsb3Qncwor IyBpbnZhbGlkYXRpb24gbWVzc2FnZSBpbiBzZXJ2ZXIgbG9nLgorJHN0YW5kYnkxLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkNIRUNLUE9JTlQiKTsKK29rKCAhJHN0YW5kYnkxLT5sb2dfY29udGFp bnMoCisJCSJpbnZhbGlkYXRpbmcgb2Jzb2xldGUgcmVwbGljYXRpb24gc2xvdCBcImxzdWIxX3N5 bmNfc2xvdFwiIiwKKwkJJHN0YW5kYnkxX2xvZ3N0YXJ0KSwKKwknY2hlY2sgdGhhdCBzeW5lZCBz bG90IGxzdWIxX3N5bmNfc2xvdCBoYXMgbm90IGJlZW4gaW52YWxpZGF0ZWQgb24gdGhlIHN0YW5k YnknCispOworCisjIFN0b3Agc3RhbmRieSB0byBtYWtlIHRoZSBzdGFuZGJ5J3MgcmVwbGljYXRp b24gc2xvdCBvbiB0aGUgcHJpbWFyeSBpbmFjdGl2ZQorJHN0YW5kYnkxLT5zdG9wOworCisjIFdh aXQgZm9yIHRoZSBzdGFuZGJ5J3MgcmVwbGljYXRpb24gc2xvdCB0byBiZWNvbWUgaW5hY3RpdmUK K3dhaXRfZm9yX3Nsb3RfaW52YWxpZGF0aW9uKCRwcmltYXJ5LCAnc2IxX3Nsb3QnLCAkbG9nc3Rh cnQsCisJJGluYWN0aXZlX3RpbWVvdXQpOworCisjIFRlc3RjYXNlIGVuZDogSW52YWxpZGF0ZSBz dHJlYW1pbmcgc3RhbmRieSdzIHNsb3QgYXMgd2VsbCBhcyBsb2dpY2FsIGZhaWxvdmVyCisjIHNs b3Qgb24gcHJpbWFyeSBkdWUgdG8gcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0LiBB bHNvLCBjaGVjayB0aGUKKyMgbG9naWNhbCBmYWlsb3ZlciBzbG90IHN5bmNlZCBvbiB0byB0aGUg c3RhbmRieSBkb2Vzbid0IGludmFsaWRhdGUgdGhlIHNsb3Qgb24KKyMgaXRzIG93biwgYnV0IGdl dHMgdGhlIGludmFsaWRhdGVkIHN0YXRlIGZyb20gdGhlIHJlbW90ZSBzbG90IG9uIHRoZSBwcmlt YXJ5LgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cisj IFRlc3RjYXNlIHN0YXJ0OiBJbnZhbGlkYXRlIGxvZ2ljYWwgc3Vic2NyaWJlcidzIHNsb3QgZHVl IHRvCisjIHJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dC4KKworbXkgJHB1Ymxpc2hl ciA9ICRwcmltYXJ5OworCisjIFByZXBhcmUgZm9yIHRoZSBuZXh0IHRlc3QKKyRwdWJsaXNoZXIt PnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKyAgICBBTFRFUiBTWVNURU0gU0VUIHJlcGxp Y2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCBUTyAnMCc7CitdKTsKKyRwdWJsaXNoZXItPnJl bG9hZDsKKworIyBDcmVhdGUgc3Vic2NyaWJlciBub2RlCitteSAkc3Vic2NyaWJlciA9IFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3ViJyk7Ciskc3Vic2NyaWJlci0+aW5pdDsKKyRz dWJzY3JpYmVyLT5zdGFydDsKKworIyBDcmVhdGUgdGFibGVzCiskcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RibCAoaWQgaW50KSIpOworJHN1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRlc3RfdGJsIChpZCBp bnQpIik7CisKKyMgSW5zZXJ0IHNvbWUgZGF0YQorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlc3RfdGJsIFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDEs IDUpKTsiKTsKKworIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlzaGVyX2Nv bm5zdHIgPSAkcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOworJHB1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgUFVCTElDQVRJT04gcHViIEZPUiBB TEwgVEFCTEVTIik7CiskcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisg ICAgU0VMRUNUIHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3Qoc2xvdF9uYW1lIDo9 ICdsc3ViMV9zbG90JywgcGx1Z2luIDo9ICdwZ291dHB1dCcpOworXSk7CisKKyRzdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiBzdWIgQ09OTkVD VElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiBwdWIgV0lUSCAoc2xvdF9uYW1l ID0gJ2xzdWIxX3Nsb3QnLCBjcmVhdGVfc2xvdCA9IGZhbHNlKSIKKyk7CisKKyRzdWJzY3JpYmVy LT53YWl0X2Zvcl9zdWJzY3JpcHRpb25fc3luYygkcHVibGlzaGVyLCAnc3ViJyk7CisKK215ICRy ZXN1bHQgPQorICAkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZXN0X3RibCIpOworCitpcygkcmVzdWx0LCBxcSg1KSwgImNoZWNrIGluaXRp YWwgY29weSB3YXMgZG9uZSIpOworCisjIFByZXBhcmUgZm9yIHRoZSBuZXh0IHRlc3QKKyRwdWJs aXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKyAgICBBTFRFUiBTWVNURU0gU0VU IHJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCBUTyAnICR7aW5hY3RpdmVfdGltZW91 dH1zJzsKK10pOworJHB1Ymxpc2hlci0+cmVsb2FkOworCiskbG9nc3RhcnQgPSAtcyAkcHVibGlz aGVyLT5sb2dmaWxlOworCisjIFN0b3Agc3Vic2NyaWJlciB0byBtYWtlIHRoZSByZXBsaWNhdGlv biBzbG90IG9uIHB1Ymxpc2hlciBpbmFjdGl2ZQorJHN1YnNjcmliZXItPnN0b3A7CisKKyMgV2Fp dCBmb3IgdGhlIHJlcGxpY2F0aW9uIHNsb3QgdG8gYmVjb21lIGluYWN0aXZlIGFuZCB0aGVuIGlu dmFsaWRhdGVkIGR1ZSB0bworIyB0aW1lb3V0Lgord2FpdF9mb3Jfc2xvdF9pbnZhbGlkYXRpb24o JHB1Ymxpc2hlciwgJ2xzdWIxX3Nsb3QnLCAkbG9nc3RhcnQsCisJJGluYWN0aXZlX3RpbWVvdXQp OworCisjIFRlc3RjYXNlIGVuZDogSW52YWxpZGF0ZSBsb2dpY2FsIHN1YnNjcmliZXIncyBzbG90 IGR1ZSB0bworIyByZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQuCisjID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CisKK3N1YiB3YWl0X2Zvcl9zbG90X2ludmFsaWRhdGlvbgoreworCW15ICgk bm9kZSwgJHNsb3RfbmFtZSwgJG9mZnNldCwgJGluYWN0aXZlX3RpbWVvdXQpID0gQF87CisJbXkg JG5hbWUgPSAkbm9kZS0+bmFtZTsKKworCSMgV2FpdCBmb3IgdGhlIHJlcGxpY2F0aW9uIHNsb3Qg dG8gYmVjb21lIGluYWN0aXZlCisJJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3Jl cycsIHFxWworCQlTRUxFQ1QgQ09VTlQoc2xvdF9uYW1lKSA9IDEgRlJPTSBwZ19yZXBsaWNhdGlv bl9zbG90cworCQkJV0hFUkUgc2xvdF9uYW1lID0gJyRzbG90X25hbWUnIEFORCBhY3RpdmUgPSAn Zic7CisJXSkKKwkgIG9yIGRpZQorCSAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzbG90 ICRzbG90X25hbWUgdG8gYmVjb21lIGluYWN0aXZlIG9uIG5vZGUgJG5hbWUiOworCisJIyBXYWl0 IGZvciB0aGUgcmVwbGljYXRpb24gc2xvdCBpbmZvIHRvIGJlIHVwZGF0ZWQKKwkkbm9kZS0+cG9s bF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgcXFbCisJCVNFTEVDVCBDT1VOVChzbG90X25h bWUpID0gMSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJCQlXSEVSRSBpbmFjdGl2ZV9zaW5j ZSBJUyBOT1QgTlVMTAorCQkJCUFORCBzbG90X25hbWUgPSAnJHNsb3RfbmFtZScgQU5EIGFjdGl2 ZSA9ICdmJzsKKwldKQorCSAgb3IgZGllCisJICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9y IGluZm8gb2Ygc2xvdCAkc2xvdF9uYW1lIHRvIGJlIHVwZGF0ZWQgb24gbm9kZSAkbmFtZSI7CisK KwkjIFNsZWVwIGF0IGxlYXN0ICRpbmFjdGl2ZV90aW1lb3V0IGR1cmF0aW9uIHRvIGF2b2lkIG11 bHRpcGxlIGNoZWNrcG9pbnRzCisJIyBmb3IgdGhlIHNsb3QgdG8gZ2V0IGludmFsaWRhdGVkLgor CXNsZWVwKCRpbmFjdGl2ZV90aW1lb3V0KTsKKworCWNoZWNrX2Zvcl9zbG90X2ludmFsaWRhdGlv bl9pbl9zZXJ2ZXJfbG9nKCRub2RlLCAkc2xvdF9uYW1lLCAkb2Zmc2V0KTsKKworCSMgV2FpdCBm b3IgdGhlIGluYWN0aXZlIHJlcGxpY2F0aW9uIHNsb3QgdG8gYmUgaW52YWxpZGF0ZWQKKwkkbm9k ZS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgcXFbCisJCVNFTEVDVCBDT1VOVChz bG90X25hbWUpID0gMSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJCQlXSEVSRSBzbG90X25h bWUgPSAnJHNsb3RfbmFtZScgQU5ECisJCQlpbnZhbGlkYXRpb25fcmVhc29uID0gJ2luYWN0aXZl X3RpbWVvdXQnOworCV0pCisJICBvciBkaWUKKwkgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBm b3IgaW5hY3RpdmUgc2xvdCAkc2xvdF9uYW1lIHRvIGJlIGludmFsaWRhdGVkIG9uIG5vZGUgJG5h bWUiOworCisJIyBDaGVjayB0aGF0IHRoZSBpbnZhbGlkYXRlZCBzbG90IGNhbm5vdCBiZSBhY3F1 aXJlZAorCW15ICgkcmVzdWx0LCAkc3Rkb3V0LCAkc3RkZXJyKTsKKworCSgkcmVzdWx0LCAkc3Rk b3V0LCAkc3RkZXJyKSA9ICRub2RlLT5wc3FsKAorCQkncG9zdGdyZXMnLCBxcVsKKwkJCVNFTEVD VCBwZ19yZXBsaWNhdGlvbl9zbG90X2FkdmFuY2UoJyRzbG90X25hbWUnLCAnMC8xJyk7CisJXSk7 CisKKwlvayggJHN0ZGVyciA9fgorCQkgIC9jYW4gbm8gbG9uZ2VyIGdldCBjaGFuZ2VzIGZyb20g cmVwbGljYXRpb24gc2xvdCAiJHNsb3RfbmFtZSIvLAorCQkiZGV0ZWN0ZWQgZXJyb3IgdXBvbiB0 cnlpbmcgdG8gYWNxdWlyZSBpbnZhbGlkYXRlZCBzbG90ICRzbG90X25hbWUgb24gbm9kZSAkbmFt ZSIKKwkgICkKKwkgIG9yIGRpZQorCSAgImNvdWxkIG5vdCBkZXRlY3QgZXJyb3IgdXBvbiB0cnlp bmcgdG8gYWNxdWlyZSBpbnZhbGlkYXRlZCBzbG90ICRzbG90X25hbWUgb24gbm9kZSAkbmFtZSI7 Cit9CisKKyMgQ2hlY2sgZm9yIGludmFsaWRhdGlvbiBvZiBzbG90IGluIHNlcnZlciBsb2cKK3N1 YiBjaGVja19mb3Jfc2xvdF9pbnZhbGlkYXRpb25faW5fc2VydmVyX2xvZworeworCW15ICgkbm9k ZSwgJHNsb3RfbmFtZSwgJG9mZnNldCkgPSBAXzsKKwlteSAkbmFtZSA9ICRub2RlLT5uYW1lOwor CW15ICRpbnZhbGlkYXRlZCA9IDA7CisKKwlmb3IgKG15ICRpID0gMDsgJGkgPCAxMCAqICRQb3N0 Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0OyAkaSsrKQorCXsKKwkJJG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ0hFQ0tQT0lOVCIpOworCQlpZiAoJG5vZGUtPmxvZ19j b250YWlucygKKwkJCQkiaW52YWxpZGF0aW5nIG9ic29sZXRlIHJlcGxpY2F0aW9uIHNsb3QgXCIk c2xvdF9uYW1lXCIiLAorCQkJCSRvZmZzZXQpKQorCQl7CisJCQkkaW52YWxpZGF0ZWQgPSAxOwor CQkJbGFzdDsKKwkJfQorCQl1c2xlZXAoMTAwXzAwMCk7CisJfQorCW9rKCRpbnZhbGlkYXRlZCwK KwkJImNoZWNrIHRoYXQgc2xvdCAkc2xvdF9uYW1lIGludmFsaWRhdGlvbiBoYXMgYmVlbiBsb2dn ZWQgb24gbm9kZSAkbmFtZSIKKwkpOworfQorCitkb25lX3Rlc3RpbmcoKTsKLS0gCjIuMzQuMQoK --000000000000d623220615f28388 Content-Type: application/x-patch; name="v39-0002-Add-XID-age-based-replication-slot-invalidation.patch" Content-Disposition: attachment; filename="v39-0002-Add-XID-age-based-replication-slot-invalidation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_luwwwj0n1 RnJvbSBjNmNlZTdiMjQ2NTgzYzA1ZTU1YjFlZDViMTRkNGQ3ODZjMmQ4ZGRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMTIgQXByIDIwMjQgMTU6MDA6MDUgKzAw MDAKU3ViamVjdDogW1BBVENIIHYzOSAyLzJdIEFkZCBYSUQgYWdlIGJhc2VkIHJlcGxpY2F0aW9u IHNsb3QgaW52YWxpZGF0aW9uLgoKVGlsbCBub3csIHBvc3RncmVzIGhhcyB0aGUgYWJpbGl0eSB0 byBpbnZhbGlkYXRlIGluYWN0aXZlCnJlcGxpY2F0aW9uIHNsb3RzIGJhc2VkIG9uIHRoZSBhbW91 bnQgb2YgV0FMIChzZXQgdmlhCm1heF9zbG90X3dhbF9rZWVwX3NpemUgR1VDKSB0aGF0IHdpbGwg YmUgbmVlZGVkIGZvciB0aGUgc2xvdHMgaW4KY2FzZSB0aGV5IGJlY29tZSBhY3RpdmUuIEhvd2V2 ZXIsIGNob29zaW5nIGEgZGVmYXVsdCB2YWx1ZSBmb3IKbWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZSBp cyB0cmlja3kuIEJlY2F1c2UgdGhlIGFtb3VudCBvZiBXQUwgYQpjdXN0b21lciBnZW5lcmF0ZXMs IGFuZCB0aGVpciBhbGxvY2F0ZWQgc3RvcmFnZSB3aWxsIHZhcnkgZ3JlYXRseQppbiBwcm9kdWN0 aW9uLCBtYWtpbmcgaXQgZGlmZmljdWx0IHRvIHBpbiBkb3duIGEgb25lLXNpemUtZml0cy1hbGwK dmFsdWUuIEl0IGlzIG9mdGVuIGVhc3kgZm9yIGRldmVsb3BlcnMgdG8gc2V0IGFuIFhJRCBhZ2Ug KGFnZSBvZgpzbG90J3MgeG1pbiBvciBjYXRhbG9nX3htaW4pIG9mIHNheSAxIG9yIDEuNSBiaWxs aW9uLCBhZnRlciB3aGljaAp0aGUgc2xvdHMgZ2V0IGludmFsaWRhdGVkLgoKVG8gYWNoaWV2ZSB0 aGUgYWJvdmUsIHBvc3RncmVzIGludHJvZHVjZXMgYSBHVUMgYWxsb3dpbmcgdXNlcnMKc2V0IHNs b3QgWElEIGFnZS4gVGhlIHJlcGxpY2F0aW9uIHNsb3RzIHdob3NlIHhtaW4gb3IgY2F0YWxvZ194 bWluCmhhcyByZWFjaGVkIHRoZSBhZ2Ugc3BlY2lmaWVkIGJ5IHRoaXMgc2V0dGluZyBnZXQgaW52 YWxpZGF0ZWQuCgpUaGUgaW52YWxpZGF0aW9uIGNoZWNrIGhhcHBlbnMgYXQgdmFyaW91cyBsb2Nh dGlvbnMgdG8gaGVscCBiZWluZwphcyBsYXRlc3QgYXMgcG9zc2libGUsIHRoZXNlIGxvY2F0aW9u cyBpbmNsdWRlIHRoZSBmb2xsb3dpbmc6Ci0gV2hlbmV2ZXIgdGhlIHNsb3QgaXMgYWNxdWlyZWQg YW5kIHRoZSBzbG90IGFjcXVpc2l0aW9uIGVycm9ycwpvdXQgaWYgaW52YWxpZGF0ZWQuCi0gRHVy aW5nIGNoZWNrcG9pbnQKCkF1dGhvcjogQmhhcmF0aCBSdXBpcmVkZHkKUmV2aWV3ZWQtYnk6IEJl cnRyYW5kIERyb3V2b3QsIEFtaXQgS2FwaWxhLCBTaHZldGEgTWFsaWsKRGlzY3Vzc2lvbjogaHR0 cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9DQUxqMkFDVzRhVWUtX3VGUU9qZFdD RU4teFhvTEdobXZSRm5MOFNOd19UWjVuSmUrYXdAbWFpbC5nbWFpbC5jb20KRGlzY3Vzc2lvbjog aHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC8yMDI0MDMyNzE1MDU1Ny5HQTM5 OTQ5MzclNDBuYXRoYW54cHMxMwpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9y Zy9tZXNzYWdlLWlkL0NBJTJCVGdtb2FSRUNjbnlxeEF4VWhQNWRrMlM0SFglM0RwR2gtcC1Qa0Ez dWMlMkJqR185aGlNdyU0MG1haWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5z Z21sICAgICAgICAgICAgICAgICAgICAgIHwgIDI2ICsrCiBkb2Mvc3JjL3NnbWwvc3lzdGVtLXZp ZXdzLnNnbWwgICAgICAgICAgICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdC5jICAgICAgICAgICAgICAgIHwgMTYwICsrKysrKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxz L21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC91dGlscy9t aXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgIDEgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vc2xvdC5oICAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy90ZXN0L3JlY292ZXJ5L3QvMDUw X2ludmFsaWRhdGVfc2xvdHMucGwgICB8IDI5NiArKysrKysrKysrKysrKysrKy0KIDcgZmlsZXMg Y2hhbmdlZCwgNDkwIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRl eCBhNzM2NzdiOThiLi5mN2FlZTQ2NjNmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmln LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC00NTgwLDYgKzQ1ODAsMzIg QEAgcmVzdG9yZV9jb21tYW5kID0gJ2NvcHkgIkM6XFxzZXJ2ZXJcXGFyY2hpdmVkaXJcXCVmIiAi JXAiJyAgIyBXaW5kb3dzCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4K IAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtcmVwbGljYXRpb24tc2xvdC14aWQtYWdlIiB4 cmVmbGFiZWw9InJlcGxpY2F0aW9uX3Nsb3RfeGlkX2FnZSI+CisgICAgICA8dGVybT48dmFybmFt ZT5yZXBsaWNhdGlvbl9zbG90X3hpZF9hZ2U8L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90eXBl PikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+cmVwbGljYXRp b25fc2xvdF94aWRfYWdlPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFy eT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgor ICAgICAgIDxwYXJhPgorICAgICAgICBJbnZhbGlkYXRlIHJlcGxpY2F0aW9uIHNsb3RzIHdob3Nl IDxsaXRlcmFsPnhtaW48L2xpdGVyYWw+ICh0aGUgb2xkZXN0CisgICAgICAgIHRyYW5zYWN0aW9u IHRoYXQgdGhpcyBzbG90IG5lZWRzIHRoZSBkYXRhYmFzZSB0byByZXRhaW4pIG9yCisgICAgICAg IDxsaXRlcmFsPmNhdGFsb2dfeG1pbjwvbGl0ZXJhbD4gKHRoZSBvbGRlc3QgdHJhbnNhY3Rpb24g YWZmZWN0aW5nIHRoZQorICAgICAgICBzeXN0ZW0gY2F0YWxvZ3MgdGhhdCB0aGlzIHNsb3QgbmVl ZHMgdGhlIGRhdGFiYXNlIHRvIHJldGFpbikgaGFzIHJlYWNoZWQKKyAgICAgICAgdGhlIGFnZSBz cGVjaWZpZWQgYnkgdGhpcyBzZXR0aW5nLiBBIHZhbHVlIG9mIHplcm8gKHdoaWNoIGlzIGRlZmF1 bHQpCisgICAgICAgIGRpc2FibGVzIHRoaXMgZmVhdHVyZS4gVXNlcnMgY2FuIHNldCB0aGlzIHZh bHVlIGFueXdoZXJlIGZyb20gemVybyB0bworICAgICAgICB0d28gYmlsbGlvbi4gVGhpcyBwYXJh bWV0ZXIgY2FuIG9ubHkgYmUgc2V0IGluIHRoZQorICAgICAgICA8ZmlsZW5hbWU+cG9zdGdyZXNx bC5jb25mPC9maWxlbmFtZT4gZmlsZSBvciBvbiB0aGUgc2VydmVyIGNvbW1hbmQKKyAgICAgICAg bGluZS4KKyAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBpbnZh bGlkYXRpb24gY2hlY2sgaGFwcGVucyBlaXRoZXIgd2hlbiB0aGUgc2xvdCBpcyBhY3F1aXJlZAor ICAgICAgICBmb3IgdXNlIG9yIGR1cmluZyBhIGNoZWNrcG9pbnQuCisgICAgICAgPC9wYXJhPgor ICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3Rl bnRyeSBpZD0iZ3VjLXRyYWNrLWNvbW1pdC10aW1lc3RhbXAiIHhyZWZsYWJlbD0idHJhY2tfY29t bWl0X3RpbWVzdGFtcCI+CiAgICAgICA8dGVybT48dmFybmFtZT50cmFja19jb21taXRfdGltZXN0 YW1wPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pCiAgICAgICA8aW5kZXh0ZXJtPgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sIGIvZG9jL3NyYy9zZ21s L3N5c3RlbS12aWV3cy5zZ21sCmluZGV4IDA2MzYzOGJlZGEuLjA1YTExYTBmZTMgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvc3lz dGVtLXZpZXdzLnNnbWwKQEAgLTI1ODcsNiArMjU4NywxNCBAQCBTRUxFQ1QgKiBGUk9NIHBnX2xv Y2tzIHBsIExFRlQgSk9JTiBwZ19wcmVwYXJlZF94YWN0cyBwcHgKICAgICAgICAgICA8eHJlZiBs aW5rZW5kPSJndWMtcmVwbGljYXRpb24tc2xvdC1pbmFjdGl2ZS10aW1lb3V0Ii8+IHBhcmFtZXRl ci4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3Rp dGVtPgorICAgICAgICAgPHBhcmE+CisgICAgICAgICAgPGxpdGVyYWw+eGlkX2FnZWQ8L2xpdGVy YWw+IG1lYW5zIHRoYXQgdGhlIHNsb3QncworICAgICAgICAgIDxsaXRlcmFsPnhtaW48L2xpdGVy YWw+IG9yIDxsaXRlcmFsPmNhdGFsb2dfeG1pbjwvbGl0ZXJhbD4KKyAgICAgICAgICBoYXMgcmVh Y2hlZCB0aGUgYWdlIHNwZWNpZmllZCBieQorICAgICAgICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1y ZXBsaWNhdGlvbi1zbG90LXhpZC1hZ2UiLz4gcGFyYW1ldGVyLgorICAgICAgICAgPC9wYXJhPgor ICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgPC9wYXJh PjwvZW50cnk+CiAgICAgIDwvcm93PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCmluZGV4IDdjZmJjMmRm ZmYuLjIwMjllZmU1YTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3Qu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKQEAgLTEwOCwxMCArMTA4LDEx IEBAIGNvbnN0IGNoYXIgKmNvbnN0IFNsb3RJbnZhbGlkYXRpb25DYXVzZXNbXSA9IHsKIAlbUlNf SU5WQUxfSE9SSVpPTl0gPSAicm93c19yZW1vdmVkIiwKIAlbUlNfSU5WQUxfV0FMX0xFVkVMXSA9 ICJ3YWxfbGV2ZWxfaW5zdWZmaWNpZW50IiwKIAlbUlNfSU5WQUxfSU5BQ1RJVkVfVElNRU9VVF0g PSAiaW5hY3RpdmVfdGltZW91dCIsCisJW1JTX0lOVkFMX1hJRF9BR0VdID0gInhpZF9hZ2VkIiwK IH07CiAKIC8qIE1heGltdW0gbnVtYmVyIG9mIGludmFsaWRhdGlvbiBjYXVzZXMgKi8KLSNkZWZp bmUJUlNfSU5WQUxfTUFYX0NBVVNFUyBSU19JTlZBTF9JTkFDVElWRV9USU1FT1VUCisjZGVmaW5l CVJTX0lOVkFMX01BWF9DQVVTRVMgUlNfSU5WQUxfWElEX0FHRQogCiBTdGF0aWNBc3NlcnREZWNs KGxlbmd0aG9mKFNsb3RJbnZhbGlkYXRpb25DYXVzZXMpID09IChSU19JTlZBTF9NQVhfQ0FVU0VT ICsgMSksCiAJCQkJICJhcnJheSBsZW5ndGggbWlzbWF0Y2giKTsKQEAgLTE0Miw2ICsxNDMsNyBA QCBSZXBsaWNhdGlvblNsb3QgKk15UmVwbGljYXRpb25TbG90ID0gTlVMTDsKIGludAkJCW1heF9y ZXBsaWNhdGlvbl9zbG90cyA9IDEwOyAvKiB0aGUgbWF4aW11bSBudW1iZXIgb2YgcmVwbGljYXRp b24KIAkJCQkJCQkJCQkgKiBzbG90cyAqLwogaW50CQkJcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2 ZV90aW1lb3V0ID0gMDsKK2ludAkJCXJlcGxpY2F0aW9uX3Nsb3RfeGlkX2FnZSA9IDA7CiAKIC8q CiAgKiBUaGlzIEdVQyBsaXN0cyBzdHJlYW1pbmcgcmVwbGljYXRpb24gc3RhbmRieSBzZXJ2ZXIg c2xvdCBuYW1lcyB0aGF0CkBAIC0xNjAsNiArMTYyLDkgQEAgc3RhdGljIFhMb2dSZWNQdHIgc3Nf b2xkZXN0X2ZsdXNoX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCiBzdGF0aWMgdm9pZCBSZXBs aWNhdGlvblNsb3RTaG1lbUV4aXQoaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBS ZXBsaWNhdGlvblNsb3REcm9wUHRyKFJlcGxpY2F0aW9uU2xvdCAqc2xvdCk7CitzdGF0aWMgYm9v bCBSZXBsaWNhdGlvblNsb3RJc1hJREFnZWQoUmVwbGljYXRpb25TbG90ICpzbG90LAorCQkJCQkJ CQkJIFRyYW5zYWN0aW9uSWQgKnhtaW4sCisJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqY2F0YWxv Z194bWluKTsKIAogc3RhdGljIGJvb2wgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJl cGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGNhdXNlLAogCQkJCQkJCQkJCSAgIFJlcGxp Y2F0aW9uU2xvdCAqcywKQEAgLTYzNiw4ICs2NDEsOCBAQCByZXRyeToKIAkgKiBpdCBnZXRzIGlu dmFsaWRhdGVkIG5vdyBvciBoYXMgYmVlbiBpbnZhbGlkYXRlZCBwcmV2aW91c2x5LCBiZWNhdXNl CiAJICogdGhlcmUncyBubyB1c2UgaW4gYWNxdWlyaW5nIHRoZSBpbnZhbGlkYXRlZCBzbG90Lgog CSAqCi0JICogWFhYOiBDdXJyZW50bHkgd2UgY2hlY2sgZm9yIGluYWN0aXZlX3RpbWVvdXQgaW52 YWxpZGF0aW9uIGhlcmUuIFdlCi0JICogbWlnaHQgbmVlZCB0byBjaGVjayBmb3Igb3RoZXIgaW52 YWxpZGF0aW9ucyB0b28uCisJICogWFhYOiBDdXJyZW50bHkgd2UgY2hlY2sgZm9yIGluYWN0aXZl X3RpbWVvdXQgYW5kIHhpZF9hZ2VkIGludmFsaWRhdGlvbnMKKwkgKiBoZXJlLiBXZSBtaWdodCBu ZWVkIHRvIGNoZWNrIGZvciBvdGhlciBpbnZhbGlkYXRpb25zIHRvby4KIAkgKi8KIAlpZiAoY2hl Y2tfZm9yX2ludmFsaWRhdGlvbikKIAl7CkBAIC02NDgsNiArNjUzLDIyIEBAIHJldHJ5OgogCQkJ CQkJCQkJCQkJCSAgIEludmFsaWRUcmFuc2FjdGlvbklkLAogCQkJCQkJCQkJCQkJCSAgICZpbnZh bGlkYXRlZCk7CiAKKwkJaWYgKCFpbnZhbGlkYXRlZCAmJiByZWxlYXNlZF9sb2NrKQorCQl7CisJ CQkvKiBUaGUgc2xvdCBpcyBzdGlsbCBvdXJzICovCisJCQlBc3NlcnQocy0+YWN0aXZlX3BpZCA9 PSBNeVByb2NQaWQpOworCisJCQkvKiBSZWFjcXVpcmUgdGhlIENvbnRyb2xMb2NrICovCisJCQlM V0xvY2tBY3F1aXJlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrLCBMV19TSEFSRUQpOworCQkJ cmVsZWFzZWRfbG9jayA9IGZhbHNlOworCQl9CisKKwkJaWYgKCFpbnZhbGlkYXRlZCkKKwkJCXJl bGVhc2VkX2xvY2sgPSBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUlNfSU5WQUxfWElE X0FHRSwKKwkJCQkJCQkJCQkJCQkJICAgcywgMCwgSW52YWxpZE9pZCwKKwkJCQkJCQkJCQkJCQkJ ICAgSW52YWxpZFRyYW5zYWN0aW9uSWQsCisJCQkJCQkJCQkJCQkJCSAgICZpbnZhbGlkYXRlZCk7 CisKIAkJLyoKIAkJICogSWYgdGhlIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQsIHJlY2FsY3Vs YXRlIHRoZSByZXNvdXJjZSBsaW1pdHMuCiAJCSAqLwpAQCAtNjU3LDcgKzY3OCw4IEBAIHJldHJ5 OgogCQkJUmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExTTigpOwogCQl9CiAKLQkJaWYg KHMtPmRhdGEuaW52YWxpZGF0ZWQgPT0gUlNfSU5WQUxfSU5BQ1RJVkVfVElNRU9VVCkKKwkJaWYg KHMtPmRhdGEuaW52YWxpZGF0ZWQgPT0gUlNfSU5WQUxfSU5BQ1RJVkVfVElNRU9VVCB8fAorCQkJ cy0+ZGF0YS5pbnZhbGlkYXRlZCA9PSBSU19JTlZBTF9YSURfQUdFKQogCQl7CiAJCQkvKgogCQkJ ICogUmVsZWFzZSB0aGUgbG9jayBpZiBpdCdzIG5vdCB5ZXQgdG8ga2VlcCB0aGUgY2xlYW51cCBw YXRoIG9uCkBAIC02NjUsNyArNjg3LDEwIEBAIHJldHJ5OgogCQkJICovCiAJCQlpZiAoIXJlbGVh c2VkX2xvY2spCiAJCQkJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jayk7 CisJCX0KIAorCQlpZiAocy0+ZGF0YS5pbnZhbGlkYXRlZCA9PSBSU19JTlZBTF9JTkFDVElWRV9U SU1FT1VUKQorCQl7CiAJCQlBc3NlcnQocy0+aW5hY3RpdmVfc2luY2UgPiAwKTsKIAkJCWVyZXBv cnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJ VEVfU1RBVEUpLApAQCAtNjc1LDYgKzcwMCwyMCBAQCByZXRyeToKIAkJCQkJCQkgICB0aW1lc3Rh bXB0el90b19zdHIocy0+aW5hY3RpdmVfc2luY2UpLAogCQkJCQkJCSAgIHJlcGxpY2F0aW9uX3Ns b3RfaW5hY3RpdmVfdGltZW91dCkpKTsKIAkJfQorCisJCWlmIChzLT5kYXRhLmludmFsaWRhdGVk ID09IFJTX0lOVkFMX1hJRF9BR0UpCisJCXsKKwkJCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxp ZChzLT5kYXRhLnhtaW4pIHx8CisJCQkJICAgVHJhbnNhY3Rpb25JZElzVmFsaWQocy0+ZGF0YS5j YXRhbG9nX3htaW4pKTsKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVf T0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJjYW4gbm8g bG9uZ2VyIGdldCBjaGFuZ2VzIGZyb20gcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAorCQkJCQkJ CU5hbWVTdHIocy0+ZGF0YS5uYW1lKSksCisJCQkJCSBlcnJkZXRhaWwoIlRoZSBzbG90J3MgeG1p biAldSBvciBjYXRhbG9nX3htaW4gJXUgaGFzIHJlYWNoZWQgdGhlIGFnZSAlZCBzcGVjaWZpZWQg YnkgcmVwbGljYXRpb25fc2xvdF94aWRfYWdlLiIsCisJCQkJCQkJICAgcy0+ZGF0YS54bWluLAor CQkJCQkJCSAgIHMtPmRhdGEuY2F0YWxvZ194bWluLAorCQkJCQkJCSAgIHJlcGxpY2F0aW9uX3Ns b3RfeGlkX2FnZSkpKTsKKwkJfQogCX0KIAogCWlmICghcmVsZWFzZWRfbG9jaykKQEAgLTE1NDIs NyArMTU4MSw5IEBAIFJlcG9ydFNsb3RJbnZhbGlkYXRpb24oUmVwbGljYXRpb25TbG90SW52YWxp ZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCQkJCSAgIFhMb2dSZWNQdHIgcmVzdGFydF9sc24sCiAJCQkJ CSAgIFhMb2dSZWNQdHIgb2xkZXN0TFNOLAogCQkJCQkgICBUcmFuc2FjdGlvbklkIHNuYXBzaG90 Q29uZmxpY3RIb3Jpem9uLAotCQkJCQkgICBUaW1lc3RhbXBUeiBpbmFjdGl2ZV9zaW5jZSkKKwkJ CQkJICAgVGltZXN0YW1wVHogaW5hY3RpdmVfc2luY2UsCisJCQkJCSAgIFRyYW5zYWN0aW9uSWQg eG1pbiwKKwkJCQkJICAgVHJhbnNhY3Rpb25JZCBjYXRhbG9nX3htaW4pCiB7CiAJU3RyaW5nSW5m b0RhdGEgZXJyX2RldGFpbDsKIAlib29sCQloaW50ID0gZmFsc2U7CkBAIC0xNTc5LDYgKzE2MjAs MjcgQEAgUmVwb3J0U2xvdEludmFsaWRhdGlvbihSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25D YXVzZSBjYXVzZSwKIAkJCQkJCQkgdGltZXN0YW1wdHpfdG9fc3RyKGluYWN0aXZlX3NpbmNlKSwK IAkJCQkJCQkgcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0KTsKIAkJCWJyZWFrOwor CQljYXNlIFJTX0lOVkFMX1hJRF9BR0U6CisJCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQo eG1pbikgfHwKKwkJCQkgICBUcmFuc2FjdGlvbklkSXNWYWxpZChjYXRhbG9nX3htaW4pKTsKKwor CQkJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhtaW4pKQorCQkJeworCQkJCWFwcGVuZFN0cmlu Z0luZm8oJmVycl9kZXRhaWwsIF8oIlRoZSBzbG90J3MgeG1pbiAldSBoYXMgcmVhY2hlZCB0aGUg YWdlICVkIHNwZWNpZmllZCBieSByZXBsaWNhdGlvbl9zbG90X3hpZF9hZ2UuIiksCisJCQkJCQkJ CSB4bWluLAorCQkJCQkJCQkgcmVwbGljYXRpb25fc2xvdF94aWRfYWdlKTsKKwkJCQlicmVhazsK KwkJCX0KKworCQkJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGNhdGFsb2dfeG1pbikpCisJCQl7 CisJCQkJYXBwZW5kU3RyaW5nSW5mbygmZXJyX2RldGFpbCwgXygiVGhlIHNsb3QncyBjYXRhbG9n X3htaW4gJXUgaGFzIHJlYWNoZWQgdGhlIGFnZSAlZCBzcGVjaWZpZWQgYnkgcmVwbGljYXRpb25f c2xvdF94aWRfYWdlLiIpLAorCQkJCQkJCQkgY2F0YWxvZ194bWluLAorCQkJCQkJCQkgcmVwbGlj YXRpb25fc2xvdF94aWRfYWdlKTsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJYnJlYWs7CiAJCWNh c2UgUlNfSU5WQUxfTk9ORToKIAkJCXBnX3VucmVhY2hhYmxlKCk7CiAJfQpAQCAtMTYyMyw2ICsx Njg1LDggQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdElu dmFsaWRhdGlvbkNhdXNlIGNhdXNlLAogCVhMb2dSZWNQdHIJaW5pdGlhbF9yZXN0YXJ0X2xzbiA9 IEludmFsaWRYTG9nUmVjUHRyOwogCVJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGlu dmFsaWRhdGlvbl9jYXVzZV9wcmV2IFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWSA9IFJTX0lOVkFM X05PTkU7CiAJVGltZXN0YW1wVHogaW5hY3RpdmVfc2luY2UgPSAwOworCVRyYW5zYWN0aW9uSWQg YWdlZF94bWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJVHJhbnNhY3Rpb25JZCBhZ2VkX2Nh dGFsb2dfeG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCiAJZm9yICg7OykKIAl7CkBAIC0x NzM5LDYgKzE4MDMsMTYgQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0 aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGNhdXNlLAogCQkJCQkJQXNzZXJ0KHMtPmFjdGl2ZV9w aWQgPT0gMCk7CiAJCQkJCX0KIAkJCQkJYnJlYWs7CisJCQkJY2FzZSBSU19JTlZBTF9YSURfQUdF OgorCQkJCQlpZiAoUmVwbGljYXRpb25TbG90SXNYSURBZ2VkKHMsICZhZ2VkX3htaW4sICZhZ2Vk X2NhdGFsb2dfeG1pbikpCisJCQkJCXsKKwkJCQkJCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxp ZChhZ2VkX3htaW4pIHx8CisJCQkJCQkJICAgVHJhbnNhY3Rpb25JZElzVmFsaWQoYWdlZF9jYXRh bG9nX3htaW4pKTsKKworCQkJCQkJaW52YWxpZGF0aW9uX2NhdXNlID0gY2F1c2U7CisJCQkJCQli cmVhazsKKwkJCQkJfQorCQkJCQlicmVhazsKIAkJCQljYXNlIFJTX0lOVkFMX05PTkU6CiAJCQkJ CXBnX3VucmVhY2hhYmxlKCk7CiAJCQl9CkBAIC0xODI3LDcgKzE5MDEsOCBAQCBJbnZhbGlkYXRl UG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1 c2UsCiAJCQkJUmVwb3J0U2xvdEludmFsaWRhdGlvbihpbnZhbGlkYXRpb25fY2F1c2UsIHRydWUs IGFjdGl2ZV9waWQsCiAJCQkJCQkJCQkgICBzbG90bmFtZSwgcmVzdGFydF9sc24sCiAJCQkJCQkJ CQkgICBvbGRlc3RMU04sIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAotCQkJCQkJCQkJICAgaW5h Y3RpdmVfc2luY2UpOworCQkJCQkJCQkJICAgaW5hY3RpdmVfc2luY2UsIGFnZWRfeG1pbiwKKwkJ CQkJCQkJCSAgIGFnZWRfY2F0YWxvZ194bWluKTsKIAogCQkJCWlmIChNeUJhY2tlbmRUeXBlID09 IEJfU1RBUlRVUCkKIAkJCQkJKHZvaWQpIFNlbmRQcm9jU2lnbmFsKGFjdGl2ZV9waWQsCkBAIC0x ODc0LDcgKzE5NDksOCBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRp b25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCQlSZXBvcnRTbG90SW52YWxpZGF0aW9u KGludmFsaWRhdGlvbl9jYXVzZSwgZmFsc2UsIGFjdGl2ZV9waWQsCiAJCQkJCQkJCSAgIHNsb3Ru YW1lLCByZXN0YXJ0X2xzbiwKIAkJCQkJCQkJICAgb2xkZXN0TFNOLCBzbmFwc2hvdENvbmZsaWN0 SG9yaXpvbiwKLQkJCQkJCQkJICAgaW5hY3RpdmVfc2luY2UpOworCQkJCQkJCQkgICBpbmFjdGl2 ZV9zaW5jZSwgYWdlZF94bWluLAorCQkJCQkJCQkgICBhZ2VkX2NhdGFsb2dfeG1pbik7CiAKIAkJ CS8qIGRvbmUgd2l0aCB0aGlzIHNsb3QgZm9yIG5vdyAqLwogCQkJYnJlYWs7CkBAIC0xODk4LDYg KzE5NzQsNyBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90 SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAgKiAgIGRiOyBkYm9pZCBtYXkgYmUgSW52YWxpZE9p ZCBmb3Igc2hhcmVkIHJlbGF0aW9ucwogICogLSBSU19JTlZBTF9XQUxfTEVWRUw6IGlzIGxvZ2lj YWwKICAqIC0gUlNfSU5WQUxfSU5BQ1RJVkVfVElNRU9VVDogaW5hY3RpdmUgdGltZW91dCBvY2N1 cnMKKyAqIC0gUlNfSU5WQUxfWElEX0FHRTogc2xvdCdzIHhtaW4gb3IgY2F0YWxvZ194bWluIGhh cyByZWFjaGVkIHRoZSBhZ2UKICAqCiAgKiBOQiAtIHRoaXMgcnVucyBhcyBwYXJ0IG9mIGNoZWNr cG9pbnQsIHNvIGF2b2lkIHJhaXNpbmcgZXJyb3JzIGlmIHBvc3NpYmxlLgogICovCkBAIC0yMDMx LDE0ICsyMTA4LDIwIEBAIENoZWNrUG9pbnRSZXBsaWNhdGlvblNsb3RzKGJvb2wgaXNfc2h1dGRv d24pCiAJICoKIAkgKiAtIEF2b2lkIHNhdmluZyBzbG90IGluZm8gdG8gZGlzayB0d28gdGltZXMg Zm9yIGVhY2ggaW52YWxpZGF0ZWQgc2xvdC4KIAkgKgotCSAqIFhYWDogU2hvdWxkIHdlIG1vdmUg aW5hY3RpdmVfdGltZW91dCBpbmF2YWxpZGF0aW9uIGNoZWNrIGNsb3NlciB0bwotCSAqIHdhbF9y ZW1vdmVkIGluIENyZWF0ZUNoZWNrUG9pbnQgYW5kIENyZWF0ZVJlc3RhcnRQb2ludD8KKwkgKiBY WFg6IFNob3VsZCB3ZSBtb3ZlIGluYWN0aXZlX3RpbWVvdXQgYW5kIHhpZF9hZ2VkIGluYXZhbGlk YXRpb24gY2hlY2tzCisJICogY2xvc2VyIHRvIHdhbF9yZW1vdmVkIGluIENyZWF0ZUNoZWNrUG9p bnQgYW5kIENyZWF0ZVJlc3RhcnRQb2ludD8KIAkgKi8KIAlpbnZhbGlkYXRlZCA9IEludmFsaWRh dGVPYnNvbGV0ZVJlcGxpY2F0aW9uU2xvdHMoUlNfSU5WQUxfSU5BQ1RJVkVfVElNRU9VVCwKIAkJ CQkJCQkJCQkJCQkgMCwKIAkJCQkJCQkJCQkJCQkgSW52YWxpZE9pZCwKIAkJCQkJCQkJCQkJCQkg SW52YWxpZFRyYW5zYWN0aW9uSWQpOwogCisJaWYgKCFpbnZhbGlkYXRlZCkKKwkJaW52YWxpZGF0 ZWQgPSBJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKFJTX0lOVkFMX1hJRF9BR0Us CisJCQkJCQkJCQkJCQkJCSAwLAorCQkJCQkJCQkJCQkJCQkgSW52YWxpZE9pZCwKKwkJCQkJCQkJ CQkJCQkJIEludmFsaWRUcmFuc2FjdGlvbklkKTsKKwogCWlmIChpbnZhbGlkYXRlZCkKIAl7CiAJ CS8qCkBAIC0yMDUwLDYgKzIxMzMsNjUgQEAgQ2hlY2tQb2ludFJlcGxpY2F0aW9uU2xvdHMoYm9v bCBpc19zaHV0ZG93bikKIAl9CiB9CiAKKy8qCisgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVu IHJlcGxpY2F0aW9uIHNsb3QncyB4bWluIG9yIGNhdGFsb2dfeG1pbiBhZ2UgaXMKKyAqIG1vcmUg dGhhbiByZXBsaWNhdGlvbl9zbG90X3hpZF9hZ2UuCisgKgorICogTm90ZSB0aGF0IHRoZSBjYWxs ZXIgbXVzdCBob2xkIHRoZSByZXBsaWNhdGlvbiBzbG90J3Mgc3BpbmxvY2sgdG8gYXZvaWQKKyAq IHJhY2UgY29uZGl0aW9ucyB3aGlsZSB0aGlzIGZ1bmN0aW9uIHJlYWRzIHhtaW4gYW5kIGNhdGFs b2dfeG1pbi4KKyAqLworc3RhdGljIGJvb2wKK1JlcGxpY2F0aW9uU2xvdElzWElEQWdlZChSZXBs aWNhdGlvblNsb3QgKnNsb3QsIFRyYW5zYWN0aW9uSWQgKnhtaW4sCisJCQkJCQkgVHJhbnNhY3Rp b25JZCAqY2F0YWxvZ194bWluKQoreworCVRyYW5zYWN0aW9uSWQgY3V0b2ZmOworCVRyYW5zYWN0 aW9uSWQgY3VycjsKKworCWlmIChyZXBsaWNhdGlvbl9zbG90X3hpZF9hZ2UgPT0gMCkKKwkJcmV0 dXJuIGZhbHNlOworCisJY3VyciA9IFJlYWROZXh0VHJhbnNhY3Rpb25JZCgpOworCisJLyoKKwkg KiBSZXBsaWNhdGlvbiBzbG90J3MgeG1pbiBhbmQgY2F0YWxvZ194bWluIGNhbiBuZXZlciBiZSBs YXJnZXIgdGhhbiB0aGUKKwkgKiBjdXJyZW50IHRyYW5zYWN0aW9uIGlkIGV2ZW4gaW4gdGhlIGNh c2Ugb2YgdHJhbnNhY3Rpb24gSUQgd3JhcGFyb3VuZC4KKwkgKi8KKwlBc3NlcnQoc2xvdC0+ZGF0 YS54bWluIDw9IGN1cnIpOworCUFzc2VydChzbG90LT5kYXRhLmNhdGFsb2dfeG1pbiA8PSBjdXJy KTsKKworCS8qCisJICogVGhlIGN1dG9mZiBjYW4gdGVsbCBob3cgZmFyIHdlIGNhbiBnbyBiYWNr IGZyb20gdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24KKwkgKiBpZCB0aWxsIHRoZSBhZ2UuIEFuZCB0 aGVuLCB3ZSBjaGVjayB3aGV0aGVyIG9yIG5vdCB0aGUgeG1pbiBvcgorCSAqIGNhdGFsb2dfeG1p biBmYWxscyB3aXRoaW4gdGhlIGN1dG9mZjsgaWYgeWVzLCByZXR1cm4gdHJ1ZSwgb3RoZXJ3aXNl CisJICogZmFsc2UuCisJICovCisJY3V0b2ZmID0gY3VyciAtIHJlcGxpY2F0aW9uX3Nsb3RfeGlk X2FnZTsKKworCWlmICghVHJhbnNhY3Rpb25JZElzTm9ybWFsKGN1dG9mZikpCisJeworCQljdXRv ZmYgPSBGaXJzdE5vcm1hbFRyYW5zYWN0aW9uSWQ7CisJfQorCisJKnhtaW4gPSBJbnZhbGlkVHJh bnNhY3Rpb25JZDsKKwkqY2F0YWxvZ194bWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisKKwlp ZiAoVHJhbnNhY3Rpb25JZElzTm9ybWFsKHNsb3QtPmRhdGEueG1pbikgJiYKKwkJVHJhbnNhY3Rp b25JZFByZWNlZGVzT3JFcXVhbHMoc2xvdC0+ZGF0YS54bWluLCBjdXRvZmYpKQorCXsKKwkJKnht aW4gPSBzbG90LT5kYXRhLnhtaW47CisJCXJldHVybiB0cnVlOworCX0KKworCWlmIChUcmFuc2Fj dGlvbklkSXNOb3JtYWwoc2xvdC0+ZGF0YS5jYXRhbG9nX3htaW4pICYmCisJCVRyYW5zYWN0aW9u SWRQcmVjZWRlc09yRXF1YWxzKHNsb3QtPmRhdGEuY2F0YWxvZ194bWluLCBjdXRvZmYpKQorCXsK KwkJKmNhdGFsb2dfeG1pbiA9IHNsb3QtPmRhdGEuY2F0YWxvZ194bWluOworCQlyZXR1cm4gdHJ1 ZTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKIC8qCiAgKiBMb2FkIGFsbCByZXBsaWNhdGlv biBzbG90cyBmcm9tIGRpc2sgaW50byBtZW1vcnkgYXQgc2VydmVyIHN0YXJ0dXAuIFRoaXMKICAq IG5lZWRzIHRvIGJlIHJ1biBiZWZvcmUgd2Ugc3RhcnQgY3Jhc2ggcmVjb3ZlcnkuCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IDc5ZTc2MzdlYzkuLmVhNzBlODMzNTAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCkBAIC0yOTk0LDYgKzI5OTQsMTYgQEAgc3RydWN0 IGNvbmZpZ19pbnQgQ29uZmlndXJlTmFtZXNJbnRbXSA9CiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9 LAogCisJeworCQl7InJlcGxpY2F0aW9uX3Nsb3RfeGlkX2FnZSIsIFBHQ19TSUdIVVAsIFJFUExJ Q0FUSU9OX1NFTkRJTkcsCisJCQlnZXR0ZXh0X25vb3AoIkFnZSBvZiB0aGUgdHJhbnNhY3Rpb24g SUQgYXQgd2hpY2ggYSByZXBsaWNhdGlvbiBzbG90IGdldHMgaW52YWxpZGF0ZWQuIiksCisJCQln ZXR0ZXh0X25vb3AoIlRoZSB0cmFuc2FjdGlvbiBpcyB0aGUgb2xkZXN0IHRyYW5zYWN0aW9uIChp bmNsdWRpbmcgdGhlIG9uZSBhZmZlY3RpbmcgdGhlIHN5c3RlbSBjYXRhbG9ncykgdGhhdCBhIHJl cGxpY2F0aW9uIHNsb3QgbmVlZHMgdGhlIGRhdGFiYXNlIHRvIHJldGFpbi4iKQorCQl9LAorCQkm cmVwbGljYXRpb25fc2xvdF94aWRfYWdlLAorCQkwLCAwLCAyMDAwMDAwMDAwLAorCQlOVUxMLCBO VUxMLCBOVUxMCisJfSwKKwogCXsKIAkJeyJjb21taXRfZGVsYXkiLCBQR0NfU1VTRVQsIFdBTF9T RVRUSU5HUywKIAkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgZGVsYXkgaW4gbWljcm9zZWNvbmRz IGJldHdlZW4gdHJhbnNhY3Rpb24gY29tbWl0IGFuZCAiCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggODE5MzEwYjBhNy4uYTIzODdlYmQzMyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxl CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAt MzM2LDYgKzMzNiw3IEBACiAjdHJhY2tfY29tbWl0X3RpbWVzdGFtcCA9IG9mZgkjIGNvbGxlY3Qg dGltZXN0YW1wIG9mIHRyYW5zYWN0aW9uIGNvbW1pdAogCQkJCSMgKGNoYW5nZSByZXF1aXJlcyBy ZXN0YXJ0KQogI3JlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCA9IDAJIyBpbiBzZWNv bmRzOyAwIGRpc2FibGVzCisjcmVwbGljYXRpb25fc2xvdF94aWRfYWdlID0gMAogCiAjIC0gUHJp bWFyeSBTZXJ2ZXIgLQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90 LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKaW5kZXggODcyN2I3YjU4Yi4uMTll NWRiZmIzNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCisrKyBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaApAQCAtNTUsNiArNTUsOCBAQCB0eXBlZGVm IGVudW0gUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UKIAlSU19JTlZBTF9XQUxfTEVW RUwsCiAJLyogaW5hY3RpdmUgc2xvdCB0aW1lb3V0IGhhcyBvY2N1cnJlZCAqLwogCVJTX0lOVkFM X0lOQUNUSVZFX1RJTUVPVVQsCisJLyogc2xvdCdzIHhtaW4gb3IgY2F0YWxvZ194bWluIGhhcyBy ZWFjaGVkIHRoZSBhZ2UgKi8KKwlSU19JTlZBTF9YSURfQUdFLAogfSBSZXBsaWNhdGlvblNsb3RJ bnZhbGlkYXRpb25DYXVzZTsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGNvbnN0IGNoYXIgKmNvbnN0 IFNsb3RJbnZhbGlkYXRpb25DYXVzZXNbXTsKQEAgLTIzMyw2ICsyMzUsNyBAQCBleHRlcm4gUEdE TExJTVBPUlQgUmVwbGljYXRpb25TbG90ICpNeVJlcGxpY2F0aW9uU2xvdDsKIGV4dGVybiBQR0RM TElNUE9SVCBpbnQgbWF4X3JlcGxpY2F0aW9uX3Nsb3RzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGNo YXIgKnN0YW5kYnlfc2xvdF9uYW1lczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgcmVwbGljYXRp b25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0OworZXh0ZXJuIFBHRExMSU1QT1JUIGludCByZXBsaWNh dGlvbl9zbG90X3hpZF9hZ2U7CiAKIC8qIHNobWVtIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyAq LwogZXh0ZXJuIFNpemUgUmVwbGljYXRpb25TbG90c1NobWVtU2l6ZSh2b2lkKTsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUwX2ludmFsaWRhdGVfc2xvdHMucGwgYi9zcmMvdGVz dC9yZWNvdmVyeS90LzA1MF9pbnZhbGlkYXRlX3Nsb3RzLnBsCmluZGV4IDQ2NjMwMTljMTYuLmRh MDUzNTBkZjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUwX2ludmFsaWRhdGVf c2xvdHMucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTBfaW52YWxpZGF0ZV9zbG90cy5w bApAQCAtODksNyArODksNyBAQCAkcHJpbWFyeS0+cmVsb2FkOwogIyB0aGF0IG5vYm9keSBoYXMg YWNxdWlyZWQgdGhhdCBzbG90IHlldCwgc28gZHVlIHRvCiAjIHJlcGxpY2F0aW9uX3Nsb3RfaW5h Y3RpdmVfdGltZW91dCBzZXR0aW5nIGFib3ZlIGl0IG11c3QgZ2V0IGludmFsaWRhdGVkLgogd2Fp dF9mb3Jfc2xvdF9pbnZhbGlkYXRpb24oJHByaW1hcnksICdsc3ViMV9zeW5jX3Nsb3QnLCAkbG9n c3RhcnQsCi0JJGluYWN0aXZlX3RpbWVvdXQpOworCSRpbmFjdGl2ZV90aW1lb3V0LCAnaW5hY3Rp dmVfdGltZW91dCcpOwogCiAjIFNldCB0aW1lb3V0IG9uIHRoZSBzdGFuZGJ5IGFsc28gdG8gY2hl Y2sgdGhlIHN5bmNlZCBzbG90cyBkb24ndCBnZXQKICMgaW52YWxpZGF0ZWQgZHVlIHRvIHRpbWVv dXQgb24gdGhlIHN0YW5kYnkuCkBAIC0xMjksNyArMTI5LDcgQEAgJHN0YW5kYnkxLT5zdG9wOwog CiAjIFdhaXQgZm9yIHRoZSBzdGFuZGJ5J3MgcmVwbGljYXRpb24gc2xvdCB0byBiZWNvbWUgaW5h Y3RpdmUKIHdhaXRfZm9yX3Nsb3RfaW52YWxpZGF0aW9uKCRwcmltYXJ5LCAnc2IxX3Nsb3QnLCAk bG9nc3RhcnQsCi0JJGluYWN0aXZlX3RpbWVvdXQpOworCSRpbmFjdGl2ZV90aW1lb3V0LCAnaW5h Y3RpdmVfdGltZW91dCcpOwogCiAjIFRlc3RjYXNlIGVuZDogSW52YWxpZGF0ZSBzdHJlYW1pbmcg c3RhbmRieSdzIHNsb3QgYXMgd2VsbCBhcyBsb2dpY2FsIGZhaWxvdmVyCiAjIHNsb3Qgb24gcHJp bWFyeSBkdWUgdG8gcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0LiBBbHNvLCBjaGVj ayB0aGUKQEAgLTE5NywxNSArMTk3LDI4MCBAQCAkc3Vic2NyaWJlci0+c3RvcDsKICMgV2FpdCBm b3IgdGhlIHJlcGxpY2F0aW9uIHNsb3QgdG8gYmVjb21lIGluYWN0aXZlIGFuZCB0aGVuIGludmFs aWRhdGVkIGR1ZSB0bwogIyB0aW1lb3V0Lgogd2FpdF9mb3Jfc2xvdF9pbnZhbGlkYXRpb24oJHB1 Ymxpc2hlciwgJ2xzdWIxX3Nsb3QnLCAkbG9nc3RhcnQsCi0JJGluYWN0aXZlX3RpbWVvdXQpOwor CSRpbmFjdGl2ZV90aW1lb3V0LCAnaW5hY3RpdmVfdGltZW91dCcpOwogCiAjIFRlc3RjYXNlIGVu ZDogSW52YWxpZGF0ZSBsb2dpY2FsIHN1YnNjcmliZXIncyBzbG90IGR1ZSB0bwogIyByZXBsaWNh dGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQuCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKKyMg PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKyMgVGVzdGNhc2Ugc3RhcnQ6IEludmFsaWRhdGUgc3RyZWFt aW5nIHN0YW5kYnkncyBzbG90IGR1ZSB0byByZXBsaWNhdGlvbl9zbG90X3hpZF9hZ2UKKyMgR1VD LgorCisjIFByZXBhcmUgZm9yIHRoZSBuZXh0IHRlc3QKKyRwcmltYXJ5LT5zYWZlX3BzcWwoCisJ J3Bvc3RncmVzJywgcXFbCisgICAgQUxURVIgU1lTVEVNIFNFVCByZXBsaWNhdGlvbl9zbG90X2lu YWN0aXZlX3RpbWVvdXQgVE8gJzAnOworXSk7CiskcHJpbWFyeS0+cmVsb2FkOworCisjIENyZWF0 ZSBhIHN0YW5kYnkgbGlua2luZyB0byB0aGUgcHJpbWFyeSB1c2luZyB0aGUgcmVwbGljYXRpb24g c2xvdAorbXkgJHN0YW5kYnkyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdGFu ZGJ5MicpOworJHN0YW5kYnkyLT5pbml0X2Zyb21fYmFja3VwKCRwcmltYXJ5LCAkYmFja3VwX25h bWUsIGhhc19zdHJlYW1pbmcgPT4gMSk7CisKKyMgRW5hYmxlIGhzX2ZlZWRiYWNrLiBUaGUgc2xv dCBzaG91bGQgZ2FpbiBhbiB4bWluLiBXZSBzZXQgdGhlIHN0YXR1cyBpbnRlcnZhbAorIyBzbyB3 ZSdsbCBzZWUgdGhlIHJlc3VsdHMgcHJvbXB0bHkuCiskc3RhbmRieTItPmFwcGVuZF9jb25mKAor CSdwb3N0Z3Jlc3FsLmNvbmYnLCBxeworcHJpbWFyeV9zbG90X25hbWUgPSAnc2IyX3Nsb3QnCito b3Rfc3RhbmRieV9mZWVkYmFjayA9IG9uCit3YWxfcmVjZWl2ZXJfc3RhdHVzX2ludGVydmFsID0g MQorfSk7CisKKyRwcmltYXJ5LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisgICAgU0VM RUNUIHBnX2NyZWF0ZV9waHlzaWNhbF9yZXBsaWNhdGlvbl9zbG90KHNsb3RfbmFtZSA6PSAnc2Iy X3Nsb3QnLCBpbW1lZGlhdGVseV9yZXNlcnZlIDo9IHRydWUpOworXSk7CisKKyRzdGFuZGJ5Mi0+ c3RhcnQ7CisKKyMgQ3JlYXRlIHNvbWUgY29udGVudCBvbiBwcmltYXJ5IHRvIG1vdmUgeG1pbgor JHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGFiX2ludCBB UyBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsMTApIEFTIGEiKTsKKworIyBXYWl0IHVudGlsIHN0 YW5kYnkgaGFzIHJlcGxheWVkIGVub3VnaCBkYXRhCiskcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1 cCgkc3RhbmRieTIpOworCiskcHJpbWFyeS0+cG9sbF9xdWVyeV91bnRpbCgKKwkncG9zdGdyZXMn LCBxcVsKKwlTRUxFQ1QgeG1pbiBJUyBOT1QgTlVMTCBBTkQgY2F0YWxvZ194bWluIElTIE5VTEwK KwkJRlJPTSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJCVdIRVJFIHNsb3RfbmFt ZSA9ICdzYjJfc2xvdCc7CitdKSBvciBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBzbG90IHNi Ml9zbG90IHhtaW4gdG8gYWR2YW5jZSI7CisKKyRwcmltYXJ5LT5zYWZlX3BzcWwoCisJJ3Bvc3Rn cmVzJywgcXFbCisJQUxURVIgU1lTVEVNIFNFVCByZXBsaWNhdGlvbl9zbG90X3hpZF9hZ2UgPSA1 MDA7CitdKTsKKyRwcmltYXJ5LT5yZWxvYWQ7CisKKyMgU3RvcCBzdGFuZGJ5IHRvIG1ha2UgdGhl IHJlcGxpY2F0aW9uIHNsb3QncyB4bWluIG9uIHByaW1hcnkgdG8gYWdlCiskc3RhbmRieTItPnN0 b3A7CisKKyRsb2dzdGFydCA9IC1zICRwcmltYXJ5LT5sb2dmaWxlOworCisjIERvIHNvbWUgd29y ayB0byBhZHZhbmNlIHhpZHMgb24gcHJpbWFyeQorYWR2YW5jZV94aWRzKCRwcmltYXJ5LCAndGFi X2ludCcpOworCisjIFdhaXQgZm9yIHRoZSByZXBsaWNhdGlvbiBzbG90IHRvIGJlY29tZSBpbmFj dGl2ZSBhbmQgdGhlbiBpbnZhbGlkYXRlZCBkdWUgdG8KKyMgWElEIGFnZS4KK3dhaXRfZm9yX3Ns b3RfaW52YWxpZGF0aW9uKCRwcmltYXJ5LCAnc2IyX3Nsb3QnLCAkbG9nc3RhcnQsIDAsICd4aWRf YWdlZCcpOworCisjIFRlc3RjYXNlIGVuZDogSW52YWxpZGF0ZSBzdHJlYW1pbmcgc3RhbmRieSdz IHNsb3QgZHVlIHRvIHJlcGxpY2F0aW9uX3Nsb3RfeGlkX2FnZQorIyBHVUMuCisjID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgVGVzdGNhc2Ugc3RhcnQ6 IEludmFsaWRhdGUgbG9naWNhbCBzdWJzY3JpYmVyJ3Mgc2xvdCBkdWUgdG8KKyMgcmVwbGljYXRp b25fc2xvdF94aWRfYWdlIEdVQy4KKworJHB1Ymxpc2hlciA9ICRwcmltYXJ5OworJHB1Ymxpc2hl ci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxWworCUFMVEVSIFNZU1RFTSBTRVQgcmVwbGlj YXRpb25fc2xvdF94aWRfYWdlID0gNTAwOworXSk7CiskcHVibGlzaGVyLT5yZWxvYWQ7CisKKyRz dWJzY3JpYmVyLT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywgcXEoCitob3Rfc3Rh bmRieV9mZWVkYmFjayA9IG9uCit3YWxfcmVjZWl2ZXJfc3RhdHVzX2ludGVydmFsID0gMQorKSk7 Ciskc3Vic2NyaWJlci0+c3RhcnQ7CisKKyMgQ3JlYXRlIHRhYmxlcworJHB1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YmwyIChpZCBpbnQpIik7Cisk c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90Ymwy IChpZCBpbnQpIik7CisKKyMgSW5zZXJ0IHNvbWUgZGF0YQorJHB1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlc3RfdGJsMiBWQUxVRVMgKGdlbmVyYXRlX3Nl cmllcygxLCA1KSk7Iik7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgorJHB1Ymxpc2hl cl9jb25uc3RyID0gJHB1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKKyRw dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gcHVi MiBGT1IgVEFCTEUgdGVzdF90YmwyIik7CisKKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiBzdWIyIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJf Y29ubnN0cicgUFVCTElDQVRJT04gcHViMiBXSVRIIChzbG90X25hbWUgPSAnbHN1YjJfc2xvdCcp IgorKTsKKworJHN1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRwdWJsaXNo ZXIsICdzdWIyJyk7CisKKyRyZXN1bHQgPQorICAkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RibDIiKTsKKworaXMoJHJlc3VsdCwg cXEoNSksICJjaGVjayBpbml0aWFsIGNvcHkgd2FzIGRvbmUiKTsKKworJHB1Ymxpc2hlci0+cG9s bF9xdWVyeV91bnRpbCgKKwkncG9zdGdyZXMnLCBxcVsKKwlTRUxFQ1QgeG1pbiBJUyBOVUxMIEFO RCBjYXRhbG9nX3htaW4gSVMgTk9UIE5VTEwKKwlGUk9NIHBnX2NhdGFsb2cucGdfcmVwbGljYXRp b25fc2xvdHMKKwlXSEVSRSBzbG90X25hbWUgPSAnbHN1YjJfc2xvdCc7CitdKSBvciBkaWUgIlRp bWVkIG91dCB3YWl0aW5nIGZvciBzbG90IGxzdWIyX3Nsb3QgY2F0YWxvZ194bWluIHRvIGFkdmFu Y2UiOworCiskbG9nc3RhcnQgPSAtcyAkcHVibGlzaGVyLT5sb2dmaWxlOworCisjIFN0b3Agc3Vi c2NyaWJlciB0byBtYWtlIHRoZSByZXBsaWNhdGlvbiBzbG90IG9uIHB1Ymxpc2hlciBpbmFjdGl2 ZQorJHN1YnNjcmliZXItPnN0b3A7CisKKyMgRG8gc29tZSB3b3JrIHRvIGFkdmFuY2UgeGlkcyBv biBwdWJsaXNoZXIKK2FkdmFuY2VfeGlkcygkcHVibGlzaGVyLCAndGVzdF90YmwyJyk7CisKKyMg V2FpdCBmb3IgdGhlIHJlcGxpY2F0aW9uIHNsb3QgdG8gYmVjb21lIGluYWN0aXZlIGFuZCB0aGVu IGludmFsaWRhdGVkIGR1ZSB0bworIyBYSUQgYWdlLgord2FpdF9mb3Jfc2xvdF9pbnZhbGlkYXRp b24oJHB1Ymxpc2hlciwgJ2xzdWIyX3Nsb3QnLCAkbG9nc3RhcnQsIDAsCisJJ3hpZF9hZ2VkJyk7 CisKKyMgVGVzdGNhc2UgZW5kOiBJbnZhbGlkYXRlIGxvZ2ljYWwgc3Vic2NyaWJlcidzIHNsb3Qg ZHVlIHRvCisjIHJlcGxpY2F0aW9uX3Nsb3RfeGlkX2FnZSBHVUMuCisjID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgVGVzdGNhc2Ugc3RhcnQ6IEludmFs aWRhdGUgbG9naWNhbCBzbG90IG9uIHN0YW5kYnkgdGhhdCdzIGJlaW5nIHN5bmNlZCBmcm9tCisj IHRoZSBwcmltYXJ5IGR1ZSB0byByZXBsaWNhdGlvbl9zbG90X3hpZF9hZ2UgR1VDLgorCiskcHVi bGlzaGVyID0gJHByaW1hcnk7CisKKyMgUHJlcGFyZSBmb3IgdGhlIG5leHQgdGVzdAorJHB1Ymxp c2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxWworCUFMVEVSIFNZU1RFTSBTRVQgcmVw bGljYXRpb25fc2xvdF94aWRfYWdlID0gMDsKK10pOworJHB1Ymxpc2hlci0+cmVsb2FkOworCisj IENyZWF0ZSBhIHN0YW5kYnkgbGlua2luZyB0byB0aGUgcHJpbWFyeSB1c2luZyB0aGUgcmVwbGlj YXRpb24gc2xvdAorbXkgJHN0YW5kYnkzID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3 KCdzdGFuZGJ5MycpOworJHN0YW5kYnkzLT5pbml0X2Zyb21fYmFja3VwKCRwcmltYXJ5LCAkYmFj a3VwX25hbWUsIGhhc19zdHJlYW1pbmcgPT4gMSk7CisKKyRzdGFuZGJ5My0+YXBwZW5kX2NvbmYo CisJJ3Bvc3RncmVzcWwuY29uZicsIHFxKAoraG90X3N0YW5kYnlfZmVlZGJhY2sgPSBvbgorcHJp bWFyeV9zbG90X25hbWUgPSAnc2IzX3Nsb3QnCitwcmltYXJ5X2Nvbm5pbmZvID0gJyRjb25uc3Ry XzEgZGJuYW1lPXBvc3RncmVzJworKSk7CisKKyRwcmltYXJ5LT5zYWZlX3BzcWwoCisJJ3Bvc3Rn cmVzJywgcXFbCisgICAgU0VMRUNUIHBnX2NyZWF0ZV9waHlzaWNhbF9yZXBsaWNhdGlvbl9zbG90 KHNsb3RfbmFtZSA6PSAnc2IzX3Nsb3QnLCBpbW1lZGlhdGVseV9yZXNlcnZlIDo9IHRydWUpOwor XSk7CisKKyRzdGFuZGJ5My0+c3RhcnQ7CisKK215ICRzdGFuZGJ5M19sb2dzdGFydCA9IC1zICRz dGFuZGJ5My0+bG9nZmlsZTsKKworIyBXYWl0IHVudGlsIHN0YW5kYnkgaGFzIHJlcGxheWVkIGVu b3VnaCBkYXRhCiskcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkc3RhbmRieTMpOworCiskc3Vi c2NyaWJlci0+YXBwZW5kX2NvbmYoCisJJ3Bvc3RncmVzcWwuY29uZicsIHFxKAoraG90X3N0YW5k YnlfZmVlZGJhY2sgPSBvbgord2FsX3JlY2VpdmVyX3N0YXR1c19pbnRlcnZhbCA9IDEKKykpOwor JHN1YnNjcmliZXItPnN0YXJ0OworCisjIENyZWF0ZSB0YWJsZXMKKyRwdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRlc3RfdGJsMyAoaWQgaW50KSIpOworJHN1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRlc3RfdGJsMyAo aWQgaW50KSIpOworCisjIEluc2VydCBzb21lIGRhdGEKKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RibDMgVkFMVUVTIChnZW5lcmF0ZV9zZXJp ZXMoMSwgNSkpOyIpOworCisjIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24KKyRwdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gcHViMyBGT1IgVEFC TEUgdGVzdF90YmwzIik7CisKKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki Q1JFQVRFIFNVQlNDUklQVElPTiBzdWIzIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicg UFVCTElDQVRJT04gcHViMyBXSVRIIChzbG90X25hbWUgPSAnbHN1YjNfc3luY19zbG90JywgZmFp bG92ZXIgPSB0cnVlKSIKKyk7CisKKyRzdWJzY3JpYmVyLT53YWl0X2Zvcl9zdWJzY3JpcHRpb25f c3luYygkcHVibGlzaGVyLCAnc3ViMycpOworCiskcmVzdWx0ID0KKyAgJHN1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YmwzIik7CisK K2lzKCRyZXN1bHQsIHFxKDUpLCAiY2hlY2sgaW5pdGlhbCBjb3B5IHdhcyBkb25lIik7CisKKyRw dWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoCisJJ3Bvc3RncmVzJywgcXFbCisJU0VMRUNUIHht aW4gSVMgTlVMTCBBTkQgY2F0YWxvZ194bWluIElTIE5PVCBOVUxMCisJRlJPTSBwZ19jYXRhbG9n LnBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJV0hFUkUgc2xvdF9uYW1lID0gJ2xzdWIzX3N5bmNfc2xv dCc7CitdKQorICBvciBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBzbG90IGxzdWIzX3N5bmNf c2xvdCBjYXRhbG9nX3htaW4gdG8gYWR2YW5jZSI7CisKKyMgU3luY2hyb25pemUgdGhlIHByaW1h cnkgc2VydmVyIHNsb3RzIHRvIHRoZSBzdGFuZGJ5Ciskc3RhbmRieTMtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiU0VMRUNUIHBnX3N5bmNfcmVwbGljYXRpb25fc2xvdHMoKTsiKTsKKworIyBDb25m aXJtIHRoYXQgdGhlIGxvZ2ljYWwgZmFpbG92ZXIgc2xvdCBpcyBjcmVhdGVkIG9uIHRoZSBzdGFu ZGJ5IGFuZCBpcworIyBmbGFnZ2VkIGFzICdzeW5jZWQnIGFuZCBoYXMgZ290IGNhdGFsb2dfeG1p biBmcm9tIHRoZSBwcmltYXJ5LgoraXMoICRzdGFuZGJ5My0+c2FmZV9wc3FsKAorCQkncG9zdGdy ZXMnLAorCQlxe1NFTEVDVCBjb3VudCgqKSA9IDEgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cwor CQkgIFdIRVJFIHNsb3RfbmFtZSA9ICdsc3ViM19zeW5jX3Nsb3QnIEFORCBzeW5jZWQgQU5EIE5P VCB0ZW1wb3JhcnkgQU5ECisJCQl4bWluIElTIE5VTEwgQU5EIGNhdGFsb2dfeG1pbiBJUyBOT1Qg TlVMTDt9CisJKSwKKwkidCIsCisJJ2xvZ2ljYWwgc2xvdCBoYXMgc3luY2VkIGFzIHRydWUgb24g c3RhbmRieScpOworCitteSAkcHJpbWFyeV9jYXRhbG9nX3htaW4gPSAkcHJpbWFyeS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjYXRhbG9nX3htaW4gRlJPTSBwZ19yZXBsaWNhdGlv bl9zbG90cyBXSEVSRSBzbG90X25hbWUgPSAnbHN1YjNfc3luY19zbG90JyBBTkQgY2F0YWxvZ194 bWluIElTIE5PVCBOVUxMOyIKKyk7CisKK215ICRzdGFiZGJ5M19jYXRhbG9nX3htaW4gPSAkc3Rh bmRieTMtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY2F0YWxvZ194bWluIEZST00g cGdfcmVwbGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1lID0gJ2xzdWIzX3N5bmNfc2xvdCcg QU5EIGNhdGFsb2dfeG1pbiBJUyBOT1QgTlVMTDsiCispOworCitpcygkcHJpbWFyeV9jYXRhbG9n X3htaW4sICRzdGFiZGJ5M19jYXRhbG9nX3htaW4sCisJImNoZWNrIGNhdGFsb2dfeG1pbiBhcmUg c2FtZSBmb3IgcHJpbWFyeSBzbG90IGFuZCBzeW5jZWQgc2xvdCIpOworCisjIEVuYWJsZSBYSUQg YWdlIGJhc2VkIGludmFsaWRhdGlvbiBvbiB0aGUgc3RhbmRieS4gTm90ZSB0aGF0IHdlIGRpc2Fi bGVkIHRoZQorIyBzYW1lIG9uIHRoZSBwcmltYXJ5IHRvIGNoZWNrIGlmIHRoZSBpbnZhbGlkYXRp b24gb2NjdXJzIGZvciBzeW5jZWQgc2xvdCBvbgorIyB0aGUgc3RhbmRieS4KKyRzdGFuZGJ5My0+ c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxWworCUFMVEVSIFNZU1RFTSBTRVQgcmVwbGljYXRp b25fc2xvdF94aWRfYWdlID0gNTAwOworXSk7Ciskc3RhbmRieTMtPnJlbG9hZDsKKworJGxvZ3N0 YXJ0ID0gLXMgJHN0YW5kYnkzLT5sb2dmaWxlOworCisjIERvIHNvbWUgd29yayB0byBhZHZhbmNl IHhpZHMgb24gcHJpbWFyeQorYWR2YW5jZV94aWRzKCRwcmltYXJ5LCAndGVzdF90YmwzJyk7CisK KyMgV2FpdCBmb3Igc3RhbmRieSB0byBjYXRjaCB1cCB3aXRoIHRoZSBhYm92ZSB3b3JrCiskcHJp bWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkc3RhbmRieTMpOworCisjIFdhaXQgZm9yIHRoZSByZXBs aWNhdGlvbiBzbG90IHRvIGJlY29tZSBpbmFjdGl2ZSBhbmQgdGhlbiBpbnZhbGlkYXRlZCBkdWUg dG8KKyMgWElEIGFnZS4KK3dhaXRfZm9yX3Nsb3RfaW52YWxpZGF0aW9uKCRzdGFuZGJ5MywgJ2xz dWIzX3N5bmNfc2xvdCcsICRsb2dzdGFydCwgMCwKKwkneGlkX2FnZWQnKTsKKworIyBOb3RlIHRo YXQgdGhlIHJlcGxpY2F0aW9uIHNsb3Qgb24gdGhlIHByaW1hcnkgaXMgc3RpbGwgYWN0aXZlCisk cmVzdWx0ID0gJHByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgQ09VTlQo c2xvdF9uYW1lKSA9IDEgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBzbG90X25hbWUg PSAnbHN1YjNfc3luY19zbG90JyBBTkQgaW52YWxpZGF0aW9uX3JlYXNvbiBJUyBOVUxMOyIKKyk7 CisKK2lzKCRyZXN1bHQsICd0JywgImNoZWNrIGxzdWIzX3N5bmNfc2xvdCBpcyBzdGlsbCBhY3Rp dmUgb24gcHJpbWFyeSIpOworCisjIFRlc3RjYXNlIGVuZDogSW52YWxpZGF0ZSBsb2dpY2FsIHNs b3Qgb24gc3RhbmRieSB0aGF0J3MgYmVpbmcgc3luY2VkIGZyb20KKyMgdGhlIHByaW1hcnkgZHVl IHRvIHJlcGxpY2F0aW9uX3Nsb3RfeGlkX2FnZSBHVUMuCisjID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CisKIHN1YiB3YWl0X2Zvcl9zbG90X2ludmFsaWRhdGlvbgogewotCW15ICgkbm9kZSwgJHNsb3Rf bmFtZSwgJG9mZnNldCwgJGluYWN0aXZlX3RpbWVvdXQpID0gQF87CisJbXkgKCRub2RlLCAkc2xv dF9uYW1lLCAkb2Zmc2V0LCAkaW5hY3RpdmVfdGltZW91dCwgJHJlYXNvbikgPSBAXzsKIAlteSAk bmFtZSA9ICRub2RlLT5uYW1lOwogCiAJIyBXYWl0IGZvciB0aGUgcmVwbGljYXRpb24gc2xvdCB0 byBiZWNvbWUgaW5hY3RpdmUKQEAgLTIzOCw3ICs1MDMsNyBAQCBzdWIgd2FpdF9mb3Jfc2xvdF9p bnZhbGlkYXRpb24KIAkJJ3Bvc3RncmVzJywgcXFbCiAJCVNFTEVDVCBDT1VOVChzbG90X25hbWUp ID0gMSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzCiAJCQlXSEVSRSBzbG90X25hbWUgPSAnJHNs b3RfbmFtZScgQU5ECi0JCQlpbnZhbGlkYXRpb25fcmVhc29uID0gJ2luYWN0aXZlX3RpbWVvdXQn OworCQkJaW52YWxpZGF0aW9uX3JlYXNvbiA9ICckcmVhc29uJzsKIAldKQogCSAgb3IgZGllCiAJ ICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGluYWN0aXZlIHNsb3QgJHNsb3RfbmFtZSB0 byBiZSBpbnZhbGlkYXRlZCBvbiBub2RlICRuYW1lIjsKQEAgLTI4Myw0ICs1NDgsMjUgQEAgc3Vi IGNoZWNrX2Zvcl9zbG90X2ludmFsaWRhdGlvbl9pbl9zZXJ2ZXJfbG9nCiAJKTsKIH0KIAorIyBE byBzb21lIHdvcmsgZm9yIGFkdmFuY2luZyB4aWRzIG9uIGEgZ2l2ZW4gbm9kZQorc3ViIGFkdmFu Y2VfeGlkcworeworCW15ICgkbm9kZSwgJHRhYmxlX25hbWUpID0gQF87CisKKwkkbm9kZS0+c2Fm ZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxcVsKKwkJZG8gXCRcJAorCQliZWdpbgorCQlmb3IgaSBp biAxMDAwMC4uMTEwMDAgbG9vcAorCQkJLS0gdXNlIGFuIGV4Y2VwdGlvbiBibG9jayBzbyB0aGF0 IGVhY2ggaXRlcmF0aW9uIGVhdHMgYW4gWElECisJCQliZWdpbgorCQkJaW5zZXJ0IGludG8gJHRh YmxlX25hbWUgdmFsdWVzIChpKTsKKwkJCWV4Y2VwdGlvbgorCQkJd2hlbiBkaXZpc2lvbl9ieV96 ZXJvIHRoZW4gbnVsbDsKKwkJCWVuZDsKKwkJZW5kIGxvb3A7CisJCWVuZFwkXCQ7CisJXSk7Cit9 CisKIGRvbmVfdGVzdGluZygpOwotLSAKMi4zNC4xCgo= --000000000000d623220615f28388--