Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w4rq9-002dUw-2i for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Mar 2026 02:49:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w4rq8-003jQh-11 for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Mar 2026 02:49:56 +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.96) (envelope-from ) id 1w4rq7-003jQY-2d for pgsql-hackers@lists.postgresql.org; Tue, 24 Mar 2026 02:49:56 +0000 Received: from mail-ot1-x32d.google.com ([2607:f8b0:4864:20::32d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w4rq5-00000000nrK-2QCb for pgsql-hackers@postgresql.org; Tue, 24 Mar 2026 02:49:55 +0000 Received: by mail-ot1-x32d.google.com with SMTP id 46e09a7af769-7d7ebe11bffso3267328a34.0 for ; Mon, 23 Mar 2026 19:49:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774320592; cv=none; d=google.com; s=arc-20240605; b=CwAopZPNLYlRRJvhiBouVQoxK7CwVpvpp91HwtzVpG6W9OseXCtzef8HA6Jl3xUjXe oBpIUbsX5we8oOZD3EyZyAnmgfVr7QA3CFewPi9XAughskKiiDAgBBX3bmHd/M4bopKp Or/hnqz0LZFDF+iBttdKoD4tKuAVRl6c4dFgWfCJKM+IUqHjbUlrMD8K1PJRBDdXmBtL Fw2zpn3Ub5HrSthtPgvmcdUGNkxNhFvG03xns0BzFn5EcuBEYlkYRBJPTWHXOnyz9Kti XEqnBH+EUIkqj3fbK4OSqEWSxxN3jR6Z5ieoKHtJCtgXBUvl6Egi5oFnD4rLOq1x6WJ6 ZbPg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=x8JJh3ttfPpSZ0zK3xwHFjcPhNsFFXDsXRGKXcbIci8=; fh=FIa6CnAOcDlblDMIqVQXhn30ONA1aoHzZ0tfczHgg8I=; b=YyREYgrBZB1JiFbwSwv6ZdRL4JMGqFrXWRCzXR8NqxAxXecrncPsUguReQPaUa9A7w /rsxVW4hyGhf4WbIZSN4CsucwS3OqAUctcOWHqHTuFbHu40ZqtvdmhtllcAW386qysoD biWYpJVrOX3aF4QIvef9CfV6fSz0CdBof2CkxBFbIKmew1RHoBOysMPowIPbEc+0ho7K dEjwkkwRvli6/sSajxcIGwahd4QIuoXEhSqvhCwBpHdeTUnT/g+cZvruYLcqcfetZiAl DiWndqLoGXjNbrHDiSkHZrLrHh+Ep9fyMyYLiKoCwbzuSW6UxT1yEx1anDLO/TdhzmZQ jg7Q==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774320592; x=1774925392; darn=postgresql.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=x8JJh3ttfPpSZ0zK3xwHFjcPhNsFFXDsXRGKXcbIci8=; b=npS00iNzaKkMUS9kJF6e2m4NAFPGABeCo3oIWYANgLk0uM3YEt5ZFnyPI77p7OSt8S EJkI4kJRngz0IMbTiQ2RSUOUl9JW6kXqRIqPAxIuNjZIYnuJiVOnTMOinELOUxCONqyz NVIRA6hG9+Nfl4HBnI8LS+f6QTLYjc66cX/KOyKlcLYu0vmMSjoif7MB8OR0ij3QzYWe D2GZffL74fOgjTR6rHzwxOu+87aZOnwHzQUvF2B5/p8mU7QCaxdr50kzn5Cn2vK95J5w ykyDwzCodLOE092Ew7jKZj4kFLl1wfCwx1ySbyLm38DhvZ0Vv0KUUmZ3uynzGb45B7+l Da4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774320592; x=1774925392; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=x8JJh3ttfPpSZ0zK3xwHFjcPhNsFFXDsXRGKXcbIci8=; b=QNc0lNCeHQm5mbHTjBg/gtHddVxxPIVoPBxDDpvRSeQhgOOLN1mOkTu1O6LJc/EMwW 7CP3/5zPDfXSUDSpgiCDQLzyW1d6XjR3KDy+z81t9b0dtM6IO3j7U4OGEebnnbAU8Z6w MK4xHFUsk0b9TVUJpUxybSkxDdbBX1pQaGotD8j5FvdU2XpVmyCRG4A68rwF0zC/95nH D/SCv1SInaSuLdwabe7yuKRvoZlhKIvfi5K3YKxvuR/JktaRlbPuHDlij5lyOv0AdE7J 9nmU4dGgu/QeJDHaj/K/MJJLKwTpiUQa/muS37X5C9Rx3yAxHcCJaWt9I9Bc8yW8tT1C HyBw== X-Gm-Message-State: AOJu0YwcVsUNFtW7Ig1ipau6vQUnUT1liCdvVnwnH6ZADN7tiLd+rEHC HQdLSvahIe0N+/6aB8Ee+rWPYCc9d+I0wcQ48T0M/ZmM3+8Nu6JSXUfNWQqXujSHdl9bLzQPaEM bEV2jbHkQKUlv2ya0ogP+udVxcU6K4XBa/gIj84E= X-Gm-Gg: ATEYQzxW4c3gOI0Py3Eb1Smnf8FGPItHG2dEW1t70qa4iR1tkHbqtKFfOm8uWWZiULE yWHcbrXjHQU7TBGqZDjctfSe9hb49Lu7x92a3VDes7WrbIeMewdu+B3/0nrfHdpPdOLbEvsVOtS Aztmo8ogu3xAYMn5PiBY9CaCZ8fqnb/6a4pzQr4TQmF0dYGP7geex68XD1bMwYXord5iP39z7uU GUIboou1Ye91/qxYt2XPGgr+Y49/4CEDBAsp30CEeNScU2ZFfTVOml2qvEFApxB2625aptUX//s Akuryw== X-Received: by 2002:a05:6830:81c9:b0:7d7:da43:387 with SMTP id 46e09a7af769-7d7eaf5b5f3mr9362394a34.16.1774320592222; Mon, 23 Mar 2026 19:49:52 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: shihao zhong Date: Mon, 23 Mar 2026 22:49:41 -0400 X-Gm-Features: AaiRm53fV1yQmA3gEGIe4EFEVj9pNm2wreqINLk-1F_AbhKldRXAyoatQmkyLNQ Message-ID: Subject: Re: [Patch] New pg_stat_tablespace view To: PostgreSQL-development Content-Type: multipart/mixed; boundary="0000000000009e178b064dbc345e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000009e178b064dbc345e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Mar 23, 2026 at 3:08=E2=80=AFPM shihao zhong wrote: > > Hi hackers, > > I=E2=80=99ve been working on extending the cumulative statistics system t= o > provide better visibility into tablespace-level workloads, and I'd > like to propose a patch to add a new system view: pg_stat_tablespace. > > Currently, PostgreSQL provides statistics per database (e.g., > pg_stat_database) and per relation (e.g., pg_statio_user_tables). > However, because tablespaces can span multiple databases, it is > difficult for DBAs to analyze storage hotspots across the cluster or > verify if a specific tablespace (such as a high-performance SSD vs a > slow HDD array) is experiencing I/O bottlenecks or excessive temporary > file usage. > > The pg_stat_tablespace view bridges this gap by providing an aggregate > view of block I/O and temporary file usage grouped by tablespace, > making it easier to optimize storage architectures. > > Thanks, > Shihao New version fix the CI/CD --0000000000009e178b064dbc345e Content-Type: application/octet-stream; name="pg_stat_tablespace_final_v1.patch" Content-Disposition: attachment; filename="pg_stat_tablespace_final_v1.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn40nkbo0 RnJvbSBlZDZiYWZjZjRhMjcyNjI1NzdmMGJjMWMxMDBhZGI5MDc1MDVhNDdkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzaGloYW8gemhvbmcgPHpob25nOTUwNDE5QGdtYWlsLmNvbT4K RGF0ZTogTW9uLCAyMyBNYXIgMjAyNiAxODoyNzo0NiArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIEFk ZCBwZ19zdGF0X3RhYmxlc3BhY2Ugc3RhdGlzdGljcyB2aWV3CgpJbXBsZW1lbnQgcGdfc3RhdF90 YWJsZXNwYWNlIHRvIHRyYWNrIGJsb2NrIHJlYWRzLCBoaXRzLCBJL08gdGltaW5nLAphbmQgdGVt cG9yYXJ5IGZpbGUgdXNhZ2UgcGVyIHRhYmxlc3BhY2UuIFRoaXMgYWxsb3dzIERCQXMgdG8gYW5h bHl6ZQp0YWJsZXNwYWNlLWxldmVsIHdvcmtsb2FkIGhvdHNwb3RzLgoKVGhlIHZpZXcgaW5jbHVk ZXM6Ci0gdGFibGVzcGFjZV9pZAotIHRhYmxlc3BhY2VfbmFtZQotIGJsb2Nrc19mZXRjaGVkCi0g YmxvY2tzX2hpdAotIGJsa19yZWFkX3RpbWUKLSBibGtfd3JpdGVfdGltZQotIHRlbXBfZmlsZXMK LSB0ZW1wX2J5dGVzCgpJbmNsdWRlcyBjb21wcmVoZW5zaXZlIGZpZWxkIGNvdmVyYWdlIGNoZWNr cyBpbiBzdGF0cy5zcWwuCi0tLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAg ICAgICAgICAgIHwgMTQzICsrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9z eXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgIDE0ICsrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2Zp bGUvZmQuYyAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2 aXR5L01ha2VmaWxlICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9tZXNvbi5idWlsZCAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv cGdzdGF0LmMgICAgICAgICAgIHwgIDE2ICsrCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9w Z3N0YXRfZGF0YWJhc2UuYyAgfCAgNDcgKysrKystCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9wZ3N0YXRfcmVsYXRpb24uYyAgfCAgMTggKysrCiAuLi4vdXRpbHMvYWN0aXZpdHkvcGdzdGF0 X3RhYmxlc3BhY2UuYyAgICAgICAgfCAgOTkgKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGls cy9hZHQvcGdzdGF0ZnVuY3MuYyAgICAgICAgICAgfCAgODAgKysrKysrKysrLQogc3JjL2luY2x1 ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmggICAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgIDggKwogc3JjL2luY2x1ZGUv cGdzdGF0LmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIyICsrKwogc3JjL2luY2x1ZGUv dXRpbHMvYmFja2VuZF9zdGF0dXMuaCAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS91 dGlscy9wZ3N0YXRfaW50ZXJuYWwuaCAgICAgICAgICAgfCAgIDggKwogc3JjL2luY2x1ZGUvdXRp bHMvcGdzdGF0X2tpbmQuaCAgICAgICAgICAgICAgIHwgICAzICstCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3J1bGVzLm91dCAgICAgICAgICAgfCAgMTEgKysKIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc3RhdHMub3V0ICAgICAgICAgICB8ICA4MyArKysrKysrKystCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9zdGF0cy5zcWwgICAgICAgICAgICAgICAgfCAgMzYgKysrKysKIDE5IGZpbGVz IGNoYW5nZWQsIDU4OSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF90YWJsZXNwYWNlLmMKCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL21v bml0b3Jpbmcuc2dtbAppbmRleCA0NjIwMTlhOTcyYy4uZDhhMGI1MjhhOGYgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jp bmcuc2dtbApAQCAtNTI2LDYgKzUyNiwxNCBAQCBwb3N0Z3JlcyAgIDI3MDkzICAwLjAgIDAuMCAg MzAwOTYgIDI3NTIgPyAgICAgICAgU3MgICAxMTozNCAgIDA6MDAgcG9zdGdyZXM6IHNlcgogICAg ICAgPC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48c3Ry dWN0bmFtZT5wZ19zdGF0X3RhYmxlc3BhY2U8L3N0cnVjdG5hbWU+PGluZGV4dGVybT48cHJpbWFy eT5wZ19zdGF0X3RhYmxlc3BhY2U8L3ByaW1hcnk+PC9pbmRleHRlcm0+PC9lbnRyeT4KKyAgICAg IDxlbnRyeT5PbmUgcm93IHBlciB0YWJsZXNwYWNlLCBzaG93aW5nIHN0YXRpc3RpY3MgYWJvdXQg SS9PIGFuZCB0ZW1wb3JhcnkgZmlsZXMuIFNlZQorICAgICAgIDxsaW5rIGxpbmtlbmQ9Im1vbml0 b3JpbmctcGctc3RhdC10YWJsZXNwYWNlLXZpZXciPgorICAgICAgIDxzdHJ1Y3RuYW1lPnBnX3N0 YXRfdGFibGVzcGFjZTwvc3RydWN0bmFtZT48L2xpbms+IGZvciBkZXRhaWxzLgorICAgICAgPC9l bnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeT48c3RydWN0bmFt ZT5wZ19zdGF0X3N1YnNjcmlwdGlvbl9zdGF0czwvc3RydWN0bmFtZT48aW5kZXh0ZXJtPjxwcmlt YXJ5PnBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPjwvZW50 cnk+CiAgICAgICA8ZW50cnk+T25lIHJvdyBwZXIgc3Vic2NyaXB0aW9uLCBzaG93aW5nIHN0YXRp c3RpY3MgYWJvdXQgZXJyb3JzIGFuZCBjb25mbGljdHMuCkBAIC01MTUyLDYgKzUxNjAsMTQxIEBA IGRlc2NyaXB0aW9uIHwgV2FpdGluZyBmb3IgYSBuZXdseSBpbml0aWFsaXplZCBXQUwgZmlsZSB0 byByZWFjaCBkdXJhYmxlIHN0b3JhZ2UKIAogIDwvc2VjdDI+CiAKKyAgPHNlY3QyIGlkPSJtb25p dG9yaW5nLXBnLXN0YXQtdGFibGVzcGFjZS12aWV3Ij4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5w Z19zdGF0X3RhYmxlc3BhY2U8L3N0cnVjdG5hbWU+PC90aXRsZT4KKworICAgPGluZGV4dGVybT4K KyAgICA8cHJpbWFyeT5wZ19zdGF0X3RhYmxlc3BhY2U8L3ByaW1hcnk+CisgICA8L2luZGV4dGVy bT4KKworICAgPHBhcmE+CisgICAgVGhlIDxzdHJ1Y3RuYW1lPnBnX3N0YXRfdGFibGVzcGFjZTwv c3RydWN0bmFtZT4gdmlldyB3aWxsIGNvbnRhaW4gb25lIHJvdworICAgIGZvciBlYWNoIHRhYmxl c3BhY2UsIHNob3dpbmcgc3RhdGlzdGljcyBhYm91dCBJL08gb3BlcmF0aW9ucyBhbmQgdGVtcG9y YXJ5CisgICAgZmlsZSB1c2FnZSBpbiB0aGF0IHRhYmxlc3BhY2UuCisgICA8L3BhcmE+CisKKyAg IDx0YWJsZSBpZD0icGctc3RhdC10YWJsZXNwYWNlLXZpZXciIHhyZWZsYWJlbD0icGdfc3RhdF90 YWJsZXNwYWNlIj4KKyAgICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfc3RhdF90YWJsZXNwYWNlPC9z dHJ1Y3RuYW1lPiBWaWV3PC90aXRsZT4KKyAgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgICA8dGhl YWQ+CisgICAgICA8cm93PgorICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5 Ij4KKyAgICAgICAgPHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgICAgQ29s dW1uIFR5cGUKKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIERlc2Ny aXB0aW9uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2VudHJ5PgorICAgICAgPC9yb3c+Cisg ICAgIDwvdGhlYWQ+CisKKyAgICAgPHRib2R5PgorICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkg cm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+CisgICAgICAgIDxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KKyAgICAgICAgIDxzdHJ1Y3RmaWVsZD50YWJsZXNwYWNlX2lkPC9zdHJ1Y3Rm aWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgor ICAgICAgICAgT0lEIG9mIHRoZSB0YWJsZXNwYWNlCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8 L2VudHJ5PgorICAgICAgPC9yb3c+CisKKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9 ImNhdGFsb2dfdGFibGVfZW50cnkiPgorICAgICAgICA8cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5p dGlvbiI+CisgICAgICAgICA8c3RydWN0ZmllbGQ+dGFibGVzcGFjZV9uYW1lPC9zdHJ1Y3RmaWVs ZD4gPHR5cGU+bmFtZTwvdHlwZT4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAg ICAgICAgIE5hbWUgb2YgdGhlIHRhYmxlc3BhY2UKKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwv ZW50cnk+CisgICAgICA8L3Jvdz4KKworICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0i Y2F0YWxvZ190YWJsZV9lbnRyeSI+CisgICAgICAgIDxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0 aW9uIj4KKyAgICAgICAgIDxzdHJ1Y3RmaWVsZD5ibGtfcmVhZF90aW1lPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+ZG91YmxlIHByZWNpc2lvbjwvdHlwZT4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8 cGFyYT4KKyAgICAgICAgIFRpbWUgc3BlbnQgcmVhZGluZyBkYXRhIGJsb2NrcyBieSBiYWNrZW5k cyBpbiB0aGlzIHRhYmxlc3BhY2UsIGluIG1pbGxpc2Vjb25kcworICAgICAgICAgKGlmIDx4cmVm IGxpbmtlbmQ9Imd1Yy10cmFjay1pby10aW1pbmciLz4gaXMgZW5hYmxlZCwgb3RoZXJ3aXNlIHpl cm8pCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2VudHJ5PgorICAgICAgPC9yb3c+CisKKyAg ICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPgorICAg ICAgICA8cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgICA8c3RydWN0Zmll bGQ+YmxrX3dyaXRlX3RpbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5kb3VibGUgcHJlY2lzaW9uPC90 eXBlPgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGltZSBzcGVu dCB3cml0aW5nIGRhdGEgYmxvY2tzIGJ5IGJhY2tlbmRzIGluIHRoaXMgdGFibGVzcGFjZSwgaW4g bWlsbGlzZWNvbmRzCisgICAgICAgICAoaWYgPHhyZWYgbGlua2VuZD0iZ3VjLXRyYWNrLWlvLXRp bWluZyIvPiBpcyBlbmFibGVkLCBvdGhlcndpc2UgemVybykKKyAgICAgICAgPC9wYXJhPgorICAg ICAgIDwvZW50cnk+CisgICAgICA8L3Jvdz4KKworICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkg cm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+CisgICAgICAgIDxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KKyAgICAgICAgIDxzdHJ1Y3RmaWVsZD5ibG9ja3NfZmV0Y2hlZDwvc3RydWN0 ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFy YT4KKyAgICAgICAgIE51bWJlciBvZiBkYXRhIGJsb2NrcyByZWFkIGZyb20gZGlzayBpbiB0aGlz IHRhYmxlc3BhY2UKKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvZW50cnk+CisgICAgICA8L3Jv dz4KKworICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRy eSI+CisgICAgICAgIDxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICAgIDxz dHJ1Y3RmaWVsZD5ibG9ja3NfaGl0PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90eXBlPgor ICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgTnVtYmVyIG9mIGRhdGEg YmxvY2tzIGZvdW5kIGluIHNoYXJlZCBidWZmZXIgY2FjaGUgaW4gdGhpcyB0YWJsZXNwYWNlCisg ICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2VudHJ5PgorICAgICAgPC9yb3c+CisKKyAgICAgIDxy b3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPgorICAgICAgICA8 cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgICA8c3RydWN0ZmllbGQ+dGVt cF9maWxlczwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAgICAgICAgPC9wYXJh PgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIE51bWJlciBvZiB0ZW1wb3JhcnkgZmlsZXMgY3Jl YXRlZCBpbiB0aGlzIHRhYmxlc3BhY2UKKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvZW50cnk+ CisgICAgICA8L3Jvdz4KKworICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxv Z190YWJsZV9lbnRyeSI+CisgICAgICAgIDxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4K KyAgICAgICAgIDxzdHJ1Y3RmaWVsZD50ZW1wX2J5dGVzPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+bnVt ZXJpYzwvdHlwZT4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRv dGFsIGFtb3VudCBvZiBkYXRhIHdyaXR0ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGluIHRoaXMgdGFi bGVzcGFjZQorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9lbnRyeT4KKyAgICAgIDwvcm93Pgor CisgICAgICA8cm93PgorICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij4K KyAgICAgICAgPHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgICAgPHN0cnVj dGZpZWxkPnN0YXRzX3Jlc2V0PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGltZXN0YW1wIHdpdGggdGlt ZSB6b25lPC90eXBlPgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAg VGltZSBhdCB3aGljaCB0aGVzZSBzdGF0aXN0aWNzIHdlcmUgbGFzdCByZXNldAorICAgICAgICA8 L3BhcmE+CisgICAgICAgPC9lbnRyeT4KKyAgICAgIDwvcm93PgorICAgICA8L3Rib2R5PgorICAg IDwvdGdyb3VwPgorICAgPC90YWJsZT4KKyAgPC9zZWN0Mj4KKwogIDxzZWN0MiBpZD0ibW9uaXRv cmluZy1zdGF0cy1mdW5jdGlvbnMiPgogICA8dGl0bGU+U3RhdGlzdGljcyBGdW5jdGlvbnM8L3Rp dGxlPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggZjFlZDdiNThmMTMu LjI4NzZjNWZkNjQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3 cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC0xMTE5 LDYgKzExMTksMjAgQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdF9yZXBsaWNhdGlvbl9zbG90cyBBUwog ICAgICAgICBMQVRFUkFMIHBnX3N0YXRfZ2V0X3JlcGxpY2F0aW9uX3Nsb3Qoc2xvdF9uYW1lKSBh cyBzCiAgICAgV0hFUkUgci5kYXRvaWQgSVMgTk9UIE5VTEw7IC0tIGV4Y2x1ZGluZyBwaHlzaWNh bCBzbG90cwogCitDUkVBVEUgVklFVyBwZ19zdGF0X3RhYmxlc3BhY2UgQVMKKyAgICBTRUxFQ1QK KyAgICAgICAgVC5vaWQgQVMgdGFibGVzcGFjZV9pZCwKKyAgICAgICAgVC5zcGNuYW1lIEFTIHRh Ymxlc3BhY2VfbmFtZSwKKyAgICAgICAgUy5ibGtfcmVhZF90aW1lLAorICAgICAgICBTLmJsa193 cml0ZV90aW1lLAorICAgICAgICBTLmJsb2Nrc19mZXRjaGVkLAorICAgICAgICBTLmJsb2Nrc19o aXQsCisgICAgICAgIFMudGVtcF9maWxlcywKKyAgICAgICAgUy50ZW1wX2J5dGVzLAorICAgICAg ICBTLnN0YXRzX3Jlc2V0CisgICAgRlJPTSBwZ190YWJsZXNwYWNlIFQKKyAgICBMRUZUIEpPSU4g TEFURVJBTCBwZ19zdGF0X2dldF90YWJsZXNwYWNlKFQub2lkKSBTIE9OIHRydWU7CisKIENSRUFU RSBWSUVXIHBnX3N0YXRfZGF0YWJhc2UgQVMKICAgICBTRUxFQ1QKICAgICAgICAgICAgIEQub2lk IEFTIGRhdGlkLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2ZkLmMgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvZmQuYwppbmRleCAwMWYxYmQ2ZTY4Ny4uMDNjNDdhYmEx N2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jCisrKyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jCkBAIC0xNTE1LDcgKzE1MTUsNyBAQCBGaWxlQWNjZXNz KEZpbGUgZmlsZSkKIHN0YXRpYyB2b2lkCiBSZXBvcnRUZW1wb3JhcnlGaWxlVXNhZ2UoY29uc3Qg Y2hhciAqcGF0aCwgcGdvZmZfdCBzaXplKQogewotCXBnc3RhdF9yZXBvcnRfdGVtcGZpbGUoc2l6 ZSk7CisJcGdzdGF0X3JlcG9ydF90ZW1wZmlsZShzaXplLCBwYXRoKTsKIAogCWlmIChsb2dfdGVt cF9maWxlcyA+PSAwKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5 L01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvTWFrZWZpbGUKaW5kZXggYzM3 YmZiMzUwYmIuLjI1NTZlYjMwODIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9NYWtlZmlsZQpA QCAtMzEsNiArMzEsNyBAQCBPQkpTID0gXAogCXBnc3RhdF9zaG1lbS5vIFwKIAlwZ3N0YXRfc2xy dS5vIFwKIAlwZ3N0YXRfc3Vic2NyaXB0aW9uLm8gXAorCXBnc3RhdF90YWJsZXNwYWNlLm8gXAog CXBnc3RhdF93YWwubyBcCiAJcGdzdGF0X3hhY3QubyBcCiAJd2FpdF9ldmVudC5vIFwKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L21lc29uLmJ1aWxkIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvbWVzb24uYnVpbGQKaW5kZXggNTNiZDVhMjQ2Y2EuLjk3ZDEyNTY2 YWY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9tZXNvbi5idWlsZAor KysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9tZXNvbi5idWlsZApAQCAtMTYsNiArMTYs NyBAQCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICdwZ3N0YXRfc2htZW0uYycsCiAgICdw Z3N0YXRfc2xydS5jJywKICAgJ3Bnc3RhdF9zdWJzY3JpcHRpb24uYycsCisgICdwZ3N0YXRfdGFi bGVzcGFjZS5jJywKICAgJ3Bnc3RhdF93YWwuYycsCiAgICdwZ3N0YXRfeGFjdC5jJywKICkKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdC5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0LmMKaW5kZXggMTFiYjcxY2FkNWEuLjYwYzJjODBhZGMz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXQuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXQuYwpAQCAtMzAwLDYgKzMwMCwyMiBAQCBz dGF0aWMgY29uc3QgUGdTdGF0X0tpbmRJbmZvIHBnc3RhdF9raW5kX2J1aWx0aW5faW5mb3NbUEdT VEFUX0tJTkRfQlVJTFRJTl9TSVpFXQogCQkucmVzZXRfdGltZXN0YW1wX2NiID0gcGdzdGF0X2Rh dGFiYXNlX3Jlc2V0X3RpbWVzdGFtcF9jYiwKIAl9LAogCisJW1BHU1RBVF9LSU5EX1RBQkxFU1BB Q0VdID0geworCQkubmFtZSA9ICJ0YWJsZXNwYWNlIiwKKworCQkuZml4ZWRfYW1vdW50ID0gZmFs c2UsCisJCS53cml0ZV90b19maWxlID0gdHJ1ZSwKKwkJLmFjY2Vzc2VkX2Fjcm9zc19kYXRhYmFz ZXMgPSB0cnVlLAorCisJCS5zaGFyZWRfc2l6ZSA9IHNpemVvZihQZ1N0YXRTaGFyZWRfVGFibGVz cGFjZSksCisJCS5zaGFyZWRfZGF0YV9vZmYgPSBvZmZzZXRvZihQZ1N0YXRTaGFyZWRfVGFibGVz cGFjZSwgc3RhdHMpLAorCQkuc2hhcmVkX2RhdGFfbGVuID0gc2l6ZW9mKCgoUGdTdGF0U2hhcmVk X1RhYmxlc3BhY2UgKikgMCktPnN0YXRzKSwKKwkJLnBlbmRpbmdfc2l6ZSA9IHNpemVvZihQZ1N0 YXRfU3RhdFRhYnNwYWNlRW50cnkpLAorCisJCS5mbHVzaF9wZW5kaW5nX2NiID0gcGdzdGF0X3Rh Ymxlc3BhY2VfZmx1c2hfY2IsCisJCS5yZXNldF90aW1lc3RhbXBfY2IgPSBwZ3N0YXRfdGFibGVz cGFjZV9yZXNldF90aW1lc3RhbXBfY2IsCisJfSwKKwogCVtQR1NUQVRfS0lORF9SRUxBVElPTl0g PSB7CiAJCS5uYW1lID0gInJlbGF0aW9uIiwKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvYWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9wZ3N0YXRfZGF0YWJhc2UuYwppbmRleCA5MzNkY2I1Y2FlNS4uODNkMjY3NWQ1MTEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jCkBAIC0xNyw5ICsx NywxMSBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgogI2luY2x1ZGUgInN0b3JhZ2Uvc3RhbmRieS5oIgogI2luY2x1ZGUgInV0aWxzL3Bnc3RhdF9p bnRlcm5hbC5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfdGFibGVzcGFjZV9kLmgiCiAKIAogc3RhdGljIGJvb2wgcGdzdGF0X3Nob3VsZF9yZXBv cnRfY29ubnN0YXQodm9pZCk7CkBAIC0yMTQsMjAgKzIxNiw2MyBAQCBwZ3N0YXRfcmVwb3J0X2No ZWNrc3VtX2ZhaWx1cmVzX2luX2RiKE9pZCBkYm9pZCwgaW50IGZhaWx1cmVjb3VudCkKIAlwZ3N0 YXRfdW5sb2NrX2VudHJ5KGVudHJ5X3JlZik7CiB9CiAKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb24g dG8gcGFyc2UgdGFibGVzcGFjZSBvaWQgZnJvbSB0ZW1wb3JhcnkgZmlsZSBwYXRoLgorICovCitz dGF0aWMgT2lkCitnZXRfdGFibGVzcGFjZV9mcm9tX3RlbXBmaWxlX3BhdGgoY29uc3QgY2hhciAq cGF0aCkKK3sKKwkvKgorCSAqIFdlIG1hdGNoIHRoZSBwYXRoIGFnYWluc3Qga25vd24gdGFibGVz cGFjZSBwcmVmaXhlcyB0byBhdm9pZCBtb2RpZnlpbmcKKwkgKiBmZC5jL2ZpbGVzZXQuYyBhbmQg VmZkIHN0cnVjdHVyZXMuCisJICovCisJaWYgKHBhdGggPT0gTlVMTCkKKwkJcmV0dXJuIEludmFs aWRPaWQ7CisKKwlpZiAoc3RybmNtcChwYXRoLCAicGdfdGJsc3BjLyIsIDEwKSA9PSAwKQorCXsK KwkJcmV0dXJuIGF0b29pZChwYXRoICsgMTApOworCX0KKwllbHNlIGlmIChzdHJuY21wKHBhdGgs ICJiYXNlLyIsIDUpID09IDApCisJeworCQlyZXR1cm4gREVGQVVMVFRBQkxFU1BBQ0VfT0lEOwor CX0KKwllbHNlIGlmIChzdHJuY21wKHBhdGgsICJnbG9iYWwvIiwgNykgPT0gMCkKKwl7CisJCXJl dHVybiBHTE9CQUxUQUJMRVNQQUNFX09JRDsKKwl9CisKKwlyZXR1cm4gSW52YWxpZE9pZDsKK30K KwogLyoKICAqIFJlcG9ydCBjcmVhdGlvbiBvZiB0ZW1wb3JhcnkgZmlsZS4KICAqLwogdm9pZAot cGdzdGF0X3JlcG9ydF90ZW1wZmlsZShzaXplX3QgZmlsZXNpemUpCitwZ3N0YXRfcmVwb3J0X3Rl bXBmaWxlKHNpemVfdCBmaWxlc2l6ZSwgY29uc3QgY2hhciAqcGF0aCkKIHsKIAlQZ1N0YXRfU3Rh dERCRW50cnkgKmRiZW50OworCVBnU3RhdF9TdGF0VGFic3BhY2VFbnRyeSAqdHNlbnQ7CisJT2lk CQkJdGFibGVzcGFjZV9vaWQ7CiAKIAlpZiAoIXBnc3RhdF90cmFja19jb3VudHMpCiAJCXJldHVy bjsKIAorCXRhYmxlc3BhY2Vfb2lkID0gZ2V0X3RhYmxlc3BhY2VfZnJvbV90ZW1wZmlsZV9wYXRo KHBhdGgpOworCiAJZGJlbnQgPSBwZ3N0YXRfcHJlcF9kYXRhYmFzZV9wZW5kaW5nKE15RGF0YWJh c2VJZCk7CiAJZGJlbnQtPnRlbXBfYnl0ZXMgKz0gZmlsZXNpemU7CiAJZGJlbnQtPnRlbXBfZmls ZXMrKzsKKworCWlmIChPaWRJc1ZhbGlkKHRhYmxlc3BhY2Vfb2lkKSkKKwl7CisJCXRzZW50ID0g cGdzdGF0X3ByZXBfdGFibGVzcGFjZV9wZW5kaW5nKHRhYmxlc3BhY2Vfb2lkKTsKKwkJaWYgKHRz ZW50KQorCQl7CisJCQl0c2VudC0+dGVtcF9ieXRlcyArPSBmaWxlc2l6ZTsKKwkJCXRzZW50LT50 ZW1wX2ZpbGVzKys7CisJCX0KKwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hY3Rpdml0eS9wZ3N0YXRfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2 aXR5L3Bnc3RhdF9yZWxhdGlvbi5jCmluZGV4IGJjOGM0M2I5NmFhLi4xNmJmYTI4NWY4MyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKQEAgLTIwLDYg KzIwLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvdHdvcGhhc2Vfcm1nci5oIgogI2luY2x1ZGUgImFj Y2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9jYXRhbG9nLmgiCisjaW5jbHVkZSAibWlz Y2FkbWluLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9w Z3N0YXRfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKQEAgLTE0Miw2ICsxNDMs NyBAQCBwZ3N0YXRfYXNzb2NfcmVsYXRpb24oUmVsYXRpb24gcmVsKQogCiAJLyogbWFyayB0aGlz IHJlbGF0aW9uIGFzIHRoZSBvd25lciAqLwogCXJlbC0+cGdzdGF0X2luZm8tPnJlbGF0aW9uID0g cmVsOworCXJlbC0+cGdzdGF0X2luZm8tPnJlbHRhYmxlc3BhY2UgPSByZWwtPnJkX2xvY2F0b3Iu c3BjT2lkOwogfQogCiAvKgpAQCAtODk3LDYgKzg5OSwyMiBAQCBwZ3N0YXRfcmVsYXRpb25fZmx1 c2hfY2IoUGdTdGF0X0VudHJ5UmVmICplbnRyeV9yZWYsIGJvb2wgbm93YWl0KQogCWRiZW50cnkt PmJsb2Nrc19mZXRjaGVkICs9IGxzdGF0cy0+Y291bnRzLmJsb2Nrc19mZXRjaGVkOwogCWRiZW50 cnktPmJsb2Nrc19oaXQgKz0gbHN0YXRzLT5jb3VudHMuYmxvY2tzX2hpdDsKIAorCS8qIFRoZSBl bnRyeSB3YXMgc3VjY2Vzc2Z1bGx5IGZsdXNoZWQsIGFkZCB0aGUgc2FtZSB0byB0YWJsZXNwYWNl IHN0YXRzICovCisJeworCQlPaWQgdHNpZCA9IChsc3RhdHMtPnJlbHRhYmxlc3BhY2UgPT0gSW52 YWxpZE9pZCkgPyBNeURhdGFiYXNlVGFibGVTcGFjZSA6IGxzdGF0cy0+cmVsdGFibGVzcGFjZTsK KworCQlpZiAoT2lkSXNWYWxpZCh0c2lkKSkKKwkJeworCQkJUGdTdGF0X1N0YXRUYWJzcGFjZUVu dHJ5ICp0c2VudHJ5ID0gcGdzdGF0X3ByZXBfdGFibGVzcGFjZV9wZW5kaW5nKHRzaWQpOworCisJ CQlpZiAodHNlbnRyeSkKKwkJCXsKKwkJCQl0c2VudHJ5LT5ibG9ja3NfZmV0Y2hlZCArPSBsc3Rh dHMtPmNvdW50cy5ibG9ja3NfZmV0Y2hlZDsKKwkJCQl0c2VudHJ5LT5ibG9ja3NfaGl0ICs9IGxz dGF0cy0+Y291bnRzLmJsb2Nrc19oaXQ7CisJCQl9CisJCX0KKwl9CisKIAlyZXR1cm4gdHJ1ZTsK IH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3RhYmxl c3BhY2UuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF90YWJsZXNwYWNlLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU4NWZmZjc1NjliCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3RhYmxlc3Bh Y2UuYwpAQCAtMCwwICsxLDk5IEBACisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGdzdGF0 X3RhYmxlc3BhY2UuYworICoJICBJbXBsZW1lbnRhdGlvbiBvZiB0YWJsZXNwYWNlIHN0YXRpc3Rp Y3MuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvcGdzdGF0X3RhYmxlc3BhY2UuYworICogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgInV0aWxzL3Bnc3RhdF9pbnRl cm5hbC5oIgorI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgorCisKKy8qCisgKiBSZW1vdmUg ZW50cnkgZm9yIHRoZSB0YWJsZXNwYWNlIGJlaW5nIGRyb3BwZWQuCisgKi8KK3ZvaWQKK3Bnc3Rh dF9kcm9wX3RhYmxlc3BhY2UoT2lkIHRhYmxlc3BhY2VpZCkKK3sKKwlwZ3N0YXRfZHJvcF90cmFu c2FjdGlvbmFsKFBHU1RBVF9LSU5EX1RBQkxFU1BBQ0UsIEludmFsaWRPaWQsIHRhYmxlc3BhY2Vp ZCk7Cit9CisKKy8qCisgKiBGZXRjaCB0YWJsZXNwYWNlIHN0YXRpc3RpY3MuCisgKi8KK1BnU3Rh dF9TdGF0VGFic3BhY2VFbnRyeSAqCitwZ3N0YXRfZmV0Y2hfc3RhdF90YWJzcGFjZWVudHJ5KE9p ZCB0YWJsZXNwYWNlaWQpCit7CisJcmV0dXJuIChQZ1N0YXRfU3RhdFRhYnNwYWNlRW50cnkgKikK KwkJcGdzdGF0X2ZldGNoX2VudHJ5KFBHU1RBVF9LSU5EX1RBQkxFU1BBQ0UsIEludmFsaWRPaWQs IHRhYmxlc3BhY2VpZCk7Cit9CisKKy8qCisgKiBGbHVzaCBvdXQgcGVuZGluZyBzdGF0cyBmb3Ig dGhlIGVudHJ5LgorICovCitib29sCitwZ3N0YXRfdGFibGVzcGFjZV9mbHVzaF9jYihQZ1N0YXRf RW50cnlSZWYgKmVudHJ5X3JlZiwgYm9vbCBub3dhaXQpCit7CisJUGdTdGF0U2hhcmVkX1RhYmxl c3BhY2UgKnNoYXJlZGVudDsKKwlQZ1N0YXRfU3RhdFRhYnNwYWNlRW50cnkgKnBlbmRpbmdlbnQ7 CisKKwlwZW5kaW5nZW50ID0gKFBnU3RhdF9TdGF0VGFic3BhY2VFbnRyeSAqKSBlbnRyeV9yZWYt PnBlbmRpbmc7CisJc2hhcmVkZW50ID0gKFBnU3RhdFNoYXJlZF9UYWJsZXNwYWNlICopIGVudHJ5 X3JlZi0+c2hhcmVkX3N0YXRzOworCisJaWYgKCFwZ3N0YXRfbG9ja19lbnRyeShlbnRyeV9yZWYs IG5vd2FpdCkpCisJCXJldHVybiBmYWxzZTsKKworI2RlZmluZSBQR1NUQVRfQUNDVU1fVEFCU1BB Q0VDT1VOVChpdGVtKQkJXAorCShzaGFyZWRlbnQpLT5zdGF0cy5pdGVtICs9IChwZW5kaW5nZW50 KS0+aXRlbQorCisJUEdTVEFUX0FDQ1VNX1RBQlNQQUNFQ09VTlQoYmxvY2tzX2ZldGNoZWQpOwor CVBHU1RBVF9BQ0NVTV9UQUJTUEFDRUNPVU5UKGJsb2Nrc19oaXQpOworCVBHU1RBVF9BQ0NVTV9U QUJTUEFDRUNPVU5UKGJsa19yZWFkX3RpbWUpOworCVBHU1RBVF9BQ0NVTV9UQUJTUEFDRUNPVU5U KGJsa193cml0ZV90aW1lKTsKKwlQR1NUQVRfQUNDVU1fVEFCU1BBQ0VDT1VOVCh0ZW1wX2ZpbGVz KTsKKwlQR1NUQVRfQUNDVU1fVEFCU1BBQ0VDT1VOVCh0ZW1wX2J5dGVzKTsKKworI3VuZGVmIFBH U1RBVF9BQ0NVTV9UQUJTUEFDRUNPVU5UCisKKwlwZ3N0YXRfdW5sb2NrX2VudHJ5KGVudHJ5X3Jl Zik7CisKKwkvKiBDbGVhciBwZW5kaW5nIHN0YXRzIHNpbmNlIHRoZXkgaGF2ZSBiZWVuIGZsdXNo ZWQgKi8KKwltZW1zZXQocGVuZGluZ2VudCwgMCwgc2l6ZW9mKCpwZW5kaW5nZW50KSk7CisKKwly ZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIFJlc2V0IHN0YXRzIHJlc2V0IHRpbWVzdGFtcC4KKyAq Lwordm9pZAorcGdzdGF0X3RhYmxlc3BhY2VfcmVzZXRfdGltZXN0YW1wX2NiKFBnU3RhdFNoYXJl ZF9Db21tb24gKmhlYWRlciwgVGltZXN0YW1wVHogdHMpCit7CisJKChQZ1N0YXRTaGFyZWRfVGFi bGVzcGFjZSAqKSBoZWFkZXIpLT5zdGF0cy5zdGF0X3Jlc2V0X3RpbWVzdGFtcCA9IHRzOworfQor CisvKgorICogUHJlcGFyZSBmb3IgcmVwb3J0aW5nIHRhYmxlc3BhY2Ugc3RhdHMuCisgKi8KK1Bn U3RhdF9TdGF0VGFic3BhY2VFbnRyeSAqCitwZ3N0YXRfcHJlcF90YWJsZXNwYWNlX3BlbmRpbmco T2lkIHRhYmxlc3BhY2VpZCkKK3sKKwlQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZjsKKworCS8q CisJICogSWYgc3RhdHMgY29sbGVjdGlvbiBpcyBkaXNhYmxlZCwgd2UgZG9uJ3QgaGF2ZSBhbnl3 aGVyZSB0byBwdXQgdGhlIGNvdW50ZXJzLgorCSAqLworCWlmICghcGdzdGF0X3RyYWNrX2NvdW50 cykKKwkJcmV0dXJuIE5VTEw7CisKKwllbnRyeV9yZWYgPSBwZ3N0YXRfcHJlcF9wZW5kaW5nX2Vu dHJ5KFBHU1RBVF9LSU5EX1RBQkxFU1BBQ0UsCisJCQkJCQkJCQkJICBJbnZhbGlkT2lkLCB0YWJs ZXNwYWNlaWQsIE5VTEwpOworCisJcmV0dXJuIChQZ1N0YXRfU3RhdFRhYnNwYWNlRW50cnkgKikg ZW50cnlfcmVmLT5wZW5kaW5nOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3Bnc3RhdGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwppbmRl eCA1ZjkwNzMzNTk5MC4uNWU0NTNkMTFlNTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9wZ3N0YXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5j cy5jCkBAIC0xOTI4LDYgKzE5MjgsNyBAQCBwZ19zdGF0X3Jlc2V0X3NoYXJlZChQR19GVU5DVElP Tl9BUkdTKQogCQlYTG9nUHJlZmV0Y2hSZXNldFN0YXRzKCk7CiAJCXBnc3RhdF9yZXNldF9vZl9r aW5kKFBHU1RBVF9LSU5EX1NMUlUpOwogCQlwZ3N0YXRfcmVzZXRfb2Zfa2luZChQR1NUQVRfS0lO RF9XQUwpOworCQlwZ3N0YXRfcmVzZXRfb2Zfa2luZChQR1NUQVRfS0lORF9UQUJMRVNQQUNFKTsK IAogCQlQR19SRVRVUk5fVk9JRCgpOwogCX0KQEAgLTE5NDgsMTEgKzE5NDksMTMgQEAgcGdfc3Rh dF9yZXNldF9zaGFyZWQoUEdfRlVOQ1RJT05fQVJHUykKIAkJcGdzdGF0X3Jlc2V0X29mX2tpbmQo UEdTVEFUX0tJTkRfU0xSVSk7CiAJZWxzZSBpZiAoc3RyY21wKHRhcmdldCwgIndhbCIpID09IDAp CiAJCXBnc3RhdF9yZXNldF9vZl9raW5kKFBHU1RBVF9LSU5EX1dBTCk7CisJZWxzZSBpZiAoc3Ry Y21wKHRhcmdldCwgInRhYmxlc3BhY2UiKSA9PSAwKQorCQlwZ3N0YXRfcmVzZXRfb2Zfa2luZChQ R1NUQVRfS0lORF9UQUJMRVNQQUNFKTsKIAllbHNlCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJIGVycm1zZygidW5y ZWNvZ25pemVkIHJlc2V0IHRhcmdldDogXCIlc1wiIiwgdGFyZ2V0KSwKLQkJCQkgZXJyaGludCgi VGFyZ2V0IG11c3QgYmUgXCJhcmNoaXZlclwiLCBcImJnd3JpdGVyXCIsIFwiY2hlY2twb2ludGVy XCIsIFwiaW9cIiwgXCJyZWNvdmVyeV9wcmVmZXRjaFwiLCBcInNscnVcIiwgb3IgXCJ3YWxcIi4i KSkpOworCQkJCSBlcnJoaW50KCJUYXJnZXQgbXVzdCBiZSBcImFyY2hpdmVyXCIsIFwiYmd3cml0 ZXJcIiwgXCJjaGVja3BvaW50ZXJcIiwgXCJpb1wiLCBcInJlY292ZXJ5X3ByZWZldGNoXCIsIFwi c2xydVwiLCBcIndhbFwiLCBvciBcInRhYmxlc3BhY2VcIi4iKSkpOwogCiAJUEdfUkVUVVJOX1ZP SUQoKTsKIH0KQEAgLTIzMDksNiArMjMxMiw4MSBAQCBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb25f c3RhdHMoUEdfRlVOQ1RJT05fQVJHUykKIAlQR19SRVRVUk5fREFUVU0oSGVhcFR1cGxlR2V0RGF0 dW0oaGVhcF9mb3JtX3R1cGxlKHR1cGRlc2MsIHZhbHVlcywgbnVsbHMpKSk7CiB9CiAKKy8qCisg KiBSZXR1cm5zIHRhYmxlc3BhY2Ugc3RhdGlzdGljcyBmb3IgdGhlIGdpdmVuIHRhYmxlc3BhY2Uu IElmIHRoZSB0YWJsZXNwYWNlCisgKiBzdGF0aXN0aWNzIGlzIG5vdCBhdmFpbGFibGUsIHJldHVy biBhbGwtemVyb3Mgc3RhdHMuCisgKi8KK0RhdHVtCitwZ19zdGF0X2dldF90YWJsZXNwYWNlKFBH X0ZVTkNUSU9OX0FSR1MpCit7CisjZGVmaW5lIFBHX1NUQVRfR0VUX1RBQkxFU1BBQ0VfQ09MUwk3 CisJT2lkCQkJc3Bjb2lkID0gUEdfR0VUQVJHX09JRCgwKTsKKwlUdXBsZURlc2MJdHVwZGVzYzsK KwlEYXR1bQkJdmFsdWVzW1BHX1NUQVRfR0VUX1RBQkxFU1BBQ0VfQ09MU10gPSB7MH07CisJYm9v bAkJbnVsbHNbUEdfU1RBVF9HRVRfVEFCTEVTUEFDRV9DT0xTXSA9IHswfTsKKwlQZ1N0YXRfU3Rh dFRhYnNwYWNlRW50cnkgKnRzZW50cnk7CisJUGdTdGF0X1N0YXRUYWJzcGFjZUVudHJ5IGFsbHpl cm87CisJaW50CQkJaSA9IDA7CisKKwkvKiBHZXQgdGFibGVzcGFjZSBzdGF0cyAqLworCXRzZW50 cnkgPSBwZ3N0YXRfZmV0Y2hfc3RhdF90YWJzcGFjZWVudHJ5KHNwY29pZCk7CisKKwkvKiBJbml0 aWFsaXNlIGF0dHJpYnV0ZXMgaW5mb3JtYXRpb24gaW4gdGhlIHR1cGxlIGRlc2NyaXB0b3IgKi8K Kwl0dXBkZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURlc2MoUEdfU1RBVF9HRVRfVEFCTEVTUEFD RV9DT0xTKTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDEsICJi bGtfcmVhZF90aW1lIiwKKwkJCQkJICAgRkxPQVQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5p dEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAyLCAiYmxrX3dyaXRlX3RpbWUiLAorCQkJCQkg ICBGTE9BVDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJO dW1iZXIpIDMsICJibG9ja3NfZmV0Y2hlZCIsCisJCQkJCSAgIElOVDhPSUQsIC0xLCAwKTsKKwlU dXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDQsICJibG9ja3NfaGl0IiwK KwkJCQkJICAgSU5UOE9JRCwgLTEsIDApOworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAo QXR0ck51bWJlcikgNSwgInRlbXBfZmlsZXMiLAorCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJ VHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSA2LCAidGVtcF9ieXRlcyIs CisJCQkJCSAgIElOVDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywg KEF0dHJOdW1iZXIpIDcsICJzdGF0c19yZXNldCIsCisJCQkJCSAgIFRJTUVTVEFNUFRaT0lELCAt MSwgMCk7CisJVHVwbGVEZXNjRmluYWxpemUodHVwZGVzYyk7CisJdHVwZGVzYyA9IEJsZXNzVHVw bGVEZXNjKHR1cGRlc2MpOworCisJaWYgKCF0c2VudHJ5KQorCXsKKwkJLyogSWYgdGhlIHRhYmxl c3BhY2UgaXMgbm90IGZvdW5kLCBpbml0aWFsaXNlIGl0cyBzdGF0cyAqLworCQltZW1zZXQoJmFs bHplcm8sIDAsIHNpemVvZihQZ1N0YXRfU3RhdFRhYnNwYWNlRW50cnkpKTsKKwkJdHNlbnRyeSA9 ICZhbGx6ZXJvOworCX0KKworCS8qIGJsa19yZWFkX3RpbWUgKi8KKwl2YWx1ZXNbaSsrXSA9IEZs b2F0OEdldERhdHVtKHBnX3N0YXRfdXNfdG9fbXModHNlbnRyeS0+YmxrX3JlYWRfdGltZSkpOwor CisJLyogYmxrX3dyaXRlX3RpbWUgKi8KKwl2YWx1ZXNbaSsrXSA9IEZsb2F0OEdldERhdHVtKHBn X3N0YXRfdXNfdG9fbXModHNlbnRyeS0+YmxrX3dyaXRlX3RpbWUpKTsKKworCS8qIGJsb2Nrc19m ZXRjaGVkICovCisJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKHRzZW50cnktPmJsb2Nrc19m ZXRjaGVkKTsKKworCS8qIGJsb2Nrc19oaXQgKi8KKwl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0 dW0odHNlbnRyeS0+YmxvY2tzX2hpdCk7CisKKwkvKiB0ZW1wX2ZpbGVzICovCisJdmFsdWVzW2kr K10gPSBJbnQ2NEdldERhdHVtKHRzZW50cnktPnRlbXBfZmlsZXMpOworCisJLyogdGVtcF9ieXRl cyAqLworCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bSh0c2VudHJ5LT50ZW1wX2J5dGVzKTsK KworCS8qIHN0YXRzX3Jlc2V0ICovCisJaWYgKHRzZW50cnktPnN0YXRfcmVzZXRfdGltZXN0YW1w ID09IDApCisJCW51bGxzW2ldID0gdHJ1ZTsKKwllbHNlCisJCXZhbHVlc1tpXSA9IFRpbWVzdGFt cFR6R2V0RGF0dW0odHNlbnRyeS0+c3RhdF9yZXNldF90aW1lc3RhbXApOworCisJQXNzZXJ0KGkg KyAxID09IFBHX1NUQVRfR0VUX1RBQkxFU1BBQ0VfQ09MUyk7CisKKwkvKiBSZXR1cm5zIHRoZSBy ZWNvcmQgYXMgRGF0dW0gKi8KKwlQR19SRVRVUk5fREFUVU0oSGVhcFR1cGxlR2V0RGF0dW0oaGVh cF9mb3JtX3R1cGxlKHR1cGRlc2MsIHZhbHVlcywgbnVsbHMpKSk7Cit9CisKIC8qCiAgKiBDaGVj a3MgZm9yIHByZXNlbmNlIG9mIHN0YXRzIGZvciBvYmplY3Qgd2l0aCBwcm92aWRlZCBraW5kLCBk YXRhYmFzZSBvaWQsCiAgKiBvYmplY3Qgb2lkLgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9jYXR2ZXJzaW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaAppbmRl eCA0MjA4NTAyOTNmOC4uMzU5YzE0NTNmNDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvY2F0dmVyc2lvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oCkBA IC01Nyw2ICs1Nyw2IEBACiAgKi8KIAogLyoJCQkJCQkJeXl5eW1tZGROICovCi0jZGVmaW5lIENB VEFMT0dfVkVSU0lPTl9OTwkyMDI2MDMyMDEKKyNkZWZpbmUgQ0FUQUxPR19WRVJTSU9OX05PCTIw MjYwMzIwMgogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDg0ZTdhZGRlMGU1 Li5iOGE2MGI5ZjMwYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRh dAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC02MDg4LDYgKzYwODgs MTQgQEAKICAgcHJvYXJnbmFtZXMgPT4gJ3tuYW1lLGJsa3NfemVyb2VkLGJsa3NfaGl0LGJsa3Nf cmVhZCxibGtzX3dyaXR0ZW4sYmxrc19leGlzdHMsZmx1c2hlcyx0cnVuY2F0ZXMsc3RhdHNfcmVz ZXR9JywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9zbHJ1JyB9LAogCit7IG9pZCA9PiAnODQ1 OScsIGRlc2NyID0+ICdzdGF0aXN0aWNzOiB0YWJsZXNwYWNlIHN0YXRpc3RpY3MnLAorICBwcm9u YW1lID0+ICdwZ19zdGF0X2dldF90YWJsZXNwYWNlJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAorICBw cm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ3JlY29yZCcsIHByb2FyZ3R5cGVzID0+ ICdvaWQnLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne29pZCxmbG9hdDgsZmxvYXQ4LGludDgsaW50 OCxpbnQ4LGludDgsdGltZXN0YW1wdHp9JywKKyAgcHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG8s byxvLG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3t0YWJsZXNwYWNlaWQsYmxrX3JlYWRfdGltZSxi bGtfd3JpdGVfdGltZSxibG9ja3NfZmV0Y2hlZCxibG9ja3NfaGl0LHRlbXBfZmlsZXMsdGVtcF9i eXRlcyxzdGF0c19yZXNldH0nLAorICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X3RhYmxlc3BhY2Un IH0sCisKIHsgb2lkID0+ICcyOTc4JywgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IG51bWJlciBvZiBm dW5jdGlvbiBjYWxscycsCiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X2Z1bmN0aW9uX2NhbGxz JywgcHJvdm9sYXRpbGUgPT4gJ3MnLAogICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUg PT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3Bnc3RhdC5oIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKaW5kZXggMjE2YjkzNDkyYmEuLmQ1MWVh MjA4ZGRjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ3N0YXQuaAorKysgYi9zcmMvaW5jbHVk ZS9wZ3N0YXQuaApAQCAtMTgwLDYgKzE4MCw3IEBAIHR5cGVkZWYgc3RydWN0IFBnU3RhdF9UYWJs ZVN0YXR1cwogewogCU9pZAkJCWlkOwkJCQkvKiB0YWJsZSdzIE9JRCAqLwogCWJvb2wJCXNoYXJl ZDsJCQkvKiBpcyBpdCBhIHNoYXJlZCBjYXRhbG9nPyAqLworCU9pZAkJCXJlbHRhYmxlc3BhY2U7 CS8qIHRhYmxlc3BhY2UgT0lEICovCiAJc3RydWN0IFBnU3RhdF9UYWJsZVhhY3RTdGF0dXMgKnRy YW5zOwkvKiBsb3dlc3Qgc3VieGFjdCdzIGNvdW50cyAqLwogCVBnU3RhdF9UYWJsZUNvdW50cyBj b3VudHM7CS8qIGV2ZW50IGNvdW50cyB0byBiZSBzZW50ICovCiAJUmVsYXRpb24JcmVsYXRpb247 CQkvKiByZWwgdGhhdCBpcyB1c2luZyB0aGlzIGVudHJ5ICovCkBAIC0zODMsNiArMzg0LDE4IEBA IHR5cGVkZWYgc3RydWN0IFBnU3RhdF9TdGF0REJFbnRyeQogCVRpbWVzdGFtcFR6IHN0YXRfcmVz ZXRfdGltZXN0YW1wOwogfSBQZ1N0YXRfU3RhdERCRW50cnk7CiAKK3R5cGVkZWYgc3RydWN0IFBn U3RhdF9TdGF0VGFic3BhY2VFbnRyeQoreworCVBnU3RhdF9Db3VudGVyIGJsa19yZWFkX3RpbWU7 CS8qIHRpbWVzIGluIG1pY3Jvc2Vjb25kcyAqLworCVBnU3RhdF9Db3VudGVyIGJsa193cml0ZV90 aW1lOworCVBnU3RhdF9Db3VudGVyIGJsb2Nrc19mZXRjaGVkOworCVBnU3RhdF9Db3VudGVyIGJs b2Nrc19oaXQ7CisJUGdTdGF0X0NvdW50ZXIgdGVtcF9maWxlczsKKwlQZ1N0YXRfQ291bnRlciB0 ZW1wX2J5dGVzOworCisJVGltZXN0YW1wVHogc3RhdF9yZXNldF90aW1lc3RhbXA7Cit9IFBnU3Rh dF9TdGF0VGFic3BhY2VFbnRyeTsKKwogdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0YXRGdW5jRW50 cnkKIHsKIAlQZ1N0YXRfQ291bnRlciBudW1jYWxsczsKQEAgLTc0Myw2ICs3NTYsMTUgQEAgZXh0 ZXJuIFBnU3RhdF9TdGF0VGFiRW50cnkgKnBnc3RhdF9mZXRjaF9zdGF0X3RhYmVudHJ5X2V4dChi b29sIHNoYXJlZCwKIGV4dGVybiBQZ1N0YXRfVGFibGVTdGF0dXMgKmZpbmRfdGFic3RhdF9lbnRy eShPaWQgcmVsX2lkKTsKIAogCisvKgorICogRnVuY3Rpb25zIGluIHBnc3RhdF90YWJsZXNwYWNl LmMKKyAqLworCitleHRlcm4gdm9pZCBwZ3N0YXRfZHJvcF90YWJsZXNwYWNlKE9pZCB0YWJsZXNw YWNlaWQpOworZXh0ZXJuIFBnU3RhdF9TdGF0VGFic3BhY2VFbnRyeSAqcGdzdGF0X2ZldGNoX3N0 YXRfdGFic3BhY2VlbnRyeShPaWQgdGFibGVzcGFjZWlkKTsKK2V4dGVybiBQZ1N0YXRfU3RhdFRh YnNwYWNlRW50cnkgKnBnc3RhdF9wcmVwX3RhYmxlc3BhY2VfcGVuZGluZyhPaWQgdGFibGVzcGFj ZWlkKTsKKworCiAvKgogICogRnVuY3Rpb25zIGluIHBnc3RhdF9yZXBsc2xvdC5jCiAgKi8KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3RhdHVzLmggYi9zcmMvaW5jbHVk ZS91dGlscy9iYWNrZW5kX3N0YXR1cy5oCmluZGV4IGRkZDA2MzA0ZTk3Li5hMmM1MDFlZGYwMCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvYmFja2VuZF9zdGF0dXMuaAorKysgYi9zcmMv aW5jbHVkZS91dGlscy9iYWNrZW5kX3N0YXR1cy5oCkBAIC0zMjMsNyArMzIzLDcgQEAgZXh0ZXJu IHZvaWQgcGdzdGF0X2NsZWFyX2JhY2tlbmRfYWN0aXZpdHlfc25hcHNob3Qodm9pZCk7CiBleHRl cm4gdm9pZCBwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KEJhY2tlbmRTdGF0ZSBzdGF0ZSwgY29uc3Qg Y2hhciAqY21kX3N0cik7CiBleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X3F1ZXJ5X2lkKGludDY0 IHF1ZXJ5X2lkLCBib29sIGZvcmNlKTsKIGV4dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRfcGxhbl9p ZChpbnQ2NCBwbGFuX2lkLCBib29sIGZvcmNlKTsKLWV4dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRf dGVtcGZpbGUoc2l6ZV90IGZpbGVzaXplKTsKK2V4dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRfdGVt cGZpbGUoc2l6ZV90IGZpbGVzaXplLCBjb25zdCBjaGFyICpwYXRoKTsKIGV4dGVybiB2b2lkIHBn c3RhdF9yZXBvcnRfYXBwbmFtZShjb25zdCBjaGFyICphcHBuYW1lKTsKIGV4dGVybiB2b2lkIHBn c3RhdF9yZXBvcnRfeGFjdF90aW1lc3RhbXAoVGltZXN0YW1wVHogdHN0YW1wKTsKIGV4dGVybiBj b25zdCBjaGFyICpwZ3N0YXRfZ2V0X2JhY2tlbmRfY3VycmVudF9hY3Rpdml0eShpbnQgcGlkLCBi b29sIGNoZWNrVXNlcik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wZ3N0YXRfaW50 ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3Bnc3RhdF9pbnRlcm5hbC5oCmluZGV4IDliOGZi YWUwMGVkLi5mZjBhZDRmZGE1NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcGdzdGF0 X2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdzdGF0X2ludGVybmFsLmgKQEAg LTQ5NCw2ICs0OTQsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0U2hhcmVkX0RhdGFiYXNlCiAJ UGdTdGF0X1N0YXREQkVudHJ5IHN0YXRzOwogfSBQZ1N0YXRTaGFyZWRfRGF0YWJhc2U7CiAKK3R5 cGVkZWYgc3RydWN0IFBnU3RhdFNoYXJlZF9UYWJsZXNwYWNlCit7CisJUGdTdGF0U2hhcmVkX0Nv bW1vbiBoZWFkZXI7CisJUGdTdGF0X1N0YXRUYWJzcGFjZUVudHJ5IHN0YXRzOworfSBQZ1N0YXRT aGFyZWRfVGFibGVzcGFjZTsKKwogdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0U2hhcmVkX1JlbGF0aW9u CiB7CiAJUGdTdGF0U2hhcmVkX0NvbW1vbiBoZWFkZXI7CkBAIC03MzEsNiArNzM3LDggQEAgZXh0 ZXJuIFBnU3RhdF9TdGF0REJFbnRyeSAqcGdzdGF0X3ByZXBfZGF0YWJhc2VfcGVuZGluZyhPaWQg ZGJvaWQpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X3Jlc2V0X2RhdGFiYXNlX3RpbWVzdGFtcChPaWQg ZGJvaWQsIFRpbWVzdGFtcFR6IHRzKTsKIGV4dGVybiBib29sIHBnc3RhdF9kYXRhYmFzZV9mbHVz aF9jYihQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZiwgYm9vbCBub3dhaXQpOwogZXh0ZXJuIHZv aWQgcGdzdGF0X2RhdGFiYXNlX3Jlc2V0X3RpbWVzdGFtcF9jYihQZ1N0YXRTaGFyZWRfQ29tbW9u ICpoZWFkZXIsIFRpbWVzdGFtcFR6IHRzKTsKK2V4dGVybiBib29sIHBnc3RhdF90YWJsZXNwYWNl X2ZsdXNoX2NiKFBnU3RhdF9FbnRyeVJlZiAqZW50cnlfcmVmLCBib29sIG5vd2FpdCk7CitleHRl cm4gdm9pZCBwZ3N0YXRfdGFibGVzcGFjZV9yZXNldF90aW1lc3RhbXBfY2IoUGdTdGF0U2hhcmVk X0NvbW1vbiAqaGVhZGVyLCBUaW1lc3RhbXBUeiB0cyk7CiAKIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3V0aWxzL3Bnc3RhdF9raW5kLmggYi9zcmMvaW5jbHVkZS91dGlscy9wZ3N0YXRf a2luZC5oCmluZGV4IGMzMGI2MjM1NjIzLi5hMjFkNmMzYjkyNSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvdXRpbHMvcGdzdGF0X2tpbmQuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wZ3N0YXRf a2luZC5oCkBAIC0zOCw5ICszOCwxMCBAQAogI2RlZmluZSBQR1NUQVRfS0lORF9JTwkxMAogI2Rl ZmluZSBQR1NUQVRfS0lORF9TTFJVCTExCiAjZGVmaW5lIFBHU1RBVF9LSU5EX1dBTAkxMgorI2Rl ZmluZSBQR1NUQVRfS0lORF9UQUJMRVNQQUNFCTEzCiAKICNkZWZpbmUgUEdTVEFUX0tJTkRfQlVJ TFRJTl9NSU4gUEdTVEFUX0tJTkRfREFUQUJBU0UKLSNkZWZpbmUgUEdTVEFUX0tJTkRfQlVJTFRJ Tl9NQVggUEdTVEFUX0tJTkRfV0FMCisjZGVmaW5lIFBHU1RBVF9LSU5EX0JVSUxUSU5fTUFYIFBH U1RBVF9LSU5EX1RBQkxFU1BBQ0UKICNkZWZpbmUgUEdTVEFUX0tJTkRfQlVJTFRJTl9TSVpFIChQ R1NUQVRfS0lORF9CVUlMVElOX01BWCArIDEpCiAKIC8qIEN1c3RvbSBzdGF0cyBraW5kcyAqLwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCAzMmJlYTU4ZGIyYy4uNzJkYTJhNzdk N2QgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CkBAIC0yMzAxLDYgKzIzMDEsMTcg QEAgcGdfc3RhdF9zeXNfdGFibGVzfCBTRUxFQ1QgcmVsaWQsCiAgICAgc3RhdHNfcmVzZXQKICAg IEZST00gcGdfc3RhdF9hbGxfdGFibGVzCiAgIFdIRVJFICgoc2NoZW1hbmFtZSA9IEFOWSAoQVJS QVlbJ3BnX2NhdGFsb2cnOjpuYW1lLCAnaW5mb3JtYXRpb25fc2NoZW1hJzo6bmFtZV0pKSBPUiAo c2NoZW1hbmFtZSB+ICdecGdfdG9hc3QnOjp0ZXh0KSk7CitwZ19zdGF0X3RhYmxlc3BhY2V8IFNF TEVDVCB0Lm9pZCBBUyB0YWJsZXNwYWNlX2lkLAorICAgIHQuc3BjbmFtZSBBUyB0YWJsZXNwYWNl X25hbWUsCisgICAgcy5ibGtfcmVhZF90aW1lLAorICAgIHMuYmxrX3dyaXRlX3RpbWUsCisgICAg cy5ibG9ja3NfZmV0Y2hlZCwKKyAgICBzLmJsb2Nrc19oaXQsCisgICAgcy50ZW1wX2ZpbGVzLAor ICAgIHMudGVtcF9ieXRlcywKKyAgICBzLnN0YXRzX3Jlc2V0CisgICBGUk9NIChwZ190YWJsZXNw YWNlIHQKKyAgICAgTEVGVCBKT0lOIExBVEVSQUwgcGdfc3RhdF9nZXRfdGFibGVzcGFjZSh0Lm9p ZCkgcyhibGtfcmVhZF90aW1lLCBibGtfd3JpdGVfdGltZSwgYmxvY2tzX2ZldGNoZWQsIGJsb2Nr c19oaXQsIHRlbXBfZmlsZXMsIHRlbXBfYnl0ZXMsIHN0YXRzX3Jlc2V0KSBPTiAodHJ1ZSkpOwog cGdfc3RhdF91c2VyX2Z1bmN0aW9uc3wgU0VMRUNUIHAub2lkIEFTIGZ1bmNpZCwKICAgICBuLm5z cG5hbWUgQVMgc2NoZW1hbmFtZSwKICAgICBwLnByb25hbWUgQVMgZnVuY25hbWUsCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc3RhdHMub3V0CmluZGV4IGI5OTQ2MmJmOTQ2Li40ZDJkYjMxMmU0NyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0cy5vdXQKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9zdGF0cy5vdXQKQEAgLTExMzAsNyArMTEzMCw3IEBAIFNFTEVD VCBzdGF0c19yZXNldCA+IDond2FsX3Jlc2V0X3RzJzo6dGltZXN0YW1wdHogRlJPTSBwZ19zdGF0 X3dhbDsKIC0tIFRlc3QgZXJyb3IgY2FzZSBmb3IgcmVzZXRfc2hhcmVkIHdpdGggdW5rbm93biBz dGF0cyB0eXBlCiBTRUxFQ1QgcGdfc3RhdF9yZXNldF9zaGFyZWQoJ3Vua25vd24nKTsKIEVSUk9S OiAgdW5yZWNvZ25pemVkIHJlc2V0IHRhcmdldDogInVua25vd24iCi1ISU5UOiAgVGFyZ2V0IG11 c3QgYmUgImFyY2hpdmVyIiwgImJnd3JpdGVyIiwgImNoZWNrcG9pbnRlciIsICJpbyIsICJyZWNv dmVyeV9wcmVmZXRjaCIsICJzbHJ1Iiwgb3IgIndhbCIuCitISU5UOiAgVGFyZ2V0IG11c3QgYmUg ImFyY2hpdmVyIiwgImJnd3JpdGVyIiwgImNoZWNrcG9pbnRlciIsICJpbyIsICJyZWNvdmVyeV9w cmVmZXRjaCIsICJzbHJ1IiwgIndhbCIsIG9yICJ0YWJsZXNwYWNlIi4KIC0tIFRlc3QgdGhhdCBy ZXNldCB3b3JrcyBmb3IgcGdfc3RhdF9kYXRhYmFzZSBhbmQgcGdfc3RhdF9kYXRhYmFzZV9jb25m bGljdHMKIC0tIFNpbmNlIHBnX3N0YXRfZGF0YWJhc2Ugc3RhdHNfcmVzZXQgc3RhcnRzIG91dCBh cyBOVUxMLCByZXNldCBpdCBvbmNlIGZpcnN0IHNvIHRoYXQgd2UKIC0tIGhhdmUgYSBiYXNlbGlu ZSBmb3IgY29tcGFyaXNvbi4gVGhlIHNhbWUgZm9yIHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3Rz IGFzIGl0IHNoYXJlcwpAQCAtMTk1OCw0ICsxOTU4LDg1IEBAIFNFTEVDVCAqIEZST00gY2hlY2tf ZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gdGFibGVfZmlsbGZhY3RvcicpOwogKDEgcm93 KQogCiBEUk9QIFRBQkxFIHRhYmxlX2ZpbGxmYWN0b3I7CistLSBUZXN0IHBnX3N0YXRfdGFibGVz cGFjZQorU0VMRUNUIGNvdW50KCopID4gMCBGUk9NIHBnX3N0YXRfdGFibGVzcGFjZTsKKyA/Y29s dW1uPyAKKy0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCB0YWJsZXNwYWNlX25hbWUg RlJPTSBwZ19zdGF0X3RhYmxlc3BhY2UgV0hFUkUgdGFibGVzcGFjZV9uYW1lIElOICgncGdfZGVm YXVsdCcsICdwZ19nbG9iYWwnKSBPUkRFUiBCWSB0YWJsZXNwYWNlX25hbWU7CisgdGFibGVzcGFj ZV9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLS0KKyBwZ19kZWZhdWx0CisgcGdfZ2xvYmFsCisoMiBy b3dzKQorCistLSBUZXN0IGJsb2NrIHN0YXRzIGluIHBnX3N0YXRfdGFibGVzcGFjZQorU0VUIHRy YWNrX2lvX3RpbWluZyA9IG9uOworQ1JFQVRFIFRBQkxFIHRlc3RfdGFibGVzcGFjZV9zdGF0cyAo YSBpbnQpOworSU5TRVJUIElOVE8gdGVzdF90YWJsZXNwYWNlX3N0YXRzIFNFTEVDVCBnZW5lcmF0 ZV9zZXJpZXMoMSwgMTAwKTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFibGVzcGFjZV9z dGF0czsKKyBjb3VudCAKKy0tLS0tLS0KKyAgIDEwMAorKDEgcm93KQorCitTRUxFQ1QgcGdfc3Rh dF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGJsb2Nrc19mZXRjaGVk ID49IDAgQVMgaGFzX2Jsb2Nrc19mZXRjaGVkLCBibG9ja3NfaGl0ID49IDAgQVMgaGFzX2Jsb2Nr c19oaXQsIGJsa19yZWFkX3RpbWUgPj0gMCBBUyBoYXNfYmxrX3JlYWRfdGltZSwgYmxrX3dyaXRl X3RpbWUgPj0gMCBBUyBoYXNfYmxrX3dyaXRlX3RpbWUgRlJPTSBwZ19zdGF0X3RhYmxlc3BhY2Ug V0hFUkUgdGFibGVzcGFjZV9uYW1lID0gJ3BnX2RlZmF1bHQnOworIGhhc19ibG9ja3NfZmV0Y2hl ZCB8IGhhc19ibG9ja3NfaGl0IHwgaGFzX2Jsa19yZWFkX3RpbWUgfCBoYXNfYmxrX3dyaXRlX3Rp bWUgCistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgICAgICAgICAgfCB0ICAgICAg ICAgICAgICB8IHQgICAgICAgICAgICAgICAgIHwgdAorKDEgcm93KQorCitEUk9QIFRBQkxFIHRl c3RfdGFibGVzcGFjZV9zdGF0czsKKy0tIFRlc3QgdGVtcCBmaWxlIHN0YXRzIGluIHBnX3N0YXRf dGFibGVzcGFjZQorLS0gVXNlIGEgc29ydCB0aGF0IGV4Y2VlZHMgd29ya19tZW0gdG8gZm9yY2Ug dGVtcCBmaWxlIHVzYWdlCitTRVQgd29ya19tZW0gPSAnNjRrQic7CitTRUxFQ1QgY291bnQoKikg RlJPTSAoU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMDApIEFTIHMgT1JERVIg QlkgcyBERVNDKSBBUyBmb287CisgY291bnQgCistLS0tLS0tCisgMTAwMDAKKygxIHJvdykKKwor UkVTRVQgd29ya19tZW07CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdf c3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygx IHJvdykKKworLS0gV2UgZXhwZWN0IHRlbXAgZmlsZXMgdG8gYmUgaW4gcGdfZGVmYXVsdCBpZiBu b3Qgc3BlY2lmaWVkIG90aGVyd2lzZQorU0VMRUNUIHRlbXBfZmlsZXMgPiAwIEFTIGhhc190ZW1w X2ZpbGVzLCB0ZW1wX2J5dGVzID4gMCBBUyBoYXNfdGVtcF9ieXRlcyBGUk9NIHBnX3N0YXRfdGFi bGVzcGFjZSBXSEVSRSB0YWJsZXNwYWNlX25hbWUgPSAncGdfZGVmYXVsdCc7CisgaGFzX3RlbXBf ZmlsZXMgfCBoYXNfdGVtcF9ieXRlcyAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LQorIHQgICAgICAgICAgICAgIHwgdAorKDEgcm93KQorCistLSBUZXN0IHJlc2V0IGZvciBwZ19z dGF0X3RhYmxlc3BhY2UKKy0tIEVuc3VyZSB3ZSBoYXZlIGEgdGltZXN0YW1wIHRvIGNvbXBhcmUK K1NFTEVDVCBwZ19zdGF0X3Jlc2V0X3NoYXJlZCgndGFibGVzcGFjZScpOworIHBnX3N0YXRfcmVz ZXRfc2hhcmVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1Qg c3RhdHNfcmVzZXQgQVMgdHNfcmVzZXRfYmVmb3JlIEZST00gcGdfc3RhdF90YWJsZXNwYWNlIFdI RVJFIHRhYmxlc3BhY2VfbmFtZSA9ICdwZ19kZWZhdWx0JyBcZ3NldAorU0VMRUNUIHBnX3N0YXRf cmVzZXRfc2hhcmVkKCd0YWJsZXNwYWNlJyk7CisgcGdfc3RhdF9yZXNldF9zaGFyZWQgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBzdGF0c19yZXNldCA+IDon dHNfcmVzZXRfYmVmb3JlJzo6dGltZXN0YW1wdHogRlJPTSBwZ19zdGF0X3RhYmxlc3BhY2UgV0hF UkUgdGFibGVzcGFjZV9uYW1lID0gJ3BnX2RlZmF1bHQnOworID9jb2x1bW4/IAorLS0tLS0tLS0t LQorIHQKKygxIHJvdykKKwogLS0gRW5kIG9mIFN0YXRzIFRlc3QKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzLnNx bAppbmRleCA5NDEyMjJjZjBiZS4uNTlkOTJjMDZmMmIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3N0YXRzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0cy5zcWwK QEAgLTk2NCw0ICs5NjQsNDAgQEAgU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93cygn U0VMRUNUICogRlJPTSB0YWJsZV9maWxsZmFjdG9yJyk7CiAKIERST1AgVEFCTEUgdGFibGVfZmls bGZhY3RvcjsKIAorLS0gVGVzdCBwZ19zdGF0X3RhYmxlc3BhY2UKK1NFTEVDVCBjb3VudCgqKSA+ IDAgRlJPTSBwZ19zdGF0X3RhYmxlc3BhY2U7CisKK1NFTEVDVCB0YWJsZXNwYWNlX25hbWUgRlJP TSBwZ19zdGF0X3RhYmxlc3BhY2UgV0hFUkUgdGFibGVzcGFjZV9uYW1lIElOICgncGdfZGVmYXVs dCcsICdwZ19nbG9iYWwnKSBPUkRFUiBCWSB0YWJsZXNwYWNlX25hbWU7CisKKy0tIFRlc3QgYmxv Y2sgc3RhdHMgaW4gcGdfc3RhdF90YWJsZXNwYWNlCitTRVQgdHJhY2tfaW9fdGltaW5nID0gb247 CitDUkVBVEUgVEFCTEUgdGVzdF90YWJsZXNwYWNlX3N0YXRzIChhIGludCk7CitJTlNFUlQgSU5U TyB0ZXN0X3RhYmxlc3BhY2Vfc3RhdHMgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAxMDApOwor U0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJsZXNwYWNlX3N0YXRzOworCitTRUxFQ1QgcGdf c3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisKK1NFTEVDVCBibG9ja3NfZmV0Y2hlZCA+PSAwIEFT IGhhc19ibG9ja3NfZmV0Y2hlZCwgYmxvY2tzX2hpdCA+PSAwIEFTIGhhc19ibG9ja3NfaGl0LCBi bGtfcmVhZF90aW1lID49IDAgQVMgaGFzX2Jsa19yZWFkX3RpbWUsIGJsa193cml0ZV90aW1lID49 IDAgQVMgaGFzX2Jsa193cml0ZV90aW1lIEZST00gcGdfc3RhdF90YWJsZXNwYWNlIFdIRVJFIHRh Ymxlc3BhY2VfbmFtZSA9ICdwZ19kZWZhdWx0JzsKKworRFJPUCBUQUJMRSB0ZXN0X3RhYmxlc3Bh Y2Vfc3RhdHM7CistLSBUZXN0IHRlbXAgZmlsZSBzdGF0cyBpbiBwZ19zdGF0X3RhYmxlc3BhY2UK Ky0tIFVzZSBhIHNvcnQgdGhhdCBleGNlZWRzIHdvcmtfbWVtIHRvIGZvcmNlIHRlbXAgZmlsZSB1 c2FnZQorU0VUIHdvcmtfbWVtID0gJzY0a0InOworU0VMRUNUIGNvdW50KCopIEZST00gKFNFTEVD VCAqIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAwKSBBUyBzIE9SREVSIEJZIHMgREVTQykg QVMgZm9vOworCitSRVNFVCB3b3JrX21lbTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1 c2goKTsKKworLS0gV2UgZXhwZWN0IHRlbXAgZmlsZXMgdG8gYmUgaW4gcGdfZGVmYXVsdCBpZiBu b3Qgc3BlY2lmaWVkIG90aGVyd2lzZQorU0VMRUNUIHRlbXBfZmlsZXMgPiAwIEFTIGhhc190ZW1w X2ZpbGVzLCB0ZW1wX2J5dGVzID4gMCBBUyBoYXNfdGVtcF9ieXRlcyBGUk9NIHBnX3N0YXRfdGFi bGVzcGFjZSBXSEVSRSB0YWJsZXNwYWNlX25hbWUgPSAncGdfZGVmYXVsdCc7CisKKy0tIFRlc3Qg cmVzZXQgZm9yIHBnX3N0YXRfdGFibGVzcGFjZQorLS0gRW5zdXJlIHdlIGhhdmUgYSB0aW1lc3Rh bXAgdG8gY29tcGFyZQorU0VMRUNUIHBnX3N0YXRfcmVzZXRfc2hhcmVkKCd0YWJsZXNwYWNlJyk7 CisKK1NFTEVDVCBzdGF0c19yZXNldCBBUyB0c19yZXNldF9iZWZvcmUgRlJPTSBwZ19zdGF0X3Rh Ymxlc3BhY2UgV0hFUkUgdGFibGVzcGFjZV9uYW1lID0gJ3BnX2RlZmF1bHQnIFxnc2V0CitTRUxF Q1QgcGdfc3RhdF9yZXNldF9zaGFyZWQoJ3RhYmxlc3BhY2UnKTsKKworU0VMRUNUIHN0YXRzX3Jl c2V0ID4gOid0c19yZXNldF9iZWZvcmUnOjp0aW1lc3RhbXB0eiBGUk9NIHBnX3N0YXRfdGFibGVz cGFjZSBXSEVSRSB0YWJsZXNwYWNlX25hbWUgPSAncGdfZGVmYXVsdCc7CisKIC0tIEVuZCBvZiBT dGF0cyBUZXN0Ci0tIAoyLjUzLjAuOTgzLmcwYmIyOWIzYmM1LWdvb2cKCgo= --0000000000009e178b064dbc345e--