From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: Re: [PATCH v4] displif: add ABI for para-virtual display Date: Tue, 28 Mar 2017 10:56:42 +0300 Message-ID: <1a8f69b5-fe4b-15b7-ff5c-d148b402cfaf@gmail.com> References: <1490000192-17467-1-git-send-email-andr2000@gmail.com> <1490000192-17467-2-git-send-email-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cslzj-0004Ve-9H for xen-devel@lists.xenproject.org; Tue, 28 Mar 2017 07:56:47 +0000 Received: by mail-wr0-f193.google.com with SMTP id w43so17204572wrb.1 for ; Tue, 28 Mar 2017 00:56:45 -0700 (PDT) In-Reply-To: <1490000192-17467-2-git-send-email-andr2000@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: lars.kurth@citrix.com, vlad.babchuk@gmail.com, Oleksandr Andrushchenko , julien.grall@arm.com, andrii.anisov@gmail.com, olekstysh@gmail.com, al1img@gmail.com, Oleksandr Grytsov , joculator@gmail.com List-Id: xen-devel@lists.xenproject.org cGluZwoKCk9uIDAzLzIwLzIwMTcgMTA6NTYgQU0sIE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIHdy b3RlOgo+IEZyb206IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNo ZW5rb0BlcGFtLmNvbT4KPgo+IFRoaXMgaXMgdGhlIEFCSSBmb3IgdGhlIHR3byBoYWx2ZXMgb2Yg YSBwYXJhLXZpcnR1YWxpemVkCj4gZGlzcGxheSBkcml2ZXIuCj4KPiBUaGlzIHByb3RvY29sIGFp bXMgdG8gcHJvdmlkZSBhIHVuaWZpZWQgcHJvdG9jb2wgd2hpY2ggZml0cyBtb3JlCj4gc29waGlz dGljYXRlZCB1c2UtY2FzZXMgdGhhbiBhIGZyYW1lYnVmZmVyIGRldmljZSBjYW4gaGFuZGxlLiBB dCB0aGUKPiBtb21lbnQgYmFzaWMgZnVuY3Rpb25hbGl0eSBpcyBzdXBwb3J0ZWQgd2l0aCB0aGUg aW50ZW50aW9uIHRvIGV4dGVuZDoKPiAgICBvIG11bHRpcGxlIGR5bmFtaWNhbGx5IGFsbG9jYXRl ZC9kZXN0cm95ZWQgZnJhbWVidWZmZXJzCj4gICAgbyBidWZmZXJzIG9mIGFyYml0cmFyeSBzaXpl cwo+ICAgIG8gYmV0dGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbmNsdWRpbmcgbXVsdGlwbGUg ZGlzcGxheSBzdXBwb3J0Cj4KPiBOb3RlOiBleGlzdGluZyBmYmlmIGNhbiBiZSB1c2VkIHRvZ2V0 aGVyIHdpdGggZGlzcGxpZiBydW5uaW5nIGF0IHRoZQo+IHNhbWUgdGltZSwgZS5nLiBvbiBMaW51 eCBvbmUgcHJvdmlkZXMgZnJhbWVidWZmZXIgYW5kIGFub3RoZXIgRFJNL0tNUwo+Cj4gRnV0dXJl IGV4dGVuc2lvbnMgdG8gdGhlIGV4aXN0aW5nIHByb3RvY29sIG1heSBpbmNsdWRlOgo+ICAgIG8g YWxsb3cgZGlzcGxheS9jb25uZWN0b3IgY2xvbmluZwo+ICAgIG8gYWxsb3cgYWxsb2NhdGluZyBv YmplY3RzIG90aGVyIHRoYW4gZGlzcGxheSBidWZmZXJzCj4gICAgbyBhZGQgcGxhbmVzL292ZXJs YXlzIHN1cHBvcnQKPiAgICBvIHN1cHBvcnQgc2NhbGluZwo+ICAgIG8gc3VwcG9ydCByb3RhdGlv bgo+Cj4gTm90ZSwgdGhhdCB0aGlzIHByb3RvY29sIGRvZXNuJ3QgdXNlIHJpbmcgbWFjcm9zIGZv cgo+IGJpLWRpcmVjdGlvbmFsIGV4Y2hhbmdlIChQViBjYWxscy85cGZzKSBiYWNhdXNlOgo+ICAg IG8gaXQgc3RhdGljYWxseSBkZWZpbmVzIHRoZSB1c2Ugb2YgYSBzaW5nbGUgcGFnZQo+ICAgICAg Zm9yIHRoZSByaW5nIGJ1ZmZlcgo+ICAgIG8gaXQgdXNlcyBkaXJlY3QgbWVtb3J5IGFjY2VzcyB0 byByaW5nJ3MgY29udGVudHMKPiAgICAgIHcvbyBtZW1vcnkgY29weWluZwo+ICAgIG8gcmUtdXNl cyB0aGUgc2FtZSBpZGVhIHRoYXQga2JkaWYvZmJpZiB1c2UKPiAgICAgIHdoaWNoIGZvciB0aGlz IHVzZS1jYXNlIHNlZW1zIHRvIGJlIGFwcHJvcHJpYXRlCj4KPiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+IFJhdGlvbmFsZSBmb3IgaW50cm9kdWNp bmcgdGhpcyBwcm90b2NvbCBpbnN0ZWFkIG9mCj4gdXNpbmcgdGhlIGV4aXN0aW5nIGZiaWY6Cj4g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPgo+IDEu IEluL291dCBldmVudCBzaXplcwo+ICAgIG8gZmJpZiAtIDQwIG9jdGV0cwo+ICAgIG8gZGlzcGxp ZiAtIDQwIG9jdGV0cwo+IFRoaXMgaXMgb25seSB0aGUgaW5pdGlhbCB2ZXJzaW9uIG9mIHRoZSBk aXNwbGlmIHByb3RvY29sCj4gd2hpY2ggbWVhbnMgdGhhdCB0aGVyZSBjb3VsZCBiZSByZXF1ZXN0 cyB3aGljaCB3aWxsIG5vdCBmaXQKPiAoV1JUIGludHJvZHVjaW5nIHNvbWUgR1BVIHJlbGF0ZWQg ZnVuY3Rpb25hbGl0eQo+IGxhdGVyIG9uKS4gSW4gdGhhdCBjYXNlIHdlIGNhbm5vdCBhbHRlciBm YmlmIHNpemVzIGFzIHdlIG5lZWQgdG8KPiBiZSBiYWNrd2FyZCBjb21wYXRpYmxlIGFuIHdpbGwg YmUgZm9yY2VkIHRvIGhhbmRsZSB0aG9zZQo+IGFwYXJ0IG9mIGZiaWYuCj4KPiAyLiBTaGFyZWQg cGFnZQo+IERpc3BsaWYgZG9lc24ndCB1c2UgYW55dGhpbmcgbGlrZSBzdHJ1Y3QgeGVuZmJfcGFn ZSwgYnV0Cj4gREVGSU5FX1JJTkdfVFlQRVMoeGVuX2Rpc3BsaWYsIHN0cnVjdCB4ZW5kaXNwbF9y ZXEsIHN0cnVjdAo+IHhlbmRpc3BsX3Jlc3ApIHdoaWNoIGlzIGEgYmV0dGVyIGFuZCBtb3JlIGNv bW1vbiB3YXkuCj4gT3V0cHV0IGV2ZW50cyB1c2UgYSBzaGFyZWQgcGFnZSB3aGljaCBvbmx5IGhh cyBpbl9jb25zIGFuZCBpbl9wcm9kCj4gYW5kIGFsbCB0aGUgcmVzdCBpcyB1c2VkIGZvciBpbmNv bWluZyBldmVudHMuIEhlcmUgc3RydWN0IHhlbmZiX3BhZ2UKPiBjb3VsZCBwcm9iYWJseSBiZSB1 c2VkIGFzIGlzIGRlc3BpdGUgdGhlIGZhY3QgdGhhdCBpdCBvbmx5IGhhcyBhIGhhbGYKPiBvZiBh IHBhZ2UgZm9yIGluY29taW5nIGV2ZW50cyB3aGljaCBpcyBvbmx5IDUwIGV2ZW50cy4gKGNvbnNp ZGVyCj4gc29tZXRoaW5nIGxpa2UgNjBIeiBkaXNwbGF5KQo+Cj4gMy4gQW1vdW50IG9mIGNoYW5n ZXMuCj4gZmJpZiBvbmx5IHByb3ZpZGVzIFhFTkZCX1RZUEVfVVBEQVRFIGFuZCBYRU5GQl9UWVBF X1JFU0laRQo+IGV2ZW50cywgc28gaXQgbG9va3MgbGlrZSBpdCBpcyBlYXNpZXIgdG8gZ2V0IGZi IHN1cHBvcnQgaW50byBkaXNwbGlmCj4gdGhhbiB2aWNlIHZlcnNhLiBkaXNwbGlmIGF0IHRoZSBt b21lbnQgaGFzIDYgcmVxdWVzdHMgYW5kIDEgZXZlbnQsCj4gbXVsdGlwbGUgY29ubmVjdG9yIHN1 cHBvcnQsIGV0Yy4KPgo+IC0tLQo+IENoYW5nZXMgc2luY2UgdjM6Cj4gICAqIGFkZCBjbGFyaWZp Y2F0aW9uIG9uIGJ1ZmZlcidzIHNpemUvZGVwdGgvZm9ybWF0IGFuZAo+ICAgICBjb25uZWN0b3In cyByZXNvbHV0aW9uCj4gICAqIG1vdmUgYmVfYWxsb2MgZmVhdHVyZSBpbnRvIGRvbWFpbidzIGNv bmZpZ3VyYXRpb24KPiAgICAgdG8gYWxsb3cgbW9yZSB1c2UtY2FzZXMgYW5kIGZyZWVkb20gKGUu Zy4gZm9yIDE6MQo+ICAgICBtYXBwZWQgZG9tYWlucyB0aGVyZSBtYXkgYmUgbm8gbmVlZCB0byBy ZXF1ZXN0IGJhY2tlbmQKPiAgICAgdG8gYWxsb2NhdGUgYnVmZmVycywgd2hpbGUgZm9yIHRoZSBy ZXN0IGl0IG1heSBtYWtlIG1vcmUKPiAgICAgc2Vuc2UpCj4gICAqIHJlbmFtZSBYZW5TdG9yZSBl bnRyaWVzOgo+ICAgICAgIGN0cmwtcmluZy1yZWYgLT4gcmVxLXJpbmctcmVmCj4gICAgICAgY3Ry bC1jaGFubmVsIC0+IHJlcS1ldmVudC1jaGFubmVsCj4gICAgICAgZXZlbnQtcmluZy1yZWYgLT4g ZXZ0LXJpbmctcmVmCj4gICAgICAgZXZlbnQtY2hhbm5lbCAtPiBldnQtZXZlbnQtY2hhbm5lbAo+ ICAgKiBoYXZlIDIgc2VwYXJhdGUgc2VjdGlvbnMgZm9yIHJlcS9yZXNwIGFuZCBldnQgdHJhbnNw b3J0Cj4gICAgIHBhcmFtZXRlcnMKPiAgICogZml4IGFuZCBleHRlbmQgcmVjb3ZlcnkgZmxvdyBk ZXNjcmlwdGlvbgo+ICAgKiByZXNlcnZlIHJlcXVlc3QgY29kZXMgZm9yIGZ1dHVyZSBmYmlmIGlu dGVncmF0aW9uIGlmIG5lZWQgYmUKPiAgICAgKHJlcXVlc3QgY29kZXMgWzA7IDE1XSBhcmUgcmVz ZXJ2ZWQpCj4gICAqIGVycm9yIG9uIGF0dGVtcHQgdG8gY3JlYXRlIG11bHRpcGxlIGJ1ZmZlcnMg d2l0aCBzYW1lIGNvb2tpZShzKQo+ICAgKiBjbGFyaWZpY2F0aW9uIG9mIHBhZ2UgZGlyZWN0b3J5 IHVzYWdlIGZvciBiZV9hbGxvYyBmZWF0dXJlCj4gICAqIGFkZCBlZGl0b3IncyBibG9jawo+Cj4g Q2hhbmdlcyBzaW5jZSB2MjoKPiAgICogdXBkYXRlZCBYZW5TdG9yZSBjb25maWd1cmF0aW9uIHRl bXBsYXRlL3BhdHRlcm4KPiAgICogYWRkZWQgIlJlY292ZXJ5IGZsb3ciIHRvIHN0YXRlIGRpYWdy YW0gZGVzY3JpcHRpb24KPiAgICogcmVuYW1lZCBncmVmX2RpcmVjdG9yeV9zdGFydCB0byBncmVm X2RpcmVjdG9yeQo+ICAgKiBhZGRlZCBtaXNzaW5nICJ2ZXJzaW9ucyIgYW5kICJ2ZXJzaW9uIiBz dHJpbmcgY29uc3RhbnRzCj4KPiBDaGFuZ2VzIHNpbmNlIHYxOgo+ICAgKiBmaXhlZCB4ZW5kaXNw bF9ldmVudF9wYWdlIHBhZGRpbmcgc2l6ZQo+ICAgKiBhZGRlZCB2ZXJzaW9uaW5nIHN1cHBvcnQK PiAgICogZXhwbGljaXRseSBkZWZpbmUgdmFsdWUgdHlwZXMgZm9yIFhlblN0b3JlIGZpZWxkcwo+ ICAgKiB0ZXh0IGRlY29yYXRpb24gcmUtd29yawo+ICAgKiBhZGRlZCBvZmZzZXRzIHRvIEFTQ0lJ IGJveCBub3RhdGlvbgo+Cj4gQ2hhbmdlcyBzaW5jZSBpbml0aWFsOgo+ICAgKiBEUk0gY2hhbmdl ZCB0byBESVNQTCwgcHJvdG9jb2wgbWFkZSBnZW5lcmljCj4gICAqIG1ham9yIHJlLXdvcmsgYWRk cmVzc2luZyBpc3N1ZXMgcmFpc2VkIGZvciBzbmRpZgo+Cj4gU2lnbmVkLW9mZi1ieTogT2xla3Nh bmRyIEdyeXRzb3YgPG9sZWtzYW5kcl9ncnl0c292QGVwYW0uY29tPgo+IFNpZ25lZC1vZmYtYnk6 IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNv bT4KPiAtLS0KPiAgIHhlbi9pbmNsdWRlL3B1YmxpYy9pby9kaXNwbGlmLmggfCA4NDcgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgMSBmaWxlIGNoYW5nZWQsIDg0 NyBpbnNlcnRpb25zKCspCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2luY2x1ZGUvcHVibGlj L2lvL2Rpc3BsaWYuaAo+Cj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9pby9kaXNw bGlmLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvaW8vZGlzcGxpZi5oCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmFjNTVjNGZlOGJiZQo+IC0tLSAvZGV2L251bGwK PiArKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvaW8vZGlzcGxpZi5oCj4gQEAgLTAsMCArMSw4NDcg QEAKPiArLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKiBkaXNwbGlmLmgKPiArICoKPiArICog VW5pZmllZCBkaXNwbGF5IGRldmljZSBJL08gaW50ZXJmYWNlIGZvciBYZW4gZ3Vlc3QgT1Nlcy4K PiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQo+ICsgKiBvZiB0aGlzIHNvZnR3YXJlIGFu ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KPiAr ICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp dGhvdXQgbGltaXRhdGlvbiB0aGUKPiArICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt ZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCj4gKyAqIHNlbGwg Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl IFNvZnR3YXJlIGlzCj4gKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCj4gKyAqIGFs bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgo+ICsgKgo+ ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZF TlQgU0hBTEwgVEhFCj4gKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVS IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiAr ICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF IFVTRSBPUiBPVEhFUgo+ICsgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAq IENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEVQQU0gU3lzdGVtcyBJbmMuCj4gKyAqCj4gKyAqIEF1 dGhvcnM6IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0Bl cGFtLmNvbT4KPiArICogICAgICAgICAgT2xla3NhbmRyIEdyeXRzb3YgPG9sZWtzYW5kcl9ncnl0 c292QGVwYW0uY29tPgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19YRU5fUFVCTElDX0lPX0RJU1BM SUZfSF9fCj4gKyNkZWZpbmUgX19YRU5fUFVCTElDX0lPX0RJU1BMSUZfSF9fCj4gKwo+ICsjaW5j bHVkZSAicmluZy5oIgo+ICsjaW5jbHVkZSAiLi4vZ3JhbnRfdGFibGUuaCIKPiArCj4gKy8qCj4g KyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKPiArICogICAgICAgICAgICAgICAgICBNYWluIGZlYXR1 cmVzIHByb3ZpZGVkIGJ5IHRoZSBwcm90b2NvbAo+ICsgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4g KyAqIFRoaXMgcHJvdG9jb2wgYWltcyB0byBwcm92aWRlIGEgdW5pZmllZCBwcm90b2NvbCB3aGlj aCBmaXRzIG1vcmUKPiArICogc29waGlzdGljYXRlZCB1c2UtY2FzZXMgdGhhbiBhIGZyYW1lYnVm ZmVyIGRldmljZSBjYW4gaGFuZGxlLiBBdCB0aGUKPiArICogbW9tZW50IGJhc2ljIGZ1bmN0aW9u YWxpdHkgaXMgc3VwcG9ydGVkIHdpdGggdGhlIGludGVudGlvbiB0byBiZSBleHRlbmRlZDoKPiAr ICogIG8gbXVsdGlwbGUgZHluYW1pY2FsbHkgYWxsb2NhdGVkL2Rlc3Ryb3llZCBmcmFtZWJ1ZmZl cnMKPiArICogIG8gYnVmZmVycyBvZiBhcmJpdHJhcnkgc2l6ZXMKPiArICogIG8gYnVmZmVyIGFs bG9jYXRpb24gYXQgZWl0aGVyIGJhY2sgb3IgZnJvbnQgZW5kCj4gKyAqICBvIGJldHRlciBjb25m aWd1cmF0aW9uIG9wdGlvbnMgaW5jbHVkaW5nIG11bHRpcGxlIGRpc3BsYXkgc3VwcG9ydAo+ICsg Kgo+ICsgKiBOb3RlOiBleGlzdGluZyBmYmlmIGNhbiBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggZGlz cGxpZiBydW5uaW5nIGF0IHRoZQo+ICsgKiBzYW1lIHRpbWUsIGUuZy4gb24gTGludXggb25lIHBy b3ZpZGVzIGZyYW1lYnVmZmVyIGFuZCBhbm90aGVyIERSTS9LTVMKPiArICoKPiArICogTm90ZTog ZGlzcGxheSByZXNvbHV0aW9uIChYZW5TdG9yZSdzICJyZXNvbHV0aW9uIiBwcm9wZXJ0eSkgZGVm aW5lcwo+ICsgKiB2aXNpYmxlIGFyZWEgb2YgdGhlIHZpcnR1YWwgZGlzcGxheS4gQXQgdGhlIHNh bWUgdGltZSByZXNvbHV0aW9uIG9mCj4gKyAqIHRoZSBkaXNwbGF5IGFuZCBmcmFtZSBidWZmZXJz IG1heSBkaWZmZXI6IGJ1ZmZlcnMgY2FuIGJlIHNtYWxsZXIsIGVxdWFsCj4gKyAqIG9yIGJpZ2dl ciB0aGFuIHRoZSB2aXNpYmxlIGFyZWEuIFRoaXMgaXMgdG8gZW5hYmxlIHVzZS1jYXNlcywgd2hl cmUgYmFja2VuZAo+ICsgKiBtYXkgZG8gc29tZSBwb3N0LXByb2Nlc3Npbmcgb2YgdGhlIGRpc3Bs YXkgYW5kIGZyYW1lIGJ1ZmZlcnMgc3VwcGxpZWQsCj4gKyAqIGUuZy4gdGhvc2UgYnVmZmVycyBj YW4gYmUganVzdCBhIHBhcnQgb2YgdGhlIGZpbmFsIGNvbXBvc2l0aW9uLgo+ICsgKgo+ICsgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0aW9u IG9mIGltcHJvdmVtZW50cwo+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqIEZ1dHVyZSBl eHRlbnNpb25zIHRvIHRoZSBleGlzdGluZyBwcm90b2NvbCBtYXkgaW5jbHVkZToKPiArICogIG8g ZGlzcGxheS9jb25uZWN0b3IgY2xvbmluZwo+ICsgKiAgbyBhbGxvY2F0aW9uIG9mIG9iamVjdHMg b3RoZXIgdGhhbiBkaXNwbGF5IGJ1ZmZlcnMKPiArICogIG8gcGxhbmUvb3ZlcmxheSBzdXBwb3J0 Cj4gKyAqICBvIHNjYWxpbmcgc3VwcG9ydAo+ICsgKiAgbyByb3RhdGlvbiBzdXBwb3J0Cj4gKyAq Cj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKPiArICogICAgICAgICAgICAgICAgICBGZWF0dXJl IGFuZCBQYXJhbWV0ZXIgTmVnb3RpYXRpb24KPiArICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsg Kgo+ICsgKiBGcm9udC0+YmFjayBub3RpZmljYXRpb25zOiB3aGVuIGVucXVldWluZyBhIG5ldyBy ZXF1ZXN0LCBzZW5kaW5nIGEKPiArICogbm90aWZpY2F0aW9uIGNhbiBiZSBtYWRlIGNvbmRpdGlv bmFsIG9uIHhlbmRpc3BsX3JlcSAoaS5lLiwgdGhlIGdlbmVyaWMKPiArICogaG9sZC1vZmYgbWVj aGFuaXNtIHByb3ZpZGVkIGJ5IHRoZSByaW5nIG1hY3JvcykuIEJhY2tlbmRzIG11c3Qgc2V0Cj4g KyAqIHhlbmRpc3BsX3JlcSBhcHByb3ByaWF0ZWx5IChlLmcuLCB1c2luZyBSSU5HX0ZJTkFMX0NI RUNLX0ZPUl9SRVFVRVNUUygpKS4KPiArICoKPiArICogQmFjay0+ZnJvbnQgbm90aWZpY2F0aW9u czogd2hlbiBlbnF1ZXVpbmcgYSBuZXcgcmVzcG9uc2UsIHNlbmRpbmcgYQo+ICsgKiBub3RpZmlj YXRpb24gY2FuIGJlIG1hZGUgY29uZGl0aW9uYWwgb24geGVuZGlzcGxfcmVzcCAoaS5lLiwgdGhl IGdlbmVyaWMKPiArICogaG9sZC1vZmYgbWVjaGFuaXNtIHByb3ZpZGVkIGJ5IHRoZSByaW5nIG1h Y3JvcykuIEZyb250ZW5kcyBtdXN0IHNldAo+ICsgKiB4ZW5kaXNwbF9yZXNwIGFwcHJvcHJpYXRl bHkgKGUuZy4sIHVzaW5nIFJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JFU1BPTlNFUygpKS4KPiArICoK PiArICogVGhlIHR3byBoYWx2ZXMgb2YgYSBwYXJhLXZpcnR1YWwgZGlzcGxheSBkcml2ZXIgdXRp bGl6ZSBub2RlcyB3aXRoaW4KPiArICogWGVuU3RvcmUgdG8gY29tbXVuaWNhdGUgY2FwYWJpbGl0 aWVzIGFuZCB0byBuZWdvdGlhdGUgb3BlcmF0aW5nIHBhcmFtZXRlcnMuCj4gKyAqIFRoaXMgc2Vj dGlvbiBlbnVtZXJhdGVzIHRoZXNlIG5vZGVzIHdoaWNoIHJlc2lkZSBpbiB0aGUgcmVzcGVjdGl2 ZSBmcm9udCBhbmQKPiArICogYmFja2VuZCBwb3J0aW9ucyBvZiBYZW5TdG9yZSwgZm9sbG93aW5n IHRoZSBYZW5CdXMgY29udmVudGlvbi4KPiArICoKPiArICogQWxsIGRhdGEgaW4gWGVuU3RvcmUg aXMgc3RvcmVkIGFzIHN0cmluZ3MuIE5vZGVzIHNwZWNpZnlpbmcgbnVtZXJpYwo+ICsgKiB2YWx1 ZXMgYXJlIGVuY29kZWQgaW4gZGVjaW1hbC4gSW50ZWdlciB2YWx1ZSByYW5nZXMgbGlzdGVkIGJl bG93IGFyZQo+ICsgKiBleHByZXNzZWQgYXMgZml4ZWQgc2l6ZWQgaW50ZWdlciB0eXBlcyBjYXBh YmxlIG9mIHN0b3JpbmcgdGhlIGNvbnZlcnNpb24KPiArICogb2YgYSBwcm9wZXJseSBmb3JtYXRl ZCBub2RlIHN0cmluZywgd2l0aG91dCBsb3NzIG9mIGluZm9ybWF0aW9uLgo+ICsgKgo+ICsgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgRXhhbXBsZSBj b25maWd1cmF0aW9uCj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiArICoKPiArICogTm90ZTog ZGVwZW5kaW5nIG9uIHRoZSB1c2UtY2FzZSBiYWNrZW5kIGNhbiBleHBvc2UgbW9yZSBkaXNwbGF5 IGNvbm5lY3RvcnMKPiArICogdGhhbiB0aGUgdW5kZXJseWluZyBIVyBwaHlzaWNhbGx5IGhhcyBi eSBlbXBsb3lpbmcgU1cgZ3JhcGhpY3MgY29tcG9zaXRvcnMKPiArICoKPiArICogVGhpcyBpcyBh biBleGFtcGxlIG9mIGJhY2tlbmQgYW5kIGZyb250ZW5kIGNvbmZpZ3VyYXRpb246Cj4gKyAqCj4g KyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEJhY2tlbmQgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArICoKPiArICogL2xvY2FsL2RvbWFpbi8wL2JhY2tl bmQvdmRpc3BsLzEvMC9mcm9udGVuZC1pZCA9ICIxIgo+ICsgKiAvbG9jYWwvZG9tYWluLzAvYmFj a2VuZC92ZGlzcGwvMS8wL2Zyb250ZW5kID0gIi9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmRpc3Bs LzAiCj4gKyAqIC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZkaXNwbC8xLzAvc3RhdGUgPSAiNCIK PiArICogL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmRpc3BsLzEvMC92ZXJzaW9ucyA9ICIxLDIi Cj4gKyAqCj4gKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZyb250ZW5kIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArICoKPiArICogL2xvY2FsL2RvbWFp bi8xL2RldmljZS92ZGlzcGwvMC9iYWNrZW5kLWlkID0gIjAiCj4gKyAqIC9sb2NhbC9kb21haW4v MS9kZXZpY2UvdmRpc3BsLzAvYmFja2VuZCA9ICIvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92ZGlz cGwvMS8wIgo+ICsgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZkaXNwbC8wL3N0YXRlID0gIjQi Cj4gKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmRpc3BsLzAvdmVyc2lvbiA9ICIxIgo+ICsg KiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZkaXNwbC8wL2JlX2FsbG9jID0gIjEiCj4gKyAqCj4g KyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29ubmVjdG9yIDAgY29uZmlndXJhdGlvbiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArICoKPiArICogL2xvY2FsL2RvbWFpbi8xL2Rldmlj ZS92ZGlzcGwvMC8wL3Jlc29sdXRpb24gPSAiMTkyMHgxMDgwIgo+ICsgKiAvbG9jYWwvZG9tYWlu LzEvZGV2aWNlL3ZkaXNwbC8wLzAvcmVxLXJpbmctcmVmID0gIjI4MzIiCj4gKyAqIC9sb2NhbC9k b21haW4vMS9kZXZpY2UvdmRpc3BsLzAvMC9yZXEtZXZlbnQtY2hhbm5lbCA9ICIxNSIKPiArICog L2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwvMC8wL2V2dC1yaW5nLXJlZiA9ICIzODciCj4g KyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmRpc3BsLzAvMC9ldnQtZXZlbnQtY2hhbm5lbCA9 ICIxNiIKPiArICoKPiArICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25uZWN0b3IgMSBj b25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsgKgo+ICsgKiAvbG9jYWwv ZG9tYWluLzEvZGV2aWNlL3ZkaXNwbC8wLzEvcmVzb2x1dGlvbiA9ICI4MDB4NjAwIgo+ICsgKiAv bG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZkaXNwbC8wLzEvcmVxLXJpbmctcmVmID0gIjI4MzMiCj4g KyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmRpc3BsLzAvMS9yZXEtZXZlbnQtY2hhbm5lbCA9 ICIxNyIKPiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwvMC8xL2V2dC1yaW5nLXJl ZiA9ICIzODgiCj4gKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmRpc3BsLzAvMS9ldnQtZXZl bnQtY2hhbm5lbCA9ICIxOCIKPiArICoKPiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBCYWNrZW5kIFhlbkJ1cyBOb2Rlcwo+ICsgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCj4gKyAqCj4gKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g UHJvdG9jb2wgdmVyc2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArICoKPiAr ICogdmVyc2lvbnMKPiArICogICAgICBWYWx1ZXM6ICAgICAgICAgPHN0cmluZz4KPiArICoKPiAr ICogICAgICBMaXN0IG9mIFhFTkRJU1BMX0xJU1RfU0VQQVJBVE9SIHNlcGFyYXRlZCBwcm90b2Nv bCB2ZXJzaW9ucyBzdXBwb3J0ZWQKPiArICogICAgICBieSB0aGUgYmFja2VuZC4gRm9yIGV4YW1w bGUgIjEsMiwzIi4KPiArICoKPiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBGcm9udGVuZCBYZW5CdXMgTm9kZXMKPiArICoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgo+ICsgKgo+ICsgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFk ZHJlc3NpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gKyAqCj4gKyAqIGRv bS1pZAo+ICsgKiAgICAgIFZhbHVlczogICAgICAgICA8dWludDE2X3Q+Cj4gKyAqCj4gKyAqICAg ICAgRG9tYWluIGlkZW50aWZpZXIuCj4gKyAqCj4gKyAqIGRldi1pZAo+ICsgKiAgICAgIFZhbHVl czogICAgICAgICA8dWludDE2X3Q+Cj4gKyAqCj4gKyAqICAgICAgRGV2aWNlIGlkZW50aWZpZXIu Cj4gKyAqCj4gKyAqIGNvbm4taWR4Cj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50OF90 Pgo+ICsgKgo+ICsgKiAgICAgIFplcm8gYmFzZWQgY29udGlnb3VzIGluZGV4IG9mIHRoZSBjb25u ZWN0b3IuCj4gKyAqICAgICAgL2xvY2FsL2RvbWFpbi88ZG9tLWlkPi9kZXZpY2UvdmRpc3BsLzxk ZXYtaWQ+Lzxjb25uLWlkeD4vLi4uCj4gKyAqCj4gKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gUHJvdG9jb2wgdmVyc2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAr ICoKPiArICogdmVyc2lvbgo+ICsgKiAgICAgIFZhbHVlczogICAgICAgICA8c3RyaW5nPgo+ICsg Kgo+ICsgKiAgICAgIFByb3RvY29sIHZlcnNpb24sIGNob3NlbiBhbW9uZyB0aGUgb25lcyBzdXBw b3J0ZWQgYnkgdGhlIGJhY2tlbmQuCj4gKyAqCj4gKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSBCYWNrZW5kIGJ1ZmZlciBhbGxvY2F0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAr ICoKPiArICogYmVfYWxsb2MKPiArICogICAgICBWYWx1ZXM6ICAgICAgICAgIjAiLCAiMSIKPiAr ICoKPiArICogICAgICBJZiB2YWx1ZSBpcyBzZXQgdG8gIjEiLCB0aGVuIGJhY2tlbmQgY2FuIGJl IGEgYnVmZmVyIHByb3ZpZGVyL2FsbG9jYXRvcgo+ICsgKiAgICAgIGZvciB0aGlzIGRvbWFpbiBk dXJpbmcgWEVORElTUExfT1BfREJVRl9DUkVBVEUgb3BlcmF0aW9uIChzZWUgYmVsb3cKPiArICog ICAgICBmb3IgbmVnb3RpYXRpb24pLgo+ICsgKiAgICAgIElmIHZhbHVlIGlzIG5vdCAiMSIgb3Ig b21pdHRlZCBmcm9udGVuZCBtdXN0IGFsbG9jYXRlIGJ1ZmZlcnMgaXRzZWxmLgo+ICsgKgo+ICsg Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbm5lY3RvciBzZXR0aW5ncyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gKyAqCj4gKyAqIHJlc29sdXRpb24KPiArICogICAgICBW YWx1ZXM6ICAgICAgICAgPHdpZHRoLCB1aW50MzJfdD54PGhlaWdodCwgdWludDMyX3Q+Cj4gKyAq Cj4gKyAqICAgICAgV2lkdGggYW5kIGhlaWdodCBvZiB0aGUgY29ubmVjdG9yIGluIHBpeGVscyBz ZXBhcmF0ZWQgYnkKPiArICogICAgICBYRU5ESVNQTF9SRVNPTFVUSU9OX1NFUEFSQVRPUi4gVGhp cyBkZWZpbmVzIHZpc2libGUgYXJlYSBvZiB0aGUKPiArICogICAgICBkaXNwbGF5Lgo+ICsgKgo+ ICsgKi0tLS0tLS0tLS0tLS0tLS0tLSBDb25uZWN0b3IgUmVxdWVzdCBUcmFuc3BvcnQgUGFyYW1l dGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tCj4gKyAqCj4gKyAqIFRoaXMgY29tbXVuaWNhdGlvbiBw YXRoIGlzIHVzZWQgdG8gZGVsaXZlciByZXF1ZXN0cyBmcm9tIGZyb250ZW5kIHRvIGJhY2tlbmQK PiArICogYW5kIGdldCB0aGUgY29ycmVzcG9uZGluZyByZXNwb25zZXMgZnJvbSBiYWNrZW5kIHRv IGZyb250ZW5kLAo+ICsgKiBzZXQgdXAgcGVyIGNvbm5lY3Rvci4KPiArICoKPiArICogcmVxLWV2 ZW50LWNoYW5uZWwKPiArICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQzMl90Pgo+ICsgKgo+ ICsgKiAgICAgIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBYZW4gY29ubmVjdG9yJ3MgY29udHJvbCBl dmVudCBjaGFubmVsCj4gKyAqICAgICAgdXNlZCB0byBzaWduYWwgYWN0aXZpdHkgaW4gdGhlIHJp bmcgYnVmZmVyLgo+ICsgKgo+ICsgKiByZXEtcmluZy1yZWYKPiArICogICAgICBWYWx1ZXM6ICAg ICAgICAgPHVpbnQzMl90Pgo+ICsgKgo+ICsgKiAgICAgIFRoZSBYZW4gZ3JhbnQgcmVmZXJlbmNl IGdyYW50aW5nIHBlcm1pc3Npb24gZm9yIHRoZSBiYWNrZW5kIHRvIG1hcAo+ICsgKiAgICAgIGEg c29sZSBwYWdlIGluIGEgc2luZ2xlIHBhZ2Ugc2l6ZWQgY29ubmVjdG9yJ3MgY29udHJvbCByaW5n IGJ1ZmZlci4KPiArICoKPiArICotLS0tLS0tLS0tLS0tLS0tLS0tIENvbm5lY3RvciBFdmVudCBU cmFuc3BvcnQgUGFyYW1ldGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsgKgo+ICsgKiBUaGlz IGNvbW11bmljYXRpb24gcGF0aCBpcyB1c2VkIHRvIGRlbGl2ZXIgYXN5bmNocm9ub3VzIGV2ZW50 cyBmcm9tIGJhY2tlbmQKPiArICogdG8gZnJvbnRlbmQsIHNldCB1cCBwZXIgY29ubmVjdG9yLgo+ ICsgKgo+ICsgKiBldnQtZXZlbnQtY2hhbm5lbAo+ICsgKiAgICAgIFZhbHVlczogICAgICAgICA8 dWludDMyX3Q+Cj4gKyAqCj4gKyAqICAgICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIFhlbiBjb25u ZWN0b3IncyBldmVudCBjaGFubmVsCj4gKyAqICAgICAgdXNlZCB0byBzaWduYWwgYWN0aXZpdHkg aW4gdGhlIHJpbmcgYnVmZmVyLgo+ICsgKgo+ICsgKiBldnQtcmluZy1yZWYKPiArICogICAgICBW YWx1ZXM6ICAgICAgICAgPHVpbnQzMl90Pgo+ICsgKgo+ICsgKiAgICAgIFRoZSBYZW4gZ3JhbnQg cmVmZXJlbmNlIGdyYW50aW5nIHBlcm1pc3Npb24gZm9yIHRoZSBiYWNrZW5kIHRvIG1hcAo+ICsg KiAgICAgIGEgc29sZSBwYWdlIGluIGEgc2luZ2xlIHBhZ2Ugc2l6ZWQgY29ubmVjdG9yJ3MgZXZl bnQgcmluZyBidWZmZXIuCj4gKyAqLwo+ICsKPiArLyoKPiArICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Kgo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFURSBESUFHUkFNUwo+ICsg KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCj4gKyAqCj4gKyAqIFRvb2wgc3RhY2sgY3JlYXRlcyBmcm9u dCBhbmQgYmFjayBzdGF0ZSBub2RlcyB3aXRoIGluaXRpYWwgc3RhdGUKPiArICogWGVuYnVzU3Rh dGVJbml0aWFsaXNpbmcuCj4gKyAqIFRvb2wgc3RhY2sgY3JlYXRlcyBhbmQgc2V0cyB1cCBmcm9u dGVuZCBkaXNwbGF5IGNvbmZpZ3VyYXRpb24KPiArICogbm9kZXMgcGVyIGRvbWFpbi4KPiArICoK PiArICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOb3JtYWwgZmxvdyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsgKgo+ICsgKiBGcm9udCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQmFjawo+ICsgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+ICsgKiBYZW5i dXNTdGF0ZUluaXRpYWxpc2luZyAgICAgICAgICAgICAgWGVuYnVzU3RhdGVJbml0aWFsaXNpbmcK PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvIFF1ZXJ5IGJhY2tl bmQgZGV2aWNlIGlkZW50aWZpY2F0aW9uCj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkYXRhLgo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG8gT3BlbiBhbmQgdmFsaWRhdGUgYmFja2VuZCBkZXZpY2UuCj4gKyAqICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+ICsgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPiArICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWCj4gKyAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUluaXRXYWl0Cj4gKyAqCj4gKyAqIG8g UXVlcnkgZnJvbnRlbmQgY29uZmlndXJhdGlvbgo+ICsgKiBvIEFsbG9jYXRlIGFuZCBpbml0aWFs aXplCj4gKyAqICAgZXZlbnQgY2hhbm5lbHMgcGVyIGNvbmZpZ3VyZWQKPiArICogICBjb25uZWN0 b3IuCj4gKyAqIG8gUHVibGlzaCB0cmFuc3BvcnQgcGFyYW1ldGVycwo+ICsgKiAgIHRoYXQgd2ls bCBiZSBpbiBlZmZlY3QgZHVyaW5nCj4gKyAqICAgdGhpcyBjb25uZWN0aW9uLgo+ICsgKiAgICAg ICAgICAgICAgfAo+ICsgKiAgICAgICAgICAgICAgfAo+ICsgKiAgICAgICAgICAgICAgVgo+ICsg KiBYZW5idXNTdGF0ZUluaXRpYWxpc2VkCj4gKyAqCj4gKyAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbyBRdWVyeSBmcm9udGVuZCB0cmFuc3BvcnQgcGFyYW1ldGVycy4K PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvIENvbm5lY3QgdG8g dGhlIGV2ZW50IGNoYW5uZWxzLgo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwKPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8Cj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVgo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg WGVuYnVzU3RhdGVDb25uZWN0ZWQKPiArICoKPiArICogIG8gQ3JlYXRlIGFuZCBpbml0aWFsaXpl IE9TCj4gKyAqICAgIHZpcnR1YWwgZGlzcGxheSBjb25uZWN0b3JzCj4gKyAqICAgIGFzIHBlciBj b25maWd1cmF0aW9uLgo+ICsgKiAgICAgICAgICAgICAgfAo+ICsgKiAgICAgICAgICAgICAgfAo+ ICsgKiAgICAgICAgICAgICAgVgo+ICsgKiBYZW5idXNTdGF0ZUNvbm5lY3RlZAo+ICsgKgo+ICsg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVVbmtub3du Cj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNs b3NlZAo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3Rh dGVDbG9zaW5nCj4gKyAqIG8gUmVtb3ZlIHZpcnR1YWwgZGlzcGxheSBkZXZpY2UKPiArICogbyBS ZW1vdmUgZXZlbnQgY2hhbm5lbHMKPiArICogICAgICAgICAgICAgIHwKPiArICogICAgICAgICAg ICAgIHwKPiArICogICAgICAgICAgICAgIFYKPiArICogWGVuYnVzU3RhdGVDbG9zZWQKPiArICoK PiArICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJlY292ZXJ5IGZsb3cgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsgKgo+ICsgKiBJbiBjYXNlIG9mIGZyb250ZW5k IHVucmVjb3ZlcmFibGUgZXJyb3JzIGJhY2tlbmQgaGFuZGxlcyB0aGF0IGFzCj4gKyAqIGlmIGZy b250ZW5kIGdvZXMgaW50byB0aGUgWGVuYnVzU3RhdGVDbG9zZWQgc3RhdGUuCj4gKyAqCj4gKyAq IEluIGNhc2Ugb2YgYmFja2VuZCB1bnJlY292ZXJhYmxlIGVycm9ycyBmcm9udGVuZCB0cmllcyBy ZW1vdmluZwo+ICsgKiB0aGUgdmlydHVhbGl6ZWQgZGV2aWNlLiBJZiB0aGlzIGlzIHBvc3NpYmxl IGF0IHRoZSBtb21lbnQgb2YgZXJyb3IsCj4gKyAqIHRoZW4gZnJvbnRlbmQgZ29lcyBpbnRvIHRo ZSBYZW5idXNTdGF0ZUluaXRpYWxpc2luZyBzdGF0ZSBhbmQgaXMgcmVhZHkgZm9yCj4gKyAqIG5l dyBjb25uZWN0aW9uIHdpdGggYmFja2VuZC4gSWYgdGhlIHZpcnR1YWxpemVkIGRldmljZSBpcyBz dGlsbCBpbiB1c2UgYW5kCj4gKyAqIGNhbm5vdCBiZSByZW1vdmVkLCB0aGVuIGZyb250ZW5kIGdv ZXMgaW50byB0aGUgWGVuYnVzU3RhdGVSZWNvbmZpZ3VyaW5nIHN0YXRlCj4gKyAqIHVudGlsIGVp dGhlciB0aGUgdmlydHVhbGl6ZWQgZGV2aWNlIHJlbW92ZWQgb3IgYmFja2VuZCBpbml0aWF0ZXMg YSBuZXcKPiArICogY29ubmVjdGlvbi4gT24gdGhlIHZpcnR1YWxpemVkIGRldmljZSByZW1vdmFs IGZyb250ZW5kIGdvZXMgaW50byB0aGUKPiArICogWGVuYnVzU3RhdGVJbml0aWFsaXNpbmcgc3Rh dGUuCj4gKyAqCj4gKyAqIE5vdGUgb24gWGVuYnVzU3RhdGVSZWNvbmZpZ3VyaW5nIHN0YXRlIG9m IHRoZSBmcm9udGVuZDogaWYgYmFja2VuZCBoYXMKPiArICogdW5yZWNvdmVyYWJsZSBlcnJvcnMg dGhlbiBmcm9udGVuZCBjYW5ub3Qgc2VuZCByZXF1ZXN0cyB0byB0aGUgYmFja2VuZAo+ICsgKiBh bmQgdGh1cyBjYW5ub3QgcHJvdmlkZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSB2aXJ0dWFsaXplZCBk ZXZpY2UgYW55bW9yZS4KPiArICogQWZ0ZXIgYmFja2VuZCBpcyBiYWNrIHRvIG5vcm1hbCB0aGUg dmlydHVhbGl6ZWQgZGV2aWNlIG1heSBzdGlsbCBob2xkIHNvbWUKPiArICogc3RhdGU6IGNvbmZp Z3VyYXRpb24gaW4gdXNlLCBhbGxvY2F0ZWQgYnVmZmVycywgY2xpZW50IGFwcGxpY2F0aW9uIHN0 YXRlIGV0Yy4KPiArICogU28sIGluIG1vc3QgY2FzZXMsIHRoaXMgd2lsbCByZXF1aXJlIGZyb250 ZW5kIHRvIGltcGxlbWVudCBjb21wbGV4IHJlY292ZXJ5Cj4gKyAqIHJlY29ubmVjdCBsb2dpYy4g SW5zdGVhZCwgYnkgZ29pbmcgaW50byBYZW5idXNTdGF0ZVJlY29uZmlndXJpbmcgc3RhdGUsCj4g KyAqIGZyb250ZW5kIHdpbGwgbWFrZSBzdXJlIG5vIG5ldyBjbGllbnRzIG9mIHRoZSB2aXJ0dWFs aXplZCBkZXZpY2UgYXJlCj4gKyAqIGFjY2VwdGVkLCBhbGxvdyBleGlzdGluZyBjbGllbnQocykg dG8gZXhpdCBncmFjZWZ1bGx5IGJ5IHNpZ25hbGluZyBlcnJvcgo+ICsgKiBzdGF0ZSBldGMuCj4g KyAqIE9uY2UgYWxsIHRoZSBjbGllbnRzIGFyZSBnb25lIGZyb250ZW5kIGNhbiByZWluaXRpYWxp emUgdGhlIHZpcnR1YWxpemVkCj4gKyAqIGRldmljZSBhbmQgZ2V0IGludG8gWGVuYnVzU3RhdGVJ bml0aWFsaXNpbmcgc3RhdGUgYWdhaW4gc2lnbmFsaW5nIHRoZQo+ICsgKiBiYWNrZW5kIHRoYXQg YSBuZXcgY29ubmVjdGlvbiBjYW4gYmUgbWFkZS4KPiArICoKPiArICogVGhlcmUgYXJlIG11bHRp cGxlIGNvbmRpdGlvbnMgcG9zc2libGUgdW5kZXIgd2hpY2ggZnJvbnRlbmQgd2lsbCBnbyBmcm9t Cj4gKyAqIFhlbmJ1c1N0YXRlUmVjb25maWd1cmluZyBpbnRvIFhlbmJ1c1N0YXRlSW5pdGlhbGlz aW5nLCBzb21lIG9mIHRoZW0gYXJlIE9TCj4gKyAqIHNwZWNpZmljLiBGb3IgZXhhbXBsZToKPiAr ICogMS4gVGhlIHVuZGVybHlpbmcgT1MgZnJhbWV3b3JrIG1heSBwcm92aWRlIGNhbGxiYWNrcyB0 byBzaWduYWwgdGhhdCB0aGUgbGFzdAo+ICsgKiAgICBjbGllbnQgb2YgdGhlIHZpcnR1YWxpemVk IGRldmljZSBoYXMgZ29uZSBhbmQgdGhlIGRldmljZSBjYW4gYmUgcmVtb3ZlZAo+ICsgKiAyLiBG cm9udGVuZCBjYW4gc2NoZWR1bGUgYSBkZWZlcnJlZCB3b3JrICh0aW1lci90YXNrbGV0L3dvcmtx dWV1ZSkKPiArICogICAgdG8gcGVyaW9kaWNhbGx5IGNoZWNrIGlmIHRoaXMgaXMgdGhlIHJpZ2h0 IHRpbWUgdG8gcmUtdHJ5IHJlbW92YWwgb2YKPiArICogICAgdGhlIHZpcnR1YWxpemVkIGRldmlj ZS4KPiArICogMy4gQnkgYW55IG90aGVyIG1lYW5zLgo+ICsgKgo+ICsgKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqCj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVFVRVNUIENPREVTCj4g KyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKPiArICogUmVxdWVzdCBjb2RlcyBbMDsgMTVdIGFyZSBy ZXNlcnZlZCBhbmQgbXVzdCBub3QgYmUgdXNlZAo+ICsgKi8KPiArCj4gKyNkZWZpbmUgWEVORElT UExfT1BfREJVRl9DUkVBVEUgICAgICAgMHgxMAo+ICsjZGVmaW5lIFhFTkRJU1BMX09QX0RCVUZf REVTVFJPWSAgICAgIDB4MTEKPiArI2RlZmluZSBYRU5ESVNQTF9PUF9GQl9BVFRBQ0ggICAgICAg ICAweDEyCj4gKyNkZWZpbmUgWEVORElTUExfT1BfRkJfREVUQUNIICAgICAgICAgMHgxMwo+ICsj ZGVmaW5lIFhFTkRJU1BMX09QX1NFVF9DT05GSUcgICAgICAgIDB4MTQKPiArI2RlZmluZSBYRU5E SVNQTF9PUF9QR19GTElQICAgICAgICAgICAweDE1Cj4gKwo+ICsvKgo+ICsgKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZFTlQgQ09E RVMKPiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKi8KPiArI2RlZmluZSBYRU5ESVNQTF9F VlRfUEdfRkxJUCAgICAgICAgICAweDAwCj4gKwo+ICsvKgo+ICsgKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCj4gKyAqICAgICAgICAgICAgICAgWEVOU1RPUkUgRklFTEQgQU5EIFBBVEggTkFNRSBTVFJJ TkdTLCBIRUxQRVJTCj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiArICovCj4gKyNkZWZpbmUg WEVORElTUExfRFJJVkVSX05BTUUgICAgICAgICAgInZkaXNwbCIKPiArCj4gKyNkZWZpbmUgWEVO RElTUExfTElTVF9TRVBBUkFUT1IgICAgICAgIiwiCj4gKyNkZWZpbmUgWEVORElTUExfUkVTT0xV VElPTl9TRVBBUkFUT1IgIngiCj4gKwo+ICsjZGVmaW5lIFhFTkRJU1BMX0ZJRUxEX0JFX1ZFUlNJ T05TICAgICJ2ZXJzaW9ucyIKPiArI2RlZmluZSBYRU5ESVNQTF9GSUVMRF9GRV9WRVJTSU9OICAg ICAidmVyc2lvbiIKPiArI2RlZmluZSBYRU5ESVNQTF9GSUVMRF9SRVFfUklOR19SRUYgICAicmVx LXJpbmctcmVmIgo+ICsjZGVmaW5lIFhFTkRJU1BMX0ZJRUxEX1JFUV9DSEFOTkVMICAgICJyZXEt ZXZlbnQtY2hhbm5lbCIKPiArI2RlZmluZSBYRU5ESVNQTF9GSUVMRF9FVlRfUklOR19SRUYgICAi ZXZ0LXJpbmctcmVmIgo+ICsjZGVmaW5lIFhFTkRJU1BMX0ZJRUxEX0VWVF9DSEFOTkVMICAgICJl dnQtZXZlbnQtY2hhbm5lbCIKPiArI2RlZmluZSBYRU5ESVNQTF9GSUVMRF9SRVNPTFVUSU9OICAg ICAicmVzb2x1dGlvbiIKPiArI2RlZmluZSBYRU5ESVNQTF9GSUVMRF9CRV9BTExPQyAgICAgICAi YmVfYWxsb2MiCj4gKwo+ICsvKgo+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICBTVEFUVVMgUkVUVVJOIENPREVTCj4gKyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKPiArICoKPiArICogU3RhdHVzIHJldHVybiBjb2RlIGlzIHplcm8gb24gc3VjY2Vz cyBhbmQgLVhFTl9FWFggb24gZmFpbHVyZS4KPiArICoKPiArICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Kgo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzc3VtcHRpb25zCj4gKyAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKPiArICogbyB1c2FnZSBvZiBncmFudCByZWZlcmVuY2UgMCBhcyBp bnZhbGlkIGdyYW50IHJlZmVyZW5jZToKPiArICogICBncmFudCByZWZlcmVuY2UgMCBpcyB2YWxp ZCwgYnV0IG5ldmVyIGV4cG9zZWQgdG8gYSBQViBkcml2ZXIsCj4gKyAqICAgYmVjYXVzZSBvZiB0 aGUgZmFjdCBpdCBpcyBhbHJlYWR5IGluIHVzZS9yZXNlcnZlZCBieSB0aGUgUFYgY29uc29sZS4K PiArICogbyBhbGwgcmVmZXJlbmNlcyBpbiB0aGlzIGRvY3VtZW50IHRvIHBhZ2Ugc2l6ZXMgbXVz dCBiZSB0cmVhdGVkCj4gKyAqICAgYXMgcGFnZXMgb2Ygc2l6ZSBYRU5fUEFHRV9TSVpFIHVubGVz cyBvdGhlcndpc2Ugbm90ZWQuCj4gKyAqCj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiArICog ICAgICAgRGVzY3JpcHRpb24gb2YgdGhlIHByb3RvY29sIGJldHdlZW4gZnJvbnRlbmQgYW5kIGJh Y2tlbmQgZHJpdmVyCj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiArICoKPiArICogVGhlIHR3 byBoYWx2ZXMgb2YgYSBQYXJhLXZpcnR1YWwgZGlzcGxheSBkcml2ZXIgY29tbXVuaWNhdGUgd2l0 aAo+ICsgKiBlYWNoIG90aGVyIHVzaW5nIHNoYXJlZCBwYWdlcyBhbmQgZXZlbnQgY2hhbm5lbHMu Cj4gKyAqIFNoYXJlZCBwYWdlIGNvbnRhaW5zIGEgcmluZyB3aXRoIHJlcXVlc3QvcmVzcG9uc2Ug cGFja2V0cy4KPiArICoKPiArICogQWxsIHJlc2VydmVkIGZpZWxkcyBpbiB0aGUgc3RydWN0dXJl cyBiZWxvdyBtdXN0IGJlIDAuCj4gKyAqIERpc3BsYXkgYnVmZmVycydzIGNvb2tpZSBvZiB2YWx1 ZSAwIHRyZWF0ZWQgYXMgaW52YWxpZC4KPiArICogRnJhbWVidWZmZXIncyBjb29raWUgb2YgdmFs dWUgMCB0cmVhdGVkIGFzIGludmFsaWQuCj4gKyAqCj4gKyAqIEZvciBhbGwgcmVxdWVzdC9yZXNw b25zZS9ldmVudCBwYWNrZXRzIHRoYXQgdXNlIGNvb2tpZXM6Cj4gKyAqICAgZGJ1Zl9jb29raWUg LSB1aW50NjRfdCwgdW5pcXVlIHRvIGd1ZXN0IGRvbWFpbiB2YWx1ZSB1c2VkIGJ5IHRoZSBiYWNr ZW5kCj4gKyAqICAgICB0byBtYXAgcmVtb3RlIGRpc3BsYXkgYnVmZmVyIHRvIGl0cyBsb2NhbCBv bmUKPiArICogICBmYl9jb29raWUgLSB1aW50NjRfdCwgdW5pcXVlIHRvIGd1ZXN0IGRvbWFpbiB2 YWx1ZSB1c2VkIGJ5IHRoZSBiYWNrZW5kCj4gKyAqICAgICB0byBtYXAgcmVtb3RlIGZyYW1lYnVm ZmVyIHRvIGl0cyBsb2NhbCBvbmUKPiArICoKPiArICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tIFJlcXVlc3RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsg Kgo+ICsgKiBBbGwgcmVxdWVzdHMvcmVzcG9uc2VzLCB3aGljaCBhcmUgbm90IGNvbm5lY3RvciBz cGVjaWZpYywgbXVzdCBiZSBzZW50IG92ZXIKPiArICogY29udHJvbCByaW5nIG9mIHRoZSBjb25u ZWN0b3Igd2l0aCBpbmRleCAwLgo+ICsgKgo+ICsgKiBBbGwgcmVxdWVzdCBwYWNrZXRzIGhhdmUg dGhlIHNhbWUgbGVuZ3RoICg2NCBvY3RldHMpCj4gKyAqIEFsbCByZXF1ZXN0IHBhY2tldHMgaGF2 ZSBjb21tb24gaGVhZGVyOgo+ICsgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAg ICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0Cj4gKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Kwo+ICsgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCAgICBvcGVyYXRpb24g ICB8ICAgcmVzZXJ2ZWQgICAgIHwgNAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IDgKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqICAgaWQgLSB1aW50MTZfdCwgcHJpdmF0ZSBn dWVzdCB2YWx1ZSwgZWNob2VkIGluIHJlc3BvbnNlCj4gKyAqICAgb3BlcmF0aW9uIC0gdWludDhf dCwgb3BlcmF0aW9uIGNvZGUsIFhFTkRJU1BMX09QXz8/Pwo+ICsgKgo+ICsgKiBSZXF1ZXN0IGRi dWYgY3JlYXRpb24gLSByZXF1ZXN0IGNyZWF0aW9uIG9mIGEgZGlzcGxheSBidWZmZXIuCj4gKyAq ICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAg ICAgMyAgICAgICAgb2N0ZXQKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAg ICBpZCAgICAgICAgICAgICAgICB8X09QX0RCVUZfQ1JFQVRFIHwgICByZXNlcnZlZCAgICAgfCA0 Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAo+ICsgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgZGJ1Zl9jb29raWUgbG93IDMyLWJpdCAg ICAgICAgICAgICAgICAgICAgICB8IDEyCj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAg ICAgICAgICAgICAgICAgICBkYnVmX2Nvb2tpZSBoaWdoIDMyLWJpdCAgICAgICAgICAgICAgICAg ICAgIHwgMTYKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgd2lkdGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMAo+ICsgKiAr LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI0Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsg KiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicHAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgMjgKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJ1ZmZlcl9zeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAz Mgo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmbGFncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDM2Cj4gKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZl9kaXJlY3RvcnkgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgNDAKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCA0NAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98Cj4gKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQKPiArICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAq Cj4gKyAqIE11c3QgYmUgc2VudCBvdmVyIGNvbnRyb2wgcmluZyBvZiB0aGUgY29ubmVjdG9yIHdp dGggaW5kZXggMC4KPiArICogQWxsIHVudXNlZCBiaXRzIGluIGZsYWdzIGZpZWxkIG11c3QgYmUg c2V0IHRvIDAuCj4gKyAqCj4gKyAqIEFuIGF0dGVtcHQgdG8gY3JlYXRlIG11bHRpcGxlIGRpc3Bs YXkgYnVmZmVycyB3aXRoIHRoZSBzYW1lIGRidWZfY29va2llIGlzCj4gKyAqIGFuIGVycm9yLiBk YnVmX2Nvb2tpZSBjYW4gYmUgcmUtdXNlZCBhZnRlciBkZXN0cm95aW5nIHRoZSBjb3JyZXNwb25k aW5nCj4gKyAqIGRpc3BsYXkgYnVmZmVyLgo+ICsgKgo+ICsgKiBXaWR0aCBhbmQgaGVpZ2h0IG9m IHRoZSBkaXNwbGF5IGJ1ZmZlcnMgY2FuIGJlIHNtYWxsZXIsIGVxdWFsIG9yIGJpZ2dlcgo+ICsg KiB0aGFuIHRoZSBjb25uZWN0b3IncyByZXNvbHV0aW9uLiBEZXB0aC9waXhlbCBmb3JtYXQgb2Yg dGhlIGluZGl2aWR1YWwKPiArICogYnVmZmVycyBjYW4gZGlmZmVyIGFzIHdlbGwuCj4gKyAqCj4g KyAqIHdpZHRoIC0gdWludDMyX3QsIHdpZHRoIGluIHBpeGVscwo+ICsgKiBoZWlnaHQgLSB1aW50 MzJfdCwgaGVpZ2h0IGluIHBpeGVscwo+ICsgKiBicHAgLSB1aW50MzJfdCwgYml0cyBwZXIgcGl4 ZWwKPiArICogYnVmZmVyX3N6IC0gdWludDMyX3QsIGJ1ZmZlciBzaXplIHRvIGJlIGFsbG9jYXRl ZCwgb2N0ZXRzCj4gKyAqIGZsYWdzIC0gdWludDMyX3QsIGZsYWdzIG9mIHRoZSBvcGVyYXRpb24K PiArICogICBvIFhFTkRJU1BMX0RCVUZfRkxHX1JFUV9BTExPQyAtIGlmIHNldCwgdGhlbiBiYWNr ZW5kIGlzIHJlcXVlc3RlZAo+ICsgKiAgICAgdG8gYWxsb2NhdGUgdGhlIGJ1ZmZlciB3aXRoIHRo ZSBwYXJhbWV0ZXJzIHByb3ZpZGVkIGluIHRoaXMgcmVxdWVzdC4KPiArICogICAgIFBhZ2UgZGly ZWN0b3J5IGlzIGhhbmRsZWQgYXMgZm9sbG93czoKPiArICogICAgICAgRnJvbnRlbmQgb24gcmVx dWVzdDoKPiArICogICAgICAgICBvIGFsbG9jYXRlcyBwYWdlcyBmb3IgdGhlIGRpcmVjdG9yeSAo Z3JlZl9kaXJlY3RvcnksCj4gKyAqICAgICAgICAgICBncmVmX2Rpcl9uZXh0X3BhZ2UocykKPiAr ICogICAgICAgICBvIGdyYW50cyBwZXJtaXNzaW9ucyBmb3IgdGhlIHBhZ2VzIG9mIHRoZSBkaXJl Y3RvcnkKPiArICogICAgICAgICBvIHNldHMgZ3JlZl9kaXJfbmV4dF9wYWdlIGZpZWxkcwo+ICsg KiAgICAgICBCYWNrZW5kIG9uIHJlc3BvbnNlOgo+ICsgKiAgICAgICAgIG8gZ3JhbnRzIHBlcm1p c3Npb25zIGZvciB0aGUgcGFnZXMgb2YgdGhlIGJ1ZmZlciBhbGxvY2F0ZWQKPiArICogICAgICAg ICBvIGZpbGxzIGluIHBhZ2UgZGlyZWN0b3J5IHdpdGggZ3JhbnQgcmVmZXJlbmNlcwo+ICsgKiAg ICAgICAgICAgKGdyZWZbXSBpbiBzdHJ1Y3QgeGVuZGlzcGxfcGFnZV9kaXJlY3RvcnlncmVmKQo+ ICsgKiBncmVmX2RpcmVjdG9yeSAtIGdyYW50X3JlZl90LCBhIHJlZmVyZW5jZSB0byB0aGUgZmly c3Qgc2hhcmVkIHBhZ2UKPiArICogICBkZXNjcmliaW5nIHNoYXJlZCBidWZmZXIgcmVmZXJlbmNl cy4gQXQgbGVhc3Qgb25lIHBhZ2UgZXhpc3RzLiBJZiBzaGFyZWQKPiArICogICBidWZmZXIgc2l6 ZSAoYnVmZmVyX3N6KSBleGNlZWRzIHdoYXQgY2FuIGJlIGFkZHJlc3NlZCBieSB0aGlzIHNpbmds ZSBwYWdlLAo+ICsgKiAgIHRoZW4gcmVmZXJlbmNlIHRvIHRoZSBuZXh0IHBhZ2UgbXVzdCBiZSBz dXBwbGllZCAoc2VlIGdyZWZfZGlyX25leHRfcGFnZQo+ICsgKiAgIGJlbG93KQo+ICsgKi8KPiAr Cj4gKyNkZWZpbmUgWEVORElTUExfREJVRl9GTEdfUkVRX0FMTE9DICAgICAgICgxIDw8IDApCj4g Kwo+ICtzdHJ1Y3QgeGVuZGlzcGxfZGJ1Zl9jcmVhdGVfcmVxIHsKPiArICAgIHVpbnQ2NF90IGRi dWZfY29va2llOwo+ICsgICAgdWludDMyX3Qgd2lkdGg7Cj4gKyAgICB1aW50MzJfdCBoZWlnaHQ7 Cj4gKyAgICB1aW50MzJfdCBicHA7Cj4gKyAgICB1aW50MzJfdCBidWZmZXJfc3o7Cj4gKyAgICB1 aW50MzJfdCBmbGFnczsKPiArICAgIGdyYW50X3JlZl90IGdyZWZfZGlyZWN0b3J5Owo+ICt9Owo+ ICsKPiArLyoKPiArICogU2hhcmVkIHBhZ2UgZm9yIFhFTkRJU1BMX09QX0RCVUZfQ1JFQVRFIGJ1 ZmZlciBkZXNjcmlwdG9yIChncmVmX2RpcmVjdG9yeSBpbgo+ICsgKiB0aGUgcmVxdWVzdCkgZW1w bG95cyBhIGxpc3Qgb2YgcGFnZXMsIGRlc2NyaWJpbmcgYWxsIHBhZ2VzIG9mIHRoZSBzaGFyZWQK PiArICogZGF0YSBidWZmZXI6Cj4gKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAg ICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKPiArICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICBncmVmX2Rpcl9uZXh0X3BhZ2UgICAg ICAgICAgICAgICAgICAgICAgICAgfCA0Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZlswXSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgOAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98Cj4gKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZltpXSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgaSo0KzgKPiArICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAq IHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvfAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ3JlZltOIC0gMV0gICAgICAgICAgICAgICAgICAgICAgICAgICB8IE4qNCs4 Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKgo+ICsgKiBncmVmX2Rpcl9uZXh0X3BhZ2UgLSBncmFu dF9yZWZfdCwgcmVmZXJlbmNlIHRvIHRoZSBuZXh0IHBhZ2UgZGVzY3JpYmluZwo+ICsgKiAgIHBh Z2UgZGlyZWN0b3J5LiBNdXN0IGJlIDAgaWYgdGhlcmUgYXJlIG5vIG1vcmUgcGFnZXMgaW4gdGhl IGxpc3QuCj4gKyAqIGdyZWZbaV0gLSBncmFudF9yZWZfdCwgcmVmZXJlbmNlIHRvIGEgc2hhcmVk IHBhZ2Ugb2YgdGhlIGJ1ZmZlcgo+ICsgKiAgIGFsbG9jYXRlZCBhdCBYRU5ESVNQTF9PUF9EQlVG X0NSRUFURQo+ICsgKgo+ICsgKiBOdW1iZXIgb2YgZ3JhbnRfcmVmX3QgZW50cmllcyBpbiB0aGUg d2hvbGUgcGFnZSBkaXJlY3RvcnkgaXMgbm90Cj4gKyAqIHBhc3NlZCwgYnV0IGluc3RlYWQgY2Fu IGJlIGNhbGN1bGF0ZWQgYXM6Cj4gKyAqICAgbnVtX2dyZWZzX3RvdGFsID0gKFhFTkRJU1BMX09Q X0RCVUZfQ1JFQVRFLmJ1ZmZlcl9zeiArIFhFTl9QQUdFX1NJWkUgLSAxKSAvCj4gKyAqICAgICAg IFhFTl9QQUdFX1NJWkUKPiArICovCj4gKwo+ICtzdHJ1Y3QgeGVuZGlzcGxfcGFnZV9kaXJlY3Rv cnkgewo+ICsgICAgZ3JhbnRfcmVmX3QgZ3JlZl9kaXJfbmV4dF9wYWdlOwo+ICsgICAgZ3JhbnRf cmVmX3QgZ3JlZlsxXTsgLyogVmFyaWFibGUgbGVuZ3RoICovCj4gK307Cj4gKwo+ICsvKgo+ICsg KiBSZXF1ZXN0IGRidWYgZGVzdHJ1Y3Rpb24gLSBkZXN0cm95IGEgcHJldmlvdXNseSBhbGxvY2F0 ZWQgZGlzcGxheSBidWZmZXI6Cj4gKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAg ICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKPiArICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCj4gKyAqIHwgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8X09QX0RCVUZfREVT VFJPWXwgICByZXNlcnZlZCAgICAgfCA0Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgOAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAg ZGJ1Zl9jb29raWUgbG93IDMyLWJpdCAgICAgICAgICAgICAgICAgICAgICB8IDEyCj4gKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICBkYnVmX2Nvb2tpZSBoaWdo IDMyLWJpdCAgICAgICAgICAgICAgICAgICAgIHwgMTYKPiArICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAq IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAyMAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98Cj4g KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNl cnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQKPiArICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r Cj4gKyAqCj4gKyAqIE11c3QgYmUgc2VudCBvdmVyIGNvbnRyb2wgcmluZyBvZiB0aGUgY29ubmVj dG9yIHdpdGggaW5kZXggMC4KPiArICovCj4gKwo+ICtzdHJ1Y3QgeGVuZGlzcGxfZGJ1Zl9kZXN0 cm95X3JlcSB7Cj4gKyAgICB1aW50NjRfdCBkYnVmX2Nvb2tpZTsKPiArfTsKPiArCj4gKy8qCj4g KyAqIFJlcXVlc3QgZnJhbWVidWZmZXIgYXR0YWNobWVudCAtIHJlcXVlc3QgYXR0YWNobWVudCBv ZiBhIGZyYW1lYnVmZmVyIHRvCj4gKyAqIHByZXZpb3VzbHkgY3JlYXRlZCBkaXNwbGF5IGJ1ZmZl ci4KPiArICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAg ICAgICAgICAgICAzICAgICAgICBvY3RldAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAg ICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgX09QX0ZCX0FUVEFDSCAgfCAgIHJlc2VydmVk ICAgICB8IDQKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4Cj4gKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICBkYnVmX2Nvb2tpZSBsb3cg MzItYml0ICAgICAgICAgICAgICAgICAgICAgIHwgMTIKPiArICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAq IHwgICAgICAgICAgICAgICAgICAgICAgIGRidWZfY29va2llIGhpZ2ggMzItYml0ICAgICAgICAg ICAgICAgICAgICAgfCAxNgo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAg ICAgICAgICAgIGZiX2Nvb2tpZSBsb3cgMzItYml0ICAgICAgICAgICAgICAgICAgICAgICB8IDIw Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgZmJfY29v a2llIGhpZ2ggMzItYml0ICAgICAgICAgICAgICAgICAgICAgIHwgMjQKPiArICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAyOAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IDMyCj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBpeGVsX2Zvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzYKPiArICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVk ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0MAo+ICsgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiAr ICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC98Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjQK PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqCj4gKyAqIE11c3QgYmUgc2VudCBvdmVyIGNvbnRyb2wg cmluZyBvZiB0aGUgY29ubmVjdG9yIHdpdGggaW5kZXggMC4KPiArICogV2lkdGggYW5kIGhlaWdo dCBjYW4gYmUgc21hbGxlciwgZXF1YWwgb3IgYmlnZ2VyIHRoYW4gdGhlIGNvbm5lY3RvcidzCj4g KyAqIHJlc29sdXRpb24uCj4gKyAqCj4gKyAqIEFuIGF0dGVtcHQgdG8gY3JlYXRlIG11bHRpcGxl IGZyYW1lIGJ1ZmZlcnMgd2l0aCB0aGUgc2FtZSBmYl9jb29raWUgaXMKPiArICogYW4gZXJyb3Iu IGZiX2Nvb2tpZSBjYW4gYmUgcmUtdXNlZCBhZnRlciBkZXN0cm95aW5nIHRoZSBjb3JyZXNwb25k aW5nCj4gKyAqIGZyYW1lIGJ1ZmZlci4KPiArICoKPiArICogd2lkdGggLSB1aW50MzJfdCwgd2lk dGggaW4gcGl4ZWxzCj4gKyAqIGhlaWdodCAtIHVpbnQzMl90LCBoZWlnaHQgaW4gcGl4ZWxzCj4g KyAqIHBpeGVsX2Zvcm1hdCAtIHVpbnQzMl90LCBwaXhlbCBmb3JtYXQgb2YgdGhlIGZyYW1lYnVm ZmVyLCBGT1VSQ0MgY29kZQo+ICsgKi8KPiArCj4gK3N0cnVjdCB4ZW5kaXNwbF9mYl9hdHRhY2hf cmVxIHsKPiArICAgIHVpbnQ2NF90IGRidWZfY29va2llOwo+ICsgICAgdWludDY0X3QgZmJfY29v a2llOwo+ICsgICAgdWludDMyX3Qgd2lkdGg7Cj4gKyAgICB1aW50MzJfdCBoZWlnaHQ7Cj4gKyAg ICB1aW50MzJfdCBwaXhlbF9mb3JtYXQ7Cj4gK307Cj4gKwo+ICsvKgo+ICsgKiBSZXF1ZXN0IGZy YW1lYnVmZmVyIGRldGFjaCAtIGRldGFjaCBhIHByZXZpb3VzbHkKPiArICogYXR0YWNoZWQgZnJh bWVidWZmZXIgZnJvbSB0aGUgZGlzcGxheSBidWZmZXIgaW4gcmVxdWVzdDoKPiArICogICAgICAg ICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAg ICAgICBvY3RldAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgIGlkICAg ICAgICAgICAgICAgIHwgIF9PUF9GQl9ERVRBQ0ggfCAgIHJlc2VydmVkICAgICB8IDQKPiArICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVk ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsg KiB8ICAgICAgICAgICAgICAgICAgICAgICAgZmJfY29va2llIGxvdyAzMi1iaXQgICAgICAgICAg ICAgICAgICAgICAgIHwgMTIKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAg ICAgICAgICAgICBmYl9jb29raWUgaGlnaCAzMi1iaXQgICAgICAgICAgICAgICAgICAgICAgfCAx Ngo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIwCj4gKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKwo+ICsgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCA2NAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICoKPiArICogTXVzdCBiZSBzZW50IG92ZXIg Y29udHJvbCByaW5nIG9mIHRoZSBjb25uZWN0b3Igd2l0aCBpbmRleCAwLgo+ICsgKi8KPiArCj4g K3N0cnVjdCB4ZW5kaXNwbF9mYl9kZXRhY2hfcmVxIHsKPiArICAgIHVpbnQ2NF90IGZiX2Nvb2tp ZTsKPiArfTsKPiArCj4gKy8qCj4gKyAqIFJlcXVlc3QgY29uZmlndXJhdGlvbiBzZXQvcmVzZXQg LSByZXF1ZXN0IHRvIHNldCBvciByZXNldAo+ICsgKiB0aGUgY29uZmlndXJhdGlvbi9tb2RlIG9m IHRoZSBkaXNwbGF5Ogo+ICsgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAg ICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0Cj4gKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ ICsgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCBfT1BfU0VUX0NPTkZJRyB8 ICAgcmVzZXJ2ZWQgICAgIHwgNAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDgKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICBmYl9j b29raWUgbG93IDMyLWJpdCAgICAgICAgICAgICAgICAgICAgICAgfCAxMgo+ICsgKiArLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgIGZiX2Nvb2tpZSBoaWdoIDMyLWJp dCAgICAgICAgICAgICAgICAgICAgICB8IDE2Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgMjAKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNAo+ICsg KiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0 aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI4Cj4gKyAqICstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgMzIKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCA0MAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQ0Cj4gKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKwo+ICsgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCA2NAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICoKPiArICogUGFzcyBhbGwgemVyb3Mg dG8gcmVzZXQsIG90aGVyd2lzZSBjb21tYW5kIGlzIHRyZWF0ZWQgYXMKPiArICogY29uZmlndXJh dGlvbiBzZXQuCj4gKyAqIEZyYW1lYnVmZmVyJ3MgY29va2llIGRlZmluZXMgd2hpY2ggZnJhbWVi dWZmZXIvZGJ1ZiBtdXN0IGJlCj4gKyAqIGRpc3BsYXllZCB3aGlsZSBlbmFibGluZyBkaXNwbGF5 IChhcHBseWluZyBjb25maWd1cmF0aW9uKS4KPiArICogeCwgeSwgd2lkdGggYW5kIGhlaWdodCBh cmUgYm91bmQgYnkgdGhlIGNvbm5lY3RvcidzIHJlc29sdXRpb24gYW5kIG11c3Qgbm90Cj4gKyAq IGV4Y2VlZCBpdC4KPiArICoKPiArICogeCAtIHVpbnQzMl90LCBzdGFydGluZyBwb3NpdGlvbiBp biBwaXhlbHMgYnkgWCBheGlzCj4gKyAqIHkgLSB1aW50MzJfdCwgc3RhcnRpbmcgcG9zaXRpb24g aW4gcGl4ZWxzIGJ5IFkgYXhpcwo+ICsgKiB3aWR0aCAtIHVpbnQzMl90LCB3aWR0aCBpbiBwaXhl bHMKPiArICogaGVpZ2h0IC0gdWludDMyX3QsIGhlaWdodCBpbiBwaXhlbHMKPiArICogYnBwIC0g dWludDMyX3QsIGJpdHMgcGVyIHBpeGVsCj4gKyAqLwo+ICsKPiArc3RydWN0IHhlbmRpc3BsX3Nl dF9jb25maWdfcmVxIHsKPiArICAgIHVpbnQ2NF90IGZiX2Nvb2tpZTsKPiArICAgIHVpbnQzMl90 IHg7Cj4gKyAgICB1aW50MzJfdCB5Owo+ICsgICAgdWludDMyX3Qgd2lkdGg7Cj4gKyAgICB1aW50 MzJfdCBoZWlnaHQ7Cj4gKyAgICB1aW50MzJfdCBicHA7Cj4gK307Cj4gKwo+ICsvKgo+ICsgKiBS ZXF1ZXN0IHBhZ2UgZmxpcCAtIHJlcXVlc3QgdG8gZmxpcCBhIHBhZ2UgaWRlbnRpZmllZCBieSB0 aGUgZnJhbWVidWZmZXIKPiArICogY29va2llOgo+ICsgKiAgICAgICAgIDAgICAgICAgICAgICAg ICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0Cj4gKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCBf T1BfUEdfRkxJUCAgICB8ICAgcmVzZXJ2ZWQgICAgIHwgNAo+ICsgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiAr ICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDgKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAg ICAgICAgICAgICBmYl9jb29raWUgbG93IDMyLWJpdCAgICAgICAgICAgICAgICAgICAgICAgfCAx Mgo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgIGZiX2Nv b2tpZSBoaWdoIDMyLWJpdCAgICAgICAgICAgICAgICAgICAgICB8IDE2Cj4gKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgMjAKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvfAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0Cj4gKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKwo+ICsgKi8KPiArCj4gK3N0cnVjdCB4ZW5kaXNwbF9wYWdlX2ZsaXBfcmVxIHsK PiArICAgIHVpbnQ2NF90IGZiX2Nvb2tpZTsKPiArfTsKPiArCj4gKy8qCj4gKyAqLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZXNwb25zZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KPiArICoKPiArICogQWxsIHJlc3BvbnNlIHBhY2tldHMgaGF2ZSB0aGUgc2Ft ZSBsZW5ndGggKDY0IG9jdGV0cykKPiArICoKPiArICogQWxsIHJlc3BvbnNlIHBhY2tldHMgaGF2 ZSBjb21tb24gaGVhZGVyOgo+ICsgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAg ICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0Cj4gKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Kwo+ICsgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHJl c2VydmVkICAgICAgICAgICAgIHwgNAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IDgKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMgo+ICsgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKPiArICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgNjQKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqCj4gKyAqIGlkIC0gdWludDE2X3Qs IHByaXZhdGUgZ3Vlc3QgdmFsdWUsIGVjaG9lZCBmcm9tIHJlcXVlc3QKPiArICogc3RhdHVzIC0g aW50MzJfdCwgcmVzcG9uc2Ugc3RhdHVzLCB6ZXJvIG9uIHN1Y2Nlc3MgYW5kIC1YRU5fRVhYIG9u IGZhaWx1cmUKPiArICoKPiArICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBF dmVudHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsgKgo+ICsgKiBFdmVu dHMgYXJlIHNlbnQgdmlhIGEgc2hhcmVkIHBhZ2UgYWxsb2NhdGVkIGJ5IHRoZSBmcm9udCBhbmQg cHJvcGFnYXRlZCBieQo+ICsgKiAgIGV2dC1ldmVudC1jaGFubmVsL2V2dC1yaW5nLXJlZiBYZW5T dG9yZSBlbnRyaWVzCj4gKyAqIEFsbCBldmVudCBwYWNrZXRzIGhhdmUgdGhlIHNhbWUgbGVuZ3Ro ICg2NCBvY3RldHMpCj4gKyAqIEFsbCBldmVudCBwYWNrZXRzIGhhdmUgY29tbW9uIGhlYWRlcjoK PiArICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAg ICAgICAgICAzICAgICAgICBvY3RldAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAg ICAgICAgIGlkICAgICAgICAgICAgICAgIHwgICAgICB0eXBlICAgICAgfCAgIHJlc2VydmVkICAg ICB8IDQKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4Cj4gKyAqICstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKwo+ICsgKgo+ICsgKiBpZCAtIHVpbnQxNl90LCBldmVudCBpZCwgbWF5IGJlIHVzZWQg YnkgZnJvbnQKPiArICogdHlwZSAtIHVpbnQ4X3QsIHR5cGUgb2YgdGhlIGV2ZW50Cj4gKyAqCj4g KyAqCj4gKyAqIFBhZ2UgZmxpcCBjb21wbGV0ZSBldmVudCAtIGV2ZW50IGZyb20gYmFjayB0byBm cm9udCBvbiBwYWdlIGZsaXAgY29tcGxldGVkOgo+ICsgKiAgICAgICAgIDAgICAgICAgICAgICAg ICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0Cj4gKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCAg IF9FVlRfUEdfRkxJUCB8ICAgcmVzZXJ2ZWQgICAgIHwgNAo+ICsgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiAr ICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDgKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAg ICAgICAgICAgICBmYl9jb29raWUgbG93IDMyLWJpdCAgICAgICAgICAgICAgICAgICAgICAgfCAx Mgo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgIGZiX2Nv b2tpZSBoaWdoIDMyLWJpdCAgICAgICAgICAgICAgICAgICAgICB8IDE2Cj4gKyAqICstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgMjAKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvfAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0Cj4gKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKwo+ICsgKi8KPiArCj4gK3N0cnVjdCB4ZW5kaXNwbF9wZ19mbGlwX2V2dCB7Cj4g KyAgICB1aW50NjRfdCBmYl9jb29raWU7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgeGVuZGlzcGxfcmVx IHsKPiArICAgIHVpbnQxNl90IGlkOwo+ICsgICAgdWludDhfdCBvcGVyYXRpb247Cj4gKyAgICB1 aW50OF90IHJlc2VydmVkWzVdOwo+ICsgICAgdW5pb24gewo+ICsgICAgICAgIHN0cnVjdCB4ZW5k aXNwbF9kYnVmX2NyZWF0ZV9yZXEgZGJ1Zl9jcmVhdGU7Cj4gKyAgICAgICAgc3RydWN0IHhlbmRp c3BsX2RidWZfZGVzdHJveV9yZXEgZGJ1Zl9kZXN0cm95Owo+ICsgICAgICAgIHN0cnVjdCB4ZW5k aXNwbF9mYl9hdHRhY2hfcmVxIGZiX2F0dGFjaDsKPiArICAgICAgICBzdHJ1Y3QgeGVuZGlzcGxf ZmJfZGV0YWNoX3JlcSBmYl9kZXRhY2g7Cj4gKyAgICAgICAgc3RydWN0IHhlbmRpc3BsX3NldF9j b25maWdfcmVxIHNldF9jb25maWc7Cj4gKyAgICAgICAgc3RydWN0IHhlbmRpc3BsX3BhZ2VfZmxp cF9yZXEgcGdfZmxpcDsKPiArICAgICAgICB1aW50OF90IHJlc2VydmVkWzU2XTsKPiArICAgIH0g b3A7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgeGVuZGlzcGxfcmVzcCB7Cj4gKyAgICB1aW50MTZfdCBp ZDsKPiArICAgIHVpbnQ4X3Qgb3BlcmF0aW9uOwo+ICsgICAgdWludDhfdCByZXNlcnZlZDsKPiAr ICAgIGludDMyX3Qgc3RhdHVzOwo+ICsgICAgdWludDhfdCByZXNlcnZlZDFbNTZdOwo+ICt9Owo+ ICsKPiArc3RydWN0IHhlbmRpc3BsX2V2dCB7Cj4gKyAgICB1aW50MTZfdCBpZDsKPiArICAgIHVp bnQ4X3QgdHlwZTsKPiArICAgIHVpbnQ4X3QgcmVzZXJ2ZWRbNV07Cj4gKyAgICB1bmlvbiB7Cj4g KyAgICAgICAgc3RydWN0IHhlbmRpc3BsX3BnX2ZsaXBfZXZ0IHBnX2ZsaXA7Cj4gKyAgICAgICAg dWludDhfdCByZXNlcnZlZFs1Nl07Cj4gKyAgICB9IG9wOwo+ICt9Owo+ICsKPiArREVGSU5FX1JJ TkdfVFlQRVMoeGVuX2Rpc3BsaWYsIHN0cnVjdCB4ZW5kaXNwbF9yZXEsIHN0cnVjdCB4ZW5kaXNw bF9yZXNwKTsKPiArCj4gKy8qCj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiArICogICAgICAg ICAgICAgICAgICAgICAgICBCYWNrIHRvIGZyb250IGV2ZW50cyBkZWxpdmVyeQo+ICsgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCj4gKyAqIEluIG9yZGVyIHRvIGRlbGl2ZXIgYXN5bmNocm9ub3VzIGV2 ZW50cyBmcm9tIGJhY2sgdG8gZnJvbnQgYSBzaGFyZWQgcGFnZSBpcwo+ICsgKiBhbGxvY2F0ZWQg YnkgZnJvbnQgYW5kIGl0cyBncmFudGVkIHJlZmVyZW5jZSBwcm9wYWdhdGVkIHRvIGJhY2sgdmlh Cj4gKyAqIFhlblN0b3JlIGVudHJpZXMgKGV2ZW50LVhYWCkuCj4gKyAqIFRoaXMgcGFnZSBoYXMg YSBjb21tb24gaGVhZGVyIHVzZWQgYnkgYm90aCBmcm9udCBhbmQgYmFjayB0byBzeW5jaHJvbml6 ZQo+ICsgKiBhY2Nlc3MgYW5kIGNvbnRyb2wgZXZlbnQncyByaW5nIGJ1ZmZlciwgd2hpbGUgYmFj ayBiZWluZyBhIHByb2R1Y2VyIG9mIHRoZQo+ICsgKiBldmVudHMgYW5kIGZyb250IGJlaW5nIGEg Y29uc3VtZXIuIFRoZSByZXN0IG9mIHRoZSBwYWdlIGFmdGVyIHRoZSBoZWFkZXIKPiArICogaXMg dXNlZCBmb3IgZXZlbnQgcGFja2V0cy4KPiArICoKPiArICogVXBvbiByZWNlcHRpb24gb2YgYW4g ZXZlbnQocykgZnJvbnQgbWF5IGNvbmZpcm0gaXRzIHJlY2VwdGlvbgo+ICsgKiBmb3IgZWl0aGVy IGVhY2ggZXZlbnQsIGdyb3VwIG9mIGV2ZW50cyBvciBub25lLgo+ICsgKi8KPiArCj4gK3N0cnVj dCB4ZW5kaXNwbF9ldmVudF9wYWdlIHsKPiArICAgIHVpbnQzMl90IGluX2NvbnM7Cj4gKyAgICB1 aW50MzJfdCBpbl9wcm9kOwo+ICsgICAgdWludDhfdCByZXNlcnZlZFs1Nl07Cj4gK307Cj4gKwo+ ICsjZGVmaW5lIFhFTkRJU1BMX0VWRU5UX1BBR0VfU0laRSA0MDk2Cj4gKyNkZWZpbmUgWEVORElT UExfSU5fUklOR19PRkZTIChzaXplb2Yoc3RydWN0IHhlbmRpc3BsX2V2ZW50X3BhZ2UpKQo+ICsj ZGVmaW5lIFhFTkRJU1BMX0lOX1JJTkdfU0laRSAoWEVORElTUExfRVZFTlRfUEFHRV9TSVpFIC0g WEVORElTUExfSU5fUklOR19PRkZTKQo+ICsjZGVmaW5lIFhFTkRJU1BMX0lOX1JJTkdfTEVOIChY RU5ESVNQTF9JTl9SSU5HX1NJWkUgLyBzaXplb2Yoc3RydWN0IHhlbmRpc3BsX2V2dCkpCj4gKyNk ZWZpbmUgWEVORElTUExfSU5fUklORyhwYWdlKSBcCj4gKwkoKHN0cnVjdCB4ZW5kaXNwbF9ldnQg KikoKGNoYXIgKikocGFnZSkgKyBYRU5ESVNQTF9JTl9SSU5HX09GRlMpKQo+ICsjZGVmaW5lIFhF TkRJU1BMX0lOX1JJTkdfUkVGKHBhZ2UsIGlkeCkgXAo+ICsJKFhFTkRJU1BMX0lOX1JJTkcoKHBh Z2UpKVsoaWR4KSAlIFhFTkRJU1BMX0lOX1JJTkdfTEVOXSkKPiArCj4gKyNlbmRpZiAvKiBfX1hF Tl9QVUJMSUNfSU9fRElTUExJRl9IX18gKi8KPiArCj4gKy8qCj4gKyAqIExvY2FsIHZhcmlhYmxl czoKPiArICogbW9kZTogQwo+ICsgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCj4gKyAqIGMtYmFzaWMt b2Zmc2V0OiA0Cj4gKyAqIHRhYi13aWR0aDogNAo+ICsgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwK PiArICogRW5kOgo+ICsgKi8KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3Jn Cmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK