From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from loongson.cn (loongson.cn [114.242.206.163]) by mx.groups.io with SMTP id smtpd.web11.2724.1663062391124175552 for ; Tue, 13 Sep 2022 02:46:31 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: loongson.cn, ip: 114.242.206.163, mailfrom: lixianglai@loongson.cn) Received: from lixianglai$loongson.cn ( [10.20.42.66] ) by ajax-webmail-localhost.localdomain (Coremail) ; Tue, 13 Sep 2022 17:46:27 +0800 (GMT+08:00) X-Originating-IP: [10.20.42.66] Date: Tue, 13 Sep 2022 17:46:27 +0800 (GMT+08:00) X-CM-HeaderCharset: UTF-8 From: "xianglai" To: devel@edk2.groups.io Cc: michael.d.kinney@intel.com, "maobibo@loongson.cn" , lichao@loongson.cn Subject: Re: [edk2-devel] [edk2-platforms][PATCH V1 06/16] Platform/Loongson: Add StableTimerLib. X-Priority: 3 X-Mailer: Coremail Webmail Server Version XT5.0.14 build 20220411(feba7c69) Copyright (c) 2002-2022 www.mailtech.cn .loongson.cn In-Reply-To: <17144AF1748B76B9.3485@groups.io> References: <9a53979093043d4da800cab803be9791e9af463c.1662691771.git.lixianglai@loongson.cn> <17144AF1748B76B9.3485@groups.io> X-CM-CTRLDATA: /OUNHmZvb3Rlcl90eHQ9MjAxNTI6NjEy MIME-Version: 1.0 Message-ID: <68229d44.7f83.183363e2d16.Coremail.lixianglai@loongson.cn> X-Coremail-Locale: zh_CN X-CM-TRANSID: AQAAf8Dx+2p0USBjpQ8YAA--.181W X-CM-SenderInfo: 5ol0xt5qjotxo6or00hjvr0hdfq/1tbiAQAICGMfIVwUIAAAs0 X-Coremail-Antispam: 1Ur529EdanIXcx71UUUUU7IcSsGvfJ3iIAIbVAYjsxI4VWxJw CS07vEb4IE77IF4wCS07vE1I0E4x80FVAKz4kxMIAIbVAFxVCaYxvI4VCIwcAKzIAtYxBI daVFxhVjvjDU= Content-Transfer-Encoding: base64 Content-Type: text/plain; charset=UTF-8 SGnvvIxNaWtlOgogIkkgc2VlIGEgbWl4IG9mIGlubGluZSBhc3NlbWJseSBhbmQgLlMgZmlsZXMu ICBSZWNvbW1lbmQgYXZvaWRpbmcgaW5saW5lIGFzc2VtYmx5LiIKICBJIHRoaW5rIEkgbWlzdW5k ZXJzdG9vZCB0aGUgbWVhbmluZyBvZiB5b3VyIHNlbnRlbmNlLEknbGwgcmUtZXhwbGFpbiBpdCBo ZXJlOgogIEluc3RydWN0aW9ucyBzdWNoIGFzIGNzcnJkIGFuZCBjc3J3ciByZXF1aXJlIGltbWVk aWF0ZSBudW1iZXJzIGluIHRoZWlyIG9wZXJhbmRzLCAKICB3aGljaCBtZWFucyB0aGF0IGluc3Ry dWN0aW9ucyBsaWtlIGNzcnJkIGNzcndyIGNhbm5vdCBiZSB3cmFwcGVkIGludG8gYXNzZW1ibHkg ZnVuY3Rpb25zLgogIENhbiBJIGFjaGlldmUgdGhpcyBieSB0aGUgZm9sbG93aW5nIG1ldGhvZD8K CiNkZWZpbmUgTE9PTkdBUkNIX0NTUl9SRUFEUSh2YWwsIHJlZykgICAgICAgICAgICAgICAgICAg XApkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKICBVSU5UNjQgX19yZXM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCiAgLyogY3NycmQgcmQsIGNzcl9udW0gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAogIF9fYXNtX18gX192b2xhdGlsZV9fKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKICAgICAgICAgICJjc3JyZCAgJTAsICUxIFxuXHQiICAgICAgICAgICAgICAgICAgICAg ICAgICBcCiAgICAgICAgICA6Ij1yIihfX3JlcykgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAogICAgICAgICAgOiJpIihyZWcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKICAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCiAgICAgICAgICApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAogICh2YWwpID0gX19yZXM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKfSB3aGlsZSgwKQoKT2YgY291cnNlLCB0aGUgaW5saW5lIGFzc2VtYmx5IHVz ZWQgaW4gdGhlIENzclJlYWRUaW1lIGZ1bmN0aW9uIGluIHRoaXMgcGF0Y2ggY2FuIGJlIHdyaXR0 ZW4gYXMgYW4gYXNzZW1ibHkgZnVuY3Rpb24uCgpUaGFuayB5b3UuCnhpYW5nbGFpLgoKCgoKMjAy Mi0wOS0xMyAxMDozNTo1NiAi5p2O6aaZ5p2lIiA8bGl4aWFuZ2xhaUBsb29uZ3Nvbi5jbj4g5YaZ 6YGT77yaCj4gCj4gSGksTWlrZToKPiAgIFRoYW5rIHlvdSBmb3IgaGVscGluZyB0byByZXZpZXcg dGhlIGNvZGUuCj4gICBJIGZlZWwgc29ycnkgZm9yIHRoZSBsYXRlIHJlcGx5LCBTZXB0ZW1iZXIg MTAgdG8gU2VwdGVtYmVyIDEyIGlzIG91ciBNaWQtQXV0dW1uIEZlc3RpdmFsIGhvbGlkYXksIAo+ ICAgSGFwcHkgTWlkLUF1dHVtbiBGZXN0aXZhbC4KPiAKPiAxLlRoZSBsaXN0IG9mIHMgZmlsZXMg aW4gYWxsIHBhdGNoZXMgaXMg77yaCj4gLi9MaWJyYXJ5L01tdUxpYi9NbXUuUyAgICAgICAgICAg ICAgICAgICBUaGlzIGZpbGUgaXMgcmVsYXRlZCB0byBtbXUgYW5kIGltcGxlbWVudHMgdGhlIHBh Z2UgdGFibGUgcmVmaWxsIGV4Y2VwdGlvbi4KPiAuL0xpYnJhcnkvU3RhYmxlVGltZXJMaWIvQ291 bnQuUyAgICAgICAgIFRoaXMgZmlsZSBpbXBsZW1lbnRzIHRoZSBpbnRlcnJ1cHQgZW5hYmxlIGZ1 bmN0aW9uLgo+IC4vU2VjL0xvb25nQXJjaDY0L1N0YXJ0LlMgICAgICAgICAgICAgICAgVGhpcyBm aWxlIGltcGxlbWVudHMgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBTRUMgcGhhc2UgYWZ0ZXIg dGhlIGNwdSBzdGFydHMKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGFuZCB0aGUgY29kZSByZWxhdGVkIHRvIHN3aXRjaGluZyBmcm9tIHRoZSBhc3NlbWJseSBlbnZp cm9ubWVudCB0byB0aGUgQyBlbnZpcm9ubWVudCBmb3IgZXhlY3V0aW9uLgo+IC4vRHJpdmVycy9D cHVEeGUvTG9vbmdBcmNoNjQvRnB1LlMgICAgICAgVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIGZw dSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4KPiAuL0RyaXZlcnMvQ3B1RHhlL0xvb25nQXJjaDY0 L0xvb25nQXJjaC5TIFRoaXMgZmlsZSBpcyByZWxhdGVkIHRvIGV4Y2VwdGlvbnMsIGluY2x1ZGlu ZyB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGV4Y2VwdGlvbiBlbnRyeSBmdW5jdGlvbiwKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmluZyBhbmQgcmVwbHlp bmcgdG8gdGhlIHNjZW5lLCBhbmQgc2V0dGluZyB0aGUgZXhjZXB0aW9uIGVudHJ5IGFkZHJlc3Mu Cj4gCj4gbG9vbmdhcmNoIHN0cnVjdHVyZSBjcHUgZGVmaW5lcyBhIHNlcmllcyBvZiBjb250cm9s IHN0YXR1cyByZWdpc3RlcnMgKENTUiksIAo+IHRoZWlyIHJlYWQgYW5kIHdyaXRlIG9wZXJhdGlv bnMgbmVlZCB0byBiZSBjb21wbGV0ZWQgdGhyb3VnaCB0aGUgY3NycmQgYW5kIGNzcndyIGluc3Ry dWN0aW9ucywgCj4gY2FuIG5vdCBiZSBhY2Nlc3NlZCBkaXJlY3RseSB0aHJvdWdoIHRoZSBhZGRy ZXNzLCBzbyB0aGVzZSBhc3NlbWJsaWVzIGFyZSBub3Qgb3B0aW1pemVkLgo+IAo+IAo+IDIuIEkg ZGlkbid0IGZpbmQgdGhlIFRhYiBjaGFyYWN0ZXIgaW4gdGhpcyBwYXRjaC4KPiBJIGhhdmUgdHJp ZWQgc2V2ZXJhbCBzZWFyY2ggbWV0aG9kczoKPiBncmVwICQnXHQnIC1uciAgLi8KPiBncmVwICcJ JyAgLW5yIC4vCj4gL15JICAgaW4gdmltCj4gCj4gQmVzdCB3aXNoZXMuCj4geGlhbmdsYWkuCj4g Cj4gPiAtLS0tLeWOn+Wni+mCruS7ti0tLS0tCj4gPiDlj5Hku7bkuro6ICJNaWNoYWVsIEQgS2lu bmV5IiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+Cj4gPiDlj5HpgIHml7bpl7Q6MjAyMi0w OS0xMCAwMDo0OTowMCAo5pif5pyf5YWtKQo+ID4g5pS25Lu25Lq6OiAiZGV2ZWxAZWRrMi5ncm91 cHMuaW8iIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4sICJsaXhpYW5nbGFpQGxvb25nc29uLmNuIiA8 bGl4aWFuZ2xhaUBsb29uZ3Nvbi5jbj4sICJLaW5uZXksIE1pY2hhZWwgRCIgPG1pY2hhZWwuZC5r aW5uZXlAaW50ZWwuY29tPgo+ID4g5oqE6YCBOiAibWFvYmlib0Bsb29uZ3Nvbi5jbiIgPG1hb2Jp Ym9AbG9vbmdzb24uY24+Cj4gPiDkuLvpopg6IFJlOiBbZWRrMi1kZXZlbF0gW2VkazItcGxhdGZv cm1zXVtQQVRDSCBWMSAwNi8xNl0gUGxhdGZvcm0vTG9vbmdzb246IEFkZCBTdGFibGVUaW1lckxp Yi4KPiA+IAo+ID4gSSBzZWUgYSBtaXggb2YgaW5saW5lIGFzc2VtYmx5IGFuZCAuUyBmaWxlcy4g IFJlY29tbWVuZCBhdm9pZGluZyBpbmxpbmUgYXNzZW1ibHkuCj4gPiAKPiA+IEFsc28gYXBwZWFy cyB0byBiZSBzb21lIFRBQiBjaGFyYWN0ZXJzIGluIHRoaXMgcGF0Y2guICBDb252ZXJ0IHRhYnMg dG8gc3BhY2VzLgo+ID4gCj4gPiBNaWtlCj4gPiAKPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0KPiA+ID4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBz LmlvPiBPbiBCZWhhbGYgT2YgeGlhbmdsYWkKPiA+ID4gU2VudDogVGh1cnNkYXksIFNlcHRlbWJl ciA4LCAyMDIyIDg6MTIgUE0KPiA+ID4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvCj4gPiA+IENj OiBtYW9iaWJvQGxvb25nc29uLmNuCj4gPiA+IFN1YmplY3Q6IFtlZGsyLWRldmVsXSBbZWRrMi1w bGF0Zm9ybXNdW1BBVENIIFYxIDA2LzE2XSBQbGF0Zm9ybS9Mb29uZ3NvbjogQWRkIFN0YWJsZVRp bWVyTGliLgo+ID4gPiAKPiA+ID4gVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIGEgZGVsYXkgaW50ZXJm YWNlIGFuZCBhIHRpbWluZyBpbnRlcmZhY2UuCj4gPiA+IAo+ID4gPiBTaWduZWQtb2ZmLWJ5OiB4 aWFuZ2xhaSBsaSA8bGl4aWFuZ2xhaUBsb29uZ3Nvbi5jbj4KPiA+ID4gLS0tCj4gPiA+ICAuLi4v SW5jbHVkZS9MaWJyYXJ5L1N0YWJsZVRpbWVyLmggICAgICAgICAgICAgfCAgNDIgKysrCj4gPiA+ ICAuLi4vTGlicmFyeS9TdGFibGVUaW1lckxpYi9Db3VudC5TICAgICAgICAgICAgfCAgMjYgKysK PiA+ID4gIC4uLi9MaWJyYXJ5L1N0YWJsZVRpbWVyTGliL1RpbWVyTGliLmMgICAgICAgICB8IDI2 MiArKysrKysrKysrKysrKysrKysKPiA+ID4gIC4uLi9MaWJyYXJ5L1N0YWJsZVRpbWVyTGliL1Rp bWVyTGliLmluZiAgICAgICB8ICAyOCArKwo+ID4gPiAgNCBmaWxlcyBjaGFuZ2VkLCAzNTggaW5z ZXJ0aW9ucygrKQo+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFBsYXRmb3JtL0xvb25nc29uL0xv b25nQXJjaFFlbXVQa2cvSW5jbHVkZS9MaWJyYXJ5L1N0YWJsZVRpbWVyLmgKPiA+ID4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBQbGF0Zm9ybS9Mb29uZ3Nvbi9Mb29uZ0FyY2hRZW11UGtnL0xpYnJhcnkv U3RhYmxlVGltZXJMaWIvQ291bnQuUwo+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFBsYXRmb3Jt L0xvb25nc29uL0xvb25nQXJjaFFlbXVQa2cvTGlicmFyeS9TdGFibGVUaW1lckxpYi9UaW1lckxp Yi5jCj4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgUGxhdGZvcm0vTG9vbmdzb24vTG9vbmdBcmNo UWVtdVBrZy9MaWJyYXJ5L1N0YWJsZVRpbWVyTGliL1RpbWVyTGliLmluZgo+ID4gPiAKPiA+ID4g ZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0xvb25nc29uL0xvb25nQXJjaFFlbXVQa2cvSW5jbHVkZS9M aWJyYXJ5L1N0YWJsZVRpbWVyLmgKPiA+ID4gYi9QbGF0Zm9ybS9Mb29uZ3Nvbi9Mb29uZ0FyY2hR ZW11UGtnL0luY2x1ZGUvTGlicmFyeS9TdGFibGVUaW1lci5oCj4gPiA+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0Cj4gPiA+IGluZGV4IDAwMDAwMDAwMDAuLmJkNmExZWI5MGYKPiA+ID4gLS0tIC9kZXYv bnVsbAo+ID4gPiArKysgYi9QbGF0Zm9ybS9Mb29uZ3Nvbi9Mb29uZ0FyY2hRZW11UGtnL0luY2x1 ZGUvTGlicmFyeS9TdGFibGVUaW1lci5oCj4gPiA+IEBAIC0wLDAgKzEsNDIgQEAKPiA+ID4gKy8q KiBAZmlsZQo+ID4gPiAKPiA+ID4gKwo+ID4gPiAKPiA+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDIx IExvb25nc29uIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNl cnZlZC48QlI+Cj4gPiA+IAo+ID4gPiArCj4gPiA+IAo+ID4gPiArICBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudAo+ID4gPiAKPiA+ID4gKwo+ID4gPiAKPiA+ID4g KyAgQHBhciBHbG9zc2FyeToKPiA+ID4gCj4gPiA+ICsgICAgLSBDc3IgICAgLSBDcHUgU3RhdHVz IFJlZ2lzdGVyCj4gPiA+IAo+ID4gPiArICAgIC0gQ2FsYyAgIC0gQ2FsY3VsYXRpb24KPiA+ID4g Cj4gPiA+ICsgICAgLSBGcmVxICAgLSBmcmVxdWVuY3kKPiA+ID4gCj4gPiA+ICsqKi8KPiA+ID4g Cj4gPiA+ICsKPiA+ID4gCj4gPiA+ICsjaWZuZGVmIFNUQUJMRV9USU1FUl9IXwo+ID4gPiAKPiA+ ID4gKyNkZWZpbmUgU1RBQkxFX1RJTUVSX0hfCj4gPiA+IAo+ID4gPiArI2luY2x1ZGUgIkxpYnJh cnkvQ3B1LmgiCj4gPiA+IAo+ID4gPiArCj4gPiA+IAo+ID4gPiArLyoqCj4gPiA+IAo+ID4gPiAr ICBHZXRzIHRoZSB0aW1lciBjb3VudCB2YWx1ZS4KPiA+ID4gCj4gPiA+ICsKPiA+ID4gCj4gPiA+ ICsgIEBwYXJhbVtdIFZPSUQKPiA+ID4gCj4gPiA+ICsKPiA+ID4gCj4gPiA+ICsgIEByZXR2YWwg IHRpbWVyIGNvdW50IHZhbHVlLgo+ID4gPiAKPiA+ID4gKyoqLwo+ID4gPiAKPiA+ID4gK1VJTlRO Cj4gPiA+IAo+ID4gPiArRUZJQVBJCj4gPiA+IAo+ID4gPiArQ3NyUmVhZFRpbWUgKAo+ID4gPiAK PiA+ID4gKyAgVk9JRAo+ID4gPiAKPiA+ID4gKyAgKTsKPiA+ID4gCj4gPiA+ICsKPiA+ID4gCj4g PiA+ICsvKioKPiA+ID4gCj4gPiA+ICsgIENhbGN1bGF0ZSB0aGUgdGltZXIgZnJlcXVlbmN5Lgo+ ID4gPiAKPiA+ID4gKwo+ID4gPiAKPiA+ID4gKyAgQHBhcmFtW10gVk9JRAo+ID4gPiAKPiA+ID4g Kwo+ID4gPiAKPiA+ID4gKyAgQHJldHZhbCAgVGltZXIgZnJlcXVlbmN5Lgo+ID4gPiAKPiA+ID4g KyoqLwo+ID4gPiAKPiA+ID4gK1VJTlQzMgo+ID4gPiAKPiA+ID4gK0VGSUFQSQo+ID4gPiAKPiA+ ID4gK0NhbGNDb25zdEZyZXEgKAo+ID4gPiAKPiA+ID4gKyAgVk9JRAo+ID4gPiAKPiA+ID4gKyAg KTsKPiA+ID4gCj4gPiA+ICsjZW5kaWYKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9QbGF0Zm9y bS9Mb29uZ3Nvbi9Mb29uZ0FyY2hRZW11UGtnL0xpYnJhcnkvU3RhYmxlVGltZXJMaWIvQ291bnQu Uwo+ID4gPiBiL1BsYXRmb3JtL0xvb25nc29uL0xvb25nQXJjaFFlbXVQa2cvTGlicmFyeS9TdGFi bGVUaW1lckxpYi9Db3VudC5TCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiA+IGluZGV4 IDAwMDAwMDAwMDAuLjQyZjg3OGNhZjgKPiA+ID4gLS0tIC9kZXYvbnVsbAo+ID4gPiArKysgYi9Q bGF0Zm9ybS9Mb29uZ3Nvbi9Mb29uZ0FyY2hRZW11UGtnL0xpYnJhcnkvU3RhYmxlVGltZXJMaWIv Q291bnQuUwo+ID4gPiBAQCAtMCwwICsxLDI2IEBACj4gPiA+ICsjLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCj4gPiA+IAo+ID4gPiArIwo+ID4gPiAKPiA+ID4gKyMgQ291bnQgZm9yIExvb25nQXJjaAo+ ID4gPiAKPiA+ID4gKyMKPiA+ID4gCj4gPiA+ICsjIENvcHlyaWdodCAoYykgMjAyMSBMb29uZ3Nv biBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJS Pgo+ID4gPiAKPiA+ID4gKyMKPiA+ID4gCj4gPiA+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBCU0QtMi1DbGF1c2UtUGF0ZW50Cj4gPiA+IAo+ID4gPiArIwo+ID4gPiAKPiA+ID4gKyMtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KPiA+ID4gCj4gPiA+ICsKPiA+ID4gCj4gPiA+ICsjaWZuZGVmIF9f QVNTRU1CTFlfXwo+ID4gPiAKPiA+ID4gKyNkZWZpbmUgIF9fQVNTRU1CTFlfXwo+ID4gPiAKPiA+ ID4gKyNlbmRpZgo+ID4gPiAKPiA+ID4gKwo+ID4gPiAKPiA+ID4gKyNpbmNsdWRlICJMaWJyYXJ5 L0NwdS5oIgo+ID4gPiAKPiA+ID4gKyNpbmNsdWRlICJMb29uZ0FyY2hBc21NYWNyby5oIgo+ID4g PiAKPiA+ID4gKyMKPiA+ID4gCj4gPiA+ICsjIFNldCBjcHUgaW50ZXJydXB0cwo+ID4gPiAKPiA+ ID4gKyMgQHBhcmFtIEEwIFRoZSBpbnRlcnJ1cHQgbnVtYmVyCj4gPiA+IAo+ID4gPiArIwo+ID4g PiAKPiA+ID4gK0FTTV9GVU5DKENwdVNldElQKQo+ID4gPiAKPiA+ID4gKyAgICBjc3JyZCAgIFQw LCBMT09OR0FSQ0hfQ1NSX0VDRkcKPiA+ID4gCj4gPiA+ICsgICAgb3IgICAgICBUMCwgVDAsIEEw Cj4gPiA+IAo+ID4gPiArICAgIGNzcndyICAgVDAsIExPT05HQVJDSF9DU1JfRUNGRwo+ID4gPiAK PiA+ID4gKyAgICBqaXJsICAgIFpFUk8sIFJBLDAKPiA+ID4gCj4gPiA+ICsKPiA+ID4gCj4gPiA+ IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9Mb29uZ3Nvbi9Mb29uZ0FyY2hRZW11UGtnL0xpYnJhcnkv U3RhYmxlVGltZXJMaWIvVGltZXJMaWIuYwo+ID4gPiBiL1BsYXRmb3JtL0xvb25nc29uL0xvb25n QXJjaFFlbXVQa2cvTGlicmFyeS9TdGFibGVUaW1lckxpYi9UaW1lckxpYi5jCj4gPiA+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0Cj4gPiA+IGluZGV4IDAwMDAwMDAwMDAuLjIxZTM3NDllZTYKPiA+ID4g LS0tIC9kZXYvbnVsbAo+ID4gPiArKysgYi9QbGF0Zm9ybS9Mb29uZ3Nvbi9Mb29uZ0FyY2hRZW11 UGtnL0xpYnJhcnkvU3RhYmxlVGltZXJMaWIvVGltZXJMaWIuYwo+ID4gPiBAQCAtMCwwICsxLDI2 MiBAQAo+ID4gPiArLyoqIEBmaWxlCj4gPiA+IAo+ID4gPiArICBHZW5lcmljIExvb25nQXJjaCBp bXBsZW1lbnRhdGlvbiBvZiBUaW1lckxpYi5oCj4gPiA+IAo+ID4gPiArCj4gPiA+IAo+ID4gPiAr ICBDb3B5cmlnaHQgKGMpIDIwMjEgTG9vbmdzb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiBMaW1p dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4KPiA+ID4gCj4gPiA+ICsKPiA+ID4gCj4gPiA+ ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50Cj4gPiA+IAo+ ID4gPiArCj4gPiA+IAo+ID4gPiArICBAcGFyIEdsb3NzYXJ5Ogo+ID4gPiAKPiA+ID4gKyAgICAt IEZyZXEgLSBGcmVxdWVuY3kKPiA+ID4gCj4gPiA+ICsgICAgLSBDc3IgIC0gQ3B1IFN0YXR1cyBS ZWdpc3Rlcgo+ID4gPiAKPiA+ID4gKyAgICAtIGNhbGMgLSBjYWxjdWxhdGUKPiA+ID4gCj4gPiA+ ICsqKi8KPiA+ID4gCj4gPiA+ICsKPiA+ID4gCj4gPiA+ICsjaW5jbHVkZSA8QmFzZS5oPgo+ID4g PiAKPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1RpbWVyTGliLmg+Cj4gPiA+IAo+ID4gPiArI2lu Y2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5oPgo+ID4gPiAKPiA+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5 L0RlYnVnTGliLmg+Cj4gPiA+IAo+ID4gPiArI2luY2x1ZGUgIkxpYnJhcnkvU3RhYmxlVGltZXIu aCIKPiA+ID4gCj4gPiA+ICsjaW5jbHVkZSAiTGlicmFyeS9DcHUuaCIKPiA+ID4gCj4gPiA+ICsK PiA+ID4gCj4gPiA+ICtVSU5UMzIgU3RhYmxlVGltZXJGcmVxID0gMDsKPiA+ID4gCj4gPiA+ICsK PiA+ID4gCj4gPiA+ICsvKioKPiA+ID4gCj4gPiA+ICsgIEdldHMgdGhlIHRpbWVyIGNvdW50IHZh bHVlLgo+ID4gPiAKPiA+ID4gKwo+ID4gPiAKPiA+ID4gKyAgQHBhcmFtW10gVk9JRAo+ID4gPiAK PiA+ID4gKwo+ID4gPiAKPiA+ID4gKyAgQHJldHZhbCAgdGltZXIgY291bnQgdmFsdWUuCj4gPiA+ IAo+ID4gPiArKiovCj4gPiA+IAo+ID4gPiArVUlOVE4KPiA+ID4gCj4gPiA+ICtFRklBUEkKPiA+ ID4gCj4gPiA+ICtDc3JSZWFkVGltZSAoCj4gPiA+IAo+ID4gPiArICBWT0lECj4gPiA+IAo+ID4g PiArICApCj4gPiA+IAo+ID4gPiArewo+ID4gPiAKPiA+ID4gKyAgVUlOVE4gVmFsdWUgPSAwOwo+ ID4gPiAKPiA+ID4gKyAgX19hc21fXyBfX3ZvbGF0aWxlX18oCj4gPiA+IAo+ID4gPiArICAgICAg IiByZHRpbWUuZCAgICUwLCAkcjBcbiIKPiA+ID4gCj4gPiA+ICsgICAgICA6ICI9ciIgKFZhbHVl KSk7Cj4gPiA+IAo+ID4gPiArICByZXR1cm4gVmFsdWU7Cj4gPiA+IAo+ID4gPiArfQo+ID4gPiAK PiA+ID4gKwo+ID4gPiAKPiA+ID4gKy8qKgo+ID4gPiAKPiA+ID4gKyAgQ2FsY3VsYXRlIHRoZSB0 aW1lciBmcmVxdWVuY3kuCj4gPiA+IAo+ID4gPiArCj4gPiA+IAo+ID4gPiArICBAcGFyYW1bXSBW T0lECj4gPiA+IAo+ID4gPiArCj4gPiA+IAo+ID4gPiArICBAcmV0dmFsICBUaW1lciBmcmVxdWVu Y3kuCj4gPiA+IAo+ID4gPiArKiovCj4gPiA+IAo+ID4gPiArVUlOVDMyCj4gPiA+IAo+ID4gPiAr RUZJQVBJCj4gPiA+IAo+ID4gPiArQ2FsY0NvbnN0RnJlcSAoCj4gPiA+IAo+ID4gPiArICBWT0lE Cj4gPiA+IAo+ID4gPiArICApCj4gPiA+IAo+ID4gPiArewo+ID4gPiAKPiA+ID4gKyAgVUlOVDMy IFJlc3VsdDsKPiA+ID4gCj4gPiA+ICsgIFVJTlQzMiBCYXNlRnJlcTsKPiA+ID4gCj4gPiA+ICsg IFVJTlQzMiBDbG9ja011bHRpcGxpZXI7Cj4gPiA+IAo+ID4gPiArICBVSU5UMzIgQ2xvY2tEaXZp ZGU7Cj4gPiA+IAo+ID4gPiArCj4gPiA+IAo+ID4gPiArICBMT09OR0FSQ0hfR0VUX0NQVUNGRyAo QmFzZUZyZXEsIExPT05HQVJDSF9DUFVDRkc0KTsKPiA+ID4gCj4gPiA+ICsgIExPT05HQVJDSF9H RVRfQ1BVQ0ZHIChSZXN1bHQsIExPT05HQVJDSF9DUFVDRkc1KTsKPiA+ID4gCj4gPiA+ICsgIENs b2NrTXVsdGlwbGllciA9IFJlc3VsdCAmIDB4ZmZmZjsKPiA+ID4gCj4gPiA+ICsgIENsb2NrRGl2 aWRlID0gKFJlc3VsdCA+PiAxNikgJiAweGZmZmY7Cj4gPiA+IAo+ID4gPiArCj4gPiA+IAo+ID4g PiArICBpZiAoKCFCYXNlRnJlcSkKPiA+ID4gCj4gPiA+ICsgICAgfHwgKCFDbG9ja011bHRpcGxp ZXIpCj4gPiA+IAo+ID4gPiArICAgIHx8ICghQ2xvY2tEaXZpZGUpKQo+ID4gPiAKPiA+ID4gKyAg ewo+ID4gPiAKPiA+ID4gKyAgICByZXR1cm4gMDsKPiA+ID4gCj4gPiA+ICsgIH0KPiA+ID4gCj4g PiA+ICsgIGVsc2Ugewo+ID4gPiAKPiA+ID4gKyAgICByZXR1cm4gKEJhc2VGcmVxICogQ2xvY2tN dWx0aXBsaWVyIC8gQ2xvY2tEaXZpZGUpOwo+ID4gPiAKPiA+ID4gKyAgfQo+ID4gPiAKPiA+ID4g K30KPiA+ID4gCj4gPiA+ICsvKioKPiA+ID4gCj4gPiA+ICsgIEdldCB0aGUgdGltZXIgZnJlcXVl bmN5Lgo+ID4gPiAKPiA+ID4gKwo+ID4gPiAKPiA+ID4gKyAgQHBhcmFtW10gVk9JRAo+ID4gPiAK PiA+ID4gKwo+ID4gPiAKPiA+ID4gKyAgQHJldHZhbCAgVGltZXIgZnJlcXVlbmN5Lgo+ID4gPiAK PiA+ID4gKyoqLwo+ID4gPiAKPiA+ID4gK1VJTlQzMgo+ID4gPiAKPiA+ID4gK0VGSUFQSQo+ID4g PiAKPiA+ID4gK0dldEZyZXEgKAo+ID4gPiAKPiA+ID4gKyAgVk9JRAo+ID4gPiAKPiA+ID4gKyAg KQo+ID4gPiAKPiA+ID4gK3sKPiA+ID4gCj4gPiA+ICsgIGlmIChTdGFibGVUaW1lckZyZXEpIHsK PiA+ID4gCj4gPiA+ICsgIH0gZWxzZSB7Cj4gPiA+IAo+ID4gPiArICAgIFN0YWJsZVRpbWVyRnJl cSA9IENhbGNDb25zdEZyZXEgKCk7Cj4gPiA+IAo+ID4gPiArICB9Cj4gPiA+IAo+ID4gPiArCj4g PiA+IAo+ID4gPiArICByZXR1cm4gU3RhYmxlVGltZXJGcmVxOwo+ID4gPiAKPiA+ID4gK30KPiA+ ID4gCj4gPiA+ICsKPiA+ID4gCj4gPiA+ICsvKioKPiA+ID4gCj4gPiA+ICsgIFN0YWxscyB0aGUg Q1BVIGZvciBhdCBsZWFzdCB0aGUgZ2l2ZW4gbnVtYmVyIG9mIG1pY3Jvc2Vjb25kcy4KPiA+ID4g Cj4gPiA+ICsKPiA+ID4gCj4gPiA+ICsgIFN0YWxscyB0aGUgQ1BVIGZvciB0aGUgbnVtYmVyIG9m IG1pY3Jvc2Vjb25kcyBzcGVjaWZpZWQgYnkgTWljcm9TZWNvbmRzLgo+ID4gPiAKPiA+ID4gKwo+ ID4gPiAKPiA+ID4gKyAgQHBhcmFtICBNaWNyb1NlY29uZHMgIFRoZSBtaW5pbXVtIG51bWJlciBv ZiBtaWNyb3NlY29uZHMgdG8gZGVsYXkuCj4gPiA+IAo+ID4gPiArCj4gPiA+IAo+ID4gPiArICBA cmV0dXJuIE1pY3JvU2Vjb25kcwo+ID4gPiAKPiA+ID4gKwo+ID4gPiAKPiA+ID4gKyoqLwo+ID4g PiAKPiA+ID4gK1VJTlROCj4gPiA+IAo+ID4gPiArRUZJQVBJCj4gPiA+IAo+ID4gPiArTWljcm9T ZWNvbmREZWxheSAoCj4gPiA+IAo+ID4gPiArICBJTiAgVUlOVE4gTWljcm9TZWNvbmRzCj4gPiA+ IAo+ID4gPiArICApCj4gPiA+IAo+ID4gPiArewo+ID4gPiAKPiA+ID4gKwo+ID4gPiAKPiA+ID4g KyAgVUlOVE4gQ291bnQ7Cj4gPiA+IAo+ID4gPiArICBVSU5UTiBUaWNrczsKPiA+ID4gCj4gPiA+ ICsgIFVJTlROIFN0YXJ0Owo+ID4gPiAKPiA+ID4gKyAgVUlOVE4gRW5kOwo+ID4gPiAKPiA+ID4g Kwo+ID4gPiAKPiA+ID4gKyAgQ291bnQgPSBHZXRGcmVxICgpOwo+ID4gPiAKPiA+ID4gKyAgQ291 bnQgPSAoQ291bnQgKiBNaWNyb1NlY29uZHMpIC8gMTAwMDAwMDsKPiA+ID4gCj4gPiA+ICsgIFN0 YXJ0ID0gQ3NyUmVhZFRpbWUgKCk7Cj4gPiA+IAo+ID4gPiArICBFbmQgPSBTdGFydCArIENvdW50 Owo+ID4gPiAKPiA+ID4gKwo+ID4gPiAKPiA+ID4gKyAgZG8gewo+ID4gPiAKPiA+ID4gKyAgICBU aWNrcyA9IENzclJlYWRUaW1lICgpOwo+ID4gPiAKPiA+ID4gKyAgfSB3aGlsZSAoVGlja3MgPCBF bmQpOwo+ID4gPiAKPiA+ID4gKwo+ID4gPiAKPiA+ID4gKyAgcmV0dXJuIE1pY3JvU2Vjb25kczsK PiA+ID4gCj4gPiA+ICt9Cj4gPiA+IAo+ID4gPiArCj4gPiA+IAo+ID4gPiArLyoqCj4gPiA+IAo+ ID4gPiArICBTdGFsbHMgdGhlIENQVSBmb3IgYXQgbGVhc3QgdGhlIGdpdmVuIG51bWJlciBvZiBu YW5vc2Vjb25kcy4KPiA+ID4gCj4gPiA+ICsKPiA+ID4gCj4gPiA+ICsgIFN0YWxscyB0aGUgQ1BV IGZvciB0aGUgbnVtYmVyIG9mIG5hbm9zZWNvbmRzIHNwZWNpZmllZCBieSBOYW5vU2Vjb25kcy4K PiA+ID4gCj4gPiA+ICsKPiA+ID4gCj4gPiA+ICsgIEBwYXJhbSAgTmFub1NlY29uZHMgVGhlIG1p bmltdW0gbnVtYmVyIG9mIG5hbm9zZWNvbmRzIHRvIGRlbGF5Lgo+ID4gPiAKPiA+ID4gKwo+ID4g PiAKPiA+ID4gKyAgQHJldHVybiBOYW5vU2Vjb25kcwo+ID4gPiAKPiA+ID4gKwo+ID4gPiAKPiA+ ID4gKyoqLwo+ID4gPiAKPiA+ID4gK1VJTlROCj4gPiA+IAo+ID4gPiArRUZJQVBJCj4gPiA+IAo+ ID4gPiArTmFub1NlY29uZERlbGF5ICgKPiA+ID4gCj4gPiA+ICsgIElOICAgICAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICBOYW5vU2Vjb25kcwo+ID4gPiAKPiA+ID4gKyAgKQo+ID4gPiAKPiA+ ID4gK3sKPiA+ID4gCj4gPiA+ICsgIFVJTlQzMiAgTWljcm9TZWNvbmRzOwo+ID4gPiAKPiA+ID4g Kwo+ID4gPiAKPiA+ID4gKyAgaWYgKE5hbm9TZWNvbmRzICUgMTAwMCA9PSAwKSB7Cj4gPiA+IAo+ ID4gPiArICAgIE1pY3JvU2Vjb25kcyA9IE5hbm9TZWNvbmRzLzEwMDA7Cj4gPiA+IAo+ID4gPiAr ICB9ZWxzZSB7Cj4gPiA+IAo+ID4gPiArICAgIE1pY3JvU2Vjb25kcyA9IE5hbm9TZWNvbmRzLzEw MDAgKyAxOwo+ID4gPiAKPiA+ID4gKyAgfQo+ID4gPiAKPiA+ID4gKyAgTWljcm9TZWNvbmREZWxh eSAoTWljcm9TZWNvbmRzKTsKPiA+ID4gCj4gPiA+ICsKPiA+ID4gCj4gPiA+ICsgIHJldHVybiBO YW5vU2Vjb25kczsKPiA+ID4gCj4gPiA+ICt9Cj4gPiA+IAo+ID4gPiArCj4gPiA+IAo+ID4gPiAr LyoqCj4gPiA+IAo+ID4gPiArICBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYSA2NC1i aXQgZnJlZSBydW5uaW5nIHBlcmZvcm1hbmNlIGNvdW50ZXIuCj4gPiA+IAo+ID4gPiArCj4gPiA+ IAo+ID4gPiArICBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYSA2NC1iaXQgZnJlZSBy dW5uaW5nIHBlcmZvcm1hbmNlIGNvdW50ZXIuIFRoZQo+ID4gPiAKPiA+ID4gKyAgY291bnRlciBj YW4gZWl0aGVyIGNvdW50IHVwIGJ5IDEgb3IgY291bnQgZG93biBieSAxLiBJZiB0aGUgcGh5c2lj YWwKPiA+ID4gCj4gPiA+ICsgIHBlcmZvcm1hbmNlIGNvdW50ZXIgY291bnRzIGJ5IGEgbGFyZ2Vy IGluY3JlbWVudCwgdGhlbiB0aGUgY291bnRlciB2YWx1ZXMKPiA+ID4gCj4gPiA+ICsgIG11c3Qg YmUgdHJhbnNsYXRlZC4gVGhlIHByb3BlcnRpZXMgb2YgdGhlIGNvdW50ZXIgY2FuIGJlIHJldHJp ZXZlZCBmcm9tCj4gPiA+IAo+ID4gPiArICBHZXRQZXJmb3JtYW5jZUNvdW50ZXJQcm9wZXJ0aWVz ICgpLgo+ID4gPiAKPiA+ID4gKwo+ID4gPiAKPiA+ID4gKyAgQHJldHVybiBUaGUgY3VycmVudCB2 YWx1ZSBvZiB0aGUgZnJlZSBydW5uaW5nIHBlcmZvcm1hbmNlIGNvdW50ZXIuCj4gPiA+IAo+ID4g PiArCj4gPiA+IAo+ID4gPiArKiovCj4gPiA+IAo+ID4gPiArVUlOVDY0Cj4gPiA+IAo+ID4gPiAr RUZJQVBJCj4gPiA+IAo+ID4gPiArR2V0UGVyZm9ybWFuY2VDb3VudGVyICgKPiA+ID4gCj4gPiA+ ICsgIFZPSUQKPiA+ID4gCj4gPiA+ICsgICkKPiA+ID4gCj4gPiA+ICt7Cj4gPiA+IAo+ID4gPiAr ICByZXR1cm4gQ3NyUmVhZFRpbWUgKCk7Cj4gPiA+IAo+ID4gPiArfQo+ID4gPiAKPiA+ID4gKy8q Kgo+ID4gPiAKPiA+ID4gKyAgUmV0cmlldmVzIHRoZSA2NC1iaXQgZnJlcXVlbmN5IGluIEh6IGFu ZCB0aGUgcmFuZ2Ugb2YgcGVyZm9ybWFuY2UgY291bnRlcgo+ID4gPiAKPiA+ID4gKyAgdmFsdWVz Lgo+ID4gPiAKPiA+ID4gKwo+ID4gPiAKPiA+ID4gKyAgSWYgU3RhcnRWYWx1ZSBpcyBub3QgTlVM TCwgdGhlbiB0aGUgdmFsdWUgdGhhdCB0aGUgcGVyZm9ybWFuY2UgY291bnRlciBzdGFydHMKPiA+ ID4gCj4gPiA+ICsgIHdpdGggaW1tZWRpYXRlbHkgYWZ0ZXIgaXMgaXQgcm9sbHMgb3ZlciBpcyBy ZXR1cm5lZCBpbiBTdGFydFZhbHVlLiBJZgo+ID4gPiAKPiA+ID4gKyAgRW5kVmFsdWUgaXMgbm90 IE5VTEwsIHRoZW4gdGhlIHZhbHVlIHRoYXQgdGhlIHBlcmZvcm1hbmNlIGNvdW50ZXIgZW5kIHdp dGgKPiA+ID4gCj4gPiA+ICsgIGltbWVkaWF0ZWx5IGJlZm9yZSBpdCByb2xscyBvdmVyIGlzIHJl dHVybmVkIGluIEVuZFZhbHVlLiBUaGUgNjQtYml0Cj4gPiA+IAo+ID4gPiArICBmcmVxdWVuY3kg b2YgdGhlIHBlcmZvcm1hbmNlIGNvdW50ZXIgaW4gSHogaXMgYWx3YXlzIHJldHVybmVkLiBJZiBT dGFydFZhbHVlCj4gPiA+IAo+ID4gPiArICBpcyBsZXNzIHRoYW4gRW5kVmFsdWUsIHRoZW4gdGhl IHBlcmZvcm1hbmNlIGNvdW50ZXIgY291bnRzIHVwLiBJZiBTdGFydFZhbHVlCj4gPiA+IAo+ID4g PiArICBpcyBncmVhdGVyIHRoYW4gRW5kVmFsdWUsIHRoZW4gdGhlIHBlcmZvcm1hbmNlIGNvdW50 ZXIgY291bnRzIGRvd24uIEZvcgo+ID4gPiAKPiA+ID4gKyAgZXhhbXBsZSwgYSA2NC1iaXQgZnJl ZSBydW5uaW5nIGNvdW50ZXIgdGhhdCBjb3VudHMgdXAgd291bGQgaGF2ZSBhIFN0YXJ0VmFsdWUK PiA+ID4gCj4gPiA+ICsgIG9mIDAgYW5kIGFuIEVuZFZhbHVlIG9mIDB4RkZGRkZGRkZGRkZGRkZG Ri4gQSAyNC1iaXQgZnJlZSBydW5uaW5nIGNvdW50ZXIKPiA+ID4gCj4gPiA+ICsgIHRoYXQgY291 bnRzIGRvd24gd291bGQgaGF2ZSBhIFN0YXJ0VmFsdWUgb2YgMHhGRkZGRkYgYW5kIGFuIEVuZFZh bHVlIG9mIDAuCj4gPiA+IAo+ID4gPiArCj4gPiA+IAo+ID4gPiArICBAcGFyYW0gIFN0YXJ0VmFs dWUgIFRoZSB2YWx1ZSB0aGUgcGVyZm9ybWFuY2UgY291bnRlciBzdGFydHMgd2l0aCB3aGVuIGl0 Cj4gPiA+IAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgIHJvbGxzIG92ZXIuCj4gPiA+IAo+ ID4gPiArICBAcGFyYW0gIEVuZFZhbHVlICAgIFRoZSB2YWx1ZSB0aGF0IHRoZSBwZXJmb3JtYW5j ZSBjb3VudGVyIGVuZHMgd2l0aCBiZWZvcmUKPiA+ID4gCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgaXQgcm9sbHMgb3Zlci4KPiA+ID4gCj4gPiA+ICsKPiA+ID4gCj4gPiA+ICsgIEByZXR1 cm4gVGhlIGZyZXF1ZW5jeSBpbiBIei4KPiA+ID4gCj4gPiA+ICsKPiA+ID4gCj4gPiA+ICsqKi8K PiA+ID4gCj4gPiA+ICtVSU5UNjQKPiA+ID4gCj4gPiA+ICtFRklBUEkKPiA+ID4gCj4gPiA+ICtH ZXRQZXJmb3JtYW5jZUNvdW50ZXJQcm9wZXJ0aWVzICgKPiA+ID4gCj4gPiA+ICsgIE9VVCAgICAg IFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgKlN0YXJ0VmFsdWUsICBPUFRJT05BTAo+ID4gPiAK PiA+ID4gKyAgT1VUICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAqRW5kVmFsdWUgICAg IE9QVElPTkFMCj4gPiA+IAo+ID4gPiArICApCj4gPiA+IAo+ID4gPiArewo+ID4gPiAKPiA+ID4g KyAgaWYgKFN0YXJ0VmFsdWUgIT0gTlVMTCkgewo+ID4gPiAKPiA+ID4gKyAgICAqU3RhcnRWYWx1 ZSA9IEJJVDI7Cj4gPiA+IAo+ID4gPiArICB9Cj4gPiA+IAo+ID4gPiArCj4gPiA+IAo+ID4gPiAr ICBpZiAoRW5kVmFsdWUgIT0gTlVMTCkgewo+ID4gPiAKPiA+ID4gKyAgICAqRW5kVmFsdWUgPSBC SVQ0OCAtIDE7Cj4gPiA+IAo+ID4gPiArICB9Cj4gPiA+IAo+ID4gPiArCj4gPiA+IAo+ID4gPiAr ICByZXR1cm4gR2V0RnJlcSAoKTsKPiA+ID4gCj4gPiA+ICt9Cj4gPiA+IAo+ID4gPiArCj4gPiA+ IAo+ID4gPiArLyoqCj4gPiA+IAo+ID4gPiArICBDb252ZXJ0cyBlbGFwc2VkIHRpY2tzIG9mIHBl cmZvcm1hbmNlIGNvdW50ZXIgdG8gdGltZSBpbiBuYW5vc2Vjb25kcy4KPiA+ID4gCj4gPiA+ICsK PiA+ID4gCj4gPiA+ICsgIFRoaXMgZnVuY3Rpb24gY29udmVydHMgdGhlIGVsYXBzZWQgdGlja3Mg b2YgcnVubmluZyBwZXJmb3JtYW5jZSBjb3VudGVyIHRvCj4gPiA+IAo+ID4gPiArICB0aW1lIHZh bHVlIGluIHVuaXQgb2YgbmFub3NlY29uZHMuCj4gPiA+IAo+ID4gPiArCj4gPiA+IAo+ID4gPiAr ICBAcGFyYW0gIFRpY2tzICAgICBUaGUgbnVtYmVyIG9mIGVsYXBzZWQgdGlja3Mgb2YgcnVubmlu ZyBwZXJmb3JtYW5jZSBjb3VudGVyLgo+ID4gPiAKPiA+ID4gKwo+ID4gPiAKPiA+ID4gKyAgQHJl dHVybiBUaGUgZWxhcHNlZCB0aW1lIGluIG5hbm9zZWNvbmRzLgo+ID4gPiAKPiA+ID4gKwo+ID4g PiAKPiA+ID4gKyoqLwo+ID4gPiAKPiA+ID4gK1VJTlQ2NAo+ID4gPiAKPiA+ID4gK0VGSUFQSQo+ ID4gPiAKPiA+ID4gK0dldFRpbWVJbk5hbm9TZWNvbmQgKAo+ID4gPiAKPiA+ID4gKyAgSU4gICAg ICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICBUaWNrcwo+ID4gPiAKPiA+ID4gKyAgKQo+ID4g PiAKPiA+ID4gK3sKPiA+ID4gCj4gPiA+ICsgIFVJTlQ2NCAgRnJlcXVlbmN5Owo+ID4gPiAKPiA+ ID4gKyAgVUlOVDY0ICBOYW5vU2Vjb25kczsKPiA+ID4gCj4gPiA+ICsgIFVJTlQ2NCAgUmVtYWlu ZGVyOwo+ID4gPiAKPiA+ID4gKyAgSU5UTiAgICBTaGlmdDsKPiA+ID4gCj4gPiA+ICsKPiA+ID4g Cj4gPiA+ICsgIEZyZXF1ZW5jeSA9IEdldFBlcmZvcm1hbmNlQ291bnRlclByb3BlcnRpZXMgKE5V TEwsIE5VTEwpOwo+ID4gPiAKPiA+ID4gKwo+ID4gPiAKPiA+ID4gKyAgLy8KPiA+ID4gCj4gPiA+ ICsgIC8vICAgICAgICAgIFRpY2tzCj4gPiA+IAo+ID4gPiArICAvLyBUaW1lID0gLS0tLS0tLS0t IHggMSwwMDAsMDAwLDAwMAo+ID4gPiAKPiA+ID4gKyAgLy8gICAgICAgIEZyZXF1ZW5jeQo+ID4g PiAKPiA+ID4gKyAgLy8KPiA+ID4gCj4gPiA+ICsgIE5hbm9TZWNvbmRzID0gTXVsdFU2NHgzMiAo RGl2VTY0eDY0UmVtYWluZGVyIChUaWNrcywgRnJlcXVlbmN5LCAmUmVtYWluZGVyKSwgMTAwMDAw MDAwMHUpOwo+ID4gPiAKPiA+ID4gKwo+ID4gPiAKPiA+ID4gKyAgLy8KPiA+ID4gCj4gPiA+ICsg IC8vIEVuc3VyZSAoUmVtYWluZGVyICogMSwwMDAsMDAwLDAwMCkgd2lsbCBub3Qgb3ZlcmZsb3cg NjQtYml0Lgo+ID4gPiAKPiA+ID4gKyAgLy8gU2luY2UgMl4yOSA8IDEsMDAwLDAwMCwwMDAgPSAw eDNCOUFDQTAwIDwgMl4zMCwgUmVtYWluZGVyIHNob3VsZCA8IDJeKDY0LTMwKSA9IDJeMzQsCj4g PiA+IAo+ID4gPiArICAvLyBpLmUuIGhpZ2hlc3QgYml0IHNldCBpbiBSZW1haW5kZXIgc2hvdWxk IDw9IDMzLgo+ID4gPiAKPiA+ID4gKyAgLy8KPiA+ID4gCj4gPiA+ICsgIFNoaWZ0ID0gTUFYICgw LCBIaWdoQml0U2V0NjQgKFJlbWFpbmRlcikgLSAzMyk7Cj4gPiA+IAo+ID4gPiArICBSZW1haW5k ZXIgPSBSU2hpZnRVNjQgKFJlbWFpbmRlciwgKFVJTlROKSBTaGlmdCk7Cj4gPiA+IAo+ID4gPiAr ICBGcmVxdWVuY3kgPSBSU2hpZnRVNjQgKEZyZXF1ZW5jeSwgKFVJTlROKSBTaGlmdCk7Cj4gPiA+ IAo+ID4gPiArICBOYW5vU2Vjb25kcyArPSBEaXZVNjR4NjRSZW1haW5kZXIgKE11bHRVNjR4MzIg KFJlbWFpbmRlciwgMTAwMDAwMDAwMHUpLCBGcmVxdWVuY3ksIE5VTEwpOwo+ID4gPiAKPiA+ID4g Kwo+ID4gPiAKPiA+ID4gKyAgcmV0dXJuIE5hbm9TZWNvbmRzOwo+ID4gPiAKPiA+ID4gK30KPiA+ ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9Mb29uZ3Nvbi9Mb29uZ0FyY2hRZW11UGtn L0xpYnJhcnkvU3RhYmxlVGltZXJMaWIvVGltZXJMaWIuaW5mCj4gPiA+IGIvUGxhdGZvcm0vTG9v bmdzb24vTG9vbmdBcmNoUWVtdVBrZy9MaWJyYXJ5L1N0YWJsZVRpbWVyTGliL1RpbWVyTGliLmlu Zgo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gPiBpbmRleCAwMDAwMDAwMDAwLi5mZWYw ZmFjMDhjCj4gPiA+IC0tLSAvZGV2L251bGwKPiA+ID4gKysrIGIvUGxhdGZvcm0vTG9vbmdzb24v TG9vbmdBcmNoUWVtdVBrZy9MaWJyYXJ5L1N0YWJsZVRpbWVyTGliL1RpbWVyTGliLmluZgo+ID4g PiBAQCAtMCwwICsxLDI4IEBACj4gPiA+ICsjIyBAZmlsZQo+ID4gPiAKPiA+ID4gKyMgIEdlbmVy aWMgTG9vbmdBcmNoIGltcGxlbWVudGF0aW9uIG9mIFRpbWVyTGliLmgKPiA+ID4gCj4gPiA+ICsj Cj4gPiA+IAo+ID4gPiArIyAgQ29weXJpZ2h0IChjKSAyMDIxIExvb25nc29uIFRlY2hub2xvZ3kg Q29ycG9yYXRpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+Cj4gPiA+IAo+ID4g PiArIwo+ID4gPiAKPiA+ID4gKyMgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1 c2UtUGF0ZW50Cj4gPiA+IAo+ID4gPiArIwo+ID4gPiAKPiA+ID4gKyMjCj4gPiA+IAo+ID4gPiAr Cj4gPiA+IAo+ID4gPiArW0RlZmluZXNdCj4gPiA+IAo+ID4gPiArICBJTkZfVkVSU0lPTiAgICAg ICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDA1Cj4gPiA+IAo+ID4gPiArICBCQVNFX05BTUUg ICAgICAgICAgICAgICAgICAgICAgICAgPSBUaW1lckxpYgo+ID4gPiAKPiA+ID4gKyAgRklMRV9H VUlEICAgICAgICAgICAgICAgICAgICAgICAgID0gNzQwMzg5QzctQ0M0NC00QTJGLTg4REMtODlE OTdEMzEyRTdDCj4gPiA+IAo+ID4gPiArICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAg ICAgPSBCQVNFCj4gPiA+IAo+ID4gPiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAg ICAgPSAxLjAKPiA+ID4gCj4gPiA+ICsgIExJQlJBUllfQ0xBU1MgICAgICAgICAgICAgICAgICAg ICA9IFRpbWVyTGliCj4gPiA+IAo+ID4gPiArCj4gPiA+IAo+ID4gPiArW1NvdXJjZXMuY29tbW9u XQo+ID4gPiAKPiA+ID4gKyAgVGltZXJMaWIuYwo+ID4gPiAKPiA+ID4gKyAgQ291bnQuUwo+ID4g PiAKPiA+ID4gKwo+ID4gPiAKPiA+ID4gK1tQYWNrYWdlc10KPiA+ID4gCj4gPiA+ICsgIFBsYXRm b3JtL0xvb25nc29uL0xvb25nQXJjaFFlbXVQa2cvTG9vbmdzb24uZGVjCj4gPiA+IAo+ID4gPiAr ICBNZGVQa2cvTWRlUGtnLmRlYwo+ID4gPiAKPiA+ID4gKwo+ID4gPiAKPiA+ID4gK1tMaWJyYXJ5 Q2xhc3Nlc10KPiA+ID4gCj4gPiA+ICsgIERlYnVnTGliCj4gPiA+IAo+ID4gPiArICBJb0xpYgo+ ID4gPiAKPiA+ID4gLS0KPiA+ID4gMi4zMS4xCj4gPiA+IAo+ID4gPiAKPiA+ID4gCj4gPiA+IC09 LT0tPS09LT0tPQo+ID4gPiBHcm91cHMuaW8gTGlua3M6IFlvdSByZWNlaXZlIGFsbCBtZXNzYWdl cyBzZW50IHRvIHRoaXMgZ3JvdXAuCj4gPiA+IFZpZXcvUmVwbHkgT25saW5lICgjOTM1NjApOiBo dHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvbWVzc2FnZS85MzU2MAo+ID4gPiBNdXRlIFRo aXMgVG9waWM6IGh0dHBzOi8vZ3JvdXBzLmlvL210LzkzNTY1NTgyLzE2NDM0OTYKPiA+ID4gR3Jv dXAgT3duZXI6IGRldmVsK293bmVyQGVkazIuZ3JvdXBzLmlvCj4gPiA+IFVuc3Vic2NyaWJlOiBo dHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvdW5zdWIgW21pY2hhZWwuZC5raW5uZXlAaW50 ZWwuY29tXQo+ID4gPiAtPS09LT0tPS09LT0KPiA+ID4gCj4gPiAKPiA+IAo+ID4gCj4gPiAKPiA+ IAo+ID4gCj4gCj4gCj4g5pys6YKu5Lu25Y+K5YW26ZmE5Lu25ZCr5pyJ6b6Z6Iqv5Lit56eR55qE 5ZWG5Lia56eY5a+G5L+h5oGv77yM5LuF6ZmQ5LqO5Y+R6YCB57uZ5LiK6Z2i5Zyw5Z2A5Lit5YiX 5Ye655qE5Liq5Lq65oiW576k57uE44CC56aB5q2i5Lu75L2V5YW25LuW5Lq65Lul5Lu75L2V5b2i 5byP5L2/55So77yI5YyF5ous5L2G5LiN6ZmQ5LqO5YWo6YOo5oiW6YOo5YiG5Zyw5rOE6Zyy44CB 5aSN5Yi25oiW5pWj5Y+R77yJ5pys6YKu5Lu25Y+K5YW26ZmE5Lu25Lit55qE5L+h5oGv44CC5aaC 5p6c5oKo6ZSZ5pS25pys6YKu5Lu277yM6K+35oKo56uL5Y2z55S16K+d5oiW6YKu5Lu26YCa55+l 5Y+R5Lu25Lq65bm25Yig6Zmk5pys6YKu5Lu244CCIAo+IFRoaXMgZW1haWwgYW5kIGl0cyBhdHRh Y2htZW50cyBjb250YWluIGNvbmZpZGVudGlhbCBpbmZvcm1hdGlvbiBmcm9tIExvb25nc29uIFRl Y2hub2xvZ3kgLCB3aGljaCBpcyBpbnRlbmRlZCBvbmx5IGZvciB0aGUgcGVyc29uIG9yIGVudGl0 eSB3aG9zZSBhZGRyZXNzIGlzIGxpc3RlZCBhYm92ZS4gQW55IHVzZSBvZiB0aGUgaW5mb3JtYXRp b24gY29udGFpbmVkIGhlcmVpbiBpbiBhbnkgd2F5IChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRl ZCB0bywgdG90YWwgb3IgcGFydGlhbCBkaXNjbG9zdXJlLCByZXByb2R1Y3Rpb24gb3IgZGlzc2Vt aW5hdGlvbikgYnkgcGVyc29ucyBvdGhlciB0aGFuIHRoZSBpbnRlbmRlZCByZWNpcGllbnQocykg aXMgcHJvaGliaXRlZC4gSWYgeW91IHJlY2VpdmUgdGhpcyBlbWFpbCBpbiBlcnJvciwgcGxlYXNl IG5vdGlmeSB0aGUgc2VuZGVyIGJ5IHBob25lIG9yIGVtYWlsIGltbWVkaWF0ZWx5IGFuZCBkZWxl dGUgaXQuIAo+IAo+IAo+IAo+IAoNCg0K5pys6YKu5Lu25Y+K5YW26ZmE5Lu25ZCr5pyJ6b6Z6Iqv 5Lit56eR55qE5ZWG5Lia56eY5a+G5L+h5oGv77yM5LuF6ZmQ5LqO5Y+R6YCB57uZ5LiK6Z2i5Zyw 5Z2A5Lit5YiX5Ye655qE5Liq5Lq65oiW576k57uE44CC56aB5q2i5Lu75L2V5YW25LuW5Lq65Lul 5Lu75L2V5b2i5byP5L2/55So77yI5YyF5ous5L2G5LiN6ZmQ5LqO5YWo6YOo5oiW6YOo5YiG5Zyw 5rOE6Zyy44CB5aSN5Yi25oiW5pWj5Y+R77yJ5pys6YKu5Lu25Y+K5YW26ZmE5Lu25Lit55qE5L+h 5oGv44CC5aaC5p6c5oKo6ZSZ5pS25pys6YKu5Lu277yM6K+35oKo56uL5Y2z55S16K+d5oiW6YKu 5Lu26YCa55+l5Y+R5Lu25Lq65bm25Yig6Zmk5pys6YKu5Lu244CCIA0KVGhpcyBlbWFpbCBhbmQg aXRzIGF0dGFjaG1lbnRzIGNvbnRhaW4gY29uZmlkZW50aWFsIGluZm9ybWF0aW9uIGZyb20gTG9v bmdzb24gVGVjaG5vbG9neSAsIHdoaWNoIGlzIGludGVuZGVkIG9ubHkgZm9yIHRoZSBwZXJzb24g b3IgZW50aXR5IHdob3NlIGFkZHJlc3MgaXMgbGlzdGVkIGFib3ZlLiBBbnkgdXNlIG9mIHRoZSBp bmZvcm1hdGlvbiBjb250YWluZWQgaGVyZWluIGluIGFueSB3YXkgKGluY2x1ZGluZywgYnV0IG5v dCBsaW1pdGVkIHRvLCB0b3RhbCBvciBwYXJ0aWFsIGRpc2Nsb3N1cmUsIHJlcHJvZHVjdGlvbiBv ciBkaXNzZW1pbmF0aW9uKSBieSBwZXJzb25zIG90aGVyIHRoYW4gdGhlIGludGVuZGVkIHJlY2lw aWVudChzKSBpcyBwcm9oaWJpdGVkLiBJZiB5b3UgcmVjZWl2ZSB0aGlzIGVtYWlsIGluIGVycm9y LCBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgYnkgcGhvbmUgb3IgZW1haWwgaW1tZWRpYXRlbHkg YW5kIGRlbGV0ZSBpdC4g