From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id AC5B6941516 for ; Thu, 12 Oct 2023 09:10:12 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=CYX9dwr5H/3VAt0r065U76oudkwOI+89qvsc0E2oFCI=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding:Content-Type; s=20140610; t=1697101811; v=1; b=j7bbpIrf8EyA1x8foXGZh/flX0/2IoKJRLjaiOaEGYWCdlUw6QeOqiufy5dx5UxztJTMVsQ0 TQLyLozM6l8IB8lhQz06NJt0/miMsaZjAy3hM/c5DEsequxWN3ssVUg3TP1LRkwfkFy2jcb5m0U m0kIjYhwny2cMMSLjpkWTxlw= X-Received: by 127.0.0.2 with SMTP id cZ4eYY7687511xrldyhZdetQ; Thu, 12 Oct 2023 02:10:11 -0700 X-Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.groups.io with SMTP id smtpd.web10.7079.1697101810794388665 for ; Thu, 12 Oct 2023 02:10:11 -0700 X-Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-619-HQmQ7Tz2MVygbDfUHnbuzg-1; Thu, 12 Oct 2023 05:10:05 -0400 X-MC-Unique: HQmQ7Tz2MVygbDfUHnbuzg-1 X-Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 7D4A2811E7B; Thu, 12 Oct 2023 09:10:05 +0000 (UTC) X-Received: from lacos-laptop-9.usersys.redhat.com (unknown [10.39.192.186]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9E7B540C6F79; Thu, 12 Oct 2023 09:10:04 +0000 (UTC) From: "Laszlo Ersek" To: edk2-devel-groups-io Cc: Ard Biesheuvel , Leif Lindholm , Wenyi Xie Subject: [edk2-devel] [edk2-platforms PATCH 09/19] Hisilicon: drop unused VirtualRealTimeClockLib instance Date: Thu, 12 Oct 2023 11:09:40 +0200 Message-Id: <20231012090950.108577-10-lersek@redhat.com> In-Reply-To: <20231012090950.108577-1-lersek@redhat.com> References: <687bbaf5-3c2b-6d27-44a5-d19541ce97bd@redhat.com> <20231012090950.108577-1-lersek@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.2 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,lersek@redhat.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: 8RtxSgfOztOpizaRGrftqGZxx7686176AA= Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="US-ASCII"; x-default=true X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=j7bbpIrf; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=redhat.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io VmlydHVhbFJlYWxUaW1lQ2xvY2tMaWIgaXMgbm90IHVzZWQgaW4gZWl0aGVyIGVkazItcGxhdGZv cm1zIG9yCmVkazItbm9uLW9zaSwgYW5kIHRoZXJlIG5ldmVyIGhhcyBiZWVuIGEgcmVmZXJlbmNl IHRvIGl0IC0tIGV2ZW4gdGhlCmluaXRpYWwgY29kZSBkcm9wIHRoYXQgYWRkZWQgaXQgdG8gZWRr Mi1wbGF0Zm9ybXMgWypdIGNvbnRhaW5lZCB6ZXJvCnJlZmVyZW5jZXMgdG8gaXQuIFJlbW92ZSBp dC4KClsqXSBjb21taXQgNjAwMDgxYjUyZGViICgiUGxhdGZvcm0sU2lsaWNvbjogSW1wb3J0IEhp c2lsaWNvbiBEMDIsRDAzLEQwNQphbmQgSGlLZXkiLCAyMDE3LTA4LTAzKQoKQ2M6IEFyZCBCaWVz aGV1dmVsIDxhcmRiK3RpYW5vY29yZUBrZXJuZWwub3JnPgpDYzogTGVpZiBMaW5kaG9sbSA8cXVp Y19sbGluZGhvbEBxdWljaW5jLmNvbT4KQ2M6IFdlbnlpIFhpZSA8eGlld2VueWkyQGh1YXdlaS5j b20+ClJlZjogaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD00 NTY0ClNpZ25lZC1vZmYtYnk6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+Ci0tLQog U2lsaWNvbi9IaXNpbGljb24vTGlicmFyeS9WaXJ0dWFsUmVhbFRpbWVDbG9ja0xpYi9SZWFsVGlt ZUNsb2NrTGliLmluZiB8ICA0MSAtLQogU2lsaWNvbi9IaXNpbGljb24vTGlicmFyeS9WaXJ0dWFs UmVhbFRpbWVDbG9ja0xpYi9SZWFsVGltZUNsb2NrTGliLmMgICB8IDQyMyAtLS0tLS0tLS0tLS0t LS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA0NjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv U2lsaWNvbi9IaXNpbGljb24vTGlicmFyeS9WaXJ0dWFsUmVhbFRpbWVDbG9ja0xpYi9SZWFsVGlt ZUNsb2NrTGliLmluZiBiL1NpbGljb24vSGlzaWxpY29uL0xpYnJhcnkvVmlydHVhbFJlYWxUaW1l Q2xvY2tMaWIvUmVhbFRpbWVDbG9ja0xpYi5pbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDgwMjlkZGE0MzZkYi4uMDAwMDAwMDAwMDAwCi0tLSBhL1NpbGljb24vSGlzaWxpY29uL0xp YnJhcnkvVmlydHVhbFJlYWxUaW1lQ2xvY2tMaWIvUmVhbFRpbWVDbG9ja0xpYi5pbmYKKysrIC9k ZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0jLyoqIEBmaWxlDQotIw0KLSMgICAgQ29weXJpZ2h0 IChjKSAyMDE1LCBIaXNpbGljb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0jICAg IENvcHlyaWdodCAoYykgMjAxNSwgTGluYXJvIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu DQotIw0KLSMgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQN Ci0jDQotIyoqLw0KLQ0KLVtEZWZpbmVzXQ0KLSAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAg ICAgID0gMHgwMDAxMDAwNQ0KLSAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0gUmVh bFRpbWVDbG9ja0xpYlZpcnR1YWwNCi0gIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9 IDQzMkIzNUMxLUEwQ0MtNDcyMC1BNEI5LTFFRkQ3MDA1MDEwNw0KLSAgTU9EVUxFX1RZUEUgICAg ICAgICAgICAgICAgICAgID0gQkFTRQ0KLSAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAg ID0gMS4wDQotICBMSUJSQVJZX0NMQVNTICAgICAgICAgICAgICAgICAgPSBSZWFsVGltZUNsb2Nr TGliDQotDQotW1NvdXJjZXMuY29tbW9uXQ0KLSAgUmVhbFRpbWVDbG9ja0xpYi5jDQotDQotW1Bh Y2thZ2VzXQ0KLSAgTWRlUGtnL01kZVBrZy5kZWMNCi0gIEVtYmVkZGVkUGtnL0VtYmVkZGVkUGtn LmRlYw0KLSAgQXJtUGtnL0FybVBrZy5kZWMNCi0gIE9wZW5QbGF0Zm9ybVBrZy9PcGVuUGxhdGZv cm1Qa2cuZGVjDQotDQotW0xpYnJhcnlDbGFzc2VzXQ0KLSAgSW9MaWINCi0gIFVlZmlMaWINCi0g IERlYnVnTGliDQotICBQY2RMaWINCi0gIER4ZVNlcnZpY2VzVGFibGVMaWINCi0gIFRpbWVCYXNl TGliDQotICBVZWZpUnVudGltZUxpYg0KLSAgQXJtTGliDQotDQotW0d1aWRzXQ0KLSAgZ0VmaUV2 ZW50VmlydHVhbEFkZHJlc3NDaGFuZ2VHdWlkDQotDQotW1BjZF0NCi0gIGdBcm1Ub2tlblNwYWNl R3VpZC5QY2RBcm1BcmNoVGltZXJGcmVxSW5Ieg0KZGlmZiAtLWdpdCBhL1NpbGljb24vSGlzaWxp Y29uL0xpYnJhcnkvVmlydHVhbFJlYWxUaW1lQ2xvY2tMaWIvUmVhbFRpbWVDbG9ja0xpYi5jIGIv U2lsaWNvbi9IaXNpbGljb24vTGlicmFyeS9WaXJ0dWFsUmVhbFRpbWVDbG9ja0xpYi9SZWFsVGlt ZUNsb2NrTGliLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwZWRiY2UwZjE1OC4u MDAwMDAwMDAwMDAwCi0tLSBhL1NpbGljb24vSGlzaWxpY29uL0xpYnJhcnkvVmlydHVhbFJlYWxU aW1lQ2xvY2tMaWIvUmVhbFRpbWVDbG9ja0xpYi5jCisrKyAvZGV2L251bGwKQEAgLTEsNDIzICsw LDAgQEAKLS8qKiBAZmlsZQ0KLSAgSW1wbGVtZW50IEVGSSBSZWFsVGltZUNsb2NrIHJ1bnRpbWUg c2VydmljZXMgdmlhIFJUQyBMaWIuDQotDQotICBDb3B5cmlnaHQgKGMpIDIwMDggLSAyMDEwLCBB cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KLSAgQ29weXJpZ2h0IChjKSAyMDEx IC0gMjAxNCwgQVJNIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQotICBDb3B5cmlnaHQg KGMpIDIwMTUsIEhpc2lsaWNvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCi0g IENvcHlyaWdodCAoYykgMjAxNSwgTGluYXJvIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KLQ0KLSAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQN Ci0NCi0gIEJhc2VkIG9uIHRoZSBmaWxlcyB1bmRlciBBcm1QbGF0Zm9ybVBrZy9MaWJyYXJ5L1BM MDMxUmVhbFRpbWVDbG9ja0xpYi9QTDAzMVJlYWxUaW1lQ2xvY2tMaWIuaW5mDQotDQotKiovDQot DQotI2luY2x1ZGUgPFVlZmkuaD4NCi0jaW5jbHVkZSA8UGlEeGUuaD4NCi0jaW5jbHVkZSA8TGli cmFyeS9CYXNlTGliLmg+DQotI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCi0jaW5jbHVk ZSA8TGlicmFyeS9VZWZpTGliLmg+DQotI2luY2x1ZGUgPExpYnJhcnkvSW9MaWIuaD4NCi0jaW5j bHVkZSA8TGlicmFyeS9SZWFsVGltZUNsb2NrTGliLmg+DQotI2luY2x1ZGUgPExpYnJhcnkvTWVt b3J5QWxsb2NhdGlvbkxpYi5oPg0KLSNpbmNsdWRlIDxMaWJyYXJ5L1BjZExpYi5oPg0KLSNpbmNs dWRlIDxMaWJyYXJ5L0R4ZVNlcnZpY2VzVGFibGVMaWIuaD4NCi0jaW5jbHVkZSA8TGlicmFyeS9V ZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCi0jaW5jbHVkZSA8TGlicmFyeS9VZWZpUnVudGlt ZVNlcnZpY2VzVGFibGVMaWIuaD4NCi0jaW5jbHVkZSA8TGlicmFyeS9VZWZpUnVudGltZUxpYi5o Pg0KLSNpbmNsdWRlIDxMaWJyYXJ5L1RpbWVCYXNlTGliLmg+DQotDQotI2luY2x1ZGUgPFByb3Rv Y29sL1JlYWxUaW1lQ2xvY2suaD4NCi0NCi0jaW5jbHVkZSA8R3VpZC9HbG9iYWxWYXJpYWJsZS5o Pg0KLSNpbmNsdWRlIDxHdWlkL0V2ZW50R3JvdXAuaD4NCi0NCi0jaW5jbHVkZSA8TGlicmFyeS9B cm1BcmNoVGltZXIuaD4NCi0NCi1TVEFUSUMgQ09OU1QgQ0hBUjE2ICAgICAgICAgICBtVGltZVpv bmVWYXJpYWJsZU5hbWVbXSA9IEwiUFY2NjBWaXJ0dWFsUnRjVGltZVpvbmUiOw0KLVNUQVRJQyBD T05TVCBDSEFSMTYgICAgICAgICAgIG1EYXlsaWdodFZhcmlhYmxlTmFtZVtdID0gTCJQVjY2MFZp cnR1YWxSdGNEYXlsaWdodCI7DQotU1RBVElDIEVGSV9FVkVOVCAgICAgICAgICAgICAgbVJ0Y1Zp cnR1YWxBZGRyQ2hhbmdlRXZlbnQ7DQotU1RBVElDIEVGSV9SVU5USU1FX1NFUlZJQ0VTICAgKm1S VDsNCi0NCi0NCi1TVEFUSUMgSU5UTiBtRXBvY2hEaWZmID0gMDsNCi0NCi0vKioNCi0gIFJldHVy bnMgdGhlIGN1cnJlbnQgdGltZSBhbmQgZGF0ZSBpbmZvcm1hdGlvbiwgYW5kIHRoZSB0aW1lLWtl ZXBpbmcgY2FwYWJpbGl0aWVzDQotICBvZiB0aGUgaGFyZHdhcmUgcGxhdGZvcm0uDQotDQotICBA cGFyYW0gIFRpbWUgICAgICAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIHN0b3JhZ2UgdG8gcmVj ZWl2ZSBhIHNuYXBzaG90IG9mIHRoZSBjdXJyZW50IHRpbWUuDQotICBAcGFyYW0gIENhcGFiaWxp dGllcyAgICAgICAgICAgQW4gb3B0aW9uYWwgcG9pbnRlciB0byBhIGJ1ZmZlciB0byByZWNlaXZl IHRoZSByZWFsIHRpbWUgY2xvY2sNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk ZXZpY2UncyBjYXBhYmlsaXRpZXMuDQotDQotICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAg ICAgVGhlIG9wZXJhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Lg0KLSAgQHJldHZhbCBFRklf SU5WQUxJRF9QQVJBTUVURVIgIFRpbWUgaXMgTlVMTC4NCi0gIEByZXR2YWwgRUZJX0RFVklDRV9F UlJPUiAgICAgICBUaGUgdGltZSBjb3VsZCBub3QgYmUgcmV0cmlldmVkIGR1ZSB0byBoYXJkd2Fy ZSBlcnJvci4NCi0gIEByZXR2YWwgRUZJX1NFQ1VSSVRZX1ZJT0xBVElPTiBUaGUgdGltZSBjb3Vs ZCBub3QgYmUgcmV0cmlldmVkIGR1ZSB0byBhbiBhdXRoZW50aWNhdGlvbiBmYWlsdXJlLg0KLSoq Lw0KLUVGSV9TVEFUVVMNCi1FRklBUEkNCi1MaWJHZXRUaW1lICgNCi0gIE9VVCBFRklfVElNRSAg ICAgICAgICAgICAgICAqVGltZSwNCi0gIE9VVCBFRklfVElNRV9DQVBBQklMSVRJRVMgICAqQ2Fw YWJpbGl0aWVzDQotICApDQotew0KLSAgRUZJX1NUQVRVUyAgU3RhdHVzID0gRUZJX1NVQ0NFU1M7 DQotICBVSU5UNjQgICAgICBUZW1wOw0KLSAgVUlOVDMyICAgICAgRXBvY2hTZWNvbmRzOw0KLSAg SU5UMTYgICAgICAgVGltZVpvbmUgPSAwOw0KLSAgVUlOVDggICAgICAgRGF5bGlnaHQgPSAwOw0K LSAgVUlOVE4gICAgICAgU2l6ZTsNCi0NCi0gIC8vIEVuc3VyZSBUaW1lIGlzIGEgdmFsaWQgcG9p bnRlcg0KLSAgaWYgKFRpbWUgPT0gTlVMTCkgew0KLSAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFS QU1FVEVSOw0KLSAgfQ0KLQ0KLSAgQXJtQXJjaFRpbWVyUmVhZFJlZyhDbnRQY3QsJlRlbXApOw0K LQ0KLSAgLy8gVUlOVDMyIGZvcmNlIGNvbnZlcnRpb24gZm9yIFBDLUxJTlQNCi0gIEVwb2NoU2Vj b25kcyA9IG1FcG9jaERpZmYgKyBUZW1wIC8gKFVJTlQzMikgUGNkR2V0MzIoUGNkQXJtQXJjaFRp bWVyRnJlcUluSHopOw0KLQ0KLSAgLy8gR2V0IHRoZSBjdXJyZW50IHRpbWUgem9uZSBpbmZvcm1h dGlvbiBmcm9tIG5vbi12b2xhdGlsZSBzdG9yYWdlDQotICBTaXplID0gc2l6ZW9mIChUaW1lWm9u ZSk7DQotICBTdGF0dXMgPSBtUlQtPkdldFZhcmlhYmxlICgNCi0gICAgICAgICAgICAgICAgICAo Q0hBUjE2ICopbVRpbWVab25lVmFyaWFibGVOYW1lLA0KLSAgICAgICAgICAgICAgICAgICZnRWZp Q2FsbGVySWRHdWlkLA0KLSAgICAgICAgICAgICAgICAgIE5VTEwsDQotICAgICAgICAgICAgICAg ICAgJlNpemUsDQotICAgICAgICAgICAgICAgICAgKFZPSUQgKikmVGltZVpvbmUNCi0gICAgICAg ICAgICAgICAgICApOw0KLQ0KLSAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KLSAgICBBU1NF UlQoU3RhdHVzICE9IEVGSV9JTlZBTElEX1BBUkFNRVRFUik7DQotICAgIEFTU0VSVChTdGF0dXMg IT0gRUZJX0JVRkZFUl9UT09fU01BTEwpOw0KLQ0KLSAgICBpZiAoU3RhdHVzICE9IEVGSV9OT1Rf Rk9VTkQpDQotICAgICAgZ290byBFWElUOw0KLQ0KLSAgICAvLyBUaGUgdGltZSB6b25lIHZhcmlh YmxlIGRvZXMgbm90IGV4aXN0IGluIG5vbi12b2xhdGlsZSBzdG9yYWdlLCBzbyBjcmVhdGUgaXQu DQotICAgIFRpbWUtPlRpbWVab25lID0gRUZJX1VOU1BFQ0lGSUVEX1RJTUVaT05FOw0KLSAgICAv LyBTdG9yZSBpdA0KLSAgICBTdGF0dXMgPSBtUlQtPlNldFZhcmlhYmxlICgNCi0gICAgICAgICAg ICAgICAgICAgIChDSEFSMTYgKiltVGltZVpvbmVWYXJpYWJsZU5hbWUsDQotICAgICAgICAgICAg ICAgICAgICAmZ0VmaUNhbGxlcklkR3VpZCwNCi0gICAgICAgICAgICAgICAgICAgIEVGSV9WQVJJ QUJMRV9OT05fVk9MQVRJTEUgfCBFRklfVkFSSUFCTEVfQk9PVFNFUlZJQ0VfQUNDRVNTIHwgRUZJ X1ZBUklBQkxFX1JVTlRJTUVfQUNDRVNTLA0KLSAgICAgICAgICAgICAgICAgICAgU2l6ZSwNCi0g ICAgICAgICAgICAgICAgICAgIChWT0lEICopJihUaW1lLT5UaW1lWm9uZSkNCi0gICAgICAgICAg ICAgICAgICAgICk7DQotICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCi0gICAgICBERUJV RyAoKA0KLSAgICAgICAgRUZJX0RfRVJST1IsDQotICAgICAgICAiTGliR2V0VGltZTogRmFpbGVk IHRvIHNhdmUgJXMgdmFyaWFibGUgdG8gbm9uLXZvbGF0aWxlIHN0b3JhZ2UsIFN0YXR1cyA9ICVy XG4iLA0KLSAgICAgICAgbVRpbWVab25lVmFyaWFibGVOYW1lLA0KLSAgICAgICAgU3RhdHVzDQot ICAgICAgICApKTsNCi0gICAgICBnb3RvIEVYSVQ7DQotICAgIH0NCi0gIH0gZWxzZSB7DQotICAg IC8vIEdvdCB0aGUgdGltZSB6b25lDQotICAgIFRpbWUtPlRpbWVab25lID0gVGltZVpvbmU7DQot DQotICAgIC8vIENoZWNrIFRpbWVab25lIGJvdW5kczogICAtMTQ0MCB0byAxNDQwIG9yIDIwNDcN Ci0gICAgaWYgKCgoVGltZS0+VGltZVpvbmUgPCAtMTQ0MCkgfHwgKFRpbWUtPlRpbWVab25lID4g MTQ0MCkpDQotICAgICAgICAmJiAoVGltZS0+VGltZVpvbmUgIT0gRUZJX1VOU1BFQ0lGSUVEX1RJ TUVaT05FKSkgew0KLSAgICAgIFRpbWUtPlRpbWVab25lID0gRUZJX1VOU1BFQ0lGSUVEX1RJTUVa T05FOw0KLSAgICB9DQotDQotICAgIC8vIEFkanVzdCBmb3IgdGhlIGNvcnJlY3QgdGltZSB6b25l DQotICAgIGlmIChUaW1lLT5UaW1lWm9uZSAhPSBFRklfVU5TUEVDSUZJRURfVElNRVpPTkUpIHsN Ci0gICAgICBFcG9jaFNlY29uZHMgKz0gVGltZS0+VGltZVpvbmUgKiBTRUNfUEVSX01JTjsNCi0g ICAgfQ0KLSAgfQ0KLQ0KLSAgLy8gR2V0IHRoZSBjdXJyZW50IGRheWxpZ2h0IGluZm9ybWF0aW9u IGZyb20gbm9uLXZvbGF0aWxlIHN0b3JhZ2UNCi0gIFNpemUgPSBzaXplb2YgKERheWxpZ2h0KTsN Ci0gIFN0YXR1cyA9IG1SVC0+R2V0VmFyaWFibGUgKA0KLSAgICAgICAgICAgICAgICAgIChDSEFS MTYgKiltRGF5bGlnaHRWYXJpYWJsZU5hbWUsDQotICAgICAgICAgICAgICAgICAgJmdFZmlDYWxs ZXJJZEd1aWQsDQotICAgICAgICAgICAgICAgICAgTlVMTCwNCi0gICAgICAgICAgICAgICAgICAm U2l6ZSwNCi0gICAgICAgICAgICAgICAgICAoVk9JRCAqKSZEYXlsaWdodA0KLSAgICAgICAgICAg ICAgICAgICk7DQotDQotICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQotICAgIEFTU0VSVChT dGF0dXMgIT0gRUZJX0lOVkFMSURfUEFSQU1FVEVSKTsNCi0gICAgQVNTRVJUKFN0YXR1cyAhPSBF RklfQlVGRkVSX1RPT19TTUFMTCk7DQotDQotICAgIGlmIChTdGF0dXMgIT0gRUZJX05PVF9GT1VO RCkNCi0gICAgICBnb3RvIEVYSVQ7DQotDQotICAgIC8vIFRoZSBkYXlsaWdodCB2YXJpYWJsZSBk b2VzIG5vdCBleGlzdCBpbiBub24tdm9sYXRpbGUgc3RvcmFnZSwgc28gY3JlYXRlIGl0Lg0KLSAg ICBUaW1lLT5EYXlsaWdodCA9IDA7DQotICAgIC8vIFN0b3JlIGl0DQotICAgIFN0YXR1cyA9IG1S VC0+U2V0VmFyaWFibGUgKA0KLSAgICAgICAgICAgICAgICAgICAgKENIQVIxNiAqKW1EYXlsaWdo dFZhcmlhYmxlTmFtZSwNCi0gICAgICAgICAgICAgICAgICAgICZnRWZpQ2FsbGVySWRHdWlkLA0K LSAgICAgICAgICAgICAgICAgICAgRUZJX1ZBUklBQkxFX05PTl9WT0xBVElMRSB8IEVGSV9WQVJJ QUJMRV9CT09UU0VSVklDRV9BQ0NFU1MgfCBFRklfVkFSSUFCTEVfUlVOVElNRV9BQ0NFU1MsDQot ICAgICAgICAgICAgICAgICAgICBTaXplLA0KLSAgICAgICAgICAgICAgICAgICAgKFZPSUQgKikm KFRpbWUtPkRheWxpZ2h0KQ0KLSAgICAgICAgICAgICAgICAgICAgKTsNCi0gICAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KLSAgICAgIERFQlVHICgoDQotICAgICAgICBFRklfRF9FUlJPUiwN Ci0gICAgICAgICJMaWJHZXRUaW1lOiBGYWlsZWQgdG8gc2F2ZSAlcyB2YXJpYWJsZSB0byBub24t dm9sYXRpbGUgc3RvcmFnZSwgU3RhdHVzID0gJXJcbiIsDQotICAgICAgICBtRGF5bGlnaHRWYXJp YWJsZU5hbWUsDQotICAgICAgICBTdGF0dXMNCi0gICAgICAgICkpOw0KLSAgICAgIGdvdG8gRVhJ VDsNCi0gICAgfQ0KLSAgfSBlbHNlIHsNCi0gICAgLy8gR290IHRoZSBkYXlsaWdodCBpbmZvcm1h dGlvbg0KLSAgICBUaW1lLT5EYXlsaWdodCA9IERheWxpZ2h0Ow0KLQ0KLSAgICAvLyBBZGp1c3Qg Zm9yIHRoZSBjb3JyZWN0IHBlcmlvZA0KLSAgICBpZiAoKFRpbWUtPkRheWxpZ2h0ICYgRUZJX1RJ TUVfSU5fREFZTElHSFQpID09IEVGSV9USU1FX0lOX0RBWUxJR0hUKSB7DQotICAgICAgLy8gQ29u dmVydCB0byBhZGp1c3RlZCB0aW1lLCBpLmUuIHNwcmluZyBmb3J3YXJkcyBvbmUgaG91cg0KLSAg ICAgIEVwb2NoU2Vjb25kcyArPSBTRUNfUEVSX0hPVVI7DQotICAgIH0NCi0gIH0NCi0NCi0gIC8v IENvbnZlcnQgZnJvbSBpbnRlcm5hbCAzMi1iaXQgdGltZSB0byBVRUZJIHRpbWUNCi0gIEVwb2No VG9FZmlUaW1lIChFcG9jaFNlY29uZHMsIFRpbWUpOw0KLQ0KLSAgLy8gVXBkYXRlIHRoZSBDYXBh YmlsaXRpZXMgaW5mbw0KLSAgaWYgKENhcGFiaWxpdGllcyAhPSBOVUxMKSB7DQotICAgIENhcGFi aWxpdGllcy0+UmVzb2x1dGlvbiAgPSAxOw0KLSAgICAvLyBBY2N1cmFjeSBpbiBwcG0gbXVsdGlw bGllZCBieSAxLDAwMCwwMDAsIGUuZy4gZm9yIDUwcHBtIHNldCA1MCwwMDAsMDAwDQotDQotICAg IENhcGFiaWxpdGllcy0+QWNjdXJhY3kgICAgPSBQY2RHZXQzMiAoUGNkQXJtQXJjaFRpbWVyRnJl cUluSHopOw0KLSAgICAvLyBGQUxTRTogU2V0dGluZyB0aGUgdGltZSBkb2VzIG5vdCBjbGVhciB0 aGUgdmFsdWVzIGJlbG93IHRoZSByZXNvbHV0aW9uIGxldmVsDQotICAgIENhcGFiaWxpdGllcy0+ U2V0c1RvWmVybyAgPSBGQUxTRTsNCi0gIH0NCi0NCi0gIEVYSVQ6DQotICByZXR1cm4gU3RhdHVz Ow0KLX0NCi0NCi0NCi0vKioNCi0gIFNldHMgdGhlIGN1cnJlbnQgbG9jYWwgdGltZSBhbmQgZGF0 ZSBpbmZvcm1hdGlvbi4NCi0NCi0gIEBwYXJhbSAgVGltZSAgICAgICAgICAgICAgICAgIEEgcG9p bnRlciB0byB0aGUgY3VycmVudCB0aW1lLg0KLQ0KLSAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICAgICAgVGhlIG9wZXJhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Lg0KLSAgQHJldHZhbCBF RklfSU5WQUxJRF9QQVJBTUVURVIgQSB0aW1lIGZpZWxkIGlzIG91dCBvZiByYW5nZS4NCi0gIEBy ZXR2YWwgRUZJX0RFVklDRV9FUlJPUiAgICAgIFRoZSB0aW1lIGNvdWxkIG5vdCBiZSBzZXQgZHVl IGR1ZSB0byBoYXJkd2FyZSBlcnJvci4NCi0NCi0qKi8NCi1FRklfU1RBVFVTDQotRUZJQVBJDQot TGliU2V0VGltZSAoDQotICBJTiAgRUZJX1RJTUUgICAgICAgICAgICAgICAgKlRpbWUNCi0gICkN Ci17DQotICBFRklfU1RBVFVTICBTdGF0dXM7DQotICBVSU5UTiAgICAgICBFcG9jaFNlY29uZHM7 DQotICBVSU5UTiAgICAgICBUZW1wOw0KLQ0KLSAgLy8gQ2hlY2sgdGhlIGlucHV0IHBhcmFtZXRl cnMgYXJlIHdpdGhpbiB0aGUgcmFuZ2Ugc3BlY2lmaWVkIGJ5IFVFRkkNCi0gIGlmICghSXNUaW1l VmFsaWQgKFRpbWUpKSB7DQotICAgIFN0YXR1cyA9IEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCi0g ICAgZ290byBFWElUOw0KLSAgfQ0KLQ0KLSAgLy8gQmVjYXVzZSB0aGUgUEwwMzEgaXMgYSAzMi1i aXQgY291bnRlciBjb3VudGluZyBzZWNvbmRzLA0KLSAgLy8gdGhlIG1heGltdW0gdGltZSBzcGFu IGlzIGp1c3Qgb3ZlciAxMzYgeWVhcnMuDQotICAvLyBUaW1lIGlzIHN0b3JlZCBpbiBVbml4IEVw b2NoIGZvcm1hdCwgc28gaXQgc3RhcnRzIGluIDE5NzAsDQotICAvLyBUaGVyZWZvcmUgaXQgY2Fu IG5vdCBleGNlZWQgdGhlIHllYXIgMjEwNi4NCi0gIGlmICgoVGltZS0+WWVhciA8IDE5NzApIHx8 IChUaW1lLT5ZZWFyID49IDIxMDYpKSB7DQotICAgIFN0YXR1cyA9IEVGSV9VTlNVUFBPUlRFRDsN Ci0gICAgZ290byBFWElUOw0KLSAgfQ0KLQ0KLSAgRXBvY2hTZWNvbmRzID0gRWZpVGltZVRvRXBv Y2ggKFRpbWUpOw0KLQ0KLSAgLy8gQWRqdXN0IGZvciB0aGUgY29ycmVjdCB0aW1lIHpvbmUsIGku ZS4gY29udmVydCB0byBVVEMgdGltZSB6b25lDQotICBpZiAoVGltZS0+VGltZVpvbmUgIT0gRUZJ X1VOU1BFQ0lGSUVEX1RJTUVaT05FKSB7DQotICAgIEVwb2NoU2Vjb25kcyAtPSBUaW1lLT5UaW1l Wm9uZSAqIFNFQ19QRVJfTUlOOw0KLSAgfQ0KLQ0KLSAgLy8gVE9ETzogQXV0b21hdGljIERheWxp Z2h0IGFjdGl2YXRpb24NCi0NCi0gIC8vIEFkanVzdCBmb3IgdGhlIGNvcnJlY3QgcGVyaW9kDQot ICBpZiAoKFRpbWUtPkRheWxpZ2h0ICYgRUZJX1RJTUVfSU5fREFZTElHSFQpID09IEVGSV9USU1F X0lOX0RBWUxJR0hUKSB7DQotICAgIC8vIENvbnZlcnQgdG8gdW4tYWRqdXN0ZWQgdGltZSwgaS5l LiBmYWxsIGJhY2sgb25lIGhvdXINCi0gICAgRXBvY2hTZWNvbmRzIC09IFNFQ19QRVJfSE9VUjsN Ci0gIH0NCi0NCi0gIEFybUFyY2hUaW1lclJlYWRSZWcoQ250UGN0LCZUZW1wKTsNCi0NCi0gIC8v IFVJTlQzMiBmb3JjZSBjb252ZXJ0aW9uIGZvciBQQy1MSU5UDQotICBtRXBvY2hEaWZmID0gRXBv Y2hTZWNvbmRzIC0gVGVtcCAvIChVSU5UMzIpIFBjZEdldDMyKFBjZEFybUFyY2hUaW1lckZyZXFJ bkh6KTsNCi0NCi0gIC8vIFRoZSBhY2Nlc3NlcyB0byBWYXJpYWJsZSBTZXJ2aWNlcyBjYW4gYmUg dmVyeSBzbG93LCBiZWNhdXNlIHdlIG1heSBiZSB3cml0aW5nIHRvIEZsYXNoLg0KLSAgLy8gRG8g dGhpcyBhZnRlciBoYXZpbmcgc2V0IHRoZSBSVEMuDQotDQotICAvLyBTYXZlIHRoZSBjdXJyZW50 IHRpbWUgem9uZSBpbmZvcm1hdGlvbiBpbnRvIG5vbi12b2xhdGlsZSBzdG9yYWdlDQotICBTdGF0 dXMgPSBtUlQtPlNldFZhcmlhYmxlICgNCi0gICAgICAgICAgICAgICAgICAoQ0hBUjE2ICopbVRp bWVab25lVmFyaWFibGVOYW1lLA0KLSAgICAgICAgICAgICAgICAgICZnRWZpQ2FsbGVySWRHdWlk LA0KLSAgICAgICAgICAgICAgICAgIEVGSV9WQVJJQUJMRV9OT05fVk9MQVRJTEUgfCBFRklfVkFS SUFCTEVfQk9PVFNFUlZJQ0VfQUNDRVNTIHwgRUZJX1ZBUklBQkxFX1JVTlRJTUVfQUNDRVNTLA0K LSAgICAgICAgICAgICAgICAgIHNpemVvZiAoVGltZS0+VGltZVpvbmUpLA0KLSAgICAgICAgICAg ICAgICAgIChWT0lEICopJihUaW1lLT5UaW1lWm9uZSkNCi0gICAgICAgICAgICAgICAgICApOw0K LSAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KLSAgICAgIERFQlVHICgoDQotICAgICAgICBF RklfRF9FUlJPUiwNCi0gICAgICAgICJMaWJTZXRUaW1lOiBGYWlsZWQgdG8gc2F2ZSAlcyB2YXJp YWJsZSB0byBub24tdm9sYXRpbGUgc3RvcmFnZSwgU3RhdHVzID0gJXJcbiIsDQotICAgICAgICBt VGltZVpvbmVWYXJpYWJsZU5hbWUsDQotICAgICAgICBTdGF0dXMNCi0gICAgICAgICkpOw0KLSAg ICBnb3RvIEVYSVQ7DQotICB9DQotDQotICAvLyBTYXZlIHRoZSBjdXJyZW50IGRheWxpZ2h0IGlu Zm9ybWF0aW9uIGludG8gbm9uLXZvbGF0aWxlIHN0b3JhZ2UNCi0gIFN0YXR1cyA9IG1SVC0+U2V0 VmFyaWFibGUgKA0KLSAgICAgICAgICAgICAgICAgIChDSEFSMTYgKiltRGF5bGlnaHRWYXJpYWJs ZU5hbWUsDQotICAgICAgICAgICAgICAgICAgJmdFZmlDYWxsZXJJZEd1aWQsDQotICAgICAgICAg ICAgICAgICAgRUZJX1ZBUklBQkxFX05PTl9WT0xBVElMRSB8IEVGSV9WQVJJQUJMRV9CT09UU0VS VklDRV9BQ0NFU1MgfCBFRklfVkFSSUFCTEVfUlVOVElNRV9BQ0NFU1MsDQotICAgICAgICAgICAg ICAgICAgc2l6ZW9mKFRpbWUtPkRheWxpZ2h0KSwNCi0gICAgICAgICAgICAgICAgICAoVk9JRCAq KSYoVGltZS0+RGF5bGlnaHQpDQotICAgICAgICAgICAgICAgICAgKTsNCi0gIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCi0gICAgREVCVUcgKCgNCi0gICAgICBFRklfRF9FUlJPUiwNCi0gICAg ICAiTGliU2V0VGltZTogRmFpbGVkIHRvIHNhdmUgJXMgdmFyaWFibGUgdG8gbm9uLXZvbGF0aWxl IHN0b3JhZ2UsIFN0YXR1cyA9ICVyXG4iLA0KLSAgICAgIG1EYXlsaWdodFZhcmlhYmxlTmFtZSwN Ci0gICAgICBTdGF0dXMNCi0gICAgICApKTsNCi0gICAgZ290byBFWElUOw0KLSAgfQ0KLQ0KLSAg RVhJVDoNCi0gIHJldHVybiBTdGF0dXM7DQotfQ0KLQ0KLQ0KLS8qKg0KLSAgUmV0dXJucyB0aGUg Y3VycmVudCB3YWtldXAgYWxhcm0gY2xvY2sgc2V0dGluZy4NCi0NCi0gIEBwYXJhbSAgRW5hYmxl ZCAgICAgICAgICAgICAgIEluZGljYXRlcyBpZiB0aGUgYWxhcm0gaXMgY3VycmVudGx5IGVuYWJs ZWQgb3IgZGlzYWJsZWQuDQotICBAcGFyYW0gIFBlbmRpbmcgICAgICAgICAgICAgICBJbmRpY2F0 ZXMgaWYgdGhlIGFsYXJtIHNpZ25hbCBpcyBwZW5kaW5nIGFuZCByZXF1aXJlcyBhY2tub3dsZWRn ZW1lbnQuDQotICBAcGFyYW0gIFRpbWUgICAgICAgICAgICAgICAgICBUaGUgY3VycmVudCBhbGFy bSBzZXR0aW5nLg0KLQ0KLSAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgVGhlIGFsYXJt IHNldHRpbmdzIHdlcmUgcmV0dXJuZWQuDQotICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRF UiBBbnkgcGFyYW1ldGVyIGlzIE5VTEwuDQotICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAg ICBUaGUgd2FrZXVwIHRpbWUgY291bGQgbm90IGJlIHJldHJpZXZlZCBkdWUgdG8gYSBoYXJkd2Fy ZSBlcnJvci4NCi0NCi0qKi8NCi1FRklfU1RBVFVTDQotRUZJQVBJDQotTGliR2V0V2FrZXVwVGlt ZSAoDQotICBPVVQgQk9PTEVBTiAgICAgKkVuYWJsZWQsDQotICBPVVQgQk9PTEVBTiAgICAgKlBl bmRpbmcsDQotICBPVVQgRUZJX1RJTUUgICAgKlRpbWUNCi0gICkNCi17DQotICAvLyBOb3QgYSBy ZXF1aXJlZCBmZWF0dXJlDQotICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KLX0NCi0NCi0NCi0v KioNCi0gIFNldHMgdGhlIHN5c3RlbSB3YWtldXAgYWxhcm0gY2xvY2sgdGltZS4NCi0NCi0gIEBw YXJhbSAgRW5hYmxlZCAgICAgICAgICAgICAgIEVuYWJsZSBvciBkaXNhYmxlIHRoZSB3YWtldXAg YWxhcm0uDQotICBAcGFyYW0gIFRpbWUgICAgICAgICAgICAgICAgICBJZiBFbmFibGUgaXMgVFJV RSwgdGhlIHRpbWUgdG8gc2V0IHRoZSB3YWtldXAgYWxhcm0gZm9yLg0KLQ0KLSAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICAgICAgSWYgRW5hYmxlIGlzIFRSVUUsIHRoZW4gdGhlIHdha2V1cCBh bGFybSB3YXMgZW5hYmxlZC4gSWYNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVu YWJsZSBpcyBGQUxTRSwgdGhlbiB0aGUgd2FrZXVwIGFsYXJtIHdhcyBkaXNhYmxlZC4NCi0gIEBy ZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgdGltZSBmaWVsZCBpcyBvdXQgb2YgcmFuZ2Uu DQotICBAcmV0dmFsIEVGSV9ERVZJQ0VfRVJST1IgICAgICBUaGUgd2FrZXVwIHRpbWUgY291bGQg bm90IGJlIHNldCBkdWUgdG8gYSBoYXJkd2FyZSBlcnJvci4NCi0gIEByZXR2YWwgRUZJX1VOU1VQ UE9SVEVEICAgICAgIEEgd2FrZXVwIHRpbWVyIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0 Zm9ybS4NCi0NCi0qKi8NCi1FRklfU1RBVFVTDQotRUZJQVBJDQotTGliU2V0V2FrZXVwVGltZSAo DQotICBJTiBCT09MRUFOICAgICAgRW5hYmxlZCwNCi0gIE9VVCBFRklfVElNRSAgICAqVGltZQ0K LSAgKQ0KLXsNCi0gIC8vIE5vdCBhIHJlcXVpcmVkIGZlYXR1cmUNCi0gIHJldHVybiBFRklfVU5T VVBQT1JURUQ7DQotfQ0KLQ0KLS8qKg0KLSAgRml4dXAgaW50ZXJuYWwgZGF0YSBzbyB0aGF0IEVG SSBjYW4gYmUgY2FsbCBpbiB2aXJ0dWFsIG1vZGUuDQotICBDYWxsIHRoZSBwYXNzZWQgaW4gQ2hp bGQgTm90aWZ5IGV2ZW50IGFuZCBjb252ZXJ0IGFueSBwb2ludGVycyBpbg0KLSAgbGliIHRvIHZp cnR1YWwgbW9kZS4NCi0NCi0gIEBwYXJhbVtpbl0gICAgRXZlbnQgICBUaGUgRXZlbnQgdGhhdCBp cyBiZWluZyBwcm9jZXNzZWQNCi0gIEBwYXJhbVtpbl0gICAgQ29udGV4dCBFdmVudCBDb250ZXh0 DQotKiovDQotVk9JRA0KLUVGSUFQSQ0KLUxpYlJ0Y1ZpcnR1YWxOb3RpZnlFdmVudCAoDQotICBJ TiBFRklfRVZFTlQgICAgICAgIEV2ZW50LA0KLSAgSU4gVk9JRCAgICAgICAgICAgICAqQ29udGV4 dA0KLSAgKQ0KLXsNCi0gIC8vDQotICAvLyBPbmx5IG5lZWRlZCBpZiB5b3UgYXJlIGdvaW5nIHRv IHN1cHBvcnQgdGhlIE9TIGNhbGxpbmcgUlRDIGZ1bmN0aW9ucyBpbiB2aXJ0dWFsIG1vZGUuDQot ICAvLyBZb3Ugd2lsbCBuZWVkIHRvIGNhbGwgRWZpQ29udmVydFBvaW50ZXIgKCkuIFRvIGNvbnZl cnQgYW55IHN0b3JlZCBwaHlzaWNhbCBhZGRyZXNzZXMNCi0gIC8vIHRvIHZpcnR1YWwgYWRkcmVz cy4gQWZ0ZXIgdGhlIE9TIHRyYW5zaXRpb25zIHRvIGNhbGxpbmcgaW4gdmlydHVhbCBtb2RlLCBh bGwgZnV0dXJlDQotICAvLyBydW50aW1lIGNhbGxzIHdpbGwgYmUgbWFkZSBpbiB2aXJ0dWFsIG1v ZGUuDQotICAvLw0KLSAgRWZpQ29udmVydFBvaW50ZXIgKDB4MCwgKFZPSUQqKikmbVJUKTsNCi0g IHJldHVybjsNCi19DQotDQotLyoqDQotICBUaGlzIGlzIHRoZSBkZWNsYXJhdGlvbiBvZiBhbiBF RkkgaW1hZ2UgZW50cnkgcG9pbnQuIFRoaXMgY2FuIGJlIHRoZSBlbnRyeSBwb2ludCB0byBhbiBh cHBsaWNhdGlvbg0KLSAgd3JpdHRlbiB0byB0aGlzIHNwZWNpZmljYXRpb24sIGFuIEVGSSBib290 IHNlcnZpY2UgZHJpdmVyLCBvciBhbiBFRkkgcnVudGltZSBkcml2ZXIuDQotDQotICBAcGFyYW0g IEltYWdlSGFuZGxlICAgICAgICAgICBIYW5kbGUgdGhhdCBpZGVudGlmaWVzIHRoZSBsb2FkZWQg aW1hZ2UuDQotICBAcGFyYW0gIFN5c3RlbVRhYmxlICAgICAgICAgICBTeXN0ZW0gVGFibGUgZm9y IHRoaXMgaW1hZ2UuDQotDQotICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgb3Bl cmF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuDQotDQotKiovDQotRUZJX1NUQVRVUw0KLUVG SUFQSQ0KLUxpYlJ0Y0luaXRpYWxpemUgKA0KLSAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCi0gIElOIEVGSV9TWVNURU1fVEFCTEUgICAgICAg ICAgICAgICAgICAgICAgKlN5c3RlbVRhYmxlDQotICApDQotew0KLSAgRUZJX1NUQVRVUyAgICBT dGF0dXM7DQotICBFRklfSEFORExFICAgIEhhbmRsZTsNCi0NCi0gIC8vIFNldHVwIHRoZSBzZXR0 ZXJzIGFuZCBnZXR0ZXJzDQotICBnUlQtPkdldFRpbWUgICAgICAgPSBMaWJHZXRUaW1lOw0KLSAg Z1JULT5TZXRUaW1lICAgICAgID0gTGliU2V0VGltZTsNCi0gIGdSVC0+R2V0V2FrZXVwVGltZSA9 IExpYkdldFdha2V1cFRpbWU7DQotICBnUlQtPlNldFdha2V1cFRpbWUgPSBMaWJTZXRXYWtldXBU aW1lOw0KLQ0KLSAgbVJUID0gZ1JUOw0KLQ0KLSAgLy8gSW5zdGFsbCB0aGUgcHJvdG9jb2wNCi0g IEhhbmRsZSA9IE5VTEw7DQotICBTdGF0dXMgPSBnQlMtPkluc3RhbGxNdWx0aXBsZVByb3RvY29s SW50ZXJmYWNlcyAoDQotICAgICAgICAgICAgICAgICAgJkhhbmRsZSwNCi0gICAgICAgICAgICAg ICAgICAmZ0VmaVJlYWxUaW1lQ2xvY2tBcmNoUHJvdG9jb2xHdWlkLCAgTlVMTCwNCi0gICAgICAg ICAgICAgICAgICBOVUxMDQotICAgICAgICAgICAgICAgICApOw0KLSAgQVNTRVJUX0VGSV9FUlJP UiAoU3RhdHVzKTsNCi0NCi0gIC8vDQotICAvLyBSZWdpc3RlciBmb3IgdGhlIHZpcnR1YWwgYWRk cmVzcyBjaGFuZ2UgZXZlbnQNCi0gIC8vDQotICBTdGF0dXMgPSBnQlMtPkNyZWF0ZUV2ZW50RXgg KA0KLSAgICAgICAgICAgICAgICAgIEVWVF9OT1RJRllfU0lHTkFMLA0KLSAgICAgICAgICAgICAg ICAgIFRQTF9OT1RJRlksDQotICAgICAgICAgICAgICAgICAgTGliUnRjVmlydHVhbE5vdGlmeUV2 ZW50LA0KLSAgICAgICAgICAgICAgICAgIE5VTEwsDQotICAgICAgICAgICAgICAgICAgJmdFZmlF dmVudFZpcnR1YWxBZGRyZXNzQ2hhbmdlR3VpZCwNCi0gICAgICAgICAgICAgICAgICAmbVJ0Y1Zp cnR1YWxBZGRyQ2hhbmdlRXZlbnQNCi0gICAgICAgICAgICAgICAgICApOw0KLSAgQVNTRVJUX0VG SV9FUlJPUiAoU3RhdHVzKTsNCi0NCi0gIHJldHVybiBTdGF0dXM7DQotfQ0KCg0KCi09LT0tPS09 LT0tPS09LT0tPS09LT0tCkdyb3Vwcy5pbyBMaW5rczogWW91IHJlY2VpdmUgYWxsIG1lc3NhZ2Vz IHNlbnQgdG8gdGhpcyBncm91cC4KVmlldy9SZXBseSBPbmxpbmUgKCMxMDk1NDcpOiBodHRwczov L2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvbWVzc2FnZS8xMDk1NDcKTXV0ZSBUaGlzIFRvcGljOiBo dHRwczovL2dyb3Vwcy5pby9tdC8xMDE5MTQ2NTYvNzY4NjE3NgpHcm91cCBPd25lcjogZGV2ZWwr b3duZXJAZWRrMi5ncm91cHMuaW8KVW5zdWJzY3JpYmU6IGh0dHBzOi8vZWRrMi5ncm91cHMuaW8v Zy9kZXZlbC9sZWF2ZS8xMjM2NzExMS83Njg2MTc2LzE5MTM0NTYyMTIveHl6enkgW3JlYmVjY2FA b3BlbmZ3LmlvXQotPS09LT0tPS09LT0tPS09LT0tPS09LQoKDQo=