From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 20355 invoked from network); 4 Jul 2023 13:30:19 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 4 Jul 2023 13:30:19 -0000 Content-Type: multipart/mixed; boundary="===============1161422915385693635==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_ffmpeg6_split?= To: ml@inbox.vuxu.org From: zlice Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Tue, 04 Jul 2023 15:30:19 +0200 List-Id: Message-ID: <20230704133019.Pzk_UruZ-OAz60GI3OzNOB9RspoEgfCoOharmkjEh0g@z> GitHub notification mails are now in MIME to allow UTF8. --===============1161422915385693635== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgemxpY2UgYWdhaW5zdCBtYXN0ZXIg b24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29tL3psaWNl L3ZvaWQtcGFja2FnZXMgZmZtcGVnNi1zcGxpdApodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51 eC92b2lkLXBhY2thZ2VzL3B1bGwvNDM3NjEKCmZmbXBlZzYgc3BsaXQKW2NpIHNraXBdDQoNCg0K IyMjIyBUZXN0aW5nIHRoZSBjaGFuZ2VzDQoNCi0gSSB0ZXN0ZWQgdGhlIGNoYW5nZXMgaW4gdGhp cyBQUjogKipZRVMqKg0KDQptYWluIHRlc3RpbmcgaGFzIGJlZW4gdmFhcGkgaW4gRmlyZWZveCBO aWdodGx5IGFuZCBlbmMvZGVjIGluIFNob3RjdXQgb24gSW50ZWwgQTc3MA0KDQojIyMjIE5ldyBw YWNrYWdlDQoNCi0gVGhpcyBuZXcgcGFja2FnZSBjb25mb3JtcyB0byB0aGUgW3BhY2thZ2UgcmVx dWlyZW1lbnRzXShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL2Js b2IvbWFzdGVyL0NPTlRSSUJVVElORy5tZCNwYWNrYWdlLXJlcXVpcmVtZW50cyk6ICoqWUVTKioN Cg0KIyMjIyBMb2NhbCBidWlsZCB0ZXN0aW5nDQoNCi0gSSBidWlsdCB0aGlzIFBSIGxvY2FsbHkg Zm9yIG15IG5hdGl2ZSBhcmNoaXRlY3R1cmUsICoqeDg2XzY0KioNCg0KIyMjIyBEaXNjdXNzaW9u DQoNCkNvbnRpbnVhdGlvbiBvZiBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBh Y2thZ2VzL3B1bGwvMzYzMTUNCg0KYGxpYmF2cmVzYW1wbGVgIGlzIGRlcHJlY2F0ZWQsIGJ1dCBt YXJrZWQgYXMgYSBkZXBlbmRlbmN5IHdoZW4gdHJ5aW5nIHRvIGJ1aWxkIG90aGVyIHBhY2thZ2Vz IGFuZCBpbnN0YWxsIGBmZm1wZWdgKDYpLiBJIHRoaW5rIHRoZSByaWdodCB3YXkgdG8gaGFuZGxl IHRoaXMgaXMgbWFrZSBhIG1ldGEgcGFja2FnZSBhbmQgdGhlIGFkZCB0byByZW1vdmFscz8NCg0K DQojIyMjIyBDb21taXQgbmFtaW5nIC8gbWlzYw0KDQp+fkNvbW1pdHMgYXJlICdkaXJ0eScgcmln aHQgbm93LCBydW5uaW5nIHdpdGggW2dzdHJlYW1lciAxLjIyLjEgdXBkYXRlc10oaHR0cHM6Ly9n aXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQyODYxKSBhbmQgW0ludGVs IE9wZW5DTF0oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxs LzQzMDg0KS4gVGhpcyB3aWxsIGFsc28gbWFrZSBbaW50ZWwgcGFja2FnZXMgcHJdKGh0dHBzOi8v Z2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC80MTEzMikgb2Jzb2xldGUu fn4gKHNlZSBSZXF1aXJlbWVudHMgYmVsb3cpDQoNCk1haW50YWluZXIgZm9yIHByZXZpb3VzIGZm bXBlZyg0KSB3YXMgb3JwaGFuZWQsIEkgY2FuIHB1dCBteSBuYW1lIGluIHRoZXJlIGlmIHRoYXQg bWF0dGVycywgdGhvdWdoIEkgZG9uJ3QgZXhhY3RseSBzZWUgbXlzZWxmIGtlZXBpbmcgdXAgb24g ZmZtcGVnLg0KDQpUaGlzIHVwZGF0ZXMgUVQ1IHdoaWNoIGxvb2tzIGxpa2UgaXQgaXMgdXN1YWxs eSBob3N0ZWQgYnkgSm9obm55LiBOb3Qgc3VyZSBpZiB0aGVyZSdzIGFueSByZWFzb24gdG8gc3Rh eSB0aGVyZSBvciB0aGVzZSBzb3VyY2VzIGFyZSBmaW5lLg0KDQojIyMjIyBTVElMTCBGRk1QRUc0 DQoNClRoZXNlIGFyZSBhIG1peCBvZiBlbXVsYXRvcnMsIGdhbWVzIGFuZC9vciBvbGRlciBwYWNr YWdlcy4NCg0KLSBhdHRyYWN0IChtdWx0aXBsZSBwYXRjaGVzIGluIG1hc3RlcikNCi0gYXVkYWNp dHkgKGh0dHBzOi8vZ2l0aHViLmNvbS9hdWRhY2l0eS9hdWRhY2l0eS9pc3N1ZXMvMjMwNSBhbmQg aHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9wb3J0bWVkaWEvd2lraS9wb3J0c21mLyBpcyAnYmV0 YScpDQotIGNjZXh0cmFjdG9yIChtYXN0ZXIgcGF0Y2hlcz8gbm8gcmVsZWFzZSkNCi0gdmljZQ0K LSBrb2RpDQotIG1sdCAob25seSBkZXAgbGVmdCBpcyBmbG93YmxhZGUpDQotIH5+c3luZmlnICht bHQpfn4gKHdvcmsgd2l0aCBtbHQ3LCBidW1wIHN5bmZpZ3N0dWRpbykNCi0gdHZoZWFkZW5kDQot IHNzcg0KLSBzcGVrLWFsdGVybmF0aXZlDQotIHBwc3NwcA0KLSBvbGl2ZQ0KLSBtb2MNCi0gbWVk aWFzdHJlYW1lcg0KLSBsaWJleHRyYWN0b3INCi0gaWRqYw0KLSBoZWRnZXdhcnMNCi0gfn5mZm1w ZWd0aHVtYm5haWxlcn5+IChwYXRjaGVzIGZvciBtb3ZpZWRlY29kZXIueHh4IGZpbGVzKQ0KLSB+ fmZmbXBlZ3RodW1ic35+IChsYXRlc3QgY29tcGlsZXMpDQotIGRlYWRiZWVmDQotIG9teHBsYXll cg0KLSBxdGF2IChmb3JrIGhhcyBmZm1wZWcgNSBwYXRjaCAtIGh0dHBzOi8vZ2l0aHViLmNvbS9j bWd1by9RdEFWKQ0KLSBgdmxjYCAodmxjNCB3aWxsIHN1cHBvcnQgZmZtcGVnNSwgdGhlcmUncyBh IHBhdGNoIHRvIGJ1aWxkIDMueCB3aXRoIGZmbXBlZzUgYnV0IGl0IHdpbGwgbGFjayB2YWFwaSkN Ci0gYG9zZ2AgKE9wZW5TY2VuZUdyYXBoIHBsdXMgYHhpbmUtbGliYCkNCg0KDQojIyMjIyBIQVZF IE5PVCBCVUlMVCBZRVQNCg0KLSBvbXhwbGF5ZXIgKHJwaSBvbmx5PyBmZm1wZWc0KQ0KLSBrb2Rp IChiaWcsIGJ1dCBmZm1wZWc0KQ0KDQoNCiMjIyMjIFVQREFURUQgKGZvciBmZm1wZWc2KQ0KDQot IH5+YmxlbmRlcjogdXBkYXRlIHRvIDMuNS4xfn4gfn53aWxsIGJlIHJldmJ1bXAgd2l0aH5+IGh0 dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC80Mzk5Mg0KLSB1 bnBhcGVyOiB1cGRhdGUgdG8gNy4wLjAuDQotIGd1dmN2aWV3OiB1cGRhdGUgdG8gMi4wLjguDQot IHF0NTogdXBkYXRlIHRvIDUuMTUuOA0KLSBxdDUtd2ViZW5naW5lOiB1cGRhdGUgdG8gNS4xOC4x Mw0KLSBzaGlib2tlbjI6IHJldmJ1bXAgZm9yIHF0NS4xNS44IChwYXRjaCkNCi0gcHl0aG9uMy1w eXNpZGUyOiB1cGRhdGUgdG8gNS4xNS44IChwYXRjaCkNCg0KDQojIyMjIyBSZXF1aXJlbWVudHMN Cg0KLSB+fltnc3RyZWFtZXIgMS4yMi4yXShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92 b2lkLXBhY2thZ2VzL3B1bGwvNDI4NjEpfn4gLSBhIGZldyBwYWNrYWdlcyB1c2UgZmZtcGVnLWRl dmVsIGFuZCByZXF1aXJlIGEgcmV2YnVtcA0KDQotIFtJbnRlbCBQYWNrYWdlc10oaHR0cHM6Ly9n aXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQxMTMyKSAtIGZmbXBlZzQg dXNlcyBkaWZmZXJlbnQgbGlicmFyaWVzIHRoYW4gNiAobGlibWZ4IC8gSW50ZWwtTWVkaWFTREsg dnMgb25seSBvbmVWUEwgdGhhdCBJbnRlbCBpcyBtb3ZpbmcgdG8pLCBib3RoIGFyZSBpbmNsdWRl ZCBoZXJlDQoNCi0gfn5bc2hvdGN1dCAyMy4wNS4xNF0oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQt bGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQ0MjYwKX5+CgpBIHBhdGNoIGZpbGUgZnJvbSBodHRw czovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvNDM3NjEucGF0Y2gg aXMgYXR0YWNoZWQ= --===============1161422915385693635== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-ffmpeg6-split-43761.patch" RnJvbSA4NTlmZTRhODg0ZjIxM2Y0ZjhlN2M3YmZkM2UzYmVhNDEzYmM2ODAyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDE5OjU1OjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDEvMTEzXSBmZm1w ZWc6IHVwZGF0ZSB0byA2LjAuCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDI2ICsrKysrLS0tCiBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVj LnBhdGNoICAgICAgICAgICAgfCA2MCAtLS0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vcGF0Y2hlcy9h cm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCAgICAgfCAxOCAtLS0tLS0KIC4uLi93b3JrYXJv dW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggICB8IDI4IC0tLS0tLS0tLQogc3JjcGtn cy9mZm1wZWcvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgIHwgNDEgKysrKystLS0tLS0t LQogNSBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCAxNDAgZGVsZXRpb25zKC0pCiBk ZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWcvZmlsZXMvYWx0aXZlYy5wYXRjaAogZGVs ZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRpbmct cG9pbnQucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL3dv cmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaAoKZGlmZiAtLWdpdCBhL2NvbW1v bi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IDRlNmE1YTY2M2ZhMDIuLmE3NzM0NmNjZTNl OWEgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9zaGxpYnMKKysrIGIvY29tbW9uL3NobGlicwpAQCAtMzg3 LDE1ICszODcsMjMgQEAgbGliaWQzdGFnLnNvLjAgbGliaWQzdGFnLTAuMTUuMWJfMQogbGliZ2lm LnNvLjcgZ2lmbGliLTUuMS4wXzEKIGxpYkltbGliMi5zby4xIGltbGliMi0xLjQuMl8xCiBsaWJt cDNsYW1lLnNvLjAgbGFtZS0zLjk4LjJfMQotbGliYXZkZXZpY2Uuc28uNTggbGliYXZkZXZpY2Ut NC4wXzEKLWxpYmF2Zm9ybWF0LnNvLjU4IGxpYmF2Zm9ybWF0LTQuMF8xCi1saWJzd3NjYWxlLnNv LjUgbGlic3dzY2FsZS00LjBfMQotbGlic3dyZXNhbXBsZS5zby4zIGxpYnN3cmVzYW1wbGUtNC4w XzEKLWxpYmF2cmVzYW1wbGUuc28uNCBsaWJhdnJlc2FtcGxlLTQuMF8xCi1saWJwb3N0cHJvYy5z by41NSBsaWJwb3N0cHJvYy00LjBfMQotbGliYXZjb2RlYy5zby41OCBsaWJhdmNvZGVjLTQuMF8x Ci1saWJhdnV0aWwuc28uNTYgbGliYXZ1dGlsLTQuMF8xCi1saWJhdmZpbHRlci5zby43IGxpYmF2 ZmlsdGVyLTQuMF8xCitsaWJhdmRldmljZS5zby42MCBsaWJhdmRldmljZS02LjBfMQorbGliYXZm b3JtYXQuc28uNjAgbGliYXZmb3JtYXQtNi4wXzEKK2xpYnN3c2NhbGUuc28uNyBsaWJzd3NjYWxl LTYuMF8xCitsaWJzd3Jlc2FtcGxlLnNvLjQgbGlic3dyZXNhbXBsZS02LjBfMQorbGlicG9zdHBy b2Muc28uNTcgbGlicG9zdHByb2MtNi4wXzEKK2xpYmF2Y29kZWMuc28uNjAgbGliYXZjb2RlYy02 LjBfMQorbGliYXZ1dGlsLnNvLjU4IGxpYmF2dXRpbC02LjBfMQorbGliYXZmaWx0ZXIuc28uOSBs aWJhdmZpbHRlci02LjBfMQorbGliYXZkZXZpY2Uuc28uNTggbGliYXZkZXZpY2U0LTQuMF8xCits aWJhdmZvcm1hdC5zby41OCBsaWJhdmZvcm1hdDQtNC4wXzEKK2xpYnN3c2NhbGUuc28uNSBsaWJz d3NjYWxlNC00LjBfMQorbGlic3dyZXNhbXBsZS5zby4zIGxpYnN3cmVzYW1wbGU0LTQuMF8xCits aWJhdnJlc2FtcGxlLnNvLjQgbGliYXZyZXNhbXBsZTQtNC4wXzEKK2xpYnBvc3Rwcm9jLnNvLjU1 IGxpYnBvc3Rwcm9jNC00LjBfMQorbGliYXZjb2RlYy5zby41OCBsaWJhdmNvZGVjNC00LjBfMQor bGliYXZ1dGlsLnNvLjU2IGxpYmF2dXRpbDQtNC4wXzEKK2xpYmF2ZmlsdGVyLnNvLjcgbGliYXZm aWx0ZXI0LTQuMF8xCiBsaWJTREwtMS4yLnNvLjAgU0RMLTEuMi4xNF8xCiBsaWJTRExfaW1hZ2Ut MS4yLnNvLjAgU0RMX2ltYWdlLTEuMi4xMF8xCiBsaWJ4MjY0LnNvLjE1NyB4MjY0LTIwMTkwNTA3 LjIyNDVfMQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWcvZmlsZXMvYWx0aXZlYy5wYXRjaCBi L3NyY3BrZ3MvZmZtcGVnL2ZpbGVzL2FsdGl2ZWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDljNTcyMDA0NjMzMjAuLjAwMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9mZm1w ZWcvZmlsZXMvYWx0aXZlYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLXJl dmVydCBzb21lIGFsdGl2ZWMgc3BlY2lmaWMgY2hhbmdlIG9uIGFsbCBwcGMqIGV4Y2VwdCBwcGM2 NGxlKgotCi1xNjY6ICJXZSBzaG91bGQgYWxzbyB0aHJvdyBpbiBhIHJldmVydCBvZiBGRm1wZWcv RkZtcGVnQDNhNTU3YzUgYnV0IG9ubHkKLWNvbmRpdGlvbmFsbHksIGZvciBwcGMqIGJ1dCBub3Qg cHBjNjRsZSogKHRoZSBuZXcgY29kZSBpcyB2YWxpZCBmb3IKLVBPV0VSOCBWU1ggd2hpY2ggTEUg dGFyZ2V0cyBhcyBhIGJhc2VsaW5lIGJ1dCBub3QgQkUpIgotCi0KLVRoaXMgcmV2ZXJ0cyBjb21t aXQgM2E1NTdjNWQ4OGI3YjE1YjU5NTRiYTI3NDNmZWJiMDU1NTQ5YjUzNi4KLS0tLQotIGxpYnN3 c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jIHwgMjQgKysrKysrKysrKysrKysrKysrKystLS0t Ci0gMSBmaWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRp ZmYgLS1naXQgYS9saWJzd3NjYWxlL3BwYy95dXYycmdiX2FsdGl2ZWMuYyBiL2xpYnN3c2NhbGUv cHBjL3l1djJyZ2JfYWx0aXZlYy5jCi1pbmRleCA1MzY1NDUyOTNkLi5jMWUyODUyYWRiIDEwMDY0 NAotLS0tIGEvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMKLSsrKyBiL2xpYnN3c2Nh bGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jCi1AQCAtMzA1LDYgKzMwNSw5IEBAIHN0YXRpYyBpbnQg YWx0aXZlY18gIyMgbmFtZShTd3NDb250ZXh0ICpjLCBjb25zdCB1bnNpZ25lZCBjaGFyICoqaW4s ICAgICAgICAgIFwKLSAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBSMSwgRzEsIEIxOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIHZlY3RvciB1bnNpZ25l ZCBjaGFyIFIsIEcsIEI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgY29uc3QgdmVjdG9yIHVuc2lnbmVk IGNoYXIgKnkxaXZQLCAqeTJpdlAsICp1aXZQLCAqdml2UDsgICAgICAgICAgICAgICAgICBcCi0r ICAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIGFsaWduX3Blcm07ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgdmVj dG9yIHNpZ25lZCBzaG9ydCBsQ1kgICAgICAgPSBjLT5DWTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0gICAgIHZlY3RvciBzaWduZWQgc2hvcnQgbE9ZICAgICAgID0gYy0+ T1k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB2ZWN0b3Igc2ln bmVkIHNob3J0IGxDUlYgICAgICA9IGMtPkNSVjsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLUBAIC0zMzUsMTMgKzMzOCwyNiBAQCBzdGF0aWMgaW50IGFsdGl2ZWNfICMjIG5h bWUoU3dzQ29udGV4dCAqYywgY29uc3QgdW5zaWduZWQgY2hhciAqKmluLCAgICAgICAgICBcCi0g ICAgICAgICB2ZWNfZHN0c3Qob3V0ZSwgKDB4MDIwMDAwMDIgfCAoKCh3ICogMyArIDMyKSAvIDMy KSA8PCAxNikpLCAxKTsgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg IGZvciAoaiA9IDA7IGogPCB3IC8gMTY7IGorKykgeyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0tICAgICAgICAgICAgeTAgPSB2ZWNfeGwoMCwgeTFpKTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIHkx aXZQID0gKGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHkxaTsgICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgICAgICAgICAgICB5Mml2UCA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hh ciAqKSB5Mmk7ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgdWl2UCAgPSAo Y29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgdWk7ICAgICAgICAgICAgICAgICAgICAgICAg XAotKyAgICAgICAgICAgIHZpdlAgID0gKGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHZp OyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAg ICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHkxaSk7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIHkwID0gKHZlY3RvciB1bnNpZ25lZCBj aGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAg ICAgICAgICAgICB2ZWNfcGVybSh5MWl2UFswXSwgeTFpdlBbMV0sIGFsaWduX3Blcm0pOyAgICAg ICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgICAgIHkxID0g dmVjX3hsKDAsIHkyaSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSsgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgeTJpKTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgeTEgPSAodmVjdG9y IHVuc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot KyAgICAgICAgICAgICAgICAgICAgIHZlY19wZXJtKHkyaXZQWzBdLCB5Mml2UFsxXSwgYWxpZ25f cGVybSk7ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAg ICAgICAgdSA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpIHZlY194bCgwLCB1aSk7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB1 aSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB1 ID0gKHZlY3RvciBzaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgICB2ZWNfcGVybSh1aXZQWzBdLCB1aXZQWzFd LCBhbGlnbl9wZXJtKTsgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLS0gICAgICAgICAgICB2ID0gKHZlY3RvciBzaWduZWQgY2hhcikgdmVjX3hsKDAsIHZpKTsg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgYWxpZ25fcGVybSA9IHZl Y19sdnNsKDAsIHZpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAg ICAgICAgICAgIHYgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgIHZlY19wZXJtKHZpdlBb MF0sIHZpdlBbMV0sIGFsaWduX3Blcm0pOyAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotICAgICAgICAgICAgIHUgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAg ICAgIHZlY19zdWIodSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0tLSAKLTIuMjcuMAotCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZy9wYXRjaGVz L2FybXY1dGVsLWZsb2F0aW5nLXBvaW50LnBhdGNoIGIvc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy9h cm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggOWE1NTE3OGM3NGYwZi4uMDAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2ZmbXBlZy9wYXRj aGVzL2FybXY1dGVsLWZsb2F0aW5nLXBvaW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTgg KzAsMCBAQAotLS0tIGEvbGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3LTEwLTI2IDIxOjAz OjAzLjAwMDAwMDAwMCArMDIwMAotKysrIGIvbGliYXZmaWx0ZXIvdmZfZHJhd3RleHQuYwkyMDE3 LTExLTIxIDExOjA2OjQ5LjYwMjI4NDQyMiArMDEwMAotQEAgLTM5LDYgKzM5LDE1IEBACi0gI2Vu ZGlmCi0gI2luY2x1ZGUgPGZlbnYuaD4KLSAKLSsjaWYgKEZFX0FMTF9FWENFUFQgPT0gMCkKLSsv KiBFLmcuIEFSTSBzb2Z0IGZsb2F0IGRvZXMgbm90IGRlZmluZSB0aGVzZSAqLwotKyNkZWZpbmUg RkVfSU5WQUxJRCAgICAwCi0rI2RlZmluZSBGRV9ESVZCWVpFUk8gIDAKLSsjZGVmaW5lIEZFX09W RVJGTE9XICAgMAotKyNkZWZpbmUgRkVfVU5ERVJGTE9XICAwCi0rI2RlZmluZSBGRV9JTkVYQUNU ICAgIDAKLSsjZW5kaWYKLSsKLSAjaWYgQ09ORklHX0xJQkZPTlRDT05GSUcKLSAjaW5jbHVkZSA8 Zm9udGNvbmZpZy9mb250Y29uZmlnLmg+Ci0gI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Zm bXBlZy9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaCBiL3Ny Y3BrZ3MvZmZtcGVnL3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGUzZjY4YTQxNWI4Li4wMDAwMDAw MDAwMDAwCi0tLSBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRl b24tdmFhcGktYnVnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSA4 MTFkMjkwODQ0MjA2ZmM3M2RjMzljM2U1YjY3ZDVkODk1YmFlZGY4IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQotRnJvbTogUmFpbmVyIEhvY2hlY2tlciA8ZmVybmV0bWVudGFAb25saW5lLmRlPgot RGF0ZTogU2F0LCAyNiBKYW4gMjAxOSAxOTo0ODozNSArMDEwMAotU3ViamVjdDogW1BBVENIXSBh dmNvZGVjL3ZhYXBpX2gyNjQ6IHNraXAgZGVjb2RlIGlmIHBpYyBoYXMgbm8gc2xpY2VzCi0KLVRo aXMgZml4ZXMgLyB3b3JrYXJvdW5kcyBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3df YnVnLmNnaT9pZD0xMDUzNjguCi1JdCB3YXMgaGl0IGZyZXF1ZW50bHkgd2hlbiB3YXRjaGluZyBo MjY0IGNoYW5uZWxzIHJlY2VpdmVkIHZpYSBEVkItWC4KLUNvcnJlc3BvbmRpbmcga29kaSBidWc6 IGh0dHBzOi8vZ2l0aHViLmNvbS94Ym1jL3hibWMvaXNzdWVzLzE1NzA0Ci0tLS0KLSBsaWJhdmNv ZGVjL3ZhYXBpX2gyNjQuYyB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25z KCspCi0KLWRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3ZhYXBpX2gyNjQuYyBiL2xpYmF2Y29kZWMv dmFhcGlfaDI2NC5jCi1pbmRleCA1ODU0NTg3YTI1NS4uZjEyZmRjNDU3YTQgMTAwNjQ0Ci0tLS0g YS9saWJhdmNvZGVjL3ZhYXBpX2gyNjQuYwotKysrIGIvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMK LUBAIC0zMTcsNiArMzE3LDExIEBAIHN0YXRpYyBpbnQgdmFhcGlfaDI2NF9lbmRfZnJhbWUoQVZD b2RlY0NvbnRleHQgKmF2Y3R4KQotICAgICBIMjY0U2xpY2VDb250ZXh0ICpzbCA9ICZoLT5zbGlj ZV9jdHhbMF07Ci0gICAgIGludCByZXQ7Ci0gCi0rICAgIGlmIChwaWMtPm5iX3NsaWNlcyA9PSAw KSB7Ci0rICAgICAgICByZXQgPSBBVkVSUk9SX0lOVkFMSUREQVRBOwotKyAgICAgICAgZ290byBm aW5pc2g7Ci0rICAgIH0KLSsKLSAgICAgcmV0ID0gZmZfdmFhcGlfZGVjb2RlX2lzc3VlKGF2Y3R4 LCBwaWMpOwotICAgICBpZiAocmV0IDwgMCkKLSAgICAgICAgIGdvdG8gZmluaXNoOwpkaWZmIC0t Z2l0IGEvc3JjcGtncy9mZm1wZWcvdGVtcGxhdGUgYi9zcmNwa2dzL2ZmbXBlZy90ZW1wbGF0ZQpp bmRleCBhYTA1OGFhYjljYTlmLi5hMmM1ZDg3NTBkZDZiIDEwMDY0NAotLS0gYS9zcmNwa2dzL2Zm bXBlZy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2ZmbXBlZy90ZW1wbGF0ZQpAQCAtMSwxNSArMSwx NCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZmZtcGVnJwogIyBhdWRhY2l0eSBhbHNvIG5lZWRz IHRvIGJlIGJ1bXBlZCB3aGVuIGEgbmV3IGZmbXBlZyB2ZXJzaW9uIGJ1bXBzIGxpYmF2Zm9ybWF0 J3Mgc29uYW1lIQotcGtnbmFtZT1mZm1wZWcKLXZlcnNpb249NC40LjQKLXJldmlzaW9uPTIKK3Zl cnNpb249Ni4wCityZXZpc2lvbj0xCiBzaG9ydF9kZXNjPSJEZWNvZGluZywgZW5jb2RpbmcgYW5k IHN0cmVhbWluZyBzb2Z0d2FyZSIKIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxp bnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8v d3d3LmZmbXBlZy5vcmciCiBjaGFuZ2Vsb2c9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50 LmNvbS9GRm1wZWcvRkZtcGVnL21hc3Rlci9DaGFuZ2Vsb2ciCiBkaXN0ZmlsZXM9Imh0dHBzOi8v d3d3LmZmbXBlZy5vcmcvcmVsZWFzZXMvZmZtcGVnLSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tz dW09ZTgwYjM4MGQ1OTVjODA5MDYwZjY2Zjk2YTVkODQ5NTExZWY0YTc2YTI2Yjc2ZWFjZjU3Nzhi OTRjMzU3MDMwOQorY2hlY2tzdW09NTdiZTg3YzIyZDliNDljMTEyYjZkMjRiYzY3ZDQyNTA4NjYw ZTZiNzE4YjNkYjg5YzQ0ZTQ3ZTI4OTEzNzA4MgogCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25m aWcgcGVybCIKIG1ha2VkZXBlbmRzPSJ6bGliLWRldmVsIGJ6aXAyLWRldmVsIGZyZWV0eXBlLWRl dmVsIGFsc2EtbGliLWRldmVsIGxpYlhmaXhlcy1kZXZlbApAQCAtMjYsMTIgKzI1LDEzIEBAIG1h a2VkZXBlbmRzPSJ6bGliLWRldmVsIGJ6aXAyLWRldmVsIGZyZWV0eXBlLWRldmVsIGFsc2EtbGli LWRldmVsIGxpYlhmaXhlcy1kZXZlCiAgJCh2b3B0X2lmIHdlYnAgbGlid2VicC1kZXZlbCkgJCh2 b3B0X2lmIHNvZmEgbGlibXlzb2ZhLWRldmVsKQogICQodm9wdF9pZiBkcm0gbGliZHJtLWRldmVs KSAkKHZvcHRfaWYgc3Z0YXYxIGxpYnN2dC1hdjEtZGV2ZWwpCiAgJCh2b3B0X2lmIHNydCBzcnQt ZGV2ZWwpICQodm9wdF9pZiByaXN0IGxpYnJpc3QtZGV2ZWwpCi0gJCh2b3B0X2lmIHZ1bGthbiAn dnVsa2FuLWxvYWRlciBWdWxrYW4tSGVhZGVycycpCisgJCh2b3B0X2lmIHZ1bGthbiAndnVsa2Fu LWxvYWRlciBWdWxrYW4tSGVhZGVycyBWdWxrYW4tVG9vbHMgVnVsa2FuLVZhbGlkYXRpb25MYXll cnMnKQorICQodm9wdF9pZiBvbmV2cGwgJ29uZXZwbCBvbmV2cGwtZGV2ZWwnKQogICQodm9wdF9p ZiBudmVuYyBudi1jb2RlYy1oZWFkZXJzKSAkKHZvcHRfaWYgbnZkZWMgbnYtY29kZWMtaGVhZGVy cykiCiBkZXBlbmRzPSJmZnBsYXk+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCiAKIGJ1aWxkX29w dGlvbnM9IngyNjUgdjRsMiB2YWFwaSB2ZHBhdSB2cHggZmRrX2FhYyBhb20gbnZlbmMgc25kaW8g cHVsc2VhdWRpbwotIGRhdjFkIHppbWcgd2VicCBzb2ZhIHZ1bGthbiBkcm0gc3Z0YXYxIHNydCBy aXN0IG52ZGVjIgorIGRhdjFkIHppbWcgd2VicCBzb2ZhIHZ1bGthbiBkcm0gc3Z0YXYxIHNydCBy aXN0IG52ZGVjIG9uZXZwbCIKIGJ1aWxkX29wdGlvbnNfZGVmYXVsdD0ieDI2NSB2NGwyIHZweCBh b20gc25kaW8gcHVsc2VhdWRpbyBkYXYxZCB3ZWJwIHZ1bGthbiBkcm0gc3J0IHJpc3QiCiBkZXNj X29wdGlvbl9zcnQ9IkVuYWJsZSBzdXBwb3J0IGZvciBTUlQgKFNlY3VyZSwgUmVsaWFibGUsIFRy YW5zcG9ydCkiCiBkZXNjX29wdGlvbl9yaXN0PSJFbmFibGUgc3VwcG9ydCBmb3IgUklTVCAoUmVs aWFibGUgSW50ZXJuZXQgU3RyZWFtIFRyYW5zcG9ydCkiCkBAIC0zOSwxMCArMzksOCBAQCBkZXNj X29wdGlvbl9zb2ZhPSJFbmFibGUgc3VwcG9ydCBmb3IgQUVTIFNPRkEiCiBkZXNjX29wdGlvbl93 ZWJwPSJFbmFibGUgc3VwcG9ydCBmb3IgV2ViUCIKIAogY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJ TkUiIGluCi0JaTY4Nip8eDg2XzY0KikKLQkJaG9zdG1ha2VkZXBlbmRzKz0iIG5hc20iCi0JCWJ1 aWxkX29wdGlvbnNfZGVmYXVsdCs9IiB2YWFwaSB2ZHBhdSBudmVuYyBudmRlYyIKLQkJOzsKKwlp Njg2KikgYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1IG52ZW5jIG52ZGVjIjs7 CisJeDg2XzY0KikgYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1IG52ZW5jIG52 ZGVjIG9uZXZwbCI7OwogCXBwYzY0KikgYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZk cGF1Ijs7CiAJbWlwcyopIENGTEFHUz0iLW1uYW49bGVnYWN5Ijs7CiBlc2FjCkBAIC0xMTksMTgg KzExNywxOSBAQCBkb19jb25maWd1cmUoKSB7CiAJCSQodm9wdF9lbmFibGUgeDI2NSBsaWJ4MjY1 KSBcCiAJCSQodm9wdF9lbmFibGUgdjRsMiBsaWJ2NGwyKSBcCiAJCSQodm9wdF9lbmFibGUgYW9t IGxpYmFvbSkgJCh2b3B0X2VuYWJsZSB2YWFwaSkgJCh2b3B0X2VuYWJsZSB2ZHBhdSkgXAotCQkt LWVuYWJsZS1saWJiczJiIC0tZW5hYmxlLWF2cmVzYW1wbGUgLS1lbmFibGUtbGlidmlkc3RhYiBc CisJCS0tZW5hYmxlLWxpYmJzMmIgLS1lbmFibGUtbGlidmlkc3RhYiBcCiAJCSQodm9wdF9lbmFi bGUgZGF2MWQgbGliZGF2MWQpIFwKIAkJJCh2b3B0X2VuYWJsZSB6aW1nIGxpYnppbWcpIFwKIAkJ JCh2b3B0X2VuYWJsZSB3ZWJwIGxpYndlYnApIFwKIAkJJCh2b3B0X2VuYWJsZSBzb2ZhIGxpYm15 c29mYSkgXAogCQkkKHZvcHRfZW5hYmxlIHZ1bGthbikgXAorCQkkKHZvcHRfZW5hYmxlIG9uZXZw bCBsaWJ2cGwpIFwKIAkJJCh2b3B0X2VuYWJsZSBkcm0gbGliZHJtKSBcCiAJCSQodm9wdF9lbmFi bGUgc3Z0YXYxIGxpYnN2dGF2MSkgXAogCQkkKHZvcHRfZW5hYmxlIHNydCBsaWJzcnQpIFwKIAkJ JCh2b3B0X2VuYWJsZSByaXN0IGxpYnJpc3QpIFwKLQkJJCh2b3B0X2lmIG52ZW5jICctLWVuYWJs ZS1udmVuYycpIFwKLQkJJCh2b3B0X2lmIG52ZGVjICctLWVuYWJsZS1udmRlYycpCisJCSQodm9w dF9lbmFibGUgbnZlbmMgbnZlbmMpIFwKKwkJJCh2b3B0X2VuYWJsZSBudmRlYyBudmRlYykKIH0K IAogZG9fYnVpbGQoKSB7CkBAIC0xNTcsMTAgKzE1Niw4IEBAIGxpYmF2ZGV2aWNlX3BhY2thZ2Uo KSB7CiB9CiAKIGxpYmF2cmVzYW1wbGVfcGFja2FnZSgpIHsKLQlzaG9ydF9kZXNjPSJGRm1wZWcg YXVkaW8gcmVzYW1wbGluZyBsaWJyYXJ5IgotCXBrZ19pbnN0YWxsKCkgewotCQl2bW92ZSAidXNy L2xpYi9saWJhdnJlc2FtcGxlLnNvLioiCi0JfQorCXNob3J0X2Rlc2M9IlBhY2thZ2UgZGVwcmVj YXRlZCwgcmVtb3ZhbCBuZWVkZWQiCisJYnVpbGRfc3R5bGU9bWV0YQogfQogCiBsaWJhdmZvcm1h dF9wYWNrYWdlKCkgewpAQCAtMjE0LDE1ICsyMTEsOSBAQCBmZm1wZWctZGV2ZWxfcGFja2FnZSgp IHsKIAkJbGliYXZmaWx0ZXI+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KIAkJbGlicG9zdHByb2M+ PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KIAkJbGlic3dzY2FsZT49JHt2ZXJzaW9ufV8ke3Jldmlz aW9ufQotCQlsaWJzd3Jlc2FtcGxlPj0ke3ZlcnNpb259XyR7cmV2aXNpb259Ci0JCWxpYmF2cmVz YW1wbGU+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCisJCWxpYnN3cmVzYW1wbGU+PSR7dmVyc2lv bn1fJHtyZXZpc2lvbn0iCiAJc2hvcnRfZGVzYys9IiAtIGRldmVsb3BtZW50IGZpbGVzIgotCi0J aWYgWyAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiID0gImk2ODYiIF07IHRoZW4KLQkJIyAvdXNyL2Jp bi9zdHJpcDogZXJyb3I6IHRoZSBpbnB1dCBmaWxlICcvZGVzdGRpci8vZmZtcGVnLWRldmVsLTQu NC40L3Vzci9saWIvbGliYXZmaWx0ZXIuYSh2Zl9hdGFkZW5vaXNlLm8pJyBoYXMgbm8gc2VjdGlv bnMKLQkJbm9zdHJpcF9maWxlcz0iL3Vzci9saWIvbGliYXZmaWx0ZXIuYSIKLQlmaQotCisJY29u ZmxpY3RzPSJmZm1wZWc0LWRldmVsIgogCXBrZ19pbnN0YWxsKCkgewogCQl2bW92ZSB1c3IvaW5j bHVkZQogCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZwoKRnJvbSA5M2MyYTA4NDUzNjAxNmNjNzIz NjQxNmJlYmVhY2JiMGIwMDZiNTYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDE5OjU2OjIyIC0w NDAwClN1YmplY3Q6IFtQQVRDSCAwMDIvMTEzXSBOZXcgcGFja2FnZTogZmZtcGVnNC00LjQuNC4K Ci0tLQogc3JjcGtncy9mZm1wZWc0LWRldmVsICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx ICsKIHNyY3BrZ3MvZmZtcGVnNC9maWxlcy9hbHRpdmVjLnBhdGNoICAgICAgICAgICB8ICA2MCAr KysrKwogLi4uL3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2ggICAgIHwgIDE4 ICsrCiAuLi5oLWxpYmF2Y29kZWMtbGlic3Z0YXYxLXRlbl9iaXRfZm9ybWF0LmRpZmYgfCAgNDAg KysrCiAuLi4vd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNoICAgfCAgMjgg KysKIHNyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICB8IDI0MCAr KysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvbGliYXZjb2RlYzQgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYmF2ZGV2aWNlNCAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJhdmZpbHRlcjQgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAxICsKIHNyY3BrZ3MvbGliYXZmb3JtYXQ0ICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMSArCiBzcmNwa2dzL2xpYmF2cmVzYW1wbGU0ICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDEgKwogc3JjcGtncy9saWJhdnV0aWw0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAxICsKIHNyY3BrZ3MvbGlicG9zdHByb2M0ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MSArCiBzcmNwa2dzL2xpYnN3cmVzYW1wbGU0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjcGtncy9saWJzd3NjYWxlNCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsK IDE1IGZpbGVzIGNoYW5nZWQsIDM5NiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMjAwMDAg c3JjcGtncy9mZm1wZWc0LWRldmVsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWc0 L2ZpbGVzL2FsdGl2ZWMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZzQv cGF0Y2hlcy9hcm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL3BhdGNoLWxpYmF2Y29kZWMtbGlic3Z0YXYxLXRlbl9i aXRfZm9ybWF0LmRpZmYKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZzQvcGF0Y2hl cy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2gKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL2ZmbXBlZzQvdGVtcGxhdGUKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dz L2xpYmF2Y29kZWM0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdmRldmljZTQKIGNy ZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2xpYmF2ZmlsdGVyNAogY3JlYXRlIG1vZGUgMTIwMDAw IHNyY3BrZ3MvbGliYXZmb3JtYXQ0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdnJl c2FtcGxlNAogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGliYXZ1dGlsNAogY3JlYXRlIG1v ZGUgMTIwMDAwIHNyY3BrZ3MvbGlicG9zdHByb2M0CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtn cy9saWJzd3Jlc2FtcGxlNAogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGlic3dzY2FsZTQK CmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZzQtZGV2ZWwgYi9zcmNwa2dzL2ZmbXBlZzQtZGV2 ZWwKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZi ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVnNC1kZXZlbApAQCAtMCwwICsxIEBA CitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9mZm1wZWc0L2ZpbGVzL2FsdGl2ZWMucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZzQvZmlsZXMvYWx0 aXZlYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi45YzU3 MjAwNDYzMzIwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1wZWc0L2ZpbGVzL2FsdGl2 ZWMucGF0Y2gKQEAgLTAsMCArMSw2MCBAQAorcmV2ZXJ0IHNvbWUgYWx0aXZlYyBzcGVjaWZpYyBj aGFuZ2Ugb24gYWxsIHBwYyogZXhjZXB0IHBwYzY0bGUqCisKK3E2NjogIldlIHNob3VsZCBhbHNv IHRocm93IGluIGEgcmV2ZXJ0IG9mIEZGbXBlZy9GRm1wZWdAM2E1NTdjNSBidXQgb25seQorY29u ZGl0aW9uYWxseSwgZm9yIHBwYyogYnV0IG5vdCBwcGM2NGxlKiAodGhlIG5ldyBjb2RlIGlzIHZh bGlkIGZvcgorUE9XRVI4IFZTWCB3aGljaCBMRSB0YXJnZXRzIGFzIGEgYmFzZWxpbmUgYnV0IG5v dCBCRSkiCisKKworVGhpcyByZXZlcnRzIGNvbW1pdCAzYTU1N2M1ZDg4YjdiMTViNTk1NGJhMjc0 M2ZlYmIwNTU1NDliNTM2LgorLS0tCisgbGlic3dzY2FsZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMg fCAyNCArKysrKysrKysrKysrKysrKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0 aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYnN3c2NhbGUvcHBjL3l1 djJyZ2JfYWx0aXZlYy5jIGIvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMKK2luZGV4 IDUzNjU0NTI5M2QuLmMxZTI4NTJhZGIgMTAwNjQ0CistLS0gYS9saWJzd3NjYWxlL3BwYy95dXYy cmdiX2FsdGl2ZWMuYworKysrIGIvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMKK0BA IC0zMDUsNiArMzA1LDkgQEAgc3RhdGljIGludCBhbHRpdmVjXyAjIyBuYW1lKFN3c0NvbnRleHQg KmMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbiwgICAgICAgICAgXAorICAgICB2ZWN0b3Igc2ln bmVkIHNob3J0IFIxLCBHMSwgQjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgUiwgRywgQjsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorKyAgICBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqeTFpdlAsICp5Mml2UCwgKnVpdlAs ICp2aXZQOyAgICAgICAgICAgICAgICAgIFwKKysgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgYWxp Z25fcGVybTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IGxDWSAgICAgICA9 IGMtPkNZOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgdmVjdG9y IHNpZ25lZCBzaG9ydCBsT1kgICAgICAgPSBjLT5PWTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisgICAgIHZlY3RvciBzaWduZWQgc2hvcnQgbENSViAgICAgID0gYy0+Q1JW OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorQEAgLTMzNSwxMyArMzM4LDI2 IEBAIHN0YXRpYyBpbnQgYWx0aXZlY18gIyMgbmFtZShTd3NDb250ZXh0ICpjLCBjb25zdCB1bnNp Z25lZCBjaGFyICoqaW4sICAgICAgICAgIFwKKyAgICAgICAgIHZlY19kc3RzdChvdXRlLCAoMHgw MjAwMDAwMiB8ICgoKHcgKiAzICsgMzIpIC8gMzIpIDw8IDE2KSksIDEpOyAgICAgICBcCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgZm9yIChqID0gMDsgaiA8IHcgLyAxNjsgaisr KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAg ICB5MCA9IHZlY194bCgwLCB5MWkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisrICAgICAgICAgICAgeTFpdlAgPSAoY29uc3QgdmVjdG9yIHVuc2lnbmVk IGNoYXIgKikgeTFpOyAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHkyaXZQ ID0gKGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHkyaTsgICAgICAgICAgICAgICAgICAg ICAgIFwKKysgICAgICAgICAgICB1aXZQICA9IChjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAq KSB1aTsgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgdml2UCAgPSAoY29u c3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgdmk7ICAgICAgICAgICAgICAgICAgICAgICAgXAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2 c2woMCwgeTFpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAg ICAgICAgeTAgPSAodmVjdG9yIHVuc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgIHZlY19wZXJtKHkxaXZQWzBd LCB5MWl2UFsxXSwgYWxpZ25fcGVybSk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCistICAgICAgICAgICAgeTEgPSB2ZWNfeGwoMCwgeTJpKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIGFsaWduX3Bl cm0gPSB2ZWNfbHZzbCgwLCB5MmkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKysgICAgICAgICAgICB5MSA9ICh2ZWN0b3IgdW5zaWduZWQgY2hhcikgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAgdmVjX3Bl cm0oeTJpdlBbMF0sIHkyaXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAgICAgICAgICAgXAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICB1ID0gKHZlY3RvciBzaWduZWQgY2hh cikgdmVjX3hsKDAsIHVpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAg ICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHVpKTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHUgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAg ICAgIHZlY19wZXJtKHVpdlBbMF0sIHVpdlBbMV0sIGFsaWduX3Blcm0pOyAgICAgICAgICAgICAg ICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgICAgIHYgPSAodmVjdG9y IHNpZ25lZCBjaGFyKSB2ZWNfeGwoMCwgdmkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KysgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgdmkpOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgdiA9ICh2ZWN0b3Igc2lnbmVk IGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAg ICAgICAgICAgICAgICAgdmVjX3Blcm0odml2UFswXSwgdml2UFsxXSwgYWxpZ25fcGVybSk7ICAg ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAg dSA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgdmVjX3N1Yih1LCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0tIAorMi4yNy4wCisKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL2FybXY1dGVsLWZsb2F0aW5nLXBvaW50LnBh dGNoIGIvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRpbmctcG9pbnQucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uOWE1NTE3OGM3NGYw ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL2FybXY1dGVsLWZs b2F0aW5nLXBvaW50LnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKKy0tLSBhL2xpYmF2ZmlsdGVyL3Zm X2RyYXd0ZXh0LmMJMjAxNy0xMC0yNiAyMTowMzowMy4wMDAwMDAwMDAgKzAyMDAKKysrKyBiL2xp YmF2ZmlsdGVyL3ZmX2RyYXd0ZXh0LmMJMjAxNy0xMS0yMSAxMTowNjo0OS42MDIyODQ0MjIgKzAx MDAKK0BAIC0zOSw2ICszOSwxNSBAQAorICNlbmRpZgorICNpbmNsdWRlIDxmZW52Lmg+CisgCisr I2lmIChGRV9BTExfRVhDRVBUID09IDApCisrLyogRS5nLiBBUk0gc29mdCBmbG9hdCBkb2VzIG5v dCBkZWZpbmUgdGhlc2UgKi8KKysjZGVmaW5lIEZFX0lOVkFMSUQgICAgMAorKyNkZWZpbmUgRkVf RElWQllaRVJPICAwCisrI2RlZmluZSBGRV9PVkVSRkxPVyAgIDAKKysjZGVmaW5lIEZFX1VOREVS RkxPVyAgMAorKyNkZWZpbmUgRkVfSU5FWEFDVCAgICAwCisrI2VuZGlmCisrCisgI2lmIENPTkZJ R19MSUJGT05UQ09ORklHCisgI2luY2x1ZGUgPGZvbnRjb25maWcvZm9udGNvbmZpZy5oPgorICNl bmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMvcGF0Y2gtbGliYXZjb2Rl Yy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZiBiL3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVz L3BhdGNoLWxpYmF2Y29kZWMtbGlic3Z0YXYxLXRlbl9iaXRfZm9ybWF0LmRpZmYKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uYWE5NDhmN2E4YTJkZgotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL3BhdGNoLWxpYmF2Y29kZWMtbGlic3Z0 YXYxLXRlbl9iaXRfZm9ybWF0LmRpZmYKQEAgLTAsMCArMSw0MCBAQAorIz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEZyb20gMDMxZjE1NjFjZDI4NjU5NmNkYjM3 NGRhMzJmOGFhODE2Y2UzYjEzNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKKyMgRnJvbTogQ2hy aXN0b3BoZXIgRGVnYXdhIDxjaHJpc3RvcGhlci5kZWdhd2FAaW50ZWwuY29tPgorIyBEYXRlOiBU aHUsIDIwIE9jdCAyMDIyIDIyOjU1OjI3IC0wNTAwCisjIFN1YmplY3Q6IFtQQVRDSF0gYXZjb2Rl Yy9saWJzdnRhdjE6IHJlbW92ZSBjb21wcmVzc2VkX3Rlbl9iaXRfZm9ybWF0IGFuZCBzaW1wbGlm eSBhbGxvY19idWZmZXIKKyMKKyMgY29tcHJlc3NlZF90ZW5fYml0X2Zvcm1hdCBoYXMgYmVlbiBk ZXByZWNhdGVkIHVwc3RyZWFtIGFuZCBoYXMgbm8gZWZmZWN0CisjIGFuZCBjYW4gYmUgcmVtb3Zl ZC4gUGx1cywgdGVjaG5pY2FsbHkgaXQgd2FzIG5ldmVyIHVzZWQgaW4gdGhlIGZpcnN0IHBsYWNl CisjIHNpbmNlIGl0IHdvdWxkIHJlcXVpcmUgdGhlIGFwcCAoZmZtcGVnKSB0byBzZXQgaXQgYW5k IGRvIGFkZGl0aW9uYWwKKyMgcHJvY2Vzc2luZyBvZiB0aGUgaW5wdXQgZnJhbWVzLgorIworIyBB bHNvIHNpbXBsaWZ5IGFsbG9jX2J1ZmZlciBieSByZW1vdmluZyBjYWxjdWxhdGlvbnMgcmVsYXRp bmcgdG8gdGhlIG5vbi1leGlzdGFudCBwcm9jZXNzaW5nLgorIworIyBTaWduZWQtb2ZmLWJ5OiBD aHJpc3RvcGhlciBEZWdhd2EgPGNocmlzdG9waGVyLmRlZ2F3YUBpbnRlbC5jb20+CisjPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhL2xpYmF2Y29kZWMvbGli c3Z0YXYxLmMKKysrKyBiL2xpYmF2Y29kZWMvbGlic3Z0YXYxLmMKK0BAIC0xMjQsMTYgKzEyNCwx MiBAQCBzdGF0aWMgaW50IHN2dF9wcmludF9lcnJvcih2b2lkICpsb2dfY3R4LCBFYkVycm9yVHlw ZSBlcnIsCisgCisgc3RhdGljIGludCBhbGxvY19idWZmZXIoRWJTdnRBdjFFbmNDb25maWd1cmF0 aW9uICpjb25maWcsIFN2dENvbnRleHQgKnN2dF9lbmMpCisgeworLSAgICBjb25zdCBpbnQgICAg cGFja19tb2RlXzEwYml0ID0KKy0gICAgICAgIChjb25maWctPmVuY29kZXJfYml0X2RlcHRoID4g OCkgJiYgKGNvbmZpZy0+Y29tcHJlc3NlZF90ZW5fYml0X2Zvcm1hdCA9PSAwKSA/IDEgOiAwOwor LSAgICBjb25zdCBzaXplX3QgbHVtYV9zaXplXzhiaXQgID0KKy0gICAgICAgIGNvbmZpZy0+c291 cmNlX3dpZHRoICogY29uZmlnLT5zb3VyY2VfaGVpZ2h0ICogKDEgPDwgcGFja19tb2RlXzEwYml0 KTsKKy0gICAgY29uc3Qgc2l6ZV90IGx1bWFfc2l6ZV8xMGJpdCA9CistICAgICAgICAoY29uZmln LT5lbmNvZGVyX2JpdF9kZXB0aCA+IDggJiYgcGFja19tb2RlXzEwYml0ID09IDApID8gbHVtYV9z aXplXzhiaXQgOiAwOworKyAgICBjb25zdCBzaXplX3QgbHVtYV9zaXplID0gY29uZmlnLT5zb3Vy Y2Vfd2lkdGggKiBjb25maWctPnNvdXJjZV9oZWlnaHQgKgorKyAgICAgICAgKGNvbmZpZy0+ZW5j b2Rlcl9iaXRfZGVwdGggPiA4ID8gMiA6IDEpOworIAorICAgICBFYlN2dElPRm9ybWF0ICppbl9k YXRhOworIAorLSAgICBzdnRfZW5jLT5yYXdfc2l6ZSA9IChsdW1hX3NpemVfOGJpdCArIGx1bWFf c2l6ZV8xMGJpdCkgKiAzIC8gMjsKKysgICAgc3Z0X2VuYy0+cmF3X3NpemUgPSBsdW1hX3NpemUg KiAzIC8gMjsKKyAKKyAgICAgLy8gYWxsb2NhdGUgYnVmZmVyIGZvciBpbiBhbmQgb3V0CisgICAg IHN2dF9lbmMtPmluX2J1ZiAgICAgICAgICAgPSBhdl9tYWxsb2N6KHNpemVvZigqc3Z0X2VuYy0+ aW5fYnVmKSk7CistLSAKK0dpdExhYgorCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZzQvcGF0 Y2hlcy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggYi9zcmNwa2dzL2Zm bXBlZzQvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMDBlM2Y2OGE0MTViOAotLS0g L2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1y ZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDgxMWQyOTA4NDQy MDZmYzczZGMzOWMzZTViNjdkNWQ4OTViYWVkZjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiBSYWluZXIgSG9jaGVja2VyIDxmZXJuZXRtZW50YUBvbmxpbmUuZGU+CitEYXRlOiBTYXQs IDI2IEphbiAyMDE5IDE5OjQ4OjM1ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGF2Y29kZWMvdmFh cGlfaDI2NDogc2tpcCBkZWNvZGUgaWYgcGljIGhhcyBubyBzbGljZXMKKworVGhpcyBmaXhlcyAv IHdvcmthcm91bmRzIGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lk PTEwNTM2OC4KK0l0IHdhcyBoaXQgZnJlcXVlbnRseSB3aGVuIHdhdGNoaW5nIGgyNjQgY2hhbm5l bHMgcmVjZWl2ZWQgdmlhIERWQi1YLgorQ29ycmVzcG9uZGluZyBrb2RpIGJ1ZzogaHR0cHM6Ly9n aXRodWIuY29tL3hibWMveGJtYy9pc3N1ZXMvMTU3MDQKKy0tLQorIGxpYmF2Y29kZWMvdmFhcGlf aDI2NC5jIHwgNSArKysrKworIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlm ZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5jIGIvbGliYXZjb2RlYy92YWFwaV9oMjY0 LmMKK2luZGV4IDU4NTQ1ODdhMjU1Li5mMTJmZGM0NTdhNCAxMDA2NDQKKy0tLSBhL2xpYmF2Y29k ZWMvdmFhcGlfaDI2NC5jCisrKysgYi9saWJhdmNvZGVjL3ZhYXBpX2gyNjQuYworQEAgLTMxNyw2 ICszMTcsMTEgQEAgc3RhdGljIGludCB2YWFwaV9oMjY0X2VuZF9mcmFtZShBVkNvZGVjQ29udGV4 dCAqYXZjdHgpCisgICAgIEgyNjRTbGljZUNvbnRleHQgKnNsID0gJmgtPnNsaWNlX2N0eFswXTsK KyAgICAgaW50IHJldDsKKyAKKysgICAgaWYgKHBpYy0+bmJfc2xpY2VzID09IDApIHsKKysgICAg ICAgIHJldCA9IEFWRVJST1JfSU5WQUxJRERBVEE7CisrICAgICAgICBnb3RvIGZpbmlzaDsKKysg ICAgfQorKworICAgICByZXQgPSBmZl92YWFwaV9kZWNvZGVfaXNzdWUoYXZjdHgsIHBpYyk7Cisg ICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgZ290byBmaW5pc2g7CmRpZmYgLS1naXQgYS9zcmNw a2dzL2ZmbXBlZzQvdGVtcGxhdGUgYi9zcmNwa2dzL2ZmbXBlZzQvdGVtcGxhdGUKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uZjJjODUxNjkzZDM2NwotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0ZQpAQCAtMCwwICsxLDI0MCBAQAorIyBU ZW1wbGF0ZSBmaWxlIGZvciAnZmZtcGVnNCcKKyMgYXVkYWNpdHkgYWxzbyBuZWVkcyB0byBiZSBi dW1wZWQgd2hlbiBhIG5ldyBmZm1wZWcgdmVyc2lvbiBidW1wcyBsaWJhdmZvcm1hdCdzIHNvbmFt ZSEKK3BrZ25hbWU9ZmZtcGVnNAordmVyc2lvbj00LjQuNAorcmV2aXNpb249MQorc2hvcnRfZGVz Yz0iRGVjb2RpbmcsIGVuY29kaW5nIGFuZCBzdHJlYW1pbmcgc29mdHdhcmUgLSBmZm1wZWc0IGxp YnJhcmllcyBvbmx5IgorbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3Jn PiIKK2xpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCitob21lcGFnZT0iaHR0cHM6Ly93d3cuZmZt cGVnLm9yZyIKK2NoYW5nZWxvZz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0ZG bXBlZy9GRm1wZWcvbWFzdGVyL0NoYW5nZWxvZyIKK2Rpc3RmaWxlcz0iaHR0cHM6Ly93d3cuZmZt cGVnLm9yZy9yZWxlYXNlcy9mZm1wZWctJHt2ZXJzaW9ufS50YXIueHoiCitjaGVja3N1bT1lODBi MzgwZDU5NWM4MDkwNjBmNjZmOTZhNWQ4NDk1MTFlZjRhNzZhMjZiNzZlYWNmNTc3OGI5NGMzNTcw MzA5CisKK2hvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBwZXJsIgorbWFrZWRlcGVuZHM9Inps aWItZGV2ZWwgYnppcDItZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgYWxzYS1saWItZGV2ZWwgbGliWGZp eGVzLWRldmVsCisgbGliWGV4dC1kZXZlbCBsaWJYdk1DLWRldmVsIGxpYnhjYi1kZXZlbCBsYW1l LWRldmVsIGxpYnRoZW9yYS1kZXZlbAorIGxpYnZvcmJpcy1kZXZlbCB4MjY0LWRldmVsIHh2aWRj b3JlLWRldmVsIGphY2stZGV2ZWwgU0RMMi1kZXZlbAorIGxpYmNkaW8tcGFyYW5vaWEtZGV2ZWwg bGlicnRtcC1kZXZlbCBsaWJtb2RwbHVnLWRldmVsIGdudXRscy1kZXZlbAorIHNwZWV4LWRldmVs IGNlbHQtZGV2ZWwgaGFyZmJ1enotZGV2ZWwgbGliYXNzLWRldmVsIG9wdXMtZGV2ZWwgb2NsLWlj ZC1kZXZlbAorIGxpYmJzMmItZGV2ZWwgbGlidmlkc3RhYi1kZXZlbCB2bWFmLWRldmVsICQodm9w dF9pZiBwdWxzZWF1ZGlvIHB1bHNlYXVkaW8tZGV2ZWwpCisgJCh2b3B0X2lmIHZhYXBpIGxpYnZh LWRldmVsKSAkKHZvcHRfaWYgdmRwYXUgbGlidmRwYXUtZGV2ZWwpCisgJCh2b3B0X2lmIHgyNjUg eDI2NS1kZXZlbCkgJCh2b3B0X2lmIHY0bDIgdjRsLXV0aWxzLWRldmVsKQorICQodm9wdF9pZiBm ZGtfYWFjIGZkay1hYWMtZGV2ZWwpICQodm9wdF9pZiB2cHggbGlidnB4LWRldmVsKQorICQodm9w dF9pZiBhb20gbGliYW9tLWRldmVsKSAkKHZvcHRfaWYgc25kaW8gc25kaW8tZGV2ZWwpCisgJCh2 b3B0X2lmIGRhdjFkIGxpYmRhdjFkLWRldmVsKSAkKHZvcHRfaWYgemltZyB6aW1nLWRldmVsKQor ICQodm9wdF9pZiB3ZWJwIGxpYndlYnAtZGV2ZWwpICQodm9wdF9pZiBzb2ZhIGxpYm15c29mYS1k ZXZlbCkKKyAkKHZvcHRfaWYgZHJtIGxpYmRybS1kZXZlbCkgJCh2b3B0X2lmIHN2dGF2MSBsaWJz dnQtYXYxLWRldmVsKQorICQodm9wdF9pZiBzcnQgc3J0LWRldmVsKSAkKHZvcHRfaWYgcmlzdCBs aWJyaXN0LWRldmVsKQorICQodm9wdF9pZiB2dWxrYW4gJ3Z1bGthbi1sb2FkZXIgVnVsa2FuLUhl YWRlcnMnKQorICQodm9wdF9pZiBtZnggJ2xpYm1meCBsaWJtZngtZGV2ZWwnKQorICQodm9wdF9p ZiBudmVuYyBudi1jb2RlYy1oZWFkZXJzKSAkKHZvcHRfaWYgbnZkZWMgbnYtY29kZWMtaGVhZGVy cykiCisKK2J1aWxkX29wdGlvbnM9IngyNjUgdjRsMiB2YWFwaSB2ZHBhdSB2cHggZmRrX2FhYyBh b20gbnZlbmMgc25kaW8gcHVsc2VhdWRpbworIGRhdjFkIHppbWcgd2VicCBzb2ZhIHZ1bGthbiBk cm0gc3Z0YXYxIHNydCByaXN0IG52ZGVjIG1meCIKK2J1aWxkX29wdGlvbnNfZGVmYXVsdD0ieDI2 NSB2NGwyIHZweCBhb20gc25kaW8gcHVsc2VhdWRpbyBkYXYxZCB3ZWJwIHZ1bGthbiBkcm0gc3J0 IHJpc3QiCisKK2Rlc2Nfb3B0aW9uX3NydD0iRW5hYmxlIHN1cHBvcnQgZm9yIFNSVCAoU2VjdXJl LCBSZWxpYWJsZSwgVHJhbnNwb3J0KSIKK2Rlc2Nfb3B0aW9uX3Jpc3Q9IkVuYWJsZSBzdXBwb3J0 IGZvciBSSVNUIChSZWxpYWJsZSBJbnRlcm5ldCBTdHJlYW0gVHJhbnNwb3J0KSIKK2Rlc2Nfb3B0 aW9uX3NvZmE9IkVuYWJsZSBzdXBwb3J0IGZvciBBRVMgU09GQSIKK2Rlc2Nfb3B0aW9uX3dlYnA9 IkVuYWJsZSBzdXBwb3J0IGZvciBXZWJQIgorCitjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIg aW4KKwlpNjg2KikKKwkJCWhvc3RtYWtlZGVwZW5kcys9IiBuYXNtIgorCQkJYnVpbGRfb3B0aW9u c19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1IG52ZW5jIG52ZGVjIgorCQkJOzsKKwl4ODZfNjQqKQor CQkJaG9zdG1ha2VkZXBlbmRzKz0iIG5hc20iCisJCQlidWlsZF9vcHRpb25zX2RlZmF1bHQrPSIg dmFhcGkgdmRwYXUgbWZ4IG52ZW5jIG52ZGVjIgorCQkJOzsKKwlwcGM2NCopIGJ1aWxkX29wdGlv bnNfZGVmYXVsdCs9IiB2YWFwaSB2ZHBhdSI7OworCW1pcHMqKSBDRkxBR1M9Ii1tbmFuPWxlZ2Fj eSI7OworZXNhYworCitpZiBbICIkWEJQU19UQVJHRVRfV09SRFNJWkUiICE9ICIzMiIgXTsgdGhl bgorCWJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9IiBzdnRhdjEiCitmaQorCitpZiBbICIkWEJQU19U QVJHRVRfTk9fQVRPTUlDOCIgXTsgdGhlbgorCW1ha2VkZXBlbmRzKz0iIGxpYmF0b21pYy1kZXZl bCIKK2ZpCisKK19hcHBseV9wYXRjaCgpIHsKKwlsb2NhbCBhcmdzPSIkMSIgcG5hbWU9IiQoYmFz ZW5hbWUgJDIpIgorCisJaWYgWyAhIC1mICIuJHtwbmFtZX1fZG9uZSIgXTsgdGhlbgorCQlwYXRj aCAtTiAkYXJncyAtaSAkMgorCQl0b3VjaCAuJHtwbmFtZX1fZG9uZQorCWZpCit9CisKK3Bvc3Rf cGF0Y2goKSB7CisJY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJCXBwYzY0bGUqKSA7 OworCQlwcGMqKSBfYXBwbHlfcGF0Y2ggLXAxICR7RklMRVNESVJ9L2FsdGl2ZWMucGF0Y2ggOzsK Kwllc2FjCisKKwl2c2VkIC1pIGxpYmF2ZmlsdGVyL3ZmX2xpYnZtYWYuYyAtZSAncyEvdXNyL2xv Y2FsL3NoYXJlL21vZGVsL1wodm1hZl92MC42LjFcKS5wa2whL3Vzci9zaGFyZS92bWFmL1wxLmpz b24hJworfQorCitkb19jb25maWd1cmUoKSB7CisJIyBGaXggZ2NjIG9uIHg4Nl82NC1tdXNsIG9u bHkKKwlpZiBbICIkWEJQU19UQVJHRVRfTUFDSElORSIgPSAieDg2XzY0LW11c2wiIF07IHRoZW4K KwkJdnNlZCAtaSBjb25maWd1cmUgLWUgInM7X2NmbGFnc19zcGVlZD0nLU8zJztfY2ZsYWdzX3Nw ZWVkPSctTzInOyIKKwlmaQorCisJaWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCisJCWNhc2Ug IiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgorCQkJYXJtKikgX2FyY2g9ImFybSI7OworCQkJYWFy Y2g2NCopIF9hcmNoPSJhYXJjaDY0Ijs7CisJCQltaXBzKikgX2FyY2g9Im1pcHMiOzsKKwkJCXBw YzY0KikgX2FyY2g9InBwYzY0Ijs7CisJCQlwcGMqKSBfYXJjaD0icHBjIjs7CisJCQkqKSBfYXJj aD0iJHtYQlBTX1RBUkdFVF9NQUNISU5FJSUtbXVzbH0iOzsKKwkJZXNhYworCisJCV9hcmdzKz0i IC0tZW5hYmxlLWNyb3NzLWNvbXBpbGUKKwkJCS0tc3lzcm9vdD0kWEJQU19DUk9TU19CQVNFCisJ CQktLWNyb3NzLXByZWZpeD0ke1hCUFNfQ1JPU1NfVFJJUExFVH0tCisJCQktLXRhcmdldC1vcz1s aW51eCAtLWFyY2g9JHtfYXJjaH0iCisJZmkKKworCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5F IiBpbgorCQlwcGN8cHBjLW11c2wpIF9hcmdzKz0iIC0tZGlzYWJsZS1hbHRpdmVjIjs7CisJZXNh YworCisJaWYgWyAiJFhCUFNfVEFSR0VUX05PX0FUT01JQzgiIF07IHRoZW4KKwkJX2FyZ3MrPSIg LS1leHRyYS1saWJzPS1sYXRvbWljIgorCWZpCisKKwkuL2NvbmZpZ3VyZSAtLXByZWZpeD0vdXNy IC0tZGlzYWJsZS1kZWJ1ZyAtLWVuYWJsZS1ncGwgLS1lbmFibGUtZ251dGxzIFwKKwkJLS1kaXNh YmxlLXN0cmlwcGluZyBcCisJCS0tZW5hYmxlLWxpYmNkaW8gLS1lbmFibGUtdmVyc2lvbjMgLS1l bmFibGUtcnVudGltZS1jcHVkZXRlY3QgXAorCQktLWVuYWJsZS1saWJtcDNsYW1lIC0tZW5hYmxl LWxpYnZvcmJpcyAtLWVuYWJsZS1saWJ4dmlkIFwKKwkJLS1lbmFibGUtbGlieDI2NCAkKHZvcHRf ZW5hYmxlIHZweCBsaWJ2cHgpIC0tZW5hYmxlLWxpYnRoZW9yYSBcCisJCS0tZW5hYmxlLXNoYXJl ZCAtLWVuYWJsZS1zdGF0aWMgLS1lbmFibGUtbGlieGNiIFwKKwkJJCh2b3B0X2VuYWJsZSBwdWxz ZWF1ZGlvIGxpYnB1bHNlKSAtLWVuYWJsZS1saWJmcmVldHlwZSAtLWVuYWJsZS1saWJtb2RwbHVn IFwKKwkJLS1lbmFibGUtbGlic3BlZXggLS1lbmFibGUtbGliY2VsdCAtLWVuYWJsZS1saWJhc3Mg XAorCQktLWVuYWJsZS1saWJvcHVzIC0tZW5hYmxlLWxpYnJ0bXAgLS1lbmFibGUtbGliamFjayBc CisJCSQodm9wdF9pZiBmZGtfYWFjICctLWVuYWJsZS1ub25mcmVlIC0tZW5hYmxlLWxpYmZkay1h YWMnKSBcCisJCS0tZGlzYWJsZS1saWJvcGVuY29yZV9hbXJuYiAtLWRpc2FibGUtbGlib3BlbmNv cmVfYW1yd2IgXAorCQktLWRpc2FibGUtbGlib3BlbmpwZWcgXAorCQktLWVuYWJsZS1wb3N0cHJv YyAtLWVuYWJsZS1vcGVuY2wgJHtfYXJnc30gLS1lbmFibGUtbGlidm1hZiAke19hcmdzfSBcCisJ CSQodm9wdF9lbmFibGUgeDI2NSBsaWJ4MjY1KSBcCisJCSQodm9wdF9lbmFibGUgdjRsMiBsaWJ2 NGwyKSBcCisJCSQodm9wdF9lbmFibGUgYW9tIGxpYmFvbSkgJCh2b3B0X2VuYWJsZSB2YWFwaSkg JCh2b3B0X2VuYWJsZSB2ZHBhdSkgXAorCQktLWVuYWJsZS1saWJiczJiIC0tZW5hYmxlLWF2cmVz YW1wbGUgLS1lbmFibGUtbGlidmlkc3RhYiBcCisJCSQodm9wdF9lbmFibGUgZGF2MWQgbGliZGF2 MWQpIFwKKwkJJCh2b3B0X2VuYWJsZSB6aW1nIGxpYnppbWcpIFwKKwkJJCh2b3B0X2VuYWJsZSB3 ZWJwIGxpYndlYnApIFwKKwkJJCh2b3B0X2VuYWJsZSBzb2ZhIGxpYm15c29mYSkgXAorCQkkKHZv cHRfZW5hYmxlIHZ1bGthbikgXAorCQkkKHZvcHRfZW5hYmxlIGRybSBsaWJkcm0pIFwKKwkJJCh2 b3B0X2VuYWJsZSBzdnRhdjEgbGlic3Z0YXYxKSBcCisJCSQodm9wdF9lbmFibGUgc3J0IGxpYnNy dCkgXAorCQkkKHZvcHRfZW5hYmxlIHJpc3QgbGlicmlzdCkgXAorCQkkKHZvcHRfZW5hYmxlIG1m eCBsaWJtZngpIFwKKwkJJCh2b3B0X2lmIG52ZW5jICctLWVuYWJsZS1udmVuYycpIFwKKwkJJCh2 b3B0X2lmIG52ZGVjICctLWVuYWJsZS1udmRlYycpCit9CisKK2RvX2J1aWxkKCkgeworCW1ha2Ug JHttYWtlam9ic30KKwltYWtlIGRvYy9mZnttcGVnLHBsYXl9LjEKK30KKworZG9faW5zdGFsbCgp IHsKKwltYWtlIERFU1RESVI9JHtERVNURElSfSBpbnN0YWxsIGluc3RhbGwtbWFuCisJcm0gLXJm ICR7REVTVERJUn0vdXNyL2JpbgorfQorCitsaWJhdmNvZGVjNF9wYWNrYWdlKCkgeworCXNob3J0 X2Rlc2M9IkZGbXBlZyBjb2RlYyBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAi dXNyL2xpYi9saWJhdmNvZGVjLnNvLioiCisJfQorfQorCitsaWJhdmRldmljZTRfcGFja2FnZSgp IHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgZGV2aWNlIGhhbmRsaW5nIGxpYnJhcnkiCisJcGtnX2lu c3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2ZGV2aWNlLnNvLioiCisJfQorfQorCits aWJhdnJlc2FtcGxlNF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyBhdWRpbyByZXNh bXBsaW5nIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2 cmVzYW1wbGUuc28uKiIKKwl9Cit9CisKK2xpYmF2Zm9ybWF0NF9wYWNrYWdlKCkgeworCXNob3J0 X2Rlc2M9IkZGbXBlZyBmaWxlIGZvcm1hdCBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2 bW92ZSAidXNyL2xpYi9saWJhdmZvcm1hdC5zby4qIgorCX0KK30KKworbGliYXZ1dGlsNF9wYWNr YWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyB1dGlsaXR5IGxpYnJhcnkiCisJcGtnX2luc3Rh bGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2dXRpbC5zby4qIgorCX0KK30KKworbGliYXZm aWx0ZXI0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIGF1ZGlvL3ZpZGVvIGZpbHRl ciBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJhdmZpbHRl ci5zby4qIgorCX0KK30KKworbGlicG9zdHByb2M0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0i RkZtcGVnIHZpZGVvIHBvc3Rwcm9jZXNzaW5nIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJ CXZtb3ZlICJ1c3IvbGliL2xpYnBvc3Rwcm9jLnNvLioiCisJfQorfQorCitsaWJzd3NjYWxlNF9w YWNrYWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyB2aWRlbyBzY2FsaW5nIGxpYnJhcnkiCisJ cGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYnN3c2NhbGUuc28uKiIKKwl9Cit9 CisKK2xpYnN3cmVzYW1wbGU0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIHZpZGVv IHJlc2FtcGxpbmcgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIv bGlic3dyZXNhbXBsZS5zby4qIgorCX0KK30KKworZmZtcGVnNC1kZXZlbF9wYWNrYWdlKCkgewor CWRlcGVuZHM9IgorCQlsaWJhdmNvZGVjND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJh dmRldmljZTQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJbGliYXZmb3JtYXQ0Pj0ke3ZlcnNp b259XyR7cmV2aXNpb259CisJCWxpYmF2dXRpbDQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJ bGliYXZmaWx0ZXI0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYnBvc3Rwcm9jND49JHt2 ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJzd3NjYWxlND49JHt2ZXJzaW9ufV8ke3JldmlzaW9u fQorCQlsaWJzd3Jlc2FtcGxlND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJhdnJlc2Ft cGxlND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwlzaG9ydF9kZXNjKz0iIC0gZGV2ZWxvcG1l bnQgZmlsZXMiCisJY29uZmxpY3RzPSJmZm1wZWctZGV2ZWwiCisJaWYgWyAiJFhCUFNfVEFSR0VU X01BQ0hJTkUiID0gImk2ODYiIF07IHRoZW4KKwkJIyAvdXNyL2Jpbi9zdHJpcDogZXJyb3I6IHRo ZSBpbnB1dCBmaWxlICcvZGVzdGRpci8vZmZtcGVnLWRldmVsLTQuNC40L3Vzci9saWIvbGliYXZm aWx0ZXIuYSh2Zl9hdGFkZW5vaXNlLm8pJyBoYXMgbm8gc2VjdGlvbnMKKwkJbm9zdHJpcF9maWxl cz0iL3Vzci9saWIvbGliYXZmaWx0ZXIuYSIKKwlmaQorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92 ZSB1c3IvaW5jbHVkZQorCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZworCQl2bW92ZSAidXNyL2xp Yi8qLmEiCisJCXZtb3ZlICJ1c3IvbGliLyouc28iCisJCXZtb3ZlIHVzci9zaGFyZS9mZm1wZWcv ZXhhbXBsZXMKKwkJdm1vdmUgdXNyL3NoYXJlL21hbi9tYW4zCisJfQorfQpkaWZmIC0tZ2l0IGEv c3JjcGtncy9saWJhdmNvZGVjNCBiL3NyY3BrZ3MvbGliYXZjb2RlYzQKbmV3IGZpbGUgbW9kZSAx MjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZiZQotLS0gL2Rldi9udWxsCisr KyBiL3NyY3BrZ3MvbGliYXZjb2RlYzQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliYXZkZXZpY2U0IGIvc3Jj cGtncy9saWJhdmRldmljZTQKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAw MC4uODg3ZjM1NGU3YzZiZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGliYXZkZXZpY2U0 CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg LS1naXQgYS9zcmNwa2dzL2xpYmF2ZmlsdGVyNCBiL3NyY3BrZ3MvbGliYXZmaWx0ZXI0Cm5ldyBm aWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YmUKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYmF2ZmlsdGVyNApAQCAtMCwwICsxIEBACitmZm1wZWc0 ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJhdmZv cm1hdDQgYi9zcmNwa2dzL2xpYmF2Zm9ybWF0NApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAw MDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9s aWJhdmZvcm1hdDQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliYXZyZXNhbXBsZTQgYi9zcmNwa2dzL2xpYmF2 cmVzYW1wbGU0Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjg4N2Yz NTRlN2M2YmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYmF2cmVzYW1wbGU0CkBAIC0w LDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS9zcmNwa2dzL2xpYmF2dXRpbDQgYi9zcmNwa2dzL2xpYmF2dXRpbDQKbmV3IGZpbGUgbW9kZSAx MjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZiZQotLS0gL2Rldi9udWxsCisr KyBiL3NyY3BrZ3MvbGliYXZ1dGlsNApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJwb3N0cHJvYzQgYi9zcmNw a2dzL2xpYnBvc3Rwcm9jNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAw Li44ODdmMzU0ZTdjNmJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJwb3N0cHJvYzQK QEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvbGlic3dyZXNhbXBsZTQgYi9zcmNwa2dzL2xpYnN3cmVzYW1wbGU0Cm5l dyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YmUKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYnN3cmVzYW1wbGU0CkBAIC0wLDAgKzEgQEAKK2Zm bXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xp YnN3c2NhbGU0IGIvc3JjcGtncy9saWJzd3NjYWxlNApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRl eCAwMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9saWJzd3NjYWxlNApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQoKRnJvbSBjMjFmYTVjZmNjOTkzOTVjZGYyZjg3OGZjYTdkNGZjYmQ3YzUyNzRkIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDE5OjU5OjA0IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDMv MTEzXSBvcGVuY3Y6IHVwZGF0ZSB0byA0LjcuMC4KCi0tLQogY29tbW9uL3NobGlicyAgICAgICAg ICAgfCAxMDQgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjcGtn cy9vcGVuY3YvdGVtcGxhdGUgfCAgIDggKystLQogMiBmaWxlcyBjaGFuZ2VkLCA1NiBpbnNlcnRp b25zKCspLCA1NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb21tb24vc2hsaWJzIGIvY29t bW9uL3NobGlicwppbmRleCBhNzczNDZjY2UzZTlhLi5jYTBlZTA2NjIxNWVhIDEwMDY0NAotLS0g YS9jb21tb24vc2hsaWJzCisrKyBiL2NvbW1vbi9zaGxpYnMKQEAgLTIxMzYsNTggKzIxMzYsNTgg QEAgbGliY2Fwc3RvbmUuc28uNCBjYXBzdG9uZS00LjBfMQogbGliaGF2ZWdlLnNvLjIgbGliaGF2 ZWdlZC0xLjkuMTFfMQogbGlibmloLnNvLjEgbGlibmloLTEuMC4zXzEKIGxpYm5paC1kYnVzLnNv LjEgbGlibmloLTEuMC4zXzEKLWxpYm9wZW5jdl9xdWFsaXR5LnNvLjQwNiBsaWJvcGVuY3YtNC42 LjBfMQotbGlib3BlbmN2X3JlZy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9z dXJmYWNlX21hdGNoaW5nLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3hwaG90 by5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9mcmVldHlwZS5zby40MDYgbGli b3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9mdXp6eS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEK LWxpYm9wZW5jdl9oZnMuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfaW1nX2hh c2guc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfbGluZV9kZXNjcmlwdG9yLnNv LjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3NhbGllbmN5LnNvLjQwNiBsaWJvcGVu Y3YtNC42LjBfMQotbGlib3BlbmN2X3N0cnVjdHVyZWRfbGlnaHQuc28uNDA2IGxpYm9wZW5jdi00 LjYuMF8xCi1saWJvcGVuY3ZfYXJ1Y28uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVu Y3ZfYmdzZWdtLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Jpb2luc3BpcmVk LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2NjYWxpYi5zby40MDYgbGlib3Bl bmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9mYWNlLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGli b3BlbmN2X3RyYWNraW5nLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3hmZWF0 dXJlczJkLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X29wdGZsb3cuc28uNDA2 IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfeGltZ3Byb2Muc28uNDA2IGxpYm9wZW5jdi00 LjYuMF8xCi1saWJvcGVuY3ZfcGxvdC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5j dl90ZXh0LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X21sLnNvLjQwNiBsaWJv cGVuY3YtNC42LjBfMQotbGlib3BlbmN2X29iamRldGVjdC5zby40MDYgbGlib3BlbmN2LTQuNi4w XzEKLWxpYm9wZW5jdl9kbm4uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc2hh cGUuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc3RpdGNoaW5nLnNvLjQwNiBs aWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3Bob3RvLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBf MQotbGlib3BlbmN2X3ZpZGVvLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Nh bGliM2Quc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZmVhdHVyZXMyZC5zby40 MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9mbGFubi5zby40MDYgbGlib3BlbmN2LTQu Ni4wXzEKLWxpYm9wZW5jdl9oaWdoZ3VpLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3Bl bmN2X3ZpZGVvaW8uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfaW1nY29kZWNz LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2ltZ3Byb2Muc28uNDA2IGxpYm9w ZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfY29yZS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxp Ym9wZW5jdl9zdXBlcnJlcy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl92aWRl b3N0YWIuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZ2FwaS5zby40MDYgbGli b3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl94b2JqZGV0ZWN0LnNvLjQwNiBsaWJvcGVuY3YtNC42 LjBfMQotbGlib3BlbmN2X2RhdGFzZXRzLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3Bl bmN2X2Rubl9vYmpkZXRlY3Quc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZG5u X3N1cGVycmVzLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2RwbS5zby40MDYg bGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9waGFzZV91bndyYXBwaW5nLnNvLjQwNiBsaWJv cGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3N0ZXJlby5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEK LWxpYm9wZW5jdl9yYXBpZC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9pbnRl bnNpdHlfdHJhbnNmb3JtLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2FscGhh bWF0LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2JhcmNvZGUuc28uNDA2IGxp Ym9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfbWNjLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQor bGlib3BlbmN2X3F1YWxpdHkuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfcmVn LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3N1cmZhY2VfbWF0Y2hpbmcuc28u NDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfeHBob3RvLnNvLjQwNyBsaWJvcGVuY3Yt NC43LjBfMQorbGlib3BlbmN2X2ZyZWV0eXBlLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGli b3BlbmN2X2Z1enp5LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2hmcy5zby40 MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9pbWdfaGFzaC5zby40MDcgbGlib3BlbmN2 LTQuNy4wXzEKK2xpYm9wZW5jdl9saW5lX2Rlc2NyaXB0b3Iuc28uNDA3IGxpYm9wZW5jdi00Ljcu MF8xCitsaWJvcGVuY3Zfc2FsaWVuY3kuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVu Y3Zfc3RydWN0dXJlZF9saWdodC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9h cnVjby5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9iZ3NlZ20uc28uNDA3IGxp Ym9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfYmlvaW5zcGlyZWQuc28uNDA3IGxpYm9wZW5jdi00 LjcuMF8xCitsaWJvcGVuY3ZfY2NhbGliLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3Bl bmN2X2ZhY2Uuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfdHJhY2tpbmcuc28u NDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfeGZlYXR1cmVzMmQuc28uNDA3IGxpYm9w ZW5jdi00LjcuMF8xCitsaWJvcGVuY3Zfb3B0Zmxvdy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEK K2xpYm9wZW5jdl94aW1ncHJvYy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9w bG90LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3RleHQuc28uNDA3IGxpYm9w ZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfbWwuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJv cGVuY3Zfb2JqZGV0ZWN0LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2Rubi5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9zaGFwZS5zby40MDcgbGlib3BlbmN2 LTQuNy4wXzEKK2xpYm9wZW5jdl9zdGl0Y2hpbmcuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCits aWJvcGVuY3ZfcGhvdG8uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfdmlkZW8u c28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfY2FsaWIzZC5zby40MDcgbGlib3Bl bmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9mZWF0dXJlczJkLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBf MQorbGlib3BlbmN2X2ZsYW5uLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2hp Z2hndWkuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfdmlkZW9pby5zby40MDcg bGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9pbWdjb2RlY3Muc28uNDA3IGxpYm9wZW5jdi00 LjcuMF8xCitsaWJvcGVuY3ZfaW1ncHJvYy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9w ZW5jdl9jb3JlLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3N1cGVycmVzLnNv LjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3ZpZGVvc3RhYi5zby40MDcgbGlib3Bl bmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9nYXBpLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGli b3BlbmN2X3hvYmpkZXRlY3Quc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZGF0 YXNldHMuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZG5uX29iamRldGVjdC5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9kbm5fc3VwZXJyZXMuc28uNDA3IGxp Ym9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZHBtLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQor bGlib3BlbmN2X3BoYXNlX3Vud3JhcHBpbmcuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJv cGVuY3Zfc3RlcmVvLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3JhcGlkLnNv LjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2ludGVuc2l0eV90cmFuc2Zvcm0uc28u NDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfYWxwaGFtYXQuc28uNDA3IGxpYm9wZW5j di00LjcuMF8xCitsaWJvcGVuY3ZfYmFyY29kZS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xp Ym9wZW5jdl9tY2Muc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCiBsaWJ1bmljb25mLnNvLjQuNiB3 dnN0cmVhbXMtNC42LjFfMjAKIGxpYnd2YmFzZS5zby40LjYgd3ZzdHJlYW1zLTQuNi4xXzIwCiBs aWJ3dnV0aWxzLnNvLjQuNiB3dnN0cmVhbXMtNC42LjFfMjAKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv b3BlbmN2L3RlbXBsYXRlIGIvc3JjcGtncy9vcGVuY3YvdGVtcGxhdGUKaW5kZXggNjljNjM1YjFh ZDJiYy4uNDFmMzE4M2YxNTgyZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9vcGVuY3YvdGVtcGxhdGUK KysrIGIvc3JjcGtncy9vcGVuY3YvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdvcGVuY3YnCiBwa2duYW1lPW9wZW5jdgotdmVyc2lvbj00LjYuMAotcmV2aXNp b249NAordmVyc2lvbj00LjcuMAorcmV2aXNpb249MQogY3JlYXRlX3dya3NyYz15ZXMKIGJ1aWxk X3dya3NyYz0ke3BrZ25hbWV9LSR7dmVyc2lvbn0KIGJ1aWxkX3N0eWxlPWNtYWtlCkBAIC0yNCw4 ICsyNCw4IEBAIGhvbWVwYWdlPSJodHRwczovL29wZW5jdi5vcmciCiBjaGFuZ2Vsb2c9Imh0dHBz Oi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2L3dpa2kvQ2hhbmdlTG9nIgogZGlzdGZpbGVzPSJo dHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdi9hcmNoaXZlLyR7dmVyc2lvbn0udGFyLmd6 CiAgaHR0cHM6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3ZfY29udHJpYi9hcmNoaXZlLyR7dmVy c2lvbn0udGFyLmd6PmNvbnRyaWIudGFyLmd6IgotY2hlY2tzdW09IjFlYzFjYmE2NWY5ZjIwZmU1 YTQxZmRhMTU4NmUwMWM3MGVhMGM5YTZkN2I2N2M5ZTEzZWRmMGNmZTIyMzkyNzcKLSAxNzc3ZDVm ZDJiNTkwMjljZjUzN2U1ZmQ2ZjhhYTY4ZDcwNzA3NTgyMmY5MGJkZTY4M2ZjZGUwODZmODVmN2E3 IgorY2hlY2tzdW09IjhkZjAwNzljZGJlMTc5NzQ4YTE4ZDQ0NzMxYWY2MmEyNDVhNDVlYmY1MDg1 MjIzZGMwMzEzMzk1NGM2NjI5NzMKKyA0MmRmODQwY2Y5MDU1ZTU5ZDBlMjJjMjQ5Y2ZiMTlmMDQ3 NDNlMWJkYWQxMTNkMzFiMTU3M2QzOTM0ZDYyNTg0IgogcGF0Y2hfYXJncz0iLU5wMSAtZCAke2J1 aWxkX3dya3NyY30iCiAjIHRlc3RzIGhhbmcgaW5kZW5maW5pdGVseSwgZXZlbiB3aXRoIHRlc3Qg ZGF0YSBpbmNsdWRlZAogbWFrZV9jaGVjaz1ubwoKRnJvbSBhYTdlNzljZjFjNWIyYzFiNDJmZmZi NmEyYThlMWI4NmI4ZGM4ZmZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDE5OjU5OjQ1IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwMDQvMTEzXSBhY3Rpb25hOiByZXZidW1wIGZvciBvcGVuY3YtNC43 LjAKCi0tLQogc3JjcGtncy9hY3Rpb25hL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hY3Rp b25hL3RlbXBsYXRlIGIvc3JjcGtncy9hY3Rpb25hL3RlbXBsYXRlCmluZGV4IGNmNWYwYjdhMmFl NjEuLjBkODk5MzExZTZkZjcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYWN0aW9uYS90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdhY3Rpb25hJwogcGtnbmFtZT1hY3Rpb25hCiB2ZXJzaW9uPTMuMTAuMQotcmV2 aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9cW1ha2UKIGNvbmZpZ3VyZV9hcmdzPSJQ S0dDT05GSUdfT1BFTkNWPW9wZW5jdjQiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1 LXBsdWdpbi1teXNxbCBxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMiCgpGcm9tIGY4ZTExODdkZTIz MDAyZTE1MWQyNzUyOTQ2M2E4NTEyNWQwNjg3ZjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMTk6 NTk6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwNS8xMTNdIHFpbWd2OiByZXZidW1wIGZvciBv cGVuY3YtNC43LjAKCi0tLQogc3JjcGtncy9xaW1ndi90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvcWltZ3YvdGVtcGxhdGUgYi9zcmNwa2dzL3FpbWd2L3RlbXBsYXRlCmluZGV4IDdlYjMwZGIz Mzk5MmMuLmRkMzQxZGZlMWJmY2UgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcWltZ3YvdGVtcGxhdGUK KysrIGIvc3JjcGtncy9xaW1ndi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ3FpbWd2JwogcGtnbmFtZT1xaW1ndgogdmVyc2lvbj0xLjAuMgotcmV2aXNpb249 MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSIkKHZvcHRf aWYgdmlkZW8gLURWSURFT19TVVBQT1JUPU9OIC1EVklERU9fU1VQUE9SVD1PRkYpCiAgJCh2b3B0 X2lmIHNjYWxlIC1ET1BFTkNWX1NVUFBPUlQ9T04gLURPUEVOQ1ZfU1VQUE9SVD1PRkYpCgpGcm9t IDBiZDA2ZjM3NjQ4MWJkMjA0YzRhMGU3YjZhYTk5NDUxYjllNWIyNjIgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMTk6NTk6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwNi8xMTNdIHJldHJvc2hh cmU6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dzL3JldHJvc2hhcmUvdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3JldHJvc2hhcmUvdGVtcGxhdGUgYi9zcmNwa2dzL3Jl dHJvc2hhcmUvdGVtcGxhdGUKaW5kZXggOGEwNzg2YzIxYTA4Mi4uNzIwMjNmYTk4Yjc1MSAxMDA2 NDQKLS0tIGEvc3JjcGtncy9yZXRyb3NoYXJlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcmV0cm9z aGFyZS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3JldHJv c2hhcmUnCiBwa2duYW1lPXJldHJvc2hhcmUKIHZlcnNpb249MC42LjYKLXJldmlzaW9uPTIKK3Jl dmlzaW9uPTQKIGJ1aWxkX3N0eWxlPXFtYWtlCiAjWFhYIGJyb2FkY2FzdCBmZWF0dXJlIHJlcXVp cmVzIGFuIGFuY2llbnQgdWRwLWRpc2NvdmVyeS1jcHAgd2hpY2ggZWl0aGVyIG5lZWRzCiAjIHRv IGJlIGZldGNoZWQrcGF0Y2hlZCAoRlRCRlMpIGhlcmUgb3IgcGFja2FnZWQgOi8KCkZyb20gMTcw OWQ1YzdiY2I2M2E0ZmRlMmQyZmIwMTIyZTg3NDU1ZDg5NjYzYyBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAxOTo1OTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDA3LzExM10gd2FpZnUyeC1jb252 ZXJ0ZXItY3BwOiByZXZidW1wIGZvciBvcGVuY3YtNC43LjAKCi0tLQogc3JjcGtncy93YWlmdTJ4 LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3dhaWZ1MngtY29udmVy dGVyLWNwcC90ZW1wbGF0ZSBiL3NyY3BrZ3Mvd2FpZnUyeC1jb252ZXJ0ZXItY3BwL3RlbXBsYXRl CmluZGV4IDhjMDk1ZDBkN2JhYmEuLmFhNTJkOGM5ODFhODQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv d2FpZnUyeC1jb252ZXJ0ZXItY3BwL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvd2FpZnUyeC1jb252 ZXJ0ZXItY3BwL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn d2FpZnUyeC1jb252ZXJ0ZXItY3BwJwogcGtnbmFtZT13YWlmdTJ4LWNvbnZlcnRlci1jcHAKIHZl cnNpb249NS4yLjQKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBj b25maWd1cmVfYXJncz0iLURJTlNUQUxMX01PREVMUz1PTiIKIGhvc3RtYWtlZGVwZW5kcz0icGtn LWNvbmZpZyIKCkZyb20gMmM5OWJhZWIzMDBkZDNlMzMzNmY4NDY3YjBkNTMyYTA2NDlhOGVkNSBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMDozOCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDA4 LzExM10gdmxjOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvdmxjL3Rl bXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdmxjL3RlbXBsYXRlIGIvc3JjcGtncy92bGMv dGVtcGxhdGUKaW5kZXggMjEwNzYyYjBhN2UyOS4uODU1Y2E1MjM4NjYyNiAxMDA2NDQKLS0tIGEv c3JjcGtncy92bGMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy92bGMvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd2bGMnCiBwa2duYW1lPXZsYwogdmVyc2lvbj0z LjAuMTgKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUK IGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUtZ21lIC0tZGlzYWJsZS1saWJ0YXIgLS1lbmFibGUt amFjawogIC0tZW5hYmxlLWxpdmU1NTUgLS1kaXNhYmxlLWZsdWlkc3ludGggLS1lbmFibGUtZHZk cmVhZApAQCAtMjUsNyArMjUsNyBAQCBsaWIzMmRpc2FibGVkPXllcwogaG9zdG1ha2VkZXBlbmRz PSJhdXRvbWFrZSBsaWJ0b29sIHBrZy1jb25maWcgZmxleCBnZXR0ZXh0IGxpYmdjcnlwdC1kZXZl bAogIGxpdmU1NTUtZGV2ZWwgZ2V0dGV4dC1kZXZlbCAkKHZvcHRfaWYgbHVhIGx1YTUyKSAkKHZv cHRfaWYgY2hyb21lY2FzdCBwcm90b2J1ZikiCiBtYWtlZGVwZW5kcz0iCi0gYXZhaGktbGlicy1k ZXZlbCBkYnVzLWdsaWItZGV2ZWwgZmFhZDItZGV2ZWwgZmZtcGVnLWRldmVsIGZyZWVmb250LXR0 ZgorIGF2YWhpLWxpYnMtZGV2ZWwgZGJ1cy1nbGliLWRldmVsIGZhYWQyLWRldmVsIGZmbXBlZzQt ZGV2ZWwgZnJlZWZvbnQtdHRmCiAgZ251dGxzLWRldmVsIGphY2stZGV2ZWwgbGliYTUyLWRldmVs IGxpYmFzcy1kZXZlbCBsaWJibHVyYXktZGV2ZWwKICBsaWJjZGlvLWRldmVsIGxpYmRjYS1kZXZl bCBsaWJkdmJwc2ktZGV2ZWwgbGliZHZkbmF2LWRldmVsIGxpYm1hZC1kZXZlbAogIGxpYm1hdHJv c2thLWRldmVsIGxpYm1vZHBsdWctZGV2ZWwgbGlibXBjZGVjLWRldmVsIGxpYm1wZWcyLWRldmVs CgpGcm9tIDkzNDc4ZTczMDc0Mzk5ZGNiMGNhOTAxOGYwM2Q5NDE3ZDg0MDRlNjQgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMjA6MDA6NTUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwOS8xMTNdIG9z ZzogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL29zZy90ZW1wbGF0ZSB8 IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3Mvb3NnL3RlbXBsYXRlIGIvc3JjcGtncy9vc2cvdGVtcGxhdGUKaW5k ZXggYTllYmJkMjg3OTMzYi4uNzU1NzkzZjdlMTFiZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9vc2cv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9vc2cvdGVtcGxhdGUKQEAgLTgsNyArOCw3IEBAIGJ1aWxk X2hlbHBlcj0icWVtdSIKIGNvbmZpZ3VyZV9hcmdzPSItRExJQl9QT1NURklYPSIKIGhvc3RtYWtl ZGVwZW5kcz0icGtnLWNvbmZpZyB4cmFuZHIiCiBtYWtlZGVwZW5kcz0iTWVzYUxpYi1kZXZlbCBn dGtnbGV4dC1kZXZlbCBsaWJjdXJsLWRldmVsIGdpZmxpYi1kZXZlbCBsaWJyc3ZnLWRldmVsCi0g amFzcGVyLWRldmVsIHRpZmYtZGV2ZWwgbGliZ2RhbC1kZXZlbCBsaWJndGEtZGV2ZWwgZmZtcGVn LWRldmVsIHhpbmUtbGliLWRldmVsCisgamFzcGVyLWRldmVsIHRpZmYtZGV2ZWwgbGliZ2RhbC1k ZXZlbCBsaWJndGEtZGV2ZWwgZmZtcGVnNC1kZXZlbCB4aW5lLWxpYi1kZXZlbAogIFNETDItZGV2 ZWwgZ3N0LXBsdWdpbnMtYmFzZTEtZGV2ZWwKICAkKHZvcHRfaWYgb3BlbmV4ciBsaWJvcGVuZXhy LWRldmVsKQogICQodm9wdF9pZiBwb3BwbGVyIHBvcHBsZXItZ2xpYi1kZXZlbCkKCkZyb20gNmM4 OTVlOTc5ZWI5MjQwYjU2OWZjODUwMTQ1MGUzNjhmYmM3MjgzYiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMToxMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDEwLzExM10geGluZS1saWI6IHJl dmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy94aW5lLWxpYi90ZW1wbGF0ZSB8 IDYgKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MveGluZS1saWIvdGVtcGxhdGUgYi9zcmNwa2dzL3hpbmUt bGliL3RlbXBsYXRlCmluZGV4IGY3MTNlZmY0OWIwN2MuLmVkNjE5NGMxN2QxMWUgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MveGluZS1saWIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy94aW5lLWxpYi90ZW1w bGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3hpbmUtbGliJwogcGtn bmFtZT14aW5lLWxpYgotdmVyc2lvbj0xLjIuMTIKK3ZlcnNpb249MS4yLjEzCiByZXZpc2lvbj0x CiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1kaXNhYmxlLXZj ZCAtLWRpc2FibGUtZ25vbWV2ZnMgLS13aXRob3V0LWVzb3VuZCAtLWRpc2FibGUtZHhyMwpAQCAt OCw3ICs4LDcgQEAgY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS12Y2QgLS1kaXNhYmxlLWdub21l dmZzIC0td2l0aG91dC1lc291bmQgLS1kaXNhYmxlLWR4cjMKIGhvc3RtYWtlZGVwZW5kcz0iYXV0 b21ha2UgZ2V0dGV4dC1kZXZlbCBsaWJ0b29sIHBrZy1jb25maWcgcGVybCIKIG1ha2VkZXBlbmRz PSIKICB6bGliLWRldmVsIGFsc2EtbGliLWRldmVsIGxpYnhjYi1kZXZlbCBsaWJTTS1kZXZlbCBs aWJYZXh0LWRldmVsIGxpYlh2LWRldmVsCi0gbGliWHZNQy1kZXZlbCBsaWJhNTItZGV2ZWwgbGli bWFkLWRldmVsIGZmbXBlZy1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCisgbGliWHZNQy1kZXZlbCBs aWJhNTItZGV2ZWwgbGlibWFkLWRldmVsIGZmbXBlZzQtZGV2ZWwgcHVsc2VhdWRpby1kZXZlbAog IGphY2stZGV2ZWwgc2FtYmEtZGV2ZWwgbGliZmxhYy1kZXZlbCBsaWJtb2RwbHVnLWRldmVsIGxp Ym1wY2RlYy1kZXZlbAogIHNwZWV4LWRldmVsIGxpYnRoZW9yYS1kZXZlbCBsaWJ2b3JiaXMtZGV2 ZWwgbGliZGNhLWRldmVsIGZhYWQyLWRldmVsCiAgbGliY2Rpby1kZXZlbCBsaWJibHVyYXktZGV2 ZWwgYWFsaWItZGV2ZWwgbGliY2FjYS1kZXZlbCBsaWJYaW5lcmFtYS1kZXZlbApAQCAtMTksNyAr MTksNyBAQCBsaWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVyLCBMR1BMLTIuMC1vci1sYXRlciIKIGhv bWVwYWdlPSJodHRwOi8vd3d3LnhpbmUtcHJvamVjdC5vcmciCiBjaGFuZ2Vsb2c9Imh0dHBzOi8v c291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3hpbmUvZmlsZXMveGluZS1saWIvJHt2ZXJzaW9ufS9S RUFETUUudHh0L3ZpZXciCiBkaXN0ZmlsZXM9IiR7U09VUkNFRk9SR0VfU0lURX0veGluZS8ke3Br Z25hbWV9LSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09ZDYwNjI3MDQ2OGUxNTQwYzJhODlj MGQ3ZjVmZGYxMWUxN2VjYzBjMjY5OGNjMGJjYjEwNjVmZjI2YWJlZTA5OAorY2hlY2tzdW09NWYx MGQ2ZDcxOGE0YTUxYzE3ZWQxYjMyYjAzMWQ0ZjliODBiMDYxZTgyNzY1MzViMmJlMzFlNWFjNGI3 NWU2ZgogCiBjYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KIAlpNjg2LW11c2wpCgpGcm9t IDhkYTJhMzlkN2U4ZjMwZDkwYzg1ODY0Y2JmMTEwOWE0NzdmMjM1ODQgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxMS8xMTNdIFFNUGxheTI6 IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9RTVBsYXkyL3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9RTVBsYXkyL3RlbXBsYXRlIGIvc3JjcGtncy9RTVBsYXkyL3RlbXBs YXRlCmluZGV4IDg1MGRmOWQ0MThiOTAuLjhkMmNlN2E3NjE1NmMgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvUU1QbGF5Mi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdRTVBsYXkyJwogcGtnbmFtZT1RTVBsYXky CiB2ZXJzaW9uPTIzLjA2LjE3Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1j bWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS1xbWFrZSBxdDUtaG9zdC10b29s cyIKIG1ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBmZm1wZWctZGV2ZWwgbGliYXNzLWRldmVs IGxpYmNkaW8tZGV2ZWwgbGliZ21lLWRldmVsCgpGcm9tIDdkMjgzOTA1YjZmNDg2OGU4YWE1OTBi ODRiMWQ0OTVmY2ZlMWNkZjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAK U3ViamVjdDogW1BBVENIIDAxMi8xMTNdIGFsc2EtcGx1Z2luczogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL2Fsc2EtcGx1Z2lucy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvYWxzYS1wbHVnaW5zL3RlbXBsYXRlIGIvc3JjcGtncy9hbHNhLXBsdWdpbnMvdGVtcGxhdGUK aW5kZXggMGJmYTZkOWZkMjY0My4uYTU3MDhhN2Q4MmE4ZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9h bHNhLXBsdWdpbnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hbHNhLXBsdWdpbnMvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhbHNhLXBsdWdpbnMnCiBwa2du YW1lPWFsc2EtcGx1Z2lucwogdmVyc2lvbj0xLjIuNy4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1kaXNhYmxlLW1h ZW1vLXBsdWdpbiIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZyb20gNDE0M2U4YmE2 OWJiNjNiNTkzZGRiYTcxODIzZDg3OTFkOThjMWIzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAy MDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDEzLzExM10gYXJjYW46IHJldmJ1bXAgZm9y IGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9hcmNhbi90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvYXJjYW4vdGVtcGxhdGUgYi9zcmNwa2dzL2FyY2FuL3RlbXBsYXRlCmluZGV4IDdiZTk2NTJl Y2NmM2MuLmNjYzdkZjExY2VhYzYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYXJjYW4vdGVtcGxhdGUK KysrIGIvc3JjcGtncy9hcmNhbi90ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAKICMgISEga2VlcCBz eW5jZWQgd2l0aDogYWNmZ2ZzIGFjbGlwIGFsb2FkaW1hZ2UKIHBrZ25hbWU9YXJjYW4KIHZlcnNp b249MC42LjIuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogY3JlYXRlX3dya3NyYz15ZXMKIGJ1 aWxkX3dya3NyYz1hcmNhbi9zcmMKIGJ1aWxkX3N0eWxlPWNtYWtlCgpGcm9tIDBmZjI2OTAyMWE5 MTdjYjk5ZmUxMjNiMmU3MjllMjU0OTIzODc2N2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxNC8xMTNdIGF0dHJhY3Q6IHJldmJ1bXAgZm9y IGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRlIHwgNCArKy0tCiAx IGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvYXR0cmFjdC90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXR0cmFjdC90ZW1wbGF0ZQpp bmRleCAyNjE0NGU5MzFhM2M3Li5lNzYwYmYwZDE4YWVjIDEwMDY0NAotLS0gYS9zcmNwa2dzL2F0 dHJhY3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRlCkBAIC0xLDEyICsx LDEyIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdhdHRyYWN0JwogcGtnbmFtZT1hdHRyYWN0CiB2 ZXJzaW9uPTIuNi4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtbWFr ZWZpbGUKIG1ha2VfYnVpbGRfYXJncz0iVkVSQk9TRT0xIgogbWFrZV91c2VfZW52PXllcwogaG9z dG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgotbWFrZWRlcGVuZHM9IlNGTUwtZGV2ZWwgZmZtcGVn LWRldmVsIGZvbnRjb25maWctZGV2ZWwgZ2x1LWRldmVsIGxpYmFyY2hpdmUtZGV2ZWwKK21ha2Vk ZXBlbmRzPSJTRk1MLWRldmVsIGZmbXBlZzQtZGV2ZWwgZm9udGNvbmZpZy1kZXZlbCBnbHUtZGV2 ZWwgbGliYXJjaGl2ZS1kZXZlbAogIGxpYmN1cmwtZGV2ZWwgbGlianBlZy10dXJiby1kZXZlbCB4 aW5lLWxpYiByYXBpZGpzb24gbGliWHJhbmRyLWRldmVsIgogZGVwZW5kcz0iZ2l0Igogc2hvcnRf ZGVzYz0iQXR0cmFjdC1Nb2RlIGlzIGEgZ3JhcGhpY2FsIGZyb250ZW5kIGZvciBlbXVsYXRvcnMi CgpGcm9tIDI2NDkyYzc5YTA5NjZlODA2ODJjYmExOTcwZWIxMjAzMDUyNmRiNjAgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAxNS8xMTNdIGF1 YmlvOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvYXViaW8vcGF0Y2hlcy9m Zm1wZWc1LnBhdGNoIHwgMjUgKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9hdWJp by90ZW1wbGF0ZSAgICAgICAgICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAyNiBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9hdWJp by9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2F1YmlvL3BhdGNo ZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvYXViaW8vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmFhY2U0MWE2ZTZkOWEKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2F1YmlvL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApAQCAt MCwwICsxLDI1IEBACitGcm9tIDhhMDU0MjBlNWRkOGM3YjhiMjQ0N2Y4MmRjOTE5NzY1ODc2NTEx YjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXVsIEJyb3NzaWVyIDxwaWVtQHBp ZW0ub3JnPgorRGF0ZTogVHVlLCAyNSBKYW4gMjAyMiAxODozMDoyNyArMDEwMAorU3ViamVjdDog W1BBVENIXSBbc291cmNlX2F2Y29kZWNdIGRlZmluZSBGRl9BUElfTEFWRl9BVkNUWCBmb3IgbGli YXZjb2RlYyA+CisgNTksIHRoeCBAYmVyb2xpbnV4IChjbG9zZXMgZ2gtMzUzKQorCistLS0KKyBz cmMvaW8vc291cmNlX2F2Y29kZWMuYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2Vy dGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9pby9zb3VyY2VfYXZjb2RlYy5jIGIvc3JjL2lv L3NvdXJjZV9hdmNvZGVjLmMKK2luZGV4IGUwYWU5M2I1Li4xNDIxYmQ5YSAxMDA2NDQKKy0tLSBh L3NyYy9pby9zb3VyY2VfYXZjb2RlYy5jCisrKysgYi9zcmMvaW8vc291cmNlX2F2Y29kZWMuYwor QEAgLTY4LDYgKzY4LDEwIEBACisgI2RlZmluZSBBVUJJT19BVkNPREVDX01BWF9CVUZGRVJfU0la RSBBVl9JTlBVVF9CVUZGRVJfTUlOX1NJWkUKKyAjZW5kaWYKKyAKKysjaWYgTElCQVZDT0RFQ19W RVJTSU9OX01BSk9SID49IDU5CisrI2RlZmluZSBGRl9BUElfTEFWRl9BVkNUWCAxCisrI2VuZGlm CisrCisgc3RydWN0IF9hdWJpb19zb3VyY2VfYXZjb2RlY190IHsKKyAgIHVpbnRfdCBob3Bfc2l6 ZTsKKyAgIHVpbnRfdCBzYW1wbGVyYXRlOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdWJpby90ZW1w bGF0ZSBiL3NyY3BrZ3MvYXViaW8vdGVtcGxhdGUKaW5kZXggYWQxYzRiMjU2OTkxNy4uN2Q4NzVj YzAyNTQxYSAxMDA2NDQKLS0tIGEvc3JjcGtncy9hdWJpby90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L2F1YmlvL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnYXVi aW8nCiBwa2duYW1lPWF1YmlvCiB2ZXJzaW9uPTAuNC45Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBidWlsZF9zdHlsZT13YWYzCiAjIFhYWCBsYXNoLCBwdXJlIGFuZCBzd2lnIHN1cHBvcnQuCiBo b3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgdHh0Mm1hbiIKCkZyb20gYTlhY2E2ZmU1MjcyYjAw MjVlM2MxZGJhOGE4ZWMyNTFiZGQzNDgzZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0 NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE2LzExM10gYXVkYWNpb3VzLXBsdWdpbnM6IHJldmJ1 bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogLi4uL2F1ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZt cGVnNS5wYXRjaCAgIHwgNDMgKysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9hdWRhY2lvdXMt cGx1Z2lucy90ZW1wbGF0ZSAgICAgICAgICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgNDQg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv YXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL2F1 ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAwLi40ZTVlMzQwOTlkNzFjCi0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCAr MSw0MyBAQAorY29tbWl0IDI5OGFhMzcxYzU2YzJmNTJjMjVhMzNkOWJkZWM0OTE4YjExY2ViZGMK K0F1dGhvcjogdGliZXF1YWRvcmlhbiA8dGliZXF1YWRvcmlhbkBwb3N0ZW8uZGU+CitEYXRlOiAg IFNhdCBNYXIgMTkgMTg6NDA6MTIgMjAyMiArMDEwMAorCisgICAgYXVkYWNpb3VzLXBsdWdpbnM6 IHJlYnVpbGQgYWdhaW5zdCBmZm1wZWctNS4wCisKK2RpZmYgLS1naXQgYS9zcmNwa2dzL2F1ZGFj aW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnLTUuMC5wYXRjaCBiL3NyY3BrZ3MvYXVkYWNpb3Vz LXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWctNS4wLnBhdGNoCituZXcgZmlsZSBtb2RlIDEwMDY0NAor aW5kZXggMDAwMDAwMDAwMC4uNjE3YzExMjE1YgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjcGtn cy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZy01LjAucGF0Y2gKK0BAIC0wLDAgKzEs MzEgQEAKKytGcm9tIGY2MGJlYjQwMGVlYjFlNDc3OGJiZmQ3MzhiYzRhNGNjZWYzZGU1MzkgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCisrRnJvbTogSm9obiBMaW5kZ3JlbiA8am9obkBqbGluZGdy ZW4ubmV0PgorK0RhdGU6IFNhdCwgNSBNYXIgMjAyMiAxMjowNTozNCAtMDUwMAorK1N1YmplY3Q6 IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggRkZtcGVnIDUuMAorKworKy0tLQorKyBzcmMvZmZhdWRp by9mZmF1ZGlvLWNvcmUuY2MgfCA0ICsrLS0KKysgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkKKysKKytkaWZmIC0tZ2l0IGEvc3JjL2ZmYXVkaW8vZmZhdWRp by1jb3JlLmNjIGIvc3JjL2ZmYXVkaW8vZmZhdWRpby1jb3JlLmNjCisraW5kZXggMTZkYzYzZTNh Li5hMmI5NWZkNmMgMTAwNjQ0CisrLS0tIGEvc3JjL2ZmYXVkaW8vZmZhdWRpby1jb3JlLmNjCisr KysrIGIvc3JjL2ZmYXVkaW8vZmZhdWRpby1jb3JlLmNjCisrQEAgLTI3NCw3ICsyNzQsNyBAQCBz dGF0aWMgQVZJbnB1dEZvcm1hdCAqIGdldF9mb3JtYXRfYnlfY29udGVudCAoY29uc3QgY2hhciAq IG5hbWUsIFZGU0ZpbGUgJiBmaWxlKQorKyAgICAgICAgIEFWUHJvYmVEYXRhIGQgPSB7bmFtZSwg YnVmLCBmaWxsZWR9OworKyAgICAgICAgIHNjb3JlID0gdGFyZ2V0OworKyAKKystICAgICAgICBm ID0gYXZfcHJvYmVfaW5wdXRfZm9ybWF0MiAoJiBkLCB0cnVlLCAmIHNjb3JlKTsKKysrICAgICAg ICBmID0gKEFWSW5wdXRGb3JtYXQgKikgYXZfcHJvYmVfaW5wdXRfZm9ybWF0MiAoJiBkLCB0cnVl LCAmIHNjb3JlKTsKKysgICAgICAgICBpZiAoZikKKysgICAgICAgICAgICAgYnJlYWs7CisrIAor K0BAIC0zNDcsNyArMzQ3LDcgQEAgc3RhdGljIGJvb2wgZmluZF9jb2RlYyAoQVZGb3JtYXRDb250 ZXh0ICogYywgQ29kZWNJbmZvICogY2luZm8pCisrICNlbmRpZgorKyAgICAgICAgIGlmIChzdHJl YW0gJiYgc3RyZWFtLT5jb2RlY3BhciAmJiBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY190eXBlID09 IEFWTUVESUFfVFlQRV9BVURJTykKKysgICAgICAgICB7CisrLSAgICAgICAgICAgIEFWQ29kZWMg KiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyIChzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19p ZCk7CisrKyAgICAgICAgICAgIEFWQ29kZWMgKiBjb2RlYyA9IChBVkNvZGVjICopIGF2Y29kZWNf ZmluZF9kZWNvZGVyIChzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrIAorKyAgICAgICAg ICAgICBpZiAoY29kZWMpCisrICAgICAgICAgICAgIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYXVk YWNpb3VzLXBsdWdpbnMvdGVtcGxhdGUgYi9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3RlbXBs YXRlCmluZGV4IDg4Y2JjMTY3MWZjNmEuLmJlZWJmYWU1OWVkNDQgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvYXVkYWNpb3VzLXBsdWdpbnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdWRhY2lvdXMtcGx1 Z2lucy90ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAKICNLZWVwIGluIHN5bmMgd2l0aCBhdWRhY2lv dXMhCiBwa2duYW1lPWF1ZGFjaW91cy1wbHVnaW5zCiB2ZXJzaW9uPTQuMy4xCi1yZXZpc2lvbj0x CityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9IiQodm9wdF9i b29sIGd0azMgZ3RrKSAkKHZvcHRfYm9vbCBndGszKQogICQodm9wdF9ib29sIHF0KSAkKHZvcHRf Ym9vbCBxdCBxdDYpIgoKRnJvbSBlNWIxOGY1ZmViYTVkYTI2MmFlOGQ0ZjY2MTExNmRiMzYzNjY2 MGI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwMTcvMTEzXSBhdWRhY2l0eTogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNw a2dzL2F1ZGFjaXR5L3RlbXBsYXRlIHwgNSArKy0tLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0 aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2F1ZGFjaXR5L3Rl bXBsYXRlIGIvc3JjcGtncy9hdWRhY2l0eS90ZW1wbGF0ZQppbmRleCBkNTA5YzBhODk0MDc3Li4x MWUyMDI1NTY4NWIwIDEwMDY0NAotLS0gYS9zcmNwa2dzL2F1ZGFjaXR5L3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdhdWRhY2l0eScKIHBrZ25hbWU9YXVkYWNpdHkKIHZlcnNpb249Mi40LjEKLXJldmlz aW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9h cmdzPSItLXdpdGgtZmZtcGVnPXN5c3RlbSAtLXdpdGgtbGlic25kZmlsZT1zeXN0ZW0gLS13aXRo LWV4cGF0PXN5c3RlbQogIC0td2l0aC1saWJzb3hyPXN5c3RlbSAtLXdpdGgtbGFtZT1zeXN0ZW0g LS13aXRoLWx2Mj1zeXN0ZW0gYWNfY3ZfcGF0aF9XWF9DT05GSUc9d3gtY29uZmlnLWd0azMiCkBA IC05LDcgKzksNyBAQCBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgY21ha2UgZ2V0dGV4dCBs aWJ0b29sIG00IHdoaWNoIgogbWFrZWRlcGVuZHM9ImphY2stZGV2ZWwgd3hXaWRnZXRzLWd0azMt ZGV2ZWwgZ3RrKzMtZGV2ZWwKICBsaWJtYWQtZGV2ZWwgc291bmR0b3VjaC1kZXZlbCBsaWJzb3hy LWRldmVsCiAgdmFtcC1wbHVnaW4tc2RrLWRldmVsIGxhbWUtZGV2ZWwgbGliaWQzdGFnLWRldmVs IGxpYmZsYWMtZGV2ZWwKLSBmZm1wZWctZGV2ZWwgdHdvbGFtZS1kZXZlbCBzZXJkLWRldmVsIGx2 MiBsaWx2LWRldmVsIHN1aWwtZGV2ZWwiCisgZmZtcGVnNC1kZXZlbCB0d29sYW1lLWRldmVsIHNl cmQtZGV2ZWwgbHYyIGxpbHYtZGV2ZWwgc3VpbC1kZXZlbCIKIGRlcGVuZHM9ImRlc2t0b3AtZmls ZS11dGlscyBoaWNvbG9yLWljb24tdGhlbWUiCiBzaG9ydF9kZXNjPSJHcmFwaGljYWwgY3Jvc3Mt cGxhdGZvcm0gYXVkaW8gZWRpdG9yIgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lk bGludXgub3JnPiIKQEAgLTMzLDUgKzMzLDQgQEAgcG9zdF9pbnN0YWxsKCkgewogCXZjb3B5IHBs dWctaW5zIC91c3Ivc2hhcmUvYXVkYWNpdHkKIAogCXJtICR7REVTVERJUn0vdXNyL3NoYXJlL2Rv Yy9hdWRhY2l0eS9MSUNFTlNFLnR4dAotCXZsaWNlbnNlIExJQ0VOU0UudHh0IExJQ0VOU0UKIH0K CkZyb20gODZjZDViYmU0YTljOTE4ZDllNjFlYTBjNTU5N2RlMmVkM2NkNDI3ZiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE4LzExM10gYXZp ZGVtdXg6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9hdmlkZW11eC90ZW1w bGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYXZpZGVtdXgvdGVtcGxhdGUgYi9zcmNwa2dzL2F2aWRl bXV4L3RlbXBsYXRlCmluZGV4IDI1M2EwMjQzZTIyNTkuLjU1NzI4NTk4MmQyYjggMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvYXZpZGVtdXgvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9hdmlkZW11eC90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2F2aWRlbXV4JwogcGtn bmFtZT1hdmlkZW11eAogdmVyc2lvbj0yLjguMAotcmV2aXNpb249MgorcmV2aXNpb249MwogIyBD YW4ndCBiZSBjb21waWxlZCBmb3IgYWFyY2g2NCwgYXJtKiBvciBtaXBzKgogYXJjaHM9Ing4Nl82 NCogaTY4NioiCiBob3N0bWFrZWRlcGVuZHM9ImNtYWtlIHBrZy1jb25maWcgcXQ1LWhvc3QtdG9v bHMgcXQ1LWRldmVsIHRhciB5YXNtIgoKRnJvbSAwODQ1Mjc1NDU5ZTZlNzg3YTg0MmFiMGQ0YWU0 ZGZlYTNlMzVmNzcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwMTkvMTEzXSBiYXJlc2lwOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0K IHNyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmFyZXNpcC90ZW1w bGF0ZSBiL3NyY3BrZ3MvYmFyZXNpcC90ZW1wbGF0ZQppbmRleCBmMWJkMTgxNzA0OGI1Li5iMjFl MjIzMzQzMTZlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2JhcmVzaXAvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9iYXJlc2lwL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnYmFyZXNpcCcKIHBrZ25hbWU9YmFyZXNpcAogdmVyc2lvbj0yLjEwLjAKLXJldmlzaW9uPTEK K3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25m aWcgZ2xpYi1kZXZlbCIKIG1ha2VkZXBlbmRzPSJsaWJnc20tZGV2ZWwgbGlicG5nLWRldmVsIG9w ZW5zc2wtZGV2ZWwgbGlic25kZmlsZS1kZXZlbAoKRnJvbSBhZjhkZWMxYTdhZWMyZmRjZDI0NmRk YTU5ZGMzZjhmZGUwMmU1ZGNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwMjAvMTEzXSBibGVuZGVyOiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3MvYmxlbmRlci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQs IDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Js ZW5kZXIvdGVtcGxhdGUgYi9zcmNwa2dzL2JsZW5kZXIvdGVtcGxhdGUKaW5kZXggN2E3MTBhYzBk ZjQ5NS4uMGY3Mjg3NmQ0ZDcwNCAxMDA2NDQKLS0tIGEvc3JjcGtncy9ibGVuZGVyL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvYmxlbmRlci90ZW1wbGF0ZQpAQCAtOSw4ICs5LDggQEAgY29uZmlndXJl X2FyZ3M9Ii1EV0lUSF9JTlNUQUxMX1BPUlRBQkxFPU9GRiAtRFdJVEhfUFlUSE9OX0lOU1RBTEw9 T0ZGCiAgLURXSVRIX0pBQ0s9T04gLURXSVRIX0NPREVDX0ZGTVBFRz1PTiAtRFdJVEhfQ09ERUNf U05ERklMRT1PTiAtRFdJVEhfT1BFTk1QPU9OCiAgLURXSVRIX0ZGVFczPU9OIC1EV0lUSF9NT0Rf T0NFQU5TSU09T04gLURXSVRIX0NZQ0xFU19FTUJSRUU9T0ZGIC1EV0lUSF9PUEVOQ09MT1JJTz1P TgogIC1EV0lUSF9JTUFHRV9PUEVORVhSPU9OIC1EV0lUSF9JTUFHRV9PUEVOSlBFRz1PTiAtRFdJ VEhfT1BFTlNVQkRJVj1PTgotIC1EV0lUSF9PUEVOQ09MTEFEQT1PTiAtRFdJVEhfU1lTVEVNX0dM RVc9T04gLURXSVRIX09QRU5WREI9T04gLURXSVRIX0FMRU1CSUM9T04KLSAtRFdJVEhfR0hPU1Rf WDExPU9OIC1EV0lUSF9HSE9TVF9XQVlMQU5EPU9OIC1EV0lUSF9HSE9TVF9MSUJERUNPUj1PTgor IC1EV0lUSF9PUEVOQ09MTEFEQT1PTiAtRFdJVEhfT1BFTlZEQj1PTiAtRFdJVEhfQUxFTUJJQz1P TgorIC1EV0lUSF9HSE9TVF9YMTE9T04gLURXSVRIX0dIT1NUX1dBWUxBTkQ9T04gLURXSVRIX0dI T1NUX1dBWUxBTkRfTElCREVDT1I9T04KICAtRFdJVEhfQlVJTERJTkZPPU9GRiAtRFBZVEhPTl9W RVJTSU9OPSR7cHkzX3Zlcn0gLURQWVRIT05fTElCUEFUSD0vdXNyL2xpYgogIC1EUFlUSE9OX0xJ QlJBUlk9cHl0aG9uJHtweTNfdmVyfSR7cHkzX2FiaXZlcn0gLURQWVRIT05fSU5DTFVERV9ESVJT PS8ke3B5M19pbmN9CiAgLURXSVRIX1NZU1RFTV9MWk89T04gLURXSVRIX1NZU1RFTV9FSUdFTjM9 T04gLURXSVRIX1NZU1RFTV9GUkVFVFlQRT1PTiIKCkZyb20gYmY3ZmQ4ODc1OWU4YzUwZTY5Mzky ODVhZjI3YzFkOGZmMTg5YzczOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggMDIxLzExM10gY2FudGF0YTogcmV2YnVtcCBmb3IgZmZtcGVnLTYu MAoKLS0tCiBzcmNwa2dzL2NhbnRhdGEvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NhbnRh dGEvdGVtcGxhdGUgYi9zcmNwa2dzL2NhbnRhdGEvdGVtcGxhdGUKaW5kZXggNGI0MTdkODBkNWMy ZC4uOGE5MGFhYTRjMDdhMiAxMDA2NDQKLS0tIGEvc3JjcGtncy9jYW50YXRhL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvY2FudGF0YS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ2NhbnRhdGEnCiBwa2duYW1lPWNhbnRhdGEKIHZlcnNpb249Mi41LjAKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBr Zy1jb25maWcgcXQ1LXFtYWtlIHF0NS1ob3N0LXRvb2xzIHF0NS10b29scyIKIG1ha2VkZXBlbmRz PSJxdDUtZGV2ZWwgcXQ1LXRvb2xzLWRldmVsIHF0NS1zdmctZGV2ZWwgcXQ1LXhtbHBhdHRlcm5z LWRldmVsCgpGcm9tIDNjNjczNGQ3ZjM0N2QyYThiMWU0YjUwY2MwZTFlMzdkZTM3ZDJjMzcgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyMi8x MTNdIGNjZXh0cmFjdG9yOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mv Y2NleHRyYWN0b3IvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlv bnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jY2V4dHJhY3Rvci90 ZW1wbGF0ZSBiL3NyY3BrZ3MvY2NleHRyYWN0b3IvdGVtcGxhdGUKaW5kZXggOWFiY2Q4Mjg1MmIy Ny4uNmVjY2FkNTg4NWFmOSAxMDA2NDQKLS0tIGEvc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL2NjZXh0cmFjdG9yL3RlbXBsYXRlCkBAIC0xLDEyICsxLDEyIEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdjY2V4dHJhY3RvcicKIHBrZ25hbWU9Y2NleHRyYWN0b3IKIHZl cnNpb249MC45MwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfd3Jrc3JjPSJsaW51eCIK IGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWVuYWJsZS1vY3Ig LS1lbmFibGUtaGFyZHN1YngiCiBob3N0bWFrZWRlcGVuZHM9ImF1dG9tYWtlIHBrZy1jb25maWci Ci1tYWtlZGVwZW5kcz0ibGVwdG9uaWNhLWRldmVsIHRlc3NlcmFjdC1vY3ItZGV2ZWwgZmZtcGVn LWRldmVsIgorbWFrZWRlcGVuZHM9ImxlcHRvbmljYS1kZXZlbCB0ZXNzZXJhY3Qtb2NyLWRldmVs IGZmbXBlZzQtZGV2ZWwiCiBzaG9ydF9kZXNjPSJFeHRyYWN0IHN1YnRpdGxlcyBmcm9tIHZpZGVv IHN0cmVhbXMiCiBtYWludGFpbmVyPSJuZXdibHVlbW9vbiA8YmxhdW1vbGNoQG1haWxib3gub3Jn PiIKIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIiCgpGcm9tIDQ5YTBjY2NiZGQ3NDU2Mjg2OWMy MThjNTk1YjJmNGU5ODg0MDYzZTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0 MDAKU3ViamVjdDogW1BBVENIIDAyMy8xMTNdIGNocm9tYXByaW50OiByZXZidW1wIGZvciBmZm1w ZWctNi4wCgotLS0KIHNyY3BrZ3MvY2hyb21hcHJpbnQvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwg NTY5ICsrKysrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvY2hyb21hcHJpbnQvdGVtcGxhdGUg ICAgICAgICAgICAgIHwgICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDU3MCBpbnNlcnRpb25zKCsp LCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9jaHJvbWFwcmludC9w YXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9tYXByaW50L3Bh dGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvY2hyb21hcHJpbnQvcGF0Y2hlcy9mZm1wZWc1 LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmE5ZmQzMDdh MjNjOGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2Nocm9tYXByaW50L3BhdGNoZXMvZmZt cGVnNS5wYXRjaApAQCAtMCwwICsxLDU2OSBAQAorRnJvbSA4Y2NhZDY5MzcxNzdiMWI5MmU0MGFi OGY0NDQ3ZWEyN2JhYzAwOWE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYt OD9xP0x1az1DMz1BMT1DNT1BMT0yMExhbGluc2s9QzM9QkQ/PSA8bGFsaW5za3lAZ21haWwuY29t PgorRGF0ZTogRnJpLCA0IE5vdiAyMDIyIDIxOjQ3OjM4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hd IFVzZSBGRm1wZWcgNS54ICgjMTIwKQorCisqIFVzZSBGRm1wZWcgNS4xLjIgZm9yIENJIGJ1aWxk cworCisqIEJ1aWxkIG9uIFVidW50dSAyMC4wNAorCisqIFVwZ3JhZGUgY29kZSB0byBGRm1wZWcg NS54IEFQSXMKKworKiBPbmx5IHNldCBGRm1wZWcgaW5jbHVkZSBkaXJzIGlmIGJ1aWxkaW5nIHRv b2xzCisKKyogTm8gbG9uZ2VyIG5lZWRlZAorCisqIFVzZSB1YnVudHUgMjAuMDQKKy0tLQorIC5n aXRodWIvd29ya2Zsb3dzL2J1aWxkLnltbCAgICAgICAgICAgICAgICAgICB8ICAgNiArLQorIENN YWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNiAtLQorIHBh Y2thZ2UvYnVpbGQuc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQorIHNy Yy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yLmggICAgICAgICAgICB8ICAgMiAtCisgc3Jj L2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3JfYXZyZXNhbXBsZS5oIHwgIDcyIC0tLS0tLS0K KyBzcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9zd3Jlc2FtcGxlLmggfCAgMTggKy0K KyBzcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3JlYWRlci5oICAgICAgICAgICAgICAgfCAxOTcgKysr KysrKysrLS0tLS0tLS0tCisgdGVzdHMvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICA2ICsKKyA4IGZpbGVzIGNoYW5nZWQsIDEyMiBpbnNlcnRpb25zKCspLCAxOTkg ZGVsZXRpb25zKC0pCisgZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy9hdWRpby9mZm1wZWdfYXVkaW9f cHJvY2Vzc29yX2F2cmVzYW1wbGUuaAorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9D TWFrZUxpc3RzLnR4dAoraW5kZXggZjhkNmEzMi4uNGRhMjQwNSAxMDA2NDQKKy0tLSBhL0NNYWtl TGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTg0LDkgKzg0LDYgQEAgZmluZF9w YWNrYWdlKEZGbXBlZykKKyBpZihGRk1QRUdfTElCUkFSSUVTKQorIAljbWFrZV9wdXNoX2NoZWNr X3N0YXRlKFJFU0VUKQorIAlzZXQoQ01BS0VfUkVRVUlSRURfTElCUkFSSUVTICR7RkZNUEVHX0xJ QlJBUklFU30gJHtDTUFLRV9USFJFQURfTElCU19JTklUfSAtbG0pCistCWNoZWNrX2Z1bmN0aW9u X2V4aXN0cyhhdl9wYWNrZXRfdW5yZWYgSEFWRV9BVl9QQUNLRVRfVU5SRUYpCistCWNoZWNrX2Z1 bmN0aW9uX2V4aXN0cyhhdl9mcmFtZV9hbGxvYyBIQVZFX0FWX0ZSQU1FX0FMTE9DKQorLQljaGVj a19mdW5jdGlvbl9leGlzdHMoYXZfZnJhbWVfZnJlZSBIQVZFX0FWX0ZSQU1FX0ZSRUUpCisgCWNt YWtlX3BvcF9jaGVja19zdGF0ZSgpCisgZW5kaWYoKQorCitAQCAtMTYzLDE0ICsxNjAsMTEgQEAg bWVzc2FnZShTVEFUVVMgIlVzaW5nICR7RkZUX0xJQn0gZm9yIEZGVCBjYWxjdWxhdGlvbnMiKQor IGlmKE5PVCBBVURJT19QUk9DRVNTT1JfTElCKQorIAlpZihGRk1QRUdfTElCU1dSRVNBTVBMRV9G T1VORCkKKyAJCXNldChBVURJT19QUk9DRVNTT1JfTElCICJzd3Jlc2FtcGxlIikKKy0JZWxzZWlm KEZGTVBFR19MSUJBVlJFU0FNUExFX0ZPVU5EKQorLQkJc2V0KEFVRElPX1BST0NFU1NPUl9MSUIg ImF2cmVzYW1wbGUiKQorIAllbmRpZigpCisgZW5kaWYoKQorCisgaWYoQVVESU9fUFJPQ0VTU09S X0xJQiBTVFJFUVVBTCAic3dyZXNhbXBsZSIpCisgCWlmKEZGTVBFR19MSUJTV1JFU0FNUExFX0ZP VU5EKQorLQkJc2V0KFVTRV9BVlJFU0FNUExFIE9GRikKKyAJCXNldChVU0VfU1dSRVNBTVBMRSBP TikKKyAJCXNldChBVURJT19QUk9DRVNTT1JfTElCUkFSSUVTICR7RkZNUEVHX0xJQlNXUkVTQU1Q TEVfTElCUkFSSUVTfSkKKyAJCXNldChBVURJT19QUk9DRVNTT1JfSU5DTFVERV9ESVJTICR7RkZN UEVHX0xJQlNXUkVTQU1QTEVfSU5DTFVERV9ESVJTfSkKK0BAIC0xNzgsMTYgKzE3Miw2IEBAIGlm KEFVRElPX1BST0NFU1NPUl9MSUIgU1RSRVFVQUwgInN3cmVzYW1wbGUiKQorIAkJbWVzc2FnZShG QVRBTF9FUlJPUiAiU2VsZWN0ZWQgJHtBVURJT19QUk9DRVNTT1JfTElCfSBmb3IgYXVkaW8gcHJv Y2Vzc2luZywgYnV0IHRoZSBsaWJyYXJ5IGlzIG5vdCBmb3VuZCIpCisgCWVuZGlmKCkKKyAJbWVz c2FnZShTVEFUVVMgIlVzaW5nICR7QVVESU9fUFJPQ0VTU09SX0xJQn0gZm9yIGF1ZGlvIGNvbnZl cnNpb24iKQorLWVsc2VpZihBVURJT19QUk9DRVNTT1JfTElCIFNUUkVRVUFMICJhdnJlc2FtcGxl IikKKy0JaWYoRkZNUEVHX0xJQkFWUkVTQU1QTEVfRk9VTkQpCistCQlzZXQoVVNFX0FWUkVTQU1Q TEUgT04pCistCQlzZXQoVVNFX1NXUkVTQU1QTEUgT0ZGKQorLQkJc2V0KEFVRElPX1BST0NFU1NP Ul9MSUJSQVJJRVMgJHtGRk1QRUdfTElCQVZSRVNBTVBMRV9MSUJSQVJJRVN9KQorLQkJc2V0KEFV RElPX1BST0NFU1NPUl9JTkNMVURFX0RJUlMgJHtGRk1QRUdfTElCQVZSRVNBTVBMRV9JTkNMVURF X0RJUlN9KQorLQllbHNlKCkKKy0JCW1lc3NhZ2UoRkFUQUxfRVJST1IgIlNlbGVjdGVkICR7QVVE SU9fUFJPQ0VTU09SX0xJQn0gZm9yIGF1ZGlvIHByb2Nlc3NpbmcsIGJ1dCB0aGUgbGlicmFyeSBp cyBub3QgZm91bmQiKQorLQllbmRpZigpCistCW1lc3NhZ2UoU1RBVFVTICJVc2luZyAke0FVRElP X1BST0NFU1NPUl9MSUJ9IGZvciBhdWRpbyBjb252ZXJzaW9uIikKKyBlbHNlKCkKKyAJbWVzc2Fn ZShTVEFUVVMgIkJ1aWxkaW5nIHdpdGhvdXQgYXVkaW8gY29udmVyc2lvbiBzdXBwb3J0LCBwbGVh c2UgaW5zdGFsbCBGRm1wZWcgd2l0aCBsaWJzd3Jlc2FtcGxlIikKKyBlbmRpZigpCitkaWZmIC0t Z2l0IGEvcGFja2FnZS9idWlsZC5zaCBiL3BhY2thZ2UvYnVpbGQuc2gKK2luZGV4IGRhNjMxYWUu LmI0MWQzNmUgMTAwNzU1CistLS0gYS9wYWNrYWdlL2J1aWxkLnNoCisrKysgYi9wYWNrYWdlL2J1 aWxkLnNoCitAQCAtNyw4ICs3LDggQEAgc2V0IC1ldXgKKworIEJBU0VfRElSPSQoY2QgJChkaXJu YW1lICQwKS8uLiAmJiBwd2QpCisKKy1GRk1QRUdfVkVSU0lPTj00LjQuMQorLUZGTVBFR19CVUlM RF9UQUc9djQuNC4xLTEKKytGRk1QRUdfVkVSU0lPTj01LjEuMgorK0ZGTVBFR19CVUlMRF9UQUc9 diR7RkZNUEVHX1ZFUlNJT059LTEKKworIFRNUF9CVUlMRF9ESVI9JEJBU0VfRElSLyQobWt0ZW1w IC1kIGJ1aWxkLlhYWFhYWFhYKQorIHRyYXAgJ3JtIC1yZiAkVE1QX0JVSUxEX0RJUicgRVhJVAor ZGlmZiAtLWdpdCBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yLmggYi9zcmMvYXVk aW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvci5oCitpbmRleCA3NjI4ZmM3Li4zOWY0ZjZkIDEwMDY0 NAorLS0tIGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3IuaAorKysrIGIvc3JjL2F1 ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3IuaAorQEAgLTEwLDggKzEwLDYgQEAKKworICNpZiBk ZWZpbmVkKFVTRV9TV1JFU0FNUExFKQorICNpbmNsdWRlICJhdWRpby9mZm1wZWdfYXVkaW9fcHJv Y2Vzc29yX3N3cmVzYW1wbGUuaCIKKy0jZWxpZiBkZWZpbmVkKFVTRV9BVlJFU0FNUExFKQorLSNp bmNsdWRlICJhdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX2F2cmVzYW1wbGUuaCIKKyAjZWxz ZQorICNlcnJvciAibm8gYXVkaW8gcHJvY2Vzc2luZyBsaWJyYXJ5IgorICNlbmRpZgorZGlmZiAt LWdpdCBhL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX2F2cmVzYW1wbGUuaCBiL3Ny Yy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX2F2cmVzYW1wbGUuaAorZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CitpbmRleCBiZDg1ZjkyLi4wMDAwMDAwCistLS0gYS9zcmMvYXVkaW8vZmZt cGVnX2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmgKKysrKyAvZGV2L251bGwKK0BAIC0xLDcy ICswLDAgQEAKKy0vLyBDb3B5cmlnaHQgKEMpIDIwMTYgIEx1a2FzIExhbGluc2t5CistLy8gRGlz dHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLCBzZWUgdGhlIExJQ0VOU0UgZmlsZSBmb3Ig ZGV0YWlscy4KKy0KKy0jaWZuZGVmIENIUk9NQVBSSU5UX0FVRElPX0ZGTVBFR19BVURJT19QUk9D RVNTT1JfQVZSRVNBTVBMRV9IXworLSNkZWZpbmUgQ0hST01BUFJJTlRfQVVESU9fRkZNUEVHX0FV RElPX1BST0NFU1NPUl9BVlJFU0FNUExFX0hfCistCistZXh0ZXJuICJDIiB7CistI2luY2x1ZGUg PGxpYmF2cmVzYW1wbGUvYXZyZXNhbXBsZS5oPgorLX0KKy0KKy1uYW1lc3BhY2UgY2hyb21hcHJp bnQgeworLQorLWNsYXNzIEZGbXBlZ0F1ZGlvUHJvY2Vzc29yIHsKKy1wdWJsaWM6CistCUZGbXBl Z0F1ZGlvUHJvY2Vzc29yKCkgeworLQkJbV9yZXNhbXBsZV9jdHggPSBhdnJlc2FtcGxlX2FsbG9j X2NvbnRleHQoKTsKKy0JfQorLQorLQl+RkZtcGVnQXVkaW9Qcm9jZXNzb3IoKSB7CistCQlhdnJl c2FtcGxlX2ZyZWUoJm1fcmVzYW1wbGVfY3R4KTsKKy0JfQorLQorLQl2b2lkIFNldENvbXBhdGli bGVNb2RlKCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJmaWx0ZXJfc2l6 ZSIsIDE2LCAwKTsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAicGhhc2Vfc2hp ZnQiLCA4LCAwKTsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAibGluZWFyX2lu dGVycCIsIDEsIDApOworLQkJYXZfb3B0X3NldF9kb3VibGUobV9yZXNhbXBsZV9jdHgsICJjdXRv ZmYiLCAwLjgsIDApOworLQl9CistCistCXZvaWQgU2V0SW5wdXRDaGFubmVsTGF5b3V0KGludDY0 X3QgY2hhbm5lbF9sYXlvdXQpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAi aW5fY2hhbm5lbF9sYXlvdXQiLCBjaGFubmVsX2xheW91dCwgMCk7CistCX0KKy0KKy0Jdm9pZCBT ZXRJbnB1dFNhbXBsZUZvcm1hdChBVlNhbXBsZUZvcm1hdCBzYW1wbGVfZm9ybWF0KSB7CistCQlh dl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgImluX3NhbXBsZV9mbXQiLCBzYW1wbGVfZm9y bWF0LCAwKTsKKy0JfQorLQorLQl2b2lkIFNldElucHV0U2FtcGxlUmF0ZShpbnQgc2FtcGxlX3Jh dGUpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAiaW5fc2FtcGxlX3JhdGUi LCBzYW1wbGVfcmF0ZSwgMCk7CistCX0KKy0KKy0Jdm9pZCBTZXRPdXRwdXRDaGFubmVsTGF5b3V0 KGludDY0X3QgY2hhbm5lbF9sYXlvdXQpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVf Y3R4LCAib3V0X2NoYW5uZWxfbGF5b3V0IiwgY2hhbm5lbF9sYXlvdXQsIDApOworLQl9CistCist CXZvaWQgU2V0T3V0cHV0U2FtcGxlRm9ybWF0KEFWU2FtcGxlRm9ybWF0IHNhbXBsZV9mb3JtYXQp IHsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAib3V0X3NhbXBsZV9mbXQiLCBz YW1wbGVfZm9ybWF0LCAwKTsKKy0JfQorLQorLQl2b2lkIFNldE91dHB1dFNhbXBsZVJhdGUoaW50 IHNhbXBsZV9yYXRlKSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwgIm91dF9z YW1wbGVfZm10Iiwgc2FtcGxlX3JhdGUsIDApOworLQl9CistCistCWludCBJbml0KCkgeworLQkJ cmV0dXJuIGF2cmVzYW1wbGVfb3BlbihtX3Jlc2FtcGxlX2N0eCk7CistCX0KKy0KKy0JaW50IENv bnZlcnQodWludDhfdCAqKm91dCwgaW50IG91dF9jb3VudCwgY29uc3QgdWludDhfdCAqKmluLCBp bnQgaW5fY291bnQpIHsKKy0JCXJldHVybiBhdnJlc2FtcGxlX2NvbnZlcnQobV9yZXNhbXBsZV9j dHgsIG91dCwgMCwgb3V0X2NvdW50LCAodWludDhfdCAqKikgaW4sIDAsIGluX2NvdW50KTsKKy0J fQorLQorLQlpbnQgRmx1c2godWludDhfdCAqKm91dCwgaW50IG91dF9jb3VudCkgeworLQkJcmV0 dXJuIGF2cmVzYW1wbGVfcmVhZChtX3Jlc2FtcGxlX2N0eCwgb3V0LCBvdXRfY291bnQpOworLQl9 CistCistcHJpdmF0ZToKKy0JQVZBdWRpb1Jlc2FtcGxlQ29udGV4dCAqbV9yZXNhbXBsZV9jdHgg PSBudWxscHRyOworLX07CistCistfTsgLy8gbmFtZXNwYWNlIGNocm9tYXByaW50CistCistI2Vu ZGlmCitkaWZmIC0tZ2l0IGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3Jfc3dyZXNh bXBsZS5oIGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3Jfc3dyZXNhbXBsZS5oCitp bmRleCBiODYyNjZiLi5iMWQ0YmVhIDEwMDY0NAorLS0tIGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRp b19wcm9jZXNzb3Jfc3dyZXNhbXBsZS5oCisrKysgYi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3By b2Nlc3Nvcl9zd3Jlc2FtcGxlLmgKK0BAIC0yOCwzMCArMjgsMjggQEAgcHVibGljOgorIAkJYXZf b3B0X3NldF9kb3VibGUobV9zd3JfY3R4LCAiY3V0b2ZmIiwgMC44LCAwKTsKKyAJfQorCistCXZv aWQgU2V0SW5wdXRDaGFubmVsTGF5b3V0KGludDY0X3QgY2hhbm5lbF9sYXlvdXQpIHsKKy0JCWF2 X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgImljbCIsIGNoYW5uZWxfbGF5b3V0LCAwKTsKKy0JCWF2 X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgImljaCIsIGF2X2dldF9jaGFubmVsX2xheW91dF9uYl9j aGFubmVscyhjaGFubmVsX2xheW91dCksIDApOworKwl2b2lkIFNldElucHV0Q2hhbm5lbExheW91 dChBVkNoYW5uZWxMYXlvdXQgKmNoYW5uZWxfbGF5b3V0KSB7CisrCQlhdl9vcHRfc2V0X2ludCht X3N3cl9jdHgsICJpbl9jaGFubmVsX2xheW91dCIsIGNoYW5uZWxfbGF5b3V0LT51Lm1hc2ssIDAp OworIAl9CisKKyAJdm9pZCBTZXRJbnB1dFNhbXBsZUZvcm1hdChBVlNhbXBsZUZvcm1hdCBzYW1w bGVfZm9ybWF0KSB7CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJpc2YiLCBzYW1wbGVf Zm9ybWF0LCAwKTsKKysJCWF2X29wdF9zZXRfc2FtcGxlX2ZtdChtX3N3cl9jdHgsICJpbl9zYW1w bGVfZm10Iiwgc2FtcGxlX2Zvcm1hdCwgMCk7CisgCX0KKworIAl2b2lkIFNldElucHV0U2FtcGxl UmF0ZShpbnQgc2FtcGxlX3JhdGUpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgImlz ciIsIHNhbXBsZV9yYXRlLCAwKTsKKysJCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgImluX3Nh bXBsZV9yYXRlIiwgc2FtcGxlX3JhdGUsIDApOworIAl9CisKKy0Jdm9pZCBTZXRPdXRwdXRDaGFu bmVsTGF5b3V0KGludDY0X3QgY2hhbm5lbF9sYXlvdXQpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1f c3dyX2N0eCwgIm9jbCIsIGNoYW5uZWxfbGF5b3V0LCAwKTsKKy0JCWF2X29wdF9zZXRfaW50KG1f c3dyX2N0eCwgIm9jaCIsIGF2X2dldF9jaGFubmVsX2xheW91dF9uYl9jaGFubmVscyhjaGFubmVs X2xheW91dCksIDApOworKwl2b2lkIFNldE91dHB1dENoYW5uZWxMYXlvdXQoQVZDaGFubmVsTGF5 b3V0ICpjaGFubmVsX2xheW91dCkgeworKwkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAib3V0 X2NoYW5uZWxfbGF5b3V0IiwgY2hhbm5lbF9sYXlvdXQtPnUubWFzaywgMCk7CisgCX0KKworIAl2 b2lkIFNldE91dHB1dFNhbXBsZUZvcm1hdChBVlNhbXBsZUZvcm1hdCBzYW1wbGVfZm9ybWF0KSB7 CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJvc2YiLCBzYW1wbGVfZm9ybWF0LCAwKTsK KysJCWF2X29wdF9zZXRfc2FtcGxlX2ZtdChtX3N3cl9jdHgsICJvdXRfc2FtcGxlX2ZtdCIsIHNh bXBsZV9mb3JtYXQsIDApOworIAl9CisKKyAJdm9pZCBTZXRPdXRwdXRTYW1wbGVSYXRlKGludCBz YW1wbGVfcmF0ZSkgeworLQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAib3NyIiwgc2FtcGxl X3JhdGUsIDApOworKwkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAib3V0X3NhbXBsZV9yYXRl Iiwgc2FtcGxlX3JhdGUsIDApOworIAl9CisKKyAJaW50IEluaXQoKSB7CitkaWZmIC0tZ2l0IGEv c3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19yZWFkZXIuaCBiL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9f cmVhZGVyLmgKK2luZGV4IDU1NTAxNjQuLjFjNmIzNDYgMTAwNjQ0CistLS0gYS9zcmMvYXVkaW8v ZmZtcGVnX2F1ZGlvX3JlYWRlci5oCisrKysgYi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3JlYWRl ci5oCitAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CisgCWJvb2wgUmVhZChjb25zdCBpbnQxNl90 ICoqZGF0YSwgc2l6ZV90ICpzaXplKTsKKworIAlib29sIElzT3BlbigpIGNvbnN0IHsgcmV0dXJu IG1fb3BlbmVkOyB9CistCWJvb2wgSXNGaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmluaXNo ZWQgJiYgIW1fZ290X2ZyYW1lOyB9CisrCWJvb2wgSXNGaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJu ICFtX2hhc19tb3JlX3BhY2tldHMgJiYgIW1faGFzX21vcmVfZnJhbWVzOyB9CisKKyAJc3RkOjpz dHJpbmcgR2V0RXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CisgCWludCBHZXRFcnJv ckNvZGUoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yX2NvZGU7IH0KK0BAIC03NCwyMCArNzQsMTkg QEAgcHJpdmF0ZToKKyAJdWludDhfdCAqbV9jb252ZXJ0X2J1ZmZlclsxXSA9IHsgbnVsbHB0ciB9 OworIAlpbnQgbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzID0gMDsKKworLQlBVklucHV0Rm9y bWF0ICptX2lucHV0X2ZtdCA9IG51bGxwdHI7CisrCWNvbnN0IEFWSW5wdXRGb3JtYXQgKm1faW5w dXRfZm10ID0gbnVsbHB0cjsKKyAJQVZEaWN0aW9uYXJ5ICptX2lucHV0X29wdHMgPSBudWxscHRy OworCisgCUFWRm9ybWF0Q29udGV4dCAqbV9mb3JtYXRfY3R4ID0gbnVsbHB0cjsKKyAJQVZDb2Rl Y0NvbnRleHQgKm1fY29kZWNfY3R4ID0gbnVsbHB0cjsKKy0JQVZGcmFtZSAqbV9mcmFtZSA9IG51 bGxwdHI7CisgCWludCBtX3N0cmVhbV9pbmRleCA9IC0xOworIAlzdGQ6OnN0cmluZyBtX2Vycm9y OworIAlpbnQgbV9lcnJvcl9jb2RlID0gMDsKKy0JYm9vbCBtX2ZpbmlzaGVkID0gZmFsc2U7Cisg CWJvb2wgbV9vcGVuZWQgPSBmYWxzZTsKKy0JaW50IG1fZ290X2ZyYW1lID0gMDsKKy0JQVZQYWNr ZXQgbV9wYWNrZXQ7CistCUFWUGFja2V0IG1fcGFja2V0MDsKKysJYm9vbCBtX2hhc19tb3JlX3Bh Y2tldHMgPSB0cnVlOworKwlib29sIG1faGFzX21vcmVfZnJhbWVzID0gdHJ1ZTsKKysJQVZQYWNr ZXQgKm1fcGFja2V0ID0gbnVsbHB0cjsKKysJQVZGcmFtZSAqbV9mcmFtZSA9IG51bGxwdHI7CisK KyAJaW50IG1fb3V0cHV0X3NhbXBsZV9yYXRlID0gMDsKKyAJaW50IG1fb3V0cHV0X2NoYW5uZWxz ID0gMDsKK0BAIC05OCwxOSArOTcsMTIgQEAgcHJpdmF0ZToKKworIGlubGluZSBGRm1wZWdBdWRp b1JlYWRlcjo6RkZtcGVnQXVkaW9SZWFkZXIoKSB7CisgCWF2X2xvZ19zZXRfbGV2ZWwoQVZfTE9H X1FVSUVUKTsKKy0KKy0JYXZfaW5pdF9wYWNrZXQoJm1fcGFja2V0KTsKKy0JbV9wYWNrZXQuZGF0 YSA9IG51bGxwdHI7CistCW1fcGFja2V0LnNpemUgPSAwOworLQorLQltX3BhY2tldDAgPSBtX3Bh Y2tldDsKKyB9CisKKyBpbmxpbmUgRkZtcGVnQXVkaW9SZWFkZXI6On5GRm1wZWdBdWRpb1JlYWRl cigpIHsKKyAJQ2xvc2UoKTsKKyAJYXZfZGljdF9mcmVlKCZtX2lucHV0X29wdHMpOworIAlhdl9m cmVlcCgmbV9jb252ZXJ0X2J1ZmZlclswXSk7CistCWF2X3BhY2tldF91bnJlZigmbV9wYWNrZXQw KTsKKyB9CisKKyBpbmxpbmUgYm9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6U2V0SW5wdXRGb3JtYXQo Y29uc3QgY2hhciAqbmFtZSkgeworQEAgLTEzNSwxMSArMTI3LDEwIEBAIGlubGluZSBib29sIEZG bXBlZ0F1ZGlvUmVhZGVyOjpPcGVuKGNvbnN0IHN0ZDo6c3RyaW5nICZmaWxlX25hbWUpIHsKKwor IAlDbG9zZSgpOworCistICAgIGF2X2luaXRfcGFja2V0KCZtX3BhY2tldCk7CistCW1fcGFja2V0 LmRhdGEgPSBudWxscHRyOworLQltX3BhY2tldC5zaXplID0gMDsKKy0KKy0JbV9wYWNrZXQwID0g bV9wYWNrZXQ7CisrCW1fcGFja2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7CisrCWlmICghbV9wYWNr ZXQpIHsKKysJCXJldHVybiBmYWxzZTsKKysJfQorCisgCXJldCA9IGF2Zm9ybWF0X29wZW5faW5w dXQoJm1fZm9ybWF0X2N0eCwgZmlsZV9uYW1lLmNfc3RyKCksIG1faW5wdXRfZm10LCAmbV9pbnB1 dF9vcHRzKTsKKyAJaWYgKHJldCA8IDApIHsKK0BAIC0xNTMsMjYgKzE0NCwzMSBAQCBpbmxpbmUg Ym9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6T3Blbihjb25zdCBzdGQ6OnN0cmluZyAmZmlsZV9uYW1l KSB7CisgCQlyZXR1cm4gZmFsc2U7CisgCX0KKworLQlBVkNvZGVjICpjb2RlYzsKKysJY29uc3Qg QVZDb2RlYyAqY29kZWM7CisgCXJldCA9IGF2X2ZpbmRfYmVzdF9zdHJlYW0obV9mb3JtYXRfY3R4 LCBBVk1FRElBX1RZUEVfQVVESU8sIC0xLCAtMSwgJmNvZGVjLCAwKTsKKyAJaWYgKHJldCA8IDAp IHsKKyAJCVNldEVycm9yKCJDb3VsZCBub3QgZmluZCBhbnkgYXVkaW8gc3RyZWFtIGluIHRoZSBm aWxlIiwgcmV0KTsKKyAJCXJldHVybiBmYWxzZTsKKyAJfQorIAltX3N0cmVhbV9pbmRleCA9IHJl dDsKKysJYXV0byBzdHJlYW0gPSBtX2Zvcm1hdF9jdHgtPnN0cmVhbXNbbV9zdHJlYW1faW5kZXhd OworCistCW1fY29kZWNfY3R4ID0gbV9mb3JtYXRfY3R4LT5zdHJlYW1zW21fc3RyZWFtX2luZGV4 XS0+Y29kZWM7CisrCW1fY29kZWNfY3R4ID0gYXZjb2RlY19hbGxvY19jb250ZXh0Myhjb2RlYyk7 CisgCW1fY29kZWNfY3R4LT5yZXF1ZXN0X3NhbXBsZV9mbXQgPSBBVl9TQU1QTEVfRk1UX1MxNjsK KworKwlyZXQgPSBhdmNvZGVjX3BhcmFtZXRlcnNfdG9fY29udGV4dChtX2NvZGVjX2N0eCwgc3Ry ZWFtLT5jb2RlY3Bhcik7CisrCWlmIChyZXQgPCAwKSB7CisrCQlTZXRFcnJvcigiQ291bGQgbm90 IGNvcHkgdGhlIHN0cmVhbSBwYXJhbWV0ZXJzIiwgcmV0KTsKKysJCXJldHVybiBmYWxzZTsKKysJ fQorKworIAlyZXQgPSBhdmNvZGVjX29wZW4yKG1fY29kZWNfY3R4LCBjb2RlYywgbnVsbHB0cik7 CisgCWlmIChyZXQgPCAwKSB7CisgCQlTZXRFcnJvcigiQ291bGQgbm90IG9wZW4gdGhlIGNvZGVj IiwgcmV0KTsKKyAJCXJldHVybiBmYWxzZTsKKyAJfQorCistCWlmICghbV9jb2RlY19jdHgtPmNo YW5uZWxfbGF5b3V0KSB7CistCQltX2NvZGVjX2N0eC0+Y2hhbm5lbF9sYXlvdXQgPSBhdl9nZXRf ZGVmYXVsdF9jaGFubmVsX2xheW91dChtX2NvZGVjX2N0eC0+Y2hhbm5lbHMpOworLQl9CisrCWF2 X2R1bXBfZm9ybWF0KG1fZm9ybWF0X2N0eCwgMCwgImZvbyIsIDApOworCisgCW1fZnJhbWUgPSBh dl9mcmFtZV9hbGxvYygpOworIAlpZiAoIW1fZnJhbWUpIHsKK0BAIC0xODMsMTkgKzE3OSwyMyBA QCBpbmxpbmUgYm9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6T3Blbihjb25zdCBzdGQ6OnN0cmluZyAm ZmlsZV9uYW1lKSB7CisgCQltX291dHB1dF9zYW1wbGVfcmF0ZSA9IG1fY29kZWNfY3R4LT5zYW1w bGVfcmF0ZTsKKyAJfQorCistCWlmICghbV9vdXRwdXRfY2hhbm5lbHMpIHsKKy0JCW1fb3V0cHV0 X2NoYW5uZWxzID0gbV9jb2RlY19jdHgtPmNoYW5uZWxzOworKwlBVkNoYW5uZWxMYXlvdXQgb3V0 cHV0X2NoYW5uZWxfbGF5b3V0OworKwlpZiAobV9vdXRwdXRfY2hhbm5lbHMpIHsKKysJCWF2X2No YW5uZWxfbGF5b3V0X2RlZmF1bHQoJm91dHB1dF9jaGFubmVsX2xheW91dCwgbV9vdXRwdXRfY2hh bm5lbHMpOworKwl9IGVsc2UgeworKwkJbV9vdXRwdXRfY2hhbm5lbHMgPSBtX2NvZGVjX2N0eC0+ Y2hfbGF5b3V0Lm5iX2NoYW5uZWxzOworKwkJYXZfY2hhbm5lbF9sYXlvdXRfZGVmYXVsdCgmb3V0 cHV0X2NoYW5uZWxfbGF5b3V0LCBtX291dHB1dF9jaGFubmVscyk7CisgCX0KKworLQlpZiAobV9j b2RlY19jdHgtPnNhbXBsZV9mbXQgIT0gQVZfU0FNUExFX0ZNVF9TMTYgfHwgbV9jb2RlY19jdHgt PmNoYW5uZWxzICE9IG1fb3V0cHV0X2NoYW5uZWxzIHx8IG1fY29kZWNfY3R4LT5zYW1wbGVfcmF0 ZSAhPSBtX291dHB1dF9zYW1wbGVfcmF0ZSkgeworKwlpZiAobV9jb2RlY19jdHgtPnNhbXBsZV9m bXQgIT0gQVZfU0FNUExFX0ZNVF9TMTYgfHwgbV9jb2RlY19jdHgtPmNoX2xheW91dC5uYl9jaGFu bmVscyAhPSBtX291dHB1dF9jaGFubmVscyB8fCBtX2NvZGVjX2N0eC0+c2FtcGxlX3JhdGUgIT0g bV9vdXRwdXRfc2FtcGxlX3JhdGUpIHsKKyAJCW1fY29udmVydGVyLnJlc2V0KG5ldyBGRm1wZWdB dWRpb1Byb2Nlc3NvcigpKTsKKyAJCW1fY29udmVydGVyLT5TZXRDb21wYXRpYmxlTW9kZSgpOwor IAkJbV9jb252ZXJ0ZXItPlNldElucHV0U2FtcGxlRm9ybWF0KG1fY29kZWNfY3R4LT5zYW1wbGVf Zm10KTsKKyAJCW1fY29udmVydGVyLT5TZXRJbnB1dFNhbXBsZVJhdGUobV9jb2RlY19jdHgtPnNh bXBsZV9yYXRlKTsKKy0JCW1fY29udmVydGVyLT5TZXRJbnB1dENoYW5uZWxMYXlvdXQobV9jb2Rl Y19jdHgtPmNoYW5uZWxfbGF5b3V0KTsKKysJCW1fY29udmVydGVyLT5TZXRJbnB1dENoYW5uZWxM YXlvdXQoJihtX2NvZGVjX2N0eC0+Y2hfbGF5b3V0KSk7CisgCQltX2NvbnZlcnRlci0+U2V0T3V0 cHV0U2FtcGxlRm9ybWF0KEFWX1NBTVBMRV9GTVRfUzE2KTsKKyAJCW1fY29udmVydGVyLT5TZXRP dXRwdXRTYW1wbGVSYXRlKG1fb3V0cHV0X3NhbXBsZV9yYXRlKTsKKy0JCW1fY29udmVydGVyLT5T ZXRPdXRwdXRDaGFubmVsTGF5b3V0KGF2X2dldF9kZWZhdWx0X2NoYW5uZWxfbGF5b3V0KG1fb3V0 cHV0X2NoYW5uZWxzKSk7CisrCQltX2NvbnZlcnRlci0+U2V0T3V0cHV0Q2hhbm5lbExheW91dCgm b3V0cHV0X2NoYW5uZWxfbGF5b3V0KTsKKyAJCWF1dG8gcmV0ID0gbV9jb252ZXJ0ZXItPkluaXQo KTsKKyAJCWlmIChyZXQgIT0gMCkgeworIAkJCVNldEVycm9yKCJDb3VsZCBub3QgY3JlYXRlIGFu IGF1ZGlvIGNvbnZlcnRlciBpbnN0YW5jZSIsIHJldCk7CitAQCAtMjAzLDEwICsyMDMsMTEgQEAg aW5saW5lIGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6Ok9wZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmZp bGVfbmFtZSkgeworIAkJfQorIAl9CisKKysJYXZfY2hhbm5lbF9sYXlvdXRfdW5pbml0KCZvdXRw dXRfY2hhbm5lbF9sYXlvdXQpOworKworIAltX29wZW5lZCA9IHRydWU7CistCW1fZmluaXNoZWQg PSBmYWxzZTsKKy0JbV9nb3RfZnJhbWUgPSAwOworLQltX25iX3BhY2tldHMgPSAwOworKwltX2hh c19tb3JlX3BhY2tldHMgPSB0cnVlOworKwltX2hhc19tb3JlX2ZyYW1lcyA9IHRydWU7CisgCW1f ZGVjb2RlX2Vycm9yID0gMDsKKworIAlyZXR1cm4gdHJ1ZTsKK0BAIC0yMTQsNiArMjE1LDcgQEAg aW5saW5lIGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6Ok9wZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmZp bGVfbmFtZSkgeworCisgaW5saW5lIHZvaWQgRkZtcGVnQXVkaW9SZWFkZXI6OkNsb3NlKCkgewor IAlhdl9mcmFtZV9mcmVlKCZtX2ZyYW1lKTsKKysJYXZfcGFja2V0X2ZyZWUoJm1fcGFja2V0KTsK KworIAltX3N0cmVhbV9pbmRleCA9IC0xOworCitAQCAtMjUyLDkxICsyNTQsOTggQEAgaW5saW5l IGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6OlJlYWQoY29uc3QgaW50MTZfdCAqKmRhdGEsIHNpemVf dCAqc2l6ZSkgeworIAkJcmV0dXJuIGZhbHNlOworIAl9CisKKysJKmRhdGEgPSBudWxscHRyOwor Kwkqc2l6ZSA9IDA7CisrCisgCWludCByZXQ7CisrCWJvb2wgbmVlZHNfcGFja2V0ID0gZmFsc2U7 CisgCXdoaWxlICh0cnVlKSB7CistCQl3aGlsZSAobV9wYWNrZXQuc2l6ZSA8PSAwKSB7CistCQkJ YXZfcGFja2V0X3VucmVmKCZtX3BhY2tldDApOworLQkJCWF2X2luaXRfcGFja2V0KCZtX3BhY2tl dCk7CistCQkJbV9wYWNrZXQuZGF0YSA9IG51bGxwdHI7CistCQkJbV9wYWNrZXQuc2l6ZSA9IDA7 CistCQkJcmV0ID0gYXZfcmVhZF9mcmFtZShtX2Zvcm1hdF9jdHgsICZtX3BhY2tldCk7CisrCQl3 aGlsZSAobmVlZHNfcGFja2V0ICYmIG1fcGFja2V0LT5zaXplID09IDApIHsKKysJCQlyZXQgPSBh dl9yZWFkX2ZyYW1lKG1fZm9ybWF0X2N0eCwgbV9wYWNrZXQpOworIAkJCWlmIChyZXQgPCAwKSB7 CisgCQkJCWlmIChyZXQgPT0gQVZFUlJPUl9FT0YpIHsKKy0JCQkJCW1fZmluaXNoZWQgPSB0cnVl OworKwkJCQkJbmVlZHNfcGFja2V0ID0gZmFsc2U7CisrCQkJCQltX2hhc19tb3JlX3BhY2tldHMg PSBmYWxzZTsKKyAJCQkJCWJyZWFrOworLQkJCQl9IGVsc2UgeworKwkJCQl9CisrCQkJCVNldEVy cm9yKCJFcnJvciByZWFkaW5nIGZyb20gdGhlIGF1ZGlvIHNvdXJjZSIsIHJldCk7CisrCQkJCXJl dHVybiBmYWxzZTsKKysJCQl9CisrCQkJaWYgKG1fcGFja2V0LT5zdHJlYW1faW5kZXggPT0gbV9z dHJlYW1faW5kZXgpIHsKKysJCQkJbmVlZHNfcGFja2V0ID0gZmFsc2U7CisrCQkJfSBlbHNlIHsK KysJCQkJYXZfcGFja2V0X3VucmVmKG1fcGFja2V0KTsKKysJCQl9CisrCQl9CisrCisrCQlpZiAo bV9wYWNrZXQtPnNpemUgIT0gMCkgeworKwkJCXJldCA9IGF2Y29kZWNfc2VuZF9wYWNrZXQobV9j b2RlY19jdHgsIG1fcGFja2V0KTsKKysJCQlpZiAocmV0IDwgMCkgeworKwkJCQlpZiAocmV0ICE9 IEFWRVJST1IoRUFHQUlOKSkgeworIAkJCQkJU2V0RXJyb3IoIkVycm9yIHJlYWRpbmcgZnJvbSB0 aGUgYXVkaW8gc291cmNlIiwgcmV0KTsKKyAJCQkJCXJldHVybiBmYWxzZTsKKyAJCQkJfQorLQkJ CX0KKy0JCQltX3BhY2tldDAgPSBtX3BhY2tldDsKKy0JCQlpZiAobV9wYWNrZXQuc3RyZWFtX2lu ZGV4ICE9IG1fc3RyZWFtX2luZGV4KSB7CistCQkJCW1fcGFja2V0LmRhdGEgPSBudWxscHRyOwor LQkJCQltX3BhY2tldC5zaXplID0gMDsKKyAJCQl9IGVsc2UgeworLQkJCQltX25iX3BhY2tldHMr KzsKKysJCQkJYXZfcGFja2V0X3VucmVmKG1fcGFja2V0KTsKKyAJCQl9CisgCQl9CisKKy0JCXJl dCA9IGF2Y29kZWNfZGVjb2RlX2F1ZGlvNChtX2NvZGVjX2N0eCwgbV9mcmFtZSwgJm1fZ290X2Zy YW1lLCAmbV9wYWNrZXQpOworKwkJcmV0ID0gYXZjb2RlY19yZWNlaXZlX2ZyYW1lKG1fY29kZWNf Y3R4LCBtX2ZyYW1lKTsKKyAJCWlmIChyZXQgPCAwKSB7CistCQkJaWYgKG1fZGVjb2RlX2Vycm9y KSB7CistCQkJCVNldEVycm9yKCJFcnJvciBkZWNvZGluZyBhdWRpbyBmcmFtZSIsIG1fZGVjb2Rl X2Vycm9yKTsKKy0JCQkJcmV0dXJuIGZhbHNlOworKwkJCWlmIChyZXQgPT0gQVZFUlJPUl9FT0Yp IHsKKysJCQkJbV9oYXNfbW9yZV9mcmFtZXMgPSBmYWxzZTsKKysJCQl9IGVsc2UgaWYgKHJldCA9 PSBBVkVSUk9SKEVBR0FJTikpIHsKKysJCQkJaWYgKG1faGFzX21vcmVfcGFja2V0cykgeworKwkJ CQkJbmVlZHNfcGFja2V0ID0gdHJ1ZTsKKysJCQkJCWNvbnRpbnVlOworKwkJCQl9IGVsc2Ugewor KwkJCQkJbV9oYXNfbW9yZV9mcmFtZXMgPSBmYWxzZTsKKysJCQkJfQorIAkJCX0KKy0JCQltX2Rl Y29kZV9lcnJvciA9IHJldDsKKy0JCQltX3BhY2tldC5kYXRhID0gbnVsbHB0cjsKKy0JCQltX3Bh Y2tldC5zaXplID0gMDsKKy0JCQljb250aW51ZTsKKysJCQlTZXRFcnJvcigiRXJyb3IgZGVjb2Rp bmcgdGhlIGF1ZGlvIHNvdXJjZSIsIHJldCk7CisrCQkJcmV0dXJuIGZhbHNlOworIAkJfQorCist CQlicmVhazsKKy0JfQorLQorLQltX2RlY29kZV9lcnJvciA9IDA7CistCistCWNvbnN0IGludCBk ZWNvZGVkID0gc3RkOjptaW4ocmV0LCBtX3BhY2tldC5zaXplKTsKKy0JbV9wYWNrZXQuZGF0YSAr PSBkZWNvZGVkOworLQltX3BhY2tldC5zaXplIC09IGRlY29kZWQ7CistCistCWlmIChtX2dvdF9m cmFtZSkgeworLQkJaWYgKG1fY29udmVydGVyKSB7CistCQkJaWYgKG1fZnJhbWUtPm5iX3NhbXBs ZXMgPiBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMpIHsKKy0JCQkJaW50IGxpbnNpemU7Cist CQkJCWF2X2ZyZWVwKCZtX2NvbnZlcnRfYnVmZmVyWzBdKTsKKy0JCQkJbV9jb252ZXJ0X2J1ZmZl cl9uYl9zYW1wbGVzID0gc3RkOjptYXgoMTAyNCAqIDgsIG1fZnJhbWUtPm5iX3NhbXBsZXMpOwor LQkJCQlyZXQgPSBhdl9zYW1wbGVzX2FsbG9jKG1fY29udmVydF9idWZmZXIsICZsaW5zaXplLCBt X2NvZGVjX2N0eC0+Y2hhbm5lbHMsIG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcywgQVZfU0FN UExFX0ZNVF9TMTYsIDEpOworLQkJCQlpZiAocmV0IDwgMCkgeworLQkJCQkJU2V0RXJyb3IoIkNv dWxkbid0IGFsbG9jYXRlIGF1ZGlvIGNvbnZlcnRlciBidWZmZXIiLCByZXQpOworKwkJaWYgKG1f ZnJhbWUtPm5iX3NhbXBsZXMgPiAwKSB7CisrCQkJaWYgKG1fY29udmVydGVyKSB7CisrCQkJCWlm IChtX2ZyYW1lLT5uYl9zYW1wbGVzID4gbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzKSB7Cisr CQkJCQlpbnQgbGluc2l6ZTsKKysJCQkJCWF2X2ZyZWVwKCZtX2NvbnZlcnRfYnVmZmVyWzBdKTsK KysJCQkJCW1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcyA9IHN0ZDo6bWF4KDEwMjQgKiA4LCBt X2ZyYW1lLT5uYl9zYW1wbGVzKTsKKysJCQkJCXJldCA9IGF2X3NhbXBsZXNfYWxsb2MobV9jb252 ZXJ0X2J1ZmZlciwgJmxpbnNpemUsIG1fY29kZWNfY3R4LT5jaF9sYXlvdXQubmJfY2hhbm5lbHMs IG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcywgQVZfU0FNUExFX0ZNVF9TMTYsIDEpOworKwkJ CQkJaWYgKHJldCA8IDApIHsKKysJCQkJCQlTZXRFcnJvcigiQ291bGRuJ3QgYWxsb2NhdGUgYXVk aW8gY29udmVydGVyIGJ1ZmZlciIsIHJldCk7CisrCQkJCQkJcmV0dXJuIGZhbHNlOworKwkJCQkJ fQorKwkJCQl9CisrCQkJCWF1dG8gbmJfc2FtcGxlcyA9IG1fY29udmVydGVyLT5Db252ZXJ0KG1f Y29udmVydF9idWZmZXIsIG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcywgKGNvbnN0IHVpbnQ4 X3QgKiopIG1fZnJhbWUtPmRhdGEsIG1fZnJhbWUtPm5iX3NhbXBsZXMpOworKwkJCQlpZiAobmJf c2FtcGxlcyA8IDApIHsKKysJCQkJCVNldEVycm9yKCJDb3VsZG4ndCBjb252ZXJ0IGF1ZGlvIiwg cmV0KTsKKyAJCQkJCXJldHVybiBmYWxzZTsKKyAJCQkJfQorLQkJCX0KKy0JCQlhdXRvIG5iX3Nh bXBsZXMgPSBtX2NvbnZlcnRlci0+Q29udmVydChtX2NvbnZlcnRfYnVmZmVyLCBtX2NvbnZlcnRf YnVmZmVyX25iX3NhbXBsZXMsIChjb25zdCB1aW50OF90ICoqKSBtX2ZyYW1lLT5kYXRhLCBtX2Zy YW1lLT5uYl9zYW1wbGVzKTsKKy0JCQlpZiAobmJfc2FtcGxlcyA8IDApIHsKKy0JCQkJU2V0RXJy b3IoIkNvdWxkbid0IGNvbnZlcnQgYXVkaW8iLCByZXQpOworLQkJCQlyZXR1cm4gZmFsc2U7Cist CQkJfQorLQkJCSpkYXRhID0gKGNvbnN0IGludDE2X3QgKikgbV9jb252ZXJ0X2J1ZmZlclswXTsK Ky0JCQkqc2l6ZSA9IG5iX3NhbXBsZXM7CistCQl9IGVsc2UgeworLQkJCSpkYXRhID0gKGNvbnN0 IGludDE2X3QgKikgbV9mcmFtZS0+ZGF0YVswXTsKKy0JCQkqc2l6ZSA9IG1fZnJhbWUtPm5iX3Nh bXBsZXM7CistCQl9CistCX0gZWxzZSB7CistCQlpZiAobV9maW5pc2hlZCAmJiBtX2NvbnZlcnRl cikgeworLQkJCWF1dG8gbmJfc2FtcGxlcyA9IG1fY29udmVydGVyLT5GbHVzaChtX2NvbnZlcnRf YnVmZmVyLCBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMpOworLQkJCWlmIChuYl9zYW1wbGVz IDwgMCkgeworLQkJCQlTZXRFcnJvcigiQ291bGRuJ3QgY29udmVydCBhdWRpbyIsIHJldCk7Cist CQkJCXJldHVybiBmYWxzZTsKKy0JCQl9IGVsc2UgaWYgKG5iX3NhbXBsZXMgPiAwKSB7CistCQkJ CW1fZ290X2ZyYW1lID0gMTsKKyAJCQkJKmRhdGEgPSAoY29uc3QgaW50MTZfdCAqKSBtX2NvbnZl cnRfYnVmZmVyWzBdOworIAkJCQkqc2l6ZSA9IG5iX3NhbXBsZXM7CisrCQkJfSBlbHNlIHsKKysJ CQkJKmRhdGEgPSAoY29uc3QgaW50MTZfdCAqKSBtX2ZyYW1lLT5kYXRhWzBdOworKwkJCQkqc2l6 ZSA9IG1fZnJhbWUtPm5iX3NhbXBsZXM7CisrCQkJfQorKwkJfSBlbHNlIHsKKysJCQlpZiAobV9j b252ZXJ0ZXIpIHsKKysJCQkJaWYgKElzRmluaXNoZWQoKSkgeworKwkJCQkJYXV0byBuYl9zYW1w bGVzID0gbV9jb252ZXJ0ZXItPkZsdXNoKG1fY29udmVydF9idWZmZXIsIG1fY29udmVydF9idWZm ZXJfbmJfc2FtcGxlcyk7CisrCQkJCQlpZiAobmJfc2FtcGxlcyA8IDApIHsKKysJCQkJCQlTZXRF cnJvcigiQ291bGRuJ3QgY29udmVydCBhdWRpbyIsIHJldCk7CisrCQkJCQkJcmV0dXJuIGZhbHNl OworKwkJCQkJfSBlbHNlIGlmIChuYl9zYW1wbGVzID4gMCkgeworKwkJCQkJCSpkYXRhID0gKGNv bnN0IGludDE2X3QgKikgbV9jb252ZXJ0X2J1ZmZlclswXTsKKysJCQkJCQkqc2l6ZSA9IG5iX3Nh bXBsZXM7CisrCQkJCQl9CisrCQkJCX0KKyAJCQl9CisgCQl9CistCX0KKworLQlyZXR1cm4gdHJ1 ZTsKKysJCXJldHVybiB0cnVlOworKwl9CisgfQorCisgaW5saW5lIHZvaWQgRkZtcGVnQXVkaW9S ZWFkZXI6OlNldEVycm9yKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIGludCBlcnJudW0pIHsKK2RpZmYg LS1naXQgYS90ZXN0cy9DTWFrZUxpc3RzLnR4dCBiL3Rlc3RzL0NNYWtlTGlzdHMudHh0CitpbmRl eCBhMmI1MTdiLi4xMjNlNjQzIDEwMDY0NAorLS0tIGEvdGVzdHMvQ01ha2VMaXN0cy50eHQKKysr KyBiL3Rlc3RzL0NNYWtlTGlzdHMudHh0CitAQCAtMzgsNiArMzgsMTIgQEAgc2V0KFNSQ1MKKwor IGlmKEJVSUxEX1RPT0xTKQorIAlzZXQoU1JDUyAke1NSQ1N9IC4uL3NyYy9hdWRpby9mZm1wZWdf YXVkaW9fcmVhZGVyX3Rlc3QuY3BwKQorKyAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKAorKyAgICAg ICAgJHtGRk1QRUdfTElCQVZGT1JNQVRfSU5DTFVERV9ESVJTfQorKyAgICAgICAgJHtGRk1QRUdf TElCQVZDT0RFQ19JTkNMVURFX0RJUlN9CisrICAgICAgICAke0ZGTVBFR19MSUJBVlVUSUxfSU5D TFVERV9ESVJTfQorKyAgICAgICAgJHtBVURJT19QUk9DRVNTT1JfSU5DTFVERV9ESVJTfQorKyAg ICApCisgCWxpbmtfbGlicmFyaWVzKGZwY2FsY19saWJzKQorIGVuZGlmKCkKKworLS0gCisyLjM4 LjEKKworCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9tYXByaW50L3RlbXBsYXRlIGIvc3JjcGtn cy9jaHJvbWFwcmludC90ZW1wbGF0ZQppbmRleCA3ZWY3ODM4OTQ5ZjNhLi4xZjdiYmM3MGEyMmM4 IDEwMDY0NAotLS0gYS9zcmNwa2dzL2Nocm9tYXByaW50L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv Y2hyb21hcHJpbnQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdjaHJvbWFwcmludCcKIHBrZ25hbWU9Y2hyb21hcHJpbnQKIHZlcnNpb249MS41LjEKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURC VUlMRF9UT09MUz1PTiIKIG1ha2VfY2hlY2tfdGFyZ2V0PSJjaGVjayIKCkZyb20gNTcyOGIwYmEw YTNmMjBkNzhlM2FiZTc4YTk3Y2M2NzA5YWE1ZWM1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAy MDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI0LzExM10gY2hyb21pdW06IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogLi4uL3BhdGNoZXMvY2hyb21pdW0tOTMtZmZtcGVnLTQuNC5w YXRjaCAgICAgIHwgMzYgLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9m Zm1wZWc1LnBhdGNoICAgICAgICB8IDQ3ICsrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvY2hy b21pdW0vdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiAzIGZpbGVzIGNoYW5n ZWQsIDQ4IGluc2VydGlvbnMoKyksIDM3IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9jaHJvbWl1bS05My1mZm1wZWctNC40LnBhdGNoCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gK CmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvY2hyb21pdW0tOTMtZmZtcGVn LTQuNC5wYXRjaCBiL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9jaHJvbWl1bS05My1mZm1wZWct NC40LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGVjNzM2Zjk4YmM3Li4w MDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9jaHJvbWl1bS05My1m Zm1wZWctNC40LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotZGlmZiAtLWdp dCBhL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MgYi9tZWRpYS9maWx0ZXJzL2ZmbXBl Z19kZW11eGVyLmNjCi1pbmRleCBhYzQ3MTNiMDcyNjguLjQ5MmE5YTM3ZDA5NiAxMDA2NDQKLS0t LSBhL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MKLSsrKyBiL21lZGlhL2ZpbHRlcnMv ZmZtcGVnX2RlbXV4ZXIuY2MKLUBAIC00MjcsMTEgKzQyNywxMSBAQCB2b2lkIEZGbXBlZ0RlbXV4 ZXJTdHJlYW06OkVucXVldWVQYWNrZXQoU2NvcGVkQVZQYWNrZXQgcGFja2V0KSB7Ci0gICBzY29w ZWRfcmVmcHRyPERlY29kZXJCdWZmZXI+IGJ1ZmZlcjsKLSAKLSAgIGlmICh0eXBlKCkgPT0gRGVt dXhlclN0cmVhbTo6VEVYVCkgewotLSAgICBzaXplX3QgaWRfc2l6ZSA9IDA7Ci0rICAgIGludCBp ZF9zaXplID0gMDsKLSAgICAgdWludDhfdCogaWRfZGF0YSA9IGF2X3BhY2tldF9nZXRfc2lkZV9k YXRhKAotICAgICAgICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFUQV9XRUJWVFRfSURFTlRJRklF UiwgJmlkX3NpemUpOwotIAotLSAgICBzaXplX3Qgc2V0dGluZ3Nfc2l6ZSA9IDA7Ci0rICAgIGlu dCBzZXR0aW5nc19zaXplID0gMDsKLSAgICAgdWludDhfdCogc2V0dGluZ3NfZGF0YSA9IGF2X3Bh Y2tldF9nZXRfc2lkZV9kYXRhKAotICAgICAgICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFUQV9X RUJWVFRfU0VUVElOR1MsICZzZXR0aW5nc19zaXplKTsKLSAKLUBAIC00NDMsNyArNDQzLDcgQEAg dm9pZCBGRm1wZWdEZW11eGVyU3RyZWFtOjpFbnF1ZXVlUGFja2V0KFNjb3BlZEFWUGFja2V0IHBh Y2tldCkgewotICAgICBidWZmZXIgPSBEZWNvZGVyQnVmZmVyOjpDb3B5RnJvbShwYWNrZXQtPmRh dGEsIHBhY2tldC0+c2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2lkZV9kYXRhLmRhdGEoKSwgc2lkZV9kYXRhLnNpemUoKSk7Ci0gICB9IGVsc2UgewotLSAgICBz aXplX3Qgc2lkZV9kYXRhX3NpemUgPSAwOwotKyAgICBpbnQgc2lkZV9kYXRhX3NpemUgPSAwOwot ICAgICB1aW50OF90KiBzaWRlX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKLSAgICAg ICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfTUFUUk9TS0FfQkxPQ0tBRERJVElPTkFMLCAm c2lkZV9kYXRhX3NpemUpOwotIAotQEAgLTUwNCw3ICs1MDQsNyBAQCB2b2lkIEZGbXBlZ0RlbXV4 ZXJTdHJlYW06OkVucXVldWVQYWNrZXQoU2NvcGVkQVZQYWNrZXQgcGFja2V0KSB7Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0LT5zaXplIC0gZGF0YV9vZmZz ZXQpOwotICAgICB9Ci0gCi0tICAgIHNpemVfdCBza2lwX3NhbXBsZXNfc2l6ZSA9IDA7Ci0rICAg IGludCBza2lwX3NhbXBsZXNfc2l6ZSA9IDA7Ci0gICAgIGNvbnN0IHVpbnQzMl90KiBza2lwX3Nh bXBsZXNfcHRyID0KLSAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihh dl9wYWNrZXRfZ2V0X3NpZGVfZGF0YSgKLSAgICAgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BL VF9EQVRBX1NLSVBfU0FNUExFUywgJnNraXBfc2FtcGxlc19zaXplKSk7CmRpZmYgLS1naXQgYS9z cmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvY2hyb21pdW0v cGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMDAuLjI0ZTJkYTM4ZTM0Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2Nocm9taXVt L3BhdGNoZXMvZmZtcGVnNS5wYXRjaApAQCAtMCwwICsxLDQ3IEBACistLS0gYS9tZWRpYS9maWx0 ZXJzL2ZmbXBlZ19kZW11eGVyLmNjCTIwMjMtMDEtMjMgMTc6MzM6NTcuMzY2MjEzODA1ICswMjAw CisrKysgYi9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19kZW11eGVyLmNjCTIwMjMtMDEtMjMgMTc6NDM6 MDkuMjgzNDM2OTgzICswMjAwCitAQCAtOTIsMjQgKzkyLDEyIEBACisgCisgc3RhdGljIGJhc2U6 OlRpbWVEZWx0YSBFeHRyYWN0U3RhcnRUaW1lKEFWU3RyZWFtKiBzdHJlYW0pIHsKKyAgIC8vIFRo ZSBkZWZhdWx0IHN0YXJ0IHRpbWUgaXMgemVyby4KKy0gIGJhc2U6OlRpbWVEZWx0YSBzdGFydF90 aW1lOworKyAgYmFzZTo6VGltZURlbHRhIHN0YXJ0X3RpbWUgPSBrTm9UaW1lc3RhbXA7CisgCisg ICAvLyBGaXJzdCB0cnkgdG8gdXNlICB0aGUgfHN0YXJ0X3RpbWV8IHZhbHVlIGFzIGlzLgorLSAg aWYgKHN0cmVhbS0+c3RhcnRfdGltZSAhPSBrTm9GRm1wZWdUaW1lc3RhbXApCisrICBpZiAoc3Ry ZWFtLT5zdGFydF90aW1lICE9IGtOb0ZGbXBlZ1RpbWVzdGFtcCkgLy8gQVZfTk9QVFNfVkFMVUUK KyAgICAgc3RhcnRfdGltZSA9IENvbnZlcnRGcm9tVGltZUJhc2Uoc3RyZWFtLT50aW1lX2Jhc2Us IHN0cmVhbS0+c3RhcnRfdGltZSk7CisgCistICAvLyBOZXh0IHRyeSB0byB1c2UgdGhlIGZpcnN0 IERUUyB2YWx1ZSwgZm9yIGNvZGVjcyB3aGVyZSB3ZSBrbm93IFBUUyA9PSBEVFMKKy0gIC8vIChl eGNsdWRlcyBhbGwgSDI2eCBjb2RlY3MpLiBUaGUgc3RhcnQgdGltZSBtdXN0IGJlIHJldHVybmVk IGluIFBUUy4KKy0gIGlmIChhdl9zdHJlYW1fZ2V0X2ZpcnN0X2R0cyhzdHJlYW0pICE9IGtOb0ZG bXBlZ1RpbWVzdGFtcCAmJgorLSAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFW X0NPREVDX0lEX0hFVkMgJiYKKy0gICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBB Vl9DT0RFQ19JRF9IMjY0ICYmCistICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0g QVZfQ09ERUNfSURfTVBFRzQpIHsKKy0gICAgY29uc3QgYmFzZTo6VGltZURlbHRhIGZpcnN0X3B0 cyA9CistICAgICAgICBDb252ZXJ0RnJvbVRpbWVCYXNlKHN0cmVhbS0+dGltZV9iYXNlLCBhdl9z dHJlYW1fZ2V0X2ZpcnN0X2R0cyhzdHJlYW0pKTsKKy0gICAgaWYgKGZpcnN0X3B0cyA8IHN0YXJ0 X3RpbWUpCistICAgICAgc3RhcnRfdGltZSA9IGZpcnN0X3B0czsKKy0gIH0KKy0KKyAgIHJldHVy biBzdGFydF90aW1lOworIH0KKyAKK0BAIC0xNTk3LDcgKzE1ODUsNyBAQAorICAgZm9yIChjb25z dCBhdXRvJiBzdHJlYW0gOiBzdHJlYW1zXykgeworICAgICBpZiAoIXN0cmVhbSB8fCBzdHJlYW0t PklzRW5hYmxlZCgpICE9IGVuYWJsZWQpCisgICAgICAgY29udGludWU7CistICAgIGlmIChhdl9z dHJlYW1fZ2V0X2ZpcnN0X2R0cyhzdHJlYW0tPmF2X3N0cmVhbSgpKSA9PSBrSW52YWxpZFBUU01h cmtlcikKKysgICAgaWYgKHN0cmVhbS0+YXZfc3RyZWFtKCktPnN0YXJ0X3RpbWUgPT0gQVZfTk9Q VFNfVkFMVUUpCisgICAgICAgY29udGludWU7CisgICAgIGlmICghbG93ZXN0X3N0YXJ0X3RpbWVf c3RyZWFtIHx8CisgICAgICAgICBzdHJlYW0tPnN0YXJ0X3RpbWUoKSA8IGxvd2VzdF9zdGFydF90 aW1lX3N0cmVhbS0+c3RhcnRfdGltZSgpKSB7CitAQCAtMTYxOCw3ICsxNjA2LDcgQEAKKyAgICAg aWYgKHN0cmVhbS0+dHlwZSgpICE9IERlbXV4ZXJTdHJlYW06OlZJREVPKQorICAgICAgIGNvbnRp bnVlOworIAorLSAgICBpZiAoYXZfc3RyZWFtX2dldF9maXJzdF9kdHMoc3RyZWFtLT5hdl9zdHJl YW0oKSkgPT0ga0ludmFsaWRQVFNNYXJrZXIpCisrICAgIGlmIChzdHJlYW0tPmF2X3N0cmVhbSgp LT5zdGFydF90aW1lID09IEFWX05PUFRTX1ZBTFVFKQorICAgICAgIGNvbnRpbnVlOworIAorICAg ICBpZiAoIXN0cmVhbS0+SXNFbmFibGVkKCkpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9taXVt L3RlbXBsYXRlIGIvc3JjcGtncy9jaHJvbWl1bS90ZW1wbGF0ZQppbmRleCBiNGEzOWRmZDM4MTVj Li5jMjk0NTNjZDFmNTA5IDEwMDY0NAotLS0gYS9zcmNwa2dzL2Nocm9taXVtL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKQEAgLTIsNyArMiw3IEBACiBwa2duYW1lPWNo cm9taXVtCiAjIFNlZSBodHRwczovL2Nocm9taXVtZGFzaC5hcHBzcG90LmNvbS9yZWxlYXNlcz9w bGF0Zm9ybT1MaW51eCBmb3IgdGhlIGxhdGVzdCB2ZXJzaW9uCiB2ZXJzaW9uPTExNC4wLjU3MzUu MTA2Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBhcmNocz0iaTY4NiogeDg2XzY0KiBhYXJjaDY0 KiBhcm12N2wqIgogaG9zdG1ha2VkZXBlbmRzPSIKICAkKHZvcHRfaWYgY2xhbmcgImNsYW5nIGxs ZCBsbHZtMTUiKQoKRnJvbSBhZDJlMzkwYTQzNTgxNjMyNmJjNTRiYTRiODE5ZGUzOTJkMjA1MDA3 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29t PgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAw MjUvMTEzXSBjbXVzOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvY211cy9w YXRjaGVzL2ZmbXBlZzYucGF0Y2ggfCAxMiArKysrKysrKysrKysKIHNyY3BrZ3MvY211cy90ZW1w bGF0ZSAgICAgICAgICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25z KCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9jbXVzL3BhdGNo ZXMvZmZtcGVnNi5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY211cy9wYXRjaGVzL2ZmbXBl ZzYucGF0Y2ggYi9zcmNwa2dzL2NtdXMvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmZmYTk1YWI4MTExMDEKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL2NtdXMvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCkBAIC0wLDAgKzEsMTIg QEAKKy0tLSBhL2lwL2ZmbXBlZy5jCisrKysgYi9pcC9mZm1wZWcuYworQEAgLTIwMiw5ICsyMDIs NiBAQCBzdGF0aWMgaW50IGZmbXBlZ19vcGVuKHN0cnVjdCBpbnB1dF9wbHVnaW5fZGF0YSAqaXBf ZGF0YSkKKyAJCQlicmVhazsKKyAJCX0KKyAKKy0JCWlmIChjb2RlYy0+Y2FwYWJpbGl0aWVzICYg QVZfQ09ERUNfQ0FQX1RSVU5DQVRFRCkKKy0JCQljYy0+ZmxhZ3MgfD0gQVZfQ09ERUNfRkxBR19U UlVOQ0FURUQ7CistCisgCQlpZiAoYXZjb2RlY19vcGVuMihjYywgY29kZWMsIE5VTEwpIDwgMCkg eworIAkJCWRfcHJpbnQoImNvdWxkIG5vdCBvcGVuIGNvZGVjOiAlZCwgJXNcbiIsIGNjLT5jb2Rl Y19pZCwgYXZjb2RlY19nZXRfbmFtZShjYy0+Y29kZWNfaWQpKTsKKyAJCQllcnIgPSAtSVBfRVJS T1JfVU5TVVBQT1JURURfRklMRV9UWVBFOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jbXVzL3RlbXBs YXRlIGIvc3JjcGtncy9jbXVzL3RlbXBsYXRlCmluZGV4IDBmY2I0MjRjZTMzNmMuLjA1Yjc3ZDBm ZWNhZWEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY211cy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2Nt dXMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjbXVzJwog cGtnbmFtZT1jbXVzCiB2ZXJzaW9uPTIuMTAuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVp bGRfc3R5bGU9Y29uZmlndXJlCiBjb25maWd1cmVfYXJncz0icHJlZml4PS91c3IgTEQ9JENDIgog aG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSA2Mzc1YWU1ZGZkYWRlYjQ0MGRjNTVl NzBkYjk4M2U5YTQ3NWQ2MGJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwMjYvMTEzXSBjeWFucmlwOiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3MvY3lhbnJpcC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY3lhbnJp cC90ZW1wbGF0ZSBiL3NyY3BrZ3MvY3lhbnJpcC90ZW1wbGF0ZQppbmRleCA5Nzk2ZTM0NjE2MDFh Li41ZGIzMGUwMjBkMTdlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2N5YW5yaXAvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9jeWFucmlwL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnY3lhbnJpcCcKIHBrZ25hbWU9Y3lhbnJpcAogdmVyc2lvbj0wLjkuMAotcmV2aXNp b249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9bWVzb24KIGhvc3RtYWtlZGVwZW5kcz0icGtn LWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgbGliY2Rpby1kZXZlbCBsaWJjZGlv LXBhcmFub2lhLWRldmVsIGxpYmN1cmwtZGV2ZWwgbGlibXVzaWNicmFpbno1LWRldmVsIgoKRnJv bSBiNzJlMzkxM2JiZjJhOGJlNWI5MDJmODc3MTJkMzVlYTJiNGFhYWIwIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjcvMTEzXSBkZWFkYmVl ZjogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2RlYWRiZWVmL3RlbXBs YXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZGVhZGJlZWYvdGVtcGxhdGUgYi9zcmNwa2dzL2Rl YWRiZWVmL3RlbXBsYXRlCmluZGV4IGI2NjRiYjFiOWJkOWYuLjE2NWIzYzdiOWNhZDggMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvZGVhZGJlZWYvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9kZWFkYmVlZi90 ZW1wbGF0ZQpAQCAtMSwxNCArMSwxNCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZGVhZGJlZWYn CiBwa2duYW1lPWRlYWRiZWVmCiB2ZXJzaW9uPTEuOC44Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJl X2FyZ3M9Ii0tZGlzYWJsZS1vc3MgLS1kaXNhYmxlLWxmbSAtLWRpc2FibGUtbm90aWZ5IC0tZGlz YWJsZS1ndGsyIgogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBsaWJ0b29sIGdldHRleHQgZ2V0 dGV4dC1kZXZlbCBpbnRsdG9vbCBwa2ctY29uZmlnCiAgeWFzbSBjbGFuZyBnbGliLWRldmVsIgog bWFrZWRlcGVuZHM9IgotIGFsc2EtbGliLWRldmVsIGRidXMtZGV2ZWwgZmFhZDItZGV2ZWwgZmZt cGVnLWRldmVsIGd0ayszLWRldmVsIGltbGliMi1kZXZlbAorIGFsc2EtbGliLWRldmVsIGRidXMt ZGV2ZWwgZmFhZDItZGV2ZWwgZmZtcGVnNC1kZXZlbCBndGsrMy1kZXZlbCBpbWxpYjItZGV2ZWwK ICBqYW5zc29uLWRldmVsIGxpYmNkZGItZGV2ZWwgbGliY2Rpby1kZXZlbCBsaWJjdXJsLWRldmVs IGxpYmZsYWMtZGV2ZWwKICBsaWJtYWQtZGV2ZWwgbGlicG5nLWRldmVsIGxpYnNhbXBsZXJhdGUt ZGV2ZWwgbGlic25kZmlsZS1kZXZlbCBsaWJ2b3JiaXMtZGV2ZWwKICBsaWJ6aXAtZGV2ZWwgbXBn MTIzLWRldmVsIG9wdXNmaWxlLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwgd2F2cGFjay1kZXZlbCIK CkZyb20gZTBmNjEzOGFiZDY2NzkzZDljM2M4MjAwN2IyNTMxNzgzYzgxOGI1ZCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2Vk LCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI4LzExM10gZG9s cGhpbi1lbXU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9kb2xwaGluLWVt dS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZG9scGhpbi1lbXUvdGVtcGxhdGUgYi9zcmNw a2dzL2RvbHBoaW4tZW11L3RlbXBsYXRlCmluZGV4IDdlYTE5N2NlYjJhOGUuLjdhZWIwYTViNjQ1 ZTAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZG9scGhpbi1lbXUvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9kb2xwaGluLWVtdS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ2RvbHBoaW4tZW11JwogcGtnbmFtZT1kb2xwaGluLWVtdQogdmVyc2lvbj01LjAuMTYxMDEK LXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIF9kb2xwaGluX2NvbW1pdD04ZWNmYTUzN2EyNDJkZTc0 ZDJlMzcyZTMwZDlkNzliMTQ1ODRiMmZiCiBfbWdiYV9jb21taXQ9NDBkNGM0MzBmYzM2Y2FlYjdl YTMyZmQzOTYyNDk0N2VkNDg3ZDJmMgogI1ZlcnNpb24vaGFzaCBwYWlyIGNhbiBiZSBmb3VuZCBh dCBodHRwczovL2RvbHBoaW4tZW11Lm9yZy9kb3dubG9hZC8KCkZyb20gZGY5YTRiYTIwMDhkZGJl NzhmMTVjZWVmMjU5YWM2MTQ2NmJkMzE3OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0 NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI5LzExM10gZHJvaWRjYW0tb2JzLXBsdWdpbjogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVtcGxhdGUgYi9z cmNwa2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVtcGxhdGUKaW5kZXggZmM5YzliZjZiOWQ1NC4u ZmIwNDgwNzU0ZGY0ZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9kcm9pZGNhbS1vYnMtcGx1Z2luL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvZHJvaWRjYW0tb2JzLXBsdWdpbi90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Ryb2lkY2FtLW9icy1wbHVnaW4nCiBwa2du YW1lPWRyb2lkY2FtLW9icy1wbHVnaW4KIHZlcnNpb249Mi4wLjEKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1tYWtlZmlsZQogbWFrZV91c2VfZW52PXllcwogbWFrZV9i dWlsZF9hcmdzPSJBTExPV19TVEFUSUM9bm8iCgpGcm9tIGY2MzE5Yjk1ODdiMzA4ZDE5MGNjMDFh OTk3ZmYyNDJmMzI1Y2Q2YzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAK U3ViamVjdDogW1BBVENIIDAzMC8xMTNdIGRyb2lkY2FtOiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Ryb2lk Y2FtL3RlbXBsYXRlIGIvc3JjcGtncy9kcm9pZGNhbS90ZW1wbGF0ZQppbmRleCAxYzNmMWI4YjFm YzY3Li4zMmE5MjIwYjc5YTRkIDEwMDY0NAotLS0gYS9zcmNwa2dzL2Ryb2lkY2FtL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdkcm9pZGNhbScKIHBrZ25hbWU9ZHJvaWRjYW0KIHZlcnNpb249MS44LjIK LXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWdudS1tYWtlZmlsZQogbWFrZV9i dWlsZF9hcmdzPSJVU0JNVVhEPS1sdXNibXV4ZC0yLjAgSlBFRz0tbHR1cmJvanBlZyIKIGhvc3Rt YWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZyb20gODM4NDJmMDM4YzY1NzJlMjQ1ZDgwMzJhMGUz MTU1MGE3NjA4ODdkOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJq ZWN0OiBbUEFUQ0ggMDMxLzExM10gZmZtcGVndGh1bWJuYWlsZXI6IHJldmJ1bXAgZm9yIGZmbXBl Zy02LjAKCi0tLQogLi4uL2ZmbXBlZ3RodW1ibmFpbGVyL3BhdGNoZXMvZmZtcGVnNi5wYXRjaCAg IHwgMjAyICsrKysrKysrKysrKysrKysrKwogc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci90ZW1w bGF0ZSAgICAgICAgICAgIHwgICA2ICstCiAyIGZpbGVzIGNoYW5nZWQsIDIwNSBpbnNlcnRpb25z KCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVndGh1 bWJuYWlsZXIvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1w ZWd0aHVtYm5haWxlci9wYXRjaGVzL2ZmbXBlZzYucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZ3RodW1i bmFpbGVyL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAwLi4zNjNmZjM1YTI4NDE5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9m Zm1wZWd0aHVtYm5haWxlci9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gKQEAgLTAsMCArMSwyMDIgQEAK Ky0tLSBhL2xpYmZmbXBlZ3RodW1ibmFpbGVyL21vdmllZGVjb2Rlci5jcHAJMjAxNy0xMS0yMSAx NDowNjo1Ny4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL2xpYmZmbXBlZ3RodW1ibmFpbGVyL21vdmll ZGVjb2Rlci5jcHAJMjAyMy0wNS0wNSAxMzoxNDo0Ny45NDY1NjA2NjggLTA0MDAKK0BAIC00MSwx MSArNDEsNiBAQAorIG5hbWVzcGFjZSBmZm1wZWd0aHVtYm5haWxlcgorIHsKKyAKKy1zdHJ1Y3Qg U2lsZW5jZUxvZ0xldmVsCisteworLSAgICBTaWxlbmNlTG9nTGV2ZWwoKSB7IGF2X2xvZ19zZXRf bGV2ZWwoQVZfTE9HX1FVSUVUKTsgfQorLX07CistCisgTW92aWVEZWNvZGVyOjpNb3ZpZURlY29k ZXIoQVZGb3JtYXRDb250ZXh0KiBwYXZDb250ZXh0KQorIDogbV9WaWRlb1N0cmVhbSgtMSkKKyAs IG1fcEZvcm1hdENvbnRleHQocGF2Q29udGV4dCkKK0BAIC03MCw4ICs2NSw2IEBACisgCisgdm9p ZCBNb3ZpZURlY29kZXI6OmluaXRpYWxpemUoY29uc3Qgc3RyaW5nJiBmaWxlbmFtZSwgYm9vbCBw cmVmZXJFbWJlZGRlZE1ldGFkYXRhKQorIHsKKy0gICAgYXZfcmVnaXN0ZXJfYWxsKCk7CistICAg IGF2Y29kZWNfcmVnaXN0ZXJfYWxsKCk7CisgICAgIGF2Zm9ybWF0X25ldHdvcmtfaW5pdCgpOwor IAorICAgICBzdHJpbmcgaW5wdXRGaWxlID0gZmlsZW5hbWUgPT0gIi0iID8gInBpcGU6IiA6IGZp bGVuYW1lOworQEAgLTk3LDggKzkwLDcgQEAKKyB7CisgICAgIGlmIChtX3BWaWRlb0NvZGVjQ29u dGV4dCkKKyAgICAgeworLSAgICAgICAgYXZjb2RlY19jbG9zZShtX3BWaWRlb0NvZGVjQ29udGV4 dCk7CistICAgICAgICBtX3BWaWRlb0NvZGVjQ29udGV4dCA9IG51bGxwdHI7CisrICAgICAgICBh dmNvZGVjX2ZyZWVfY29udGV4dCgmbV9wVmlkZW9Db2RlY0NvbnRleHQpOworICAgICB9CisgCisg ICAgIGlmICgoIW1fRm9ybWF0Q29udGV4dFdhc0dpdmVuKSAmJiBtX3BGb3JtYXRDb250ZXh0KQor QEAgLTE1MiwxMCArMTQ0LDEwIEBACisgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg bV9wRm9ybWF0Q29udGV4dC0+bmJfc3RyZWFtczsgKytpKQorICAgICB7CisgICAgICAgICBBVlN0 cmVhbSAqc3RyZWFtID0gbV9wRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXTsKKy0gICAgICAgIGF1 dG8gY3R4ID0gbV9wRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWM7CistICAgICAgICBp ZiAoY3R4LT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykKKysgICAgICAgIGF1dG8g cGFyID0gbV9wRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXI7CisrICAgICAgICBp ZiAocGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykKKyAgICAgICAgIHsKKy0g ICAgICAgICAgICBpZiAoIXByZWZlckVtYmVkZGVkTWV0YWRhdGEgfHwgIWlzU3RpbGxJbWFnZUNv ZGVjKGN0eC0+Y29kZWNfaWQpKQorKyAgICAgICAgICAgIGlmICghcHJlZmVyRW1iZWRkZWRNZXRh ZGF0YSB8fCAhaXNTdGlsbEltYWdlQ29kZWMocGFyLT5jb2RlY19pZCkpCisgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICB2aWRlb1N0cmVhbXMucHVzaF9iYWNrKGkpOworICAgICAgICAg ICAgICAgICBjb250aW51ZTsKK0BAIC0yMDMsOCArMTk1LDcgQEAKKyAgICAgfQorIAorICAgICBt X3BWaWRlb1N0cmVhbSA9IG1fcEZvcm1hdENvbnRleHQtPnN0cmVhbXNbbV9WaWRlb1N0cmVhbV07 CistICAgIG1fcFZpZGVvQ29kZWNDb250ZXh0ID0gbV9wVmlkZW9TdHJlYW0tPmNvZGVjOworLSAg ICBtX3BWaWRlb0NvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIobV9wVmlkZW9Db2RlY0NvbnRl eHQtPmNvZGVjX2lkKTsKKysgICAgbV9wVmlkZW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVy KG1fcFZpZGVvU3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworIAorICAgICBpZiAobV9wVmlk ZW9Db2RlYyA9PSBudWxscHRyKQorICAgICB7CitAQCAtMjE0LDYgKzIwNSwyMCBAQAorICAgICAg ICAgdGhyb3cgbG9naWNfZXJyb3IoIlZpZGVvIENvZGVjIG5vdCBmb3VuZCIpOworICAgICB9Cisg CisrICAgIG1fcFZpZGVvQ29kZWNDb250ZXh0ID0gYXZjb2RlY19hbGxvY19jb250ZXh0MyhtX3BW aWRlb0NvZGVjKTsKKysKKysgICAgaWYgKG1fcFZpZGVvQ29kZWNDb250ZXh0ID09IG51bGxwdHIp CisrICAgIHsKKysgICAgICAgIGRlc3Ryb3koKTsKKysgICAgICAgIHRocm93IGxvZ2ljX2Vycm9y KCJDb3VsZCBub3QgYWxsb2NhdGUgdmlkZW8gY29kZWMgY29udGV4dCIpOworKyAgICB9CisrCisr ICAgIGlmIChhdmNvZGVjX3BhcmFtZXRlcnNfdG9fY29udGV4dChtX3BWaWRlb0NvZGVjQ29udGV4 dCwgbV9wVmlkZW9TdHJlYW0tPmNvZGVjcGFyKSA8IDApCisrICAgIHsKKysgICAgICAgIGRlc3Ry b3koKTsKKysgICAgICAgIHRocm93IGxvZ2ljX2Vycm9yKCJDb3VsZCBub3QgY29uZmlndXJlIHZp ZGVvIGNvZGVjIGNvbnRleHQiKTsKKysgICAgfQorKworICAgICBtX3BWaWRlb0NvZGVjQ29udGV4 dC0+d29ya2Fyb3VuZF9idWdzID0gMTsKKyAKKyAgICAgaWYgKGF2Y29kZWNfb3BlbjIobV9wVmlk ZW9Db2RlY0NvbnRleHQsIG1fcFZpZGVvQ29kZWMsIG51bGxwdHIpIDwgMCkKK0BAIC0zODYsMTMg KzM5MSw2IEBACisgCisgdm9pZCBNb3ZpZURlY29kZXI6OmluaXRpYWxpemVGaWx0ZXJHcmFwaChj b25zdCBBVlJhdGlvbmFsJiB0aW1lQmFzZSwgY29uc3Qgc3RkOjpzdHJpbmcmIHNpemUsIGJvb2wg bWFpbnRhaW5Bc3BlY3RSYXRpbykKKyB7CistICAgIHN0YXRpYyBjb25zdCBBVlBpeGVsRm9ybWF0 IHBpeGVsRm9ybWF0c1tdID0geyBBVl9QSVhfRk1UX1JHQjI0LCBBVl9QSVhfRk1UX05PTkUgfTsK Ky0KKy0gICAgYXV0byBkZWwgPSBbXSAoQVZCdWZmZXJTaW5rUGFyYW1zKiBwKSB7IGF2X2ZyZWVw KHApOyB9OworLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QVZCdWZmZXJTaW5rUGFyYW1zLCBkZWNsdHlw ZShkZWwpPiBidWZmZXJzaW5rUGFyYW1zKGF2X2J1ZmZlcnNpbmtfcGFyYW1zX2FsbG9jKCksIGRl bCk7CistCistICAgIGF2ZmlsdGVyX3JlZ2lzdGVyX2FsbCgpOworLQorICAgICBtX3BGaWx0ZXJH cmFwaCA9IGF2ZmlsdGVyX2dyYXBoX2FsbG9jKCk7CisgICAgIGFzc2VydChtX3BGaWx0ZXJHcmFw aCk7CisgCitAQCAtNDA0LDEwICs0MDIsOCBAQAorIAorICAgICBjaGVja1JjKGF2ZmlsdGVyX2dy YXBoX2NyZWF0ZV9maWx0ZXIoJm1fcEZpbHRlclNvdXJjZSwgYXZmaWx0ZXJfZ2V0X2J5X25hbWUo ImJ1ZmZlciIpLCAidGh1bWJfYnVmZmVyIiwgc3Muc3RyKCkuY19zdHIoKSwgbnVsbHB0ciwgbV9w RmlsdGVyR3JhcGgpLAorICAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIGZpbHRlciBzb3Vy Y2UiKTsKKy0gICAgYnVmZmVyc2lua1BhcmFtcy0+cGl4ZWxfZm10cyA9IHBpeGVsRm9ybWF0czsK Ky0gICAgY2hlY2tSYyhhdmZpbHRlcl9ncmFwaF9jcmVhdGVfZmlsdGVyKCZtX3BGaWx0ZXJTaW5r LCBhdmZpbHRlcl9nZXRfYnlfbmFtZSgiYnVmZmVyc2luayIpLCAidGh1bWJfYnVmZmVyc2luayIs IG51bGxwdHIsIGJ1ZmZlcnNpbmtQYXJhbXMuZ2V0KCksIG1fcEZpbHRlckdyYXBoKSwKKysgICAg Y2hlY2tSYyhhdmZpbHRlcl9ncmFwaF9jcmVhdGVfZmlsdGVyKCZtX3BGaWx0ZXJTaW5rLCBhdmZp bHRlcl9nZXRfYnlfbmFtZSgiYnVmZmVyc2luayIpLCAidGh1bWJfYnVmZmVyc2luayIsIG51bGxw dHIsIG51bGxwdHIsIG1fcEZpbHRlckdyYXBoKSwKKyAgICAgICAgICAgICAiRmFpbGVkIHRvIGNy ZWF0ZSBmaWx0ZXIgc2luayIpOworLSAgICBidWZmZXJzaW5rUGFyYW1zLnJlbGVhc2UoKTsKKyAK KyAgICAgQVZGaWx0ZXJDb250ZXh0KiB5YWRpZkZpbHRlciA9IG51bGxwdHI7CisgICAgIGlmICht X3BGcmFtZS0+aW50ZXJsYWNlZF9mcmFtZSAhPSAwKQorQEAgLTUwMCwxNSArNDk2LDE1IEBACisg ICAgIH0KKyAKKyAgICAgY2hlY2tSYyhhdl9zZWVrX2ZyYW1lKG1fcEZvcm1hdENvbnRleHQsIC0x LCB0aW1lc3RhbXAsIDApLCAiU2Vla2luZyBpbiB2aWRlbyBmYWlsZWQiKTsKKy0gICAgYXZjb2Rl Y19mbHVzaF9idWZmZXJzKG1fcEZvcm1hdENvbnRleHQtPnN0cmVhbXNbbV9WaWRlb1N0cmVhbV0t PmNvZGVjKTsKKysgICAgYXZjb2RlY19mbHVzaF9idWZmZXJzKG1fcFZpZGVvQ29kZWNDb250ZXh0 KTsKKyAKKyAgICAgaW50IGtleUZyYW1lQXR0ZW1wdHMgPSAwOworLSAgICBib29sIGdvdEZyYW1l ID0gMDsKKysgICAgYm9vbCBnb3RGcmFtZTsKKyAKKyAgICAgZG8KKyAgICAgeworICAgICAgICAg aW50IGNvdW50ID0gMDsKKy0gICAgICAgIGdvdEZyYW1lID0gMDsKKysgICAgICAgIGdvdEZyYW1l ID0gZmFsc2U7CisgCisgICAgICAgICB3aGlsZSAoIWdvdEZyYW1lICYmIGNvdW50IDwgMjApCisg ICAgICAgICB7CitAQCAtNTUyLDE3ICs1NDgsMzMgQEAKKyAgICAgICAgIHJldHVybiBmYWxzZTsK KyAgICAgfQorIAorLSAgICBhdl9mcmFtZV91bnJlZihtX3BGcmFtZSk7CistCistICAgIGludCBm cmFtZUZpbmlzaGVkOworKyAgICBpbnQgcmMgPSBhdmNvZGVjX3NlbmRfcGFja2V0KG1fcFZpZGVv Q29kZWNDb250ZXh0LCBtX3BQYWNrZXQpOworKyAgICBpZihyYyA9PSBBVkVSUk9SKEVBR0FJTikp CisrICAgIHsKKysgICAgICAgIHJjID0gMDsKKysgICAgfQorIAorLSAgICBpbnQgYnl0ZXNEZWNv ZGVkID0gYXZjb2RlY19kZWNvZGVfdmlkZW8yKG1fcFZpZGVvQ29kZWNDb250ZXh0LCBtX3BGcmFt ZSwgJmZyYW1lRmluaXNoZWQsIG1fcFBhY2tldCk7CistICAgIGlmIChieXRlc0RlY29kZWQgPCAw KQorKyAgICBpZihyYyA9PSBBVkVSUk9SX0VPRikKKysgICAgeworKyAgICAgICAgcmV0dXJuIGZh bHNlOworKyAgICB9CisrICAgIGVsc2UgaWYocmMgPCAwKQorICAgICB7CistICAgICAgICB0aHJv dyBsb2dpY19lcnJvcigiRmFpbGVkIHRvIGRlY29kZSB2aWRlbyBmcmFtZTogYnl0ZXNEZWNvZGVk IDwgMCIpOworKyAgICAgICAgdGhyb3cgbG9naWNfZXJyb3IoIkZhaWxlZCB0byBkZWNvZGUgdmlk ZW8gZnJhbWU6IGF2Y29kZWNfc2VuZF9wYWNrZXQoKSA8IDAiKTsKKyAgICAgfQorIAorLSAgICBy ZXR1cm4gZnJhbWVGaW5pc2hlZCA+IDA7CisrICAgIHJjID0gYXZjb2RlY19yZWNlaXZlX2ZyYW1l KG1fcFZpZGVvQ29kZWNDb250ZXh0LCBtX3BGcmFtZSk7CisrICAgIHN3aXRjaChyYykKKysgICAg eworKyAgICAgICAgY2FzZSAwOgorKyAgICAgICAgICAgIHJldHVybiB0cnVlOworKworKyAgICAg ICAgY2FzZSBBVkVSUk9SKEVBR0FJTik6CisrICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworKwor KyAgICAgICAgZGVmYXVsdDoKKysgICAgICAgICAgICB0aHJvdyBsb2dpY19lcnJvcigiRmFpbGVk IHRvIGRlY29kZSB2aWRlbyBmcmFtZTogYXZjb2RlY19yZWNlaXZlX2ZyYW1lKCkgPCAwIik7Cisr ICAgIH0KKyB9CisgCisgYm9vbCBNb3ZpZURlY29kZXI6OmdldFZpZGVvUGFja2V0KCkKK0BAIC01 NzAsOCArNTgyLDYgQEAKKyAgICAgYm9vbCBmcmFtZXNBdmFpbGFibGUgPSB0cnVlOworICAgICBi b29sIGZyYW1lRGVjb2RlZCA9IGZhbHNlOworIAorLSAgICBpbnQgYXR0ZW1wdHMgPSAwOworLQor ICAgICBpZiAobV9wUGFja2V0KQorICAgICB7CisgICAgICAgICBhdl9wYWNrZXRfdW5yZWYobV9w UGFja2V0KTsKK0BAIC01ODAsNiArNTkwLDcgQEAKKyAKKyAgICAgbV9wUGFja2V0ID0gbmV3IEFW UGFja2V0KCk7CisgCisrCisgICAgIHdoaWxlIChmcmFtZXNBdmFpbGFibGUgJiYgIWZyYW1lRGVj b2RlZCkKKyAgICAgeworICAgICAgICAgZnJhbWVzQXZhaWxhYmxlID0gYXZfcmVhZF9mcmFtZSht X3BGb3JtYXRDb250ZXh0LCBtX3BQYWNrZXQpID49IDA7CitAQCAtNjQ0LDcgKzY1NSw3IEBACisg CisgaW50MzJfdCBNb3ZpZURlY29kZXI6OmdldFN0cmVhbVJvdGF0aW9uKCkKKyB7CistICAgIGlu dDMyX3QqIG1hdHJpeCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdCo+KGF2X3N0cmVhbV9nZXRf c2lkZV9kYXRhKG1fcFZpZGVvU3RyZWFtLCBBVl9QS1RfREFUQV9ESVNQTEFZTUFUUklYLCBudWxs cHRyKSk7CisrICAgIGF1dG8gbWF0cml4ID0gcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4oYXZf c3RyZWFtX2dldF9zaWRlX2RhdGEobV9wVmlkZW9TdHJlYW0sIEFWX1BLVF9EQVRBX0RJU1BMQVlN QVRSSVgsIG51bGxwdHIpKTsKKyAgICAgaWYgKG1hdHJpeCkKKyAgICAgeworICAgICAgICAgYXV0 byBhbmdsZSA9IGxyb3VuZChhdl9kaXNwbGF5X3JvdGF0aW9uX2dldChtYXRyaXgpKTsKKworLS0t IGEvbGliZmZtcGVndGh1bWJuYWlsZXIvbW92aWVkZWNvZGVyLmgJMjAxNy0xMS0xMiAwNDoyMzoz OC4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL2xpYmZmbXBlZ3RodW1ibmFpbGVyL21vdmllZGVjb2Rl ci5oCTIwMjMtMDUtMDUgMTM6MjY6MDcuMDk1NTI5OTExIC0wNDAwCitAQCAtNzgsNyArNzgsNyBA QAorICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBtX1ZpZGVvU3RyZWFtOw0KKyAgICAgQVZG b3JtYXRDb250ZXh0KiAgICAgICAgbV9wRm9ybWF0Q29udGV4dDsNCisgICAgIEFWQ29kZWNDb250 ZXh0KiAgICAgICAgIG1fcFZpZGVvQ29kZWNDb250ZXh0Ow0KKy0gICAgQVZDb2RlYyogICAgICAg ICAgICAgICAgbV9wVmlkZW9Db2RlYzsNCisrICAgIGNvbnN0IEFWQ29kZWMqICAgICAgICAgIG1f cFZpZGVvQ29kZWM7DQorICAgICBBVkZpbHRlckdyYXBoKiAgICAgICAgICBtX3BGaWx0ZXJHcmFw aDsNCisgICAgIEFWRmlsdGVyQ29udGV4dCogICAgICAgIG1fcEZpbHRlclNvdXJjZTsNCisgICAg IEFWRmlsdGVyQ29udGV4dCogICAgICAgIG1fcEZpbHRlclNpbms7DQpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9mZm1wZWd0aHVtYm5haWxlci90ZW1wbGF0ZSBiL3NyY3BrZ3MvZmZtcGVndGh1bWJuYWls ZXIvdGVtcGxhdGUKaW5kZXggMDM5ZWVhNzYyMmIzOS4uMzVkNTQ2MDE4ZDEyYSAxMDA2NDQKLS0t IGEvc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2ZmbXBl Z3RodW1ibmFpbGVyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnZmZtcGVndGh1bWJuYWlsZXInCiBwa2duYW1lPWZmbXBlZ3RodW1ibmFpbGVyCiB2ZXJzaW9u PTIuMi4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1h a2VkZXBlbmRzPSJwa2ctY29uZmlnIgogbWFrZWRlcGVuZHM9ImxpYnBuZy1kZXZlbCBsaWJqcGVn LXR1cmJvLWRldmVsIGZmbXBlZy1kZXZlbCIKQEAgLTksOCArOSw4IEBAIGRlcGVuZHM9ImZmbXBl ZyIKIHNob3J0X2Rlc2M9IkxpZ2h0d2VpZ2h0IHZpZGVvIHRodW1ibmFpbGVyIgogbWFpbnRhaW5l cj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0yLjAtb3It bGF0ZXIiCi1ob21lcGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL2Rpcmt2ZGIvJHtwa2duYW1lfSIK LWRpc3RmaWxlcz0iJHtob21lcGFnZX0vcmVsZWFzZXMvZG93bmxvYWQvJHt2ZXJzaW9ufS8ke3Br Z25hbWV9LSR7dmVyc2lvbn0udGFyLmJ6MiIKK2hvbWVwYWdlPSJodHRwczovL2dpdGh1Yi5jb20v ZGlya3ZkYiIKK2Rpc3RmaWxlcz0iJHtob21lcGFnZX0vJHtwa2duYW1lfS9yZWxlYXNlcy9kb3du bG9hZC8ke3ZlcnNpb259LyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS50YXIuYnoyIgogY2hlY2tzdW09 MWNiMjQwNTljMzgyMjNmNjU3YjMwMGM4NGRkODA0OTFiNzA0MGQ0YjY5NDcxYzRmZWE2OWJlODYy YmM5OWI1YgogCiBwb3N0X2luc3RhbGwoKSB7CgpGcm9tIDNlNzdiOTM0MmJjYjczMGJhZjNiZmE0 ZWM1OTFiNzdjNjJiNzM3ZDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAK U3ViamVjdDogW1BBVENIIDAzMi8xMTNdIGZmbXBlZ3RodW1iczogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL2ZmbXBlZ3RodW1icy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZmZtcGVndGh1bWJzL3RlbXBsYXRlIGIvc3JjcGtncy9mZm1wZWd0aHVtYnMvdGVtcGxhdGUK aW5kZXggNWYwYjk0MTRkYWRhZi4uMTFiODgxOTM1MjhmNCAxMDA2NDQKLS0tIGEvc3JjcGtncy9m Zm1wZWd0aHVtYnMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9mZm1wZWd0aHVtYnMvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1wZWd0aHVtYnMnCiBwa2du YW1lPWZmbXBlZ3RodW1icwogdmVyc2lvbj0yMi4xMi4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJleHRyYS1jbWFrZS1tb2R1bGVz IGtjb3JlYWRkb25zIGtjb25maWctZGV2ZWwKICBwa2ctY29uZmlnIHF0NS1ob3N0LXRvb2xzIHF0 NS1xbWFrZSBnZXR0ZXh0IgoKRnJvbSAwNzJiMThmZmE4ZGRlZGEzZGFiNWJhMThmMGEyNzE2N2I0 YTQ0MWQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwMzMvMTEzXSBmZm1zMjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L2ZmbXMyL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCB8IDQyNCArKysrKysrKysrKysrKysrKysrKysr KysrKysrCiBzcmNwa2dzL2ZmbXMyL3RlbXBsYXRlICAgICAgICAgICAgICB8ICAgMiArLQogMiBm aWxlcyBjaGFuZ2VkLCA0MjUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtczIvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9mZm1zMi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggYi9zcmNwa2dzL2ZmbXMyL3Bh dGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAwLi4xNDc5ZmFiY2FmY2I0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9mZm1zMi9wYXRj aGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSw0MjQgQEAKK0Zyb20gNDU2NzMxNDllOWEyZjU1 ODY4NTVhZDQ3MmUzMDU5MDg0ZWFhMzZiMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206 IERlcmVrIEJ1aXRlbmh1aXMgPGRlcmVrLmJ1aXRlbmh1aXNAZ21haWwuY29tPgorRGF0ZTogVHVl LCA0IE1heSAyMDIxIDE0OjQxOjIxICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBhdXRvIGZv ciBBVkNvZGVjCisKK1RoZSBnZW5pdXNlcyBvdmVyIGF0IEZGbXBlZyBkZWNpZGVkIHRvIGNvbnN0 aWZ5IHRoaXMgQVBJLCBzbyBvbGQKK3ZlcnNpb25zIG9mIHRoZSBsaWJyYXJ5IHdpbGwgcmV0dXJu IEFWQ29kZWMgKiwgd2hpbGUgbmV3IHZlcnNpb25zCitvZiB0aGUgbGliYXJ5IHdpbGwgcmV0dXJu IGNvbnN0IEFWQ29kZWMgKiwgd2hpY2gsIGluIEMrKywgYXJlIG5vdAorT0sgdG8gY29udmVydCBi ZXR3ZWVuLgorCitSYXRoZXIgdGhhbiB1c2Ugc29tZSBtYWNybyBoZWxsIGluIGZmbXNjb21wYXQu aCwgd2UgY2FuIHdvcmsgYXJvdW5kCit0aGlzIGJ5IHVzaW5nIGF1dG8uCisKK0dyb3NzLgorCitT aWduZWQtb2ZmLWJ5OiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0ZW5odWlzQGdtYWlsLmNv bT4KKy0tLQorIHNyYy9jb3JlL2F1ZGlvc291cmNlLmNwcCB8IDIgKy0KKyBzcmMvY29yZS9pbmRl eGluZy5jcHAgICAgfCA2ICsrKy0tLQorIHNyYy9jb3JlL3ZpZGVvc291cmNlLmNwcCB8IDIgKy0K KyAzIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlm ZiAtLWdpdCBhL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcCBiL3NyYy9jb3JlL2F1ZGlvc291cmNl LmNwcAoraW5kZXggZTRjZTk3Yy4uYWMwOTY2NiAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2F1ZGlv c291cmNlLmNwcAorKysrIGIvc3JjL2NvcmUvYXVkaW9zb3VyY2UuY3BwCitAQCAtNDY5LDcgKzQ2 OSw3IEBAIHZvaWQgRkZNU19BdWRpb1NvdXJjZTo6T3BlbkZpbGUoKSB7CisgCisgICAgIExBVkZP cGVuRmlsZShTb3VyY2VGaWxlLmNfc3RyKCksIEZvcm1hdENvbnRleHQsIFRyYWNrTnVtYmVyKTsK KyAKKy0gICAgQVZDb2RlYyAqQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250 ZXh0LT5zdHJlYW1zW1RyYWNrTnVtYmVyXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKysgICAgYXV0 byAqQ29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1Ry YWNrTnVtYmVyXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAgICAgaWYgKENvZGVjID09IG51bGxw dHIpCisgICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0RFQ09ESU5HLCBG Rk1TX0VSUk9SX0NPREVDLAorICAgICAgICAgICAgICJBdWRpbyBjb2RlYyBub3QgZm91bmQiKTsK K2RpZmYgLS1naXQgYS9zcmMvY29yZS9pbmRleGluZy5jcHAgYi9zcmMvY29yZS9pbmRleGluZy5j cHAKK2luZGV4IGU1NDdjNWEuLjU5ZmI0ZTggMTAwNjQ0CistLS0gYS9zcmMvY29yZS9pbmRleGlu Zy5jcHAKKysrKyBiL3NyYy9jb3JlL2luZGV4aW5nLmNwcAorQEAgLTM4NCw3ICszODQsNyBAQCBG Rk1TX1RyYWNrVHlwZSBGRk1TX0luZGV4ZXI6OkdldFRyYWNrVHlwZShpbnQgVHJhY2spIHsKKyB9 CisgCisgY29uc3QgY2hhciAqRkZNU19JbmRleGVyOjpHZXRUcmFja0NvZGVjKGludCBUcmFjaykg eworLSAgICBBVkNvZGVjICpjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRl eHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQpOworKyAgICBhdXRvICpjb2Rl YyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tdLT5j b2RlY3Bhci0+Y29kZWNfaWQpOworICAgICByZXR1cm4gY29kZWMgPyBjb2RlYy0+bmFtZSA6IG51 bGxwdHI7CisgfQorIAorQEAgLTQwMiw3ICs0MDIsNyBAQCBGRk1TX0luZGV4ICpGRk1TX0luZGV4 ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAgICAgICAgICAgVXNlRFRTKTsKKyAKKyAgICAgICAgIGlm IChJbmRleE1hc2suY291bnQoaSkgJiYgRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNw YXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVPKSB7CistICAgICAgICAgICAgQVZD b2RlYyAqVmlkZW9Db2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0 cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisrICAgICAgICAgICAgYXV0byAqVmlkZW9D b2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNv ZGVjcGFyLT5jb2RlY19pZCk7CisgICAgICAgICAgICAgaWYgKCFWaWRlb0NvZGVjKSB7CisgICAg ICAgICAgICAgICAgIEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmRpc2NhcmQgPSBBVkRJU0NB UkRfQUxMOworICAgICAgICAgICAgICAgICBJbmRleE1hc2suZXJhc2UoaSk7CitAQCAtNDMzLDcg KzQzMyw3IEBAIEZGTVNfSW5kZXggKkZGTVNfSW5kZXhlcjo6RG9JbmRleGluZygpIHsKKyAgICAg ICAgICAgICAgICAgSW5kZXhNYXNrLmluc2VydChpKTsKKyAgICAgICAgICAgICB9CisgICAgICAg ICB9IGVsc2UgaWYgKEluZGV4TWFzay5jb3VudChpKSAmJiBGb3JtYXRDb250ZXh0LT5zdHJlYW1z W2ldLT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfQVVESU8pIHsKKy0gICAg ICAgICAgICBBVkNvZGVjICpBdWRpb0NvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0 Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKysgICAgICAgICAgICBh dXRvICpBdWRpb0NvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+c3Ry ZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAgICAgICAgICAgICBpZiAoQXVkaW9Db2Rl YyA9PSBudWxscHRyKQorICAgICAgICAgICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1T X0VSUk9SX0NPREVDLCBGRk1TX0VSUk9SX1VOU1VQUE9SVEVELAorICAgICAgICAgICAgICAgICAg ICAgIkF1ZGlvIGNvZGVjIG5vdCBmb3VuZCIpOworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL3ZpZGVv c291cmNlLmNwcCBiL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAoraW5kZXggYjg4OTk3MC4uODk1 NmMyMiAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAorKysrIGIvc3JjL2Nv cmUvdmlkZW9zb3VyY2UuY3BwCitAQCAtMTcxLDcgKzE3MSw3IEBAIEZGTVNfVmlkZW9Tb3VyY2U6 OkZGTVNfVmlkZW9Tb3VyY2UoY29uc3QgY2hhciAqU291cmNlRmlsZSwgRkZNU19JbmRleCAmSW5k ZXgsIGluCisgCisgICAgICAgICBMQVZGT3BlbkZpbGUoU291cmNlRmlsZSwgRm9ybWF0Q29udGV4 dCwgVmlkZW9UcmFjayk7CisgCistICAgICAgICBBVkNvZGVjICpDb2RlYyA9IGF2Y29kZWNfZmlu ZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVmlkZW9UcmFja10tPmNvZGVjcGFyLT5j b2RlY19pZCk7CisrICAgICAgICBhdXRvICpDb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKEZv cm1hdENvbnRleHQtPnN0cmVhbXNbVmlkZW9UcmFja10tPmNvZGVjcGFyLT5jb2RlY19pZCk7Cisg ICAgICAgICBpZiAoQ29kZWMgPT0gbnVsbHB0cikKKyAgICAgICAgICAgICB0aHJvdyBGRk1TX0V4 Y2VwdGlvbihGRk1TX0VSUk9SX0RFQ09ESU5HLCBGRk1TX0VSUk9SX0NPREVDLAorICAgICAgICAg ICAgICAgICAiVmlkZW8gY29kZWMgbm90IGZvdW5kIik7CistLSAKKzIuNDAuMAorCitGcm9tIDk2 Y2JmMzhlYTkzODE4MjlhMTMxNGY0MzJhMmM2MDQ5NWRjZWZhYWQgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCitGcm9tOiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0ZW5odWlzQGdtYWlsLmNv bT4KK0RhdGU6IFR1ZSwgNCBNYXkgMjAyMSAxNDoxMjo0MSArMDEwMAorU3ViamVjdDogW1BBVENI XSBhbGw6IFVwZGF0ZSBBVlBhY2tldCBBUEkgdXNhZ2UKKworQVZQYWNrZXRzIG11c3QgYWxsIGJl IG9uIHRoZSBoZWFwIG5vdywgc2luY2UgaXQgaXMgbm8gbG9uZ2VyCitwYXJ0IG9mIHRoZSBsaWJh diogQUJJLgorCitTaWduZWQtb2ZmLWJ5OiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0ZW5o dWlzQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jb3JlL2F1ZGlvc291cmNlLmNwcCB8IDE2ICsrKysr Ky0tLS0KKyBzcmMvY29yZS9pbmRleGluZy5jcHAgICAgfCA2MyArKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tCisgc3JjL2NvcmUvaW5kZXhpbmcuaCAgICAgIHwgIDQgKy0t Cisgc3JjL2NvcmUvdXRpbHMuY3BwICAgICAgIHwgIDYgLS0tLQorIHNyYy9jb3JlL3V0aWxzLmgg ICAgICAgICB8ICAxIC0KKyBzcmMvY29yZS92aWRlb3NvdXJjZS5jcHAgfCAzMCArKysrKysrKysr LS0tLS0tLS0tCisgNiBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspLCA1NiBkZWxldGlv bnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2F1ZGlvc291cmNlLmNwcCBiL3NyYy9jb3Jl L2F1ZGlvc291cmNlLmNwcAoraW5kZXggMzdjZjlhZS4uZTRjZTk3YyAxMDA2NDQKKy0tLSBhL3Ny Yy9jb3JlL2F1ZGlvc291cmNlLmNwcAorKysrIGIvc3JjL2NvcmUvYXVkaW9zb3VyY2UuY3BwCitA QCAtMjg1LDEwICsyODUsMTUgQEAgRkZNU19BdWRpb1NvdXJjZTo6QXVkaW9CbG9jayAqRkZNU19B dWRpb1NvdXJjZTo6Q2FjaGVCbG9jayhDYWNoZUl0ZXJhdG9yICZwb3MpIHsKKyBpbnQgRkZNU19B dWRpb1NvdXJjZTo6RGVjb2RlTmV4dEJsb2NrKENhY2hlSXRlcmF0b3IgKnBvcykgeworICAgICBD dXJyZW50RnJhbWUgPSAmRnJhbWVzW1BhY2tldE51bWJlcl07CisgCistICAgIEFWUGFja2V0IFBh Y2tldDsKKy0gICAgaWYgKCFSZWFkUGFja2V0KCZQYWNrZXQpKQorKyAgICBBVlBhY2tldCAqUGFj a2V0ID0gYXZfcGFja2V0X2FsbG9jKCk7CisrICAgIGlmICghUGFja2V0KQorKyAgICAgICAgdGhy b3cgRkZNU19FeGNlcHRpb24oRkZNU19FUlJPUl9QQVJTRVIsIEZGTVNfRVJST1JfQUxMT0NBVElP Tl9GQUlMRUQsCisrICAgICAgICAgICAgIkNvdWxkIG5vdCBhbGxvY2F0ZSBwYWNrZXQuIik7Cisr ICAgIGlmICghUmVhZFBhY2tldChQYWNrZXQpKSB7CisrICAgICAgICBhdl9wYWNrZXRfZnJlZSgm UGFja2V0KTsKKyAgICAgICAgIHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJST1JfUEFSU0VS LCBGRk1TX0VSUk9SX1VOS05PV04sCisgICAgICAgICAgICAgIlJlYWRQYWNrZXQgdW5leHBlY3Rl ZGx5IGZhaWxlZCB0byByZWFkIGEgcGFja2V0Iik7CisrICAgIH0KKyAKKyAgICAgLy8gUmVhZFBh Y2tldCBtYXkgaGF2ZSBjaGFuZ2VkIHRoZSBwYWNrZXQgbnVtYmVyCisgICAgIEN1cnJlbnRGcmFt ZSA9ICZGcmFtZXNbUGFja2V0TnVtYmVyXTsKK0BAIC0yOTcsOCArMzAyLDkgQEAgaW50IEZGTVNf QXVkaW9Tb3VyY2U6OkRlY29kZU5leHRCbG9jayhDYWNoZUl0ZXJhdG9yICpwb3MpIHsKKyAgICAg aW50IE51bWJlck9mU2FtcGxlcyA9IDA7CisgICAgIEF1ZGlvQmxvY2sgKkNhY2hlZEJsb2NrID0g bnVsbHB0cjsKKyAgICAgCistICAgIGludCBSZXQgPSBhdmNvZGVjX3NlbmRfcGFja2V0KENvZGVj Q29udGV4dCwgJlBhY2tldCk7CistICAgIGF2X3BhY2tldF91bnJlZigmUGFja2V0KTsKKysgICAg aW50IFJldCA9IGF2Y29kZWNfc2VuZF9wYWNrZXQoQ29kZWNDb250ZXh0LCBQYWNrZXQpOworKyAg ICBhdl9wYWNrZXRfdW5yZWYoUGFja2V0KTsKKysgICAgYXZfcGFja2V0X2ZyZWUoJlBhY2tldCk7 CisgCisgICAgIGF2X2ZyYW1lX3VucmVmKERlY29kZUZyYW1lKTsKKyAgICAgUmV0ID0gYXZjb2Rl Y19yZWNlaXZlX2ZyYW1lKENvZGVjQ29udGV4dCwgRGVjb2RlRnJhbWUpOworQEAgLTUxMyw4ICs1 MTksNiBAQCB2b2lkIEZGTVNfQXVkaW9Tb3VyY2U6OlNlZWsoKSB7CisgfQorIAorIGJvb2wgRkZN U19BdWRpb1NvdXJjZTo6UmVhZFBhY2tldChBVlBhY2tldCAqUGFja2V0KSB7CistICAgIEluaXRO dWxsUGFja2V0KCpQYWNrZXQpOworLQorICAgICB3aGlsZSAoYXZfcmVhZF9mcmFtZShGb3JtYXRD b250ZXh0LCBQYWNrZXQpID49IDApIHsKKyAgICAgICAgIGlmIChQYWNrZXQtPnN0cmVhbV9pbmRl eCA9PSBUcmFja051bWJlcikgeworICAgICAgICAgICAgIC8vIFJlcXVpcmVkIGJlY2F1c2Ugbm90 IGFsbCBhdWRpbyBwYWNrZXRzLCBlc3BlY2lhbGx5IGluIG9nZywgaGF2ZSBhIHB0cy4gVXNlIHRo ZSBwcmV2aW91cyB2YWxpZCBwYWNrZXQncyBwdHMgaW5zdGVhZC4KK2RpZmYgLS1naXQgYS9zcmMv Y29yZS9pbmRleGluZy5jcHAgYi9zcmMvY29yZS9pbmRleGluZy5jcHAKK2luZGV4IDIzZmI5NWIu LmU1NDdjNWEgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9pbmRleGluZy5jcHAKKysrKyBiL3NyYy9j b3JlL2luZGV4aW5nLmNwcAorQEAgLTMyMCw3ICszMjAsNyBAQCB2b2lkIEZGTVNfSW5kZXhlcjo6 Q2hlY2tBdWRpb1Byb3BlcnRpZXMoaW50IFRyYWNrLCBBVkNvZGVjQ29udGV4dCAqQ29udGV4dCkg eworICAgICB9CisgfQorIAorLXZvaWQgRkZNU19JbmRleGVyOjpQYXJzZVZpZGVvUGFja2V0KFNo YXJlZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAmcGt0LCBpbnQgKlJlcGVhdFBp Y3QsCisrdm9pZCBGRk1TX0luZGV4ZXI6OlBhcnNlVmlkZW9QYWNrZXQoU2hhcmVkQVZDb250ZXh0 ICZWaWRlb0NvbnRleHQsIEFWUGFja2V0ICpwa3QsIGludCAqUmVwZWF0UGljdCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKkZyYW1lVHlwZSwgYm9vbCAqSW52aXNp YmxlLCBlbnVtIEFWUGljdHVyZVN0cnVjdHVyZSAqTGFzdFBpY1N0cnVjdCkgeworICAgICBpZiAo VmlkZW9Db250ZXh0LlBhcnNlcikgeworICAgICAgICAgdWludDhfdCAqT0I7CitAQCAtMzMwLDgg KzMzMCw4IEBAIHZvaWQgRkZNU19JbmRleGVyOjpQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29u dGV4dCAmVmlkZW9Db250ZXh0LCBBVlBhY2tldCAmcGt0CisgICAgICAgICBhdl9wYXJzZXJfcGFy c2UyKFZpZGVvQ29udGV4dC5QYXJzZXIsCisgICAgICAgICAgICAgVmlkZW9Db250ZXh0LkNvZGVj Q29udGV4dCwKKyAgICAgICAgICAgICAmT0IsICZPQlNpemUsCistICAgICAgICAgICAgcGt0LmRh dGEsIHBrdC5zaXplLAorLSAgICAgICAgICAgIHBrdC5wdHMsIHBrdC5kdHMsIHBrdC5wb3MpOwor KyAgICAgICAgICAgIHBrdC0+ZGF0YSwgcGt0LT5zaXplLAorKyAgICAgICAgICAgIHBrdC0+cHRz LCBwa3QtPmR0cywgcGt0LT5wb3MpOworIAorICAgICAgICAgLy8gSC4yNjQgKFBBRkYpIGFuZCBI RVZDIG1heSBoYXZlIG9uZSBmaWVsZCBwZXIgcGFja2V0LCBzbyB3ZSBuZWVkIHRvIHRyYWNrCisg ICAgICAgICAvLyB3aGVuIHdlIGhhdmUgYSBmdWxsIG9yIGhhbGYgZnJhbWUgYXZhaWxhYmxlLCBh bmQgbWFyayBvbmUgb2YgdGhlbSBhcworQEAgLTM1MSwxNSArMzUxLDE1IEBAIHZvaWQgRkZNU19J bmRleGVyOjpQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9Db250ZXh0LCBB VlBhY2tldCAmcGt0CisgCisgICAgICAgICAqUmVwZWF0UGljdCA9IFZpZGVvQ29udGV4dC5QYXJz ZXItPnJlcGVhdF9waWN0OworICAgICAgICAgKkZyYW1lVHlwZSA9IFZpZGVvQ29udGV4dC5QYXJz ZXItPnBpY3RfdHlwZTsKKy0gICAgICAgICpJbnZpc2libGUgPSAoSW5jb21wbGV0ZUZyYW1lIHx8 IFZpZGVvQ29udGV4dC5QYXJzZXItPnJlcGVhdF9waWN0IDwgMCB8fCAocGt0LmZsYWdzICYgQVZf UEtUX0ZMQUdfRElTQ0FSRCkpOworKyAgICAgICAgKkludmlzaWJsZSA9IChJbmNvbXBsZXRlRnJh bWUgfHwgVmlkZW9Db250ZXh0LlBhcnNlci0+cmVwZWF0X3BpY3QgPCAwIHx8IChwa3QtPmZsYWdz ICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCkpOworICAgICB9IGVsc2UgeworLSAgICAgICAgKkludmlz aWJsZSA9ICEhKHBrdC5mbGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQpOworKyAgICAgICAgKklu dmlzaWJsZSA9ICEhKHBrdC0+ZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVNDQVJEKTsKKyAgICAgfQor IAorICAgICBpZiAoVmlkZW9Db250ZXh0LkNvZGVjQ29udGV4dC0+Y29kZWNfaWQgPT0gQVZfQ09E RUNfSURfVlA4KQorLSAgICAgICAgUGFyc2VWUDgocGt0LmRhdGFbMF0sIEludmlzaWJsZSwgRnJh bWVUeXBlKTsKKysgICAgICAgIFBhcnNlVlA4KHBrdC0+ZGF0YVswXSwgSW52aXNpYmxlLCBGcmFt ZVR5cGUpOworICAgICBlbHNlIGlmIChWaWRlb0NvbnRleHQuQ29kZWNDb250ZXh0LT5jb2RlY19p ZCA9PSBBVl9DT0RFQ19JRF9WUDkpCistICAgICAgICBQYXJzZVZQOShwa3QuZGF0YVswXSwgSW52 aXNpYmxlLCBGcmFtZVR5cGUpOworKyAgICAgICAgUGFyc2VWUDkocGt0LT5kYXRhWzBdLCBJbnZp c2libGUsIEZyYW1lVHlwZSk7CisgfQorIAorIHZvaWQgRkZNU19JbmRleGVyOjpGcmVlKCkgewor QEAgLTQ1OCwzMiArNDU4LDM2IEBAIEZGTVNfSW5kZXggKkZGTVNfSW5kZXhlcjo6RG9JbmRleGlu ZygpIHsKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICBBVlBhY2tldCBQYWNrZXQ7CistICAg IEluaXROdWxsUGFja2V0KFBhY2tldCk7CisrICAgIEFWUGFja2V0ICpQYWNrZXQgPSBhdl9wYWNr ZXRfYWxsb2MoKTsKKysgICAgaWYgKCFQYWNrZXQpCisrICAgICAgICB0aHJvdyBGRk1TX0V4Y2Vw dGlvbihGRk1TX0VSUk9SX0NPREVDLCBGRk1TX0VSUk9SX0FMTE9DQVRJT05fRkFJTEVELAorKyAg ICAgICAgICAgICJDb3VsZCBub3QgYWxsb2NhdGUgcGFja2V0LiIpOworICAgICBzdGQ6OnZlY3Rv cjxpbnQ2NF90PiBMYXN0VmFsaWRUUyhGb3JtYXRDb250ZXh0LT5uYl9zdHJlYW1zLCBBVl9OT1BU U19WQUxVRSk7CisgCisgICAgIGludDY0X3QgZmlsZXNpemUgPSBhdmlvX3NpemUoRm9ybWF0Q29u dGV4dC0+cGIpOworICAgICBlbnVtIEFWUGljdHVyZVN0cnVjdHVyZSBMYXN0UGljU3RydWN0ID0g QVZfUElDVFVSRV9TVFJVQ1RVUkVfVU5LTk9XTjsKKy0gICAgd2hpbGUgKGF2X3JlYWRfZnJhbWUo Rm9ybWF0Q29udGV4dCwgJlBhY2tldCkgPj0gMCkgeworKyAgICB3aGlsZSAoYXZfcmVhZF9mcmFt ZShGb3JtYXRDb250ZXh0LCBQYWNrZXQpID49IDApIHsKKyAgICAgICAgIC8vIFVwZGF0ZSBwcm9n cmVzcworICAgICAgICAgLy8gRm9ybWF0Q29udGV4dC0+cGIgY2FuIGFwcGFyZW50bHkgYmUgTlVM TCB3aGVuIG9wZW5pbmcgaW1hZ2VzLgorICAgICAgICAgaWYgKElDICYmIEZvcm1hdENvbnRleHQt PnBiKSB7CistICAgICAgICAgICAgaWYgKCgqSUMpKEZvcm1hdENvbnRleHQtPnBiLT5wb3MsIGZp bGVzaXplLCBJQ1ByaXZhdGUpKQorKyAgICAgICAgICAgIGlmICgoKklDKShGb3JtYXRDb250ZXh0 LT5wYi0+cG9zLCBmaWxlc2l6ZSwgSUNQcml2YXRlKSkgeworKyAgICAgICAgICAgICAgICBhdl9w YWNrZXRfZnJlZSgmUGFja2V0KTsKKyAgICAgICAgICAgICAgICAgdGhyb3cgRkZNU19FeGNlcHRp b24oRkZNU19FUlJPUl9DQU5DRUxMRUQsIEZGTVNfRVJST1JfVVNFUiwKKyAgICAgICAgICAgICAg ICAgICAgICJDYW5jZWxsZWQgYnkgdXNlciIpOworKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0K Ky0gICAgICAgIGlmICghSW5kZXhNYXNrLmNvdW50KFBhY2tldC5zdHJlYW1faW5kZXgpKSB7Cist ICAgICAgICAgICAgYXZfcGFja2V0X3VucmVmKCZQYWNrZXQpOworKyAgICAgICAgaWYgKCFJbmRl eE1hc2suY291bnQoUGFja2V0LT5zdHJlYW1faW5kZXgpKSB7CisrICAgICAgICAgICAgYXZfcGFj a2V0X3VucmVmKFBhY2tldCk7CisgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICB9Cisg CistICAgICAgICBpbnQgVHJhY2sgPSBQYWNrZXQuc3RyZWFtX2luZGV4OworKyAgICAgICAgaW50 IFRyYWNrID0gUGFja2V0LT5zdHJlYW1faW5kZXg7CisgICAgICAgICBGRk1TX1RyYWNrICZUcmFj a0luZm8gPSAoKlRyYWNrSW5kaWNlcylbVHJhY2tdOworLSAgICAgICAgYm9vbCBLZXlGcmFtZSA9 ICEhKFBhY2tldC5mbGFncyAmIEFWX1BLVF9GTEFHX0tFWSk7CisrICAgICAgICBib29sIEtleUZy YW1lID0gISEoUGFja2V0LT5mbGFncyAmIEFWX1BLVF9GTEFHX0tFWSk7CisgICAgICAgICBSZWFk VFMoUGFja2V0LCBMYXN0VmFsaWRUU1tUcmFja10sICgqVHJhY2tJbmRpY2VzKVtUcmFja10uVXNl RFRTKTsKKyAKKyAgICAgICAgIGlmIChGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1RyYWNrXS0+Y29k ZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1ZJREVPKSB7CistICAgICAgICAgICAg aW50NjRfdCBQVFMgPSBUcmFja0luZm8uVXNlRFRTID8gUGFja2V0LmR0cyA6IFBhY2tldC5wdHM7 CisrICAgICAgICAgICAgaW50NjRfdCBQVFMgPSBUcmFja0luZm8uVXNlRFRTID8gUGFja2V0LT5k dHMgOiBQYWNrZXQtPnB0czsKKyAgICAgICAgICAgICBpZiAoUFRTID09IEFWX05PUFRTX1ZBTFVF KSB7CisgICAgICAgICAgICAgICAgIC8vIFZQeCBhbHQtcmVmcyBhcmUgb3V0cHV0IGFzIHBhY2tl dHMgd2hpY2ggbGFjayB0aW1lc3RtcHMgb3IgZHVyYXRpb25zLCBzaW5jZQorICAgICAgICAgICAg ICAgICAvLyB0aGV5IGFyZSBpbnZpc2libGUuIEN1cnJlbnRseSwgdGhlIHRpbWVzdGFtcCBtYW5n bGluZyBjb2RlIGluIGxpYmF2Zm9ybWF0CitAQCAtNDk1LDkgKzQ5OSwxMSBAQCBGRk1TX0luZGV4 ICpGRk1TX0luZGV4ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAgICAgICAgICAgICAgIC8vIEZGTVMy IGN1cnJlbnRseSBzb3J0cyBwYWNrZXRzIGJ5IFBUUywgd2hpY2ggd2lsbCBicmVhayBkZWNvZGlu Zywgb3RoZXJ3aXNlLgorICAgICAgICAgICAgICAgICBib29sIEhhc0FsdFJlZnMgPSAoRm9ybWF0 Q29udGV4dC0+c3RyZWFtc1tUcmFja10tPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19J RF9WUDggfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdENvbnRl eHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA5 KTsKKy0gICAgICAgICAgICAgICAgaWYgKFBhY2tldC5kdXJhdGlvbiA9PSAwICYmICFIYXNBbHRS ZWZzKQorKyAgICAgICAgICAgICAgICBpZiAoUGFja2V0LT5kdXJhdGlvbiA9PSAwICYmICFIYXNB bHRSZWZzKSB7CisrICAgICAgICAgICAgICAgICAgICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0KTsK KyAgICAgICAgICAgICAgICAgICAgIHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJST1JfSU5E RVhJTkcsIEZGTVNfRVJST1JfUEFSU0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZh bGlkIHBhY2tldCBwdHMsIGR0cywgYW5kIGR1cmF0aW9uIik7CisrICAgICAgICAgICAgICAgIH0K KyAKKyAgICAgICAgICAgICAgICAgaWYgKFRyYWNrSW5mby5lbXB0eSgpKQorICAgICAgICAgICAg ICAgICAgICAgUFRTID0gMDsKK0BAIC01MTMsNyArNTE5LDcgQEAgRkZNU19JbmRleCAqRkZNU19J bmRleGVyOjpEb0luZGV4aW5nKCkgeworICAgICAgICAgICAgIFBhcnNlVmlkZW9QYWNrZXQoQVZD b250ZXh0c1tUcmFja10sIFBhY2tldCwgJlJlcGVhdFBpY3QsICZGcmFtZVR5cGUsICZJbnZpc2li bGUsICZMYXN0UGljU3RydWN0KTsKKyAKKyAgICAgICAgICAgICBUcmFja0luZm8uQWRkVmlkZW9G cmFtZShQVFMsIFJlcGVhdFBpY3QsIEtleUZyYW1lLAorLSAgICAgICAgICAgICAgICBGcmFtZVR5 cGUsIFBhY2tldC5wb3MsIEludmlzaWJsZSk7CisrICAgICAgICAgICAgICAgIEZyYW1lVHlwZSwg UGFja2V0LT5wb3MsIEludmlzaWJsZSk7CisgICAgICAgICB9IGVsc2UgaWYgKEZvcm1hdENvbnRl eHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVf QVVESU8pIHsKKyAgICAgICAgICAgICAvLyBGb3IgdmlkZW8gc2Vla2luZyB0aW1lc3RhbXBzIGFy ZSB1c2VkIG9ubHkgaWYgYWxsIHBhY2tldHMgaGF2ZQorICAgICAgICAgICAgIC8vIHRpbWVzdGFt cHMsIHdoaWxlIGZvciBhdWRpbyB0aGV5J3JlIHVzZWQgaWYgYW55IGhhdmUgdGltZXN0YW1wcywK K0BAIC01MjIsMjggKzUyOCwyOSBAQCBGRk1TX0luZGV4ICpGRk1TX0luZGV4ZXI6OkRvSW5kZXhp bmcoKSB7CisgICAgICAgICAgICAgICAgIFRyYWNrSW5mby5IYXNUUyA9IHRydWU7CisgCisgICAg ICAgICAgICAgaW50NjRfdCBTdGFydFNhbXBsZSA9IEFWQ29udGV4dHNbVHJhY2tdLkN1cnJlbnRT YW1wbGU7CistICAgICAgICAgICAgdWludDMyX3QgU2FtcGxlQ291bnQgPSBJbmRleEF1ZGlvUGFj a2V0KFRyYWNrLCAmUGFja2V0LCBBVkNvbnRleHRzW1RyYWNrXSwgKlRyYWNrSW5kaWNlcyk7Cisr ICAgICAgICAgICAgdWludDMyX3QgU2FtcGxlQ291bnQgPSBJbmRleEF1ZGlvUGFja2V0KFRyYWNr LCBQYWNrZXQsIEFWQ29udGV4dHNbVHJhY2tdLCAqVHJhY2tJbmRpY2VzKTsKKyAgICAgICAgICAg ICBUcmFja0luZm8uU2FtcGxlUmF0ZSA9IEFWQ29udGV4dHNbVHJhY2tdLkNvZGVjQ29udGV4dC0+ c2FtcGxlX3JhdGU7CisgCisgICAgICAgICAgICAgVHJhY2tJbmZvLkFkZEF1ZGlvRnJhbWUoTGFz dFZhbGlkVFNbVHJhY2tdLAorLSAgICAgICAgICAgICAgICBTdGFydFNhbXBsZSwgU2FtcGxlQ291 bnQsIEtleUZyYW1lLCBQYWNrZXQucG9zLCBQYWNrZXQuZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVND QVJEKTsKKysgICAgICAgICAgICAgICAgU3RhcnRTYW1wbGUsIFNhbXBsZUNvdW50LCBLZXlGcmFt ZSwgUGFja2V0LT5wb3MsIFBhY2tldC0+ZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVNDQVJEKTsKKyAg ICAgICAgIH0KKyAKKy0gICAgICAgIGlmICghKFBhY2tldC5mbGFncyAmIEFWX1BLVF9GTEFHX0RJ U0NBUkQpKQorLSAgICAgICAgICAgIFRyYWNrSW5mby5MYXN0RHVyYXRpb24gPSBQYWNrZXQuZHVy YXRpb247CisrICAgICAgICBpZiAoIShQYWNrZXQtPmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FS RCkpCisrICAgICAgICAgICAgVHJhY2tJbmZvLkxhc3REdXJhdGlvbiA9IFBhY2tldC0+ZHVyYXRp b247CisgCistICAgICAgICBhdl9wYWNrZXRfdW5yZWYoJlBhY2tldCk7CisrICAgICAgICBhdl9w YWNrZXRfdW5yZWYoUGFja2V0KTsKKyAgICAgfQorKyAgICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0 KTsKKyAKKyAgICAgVHJhY2tJbmRpY2VzLT5GaW5hbGl6ZShBVkNvbnRleHRzLCBGb3JtYXRDb250 ZXh0LT5pZm9ybWF0LT5uYW1lKTsKKyAgICAgcmV0dXJuIFRyYWNrSW5kaWNlcy5yZWxlYXNlKCk7 CisgfQorIAorLXZvaWQgRkZNU19JbmRleGVyOjpSZWFkVFMoY29uc3QgQVZQYWNrZXQgJlBhY2tl dCwgaW50NjRfdCAmVFMsIGJvb2wgJlVzZURUUykgeworLSAgICBpZiAoIVVzZURUUyAmJiBQYWNr ZXQucHRzICE9IEFWX05PUFRTX1ZBTFVFKQorLSAgICAgICAgVFMgPSBQYWNrZXQucHRzOworK3Zv aWQgRkZNU19JbmRleGVyOjpSZWFkVFMoY29uc3QgQVZQYWNrZXQgKlBhY2tldCwgaW50NjRfdCAm VFMsIGJvb2wgJlVzZURUUykgeworKyAgICBpZiAoIVVzZURUUyAmJiBQYWNrZXQtPnB0cyAhPSBB Vl9OT1BUU19WQUxVRSkKKysgICAgICAgIFRTID0gUGFja2V0LT5wdHM7CisgICAgIGlmIChUUyA9 PSBBVl9OT1BUU19WQUxVRSkKKyAgICAgICAgIFVzZURUUyA9IHRydWU7CistICAgIGlmIChVc2VE VFMgJiYgUGFja2V0LmR0cyAhPSBBVl9OT1BUU19WQUxVRSkKKy0gICAgICAgIFRTID0gUGFja2V0 LmR0czsKKysgICAgaWYgKFVzZURUUyAmJiBQYWNrZXQtPmR0cyAhPSBBVl9OT1BUU19WQUxVRSkK KysgICAgICAgIFRTID0gUGFja2V0LT5kdHM7CisgfQorZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2lu ZGV4aW5nLmggYi9zcmMvY29yZS9pbmRleGluZy5oCitpbmRleCAzY2ZjM2MzLi41YzA2ODY4IDEw MDY0NAorLS0tIGEvc3JjL2NvcmUvaW5kZXhpbmcuaAorKysrIGIvc3JjL2NvcmUvaW5kZXhpbmcu aAorQEAgLTgwLDEwICs4MCwxMCBAQCBwcml2YXRlOgorICAgICBpbnQ2NF90IEZpbGVzaXplOwor ICAgICB1aW50OF90IERpZ2VzdFsyMF07CisgCistICAgIHZvaWQgUmVhZFRTKGNvbnN0IEFWUGFj a2V0ICZQYWNrZXQsIGludDY0X3QgJlRTLCBib29sICZVc2VEVFMpOworKyAgICB2b2lkIFJlYWRU Uyhjb25zdCBBVlBhY2tldCAqUGFja2V0LCBpbnQ2NF90ICZUUywgYm9vbCAmVXNlRFRTKTsKKyAg ICAgdm9pZCBDaGVja0F1ZGlvUHJvcGVydGllcyhpbnQgVHJhY2ssIEFWQ29kZWNDb250ZXh0ICpD b250ZXh0KTsKKyAgICAgdWludDMyX3QgSW5kZXhBdWRpb1BhY2tldChpbnQgVHJhY2ssIEFWUGFj a2V0ICpQYWNrZXQsIFNoYXJlZEFWQ29udGV4dCAmQ29udGV4dCwgRkZNU19JbmRleCAmVHJhY2tJ bmRpY2VzKTsKKy0gICAgdm9pZCBQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29udGV4dCAmVmlk ZW9Db250ZXh0LCBBVlBhY2tldCAmcGt0LCBpbnQgKlJlcGVhdFBpY3QsIGludCAqRnJhbWVUeXBl LCBib29sICpJbnZpc2libGUsIGVudW0gQVZQaWN0dXJlU3RydWN0dXJlICpMYXN0UGljU3RydWN0 KTsKKysgICAgdm9pZCBQYXJzZVZpZGVvUGFja2V0KFNoYXJlZEFWQ29udGV4dCAmVmlkZW9Db250 ZXh0LCBBVlBhY2tldCAqcGt0LCBpbnQgKlJlcGVhdFBpY3QsIGludCAqRnJhbWVUeXBlLCBib29s ICpJbnZpc2libGUsIGVudW0gQVZQaWN0dXJlU3RydWN0dXJlICpMYXN0UGljU3RydWN0KTsKKyAg ICAgdm9pZCBGcmVlKCk7CisgcHVibGljOgorICAgICBGRk1TX0luZGV4ZXIoY29uc3QgY2hhciAq RmlsZW5hbWUpOworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL3V0aWxzLmNwcCBiL3NyYy9jb3JlL3V0 aWxzLmNwcAoraW5kZXggY2U2NzUzMy4uOGEyZTk5NyAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL3V0 aWxzLmNwcAorKysrIGIvc3JjL2NvcmUvdXRpbHMuY3BwCitAQCAtNjIsMTIgKzYyLDYgQEAgdm9p ZCBDbGVhckVycm9ySW5mbyhGRk1TX0Vycm9ySW5mbyAqRXJyb3JJbmZvKSB7CisgICAgIH0KKyB9 CisgCistdm9pZCBJbml0TnVsbFBhY2tldChBVlBhY2tldCAmcGt0KSB7CistICAgIGF2X2luaXRf cGFja2V0KCZwa3QpOworLSAgICBwa3QuZGF0YSA9IG51bGxwdHI7CistICAgIHBrdC5zaXplID0g MDsKKy19CistCisgdm9pZCBGaWxsQVAoRkZNU19BdWRpb1Byb3BlcnRpZXMgJkFQLCBBVkNvZGVj Q29udGV4dCAqQ1RYLCBGRk1TX1RyYWNrICZGcmFtZXMpIHsKKyAgICAgQVAuU2FtcGxlRm9ybWF0 ID0gc3RhdGljX2Nhc3Q8RkZNU19TYW1wbGVGb3JtYXQ+KGF2X2dldF9wYWNrZWRfc2FtcGxlX2Zt dChDVFgtPnNhbXBsZV9mbXQpKTsKKyAgICAgQVAuQml0c1BlclNhbXBsZSA9IGF2X2dldF9ieXRl c19wZXJfc2FtcGxlKENUWC0+c2FtcGxlX2ZtdCkgKiA4OworZGlmZiAtLWdpdCBhL3NyYy9jb3Jl L3V0aWxzLmggYi9zcmMvY29yZS91dGlscy5oCitpbmRleCA5ODE5ZGM3Li4wMDNhYjc5IDEwMDY0 NAorLS0tIGEvc3JjL2NvcmUvdXRpbHMuaAorKysrIGIvc3JjL2NvcmUvdXRpbHMuaAorQEAgLTU4 LDcgKzU4LDYgQEAgc3RkOjp1bmlxdWVfcHRyPFQ+IG1ha2VfdW5pcXVlKEFyZ3MmJi4uLiBhcmdz KSB7CisgfQorIAorIHZvaWQgQ2xlYXJFcnJvckluZm8oRkZNU19FcnJvckluZm8gKkVycm9ySW5m byk7Cistdm9pZCBJbml0TnVsbFBhY2tldChBVlBhY2tldCAmcGt0KTsKKyB2b2lkIEZpbGxBUChG Rk1TX0F1ZGlvUHJvcGVydGllcyAmQVAsIEFWQ29kZWNDb250ZXh0ICpDVFgsIEZGTVNfVHJhY2sg JkZyYW1lcyk7CisgCisgdm9pZCBMQVZGT3BlbkZpbGUoY29uc3QgY2hhciAqU291cmNlRmlsZSwg QVZGb3JtYXRDb250ZXh0IComRm9ybWF0Q29udGV4dCwgaW50IFRyYWNrKTsKK2RpZmYgLS1naXQg YS9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAgYi9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAKK2lu ZGV4IDA2YmQxNjEuLmI4ODk5NzAgMTAwNjQ0CistLS0gYS9zcmMvY29yZS92aWRlb3NvdXJjZS5j cHAKKysrKyBiL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAorQEAgLTY3MywzMCArNjczLDM0IEBA IHZvaWQgRkZNU19WaWRlb1NvdXJjZTo6RGVjb2RlTmV4dEZyYW1lKGludDY0X3QgJkFTdGFydFRp bWUsIGludDY0X3QgJlBvcykgeworICAgICBpZiAoSGFzUGVuZGluZ0RlbGF5ZWRGcmFtZXMoKSkK KyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgQVZQYWNrZXQgUGFja2V0OworLSAgICBJbml0TnVs bFBhY2tldChQYWNrZXQpOworLQorLSAgICB3aGlsZSAoUmVhZEZyYW1lKCZQYWNrZXQpID49IDAp IHsKKy0gICAgICAgIGlmIChQYWNrZXQuc3RyZWFtX2luZGV4ICE9IFZpZGVvVHJhY2spIHsKKy0g ICAgICAgICAgICBhdl9wYWNrZXRfdW5yZWYoJlBhY2tldCk7CisrICAgIEFWUGFja2V0ICpQYWNr ZXQgPSBhdl9wYWNrZXRfYWxsb2MoKTsKKysgICAgaWYgKCFQYWNrZXQpCisrICAgICAgICB0aHJv dyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0RFQ09ESU5HLCBGRk1TX0VSUk9SX0FMTE9DQVRJ T05fRkFJTEVELAorKyAgICAgICAgICAgICJDb3VsZCBub3QgYWxsb2NhdGUgcGFja2V0LiIpOwor KworKyAgICB3aGlsZSAoUmVhZEZyYW1lKFBhY2tldCkgPj0gMCkgeworKyAgICAgICAgaWYgKFBh Y2tldC0+c3RyZWFtX2luZGV4ICE9IFZpZGVvVHJhY2spIHsKKysgICAgICAgICAgICBhdl9wYWNr ZXRfdW5yZWYoUGFja2V0KTsKKyAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgIH0KKyAK KyAgICAgICAgIGlmIChBU3RhcnRUaW1lIDwgMCkKKy0gICAgICAgICAgICBBU3RhcnRUaW1lID0g RnJhbWVzLlVzZURUUyA/IFBhY2tldC5kdHMgOiBQYWNrZXQucHRzOworKyAgICAgICAgICAgIEFT dGFydFRpbWUgPSBGcmFtZXMuVXNlRFRTID8gUGFja2V0LT5kdHMgOiBQYWNrZXQtPnB0czsKKyAK KyAgICAgICAgIGlmIChQb3MgPCAwKQorLSAgICAgICAgICAgIFBvcyA9IFBhY2tldC5wb3M7Cisr ICAgICAgICAgICAgUG9zID0gUGFja2V0LT5wb3M7CisgCistICAgICAgICBib29sIEZyYW1lRmlu aXNoZWQgPSBEZWNvZGVQYWNrZXQoJlBhY2tldCk7CistICAgICAgICBhdl9wYWNrZXRfdW5yZWYo JlBhY2tldCk7CistICAgICAgICBpZiAoRnJhbWVGaW5pc2hlZCkKKysgICAgICAgIGJvb2wgRnJh bWVGaW5pc2hlZCA9IERlY29kZVBhY2tldChQYWNrZXQpOworKyAgICAgICAgYXZfcGFja2V0X3Vu cmVmKFBhY2tldCk7CisrICAgICAgICBpZiAoRnJhbWVGaW5pc2hlZCkgeworKyAgICAgICAgICAg IGF2X3BhY2tldF9mcmVlKCZQYWNrZXQpOworICAgICAgICAgICAgIHJldHVybjsKKysgICAgICAg IH0KKyAgICAgfQorIAorICAgICAvLyBGbHVzaCBmaW5hbCBmcmFtZXMKKy0gICAgSW5pdE51bGxQ YWNrZXQoUGFja2V0KTsKKy0gICAgRGVjb2RlUGFja2V0KCZQYWNrZXQpOworKyAgICBEZWNvZGVQ YWNrZXQoUGFja2V0KTsKKysgICAgYXZfcGFja2V0X2ZyZWUoJlBhY2tldCk7CisgfQorIAorIGJv b2wgRkZNU19WaWRlb1NvdXJjZTo6U2Vla1RvKGludCBuLCBpbnQgU2Vla09mZnNldCkgeworLS0g CisyLjQwLjAKKworRnJvbSBiZjllMDNlOWUwODUzNGMwMjRlNWE3NDRhNjQzN2M0YWFjMTYwMjAx IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVyZWsgQnVpdGVuaHVpcyA8ZGVyZWsu YnVpdGVuaHVpc0BnbWFpbC5jb20+CitEYXRlOiBUdWUsIDQgTWF5IDIwMjEgMTQ6MjA6NDcgKzAx MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIGNvbmZpZ3VyZTogUmVtb3ZlIGRlcHJlY2F0ZWQgQVBJ IHVzZQorCitTaWduZWQtb2ZmLWJ5OiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0ZW5odWlz QGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2Vk LCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1 cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGIzNWVmODBiYy4uZDE5NzE0ZDBmIDEwMDY0NAor LS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xMDIsMTAgKzEwMiwx MCBAQCBDRkxBR1M9IiRfQ0ZMQUdTICRGRk1QRUdfQ0ZMQUdTIgorCisgQUNfREVGVU4oW1RFU1Rf RkZNUEVHXSwKKyAgICAgICAgICBbQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWwor LSAgICAgICAgICAgICNpbmNsdWRlIDxsaWJhdmNvZGVjL2F2Y29kZWMuaD4KKysgICAgICAgICAg ICAjaW5jbHVkZSA8bGliYXZmb3JtYXQvYXZmb3JtYXQuaD4KKyAgICAgICAgICAgICAjaW5jbHVk ZSA8bGlic3dzY2FsZS9zd3NjYWxlLmg+CisgICAgICAgICAgICAgXV0sW1sKKy0gICAgICAgICAg ICAgICAgYXZjb2RlY19yZWdpc3Rlcl9hbGwoKTsKKysgICAgICAgICAgICAgICAgYXZmb3JtYXRf bmV0d29ya19pbml0KCk7CisgICAgICAgICAgICAgICAgIHN3c2NhbGVfdmVyc2lvbigpOworICAg ICAgICAgICAgIF1dKV0sIFtldmFsICQxPXllc10sIFtldmFsICQxPW5vXSkKKyAgICAgICAgIF0p CisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtczIvdGVtcGxhdGUgYi9zcmNwa2dzL2ZmbXMyL3Rl bXBsYXRlCmluZGV4IDY4ZThhMGMxNGJjZTMuLjJhY2ZhZGFjNDRiMzQgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvZmZtczIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9mZm1zMi90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2ZmbXMyJwogcGtnbmFtZT1mZm1zMgogdmVy c2lvbj0yLjQwCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtY29uZmln dXJlCiBjb25maWd1cmVfYXJncz0iLS1lbmFibGUtc2hhcmVkIC0tZGlzYWJsZS1zdGF0aWMiCiBo b3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgYXV0b2NvbmYgYXV0b21ha2UgbGlidG9vbCIKCkZy b20gNDlhZWQ1ZDA0MzE5ZjJkODk4MmJlZDBlZmMxMzQ0YWUxZTJiNDcwOSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDM0LzExM10gZnJlZXJk cDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiAuLi4vZnJlZXJkcC9wYXRjaGVzL2ZmbXBl ZzZfYWEyY2I5YWEucGF0Y2ggICAgfCA0MiArKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2Zy ZWVyZHAvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogMiBmaWxlcyBjaGFu Z2VkLCA0MyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy9mcmVlcmRwL3BhdGNoZXMvZmZtcGVnNl9hYTJjYjlhYS5wYXRjaAoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvZnJlZXJkcC9wYXRjaGVzL2ZmbXBlZzZfYWEyY2I5YWEucGF0Y2ggYi9zcmNw a2dzL2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2X2FhMmNiOWFhLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmE0MzI0ZGEzYTg4MjIKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2X2FhMmNiOWFhLnBhdGNoCkBAIC0w LDAgKzEsNDIgQEAKK0Zyb20gYWEyY2I5YWE1ZmY1NTYyNDMzNTk4YmExNjhhNDY2ZTA3NTJiY2Ew ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGFrYWxsYWJldGggPGFrYWxsYWJldGhA cG9zdGVvLm5ldD4KK0RhdGU6IFR1ZSwgMTQgRmViIDIwMjMgMDc6NDg6NTQgKzAxMDAKK1N1Ympl Y3Q6IFtQQVRDSF0gRml4ZWQgIzg2ODY6IFVwZGF0ZSBoMjY0IHRvIHVzZSBuZXcgRkZNUEVHIEFQ SQorCistLS0KKyBjaGFubmVscy90c21mL2NsaWVudC9mZm1wZWcvdHNtZl9mZm1wZWcuYyB8IDIg KysKKyBsaWJmcmVlcmRwL2NvZGVjL2gyNjRfZmZtcGVnLmMgICAgICAgICAgICB8IDIgKysKKyAy IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMv dHNtZi9jbGllbnQvZmZtcGVnL3RzbWZfZmZtcGVnLmMgYi9jaGFubmVscy90c21mL2NsaWVudC9m Zm1wZWcvdHNtZl9mZm1wZWcuYworaW5kZXggMzM5NDYyZDg2NWYuLmJlZWE4MGI3YTFlIDEwMDY0 NAorLS0tIGEvY2hhbm5lbHMvdHNtZi9jbGllbnQvZmZtcGVnL3RzbWZfZmZtcGVnLmMKKysrKyBi L2NoYW5uZWxzL3RzbWYvY2xpZW50L2ZmbXBlZy90c21mX2ZmbXBlZy5jCitAQCAtMjM5LDggKzIz OSwxMCBAQCBzdGF0aWMgQk9PTCB0c21mX2ZmbXBlZ19pbml0X3N0cmVhbShJVFNNRkRlY29kZXIq IGRlY29kZXIsIGNvbnN0IFRTX0FNX01FRElBX1RZUAorIAkJfQorIAl9CisgCisrI2lmIExJQkFW Q09ERUNfVkVSU0lPTl9JTlQgPCBBVl9WRVJTSU9OX0lOVCg1OSwgMTgsIDEwMCkKKyAJaWYgKG1k ZWNvZGVyLT5jb2RlYy0+Y2FwYWJpbGl0aWVzICYgQVZfQ09ERUNfQ0FQX1RSVU5DQVRFRCkKKyAJ CW1kZWNvZGVyLT5jb2RlY19jb250ZXh0LT5mbGFncyB8PSBBVl9DT0RFQ19GTEFHX1RSVU5DQVRF RDsKKysjZW5kaWYKKyAKKyAJcmV0dXJuIFRSVUU7CisgfQorZGlmZiAtLWdpdCBhL2xpYmZyZWVy ZHAvY29kZWMvaDI2NF9mZm1wZWcuYyBiL2xpYmZyZWVyZHAvY29kZWMvaDI2NF9mZm1wZWcuYwor aW5kZXggOGEyM2RiMjQ3M2MuLjg5NmEzMzMwMTliIDEwMDY0NAorLS0tIGEvbGliZnJlZXJkcC9j b2RlYy9oMjY0X2ZmbXBlZy5jCisrKysgYi9saWJmcmVlcmRwL2NvZGVjL2gyNjRfZmZtcGVnLmMK K0BAIC02MTUsMTAgKzYxNSwxMiBAQCBzdGF0aWMgQk9PTCBsaWJhdmNvZGVjX2luaXQoSDI2NF9D T05URVhUKiBoMjY0KQorIAkJCWdvdG8gRVhDRVBUSU9OOworIAkJfQorIAorKyNpZiBMSUJBVkNP REVDX1ZFUlNJT05fSU5UIDwgQVZfVkVSU0lPTl9JTlQoNTksIDE4LCAxMDApCisgCQlpZiAoc3lz LT5jb2RlY0RlY29kZXItPmNhcGFiaWxpdGllcyAmIEFWX0NPREVDX0NBUF9UUlVOQ0FURUQpCisg CQl7CisgCQkJc3lzLT5jb2RlY0RlY29kZXJDb250ZXh0LT5mbGFncyB8PSBBVl9DT0RFQ19GTEFH X1RSVU5DQVRFRDsKKyAJCX0KKysjZW5kaWYKKyAKKyAjaWZkZWYgV0lUSF9WQUFQSQorIApkaWZm IC0tZ2l0IGEvc3JjcGtncy9mcmVlcmRwL3RlbXBsYXRlIGIvc3JjcGtncy9mcmVlcmRwL3RlbXBs YXRlCmluZGV4IDI1ZThhYTk2NzdmMGIuLjRkNTFjODE4OTkwMmEgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvZnJlZXJkcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2ZyZWVyZHAvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmcmVlcmRwJwogcGtnbmFtZT1mcmVlcmRw CiB2ZXJzaW9uPTIuMTAuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21h a2UKIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfQUxTQT1PTiAtRFdJVEhfQ1VQUz1PRkYgLURXSVRI X0ZGTVBFRz1PTgogIC1EV0lUSF9HU1RSRUFNRVJfMF8xMD1PRkYgLURXSVRIX0dTVFJFQU1FUl8x XzA9T0ZGIC1EV0lUSF9KUEVHPU9OCgpGcm9tIDk3ZDFjZTFmNzY0ZWQ0YWM3MzJjNGQ1MzQ5OWQ1 Y2ViY2ZmNjQ2MDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVj dDogW1BBVENIIDAzNS8xMTNdIGdlcmJlcmE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQog c3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nZXJiZXJhL3RlbXBs YXRlIGIvc3JjcGtncy9nZXJiZXJhL3RlbXBsYXRlCmluZGV4IGFlMTRmMzVjNzY3YzAuLjJkYzBh YzBjZTAzYjUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ2VyYmVyYS90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2dlcmJlcmEvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdnZXJiZXJhJwogcGtnbmFtZT1nZXJiZXJhCiB2ZXJzaW9uPTEuMTIuMQotcmV2aXNpb249MQor cmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFdJVEhfU1lT VEVNRD0wIC1EV0lUSF9BVkNPREVDPTEiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCgpG cm9tIGY3MTZmMTRjMTNiZmM3MzljMDBlZmZhNTY3YTI4YTVjMThhN2IwZTkgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MjIgTWFyIDIwMjMgMjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzNi8xMTNdIGdvbGRl bmRpY3Q6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9nb2xkZW5kaWN0L3Bh dGNoZXMvZmZtcGVnNS5wYXRjaCB8IDIzMiArKysrKysrKysrKysrKysrKysrKysrKwogc3JjcGtn cy9nb2xkZW5kaWN0L3RlbXBsYXRlICAgICAgICAgICAgICB8ICAgNCArLQogMiBmaWxlcyBjaGFu Z2VkLCAyMzQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9nb2xkZW5kaWN0L3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3MvZ29sZGVu ZGljdC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwMC4uN2NmYzk4YWRhMzY4YQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZ29s ZGVuZGljdC9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSwyMzIgQEAKK0Zyb20gMDNi YmUwMWI3OWExZjA3YTY3ODBjYjYwZjIzYTA4NzEwNGM1ZDc3YiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKK0Zyb206IEFiczYyIDxvdHRvbWFubkB5YW5kZXgucnU+CitEYXRlOiBGcmksIDMwIE1h ciAyMDE4IDIyOjUzOjI0ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCB3YXJuaW5ncyB3aGls ZSBjb21waWxlIHdpdGggRkZNcGVnIDMuNC4yIChpc3N1ZSAjOTc4KQorCistLS0KKyBmZm1wZWdh dWRpby5jYyB8IDY4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYyIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0p CisKK2RpZmYgLS1naXQgYS9mZm1wZWdhdWRpby5jYyBiL2ZmbXBlZ2F1ZGlvLmNjCitpbmRleCBl ZDExNzJiZGQuLjU2ZThmNzg4ZSAxMDA2NDQKKy0tLSBhL2ZmbXBlZ2F1ZGlvLmNjCisrKysgYi9m Zm1wZWdhdWRpby5jYworQEAgLTkxLDYgKzkxLDcgQEAgc3RydWN0IERlY29kZXJDb250ZXh0Cisg ICBRQnl0ZUFycmF5IGF1ZGlvRGF0YV87CisgICBRRGF0YVN0cmVhbSBhdWRpb0RhdGFTdHJlYW1f OworICAgQVZGb3JtYXRDb250ZXh0ICogZm9ybWF0Q29udGV4dF87CisrICBBVkNvZGVjICogY29k ZWNfOworICAgQVZDb2RlY0NvbnRleHQgKiBjb2RlY0NvbnRleHRfOworICAgQVZJT0NvbnRleHQg KiBhdmlvQ29udGV4dF87CisgICBBVlN0cmVhbSAqIGF1ZGlvU3RyZWFtXzsKK0BAIC0xMTQsNiAr MTE1LDcgQEAgRGVjb2RlckNvbnRleHQ6OkRlY29kZXJDb250ZXh0KCBRQnl0ZUFycmF5IGNvbnN0 ICYgYXVkaW9EYXRhLCBRQXRvbWljSW50ICYgaXNDYW4KKyAgIGF1ZGlvRGF0YV8oIGF1ZGlvRGF0 YSApLAorICAgYXVkaW9EYXRhU3RyZWFtXyggYXVkaW9EYXRhXyApLAorICAgZm9ybWF0Q29udGV4 dF8oIE5VTEwgKSwKKysgIGNvZGVjXyggTlVMTCApLAorICAgY29kZWNDb250ZXh0XyggTlVMTCAp LAorICAgYXZpb0NvbnRleHRfKCBOVUxMICksCisgICBhdWRpb1N0cmVhbV8oIE5VTEwgKSwKK0BA IC0xNDMsNyArMTQ1LDExIEBAIGJvb2wgRGVjb2RlckNvbnRleHQ6Om9wZW5Db2RlYyggUVN0cmlu ZyAmIGVycm9yU3RyaW5nICkKKyAgICAgcmV0dXJuIGZhbHNlOworICAgfQorCisrI2lmIExJQkFW Q09ERUNfVkVSU0lPTl9NQUpPUiA8IDU2IHx8ICggTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SID09 IDU2ICYmIExJQkFWQ09ERUNfVkVSU0lPTl9NSU5PUiA8IDU2ICkKKyAgIHVuc2lnbmVkIGNoYXIg KiBhdmlvQnVmZmVyID0gKCB1bnNpZ25lZCBjaGFyICogKWF2X21hbGxvYygga0J1ZmZlclNpemUg KyBGRl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFICk7CisrI2Vsc2UKKysgIHVuc2lnbmVkIGNo YXIgKiBhdmlvQnVmZmVyID0gKCB1bnNpZ25lZCBjaGFyICogKWF2X21hbGxvYygga0J1ZmZlclNp emUgKyBBVl9JTlBVVF9CVUZGRVJfUEFERElOR19TSVpFICk7CisrI2VuZGlmCisgICBpZiAoICFh dmlvQnVmZmVyICkKKyAgIHsKKyAgICAgZXJyb3JTdHJpbmcgPSBRT2JqZWN0Ojp0ciggImF2X21h bGxvYygpIGZhaWxlZC4iICk7CitAQCAtMTg2LDcgKzE5MiwxMSBAQCBib29sIERlY29kZXJDb250 ZXh0OjpvcGVuQ29kZWMoIFFTdHJpbmcgJiBlcnJvclN0cmluZyApCisgICAvLyBGaW5kIGF1ZGlv IHN0cmVhbSwgdXNlIHRoZSBmaXJzdCBhdWRpbyBzdHJlYW0gaWYgYXZhaWxhYmxlCisgICBmb3Ig KCB1bnNpZ25lZCBpID0gMDsgaSA8IGZvcm1hdENvbnRleHRfLT5uYl9zdHJlYW1zOyBpKysgKQor ICAgeworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1NyB8fCAoIExJQkFWQ09ERUNf VkVSU0lPTl9NQUpPUiA9PSA1NyAmJiBMSUJBVkNPREVDX1ZFUlNJT05fTUlOT1IgPCAzMyApCisg ICAgIGlmICggZm9ybWF0Q29udGV4dF8tPnN0cmVhbXNbaV0tPmNvZGVjLT5jb2RlY190eXBlID09 IEFWTUVESUFfVFlQRV9BVURJTyApCisrI2Vsc2UKKysgICAgICBpZiAoIGZvcm1hdENvbnRleHRf LT5zdHJlYW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfQVVESU8g KQorKyNlbmRpZgorICAgICB7CisgICAgICAgYXVkaW9TdHJlYW1fID0gZm9ybWF0Q29udGV4dF8t PnN0cmVhbXNbaV07CisgICAgICAgYnJlYWs7CitAQCAtMTk4LDIyICsyMDgsMzggQEAgYm9vbCBE ZWNvZGVyQ29udGV4dDo6b3BlbkNvZGVjKCBRU3RyaW5nICYgZXJyb3JTdHJpbmcgKQorICAgICBy ZXR1cm4gZmFsc2U7CisgICB9CisKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTcg fHwgKCBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPT0gNTcgJiYgTElCQVZDT0RFQ19WRVJTSU9O X01JTk9SIDwgMzMgKQorICAgY29kZWNDb250ZXh0XyA9IGF1ZGlvU3RyZWFtXy0+Y29kZWM7Cist ICBBVkNvZGVjICogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlciggY29kZWNDb250ZXh0Xy0+ Y29kZWNfaWQgKTsKKy0gIGlmICggIWNvZGVjICkKKysgIGNvZGVjXyA9IGF2Y29kZWNfZmluZF9k ZWNvZGVyKCBjb2RlY0NvbnRleHRfLT5jb2RlY19pZCApOworKyAgaWYgKCAhY29kZWNfICkKKyAg IHsKKyAgICAgZXJyb3JTdHJpbmcgPSBRT2JqZWN0Ojp0ciggIkNvZGVjIFtpZDogJTFdIG5vdCBm b3VuZC4iICkuYXJnKCBjb2RlY0NvbnRleHRfLT5jb2RlY19pZCApOworICAgICByZXR1cm4gZmFs c2U7CisgICB9CisrI2Vsc2UKKysgIGNvZGVjXyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKCBhdWRp b1N0cmVhbV8tPmNvZGVjcGFyLT5jb2RlY19pZCApOworKyAgaWYgKCAhY29kZWNfICkKKysgIHsK KysgICAgZXJyb3JTdHJpbmcgPSBRT2JqZWN0Ojp0ciggIkNvZGVjIFtpZDogJTFdIG5vdCBmb3Vu ZC4iICkuYXJnKCBhdWRpb1N0cmVhbV8tPmNvZGVjcGFyLT5jb2RlY19pZCApOworKyAgICByZXR1 cm4gZmFsc2U7CisrICB9CisrICBjb2RlY0NvbnRleHRfID0gYXZjb2RlY19hbGxvY19jb250ZXh0 MyggY29kZWNfICk7CisrICBpZiAoICFjb2RlY0NvbnRleHRfICkKKysgIHsKKysgICAgZXJyb3JT dHJpbmcgPSBRT2JqZWN0Ojp0ciggImF2Y29kZWNfYWxsb2NfY29udGV4dDMoKSBmYWlsZWQuIiAp OworKyAgICByZXR1cm4gZmFsc2U7CisrICB9CisrICBhdmNvZGVjX3BhcmFtZXRlcnNfdG9fY29u dGV4dCggY29kZWNDb250ZXh0XywgYXVkaW9TdHJlYW1fLT5jb2RlY3BhciApOworKyNlbmRpZgor CistICByZXQgPSBhdmNvZGVjX29wZW4yKCBjb2RlY0NvbnRleHRfLCBjb2RlYywgTlVMTCApOwor KyAgcmV0ID0gYXZjb2RlY19vcGVuMiggY29kZWNDb250ZXh0XywgY29kZWNfLCBOVUxMICk7Cisg ICBpZiAoIHJldCA8IDAgKQorICAgeworICAgICBlcnJvclN0cmluZyA9IFFPYmplY3Q6OnRyKCAi YXZjb2RlY19vcGVuMigpIGZhaWxlZDogJTEuIiApLmFyZyggYXZFcnJvclN0cmluZyggcmV0ICkg KTsKKyAgICAgcmV0dXJuIGZhbHNlOworICAgfQorCistICBhdl9sb2coIE5VTEwsIEFWX0xPR19J TkZPLCAiQ29kZWMgb3BlbjogJXM6IGNoYW5uZWxzOiAlZCwgcmF0ZTogJWQsIGZvcm1hdDogJXNc biIsIGNvZGVjLT5sb25nX25hbWUsCisrICBhdl9sb2coIE5VTEwsIEFWX0xPR19JTkZPLCAiQ29k ZWMgb3BlbjogJXM6IGNoYW5uZWxzOiAlZCwgcmF0ZTogJWQsIGZvcm1hdDogJXNcbiIsIGNvZGVj Xy0+bG9uZ19uYW1lLAorICAgICAgICAgICBjb2RlY0NvbnRleHRfLT5jaGFubmVscywgY29kZWND b250ZXh0Xy0+c2FtcGxlX3JhdGUsIGF2X2dldF9zYW1wbGVfZm10X25hbWUoIGNvZGVjQ29udGV4 dF8tPnNhbXBsZV9mbXQgKSApOworICAgcmV0dXJuIHRydWU7CisgfQorQEAgLTI1MiwxMCArMjc4 LDEzIEBAIHZvaWQgRGVjb2RlckNvbnRleHQ6OmNsb3NlQ29kZWMoKQorCisgICAvLyBDbG9zaW5n IGEgY29kZWMgY29udGV4dCB3aXRob3V0IHByaW9yIGF2Y29kZWNfb3BlbjIoKSB3aWxsIHJlc3Vs dCBpbgorICAgLy8gYSBjcmFzaCBpbiBmZm1wZWcKKy0gIGlmICggYXVkaW9TdHJlYW1fICYmIGF1 ZGlvU3RyZWFtXy0+Y29kZWMgJiYgYXVkaW9TdHJlYW1fLT5jb2RlYy0+Y29kZWMgKQorKyAgaWYg KCBhdWRpb1N0cmVhbV8gJiYgY29kZWNDb250ZXh0XyAmJiBjb2RlY18gKQorICAgeworICAgICBh dWRpb1N0cmVhbV8tPmRpc2NhcmQgPSBBVkRJU0NBUkRfQUxMOworLSAgICBhdmNvZGVjX2Nsb3Nl KCBhdWRpb1N0cmVhbV8tPmNvZGVjICk7CisrICAgIGF2Y29kZWNfY2xvc2UoIGNvZGVjQ29udGV4 dF8gKTsKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SID4gNTcgfHwgKCBMSUJBVkNPREVD X1ZFUlNJT05fTUFKT1IgPT0gNTcgJiYgTElCQVZDT0RFQ19WRVJTSU9OX01JTk9SID49IDMzICkK KysgICAgYXZjb2RlY19mcmVlX2NvbnRleHQoICZjb2RlY0NvbnRleHRfICk7CisrI2VuZGlmCisg ICB9CisKKyAgIGF2Zm9ybWF0X2Nsb3NlX2lucHV0KCAmZm9ybWF0Q29udGV4dF8gKTsKK0BAIC0z NTYsNiArMzg1LDcgQEAgYm9vbCBEZWNvZGVyQ29udGV4dDo6cGxheSggUVN0cmluZyAmIGVycm9y U3RyaW5nICkKKyAgICAgaWYgKCBwYWNrZXQuc3RyZWFtX2luZGV4ID09IGF1ZGlvU3RyZWFtXy0+ aW5kZXggKQorICAgICB7CisgICAgICAgQVZQYWNrZXQgcGFjayA9IHBhY2tldDsKKysjaWYgTElC QVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTcgfHwgKCBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1Ig PT0gNTcgJiYgTElCQVZDT0RFQ19WRVJTSU9OX01JTk9SIDwgMzcgKQorICAgICAgIGludCBnb3RG cmFtZSA9IDA7CisgICAgICAgZG8KKyAgICAgICB7CitAQCAtMzcwLDYgKzQwMCwxOSBAQCBib29s IERlY29kZXJDb250ZXh0OjpwbGF5KCBRU3RyaW5nICYgZXJyb3JTdHJpbmcgKQorICAgICAgICAg cGFjay5kYXRhICs9IGxlbjsKKyAgICAgICB9CisgICAgICAgd2hpbGUoIHBhY2suc2l6ZSA+IDAg KTsKKysjZWxzZQorKyAgICAgIGludCByZXQgPSBhdmNvZGVjX3NlbmRfcGFja2V0KCBjb2RlY0Nv bnRleHRfLCAmcGFjayApOworKyAgICAgIC8qIHJlYWQgYWxsIHRoZSBvdXRwdXQgZnJhbWVzIChp biBnZW5lcmFsIHRoZXJlIG1heSBiZSBhbnkgbnVtYmVyIG9mIHRoZW0pICovCisrICAgICAgd2hp bGUoIHJldCA+PSAwICkKKysgICAgICB7CisrICAgICAgICByZXQgPSBhdmNvZGVjX3JlY2VpdmVf ZnJhbWUoIGNvZGVjQ29udGV4dF8sIGZyYW1lKTsKKysKKysgICAgICAgIGlmICggUXQ0eDU6OkF0 b21pY0ludDo6bG9hZEFjcXVpcmUoIGlzQ2FuY2VsbGVkXyApIHx8IHJldCA8IDAgKQorKyAgICAg ICAgICBicmVhazsKKysKKysgICAgICAgIHBsYXlGcmFtZSggZnJhbWUgKTsKKysgICAgICB9Cisr I2VuZGlmCisgICAgIH0KKyAgICAgLy8gYXZfZnJlZV9wYWNrZXQoKSBtdXN0IGJlIGNhbGxlZCBh ZnRlciBlYWNoIGNhbGwgdG8gYXZfcmVhZF9mcmFtZSgpCisgI2lmIExJQkFWQ09ERUNfVkVSU0lP Tl9NQUpPUiA8IDU3IHx8ICggTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SID09IDU3ICYmIExJQkFW Q09ERUNfVkVSU0lPTl9NSU5PUiA8IDcgKQorQEAgLTM3OSw2ICs0MjIsNyBAQCBib29sIERlY29k ZXJDb250ZXh0OjpwbGF5KCBRU3RyaW5nICYgZXJyb3JTdHJpbmcgKQorICNlbmRpZgorICAgfQor CisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9NQUpPUiA8IDU3IHx8ICggTElCQVZDT0RFQ19WRVJT SU9OX01BSk9SID09IDU3ICYmIExJQkFWQ09ERUNfVkVSU0lPTl9NSU5PUiA8IDM3ICkKKyAgIGlm ICggIVF0NHg1OjpBdG9taWNJbnQ6OmxvYWRBY3F1aXJlKCBpc0NhbmNlbGxlZF8gKSAmJgorICAg ICAgICBjb2RlY0NvbnRleHRfLT5jb2RlYy0+Y2FwYWJpbGl0aWVzICYgQ09ERUNfQ0FQX0RFTEFZ ICkKKyAgIHsKK0BAIC0zOTEsNiArNDM1LDE4IEBAIGJvb2wgRGVjb2RlckNvbnRleHQ6OnBsYXko IFFTdHJpbmcgJiBlcnJvclN0cmluZyApCisgICAgICAgcGxheUZyYW1lKCBmcmFtZSApOworICAg ICB9CisgICB9CisrI2Vsc2UKKysgIC8qIGZsdXNoIHRoZSBkZWNvZGVyICovCisrICBhdl9pbml0 X3BhY2tldCggJnBhY2tldCApOworKyAgaW50IHJldCA9IGF2Y29kZWNfc2VuZF9wYWNrZXQoY29k ZWNDb250ZXh0XywgJnBhY2tldCApOworKyAgd2hpbGUoIHJldCA+PSAwICkKKysgIHsKKysgICAg cmV0ID0gYXZjb2RlY19yZWNlaXZlX2ZyYW1lKGNvZGVjQ29udGV4dF8sIGZyYW1lKTsKKysgICAg aWYgKCBRdDR4NTo6QXRvbWljSW50Ojpsb2FkQWNxdWlyZSggaXNDYW5jZWxsZWRfICkgfHwgcmV0 IDwgMCApCisrICAgICAgYnJlYWs7CisrICAgIHBsYXlGcmFtZSggZnJhbWUgKTsKKysgIH0KKysj ZW5kaWYKKworICNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1NAorICAgYXZfZnJlZSgg ZnJhbWUgKTsKKzMyCitzcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1wZWc1LTIucGF0Y2gK K0NvbW1lbnQgb24gdGhpcyBmaWxlCitAQCAtMCwwICsxLDMyIEBACitGcm9tIDk2NmY0YThiNzhl NjMyNGI5MzBlNWE1MGYyYmI5MzBiZDg3ZTU2NWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiBBYnM2MiA8b3R0b21hbm5AeWFuZGV4LnJ1PgorRGF0ZTogRnJpLCAyNyBTZXAgMjAxOSAx NzowMDo1MiArMDMwMAorU3ViamVjdDogW1BBVENIXSBGRm1wZWcgcGxheWVyOiBGaXggc29tZSBj cmFzaGVzIG9uIGJyb2tlbiBmaWxlcworCistLS0KKyBmZm1wZWdhdWRpby5jYyB8IDQgKysrKwor IDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2ZmbXBlZ2F1 ZGlvLmNjIGIvZmZtcGVnYXVkaW8uY2MKK2luZGV4IDU2ZThmNzg4ZS4uNDE1ZmM3OWNiIDEwMDY0 NAorLS0tIGEvZmZtcGVnYXVkaW8uY2MKKysrKyBiL2ZmbXBlZ2F1ZGlvLmNjCitAQCAtNTEsNyAr NTEsOSBAQCBBdWRpb1NlcnZpY2UgJiBBdWRpb1NlcnZpY2U6Omluc3RhbmNlKCkKKworIEF1ZGlv U2VydmljZTo6QXVkaW9TZXJ2aWNlKCkKKyB7CisrI2lmIExJQkFWRk9STUFUX1ZFUlNJT05fTUFK T1IgPCA1OCB8fCAoIExJQkFWRk9STUFUX1ZFUlNJT05fTUFKT1IgPT0gNTggJiYgTElCQVZGT1JN QVRfVkVSU0lPTl9NSU5PUiA8IDkgKQorICAgYXZfcmVnaXN0ZXJfYWxsKCk7CisrI2VuZGlmCisg ICBhb19pbml0aWFsaXplKCk7CisgfQorCitAQCAtNDM4LDYgKzQ0MCw4IEBAIGJvb2wgRGVjb2Rl ckNvbnRleHQ6OnBsYXkoIFFTdHJpbmcgJiBlcnJvclN0cmluZyApCisgI2Vsc2UKKyAgIC8qIGZs dXNoIHRoZSBkZWNvZGVyICovCisgICBhdl9pbml0X3BhY2tldCggJnBhY2tldCApOworKyAgcGFj a2V0LmRhdGEgPSBOVUxMOworKyAgcGFja2V0LnNpemUgPSAwOworICAgaW50IHJldCA9IGF2Y29k ZWNfc2VuZF9wYWNrZXQoY29kZWNDb250ZXh0XywgJnBhY2tldCApOworICAgd2hpbGUoIHJldCA+ PSAwICkKKyAgIHsKKzI1CitzcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9mZm1wZWc1LTMucGF0 Y2gKK0NvbW1lbnQgb24gdGhpcyBmaWxlCitAQCAtMCwwICsxLDI1IEBACitGcm9tIDhhY2IyODhj OWU5YmRiM2M2YmYyZTgwMzk1NGRkM2I2YWMyNzNjMDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CitGcm9tOiBMaWFvIEp1bnh1YW4gPG1pa2VsanhAMTI2LmNvbT4KK0RhdGU6IFN1biwgMjAgRmVi IDIwMjIgMTI6Mjg6MDUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gYWRkIHN1cHBvcnQgZm9yIGZm bXBlZyA1LjAKKworLS0tCisgZmZtcGVnYXVkaW8uY2MgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdl ZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9mZm1wZWdhdWRpby5jYyBiL2ZmbXBl Z2F1ZGlvLmNjCitpbmRleCBkNTUwZjRhNzcuLjc5NDhkMjE4NyAxMDA2NDQKKy0tLSBhL2ZmbXBl Z2F1ZGlvLmNjCisrKysgYi9mZm1wZWdhdWRpby5jYworQEAgLTk0LDcgKzk0LDExIEBAIHN0cnVj dCBEZWNvZGVyQ29udGV4dAorICAgUUJ5dGVBcnJheSBhdWRpb0RhdGFfOworICAgUURhdGFTdHJl YW0gYXVkaW9EYXRhU3RyZWFtXzsKKyAgIEFWRm9ybWF0Q29udGV4dCAqIGZvcm1hdENvbnRleHRf OworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1OQorICAgQVZDb2RlYyAqIGNvZGVj XzsKKysjZWxzZQorKyAgY29uc3QgQVZDb2RlYyAqIGNvZGVjXzsKKysjZW5kaWYKKyAgIEFWQ29k ZWNDb250ZXh0ICogY29kZWNDb250ZXh0XzsKKyAgIEFWSU9Db250ZXh0ICogYXZpb0NvbnRleHRf OworICAgQVZTdHJlYW0gKiBhdWRpb1N0cmVhbV87CmRpZmYgLS1naXQgYS9zcmNwa2dzL2dvbGRl bmRpY3QvdGVtcGxhdGUgYi9zcmNwa2dzL2dvbGRlbmRpY3QvdGVtcGxhdGUKaW5kZXggZjRhMDU3 NTlmNjkzZC4uOTdmNDQzNDdiMDNhNiAxMDA2NDQKLS0tIGEvc3JjcGtncy9nb2xkZW5kaWN0L3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvZ29sZGVuZGljdC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dvbGRlbmRpY3QnCiBwa2duYW1lPWdvbGRlbmRpY3QKIHZl cnNpb249MS41LjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPXFtYWtlCiBj b25maWd1cmVfYXJncz0iQ09ORklHKz16aW1fc3VwcG9ydCBnb2xkZW5kaWN0LnBybyIKIGhvc3Rt YWtlZGVwZW5kcz0icXQ1LXFtYWtlIHBrZy1jb25maWcgcXQ1LWhvc3QtdG9vbHMiCkBAIC0xMCw3 ICsxMCw3IEBAIG1ha2VkZXBlbmRzPSJ0aWZmLWRldmVsIHF0NS1kZXZlbCBsaWJ2b3JiaXMtZGV2 ZWwgemxpYi1kZXZlbAogIHF0NS13ZWJraXQtZGV2ZWwgbHpvLWRldmVsIGJ6aXAyLWRldmVsIGxp YmFvLWRldmVsIHF0NS1zdmctZGV2ZWwKICBsaWJlYi1kZXZlbCBxdDUteDExZXh0cmFzLWRldmVs IGZmbXBlZy1kZXZlbCBsaWJsem1hLWRldmVsCiAgcXQ1LW11bHRpbWVkaWEtZGV2ZWwiCi1zaG9y dF9kZXNjPSJBIGZlYXR1cmUtcmljaCBkaWN0aW9uYXJ5IGxvb2t1cCBwcm9ncmFtIgorc2hvcnRf ZGVzYz0iRmVhdHVyZS1yaWNoIGRpY3Rpb25hcnkgbG9va3VwIHByb2dyYW0iCiBtYWludGFpbmVy PSJKb2huIDxtZUBqb2hubnluYXRvci5kZXY+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIK IGhvbWVwYWdlPSJodHRwOi8vZ29sZGVuZGljdC5vcmcvIgoKRnJvbSAzMmMwYzI4NThlY2EwOWM0 YTI2ZDVlZDc0YjA5MDE3NmZkZmM5NjdiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzcvMTEzXSBnc3QtbGliYXY6IHJldmJ1bXAgZm9yIGZm bXBlZy02LjAKCi0tLQogc3JjcGtncy9nc3QtbGliYXYvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUg Y2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL2dzdC1saWJhdi90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlCmluZGV4 IDhjNzJmYzNlOTdlZWUuLjA0YzM5YmZmMTQ4OTYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3N0LWxp YmF2L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlCkBAIC0xLDcgKzEs NyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LWxpYmF2JwogcGtnbmFtZT1nc3QtbGliYXYK IHZlcnNpb249MS4yMi4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNv bgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHlhc20iCiBtYWtlZGVwZW5kcz0ib3JjLWRl dmVsIGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsIGZmbXBlZy1kZXZlbCIKCkZyb20gMDYzNjM5MDIz YTExZjc5NWIxMWU3ZjA0YmUzNGU1YWQzOWNhM2YzZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAy MDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDM4LzExM10gZ3N0LXBsdWdpbnMtYmFkMTog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVtcGxhdGUgYi9zcmNw a2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVtcGxhdGUKaW5kZXggNzdiZjc5OTgxYzIwYi4uNWMxNTg3 MjRhNmM3ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9nc3QtcGx1Z2lucy1iYWQxL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1wbHVnaW5zLWJhZDEnCiBwa2duYW1lPWdzdC1wbHVnaW5z LWJhZDEKIHZlcnNpb249MS4yMi4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9oZWxw ZXI9ImdpciIKIGJ1aWxkX3N0eWxlPW1lc29uCiBjb25maWd1cmVfYXJncz0iLURwYWNrYWdlLW9y aWdpbj1odHRwczovL3ZvaWRsaW51eC5vcmcgLURkb2M9ZGlzYWJsZWQKCkZyb20gNDk2Mzc0OTE0 Yjg2Yjk3N2NjYjkzZGVkNzNlMTc5Njc5M2IwNWYyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAy MDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDM5LzExM10gZ3N0LXJ0c3Atc2VydmVyOiBy ZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ3N0LXJ0c3Atc2VydmVyL3RlbXBs YXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QtcnRzcC1zZXJ2ZXIvdGVtcGxhdGUgYi9zcmNwa2dz L2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZQppbmRleCAyZjBjMGM0NWZmODIwLi45ODBmZDcyY2Rk NGM1IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ2dzdC1ydHNwLXNlcnZlcicKIHBrZ25hbWU9Z3N0LXJ0c3Atc2VydmVyCiB2 ZXJzaW9uPTEuMjIuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9bWVzb24K IGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBweXRob24zIgogbWFrZWRlcGVuZHM9ImdsaWIt ZGV2ZWwgZ3N0LXBsdWdpbnMtYmFkMS1kZXZlbCBnb2JqZWN0LWludHJvc3BlY3Rpb24KCkZyb20g MmQyYzc4ZThkMzRmMzA2YzU1MzI3Y2UwY2VjZTU4ZGQ2NTJhOGFmMyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQwLzExM10gZ3V2Y3ZpZXc6 IHVwZGF0ZSB0byAyLjAuOC4KCi0tLQogc3JjcGtncy9ndXZjdmlldy9wYXRjaGVzL2ZpeC1pbmNs dWRlLnBhdGNoIHwgMTAgKysrKysrKysrKwogc3JjcGtncy9ndXZjdmlldy90ZW1wbGF0ZSAgICAg ICAgICAgICAgICAgIHwgIDUgKystLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygr KSwgMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2d1dmN2aWV3L3Bh dGNoZXMvZml4LWluY2x1ZGUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2d1dmN2aWV3L3Bh dGNoZXMvZml4LWluY2x1ZGUucGF0Y2ggYi9zcmNwa2dzL2d1dmN2aWV3L3BhdGNoZXMvZml4LWlu Y2x1ZGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uNTAz YzJhZjNiNzhjMQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9m aXgtaW5jbHVkZS5wYXRjaApAQCAtMCwwICsxLDEwIEBACistLS0gYS9ndXZjdmlldy9ndXZjdmll dy5jCisrKysgYi9ndXZjdmlldy9ndXZjdmlldy5jCitAQCAtMjgsNiArMjgsNyBAQAorICNpbmNs dWRlIDxzeXMvc3RhdC5oPgorICNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKyAjaW5jbHVkZSA8 ZXJybm8uaD4KKysjaW5jbHVkZSA8bG9jYWxlLmg+CisgCisgI2luY2x1ZGUgImd2aWV3LmgiCisg I2luY2x1ZGUgImd2aWV3djRsMmNvcmUuaCIKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ3V2Y3ZpZXcv dGVtcGxhdGUgYi9zcmNwa2dzL2d1dmN2aWV3L3RlbXBsYXRlCmluZGV4IDM0NWNmNjAwNmYyNDYu Ljg2YTdmZDYxOTYxMmMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3V2Y3ZpZXcvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9ndXZjdmlldy90ZW1wbGF0ZQpAQCAtMSw4ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ2d1dmN2aWV3JwogcGtnbmFtZT1ndXZjdmlldwotdmVyc2lvbj0yLjAuNwordmVy c2lvbj0yLjAuOAogcmV2aXNpb249MQotY3JlYXRlX3dya3NyYz15ZXMKIGJ1aWxkX3N0eWxlPWdu dS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2FibGUtc3RhdGljIC0tZGlzYWJsZS1k ZWJpYW4tbWVudSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBpbnRsdG9vbCBhdXRvY29u ZiBhdXRvbWFrZSBsaWJ0b29sIGdsaWItZGV2ZWwiCkBAIC0xNCw3ICsxMyw3IEBAIG1haW50YWlu ZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMy4wLW9y LWxhdGVyIgogaG9tZXBhZ2U9Imh0dHA6Ly9ndXZjdmlldy5zb3VyY2Vmb3JnZS5uZXQvIgogZGlz dGZpbGVzPSIke1NPVVJDRUZPUkdFX1NJVEV9LyR7cGtnbmFtZX0vJHtwa2duYW1lfS1zcmMtJHt2 ZXJzaW9ufS50YXIuYnoyIgotY2hlY2tzdW09ZjQ3ZDUxZmJkMDZlNDRlZWFhMWE4MmY0YTE1M2M5 Mjc1MjdjOTBkOTQ1MTQxOTdhNzBiMjk1NjAyOGNjOGFkNAorY2hlY2tzdW09YTIxZjRlNDQ4Mjg2 NjY2Y2YyN2JhZmVmNTI5MGNjOTUzYTBhMTc5NmI3NTJlNWJiZTUyMTI2NmRjMTIzMGM4MQogCiBw b3N0X3BhdGNoKCkgewogCXNlZCAnMzFhI2luY2x1ZGUgPGxvY2FsZS5oPicgLWkgIGd1dmN2aWV3 L2d1dmN2aWV3LmMKCkZyb20gZjMzMzkxNTE2YWIwZjVlNGJkZjc1NmFhYzU3MGU3YTA2ZTk4Mzk5 NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDQxLzExM10gaGFuZGJyYWtlOiB1cGRhdGUgdG8gMS42LjEKCi0tLQogLi4uL3BhdGNoZXMvZml4 LW1pc3NpbmcteDI2NS1saW5rLWZsYWcucGF0Y2ggICAgfCAxMSArKysrKystLS0tLQogLi4uL2hh bmRicmFrZS9wYXRjaGVzL2xpYmhiLXZwbC1pbmNsdWRlLnBhdGNoICAgfCAxNSArKysrKysrKysr KysrKysKIHNyY3BrZ3MvaGFuZGJyYWtlL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgIHwg MTcgKysrKysrKysrKy0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMzEgaW5zZXJ0aW9ucygrKSwg MTIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9oYW5kYnJha2UvcGF0 Y2hlcy9saWJoYi12cGwtaW5jbHVkZS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaGFuZGJy YWtlL3BhdGNoZXMvZml4LW1pc3NpbmcteDI2NS1saW5rLWZsYWcucGF0Y2ggYi9zcmNwa2dzL2hh bmRicmFrZS9wYXRjaGVzL2ZpeC1taXNzaW5nLXgyNjUtbGluay1mbGFnLnBhdGNoCmluZGV4IDI2 ZGIwMzg2N2EwYzguLmQ2YmIyZWRhNjI3YTMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvaGFuZGJyYWtl L3BhdGNoZXMvZml4LW1pc3NpbmcteDI2NS1saW5rLWZsYWcucGF0Y2gKKysrIGIvc3JjcGtncy9o YW5kYnJha2UvcGF0Y2hlcy9maXgtbWlzc2luZy14MjY1LWxpbmstZmxhZy5wYXRjaApAQCAtMSwx NCArMSwxNSBAQAogLS0tIGEvZ3RrL2NvbmZpZ3VyZS5hYwogKysrIGIvZ3RrL2NvbmZpZ3VyZS5h YwogQEAgLTIwMyw3ICsyMDMsNyBAQAotIAorCiAgQU1fQ09ORElUSU9OQUwoW01JTkdXXSwgW3Rl c3QgIngkbWluZ3dfZmxhZyIgPSAieHllcyJdKQotIAotLUhCX0xJQlM9IiRIQl9MSUJTIC1saGFu ZGJyYWtlIC1sYXZmb3JtYXQgLWxhdmZpbHRlciAtbGF2Y29kZWMgLWxhdnV0aWwgLWxkYXYxZCAt bHN3cmVzYW1wbGUgLWxwb3N0cHJvYyAtbGR2ZG5hdiAtbGR2ZHJlYWQgLWxtcDNsYW1lIC1sdm9y YmlzIC1sdm9yYmlzZW5jIC1sb2dnIC1sc3dzY2FsZSAtbHRoZW9yYWVuYyAtbHRoZW9yYWRlYyAt bHZweCAtbHogLWxiejIgLWxibHVyYXkgLWxhc3MgLWxmb250Y29uZmlnIC1sZnJlZXR5cGUgLWx4 bWwyIC1samFuc3NvbiAtbG9wdXMgLWxzcGVleCAtbHR1cmJvanBlZyAtbGx6bWEgLWx6aW1nIgot K0hCX0xJQlM9IiRIQl9MSUJTIC1saGFuZGJyYWtlIC1sYXZmb3JtYXQgLWxhdmZpbHRlciAtbGF2 Y29kZWMgLWxhdnV0aWwgLWxkYXYxZCAtbHN3cmVzYW1wbGUgLWxwb3N0cHJvYyAtbGR2ZG5hdiAt bGR2ZHJlYWQgLWxtcDNsYW1lIC1sdm9yYmlzIC1sdm9yYmlzZW5jIC1sb2dnIC1sc3dzY2FsZSAt bHRoZW9yYWVuYyAtbHRoZW9yYWRlYyAtbHZweCAtbHogLWxiejIgLWxibHVyYXkgLWxhc3MgLWxm b250Y29uZmlnIC1sZnJlZXR5cGUgLWx4bWwyIC1samFuc3NvbiAtbG9wdXMgLWxzcGVleCAtbHR1 cmJvanBlZyAtbGx6bWEgLWx6aW1nIC1sZGwiCisKKy1IQl9MSUJTPSIkSEJfTElCUyAtbGhhbmRi cmFrZSAtbGF2Zm9ybWF0IC1sYXZmaWx0ZXIgLWxhdmNvZGVjIC1sYXZ1dGlsIC1sZGF2MWQgLWxz d3Jlc2FtcGxlIC1scG9zdHByb2MgLWxkdmRuYXYgLWxkdmRyZWFkIC1sbXAzbGFtZSAtbHZvcmJp cyAtbHZvcmJpc2VuYyAtbG9nZyAtbHN3c2NhbGUgLWx0aGVvcmFlbmMgLWx0aGVvcmFkZWMgLWx2 cHggLWx6IC1sYnoyIC1sYmx1cmF5IC1sYXNzIC1sZm9udGNvbmZpZyAtbGZyZWV0eXBlIC1seG1s MiAtbGphbnNzb24gLWxvcHVzIC1sc3BlZXggLWx0dXJib2pwZWcgLWxsem1hIC1semltZyAtbFN2 dEF2MUVuYyIKKytIQl9MSUJTPSIkSEJfTElCUyAtbGhhbmRicmFrZSAtbGF2Zm9ybWF0IC1sYXZm aWx0ZXIgLWxhdmNvZGVjIC1sYXZ1dGlsIC1sZGF2MWQgLWxzd3Jlc2FtcGxlIC1scG9zdHByb2Mg LWxkdmRuYXYgLWxkdmRyZWFkIC1sbXAzbGFtZSAtbHZvcmJpcyAtbHZvcmJpc2VuYyAtbG9nZyAt bHN3c2NhbGUgLWx0aGVvcmFlbmMgLWx0aGVvcmFkZWMgLWx2cHggLWx6IC1sYnoyIC1sYmx1cmF5 IC1sYXNzIC1sZm9udGNvbmZpZyAtbGZyZWV0eXBlIC1seG1sMiAtbGphbnNzb24gLWxvcHVzIC1s c3BlZXggLWx0dXJib2pwZWcgLWxsem1hIC1semltZyAtbFN2dEF2MUVuYyAtbGRsIgogIEhCX0NQ UEZMQUdTPSIkSEJfQ1BQRkxBR1MgJEhCSU5DIgotIAorCiAgUEtHX0NIRUNLX01PRFVMRVMoW3gy NjRdLCBbeDI2NF0sIHN5c194MjY0PXllcywgc3lzX3gyNjQ9bm8pCisKIC0tLSBhL3Rlc3QvbW9k dWxlLmRlZnMKICsrKyBiL3Rlc3QvbW9kdWxlLmRlZnMKIEBAIC02OSw2ICs2OSw5IEBACmRpZmYg LS1naXQgYS9zcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2xpYmhiLXZwbC1pbmNsdWRlLnBhdGNo IGIvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9saWJoYi12cGwtaW5jbHVkZS5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4yOThmOWY0YWIyOGYyCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9saWJoYi12cGwtaW5jbHVk ZS5wYXRjaApAQCAtMCwwICsxLDE1IEBACistLS0gYS9saWJoYi9tb2R1bGUuZGVmcwkyMDIzLTAx LTIyIDExOjM2OjQ5LjAwMDAwMDAwMCAtMDUwMAorKysrIGIvbGliaGIvbW9kdWxlLmRlZnMJMjAy My0wNC0wMyAyMjozNzo1Mi4zOTU0NjcwMTAgLTA0MDAKK0BAIC00NiwxMSArNDYsNyBAQAorIExJ QkhCLkdDQy5JICs9ICQoTElCSEIuYnVpbGQvKSAkKENPTlRSSUIuYnVpbGQvKWluY2x1ZGUKKyAK KyBpZmVxICgxLCQoRkVBVFVSRS5xc3YpKQorLSAgICBpZmVxICgkKEhPU1Quc3lzdGVtKSxmcmVl YnNkKSkKKy0gICAgICAgIExJQkhCLkdDQy5JICs9ICQoTE9DQUxCQVNFKS9pbmNsdWRlL3ZwbAor LSAgICBlbHNlCistICAgICAgICBMSUJIQi5HQ0MuSSArPSAkKENPTlRSSUIuYnVpbGQvKWluY2x1 ZGUvdnBsCistICAgIGVuZGlmCisrICAgIExJQkhCLkdDQy5JICs9IC91c3IvaW5jbHVkZS92cGwK KyBlbmRpZgorIAorIGlmbmVxICgsJChmaWx0ZXIgJChIT1NULnN5c3RlbSksZnJlZWJzZCBuZXRi c2Qgb3BlbmJzZCkpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2hhbmRicmFrZS90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvaGFuZGJyYWtlL3RlbXBsYXRlCmluZGV4IGNhNWU0NTcxZTQ5YzMuLmMzMmNiMWJmYTMx ZjQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvaGFuZGJyYWtlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv aGFuZGJyYWtlL3RlbXBsYXRlCkBAIC0xLDEwICsxLDEwIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdoYW5kYnJha2UnCiBwa2duYW1lPWhhbmRicmFrZQotdmVyc2lvbj0xLjUuMQordmVyc2lvbj0x LjYuMQogcmV2aXNpb249MQogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2Fy Z3M9Ii0tZm9yY2UgLS1kaXNhYmxlLWd0ay11cGRhdGUtY2hlY2tzIC0tZGlzYWJsZS1kZi1mZXRj aCAtLWhhcmRlbgotICQodm9wdF9lbmFibGUgZmRrX2FhYyBmZGstYWFjKSAkKHZvcHRfZW5hYmxl IG52ZW5jKSIKKyAkKHZvcHRfZW5hYmxlIGZka19hYWMgZmRrLWFhYykgJCh2b3B0X2VuYWJsZSBu dmVuYykgJCh2b3B0X2VuYWJsZSBxc3YpIgogbWFrZV9idWlsZF9hcmdzPSItQyAke1hCUFNfVFJJ UExFVH0iCiBtYWtlX2luc3RhbGxfYXJncz0iLUMgJHtYQlBTX1RSSVBMRVR9IgogaG9zdG1ha2Vk ZXBlbmRzPSJhdXRvbWFrZSBjbWFrZSBnZXR0ZXh0LWRldmVsIGdsaWItZGV2ZWwgaW50bHRvb2wg bGlidG9vbCBtNCBtZXNvbiBuYXNtIHBrZy1jb25maWcgcHl0aG9uMyIKQEAgLTEyLDggKzEyLDEx IEBAIG1ha2VkZXBlbmRzPSJiemlwMi1kZXZlbCBmZm1wZWctZGV2ZWwgZ3N0LXBsdWdpbnMtYmFz ZTEtZGV2ZWwgZ3RrKzMtZGV2ZWwKICBqYW5zc29uLWRldmVsIGxhbWUtZGV2ZWwgbGliYXNzLWRl dmVsIGxpYmJsdXJheS1kZXZlbCBsaWJkYXYxZC1kZXZlbAogIGxpYmR2ZG5hdi1kZXZlbCBsaWJk dmRyZWFkLWRldmVsIGxpYmd1ZGV2LWRldmVsIGxpYm51bWEtZGV2ZWwKICBsaWJzYW1wbGVyYXRl LWRldmVsIGxpYnRoZW9yYS1kZXZlbCBsaWJ2b3JiaXMtZGV2ZWwgbGlidnB4LWRldmVsIGxpYnht bDItZGV2ZWwKLSBvcHVzLWRldmVsIHNwZWV4LWRldmVsIHgyNjQtZGV2ZWwgeDI2NS1kZXZlbCB6 aW1nLWRldmVsCisgb3B1cy1kZXZlbCBzcGVleC1kZXZlbCB4MjY0LWRldmVsIHgyNjUtZGV2ZWwg emltZy1kZXZlbCBsaWJzdnQtYXYxLWRldmVsCiAgJCh2b3B0X2lmIGZka19hYWMgZmRrLWFhYy1k ZXZlbCkKKyAkKHZvcHRfaWYgcXN2IGxpYnZhLWRldmVsKQorICQodm9wdF9pZiBxc3YgbGliZHJt LWRldmVsKQorICQodm9wdF9pZiBxc3Ygb25ldnBsLWRldmVsKQogICQodm9wdF9pZiBudmVuYyBu di1jb2RlYy1oZWFkZXJzKSIKIGRlcGVuZHM9ImRlc2t0b3AtZmlsZS11dGlscyBnc3QtcGx1Z2lu cy1nb29kMSBoaWNvbG9yLWljb24tdGhlbWUiCiBzaG9ydF9kZXNjPSJNdWx0aXRocmVhZGVkIHZp ZGVvIHRyYW5zY29kZXIiCkBAIC0yMSwxNSArMjQsMTUgQEAgbWFpbnRhaW5lcj0iRW5ubyBCb2xh bmQgPGdvdHRveEB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0yLjAtb25seSIKIGhvbWVw YWdlPSJodHRwczovL2hhbmRicmFrZS5mci8iCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNv bS9IYW5kQnJha2UvSGFuZEJyYWtlL3JlbGVhc2VzL2Rvd25sb2FkLyR7dmVyc2lvbn0vSGFuZEJy YWtlLSR7dmVyc2lvbn0tc291cmNlLnRhci5iejIiCi1jaGVja3N1bT0zOTk5ZmUwNmQ1MzA5Yzgx OTc5OWE3M2E5NjhhOGVjMzg0MGU3ODQwYzJiNjRhZjhmNWNkYjdmZDhjOTQzMGYwCitjaGVja3N1 bT05NGNjZmUwM2RiOTE3YTkxNjUwMDAwYzUxMGY3ZmQ1M2Y4NDRkYTE5ZjE5YWQ0YjRiZTFiOGY2 YmMzMWE4ZDRjCiBub2Nyb3NzPXllcwogCi1idWlsZF9vcHRpb25zPSJmZGtfYWFjIG52ZW5jIgor YnVpbGRfb3B0aW9ucz0iZmRrX2FhYyBudmVuYyBxc3YiCiAKIGNhc2UgIiRYQlBTX1RBUkdFVF9N QUNISU5FIiBpbgogCXg4Nl82NCp8aTY4NiopCiAJCUNGTEFHUz0iLW1zc2UiCi0JCWJ1aWxkX29w dGlvbnNfZGVmYXVsdD0ibnZlbmMiCisJCWJ1aWxkX29wdGlvbnNfZGVmYXVsdD0ibnZlbmMgcXN2 IgogCQk7OwogZXNhYwogCkBAIC0zNyw3ICs0MCw3IEBAIHByZV9jb25maWd1cmUoKSB7CiAJIyB1 c2Ugc3lzdGVtIGxpYnJhcmllcywgZG9uJ3QgZG93bmxvYWQgdGhlbQogCXJtIC1yZiBjb250cmli LwogCWZvciBtb2R1bGUgaW4gZmRrLWFhYyBmZm1wZWcgbGliYmx1cmF5IGxpYmRhdjFkIGxpYmR2 ZG5hdiBsaWJkdmRyZWFkIG52ZW5jIFwKLQkJeDI2NSB6aW1nOyBkbworCQl4MjY1IHppbWcgc3Z0 LWF2MSBsaWJ2cGw7IGRvCiAJICAgIHZzZWQgLWkgIi9NT0RVTEVTICs9IGNvbnRyaWJcLyR7bW9k dWxlfS9kIiBtYWtlL2luY2x1ZGUvbWFpbi5kZWZzCiAJZG9uZQogfQoKRnJvbSBlOGVmOGZlNmQw M2JhOGI1NjU0ZTQ2ZjMxZmRjOGE1ZDlhMTdkN2Y4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDIvMTEzXSBoZWRnZXdhcnM6IHJldmJ1bXAg Zm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9oZWRnZXdhcnMvdGVtcGxhdGUgfCA0ICsr LS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9oZWRnZXdhcnMvdGVtcGxhdGUgYi9zcmNwa2dzL2hlZGdld2Fycy90 ZW1wbGF0ZQppbmRleCA0MTlmMjliOThiNDRkLi45MjZmZTRmZTNlNjg4IDEwMDY0NAotLS0gYS9z cmNwa2dzL2hlZGdld2Fycy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2hlZGdld2Fycy90ZW1wbGF0 ZQpAQCAtMSwxMyArMSwxMyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnaGVkZ2V3YXJzJwogcGtn bmFtZT1oZWRnZXdhcnMKIHZlcnNpb249MS4wLjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1 aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLUROT1NFUlZFUj0xIC1EREFUQV9JTlNU QUxMX0RJUj0vdXNyL3NoYXJlLyR7cGtnbmFtZX0KICAtRFBIWVNGU19TWVNURU09MSAtRE1JTklN QUxfRkxBR1M9MSIKIG1ha2VfY21kPW1ha2UKIGhvc3RtYWtlZGVwZW5kcz0ibHVhNTEgcGtnLWNv bmZpZyBxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMiCi1tYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVs IGx1YTUxLWRldmVsIHBoeXNmcy1kZXZlbCBxdDUtdG9vbHMtZGV2ZWwgU0RMMl9pbWFnZS1kZXZl bAorbWFrZWRlcGVuZHM9ImZmbXBlZzQtZGV2ZWwgbHVhNTEtZGV2ZWwgcGh5c2ZzLWRldmVsIHF0 NS10b29scy1kZXZlbCBTREwyX2ltYWdlLWRldmVsCiAgU0RMMl9taXhlci1kZXZlbCBTREwyX25l dC1kZXZlbCBTREwyX3R0Zi1kZXZlbCIKIGRlcGVuZHM9ImxpYmZyZWVnbHV0Igogc2hvcnRfZGVz Yz0iRnVubnkgdHVybi1iYXNlZCBhcnRpbGxlcnkgZ2FtZSwgZmVhdHVyaW5nIGZpZ2h0aW5nIEhl ZGdlaG9ncyEiCgpGcm9tIDhlOTA0YTU3MzFlNmU3MjNiYjFhODcxMDgyZjgzNWRkZTUzMjAwYTAg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0 My8xMTNdIGlkamM6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9pZGpj L3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaWRqYy90ZW1wbGF0ZSBiL3NyY3BrZ3Mv aWRqYy90ZW1wbGF0ZQppbmRleCBkZjYwMzE4YjNkYjk2Li4zNmE3NWJhZjU5N2M1IDEwMDY0NAot LS0gYS9zcmNwa2dzL2lkamMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9pZGpjL3RlbXBsYXRlCkBA IC0xLDExICsxLDExIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdpZGpjJwogcGtnbmFtZT1pZGpj CiB2ZXJzaW9uPTAuOS4xCi1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1nbnUt Y29uZmlndXJlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgZ2l0IHB5dGhvbjMgYXV0b21h a2UgZ2V0dGV4dC1kZXZlbCBsaWJ0b29sIgogbWFrZWRlcGVuZHM9ImxpYnZvcmJpcy1kZXZlbCBs aWJvZ2ctZGV2ZWwgamFjay1kZXZlbCBsaWJzYW1wbGVyYXRlLWRldmVsCi0gbGliZmxhYy1kZXZl bCBsaWJzbmRmaWxlLWRldmVsIG1wZzEyMy1kZXZlbCBmZm1wZWctZGV2ZWwgc3BlZXgtZGV2ZWwK KyBsaWJmbGFjLWRldmVsIGxpYnNuZGZpbGUtZGV2ZWwgbXBnMTIzLWRldmVsIGZmbXBlZzQtZGV2 ZWwgc3BlZXgtZGV2ZWwKICBnbGliLWRldmVsIHBpeG1hbi1kZXZlbCBsYW1lLWRldmVsIHB5dGhv bjMtZ29iamVjdC1kZXZlbCBsaWJzaG91dC1pZGpjLWRldmVsCiAgb3B1cy1kZXZlbCB0d29sYW1l LWRldmVsIHB5dGhvbjMtbXV0YWdlbiBweXRob24zLWRldmVsIgogZGVwZW5kcz0icHl0aG9uMy1n b2JqZWN0IHB5dGhvbjMtbXV0YWdlbiBkZXNrdG9wLWZpbGUtdXRpbHMgc2hhcmVkLW1pbWUtaW5m byBweXRob24zLWRidXMgamFjayIKCkZyb20gYTBlN2E3NjAzYzE0NWJmNjdlZDdhYjgwZTMyMzg1 OTYwMjIyNjVmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDQ0LzExM10ga2ZpbGVtZXRhZGF0YTU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogc3JjcGtncy9rZmlsZW1ldGFkYXRhNS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv a2ZpbGVtZXRhZGF0YTUvdGVtcGxhdGUgYi9zcmNwa2dzL2tmaWxlbWV0YWRhdGE1L3RlbXBsYXRl CmluZGV4IDRiOTFjZjE5ZjI5OGYuLmEzNjcxYTM4Y2U1OWUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv a2ZpbGVtZXRhZGF0YTUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9rZmlsZW1ldGFkYXRhNS90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2tmaWxlbWV0YWRhdGE1 JwogcGtnbmFtZT1rZmlsZW1ldGFkYXRhNQogdmVyc2lvbj01LjEwNy4wCi1yZXZpc2lvbj0xCity ZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJrY29yZWFkZG9u cyBleHRyYS1jbWFrZS1tb2R1bGVzIHBrZy1jb25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1LXFtYWtl CiAgZ2V0dGV4dCBrY29yZWFkZG9ucyBweXRob24zIgoKRnJvbSA4Nzk0M2NkMzZkYWEzOGMzYjg1 MGUzOGE2N2ZhNTY3ZWZhODcxZGVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0w NDAwClN1YmplY3Q6IFtQQVRDSCAwNDUvMTEzXSBraWQzOiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3Mva2lkMy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggfCAxNyArKysrKysrKysr KysrKysrKwogc3JjcGtncy9raWQzL3RlbXBsYXRlICAgICAgICAgICAgICB8ICAyICstCiAyIGZp bGVzIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL2tpZDMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9raWQzL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3Mva2lkMy9wYXRjaGVz L2ZmbXBlZzUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4u MTM1ZmM1MGUwN2M5YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mva2lkMy9wYXRjaGVzL2Zm bXBlZzUucGF0Y2gKQEAgLTAsMCArMSwxNyBAQAorIyBodHRwczovL2F1ci5hcmNobGludXgub3Jn L2NnaXQvYXVyLmdpdC9kaWZmL2ZmbXBlZzUucGF0Y2g/aD1raWQzLWNsaSZpZD0xMjQxMGE3NDkw NjYxMmU3ZWZjMGVjOGZiY2U3MzliNGEwZmVmN2U3CitkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMv YWNvdXN0aWRpbXBvcnQvZmZtcGVnZmluZ2VycHJpbnRkZWNvZGVyLmNwcCBiL3NyYy9wbHVnaW5z L2Fjb3VzdGlkaW1wb3J0L2ZmbXBlZ2ZpbmdlcnByaW50ZGVjb2Rlci5jcHAKK2luZGV4IGUxNTZk NDI0Li5lMTJiOWFiZCAxMDA2NDQKKy0tLSBhL3NyYy9wbHVnaW5zL2Fjb3VzdGlkaW1wb3J0L2Zm bXBlZ2ZpbmdlcnByaW50ZGVjb2Rlci5jcHAKKysrKyBiL3NyYy9wbHVnaW5zL2Fjb3VzdGlkaW1w b3J0L2ZmbXBlZ2ZpbmdlcnByaW50ZGVjb2Rlci5jcHAKK0BAIC0yMzIsNyArMjMyLDExIEBAIHBy aXZhdGU6CisgICBmcmllbmQgY2xhc3MgRm9ybWF0OworICAgZnJpZW5kIGNsYXNzIENvbnZlcnRl cjsKKyAgIEFWQ29kZWNDb250ZXh0KiBtX3B0cjsKKysjaWYgTElCQVZDT0RFQ19WRVJTSU9OX0lO VCA8IEFWX1ZFUlNJT05fSU5UKDU5LCAwLCAwKQorICAgQVZDb2RlYyogbV9pbXBsOworKyNlbHNl CisrICBjb25zdCBBVkNvZGVjKiBtX2ltcGw7CisrI2VuZGlmCisgICBBVkZyYW1lKiBtX2ZyYW1l OworICAgYm9vbCBtX29wZW5lZDsKKyB9OwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9raWQzL3RlbXBs YXRlIGIvc3JjcGtncy9raWQzL3RlbXBsYXRlCmluZGV4IDQ1NjIwNmQ5MGUxNmEuLmYzMmY5ZGVj YjBlN2YgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva2lkMy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tp ZDMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdraWQzJwog cGtnbmFtZT1raWQzCiB2ZXJzaW9uPTMuOS4xCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWls ZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EV0lUSF9BUFBTPSdDTEk7JCh2b3B0X2lm IEtERSBLREUgUXQpJwogIC1EV0lUSF9ET0NCT09LRElSPS91c3Ivc2hhcmUveHNsL2RvY2Jvb2sg LURXSVRIX0ZMQUM9JCh2b3B0X2lmIGZsYWMgT04gT0ZGKQoKRnJvbSBkYTIxYTkwY2FjNTczMWY2 NWViYWU4NmY1MDAyOGQ0N2EwODI4ZmZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDYvMTEzXSBrb2RpOiByZXZidW1wIGZvciBmZm1wZWc0 LTQuNC4zCgotLS0KIHNyY3BrZ3Mva29kaS90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5n ZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dz L2tvZGkvdGVtcGxhdGUgYi9zcmNwa2dzL2tvZGkvdGVtcGxhdGUKaW5kZXggODA1Nzk2NGQ3OGEz OC4uNmNjMTg3NGJlN2JhNiAxMDA2NDQKLS0tIGEvc3JjcGtncy9rb2RpL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3Mva29kaS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ2tvZGknCiBwa2duYW1lPWtvZGkKIHZlcnNpb249MTkuNAotcmV2aXNpb249NgorcmV2aXNp b249NwogX2NvZGVuYW1lPSJNYXRyaXgiCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2Fy Z3M9Ii1EV0lUSF9GRk1QRUc9L3VzciAtREVOQUJMRV9MREdPTEQ9T0ZGCkBAIC01NCw3ICs1NCw3 IEBAIG1ha2VkZXBlbmRzPSIKICBsaWJtYWQtZGV2ZWwgZm9udGNvbmZpZy1kZXZlbCBsaWJYaW5l cmFtYS1kZXZlbCBsaWJzYW1wbGVyYXRlLWRldmVsIGxpYm1tcy1kZXZlbAogIGVuY2EtZGV2ZWwg Ym9vc3QtZGV2ZWwgbGliY3VybC1kZXZlbCBsaWJ2YS1kZXZlbCBsaWJ2ZHBhdS1kZXZlbCBsaWJh c3MtZGV2ZWwKICBsaWJibHVldG9vdGgtZGV2ZWwgeWFqbC1kZXZlbCBsaWJwbGlzdC1kZXZlbCBs aWJydG1wLWRldmVsIHRpbnl4bWwtZGV2ZWwKLSB0YWdsaWItZGV2ZWwgbGliY2FwLWRldmVsIGxh bWUtZGV2ZWwgbGliYmx1cmF5LWRldmVsIGxpYm5mcy1kZXZlbCBmZm1wZWctZGV2ZWwKKyB0YWds aWItZGV2ZWwgbGliY2FwLWRldmVsIGxhbWUtZGV2ZWwgbGliYmx1cmF5LWRldmVsIGxpYm5mcy1k ZXZlbCBmZm1wZWc0LWRldmVsCiAgZ2lmbGliLWRldmVsIGxpYnhzbHQtZGV2ZWwgZ251dGxzLWRl dmVsIGxpYnNzaC1kZXZlbCBsaWJtaWNyb2h0dHBkLWRldmVsCiAgbGliY2VjLWRldmVsIGRjYWRl Yy1kZXZlbCBmbGF0YnVmZmVycy1kZXZlbCBmbXQtZGV2ZWwgbGNtczItZGV2ZWwKICBsaWJmc3Ry Y21wLWRldmVsIHJhcGlkanNvbiBsaWJjZGlvLXBhcmFub2lhIHNwZGxvZyBsaWJ3YXlsYW5kcHAt ZGV2ZWwKCkZyb20gZDI2NDAxMjcwMjQ3N2RkZDhkNGEwMzJkNzZmZmM0MzI5NmUwYjE3OSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQ3LzEx M10ga3BpcGV3aXJlOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mva3BpcGV3 aXJlL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9rcGlwZXdpcmUvdGVtcGxhdGUgYi9zcmNw a2dzL2twaXBld2lyZS90ZW1wbGF0ZQppbmRleCBkYjRlNDJmMGQ0NTZhLi4yMzM0YmY4Njc4MDYy IDEwMDY0NAotLS0gYS9zcmNwa2dzL2twaXBld2lyZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tw aXBld2lyZS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2tw aXBld2lyZScKIHBrZ25hbWU9a3BpcGV3aXJlCiB2ZXJzaW9uPTUuMjcuNgotcmV2aXNpb249MQor cmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtlZGVwZW5kcz0iZXh0cmEtY21h a2UtbW9kdWxlcyBwbGFzbWEtd2F5bGFuZC1wcm90b2NvbHMgZ2V0dGV4dAogIHF0NS1xbWFrZSBx dDUtaG9zdC10b29scyBwa2ctY29uZmlnIHdheWxhbmQtZGV2ZWwga2NvcmVhZGRvbnMKCkZyb20g ZTk2NGE3MTJhYzI2MzAwMzZlOGNiODMwNTRiZDk1NGZkNmM0YmQzNiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQ4LzExM10gbGliZXh0cmFj dG9yOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvbGliZXh0cmFjdG9y L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0 aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJleHRyYWN0b3IvdGVtcGxhdGUgYi9zcmNw a2dzL2xpYmV4dHJhY3Rvci90ZW1wbGF0ZQppbmRleCBkZGQ0NzkwZjkzZTg4Li4xZmI5Y2E1NmE5 NmFlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2xpYmV4dHJhY3Rvci90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2xpYmV4dHJhY3Rvci90ZW1wbGF0ZQpAQCAtNyw3ICs3LDcgQEAgY29uZmlndXJlX2FyZ3M9 Ii0tZGlzYWJsZS1zdGF0aWMiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtlZGVw ZW5kcz0iemxpYi1kZXZlbCBiemlwMi1kZXZlbCBleGl2Mi1kZXZlbCB0aWZmLWRldmVsIGxpYnBu Zy1kZXZlbAogIGxpYmpwZWctdHVyYm8tZGV2ZWwgbGlidm9yYmlzLWRldmVsIGxpYmZsYWMtZGV2 ZWwgZ2lmbGliLWRldmVsIGxpYm1wZWcyLWRldmVsCi0gZmZtcGVnLWRldmVsIGd0ayszLWRldmVs IGxpYmx0ZGwtZGV2ZWwgbGliYXJjaGl2ZS1kZXZlbCBmaWxlLWRldmVsIGxpYmdzZi1kZXZlbCIK KyBmZm1wZWc0LWRldmVsIGd0ayszLWRldmVsIGxpYmx0ZGwtZGV2ZWwgbGliYXJjaGl2ZS1kZXZl bCBmaWxlLWRldmVsIGxpYmdzZi1kZXZlbCIKIHNob3J0X2Rlc2M9IkxpYnJhcnkgdXNlZCB0byBl eHRyYWN0IG1ldGEgZGF0YSBmcm9tIGZpbGVzIgogbWFpbnRhaW5lcj0iTWFydGluIFJpZXNlIDxn cmF1ZWhhYXJlQGdteC5kZT4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgoKRnJvbSBiZDk3 M2EwNTBlMGFhMzdiMmM3MzJmMjU3ODEzMzRlYjBhMGIxNjgwIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAy MDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDkvMTEzXSBsaWJvcGVuYWw6IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9saWJvcGVuYWwvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2xpYm9wZW5hbC90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGlib3BlbmFsL3Rl bXBsYXRlCmluZGV4IDc3MjE4ZjllNTM5ZGYuLjNmNDllZDc1YTFmZGMgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvbGlib3BlbmFsL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbGlib3BlbmFsL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbGlib3BlbmFsJwogcGtnbmFt ZT1saWJvcGVuYWwKIHZlcnNpb249MS4yMi4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWls ZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EQUxTT0ZUX0VYQU1QTEVTPU9GRiIKIGhv c3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKCkZyb20gODIyMDVhNGU1YmU2MmVlYjQ0NDcwZjJi MGI2NmMzMjE2ZGE1Y2ZlMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDUwLzExM10gbGlib3BlbnNob3Q6IHJldmJ1bXAgZm9yIGZmbXBlZy02 LjAKCi0tLQogc3JjcGtncy9saWJvcGVuc2hvdC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv bGlib3BlbnNob3QvdGVtcGxhdGUgYi9zcmNwa2dzL2xpYm9wZW5zaG90L3RlbXBsYXRlCmluZGV4 IGRiODMxZjY5YjQ3NGMuLjgxYWEwZDcxMzZkOTIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbGlib3Bl bnNob3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9saWJvcGVuc2hvdC90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xpYm9wZW5zaG90JwogcGtnbmFtZT1saWJv cGVuc2hvdAogdmVyc2lvbj0wLjMuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5 bGU9Y21ha2UKICMgQnVpbGRzIGZhaWwgd2l0aCBSdWJ5LTIuNC4xCiBjb25maWd1cmVfYXJncz0i LURFTkFCTEVfUlVCWT1PRkYgLURVU0VfU1lTVEVNX0pTT05DUFA9T04iCgpGcm9tIDM3ZWE1OWFl YTEwNWYwM2Q4ZTI4MGQ0ODRkZGNiMmM3YmQ4YzJiMjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA1MS8xMTNdIGxvdWRnYWluOiByZXZidW1w IGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9mZm1wZWc1LnBh dGNoIHwgMTEgKysrKysrKysrKysKIHNyY3BrZ3MvbG91ZGdhaW4vdGVtcGxhdGUgICAgICAgICAg ICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv bigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9mZm1wZWc1 LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2ZmbXBlZzUucGF0 Y2ggYi9zcmNwa2dzL2xvdWRnYWluL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4xNmQ0NTEwZWU5OGZhCi0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSwx MSBAQAorLS0tIGEvc3JjL3NjYW4uYwkyMDE5LTA5LTA2IDExOjMxOjE5LjAwMDAwMDAwMCAtMDQw MAorKysrIGIvc3JjL3NjYW4uYwkyMDIzLTAzLTIzIDExOjE1OjQwLjg2Nzk2ODUyMSAtMDQwMAor QEAgLTY5LDggKzY5LDYgQEAKKyAJICogSXQgaXMgbm93IHVzZWxlc3MKKyAJICogaHR0cHM6Ly9n aXRodWIuY29tL0ZGbXBlZy9GRm1wZWcvYmxvYi83MGQyNTI2OGMyMWNiZWU1ZjA4MzA0ZGE5NWJl MWY2NDdjNjMwYzE1L2RvYy9BUEljaGFuZ2VzI0w4NgorIAkgKi8KKy0gIGlmIChhdmZvcm1hdF92 ZXJzaW9uKCkgPCBBVl9WRVJTSU9OX0lOVCg1OCw5LDEwMCkpCistICAgIGF2X3JlZ2lzdGVyX2Fs bCgpOworIAorIAlhdl9sb2dfc2V0X2NhbGxiYWNrKHNjYW5fYXZfbG9nKTsKKyAKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvbG91ZGdhaW4vdGVtcGxhdGUgYi9zcmNwa2dzL2xvdWRnYWluL3RlbXBsYXRl CmluZGV4IGRhNGYyZDU2ZTk0YzMuLjRkNmJmMjllZmI0ZmQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv bG91ZGdhaW4vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9sb3VkZ2Fpbi90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xvdWRnYWluJwogcGtnbmFtZT1sb3VkZ2Fp bgogdmVyc2lvbj0wLjYuOAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5bGU9Y21h a2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJsaWJlYnVyMTI4 LWRldmVsIHRhZ2xpYi1kZXZlbCBmZm1wZWctZGV2ZWwiCgpGcm9tIDhhN2I1ZTlmNzdhNDBmODgw NTBlMTEwM2E0YmE4YzljZDI3ZTcyZTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDgg LTA0MDAKU3ViamVjdDogW1BBVENIIDA1Mi8xMTNdIG1lZGlhc3RyZWFtZXI6IHJldmJ1bXAgZm9y IGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9tZWRpYXN0cmVhbWVyL3RlbXBsYXRlIHwgNCAr Ky0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbWVkaWFzdHJlYW1lci90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWVkaWFz dHJlYW1lci90ZW1wbGF0ZQppbmRleCBkMGU5N2U4NThlMjlhLi4xYmRlMDMxNDQzYTU5IDEwMDY0 NAotLS0gYS9zcmNwa2dzL21lZGlhc3RyZWFtZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tZWRp YXN0cmVhbWVyL3RlbXBsYXRlCkBAIC0xLDExICsxLDExIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdtZWRpYXN0cmVhbWVyJwogcGtnbmFtZT1tZWRpYXN0cmVhbWVyCiB2ZXJzaW9uPTUuMi42Ci1y ZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9 Ii1ERU5BQkxFX1NUUklDVD0wIC1ERU5BQkxFX1VOSVRfVEVTVFM9MCIKIGhvc3RtYWtlZGVwZW5k cz0icHl0aG9uMyIKLW1ha2VkZXBlbmRzPSJienJ0cC1kZXZlbCBmZm1wZWctZGV2ZWwgZ2xldy1k ZXZlbCBsaWJYdi1kZXZlbCBsaWJzcnRwLWRldmVsCittYWtlZGVwZW5kcz0iYnpydHAtZGV2ZWwg ZmZtcGVnNC1kZXZlbCBnbGV3LWRldmVsIGxpYlh2LWRldmVsIGxpYnNydHAtZGV2ZWwKICBsaWJ1 cG5wLWRldmVsIGxpYnZweC1kZXZlbCBtYmVkdGxzLWRldmVsIG9wdXMtZGV2ZWwgb3J0cC1kZXZl bCBwdWxzZWF1ZGlvLWRldmVsCiAgbGlidGhlb3JhLWRldmVsIHNwZWV4LWRldmVsIHY0bC11dGls cy1kZXZlbCBiY2c3MjktZGV2ZWwgYmNtYXRyb3NrYTItZGV2ZWwgbGliZ3NtLWRldmVsIgogIyB6 eGluZy1jcHAtZGV2ZWwgKDEuMi4wIHByb2JhYmx5IG5vdCBjb21wYXRpYmxlLCBjaGVjayBhZ2Fp biBhZnRlciB1cGRhaW5nIHh6aW5nKQoKRnJvbSAwZjk4NDQwNzc4OTg2MWE1MTExNmJjNDFhOWNh MWI4OTYwY2ViZTEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwNTMvMTEzXSBtZ2JhOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNy Y3BrZ3MvbWdiYS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWdiYS90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvbWdiYS90ZW1wbGF0ZQppbmRleCBhZTA1MDQzMTFlZWUwLi5kMzEyOTVhMGNkM2QzIDEw MDY0NAotLS0gYS9zcmNwa2dzL21nYmEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tZ2JhL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbWdiYScKIHBrZ25hbWU9 bWdiYQogdmVyc2lvbj0wLjEwLjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxl PWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1LXFt YWtlIGRlc2t0b3AtZmlsZS11dGlscyIKIG1ha2VkZXBlbmRzPSJTREwyLWRldmVsIGZmbXBlZy1k ZXZlbCBsaWJlZGl0LWRldmVsIGxpYmVwb3h5LWRldmVsIGxpYm1hZ2ljay1kZXZlbAoKRnJvbSA3 NTUwYjdiNGFkZGNhNWEzM2IyZmQ0NWFkYWE0YmRmZTY1YmMwMjM1IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTQvMTEzXSBtaW5pZGxuYTog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL21pbmlkbG5hL3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9taW5pZGxuYS90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWluaWRsbmEvdGVt cGxhdGUKaW5kZXggZDU1MWU0OWVkNDY1My4uNWZhOTI5ZjNhMGMxMiAxMDA2NDQKLS0tIGEvc3Jj cGtncy9taW5pZGxuYS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21pbmlkbG5hL3RlbXBsYXRlCkBA IC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbWluaWRsbmEnCiBwa2duYW1lPW1p bmlkbG5hCiB2ZXJzaW9uPTEuMy4zCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHls ZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iCiAgLS1zYmluZGlyPS91c3IvYmluCgpG cm9tIGM1ODk5YmRjOTkyZGMyZDA5ODRlYmFiMWY3MTBmN2RiZDQ5ODgxY2UgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA1NS8xMTNdIG1peHh4 OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbWl4eHgvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL21peHh4L3RlbXBsYXRlIGIvc3JjcGtncy9taXh4eC90ZW1wbGF0ZQpp bmRleCA2MTlkZGNhMGQzMzI0Li40YjllYTAwZDNmYjNkIDEwMDY0NAotLS0gYS9zcmNwa2dzL21p eHh4L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWl4eHgvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtaXh4eCcKIHBrZ25hbWU9bWl4eHgKIHZlcnNpb249Mi4z LjMKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVf YXJncz0iLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UiCiBob3N0bWFrZWRlcGVuZHM9ImV4dHJh LWNtYWtlLW1vZHVsZXMgcGtnLWNvbmZpZyBwcm90b2J1ZiBxdDUtaG9zdC10b29scyBxdDUtZGV2 ZWwiCgpGcm9tIDFkZDM0MzI4OGVkYjc3ZmIwNWFhZGEyZTMwN2FjOTE1NGZiZWFhNmQgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA1Ni8xMTNd IG1sdDogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL21sdC90ZW1wbGF0 ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21sdC90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWx0L3RlbXBs YXRlCmluZGV4IDg5MzNlYjRlN2JiOWUuLjczMzUzZmVkYWZiNTAgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvbWx0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWx0L3RlbXBsYXRlCkBAIC0xLDE0ICsxLDE0 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtbHQnCiBwa2duYW1lPW1sdAogdmVyc2lvbj02LjI2 LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNvbmZpZ3VyZQogY29uZmln dXJlX2FyZ3M9Ii0tcHJlZml4PS91c3IgLS1saWJkaXI9L3Vzci9saWIkWEJQU19UQVJHRVRfV09S RFNJWkUKICAtLWVuYWJsZS1ncGwgLS1lbmFibGUtZ3BsMyAtLWRpc2FibGUtc3dmZGVjIC0td2l0 aG91dC1rZGUKICAtLXN3aWctbGFuZ3VhZ2VzPXB5dGhvbiIKIGhvc3RtYWtlZGVwZW5kcz0iZG94 eWdlbiBwa2ctY29uZmlnIGxhZHNwYS1zZGsgc3dpZyBweXRob24zIHdoaWNoIgogIyBYWFg6IG1v dml0IHZpZC5zdGFiCi1tYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgZmZtcGVnLWRldmVsIGd0 aystZGV2ZWwgamFjay1kZXZlbCBsYWRzcGEtc2RrCittYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2 ZWwgZmZtcGVnNC1kZXZlbCBndGsrLWRldmVsIGphY2stZGV2ZWwgbGFkc3BhLXNkawogIGxpYmV4 aWYtZGV2ZWwgbGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJ4bWwyLWRldmVsIHNveC1kZXZlbCBTRExf aW1hZ2UtZGV2ZWwKICBmZnR3LWRldmVsIGZyZWkwci1wbHVnaW5zIHB5dGhvbjMtZGV2ZWwgcHVs c2VhdWRpby1kZXZlbCBtb3ZpdC1kZXZlbAogIGxpYnZpZHN0YWItZGV2ZWwgbGliYXRvbWljLWRl dmVsIgoKRnJvbSAwMTM1YjgxNDgyNDkyYzZkMWU5ZTU3OGRhODA0YzQ1ODIyNjc0NzdlIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTcvMTEz XSBtb2M6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9tb2MvdGVtcGxh dGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tb2MvdGVtcGxhdGUgYi9zcmNwa2dzL21vYy90ZW1w bGF0ZQppbmRleCBjNDJiZTY1MGExZDI1Li5kNGYwZWVmYmFkNTJkIDEwMDY0NAotLS0gYS9zcmNw a2dzL21vYy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21vYy90ZW1wbGF0ZQpAQCAtMSwxMCArMSwx MCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbW9jJwogcGtnbmFtZT1tb2MKIHZlcnNpb249Mi41 LjIKLXJldmlzaW9uPTYKK3JldmlzaW9uPTcKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGhv c3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKLW1ha2VkZXBlbmRzPSJkYi1kZXZlbCBuY3Vyc2Vz LWRldmVsIGxpYmN1cmwtZGV2ZWwgcG9wdC1kZXZlbCBmZm1wZWctZGV2ZWwKK21ha2VkZXBlbmRz PSJkYi1kZXZlbCBuY3Vyc2VzLWRldmVsIGxpYmN1cmwtZGV2ZWwgcG9wdC1kZXZlbCBmZm1wZWc0 LWRldmVsCiAgamFjay1kZXZlbCBhbHNhLWxpYi1kZXZlbCBsaWJsdGRsLWRldmVsIGxpYmZsYWMt ZGV2ZWwgbGlidm9yYmlzLWRldmVsCiAgbGlibWFkLWRldmVsIGxpYm1wY2RlYy1kZXZlbCBsaWJt b2RwbHVnLWRldmVsIGxpYmlkM3RhZy1kZXZlbCBmYWFkMi1kZXZlbAogIHRhZ2xpYi1kZXZlbCBs aWJzbmRmaWxlLWRldmVsIHdhdnBhY2stZGV2ZWwgc3BlZXgtZGV2ZWwgbGlic2FtcGxlcmF0ZS1k ZXZlbAoKRnJvbSAwMDU5MmE5Y2E2MzhlMGVjYWQyMGNlNDcxN2YzZWJiYTZjMDhjYjIwIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTgvMTEz XSBtb3Rpb246IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9tb3Rpb24vdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21vdGlvbi90ZW1wbGF0ZSBiL3NyY3BrZ3MvbW90aW9u L3RlbXBsYXRlCmluZGV4IDNjZjNjMzAzNWM1YjcuLjdkY2ExMmQ4NTFlMzMgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvbW90aW9uL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbW90aW9uL3RlbXBsYXRlCkBA IC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbW90aW9uJwogcGtnbmFtZT1tb3Rp b24KIHZlcnNpb249NC41LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdu dS1jb25maWd1cmUKIGhvc3RtYWtlZGVwZW5kcz0iYXV0b21ha2UgcGtnLWNvbmZpZyBnZXR0ZXh0 LWRldmVsIHRhciIKIG1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgbGlibWljcm9odHRwZC1kZXZl bCB2NGwtdXRpbHMtZGV2ZWwgZ2V0dGV4dC1kZXZlbCIKCkZyb20gZWEwNjU4NTRkMzE1YjlmYTM3 YmE5NzI2MjZlMTYzOTk2OWJkNjkwNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDU5LzExM10gbXB2OiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3MvbXB2L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tcHYvdGVtcGxh dGUgYi9zcmNwa2dzL21wdi90ZW1wbGF0ZQppbmRleCBlMTYzYzQ5NmM2ZWJiLi5kNGZlZmJmNWUz YzdjIDEwMDY0NAotLS0gYS9zcmNwa2dzL21wdi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21wdi90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21wdicKIHBrZ25h bWU9bXB2CiB2ZXJzaW9uPTAuMzUuMQotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5 bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdzPSItRGNkZGE9ZW5hYmxlZCAtRGR2YmluPWVuYWJsZWQg LURkdmRuYXY9ZW5hYmxlZAogIC1EbGlibXB2PXRydWUgLURjcGx1Z2lucz1lbmFibGVkCgpGcm9t IGM3YTdiOGY1ZjAzODg4M2Q1Mjk4ZGE4YmYzM2M5OWMxNzNiOGJiM2YgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIg TWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2MC8xMTNdIG11c2lrY3Vi ZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL211c2lrY3ViZS90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbXVzaWtjdWJlL3RlbXBsYXRlIGIvc3JjcGtncy9tdXNpa2N1 YmUvdGVtcGxhdGUKaW5kZXggN2M1NjkzMDNjMDU0My4uYTRkZWE0NjBjMzcxNyAxMDA2NDQKLS0t IGEvc3JjcGtncy9tdXNpa2N1YmUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tdXNpa2N1YmUvdGVt cGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtdXNpa2N1YmUnCiBw a2duYW1lPW11c2lrY3ViZQogdmVyc2lvbj0zLjAuMAotcmV2aXNpb249MQorcmV2aXNpb249Mgog YnVpbGRfc3R5bGU9Y21ha2UKIG1ha2VfY21kPW1ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRE5PX05D VVJTRVNXPTEiCgpGcm9tIDYyMTg1YTMwZTQ2ZWI1MjIzODBkOGZiZmVlZmUwYTlkZjI4ODgyMmMg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2 MS8xMTNdIG5vdGN1cnNlczogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL25v dGN1cnNlcy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvbm90Y3Vyc2VzL3RlbXBsYXRlIGIv c3JjcGtncy9ub3RjdXJzZXMvdGVtcGxhdGUKaW5kZXggNmRkOGEwOTEzMTlmNy4uMzExMGMzMGM5 YWZmMiAxMDA2NDQKLS0tIGEvc3JjcGtncy9ub3RjdXJzZXMvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9ub3RjdXJzZXMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9y ICdub3RjdXJzZXMnCiBwa2duYW1lPW5vdGN1cnNlcwogdmVyc2lvbj0zLjAuOQotcmV2aXNpb249 MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFVTRV9T VEFUSUM9T04gJCh2b3B0X2Jvb2wgbWFuIFVTRV9QQU5ET0MpIgogaG9zdG1ha2VkZXBlbmRzPSJw a2ctY29uZmlnICQodm9wdF9pZiBtYW4gcGFuZG9jKSIKCkZyb20gMzlhOTQ4ZmVmZjQxY2U5ZTQ3 ODNlYWM2ODI0ZDRhNTEyMTZmNzJiZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDYyLzExM10gb2JzOiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3Mvb2JzL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vYnMvdGVtcGxh dGUgYi9zcmNwa2dzL29icy90ZW1wbGF0ZQppbmRleCA3YjY5YzYzMGQzMGQ0Li4yYzhkNjhkNzFm M2ExIDEwMDY0NAotLS0gYS9zcmNwa2dzL29icy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29icy90 ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29icycKIHBrZ25h bWU9b2JzCiB2ZXJzaW9uPTI5LjEuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYXJjaHM9Imk2 ODYqIHg4Nl82NCogcHBjNjRsZSogYWFyY2g2NCoiCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmln dXJlX2FyZ3M9Ii1ET0JTX1ZFUlNJT05fT1ZFUlJJREU9JHt2ZXJzaW9ufSAtREVOQUJMRV9KQUNL PU9OCgpGcm9tIDkyNjgyOWUzZjU1MDUyYTljZWUzYzIwOTc1MjA2NGRiNDg5MTlkYmEgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2My8xMTNd IG9saXZlOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mvb2xpdmUvdGVt cGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vbGl2ZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb2xp dmUvdGVtcGxhdGUKaW5kZXggMTJhNDY5MzZjOTkwMC4uNWMyOTE3YjljNTEyNCAxMDA2NDQKLS0t IGEvc3JjcGtncy9vbGl2ZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29saXZlL3RlbXBsYXRlCkBA IC0xLDEwICsxLDEwIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdvbGl2ZScKIHBrZ25hbWU9b2xp dmUKIHZlcnNpb249MC4xLjIKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPXFt YWtlCiBob3N0bWFrZWRlcGVuZHM9InF0NS1xbWFrZSBxdDUtaG9zdC10b29scyBwa2ctY29uZmln IgotbWFrZWRlcGVuZHM9InF0NS1kZXZlbCBxdDUtbXVsdGltZWRpYS1kZXZlbCBxdDUtc3ZnLWRl dmVsIGZmbXBlZy1kZXZlbCBmcmVpMHItcGx1Z2lucyIKK21ha2VkZXBlbmRzPSJxdDUtZGV2ZWwg cXQ1LW11bHRpbWVkaWEtZGV2ZWwgcXQ1LXN2Zy1kZXZlbCBmZm1wZWc0LWRldmVsIGZyZWkwci1w bHVnaW5zIgogc2hvcnRfZGVzYz0iTm9uLWxpbmVhciB2aWRlbyBlZGl0b3IiCiBtYWludGFpbmVy PSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iR1BMLTMuMC1vci1s YXRlciIKCkZyb20gMGVjZTkwMzM1NTljNWYyZTM5ZWZkNzkzYTI4NDIwZGRhOWQ2OTIxNSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY0LzEx M10gb214cGxheWVyOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mvb214 cGxheWVyL3RlbXBsYXRlIHwgNiArKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMo KyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vbXhwbGF5ZXIvdGVtcGxh dGUgYi9zcmNwa2dzL29teHBsYXllci90ZW1wbGF0ZQppbmRleCBlNzBiZjc4NzNkNGRlLi4wZTli YzcwZTdjOGViIDEwMDY0NAotLS0gYS9zcmNwa2dzL29teHBsYXllci90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL29teHBsYXllci90ZW1wbGF0ZQpAQCAtMSwxMCArMSwxMCBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnb214cGxheWVyJwogcGtnbmFtZT1vbXhwbGF5ZXIKIHZlcnNpb249MjAxOTAxMDIK LXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIHNob3J0X2Rlc2M9IkNvbW1hbmRsaW5lIE9NWCBwbGF5 ZXIgZm9yIHRoZSBSYXNwYmVycnkgUGkiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZv aWRsaW51eC5vcmc+IgotbGljZW5zZT0iR1BMLTIiCitsaWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVy IgogaG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9wb3Bjb3JubWl4L29teHBsYXllciIKIAog X2NvbW1pdD0iZjA2MjM1Y2M5NjkwYTZkNTgxODc1MTQ0NTJkZjhjZjhmY2RhYWNlYyIKQEAgLTE1 LDcgKzE1LDcgQEAgY2hlY2tzdW09YWYyZDk0NTBmODk0Nzg0MmVhOGM0MDFmZTlmNzFlZWM0NDQw MTNlYmJkZWUyOWYyYWM4MjhjOWM0OTNjMTMyOQogYXJjaHM9ImFybXY2bCogYXJtdjdsKiIKIGJ1 aWxkX3N0eWxlPWdudS1tYWtlZmlsZQogaG9zdG1ha2VkZXBlbmRzPSJjdXJsIHBrZy1jb25maWci Ci1tYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgcnBpLXVzZXJsYW5kLWRldmVsIHBjcmUtZGV2 ZWwgYm9vc3QtZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgZmZtcGVnLWRldmVsIGRidXMtZGV2ZWwiCitt YWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgcnBpLXVzZXJsYW5kLWRldmVsIHBjcmUtZGV2ZWwg Ym9vc3QtZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgZmZtcGVnNC1kZXZlbCBkYnVzLWRldmVsIgogZGVw ZW5kcz0iZnJlZWZvbnQtdHRmIgogCiBkb19idWlsZCgpIHsKCkZyb20gODcwMDIyMDdmOGI1MTQ4 NzRjYzUxYWYzMjNjZmFhYWU2OWU2ODA3MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog emxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1 MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY1LzExM10gb3BlbmltYWdlaW86IHJldmJ1bXAgZm9y IGZmbXBlZy02LjAKCi0tLQogY29tbW9uL3NobGlicyB8IDIgKysKIDEgZmlsZSBjaGFuZ2VkLCAy IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9jb21tb24vc2hsaWJzIGIvY29tbW9uL3NobGli cwppbmRleCBjYTBlZTA2NjIxNWVhLi4xZmZhZjNmZDcwNTc2IDEwMDY0NAotLS0gYS9jb21tb24v c2hsaWJzCisrKyBiL2NvbW1vbi9zaGxpYnMKQEAgLTIyNjAsNiArMjI2MCw4IEBAIGxpYnhtcC5z by40IGxpYnhtcC00LjMuN18xCiBsaWJLRjVUaHJlYWRXZWF2ZXIuc28uNSB0aHJlYWR3ZWF2ZXIt NS4yNi4wXzEKIGxpYk9wZW5JbWFnZUlPX1V0aWwuc28uMi40IG9wZW5pbWFnZWlvLTIuNC45LjBf MQogbGliT3BlbkltYWdlSU8uc28uMi40IG9wZW5pbWFnZWlvLTIuNC45LjBfMQorbGliT3Blbklt YWdlSU9fVXRpbC5zby4yLjQgb3BlbmltYWdlaW8tMi40LjguMV8xCitsaWJPcGVuSW1hZ2VJTy5z by4yLjQgb3BlbmltYWdlaW8tMi40LjguMV8xCiBsaWJPcGVuQ29sb3JJTy5zby4yLjEgb3BlbmNv bG9yaW8tMi4xLjJfMQogbGlicHlzdHJpbmcuc28uMSBweXN0cmluZy0xLjEuM18xCiBsaWJ5YW1s LWNwcC5zby4wLjcgeWFtbC1jcHAtMC43LjBfMQoKRnJvbSA2ZjE4NmFhNjYyMmYxNzM0ZTViODNm Yjc4MDliODI1MDY1ZjUwYzU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwNjYvMTEzXSBvcGVuc2hvdDogcmV2YnVtcCBmb3IgZmZtcGVnLTYu MAoKLS0tCiBzcmNwa2dzL29wZW5zaG90L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vcGVu c2hvdC90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3BlbnNob3QvdGVtcGxhdGUKaW5kZXggMzIyNzE3ZDQw YWJjMC4uYzA3NGUwMzM4NzczYiAxMDA2NDQKLS0tIGEvc3JjcGtncy9vcGVuc2hvdC90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL29wZW5zaG90L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnb3BlbnNob3QnCiBwa2duYW1lPW9wZW5zaG90CiB2ZXJzaW9uPTMuMC4w Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1weXRob24zLW1vZHVsZQogaG9z dG1ha2VkZXBlbmRzPSJweXRob24zIHB5dGhvbjMtc2V0dXB0b29scyIKIG1ha2VkZXBlbmRzPSJm Zm1wZWctZGV2ZWwgcHl0aG9uMy1QeVF0NSIKCkZyb20gYjRiMmVmYWNjNDYzOWE5MGU2NzQxYWFk NWJjMDllZjMwOTA0MGZiNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MCAtMDQwMApT dWJqZWN0OiBbUEFUQ0ggMDY3LzExM10gb3BlbnRvb256OiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3Mvb3BlbnRvb256L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vcGVu dG9vbnovdGVtcGxhdGUgYi9zcmNwa2dzL29wZW50b29uei90ZW1wbGF0ZQppbmRleCBlZTlmNzYw M2Y1NWZkLi4zZTgxODM0Y2EwZWRkIDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW50b29uei90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL29wZW50b29uei90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ29wZW50b29ueicKIHBrZ25hbWU9b3BlbnRvb256CiB2ZXJzaW9u PTEuNi4wCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF93cmtzcmM9InRvb256L3NvdXJj ZXMiCiBidWlsZF9zdHlsZT1jbWFrZQogbWFrZV9jbWQ9bWFrZQoKRnJvbSBjNTgxY2E3YmFmZjdi OWYyYzVjMmYwMDdiYWY4OGEzODk1NTkyMDI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjUwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNjgvMTEzXSBwaWFub2JhcjogcmV2YnVtcCBmb3Ig ZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3BpYW5vYmFyL3RlbXBsYXRlIHwgMiArLQogMSBmaWxl IGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9waWFub2Jhci90ZW1wbGF0ZSBiL3NyY3BrZ3MvcGlhbm9iYXIvdGVtcGxhdGUKaW5kZXgg ZTNmZWJiODIxYTQ1MS4uMWUzZGMxYmY5MzA4ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9waWFub2Jh ci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3BpYW5vYmFyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBA QAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncGlhbm9iYXInCiBwa2duYW1lPXBpYW5vYmFyCiB2ZXJz aW9uPTIwMjIuMDQuMDEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1t YWtlZmlsZQogbWFrZV9idWlsZF9hcmdzPSJWPTEiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25m aWciCgpGcm9tIDczMzg1YWZmM2ViZTYyODZmNTI1NDg4MDhjMDQ0MTNiMTFkYWM3MjQgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2OS8xMTNd IHBwc3NwcDogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL3Bwc3NwcC90 ZW1wbGF0ZSB8IDcgKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3Bwc3NwcC90ZW1wbGF0ZSBiL3NyY3Br Z3MvcHBzc3BwL3RlbXBsYXRlCmluZGV4IDc5ODRhNzMzZDRiZWEuLjE1YTQyZmQyYzk5M2UgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvcHBzc3BwL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcHBzc3BwL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncHBzc3BwJwogcGtn bmFtZT1wcHNzcHAKIHZlcnNpb249MS4xNC40Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBfZ2xz bGFuZ19jb21taXQ9ZGMxMWFkZGUyM2M0NTVhMjRlMTNkZDU0ZGU5YjRlZGU4YmRkN2RiOAogX1NQ SVJWX0Nyb3NzX2NvbW1pdD05YWNiOWVjMzFmNWE4ZWY4MGVhNmI5OTRiYjc3YmU3ODdiMDhkM2Qx CiBfYXJtaXBzX2NvbW1pdD02NzE5ZWRlYmFhZTAzMzMwZWU1NDQxZDliMjgyODA2NzJlZGYwMGQ1 CkBAIC0xMyw3ICsxMyw3IEBAIGNvbmZpZ3VyZV9hcmdzPSItREhFQURMRVNTPTEgLURVU0VfU1lT VEVNX0ZGTVBFRz0xIC1EVU5JVFRFU1Q9T04KICAtRFVTSU5HX1FUX1VJPSQodm9wdF9pZiBxdCBP TiBPRkYpIC1EVVNFX1NZU1RFTV9aU1REPU9OCiAgLURBUk1JUFNfVVNFX1NURF9GSUxFU1lTVEVN PU9OIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHB5dGhvbjMgJCh2b3B0X2lmIHF0IHF0 NS1ob3N0LXRvb2xzKSIKLW1ha2VkZXBlbmRzPSJ6bGliLWRldmVsIGdsZXctZGV2ZWwgZmZtcGVn LWRldmVsIGxpYnppcC1kZXZlbAorbWFrZWRlcGVuZHM9InpsaWItZGV2ZWwgZ2xldy1kZXZlbCBm Zm1wZWc0LWRldmVsIGxpYnppcC1kZXZlbAogIHNuYXBweS1kZXZlbCByYXBpZGpzb24gbGlicG5n LWRldmVsIGxpYnpzdGQtZGV2ZWwKICAkKHZvcHRfaWYgc2RsMiBTREwyLWRldmVsKSAkKHZvcHRf aWYgd2F5bGFuZCB3YXlsYW5kLWRldmVsKQogICQodm9wdF9pZiBxdCAncXQ1LWRldmVsIHF0NS1t dWx0aW1lZGlhLWRldmVsJykiCkBAIC02MiwxMyArNjIsMTIgQEAgcG9zdF9leHRyYWN0KCkgewog CW12ICR7d3Jrc3JjfS9taW5pdXBucC0ke19taW5pdXBucF9jb21taXR9ICR7d3Jrc3JjfS9leHQv bWluaXVwbnAKIH0KIAotcG9zdF9wYXRjaCgpeworcG9zdF9wYXRjaCgpIHsKIAkjIGRpc2FibGUg Z2l0IHZlcnNpb25pbmcKIAl2c2VkIC1lICdzfGZpbmRfcGFja2FnZShHaXQpfCMgJnwnIC1pIGdp dC12ZXJzaW9uLmNtYWtlCiB9CiAKIGRvX2luc3RhbGwoKSB7Ci0JdmxpY2Vuc2UgTElDRU5TRS5U WFQKIAl2aW5zdGFsbCBpY29ucy9pY29uLnN2ZyA2NDQgdXNyL3NoYXJlL3BpeG1hcHMgcHBzc3Bw LnN2ZwogCXZpbnN0YWxsIFF0L1BQU1NQUC5kZXNrdG9wIDY0NCB1c3Ivc2hhcmUvYXBwbGljYXRp b25zCiAJdmJpbiBidWlsZC9QUFNTUFBIZWFkbGVzcyBwcHNzcHAtaGVhZGxlc3MKCkZyb20gMjg3 MmViYTBmMzQ3NGVmNzY0ZDExOGM3ZTZmYjY3MTVmZGY1NDEzOCBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDcwLzExM10gcHFpdjogcmV2YnVt cCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3BxaXYvdGVtcGxhdGUgfCAyICstCiAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL3BxaXYvdGVtcGxhdGUgYi9zcmNwa2dzL3BxaXYvdGVtcGxhdGUKaW5kZXggNTQyZmMy N2EyZDMyYS4uOTMwOGQ5NDliNmExYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9wcWl2L3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvcHFpdi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ3BxaXYnCiBwa2duYW1lPXBxaXYKIHZlcnNpb249Mi4xMgotcmV2aXNpb249MQor cmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBob3N0bWFrZWRlcGVuZHM9InBr Zy1jb25maWciCiBtYWtlZGVwZW5kcz0iZ2xpYi1kZXZlbCBndGsrMy1kZXZlbCAkKHZvcHRfaWYg ZmZtcGVnIGZmbXBlZy1kZXZlbCkKCkZyb20gMDRjMTU2YmJkNGU0NzBhMDY0Yzg1MjlmYWYxZjdh ZGUzM2Q4MmExMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MCAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDcxLzExM10gcW1tcDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNw a2dzL3FtbXAvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3FtbXAvdGVtcGxhdGUgYi9zcmNw a2dzL3FtbXAvdGVtcGxhdGUKaW5kZXggMjZjNjYxZWQxNmJlYS4uYTE1MGQ3NDQxYzdhNiAxMDA2 NDQKLS0tIGEvc3JjcGtncy9xbW1wL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcW1tcC90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3FtbXAnCiBwa2duYW1lPXFt bXAKIHZlcnNpb249MS42LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNt YWtlCiBjb25maWd1cmVfYXJncz0iLURVU0VfSEFMOkJPT0w9RkFMU0UgLURRTU1QX0RFRkFVTFRf VUk6U1RSSU5HPXNpbXBsZSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtaG9zdC10 b29scyBxdDUtcW1ha2UiCgpGcm9tIGRlMjMxYTJmOWQ4NzczNTI4NDM4MWExZTJhZGZmOWI3Nzgy Nzg5ZjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVjdDogW1BB VENIIDA3Mi8xMTNdIHF0NS13ZWJlbmdpbmU6IHVwZGF0ZSB0byA1LjE1LjEzCgotLS0KIC4uLi9j aHJvbWl1bS1tZWRpYS1maWx0ZXJzLWNwcDE0LnBhdGNoICAgICAgICB8ICAxMSArKwogc3JjcGtn cy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCAgIHwgMTc5ICsrKysrKysrKysr KysrKysrKwogc3JjcGtncy9xdDUtd2ViZW5naW5lL3RlbXBsYXRlICAgICAgICAgICAgICAgIHwg IDEwICstCiAzIGZpbGVzIGNoYW5nZWQsIDE5NSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2Nocm9t aXVtLW1lZGlhLWZpbHRlcnMtY3BwMTQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvY2hyb21pdW0tbWVkaWEtZmlsdGVycy1jcHAxNC5wYXRj aCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2Nocm9taXVtLW1lZGlhLWZpbHRlcnMt Y3BwMTQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMDRh ZGM1NDBmMmNiYwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRj aGVzL2Nocm9taXVtLW1lZGlhLWZpbHRlcnMtY3BwMTQucGF0Y2gKQEAgLTAsMCArMSwxMSBAQAor LS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvQlVJTEQuZ24JMjAyMy0w Mi0yNyAxMzozMjo1OS4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9tZWRpYS9maWx0ZXJzL0JVSUxELmduCTIwMjMtMDQtMDIgMTc6MjE6MzkuMjA0MDY2Mzg0IC0w NDAwCitAQCAtOTYsNiArOTYsOCBAQAorICAgICAiLy91aS9nZngvZ2VvbWV0cnk6Z2VvbWV0cnki LAorICAgXQorIAorKyAgY2ZsYWdzX2NjID0gWyAiLXN0ZD1jKysxNCIgXQorKworICAgbGlicyA9 IFtdCisgCisgICBpZiAocHJvcHJpZXRhcnlfY29kZWNzKSB7CmRpZmYgLS1naXQgYS9zcmNwa2dz L3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5n aW5lL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAwLi5hYzU1ZTE2MzQ0MjNhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUt d2ViZW5naW5lL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApAQCAtMCwwICsxLDE3OSBAQAorLS0tIGEv c3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MJMjAy My0wNC0wMiAxNjo1MDo1Ny43MzI1NDc0NDYgLTA0MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19kZW11eGVyLmNjCTIwMjMtMDQtMDIgMTY6NTA6MDku NDg2NDc4OTk1IC0wNDAwCitAQCAtNTcsNiArNTcsOCBAQAorIAorIG5hbWVzcGFjZSB7CisgCisr Y29uc3RleHByIGludDY0X3Qga1JlbGF0aXZlVHNCYXNlID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4o MHg3ZmZlZmZmZmZmZmZmZmZmKTsKKysKKyB2b2lkIFNldEFWU3RyZWFtRGlzY2FyZChBVlN0cmVh bSogc3RyZWFtLCBBVkRpc2NhcmQgZGlzY2FyZCkgeworICAgRENIRUNLKHN0cmVhbSk7CisgICBz dHJlYW0tPmRpc2NhcmQgPSBkaXNjYXJkOworQEAgLTkwLDI0ICs5MiwxMiBAQAorIAorIHN0YXRp YyBiYXNlOjpUaW1lRGVsdGEgRXh0cmFjdFN0YXJ0VGltZShBVlN0cmVhbSogc3RyZWFtKSB7Cisg ICAvLyBUaGUgZGVmYXVsdCBzdGFydCB0aW1lIGlzIHplcm8uCistICBiYXNlOjpUaW1lRGVsdGEg c3RhcnRfdGltZTsKKysgIGJhc2U6OlRpbWVEZWx0YSBzdGFydF90aW1lID0ga05vVGltZXN0YW1w OworIAorICAgLy8gRmlyc3QgdHJ5IHRvIHVzZSAgdGhlIHxzdGFydF90aW1lfCB2YWx1ZSBhcyBp cy4KKyAgIGlmIChzdHJlYW0tPnN0YXJ0X3RpbWUgIT0ga05vRkZtcGVnVGltZXN0YW1wKQorICAg ICBzdGFydF90aW1lID0gQ29udmVydEZyb21UaW1lQmFzZShzdHJlYW0tPnRpbWVfYmFzZSwgc3Ry ZWFtLT5zdGFydF90aW1lKTsKKyAKKy0gIC8vIE5leHQgdHJ5IHRvIHVzZSB0aGUgZmlyc3QgRFRT IHZhbHVlLCBmb3IgY29kZWNzIHdoZXJlIHdlIGtub3cgUFRTID09IERUUworLSAgLy8gKGV4Y2x1 ZGVzIGFsbCBIMjZ4IGNvZGVjcykuIFRoZSBzdGFydCB0aW1lIG11c3QgYmUgcmV0dXJuZWQgaW4g UFRTLgorLSAgaWYgKHN0cmVhbS0+Zmlyc3RfZHRzICE9IGtOb0ZGbXBlZ1RpbWVzdGFtcCAmJgor LSAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX0hFVkMgJiYK Ky0gICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9IMjY0ICYm CistICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfTVBFRzQp IHsKKy0gICAgY29uc3QgYmFzZTo6VGltZURlbHRhIGZpcnN0X3B0cyA9CistICAgICAgICBDb252 ZXJ0RnJvbVRpbWVCYXNlKHN0cmVhbS0+dGltZV9iYXNlLCBzdHJlYW0tPmZpcnN0X2R0cyk7Cist ICAgIGlmIChmaXJzdF9wdHMgPCBzdGFydF90aW1lKQorLSAgICAgIHN0YXJ0X3RpbWUgPSBmaXJz dF9wdHM7CistICB9CistCisgICByZXR1cm4gc3RhcnRfdGltZTsKKyB9CisgCitAQCAtNDA4LDEx ICszOTgsMTEgQEAKKyAgIHNjb3BlZF9yZWZwdHI8RGVjb2RlckJ1ZmZlcj4gYnVmZmVyOworIAor ICAgaWYgKHR5cGUoKSA9PSBEZW11eGVyU3RyZWFtOjpURVhUKSB7CistICAgIGludCBpZF9zaXpl ID0gMDsKKysgICAgc2l6ZV90IGlkX3NpemUgPSAwOworICAgICB1aW50OF90KiBpZF9kYXRhID0g YXZfcGFja2V0X2dldF9zaWRlX2RhdGEoCisgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9E QVRBX1dFQlZUVF9JREVOVElGSUVSLCAmaWRfc2l6ZSk7CisgCistICAgIGludCBzZXR0aW5nc19z aXplID0gMDsKKysgICAgc2l6ZV90IHNldHRpbmdzX3NpemUgPSAwOworICAgICB1aW50OF90KiBz ZXR0aW5nc19kYXRhID0gYXZfcGFja2V0X2dldF9zaWRlX2RhdGEoCisgICAgICAgICBwYWNrZXQu Z2V0KCksIEFWX1BLVF9EQVRBX1dFQlZUVF9TRVRUSU5HUywgJnNldHRpbmdzX3NpemUpOworIAor QEAgLTQyNCw3ICs0MTQsNyBAQAorICAgICBidWZmZXIgPSBEZWNvZGVyQnVmZmVyOjpDb3B5RnJv bShwYWNrZXQtPmRhdGEsIHBhY2tldC0+c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2lkZV9kYXRhLmRhdGEoKSwgc2lkZV9kYXRhLnNpemUoKSk7CisgICB9IGVs c2UgeworLSAgICBpbnQgc2lkZV9kYXRhX3NpemUgPSAwOworKyAgICBzaXplX3Qgc2lkZV9kYXRh X3NpemUgPSAwOworICAgICB1aW50OF90KiBzaWRlX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVf ZGF0YSgKKyAgICAgICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfTUFUUk9TS0FfQkxPQ0tB RERJVElPTkFMLCAmc2lkZV9kYXRhX3NpemUpOworIAorQEAgLTQ4NSw3ICs0NzUsNyBAQAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldC0+c2l6ZSAtIGRhdGFf b2Zmc2V0KTsKKyAgICAgfQorIAorLSAgICBpbnQgc2tpcF9zYW1wbGVzX3NpemUgPSAwOworKyAg ICBzaXplX3Qgc2tpcF9zYW1wbGVzX3NpemUgPSAwOworICAgICBjb25zdCB1aW50MzJfdCogc2tp cF9zYW1wbGVzX3B0ciA9CisgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90 Kj4oYXZfcGFja2V0X2dldF9zaWRlX2RhdGEoCisgICAgICAgICAgICAgcGFja2V0LmdldCgpLCBB Vl9QS1RfREFUQV9TS0lQX1NBTVBMRVMsICZza2lwX3NhbXBsZXNfc2l6ZSkpOworQEAgLTE1ODcs NiArMTU3Nyw4IEBACisgICBmb3IgKGNvbnN0IGF1dG8mIHN0cmVhbSA6IHN0cmVhbXNfKSB7Cisg ICAgIGlmICghc3RyZWFtIHx8IHN0cmVhbS0+SXNFbmFibGVkKCkgIT0gZW5hYmxlZCkKKyAgICAg ICBjb250aW51ZTsKKysgICAgaWYgKHN0cmVhbS0+YXZfc3RyZWFtKCktPnN0YXJ0X3RpbWUgPT0g QVZfTk9QVFNfVkFMVUUpCisrICAgICAgY29udGludWU7CisgICAgIGlmICghbG93ZXN0X3N0YXJ0 X3RpbWVfc3RyZWFtIHx8CisgICAgICAgICBzdHJlYW0tPnN0YXJ0X3RpbWUoKSA8IGxvd2VzdF9z dGFydF90aW1lX3N0cmVhbS0+c3RhcnRfdGltZSgpKSB7CisgICAgICAgbG93ZXN0X3N0YXJ0X3Rp bWVfc3RyZWFtID0gc3RyZWFtLmdldCgpOworQEAgLTE2MDQsNiArMTU5Niw4IEBACisgICAgIGlm IChzdHJlYW0gJiYgc3RyZWFtLT50eXBlKCkgPT0gRGVtdXhlclN0cmVhbTo6VklERU8gJiYKKyAg ICAgICAgIHN0cmVhbS0+SXNFbmFibGVkKCkpIHsKKyAgICAgICB2aWRlb19zdHJlYW0gPSBzdHJl YW0uZ2V0KCk7CisrICAgICAgaWYgKHN0cmVhbS0+YXZfc3RyZWFtKCktPnN0YXJ0X3RpbWUgPT0g QVZfTk9QVFNfVkFMVUUpCisrICAgICAgICBjb250aW51ZTsKKyAgICAgICBpZiAodmlkZW9fc3Ry ZWFtLT5zdGFydF90aW1lKCkgPD0gc2Vla190aW1lKSB7CisgICAgICAgICByZXR1cm4gdmlkZW9f c3RyZWFtOworICAgICAgIH0KK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9z cmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmZtcGVnL2ZmbXBlZ19jb21tb24uaCBxdHdlYmVu Z2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9mZm1wZWcvZmZtcGVnX2Nv bW1vbi5oCistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmZtcGVnL2ZmbXBlZ19j b21tb24uaAkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZmbXBlZy9mZm1wZWdfY29tbW9uLmgJMjAyMi0wNy0xMSAy MjoxMjo0Ny45MTcxOTI3ODggLTA1MDAKK0BAIC0yOSw2ICsyOSw3IEBAIGV4dGVybiAiQyIgewor ICNpbmNsdWRlIDxsaWJhdmZvcm1hdC9hdmZvcm1hdC5oPgorICNpbmNsdWRlIDxsaWJhdmZvcm1h dC9hdmlvLmg+CisgI2luY2x1ZGUgPGxpYmF2dXRpbC9hdnV0aWwuaD4KKysjaW5jbHVkZSA8bGli YXZ1dGlsL2NoYW5uZWxfbGF5b3V0Lmg+CisgI2luY2x1ZGUgPGxpYmF2dXRpbC9pbWd1dGlscy5o PgorICNpbmNsdWRlIDxsaWJhdnV0aWwvbG9nLmg+CisgI2luY2x1ZGUgPGxpYmF2dXRpbC9tYXN0 ZXJpbmdfZGlzcGxheV9tZXRhZGF0YS5oPgorZGlmZiAtTmF1cnAgcXR3ZWJlbmdpbmUtNS4xNS4x MC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2F1ZGlvX2ZpbGVfcmVh ZGVyLmNjIHF0d2ViZW5naW5lLTUuMTUuMTAvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2Zp bHRlcnMvYXVkaW9fZmlsZV9yZWFkZXIuY2MKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9t ZWRpYS9maWx0ZXJzL2F1ZGlvX2ZpbGVfcmVhZGVyLmNjCTIwMjItMDUtMjMgMDY6Mzg6NDAuMDAw MDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9h dWRpb19maWxlX3JlYWRlci5jYwkyMDIyLTA3LTExIDIyOjEyOjQ3LjkxNzE5Mjc4OCAtMDUwMAor QEAgLTg1LDcgKzg1LDcgQEAgYm9vbCBBdWRpb0ZpbGVSZWFkZXI6Ok9wZW5EZW11eGVyKCkgewor IH0KKyAKKyBib29sIEF1ZGlvRmlsZVJlYWRlcjo6T3BlbkRlY29kZXIoKSB7CistICBBVkNvZGVj KiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7 CisrICBjb25zdCBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNvZGVjX2Nv bnRleHRfLT5jb2RlY19pZCk7CisgICBpZiAoY29kZWMpIHsKKyAgICAgLy8gTVAzIGRlY29kZXMg dG8gUzE2UCB3aGljaCB3ZSBkb24ndCBzdXBwb3J0LCB0ZWxsIGl0IHRvIHVzZSBTMTYgaW5zdGVh ZC4KKyAgICAgaWYgKGNvZGVjX2NvbnRleHRfLT5zYW1wbGVfZm10ID09IEFWX1NBTVBMRV9GTVRf UzE2UCkKK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkv Y2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfYXVkaW9fZGVjb2Rlci5jYyBxdHdlYmVuZ2lu ZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19hdWRp b19kZWNvZGVyLmNjCistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9m Zm1wZWdfYXVkaW9fZGVjb2Rlci5jYwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUw MAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2F1ZGlv X2RlY29kZXIuY2MJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTcxOTI3ODggLTA1MDAKK0BAIC0zMjks NyArMzI5LDcgQEAgYm9vbCBGRm1wZWdBdWRpb0RlY29kZXI6OkNvbmZpZ3VyZURlY29kZQorICAg ICB9CisgICB9CisgCistICBBVkNvZGVjKiBjb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNv ZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7CisrICBjb25zdCBBVkNvZGVjKiBjb2RlYyA9IGF2Y29k ZWNfZmluZF9kZWNvZGVyKGNvZGVjX2NvbnRleHRfLT5jb2RlY19pZCk7CisgICBpZiAoIWNvZGVj IHx8CisgICAgICAgYXZjb2RlY19vcGVuMihjb2RlY19jb250ZXh0Xy5nZXQoKSwgY29kZWMsICZj b2RlY19vcHRpb25zKSA8IDApIHsKKyAgICAgRExPRyhFUlJPUikgPDwgIkNvdWxkIG5vdCBpbml0 aWFsaXplIGF1ZGlvIGRlY29kZXI6ICIKK2RpZmYgLU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAu b3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfZ2x1ZS5jYyBx dHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2Zm bXBlZ19nbHVlLmNjCistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9m Zm1wZWdfZ2x1ZS5jYwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIv c3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2dsdWUuY2MJMjAyMi0w Ny0xMSAyMjoxMjo0Ny45MTgxOTI3NzkgLTA1MDAKK0BAIC01OSw3ICs1OSw2IEBAIHN0YXRpYyBp bnQ2NF90IEFWSU9TZWVrT3BlcmF0aW9uKHZvaWQqIG8KKyB9CisgCisgdm9pZCBGRm1wZWdHbHVl OjpJbml0aWFsaXplRkZtcGVnKCkgeworLSAgYXZfcmVnaXN0ZXJfYWxsKCk7CisgfQorIAorIHN0 YXRpYyB2b2lkIExvZ0NvbnRhaW5lcihib29sIGlzX2xvY2FsX2ZpbGUsCitAQCAtOTUsOSArOTQs NiBAQCBGRm1wZWdHbHVlOjpGRm1wZWdHbHVlKEZGbXBlZ1VSTFByb3RvY29sCisgICAvLyBFbmFi bGUgZmFzdCwgYnV0IGluYWNjdXJhdGUgc2Vla3MgZm9yIE1QMy4KKyAgIGZvcm1hdF9jb250ZXh0 Xy0+ZmxhZ3MgfD0gQVZGTVRfRkxBR19GQVNUX1NFRUs7CisgCistICAvLyBFbnN1cmVzIHdlIGNh biByZWFkIG91dCB2YXJpb3VzIG1ldGFkYXRhIGJpdHMgbGlrZSB2cDggYWxwaGEuCistICBmb3Jt YXRfY29udGV4dF8tPmZsYWdzIHw9IEFWRk1UX0ZMQUdfS0VFUF9TSURFX0RBVEE7CistCisgICAv LyBFbnN1cmVzIGZvcm1hdCBwYXJzaW5nIGVycm9ycyB3aWxsIGJhaWwgb3V0LiBGcm9tIGFuIGF1 ZGl0IG9uIDExLzIwMTcsIGFsbAorICAgLy8gaW5zdGFuY2VzIHdlcmUgcmVhbCBmYWlsdXJlcy4g U29sdmVzIGJ1Z3MgbGlrZSBodHRwOi8vY3JidWcuY29tLzcxMDc5MS4KKyAgIGZvcm1hdF9jb250 ZXh0Xy0+ZXJyb3JfcmVjb2duaXRpb24gfD0gQVZfRUZfRVhQTE9ERTsKK2RpZmYgLU5hdXJwIHF0 d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVy cy9mZm1wZWdfdmlkZW9fZGVjb2Rlci5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ192aWRlb19kZWNvZGVyLmNjCistLS0gYS9z cmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfdmlkZW9fZGVjb2Rlci5j YwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX3ZpZGVvX2RlY29kZXIuY2MJMjAyMi0wNy0x MSAyMjoxMjo0Ny45MTgxOTI3NzkgLTA1MDAKK0BAIC0zOTEsNyArMzkxLDcgQEAgYm9vbCBGRm1w ZWdWaWRlb0RlY29kZXI6OkNvbmZpZ3VyZURlY29kZQorICAgaWYgKGRlY29kZV9uYWx1c18pCisg ICAgIGNvZGVjX2NvbnRleHRfLT5mbGFnczIgfD0gQVZfQ09ERUNfRkxBRzJfQ0hVTktTOworIAor LSAgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihjb2RlY19jb250ZXh0Xy0+ Y29kZWNfaWQpOworKyAgY29uc3QgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rl cihjb2RlY19jb250ZXh0Xy0+Y29kZWNfaWQpOworICAgaWYgKCFjb2RlYyB8fCBhdmNvZGVjX29w ZW4yKGNvZGVjX2NvbnRleHRfLmdldCgpLCBjb2RlYywgTlVMTCkgPCAwKSB7CisgICAgIFJlbGVh c2VGRm1wZWdSZXNvdXJjZXMoKTsKKyAgICAgcmV0dXJuIGZhbHNlOworZGlmZiAtTmF1cnAgcXR3 ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJz L21lZGlhX2ZpbGVfY2hlY2tlci5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9tZWRpYS9maWx0ZXJzL21lZGlhX2ZpbGVfY2hlY2tlci5jYworLS0tIGEvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvbWVkaWFfZmlsZV9jaGVja2VyLmNjCTIwMjIt MDUtMjMgMDY6Mzg6NDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21p dW0vbWVkaWEvZmlsdGVycy9tZWRpYV9maWxlX2NoZWNrZXIuY2MJMjAyMi0wNy0xMSAyMjoxMjo0 Ny45MTgxOTI3NzkgLTA1MDAKK0BAIC02OCw3ICs2OCw3IEBAIGJvb2wgTWVkaWFGaWxlQ2hlY2tl cjo6U3RhcnQoYmFzZTo6VGltZUQKKyAgICAgICBhdXRvIGNvbnRleHQgPSBBVlN0cmVhbVRvQVZD b2RlY0NvbnRleHQoZm9ybWF0X2NvbnRleHQtPnN0cmVhbXNbaV0pOworICAgICAgIGlmICghY29u dGV4dCkKKyAgICAgICAgIGNvbnRpbnVlOworLSAgICAgIEFWQ29kZWMqIGNvZGVjID0gYXZjb2Rl Y19maW5kX2RlY29kZXIoY3AtPmNvZGVjX2lkKTsKKysgICAgICBjb25zdCBBVkNvZGVjKiBjb2Rl YyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNwLT5jb2RlY19pZCk7CisgICAgICAgaWYgKGNvZGVj ICYmIGF2Y29kZWNfb3BlbjIoY29udGV4dC5nZXQoKSwgY29kZWMsIG51bGxwdHIpID49IDApIHsK KyAgICAgICAgIGF1dG8gbG9vcCA9IHN0ZDo6bWFrZV91bmlxdWU8RkZtcGVnRGVjb2RpbmdMb29w Pihjb250ZXh0LmdldCgpKTsKKyAgICAgICAgIHN0cmVhbV9jb250ZXh0c1tpXSA9IHtzdGQ6Om1v dmUoY29udGV4dCksIHN0ZDo6bW92ZShsb29wKX07CitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01 LjE1LjEwLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1 bGVzL3ZpZGVvX2NvZGluZy9jb2RlY3MvaDI2NC9oMjY0X2RlY29kZXJfaW1wbC5jYyBxdHdlYmVu Z2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9k dWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9kZWNvZGVyX2ltcGwuY2MKKy0tLSBh L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy92aWRlb19j b2RpbmcvY29kZWNzL2gyNjQvaDI2NF9kZWNvZGVyX2ltcGwuY2MJMjAyMi0wNS0yMyAwNjozODo0 MC4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS93ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9kZWNvZGVyX2lt cGwuY2MJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTgxOTI3NzkgLTA1MDAKK0BAIC0yMDMsNyArMjAz LDcgQEAgaW50MzJfdCBIMjY0RGVjb2RlckltcGw6OkluaXREZWNvZGUoY29ucworICAgLy8gYSBw b2ludGVyIHx0aGlzfC4KKyAgIGF2X2NvbnRleHRfLT5vcGFxdWUgPSB0aGlzOworIAorLSAgQVZD b2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihhdl9jb250ZXh0Xy0+Y29kZWNfaWQp OworKyAgY29uc3QgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihhdl9jb250 ZXh0Xy0+Y29kZWNfaWQpOworICAgaWYgKCFjb2RlYykgeworICAgICAvLyBUaGlzIGlzIGFuIGlu ZGljYXRpb24gdGhhdCBGRm1wZWcgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIG9yIGl0IGhhcyBu b3QKKyAgICAgLy8gYmVlbiBjb21waWxlZC9pbml0aWFsaXplZCB3aXRoIHRoZSBjb3JyZWN0IHNl dCBvZiBjb2RlY3MuCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUg Yi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUKaW5kZXggODUyNjdjN2NmOGEzZi4uMDk1 YWI2NzcwMWU0MiAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZQpAQCAtMSw5ICsxLDkgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ3F0NS13ZWJlbmdpbmUnCiBwa2duYW1lPXF0NS13ZWJlbmdpbmUKLXZl cnNpb249NS4xNS4xMQotcmV2aXNpb249MwordmVyc2lvbj01LjE1LjEzCityZXZpc2lvbj0xCiBf dmVyc2lvbj0iJHt2ZXJzaW9ufS1sdHMiCi1fY2hyb21pdW1fY29tbWl0PWJlMzQ5ZWFmNjJlNzc5 NTU3OTFkN2JmMjlmODkzZjFlOGEzN2RhZjQKK19jaHJvbWl1bV9jb21taXQ9ZTQ4ZGY3ODAzYzdj OThiMGIyNDcxYzk0MDU3ZDMyZTQ0YTMwMWFkNQogYXJjaHM9Ing4Nl82NCogaTY4NiogYXJtdls2 N10qIHBwYzY0KiBhYXJjaDY0KiIKIGNyZWF0ZV93cmtzcmM9eWVzCiBidWlsZF9zdHlsZT1xbWFr ZQpAQCAtMzIsOCArMzIsOCBAQCBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyLCBMR1BMLTMuMC1v ci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL3F0LmlvLyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9n aXRodWIuY29tL3F0L3F0d2ViZW5naW5lL2FyY2hpdmUvdiR7X3ZlcnNpb259LnRhci5negogIGh0 dHBzOi8vZ2l0aHViLmNvbS9xdC9xdHdlYmVuZ2luZS1jaHJvbWl1bS9hcmNoaXZlLyR7X2Nocm9t aXVtX2NvbW1pdH0udGFyLmd6IgotY2hlY2tzdW09ImFhNzQ2NjM1NmM0NTBjNWY1ODcwZjk3OWI5 M2NkN2U3ZTYyZGExMTY1YzMyOGZmY2FiMWE5OTI4ZGIxOGFkNjcKLSA2ZjQ3ZWQ4YWI4Y2MwNjI0 MTFmNmYyMDZkYTYzNTNiYzgyNjNkNmVkNmQ2MjkwYzY4OWEwNWMwMWQ5MWY2NDZiIgorY2hlY2tz dW09IjRiNTk4MzhlZDc1ZWY3ODhiNTllMWU0MTI1MzVhMGU0MmRkOWQzMTE2NjFmZGVhZGIxOTFi NTgxYmE4MTVjNjMKKyBhOTE2ODY1NjJiMWQ0ZThiMjIwZTBiYmNiYWI1ZmViNjQ2MzBlMmRlOTc0 YjM1YWMwMzRiZjM4OGFmNzcxYTZjIgogCiBub19nZW5lcmljX3BrZ2NvbmZpZ19saW5rPXllcwog YnVpbGRfb3B0aW9ucz0ic25kaW8gcGlwZXdpcmUiCgpGcm9tIGIwYWUzZTAyN2Q4MWEwODExNzEz YjhmMDQzZDdiNWRhZjU4NmU5YjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0 MDAKU3ViamVjdDogW1BBVENIIDA3My8xMTNdIHF0NTogdXBkYXRlIHRvIDUuMTUuOAoKLS0tCiAu Li5lcnl3aGVyZS1vcGVuc291cmNlLXNyYy01LjE1Ljgta2Y1LTEucGF0Y2ggfCAxMjkxMyArKysr KysrKysrKysrKysrCiBzcmNwa2dzL3F0NS90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAxMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAxMjkxOSBpbnNlcnRpb25zKCspLCA2IGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvcXQtZXZl cnl3aGVyZS1vcGVuc291cmNlLXNyYy01LjE1Ljgta2Y1LTEucGF0Y2gKCmRpZmYgLS1naXQgYS9z cmNwa2dzL3F0NS9wYXRjaGVzL3F0LWV2ZXJ5d2hlcmUtb3BlbnNvdXJjZS1zcmMtNS4xNS44LWtm NS0xLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy9xdC1ldmVyeXdoZXJlLW9wZW5zb3VyY2Ut c3JjLTUuMTUuOC1rZjUtMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAwLi45NjZjOThiY2QzYmIxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUvcGF0 Y2hlcy9xdC1ldmVyeXdoZXJlLW9wZW5zb3VyY2Utc3JjLTUuMTUuOC1rZjUtMS5wYXRjaApAQCAt MCwwICsxLDEyOTEzIEBACitTdWJtaXR0ZWQgQnk6ICAgICAgICAgICAgUGllcnJlIExhYmFzdGll IDxwaWVycmVfZG90X2xhYmFzdGllX2F0X25ldWZfZG90X2ZyPgorRGF0ZTogICAgICAgICAgICAg ICAgICAgIDIwMjMtMDEtMDUKK0luaXRpYWwgUGFja2FnZSBWZXJzaW9uOiA1LjE1LjgKK1Vwc3Ry ZWFtIFN0YXR1czogICAgICAgICBBcHBsaWVkIChhY2NvcmRpbmcgdG8gS0RFKQorT3JpZ2luOiAg ICAgICAgICAgICAgICAgIEtERSBwYXRjaCBzZXQKK0Rlc2NyaXB0aW9uOiAgICAgICAgICAgICBQ YXRjaCBzZXQgbWFpbnRhaW5lZCBieSB0aGUgS0RFIGZvbGtzCitzZWUgaHR0cHM6Ly9kb3Qua2Rl Lm9yZy8yMDIxLzA0LzA2L2Fubm91bmNpbmcta2Rlcy1xdC01LXBhdGNoLWNvbGxlY3Rpb24KK1Bh dGNoIGdlbmVyYXRlZCB1c2luZyB0aGUgcHJvY2VkdXJlIGluCitodHRwczovL3dpa2kubGludXhm cm9tc2NyYXRjaC5vcmcvYmxmcy90aWNrZXQvMTc0NzYjY29tbWVudDozCisKK1N1Ym1vZHVsZSBx dGJhc2UgNGVlNGZjMTguLjljZjU4NmQ2OgorZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3NwZWNzL2Nv bW1vbi9hbmRyb2lkL3FwbGF0Zm9ybWRlZnMuaCBiL3F0YmFzZS9ta3NwZWNzL2NvbW1vbi9hbmRy b2lkL3FwbGF0Zm9ybWRlZnMuaAoraW5kZXggZjc1YmM0MDkzYi4uMmJkNTk0MTBkNCAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9ta3NwZWNzL2NvbW1vbi9hbmRyb2lkL3FwbGF0Zm9ybWRlZnMuaAorKysr IGIvcXRiYXNlL21rc3BlY3MvY29tbW9uL2FuZHJvaWQvcXBsYXRmb3JtZGVmcy5oCitAQCAtMTQ0 LDExICsxNDQsNyBAQAorICNkZWZpbmUgUVRfU0lHTkFMX0FSR1MgICAgICAgICAgaW50CisgI2Rl ZmluZSBRVF9TSUdOQUxfSUdOT1JFICAgICAgICBTSUdfSUdOCisgCistI2lmIGRlZmluZWQoX19H TElCQ19fKSAmJiAoX19HTElCQ19fID49IDIpCisgI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAg ICAgICBzb2NrbGVuX3QKKy0jZWxzZQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAg aW50CistI2VuZGlmCisgCisgI2lmIGRlZmluZWQoX1hPUEVOX1NPVVJDRSkgJiYgKF9YT1BFTl9T T1VSQ0UgPj0gNTAwKQorICNkZWZpbmUgUVRfU05QUklOVEYgICAgICAgICAgICAgOjpzbnByaW50 ZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9ta3NwZWNzL2ZlYXR1cmVzL21hYy9zZGsubWsgYi9xdGJh c2UvbWtzcGVjcy9mZWF0dXJlcy9tYWMvc2RrLm1rCitpbmRleCBmMzBiNTgzMGI0Li5hMzJjZWFj YjZjIDEwMDY0NAorLS0tIGEvcXRiYXNlL21rc3BlY3MvZmVhdHVyZXMvbWFjL3Nkay5taworKysr IGIvcXRiYXNlL21rc3BlY3MvZmVhdHVyZXMvbWFjL3Nkay5taworQEAgLTEsNiArMSw2IEBACisg CisgaWZlcSAoJChRVF9NQUNfU0RLX05PX1ZFUlNJT05fQ0hFQ0spLCkKKy0gICAgQ0hFQ0tfU0RL X0NPTU1BTkQgPSAvdXNyL2Jpbi94Y3J1biAtLXNkayAkKEVYUE9SVF9RTUFLRV9NQUNfU0RLKSAt c2hvdy1zZGstdmVyc2lvbiAyPiYxCisrICAgIENIRUNLX1NES19DT01NQU5EID0gL3Vzci9iaW4v eGNydW4gLS1zZGsgJChFWFBPUlRfUU1BS0VfTUFDX1NESykgLXNob3ctc2RrLXZlcnNpb24gMj4v ZGV2L251bGwKKyAgICAgQ1VSUkVOVF9NQUNfU0RLX1ZFUlNJT04gOj0gJChzaGVsbCBERVZFTE9Q RVJfRElSPSQoRVhQT1JUX1FNQUtFX1hDT0RFX0RFVkVMT1BFUl9QQVRIKSAkKENIRUNLX1NES19D T01NQU5EKSkKKyAgICAgaWZuZXEgKCQoQ1VSUkVOVF9NQUNfU0RLX1ZFUlNJT04pLCQoRVhQT1JU X1FNQUtFX01BQ19TREtfVkVSU0lPTikpCisgICAgICAgICAjIFdlIGRvbid0IHdhbnQgdG8gY29t cGxhaW4gYWJvdXQgb3V0IG9mIGRhdGUgU0RLIHVubGVzcyB0aGUgdGFyZ2V0IG5lZWRzIHRvIGJl IHJlbWFkZS4KK2RpZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVjcy9saW51eC1jbGFuZy9xcGxhdGZv cm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9saW51eC1jbGFuZy9xcGxhdGZvcm1kZWZzLmgKK2lu ZGV4IGE4MThkOTczZjAuLmMxYWI3MmZiYzYgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9s aW51eC1jbGFuZy9xcGxhdGZvcm1kZWZzLmgKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWNs YW5nL3FwbGF0Zm9ybWRlZnMuaAorQEAgLTc5LDE0ICs3OSw2IEBACisgI2RlZmluZSBRVF9VU0Vf WE9QRU5fTEZTX0VYVEVOU0lPTlMKKyAjaW5jbHVkZSAiLi4vY29tbW9uL3Bvc2l4L3FwbGF0Zm9y bWRlZnMuaCIKKyAKKy0jdW5kZWYgUVRfU09DS0xFTl9UCistCistI2lmIGRlZmluZWQoX19HTElC Q19fKSAmJiAoX19HTElCQ19fID49IDIpCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAg ICBzb2NrbGVuX3QKKy0jZWxzZQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgaW50 CistI2VuZGlmCistCisgI2lmIGRlZmluZWQoX1hPUEVOX1NPVVJDRSkgJiYgKF9YT1BFTl9TT1VS Q0UgPj0gNTAwKQorICNkZWZpbmUgUVRfU05QUklOVEYgICAgICAgICAgICAgOjpzbnByaW50Zgor ICNkZWZpbmUgUVRfVlNOUFJJTlRGICAgICAgICAgICAgOjp2c25wcmludGYKK2RpZmYgLS1naXQg YS9xdGJhc2UvbWtzcGVjcy9saW51eC1nKysvcXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNlL21rc3Bl Y3MvbGludXgtZysrL3FwbGF0Zm9ybWRlZnMuaAoraW5kZXggMTM1MjNmMDcwMi4uNGQyNzUwZDll YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWcrKy9xcGxhdGZvcm1kZWZzLmgK KysrKyBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWcrKy9xcGxhdGZvcm1kZWZzLmgKK0BAIC03OSwx NCArNzksNiBAQAorICNkZWZpbmUgUVRfVVNFX1hPUEVOX0xGU19FWFRFTlNJT05TCisgI2luY2x1 ZGUgIi4uL2NvbW1vbi9wb3NpeC9xcGxhdGZvcm1kZWZzLmgiCisgCistI3VuZGVmIFFUX1NPQ0tM RU5fVAorLQorLSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA8IDIpCistI2Rl ZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0jZWxzZQorLSNkZWZpbmUgUVRfU09D S0xFTl9UICAgICAgICAgICAgc29ja2xlbl90CistI2VuZGlmCistCisgI2lmIGRlZmluZWQoX1hP UEVOX1NPVVJDRSkgJiYgKF9YT1BFTl9TT1VSQ0UgPj0gNTAwKQorICNkZWZpbmUgUVRfU05QUklO VEYgICAgICAgICAgICAgOjpzbnByaW50ZgorICNkZWZpbmUgUVRfVlNOUFJJTlRGICAgICAgICAg ICAgOjp2c25wcmludGYKK2RpZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVjcy9saW51eC1sbHZtL3Fw bGF0Zm9ybWRlZnMuaCBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxsdm0vcXBsYXRmb3JtZGVmcy5o CitpbmRleCBkYzc1MGFiMWVmLi5kM2NjMzliNDdmIDEwMDY0NAorLS0tIGEvcXRiYXNlL21rc3Bl Y3MvbGludXgtbGx2bS9xcGxhdGZvcm1kZWZzLmgKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4 LWxsdm0vcXBsYXRmb3JtZGVmcy5oCitAQCAtODAsMTQgKzgwLDYgQEAKKyAjZGVmaW5lIFFUX1VT RV9YT1BFTl9MRlNfRVhURU5TSU9OUworICNpbmNsdWRlICIuLi9jb21tb24vcG9zaXgvcXBsYXRm b3JtZGVmcy5oIgorIAorLSN1bmRlZiBRVF9TT0NLTEVOX1QKKy0KKy0jaWYgZGVmaW5lZChfX0dM SUJDX18pICYmIChfX0dMSUJDX18gPj0gMikKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAg ICAgIHNvY2tsZW5fdAorLSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBp bnQKKy0jZW5kaWYKKy0KKyAjaWYgZGVmaW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NP VVJDRSA+PSA1MDApCisgI2RlZmluZSBRVF9TTlBSSU5URiAgICAgICAgICAgICA6OnNucHJpbnRm CisgI2RlZmluZSBRVF9WU05QUklOVEYgICAgICAgICAgICA6OnZzbnByaW50ZgorZGlmZiAtLWdp dCBhL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxzYi1nKysvcXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNl L21rc3BlY3MvbGludXgtbHNiLWcrKy9xcGxhdGZvcm1kZWZzLmgKK2luZGV4IDRjNGU1M2RhMmEu LjgzYmFmZmIzZTMgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9saW51eC1sc2ItZysrL3Fw bGF0Zm9ybWRlZnMuaAorKysrIGIvcXRiYXNlL21rc3BlY3MvbGludXgtbHNiLWcrKy9xcGxhdGZv cm1kZWZzLmgKK0BAIC04NSwxNiArODUsOSBAQAorICNpbmNsdWRlICIuLi9jb21tb24vcG9zaXgv cXBsYXRmb3JtZGVmcy5oIgorIAorICN1bmRlZiBRVF9PUEVOX0xBUkdFRklMRQorLSN1bmRlZiBR VF9TT0NLTEVOX1QKKyAKKyAjZGVmaW5lIFFUX09QRU5fTEFSR0VGSUxFICAgICAgIDAKKyAKKy0j aWYgZGVmaW5lZChfX0dMSUJDX18pICYmIChfX0dMSUJDX18gPj0gMikKKy0jZGVmaW5lIFFUX1NP Q0tMRU5fVCAgICAgICAgICAgIHNvY2tsZW5fdAorLSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVO X1QgICAgICAgICAgICBpbnQKKy0jZW5kaWYKKy0KKyAjaWZuZGVmIFNJT0NHSUZCUkRBRERSCisg IyAgZGVmaW5lIFNJT0NHSUZCUkRBRERSIDB4ODkxOQorICNlbmRpZgorZGlmZiAtLWdpdCBhL3F0 YmFzZS9ta3NwZWNzL2x5bnhvcy1nKysvcXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNlL21rc3BlY3Mv bHlueG9zLWcrKy9xcGxhdGZvcm1kZWZzLmgKK2luZGV4IDQzMzllYTJiMjMuLjYwMDdhZjAwNTUg MTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9seW54b3MtZysrL3FwbGF0Zm9ybWRlZnMuaAor KysrIGIvcXRiYXNlL21rc3BlY3MvbHlueG9zLWcrKy9xcGxhdGZvcm1kZWZzLmgKK0BAIC03Miwx NCArNzIsNiBAQAorIAorICNpbmNsdWRlICIuLi9jb21tb24vcG9zaXgvcXBsYXRmb3JtZGVmcy5o IgorIAorLSN1bmRlZiBRVF9TT0NLTEVOX1QKKy0KKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYm IChfX0dMSUJDX18gPj0gMikKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNvY2ts ZW5fdAorLSNlbHNlCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBpbnQKKy0jZW5k aWYKKy0KKyAjaWYgZGVmaW5lZChfWE9QRU5fU09VUkNFKSAmJiAoX1hPUEVOX1NPVVJDRSA+PSA1 MDApCisgI2RlZmluZSBRVF9TTlBSSU5URiAgICAgICAgICAgICA6OnNucHJpbnRmCisgI2RlZmlu ZSBRVF9WU05QUklOVEYgICAgICAgICAgICA6OnZzbnByaW50ZgorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvM3JkcGFydHkvYW5nbGUvc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5jcHAgYi9x dGJhc2Uvc3JjLzNyZHBhcnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuY3Bw CitpbmRleCBjM2MxODQyNThmLi4zMmFmM2Y4ZjI5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy8z cmRwYXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmNwcAorKysrIGIvcXRi YXNlL3NyYy8zcmRwYXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmNwcAor QEAgLTEwLDYgKzEwLDcgQEAKKyAjaW5jbHVkZSAibGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmgi CisgCisgI2luY2x1ZGUgPGFsZ29yaXRobT4KKysjaW5jbHVkZSA8bGltaXRzPgorIAorICNpbmNs dWRlICJjb21tb24vZGVidWcuaCIKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjLzNyZHBhcnR5 L2ZvcmtmZC9mb3JrZmRfbGludXguYyBiL3F0YmFzZS9zcmMvM3JkcGFydHkvZm9ya2ZkL2Zvcmtm ZF9saW51eC5jCitpbmRleCBmZmUwZTlhNWUyLi5iMWY1NDA4ZDExIDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy8zcmRwYXJ0eS9mb3JrZmQvZm9ya2ZkX2xpbnV4LmMKKysrKyBiL3F0YmFzZS9zcmMv M3JkcGFydHkvZm9ya2ZkL2ZvcmtmZF9saW51eC5jCitAQCAtODIsNyArODIsOCBAQCBzdGF0aWMg aW50IHN5c19jbG9uZSh1bnNpZ25lZCBsb25nIGNsb25lZmxhZ3MsIGludCAqcHRpZCkKKyAgICAg cmV0dXJuIHN5c2NhbGwoX19OUl9jbG9uZSwgY2xvbmVmbGFncywgY2hpbGRfc3RhY2ssIHN0YWNr X3NpemUsIHB0aWQsIG5ld3RscywgY3RpZCk7CisgI2VsaWYgZGVmaW5lZChfX2FyY19fKSB8fCBk ZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19taXBz X18pIHx8IFwKKyAgICAgZGVmaW5lZChfX25kczMyX18pIHx8IGRlZmluZWQoX19ocHBhX18pIHx8 IGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQoX19pMzg2X18pIHx8IFwKKy0gICAgZGVm aW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9feHRlbnNhX18pIHx8IGRlZmluZWQoX19hbHBo YV9fKSB8fCBkZWZpbmVkKF9fcmlzY3YpCisrICAgIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVm aW5lZChfX3h0ZW5zYV9fKSB8fCBkZWZpbmVkKF9fYWxwaGFfXykgfHwgZGVmaW5lZChfX3Jpc2N2 KSB8fCBcCisrICAgIGRlZmluZWQoX19sb29uZ2FyY2hfXykKKyAgICAgLyogY3RpZCBhbmQgbmV3 dGxzIGFyZSBpbnZlcnRlZCBvbiBDT05GSUdfQ0xPTkVfQkFDS1dBUkRTIGFyY2hpdGVjdHVyZXMs CisgICAgICAqIGJ1dCBzaW5jZSBib3RoIHZhbHVlcyBhcmUgMCwgdGhlcmUncyBubyBoYXJtLiAq LworICAgICByZXR1cm4gc3lzY2FsbChfX05SX2Nsb25lLCBjbG9uZWZsYWdzLCBjaGlsZF9zdGFj aywgcHRpZCwgY3RpZCwgbmV3dGxzKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2FuZHJvaWQv amFyL3NyYy9vcmcvcXRwcm9qZWN0L3F0NS9hbmRyb2lkL1F0TmF0aXZlLmphdmEgYi9xdGJhc2Uv c3JjL2FuZHJvaWQvamFyL3NyYy9vcmcvcXRwcm9qZWN0L3F0NS9hbmRyb2lkL1F0TmF0aXZlLmph dmEKK2luZGV4IDU3OTJiNWIyZjUuLjJmNzQ3NTBmY2YgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2FuZHJvaWQvamFyL3NyYy9vcmcvcXRwcm9qZWN0L3F0NS9hbmRyb2lkL1F0TmF0aXZlLmphdmEK KysrKyBiL3F0YmFzZS9zcmMvYW5kcm9pZC9qYXIvc3JjL29yZy9xdHByb2plY3QvcXQ1L2FuZHJv aWQvUXROYXRpdmUuamF2YQorQEAgLTExNiw2ICsxMTYsNyBAQCBwdWJsaWMgY2xhc3MgUXROYXRp dmUKKyAgICAgcHVibGljIHN0YXRpYyBRdFRocmVhZCBtX3F0VGhyZWFkID0gbmV3IFF0VGhyZWFk KCk7CisgICAgIHByaXZhdGUgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBVcmk+IG1fY2FjaGVkVXJp cyA9IG5ldyBIYXNoTWFwPFN0cmluZywgVXJpPigpOworICAgICBwcml2YXRlIHN0YXRpYyBBcnJh eUxpc3Q8U3RyaW5nPiBtX2tub3duRGlycyA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOworKyAg ICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlID0g Ik5vIHBlcm1pc3Npb25zIHRvIG9wZW4gVXJpIjsKKyAKKyAgICAgcHJpdmF0ZSBzdGF0aWMgZmlu YWwgUnVubmFibGUgcnVuUGVuZGluZ0NwcFJ1bm5hYmxlc1J1bm5hYmxlID0gbmV3IFJ1bm5hYmxl KCkgeworICAgICAgICAgQE92ZXJyaWRlCitAQCAtMTkzLDExICsxOTQsMTAgQEAgcHVibGljIGNs YXNzIFF0TmF0aXZlCisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlclVyaTsKKyAgICAg ICAgICAgICB9CisgCistICAgICAgICAgICAgLy8gQW5kcm9pZCA2IGFuZCBlYXJsaWVyIGNvdWxk IHN0aWxsIG1hbmFnZSB0byBvcGVuIHRoZSBmaWxlIHNvIHdlIGNhbiByZXR1cm4gdGhlCistICAg ICAgICAgICAgLy8gcGFyc2VkIHVyaSBoZXJlCistICAgICAgICAgICAgaWYgKEJ1aWxkLlZFUlNJ T04uU0RLX0lOVCA8IDI0KQorLSAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VkVXJpOworLSAg ICAgICAgICAgIHJldHVybiBudWxsOworKyAgICAgICAgICAgIC8vIGlmIHdlIG9ubHkgaGF2ZSB0 cmFuc2llbnQgcGVybWlzc2lvbnMgb24gdXJpIGFsbCB0aGUgYWJvdmUgd2lsbCBmYWlsLAorKyAg ICAgICAgICAgIC8vIGJ1dCB3ZSB3aWxsIGJlIGFibGUgdG8gcmVhZCB0aGUgZmlsZSBhbnl3YXks IHNvIGNvbnRpbnVlIHdpdGggdXJpIGhlcmUgYW55d2F5CisrICAgICAgICAgICAgLy8gYW5kIGNo ZWNrIGZvciBTZWN1cml0eUV4Y2VwdGlvbnMgbGF0ZXIKKysgICAgICAgICAgICByZXR1cm4gcGFy c2VkVXJpOworICAgICAgICAgfSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gZSkgeworICAgICAg ICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgICAgICAgcmV0dXJuIG51bGw7CitA QCAtMjQ0LDcgKzI0NCw3IEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgaW50IGVy cm9yID0gLTE7CisgCisgICAgICAgICBpZiAodXJpID09IG51bGwpIHsKKy0gICAgICAgICAgICBM b2cuZShRdFRBRywgIm9wZW5GZEZvckNvbnRlbnRVcmwoKTogTm8gcGVybWlzc2lvbnMgdG8gb3Bl biBVcmkiKTsKKysgICAgICAgICAgICBMb2cuZShRdFRBRywgIm9wZW5GZEZvckNvbnRlbnRVcmwo KTogIiArIE5vUGVybWlzc2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAgcmV0dXJuIGVy cm9yOworICAgICAgICAgfQorIAorQEAgLTI1NCwxMiArMjU0LDEzIEBAIHB1YmxpYyBjbGFzcyBR dE5hdGl2ZQorICAgICAgICAgICAgIHJldHVybiBmZERlc2MuZGV0YWNoRmQoKTsKKyAgICAgICAg IH0gY2F0Y2ggKEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgZS5wcmlu dFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgICB9IGNh dGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgIExvZy5lKFF0 VEFHLCAib3BlbkZkRm9yQ29udGVudFVybCgpOiBJbnZhbGlkIFVyaSIpOworICAgICAgICAgICAg IGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIGVycm9yOworKyAgICAg ICAgfSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gZSkgeworKyAgICAgICAgICAgIExvZy5lKFF0 VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAgfQorKyAgICAgICAgcmV0 dXJuIGVycm9yOworICAgICB9CisgCisgICAgIHB1YmxpYyBzdGF0aWMgbG9uZyBnZXRTaXplKENv bnRleHQgY29udGV4dCwgU3RyaW5nIGNvbnRlbnRVcmwpCitAQCAtMjcwLDcgKzI3MSw3IEBAIHB1 YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgICAgIHVyaSA9IGdldFVyaVdpdGhWYWxpZFBl cm1pc3Npb24oY29udGV4dCwgY29udGVudFVybCwgInIiKTsKKyAKKyAgICAgICAgIGlmICh1cmkg PT0gbnVsbCkgeworLSAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiZ2V0U2l6ZSgpOiBObyBwZXJt aXNzaW9ucyB0byBvcGVuIFVyaSIpOworKyAgICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1p c3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAgICAgIHJldHVybiBzaXplOworICAgICAgICAg fSBlbHNlIGlmICghbV9jYWNoZWRVcmlzLmNvbnRhaW5zS2V5KGNvbnRlbnRVcmwpKSB7CisgICAg ICAgICAgICAgbV9jYWNoZWRVcmlzLnB1dChjb250ZW50VXJsLCB1cmkpOworQEAgLTI4OCwxMiAr Mjg5LDEzIEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgfSBjYXRjaCAoSWxsZWdh bEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRBRywgImdldFNp emUoKTogSW52YWxpZCBVcmkiKTsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOwor LSAgICAgICAgICAgIHJldHVybiBzaXplOworICAgICAgICAgfSAgY2F0Y2ggKFVuc3VwcG9ydGVk T3BlcmF0aW9uRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRBRywgImdldFNp emUoKTogVW5zdXBwb3J0ZWQgb3BlcmF0aW9uIGZvciBnaXZlbiBVcmkiKTsKKyAgICAgICAgICAg ICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVybiBzaXplOworKyAgICAg ICAgfSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gZSkgeworKyAgICAgICAgICAgIExvZy5lKFF0 VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAgfQorKyAgICAgICAgcmV0 dXJuIHNpemU7CisgICAgIH0KKyAKKyAgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGNoZWNrRmls ZUV4aXN0cyhDb250ZXh0IGNvbnRleHQsIFN0cmluZyBjb250ZW50VXJsKQorQEAgLTMwMyw3ICsz MDUsNyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgIGlmICh1cmkgPT0gbnVsbCkK KyAgICAgICAgICAgICB1cmkgPSBnZXRVcmlXaXRoVmFsaWRQZXJtaXNzaW9uKGNvbnRleHQsIGNv bnRlbnRVcmwsICJyIik7CisgICAgICAgICBpZiAodXJpID09IG51bGwpIHsKKy0gICAgICAgICAg ICBMb2cuZShRdFRBRywgImNoZWNrRmlsZUV4aXN0cygpOiBObyBwZXJtaXNzaW9ucyB0byBvcGVu IFVyaSIpOworKyAgICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3Nh Z2UpOworICAgICAgICAgICAgIHJldHVybiBleGlzdHM7CisgICAgICAgICB9IGVsc2UgeworICAg ICAgICAgICAgIGlmICghbV9jYWNoZWRVcmlzLmNvbnRhaW5zS2V5KGNvbnRlbnRVcmwpKQorQEAg LTMyMSwxMiArMzIzLDEzIEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgfSBjYXRj aCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShRdFRB RywgImNoZWNrRmlsZUV4aXN0cygpOiBJbnZhbGlkIFVyaSIpOworICAgICAgICAgICAgIGUucHJp bnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIGV4aXN0czsKKyAgICAgICAgIH0g Y2F0Y2ggKFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBM b2cuZShRdFRBRywgImNoZWNrRmlsZUV4aXN0cygpOiBVbnN1cHBvcnRlZCBvcGVyYXRpb24gZm9y IGdpdmVuIFVyaSIpOworICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOworKyAgICAgICAgfSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24g ZSkgeworKyAgICAgICAgICAgIExvZy5lKFF0VEFHLCBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2Up OworICAgICAgICAgfQorKyAgICAgICAgcmV0dXJuIGV4aXN0czsKKyAgICAgfQorIAorICAgICBw dWJsaWMgc3RhdGljIGJvb2xlYW4gY2hlY2tJZldyaXRhYmxlKENvbnRleHQgY29udGV4dCwgU3Ry aW5nIGNvbnRlbnRVcmwpCitAQCAtMzQ0LDcgKzM0Nyw3IEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2 ZQorICAgICAgICAgICAgIHVyaSA9IGdldFVyaVdpdGhWYWxpZFBlcm1pc3Npb24oY29udGV4dCwg Y29udGVudFVybCwgInIiKTsKKyAgICAgICAgIH0KKyAgICAgICAgIGlmICh1cmkgPT0gbnVsbCkg eworLSAgICAgICAgICAgIExvZy5lKFF0VEFHLCAiaXNEaXIoKTogTm8gcGVybWlzc2lvbnMgdG8g b3BlbiBVcmkiKTsKKysgICAgICAgICAgICBMb2cuZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JN ZXNzYWdlKTsKKyAgICAgICAgICAgICByZXR1cm4gaXNEaXI7CisgICAgICAgICB9IGVsc2Ugewor ICAgICAgICAgICAgIGlmICghbV9jYWNoZWRVcmlzLmNvbnRhaW5zS2V5KGNvbnRlbnRVcmwpKQor QEAgLTM3NCwxMiArMzc3LDEzIEBAIHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgfSBj YXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cuZShR dFRBRywgImNoZWNrSWZEaXIoKTogSW52YWxpZCBVcmkiKTsKKyAgICAgICAgICAgICBlLnByaW50 U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIH0gY2F0 Y2ggKFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICBMb2cu ZShRdFRBRywgImNoZWNrSWZEaXIoKTogVW5zdXBwb3J0ZWQgb3BlcmF0aW9uIGZvciBnaXZlbiBV cmkiKTsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKKysgICAgICAgIH0gY2F0Y2ggKFNlY3VyaXR5RXhjZXB0aW9uIGUpIHsKKysg ICAgICAgICAgICBMb2cuZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAg ICAgIH0KKysgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgfQorICAgICBwdWJsaWMgc3RhdGlj IFN0cmluZ1tdIGxpc3RDb250ZW50c0Zyb21UcmVlVXJpKENvbnRleHQgY29udGV4dCwgU3RyaW5n IGNvbnRlbnRVcmwpCisgICAgIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQv cXRjb25jdXJyZW50cmVkdWNla2VybmVsLmggYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25j dXJyZW50cmVkdWNla2VybmVsLmgKK2luZGV4IDhmOWE5Mzg5NTIuLmE5OGRlZGVmMmUgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50cmVkdWNla2VybmVsLmgK KysrKyBiL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnRyZWR1Y2VrZXJuZWwuaAor QEAgLTIxMiwxMSArMjEyLDEzIEBAIHB1YmxpYzoKKyAKKyAgICAgaW5saW5lIGJvb2wgc2hvdWxk VGhyb3R0bGUoKQorICAgICB7CisrICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8UU11dGV4PiBsb2Nr ZXIobXV0ZXgpOworICAgICAgICAgcmV0dXJuIChyZXN1bHRzTWFwU2l6ZSA+IChSZWR1Y2VRdWV1 ZVRocm90dGxlTGltaXQgKiB0aHJlYWRDb3VudCkpOworICAgICB9CisgCisgICAgIGlubGluZSBi b29sIHNob3VsZFN0YXJ0VGhyZWFkKCkKKyAgICAgeworKyAgICAgICAgc3RkOjpsb2NrX2d1YXJk PFFNdXRleD4gbG9ja2VyKG11dGV4KTsKKyAgICAgICAgIHJldHVybiAocmVzdWx0c01hcFNpemUg PD0gKFJlZHVjZVF1ZXVlU3RhcnRMaW1pdCAqIHRocmVhZENvdW50KSk7CisgICAgIH0KKyB9Owor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdp bmUuY3BwIGIvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5j cHAKK2luZGV4IGVhNmNlM2FjNDIuLjdmOTFhMmJhNjggMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAKK0BAIC0xNzYsNiArMTc2 LDM5IEBAIHZvaWQgVGhyZWFkRW5naW5lQmFzZTo6c3RhcnRTaW5nbGVUaHJlYWRlZCgpCisgICAg IGZpbmlzaCgpOworIH0KKyAKKyt2b2lkIFRocmVhZEVuZ2luZUJhc2U6OnN0YXJ0QmxvY2tpbmco KQorK3sKKysgICAgc3RhcnQoKTsKKysgICAgYmFycmllci5hY3F1aXJlKCk7CisrICAgIHN0YXJ0 VGhyZWFkcygpOworKworKyAgICBib29sIHRocm90dGxlZCA9IGZhbHNlOworKyNpZm5kZWYgUVRf Tk9fRVhDRVBUSU9OUworKyAgICB0cnkgeworKyNlbmRpZgorKyAgICAgICAgd2hpbGUgKHRocmVh ZEZ1bmN0aW9uKCkgPT0gVGhyb3R0bGVUaHJlYWQpIHsKKysgICAgICAgICAgICBpZiAodGhyZWFk VGhyb3R0bGVFeGl0KCkpIHsKKysgICAgICAgICAgICAgICAgdGhyb3R0bGVkID0gdHJ1ZTsKKysg ICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyNpZm5k ZWYgUVRfTk9fRVhDRVBUSU9OUworKyAgICB9IGNhdGNoIChRRXhjZXB0aW9uICZlKSB7CisrICAg ICAgICBoYW5kbGVFeGNlcHRpb24oZSk7CisrICAgIH0gY2F0Y2ggKC4uLikgeworKyAgICAgICAg aGFuZGxlRXhjZXB0aW9uKFFVbmhhbmRsZWRFeGNlcHRpb24oKSk7CisrICAgIH0KKysjZW5kaWYK KysKKysgICAgaWYgKHRocm90dGxlZCA9PSBmYWxzZSkgeworKyAgICAgICAgYmFycmllci5yZWxl YXNlKCk7CisrICAgIH0KKysKKysgICAgYmFycmllci53YWl0KCk7CisrICAgIGZpbmlzaCgpOwor KyAgICBleGNlcHRpb25TdG9yZS50aHJvd1Bvc3NpYmxlRXhjZXB0aW9uKCk7CisrfQorKworIHZv aWQgVGhyZWFkRW5naW5lQmFzZTo6c3RhcnRUaHJlYWQoKQorIHsKKyAgICAgc3RhcnRUaHJlYWRJ bnRlcm5hbCgpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJl bnR0aHJlYWRlbmdpbmUuaCBiL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJl YWRlbmdpbmUuaAoraW5kZXggN2MzMGNlYmRiYy4uYTRjODU0OGNjNCAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuaAorKysrIGIvcXRi YXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5oCitAQCAtOTEsNiAr OTEsNyBAQCBwdWJsaWM6CisgICAgIFRocmVhZEVuZ2luZUJhc2UoKTsKKyAgICAgdmlydHVhbCB+ VGhyZWFkRW5naW5lQmFzZSgpOworICAgICB2b2lkIHN0YXJ0U2luZ2xlVGhyZWFkZWQoKTsKKysg ICAgdm9pZCBzdGFydEJsb2NraW5nKCk7CisgICAgIHZvaWQgc3RhcnRUaHJlYWQoKTsKKyAgICAg Ym9vbCBpc0NhbmNlbGVkKCk7CisgICAgIHZvaWQgd2FpdEZvclJlc3VtZSgpOworQEAgLTE0Myw2 ICsxNDQsMTUgQEAgcHVibGljOgorICAgICAgICAgcmV0dXJuIHJlc3VsdCgpOworICAgICB9Cisg CisrICAgIC8vIFJ1bnMgdGhlIHVzZXIgYWxnb3JpdGhtIHVzaW5nIG11bHRpcGxlIHRocmVhZHMu CisrICAgIC8vIFRoaXMgZnVuY3Rpb24gYmxvY2tzIHVudGlsIHRoZSBhbGdvcml0aG0gaXMgZmlu aXNoZWQsCisrICAgIC8vIGFuZCB0aGVuIHJldHVybnMgdGhlIHJlc3VsdC4KKysgICAgVCAqc3Rh cnRCbG9ja2luZygpCisrICAgIHsKKysgICAgICAgIFRocmVhZEVuZ2luZUJhc2U6OnN0YXJ0Qmxv Y2tpbmcoKTsKKysgICAgICAgIHJldHVybiByZXN1bHQoKTsKKysgICAgfQorKworICAgICAvLyBS dW5zIHRoZSB1c2VyIGFsZ29yaXRobSB1c2luZyBtdWx0aXBsZSB0aHJlYWRzLgorICAgICAvLyBE b2VzIG5vdCBibG9jaywgcmV0dXJucyBhIGZ1dHVyZS4KKyAgICAgUUZ1dHVyZTxUPiBzdGFydEFz eW5jaHJvbm91c2x5KCkKK0BAIC0yMjMsNiArMjMzLDEzIEBAIGNsYXNzIFRocmVhZEVuZ2luZVN0 YXJ0ZXIgOiBwdWJsaWMgVGhyZWFkRW5naW5lU3RhcnRlckJhc2U8VD4KKyBwdWJsaWM6CisgICAg IFRocmVhZEVuZ2luZVN0YXJ0ZXIoVHlwZWRUaHJlYWRFbmdpbmUgKmVuZykKKyAgICAgICAgIDog QmFzZShlbmcpIHsgfQorKworKyAgICBUIHN0YXJ0QmxvY2tpbmcoKQorKyAgICB7CisrICAgICAg ICBUIHQgPSAqdGhpcy0+dGhyZWFkRW5naW5lLT5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICBk ZWxldGUgdGhpcy0+dGhyZWFkRW5naW5lOworKyAgICAgICAgcmV0dXJuIHQ7CisrICAgIH0KKyB9 OworIAorIC8vIEZ1bGwgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gd2hlcmUgVCBpcyB2b2lkLgor QEAgLTIzMiw2ICsyNDksMTIgQEAgY2xhc3MgVGhyZWFkRW5naW5lU3RhcnRlcjx2b2lkPiA6IHB1 YmxpYyBUaHJlYWRFbmdpbmVTdGFydGVyQmFzZTx2b2lkPgorIHB1YmxpYzoKKyAgICAgVGhyZWFk RW5naW5lU3RhcnRlcihUaHJlYWRFbmdpbmU8dm9pZD4gKl90aHJlYWRFbmdpbmUpCisgICAgICAg ICA6IFRocmVhZEVuZ2luZVN0YXJ0ZXJCYXNlPHZvaWQ+KF90aHJlYWRFbmdpbmUpIHt9CisrCisr ICAgIHZvaWQgc3RhcnRCbG9ja2luZygpCisrICAgIHsKKysgICAgICAgIHRoaXMtPnRocmVhZEVu Z2luZS0+c3RhcnRCbG9ja2luZygpOworKyAgICAgICAgZGVsZXRlIHRoaXMtPnRocmVhZEVuZ2lu ZTsKKysgICAgfQorIH07CisgCisgLy8hIFtxdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUtMV0KK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvYW5pbWF0aW9uL3F2YXJpYW50YW5pbWF0aW9u LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9hbmltYXRpb24vcXZhcmlhbnRhbmltYXRpb24uY3Bw CitpbmRleCA5OGIwMmYwMjAyLi5lYWMxNTI0MTA3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9j b3JlbGliL2FuaW1hdGlvbi9xdmFyaWFudGFuaW1hdGlvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMv Y29yZWxpYi9hbmltYXRpb24vcXZhcmlhbnRhbmltYXRpb24uY3BwCitAQCAtMjc2LDcgKzI3Niw5 IEBAIHZvaWQgUVZhcmlhbnRBbmltYXRpb25Qcml2YXRlOjpzZXRDdXJyZW50VmFsdWVGb3JQcm9n cmVzcyhjb25zdCBxcmVhbCBwcm9ncmVzcykKKyAKKyAgICAgY29uc3QgcXJlYWwgc3RhcnRQcm9n cmVzcyA9IGN1cnJlbnRJbnRlcnZhbC5zdGFydC5maXJzdDsKKyAgICAgY29uc3QgcXJlYWwgZW5k UHJvZ3Jlc3MgPSBjdXJyZW50SW50ZXJ2YWwuZW5kLmZpcnN0OworLSAgICBjb25zdCBxcmVhbCBs b2NhbFByb2dyZXNzID0gKHByb2dyZXNzIC0gc3RhcnRQcm9ncmVzcykgLyAoZW5kUHJvZ3Jlc3Mg LSBzdGFydFByb2dyZXNzKTsKKysgICAgY29uc3QgcXJlYWwgbG9jYWxQcm9ncmVzcyA9CisrICAg ICAgICAgICAgcUlzTnVsbChwcm9ncmVzcyAtIHN0YXJ0UHJvZ3Jlc3MpID8gMC4wIC8vIGF2b2lk IDAvMCBiZWxvdworKyAgICAgICAgICAgIC8qIGVsc2UgKi8gICAgICAgICAgICAgICAgICAgICAg ICA6IChwcm9ncmVzcyAtIHN0YXJ0UHJvZ3Jlc3MpIC8gKGVuZFByb2dyZXNzIC0gc3RhcnRQcm9n cmVzcyk7CisgCisgICAgIFFWYXJpYW50IHJldCA9IHEtPmludGVycG9sYXRlZChjdXJyZW50SW50 ZXJ2YWwuc3RhcnQuc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y3VycmVudEludGVydmFsLmVuZC5zZWNvbmQsCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3Jl bGliL2dsb2JhbC9xbmFtZXNwYWNlLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FuYW1l c3BhY2UuaAoraW5kZXggYWQ0MTUwYjMxNy4uYmYxOWIxNjI3YiAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvY29yZWxpYi9nbG9iYWwvcW5hbWVzcGFjZS5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvZ2xvYmFsL3FuYW1lc3BhY2UuaAorQEAgLTE4NjQsNyArMTg2NCw3IEBAIHB1YmxpYzoKKyAg ICAgUVRfUV9FTlVNKFRpbWVyVHlwZSkKKyAgICAgUVRfUV9FTlVNKFNjcm9sbFBoYXNlKQorICAg ICBRVF9RX0VOVU0oTW91c2VFdmVudFNvdXJjZSkKKy0gICAgUVRfUV9GTEFHKE1vdXNlRXZlbnRG bGFnKQorKyAgICBRVF9RX0ZMQUcoTW91c2VFdmVudEZsYWdzKQorICAgICBRVF9RX0VOVU0oQ2hl Y2tzdW1UeXBlKQorICAgICBRVF9RX0VOVU0oSGlnaERwaVNjYWxlRmFjdG9yUm91bmRpbmdQb2xp Y3kpCisgICAgIFFUX1FfRU5VTShUYWJGb2N1c0JlaGF2aW9yKQorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvY29yZWxpYi9nbG9iYWwvcXJhbmRvbS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xv YmFsL3FyYW5kb20uY3BwCitpbmRleCAxMDY3MmMxZjkyLi4yNWY4N2M3ZTZhIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9xcmFuZG9tLmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9jb3JlbGliL2dsb2JhbC9xcmFuZG9tLmNwcAorQEAgLTM4Myw3ICszODMsNiBAQCBzdHJ1Y3Qg UVJhbmRvbUdlbmVyYXRvcjo6U3lzdGVtQW5kR2xvYmFsR2VuZXJhdG9ycworIAorICAgICAgICAg Y29uc3RleHByIFN5c3RlbUFuZEdsb2JhbEdlbmVyYXRvcnMgZyA9IHt9OworICAgICAgICAgUV9V TlVTRUQoZyk7CistICAgICAgICBRX1NUQVRJQ19BU1NFUlQoc3RkOjppc19saXRlcmFsX3R5cGU8 U3lzdGVtQW5kR2xvYmFsR2VuZXJhdG9ycz46OnZhbHVlKTsKKyAjZW5kaWYKKyAgICAgfQorIAor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xYnVmZmVyLmNwcCBiL3F0YmFzZS9z cmMvY29yZWxpYi9pby9xYnVmZmVyLmNwcAoraW5kZXggNTk1ZmNkMjcyNC4uMDMyYzBkZGQ0YiAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xYnVmZmVyLmNwcAorKysrIGIvcXRi YXNlL3NyYy9jb3JlbGliL2lvL3FidWZmZXIuY3BwCitAQCAtNDEsNiArNDEsOCBAQAorICNpbmNs dWRlIDxRdENvcmUvcW1ldGFvYmplY3QuaD4KKyAjaW5jbHVkZSAicHJpdmF0ZS9xaW9kZXZpY2Vf cC5oIgorIAorKyNpbmNsdWRlIDxsaW1pdHM+CisrCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisg LyoqIFFCdWZmZXJQcml2YXRlICoqLworQEAgLTM2Niw3ICszNjgsOSBAQCBxaW50NjQgUUJ1ZmZl cjo6c2l6ZSgpIGNvbnN0CisgYm9vbCBRQnVmZmVyOjpzZWVrKHFpbnQ2NCBwb3MpCisgeworICAg ICBRX0QoUUJ1ZmZlcik7CistICAgIGlmIChwb3MgPiBkLT5idWYtPnNpemUoKSAmJiBpc1dyaXRh YmxlKCkpIHsKKysgICAgY29uc3QgYXV0byBvbGRCdWZTaXplID0gZC0+YnVmLT5zaXplKCk7Cisr ICAgIGNvbnN0ZXhwciBxaW50NjQgTWF4U2Vla1BvcyA9IChzdGQ6Om51bWVyaWNfbGltaXRzPGRl Y2x0eXBlKG9sZEJ1ZlNpemUpPjo6bWF4KSgpOworKyAgICBpZiAocG9zIDw9IE1heFNlZWtQb3Mg JiYgcG9zID4gb2xkQnVmU2l6ZSAmJiBpc1dyaXRhYmxlKCkpIHsKKyAgICAgICAgIGlmIChzZWVr KGQtPmJ1Zi0+c2l6ZSgpKSkgeworICAgICAgICAgICAgIGNvbnN0IHFpbnQ2NCBnYXBTaXplID0g cG9zIC0gZC0+YnVmLT5zaXplKCk7CisgICAgICAgICAgICAgaWYgKHdyaXRlKFFCeXRlQXJyYXko Z2FwU2l6ZSwgMCkpICE9IGdhcFNpemUpIHsKK0BAIC0zNzcsNyArMzgxLDcgQEAgYm9vbCBRQnVm ZmVyOjpzZWVrKHFpbnQ2NCBwb3MpCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg ICAgfQorICAgICB9IGVsc2UgaWYgKHBvcyA+IGQtPmJ1Zi0+c2l6ZSgpIHx8IHBvcyA8IDApIHsK Ky0gICAgICAgIHFXYXJuaW5nKCJRQnVmZmVyOjpzZWVrOiBJbnZhbGlkIHBvczogJWQiLCBpbnQo cG9zKSk7CisrICAgICAgICBxV2FybmluZygiUUJ1ZmZlcjo6c2VlazogSW52YWxpZCBwb3M6ICVs bGQiLCBwb3MpOworICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CisgICAgIHJldHVybiBR SU9EZXZpY2U6OnNlZWsocG9zKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8v cWZpbGVzeXN0ZW1lbmdpbmVfd2luLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5 c3RlbWVuZ2luZV93aW4uY3BwCitpbmRleCA4MWQzYTcxOTg2Li5jODZlZDFmOWIwIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtZW5naW5lX3dpbi5jcHAKKysr KyBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbWVuZ2luZV93aW4uY3BwCitAQCAt NjY0LDE0ICs2NjQsMTQgQEAgUUZpbGVTeXN0ZW1FbnRyeSBRRmlsZVN5c3RlbUVuZ2luZTo6YWJz b2x1dGVOYW1lKGNvbnN0IFFGaWxlU3lzdGVtRW50cnkgJmVudHJ5KQorICAgICByZXR1cm4gUUZp bGVTeXN0ZW1FbnRyeShyZXQsIFFGaWxlU3lzdGVtRW50cnk6OkZyb21JbnRlcm5hbFBhdGgoKSk7 CisgfQorIAorLSNpZiBkZWZpbmVkKFFfQ0NfTUlOR1cpICYmIFdJTlZFUiA8IDB4MDYwMiAvLyAg V2luZG93cyA4IG9ud2FyZHMKKysjaWYgZGVmaW5lZChRX0NDX01JTkdXKSAmJiBXSU5WRVIgPCAw eDA2MDIgJiYgX1dJTjMyX1dJTk5UIDwgX1dJTjMyX1dJTk5UX1dJTjggLy8gIFdpbmRvd3MgOCBv bndhcmRzCisgCisgdHlwZWRlZiBzdHJ1Y3QgX0ZJTEVfSURfSU5GTyB7CisgICAgIFVMT05HTE9O RyBWb2x1bWVTZXJpYWxOdW1iZXI7CisgICAgIEZJTEVfSURfMTI4IEZpbGVJZDsKKyB9IEZJTEVf SURfSU5GTywgKlBGSUxFX0lEX0lORk87CisgCistI2VuZGlmIC8vIGlmIGRlZmluZWQgKFFfQ0Nf TUlOR1cpICYmIFdJTlZFUiA8IDB4MDYwMgorKyNlbmRpZiAvLyBpZiBkZWZpbmVkKFFfQ0NfTUlO R1cpICYmIFdJTlZFUiA8IDB4MDYwMiAmJiBfV0lOMzJfV0lOTlQgPCBfV0lOMzJfV0lOTlRfV0lO OAorIAorIC8vIEZpbGUgSUQgZm9yIFdpbmRvd3MgdXAgdG8gdmVyc2lvbiA3IGFuZCBGQVQzMiBk cml2ZXMKKyBzdGF0aWMgaW5saW5lIFFCeXRlQXJyYXkgZmlsZUlkKEhBTkRMRSBoYW5kbGUpCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtd2F0Y2hlcl9pbm90 aWZ5LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbXdhdGNoZXJfaW5vdGlm eS5jcHAKK2luZGV4IDk0ZDlkMDZiY2IuLjI3ZTBiMTNiMGIgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW13YXRjaGVyX2lub3RpZnkuY3BwCisrKysgYi9xdGJh c2Uvc3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW13YXRjaGVyX2lub3RpZnkuY3BwCitAQCAtMzY2 LDcgKzM2Niw5IEBAIHZvaWQgUUlub3RpZnlGaWxlU3lzdGVtV2F0Y2hlckVuZ2luZTo6cmVhZEZy b21Jbm90aWZ5KCkKKyAgICAgLy8gcURlYnVnKCJRSW5vdGlmeUZpbGVTeXN0ZW1XYXRjaGVyRW5n aW5lOjpyZWFkRnJvbUlub3RpZnkiKTsKKyAKKyAgICAgaW50IGJ1ZmZTaXplID0gMDsKKy0gICAg aW9jdGwoaW5vdGlmeUZkLCBGSU9OUkVBRCwgKGNoYXIgKikgJmJ1ZmZTaXplKTsKKysgICAgaWYg KGlvY3RsKGlub3RpZnlGZCwgRklPTlJFQUQsIChjaGFyICopICZidWZmU2l6ZSkgPT0gLTEgfHwg YnVmZlNpemUgPT0gMCkKKysgICAgICAgIHJldHVybjsKKysKKyAgICAgUVZhckxlbmd0aEFycmF5 PGNoYXIsIDQwOTY+IGJ1ZmZlcihidWZmU2l6ZSk7CisgICAgIGJ1ZmZTaXplID0gcmVhZChpbm90 aWZ5RmQsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZTaXplKTsKKyAgICAgY2hhciAqYXQgPSBidWZmZXIu ZGF0YSgpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xbG9ja2ZpbGVfd2lu LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xbG9ja2ZpbGVfd2luLmNwcAoraW5kZXggMjc3 ZjhkNDIzMC4uMzhlY2VmNTU1MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9x bG9ja2ZpbGVfd2luLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fsb2NrZmlsZV93 aW4uY3BwCitAQCAtNDgsNiArNDgsOCBAQAorICNpbmNsdWRlICJRdENvcmUvcWRlYnVnLmgiCisg I2luY2x1ZGUgIlF0Q29yZS9xdGhyZWFkLmgiCisgCisrI2luY2x1ZGUgInByaXZhdGUvcXN5c3Rl bWxpYnJhcnlfcC5oIgorKworIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIHN0YXRpYyBpbmxpbmUg Ym9vbCBmaWxlRXhpc3RzKGNvbnN0IHdjaGFyX3QgKmZpbGVOYW1lKQorQEAgLTE1MCw3ICsxNTIs NyBAQCBRU3RyaW5nIFFMb2NrRmlsZVByaXZhdGU6OnByb2Nlc3NOYW1lQnlQaWQocWludDY0IHBp ZCkKKyAjaWYgIWRlZmluZWQoUV9PU19XSU5SVCkKKyAgICAgdHlwZWRlZiBEV09SRCAoV0lOQVBJ ICpHZXRNb2R1bGVGaWxlTmFtZUV4RnVuYykoSEFORExFLCBITU9EVUxFLCBMUFRTVFIsIERXT1JE KTsKKyAKKy0gICAgSE1PRFVMRSBoUHNhcGkgPSBMb2FkTGlicmFyeUEoInBzYXBpIik7CisrICAg IEhNT0RVTEUgaFBzYXBpID0gUVN5c3RlbUxpYnJhcnk6OmxvYWQoTCJwc2FwaSIpOworICAgICBp ZiAoIWhQc2FwaSkKKyAgICAgICAgIHJldHVybiBRU3RyaW5nKCk7CisgICAgIEdldE1vZHVsZUZp bGVOYW1lRXhGdW5jIHFHZXRNb2R1bGVGaWxlTmFtZUV4ID0gcmVpbnRlcnByZXRfY2FzdDxHZXRN b2R1bGVGaWxlTmFtZUV4RnVuYz4oCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2lv L3Fwcm9jZXNzX3VuaXguY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3Fwcm9jZXNzX3VuaXgu Y3BwCitpbmRleCA1MDM5MGU1N2Y1Li4xNWM4ZjMwNzQ1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9jb3JlbGliL2lvL3Fwcm9jZXNzX3VuaXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIv aW8vcXByb2Nlc3NfdW5peC5jcHAKK0BAIC0xLDcgKzEsNyBAQAorIC8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCisgKioKKyAqKiBDb3B5cmlnaHQgKEMpIDIwMTYgVGhlIFF0IENvbXBhbnkgTHRkLgorLSoq IENvcHlyaWdodCAoQykgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4KKysqKiBDb3B5cmlnaHQgKEMp IDIwMjIgSW50ZWwgQ29ycG9yYXRpb24uCisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8v bGljZW5zaW5nLworICoqCisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0Q29yZSBtb2R1 bGUgb2YgdGhlIFF0IFRvb2xraXQuCitAQCAtNDIyLDE0ICs0MjIsMTUgQEAgdm9pZCBRUHJvY2Vz c1ByaXZhdGU6OnN0YXJ0UHJvY2VzcygpCisgICAgIC8vIEFkZCB0aGUgcHJvZ3JhbSBuYW1lIHRv IHRoZSBhcmd1bWVudCBsaXN0LgorICAgICBhcmd2WzBdID0gbnVsbHB0cjsKKyAgICAgaWYgKCFw cm9ncmFtLmNvbnRhaW5zKFFMYXRpbjFDaGFyKCcvJykpKSB7CisrICAgICAgICAvLyBmaW5kRXhl Y3V0YWJsZSgpIHJldHVybnMgaXRzIGFyZ3VtZW50IGlmIGl0J3MgYW4gYWJzb2x1dGUgcGF0aCwK KysgICAgICAgIC8vIG90aGVyd2lzZSBpdCBzZWFyY2hlcyAkUEFUSDsgcmV0dXJucyBlbXB0eSBp ZiBub3QgZm91bmQgKHdlIGhhbmRsZQorKyAgICAgICAgLy8gdGhhdCBjYXNlIG11Y2ggbGF0ZXIp CisgICAgICAgICBjb25zdCBRU3RyaW5nICZleGVGaWxlUGF0aCA9IFFTdGFuZGFyZFBhdGhzOjpm aW5kRXhlY3V0YWJsZShwcm9ncmFtKTsKKy0gICAgICAgIGlmICghZXhlRmlsZVBhdGguaXNFbXB0 eSgpKSB7CistICAgICAgICAgICAgY29uc3QgUUJ5dGVBcnJheSAmdG1wID0gUUZpbGU6OmVuY29k ZU5hbWUoZXhlRmlsZVBhdGgpOworLSAgICAgICAgICAgIGFyZ3ZbMF0gPSA6OnN0cmR1cCh0bXAu Y29uc3REYXRhKCkpOworLSAgICAgICAgfQorLSAgICB9CistICAgIGlmICghYXJndlswXSkKKysg ICAgICAgIGNvbnN0IFFCeXRlQXJyYXkgJnRtcCA9IFFGaWxlOjplbmNvZGVOYW1lKGV4ZUZpbGVQ YXRoKTsKKysgICAgICAgIGFyZ3ZbMF0gPSA6OnN0cmR1cCh0bXAuY29uc3REYXRhKCkpOworKyAg ICB9IGVsc2UgeworICAgICAgICAgYXJndlswXSA9IDo6c3RyZHVwKGVuY29kZWRQcm9ncmFtTmFt ZS5jb25zdERhdGEoKSk7CisrICAgIH0KKyAKKyAgICAgLy8gQWRkIGV2ZXJ5IGFyZ3VtZW50IHRv IHRoZSBsaXN0CisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJndW1lbnRzLmNvdW50KCk7ICsr aSkKK0BAIC05ODMsMTUgKzk4NCwxNiBAQCBib29sIFFQcm9jZXNzUHJpdmF0ZTo6c3RhcnREZXRh Y2hlZChxaW50NjQgKnBpZCkKKyAgICAgICAgICAgICAgICAgZW52cCA9IF9xX2R1cEVudmlyb25t ZW50KGVudmlyb25tZW50LmQuY29uc3REYXRhKCktPnZhcnMsICZlbnZjKTsKKyAgICAgICAgICAg ICB9CisgCistICAgICAgICAgICAgUUJ5dGVBcnJheSB0bXA7CisgICAgICAgICAgICAgaWYgKCFw cm9ncmFtLmNvbnRhaW5zKFFMYXRpbjFDaGFyKCcvJykpKSB7CisrICAgICAgICAgICAgICAgIC8v IGZpbmRFeGVjdXRhYmxlKCkgcmV0dXJucyBpdHMgYXJndW1lbnQgaWYgaXQncyBhbiBhYnNvbHV0 ZSBwYXRoLAorKyAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UgaXQgc2VhcmNoZXMgJFBBVEg7 IHJldHVybnMgZW1wdHkgaWYgbm90IGZvdW5kICh3ZSBoYW5kbGUKKysgICAgICAgICAgICAgICAg Ly8gdGhhdCBjYXNlIG11Y2ggbGF0ZXIpCisgICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcg JmV4ZUZpbGVQYXRoID0gUVN0YW5kYXJkUGF0aHM6OmZpbmRFeGVjdXRhYmxlKHByb2dyYW0pOwor LSAgICAgICAgICAgICAgICBpZiAoIWV4ZUZpbGVQYXRoLmlzRW1wdHkoKSkKKy0gICAgICAgICAg ICAgICAgICAgIHRtcCA9IFFGaWxlOjplbmNvZGVOYW1lKGV4ZUZpbGVQYXRoKTsKKysgICAgICAg ICAgICAgICAgY29uc3QgUUJ5dGVBcnJheSAmdG1wID0gUUZpbGU6OmVuY29kZU5hbWUoZXhlRmls ZVBhdGgpOworKyAgICAgICAgICAgICAgICBhcmd2WzBdID0gOjpzdHJkdXAodG1wLmNvbnN0RGF0 YSgpKTsKKysgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICBhcmd2WzBdID0g OjpzdHJkdXAoUUZpbGU6OmVuY29kZU5hbWUocHJvZ3JhbSkpOworICAgICAgICAgICAgIH0KKy0g ICAgICAgICAgICBpZiAodG1wLmlzRW1wdHkoKSkKKy0gICAgICAgICAgICAgICAgdG1wID0gUUZp bGU6OmVuY29kZU5hbWUocHJvZ3JhbSk7CistICAgICAgICAgICAgYXJndlswXSA9IHRtcC5kYXRh KCk7CisgCisgICAgICAgICAgICAgaWYgKGVudnApCisgICAgICAgICAgICAgICAgIHF0X3NhZmVf ZXhlY3ZlKGFyZ3ZbMF0sIGFyZ3YsIGVudnApOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29y ZWxpYi9pdGVtbW9kZWxzL3FhYnN0cmFjdGl0ZW1tb2RlbC5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvaXRlbW1vZGVscy9xYWJzdHJhY3RpdGVtbW9kZWwuY3BwCitpbmRleCAzYTc5YzUwMmFmLi45 OTdhNjM0ZTc2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcWFi c3RyYWN0aXRlbW1vZGVsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMv cWFic3RyYWN0aXRlbW1vZGVsLmNwcAorQEAgLTMxOTYsOSArMzE5Niw4IEBAIGJvb2wgUUFic3Ry YWN0SXRlbU1vZGVsOjpiZWdpbk1vdmVDb2x1bW5zKGNvbnN0IFFNb2RlbEluZGV4ICZzb3VyY2VQ YXJlbnQsIGludCBzCisgICAgIGRlc3RpbmF0aW9uQ2hhbmdlLm5lZWRzQWRqdXN0ID0gZGVzdGlu YXRpb25QYXJlbnQuaXNWYWxpZCgpICYmIGRlc3RpbmF0aW9uUGFyZW50LnJvdygpID49IHNvdXJj ZUxhc3QgJiYgZGVzdGluYXRpb25QYXJlbnQucGFyZW50KCkgPT0gc291cmNlUGFyZW50OworICAg ICBkLT5jaGFuZ2VzLnB1c2goZGVzdGluYXRpb25DaGFuZ2UpOworIAorLSAgICBkLT5pdGVtc0Fi b3V0VG9CZU1vdmVkKHNvdXJjZVBhcmVudCwgc291cmNlRmlyc3QsIHNvdXJjZUxhc3QsIGRlc3Rp bmF0aW9uUGFyZW50LCBkZXN0aW5hdGlvbkNoaWxkLCBRdDo6SG9yaXpvbnRhbCk7CistCisgICAg IGVtaXQgY29sdW1uc0Fib3V0VG9CZU1vdmVkKHNvdXJjZVBhcmVudCwgc291cmNlRmlyc3QsIHNv dXJjZUxhc3QsIGRlc3RpbmF0aW9uUGFyZW50LCBkZXN0aW5hdGlvbkNoaWxkLCBRUHJpdmF0ZVNp Z25hbCgpKTsKKysgICAgZC0+aXRlbXNBYm91dFRvQmVNb3ZlZChzb3VyY2VQYXJlbnQsIHNvdXJj ZUZpcnN0LCBzb3VyY2VMYXN0LCBkZXN0aW5hdGlvblBhcmVudCwgZGVzdGluYXRpb25DaGlsZCwg UXQ6Okhvcml6b250YWwpOworICAgICByZXR1cm4gdHJ1ZTsKKyB9CisgCitAQCAtMzIzMSw3ICsz MjMwLDYgQEAgdm9pZCBRQWJzdHJhY3RJdGVtTW9kZWw6OmVuZE1vdmVDb2x1bW5zKCkKKyAgICAg ICBhZGp1c3RlZFNvdXJjZSA9IGNyZWF0ZUluZGV4KGFkanVzdGVkU291cmNlLnJvdygpLCBhZGp1 c3RlZFNvdXJjZS5jb2x1bW4oKSArIG51bU1vdmVkLCBhZGp1c3RlZFNvdXJjZS5pbnRlcm5hbFBv aW50ZXIoKSk7CisgCisgICAgIGQtPml0ZW1zTW92ZWQoYWRqdXN0ZWRTb3VyY2UsIHJlbW92ZUNo YW5nZS5maXJzdCwgcmVtb3ZlQ2hhbmdlLmxhc3QsIGFkanVzdGVkRGVzdGluYXRpb24sIGluc2Vy dENoYW5nZS5maXJzdCwgUXQ6Okhvcml6b250YWwpOworLQorICAgICBlbWl0IGNvbHVtbnNNb3Zl ZChhZGp1c3RlZFNvdXJjZSwgcmVtb3ZlQ2hhbmdlLmZpcnN0LCByZW1vdmVDaGFuZ2UubGFzdCwg YWRqdXN0ZWREZXN0aW5hdGlvbiwgaW5zZXJ0Q2hhbmdlLmZpcnN0LCBRUHJpdmF0ZVNpZ25hbCgp KTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcXNv cnRmaWx0ZXJwcm94eW1vZGVsLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9pdGVtbW9kZWxzL3Fz b3J0ZmlsdGVycHJveHltb2RlbC5jcHAKK2luZGV4IGRjNjM3OWQ5ZmIuLmM1ZTI4N2VlODQgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xc29ydGZpbHRlcnByb3h5 bW9kZWwuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xc29ydGZpbHRl cnByb3h5bW9kZWwuY3BwCitAQCAtOTM5LDggKzkzOSw5IEBAIHZvaWQgUVNvcnRGaWx0ZXJQcm94 eU1vZGVsUHJpdmF0ZTo6aW5zZXJ0X3NvdXJjZV9pdGVtcygKKyAgICAgICAgICAgICAgICAgcS0+ YmVnaW5JbnNlcnRDb2x1bW5zKHByb3h5X3BhcmVudCwgcHJveHlfc3RhcnQsIHByb3h5X2VuZCk7 CisgICAgICAgICB9CisgCistICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNvdXJjZV9pdGVt cy5zaXplKCk7ICsraSkKKy0gICAgICAgICAgICBwcm94eV90b19zb3VyY2UuaW5zZXJ0KHByb3h5 X3N0YXJ0ICsgaSwgc291cmNlX2l0ZW1zLmF0KGkpKTsKKysgICAgICAgIC8vIFRPRE86IHVzZSB0 aGUgcmFuZ2UgUUxpc3Q6Omluc2VydCgpIG92ZXJsb2FkIG9uY2UgaXQgaXMgaW1wbGVtZW50ZWQg KFFUQlVHLTU4NjMzKS4KKysgICAgICAgIHByb3h5X3RvX3NvdXJjZS5pbnNlcnQocHJveHlfc3Rh cnQsIHNvdXJjZV9pdGVtcy5zaXplKCksIDApOworKyAgICAgICAgc3RkOjpjb3B5KHNvdXJjZV9p dGVtcy5jYmVnaW4oKSwgc291cmNlX2l0ZW1zLmNlbmQoKSwgcHJveHlfdG9fc291cmNlLmJlZ2lu KCkgKyBwcm94eV9zdGFydCk7CisgCisgICAgICAgICBidWlsZF9zb3VyY2VfdG9fcHJveHlfbWFw cGluZyhwcm94eV90b19zb3VyY2UsIHNvdXJjZV90b19wcm94eSk7CisgCitAQCAtMzEyMyw4ICsz MTI0LDkgQEAgYm9vbCBRU29ydEZpbHRlclByb3h5TW9kZWw6OmZpbHRlckFjY2VwdHNSb3coaW50 IHNvdXJjZV9yb3csIGNvbnN0IFFNb2RlbEluZGV4ICYKKyAKKyAgICAgaWYgKGQtPmZpbHRlcl9k YXRhLmlzRW1wdHkoKSkKKyAgICAgICAgIHJldHVybiB0cnVlOworKworKyAgICBpbnQgY29sdW1u X2NvdW50ID0gZC0+bW9kZWwtPmNvbHVtbkNvdW50KHNvdXJjZV9wYXJlbnQpOworICAgICBpZiAo ZC0+ZmlsdGVyX2NvbHVtbiA9PSAtMSkgeworLSAgICAgICAgaW50IGNvbHVtbl9jb3VudCA9IGQt Pm1vZGVsLT5jb2x1bW5Db3VudChzb3VyY2VfcGFyZW50KTsKKyAgICAgICAgIGZvciAoaW50IGNv bHVtbiA9IDA7IGNvbHVtbiA8IGNvbHVtbl9jb3VudDsgKytjb2x1bW4pIHsKKyAgICAgICAgICAg ICBRTW9kZWxJbmRleCBzb3VyY2VfaW5kZXggPSBkLT5tb2RlbC0+aW5kZXgoc291cmNlX3Jvdywg Y29sdW1uLCBzb3VyY2VfcGFyZW50KTsKKyAgICAgICAgICAgICBRU3RyaW5nIGtleSA9IGQtPm1v ZGVsLT5kYXRhKHNvdXJjZV9pbmRleCwgZC0+ZmlsdGVyX3JvbGUpLnRvU3RyaW5nKCk7CitAQCAt MzEzMyw5ICszMTM1LDEwIEBAIGJvb2wgUVNvcnRGaWx0ZXJQcm94eU1vZGVsOjpmaWx0ZXJBY2Nl cHRzUm93KGludCBzb3VyY2Vfcm93LCBjb25zdCBRTW9kZWxJbmRleCAmCisgICAgICAgICB9Cisg ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0KKy0gICAgUU1vZGVsSW5kZXggc291cmNlX2lu ZGV4ID0gZC0+bW9kZWwtPmluZGV4KHNvdXJjZV9yb3csIGQtPmZpbHRlcl9jb2x1bW4sIHNvdXJj ZV9wYXJlbnQpOworLSAgICBpZiAoIXNvdXJjZV9pbmRleC5pc1ZhbGlkKCkpIC8vIHRoZSBjb2x1 bW4gbWF5IG5vdCBleGlzdAorKworKyAgICBpZiAoZC0+ZmlsdGVyX2NvbHVtbiA+PSBjb2x1bW5f Y291bnQpIC8vIHRoZSBjb2x1bW4gbWF5IG5vdCBleGlzdAorICAgICAgICAgcmV0dXJuIHRydWU7 CisrICAgIFFNb2RlbEluZGV4IHNvdXJjZV9pbmRleCA9IGQtPm1vZGVsLT5pbmRleChzb3VyY2Vf cm93LCBkLT5maWx0ZXJfY29sdW1uLCBzb3VyY2VfcGFyZW50KTsKKyAgICAgUVN0cmluZyBrZXkg PSBkLT5tb2RlbC0+ZGF0YShzb3VyY2VfaW5kZXgsIGQtPmZpbHRlcl9yb2xlKS50b1N0cmluZygp OworICAgICByZXR1cm4gZC0+ZmlsdGVyX2RhdGEuaGFzTWF0Y2goa2V5KTsKKyB9CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xY29yZWFwcGxpY2F0aW9uLmNwcCBiL3F0 YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcWNvcmVhcHBsaWNhdGlvbi5jcHAKK2luZGV4IGNhMjg2 NGRmODMuLjEzMmIyZWFlNTIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVs L3Fjb3JlYXBwbGljYXRpb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3Fj b3JlYXBwbGljYXRpb24uY3BwCitAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgc3RhdGljIGJvb2wgZG9O b3RpZnkoUU9iamVjdCAqcmVjZWl2ZXIsIFFFdmVudCAqZXZlbnQpCisgYm9vbCBRQ29yZUFwcGxp Y2F0aW9uUHJpdmF0ZTo6c2VuZFRocm91Z2hBcHBsaWNhdGlvbkV2ZW50RmlsdGVycyhRT2JqZWN0 ICpyZWNlaXZlciwgUUV2ZW50ICpldmVudCkKKyB7CisgICAgIC8vIFdlIGNhbid0IGFjY2VzcyB0 aGUgYXBwbGljYXRpb24gZXZlbnQgZmlsdGVycyBvdXRzaWRlIG9mIHRoZSBtYWluIHRocmVhZCAo cmFjZSBjb25kaXRpb25zKQorLSAgICBRX0FTU0VSVChyZWNlaXZlci0+ZF9mdW5jKCktPnRocmVh ZERhdGEubG9hZFJlbGF4ZWQoKS0+dGhyZWFkLmxvYWRBY3F1aXJlKCkgPT0gbWFpblRocmVhZCgp KTsKKysgICAgUV9BU1NFUlQocmVjZWl2ZXItPmRfZnVuYygpLT50aHJlYWREYXRhLmxvYWRBY3F1 aXJlKCktPnRocmVhZC5sb2FkUmVsYXhlZCgpID09IG1haW5UaHJlYWQoKSk7CisgCisgICAgIGlm IChleHRyYURhdGEpIHsKKyAgICAgICAgIC8vIGFwcGxpY2F0aW9uIGV2ZW50IGZpbHRlcnMgYXJl IG9ubHkgY2FsbGVkIGZvciBvYmplY3RzIGluIHRoZSBHVUkgdGhyZWFkCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxp Yi9rZXJuZWwvcW9iamVjdC5jcHAKK2luZGV4IDFlYjc5MTM4ZDkuLjM2Y2Q3ODBlZTEgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3QuY3BwCisrKysgYi9xdGJh c2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3QuY3BwCitAQCAtMTAxMCw3ICsxMDEwLDcgQEAg UU9iamVjdDo6flFPYmplY3QoKQorICAgICAgICAgZW1pdCBkZXN0cm95ZWQodGhpcyk7CisgICAg IH0KKyAKKy0gICAgaWYgKGQtPmRlY2xhcmF0aXZlRGF0YSkgeworKyAgICBpZiAoIWQtPmlzRGVs ZXRpbmdDaGlsZHJlbiAmJiBkLT5kZWNsYXJhdGl2ZURhdGEpIHsKKyAgICAgICAgIGlmIChzdGF0 aWNfY2FzdDxRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGFJbXBsKj4oZC0+ZGVjbGFyYXRpdmVEYXRh KS0+b3duZWRCeVFtbDEpIHsKKyAgICAgICAgICAgICBpZiAoUUFic3RyYWN0RGVjbGFyYXRpdmVE YXRhOjpkZXN0cm95ZWRfcW1sMSkKKyAgICAgICAgICAgICAgICAgUUFic3RyYWN0RGVjbGFyYXRp dmVEYXRhOjpkZXN0cm95ZWRfcW1sMShkLT5kZWNsYXJhdGl2ZURhdGEsIHRoaXMpOworQEAgLTE1 ODAsNyArMTU4MCw3IEBAIHZvaWQgUU9iamVjdDo6bW92ZVRvVGhyZWFkKFFUaHJlYWQgKnRhcmdl dFRocmVhZCkKKyAKKyAgICAgUVRocmVhZERhdGEgKmN1cnJlbnREYXRhID0gUVRocmVhZERhdGE6 OmN1cnJlbnQoKTsKKyAgICAgUVRocmVhZERhdGEgKnRhcmdldERhdGEgPSB0YXJnZXRUaHJlYWQg PyBRVGhyZWFkRGF0YTo6Z2V0Mih0YXJnZXRUaHJlYWQpIDogbnVsbHB0cjsKKy0gICAgUVRocmVh ZERhdGEgKnRoaXNUaHJlYWREYXRhID0gZC0+dGhyZWFkRGF0YS5sb2FkUmVsYXhlZCgpOworKyAg ICBRVGhyZWFkRGF0YSAqdGhpc1RocmVhZERhdGEgPSBkLT50aHJlYWREYXRhLmxvYWRBY3F1aXJl KCk7CisgICAgIGlmICghdGhpc1RocmVhZERhdGEtPnRocmVhZC5sb2FkQWNxdWlyZSgpICYmIGN1 cnJlbnREYXRhID09IHRhcmdldERhdGEpIHsKKyAgICAgICAgIC8vIG9uZSBleGNlcHRpb24gdG8g dGhlIHJ1bGU6IHdlIGFsbG93IG1vdmluZyBvYmplY3RzIHdpdGggbm8gdGhyZWFkIGFmZmluaXR5 IHRvIHRoZSBjdXJyZW50IHRocmVhZAorICAgICAgICAgY3VycmVudERhdGEgPSBkLT50aHJlYWRE YXRhOworQEAgLTI2MjAsNyArMjYyMCw3IEBAIGludCBRT2JqZWN0OjpyZWNlaXZlcnMoY29uc3Qg Y2hhciAqc2lnbmFsKSBjb25zdAorICAgICAgICAgaWYgKCFkLT5pc1NpZ25hbENvbm5lY3RlZChz aWduYWxfaW5kZXgpKQorICAgICAgICAgICAgIHJldHVybiByZWNlaXZlcnM7CisgCistICAgICAg ICBpZiAoZC0+ZGVjbGFyYXRpdmVEYXRhICYmIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6cmVj ZWl2ZXJzKSB7CisrICAgICAgICBpZiAoIWQtPmlzRGVsZXRpbmdDaGlsZHJlbiAmJiBkLT5kZWNs YXJhdGl2ZURhdGEgJiYgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpyZWNlaXZlcnMpIHsKKyAg ICAgICAgICAgICByZWNlaXZlcnMgKz0gUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpyZWNlaXZl cnMoZC0+ZGVjbGFyYXRpdmVEYXRhLCB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWxfaW5kZXgpOworICAgICAg ICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9iamVjdF9wLmgg Yi9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3RfcC5oCitpbmRleCAwYjgyN2E1MmNh Li4xM2ZmYjg4OTk5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2Jq ZWN0X3AuaAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0X3AuaAorQEAg LTQ0NCw3ICs0NDQsNyBAQCBpbmxpbmUgdm9pZCBRT2JqZWN0UHJpdmF0ZTo6Y2hlY2tGb3JJbmNv bXBhdGlibGVMaWJyYXJ5VmVyc2lvbihpbnQgdmVyc2lvbikgY29ucworIAorIGlubGluZSBib29s IFFPYmplY3RQcml2YXRlOjppc0RlY2xhcmF0aXZlU2lnbmFsQ29ubmVjdGVkKHVpbnQgc2lnbmFs X2luZGV4KSBjb25zdAorIHsKKy0gICAgcmV0dXJuIGRlY2xhcmF0aXZlRGF0YSAmJiBRQWJzdHJh Y3REZWNsYXJhdGl2ZURhdGE6OmlzU2lnbmFsQ29ubmVjdGVkCisrICAgIHJldHVybiAhaXNEZWxl dGluZ0NoaWxkcmVuICYmIGRlY2xhcmF0aXZlRGF0YSAmJiBRQWJzdHJhY3REZWNsYXJhdGl2ZURh dGE6OmlzU2lnbmFsQ29ubmVjdGVkCisgICAgICAgICAgICAgJiYgUUFic3RyYWN0RGVjbGFyYXRp dmVEYXRhOjppc1NpZ25hbENvbm5lY3RlZChkZWNsYXJhdGl2ZURhdGEsIHFfZnVuYygpLCBzaWdu YWxfaW5kZXgpOworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVs L3F0cmFuc2xhdG9yLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcXRyYW5zbGF0b3Iu Y3BwCitpbmRleCAyODEyZmZiN2VhLi5iYzAxNzdjNWVjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9jb3JlbGliL2tlcm5lbC9xdHJhbnNsYXRvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxp Yi9rZXJuZWwvcXRyYW5zbGF0b3IuY3BwCitAQCAtOTAyLDcgKzkwMiw3IEBAIHN0YXRpYyBRU3Ry aW5nIGdldE1lc3NhZ2UoY29uc3QgdWNoYXIgKm0sIGNvbnN0IHVjaGFyICplbmQsIGNvbnN0IGNo YXIgKmNvbnRleHQsCisgICAgICAgICAgICAgZ290byBlbmQ7CisgICAgICAgICBjYXNlIFRhZ19U cmFuc2xhdGlvbjogeworICAgICAgICAgICAgIGludCBsZW4gPSByZWFkMzIobSk7CistICAgICAg ICAgICAgaWYgKGxlbiAlIDEpCisrICAgICAgICAgICAgaWYgKGxlbiAmIDEpCisgICAgICAgICAg ICAgICAgIHJldHVybiBRU3RyaW5nKCk7CisgICAgICAgICAgICAgbSArPSA0OworICAgICAgICAg ICAgIGlmICghbnVtZXJ1cy0tKSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL21p bWV0eXBlcy9xbWltZWRhdGFiYXNlLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMv cW1pbWVkYXRhYmFzZS5jcHAKK2luZGV4IDlkZTIyY2VmMzMuLmZmODY4YTMyNjggMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UuY3BwCisrKysg Yi9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UuY3BwCitAQCAtMzg5 LDIwICszODksMjMgQEAgUU1pbWVUeXBlIFFNaW1lRGF0YWJhc2VQcml2YXRlOjptaW1lVHlwZUZv ckZpbGVOYW1lQW5kRGF0YShjb25zdCBRU3RyaW5nICZmaWxlTmEKKyAgICAgICAgIC8vIERpc2Ft YmlndWF0ZSBjb25mbGljdGluZyBleHRlbnNpb25zIChpZiBtYWdpYyBtYXRjaGluZyBmb3VuZCBz b21ldGhpbmcpCisgICAgICAgICBpZiAoY2FuZGlkYXRlQnlEYXRhLmlzVmFsaWQoKSAmJiBtYWdp Y0FjY3VyYWN5ID4gMCkgeworICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgc25pZmZlZE1pbWUg PSBjYW5kaWRhdGVCeURhdGEubmFtZSgpOworLSAgICAgICAgICAgIC8vIElmIHRoZSBzbmlmZmVk TWltZSBtYXRjaGVzIGEgZ2xvYiBtYXRjaCwgdXNlIGl0CisrICAgICAgICAgICAgLy8gSWYgdGhl IHNuaWZmZWRNaW1lIG1hdGNoZXMgYSBoaWdoZXN0LXdlaWdodCBnbG9iIG1hdGNoLCB1c2UgaXQK KyAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlc0J5TmFtZS5tX21hdGNoaW5nTWltZVR5cGVzLmNv bnRhaW5zKHNuaWZmZWRNaW1lKSkgeworICAgICAgICAgICAgICAgICAqYWNjdXJhY3lQdHIgPSAx MDA7CisgICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGVCeURhdGE7CisgICAgICAgICAg ICAgfQorLSAgICAgICAgICAgIGZvciAoY29uc3QgUVN0cmluZyAmbSA6IHFBc0NvbnN0KGNhbmRp ZGF0ZXNCeU5hbWUubV9tYXRjaGluZ01pbWVUeXBlcykpIHsKKysgICAgICAgICAgICBmb3IgKGNv bnN0IFFTdHJpbmcgJm0gOiBxQXNDb25zdChjYW5kaWRhdGVzQnlOYW1lLm1fYWxsTWF0Y2hpbmdN aW1lVHlwZXMpKSB7CisgICAgICAgICAgICAgICAgIGlmIChpbmhlcml0cyhtLCBzbmlmZmVkTWlt ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgbWFnaWMgKyBwYXR0ZXJuIHBv aW50aW5nIHRvIHRoaXMsIHNvIGl0J3MgYSBwcmV0dHkgZ29vZCBtYXRjaAorICAgICAgICAgICAg ICAgICAgICAgKmFjY3VyYWN5UHRyID0gMTAwOworICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IG1pbWVUeXBlRm9yTmFtZShtKTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0K Ky0gICAgICAgICAgICAqYWNjdXJhY3lQdHIgPSBtYWdpY0FjY3VyYWN5OworLSAgICAgICAgICAg IHJldHVybiBjYW5kaWRhdGVCeURhdGE7CisrICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZXNCeU5h bWUubV9hbGxNYXRjaGluZ01pbWVUeXBlcy5pc0VtcHR5KCkpIHsKKysgICAgICAgICAgICAgICAg Ly8gTm8gZ2xvYiwgdXNlIG1hZ2ljCisrICAgICAgICAgICAgICAgICphY2N1cmFjeVB0ciA9IG1h Z2ljQWNjdXJhY3k7CisrICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGVCeURhdGE7Cisr ICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZWdsb2JwYXR0ZXJuLmNwcCBiL3F0YmFzZS9zcmMv Y29yZWxpYi9taW1ldHlwZXMvcW1pbWVnbG9icGF0dGVybi5jcHAKK2luZGV4IGE4MTExMmQyMjcu LmZhOGY0YzU0NWQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3Ft aW1lZ2xvYnBhdHRlcm4uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3Ft aW1lZ2xvYnBhdHRlcm4uY3BwCitAQCAtODMsNyArODMsMTAgQEAgdm9pZCBRTWltZUdsb2JNYXRj aFJlc3VsdDo6YWRkTWF0Y2goY29uc3QgUVN0cmluZyAmbWltZVR5cGUsIGludCB3ZWlnaHQsIGNv bnN0IFEKKyAgICAgfQorICAgICBpZiAoIW1fbWF0Y2hpbmdNaW1lVHlwZXMuY29udGFpbnMobWlt ZVR5cGUpKSB7CisgICAgICAgICBtX21hdGNoaW5nTWltZVR5cGVzLmFwcGVuZChtaW1lVHlwZSk7 CistICAgICAgICBtX2FsbE1hdGNoaW5nTWltZVR5cGVzLmFwcGVuZChtaW1lVHlwZSk7CisrICAg ICAgICBpZiAocmVwbGFjZSkKKysgICAgICAgICAgICBtX2FsbE1hdGNoaW5nTWltZVR5cGVzLnBy ZXBlbmQobWltZVR5cGUpOyAvLyBoaWdoZXN0LXdlaWdodCBmaXJzdAorKyAgICAgICAgZWxzZQor KyAgICAgICAgICAgIG1fYWxsTWF0Y2hpbmdNaW1lVHlwZXMuYXBwZW5kKG1pbWVUeXBlKTsKKyAg ICAgICAgIG1fa25vd25TdWZmaXhMZW5ndGggPSBrbm93blN1ZmZpeExlbmd0aDsKKyAgICAgfQor IH0KK0BAIC05NCw3ICs5Nyw3IEBAIFFNaW1lR2xvYlBhdHRlcm46OlBhdHRlcm5UeXBlIFFNaW1l R2xvYlBhdHRlcm46OmRldGVjdFBhdHRlcm5UeXBlKGNvbnN0IFFTdHJpbmcKKyAgICAgaWYgKCFw YXR0ZXJuTGVuZ3RoKQorICAgICAgICAgcmV0dXJuIE90aGVyUGF0dGVybjsKKyAKKy0gICAgY29u c3QgYm9vbCBzdGFyQ291bnQgPSBwYXR0ZXJuLmNvdW50KFFMYXRpbjFDaGFyKCcqJykpID09IDE7 CisrICAgIGNvbnN0IGludCBzdGFyQ291bnQgPSBwYXR0ZXJuLmNvdW50KFFMYXRpbjFDaGFyKCcq JykpOworICAgICBjb25zdCBib29sIGhhc1NxdWFyZUJyYWNrZXQgPSBwYXR0ZXJuLmluZGV4T2Yo UUxhdGluMUNoYXIoJ1snKSkgIT0gLTE7CisgICAgIGNvbnN0IGJvb2wgaGFzUXVlc3Rpb25NYXJr ID0gcGF0dGVybi5pbmRleE9mKFFMYXRpbjFDaGFyKCc/JykpICE9IC0xOworIAorQEAgLTEwNiwx MCArMTA5LDEwIEBAIFFNaW1lR2xvYlBhdHRlcm46OlBhdHRlcm5UeXBlIFFNaW1lR2xvYlBhdHRl cm46OmRldGVjdFBhdHRlcm5UeXBlKGNvbnN0IFFTdHJpbmcKKyAgICAgICAgICAgICAvLyBQYXR0 ZXJucyBsaWtlICJSRUFETUUqIiAod2VsbCB0aGlzIGlzIGN1cnJlbnRseSB0aGUgb25seSBvbmUg bGlrZSB0aGF0Li4uKQorICAgICAgICAgICAgIGlmIChwYXR0ZXJuLmF0KHBhdHRlcm5MZW5ndGgg LSAxKSA9PSBRTGF0aW4xQ2hhcignKicpKQorICAgICAgICAgICAgICAgICByZXR1cm4gUHJlZml4 UGF0dGVybjsKKy0gICAgICAgIH0KKy0gICAgICAgIC8vIE5hbWVzIHdpdGhvdXQgYW55IHdpbGRj YXJkcyBsaWtlICJSRUFETUUiCistICAgICAgICBpZiAoc3RhckNvdW50ID09IDApCisrICAgICAg ICB9IGVsc2UgaWYgKHN0YXJDb3VudCA9PSAwKSB7CisrICAgICAgICAgICAgLy8gTmFtZXMgd2l0 aG91dCBhbnkgd2lsZGNhcmRzIGxpa2UgIlJFQURNRSIKKyAgICAgICAgICAgICByZXR1cm4gTGl0 ZXJhbFBhdHRlcm47CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgaWYgKHBhdHRlcm4gPT0g UUxhdGluMVN0cmluZygiWzAtOV1bMC05XVswLTldLnZkciIpKQorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVwcm92aWRlci5jcHAgYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvbWltZXR5cGVzL3FtaW1lcHJvdmlkZXIuY3BwCitpbmRleCAyNThkZGRmOGNiLi40NjQy ZDBmMmQwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZXBy b3ZpZGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZXByb3Zp ZGVyLmNwcAorQEAgLTI0NCwxNSArMjQ0LDE4IEBAIHZvaWQgUU1pbWVCaW5hcnlQcm92aWRlcjo6 YWRkRmlsZU5hbWVNYXRjaGVzKGNvbnN0IFFTdHJpbmcgJmZpbGVOYW1lLCBRTWltZUdsb2JNCisg ICAgIGNvbnN0IFFTdHJpbmcgbG93ZXJGaWxlTmFtZSA9IGZpbGVOYW1lLnRvTG93ZXIoKTsKKyAg ICAgLy8gQ2hlY2sgbGl0ZXJhbHMgKGUuZy4gIk1ha2VmaWxlIikKKyAgICAgbWF0Y2hHbG9iTGlz dChyZXN1bHQsIG1fY2FjaGVGaWxlLCBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKFBvc0xpdGVyYWxM aXN0T2Zmc2V0KSwgZmlsZU5hbWUpOworLSAgICAvLyBDaGVjayBjb21wbGV4IGdsb2JzIChlLmcu ICJjYWxsZ3JpbmQub3V0WzAtOV0qIikKKy0gICAgbWF0Y2hHbG9iTGlzdChyZXN1bHQsIG1fY2Fj aGVGaWxlLCBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKFBvc0dsb2JMaXN0T2Zmc2V0KSwgZmlsZU5h bWUpOworICAgICAvLyBDaGVjayB0aGUgdmVyeSBjb21tb24gKi50eHQgY2FzZXMgd2l0aCB0aGUg c3VmZml4IHRyZWUKKy0gICAgY29uc3QgaW50IHJldmVyc2VTdWZmaXhUcmVlT2Zmc2V0ID0gbV9j YWNoZUZpbGUtPmdldFVpbnQzMihQb3NSZXZlcnNlU3VmZml4VHJlZU9mZnNldCk7CistICAgIGNv bnN0IGludCBudW1Sb290cyA9IG1fY2FjaGVGaWxlLT5nZXRVaW50MzIocmV2ZXJzZVN1ZmZpeFRy ZWVPZmZzZXQpOworLSAgICBjb25zdCBpbnQgZmlyc3RSb290T2Zmc2V0ID0gbV9jYWNoZUZpbGUt PmdldFVpbnQzMihyZXZlcnNlU3VmZml4VHJlZU9mZnNldCArIDQpOworLSAgICBtYXRjaFN1ZmZp eFRyZWUocmVzdWx0LCBtX2NhY2hlRmlsZSwgbnVtUm9vdHMsIGZpcnN0Um9vdE9mZnNldCwgbG93 ZXJGaWxlTmFtZSwgbG93ZXJGaWxlTmFtZS5sZW5ndGgoKSAtIDEsIGZhbHNlKTsKKysgICAgaWYg KHJlc3VsdC5tX21hdGNoaW5nTWltZVR5cGVzLmlzRW1wdHkoKSkgeworKyAgICAgICAgY29uc3Qg aW50IHJldmVyc2VTdWZmaXhUcmVlT2Zmc2V0ID0gbV9jYWNoZUZpbGUtPmdldFVpbnQzMihQb3NS ZXZlcnNlU3VmZml4VHJlZU9mZnNldCk7CisrICAgICAgICBjb25zdCBpbnQgbnVtUm9vdHMgPSBt X2NhY2hlRmlsZS0+Z2V0VWludDMyKHJldmVyc2VTdWZmaXhUcmVlT2Zmc2V0KTsKKysgICAgICAg IGNvbnN0IGludCBmaXJzdFJvb3RPZmZzZXQgPSBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKHJldmVy c2VTdWZmaXhUcmVlT2Zmc2V0ICsgNCk7CisrICAgICAgICBtYXRjaFN1ZmZpeFRyZWUocmVzdWx0 LCBtX2NhY2hlRmlsZSwgbnVtUm9vdHMsIGZpcnN0Um9vdE9mZnNldCwgbG93ZXJGaWxlTmFtZSwg bG93ZXJGaWxlTmFtZS5sZW5ndGgoKSAtIDEsIGZhbHNlKTsKKysgICAgICAgIGlmIChyZXN1bHQu bV9tYXRjaGluZ01pbWVUeXBlcy5pc0VtcHR5KCkpCisrICAgICAgICAgICAgbWF0Y2hTdWZmaXhU cmVlKHJlc3VsdCwgbV9jYWNoZUZpbGUsIG51bVJvb3RzLCBmaXJzdFJvb3RPZmZzZXQsIGZpbGVO YW1lLCBmaWxlTmFtZS5sZW5ndGgoKSAtIDEsIHRydWUpOworKyAgICB9CisrICAgIC8vIENoZWNr IGNvbXBsZXggZ2xvYnMgKGUuZy4gImNhbGxncmluZC5vdXRbMC05XSoiIG9yICJSRUFETUUqIikK KyAgICAgaWYgKHJlc3VsdC5tX21hdGNoaW5nTWltZVR5cGVzLmlzRW1wdHkoKSkKKy0gICAgICAg IG1hdGNoU3VmZml4VHJlZShyZXN1bHQsIG1fY2FjaGVGaWxlLCBudW1Sb290cywgZmlyc3RSb290 T2Zmc2V0LCBmaWxlTmFtZSwgZmlsZU5hbWUubGVuZ3RoKCkgLSAxLCB0cnVlKTsKKysgICAgICAg IG1hdGNoR2xvYkxpc3QocmVzdWx0LCBtX2NhY2hlRmlsZSwgbV9jYWNoZUZpbGUtPmdldFVpbnQz MihQb3NHbG9iTGlzdE9mZnNldCksIGZpbGVOYW1lKTsKKyB9CisgCisgdm9pZCBRTWltZUJpbmFy eVByb3ZpZGVyOjptYXRjaEdsb2JMaXN0KFFNaW1lR2xvYk1hdGNoUmVzdWx0ICZyZXN1bHQsIENh Y2hlRmlsZSAqY2FjaGVGaWxlLCBpbnQgb2ZmLCBjb25zdCBRU3RyaW5nICZmaWxlTmFtZSkKK2Rp ZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xanNvbnBhcnNlci5j cHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xanNvbnBhcnNlci5jcHAKK2lu ZGV4IDE3ZTZmMTExYWIuLjJlNDBiNmM4ZmIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVs aWIvc2VyaWFsaXphdGlvbi9xanNvbnBhcnNlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxp Yi9zZXJpYWxpemF0aW9uL3Fqc29ucGFyc2VyLmNwcAorQEAgLTM3OSwxMCArMzc5LDMwIEBAIGVy cm9yOgorICAgICByZXR1cm4gUUNib3JWYWx1ZSgpOworIH0KKyAKKysvLyBXZSBuZWVkIHRvIHJl dGFpbiB0aGUgX2xhc3RfIHZhbHVlIGZvciBhbnkgZHVwbGljYXRlIGtleXMgYW5kIHdlIG5lZWQg dG8gZGVyZWYgY29udGFpbmVycy4KKysvLyBUaGVyZWZvcmUgdGhlIG1hbnVhbCBpbXBsZW1lbnRh dGlvbiBvZiBzdGQ6OnVuaXF1ZSgpLgorK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBl bmFtZSBDb21wYXJlLCB0eXBlbmFtZSBBc3NpZ24+Cisrc3RhdGljIEl0ZXJhdG9yIGN1c3RvbUFz c2lnbmluZ1VuaXF1ZUxhc3QoSXRlcmF0b3IgZmlyc3QsIEl0ZXJhdG9yIGxhc3QsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGFyZSBjb21wYXJlLCBBc3Np Z24gYXNzaWduKQorK3sKKysgICAgZmlyc3QgPSBzdGQ6OmFkamFjZW50X2ZpbmQoZmlyc3QsIGxh c3QsIGNvbXBhcmUpOworKyAgICBpZiAoZmlyc3QgPT0gbGFzdCkKKysgICAgICAgIHJldHVybiBs YXN0OworKworKyAgICBJdGVyYXRvciByZXN1bHQgPSBmaXJzdDsKKysgICAgd2hpbGUgKCsrZmly c3QgIT0gbGFzdCkgeworKyAgICAgICAgaWYgKCFjb21wYXJlKCpyZXN1bHQsICpmaXJzdCkpCisr ICAgICAgICAgICAgKytyZXN1bHQ7CisrICAgICAgICBpZiAocmVzdWx0ICE9IGZpcnN0KQorKyAg ICAgICAgICAgIGFzc2lnbigqcmVzdWx0LCAqZmlyc3QpOworKyAgICB9CisrCisrICAgIHJldHVy biArK3Jlc3VsdDsKKyt9CisrCisgc3RhdGljIHZvaWQgc29ydENvbnRhaW5lcihRQ2JvckNvbnRh aW5lclByaXZhdGUgKmNvbnRhaW5lcikKKyB7CisgICAgIHVzaW5nIEZvcndhcmQgPSBRSnNvblBy aXZhdGU6OktleUl0ZXJhdG9yOworLSAgICB1c2luZyBSZXZlcnNlID0gc3RkOjpyZXZlcnNlX2l0 ZXJhdG9yPEZvcndhcmQ+OworICAgICB1c2luZyBWYWx1ZSA9IEZvcndhcmQ6OnZhbHVlX3R5cGU7 CisgCisgICAgIGF1dG8gY29tcGFyZSA9IFtjb250YWluZXJdKGNvbnN0IFZhbHVlICZhLCBjb25z dCBWYWx1ZSAmYikKK0BAIC00MjAsMTcgKzQ0MCwzMSBAQCBzdGF0aWMgdm9pZCBzb3J0Q29udGFp bmVyKFFDYm9yQ29udGFpbmVyUHJpdmF0ZSAqY29udGFpbmVyKQorICAgICAgICAgfQorICAgICB9 OworIAorLSAgICBzdGQ6OnNvcnQoRm9yd2FyZChjb250YWluZXItPmVsZW1lbnRzLmJlZ2luKCkp LCBGb3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuZW5kKCkpLAorLSAgICAgICAgICAgICAgWyZj b21wYXJlXShjb25zdCBWYWx1ZSAmYSwgY29uc3QgVmFsdWUgJmIpIHsgcmV0dXJuIGNvbXBhcmUo YSwgYikgPCAwOyB9KTsKKysgICAgLy8gVGhlIGVsZW1lbnRzJyBjb250YWluZXJzIGFyZSBvd25l ZCBieSB0aGUgb3V0ZXIgY29udGFpbmVyLCBub3QgYnkgdGhlIGVsZW1lbnRzIHRoZW1zZWx2ZXMu CisrICAgIGF1dG8gbW92ZSA9IFtdKEZvcndhcmQ6OnJlZmVyZW5jZSB0YXJnZXQsIEZvcndhcmQ6 OnJlZmVyZW5jZSBzb3VyY2UpCisrICAgIHsKKysgICAgICAgIFF0Q2Jvcjo6RWxlbWVudCAmdGFy Z2V0VmFsdWUgPSB0YXJnZXQudmFsdWUoKTsKKysKKysgICAgICAgIC8vIElmIHRoZSB0YXJnZXQg aGFzIGEgY29udGFpbmVyLCBkZXJlZiBpdCBiZWZvcmUgb3ZlcndyaXRpbmcsIHNvIHRoYXQgd2Ug ZG9uJ3QgbGVhay4KKysgICAgICAgIGlmICh0YXJnZXRWYWx1ZS5mbGFncyAmIFF0Q2Jvcjo6RWxl bWVudDo6SXNDb250YWluZXIpCisrICAgICAgICAgICAgdGFyZ2V0VmFsdWUuY29udGFpbmVyLT5k ZXJlZigpOworKworKyAgICAgICAgLy8gRG8gbm90IG1vdmUsIHNvIHRoYXQgd2UgY2FuIGNsZWFy IHRoZSB2YWx1ZSBhZnRlcndhcmRzLgorKyAgICAgICAgdGFyZ2V0ID0gc291cmNlOworKworKyAg ICAgICAgLy8gQ2xlYXIgdGhlIHNvdXJjZSB2YWx1ZSwgc28gdGhhdCB3ZSBkb24ndCBzdG9yZSB0 aGUgc2FtZSBjb250YWluZXIgdHdpY2UuCisrICAgICAgICBzb3VyY2UudmFsdWUoKSA9IFF0Q2Jv cjo6RWxlbWVudCgpOworKyAgICB9OworKworKyAgICBzdGQ6OnN0YWJsZV9zb3J0KAorKyAgICAg ICAgICAgICAgICBGb3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuYmVnaW4oKSksIEZvcndhcmQo Y29udGFpbmVyLT5lbGVtZW50cy5lbmQoKSksCisrICAgICAgICAgICAgICAgIFsmY29tcGFyZV0o Y29uc3QgVmFsdWUgJmEsIGNvbnN0IFZhbHVlICZiKSB7IHJldHVybiBjb21wYXJlKGEsIGIpIDwg MDsgfSk7CisgCistICAgIC8vIFdlIG5lZWQgdG8gcmV0YWluIHRoZSBfbGFzdF8gdmFsdWUgZm9y IGFueSBkdXBsaWNhdGUga2V5cy4gVGhlcmVmb3JlIHRoZSByZXZlcnNlIGRhbmNlIGhlcmUuCist ICAgIGF1dG8gaXQgPSBzdGQ6OnVuaXF1ZShSZXZlcnNlKGNvbnRhaW5lci0+ZWxlbWVudHMuZW5k KCkpLCBSZXZlcnNlKGNvbnRhaW5lci0+ZWxlbWVudHMuYmVnaW4oKSksCistICAgICAgICAgICAg ICAgICAgICAgICAgICBbJmNvbXBhcmVdKGNvbnN0IFZhbHVlICZhLCBjb25zdCBWYWx1ZSAmYikg eworLSAgICAgICAgcmV0dXJuIGNvbXBhcmUoYSwgYikgPT0gMDsKKy0gICAgfSkuYmFzZSgpLmVs ZW1lbnRzSXRlcmF0b3IoKTsKKysgICAgRm9yd2FyZCByZXN1bHQgPSBjdXN0b21Bc3NpZ25pbmdV bmlxdWVMYXN0KAorKyAgICAgICAgICAgICAgICBGb3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMu YmVnaW4oKSksICBGb3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuZW5kKCkpLAorKyAgICAgICAg ICAgICAgICBbJmNvbXBhcmVdKGNvbnN0IFZhbHVlICZhLCBjb25zdCBWYWx1ZSAmYikgeyByZXR1 cm4gY29tcGFyZShhLCBiKSA9PSAwOyB9LCBtb3ZlKTsKKyAKKy0gICAgLy8gVGhlIGVyYXNlIGZy b20gYmVnaW5uaW5nIGlzIGV4cGVuc2l2ZSBidXQgaG9wZWZ1bGx5IHJhcmUuCistICAgIGNvbnRh aW5lci0+ZWxlbWVudHMuZXJhc2UoY29udGFpbmVyLT5lbGVtZW50cy5iZWdpbigpLCBpdCk7Cisr ICAgIGNvbnRhaW5lci0+ZWxlbWVudHMuZXJhc2UocmVzdWx0LmVsZW1lbnRzSXRlcmF0b3IoKSwg Y29udGFpbmVyLT5lbGVtZW50cy5lbmQoKSk7CisgfQorIAorIAorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3F4bWxzdHJlYW0uY3BwIGIvcXRiYXNlL3NyYy9j b3JlbGliL3NlcmlhbGl6YXRpb24vcXhtbHN0cmVhbS5jcHAKK2luZGV4IGIyZjg0NjU0NGQuLjdj ZDQ1N2JhM2EgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9x eG1sc3RyZWFtLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcXht bHN0cmVhbS5jcHAKK0BAIC05ODAsNyArOTgwLDcgQEAgaW5saW5lIHVpbnQgUVhtbFN0cmVhbVJl YWRlclByaXZhdGU6OnBlZWtDaGFyKCkKKyBib29sIFFYbWxTdHJlYW1SZWFkZXJQcml2YXRlOjpz Y2FuVW50aWwoY29uc3QgY2hhciAqc3RyLCBzaG9ydCB0b2tlblRvSW5qZWN0KQorIHsKKyAgICAg aW50IHBvcyA9IHRleHRCdWZmZXIuc2l6ZSgpOworLSAgICBpbnQgb2xkTGluZU51bWJlciA9IGxp bmVOdW1iZXI7CisrICAgIGNvbnN0IGF1dG8gb2xkTGluZU51bWJlciA9IGxpbmVOdW1iZXI7Cisg CisgICAgIHVpbnQgYzsKKyAgICAgd2hpbGUgKChjID0gZ2V0Q2hhcigpKSAhPSBTdHJlYW1FT0Yp IHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5nLmNwcCBiL3F0 YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmcuY3BwCitpbmRleCAzZTg4YWI0ODU5Li44ZGVl YWU0N2JiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQvcXN0cmluZy5jcHAK KysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmcuY3BwCitAQCAtMTIzMTIsNyAr MTIzMTIsNyBAQCBzdGF0aWMgcXNpemV0eXBlIHFMYXN0SW5kZXhPZihIYXlzdGFjayBoYXlzdGFj azAsIHFzaXpldHlwZSBmcm9tLAorICAgICBjb25zdCBhdXRvIG5lZWRsZSA9IG5lZWRsZTAuZGF0 YSgpOworICAgICBjb25zdCBhdXRvICplbmQgPSBoYXlzdGFjazsKKyAgICAgaGF5c3RhY2sgKz0g ZnJvbTsKKy0gICAgY29uc3Qgc3RkOjpzaXplX3Qgc2xfbWludXNfMSA9IHNsIC0gMTsKKysgICAg Y29uc3Qgc3RkOjpzaXplX3Qgc2xfbWludXNfMSA9IHNsID8gc2wgLSAxIDogMDsKKyAgICAgY29u c3QgYXV0byAqbiA9IG5lZWRsZSArIHNsX21pbnVzXzE7CisgICAgIGNvbnN0IGF1dG8gKmggPSBo YXlzdGFjayArIHNsX21pbnVzXzE7CisgICAgIHN0ZDo6c2l6ZV90IGhhc2hOZWVkbGUgPSAwLCBo YXNoSGF5c3RhY2sgPSAwOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3Fz dHJpbmdpdGVyYXRvcl9wLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5naXRlcmF0 b3JfcC5oCitpbmRleCAyMTk1ODliNmU0Li4xZDBjNjZjYzc4IDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9jb3JlbGliL3RleHQvcXN0cmluZ2l0ZXJhdG9yX3AuaAorKysrIGIvcXRiYXNlL3NyYy9j b3JlbGliL3RleHQvcXN0cmluZ2l0ZXJhdG9yX3AuaAorQEAgLTYxLDYgKzYxLDggQEAgY2xhc3Mg UVN0cmluZ0l0ZXJhdG9yCisgeworICAgICBRU3RyaW5nOjpjb25zdF9pdGVyYXRvciBpLCBwb3Ms IGU7CisgICAgIFFfU1RBVElDX0FTU0VSVCgoc3RkOjppc19zYW1lPFFTdHJpbmc6OmNvbnN0X2l0 ZXJhdG9yLCBjb25zdCBRQ2hhciAqPjo6dmFsdWUpKTsKKysgICAgc3RhdGljIGJvb2wgbGVzcyhj b25zdCBRQ2hhciAqbGhzLCBjb25zdCBRQ2hhciAqcmhzKSBub2V4Y2VwdAorKyAgICB7IHJldHVy biBzdGQ6Omxlc3M8UVN0cmluZzo6Y29uc3RfaXRlcmF0b3I+e30obGhzLCByaHMpOyB9CisgcHVi bGljOgorICAgICBleHBsaWNpdCBRU3RyaW5nSXRlcmF0b3IoUVN0cmluZ1ZpZXcgc3RyaW5nLCBx c2l6ZXR5cGUgaWR4ID0gMCkKKyAgICAgICAgIDogaShzdHJpbmcuYmVnaW4oKSksCitAQCAtOTUs NyArOTcsOCBAQCBwdWJsaWM6CisgCisgICAgIGlubGluZSB2b2lkIHNldFBvc2l0aW9uKFFTdHJp bmc6OmNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uKQorICAgICB7CistICAgICAgICBRX0FTU0VSVF9Y KGkgPD0gcG9zaXRpb24gJiYgcG9zaXRpb24gPD0gZSwgUV9GVU5DX0lORk8sICJwb3NpdGlvbiBv dXQgb2YgYm91bmRzIik7CisrICAgICAgICBRX0FTU0VSVF9YKCFsZXNzKHBvc2l0aW9uLCBpKSAm JiAhbGVzcyhlLCBwb3NpdGlvbiksCisrICAgICAgICAgICAgICAgICAgIFFfRlVOQ19JTkZPLCAi cG9zaXRpb24gb3V0IG9mIGJvdW5kcyIpOworICAgICAgICAgcG9zID0gcG9zaXRpb247CisgICAg IH0KKyAKK0BAIC0xMDMsNyArMTA2LDcgQEAgcHVibGljOgorIAorICAgICBpbmxpbmUgYm9vbCBo YXNOZXh0KCkgY29uc3QKKyAgICAgeworLSAgICAgICAgcmV0dXJuIHBvcyA8IGU7CisrICAgICAg ICByZXR1cm4gbGVzcyhwb3MsIGUpOworICAgICB9CisgCisgICAgIGlubGluZSB2b2lkIGFkdmFu Y2UoKQorQEAgLTEyMCwxNiArMTIzLDIwIEBAIHB1YmxpYzoKKyAgICAgeworICAgICAgICAgUV9B U1NFUlRfWChoYXNOZXh0KCksIFFfRlVOQ19JTkZPLCAiaXRlcmF0b3IgaGFzbid0IGEgbmV4dCBp dGVtIik7CisgCistICAgICAgICBpZiAoUV9VTkxJS0VMWSgocG9zKyspLT5pc0hpZ2hTdXJyb2dh dGUoKSkpCisrICAgICAgICBpZiAoUV9VTkxJS0VMWSgocG9zKyspLT5pc0hpZ2hTdXJyb2dhdGUo KSkpIHsKKysgICAgICAgICAgICBRX0FTU0VSVChoYXNOZXh0KCkgJiYgcG9zLT5pc0xvd1N1cnJv Z2F0ZSgpKTsKKyAgICAgICAgICAgICArK3BvczsKKysgICAgICAgIH0KKyAgICAgfQorIAorICAg ICBpbmxpbmUgdWludCBwZWVrTmV4dFVuY2hlY2tlZCgpIGNvbnN0CisgICAgIHsKKyAgICAgICAg IFFfQVNTRVJUX1goaGFzTmV4dCgpLCBRX0ZVTkNfSU5GTywgIml0ZXJhdG9yIGhhc24ndCBhIG5l eHQgaXRlbSIpOworIAorLSAgICAgICAgaWYgKFFfVU5MSUtFTFkocG9zLT5pc0hpZ2hTdXJyb2dh dGUoKSkpCisrICAgICAgICBpZiAoUV9VTkxJS0VMWShwb3MtPmlzSGlnaFN1cnJvZ2F0ZSgpKSkg eworKyAgICAgICAgICAgIFFfQVNTRVJUKGxlc3MocG9zICsgMSwgZSkgJiYgcG9zWzFdLmlzTG93 U3Vycm9nYXRlKCkpOworICAgICAgICAgICAgIHJldHVybiBRQ2hhcjo6c3Vycm9nYXRlVG9VY3M0 KHBvc1swXSwgcG9zWzFdKTsKKysgICAgICAgIH0KKyAKKyAgICAgICAgIHJldHVybiBwb3MtPnVu aWNvZGUoKTsKKyAgICAgfQorQEAgLTE1NSw4ICsxNjIsMTAgQEAgcHVibGljOgorICAgICAgICAg UV9BU1NFUlRfWChoYXNOZXh0KCksIFFfRlVOQ19JTkZPLCAiaXRlcmF0b3IgaGFzbid0IGEgbmV4 dCBpdGVtIik7CisgCisgICAgICAgICBjb25zdCBRQ2hhciBjdXIgPSAqcG9zKys7CistICAgICAg ICBpZiAoUV9VTkxJS0VMWShjdXIuaXNIaWdoU3Vycm9nYXRlKCkpKQorKyAgICAgICAgaWYgKFFf VU5MSUtFTFkoY3VyLmlzSGlnaFN1cnJvZ2F0ZSgpKSkgeworKyAgICAgICAgICAgIFFfQVNTRVJU KGhhc05leHQoKSAmJiBwb3MtPmlzTG93U3Vycm9nYXRlKCkpOworICAgICAgICAgICAgIHJldHVy biBRQ2hhcjo6c3Vycm9nYXRlVG9VY3M0KGN1ciwgKnBvcysrKTsKKysgICAgICAgIH0KKyAgICAg ICAgIHJldHVybiBjdXIudW5pY29kZSgpOworICAgICB9CisgCitAQCAtMTY2LDcgKzE3NSw3IEBA IHB1YmxpYzoKKyAKKyAgICAgICAgIGNvbnN0IFFDaGFyIHVjID0gKnBvcysrOworICAgICAgICAg aWYgKFFfVU5MSUtFTFkodWMuaXNTdXJyb2dhdGUoKSkpIHsKKy0gICAgICAgICAgICBpZiAoUV9M SUtFTFkodWMuaXNIaWdoU3Vycm9nYXRlKCkgJiYgcG9zIDwgZSAmJiBwb3MtPmlzTG93U3Vycm9n YXRlKCkpKQorKyAgICAgICAgICAgIGlmIChRX0xJS0VMWSh1Yy5pc0hpZ2hTdXJyb2dhdGUoKSAm JiBoYXNOZXh0KCkgJiYgcG9zLT5pc0xvd1N1cnJvZ2F0ZSgpKSkKKyAgICAgICAgICAgICAgICAg cmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1VjczQodWMsICpwb3MrKyk7CisgICAgICAgICAgICAg cmV0dXJuIGludmFsaWRBczsKKyAgICAgICAgIH0KK0BAIC0xNzgsNyArMTg3LDcgQEAgcHVibGlj OgorIAorICAgICBpbmxpbmUgYm9vbCBoYXNQcmV2aW91cygpIGNvbnN0CisgICAgIHsKKy0gICAg ICAgIHJldHVybiBwb3MgPiBpOworKyAgICAgICAgcmV0dXJuIGxlc3MoaSwgcG9zKTsKKyAgICAg fQorIAorICAgICBpbmxpbmUgdm9pZCByZWNlZGUoKQorQEAgLTE5NiwxNiArMjA1LDIwIEBAIHB1 YmxpYzoKKyAgICAgeworICAgICAgICAgUV9BU1NFUlRfWChoYXNQcmV2aW91cygpLCBRX0ZVTkNf SU5GTywgIml0ZXJhdG9yIGhhc24ndCBhIHByZXZpb3VzIGl0ZW0iKTsKKyAKKy0gICAgICAgIGlm IChRX1VOTElLRUxZKCgtLXBvcyktPmlzTG93U3Vycm9nYXRlKCkpKQorKyAgICAgICAgaWYgKFFf VU5MSUtFTFkoKC0tcG9zKS0+aXNMb3dTdXJyb2dhdGUoKSkpIHsKKysgICAgICAgICAgICBRX0FT U0VSVChoYXNQcmV2aW91cygpICYmIHBvc1stMV0uaXNIaWdoU3Vycm9nYXRlKCkpOworICAgICAg ICAgICAgIC0tcG9zOworKyAgICAgICAgfQorICAgICB9CisgCisgICAgIGlubGluZSB1aW50IHBl ZWtQcmV2aW91c1VuY2hlY2tlZCgpIGNvbnN0CisgICAgIHsKKyAgICAgICAgIFFfQVNTRVJUX1go aGFzUHJldmlvdXMoKSwgUV9GVU5DX0lORk8sICJpdGVyYXRvciBoYXNuJ3QgYSBwcmV2aW91cyBp dGVtIik7CisgCistICAgICAgICBpZiAoUV9VTkxJS0VMWShwb3NbLTFdLmlzTG93U3Vycm9nYXRl KCkpKQorKyAgICAgICAgaWYgKFFfVU5MSUtFTFkocG9zWy0xXS5pc0xvd1N1cnJvZ2F0ZSgpKSkg eworKyAgICAgICAgICAgIFFfQVNTRVJUKGxlc3MoaSArIDEsIHBvcykgJiYgcG9zWy0yXS5pc0hp Z2hTdXJyb2dhdGUoKSk7CisgICAgICAgICAgICAgcmV0dXJuIFFDaGFyOjpzdXJyb2dhdGVUb1Vj czQocG9zWy0yXSwgcG9zWy0xXSk7CisrICAgICAgICB9CisgICAgICAgICByZXR1cm4gcG9zWy0x XS51bmljb2RlKCk7CisgICAgIH0KKyAKK0BAIC0yMzAsOCArMjQzLDEwIEBAIHB1YmxpYzoKKyAg ICAgICAgIFFfQVNTRVJUX1goaGFzUHJldmlvdXMoKSwgUV9GVU5DX0lORk8sICJpdGVyYXRvciBo YXNuJ3QgYSBwcmV2aW91cyBpdGVtIik7CisgCisgICAgICAgICBjb25zdCBRQ2hhciBjdXIgPSAq LS1wb3M7CistICAgICAgICBpZiAoUV9VTkxJS0VMWShjdXIuaXNMb3dTdXJyb2dhdGUoKSkpCisr ICAgICAgICBpZiAoUV9VTkxJS0VMWShjdXIuaXNMb3dTdXJyb2dhdGUoKSkpIHsKKysgICAgICAg ICAgICBRX0FTU0VSVChoYXNQcmV2aW91cygpICYmIHBvc1stMV0uaXNIaWdoU3Vycm9nYXRlKCkp OworICAgICAgICAgICAgIHJldHVybiBRQ2hhcjo6c3Vycm9nYXRlVG9VY3M0KCotLXBvcywgY3Vy KTsKKysgICAgICAgIH0KKyAgICAgICAgIHJldHVybiBjdXIudW5pY29kZSgpOworICAgICB9Cisg CitAQCAtMjQxLDcgKzI1Niw3IEBAIHB1YmxpYzoKKyAKKyAgICAgICAgIGNvbnN0IFFDaGFyIHVj ID0gKi0tcG9zOworICAgICAgICAgaWYgKFFfVU5MSUtFTFkodWMuaXNTdXJyb2dhdGUoKSkpIHsK Ky0gICAgICAgICAgICBpZiAoUV9MSUtFTFkodWMuaXNMb3dTdXJyb2dhdGUoKSAmJiBwb3MgPiBp ICYmIHBvc1stMV0uaXNIaWdoU3Vycm9nYXRlKCkpKQorKyAgICAgICAgICAgIGlmIChRX0xJS0VM WSh1Yy5pc0xvd1N1cnJvZ2F0ZSgpICYmIGhhc1ByZXZpb3VzKCkgJiYgcG9zWy0xXS5pc0hpZ2hT dXJyb2dhdGUoKSkpCisgICAgICAgICAgICAgICAgIHJldHVybiBRQ2hhcjo6c3Vycm9nYXRlVG9V Y3M0KCotLXBvcywgdWMpOworICAgICAgICAgICAgIHJldHVybiBpbnZhbGlkQXM7CisgICAgICAg ICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xZnV0ZXhfcC5oIGIv cXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xZnV0ZXhfcC5oCitpbmRleCBmMjg3Yjc1MmQ3Li5l Mjk0NTM3Nzg3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xZnV0ZXhf cC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FmdXRleF9wLmgKK0BAIC01Miw2 ICs1Miw3IEBACisgLy8KKyAKKyAjaW5jbHVkZSA8cWdsb2JhbC5oPgorKyNpbmNsdWRlIDxRdENv cmUvcXRzYW5faW1wbC5oPgorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorQEAgLTEwNiwxNiAr MTA3LDEzIEBAIG5hbWVzcGFjZSBRdExpbnV4RnV0ZXggeworICAgICBpbmxpbmUgaW50IF9xX2Z1 dGV4KGludCAqYWRkciwgaW50IG9wLCBpbnQgdmFsLCBxdWludHB0ciB2YWwyID0gMCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgKmFkZHIyID0gbnVsbHB0ciwgaW50IHZhbDMgPSAwKSBu b2V4Y2VwdAorICAgICB7CistICAgICAgICAvLyBBIGZ1dGV4IGNhbGwgZW5zdXJlcyB0b3RhbCBv cmRlcmluZyBvbiB0aGUgZnV0ZXggd29yZHMKKy0gICAgICAgIC8vIChpbiBlaXRoZXIgc3VjY2Vz cyBvciBmYWlsdXJlIG9mIHRoZSBjYWxsKS4gSW5zdHJ1Y3QgVFNBTiBhY2NvcmRpbmdseSwKKy0g ICAgICAgIC8vIGFzIFRTQU4gZG9lcyBub3QgdW5kZXJzdGFuZCB0aGUgZnV0ZXgoMikgc3lzY2Fs bC4KKy0gICAgICAgIF9xX3RzYW5fcmVsZWFzZShhZGRyLCBhZGRyMik7CisrICAgICAgICBRdFRz YW46OmZ1dGV4UmVsZWFzZShhZGRyLCBhZGRyMik7CisgCisgICAgICAgICAvLyB3ZSB1c2UgX19O Ul9mdXRleCBiZWNhdXNlIHNvbWUgbGliY3MgKGxpa2UgQW5kcm9pZCdzIGJpb25pYykgZG9uJ3QK KyAgICAgICAgIC8vIHByb3ZpZGUgU1lTX2Z1dGV4IGV0Yy4KKyAgICAgICAgIGludCByZXN1bHQg PSBzeXNjYWxsKF9fTlJfZnV0ZXgsIGFkZHIsIG9wIHwgRlVURVhfUFJJVkFURV9GTEFHLCB2YWws IHZhbDIsIGFkZHIyLCB2YWwzKTsKKyAKKy0gICAgICAgIF9xX3RzYW5fYWNxdWlyZShhZGRyLCBh ZGRyMik7CisrICAgICAgICBRdFRzYW46OmZ1dGV4QWNxdWlyZShhZGRyLCBhZGRyMik7CisgCisg ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9j b3JlbGliL3RocmVhZC9xbXV0ZXguY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0 ZXguY3BwCitpbmRleCAzMTBkMWNiMTRmLi43MDk3MTIyZDhlIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIv dGhyZWFkL3FtdXRleC5jcHAKK0BAIC0xNTIsNiArMTUyLDcgQEAgcHVibGljOgorIAorIC8qIQor ICAgICBcZW51bSBRTXV0ZXg6OlJlY3Vyc2lvbk1vZGUKKysgICAgXG9ic29sZXRlIFVzZSBRUmVj dXJzaXZlTXV0ZXggdG8gY3JlYXRlIGEgcmVjdXJzaXZlIG11dGV4LgorIAorICAgICBcdmFsdWUg UmVjdXJzaXZlICBJbiB0aGlzIG1vZGUsIGEgdGhyZWFkIGNhbiBsb2NrIHRoZSBzYW1lIG11dGV4 CisgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlIHRpbWVzIGFuZCB0aGUgbXV0ZXggd29u J3QgYmUgdW5sb2NrZWQKK0BAIC0xNzMsNiArMTc0LDcgQEAgcHVibGljOgorIAorIC8qIQorICAg ICBDb25zdHJ1Y3RzIGEgbmV3IG11dGV4LiBUaGUgbXV0ZXggaXMgY3JlYXRlZCBpbiBhbiB1bmxv Y2tlZCBzdGF0ZS4KKysgICAgXG9ic29sZXRlIFVzZSBRUmVjdXJzaXZlTXV0ZXggdG8gY3JlYXRl IGEgcmVjdXJzaXZlIG11dGV4LgorIAorICAgICBJZiBcYSBtb2RlIGlzIFFNdXRleDo6UmVjdXJz aXZlLCBhIHRocmVhZCBjYW4gbG9jayB0aGUgc2FtZSBtdXRleAorICAgICBtdWx0aXBsZSB0aW1l cyBhbmQgdGhlIG11dGV4IHdvbid0IGJlIHVubG9ja2VkIHVudGlsIGEKK0BAIC0xOTcsNyArMTk5 LDcgQEAgUU11dGV4OjpRTXV0ZXgoUmVjdXJzaW9uTW9kZSBtb2RlKQorIFFNdXRleDo6flFNdXRl eCgpCisgeworICAgICBRTXV0ZXhEYXRhICpkID0gZF9wdHIubG9hZFJlbGF4ZWQoKTsKKy0gICAg aWYgKGlzUmVjdXJzaXZlKCkpIHsKKysgICAgaWYgKFFCYXNpY011dGV4Ojppc1JlY3Vyc2l2ZSgp KSB7CisgICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8UVJlY3Vyc2l2ZU11dGV4UHJpdmF0ZSAq PihkKTsKKyAgICAgfSBlbHNlIGlmIChkKSB7CisgI2lmbmRlZiBRVF9MSU5VWF9GVVRFWAorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmggYi9xdGJhc2Uvc3Jj L2NvcmVsaWIvdGhyZWFkL3FtdXRleC5oCitpbmRleCA3M2M5ZTAwNjYzLi4xYmFlNTczYTAzIDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXguaAorKysrIGIvcXRi YXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXguaAorQEAgLTQyLDYgKzQyLDcgQEAKKyAKKyAj aW5jbHVkZSA8UXRDb3JlL3FnbG9iYWwuaD4KKyAjaW5jbHVkZSA8UXRDb3JlL3FhdG9taWMuaD4K KysjaW5jbHVkZSA8UXRDb3JlL3F0c2FuX2ltcGwuaD4KKyAjaW5jbHVkZSA8bmV3PgorIAorICNp ZiBfX2hhc19pbmNsdWRlKDxjaHJvbm8+KQorQEAgLTc3LDE5ICs3OCwzNyBAQCBwdWJsaWM6Cisg CisgICAgIC8vIEJhc2ljTG9ja2FibGUgY29uY2VwdAorICAgICBpbmxpbmUgdm9pZCBsb2NrKCkg UVRfTVVURVhfTE9DS19OT0VYQ0VQVCB7CisrICAgICAgICBRdFRzYW46Om11dGV4UHJlTG9jayh0 aGlzLCAwdSk7CisrCisgICAgICAgICBpZiAoIWZhc3RUcnlMb2NrKCkpCisgICAgICAgICAgICAg bG9ja0ludGVybmFsKCk7CisrCisrICAgICAgICBRdFRzYW46Om11dGV4UG9zdExvY2sodGhpcywg MHUsIDApOworICAgICB9CisgCisgICAgIC8vIEJhc2ljTG9ja2FibGUgY29uY2VwdAorICAgICBp bmxpbmUgdm9pZCB1bmxvY2soKSBub2V4Y2VwdCB7CisgICAgICAgICBRX0FTU0VSVChkX3B0ci5s b2FkUmVsYXhlZCgpKTsgLy9tdXRleCBtdXN0IGJlIGxvY2tlZAorKworKyAgICAgICAgUXRUc2Fu OjptdXRleFByZVVubG9jayh0aGlzLCAwdSk7CisrCisgICAgICAgICBpZiAoIWZhc3RUcnlVbmxv Y2soKSkKKyAgICAgICAgICAgICB1bmxvY2tJbnRlcm5hbCgpOworKworKyAgICAgICAgUXRUc2Fu OjptdXRleFBvc3RVbmxvY2sodGhpcywgMHUpOworICAgICB9CisgCisgICAgIGJvb2wgdHJ5TG9j aygpIG5vZXhjZXB0IHsKKy0gICAgICAgIHJldHVybiBmYXN0VHJ5TG9jaygpOworKyAgICAgICAg dW5zaWduZWQgdHNhbkZsYWdzID0gUXRUc2FuOjpUcnlMb2NrOworKyAgICAgICAgUXRUc2FuOjpt dXRleFByZUxvY2sodGhpcywgdHNhbkZsYWdzKTsKKysKKysgICAgICAgIGNvbnN0IGJvb2wgc3Vj Y2VzcyA9IGZhc3RUcnlMb2NrKCk7CisrCisrICAgICAgICBpZiAoIXN1Y2Nlc3MpCisrICAgICAg ICAgICAgdHNhbkZsYWdzIHw9IFF0VHNhbjo6VHJ5TG9ja0ZhaWxlZDsKKysgICAgICAgIFF0VHNh bjo6bXV0ZXhQb3N0TG9jayh0aGlzLCB0c2FuRmxhZ3MsIDApOworKworKyAgICAgICAgcmV0dXJu IHN1Y2Nlc3M7CisgICAgIH0KKyAKKyAgICAgLy8gTG9ja2FibGUgY29uY2VwdAorQEAgLTEzNCw4 ICsxNTMsMTYgQEAgcHVibGljOgorICNlbHNlCisgICAgIFFNdXRleCgpIHsgZF9wdHIuc3RvcmVS ZWxheGVkKG51bGxwdHIpOyB9CisgI2VuZGlmCisrI2lmIFFUX0RFUFJFQ0FURURfU0lOQ0UoNSwx NSkKKyAgICAgZW51bSBSZWN1cnNpb25Nb2RlIHsgTm9uUmVjdXJzaXZlLCBSZWN1cnNpdmUgfTsK KysgICAgUVRfREVQUkVDQVRFRF9WRVJTSU9OX1goNSwgMTUsICJVc2UgUVJlY3Vyc2l2ZU11dGV4 IGluc3RlYWQgb2YgYSByZWN1cnNpdmUgUU11dGV4IikKKyAgICAgZXhwbGljaXQgUU11dGV4KFJl Y3Vyc2lvbk1vZGUgbW9kZSk7CisrCisrICAgIFFUX0RFUFJFQ0FURURfVkVSU0lPTl9YKDUsIDE1 LCAiVXNlIFFSZWN1cnNpdmVNdXRleCBpbnN0ZWFkIG9mIGEgcmVjdXJzaXZlIFFNdXRleCIpCisr ICAgIGJvb2wgaXNSZWN1cnNpdmUoKSBjb25zdCBub2V4Y2VwdAorKyAgICB7IHJldHVybiBRQmFz aWNNdXRleDo6aXNSZWN1cnNpdmUoKTsgfQorKyNlbmRpZgorKworICAgICB+UU11dGV4KCk7Cisg CisgICAgIC8vIEJhc2ljTG9ja2FibGUgY29uY2VwdAorQEAgLTE2Niw5ICsxOTMsNiBAQCBwdWJs aWM6CisgICAgIH0KKyAjZW5kaWYKKyAKKy0gICAgYm9vbCBpc1JlY3Vyc2l2ZSgpIGNvbnN0IG5v ZXhjZXB0CistICAgIHsgcmV0dXJuIFFCYXNpY011dGV4Ojppc1JlY3Vyc2l2ZSgpOyB9CistCisg cHJpdmF0ZToKKyAgICAgUV9ESVNBQkxFX0NPUFkoUU11dGV4KQorICAgICBmcmllbmQgY2xhc3Mg UU11dGV4TG9ja2VyOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXJl YWR3cml0ZWxvY2suY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xcmVhZHdyaXRlbG9j ay5jcHAKK2luZGV4IDhjMjg1MDdkNWEuLjlkZDg1MDMxMTYgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL2NvcmVsaWIvdGhyZWFkL3FyZWFkd3JpdGVsb2NrLmNwcAorKysrIGIvcXRiYXNlL3NyYy9j b3JlbGliL3RocmVhZC9xcmVhZHdyaXRlbG9jay5jcHAKK0BAIC0xNTUsNyArMTU1LDcgQEAgUVJl YWRXcml0ZUxvY2s6OlFSZWFkV3JpdGVMb2NrKFJlY3Vyc2lvbk1vZGUgcmVjdXJzaW9uTW9kZSkK KyAqLworIFFSZWFkV3JpdGVMb2NrOjp+UVJlYWRXcml0ZUxvY2soKQorIHsKKy0gICAgYXV0byBk ID0gZF9wdHIubG9hZFJlbGF4ZWQoKTsKKysgICAgYXV0byBkID0gZF9wdHIubG9hZEFjcXVpcmUo KTsKKyAgICAgaWYgKGlzVW5jb250ZW5kZWRMb2NrZWQoZCkpIHsKKyAgICAgICAgIHFXYXJuaW5n KCJRUmVhZFdyaXRlTG9jazogZGVzdHJveWluZyBsb2NrZWQgUVJlYWRXcml0ZUxvY2siKTsKKyAg ICAgICAgIHJldHVybjsKK0BAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBRUmVhZFdyaXRlTG9jazo6 dW5sb2NrKCkKKyAvKiEgXGludGVybmFsICBIZWxwZXIgZm9yIFFXYWl0Q29uZGl0aW9uOjp3YWl0 ICovCisgUVJlYWRXcml0ZUxvY2s6OlN0YXRlRm9yV2FpdENvbmRpdGlvbiBRUmVhZFdyaXRlTG9j azo6c3RhdGVGb3JXYWl0Q29uZGl0aW9uKCkgY29uc3QKKyB7CistICAgIFFSZWFkV3JpdGVMb2Nr UHJpdmF0ZSAqZCA9IGRfcHRyLmxvYWRSZWxheGVkKCk7CisrICAgIFFSZWFkV3JpdGVMb2NrUHJp dmF0ZSAqZCA9IGRfcHRyLmxvYWRBY3F1aXJlKCk7CisgICAgIHN3aXRjaCAocXVpbnRwdHIoZCkg JiBTdGF0ZU1hc2spIHsKKyAgICAgY2FzZSBTdGF0ZUxvY2tlZEZvclJlYWQ6IHJldHVybiBMb2Nr ZWRGb3JSZWFkOworICAgICBjYXNlIFN0YXRlTG9ja2VkRm9yV3JpdGU6IHJldHVybiBMb2NrZWRG b3JXcml0ZTsKK0BAIC00NTMsNiArNDUzLDcgQEAgUVJlYWRXcml0ZUxvY2s6OlN0YXRlRm9yV2Fp dENvbmRpdGlvbiBRUmVhZFdyaXRlTG9jazo6c3RhdGVGb3JXYWl0Q29uZGl0aW9uKCkgY28KKyAK KyAgICAgaWYgKCFkKQorICAgICAgICAgcmV0dXJuIFVubG9ja2VkOworKyAgICBjb25zdCBhdXRv IGxvY2sgPSBxdF9zY29wZWRfbG9jayhkLT5tdXRleCk7CisgICAgIGlmIChkLT53cml0ZXJDb3Vu dCA+IDEpCisgICAgICAgICByZXR1cm4gUmVjdXJzaXZlbHlMb2NrZWQ7CisgICAgIGVsc2UgaWYg KGQtPndyaXRlckNvdW50ID09IDEpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3Ro cmVhZC9xc2VtYXBob3JlLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXNlbWFwaG9y ZS5jcHAKK2luZGV4IDFkMDFmYzFiMjguLjNlY2RlZTM3NDcgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL2NvcmVsaWIvdGhyZWFkL3FzZW1hcGhvcmUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvdGhyZWFkL3FzZW1hcGhvcmUuY3BwCitAQCAtMzU0LDcgKzM1NCwxMiBAQCB2b2lkIFFTZW1h cGhvcmU6OnJlbGVhc2UoaW50IG4pCisgICAgICAgICBxdWludHB0ciBubiA9IHVuc2lnbmVkKG4p OworICAgICAgICAgaWYgKGZ1dGV4SGFzV2FpdGVyQ291bnQpCisgICAgICAgICAgICAgbm4gfD0g cXVpbnQ2NChubikgPDwgMzI7ICAgIC8vIHRva2VuIGNvdW50IHJlcGxpY2F0ZWQgaW4gaGlnaCB3 b3JkCistICAgICAgICBxdWludHB0ciBwcmV2VmFsdWUgPSB1LmZldGNoQW5kQWRkUmVsZWFzZShu bik7CisrICAgICAgICBxdWludHB0ciBwcmV2VmFsdWUgPSB1LmxvYWRSZWxheGVkKCk7CisrICAg ICAgICBxdWludHB0ciBuZXdWYWx1ZTsKKysgICAgICAgIGRvIHsgLy8gbG9vcCBqdXN0IHRvIGVu c3VyZSB0aGUgb3BlcmF0aW9ucyBhcmUgZG9uZSBhdG9taWNhbGx5CisrICAgICAgICAgICAgbmV3 VmFsdWUgPSBwcmV2VmFsdWUgKyBubjsKKysgICAgICAgICAgICBuZXdWYWx1ZSAmPSAoZnV0ZXhO ZWVkc1dha2VBbGxCaXQgLSAxKTsKKysgICAgICAgIH0gd2hpbGUgKCF1LnRlc3RBbmRTZXRSZWxl YXNlKHByZXZWYWx1ZSwgbmV3VmFsdWUsIHByZXZWYWx1ZSkpOworICAgICAgICAgaWYgKGZ1dGV4 TmVlZHNXYWtlKHByZXZWYWx1ZSkpIHsKKyAjaWZkZWYgRlVURVhfT1AKKyAgICAgICAgICAgICBp ZiAoZnV0ZXhIYXNXYWl0ZXJDb3VudCkgeworQEAgLTM3Niw3ICszODEsNiBAQCB2b2lkIFFTZW1h cGhvcmU6OnJlbGVhc2UoaW50IG4pCisgICAgICAgICAgICAgICAgIHF1aW50MzIgb3BhcmcgPSAw OworICAgICAgICAgICAgICAgICBxdWludDMyIGNtcCA9IEZVVEVYX09QX0NNUF9ORTsKKyAgICAg ICAgICAgICAgICAgcXVpbnQzMiBjbXBhcmcgPSAwOworLSAgICAgICAgICAgICAgICB1LmZldGNo QW5kQW5kUmVsZWFzZShmdXRleE5lZWRzV2FrZUFsbEJpdCAtIDEpOworICAgICAgICAgICAgICAg ICBmdXRleFdha2VPcCgqZnV0ZXhMb3czMigmdSksIG4sIElOVF9NQVgsICpmdXRleEhpZ2gzMigm dSksIEZVVEVYX09QKG9wLCBvcGFyZywgY21wLCBjbXBhcmcpKTsKKyAgICAgICAgICAgICAgICAg cmV0dXJuOworICAgICAgICAgICAgIH0KK0BAIC0zODgsNyArMzkyLDYgQEAgdm9pZCBRU2VtYXBo b3JlOjpyZWxlYXNlKGludCBuKQorICAgICAgICAgICAgIC8vICAgIGl0cyBhY3F1aXNpdGlvbiBh bnl3YXksIHNvIGl0IGhhcyB0byB3YWl0OworICAgICAgICAgICAgIC8vIDIpIGl0IGRpZCBub3Qg c2VlIHRoZSBuZXcgY291bnRlciB2YWx1ZSwgaW4gd2hpY2ggY2FzZSBpdHMKKyAgICAgICAgICAg ICAvLyAgICBmdXRleFdhaXQgd2lsbCBmYWlsLgorLSAgICAgICAgICAgIHUuZmV0Y2hBbmRBbmRS ZWxlYXNlKGZ1dGV4TmVlZHNXYWtlQWxsQml0IC0gMSk7CisgICAgICAgICAgICAgaWYgKGZ1dGV4 SGFzV2FpdGVyQ291bnQpIHsKKyAgICAgICAgICAgICAgICAgZnV0ZXhXYWtlQWxsKCpmdXRleExv dzMyKCZ1KSk7CisgICAgICAgICAgICAgICAgIGZ1dGV4V2FrZUFsbCgqZnV0ZXhIaWdoMzIoJnUp KTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfcC5oIGIv cXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3AuaAoraW5kZXggYjJkMTYyOGU2ZS4u ZjMyZjZmMDQ2MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVh ZF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF9wLmgKK0BAIC0x NzQsNyArMTc0LDcgQEAgcHVibGljOgorICAgICBpbnQgcmV0dXJuQ29kZTsKKyAKKyAgICAgdWlu dCBzdGFja1NpemU7CistICAgIFFUaHJlYWQ6OlByaW9yaXR5IHByaW9yaXR5OworKyAgICBzdGQ6 OnVuZGVybHlpbmdfdHlwZTxRVGhyZWFkOjpQcmlvcml0eT46OnR5cGUgcHJpb3JpdHk7CisgCisg ICAgIHN0YXRpYyBRVGhyZWFkICp0aHJlYWRGb3JJZChpbnQgaWQpOworIAorQEAgLTIxMyw2ICsy MTMsMTMgQEAgcHVibGljOgorICAgICAgICAgICAgIFFDb3JlQXBwbGljYXRpb246Omluc3RhbmNl KCktPnBvc3RFdmVudChxX3B0ciwgbmV3IFFFdmVudChRRXZlbnQ6OlF1aXQpKTsKKyAgICAgICAg IH0KKyAgICAgfQorKworKyNpZm5kZWYgUV9PU19JTlRFR1JJVFkKKytwcml2YXRlOgorKyAgICAv LyBVc2VkIGluIFFUaHJlYWQoUHJpdmF0ZSk6OnN0YXJ0IHRvIGF2b2lkIHJhY3kgYWNjZXNzIHRv IFFPYmplY3Q6Om9iamVjdE5hbWUsCisrICAgIC8vIHVuc2V0IGFmdGVyd2FyZHMuIE9uIElOVEVH UklUWSB3ZSBzZXQgdGhlIHRocmVhZCBuYW1lIGJlZm9yZSBzdGFydGluZyBpdC4KKysgICAgUVN0 cmluZyBvYmplY3ROYW1lOworKyNlbmRpZgorIH07CisgCisgI2Vsc2UgLy8gUVRfQ09ORklHKHRo cmVhZCkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfdW5p eC5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfdW5peC5jcHAKK2luZGV4 IDU2YThlMGEwMzguLjYxMDExN2E2NDAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIv dGhyZWFkL3F0aHJlYWRfdW5peC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQv cXRocmVhZF91bml4LmNwcAorQEAgLTE2OSw4ICsxNjksNyBAQCBzdGF0aWMgdm9pZCBzZXRfdGhy ZWFkX2RhdGEoUVRocmVhZERhdGEgKmRhdGEpCisgCisgc3RhdGljIHZvaWQgY2xlYXJfdGhyZWFk X2RhdGEoKQorIHsKKy0gICAgY3VycmVudFRocmVhZERhdGEgPSBudWxscHRyOworLSAgICBwdGhy ZWFkX3NldHNwZWNpZmljKGN1cnJlbnRfdGhyZWFkX2RhdGFfa2V5LCBudWxscHRyKTsKKysgICAg c2V0X3RocmVhZF9kYXRhKG51bGxwdHIpOworIH0KKyAKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K K0BAIC0yOTYsNyArMjk1LDcgQEAgdm9pZCAqUVRocmVhZFByaXZhdGU6OnN0YXJ0KHZvaWQgKmFy ZykKKyAgICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKCZ0aHItPmRfZnVuYygpLT5tdXRl eCk7CisgCisgICAgICAgICAgICAgLy8gZG8gd2UgbmVlZCB0byByZXNldCB0aGUgdGhyZWFkIHBy aW9yaXR5PworLSAgICAgICAgICAgIGlmIChpbnQodGhyLT5kX2Z1bmMoKS0+cHJpb3JpdHkpICYg VGhyZWFkUHJpb3JpdHlSZXNldEZsYWcpIHsKKysgICAgICAgICAgICBpZiAodGhyLT5kX2Z1bmMo KS0+cHJpb3JpdHkgJiBUaHJlYWRQcmlvcml0eVJlc2V0RmxhZykgeworICAgICAgICAgICAgICAg ICB0aHItPmRfZnVuYygpLT5zZXRQcmlvcml0eShRVGhyZWFkOjpQcmlvcml0eSh0aHItPmRfZnVu YygpLT5wcmlvcml0eSAmIH5UaHJlYWRQcmlvcml0eVJlc2V0RmxhZykpOworICAgICAgICAgICAg IH0KKyAKK0BAIC0zMTYsMTAgKzMxNSwxMCBAQCB2b2lkICpRVGhyZWFkUHJpdmF0ZTo6c3RhcnQo dm9pZCAqYXJnKQorICAgICAgICAgICAgIC8vIFNldHMgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQg dGhyZWFkLiBXZSBjYW4gb25seSBkbyB0aGlzCisgICAgICAgICAgICAgLy8gd2hlbiB0aGUgdGhy ZWFkIGlzIHN0YXJ0aW5nLCBhcyB3ZSBkb24ndCBoYXZlIGEgY3Jvc3MKKyAgICAgICAgICAgICAv LyBwbGF0Zm9ybSB3YXkgb2Ygc2V0dGluZyB0aGUgbmFtZSBvZiBhbiBhcmJpdHJhcnkgdGhyZWFk LgorLSAgICAgICAgICAgIGlmIChRX0xJS0VMWSh0aHItPm9iamVjdE5hbWUoKS5pc0VtcHR5KCkp KQorKyAgICAgICAgICAgIGlmIChRX0xJS0VMWSh0aHItPmRfZnVuYygpLT5vYmplY3ROYW1lLmlz RW1wdHkoKSkpCisgICAgICAgICAgICAgICAgIHNldEN1cnJlbnRUaHJlYWROYW1lKHRoci0+bWV0 YU9iamVjdCgpLT5jbGFzc05hbWUoKSk7CisgICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAg ICAgICBzZXRDdXJyZW50VGhyZWFkTmFtZSh0aHItPm9iamVjdE5hbWUoKS50b0xvY2FsOEJpdCgp KTsKKysgICAgICAgICAgICAgICAgc2V0Q3VycmVudFRocmVhZE5hbWUoc3RkOjpleGNoYW5nZSh0 aHItPmRfZnVuYygpLT5vYmplY3ROYW1lLCB7fSkudG9Mb2NhbDhCaXQoKSk7CisgICAgICAgICB9 CisgI2VuZGlmCisgCitAQCAtNjcxLDcgKzY3MCw3IEBAIHZvaWQgUVRocmVhZDo6c3RhcnQoUHJp b3JpdHkgcHJpb3JpdHkpCisgICAgICAgICAgICAgICAgIC8vIGNvdWxkIG5vdCBzZXQgc2NoZWR1 bGluZyBoaW50cywgZmFsbGJhY2sgdG8gaW5oZXJpdGluZyB0aGVtCisgICAgICAgICAgICAgICAg IC8vIHdlJ2xsIHRyeSBhZ2FpbiBmcm9tIGluc2lkZSB0aGUgdGhyZWFkCisgICAgICAgICAgICAg ICAgIHB0aHJlYWRfYXR0cl9zZXRpbmhlcml0c2NoZWQoJmF0dHIsIFBUSFJFQURfSU5IRVJJVF9T Q0hFRCk7CistICAgICAgICAgICAgICAgIGQtPnByaW9yaXR5ID0gUHJpb3JpdHkocHJpb3JpdHkg fCBUaHJlYWRQcmlvcml0eVJlc2V0RmxhZyk7CisrICAgICAgICAgICAgICAgIGQtPnByaW9yaXR5 ID0gc3RhdGljX2Nhc3Q8c3RkOjp1bmRlcmx5aW5nX3R5cGU8UVRocmVhZDo6UHJpb3JpdHk+Ojp0 eXBlPihwcmlvcml0eSkgfCBUaHJlYWRQcmlvcml0eVJlc2V0RmxhZzsKKyAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CitAQCAtNzAyLDcgKzcwMSwxMCBAQCB2 b2lkIFFUaHJlYWQ6OnN0YXJ0KFByaW9yaXR5IHByaW9yaXR5KQorICAgICAgICAgcHRocmVhZF9h dHRyX3NldHRocmVhZG5hbWUoJmF0dHIsIG1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkpOworICAg ICBlbHNlCisgICAgICAgICBwdGhyZWFkX2F0dHJfc2V0dGhyZWFkbmFtZSgmYXR0ciwgb2JqZWN0 TmFtZSgpLnRvTG9jYWw4Qml0KCkpOworKyNlbHNlCisrICAgIGQtPm9iamVjdE5hbWUgPSBvYmpl Y3ROYW1lKCk7CisgI2VuZGlmCisrCisgICAgIHB0aHJlYWRfdCB0aHJlYWRJZDsKKyAgICAgaW50 IGNvZGUgPSBwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkSWQsICZhdHRyLCBRVGhyZWFkUHJpdmF0ZTo6 c3RhcnQsIHRoaXMpOworICAgICBpZiAoY29kZSA9PSBFUEVSTSkgeworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF93aW4uY3BwIGIvcXRiYXNlL3NyYy9jb3Jl bGliL3RocmVhZC9xdGhyZWFkX3dpbi5jcHAKK2luZGV4IGJjNzBlMzE3OGEuLjRlNzY5NzI0OTgg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfd2luLmNwcAor KysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3dpbi5jcHAKK0BAIC0zOTQs MTAgKzM5NCw5IEBAIHVuc2lnbmVkIGludCBfX3N0ZGNhbGwgUVRfRU5TVVJFX1NUQUNLX0FMSUdO RURfRk9SX1NTRSBRVGhyZWFkUHJpdmF0ZTo6c3RhcnQodm9pCisgCisgI2lmICFkZWZpbmVkKFFU X05PX0RFQlVHKSAmJiBkZWZpbmVkKFFfQ0NfTVNWQykgJiYgIWRlZmluZWQoUV9PU19XSU5SVCkK KyAgICAgLy8gc2V0cyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCB0aHJlYWQuCistICAgIFFCeXRl QXJyYXkgb2JqZWN0TmFtZSA9IHRoci0+b2JqZWN0TmFtZSgpLnRvTG9jYWw4Qml0KCk7CistICAg IHF0X3NldF90aHJlYWRfbmFtZShIQU5ETEUoLTEpLAorLSAgICAgICAgICAgICAgICAgICAgICAg b2JqZWN0TmFtZS5pc0VtcHR5KCkgPworLSAgICAgICAgICAgICAgICAgICAgICAgdGhyLT5tZXRh T2JqZWN0KCktPmNsYXNzTmFtZSgpIDogb2JqZWN0TmFtZS5jb25zdERhdGEoKSk7CisrICAgIHF0 X3NldF90aHJlYWRfbmFtZShIQU5ETEUoLTEpLCB0aHItPmRfZnVuYygpLT5vYmplY3ROYW1lLmlz RW1wdHkoKQorKyAgICAgICAgICAgICAgICAgICAgICAgID8gdGhyLT5tZXRhT2JqZWN0KCktPmNs YXNzTmFtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgOiBzdGQ6OmV4Y2hhbmdlKHRoci0+ ZF9mdW5jKCktPm9iamVjdE5hbWUsIHt9KS50b0xvY2FsOEJpdCgpLmNvbnN0RGF0YSgpKTsKKyAj ZW5kaWYKKyAKKyAgICAgZW1pdCB0aHItPnN0YXJ0ZWQoUVRocmVhZDo6UVByaXZhdGVTaWduYWwo KSk7CitAQCAtNTAzLDYgKzUwMiw3IEBAIHZvaWQgUVRocmVhZDo6c3RhcnQoUHJpb3JpdHkgcHJp b3JpdHkpCisgICAgIGlmIChkLT5ydW5uaW5nKQorICAgICAgICAgcmV0dXJuOworIAorKyAgICBk LT5vYmplY3ROYW1lID0gb2JqZWN0TmFtZSgpOworICAgICBkLT5ydW5uaW5nID0gdHJ1ZTsKKyAg ICAgZC0+ZmluaXNoZWQgPSBmYWxzZTsKKyAgICAgZC0+ZXhpdGVkID0gZmFsc2U7CitAQCAtNTQ4 LDcgKzU0OCw3IEBAIHZvaWQgUVRocmVhZDo6c3RhcnQoUHJpb3JpdHkgcHJpb3JpdHkpCisgCisg ICAgIGludCBwcmlvOworICAgICBkLT5wcmlvcml0eSA9IHByaW9yaXR5OworLSAgICBzd2l0Y2gg KGQtPnByaW9yaXR5KSB7CisrICAgIHN3aXRjaCAocHJpb3JpdHkpIHsKKyAgICAgY2FzZSBJZGxl UHJpb3JpdHk6CisgICAgICAgICBwcmlvID0gVEhSRUFEX1BSSU9SSVRZX0lETEU7CisgICAgICAg ICBicmVhazsKK0BAIC02ODYsNyArNjg2LDcgQEAgdm9pZCBRVGhyZWFkUHJpdmF0ZTo6c2V0UHJp b3JpdHkoUVRocmVhZDo6UHJpb3JpdHkgdGhyZWFkUHJpb3JpdHkpCisgCisgICAgIGludCBwcmlv OworICAgICBwcmlvcml0eSA9IHRocmVhZFByaW9yaXR5OworLSAgICBzd2l0Y2ggKHByaW9yaXR5 KSB7CisrICAgIHN3aXRjaCAodGhyZWFkUHJpb3JpdHkpIHsKKyAgICAgY2FzZSBRVGhyZWFkOjpJ ZGxlUHJpb3JpdHk6CisgICAgICAgICBwcmlvID0gVEhSRUFEX1BSSU9SSVRZX0lETEU7CisgICAg ICAgICBicmVhazsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0c2Fu X2ltcGwuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRzYW5faW1wbC5oCituZXcgZmls ZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNTgwYTczOGI5MQorLS0tIC9kZXYvbnVs bAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdHNhbl9pbXBsLmgKK0BAIC0wLDAg KzEsMTE1IEBACisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysqKgorKyoqIENvcHlyaWdodCAoQykg MjAxNyBJbnRlbCBDb3Jwb3JhdGlvbi4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjIgS2xhcsOkbHZk YWxlbnMgRGF0YWtvbnN1bHQgQUIsIGEgS0RBQiBHcm91cCBjb21wYW55LCBpbmZvQGtkYWIuY29t LCBhdXRob3IgR2l1c2VwcGUgRCdBbmdlbG8gPGdpdXNlcHBlLmRhbmdlbG9Aa2RhYi5jb20+Cisr KiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworKyoqCisrKiogVGhpcyBm aWxlIGlzIHBhcnQgb2YgdGhlIFF0Q29yZSBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCisrKioK KysqKiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2Fn ZQorKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5 IHVzZSB0aGlzIGZpbGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGlj ZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJu YXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBh IHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxp Y2Vuc2luZyB0ZXJtcworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90 ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29u dGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0 aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCisr KiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJ Q0VOU0UuTEdQTDMgaW5jbHVkZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4g UGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisrKiogZW5zdXJlIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50 cworKyoqIHdpbGwgYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4w Lmh0bWwuCisrKioKKysqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFs dGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVQorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIg b3B0aW9uKSB0aGUgR05VIEdlbmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3Ig YW55IGxhdGVyIHZlcnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisrKiogUXQgRm91bmRh dGlvbi4gVGhlIGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUK KysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFu ZCBMSUNFTlNFLkdQTDMKKysqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmls ZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRpb24gdG8gZW5zdXJl IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAorKyoqIGJl IG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCisrKiog aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisrKioKKysqKiAkUVRf RU5EX0xJQ0VOU0UkCisrKioKKysqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNpZm5kZWYgUVRT QU5fSU1QTF9ICisrI2RlZmluZSBRVFNBTl9JTVBMX0gKKysKKysjaW5jbHVkZSA8UXRDb3JlL3Fn bG9iYWwuaD4KKysKKysjaWYgKF9faGFzX2ZlYXR1cmUodGhyZWFkX3Nhbml0aXplcikgfHwgZGVm aW5lZChfX1NBTklUSVpFX1RIUkVBRF9fKSkgJiYgX19oYXNfaW5jbHVkZSg8c2FuaXRpemVyL3Rz YW5faW50ZXJmYWNlLmg+KQorKyMgIGRlZmluZSBRVF9CVUlMRElOR19VTkRFUl9UU0FOCisrIyAg aW5jbHVkZSA8c2FuaXRpemVyL3RzYW5faW50ZXJmYWNlLmg+CisrI2VuZGlmCisrCisrUVRfQkVH SU5fTkFNRVNQQUNFCisrCisrbmFtZXNwYWNlIFF0VHNhbiB7CisrI2lmZGVmIFFUX0JVSUxESU5H X1VOREVSX1RTQU4KKytpbmxpbmUgdm9pZCBmdXRleEFjcXVpcmUodm9pZCAqYWRkciwgdm9pZCAq YWRkcjIgPSBudWxscHRyKQorK3sKKysgICAgLy8gQSBmdXRleCBjYWxsIGVuc3VyZXMgdG90YWwg b3JkZXJpbmcgb24gdGhlIGZ1dGV4IHdvcmRzCisrICAgIC8vIChpbiBlaXRoZXIgc3VjY2VzcyBv ciBmYWlsdXJlIG9mIHRoZSBjYWxsKS4gSW5zdHJ1Y3QgVFNBTiBhY2NvcmRpbmdseSwKKysgICAg Ly8gYXMgVFNBTiBkb2VzIG5vdCB1bmRlcnN0YW5kIHRoZSBmdXRleCgyKSBzeXNjYWxsIChvciBl cXVpdmFsZW50KS4KKysgICAgOjpfX3RzYW5fYWNxdWlyZShhZGRyKTsKKysgICAgaWYgKGFkZHIy KQorKyAgICAgICAgOjpfX3RzYW5fYWNxdWlyZShhZGRyMik7CisrfQorKworK2lubGluZSB2b2lk IGZ1dGV4UmVsZWFzZSh2b2lkICphZGRyLCB2b2lkICphZGRyMiA9IG51bGxwdHIpCisreworKyAg ICBpZiAoYWRkcjIpCisrICAgICAgICA6Ol9fdHNhbl9yZWxlYXNlKGFkZHIyKTsKKysgICAgOjpf X3RzYW5fcmVsZWFzZShhZGRyKTsKKyt9CisrCisraW5saW5lIHZvaWQgbXV0ZXhQcmVMb2NrKHZv aWQgKmFkZHIsIHVuc2lnbmVkIGZsYWdzKQorK3sKKysgICAgOjpfX3RzYW5fbXV0ZXhfcHJlX2xv Y2soYWRkciwgZmxhZ3MpOworK30KKysKKytpbmxpbmUgdm9pZCBtdXRleFBvc3RMb2NrKHZvaWQg KmFkZHIsIHVuc2lnbmVkIGZsYWdzLCBpbnQgcmVjdXJzaW9uKQorK3sKKysgICAgOjpfX3RzYW5f bXV0ZXhfcG9zdF9sb2NrKGFkZHIsIGZsYWdzLCByZWN1cnNpb24pOworK30KKysKKytpbmxpbmUg dm9pZCBtdXRleFByZVVubG9jayh2b2lkICphZGRyLCB1bnNpZ25lZCBmbGFncykKKyt7CisrICAg IDo6X190c2FuX211dGV4X3ByZV91bmxvY2soYWRkciwgZmxhZ3MpOworK30KKysKKytpbmxpbmUg dm9pZCBtdXRleFBvc3RVbmxvY2sodm9pZCAqYWRkciwgdW5zaWduZWQgZmxhZ3MpCisreworKyAg ICA6Ol9fdHNhbl9tdXRleF9wb3N0X3VubG9jayhhZGRyLCBmbGFncyk7CisrfQorKworK2VudW0g OiB1bnNpZ25lZCB7CisrICAgIE11dGV4V3JpdGVSZWVudHJhbnQgPSA6Ol9fdHNhbl9tdXRleF93 cml0ZV9yZWVudHJhbnQsCisrICAgIFRyeUxvY2sgPSA6Ol9fdHNhbl9tdXRleF90cnlfbG9jaywK KysgICAgVHJ5TG9ja0ZhaWxlZCA9IDo6X190c2FuX211dGV4X3RyeV9sb2NrX2ZhaWxlZCwKKyt9 OworKyNlbHNlCisraW5saW5lIHZvaWQgZnV0ZXhBY3F1aXJlKHZvaWQgKiwgdm9pZCAqID0gbnVs bHB0cikge30KKytpbmxpbmUgdm9pZCBmdXRleFJlbGVhc2Uodm9pZCAqLCB2b2lkICogPSBudWxs cHRyKSB7fQorKworK2VudW0gOiB1bnNpZ25lZCB7CisrICAgIE11dGV4V3JpdGVSZWVudHJhbnQs CisrICAgIFRyeUxvY2ssCisrICAgIFRyeUxvY2tGYWlsZWQsCisrfTsKKytpbmxpbmUgdm9pZCBt dXRleFByZUxvY2sodm9pZCAqLCB1bnNpZ25lZCkge30KKytpbmxpbmUgdm9pZCBtdXRleFBvc3RM b2NrKHZvaWQgKiwgdW5zaWduZWQsIGludCkge30KKytpbmxpbmUgdm9pZCBtdXRleFByZVVubG9j ayh2b2lkICosIHVuc2lnbmVkKSB7fQorK2lubGluZSB2b2lkIG11dGV4UG9zdFVubG9jayh2b2lk ICosIHVuc2lnbmVkKSB7fQorKyNlbmRpZiAvLyBRVF9CVUlMRElOR19VTkRFUl9UU0FOCisrfSAv LyBuYW1lc3BhY2UgUXRUc2FuCisrCisrUVRfRU5EX05BTUVTUEFDRQorKworKyNlbmRpZiAvLyBR VFNBTl9JTVBMX0gKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F3YWl0 Y29uZGl0aW9uX3VuaXguY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xd2FpdGNvbmRp dGlvbl91bml4LmNwcAoraW5kZXggODhiMDU4ZjQxMC4uMGYxZGE0ZGM5YiAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXdhaXRjb25kaXRpb25fdW5peC5jcHAKKysrKyBi L3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXdhaXRjb25kaXRpb25fdW5peC5jcHAKK0BAIC0y MTMsNyArMjEzLDcgQEAgYm9vbCBRV2FpdENvbmRpdGlvbjo6d2FpdChRTXV0ZXggKm11dGV4LCBR RGVhZGxpbmVUaW1lciBkZWFkbGluZSkKKyB7CisgICAgIGlmICghIG11dGV4KQorICAgICAgICAg cmV0dXJuIGZhbHNlOworLSAgICBpZiAobXV0ZXgtPmlzUmVjdXJzaXZlKCkpIHsKKysgICAgaWYg KHN0YXRpY19jYXN0PFFCYXNpY011dGV4ICo+KG11dGV4KS0+aXNSZWN1cnNpdmUoKSkgeworICAg ICAgICAgcVdhcm5pbmcoIlFXYWl0Q29uZGl0aW9uOiBjYW5ub3Qgd2FpdCBvbiByZWN1cnNpdmUg bXV0ZXhlcyIpOworICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcWRhdGV0aW1lLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxp Yi90aW1lL3FkYXRldGltZS5jcHAKK2luZGV4IGVjMTI1NjllM2YuLjJjMGIwOTgwNzkgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xZGF0ZXRpbWUuY3BwCisrKysgYi9xdGJh c2Uvc3JjL2NvcmVsaWIvdGltZS9xZGF0ZXRpbWUuY3BwCitAQCAtNDMsNiArNDMsNyBAQAorICNp ZiBRVF9DT05GSUcoZGF0ZXRpbWVwYXJzZXIpCisgI2luY2x1ZGUgInByaXZhdGUvcWRhdGV0aW1l cGFyc2VyX3AuaCIKKyAjZW5kaWYKKysjaW5jbHVkZSA8cHJpdmF0ZS9xbnVtZXJpY19wLmg+Cisg CisgI2luY2x1ZGUgInFkYXRhc3RyZWFtLmgiCisgI2luY2x1ZGUgInFzZXQuaCIKK0BAIC0xNDI5 LDkgKzE0MzAsMTEgQEAgUURhdGUgUURhdGU6OmFkZERheXMocWludDY0IG5kYXlzKSBjb25zdAor ICAgICBpZiAoaXNOdWxsKCkpCisgICAgICAgICByZXR1cm4gUURhdGUoKTsKKyAKKy0gICAgLy8g RHVlIHRvIGxpbWl0cyBvbiBtaW5KZCgpIGFuZCBtYXhKZCgpIHdlIGtub3cgdGhhdCBhbnkgb3Zl cmZsb3cKKy0gICAgLy8gd2lsbCBiZSBpbnZhbGlkIGFuZCBjYXVnaHQgYnkgZnJvbUp1bGlhbkRh eSgpLgorLSAgICByZXR1cm4gZnJvbUp1bGlhbkRheShqZCArIG5kYXlzKTsKKysgICAgcWludDY0 IHI7CisrICAgIGlmIChRX1VOTElLRUxZKGFkZF9vdmVyZmxvdyhqZCwgbmRheXMsICZyKSkpCisr ICAgICAgICByZXR1cm4gUURhdGUoKTsKKysgICAgZWxzZQorKyAgICAgICAgcmV0dXJuIGZyb21K dWxpYW5EYXkocik7CisgfQorIAorIC8qIQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxp Yi90aW1lL3F0aW1lem9uZS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmUu Y3BwCitpbmRleCAwMzA5ZTQzZTUyLi4zZDQ1MTY5NmExIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9jb3JlbGliL3RpbWUvcXRpbWV6b25lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3Rp bWUvcXRpbWV6b25lLmNwcAorQEAgLTEsNiArMSw2IEBACisgLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK KyAqKgorLSoqIENvcHlyaWdodCAoQykgMjAxMyBKb2huIExheXQgPGpsYXl0QGtkZS5vcmc+Cisr KiogQ29weXJpZ2h0IChDKSAyMDIwIEpvaG4gTGF5dCA8amxheXRAa2RlLm9yZz4KKyAqKiBDb250 YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlzIGZpbGUgaXMg cGFydCBvZiB0aGUgUXRDb3JlIG1vZHVsZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC05NzUsOSAr OTc1LDE1IEBAIFFMaXN0PFFCeXRlQXJyYXk+IFFUaW1lWm9uZTo6d2luZG93c0lkVG9JYW5hSWRz KGNvbnN0IFFCeXRlQXJyYXkgJndpbmRvd3NJZCwKKyB9CisgCisgI2lmbmRlZiBRVF9OT19EQVRB U1RSRUFNCisrLy8gSW52YWxpZCwgYXMgYW4gSUFOQSBJRDogdG9vIGxvbmcsIHN0YXJ0cyB3aXRo IC0gYW5kIGhhcyBvdGhlciBpbnZhbGlkIGNoYXJhY3RlcnMgaW4gaXQKKytzdGF0aWMgaW5saW5l IFFTdHJpbmcgaW52YWxpZElkKCkgeyByZXR1cm4gUVN0cmluZ0xpdGVyYWwoIi1ObyBUaW1lIFpv bmUgU3BlY2lmaWVkISIpOyB9CisrCisgUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoUURhdGFTdHJl YW0gJmRzLCBjb25zdCBRVGltZVpvbmUgJnR6KQorIHsKKy0gICAgdHouZC0+c2VyaWFsaXplKGRz KTsKKysgICAgaWYgKHR6LmlzVmFsaWQoKSkKKysgICAgICAgIHR6LmQtPnNlcmlhbGl6ZShkcyk7 CisrICAgIGVsc2UKKysgICAgICAgIGRzIDw8IGludmFsaWRJZCgpOworICAgICByZXR1cm4gZHM7 CisgfQorIAorQEAgLTk4NSw3ICs5OTEsOSBAQCBRRGF0YVN0cmVhbSAmb3BlcmF0b3I+PihRRGF0 YVN0cmVhbSAmZHMsIFFUaW1lWm9uZSAmdHopCisgeworICAgICBRU3RyaW5nIGlhbmFJZDsKKyAg ICAgZHMgPj4gaWFuYUlkOworLSAgICBpZiAoaWFuYUlkID09IFFMYXRpbjFTdHJpbmcoIk9mZnNl dEZyb21VdGMiKSkgeworKyAgICBpZiAoaWFuYUlkID09IGludmFsaWRJZCgpKSB7CisrICAgICAg ICB0eiA9IFFUaW1lWm9uZSgpOworKyAgICB9IGVsc2UgaWYgKGlhbmFJZCA9PSBRTGF0aW4xU3Ry aW5nKCJPZmZzZXRGcm9tVXRjIikpIHsKKyAgICAgICAgIGludCB1dGNPZmZzZXQ7CisgICAgICAg ICBRU3RyaW5nIG5hbWU7CisgICAgICAgICBRU3RyaW5nIGFiYnJldmlhdGlvbjsKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmVwcml2YXRlX3R6LmNwcCBiL3F0 YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0aW1lem9uZXByaXZhdGVfdHouY3BwCitpbmRleCBiMTYx MWQ3ZGRiLi5hN2E2YTcyY2NmIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUv cXRpbWV6b25lcHJpdmF0ZV90ei5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0 aW1lem9uZXByaXZhdGVfdHouY3BwCitAQCAtNDIsNiArNDIsNyBAQAorICNpbmNsdWRlICJxdGlt ZXpvbmUuaCIKKyAjaW5jbHVkZSAicXRpbWV6b25lcHJpdmF0ZV9wLmgiCisgI2luY2x1ZGUgInBy aXZhdGUvcWxvY2FsZV90b29sc19wLmgiCisrI2luY2x1ZGUgInByaXZhdGUvcWxvY2tpbmdfcC5o IgorIAorICNpbmNsdWRlIDxRdENvcmUvUURhdGFTdHJlYW0+CisgI2luY2x1ZGUgPFF0Q29yZS9R RGF0ZVRpbWU+CitAQCAtNjIsNiArNjMsMTAgQEAKKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAK KysjaWYgUVRfQ09ORklHKGljdSkKKytzdGF0aWMgUUJhc2ljTXV0ZXggc19pY3VfbXV0ZXg7Cisr I2VuZGlmCisrCisgLyoKKyAgICAgUHJpdmF0ZQorIAorQEAgLTY3MCw2ICs2NzUsOSBAQCBRVHpU aW1lWm9uZVByaXZhdGU6On5RVHpUaW1lWm9uZVByaXZhdGUoKQorIAorIFFUelRpbWVab25lUHJp dmF0ZSAqUVR6VGltZVpvbmVQcml2YXRlOjpjbG9uZSgpIGNvbnN0CisgeworKyNpZiBRVF9DT05G SUcoaWN1KQorKyAgICBjb25zdCBhdXRvIGxvY2sgPSBxdF9zY29wZWRfbG9jayhzX2ljdV9tdXRl eCk7CisrI2VuZGlmCisgICAgIHJldHVybiBuZXcgUVR6VGltZVpvbmVQcml2YXRlKCp0aGlzKTsK KyB9CisgCitAQCAtOTEzLDEyICs5MjEsMTQgQEAgUVN0cmluZyBRVHpUaW1lWm9uZVByaXZhdGU6 OmRpc3BsYXlOYW1lKHFpbnQ2NCBhdE1TZWNzU2luY2VFcG9jaCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUUxvY2FsZSAmbG9jYWxlKSBjb25zdAorIHsK KyAjaWYgUVRfQ09ORklHKGljdSkKKysgICAgYXV0byBsb2NrID0gcXRfdW5pcXVlX2xvY2soc19p Y3VfbXV0ZXgpOworICAgICBpZiAoIW1faWN1KQorICAgICAgICAgbV9pY3UgPSBuZXcgUUljdVRp bWVab25lUHJpdmF0ZShtX2lkKTsKKyAgICAgLy8gVE9ETyBzbWFsbCByaXNrIG1heSBub3QgbWF0 Y2ggaWYgdHJhbiB0aW1lcyBkaWZmZXIgZHVlIHRvIG91dGRhdGVkIGZpbGVzCisgICAgIC8vIFRP RE8gU29tZSB2YWxpZCBUWiBuYW1lcyBhcmUgbm90IHZhbGlkIElDVSBuYW1lcywgdXNlIHRyYW5z bGF0aW9uIHRhYmxlPworICAgICBpZiAobV9pY3UtPmlzVmFsaWQoKSkKKyAgICAgICAgIHJldHVy biBtX2ljdS0+ZGlzcGxheU5hbWUoYXRNU2Vjc1NpbmNlRXBvY2gsIG5hbWVUeXBlLCBsb2NhbGUp OworKyAgICBsb2NrLnVubG9jaygpOworICNlbHNlCisgICAgIFFfVU5VU0VEKG5hbWVUeXBlKQor ICAgICBRX1VOVVNFRChsb2NhbGUpCitAQCAtOTMyLDEyICs5NDIsMTQgQEAgUVN0cmluZyBRVHpU aW1lWm9uZVByaXZhdGU6OmRpc3BsYXlOYW1lKFFUaW1lWm9uZTo6VGltZVR5cGUgdGltZVR5cGUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFMb2NhbGUg JmxvY2FsZSkgY29uc3QKKyB7CisgI2lmIFFUX0NPTkZJRyhpY3UpCisrICAgIGF1dG8gbG9jayA9 IHF0X3VuaXF1ZV9sb2NrKHNfaWN1X211dGV4KTsKKyAgICAgaWYgKCFtX2ljdSkKKyAgICAgICAg IG1faWN1ID0gbmV3IFFJY3VUaW1lWm9uZVByaXZhdGUobV9pZCk7CisgICAgIC8vIFRPRE8gc21h bGwgcmlzayBtYXkgbm90IG1hdGNoIGlmIHRyYW4gdGltZXMgZGlmZmVyIGR1ZSB0byBvdXRkYXRl ZCBmaWxlcworICAgICAvLyBUT0RPIFNvbWUgdmFsaWQgVFogbmFtZXMgYXJlIG5vdCB2YWxpZCBJ Q1UgbmFtZXMsIHVzZSB0cmFuc2xhdGlvbiB0YWJsZT8KKyAgICAgaWYgKG1faWN1LT5pc1ZhbGlk KCkpCisgICAgICAgICByZXR1cm4gbV9pY3UtPmRpc3BsYXlOYW1lKHRpbWVUeXBlLCBuYW1lVHlw ZSwgbG9jYWxlKTsKKysgICAgbG9jay51bmxvY2soKTsKKyAjZWxzZQorICAgICBRX1VOVVNFRCh0 aW1lVHlwZSkKKyAgICAgUV9VTlVTRUQobmFtZVR5cGUpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9jb3JlbGliL3Rvb2xzL3FhcnJheWRhdGEuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9x YXJyYXlkYXRhLmgKK2luZGV4IGRjZDk1OTI0YzEuLmQwMTczOWU3ZTYgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWFycmF5ZGF0YS5oCisrKysgYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvdG9vbHMvcWFycmF5ZGF0YS5oCitAQCAtNDIsNiArNDIsNyBAQAorIAorICNpbmNsdWRl IDxRdENvcmUvcXJlZmNvdW50Lmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxj c3RkaW50PgorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorQEAgLTU4LDE0ICs1OSwxNCBAQCBz dHJ1Y3QgUV9DT1JFX0VYUE9SVCBRQXJyYXlEYXRhCisgICAgIHsKKyAgICAgICAgIFFfQVNTRVJU KHNpemUgPT0gMAorICAgICAgICAgICAgICAgICB8fCBvZmZzZXQgPCAwIHx8IHNpemVfdChvZmZz ZXQpID49IHNpemVvZihRQXJyYXlEYXRhKSk7CistICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRf Y2FzdDxjaGFyICo+KHRoaXMpICsgb2Zmc2V0OworKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0 X2Nhc3Q8dm9pZCAqPiAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpICsgb2Zmc2V0 KTsKKyAgICAgfQorIAorICAgICBjb25zdCB2b2lkICpkYXRhKCkgY29uc3QKKyAgICAgeworICAg ICAgICAgUV9BU1NFUlQoc2l6ZSA9PSAwCisgICAgICAgICAgICAgICAgIHx8IG9mZnNldCA8IDAg fHwgc2l6ZV90KG9mZnNldCkgPj0gc2l6ZW9mKFFBcnJheURhdGEpKTsKKy0gICAgICAgIHJldHVy biByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4odGhpcykgKyBvZmZzZXQ7CisrICAgICAg ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkICo+IChyZWludGVycHJldF9jYXN0PHVpbnRw dHJfdD4odGhpcykgKyBvZmZzZXQpOworICAgICB9CisgCisgICAgIC8vIFRoaXMgcmVmZXJzIHRv IGFycmF5IGRhdGEgbXV0YWJpbGl0eSwgbm90ICJoZWFkZXIgZGF0YSIgcmVwcmVzZW50ZWQgYnkK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWZyZWVsaXN0X3AuaCBiL3F0 YmFzZS9zcmMvY29yZWxpYi90b29scy9xZnJlZWxpc3RfcC5oCitpbmRleCA1YmEyM2IzNDRiLi45 OTc0MTAyMTM2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FmcmVlbGlz dF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xZnJlZWxpc3RfcC5oCitAQCAt MTYxLDcgKzE2MSw3IEBAIGNsYXNzIFFGcmVlTGlzdAorICAgICAgICAgICAgICAgICByZXR1cm4g aTsKKyAgICAgICAgICAgICB4IC09IHNpemU7CisgICAgICAgICB9CistICAgICAgICBRX0FTU0VS VChmYWxzZSk7CisrICAgICAgICBRX1VOUkVBQ0hBQkxFKCk7CisgICAgICAgICByZXR1cm4gLTE7 CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcXZlcnNp b25udW1iZXIuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xdmVyc2lvbm51bWJlci5oCitp bmRleCBkNDNiODZiYTUxLi4yODQzZjJiMDQzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3Jl bGliL3Rvb2xzL3F2ZXJzaW9ubnVtYmVyLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90b29s cy9xdmVyc2lvbm51bWJlci5oCitAQCAtMjczLDEwICsyNzMsMTAgQEAgcHVibGljOgorIAorICAg ICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIFFTdHJpbmcgdG9TdHJpbmcoKSBjb25z dDsKKyAjaWYgUVRfU1RSSU5HVklFV19MRVZFTCA8IDIKKy0gICAgUV9SRVFVSVJFRF9SRVNVTFQg UV9DT1JFX0VYUE9SVCBzdGF0aWMgUV9ERUNMX1BVUkVfRlVOQ1RJT04gUVZlcnNpb25OdW1iZXIg ZnJvbVN0cmluZyhjb25zdCBRU3RyaW5nICZzdHJpbmcsIGludCAqc3VmZml4SW5kZXggPSBudWxs cHRyKTsKKysgICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9SVCBzdGF0aWMgUVZlcnNp b25OdW1iZXIgZnJvbVN0cmluZyhjb25zdCBRU3RyaW5nICZzdHJpbmcsIGludCAqc3VmZml4SW5k ZXggPSBudWxscHRyKTsKKyAjZW5kaWYKKy0gICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VY UE9SVCBzdGF0aWMgUV9ERUNMX1BVUkVfRlVOQ1RJT04gUVZlcnNpb25OdW1iZXIgZnJvbVN0cmlu ZyhRTGF0aW4xU3RyaW5nIHN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIpOworLSAg ICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBRX0RFQ0xfUFVSRV9GVU5D VElPTiBRVmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKFFTdHJpbmdWaWV3IHN0cmluZywgaW50ICpz dWZmaXhJbmRleCA9IG51bGxwdHIpOworKyAgICBRX1JFUVVJUkVEX1JFU1VMVCBRX0NPUkVfRVhQ T1JUIHN0YXRpYyBRVmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKFFMYXRpbjFTdHJpbmcgc3RyaW5n LCBpbnQgKnN1ZmZpeEluZGV4ID0gbnVsbHB0cik7CisrICAgIFFfUkVRVUlSRURfUkVTVUxUIFFf Q09SRV9FWFBPUlQgc3RhdGljIFFWZXJzaW9uTnVtYmVyIGZyb21TdHJpbmcoUVN0cmluZ1ZpZXcg c3RyaW5nLCBpbnQgKnN1ZmZpeEluZGV4ID0gbnVsbHB0cik7CisgCisgcHJpdmF0ZToKKyAjaWZu ZGVmIFFUX05PX0RBVEFTVFJFQU0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2RidXMvcWRidXNp bnRlZ3JhdG9yLmNwcCBiL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c2ludGVncmF0b3IuY3BwCitpbmRl eCA1YjY2Y2U5NzFiLi4yOGEzYjBmZmVhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9kYnVzL3Fk YnVzaW50ZWdyYXRvci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c2ludGVncmF0b3Iu Y3BwCitAQCAtMTEzNSw3ICsxMTM1LDEzIEBAIHZvaWQgUURCdXNDb25uZWN0aW9uUHJpdmF0ZTo6 Y2xvc2VDb25uZWN0aW9uKCkKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICBxRGVsZXRlQWxs KHBlbmRpbmdDYWxscyk7CisrICAgIGZvciAoYXV0byBpdCA9IHBlbmRpbmdDYWxscy5iZWdpbigp OyBpdCAhPSBwZW5kaW5nQ2FsbHMuZW5kKCk7ICsraXQpIHsKKysgICAgICAgIGF1dG8gY2FsbCA9 ICppdDsKKysgICAgICAgIGlmICghY2FsbC0+cmVmLmRlcmVmKCkpIHsKKysgICAgICAgICAgICBk ZWxldGUgY2FsbDsKKysgICAgICAgIH0KKysgICAgfQorKyAgICBwZW5kaW5nQ2FsbHMuY2xlYXIo KTsKKyAKKyAgICAgLy8gRGlzY29ubmVjdCBhbGwgc2lnbmFscyBmcm9tIHNpZ25hbCBob29rcyBh bmQgZnJvbSB0aGUgb2JqZWN0IHRyZWUgdG8KKyAgICAgLy8gYXZvaWQgUU9iamVjdDo6ZGVzdHJv eWVkIGJlaW5nIHNlbnQgdG8gZGJ1cyBkYWVtb24gdGhyZWFkIHdoaWNoIGhhcworQEAgLTI1ODQs NiArMjU5MCwxMSBAQCBRREJ1c0Nvbm5lY3Rpb25Qcml2YXRlOjpmaW5kTWV0YU9iamVjdChjb25z dCBRU3RyaW5nICZzZXJ2aWNlLCBjb25zdCBRU3RyaW5nICZwYQorICAgICAgICAgaWYgKG1vKQor ICAgICAgICAgICAgIHJldHVybiBtbzsKKyAgICAgfQorKyAgICBpZiAocGF0aC5pc0VtcHR5KCkp IHsKKysgICAgICAgIGVycm9yID0gUURCdXNFcnJvcihRREJ1c0Vycm9yOjpJbnZhbGlkT2JqZWN0 UGF0aCwgUUxhdGluMVN0cmluZygiT2JqZWN0IHBhdGggY2Fubm90IGJlIGVtcHR5IikpOworKyAg ICAgICAgbGFzdEVycm9yID0gZXJyb3I7CisrICAgICAgICByZXR1cm4gbnVsbHB0cjsKKysgICAg fQorIAorICAgICAvLyBpbnRyb3NwZWN0IHRoZSB0YXJnZXQgb2JqZWN0CisgICAgIFFEQnVzTWVz c2FnZSBtc2cgPSBRREJ1c01lc3NhZ2U6OmNyZWF0ZU1ldGhvZENhbGwoc2VydmljZSwgcGF0aCwK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2RidXMvcWRidXNtZXRhb2JqZWN0LmNwcCBiL3F0YmFz ZS9zcmMvZGJ1cy9xZGJ1c21ldGFvYmplY3QuY3BwCitpbmRleCA1MjY1NTY4ZjQyLi43ZTlmMGYx YWNjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9kYnVzL3FkYnVzbWV0YW9iamVjdC5jcHAKKysr KyBiL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c21ldGFvYmplY3QuY3BwCitAQCAtMjEwLDYgKzIxMCw5 IEBAIFFEQnVzTWV0YU9iamVjdEdlbmVyYXRvcjo6ZmluZFR5cGUoY29uc3QgUUJ5dGVBcnJheSAm c2lnbmF0dXJlLAorICAgICAgICAgfSBlbHNlIGlmIChzaWduYXR1cmUgPT0gImF7c3N9Iikgewor ICAgICAgICAgICAgIHJlc3VsdC5uYW1lID0gIlFNYXA8UVN0cmluZyxRU3RyaW5nPiI7CisgICAg ICAgICAgICAgdHlwZSA9IHFNZXRhVHlwZUlkPFFNYXA8UVN0cmluZywgUVN0cmluZz4gPigpOwor KyAgICAgICAgfSBlbHNlIGlmIChzaWduYXR1cmUgPT0gImFheSIpIHsKKysgICAgICAgICAgICBy ZXN1bHQubmFtZSA9ICJRQnl0ZUFycmF5TGlzdCI7CisrICAgICAgICAgICAgdHlwZSA9IHFNZXRh VHlwZUlkPFFCeXRlQXJyYXlMaXN0PigpOworICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg ICByZXN1bHQubmFtZSA9ICJ7RC1CdXMgdHlwZSBcIiIgKyBzaWduYXR1cmUgKyAiXCJ9IjsKKyAg ICAgICAgICAgICB0eXBlID0gcmVnaXN0ZXJDb21wbGV4REJ1c1R5cGUocmVzdWx0Lm5hbWUpOwor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2FjY2Vzc2libGUvcWFjY2Vzc2libGUuY3BwIGIv cXRiYXNlL3NyYy9ndWkvYWNjZXNzaWJsZS9xYWNjZXNzaWJsZS5jcHAKK2luZGV4IGQ3MDViZmNj YjUuLjBjYWYzYzgwOGMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9hY2Nlc3NpYmxlL3Fh Y2Nlc3NpYmxlLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvYWNjZXNzaWJsZS9xYWNjZXNzaWJs ZS5jcHAKK0BAIC01NCw2ICs1NCw3IEBACisgI2luY2x1ZGUgPFF0Q29yZS9xZGVidWcuaD4KKyAj aW5jbHVkZSA8UXRDb3JlL3Fsb2dnaW5nY2F0ZWdvcnkuaD4KKyAjaW5jbHVkZSA8UXRDb3JlL3Ft ZXRhb2JqZWN0Lmg+CisrI2luY2x1ZGUgPFF0Q29yZS9wcml2YXRlL3FtZXRhb2JqZWN0X3AuaD4K KyAjaW5jbHVkZSA8UXRDb3JlL3FoYXNoLmg+CisgI2luY2x1ZGUgPHByaXZhdGUvcWZhY3Rvcnls b2FkZXJfcC5oPgorIAorQEAgLTY4MSw2ICs2ODIsMjUgQEAgUUFjY2Vzc2libGVJbnRlcmZhY2Ug KlFBY2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2UoUU9iamVjdCAqb2JqZWN0KQor ICAgICAvLyBDcmVhdGUgYSBRQWNjZXNzaWJsZUludGVyZmFjZSBmb3IgdGhlIG9iamVjdCBjbGFz cy4gU3RhcnQgYnkgdGhlIG1vc3QKKyAgICAgLy8gZGVyaXZlZCBjbGFzcyBhbmQgd2FsayB1cCB0 aGUgY2xhc3MgaGllcmFyY2h5LgorICAgICBjb25zdCBRTWV0YU9iamVjdCAqbW8gPSBvYmplY3Qt Pm1ldGFPYmplY3QoKTsKKysgICAgY29uc3QgYXV0byAqb2JqZWN0UHJpdiA9IFFPYmplY3RQcml2 YXRlOjpnZXQob2JqZWN0KTsKKysgICAgLyoKKysgICAgIFdlIGRvIG5vdCB3YW50IHRvIGNhY2hl IGVhY2ggYW5kIGV2ZXJ5IFFNTCBtZXRhb2JqZWN0IChCdXR0b25fUU1MVFlQRV8xMjQsCisrICAg ICBCdXR0b25fUU1MVFlQRV8xMjUsIGV0Yy4pLiBUaG9zZSBkeW5hbWljIG1ldGFvYmplY3RzIHNo b3VsZG4ndCBoYXZlIGFuCisrICAgICBhY2Nlc3NpYmxlIGludGVyZmFjZSBpbiBhbnkgY2FzZS4g SW5zdGVhZCwgd2Ugc3RhcnQgdGhlIHdob2xlIGNoZWNraW5nCisrICAgICB3aXRoIHRoZSBmaXJz dCBub24tZHluYW1pYyBtZXRhLW9iamVjdC4gVG8gYXZvaWQgcG90ZW50aWFsIHJlZ3Jlc3Npb25z CisrICAgICBpbiBvdGhlciBhcmVhcyBvZiBRdCB0aGF0IGFsc28gdXNlIGR5bmFtaWMgbWV0YW9i amVjdHMsIHdlIG9ubHkgZG8gdGhpcworKyAgICAgZm9yIG9iamVjdHMgdGhhdCBhcmUgUU1MLXJl bGF0ZWQgKGFwcHJveGltYXRlZCBieSBjaGVja2luZyB3aGV0aGVyIHRoZXkKKysgICAgIGhhdmUg ZGRhdGEgc2V0KS4KKysgICAgKi8KKysgICAgY29uc3QgYm9vbCBxbWxSZWxhdGVkID0gIW9iamVj dFByaXYtPmlzRGVsZXRpbmdDaGlsZHJlbiAmJgorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvYmplY3RQcml2LT5kZWNsYXJhdGl2ZURhdGE7CisrICAgIHdoaWxlIChxbWxSZWxhdGVkICYm IG1vKSB7CisrICAgICAgICBhdXRvIG1vcCA9IFFNZXRhT2JqZWN0UHJpdmF0ZTo6Z2V0KG1vKTsK KysgICAgICAgIGlmICghbW9wIHx8ICEobW9wLT5mbGFncyAmIER5bmFtaWNNZXRhT2JqZWN0KSkK KysgICAgICAgICAgICBicmVhazsKKysKKysgICAgICAgIG1vID0gbW8tPnN1cGVyQ2xhc3MoKTsK KysgICAgfTsKKyAgICAgd2hpbGUgKG1vKSB7CisgICAgICAgICBjb25zdCBRU3RyaW5nIGNuID0g UUxhdGluMVN0cmluZyhtby0+Y2xhc3NOYW1lKCkpOworIAorQEAgLTY5NiwxNCArNzE2LDE1IEBA IFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZTo6cXVlcnlBY2Nlc3NpYmxlSW50ZXJm YWNlKFFPYmplY3QgKm9iamVjdCkKKyAgICAgICAgIC8vIEZpbmQgYSBRQWNjZXNzaWJsZVBsdWdp biAoZmFjdG9yeSkgZm9yIHRoZSBjbGFzcyBuYW1lLiBJZiB0aGVyZSdzCisgICAgICAgICAvLyBu byBlbnRyeSBpbiB0aGUgY2FjaGUgdHJ5IHRvIGNyZWF0ZSBpdCB1c2luZyB0aGUgcGx1Z2luIGxv YWRlci4KKyAgICAgICAgIGlmICghcUFjY2Vzc2libGVQbHVnaW5zKCktPmNvbnRhaW5zKGNuKSkg eworKyAgICAgICAgICAgIFFBY2Nlc3NpYmxlUGx1Z2luICpmYWN0b3J5ID0gbnVsbHB0cjsgLy8g MCBtZWFucyAibm8gcGx1Z2luIGZvdW5kIi4gVGhpcyBpcyBjYWNoZWQgYXMgd2VsbC4KKyAgICAg ICAgICAgICBjb25zdCBpbnQgaW5kZXggPSBsb2FkZXIoKS0+aW5kZXhPZihjbik7CistICAgICAg ICAgICAgaWYgKGluZGV4ICE9IC0xKSB7CistICAgICAgICAgICAgICAgIFFBY2Nlc3NpYmxlUGx1 Z2luICpmYWN0b3J5ID0gcW9iamVjdF9jYXN0PFFBY2Nlc3NpYmxlUGx1Z2luICo+KGxvYWRlcigp LT5pbnN0YW5jZShpbmRleCkpOworLSAgICAgICAgICAgICAgICBxQWNjZXNzaWJsZVBsdWdpbnMo KS0+aW5zZXJ0KGNuLCBmYWN0b3J5KTsKKy0gICAgICAgICAgICB9CisrICAgICAgICAgICAgaWYg KGluZGV4ICE9IC0xKQorKyAgICAgICAgICAgICAgICBmYWN0b3J5ID0gcW9iamVjdF9jYXN0PFFB Y2Nlc3NpYmxlUGx1Z2luICo+KGxvYWRlcigpLT5pbnN0YW5jZShpbmRleCkpOworKyAgICAgICAg ICAgIHFBY2Nlc3NpYmxlUGx1Z2lucygpLT5pbnNlcnQoY24sIGZhY3RvcnkpOworICAgICAgICAg fQorIAorICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgY2FjaGUgc2hvdWxkIGNvbnRhaW4g YSB2YWxpZCBmYWN0b3J5IHBvaW50ZXIgb3IgMDoKKysgICAgICAgIFFfQVNTRVJUKHFBY2Nlc3Np YmxlUGx1Z2lucygpLT5jb250YWlucyhjbikpOworICAgICAgICAgUUFjY2Vzc2libGVQbHVnaW4g KmZhY3RvcnkgPSBxQWNjZXNzaWJsZVBsdWdpbnMoKS0+dmFsdWUoY24pOworICAgICAgICAgaWYg KGZhY3RvcnkpIHsKKyAgICAgICAgICAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAqcmVzdWx0ID0g ZmFjdG9yeS0+Y3JlYXRlKGNuLCBvYmplY3QpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3Vp L2NvbmZpZ3VyZS5qc29uIGIvcXRiYXNlL3NyYy9ndWkvY29uZmlndXJlLmpzb24KK2luZGV4IDFm MDg3OTVjNTcuLjEyYzk1NzQyZDIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9jb25maWd1 cmUuanNvbgorKysrIGIvcXRiYXNlL3NyYy9ndWkvY29uZmlndXJlLmpzb24KK0BAIC04MzQsNyAr ODM0LDggQEAKKyAgICAgICAgICAgICAgICAgICAgICIvLyBlbWJlZGRlZCBkZXZpY2VzLCBhcmUg bm90IGludGVuZGVkIHRvIGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBYLiBFR0wgc3VwcG9ydCIsCisg ICAgICAgICAgICAgICAgICAgICAiLy8gaGFzIHRvIGJlIGRpc2FibGVkIGluIHBsdWdpbnMgbGlr ZSB4Y2IgaW4gdGhpcyBjYXNlIHNpbmNlIHRoZSBuYXRpdmUgZGlzcGxheSwiLAorICAgICAgICAg ICAgICAgICAgICAgIi8vIHdpbmRvdyBhbmQgcGl4bWFwIHR5cGVzIHdpbGwgYmUgZGlmZmVyZW50 IHRoYW4gd2hhdCBhbiBYLWJhc2VkIHBsYXRmb3JtIiwKKy0gICAgICAgICAgICAgICAgICAgICIv LyBwbHVnaW4gd291bGQgZXhwZWN0LiIKKysgICAgICAgICAgICAgICAgICAgICIvLyBwbHVnaW4g d291bGQgZXhwZWN0LiIsCisrICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBVU0VfWDExIgor ICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAiaW5jbHVkZSI6IFsgIkVHTC9l Z2wuaCIsICJYMTEvWGxpYi5oIiBdLAorICAgICAgICAgICAgICAgICAibWFpbiI6IFsKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9xYm1waGFuZGxlci5jcHAgYi9xdGJhc2Uvc3Jj L2d1aS9pbWFnZS9xYm1waGFuZGxlci5jcHAKK2luZGV4IDk2ZjFlOGNiMWQuLjBlNzNiYmJkYjAg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9xYm1waGFuZGxlci5jcHAKKysrKyBi L3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3FibXBoYW5kbGVyLmNwcAorQEAgLTE1MCwxNiArMTUwLDQy IEBAIHN0YXRpYyBRRGF0YVN0cmVhbSAmb3BlcmF0b3I8PChRRGF0YVN0cmVhbSAmcywgY29uc3Qg Qk1QX0lORk9IRFIgJmJpKQorICAgICByZXR1cm4gczsKKyB9CisgCistc3RhdGljIGludCBjYWxj X3NoaWZ0KHVpbnQgbWFzaykKKytzdGF0aWMgdWludCBjYWxjX3NoaWZ0KHVpbnQgbWFzaykKKyB7 CistICAgIGludCByZXN1bHQgPSAwOworLSAgICB3aGlsZSAobWFzayAmJiAhKG1hc2sgJiAxKSkg eworKyAgICB1aW50IHJlc3VsdCA9IDA7CisrICAgIHdoaWxlICgobWFzayA+PSAweDEwMCkgfHwg KCEobWFzayAmIDEpICYmIG1hc2spKSB7CisgICAgICAgICByZXN1bHQrKzsKKyAgICAgICAgIG1h c2sgPj49IDE7CisgICAgIH0KKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9CisgCisrc3RhdGljIHVp bnQgY2FsY19zY2FsZSh1aW50IGxvd19tYXNrKQorK3sKKysgICAgdWludCByZXN1bHQgPSA4Owor KyAgICB3aGlsZSAobG93X21hc2sgJiYgcmVzdWx0KSB7CisrICAgICAgICByZXN1bHQtLTsKKysg ICAgICAgIGxvd19tYXNrID4+PSAxOworKyAgICB9CisrICAgIHJldHVybiByZXN1bHQ7CisrfQor KworK3N0YXRpYyBpbmxpbmUgdWludCBhcHBseV9zY2FsZSh1aW50IHZhbHVlLCB1aW50IHNjYWxl KQorK3sKKysgICAgaWYgKCEoc2NhbGUgJiAweDA3KSkgLy8gcmV0dXJuIGltbWVkaWF0ZWx5IGlm IHNjYWxlID09IDggb3IgMAorKyAgICAgICAgcmV0dXJuIHZhbHVlOworKworKyAgICB1aW50IGZp bGxlZCA9IDggLSBzY2FsZTsKKysgICAgdWludCByZXN1bHQgPSB2YWx1ZSA8PCBzY2FsZTsKKysK KysgICAgZG8geworKyAgICAgICAgcmVzdWx0IHw9IHJlc3VsdCA+PiBmaWxsZWQ7CisrICAgICAg ICBmaWxsZWQgPDw9IDE7CisrICAgIH0gd2hpbGUgKGZpbGxlZCA8IDgpOworKworKyAgICByZXR1 cm4gcmVzdWx0OworK30KKysKKyBzdGF0aWMgYm9vbCByZWFkX2RpYl9maWxlaGVhZGVyKFFEYXRh U3RyZWFtICZzLCBCTVBfRklMRUhEUiAmYmYpCisgeworICAgICAvLyByZWFkIEJNUCBmaWxlIGhl YWRlcgorQEAgLTIyMiwxNCArMjQ4LDE0IEBAIHN0YXRpYyBib29sIHJlYWRfZGliX2JvZHkoUURh dGFTdHJlYW0gJnMsIGNvbnN0IEJNUF9JTkZPSERSICZiaSwgcWludDY0IG9mZnNldCwKKyAgICAg dWludCBncmVlbl9tYXNrID0gMDsKKyAgICAgdWludCBibHVlX21hc2sgPSAwOworICAgICB1aW50 IGFscGhhX21hc2sgPSAwOworLSAgICBpbnQgcmVkX3NoaWZ0ID0gMDsKKy0gICAgaW50IGdyZWVu X3NoaWZ0ID0gMDsKKy0gICAgaW50IGJsdWVfc2hpZnQgPSAwOworLSAgICBpbnQgYWxwaGFfc2hp ZnQgPSAwOworLSAgICBpbnQgcmVkX3NjYWxlID0gMDsKKy0gICAgaW50IGdyZWVuX3NjYWxlID0g MDsKKy0gICAgaW50IGJsdWVfc2NhbGUgPSAwOworLSAgICBpbnQgYWxwaGFfc2NhbGUgPSAwOwor KyAgICB1aW50IHJlZF9zaGlmdCA9IDA7CisrICAgIHVpbnQgZ3JlZW5fc2hpZnQgPSAwOworKyAg ICB1aW50IGJsdWVfc2hpZnQgPSAwOworKyAgICB1aW50IGFscGhhX3NoaWZ0ID0gMDsKKysgICAg dWludCByZWRfc2NhbGUgPSAwOworKyAgICB1aW50IGdyZWVuX3NjYWxlID0gMDsKKysgICAgdWlu dCBibHVlX3NjYWxlID0gMDsKKysgICAgdWludCBhbHBoYV9zY2FsZSA9IDA7CisgCisgICAgIGlm ICghZC0+aXNTZXF1ZW50aWFsKCkpCisgICAgICAgICBkLT5zZWVrKHN0YXJ0cG9zICsgQk1QX0ZJ TEVIRFJfU0laRSArIGJpLmJpU2l6ZSk7IC8vIGdvdG8gc3RhcnQgb2YgY29sb3JtYXAgb3IgbWFz a3MKK0BAIC0zMDgsMTkgKzMzNCwxOSBAQCBzdGF0aWMgYm9vbCByZWFkX2RpYl9ib2R5KFFEYXRh U3RyZWFtICZzLCBjb25zdCBCTVBfSU5GT0hEUiAmYmksIHFpbnQ2NCBvZmZzZXQsCisgICAgICAg ICByZWRfc2hpZnQgPSBjYWxjX3NoaWZ0KHJlZF9tYXNrKTsKKyAgICAgICAgIGlmICgoKHJlZF9t YXNrID4+IHJlZF9zaGlmdCkgKyAxKSA9PSAwKQorICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK Ky0gICAgICAgIHJlZF9zY2FsZSA9IDI1NiAvICgocmVkX21hc2sgPj4gcmVkX3NoaWZ0KSArIDEp OworKyAgICAgICAgcmVkX3NjYWxlID0gY2FsY19zY2FsZShyZWRfbWFzayA+PiByZWRfc2hpZnQp OworICAgICAgICAgZ3JlZW5fc2hpZnQgPSBjYWxjX3NoaWZ0KGdyZWVuX21hc2spOworICAgICAg ICAgaWYgKCgoZ3JlZW5fbWFzayA+PiBncmVlbl9zaGlmdCkgKyAxKSA9PSAwKQorICAgICAgICAg ICAgIHJldHVybiBmYWxzZTsKKy0gICAgICAgIGdyZWVuX3NjYWxlID0gMjU2IC8gKChncmVlbl9t YXNrID4+IGdyZWVuX3NoaWZ0KSArIDEpOworKyAgICAgICAgZ3JlZW5fc2NhbGUgPSBjYWxjX3Nj YWxlKGdyZWVuX21hc2sgPj4gZ3JlZW5fc2hpZnQpOworICAgICAgICAgYmx1ZV9zaGlmdCA9IGNh bGNfc2hpZnQoYmx1ZV9tYXNrKTsKKyAgICAgICAgIGlmICgoKGJsdWVfbWFzayA+PiBibHVlX3No aWZ0KSArIDEpID09IDApCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICAgICAgYmx1 ZV9zY2FsZSA9IDI1NiAvICgoYmx1ZV9tYXNrID4+IGJsdWVfc2hpZnQpICsgMSk7CisrICAgICAg ICBibHVlX3NjYWxlID0gY2FsY19zY2FsZShibHVlX21hc2sgPj4gYmx1ZV9zaGlmdCk7CisgICAg ICAgICBhbHBoYV9zaGlmdCA9IGNhbGNfc2hpZnQoYWxwaGFfbWFzayk7CisgICAgICAgICBpZiAo KChhbHBoYV9tYXNrID4+IGFscGhhX3NoaWZ0KSArIDEpID09IDApCisgICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOworLSAgICAgICAgYWxwaGFfc2NhbGUgPSAyNTYgLyAoKGFscGhhX21hc2sgPj4g YWxwaGFfc2hpZnQpICsgMSk7CisrICAgICAgICBhbHBoYV9zY2FsZSA9IGNhbGNfc2NhbGUoYWxw aGFfbWFzayA+PiBhbHBoYV9zaGlmdCk7CisgICAgIH0gZWxzZSBpZiAoY29tcCA9PSBCTVBfUkdC ICYmIChuYml0cyA9PSAyNCB8fCBuYml0cyA9PSAzMikpIHsKKyAgICAgICAgIGJsdWVfbWFzayA9 IDB4MDAwMDAwZmY7CisgICAgICAgICBncmVlbl9tYXNrID0gMHgwMDAwZmYwMDsKK0BAIC0zMjgs MTcgKzM1NCwxNSBAQCBzdGF0aWMgYm9vbCByZWFkX2RpYl9ib2R5KFFEYXRhU3RyZWFtICZzLCBj b25zdCBCTVBfSU5GT0hEUiAmYmksIHFpbnQ2NCBvZmZzZXQsCisgICAgICAgICBibHVlX3NoaWZ0 ID0gMDsKKyAgICAgICAgIGdyZWVuX3NoaWZ0ID0gODsKKyAgICAgICAgIHJlZF9zaGlmdCA9IDE2 OworLSAgICAgICAgYmx1ZV9zY2FsZSA9IGdyZWVuX3NjYWxlID0gcmVkX3NjYWxlID0gMTsKKysg ICAgICAgIGJsdWVfc2NhbGUgPSBncmVlbl9zY2FsZSA9IHJlZF9zY2FsZSA9IDA7CisgICAgIH0g ZWxzZSBpZiAoY29tcCA9PSBCTVBfUkdCICYmIG5iaXRzID09IDE2KSB7CisgICAgICAgICBibHVl X21hc2sgPSAweDAwMWY7CisgICAgICAgICBncmVlbl9tYXNrID0gMHgwM2UwOworICAgICAgICAg cmVkX21hc2sgPSAweDdjMDA7CisgICAgICAgICBibHVlX3NoaWZ0ID0gMDsKKy0gICAgICAgIGdy ZWVuX3NoaWZ0ID0gMjsKKy0gICAgICAgIHJlZF9zaGlmdCA9IDc7CistICAgICAgICByZWRfc2Nh bGUgPSAxOworLSAgICAgICAgZ3JlZW5fc2NhbGUgPSAxOworLSAgICAgICAgYmx1ZV9zY2FsZSA9 IDg7CisrICAgICAgICBncmVlbl9zaGlmdCA9IDU7CisrICAgICAgICByZWRfc2hpZnQgPSAxMDsK KysgICAgICAgIGJsdWVfc2NhbGUgPSBncmVlbl9zY2FsZSA9IHJlZF9zY2FsZSA9IDM7CisgICAg IH0KKyAKKyAjaWYgMAorQEAgLTU0NCwxMCArNTY4LDEwIEBAIHN0YXRpYyBib29sIHJlYWRfZGli X2JvZHkoUURhdGFTdHJlYW0gJnMsIGNvbnN0IEJNUF9JTkZPSERSICZiaSwgcWludDY0IG9mZnNl dCwKKyAgICAgICAgICAgICAgICAgICAgIGMgfD0gKih1Y2hhciopKGIrMik8PDE2OworICAgICAg ICAgICAgICAgICBpZiAobmJpdHMgPiAyNCkKKyAgICAgICAgICAgICAgICAgICAgIGMgfD0gKih1 Y2hhciopKGIrMyk8PDI0OworLSAgICAgICAgICAgICAgICAqcCsrID0gcVJnYmEoKChjICYgcmVk X21hc2spID4+IHJlZF9zaGlmdCkgKiByZWRfc2NhbGUsCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgoYyAmIGdyZWVuX21hc2spID4+IGdyZWVuX3NoaWZ0KSAqIGdy ZWVuX3NjYWxlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGMg JiBibHVlX21hc2spID4+IGJsdWVfc2hpZnQpICogYmx1ZV9zY2FsZSwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwID8gKChjICYgYWxwaGFfbWFzaykgPj4g YWxwaGFfc2hpZnQpICogYWxwaGFfc2NhbGUgOiAweGZmKTsKKysgICAgICAgICAgICAgICAgKnAr KyA9IHFSZ2JhKGFwcGx5X3NjYWxlKChjICYgcmVkX21hc2spID4+IHJlZF9zaGlmdCwgcmVkX3Nj YWxlKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5X3NjYWxlKChjICYgZ3Jl ZW5fbWFzaykgPj4gZ3JlZW5fc2hpZnQsIGdyZWVuX3NjYWxlKSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGFwcGx5X3NjYWxlKChjICYgYmx1ZV9tYXNrKSA+PiBibHVlX3NoaWZ0LCBi bHVlX3NjYWxlKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcCA/IGFwcGx5 X3NjYWxlKChjICYgYWxwaGFfbWFzaykgPj4gYWxwaGFfc2hpZnQsIGFscGhhX3NjYWxlKSA6IDB4 ZmYpOworICAgICAgICAgICAgICAgICBiICs9IG5iaXRzLzg7CisgICAgICAgICAgICAgfQorICAg ICAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3FpbWFnZS5jcHAgYi9x dGJhc2Uvc3JjL2d1aS9pbWFnZS9xaW1hZ2UuY3BwCitpbmRleCA3MTUyYWMxNjA3Li4wZGY3NzI1 NjRjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWltYWdlLmNwcAorKysrIGIv cXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWltYWdlLmNwcAorQEAgLTQ2OTQsNiArNDY5NCw4IEBAIFFJ bWFnZSBRSW1hZ2U6OnNtb290aFNjYWxlZChpbnQgdywgaW50IGgpIGNvbnN0IHsKKyBzdGF0aWMg UUltYWdlIHJvdGF0ZWQ5MChjb25zdCBRSW1hZ2UgJmltYWdlKQorIHsKKyAgICAgUUltYWdlIG91 dChpbWFnZS5oZWlnaHQoKSwgaW1hZ2Uud2lkdGgoKSwgaW1hZ2UuZm9ybWF0KCkpOworKyAgICBp ZiAob3V0LmlzTnVsbCgpKQorKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICAgY29weU1ldGFkYXRh KCZvdXQsIGltYWdlKTsKKyAgICAgaWYgKGltYWdlLmNvbG9yQ291bnQoKSA+IDApCisgICAgICAg ICBvdXQuc2V0Q29sb3JUYWJsZShpbWFnZS5jb2xvclRhYmxlKCkpOworQEAgLTQ3MjIsNiArNDcy NCw4IEBAIHN0YXRpYyBRSW1hZ2Ugcm90YXRlZDE4MChjb25zdCBRSW1hZ2UgJmltYWdlKQorICAg ICAgICAgcmV0dXJuIGltYWdlLm1pcnJvcmVkKHRydWUsIHRydWUpOworIAorICAgICBRSW1hZ2Ug b3V0KGltYWdlLndpZHRoKCksIGltYWdlLmhlaWdodCgpLCBpbWFnZS5mb3JtYXQoKSk7CisrICAg IGlmIChvdXQuaXNOdWxsKCkpCisrICAgICAgICByZXR1cm4gb3V0OworICAgICBjb3B5TWV0YWRh dGEoJm91dCwgaW1hZ2UpOworICAgICBpZiAoaW1hZ2UuY29sb3JDb3VudCgpID4gMCkKKyAgICAg ICAgIG91dC5zZXRDb2xvclRhYmxlKGltYWdlLmNvbG9yVGFibGUoKSk7CitAQCAtNDczNCw2ICs0 NzM4LDggQEAgc3RhdGljIFFJbWFnZSByb3RhdGVkMTgwKGNvbnN0IFFJbWFnZSAmaW1hZ2UpCisg c3RhdGljIFFJbWFnZSByb3RhdGVkMjcwKGNvbnN0IFFJbWFnZSAmaW1hZ2UpCisgeworICAgICBR SW1hZ2Ugb3V0KGltYWdlLmhlaWdodCgpLCBpbWFnZS53aWR0aCgpLCBpbWFnZS5mb3JtYXQoKSk7 CisrICAgIGlmIChvdXQuaXNOdWxsKCkpCisrICAgICAgICByZXR1cm4gb3V0OworICAgICBjb3B5 TWV0YWRhdGEoJm91dCwgaW1hZ2UpOworICAgICBpZiAoaW1hZ2UuY29sb3JDb3VudCgpID4gMCkK KyAgICAgICAgIG91dC5zZXRDb2xvclRhYmxlKGltYWdlLmNvbG9yVGFibGUoKSk7CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FjdXJzb3IuY3BwIGIvcXRiYXNlL3NyYy9ndWkv a2VybmVsL3FjdXJzb3IuY3BwCitpbmRleCBkNmNjYWZmOGVkLi40NTUwODgyNDFjIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FjdXJzb3IuY3BwCisrKysgYi9xdGJhc2Uvc3Jj L2d1aS9rZXJuZWwvcWN1cnNvci5jcHAKK0BAIC0yNTEsNyArMjUxLDggQEAgdm9pZCBRQ3Vyc29y OjpzZXRQb3MoUVNjcmVlbiAqc2NyZWVuLCBpbnQgeCwgaW50IHkpCisgeworICAgICBpZiAoc2Ny ZWVuKSB7CisgICAgICAgICBpZiAoUVBsYXRmb3JtQ3Vyc29yICpjdXJzb3IgPSBzY3JlZW4tPmhh bmRsZSgpLT5jdXJzb3IoKSkgeworLSAgICAgICAgICAgIGNvbnN0IFFQb2ludCBkZXZpY2VQb3Mg PSBRSGlnaERwaTo6dG9OYXRpdmVQaXhlbHMoUVBvaW50KHgsIHkpLCBzY3JlZW4pOworKyAgICAg ICAgICAgIGNvbnN0IFFQb2ludCBwb3MoeCwgeSk7CisrICAgICAgICAgICAgY29uc3QgUVBvaW50 IGRldmljZVBvcyA9IFFIaWdoRHBpOjp0b05hdGl2ZVBpeGVscyhwb3MsIHNjcmVlbi0+dmlydHVh bFNpYmxpbmdBdChwb3MpKTsKKyAgICAgICAgICAgICAvLyBOZWVkIHRvIGNoZWNrLCBzaW5jZSBz b21lIFggc2VydmVycyBnZW5lcmF0ZSBudWxsIG1vdXNlIG1vdmUKKyAgICAgICAgICAgICAvLyBl dmVudHMsIGNhdXNpbmcgbG9vcGluZyBpbiBhcHBsaWNhdGlvbnMgd2hpY2ggY2FsbCBzZXRQb3Mo KSBvbgorICAgICAgICAgICAgIC8vIGV2ZXJ5IG1vdXNlIG1vdmUgZXZlbnQuCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FoaWdoZHBpc2NhbGluZy5jcHAgYi9xdGJhc2Uvc3Jj L2d1aS9rZXJuZWwvcWhpZ2hkcGlzY2FsaW5nLmNwcAoraW5kZXggOWJiZjI3NzNhOS4uM2FjNGE0 ZDhiNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xaGlnaGRwaXNjYWxpbmcu Y3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWhpZ2hkcGlzY2FsaW5nLmNwcAorQEAg LTU4MCw5ICs1ODAsOCBAQCB2b2lkIFFIaWdoRHBpU2NhbGluZzo6c2V0U2NyZWVuRmFjdG9yKFFT Y3JlZW4gKnNjcmVlbiwgcXJlYWwgZmFjdG9yKQorICAgICBlbHNlCisgICAgICAgICBxTmFtZWRT Y3JlZW5TY2FsZUZhY3RvcnMoKS0+aW5zZXJ0KG5hbWUsIGZhY3Rvcik7CisgCistICAgIC8vIGhh Y2sgdG8gZm9yY2UgcmUtZXZhbHVhdGlvbiBvZiBzY3JlZW4gZ2VvbWV0cnkKKyAgICAgaWYgKHNj cmVlbi0+aGFuZGxlKCkpCistICAgICAgICBzY3JlZW4tPmRfZnVuYygpLT5zZXRQbGF0Zm9ybVNj cmVlbihzY3JlZW4tPmhhbmRsZSgpKTsgLy8gdXBkYXRlcyBnZW9tZXRyaWVzIGJhc2VkIG9uIHNj YWxlIGZhY3RvcgorKyAgICAgICAgc2NyZWVuLT5kX2Z1bmMoKS0+dXBkYXRlTG9naWNhbERwaSgp OworIH0KKyAKKyBRUG9pbnQgUUhpZ2hEcGlTY2FsaW5nOjptYXBQb3NpdGlvblRvTmF0aXZlKGNv bnN0IFFQb2ludCAmcG9zLCBjb25zdCBRUGxhdGZvcm1TY3JlZW4gKnBsYXRmb3JtU2NyZWVuKQor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UuY3BwIGIvcXRi YXNlL3NyYy9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS5jcHAKK2luZGV4IGE3NWI4ZWY5MjAuLjRm MmQyOTQ3MzkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNl LmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS5jcHAKK0BAIC03 MDEsNiArNzAxLDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgeworICAgICB7IFF0OjpLZXlfVG91 Y2hwYWRUb2dnbGUsICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIlRvdWNocGFkIFRv Z2dsZSIpIH0sCisgICAgIHsgUXQ6OktleV9Ub3VjaHBhZE9uLCAgUVRfVFJBTlNMQVRFX05PT1Ao IlFTaG9ydGN1dCIsICJUb3VjaHBhZCBPbiIpIH0sCisgICAgIHsgUXQ6OktleV9Ub3VjaHBhZE9m ZiwgIFFUX1RSQU5TTEFURV9OT09QKCJRU2hvcnRjdXQiLCAiVG91Y2hwYWQgT2ZmIikgfSwKKysg ICAgeyBRdDo6S2V5X1NoaWZ0LCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1dCIsICJTaGlm dCIpIH0sCisrICAgIHsgUXQ6OktleV9Db250cm9sLCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9y dGN1dCIsICJDb250cm9sIikgfSwKKysgICAgeyBRdDo6S2V5X0FsdCwgIFFUX1RSQU5TTEFURV9O T09QKCJRU2hvcnRjdXQiLCAiQWx0IikgfSwKKysgICAgeyBRdDo6S2V5X01ldGEsICBRVF9UUkFO U0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIk1ldGEiKSB9LAorIAorIH07Cisgc3RhdGljIFFfQ09O U1RFWFBSIGludCBudW1LZXlOYW1lcyA9IHNpemVvZiBrZXluYW1lIC8gc2l6ZW9mICprZXluYW1l OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5j cHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuY3BwCitpbmRleCBm ZGM2YTZjNGFhLi5hYzQ3Zjk4YzVkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVs L3FwbGF0Zm9ybXNlcnZpY2VzLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0 Zm9ybXNlcnZpY2VzLmNwcAorQEAgLTU1LDYgKzU1LDE5IEBAIFFUX0JFR0lOX05BTUVTUEFDRQor ICAgICBcYnJpZWYgVGhlIFFQbGF0Zm9ybVNlcnZpY2VzIHByb3ZpZGVzIHRoZSBiYWNrZW5kIGZv ciBkZXNrdG9wLXJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4KKyAqLworIAorKy8qIQorKyAgICBcZW51 bSBRUGxhdGZvcm1TZXJ2aWNlczo6Q2FwYWJpbGl0eQorKworKyAgICBDYXBhYmlsaXRpZXMgYXJl IHVzZWQgdG8gZGV0ZXJtaW5lIGEgc3BlY2lmaWMgcGxhdGZvcm0gc2VydmljZSdzIGF2YWlsYWJp bGl0eS4KKysKKysgICAgXHZhbHVlIENvbG9yUGlja2luZ0Zyb21TY3JlZW4gVGhlIHBsYXRmb3Jt IG5hdGl2ZWx5IHN1cHBvcnRzIGNvbG9yIHBpY2tpbmcgZnJvbSBzY3JlZW4uCisrICAgIFRoaXMg Y2FwYWJpbGl0eSBpbmRpY2F0ZXMgdGhhdCB0aGUgcGxhdGZvcm0gc3VwcG9ydHMgIm9wYXF1ZSIg Y29sb3IgcGlja2luZywgd2hlcmUgdGhlCisrICAgIHBsYXRmb3JtIGltcGxlbWVudHMgYSBjb21w bGV0ZSB1c2VyIGV4cGVyaWVuY2UgZm9yIGNvbG9yIHBpY2tpbmcgYW5kIG91dHB1dHMgYSBjb2xv ci4KKysgICAgVGhpcyBpcyBpbiBjb250cmFzdCB0byB0aGUgYXBwbGljYXRpb24gaW1wbGVtZW50 aW5nIHRoZSBjb2xvciBwaWNraW5nIHVzZXIgZXhwZXJpZW5jZQorKyAgICAodGFraW5nIGNhcmUg b2Ygc2hvd2luZyBhIGNyb3NzIGhhaXIsIGluc3RydWN0aW5nIHRoZSBwbGF0Zm9ybSBpbnRlZ3Jh dGlvbiB0byBvYnRhaW4KKysgICAgdGhlIGNvbG9yIGF0IGEgZ2l2ZW4gcGl4ZWwsIGV0Yy4pLiBU aGUgcmVsYXRlZCBzZXJ2aWNlIGZ1bmN0aW9uIGlzIHBpY2tDb2xvcigpLgorKyAqLworKworIFFQ bGF0Zm9ybVNlcnZpY2VzOjpRUGxhdGZvcm1TZXJ2aWNlcygpCisgeyB9CisgCitAQCAtODUsNSAr OTgsMTYgQEAgUUJ5dGVBcnJheSBRUGxhdGZvcm1TZXJ2aWNlczo6ZGVza3RvcEVudmlyb25tZW50 KCkgY29uc3QKKyAgICAgcmV0dXJuIFFCeXRlQXJyYXkoIlVOS05PV04iKTsKKyB9CisgCisrUVBs YXRmb3JtU2VydmljZUNvbG9yUGlja2VyICpRUGxhdGZvcm1TZXJ2aWNlczo6Y29sb3JQaWNrZXIo UVdpbmRvdyAqcGFyZW50KQorK3sKKysgICAgUV9VTlVTRUQocGFyZW50KTsKKysgICAgcmV0dXJu IG51bGxwdHI7CisrfQorKworK2Jvb2wgUVBsYXRmb3JtU2VydmljZXM6Omhhc0NhcGFiaWxpdHko Q2FwYWJpbGl0eSBjYXBhYmlsaXR5KSBjb25zdAorK3sKKysgICAgUV9VTlVTRUQoY2FwYWJpbGl0 eSkKKysgICAgcmV0dXJuIGZhbHNlOworK30KKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmggYi9xdGJhc2Uv c3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuaAoraW5kZXggNWRlOTZjZmE3ZC4uYThi MmE0Y2U3MSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2 aWNlcy5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jtc2VydmljZXMuaAor QEAgLTUwLDE2ICs1MCwzMiBAQAorIC8vCisgCisgI2luY2x1ZGUgPFF0R3VpL3F0Z3VpZ2xvYmFs Lmg+CisrI2luY2x1ZGUgPFF0Q29yZS9xb2JqZWN0Lmg+CisgCisgUVRfQkVHSU5fTkFNRVNQQUNF CisgCisgY2xhc3MgUVVybDsKKytjbGFzcyBRV2luZG93OworKworK2NsYXNzIFFfR1VJX0VYUE9S VCBRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIgOiBwdWJsaWMgUU9iamVjdAorK3sKKysgICAg UV9PQkpFQ1QKKytwdWJsaWM6CisrICAgIHVzaW5nIFFPYmplY3Q6OlFPYmplY3Q7CisrICAgIHZp cnR1YWwgdm9pZCBwaWNrQ29sb3IoKSA9IDA7CisrUV9TSUdOQUxTOgorKyAgICB2b2lkIGNvbG9y UGlja2VkKGNvbnN0IFFDb2xvciAmY29sb3IpOworK307CisgCisgY2xhc3MgUV9HVUlfRVhQT1JU IFFQbGF0Zm9ybVNlcnZpY2VzCisgeworIHB1YmxpYzoKKyAgICAgUV9ESVNBQkxFX0NPUFlfTU9W RShRUGxhdGZvcm1TZXJ2aWNlcykKKyAKKysgICAgZW51bSBDYXBhYmlsaXR5IHsKKysgICAgICAg IENvbG9yUGlja2luZywKKysgICAgfTsKKysKKyAgICAgUVBsYXRmb3JtU2VydmljZXMoKTsKKyAg ICAgdmlydHVhbCB+UVBsYXRmb3JtU2VydmljZXMoKSB7IH0KKyAKK0BAIC02Nyw2ICs4MywxMCBA QCBwdWJsaWM6CisgICAgIHZpcnR1YWwgYm9vbCBvcGVuRG9jdW1lbnQoY29uc3QgUVVybCAmdXJs KTsKKyAKKyAgICAgdmlydHVhbCBRQnl0ZUFycmF5IGRlc2t0b3BFbnZpcm9ubWVudCgpIGNvbnN0 OworKworKyAgICB2aXJ0dWFsIGJvb2wgaGFzQ2FwYWJpbGl0eShDYXBhYmlsaXR5IGNhcGFiaWxp dHkpIGNvbnN0OworKworKyAgICB2aXJ0dWFsIFFQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlciAq Y29sb3JQaWNrZXIoUVdpbmRvdyAqcGFyZW50ID0gbnVsbHB0cik7CisgfTsKKyAKKyBRVF9FTkRf TkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXRo ZW1lLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5jcHAKK2luZGV4 IDcxNTIxYzAzMzkuLjIzMjU4NzMyNDUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJu ZWwvcXBsYXRmb3JtdGhlbWUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRm b3JtdGhlbWUuY3BwCitAQCAtMTYzLDYgKzE2Myw4IEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIAor ICAgICBcdmFsdWUgU2hvd1Nob3J0Y3V0c0luQ29udGV4dE1lbnVzIChib29sKSBXaGV0aGVyIHRv IGRpc3BsYXkgc2hvcnRjdXQga2V5IHNlcXVlbmNlcyBpbiBjb250ZXh0IG1lbnVzLgorIAorKyAg ICBcdmFsdWUgQnV0dG9uUHJlc3NLZXlzIChRTGlzdDxRdDo6S2V5PikgQSBsaXN0IG9mIGtleXMg dGhhdCBjYW4gYmUgdXNlZCB0byBwcmVzcyBidXR0b25zIHZpYSBrZXlib2FyZCBpbnB1dC4KKysK KyAgICAgXHNhIHRoZW1lSGludCgpLCBRU3R5bGU6OnBpeGVsTWV0cmljKCkKKyAqLworIAorQEAg LTU2Myw2ICs1NjUsOCBAQCBRVmFyaWFudCBRUGxhdGZvcm1UaGVtZTo6ZGVmYXVsdFRoZW1lSGlu dChUaGVtZUhpbnQgaGludCkKKyAgICAgICAgIH0KKyAgICAgY2FzZSBNb3VzZVF1aWNrU2VsZWN0 aW9uVGhyZXNob2xkOgorICAgICAgICAgcmV0dXJuIFFWYXJpYW50KDEwKTsKKysgICAgY2FzZSBC dXR0b25QcmVzc0tleXM6CisrICAgICAgICByZXR1cm4gUVZhcmlhbnQ6OmZyb21WYWx1ZShRTGlz dDxRdDo6S2V5Pih7IFF0OjpLZXlfU3BhY2UsIFF0OjpLZXlfU2VsZWN0IH0pKTsKKyAgICAgfQor ICAgICByZXR1cm4gUVZhcmlhbnQoKTsKKyB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkv a2VybmVsL3FwbGF0Zm9ybXRoZW1lLmggYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jt dGhlbWUuaAoraW5kZXggMzE4NWZjNDU0MS4uN2U2YzlkNTc0MCAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9r ZXJuZWwvcXBsYXRmb3JtdGhlbWUuaAorQEAgLTEyMCw3ICsxMjAsOCBAQCBwdWJsaWM6CisgICAg ICAgICBUb3VjaERvdWJsZVRhcERpc3RhbmNlLAorICAgICAgICAgU2hvd1Nob3J0Y3V0c0luQ29u dGV4dE1lbnVzLAorICAgICAgICAgSWNvbkZhbGxiYWNrU2VhcmNoUGF0aHMsCistICAgICAgICBN b3VzZVF1aWNrU2VsZWN0aW9uVGhyZXNob2xkCisrICAgICAgICBNb3VzZVF1aWNrU2VsZWN0aW9u VGhyZXNob2xkLAorKyAgICAgICAgQnV0dG9uUHJlc3NLZXlzCisgICAgIH07CisgCisgICAgIGVu dW0gRGlhbG9nVHlwZSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3Jl ZW4uY3BwIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW4uY3BwCitpbmRleCA4ZTBlYjM1 MTE2Li41ZDE3MmE1OGRkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3Jl ZW4uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbi5jcHAKK0BAIC03Nyw2 ICs3NywxMiBAQCBRU2NyZWVuOjpRU2NyZWVuKFFQbGF0Zm9ybVNjcmVlbiAqc2NyZWVuKQorICAg ICBkLT5zZXRQbGF0Zm9ybVNjcmVlbihzY3JlZW4pOworIH0KKyAKKyt2b2lkIFFTY3JlZW5Qcml2 YXRlOjp1cGRhdGVMb2dpY2FsRHBpKCkKKyt7CisrICAgIGxvZ2ljYWxEcGkgPSBRUGxhdGZvcm1T Y3JlZW46Om92ZXJyaWRlRHBpKHBsYXRmb3JtU2NyZWVuLT5sb2dpY2FsRHBpKCkpOworKyAgICB1 cGRhdGVHZW9tZXRyaWVzV2l0aFNpZ25hbHMoKTsgLy8gdXBkYXRlcyBnZW9tZXRyaWVzIGJhc2Vk IG9uIHNjYWxlIGZhY3RvcgorK30KKysKKyB2b2lkIFFTY3JlZW5Qcml2YXRlOjp1cGRhdGVHZW9t ZXRyaWVzV2l0aFNpZ25hbHMoKQorIHsKKyAgICAgY29uc3QgUVJlY3Qgb2xkR2VvbWV0cnkgPSBn ZW9tZXRyeTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbl9wLmgg Yi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbl9wLmgKK2luZGV4IDdkYTU0MmMyNWUuLmU1 MGZjMzE5MGIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbl9wLmgK KysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuX3AuaAorQEAgLTcwLDYgKzcwLDcg QEAgcHVibGljOgorICAgICAgICAgZ2VvbWV0cnkgPSBwbGF0Zm9ybVNjcmVlbi0+ZGV2aWNlSW5k ZXBlbmRlbnRHZW9tZXRyeSgpOworICAgICAgICAgYXZhaWxhYmxlR2VvbWV0cnkgPSBRSGlnaERw aTo6ZnJvbU5hdGl2ZShwbGF0Zm9ybVNjcmVlbi0+YXZhaWxhYmxlR2VvbWV0cnkoKSwgUUhpZ2hE cGlTY2FsaW5nOjpmYWN0b3IocGxhdGZvcm1TY3JlZW4pLCBnZW9tZXRyeS50b3BMZWZ0KCkpOwor ICAgICB9CisrICAgIHZvaWQgdXBkYXRlTG9naWNhbERwaSgpOworIAorICAgICB2b2lkIHVwZGF0 ZVByaW1hcnlPcmllbnRhdGlvbigpOworICAgICB2b2lkIHVwZGF0ZUdlb21ldHJpZXNXaXRoU2ln bmFscygpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FibGVuZGZ1bmN0 aW9uc19wLmggYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xYmxlbmRmdW5jdGlvbnNfcC5oCitp bmRleCAwODBkYTk4ZWM0Li42OTk3ZDYyYjNjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkv cGFpbnRpbmcvcWJsZW5kZnVuY3Rpb25zX3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRp bmcvcWJsZW5kZnVuY3Rpb25zX3AuaAorQEAgLTI0NiwyNSArMjQ2LDMyIEBAIHZvaWQgcXRfdHJh bnNmb3JtX2ltYWdlX3Jhc3Rlcml6ZShEZXN0VCAqZGVzdFBpeGVscywgaW50IGRicGwsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkdWR4LCBpbnQgZHZkeCwgaW50IGR1 ZHksIGludCBkdmR5LCBpbnQgdTAsIGludCB2MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgQmxlbmRlciBibGVuZGVyKQorIHsKKy0gICAgaW50IGZyb21ZID0gcU1heChxUm91 bmQodG9wWSksIGNsaXAudG9wKCkpOworLSAgICBpbnQgdG9ZID0gcU1pbihxUm91bmQoYm90dG9t WSksIGNsaXAudG9wKCkgKyBjbGlwLmhlaWdodCgpKTsKKysgICAgcWludDY0IGZyb21ZID0gcU1h eChxUm91bmQodG9wWSksIGNsaXAudG9wKCkpOworKyAgICBxaW50NjQgdG9ZID0gcU1pbihxUm91 bmQoYm90dG9tWSksIGNsaXAudG9wKCkgKyBjbGlwLmhlaWdodCgpKTsKKyAgICAgaWYgKGZyb21Z ID49IHRvWSkKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgcXJlYWwgbGVmdFNsb3BlID0gKGJv dHRvbUxlZnQueCAtIHRvcExlZnQueCkgLyAoYm90dG9tTGVmdC55IC0gdG9wTGVmdC55KTsKKyAg ICAgcXJlYWwgcmlnaHRTbG9wZSA9IChib3R0b21SaWdodC54IC0gdG9wUmlnaHQueCkgLyAoYm90 dG9tUmlnaHQueSAtIHRvcFJpZ2h0LnkpOworLSAgICBpbnQgZHhfbCA9IGludChsZWZ0U2xvcGUg KiAweDEwMDAwKTsKKy0gICAgaW50IGR4X3IgPSBpbnQocmlnaHRTbG9wZSAqIDB4MTAwMDApOwor LSAgICBpbnQgeF9sID0gaW50KCh0b3BMZWZ0LnggKyAocXJlYWwoMC41KSArIGZyb21ZIC0gdG9w TGVmdC55KSAqIGxlZnRTbG9wZSArIHFyZWFsKDAuNSkpICogMHgxMDAwMCk7CistICAgIGludCB4 X3IgPSBpbnQoKHRvcFJpZ2h0LnggKyAocXJlYWwoMC41KSArIGZyb21ZIC0gdG9wUmlnaHQueSkg KiByaWdodFNsb3BlICsgcXJlYWwoMC41KSkgKiAweDEwMDAwKTsKKy0KKy0gICAgaW50IGZyb21Y LCB0b1gsIHgxLCB4MiwgdSwgdiwgaSwgaWk7CisrICAgIHFpbnQ2NCBkeF9sID0gcWludDY0KGxl ZnRTbG9wZSAqIDB4MTAwMDApOworKyAgICBxaW50NjQgZHhfciA9IHFpbnQ2NChyaWdodFNsb3Bl ICogMHgxMDAwMCk7CisrICAgIHFpbnQ2NCB4X2wgPSBxaW50NjQoKHRvcExlZnQueCArIChxcmVh bCgwLjUpICsgZnJvbVkgLSB0b3BMZWZ0LnkpICogbGVmdFNsb3BlICsgcXJlYWwoMC41KSkgKiAw eDEwMDAwKTsKKysgICAgcWludDY0IHhfciA9IHFpbnQ2NCgodG9wUmlnaHQueCArIChxcmVhbCgw LjUpICsgZnJvbVkgLSB0b3BSaWdodC55KSAqIHJpZ2h0U2xvcGUgKyBxcmVhbCgwLjUpKSAqIDB4 MTAwMDApOworKworKyAgICBxaW50NjQgc291cmNlUmVjdFRvcCA9IHFpbnQ2NChzb3VyY2VSZWN0 LnRvcCgpKTsKKysgICAgcWludDY0IHNvdXJjZVJlY3RMZWZ0ID0gcWludDY0KHNvdXJjZVJlY3Qu bGVmdCgpKTsKKysgICAgcWludDY0IHNvdXJjZVJlY3RXaWR0aCA9IHFpbnQ2NChzb3VyY2VSZWN0 LndpZHRoKCkpOworKyAgICBxaW50NjQgc291cmNlUmVjdEhlaWdodCA9IHFpbnQ2NChzb3VyY2VS ZWN0LmhlaWdodCgpKTsKKysgICAgcWludDY0IGNsaXBMZWZ0ID0gcWludDY0KGNsaXAubGVmdCgp KTsKKysgICAgcWludDY0IGNsaXBXaWR0aCA9IHFpbnQ2NChjbGlwLndpZHRoKCkpOworKworKyAg ICBxaW50NjQgZnJvbVgsIHRvWCwgeDEsIHgyLCB1LCB2LCBpLCBpaTsKKyAgICAgRGVzdFQgKmxp bmU7CistICAgIGZvciAoaW50IHkgPSBmcm9tWTsgeSA8IHRvWTsgKyt5KSB7CisrICAgIGZvciAo cWludDY0IHkgPSBmcm9tWTsgeSA8IHRvWTsgKyt5KSB7CisgICAgICAgICBsaW5lID0gcmVpbnRl cnByZXRfY2FzdDxEZXN0VCAqPihyZWludGVycHJldF9jYXN0PHVjaGFyICo+KGRlc3RQaXhlbHMp ICsgeSAqIGRicGwpOworIAorLSAgICAgICAgZnJvbVggPSBxTWF4KHhfbCA+PiAxNiwgY2xpcC5s ZWZ0KCkpOworLSAgICAgICAgdG9YID0gcU1pbih4X3IgPj4gMTYsIGNsaXAubGVmdCgpICsgY2xp cC53aWR0aCgpKTsKKysgICAgICAgIGZyb21YID0gcU1heCh4X2wgPj4gMTYsIGNsaXBMZWZ0KTsK KysgICAgICAgIHRvWCA9IHFNaW4oeF9yID4+IDE2LCBjbGlwTGVmdCArIGNsaXBXaWR0aCk7Cisg ICAgICAgICBpZiAoZnJvbVggPCB0b1gpIHsKKyAgICAgICAgICAgICAvLyBCZWNhdXNlIG9mIHJv dW5kaW5nLCB3ZSBjYW4gZ2V0IHNvdXJjZSBjb29yZGluYXRlcyBvdXRzaWRlIHRoZSBzb3VyY2Ug aW1hZ2UuCisgICAgICAgICAgICAgLy8gQ2xhbXAgdGhlc2UgY29vcmRpbmF0ZXMgdG8gdGhlIHNv dXJjZSByZWN0IHRvIGF2b2lkIHNlZ21lbnRhdGlvbiBmYXVsdCBhbmQKK0BAIC0yNzUsMTAgKzI4 MiwxMCBAQCB2b2lkIHF0X3RyYW5zZm9ybV9pbWFnZV9yYXN0ZXJpemUoRGVzdFQgKmRlc3RQaXhl bHMsIGludCBkYnBsLAorICAgICAgICAgICAgIHUgPSB4MSAqIGR1ZHggKyB5ICogZHVkeSArIHUw OworICAgICAgICAgICAgIHYgPSB4MSAqIGR2ZHggKyB5ICogZHZkeSArIHYwOworICAgICAgICAg ICAgIGZvciAoOyB4MSA8IHRvWDsgKyt4MSkgeworLSAgICAgICAgICAgICAgICBpbnQgdXUgPSB1 ID4+IDE2OworLSAgICAgICAgICAgICAgICBpbnQgdnYgPSB2ID4+IDE2OworLSAgICAgICAgICAg ICAgICBpZiAodXUgPj0gc291cmNlUmVjdC5sZWZ0KCkgJiYgdXUgPCBzb3VyY2VSZWN0LmxlZnQo KSArIHNvdXJjZVJlY3Qud2lkdGgoKQorLSAgICAgICAgICAgICAgICAgICAgJiYgdnYgPj0gc291 cmNlUmVjdC50b3AoKSAmJiB2diA8IHNvdXJjZVJlY3QudG9wKCkgKyBzb3VyY2VSZWN0LmhlaWdo dCgpKSB7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB1dSA9IHUgPj4gMTY7CisrICAgICAgICAg ICAgICAgIHFpbnQ2NCB2diA9IHYgPj4gMTY7CisrICAgICAgICAgICAgICAgIGlmICh1dSA+PSBz b3VyY2VSZWN0TGVmdCAmJiB1dSA8IHNvdXJjZVJlY3RMZWZ0ICsgc291cmNlUmVjdFdpZHRoCisr ICAgICAgICAgICAgICAgICAgICAmJiB2diA+PSBzb3VyY2VSZWN0VG9wICYmIHZ2IDwgc291cmNl UmVjdFRvcCArIHNvdXJjZVJlY3RIZWlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIHUgKz0gZHVkeDsKK0BAIC0y OTAsMTAgKzI5NywxMCBAQCB2b2lkIHF0X3RyYW5zZm9ybV9pbWFnZV9yYXN0ZXJpemUoRGVzdFQg KmRlc3RQaXhlbHMsIGludCBkYnBsLAorICAgICAgICAgICAgIHUgPSAoeDIgLSAxKSAqIGR1ZHgg KyB5ICogZHVkeSArIHUwOworICAgICAgICAgICAgIHYgPSAoeDIgLSAxKSAqIGR2ZHggKyB5ICog ZHZkeSArIHYwOworICAgICAgICAgICAgIGZvciAoOyB4MiA+IHgxOyAtLXgyKSB7CistICAgICAg ICAgICAgICAgIGludCB1dSA9IHUgPj4gMTY7CistICAgICAgICAgICAgICAgIGludCB2diA9IHYg Pj4gMTY7CistICAgICAgICAgICAgICAgIGlmICh1dSA+PSBzb3VyY2VSZWN0LmxlZnQoKSAmJiB1 dSA8IHNvdXJjZVJlY3QubGVmdCgpICsgc291cmNlUmVjdC53aWR0aCgpCistICAgICAgICAgICAg ICAgICAgICAmJiB2diA+PSBzb3VyY2VSZWN0LnRvcCgpICYmIHZ2IDwgc291cmNlUmVjdC50b3Ao KSArIHNvdXJjZVJlY3QuaGVpZ2h0KCkpIHsKKysgICAgICAgICAgICAgICAgcWludDY0IHV1ID0g dSA+PiAxNjsKKysgICAgICAgICAgICAgICAgcWludDY0IHZ2ID0gdiA+PiAxNjsKKysgICAgICAg ICAgICAgICAgaWYgKHV1ID49IHNvdXJjZVJlY3RMZWZ0ICYmIHV1IDwgc291cmNlUmVjdExlZnQg KyBzb3VyY2VSZWN0V2lkdGgKKysgICAgICAgICAgICAgICAgICAgICYmIHZ2ID49IHNvdXJjZVJl Y3RUb3AgJiYgdnYgPCBzb3VyY2VSZWN0VG9wICsgc291cmNlUmVjdEhlaWdodCkgeworICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgdSAtPSBkdWR4OworQEAgLTMwOCw4ICszMTUsOCBAQCB2b2lkIHF0X3RyYW5zZm9ybV9pbWFn ZV9yYXN0ZXJpemUoRGVzdFQgKmRlc3RQaXhlbHMsIGludCBkYnBsLAorICAgICAgICAgICAgIC8v IEJlZ2lubmluZyBvZiB0aGUgc2NhbiBsaW5lLCB3aXRoIHBlci1waXhlbCBjaGVja3MuCisgICAg ICAgICAgICAgaSA9IHgxIC0gZnJvbVg7CisgICAgICAgICAgICAgd2hpbGUgKGkpIHsKKy0gICAg ICAgICAgICAgICAgaW50IHV1ID0gcUJvdW5kKHNvdXJjZVJlY3QubGVmdCgpLCB1ID4+IDE2LCBz b3VyY2VSZWN0LmxlZnQoKSArIHNvdXJjZVJlY3Qud2lkdGgoKSAtIDEpOworLSAgICAgICAgICAg ICAgICBpbnQgdnYgPSBxQm91bmQoc291cmNlUmVjdC50b3AoKSwgdiA+PiAxNiwgc291cmNlUmVj dC50b3AoKSArIHNvdXJjZVJlY3QuaGVpZ2h0KCkgLSAxKTsKKysgICAgICAgICAgICAgICAgcWlu dDY0IHV1ID0gcUJvdW5kKHNvdXJjZVJlY3RMZWZ0LCB1ID4+IDE2LCBzb3VyY2VSZWN0TGVmdCAr IHNvdXJjZVJlY3RXaWR0aCAtIDEpOworKyAgICAgICAgICAgICAgICBxaW50NjQgdnYgPSBxQm91 bmQoc291cmNlUmVjdFRvcCwgdiA+PiAxNiwgc291cmNlUmVjdFRvcCArIHNvdXJjZVJlY3RIZWln aHQgLSAxKTsKKyAgICAgICAgICAgICAgICAgYmxlbmRlci53cml0ZShsaW5lLCByZWludGVycHJl dF9jYXN0PGNvbnN0IFNyY1QgKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1Y2hhciAqPihzcmNQ aXhlbHMpICsgdnYgKiBzYnBsKVt1dV0pOworICAgICAgICAgICAgICAgICB1ICs9IGR1ZHg7Cisg ICAgICAgICAgICAgICAgIHYgKz0gZHZkeDsKK0BAIC0zNDgsOCArMzU1LDggQEAgdm9pZCBxdF90 cmFuc2Zvcm1faW1hZ2VfcmFzdGVyaXplKERlc3RUICpkZXN0UGl4ZWxzLCBpbnQgZGJwbCwKKyAg ICAgICAgICAgICAvLyBFbmQgb2YgdGhlIHNjYW4gbGluZSwgd2l0aCBwZXItcGl4ZWwgY2hlY2tz LgorICAgICAgICAgICAgIGkgPSB0b1ggLSB4MjsKKyAgICAgICAgICAgICB3aGlsZSAoaSkgewor LSAgICAgICAgICAgICAgICBpbnQgdXUgPSBxQm91bmQoc291cmNlUmVjdC5sZWZ0KCksIHUgPj4g MTYsIHNvdXJjZVJlY3QubGVmdCgpICsgc291cmNlUmVjdC53aWR0aCgpIC0gMSk7CistICAgICAg ICAgICAgICAgIGludCB2diA9IHFCb3VuZChzb3VyY2VSZWN0LnRvcCgpLCB2ID4+IDE2LCBzb3Vy Y2VSZWN0LnRvcCgpICsgc291cmNlUmVjdC5oZWlnaHQoKSAtIDEpOworKyAgICAgICAgICAgICAg ICBxaW50NjQgdXUgPSBxQm91bmQoc291cmNlUmVjdExlZnQsIHUgPj4gMTYsIHNvdXJjZVJlY3RM ZWZ0ICsgc291cmNlUmVjdFdpZHRoIC0gMSk7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB2diA9 IHFCb3VuZChzb3VyY2VSZWN0VG9wLCB2ID4+IDE2LCBzb3VyY2VSZWN0VG9wICsgc291cmNlUmVj dEhlaWdodCAtIDEpOworICAgICAgICAgICAgICAgICBibGVuZGVyLndyaXRlKGxpbmUsIHJlaW50 ZXJwcmV0X2Nhc3Q8Y29uc3QgU3JjVCAqPihyZWludGVycHJldF9jYXN0PGNvbnN0IHVjaGFyICo+ KHNyY1BpeGVscykgKyB2diAqIHNicGwpW3V1XSk7CisgICAgICAgICAgICAgICAgIHUgKz0gZHVk eDsKKyAgICAgICAgICAgICAgICAgdiArPSBkdmR4OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv Z3VpL3BhaW50aW5nL3Fjb2xvcnRyY2x1dF9wLmggYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9x Y29sb3J0cmNsdXRfcC5oCitpbmRleCA3NmE2YTYwODAzLi4yNGZkNTIyZTZjIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWNvbG9ydHJjbHV0X3AuaAorKysrIGIvcXRiYXNl L3NyYy9ndWkvcGFpbnRpbmcvcWNvbG9ydHJjbHV0X3AuaAorQEAgLTExOCw2ICsxMTgsNyBAQCBw dWJsaWM6CisgICAgICAgICByZXR1cm4gUVJnYmE2NDo6ZnJvbVJnYmE2NChyLCBnLCBiLCBxQWxw aGEocmdiMzIpICogMjU3KTsKKyAjZW5kaWYKKyAgICAgfQorKyAgICBRUmdiYTY0IHRvTGluZWFy NjQoUVJnYmE2NCkgY29uc3QgPSBkZWxldGU7CisgCisgICAgIFFSZ2IgdG9MaW5lYXIoUVJnYiBy Z2IzMikgY29uc3QKKyAgICAgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5n L3FkcmF3aGVscGVyLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FkcmF3aGVscGVyLmNw cAoraW5kZXggYTYxNzkzNTA4YS4uNWJhMmQyNzdiNyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Z3VpL3BhaW50aW5nL3FkcmF3aGVscGVyLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRp bmcvcWRyYXdoZWxwZXIuY3BwCitAQCAtNjA5MSw3ICs2MDkxLDcgQEAgc3RhdGljIGlubGluZSB2 b2lkIGFscGhhcmdiYmxlbmRfYXJnYjMyKHF1aW50MzIgKmRzdCwgdWludCBjb3ZlcmFnZSwgY29u c3QgUVJnYmEKKyBzdGF0aWMgaW5saW5lIHZvaWQgcmdiQmxlbmRQaXhlbChRUmdiYTY0ICZkc3Qs IGludCBjb3ZlcmFnZSwgUVJnYmE2NCBzbGluZWFyLCBjb25zdCBRQ29sb3JUcmNMdXQgKmNvbG9y UHJvZmlsZSkKKyB7CisgICAgIC8vIERvIGEgZ2FtbWFjb3JyZWN0ZWQgUkdCIGFscGhhYmxlbmQu Li4KKy0gICAgY29uc3QgUVJnYmE2NCBkbGluZWFyID0gY29sb3JQcm9maWxlID8gY29sb3JQcm9m aWxlLT50b0xpbmVhcjY0KGRzdCkgOiBkc3Q7CisrICAgIGNvbnN0IFFSZ2JhNjQgZGxpbmVhciA9 IGNvbG9yUHJvZmlsZSA/IGNvbG9yUHJvZmlsZS0+dG9MaW5lYXIoZHN0KSA6IGRzdDsKKyAKKyAg ICAgUVJnYmE2NCBibGVuZCA9IHJnYkJsZW5kKGRsaW5lYXIsIHNsaW5lYXIsIGNvdmVyYWdlKTsK KyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFz dGVyLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXIuY3Bw CitpbmRleCAyODM5MjNkZTUyLi5mMDhlYjljYmVlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9n dWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3Vp L3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXIuY3BwCitAQCAtNTYwLDMxICs1NjAsNiBAQCB2 b2lkIFFSYXN0ZXJQYWludEVuZ2luZTo6dXBkYXRlTWF0cml4KGNvbnN0IFFUcmFuc2Zvcm0gJm1h dHJpeCkKKyAgICAgUVJhc3RlclBhaW50RW5naW5lU3RhdGUgKnMgPSBzdGF0ZSgpOworICAgICAv LyBGQUxDT046IGdldCByaWQgb2YgdGhpcyBsaW5lLCBzZWUgZHJhd0ltYWdlIGNhbGwgYmVsb3cu CisgICAgIHMtPm1hdHJpeCA9IG1hdHJpeDsKKy0gICAgUVRyYW5zZm9ybTo6VHJhbnNmb3JtYXRp b25UeXBlIHR4b3AgPSBzLT5tYXRyaXgudHlwZSgpOworLQorLSAgICBzd2l0Y2ggKHR4b3ApIHsK Ky0KKy0gICAgY2FzZSBRVHJhbnNmb3JtOjpUeE5vbmU6CistICAgICAgICBzLT5mbGFncy5pbnRf eGZvcm0gPSB0cnVlOworLSAgICAgICAgYnJlYWs7CistCistICAgIGNhc2UgUVRyYW5zZm9ybTo6 VHhUcmFuc2xhdGU6CistICAgICAgICBzLT5mbGFncy5pbnRfeGZvcm0gPSBxcmVhbChpbnQocy0+ bWF0cml4LmR4KCkpKSA9PSBzLT5tYXRyaXguZHgoKQorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmJiBxcmVhbChpbnQocy0+bWF0cml4LmR5KCkpKSA9PSBzLT5tYXRyaXguZHkoKTsKKy0g ICAgICAgIGJyZWFrOworLQorLSAgICBjYXNlIFFUcmFuc2Zvcm06OlR4U2NhbGU6CistICAgICAg ICBzLT5mbGFncy5pbnRfeGZvcm0gPSBxcmVhbChpbnQocy0+bWF0cml4LmR4KCkpKSA9PSBzLT5t YXRyaXguZHgoKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBxcmVhbChpbnQocy0+ bWF0cml4LmR5KCkpKSA9PSBzLT5tYXRyaXguZHkoKQorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmJiBxcmVhbChpbnQocy0+bWF0cml4Lm0xMSgpKSkgPT0gcy0+bWF0cml4Lm0xMSgpCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHFyZWFsKGludChzLT5tYXRyaXgubTIyKCkp KSA9PSBzLT5tYXRyaXgubTIyKCk7CistICAgICAgICBicmVhazsKKy0KKy0gICAgZGVmYXVsdDog Ly8gc2hlYXIgLyBwZXJzcGVjdGl2ZS4uLgorLSAgICAgICAgcy0+ZmxhZ3MuaW50X3hmb3JtID0g ZmFsc2U7CistICAgICAgICBicmVhazsKKy0gICAgfQorLQorICAgICBzLT5mbGFncy50eF9ub3No ZWFyID0gcXRfc2NhbGVGb3JUcmFuc2Zvcm0ocy0+bWF0cml4LCAmcy0+dHhzY2FsZSk7CisgCisg ICAgIGVuc3VyZU91dGxpbmVNYXBwZXIoKTsKK0BAIC02MTcsNyArNTkyLDYgQEAgUVJhc3RlclBh aW50RW5naW5lU3RhdGU6OlFSYXN0ZXJQYWludEVuZ2luZVN0YXRlKCkKKyAgICAgZmxhZ3MuYmls aW5lYXIgPSBmYWxzZTsKKyAgICAgZmxhZ3MubGVnYWN5X3JvdW5kaW5nID0gZmFsc2U7CisgICAg IGZsYWdzLmZhc3RfdGV4dCA9IHRydWU7CistICAgIGZsYWdzLmludF94Zm9ybSA9IHRydWU7Cisg ICAgIGZsYWdzLnR4X25vc2hlYXIgPSB0cnVlOworICAgICBmbGFncy5mYXN0X2ltYWdlcyA9IHRy dWU7CisgCitAQCAtMTc5Myw3ICsxNzY3LDcgQEAgdm9pZCBRUmFzdGVyUGFpbnRFbmdpbmU6OmZp bGwoY29uc3QgUVZlY3RvclBhdGggJnBhdGgsIGNvbnN0IFFCcnVzaCAmYnJ1c2gpCisgICAgIFFS ZWN0RiBjcFJlY3QgPSBwYXRoLmNvbnRyb2xQb2ludFJlY3QoKTsKKyAgICAgY29uc3QgUVJlY3RG IHBhdGhEZXZpY2VSZWN0ID0gcy0+bWF0cml4Lm1hcFJlY3QoY3BSZWN0KTsKKyAgICAgLy8gU2tp cCBwYXRocyB0aGF0IGJ5IGNvbnNlcnZhdGl2ZSBlc3RpbWF0ZXMgYXJlIGNvbXBsZXRlbHkgb3V0 c2lkZSB0aGUgcGFpbnQgZGV2aWNlLgorLSAgICBpZiAoIXBhdGhEZXZpY2VSZWN0LmludGVyc2Vj dHMoUVJlY3RGKGQtPmRldmljZVJlY3QpKSkKKysgICAgaWYgKCFwYXRoRGV2aWNlUmVjdC5pbnRl cnNlY3RzKFFSZWN0RihkLT5kZXZpY2VSZWN0KSkgfHwgIXBhdGhEZXZpY2VSZWN0LmlzVmFsaWQo KSkKKyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgUHJvY2Vzc1NwYW5zIGJsZW5kID0gZC0+Z2V0 QnJ1c2hGdW5jKHBhdGhEZXZpY2VSZWN0LCAmcy0+YnJ1c2hEYXRhKTsKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyX3AuaCBiL3F0YmFzZS9z cmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXJfcC5oCitpbmRleCAwODlhYWRjM2Y3 Li5iZjczNjNkNWFhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50 ZW5naW5lX3Jhc3Rlcl9wLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVu Z2luZV9yYXN0ZXJfcC5oCitAQCAtMTExLDcgKzExMSw2IEBAIHB1YmxpYzoKKyAgICAgICAgIHVp bnQgYmlsaW5lYXIgOiAxOworICAgICAgICAgdWludCBsZWdhY3lfcm91bmRpbmcgOiAxOworICAg ICAgICAgdWludCBmYXN0X3RleHQgOiAxOworLSAgICAgICAgdWludCBpbnRfeGZvcm0gOiAxOwor ICAgICAgICAgdWludCB0eF9ub3NoZWFyIDogMTsKKyAgICAgICAgIHVpbnQgZmFzdF9pbWFnZXMg OiAxOworICAgICB9OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWlu dGVycGF0aC5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlcnBhdGguY3BwCitp bmRleCBmOTU0NGEzMjQxLi5kODBmYWZlYWYxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkv cGFpbnRpbmcvcXBhaW50ZXJwYXRoLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcv cXBhaW50ZXJwYXRoLmNwcAorQEAgLTEyNTMsNyArMTI1Myw3IEBAIHZvaWQgUVBhaW50ZXJQYXRo OjphZGRUZXh0KGNvbnN0IFFQb2ludEYgJnBvaW50LCBjb25zdCBRRm9udCAmZiwgY29uc3QgUVN0 cmluZyAmCisgCisgICAgICAgICBpZiAoc2kuYW5hbHlzaXMuZmxhZ3MgPCBRU2NyaXB0QW5hbHlz aXM6OlRhYk9yT2JqZWN0KSB7CisgICAgICAgICAgICAgUUdseXBoTGF5b3V0IGdseXBocyA9IGVu Zy0+c2hhcGVkR2x5cGhzKCZzaSk7CistICAgICAgICAgICAgUUZvbnRFbmdpbmUgKmZlID0gZi5k LT5lbmdpbmVGb3JTY3JpcHQoc2kuYW5hbHlzaXMuc2NyaXB0KTsKKysgICAgICAgICAgICBRRm9u dEVuZ2luZSAqZmUgPSBlbmctPmZvbnRFbmdpbmUoc2kpOworICAgICAgICAgICAgIFFfQVNTRVJU KGZlKTsKKyAgICAgICAgICAgICBmZS0+YWRkT3V0bGluZVRvUGF0aCh4LCB5LCBnbHlwaHMsIHRo aXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2kuYW5hbHlzaXMuYmlkaUxl dmVsICUgMgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYXRoY2xpcHBl cl9wLmggYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGF0aGNsaXBwZXJfcC5oCitpbmRleCA5 NDQ0YTg3YjcxLi4xOGY2NGM1ZThjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRp bmcvcXBhdGhjbGlwcGVyX3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhdGhj bGlwcGVyX3AuaAorQEAgLTE1Niw3ICsxNTYsNyBAQCBwdWJsaWM6CisgICAgIGludCB2ZXJ0ZXgo RGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3Q7CisgCisgcHJpdmF0ZToKKy0gICAgaW50IG1fbmV4 dFsyXVsyXTsKKysgICAgaW50IG1fbmV4dFsyXVsyXSA9IHsgeyAtMSwgLTEgfSwgeyAtMSwgLTEg fSB9OworIH07CisgCisgY2xhc3MgUVBhdGhTZWdtZW50cworQEAgLTI5NiwxMCArMjk2LDYgQEAg aW5saW5lIFFQYXRoRWRnZTo6UVBhdGhFZGdlKGludCBhLCBpbnQgYikKKyAgICAgLCBhbmdsZSgw KQorICAgICAsIGludkFuZ2xlKDApCisgeworLSAgICBtX25leHRbMF1bMF0gPSAtMTsKKy0gICAg bV9uZXh0WzFdWzBdID0gLTE7CistICAgIG1fbmV4dFswXVswXSA9IC0xOworLSAgICBtX25leHRb MV1bMF0gPSAtMTsKKyB9CisgCisgaW5saW5lIGludCBRUGF0aEVkZ2U6Om5leHQoVHJhdmVyc2Fs IHRyYXZlcnNhbCwgRGlyZWN0aW9uIGRpcmVjdGlvbikgY29uc3QKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL2d1aS9wYWludGluZy9xcGRmLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fw ZGYuY3BwCitpbmRleCAzMDY2NzQ0ZjFiLi4yYzhkM2MzYjUzIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9ndWkvcGFpbnRpbmcvcXBkZi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5n L3FwZGYuY3BwCitAQCAtMjc2MCw2ICsyNzYwLDggQEAgaW50IFFQZGZFbmdpbmVQcml2YXRlOjph ZGRCcnVzaFBhdHRlcm4oY29uc3QgUVRyYW5zZm9ybSAmbSwgYm9vbCAqc3BlY2lmeUNvbG9yLAor ICAgICAgICAgcmV0dXJuIGdyYWRpZW50QnJ1c2goYnJ1c2gsIG1hdHJpeCwgZ1N0YXRlT2JqZWN0 KTsKKyAgICAgfQorIAorKyAgICBtYXRyaXggPSBicnVzaC50cmFuc2Zvcm0oKSAqIG1hdHJpeDsK KysKKyAgICAgaWYgKCghYnJ1c2guaXNPcGFxdWUoKSAmJiBicnVzaC5zdHlsZSgpIDwgUXQ6Okxp bmVhckdyYWRpZW50UGF0dGVybikgfHwgb3BhY2l0eSAhPSAxLjApCisgICAgICAgICAqZ1N0YXRl T2JqZWN0ID0gYWRkQ29uc3RhbnRBbHBoYU9iamVjdChxUm91bmQoYnJ1c2guY29sb3IoKS5hbHBo YSgpICogb3BhY2l0eSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBxUm91bmQocGVuLmNvbG9yKCkuYWxwaGEoKSAqIG9wYWNpdHkpKTsKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xc3Ryb2tlci5jcHAgYi9xdGJhc2Uvc3JjL2d1 aS9wYWludGluZy9xc3Ryb2tlci5jcHAKK2luZGV4IGNiNWQzOTVlODAuLjNiNjM1N2E4OTMgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xc3Ryb2tlci5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FzdHJva2VyLmNwcAorQEAgLTExODIsNiArMTE4Miw3IEBA IHZvaWQgUURhc2hTdHJva2VyOjpwcm9jZXNzQ3VycmVudFN1YnBhdGgoKQorICAgICAgICAgLy8g Q2hlY2sgaWYgdGhlIGVudGlyZSBsaW5lIHNob3VsZCBiZSBjbGlwcGVkIGF3YXkgb3Igc2ltcGxp ZmllZAorICAgICAgICAgYm9vbCBjbGlwSXQgPSBjbGlwcGluZyAmJiAhbGluZUludGVyc2VjdHNS ZWN0KHByZXYsIGUsIGNsaXBfdGwsIGNsaXBfYnIpOworICAgICAgICAgYm9vbCBza2lwRGFzaGlu ZyA9IGVsZW4gKiBpbnZTdW1MZW5ndGggPiByZXBldGl0aW9uTGltaXQoKTsKKysgICAgICAgIGlu dCBtYXhEYXNoZXMgPSBkYXNoQ291bnQ7CisgICAgICAgICBpZiAoc2tpcERhc2hpbmcgfHwgY2xp cEl0KSB7CisgICAgICAgICAgICAgLy8gQ3V0IGF3YXkgZnVsbCBkYXNoIHNlcXVlbmNlcy4KKyAg ICAgICAgICAgICBlbGVuIC09IHN0ZDo6Zmxvb3IoZWxlbiAqIGludlN1bUxlbmd0aCkgKiBzdW1M ZW5ndGg7CitAQCAtMTE5Niw3ICsxMTk3LDcgQEAgdm9pZCBRRGFzaFN0cm9rZXI6OnByb2Nlc3ND dXJyZW50U3VicGF0aCgpCisgICAgICAgICAgICAgICAgICAgICBwb3MgPSBlc3RvcDsgLy8gbW92 ZSBwb3MgdG8gbmV4dCBwYXRoIGVsZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0 cnVlOworICAgICAgICAgICAgICAgICB9IGVsc2UgeyAvLyBEYXNoIGlzIG9uIHRoaXMgbGluZQor LSAgICAgICAgICAgICAgICAgICAgcG9zID0gZHBvcyArIGVzdGFydDsKKysgICAgICAgICAgICAg ICAgICAgIHBvcyA9IC0tbWF4RGFzaGVzID4gMCA/IGRwb3MgKyBlc3RhcnQgOiBlc3RvcDsKKyAg ICAgICAgICAgICAgICAgICAgIGRvbmUgPSBwb3MgPj0gZXN0b3A7CisgICAgICAgICAgICAgICAg ICAgICBpZiAoKytpZGFzaCA+PSBkYXNoQ291bnQpCisgICAgICAgICAgICAgICAgICAgICAgICAg aWRhc2ggPSAwOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3F0X2F0dHJp YnV0aW9uLmpzb24gYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xdF9hdHRyaWJ1dGlvbi5qc29u CitpbmRleCA3YjE2ZThjMjExLi4wZTg3ZDMwYWEyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9n dWkvcGFpbnRpbmcvcXRfYXR0cmlidXRpb24uanNvbgorKysrIGIvcXRiYXNlL3NyYy9ndWkvcGFp bnRpbmcvcXRfYXR0cmlidXRpb24uanNvbgorQEAgLTEwLDcgKzEwLDcgQEAKKyAgICAgICAgICJI b21lcGFnZSI6ICJodHRwOi8vd3d3LmZyZWV0eXBlLm9yZyIsCisgICAgICAgICAiTGljZW5zZSI6 ICJGcmVldHlwZSBQcm9qZWN0IExpY2Vuc2Ugb3IgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug djIuMCBvbmx5IiwKKyAgICAgICAgICJMaWNlbnNlSWQiOiAiRlRMIG9yIEdQTC0yLjAiLAorLSAg ICAgICAgIkxpY2Vuc2VGaWxlIjogIi4uLy4uLzNyZHBhcnR5L2ZyZWV0eXBlL2RvY3MvTElDRU5T RS5UWFQiLAorKyAgICAgICAgIkxpY2Vuc2VGaWxlIjogIi4uLy4uLzNyZHBhcnR5L2ZyZWV0eXBl L0xJQ0VOU0UuVFhUIiwKKyAgICAgICAgICJDb3B5cmlnaHQiOiAiQ29weXJpZ2h0IDIwMDAtMjAx NiBieSBEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuIgor ICAgICB9LAorICAgICB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJf cF9wLmggYi9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcl9wX3AuaAoraW5kZXggZWM5ZDI1OTcx Zi4uNGE1YTdhNmQ1MSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hhZGVyX3Bf cC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcl9wX3AuaAorQEAgLTY4LDEzICs2 OCwxMyBAQCBzdHJ1Y3QgUV9HVUlfRVhQT1JUIFFTaGFkZXJQcml2YXRlCisgICAgIHsKKyAgICAg fQorIAorLSAgICBRU2hhZGVyUHJpdmF0ZShjb25zdCBRU2hhZGVyUHJpdmF0ZSAqb3RoZXIpCisr ICAgIFFTaGFkZXJQcml2YXRlKGNvbnN0IFFTaGFkZXJQcml2YXRlICZvdGhlcikKKyAgICAgICAg IDogcmVmKDEpLAorLSAgICAgICAgICBxc2JWZXJzaW9uKG90aGVyLT5xc2JWZXJzaW9uKSwKKy0g ICAgICAgICAgc3RhZ2Uob3RoZXItPnN0YWdlKSwKKy0gICAgICAgICAgZGVzYyhvdGhlci0+ZGVz YyksCistICAgICAgICAgIHNoYWRlcnMob3RoZXItPnNoYWRlcnMpLAorLSAgICAgICAgICBiaW5k aW5ncyhvdGhlci0+YmluZGluZ3MpCisrICAgICAgICAgIHFzYlZlcnNpb24ob3RoZXIucXNiVmVy c2lvbiksCisrICAgICAgICAgIHN0YWdlKG90aGVyLnN0YWdlKSwKKysgICAgICAgICAgZGVzYyhv dGhlci5kZXNjKSwKKysgICAgICAgICAgc2hhZGVycyhvdGhlci5zaGFkZXJzKSwKKysgICAgICAg ICAgYmluZGluZ3Mob3RoZXIuYmluZGluZ3MpCisgICAgIHsKKyAgICAgfQorIAorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hhZGVyZGVzY3JpcHRpb25fcF9wLmggYi9xdGJhc2Uv c3JjL2d1aS9yaGkvcXNoYWRlcmRlc2NyaXB0aW9uX3BfcC5oCitpbmRleCBlYzJiMGI2YjRjLi4z ZGEzM2E4YTJiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJkZXNjcmlw dGlvbl9wX3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJkZXNjcmlwdGlvbl9w X3AuaAorQEAgLTYzLDE2ICs2MywxNiBAQCBzdHJ1Y3QgUV9HVUlfRVhQT1JUIFFTaGFkZXJEZXNj cmlwdGlvblByaXZhdGUKKyAgICAgICAgIGxvY2FsU2l6ZVswXSA9IGxvY2FsU2l6ZVsxXSA9IGxv Y2FsU2l6ZVsyXSA9IDA7CisgICAgIH0KKyAKKy0gICAgUVNoYWRlckRlc2NyaXB0aW9uUHJpdmF0 ZShjb25zdCBRU2hhZGVyRGVzY3JpcHRpb25Qcml2YXRlICpvdGhlcikKKysgICAgUVNoYWRlckRl c2NyaXB0aW9uUHJpdmF0ZShjb25zdCBRU2hhZGVyRGVzY3JpcHRpb25Qcml2YXRlICZvdGhlcikK KyAgICAgICAgIDogcmVmKDEpLAorLSAgICAgICAgICBpblZhcnMob3RoZXItPmluVmFycyksCist ICAgICAgICAgIG91dFZhcnMob3RoZXItPm91dFZhcnMpLAorLSAgICAgICAgICB1bmlmb3JtQmxv Y2tzKG90aGVyLT51bmlmb3JtQmxvY2tzKSwKKy0gICAgICAgICAgcHVzaENvbnN0YW50QmxvY2tz KG90aGVyLT5wdXNoQ29uc3RhbnRCbG9ja3MpLAorLSAgICAgICAgICBzdG9yYWdlQmxvY2tzKG90 aGVyLT5zdG9yYWdlQmxvY2tzKSwKKy0gICAgICAgICAgY29tYmluZWRJbWFnZVNhbXBsZXJzKG90 aGVyLT5jb21iaW5lZEltYWdlU2FtcGxlcnMpLAorLSAgICAgICAgICBzdG9yYWdlSW1hZ2VzKG90 aGVyLT5zdG9yYWdlSW1hZ2VzKSwKKy0gICAgICAgICAgbG9jYWxTaXplKG90aGVyLT5sb2NhbFNp emUpCisrICAgICAgICAgIGluVmFycyhvdGhlci5pblZhcnMpLAorKyAgICAgICAgICBvdXRWYXJz KG90aGVyLm91dFZhcnMpLAorKyAgICAgICAgICB1bmlmb3JtQmxvY2tzKG90aGVyLnVuaWZvcm1C bG9ja3MpLAorKyAgICAgICAgICBwdXNoQ29uc3RhbnRCbG9ja3Mob3RoZXIucHVzaENvbnN0YW50 QmxvY2tzKSwKKysgICAgICAgICAgc3RvcmFnZUJsb2NrcyhvdGhlci5zdG9yYWdlQmxvY2tzKSwK KysgICAgICAgICAgY29tYmluZWRJbWFnZVNhbXBsZXJzKG90aGVyLmNvbWJpbmVkSW1hZ2VTYW1w bGVycyksCisrICAgICAgICAgIHN0b3JhZ2VJbWFnZXMob3RoZXIuc3RvcmFnZUltYWdlcyksCisr ICAgICAgICAgIGxvY2FsU2l6ZShvdGhlci5sb2NhbFNpemUpCisgICAgIHsKKyAgICAgfQorIAor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3RleHQvcWZvbnRkYXRhYmFzZS5jcHAgYi9xdGJh c2Uvc3JjL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UuY3BwCitpbmRleCBhNjU3YThjNTE2Li40ZmMw MTAwOTU4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvdGV4dC9xZm9udGRhdGFiYXNlLmNw cAorKysrIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xZm9udGRhdGFiYXNlLmNwcAorQEAgLTk4Myw3 ICs5ODMsNyBAQCBRRm9udEVuZ2luZSAqbG9hZFNpbmdsZUVuZ2luZShpbnQgc2NyaXB0LAorICAg ICAgICAgaWYgKHN0eWxlLT5rZXkuc3RyZXRjaCAhPSAwICYmIHJlcXVlc3Quc3RyZXRjaCAhPSAw CisgICAgICAgICAgICAgJiYgKHJlcXVlc3Quc3R5bGVOYW1lLmlzRW1wdHkoKSB8fCByZXF1ZXN0 LnN0eWxlTmFtZSAhPSBzdHlsZS0+c3R5bGVOYW1lKSkgeworICAgICAgICAgICAgIGRlZi5zdHJl dGNoID0gKHJlcXVlc3Quc3RyZXRjaCAqIDEwMCArIHN0eWxlLT5rZXkuc3RyZXRjaCAvIDIpIC8g c3R5bGUtPmtleS5zdHJldGNoOworLSAgICAgICAgfSBlbHNlIHsKKysgICAgICAgIH0gZWxzZSBp ZiAocmVxdWVzdC5zdHJldGNoID09IFFGb250OjpBbnlTdHJldGNoKSB7CisgICAgICAgICAgICAg ZGVmLnN0cmV0Y2ggPSAxMDA7CisgICAgICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9ndWkvdGV4dC9xdGV4dGRvY3VtZW50bGF5b3V0LmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3RleHQv cXRleHRkb2N1bWVudGxheW91dC5jcHAKK2luZGV4IGYzZTZlYTIxMDAuLjcyMjY3ZTkzODAgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZG9jdW1lbnRsYXlvdXQuY3BwCisr KysgYi9xdGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZG9jdW1lbnRsYXlvdXQuY3BwCitAQCAtMjEy Myw3ICsyMTIzLDcgQEAgdm9pZCBRVGV4dERvY3VtZW50TGF5b3V0UHJpdmF0ZTo6ZHJhd0xpc3RJ dGVtKGNvbnN0IFFQb2ludEYgJm9mZnNldCwgUVBhaW50ZXIgKnAKKyB7CisgICAgIFFfUShjb25z dCBRVGV4dERvY3VtZW50TGF5b3V0KTsKKyAgICAgY29uc3QgUVRleHRCbG9ja0Zvcm1hdCBibG9j a0Zvcm1hdCA9IGJsLmJsb2NrRm9ybWF0KCk7CistICAgIGNvbnN0IFFUZXh0Q2hhckZvcm1hdCBj aGFyRm9ybWF0ID0gUVRleHRDdXJzb3IoYmwpLmNoYXJGb3JtYXQoKTsKKysgICAgY29uc3QgUVRl eHRDaGFyRm9ybWF0IGNoYXJGb3JtYXQgPSBibC5jaGFyRm9ybWF0KCk7CisgICAgIFFGb250IGZv bnQoY2hhckZvcm1hdC5mb250KCkpOworICAgICBpZiAocS0+cGFpbnREZXZpY2UoKSkKKyAgICAg ICAgIGZvbnQgPSBRRm9udChmb250LCBxLT5wYWludERldmljZSgpKTsKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZW5naW5lLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL3RleHQv cXRleHRlbmdpbmUuY3BwCitpbmRleCBjZTRhYmFjNDcyLi5hNmM2NmU1ZDJkIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGVuZ2luZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMv Z3VpL3RleHQvcXRleHRlbmdpbmUuY3BwCitAQCAtMSw2ICsxLDYgQEAKKyAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgorICoqCistKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4K KysqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorICoqIENvbnRhY3Q6 IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIHRoZSBRdEd1aSBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCitAQCAtMTU2NSw2ICsxNTY1 LDEyIEBAIHZvaWQgUVRleHRFbmdpbmU6OnNoYXBlVGV4dChpbnQgaXRlbSkgY29uc3QKKyAgICAg ICAgIC8vIE92ZXJ3cml0ZSB3aXRoIDAgdG9rZW4gdG8gaW5kaWNhdGUgZmFpbHVyZQorICAgICAg ICAgUUdseXBoTGF5b3V0IGcgPSBhdmFpbGFibGVHbHlwaHMoJnNpKTsKKyAgICAgICAgIGcuZ2x5 cGhzWzBdID0gMDsKKysgICAgICAgIGcuYXR0cmlidXRlc1swXS5jbHVzdGVyU3RhcnQgPSB0cnVl OworKworKyAgICAgICAgdXNob3J0ICpsb2dfY2x1c3RlcnMgPSBsb2dDbHVzdGVycygmc2kpOwor KyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpdGVtTGVuZ3RoOyArK2kpCisrICAgICAgICAg ICAgbG9nX2NsdXN0ZXJzW2ldID0gMDsKKysKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcWRlc2t0b3BzZXJ2aWNlcy5jcHAgYi9x dGJhc2Uvc3JjL2d1aS91dGlsL3FkZXNrdG9wc2VydmljZXMuY3BwCitpbmRleCBmYmI2M2E5NDA4 Li40ZDVmYWZhYWE3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvdXRpbC9xZGVza3RvcHNl cnZpY2VzLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvdXRpbC9xZGVza3RvcHNlcnZpY2VzLmNw cAorQEAgLTU0LDYgKzU0LDggQEAKKyAjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybWludGVncmF0aW9u Lmg+CisgI2luY2x1ZGUgPHFkaXIuaD4KKyAKKysjaW5jbHVkZSA8UXRDb3JlL3ByaXZhdGUvcWxv Y2tpbmdfcC5oPgorKworIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIGNsYXNzIFFPcGVuVXJsSGFu ZGxlclJlZ2lzdHJ5IDogcHVibGljIFFPYmplY3QKK0BAIC04MSw2ICs4Myw3IEBAIFFfR0xPQkFM X1NUQVRJQyhRT3BlblVybEhhbmRsZXJSZWdpc3RyeSwgaGFuZGxlclJlZ2lzdHJ5KQorIAorIHZv aWQgUU9wZW5VcmxIYW5kbGVyUmVnaXN0cnk6OmhhbmRsZXJEZXN0cm95ZWQoUU9iamVjdCAqaGFu ZGxlcikKKyB7CisrICAgIGNvbnN0IGF1dG8gbG9jayA9IHF0X3Njb3BlZF9sb2NrKG11dGV4KTsK KyAgICAgSGFuZGxlckhhc2g6Okl0ZXJhdG9yIGl0ID0gaGFuZGxlcnMuYmVnaW4oKTsKKyAgICAg d2hpbGUgKGl0ICE9IGhhbmRsZXJzLmVuZCgpKSB7CisgICAgICAgICBpZiAoaXQtPnJlY2VpdmVy ID09IGhhbmRsZXIpIHsKK0BAIC0yOTQsNyArMjk3LDggQEAgdm9pZCBRRGVza3RvcFNlcnZpY2Vz OjpzZXRVcmxIYW5kbGVyKGNvbnN0IFFTdHJpbmcgJnNjaGVtZSwgUU9iamVjdCAqcmVjZWl2ZXIs IGMKKyAgICAgaC5uYW1lID0gbWV0aG9kOworICAgICByZWdpc3RyeS0+aGFuZGxlcnMuaW5zZXJ0 KHNjaGVtZS50b0xvd2VyKCksIGgpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KHJlY2VpdmVyLCBT SUdOQUwoZGVzdHJveWVkKFFPYmplY3QqKSksCistICAgICAgICAgICAgICAgICAgICAgcmVnaXN0 cnksIFNMT1QoaGFuZGxlckRlc3Ryb3llZChRT2JqZWN0KikpKTsKKysgICAgICAgICAgICAgICAg ICAgICByZWdpc3RyeSwgU0xPVChoYW5kbGVyRGVzdHJveWVkKFFPYmplY3QqKSksCisrICAgICAg ICAgICAgICAgICAgICAgUXQ6OkRpcmVjdENvbm5lY3Rpb24pOworIH0KKyAKKyAvKiEKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL2d1aS91dGlsL3Fwa21oYW5kbGVyLmNwcCBiL3F0YmFzZS9zcmMv Z3VpL3V0aWwvcXBrbWhhbmRsZXIuY3BwCitpbmRleCBlMGMzYjc1ZWZlLi4zNDE0ZjlkOGJhIDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvdXRpbC9xcGttaGFuZGxlci5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvZ3VpL3V0aWwvcXBrbWhhbmRsZXIuY3BwCitAQCAtNTcsNyArNTcsNyBAQCBzdHJ1 Y3QgUGttVHlwZQorICAgICBxdWludDMyIGJ5dGVzUGVyQmxvY2s7CisgfTsKKyAKKy1zdGF0aWMg UGttVHlwZSB0eXBlTWFwWzVdID0geworK3N0YXRpYyBjb25zdGV4cHIgUGttVHlwZSB0eXBlTWFw WzVdID0geworICAgICB7IDB4OEQ2NCwgIDggfSwgICAvLyBHTF9FVEMxX1JHQjhfT0VTCisgICAg IHsgMHg5Mjc0LCAgOCB9LCAgIC8vIEdMX0NPTVBSRVNTRURfUkdCOF9FVEMyCisgICAgIHsgMCwg MCB9LCAgICAgICAgIC8vIHVudXNlZCAob2Jzb2xldGUpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5ZmlsZWltcGwuY3BwIGIvcXRiYXNlL3NyYy9u ZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5ZmlsZWltcGwuY3BwCitpbmRleCBiNmJlOTMxNDdh Li42ZTY5YjRjNGQzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0 d29ya3JlcGx5ZmlsZWltcGwuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3Fu ZXR3b3JrcmVwbHlmaWxlaW1wbC5jcHAKK0BAIC04OSw5ICs4OSwxMCBAQCBRTmV0d29ya1JlcGx5 RmlsZUltcGw6OlFOZXR3b3JrUmVwbHlGaWxlSW1wbChRTmV0d29ya0FjY2Vzc01hbmFnZXIgKm1h bmFnZXIsIGNvbgorICAgICAgICAgLy8gd2UgaGFuZGxlIG9ubHkgbG9jYWwgZmlsZXMKKyAgICAg ICAgIFFTdHJpbmcgbXNnID0gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRTmV0d29ya0Fj Y2Vzc0ZpbGVCYWNrZW5kIiwgIlJlcXVlc3QgZm9yIG9wZW5pbmcgbm9uLWxvY2FsIGZpbGUgJTEi KS5hcmcodXJsLnRvU3RyaW5nKCkpOworICAgICAgICAgc2V0RXJyb3IoUU5ldHdvcmtSZXBseTo6 UHJvdG9jb2xJbnZhbGlkT3BlcmF0aW9uRXJyb3IsIG1zZyk7CisrICAgICAgICBzZXRGaW5pc2hl ZCh0cnVlKTsgLy8gV2UncmUgZmluaXNoZWQsIHdpbGwgZW1pdCBmaW5pc2hlZCgpIGFmdGVyIGN0 b3IgaXMgZG9uZS4KKyAgICAgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgImVy cm9yT2NjdXJyZWQiLCBRdDo6UXVldWVkQ29ubmVjdGlvbiwKKyAgICAgICAgICAgICBRX0FSRyhR TmV0d29ya1JlcGx5OjpOZXR3b3JrRXJyb3IsIFFOZXR3b3JrUmVwbHk6OlByb3RvY29sSW52YWxp ZE9wZXJhdGlvbkVycm9yKSk7CistICAgICAgICBmaWxlT3BlbkZpbmlzaGVkKGZhbHNlKTsKKysg ICAgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgW3RoaXNdKCl7IGZpbGVPcGVu RmluaXNoZWQoZmFsc2UpOyB9LCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisgICAgICAgICByZXR1 cm47CisgICAgIH0KKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvYWNj ZXNzL3FuZXR3b3JrcmVwbHlpbXBsLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5l dHdvcmtyZXBseWltcGwuY3BwCitpbmRleCBiY2RmNmVlMmYxLi4zYjZkZWI4MmJkIDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5aW1wbC5jcHAKKysr KyBiL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWltcGwuY3BwCitAQCAt NjgwLDcgKzY4MCw3IEBAIHZvaWQgUU5ldHdvcmtSZXBseUltcGxQcml2YXRlOjphcHBlbmREb3du c3RyZWFtRGF0YShRSU9EZXZpY2UgKmRhdGEpCisgICAgIC8vIHJlYWQgdW50aWwgRU9GIGZyb20g ZGF0YQorICAgICBpZiAoUV9VTkxJS0VMWShjb3B5RGV2aWNlKSkgeworICAgICAgICAgcUNyaXRp Y2FsKCJRTmV0d29ya1JlcGx5SW1wbDogY29weSBmcm9tIFFJT0RldmljZSBhbHJlYWR5IGluIHBy b2dyZXNzIC0tICIKKy0gICAgICAgICAgICAgICAgICAiYmFja2VuZCBwcm9ibHkgbmVlZHMgdG8g YmUgZml4ZWQiKTsKKysgICAgICAgICAgICAgICAgICAiYmFja2VuZCBwcm9iYWJseSBuZWVkcyB0 byBiZSBmaXhlZCIpOworICAgICAgICAgcmV0dXJuOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xYXV0aGVudGljYXRvci5jcHAgYi9xdGJhc2Uvc3Jj L25ldHdvcmsva2VybmVsL3FhdXRoZW50aWNhdG9yLmNwcAoraW5kZXggZDlmZTdiYzQ3Yi4uY2Nk MDRiMjk0YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWF1dGhlbnRp Y2F0b3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3FhdXRoZW50aWNhdG9y LmNwcAorQEAgLTUwLDYgKzUwLDcgQEAKKyAjaW5jbHVkZSA8cXN0cmluZy5oPgorICNpbmNsdWRl IDxxZGF0ZXRpbWUuaD4KKyAjaW5jbHVkZSA8cXJhbmRvbS5oPgorKyNpbmNsdWRlICJwcml2YXRl L3FzeXN0ZW1saWJyYXJ5X3AuaCIKKyAKKyAjaWZkZWYgUV9PU19XSU4KKyAjaW5jbHVkZSA8cW11 dGV4Lmg+CitAQCAtMTU2Myw3ICsxNTY0LDcgQEAgc3RhdGljIGJvb2wgcV9TU1BJX2xpYnJhcnlf bG9hZCgpCisgCisgICAgIC8vIEluaXRpYWxpemUgc2VjdXJpdHkgaW50ZXJmYWNlCisgICAgIGlm IChwU2VjdXJpdHlGdW5jdGlvblRhYmxlID09IG51bGxwdHIpIHsKKy0gICAgICAgIHNlY3VyaXR5 RExMSGFuZGxlID0gTG9hZExpYnJhcnkoTCJzZWN1cjMyLmRsbCIpOworKyAgICAgICAgc2VjdXJp dHlETExIYW5kbGUgPSBRU3lzdGVtTGlicmFyeTo6bG9hZChMInNlY3VyMzIiKTsKKyAgICAgICAg IGlmIChzZWN1cml0eURMTEhhbmRsZSAhPSBudWxscHRyKSB7CisgICAgICAgICAgICAgSU5JVF9T RUNVUklUWV9JTlRFUkZBQ0UgcEluaXRTZWN1cml0eUludGVyZmFjZSA9CisgICAgICAgICAgICAg ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8SU5JVF9TRUNVUklUWV9JTlRFUkZBQ0U+KAorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWhvc3RpbmZvX3VuaXguY3BwIGIvcXRiYXNl L3NyYy9uZXR3b3JrL2tlcm5lbC9xaG9zdGluZm9fdW5peC5jcHAKK2luZGV4IDliMGEyZWU2Njku LjczNjc5YzllZjEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3Fob3N0 aW5mb191bml4LmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xaG9zdGluZm9f dW5peC5jcHAKK0BAIC0xMjIsNyArMTIyLDYgQEAgc3RhdGljIFFGdW5jdGlvblBvaW50ZXIgcmVz b2x2ZVN5bWJvbChRTGlicmFyeSAmbGliLCBjb25zdCBjaGFyICpzeW0pCisgCisgTGliUmVzb2x2 OjpMaWJSZXNvbHYoKQorIHsKKy0gICAgUUxpYnJhcnkgbGliOworICNpZmRlZiBMSUJSRVNPTFZf U08KKyAgICAgbGliLnNldEZpbGVOYW1lKFFTdHJpbmdMaXRlcmFsKExJQlJFU09MVl9TTykpOwor ICAgICBpZiAoIWxpYi5sb2FkKCkpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3Nv Y2tldC9xc29ja3M1c29ja2V0ZW5naW5lLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9zb2NrZXQv cXNvY2tzNXNvY2tldGVuZ2luZS5jcHAKK2luZGV4IDNhMDQ2ZmQxMTYuLjk3ZmFkY2EwYjMgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc29ja2V0L3Fzb2NrczVzb2NrZXRlbmdpbmUu Y3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc29ja2V0L3Fzb2NrczVzb2NrZXRlbmdpbmUu Y3BwCitAQCAtMTI5Niw3ICsxMjk2LDcgQEAgdm9pZCBRU29ja3M1U29ja2V0RW5naW5lUHJpdmF0 ZTo6X3FfdWRwU29ja2V0UmVhZE5vdGlmaWNhdGlvbigpCisgICAgICAgICBpbnQgcG9zID0gMDsK KyAgICAgICAgIGNvbnN0IGNoYXIgKmJ1ZiA9IGluQnVmLmNvbnN0RGF0YSgpOworICAgICAgICAg aWYgKGluQnVmLnNpemUoKSA8IDQpIHsKKy0gICAgICAgICAgICBRU09DS1M1X0RfREVCVUcgPDwg ImJ1Z3VzIHVkcCBkYXRhLCBkaXNjYXJkaW5nIjsKKysgICAgICAgICAgICBRU09DS1M1X0RfREVC VUcgPDwgImJvZ3VzIHVkcCBkYXRhLCBkaXNjYXJkaW5nIjsKKyAgICAgICAgICAgICByZXR1cm47 CisgICAgICAgICB9CisgICAgICAgICBRU29ja3M1UmV2aXZlZERhdGFncmFtIGRhdGFncmFtOwor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGNvbnRleHRfb3BlbnNzbC5j cHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xjb250ZXh0X29wZW5zc2wuY3BwCitpbmRl eCBjOWYyMDJmNTczLi5jOTkyZGE5ZDhlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3Jr L3NzbC9xc3NsY29udGV4dF9vcGVuc3NsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3Nz bC9xc3NsY29udGV4dF9vcGVuc3NsLmNwcAorQEAgLTQwOSw3ICs0MDksNyBAQCBpbml0X2NvbnRl eHQ6CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBRU3NsOjpEdGxzVjFfME9yTGF0ZXI6Cisg ICAgICAgICBtaW5WZXJzaW9uID0gRFRMUzFfVkVSU0lPTjsKKy0gICAgICAgIG1heFZlcnNpb24g PSBEVExTX01BWF9WRVJTSU9OOworKyAgICAgICAgbWF4VmVyc2lvbiA9IDA7CisgICAgICAgICBi cmVhazsKKyAgICAgY2FzZSBRU3NsOjpEdGxzVjFfMjoKKyAgICAgICAgIG1pblZlcnNpb24gPSBE VExTMV8yX1ZFUlNJT047CitAQCAtNDE3LDcgKzQxNyw3IEBAIGluaXRfY29udGV4dDoKKyAgICAg ICAgIGJyZWFrOworICAgICBjYXNlIFFTc2w6OkR0bHNWMV8yT3JMYXRlcjoKKyAgICAgICAgIG1p blZlcnNpb24gPSBEVExTMV8yX1ZFUlNJT047CistICAgICAgICBtYXhWZXJzaW9uID0gRFRMU19N QVhfVkVSU0lPTjsKKysgICAgICAgIG1heFZlcnNpb24gPSAwOworICAgICAgICAgYnJlYWs7Cisg ICAgIGNhc2UgUVNzbDo6VGxzVjFfM09yTGF0ZXI6CisgI2lmZGVmIFRMUzFfM19WRVJTSU9OCitA QCAtNDU1LDcgKzQ1NSw3IEBAIGluaXRfY29udGV4dDoKKyAgICAgfQorIAorICAgICAvLyBFbmFi bGUgYnVnIHdvcmthcm91bmRzLgorLSAgICBsb25nIG9wdGlvbnMgPSBRU3NsU29ja2V0QmFja2Vu ZFByaXZhdGU6OnNldHVwT3BlblNzbE9wdGlvbnMoY29uZmlndXJhdGlvbi5wcm90b2NvbCgpLCBj b25maWd1cmF0aW9uLmQtPnNzbE9wdGlvbnMpOworKyAgICBxc3Nsb3B0aW9ucyBvcHRpb25zID0g UVNzbFNvY2tldEJhY2tlbmRQcml2YXRlOjpzZXR1cE9wZW5Tc2xPcHRpb25zKGNvbmZpZ3VyYXRp b24ucHJvdG9jb2woKSwgY29uZmlndXJhdGlvbi5kLT5zc2xPcHRpb25zKTsKKyAgICAgcV9TU0xf Q1RYX3NldF9vcHRpb25zKHNzbENvbnRleHQtPmN0eCwgb3B0aW9ucyk7CisgCisgICAgIC8vIFRl bGwgT3BlblNTTCB0byByZWxlYXNlIG1lbW9yeSBlYXJseQorZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvbmV0d29yay9zc2wvcXNzbGRpZmZpZWhlbGxtYW5wYXJhbWV0ZXJzX29wZW5zc2wuY3BwIGIv cXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsZGlmZmllaGVsbG1hbnBhcmFtZXRlcnNfb3BlbnNz bC5jcHAKK2luZGV4IGFhZjg3NDExMzAuLmI1ODkzNTM3MmMgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL25ldHdvcmsvc3NsL3Fzc2xkaWZmaWVoZWxsbWFucGFyYW1ldGVyc19vcGVuc3NsLmNwcAor KysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsZGlmZmllaGVsbG1hbnBhcmFtZXRlcnNf b3BlbnNzbC5jcHAKK0BAIC01OSw1NyArNTksNiBAQAorIAorIFFUX0JFR0lOX05BTUVTUEFDRQor IAorLSNpZmRlZiBPUEVOU1NMX05PX0RFUFJFQ0FURURfM18wCistCistc3RhdGljIGludCBxX0RI X2NoZWNrKERIICpkaCwgaW50ICpzdGF0dXMpCisteworLSAgICAvLyBESF9jaGVjayB3YXMgZmly c3QgZGVwcmVjYXRlZCBpbiBPcGVuU1NMIDMuMC4wLCBhcyBsb3ctbGV2ZWwKKy0gICAgLy8gQVBJ OyB0aGUgRVZQX1BLRVkgZmFtaWx5IG9mIGZ1bmN0aW9ucyB3YXMgYWR2aXNlZCBhcyBhbiBhbHRl cm5hdGl2ZS4KKy0gICAgLy8gQXMgb2Ygbm93IEVWUF9QS0VZX3BhcmFtc19jaGVjayBlbmRzIHVw IGNhbGxpbmcgLi4uIERIX2NoZWNrLAorLSAgICAvLyB3aGljaCBpcyBnb29kIGVub3VnaC4KKy0K Ky0gICAgUV9BU1NFUlQoZGgpOworLSAgICBRX0FTU0VSVChzdGF0dXMpOworLQorLSAgICBFVlBf UEtFWSAqa2V5ID0gcV9FVlBfUEtFWV9uZXcoKTsKKy0gICAgaWYgKCFrZXkpIHsKKy0gICAgICAg IHFDV2FybmluZyhsY1NzbCwgIkVWUF9QS0VZX25ldyBmYWlsZWQiKTsKKy0gICAgICAgIFFTc2xT b2NrZXRCYWNrZW5kUHJpdmF0ZTo6bG9nQW5kQ2xlYXJFcnJvclF1ZXVlKCk7CistICAgICAgICBy ZXR1cm4gMDsKKy0gICAgfQorLSAgICBjb25zdCBhdXRvIGtleURlbGV0ZXIgPSBxU2NvcGVHdWFy ZChba2V5XSgpeworLSAgICAgICAgcV9FVlBfUEtFWV9mcmVlKGtleSk7CistICAgIH0pOworLSAg ICBpZiAoIXFfRVZQX1BLRVlfc2V0MV9ESChrZXksIGRoKSkgeworLSAgICAgICAgcUNXYXJuaW5n KGxjU3NsLCAiRVZQX1BLRVlfc2V0MV9ESCBmYWlsZWQiKTsKKy0gICAgICAgIFFTc2xTb2NrZXRC YWNrZW5kUHJpdmF0ZTo6bG9nQW5kQ2xlYXJFcnJvclF1ZXVlKCk7CistICAgICAgICByZXR1cm4g MDsKKy0gICAgfQorLQorLSAgICBFVlBfUEtFWV9DVFggKmtleUN0eCA9IHFfRVZQX1BLRVlfQ1RY X25ldyhrZXksIG51bGxwdHIpOworLSAgICBpZiAoIWtleUN0eCkgeworLSAgICAgICAgcUNXYXJu aW5nKGxjU3NsLCAiRVZQX1BLRVlfQ1RYX25ldyBmYWlsZWQiKTsKKy0gICAgICAgIFFTc2xTb2Nr ZXRCYWNrZW5kUHJpdmF0ZTo6bG9nQW5kQ2xlYXJFcnJvclF1ZXVlKCk7CistICAgICAgICByZXR1 cm4gMDsKKy0gICAgfQorLSAgICBjb25zdCBhdXRvIGN0eERlbGV0ZXIgPSBxU2NvcGVHdWFyZChb a2V5Q3R4XXsKKy0gICAgICAgIHFfRVZQX1BLRVlfQ1RYX2ZyZWUoa2V5Q3R4KTsKKy0gICAgfSk7 CistCistICAgIGNvbnN0IGludCByZXN1bHQgPSBxX0VWUF9QS0VZX3BhcmFtX2NoZWNrKGtleUN0 eCk7CistICAgIFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6bG9nQW5kQ2xlYXJFcnJvclF1ZXVl KCk7CistICAgIC8vIE5vdGU6IHVubGlrZSBESF9jaGVjaywgd2UgY2Fubm90IG9idGFpbiB0aGUg J3N0YXR1cycsCistICAgIC8vIGlmIHRoZSAncmVzdWx0JyBpcyAwIChhY3R1YWxseSB0aGUgcmVz dWx0IGlzIDEgb25seQorLSAgICAvLyBpZiB0aGlzICdzdGF0dXMnIHdhcyAwKS4gV2UgY291bGQg cHJvYmFibHkgY2hlY2sgdGhlCistICAgIC8vIGVycm9ycyBmcm9tIHRoZSBlcnJvciBxdWV1ZSwg YnV0IGl0J3Mgbm90IG5lZWRlZCBhbnl3YXkKKy0gICAgLy8gLSBzZWUgdGhlICdpc1NhZmVESCcg YmVsb3csIGhvdyBpdCByZXR1cm5zIGltbWVkaWF0ZWx5CistICAgIC8vIG9uIDAuCistICAgIFFf VU5VU0VEKHN0YXR1cykKKy0KKy0gICAgcmV0dXJuIHJlc3VsdDsKKy19CistI2VuZGlmIC8vIE9Q RU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKy0KKyBzdGF0aWMgYm9vbCBpc1NhZmVESChESCAqZGgp CisgeworICAgICBpbnQgc3RhdHVzID0gMDsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdv cmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbC5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fz c2xzb2NrZXRfb3BlbnNzbC5jcHAKK2luZGV4IDM3ZmFkMmE2OGYuLjhmNjg1OGM4NjcgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbC5jcHAKKysr KyBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsLmNwcAorQEAgLTU1 MCw5ICs1NTAsOSBAQCBzdGF0aWMgdm9pZCBxX2xvYWRDaXBoZXJzRm9yQ29ubmVjdGlvbihTU0wg KmNvbm5lY3Rpb24sIFFMaXN0PFFTc2xDaXBoZXI+ICZjaXBoZQorIC8vIERlZmluZWQgaW4gcXNz bHNvY2tldC5jcHAKKyB2b2lkIHFfc2V0RGVmYXVsdER0bHNDaXBoZXJzKGNvbnN0IFFMaXN0PFFT c2xDaXBoZXI+ICZjaXBoZXJzKTsKKyAKKy1sb25nIFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6 c2V0dXBPcGVuU3NsT3B0aW9ucyhRU3NsOjpTc2xQcm90b2NvbCBwcm90b2NvbCwgUVNzbDo6U3Ns T3B0aW9ucyBzc2xPcHRpb25zKQorK3Fzc2xvcHRpb25zIFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0 ZTo6c2V0dXBPcGVuU3NsT3B0aW9ucyhRU3NsOjpTc2xQcm90b2NvbCBwcm90b2NvbCwgUVNzbDo6 U3NsT3B0aW9ucyBzc2xPcHRpb25zKQorIHsKKy0gICAgbG9uZyBvcHRpb25zOworKyAgICBxc3Ns b3B0aW9ucyBvcHRpb25zOworICAgICBpZiAocHJvdG9jb2wgPT0gUVNzbDo6VGxzVjFTc2xWMykK KyAgICAgICAgIG9wdGlvbnMgPSBTU0xfT1BfQUxMfFNTTF9PUF9OT19TU0x2MnxTU0xfT1BfTk9f U1NMdjM7CisgICAgIGVsc2UgaWYgKHByb3RvY29sID09IFFTc2w6OlNlY3VyZVByb3RvY29scykK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9w LmggYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9wLmgKK2luZGV4 IDQxMDNkZTIzZTguLjU1NDc1ODkyNTYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsv c3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wv cXNzbHNvY2tldF9vcGVuc3NsX3AuaAorQEAgLTEwNyw2ICsxMDcsMTIgQEAKKyAKKyBRVF9CRUdJ Tl9OQU1FU1BBQ0UKKyAKKysjaWYgZGVmaW5lZChPUEVOU1NMX1ZFUlNJT05fTUFKT1IpICYmIE9Q RU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrdHlwZWRlZiB1aW50NjRfdCBxc3Nsb3B0aW9uczsK KysjZWxzZQorK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBxc3Nsb3B0aW9uczsKKysjZW5kaWYKKysK KyBzdHJ1Y3QgUVNzbEVycm9yRW50cnkgeworICAgICBpbnQgY29kZTsKKyAgICAgaW50IGRlcHRo OworQEAgLTE3MSw3ICsxNzcsNyBAQCBwdWJsaWM6CisgICAgIFFWZWN0b3I8UVNzbEVycm9yPiBv Y3NwRXJyb3JzOworICAgICBRQnl0ZUFycmF5IG9jc3BSZXNwb25zZURlcjsKKyAKKy0gICAgUV9B VVRPVEVTVF9FWFBPUlQgc3RhdGljIGxvbmcgc2V0dXBPcGVuU3NsT3B0aW9ucyhRU3NsOjpTc2xQ cm90b2NvbCBwcm90b2NvbCwgUVNzbDo6U3NsT3B0aW9ucyBzc2xPcHRpb25zKTsKKysgICAgUV9B VVRPVEVTVF9FWFBPUlQgc3RhdGljIHFzc2xvcHRpb25zIHNldHVwT3BlblNzbE9wdGlvbnMoUVNz bDo6U3NsUHJvdG9jb2wgcHJvdG9jb2wsIFFTc2w6OlNzbE9wdGlvbnMgc3NsT3B0aW9ucyk7Cisg ICAgIHN0YXRpYyBRU3NsQ2lwaGVyIFFTc2xDaXBoZXJfZnJvbV9TU0xfQ0lQSEVSKGNvbnN0IFNT TF9DSVBIRVIgKmNpcGhlcik7CisgICAgIHN0YXRpYyBRTGlzdDxRU3NsQ2VydGlmaWNhdGU+IFNU QUNLT0ZYNTA5X3RvX1FTc2xDZXJ0aWZpY2F0ZXMoU1RBQ0tfT0YoWDUwOSkgKng1MDkpOworICAg ICBzdGF0aWMgUUxpc3Q8UVNzbEVycm9yPiB2ZXJpZnkoY29uc3QgUUxpc3Q8UVNzbENlcnRpZmlj YXRlPiAmY2VydGlmaWNhdGVDaGFpbiwgY29uc3QgUVN0cmluZyAmaG9zdE5hbWUpOworZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHMu Y3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9scy5j cHAKK2luZGV4IGU1M2ZiMjc5ZjAuLjQ1OWNjZDBiMTkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzLmNwcAorKysrIGIvcXRiYXNl L3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9scy5jcHAKK0BAIC0xNDgs NyArMTQ4LDYgQEAgREVGSU5FRlVOQyhpbnQsIEVWUF9QS0VZX3VwX3JlZiwgRVZQX1BLRVkgKmEs IGEsIHJldHVybiAwLCByZXR1cm4pCisgREVGSU5FRlVOQzIoRVZQX1BLRVlfQ1RYICosIEVWUF9Q S0VZX0NUWF9uZXcsIEVWUF9QS0VZICpwa2V5LCBwa2V5LCBFTkdJTkUgKmUsIGUsIHJldHVybiBu dWxscHRyLCByZXR1cm4pCisgREVGSU5FRlVOQyhpbnQsIEVWUF9QS0VZX3BhcmFtX2NoZWNrLCBF VlBfUEtFWV9DVFggKmN0eCwgY3R4LCByZXR1cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkModm9p ZCwgRVZQX1BLRVlfQ1RYX2ZyZWUsIEVWUF9QS0VZX0NUWCAqY3R4LCBjdHgsIHJldHVybiwgcmV0 dXJuKQorLURFRklORUZVTkMoaW50LCBFVlBfUEtFWV9iYXNlX2lkLCBFVlBfUEtFWSAqYSwgYSwg cmV0dXJuIE5JRF91bmRlZiwgcmV0dXJuKQorIERFRklORUZVTkMoaW50LCBSU0FfYml0cywgUlNB ICphLCBhLCByZXR1cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkMoaW50LCBEU0FfYml0cywgRFNB ICphLCBhLCByZXR1cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkMoaW50LCBPUEVOU1NMX3NrX251 bSwgT1BFTlNTTF9TVEFDSyAqYSwgYSwgcmV0dXJuIC0xLCByZXR1cm4pCitAQCAtMTU4LDcgKzE1 Nyw3IEBAIERFRklORUZVTkMyKHZvaWQsIE9QRU5TU0xfc2tfcHVzaCwgT1BFTlNTTF9TVEFDSyAq YSwgYSwgdm9pZCAqYiwgYiwgcmV0dXJuLCBEVU1NCisgREVGSU5FRlVOQyh2b2lkLCBPUEVOU1NM X3NrX2ZyZWUsIE9QRU5TU0xfU1RBQ0sgKmEsIGEsIHJldHVybiwgRFVNTVlBUkcpCisgREVGSU5F RlVOQzIodm9pZCAqLCBPUEVOU1NMX3NrX3ZhbHVlLCBPUEVOU1NMX1NUQUNLICphLCBhLCBpbnQg YiwgYiwgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKyBERUZJTkVGVU5DKGludCwgU1NMX3Nlc3Np b25fcmV1c2VkLCBTU0wgKmEsIGEsIHJldHVybiAwLCByZXR1cm4pCistREVGSU5FRlVOQzIodW5z aWduZWQgbG9uZywgU1NMX0NUWF9zZXRfb3B0aW9ucywgU1NMX0NUWCAqY3R4LCBjdHgsIHVuc2ln bmVkIGxvbmcgb3AsIG9wLCByZXR1cm4gMCwgcmV0dXJuKQorK0RFRklORUZVTkMyKHFzc2xvcHRp b25zLCBTU0xfQ1RYX3NldF9vcHRpb25zLCBTU0xfQ1RYICpjdHgsIGN0eCwgcXNzbG9wdGlvbnMg b3AsIG9wLCByZXR1cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkMoaW50LCBTU0xfQ1RYX2dldF9z ZWN1cml0eV9sZXZlbCwgY29uc3QgU1NMX0NUWCAqY3R4LCBjdHgsIHJldHVybiAtMSwgcmV0dXJu KQorIERFRklORUZVTkMyKHZvaWQsIFNTTF9DVFhfc2V0X3NlY3VyaXR5X2xldmVsLCBTU0xfQ1RY ICpjdHgsIGN0eCwgaW50IGxldmVsLCBsZXZlbCwgcmV0dXJuLCByZXR1cm4pCisgI2lmZGVmIFRM UzFfM19WRVJTSU9OCitAQCAtMzcxLDcgKzM3MCwxNSBAQCBERUZJTkVGVU5DKGNvbnN0IFNTTF9D SVBIRVIgKiwgU1NMX2dldF9jdXJyZW50X2NpcGhlciwgU1NMICphLCBhLCByZXR1cm4gbnVsbHB0 cgorIERFRklORUZVTkMoaW50LCBTU0xfdmVyc2lvbiwgY29uc3QgU1NMICphLCBhLCByZXR1cm4g MCwgcmV0dXJuKQorIERFRklORUZVTkMyKGludCwgU1NMX2dldF9lcnJvciwgU1NMICphLCBhLCBp bnQgYiwgYiwgcmV0dXJuIC0xLCByZXR1cm4pCisgREVGSU5FRlVOQyhTVEFDS19PRihYNTA5KSAq LCBTU0xfZ2V0X3BlZXJfY2VydF9jaGFpbiwgU1NMICphLCBhLCByZXR1cm4gbnVsbHB0ciwgcmV0 dXJuKQorKworKyNpZiBkZWZpbmVkKE9QRU5TU0xfVkVSU0lPTl9NQUpPUikgJiYgT1BFTlNTTF9W RVJTSU9OX01BSk9SID49IDMKKytERUZJTkVGVU5DKFg1MDkgKiwgU1NMX2dldDFfcGVlcl9jZXJ0 aWZpY2F0ZSwgU1NMICphLCBhLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorK0RFRklORUZVTkMo aW50LCBFVlBfUEtFWV9nZXRfYmFzZV9pZCwgY29uc3QgRVZQX1BLRVkgKnBrZXksIHBrZXksIHJl dHVybiAtMSwgcmV0dXJuKQorKyNlbHNlCisgREVGSU5FRlVOQyhYNTA5ICosIFNTTF9nZXRfcGVl cl9jZXJ0aWZpY2F0ZSwgU1NMICphLCBhLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorK0RFRklO RUZVTkMoaW50LCBFVlBfUEtFWV9iYXNlX2lkLCBFVlBfUEtFWSAqYSwgYSwgcmV0dXJuIE5JRF91 bmRlZiwgcmV0dXJuKQorKyNlbmRpZiAvLyBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0gMworKwor IERFRklORUZVTkMobG9uZywgU1NMX2dldF92ZXJpZnlfcmVzdWx0LCBjb25zdCBTU0wgKmEsIGEs IHJldHVybiAtMSwgcmV0dXJuKQorIERFRklORUZVTkMoU1NMICosIFNTTF9uZXcsIFNTTF9DVFgg KmEsIGEsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisgREVGSU5FRlVOQyhTU0xfQ1RYICosIFNT TF9nZXRfU1NMX0NUWCwgU1NMICphLCBhLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorQEAgLTQ5 Miw5ICs0OTksNyBAQCBERUZJTkVGVU5DKERIICosIERIX25ldywgRFVNTVlBUkcsIERVTU1ZQVJH LCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorIERFRklORUZVTkModm9pZCwgREhfZnJlZSwgREgg KmRoLCBkaCwgcmV0dXJuLCBEVU1NWUFSRykKKyBERUZJTkVGVU5DMyhESCAqLCBkMmlfREhwYXJh bXMsIERIKiphLCBhLCBjb25zdCB1bnNpZ25lZCBjaGFyICoqcHAsIHBwLCBsb25nIGxlbmd0aCwg bGVuZ3RoLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorIERFRklORUZVTkMyKGludCwgaTJkX0RI cGFyYW1zLCBESCAqYSwgYSwgdW5zaWduZWQgY2hhciAqKnAsIHAsIHJldHVybiAtMSwgcmV0dXJu KQorLSNpZm5kZWYgT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorIERFRklORUZVTkMyKGludCwg REhfY2hlY2ssIERIICpkaCwgZGgsIGludCAqY29kZXMsIGNvZGVzLCByZXR1cm4gMCwgcmV0dXJu KQorLSNlbmRpZiAvLyBPUEVOU1NMX05PX0RFUFJFQ0FURURfM18wCisgREVGSU5FRlVOQzMoQklH TlVNICosIEJOX2JpbjJibiwgY29uc3QgdW5zaWduZWQgY2hhciAqcywgcywgaW50IGxlbiwgbGVu LCBCSUdOVU0gKnJldCwgcmV0LCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorIAorICNpZm5kZWYg T1BFTlNTTF9OT19FQworQEAgLTg2OCw3ICs4NzMsNiBAQCBib29sIHFfcmVzb2x2ZU9wZW5Tc2xT eW1ib2xzKCkKKyAgICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfQ1RYX25ldykKKyAgICAgUkVTT0xW RUZVTkMoRVZQX1BLRVlfcGFyYW1fY2hlY2spCisgICAgIFJFU09MVkVGVU5DKEVWUF9QS0VZX0NU WF9mcmVlKQorLSAgICBSRVNPTFZFRlVOQyhFVlBfUEtFWV9iYXNlX2lkKQorICAgICBSRVNPTFZF RlVOQyhSU0FfYml0cykKKyAgICAgUkVTT0xWRUZVTkMoT1BFTlNTTF9za19uZXdfbnVsbCkKKyAg ICAgUkVTT0xWRUZVTkMoT1BFTlNTTF9za19wdXNoKQorQEAgLTExMDcsNyArMTExMSwxNSBAQCBi b29sIHFfcmVzb2x2ZU9wZW5Tc2xTeW1ib2xzKCkKKyAgICAgUkVTT0xWRUZVTkMoU1NMX3ZlcnNp b24pCisgICAgIFJFU09MVkVGVU5DKFNTTF9nZXRfZXJyb3IpCisgICAgIFJFU09MVkVGVU5DKFNT TF9nZXRfcGVlcl9jZXJ0X2NoYWluKQorKworKyNpZiBkZWZpbmVkKE9QRU5TU0xfVkVSU0lPTl9N QUpPUikgJiYgT1BFTlNTTF9WRVJTSU9OX01BSk9SID49IDMKKysgICAgUkVTT0xWRUZVTkMoU1NM X2dldDFfcGVlcl9jZXJ0aWZpY2F0ZSkKKysgICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfZ2V0X2Jh c2VfaWQpCisrI2Vsc2UKKyAgICAgUkVTT0xWRUZVTkMoU1NMX2dldF9wZWVyX2NlcnRpZmljYXRl KQorKyAgICBSRVNPTFZFRlVOQyhFVlBfUEtFWV9iYXNlX2lkKQorKyNlbmRpZiAvLyBPUEVOU1NM X1ZFUlNJT05fTUFKT1IgPj0gMworKworICAgICBSRVNPTFZFRlVOQyhTU0xfZ2V0X3ZlcmlmeV9y ZXN1bHQpCisgICAgIFJFU09MVkVGVU5DKFNTTF9uZXcpCisgICAgIFJFU09MVkVGVU5DKFNTTF9n ZXRfU1NMX0NUWCkKK0BAIC0xMjA2LDkgKzEyMTgsNyBAQCBib29sIHFfcmVzb2x2ZU9wZW5Tc2xT eW1ib2xzKCkKKyAgICAgUkVTT0xWRUZVTkMoREhfZnJlZSkKKyAgICAgUkVTT0xWRUZVTkMoZDJp X0RIcGFyYW1zKQorICAgICBSRVNPTFZFRlVOQyhpMmRfREhwYXJhbXMpCistI2lmbmRlZiBPUEVO U1NMX05PX0RFUFJFQ0FURURfM18wCisgICAgIFJFU09MVkVGVU5DKERIX2NoZWNrKQorLSNlbmRp ZiAvLyBPUEVOU1NMX05PX0RFUFJFQ0FURURfM18wCisgICAgIFJFU09MVkVGVU5DKEJOX2JpbjJi bikKKyAKKyAjaWZuZGVmIE9QRU5TU0xfTk9fRUMKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25l dHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzX3AuaCBiL3F0YmFzZS9zcmMvbmV0 d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHNfcC5oCitpbmRleCA5NWU4ODk3YTNi Li4yN2FlZmZhMThhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29j a2V0X29wZW5zc2xfc3ltYm9sc19wLmgKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNz bHNvY2tldF9vcGVuc3NsX3N5bWJvbHNfcC5oCitAQCAtMjM3LDcgKzIzNyw2IEBAIFFfQVVUT1RF U1RfRVhQT1JUIGludCBxX0VWUF9QS0VZX3VwX3JlZihFVlBfUEtFWSAqYSk7CisgRVZQX1BLRVlf Q1RYICpxX0VWUF9QS0VZX0NUWF9uZXcoRVZQX1BLRVkgKnBrZXksIEVOR0lORSAqZSk7Cisgdm9p ZCBxX0VWUF9QS0VZX0NUWF9mcmVlKEVWUF9QS0VZX0NUWCAqY3R4KTsKKyBpbnQgcV9FVlBfUEtF WV9wYXJhbV9jaGVjayhFVlBfUEtFWV9DVFggKmN0eCk7CistaW50IHFfRVZQX1BLRVlfYmFzZV9p ZChFVlBfUEtFWSAqYSk7CisgaW50IHFfUlNBX2JpdHMoUlNBICphKTsKKyBRX0FVVE9URVNUX0VY UE9SVCBpbnQgcV9PUEVOU1NMX3NrX251bShPUEVOU1NMX1NUQUNLICphKTsKKyBRX0FVVE9URVNU X0VYUE9SVCB2b2lkIHFfT1BFTlNTTF9za19wb3BfZnJlZShPUEVOU1NMX1NUQUNLICphLCB2b2lk ICgqYikodm9pZCAqKSk7CitAQCAtMjQ2LDcgKzI0NSw3IEBAIFFfQVVUT1RFU1RfRVhQT1JUIHZv aWQgcV9PUEVOU1NMX3NrX3B1c2goT1BFTlNTTF9TVEFDSyAqc3QsIHZvaWQgKmRhdGEpOworIFFf QVVUT1RFU1RfRVhQT1JUIHZvaWQgcV9PUEVOU1NMX3NrX2ZyZWUoT1BFTlNTTF9TVEFDSyAqYSk7 CisgUV9BVVRPVEVTVF9FWFBPUlQgdm9pZCAqIHFfT1BFTlNTTF9za192YWx1ZShPUEVOU1NMX1NU QUNLICphLCBpbnQgYik7CisgaW50IHFfU1NMX3Nlc3Npb25fcmV1c2VkKFNTTCAqYSk7CistdW5z aWduZWQgbG9uZyBxX1NTTF9DVFhfc2V0X29wdGlvbnMoU1NMX0NUWCAqY3R4LCB1bnNpZ25lZCBs b25nIG9wKTsKKytxc3Nsb3B0aW9ucyBxX1NTTF9DVFhfc2V0X29wdGlvbnMoU1NMX0NUWCAqY3R4 LCBxc3Nsb3B0aW9ucyBvcCk7CisgaW50IHFfT1BFTlNTTF9pbml0X3NzbCh1aW50NjRfdCBvcHRz LCBjb25zdCBPUEVOU1NMX0lOSVRfU0VUVElOR1MgKnNldHRpbmdzKTsKKyBzaXplX3QgcV9TU0xf Z2V0X2NsaWVudF9yYW5kb20oU1NMICphLCB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvdXRs ZW4pOworIHNpemVfdCBxX1NTTF9TRVNTSU9OX2dldF9tYXN0ZXJfa2V5KGNvbnN0IFNTTF9TRVNT SU9OICpzZXNzaW9uLCB1bnNpZ25lZCBjaGFyICpvdXQsIHNpemVfdCBvdXRsZW4pOworQEAgLTUx MCw3ICs1MDksNiBAQCBjb25zdCBTU0xfQ0lQSEVSICpxX1NTTF9nZXRfY3VycmVudF9jaXBoZXIo U1NMICphKTsKKyBpbnQgcV9TU0xfdmVyc2lvbihjb25zdCBTU0wgKmEpOworIGludCBxX1NTTF9n ZXRfZXJyb3IoU1NMICphLCBpbnQgYik7CisgU1RBQ0tfT0YoWDUwOSkgKnFfU1NMX2dldF9wZWVy X2NlcnRfY2hhaW4oU1NMICphKTsKKy1YNTA5ICpxX1NTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZShT U0wgKmEpOworIGxvbmcgcV9TU0xfZ2V0X3ZlcmlmeV9yZXN1bHQoY29uc3QgU1NMICphKTsKKyBT U0wgKnFfU1NMX25ldyhTU0xfQ1RYICphKTsKKyBTU0xfQ1RYICpxX1NTTF9nZXRfU1NMX0NUWChT U0wgKmEpOworQEAgLTU4MiwxMCArNTgwLDcgQEAgREggKnFfREhfbmV3KCk7Cisgdm9pZCBxX0RI X2ZyZWUoREggKmRoKTsKKyBESCAqcV9kMmlfREhwYXJhbXMoREggKiphLCBjb25zdCB1bnNpZ25l ZCBjaGFyICoqcHAsIGxvbmcgbGVuZ3RoKTsKKyBpbnQgcV9pMmRfREhwYXJhbXMoREggKmEsIHVu c2lnbmVkIGNoYXIgKipwKTsKKy0KKy0jaWZuZGVmIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAK KyBpbnQgcV9ESF9jaGVjayhESCAqZGgsIGludCAqY29kZXMpOworLSNlbmRpZiAvLyBPUEVOU1NM X05PX0RFUFJFQ0FURURfM18wCisgCisgQklHTlVNICpxX0JOX2JpbjJibihjb25zdCB1bnNpZ25l ZCBjaGFyICpzLCBpbnQgbGVuLCBCSUdOVU0gKnJldCk7CisgI2RlZmluZSBxX1NTTF9DVFhfc2V0 X3RtcF9kaChjdHgsIGRoKSBxX1NTTF9DVFhfY3RybCgoY3R4KSwgU1NMX0NUUkxfU0VUX1RNUF9E SCwgMCwgKGNoYXIgKilkaCkKK0BAIC03NTQsNiArNzQ5LDE3IEBAIHZvaWQgcV9DUllQVE9fZnJl ZSh2b2lkICpzdHIsIGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lKTsKKyBpbnQgcV9TU0xfQ1RY X2dldF9zZWN1cml0eV9sZXZlbChjb25zdCBTU0xfQ1RYICpjdHgpOworIHZvaWQgcV9TU0xfQ1RY X3NldF9zZWN1cml0eV9sZXZlbChTU0xfQ1RYICpjdHgsIGludCBsZXZlbCk7CisgCisrLy8gSGVy ZSB3ZSBoYXZlIHRoZSBvbmVzIHRoYXQgbWFrZSBkaWZmZXJlbmNlIGJldHdlZW4gT3BlblNTTCBw cmUvcG9zdCB2MzoKKysjaWYgZGVmaW5lZChPUEVOU1NMX1ZFUlNJT05fTUFKT1IpICYmIE9QRU5T U0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrWDUwOSAqcV9TU0xfZ2V0MV9wZWVyX2NlcnRpZmljYXRl KFNTTCAqYSk7CisrI2RlZmluZSBxX1NTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZSBxX1NTTF9nZXQx X3BlZXJfY2VydGlmaWNhdGUKKytpbnQgcV9FVlBfUEtFWV9nZXRfYmFzZV9pZChjb25zdCBFVlBf UEtFWSAqcGtleSk7CisrI2RlZmluZSBxX0VWUF9QS0VZX2Jhc2VfaWQgcV9FVlBfUEtFWV9nZXRf YmFzZV9pZAorKyNlbHNlCisrWDUwOSAqcV9TU0xfZ2V0X3BlZXJfY2VydGlmaWNhdGUoU1NMICph KTsKKytpbnQgcV9FVlBfUEtFWV9iYXNlX2lkKEVWUF9QS0VZICphKTsKKysjZW5kaWYgLy8gT1BF TlNTTF9WRVJTSU9OX01BSk9SID49IDMKKysKKyBRVF9FTkRfTkFNRVNQQUNFCisgCisgI2VuZGlm CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZWdsY29udmVuaWVuY2Uv cXRfZWdsX3AuaCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2VnbGNvbnZlbmllbmNlL3F0 X2VnbF9wLmgKK2luZGV4IGJmMzdkMDdmZDguLmRiZDQyZmI3OTkgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9lZ2xjb252ZW5pZW5jZS9xdF9lZ2xfcC5oCisrKysgYi9x dGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9lZ2xjb252ZW5pZW5jZS9xdF9lZ2xfcC5oCitAQCAt NjEsNyArNjEsMTEgQEAKKyAjIGlmICFkZWZpbmVkKFFfT1NfSU5URUdSSVRZKQorICMgIGRlZmlu ZSBXSU5fSU5URVJGQUNFX0NVU1RPTSAgIC8vIE5WCisgIyBlbmRpZiAvLyBRX09TX0lOVEVHUklU WQorLSNlbmRpZiAgLy8gUVRfRUdMX05PX1gxMQorKyNlbHNlIC8vIFFUX0VHTF9OT19YMTEKKysv LyBJZiBvbmUgaGFzIGFuIGVnbHBsYXRmb3JtLmggd2l0aCBodHRwczovL2dpdGh1Yi5jb20vS2hy b25vc0dyb3VwL0VHTC1SZWdpc3RyeS9wdWxsLzEzMAorKy8vIHRoYXQgbmVlZHMgVVNFX1gxMSB0 byBiZSBkZWZpbmVkLgorKyMgZGVmaW5lIFVTRV9YMTEKKysjZW5kaWYKKyAKKyAjaWZkZWYgUVRf RUdMX1dBWUxBTkQKKyAjIGRlZmluZSBXQVlMQU5EIC8vIE5WCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9wbGF0Zm9ybXN1cHBvcnQvZm9udGRhdGFiYXNlcy9mb250Y29uZmlnL3Fmb250Y29uZmln ZGF0YWJhc2UuY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZm9udGRhdGFiYXNlcy9m b250Y29uZmlnL3Fmb250Y29uZmlnZGF0YWJhc2UuY3BwCitpbmRleCAxNTliNDkwY2UwLi4wMGFh ODBjZDU4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZm9udGRhdGFi YXNlcy9mb250Y29uZmlnL3Fmb250Y29uZmlnZGF0YWJhc2UuY3BwCisrKysgYi9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC9mb250ZGF0YWJhc2VzL2ZvbnRjb25maWcvcWZvbnRjb25maWdkYXRh YmFzZS5jcHAKK0BAIC01NjcsNiArNTY3LDggQEAgdm9pZCBRRm9udGNvbmZpZ0RhdGFiYXNlOjpw b3B1bGF0ZUZvbnREYXRhYmFzZSgpCisgICAgICAgICBmb250cyA9IEZjRm9udExpc3QobnVsbHB0 ciwgcGF0dGVybiwgb3MpOworICAgICAgICAgRmNPYmplY3RTZXREZXN0cm95KG9zKTsKKyAgICAg ICAgIEZjUGF0dGVybkRlc3Ryb3kocGF0dGVybik7CisrICAgICAgICBpZiAoIWZvbnRzKQorKyAg ICAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAorICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZv bnRzLT5uZm9udDsgaSsrKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0 L2lucHV0L3hrYmNvbW1vbi9xeGtiY29tbW9uLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBw b3J0L2lucHV0L3hrYmNvbW1vbi9xeGtiY29tbW9uLmNwcAoraW5kZXggYjcxM2MxOTQ0Ny4uN2Ni OWE4Yzc5YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hr YmNvbW1vbi9xeGtiY29tbW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQv aW5wdXQveGtiY29tbW9uL3F4a2Jjb21tb24uY3BwCitAQCAtOTUsNiArOTUsNyBAQCBzdGF0aWMg Y29uc3RleHByIGNvbnN0IGF1dG8gS2V5VGJsID0gcU1ha2VBcnJheSgKKyAgICAgICAgIFhrYjJR dDxYS0JfS0VZX0NsZWFyLCAgICAgICAgICAgICAgICAgICBRdDo6S2V5X0RlbGV0ZT4sCisgICAg ICAgICBYa2IyUXQ8WEtCX0tFWV9QYXVzZSwgICAgICAgICAgICAgICAgICAgUXQ6OktleV9QYXVz ZT4sCisgICAgICAgICBYa2IyUXQ8WEtCX0tFWV9QcmludCwgICAgICAgICAgICAgICAgICAgUXQ6 OktleV9QcmludD4sCisrICAgICAgICBYa2IyUXQ8WEtCX0tFWV9TeXNfUmVxLCAgICAgICAgICAg ICAgICAgUXQ6OktleV9TeXNSZXE+LAorICAgICAgICAgWGtiMlF0PDB4MTAwNUZGNjAsICAgICAg ICAgICAgICAgICAgICAgIFF0OjpLZXlfU3lzUmVxPiwgICAgICAgICAvLyBoYXJkY29kZWQgU3Vu IFN5c1JlcQorICAgICAgICAgWGtiMlF0PDB4MTAwN2ZmMDAsICAgICAgICAgICAgICAgICAgICAg IFF0OjpLZXlfU3lzUmVxPiwgICAgICAgICAvLyBoYXJkY29kZWQgWDM4NiBTeXNSZXEKKyAKK0BA IC00NzEsNyArNDcyLDcgQEAgUVZlY3Rvcjx4a2Jfa2V5c3ltX3Q+IFFYa2JDb21tb246OnRvS2V5 c3ltKFFLZXlFdmVudCAqZXZlbnQpCisgICAgIH0gZWxzZSBpZiAoZXZlbnQtPm1vZGlmaWVycygp ICYgUXQ6OktleXBhZE1vZGlmaWVyKSB7CisgICAgICAgICBpZiAocXRLZXkgPj0gUXQ6OktleV8w ICYmIHF0S2V5IDw9IFF0OjpLZXlfOSkKKyAgICAgICAgICAgICBrZXlzeW1zLmFwcGVuZChYS0Jf S0VZX0tQXzAgKyAocXRLZXkgLSBRdDo6S2V5XzApKTsKKy0gICAgfSBlbHNlIGlmIChpc0xhdGlu KHF0S2V5KSAmJiBldmVudC0+dGV4dCgpLmlzVXBwZXIoKSkgeworKyAgICB9IGVsc2UgaWYgKGlz TGF0aW4xKHF0S2V5KSAmJiBldmVudC0+dGV4dCgpLmlzVXBwZXIoKSkgeworICAgICAgICAga2V5 c3ltcy5hcHBlbmQocXRLZXkpOworICAgICB9CisgCitAQCAtNTIzLDcgKzUyNCw3IEBAIGludCBR WGtiQ29tbW9uOjprZXlzeW1Ub1F0S2V5KHhrYl9rZXlzeW1fdCBrZXlzeW0sIFF0OjpLZXlib2Fy ZE1vZGlmaWVycyBtb2RpZmllCisgICAgICAgICAvLyBXaXRoIHN0YW5kYXJkIHNob3J0Y3V0cyB3 ZSBzaG91bGQgcHJlZmVyIGEgbGF0aW4gY2hhcmFjdGVyLCB0aGlzIGlzCisgICAgICAgICAvLyBm b3IgY2hlY2tzIGxpa2UgInNvbWUgcWtleWV2ZW50ID09IFFLZXlTZXF1ZW5jZTo6Q29weSIgdG8g d29yayBldmVuCisgICAgICAgICAvLyB3aGVuIHVzaW5nIGZvciBleGFtcGxlICdydXNzaWFuJyBr ZXlib2FyZCBsYXlvdXQuCistICAgICAgICBpZiAoIVFYa2JDb21tb246OmlzTGF0aW4oa2V5c3lt KSkgeworKyAgICAgICAgaWYgKCFRWGtiQ29tbW9uOjppc0xhdGluMShrZXlzeW0pKSB7CisgICAg ICAgICAgICAgeGtiX2tleXN5bV90IGxhdGluS2V5c3ltID0gUVhrYkNvbW1vbjo6bG9va3VwTGF0 aW5LZXlzeW0oc3RhdGUsIGNvZGUpOworICAgICAgICAgICAgIGlmIChsYXRpbktleXN5bSAhPSBY S0JfS0VZX05vU3ltYm9sKQorICAgICAgICAgICAgICAgICBrZXlzeW0gPSBsYXRpbktleXN5bTsK K0BAIC01NDYsNyArNTQ3LDcgQEAgc3RhdGljIGludCBrZXlzeW1Ub1F0S2V5X2ludGVybmFsKHhr Yl9rZXlzeW1fdCBrZXlzeW0sIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2QKKyAgICAgfSBlbHNl IGlmIChrZXlzeW0gPj0gWEtCX0tFWV9LUF8wICYmIGtleXN5bSA8PSBYS0JfS0VZX0tQXzkpIHsK KyAgICAgICAgIC8vIG51bWVyaWMga2V5cGFkIGtleXMKKyAgICAgICAgIHF0S2V5ID0gUXQ6Oktl eV8wICsgKGtleXN5bSAtIFhLQl9LRVlfS1BfMCk7CistICAgIH0gZWxzZSBpZiAoUVhrYkNvbW1v bjo6aXNMYXRpbihrZXlzeW0pKSB7CisrICAgIH0gZWxzZSBpZiAoUVhrYkNvbW1vbjo6aXNMYXRp bjEoa2V5c3ltKSkgeworICAgICAgICAgcXRLZXkgPSBRWGtiQ29tbW9uOjpxeGtiY29tbW9uX3hr Yl9rZXlzeW1fdG9fdXBwZXIoa2V5c3ltKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIC8vIGNo ZWNrIGlmIHdlIGhhdmUgYSBkaXJlY3QgbWFwcGluZworQEAgLTY3OCw3ICs2NzksNyBAQCBRTGlz dDxpbnQ+IFFYa2JDb21tb246OnBvc3NpYmxlS2V5cyh4a2Jfc3RhdGUgKnN0YXRlLCBjb25zdCBR S2V5RXZlbnQgKmV2ZW50LAorICAgICAgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG5lZWRlZE1v ZHMgPSBNb2RzVGJsW2ldOworICAgICAgICAgaWYgKChtb2RpZmllcnMgJiBuZWVkZWRNb2RzKSA9 PSBuZWVkZWRNb2RzKSB7CisgICAgICAgICAgICAgaWYgKGkgPT0gOCkgeworLSAgICAgICAgICAg ICAgICBpZiAoaXNMYXRpbihiYXNlUXRLZXkpKQorKyAgICAgICAgICAgICAgICBpZiAoaXNMYXRp bjEoYmFzZVF0S2V5KSkKKyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg ICAgICAgICAvLyBhZGQgYSBsYXRpbiBrZXkgYXMgYSBmYWxsIGJhY2sga2V5CisgICAgICAgICAg ICAgICAgIHN5bSA9IGxvb2t1cExhdGluS2V5c3ltKHN0YXRlLCBrZXljb2RlKTsKK0BAIC03MzMs NyArNzM0LDcgQEAgdm9pZCBRWGtiQ29tbW9uOjp2ZXJpZnlIYXNMYXRpbkxheW91dCh4a2Jfa2V5 bWFwICprZXltYXApCisgICAgIGZvciAoeGtiX2xheW91dF9pbmRleF90IGxheW91dCA9IDA7IGxh eW91dCA8IGxheW91dENvdW50OyArK2xheW91dCkgeworICAgICAgICAgZm9yICh4a2Jfa2V5Y29k ZV90IGNvZGUgPSBtaW5LZXljb2RlOyBjb2RlIDwgbWF4S2V5Y29kZTsgKytjb2RlKSB7CisgICAg ICAgICAgICAgeGtiX2tleW1hcF9rZXlfZ2V0X3N5bXNfYnlfbGV2ZWwoa2V5bWFwLCBjb2RlLCBs YXlvdXQsIDAsICZrZXlzeW1zKTsKKy0gICAgICAgICAgICBpZiAoa2V5c3ltcyAmJiBpc0xhdGlu KGtleXN5bXNbMF0pKQorKyAgICAgICAgICAgIGlmIChrZXlzeW1zICYmIGlzTGF0aW4xKGtleXN5 bXNbMF0pKQorICAgICAgICAgICAgICAgICBuckxhdGluS2V5cysrOworICAgICAgICAgICAgIGlm IChuckxhdGluS2V5cyA+IDEwKSAvLyBhcmJpdHJhcmlseSBjaG9zZW4gdGhyZXNob2xkCisgICAg ICAgICAgICAgICAgIHJldHVybjsKK0BAIC03NjYsNyArNzY3LDcgQEAgeGtiX2tleXN5bV90IFFY a2JDb21tb246Omxvb2t1cExhdGluS2V5c3ltKHhrYl9zdGF0ZSAqc3RhdGUsIHhrYl9rZXljb2Rl X3Qga2V5Y28KKyAgICAgICAgIHhrYl9sZXZlbF9pbmRleF90IGxldmVsID0geGtiX3N0YXRlX2tl eV9nZXRfbGV2ZWwoc3RhdGUsIGtleWNvZGUsIGxheW91dCk7CisgICAgICAgICBpZiAoeGtiX2tl eW1hcF9rZXlfZ2V0X3N5bXNfYnlfbGV2ZWwoa2V5bWFwLCBrZXljb2RlLCBsYXlvdXQsIGxldmVs LCAmc3ltcykgIT0gMSkKKyAgICAgICAgICAgICBjb250aW51ZTsKKy0gICAgICAgIGlmIChpc0xh dGluKHN5bXNbMF0pKSB7CisrICAgICAgICBpZiAoaXNMYXRpbjEoc3ltc1swXSkpIHsKKyAgICAg ICAgICAgICBzeW0gPSBzeW1zWzBdOworICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9x eGtiY29tbW9uX3AuaCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1v bi9xeGtiY29tbW9uX3AuaAoraW5kZXggNTYxZWFlMDNkYi4uODM4OWJkOGY1YSAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGtiY29tbW9u X3AuaAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvaW5wdXQveGtiY29tbW9uL3F4 a2Jjb21tb25fcC5oCitAQCAtOTQsOCArOTQsOCBAQCBwdWJsaWM6CisgICAgIHN0YXRpYyB2b2lk IHZlcmlmeUhhc0xhdGluTGF5b3V0KHhrYl9rZXltYXAgKmtleW1hcCk7CisgICAgIHN0YXRpYyB4 a2Jfa2V5c3ltX3QgbG9va3VwTGF0aW5LZXlzeW0oeGtiX3N0YXRlICpzdGF0ZSwgeGtiX2tleWNv ZGVfdCBrZXljb2RlKTsKKyAKKy0gICAgc3RhdGljIGJvb2wgaXNMYXRpbih4a2Jfa2V5c3ltX3Qg c3ltKSB7CistICAgICAgICByZXR1cm4gKChzeW0gPj0gJ2EnICYmIHN5bSA8PSAneicpIHx8IChz eW0gPj0gJ0EnICYmIHN5bSA8PSAnWicpKTsKKysgICAgc3RhdGljIGJvb2wgaXNMYXRpbjEoeGti X2tleXN5bV90IHN5bSkgeworKyAgICAgICAgcmV0dXJuIHN5bSA8PSAweGZmOworICAgICB9Cisg ICAgIHN0YXRpYyBib29sIGlzS2V5cGFkKHhrYl9rZXlzeW1fdCBzeW0pIHsKKyAgICAgICAgIHJl dHVybiBzeW0gPj0gWEtCX0tFWV9LUF9TcGFjZSAmJiBzeW0gPD0gWEtCX0tFWV9LUF85OworZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ttc2NvbnZlbmllbmNlL3FrbXNk ZXZpY2UuY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQva21zY29udmVuaWVuY2UvcWtt c2RldmljZS5jcHAKK2luZGV4IDhjZDdmOWIzNjguLjQwNmY4NDY2M2YgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9rbXNjb252ZW5pZW5jZS9xa21zZGV2aWNlLmNwcAor KysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQva21zY29udmVuaWVuY2UvcWttc2Rldmlj ZS5jcHAKK0BAIC0zMTgsNyArMzE4LDcgQEAgUVBsYXRmb3JtU2NyZWVuICpRS21zRGV2aWNlOjpj cmVhdGVTY3JlZW5Gb3JDb25uZWN0b3IoZHJtTW9kZVJlc1B0ciByZXNvdXJjZXMsCisgCisgICAg IGlmIChjdXJyZW50IDwgMCAmJiBjcnRjX21vZGUuY2xvY2sgIT0gMCkgeworICAgICAgICAgbW9k ZXMgPDwgY3J0Y19tb2RlOworLSAgICAgICAgY3VycmVudCA9IG1vZGUuc2l6ZSgpIC0gMTsKKysg ICAgICAgIGN1cnJlbnQgPSBtb2Rlcy5zaXplKCkgLSAxOworICAgICB9CisgCisgICAgIGlmIChj b25maWd1cmF0aW9uID09IE91dHB1dENvbmZpZ0N1cnJlbnQpCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2F0c3BpYWRhcHRvci5jcHAg Yi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvYXRzcGlhZGFw dG9yLmNwcAoraW5kZXggOTE1M2ZkMjBiYi4uMjU1ZWE1ZTMzZSAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9hdHNwaWFkYXB0b3IuY3Bw CisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvYXRz cGlhZGFwdG9yLmNwcAorQEAgLTE5NCw2ICsxOTQsOSBAQCBRU3RyaW5nIEF0U3BpQWRhcHRvcjo6 aW50cm9zcGVjdChjb25zdCBRU3RyaW5nICZwYXRoKSBjb25zdAorICAgICAgICAgICAgICAgICAi ICAgICAgPGFyZyBkaXJlY3Rpb249XCJvdXRcIiB0eXBlPVwiKHNvKVwiLz5cbiIKKyAgICAgICAg ICAgICAgICAgIiAgICAgIDxhbm5vdGF0aW9uIHZhbHVlPVwiUVNwaU9iamVjdFJlZmVyZW5jZVwi IG5hbWU9XCJvcmcucXRwcm9qZWN0LlF0REJ1cy5RdFR5cGVOYW1lLk91dDBcIi8+XG4iCisgICAg ICAgICAgICAgICAgICIgICAgPC9tZXRob2Q+XG4iCisrICAgICAgICAgICAgICAgICIgICAgPG1l dGhvZCBuYW1lPVwiR2V0QWNjZXNzaWJsZUlkXCI+XG4iCisrICAgICAgICAgICAgICAgICIgICAg ICA8YXJnIGRpcmVjdGlvbj1cIm91dFwiIHR5cGU9XCJzXCIvPlxuIgorKyAgICAgICAgICAgICAg ICAiICAgIDwvbWV0aG9kPlxuIgorICAgICAgICAgICAgICAgICAiICA8L2ludGVyZmFjZT5cbiIK KyAgICAgICAgICAgICAgICAgKTsKKyAKK0BAIC05MTMsOCArOTE2LDE3IEBAIHZvaWQgQXRTcGlB ZGFwdG9yOjpub3RpZnkoUUFjY2Vzc2libGVFdmVudCAqZXZlbnQpCisgICAgIH0KKyAgICAgY2Fz ZSBRQWNjZXNzaWJsZTo6TmFtZUNoYW5nZWQ6IHsKKyAgICAgICAgIGlmIChzZW5kT2JqZWN0IHx8 IHNlbmRPYmplY3RfcHJvcGVydHlfY2hhbmdlIHx8IHNlbmRPYmplY3RfcHJvcGVydHlfY2hhbmdl X2FjY2Vzc2libGVfbmFtZSkgeworLSAgICAgICAgICAgIFFTdHJpbmcgcGF0aCA9IHBhdGhGb3JJ bnRlcmZhY2UoZXZlbnQtPmFjY2Vzc2libGVJbnRlcmZhY2UoKSk7CistICAgICAgICAgICAgUVZh cmlhbnRMaXN0IGFyZ3MgPSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cyhRTGF0aW4xU3RyaW5nKCJh Y2Nlc3NpYmxlLW5hbWUiKSwgMCwgMCwgdmFyaWFudEZvclBhdGgocGF0aCkpOworKyAgICAgICAg ICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppZmFjZSA9IGV2ZW50LT5hY2Nlc3NpYmxlSW50ZXJm YWNlKCk7CisrICAgICAgICAgICAgaWYgKCFpZmFjZSkgeworKyAgICAgICAgICAgICAgICBxQ0Rl YnVnKGxjQWNjZXNzaWJpbGl0eUF0c3BpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJOYW1l Q2hhbmdlZCBldmVudCBmcm9tIGludmFsaWQgYWNjZXNzaWJsZS4iKTsKKysgICAgICAgICAgICAg ICAgcmV0dXJuOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBRU3RyaW5nIHBhdGgg PSBwYXRoRm9ySW50ZXJmYWNlKGlmYWNlKTsKKysgICAgICAgICAgICBRVmFyaWFudExpc3QgYXJn cyA9IHBhY2tEQnVzU2lnbmFsQXJndW1lbnRzKAorKyAgICAgICAgICAgICAgICBRTGF0aW4xU3Ry aW5nKCJhY2Nlc3NpYmxlLW5hbWUiKSwgMCwgMCwKKysgICAgICAgICAgICAgICAgUVZhcmlhbnQ6 OmZyb21WYWx1ZShRREJ1c1ZhcmlhbnQoaWZhY2UtPnRleHQoUUFjY2Vzc2libGU6Ok5hbWUpKSkp OworICAgICAgICAgICAgIHNlbmREQnVzU2lnbmFsKHBhdGgsIFFMYXRpbjFTdHJpbmcoQVRTUElf REJVU19JTlRFUkZBQ0VfRVZFTlRfT0JKRUNUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRTGF0aW4xU3RyaW5nKCJQcm9wZXJ0eUNoYW5nZSIpLCBhcmdzKTsKKyAgICAgICAgIH0KK0BA IC05MjIsOCArOTM0LDE3IEBAIHZvaWQgQXRTcGlBZGFwdG9yOjpub3RpZnkoUUFjY2Vzc2libGVF dmVudCAqZXZlbnQpCisgICAgIH0KKyAgICAgY2FzZSBRQWNjZXNzaWJsZTo6RGVzY3JpcHRpb25D aGFuZ2VkOiB7CisgICAgICAgICBpZiAoc2VuZE9iamVjdCB8fCBzZW5kT2JqZWN0X3Byb3BlcnR5 X2NoYW5nZSB8fCBzZW5kT2JqZWN0X3Byb3BlcnR5X2NoYW5nZV9hY2Nlc3NpYmxlX2Rlc2NyaXB0 aW9uKSB7CistICAgICAgICAgICAgUVN0cmluZyBwYXRoID0gcGF0aEZvckludGVyZmFjZShldmVu dC0+YWNjZXNzaWJsZUludGVyZmFjZSgpKTsKKy0gICAgICAgICAgICBRVmFyaWFudExpc3QgYXJn cyA9IHBhY2tEQnVzU2lnbmFsQXJndW1lbnRzKFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtZGVz Y3JpcHRpb24iKSwgMCwgMCwgdmFyaWFudEZvclBhdGgocGF0aCkpOworKyAgICAgICAgICAgIFFB Y2Nlc3NpYmxlSW50ZXJmYWNlICppZmFjZSA9IGV2ZW50LT5hY2Nlc3NpYmxlSW50ZXJmYWNlKCk7 CisrICAgICAgICAgICAgaWYgKCFpZmFjZSkgeworKyAgICAgICAgICAgICAgICBxQ0RlYnVnKGxj QWNjZXNzaWJpbGl0eUF0c3BpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJEZXNjcmlwdGlv bkNoYW5nZWQgZXZlbnQgZnJvbSBpbnZhbGlkIGFjY2Vzc2libGUuIik7CisrICAgICAgICAgICAg ICAgIHJldHVybjsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgUVN0cmluZyBwYXRo ID0gcGF0aEZvckludGVyZmFjZShpZmFjZSk7CisrICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFy Z3MgPSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cygKKysgICAgICAgICAgICAgICAgUUxhdGluMVN0 cmluZygiYWNjZXNzaWJsZS1kZXNjcmlwdGlvbiIpLCAwLCAwLAorKyAgICAgICAgICAgICAgICBR VmFyaWFudDo6ZnJvbVZhbHVlKFFEQnVzVmFyaWFudChpZmFjZS0+dGV4dChRQWNjZXNzaWJsZTo6 RGVzY3JpcHRpb24pKSkpOworICAgICAgICAgICAgIHNlbmREQnVzU2lnbmFsKHBhdGgsIFFMYXRp bjFTdHJpbmcoQVRTUElfREJVU19JTlRFUkZBQ0VfRVZFTlRfT0JKRUNUKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJQcm9wZXJ0eUNoYW5nZSIpLCBhcmdzKTsK KyAgICAgICAgIH0KK0BAIC0xMDM4LDcgKzEwNTksOSBAQCB2b2lkIEF0U3BpQWRhcHRvcjo6bm90 aWZ5KFFBY2Nlc3NpYmxlRXZlbnQgKmV2ZW50KQorICAgICAgICAgICAgICAgICAvLyBDb21ibyBC b3ggd2l0aCBBVC1TUEkgbGlrZXMgdG8gYmUgc3BlY2lhbAorICAgICAgICAgICAgICAgICAvLyBJ dCByZXF1aXJlcyBhIG5hbWUtY2hhbmdlIHRvIHVwZGF0ZSBjYWNoZXMgYW5kIHRoZW4gc2VsZWN0 aW9uLWNoYW5nZWQKKyAgICAgICAgICAgICAgICAgUVN0cmluZyBwYXRoID0gcGF0aEZvckludGVy ZmFjZShpZmFjZSk7CistICAgICAgICAgICAgICAgIFFWYXJpYW50TGlzdCBhcmdzMSA9IHBhY2tE QnVzU2lnbmFsQXJndW1lbnRzKFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtbmFtZSIpLCAwLCAw LCB2YXJpYW50Rm9yUGF0aChwYXRoKSk7CisrICAgICAgICAgICAgICAgIFFWYXJpYW50TGlzdCBh cmdzMSA9IHBhY2tEQnVzU2lnbmFsQXJndW1lbnRzKAorKyAgICAgICAgICAgICAgICAgICAgUUxh dGluMVN0cmluZygiYWNjZXNzaWJsZS1uYW1lIiksIDAsIDAsCisrICAgICAgICAgICAgICAgICAg ICBRVmFyaWFudDo6ZnJvbVZhbHVlKFFEQnVzVmFyaWFudChpZmFjZS0+dGV4dChRQWNjZXNzaWJs ZTo6TmFtZSkpKSk7CisgICAgICAgICAgICAgICAgIHNlbmREQnVzU2lnbmFsKHBhdGgsIFFMYXRp bjFTdHJpbmcoQVRTUElfREJVU19JTlRFUkZBQ0VfRVZFTlRfT0JKRUNUKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygiUHJvcGVydHlDaGFuZ2UiKSwgYXJn czEpOworICAgICAgICAgICAgICAgICBRVmFyaWFudExpc3QgYXJnczIgPSBwYWNrREJ1c1NpZ25h bEFyZ3VtZW50cyhRU3RyaW5nKCksIDAsIDAsIFFWYXJpYW50Ojpmcm9tVmFsdWUoUURCdXNWYXJp YW50KFFWYXJpYW50KDApKSkpOworQEAgLTEzNTgsNiArMTM4MSwyNiBAQCB2b2lkIEF0U3BpQWRh cHRvcjo6cmVnaXN0ZXJBcHBsaWNhdGlvbigpCisgICAgIGRlbGV0ZSByZWdpc3RyeTsKKyB9Cisg CisrbmFtZXNwYWNlIHsKKytRU3RyaW5nIGFjY2Vzc2libGVJZEZvckFjY2Vzc2libGUoUUFjY2Vz c2libGVJbnRlcmZhY2UgKmFjY2Vzc2libGUpCisreworKyAgICBRU3RyaW5nIHJlc3VsdDsKKysg ICAgd2hpbGUgKGFjY2Vzc2libGUpIHsKKysgICAgICAgIGlmICghcmVzdWx0LmlzRW1wdHkoKSkK KysgICAgICAgICAgICByZXN1bHQucHJlcGVuZChRTGF0aW4xQ2hhcignLicpKTsKKysgICAgICAg IGlmIChhdXRvIG9iaiA9IGFjY2Vzc2libGUtPm9iamVjdCgpKSB7CisrICAgICAgICAgICAgY29u c3QgUVN0cmluZyBuYW1lID0gb2JqLT5vYmplY3ROYW1lKCk7CisrICAgICAgICAgICAgaWYgKCFu YW1lLmlzRW1wdHkoKSkKKysgICAgICAgICAgICAgICAgcmVzdWx0LnByZXBlbmQobmFtZSk7Cisr ICAgICAgICAgICAgZWxzZQorKyAgICAgICAgICAgICAgICByZXN1bHQucHJlcGVuZChRU3RyaW5n Ojpmcm9tVXRmOChvYmotPm1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkpKTsKKysgICAgICAgIH0K KysgICAgICAgIGFjY2Vzc2libGUgPSBhY2Nlc3NpYmxlLT5wYXJlbnQoKTsKKysgICAgfQorKyAg ICByZXR1cm4gcmVzdWx0OworK30KKyt9IC8vIG5hbWVzcGFjZQorKworIC8vIEFjY2Vzc2libGUK KyBib29sIEF0U3BpQWRhcHRvcjo6YWNjZXNzaWJsZUludGVyZmFjZShRQWNjZXNzaWJsZUludGVy ZmFjZSAqaW50ZXJmYWNlLCBjb25zdCBRU3RyaW5nICZmdW5jdGlvbiwgY29uc3QgUURCdXNNZXNz YWdlICZtZXNzYWdlLCBjb25zdCBRREJ1c0Nvbm5lY3Rpb24gJmNvbm5lY3Rpb24pCisgeworQEAg LTE0NDEsNiArMTQ4NCw5IEBAIGJvb2wgQXRTcGlBZGFwdG9yOjphY2Nlc3NpYmxlSW50ZXJmYWNl KFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppbnRlcmZhY2UsIGNvbnN0IFFTCisgICAgICAgICAgICAg Y2hpbGRyZW4gPDwgcmVmOworICAgICAgICAgfQorICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1l c3NhZ2UuY3JlYXRlUmVwbHkoUVZhcmlhbnQ6OmZyb21WYWx1ZShjaGlsZHJlbikpKTsKKysgICAg fSBlbHNlIGlmIChmdW5jdGlvbiA9PSBRTGF0aW4xU3RyaW5nKCJHZXRBY2Nlc3NpYmxlSWQiKSkg eworKyAgICAgICAgc2VuZFJlcGx5KGNvbm5lY3Rpb24sIG1lc3NhZ2UsCisrICAgICAgICAgICAg ICAgICAgUVZhcmlhbnQ6OmZyb21WYWx1ZShRREJ1c1ZhcmlhbnQoYWNjZXNzaWJsZUlkRm9yQWNj ZXNzaWJsZShpbnRlcmZhY2UpKSkpOworICAgICB9IGVsc2UgeworICAgICAgICAgcUNEZWJ1Zyhs Y0FjY2Vzc2liaWxpdHlBdHNwaSkgPDwgIldBUk5JTkc6IEF0U3BpQWRhcHRvcjo6YWNjZXNzaWJs ZUludGVyZmFjZSBkb2VzIG5vdCBpbXBsZW1lbnQgIiA8PCBmdW5jdGlvbiA8PCBtZXNzYWdlLnBh dGgoKTsKKyAgICAgICAgIHJldHVybiBmYWxzZTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Bs YXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvZGJ1c2Nvbm5lY3Rpb24uY3BwIGIvcXRi YXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2RidXNjb25uZWN0aW9u LmNwcAoraW5kZXggNDVkZGM4ZTQ5Ni4uY2M3MzRhYmM2MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9kYnVzY29ubmVjdGlvbi5jcHAK KysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9kYnVz Y29ubmVjdGlvbi5jcHAKK0BAIC02OSw2ICs2OSwyMSBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyBE QnVzQ29ubmVjdGlvbjo6REJ1c0Nvbm5lY3Rpb24oUU9iamVjdCAqcGFyZW50KQorICAgICA6IFFP YmplY3QocGFyZW50KSwgbV9hMTF5Q29ubmVjdGlvbihRU3RyaW5nKCkpLCBtX2VuYWJsZWQoZmFs c2UpCisgeworKyAgICAvLyBJZiB0aGUgYnVzIGlzIGV4cGxpY2l0bHkgc2V0IHZpYSBlbnYgdmFy IGl0IG92ZXJyaWRlcyBldmVyeXRoaW5nIGVsc2UuCisrICAgIFFCeXRlQXJyYXkgYWRkcmVzc0Vu diA9IHFnZXRlbnYoIkFUX1NQSV9CVVNfQUREUkVTUyIpOworKyAgICBpZiAoIWFkZHJlc3NFbnYu aXNFbXB0eSgpKSB7CisrICAgICAgICAvLyBPbmx5IGNvbm5lY3Qgb24gbmV4dCBsb29wIHJ1biwg Y29ubmVjdGlvbnMgdG8gb3VyIGVuYWJsZWQgc2lnbmFsIGFyZQorKyAgICAgICAgLy8gb25seSBl c3RhYmxpc2hlZCBhZnRlciB0aGUgY3RvciByZXR1cm5zLgorKyAgICAgICAgUU1ldGFPYmplY3Q6 Omludm9rZU1ldGhvZCgKKysgICAgICAgICAgICAgICAgdGhpcywKKysgICAgICAgICAgICAgICAg W3RoaXMsIGFkZHJlc3NFbnZdIHsKKysgICAgICAgICAgICAgICAgICAgIG1fZW5hYmxlZCA9IHRy dWU7CisrICAgICAgICAgICAgICAgICAgICBjb25uZWN0QTExeUJ1cyhRU3RyaW5nOjpmcm9tTG9j YWw4Qml0KGFkZHJlc3NFbnYpKTsKKysgICAgICAgICAgICAgICAgfSwKKysgICAgICAgICAgICAg ICAgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisg ICAgIC8vIFN0YXJ0IG1vbml0b3JpbmcgaWYgIm9yZy5hMTF5LkJ1cyIgaXMgcmVnaXN0ZXJlZCBh cyBEQnVzIHNlcnZpY2UuCisgICAgIFFEQnVzQ29ubmVjdGlvbiBjID0gUURCdXNDb25uZWN0aW9u OjpzZXNzaW9uQnVzKCk7CisgICAgIGlmICghYy5pc0Nvbm5lY3RlZCgpKSB7CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVy aWN1bml4c2VydmljZXMuY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMv Z2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXMuY3BwCitpbmRleCAxYTNjYWIyNzVkLi4y YWJlMDM5MTI2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2Vydmlj ZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXMuY3BwCisrKysgYi9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNl cy5jcHAKK0BAIC01MSw2ICs1MSw5IEBACisgI2luY2x1ZGUgPFF0Q29yZS9RU3RhbmRhcmRQYXRo cz4KKyAjaW5jbHVkZSA8UXRDb3JlL1FVcmw+CisgCisrI2luY2x1ZGUgPFF0R3VpL1FHdWlBcHBs aWNhdGlvbj4KKysjaW5jbHVkZSA8UXRHdWkvUVdpbmRvdz4KKysKKyAjaWYgUVRfQ09ORklHKGRi dXMpCisgLy8gVGhlc2UgUXRDb3JlIGluY2x1ZGVzIGFyZSBuZWVkZWQgZm9yIHhkZy1kZXNrdG9w LXBvcnRhbCBzdXBwb3J0CisgI2luY2x1ZGUgPFF0Q29yZS9wcml2YXRlL3Fjb3JlX3VuaXhfcC5o PgorQEAgLTU4LDYgKzYxLDggQEAKKyAjaW5jbHVkZSA8UXRDb3JlL1FGaWxlSW5mbz4KKyAjaW5j bHVkZSA8UXRDb3JlL1FVcmxRdWVyeT4KKyAKKysjaW5jbHVkZSA8UXRHdWkvUUNvbG9yPgorKwor ICNpbmNsdWRlIDxRdERCdXMvUURCdXNDb25uZWN0aW9uPgorICNpbmNsdWRlIDxRdERCdXMvUURC dXNNZXNzYWdlPgorICNpbmNsdWRlIDxRdERCdXMvUURCdXNQZW5kaW5nQ2FsbD4KK0BAIC0xNDIs NiArMTQ3LDggQEAgc3RhdGljIGlubGluZSBib29sIGRldGVjdFdlYkJyb3dzZXIoY29uc3QgUUJ5 dGVBcnJheSAmZGVza3RvcCwKKyAgICAgfQorIAorICAgICBpZiAoZGVza3RvcCA9PSBRQnl0ZUFy cmF5KCJLREUiKSkgeworKyAgICAgICAgaWYgKGNoZWNrRXhlY3V0YWJsZShRU3RyaW5nTGl0ZXJh bCgia2RlLW9wZW41IiksIGJyb3dzZXIpKQorKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg ICAgICAgLy8gS29ucXVlcm9yIGxhdW5jaGVyCisgICAgICAgICBpZiAoY2hlY2tFeGVjdXRhYmxl KFFTdHJpbmdMaXRlcmFsKCJrZm1jbGllbnQiKSwgYnJvd3NlcikpIHsKKyAgICAgICAgICAgICBi cm93c2VyLT5hcHBlbmQoUUxhdGluMVN0cmluZygiIGV4ZWMiKSk7CitAQCAtMjk2LDggKzMwMywx MzUgQEAgc3RhdGljIGlubGluZSBRREJ1c01lc3NhZ2UgeGRnRGVza3RvcFBvcnRhbFNlbmRFbWFp bChjb25zdCBRVXJsICZ1cmwpCisgCisgICAgIHJldHVybiBRREJ1c0Nvbm5lY3Rpb246OnNlc3Np b25CdXMoKS5jYWxsKG1lc3NhZ2UpOworIH0KKysKKytuYW1lc3BhY2UgeworK3N0cnVjdCBYREdE ZXNrdG9wQ29sb3IKKyt7CisrICAgIGRvdWJsZSByID0gMDsKKysgICAgZG91YmxlIGcgPSAwOwor KyAgICBkb3VibGUgYiA9IDA7CisrCisrICAgIFFDb2xvciB0b1FDb2xvcigpIGNvbnN0CisrICAg IHsKKysgICAgICAgIGNvbnN0ZXhwciBhdXRvIHJnYk1heCA9IDI1NTsKKysgICAgICAgIHJldHVy biB7IHN0YXRpY19jYXN0PGludD4ociAqIHJnYk1heCksIHN0YXRpY19jYXN0PGludD4oZyAqIHJn Yk1heCksCisrICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGIgKiByZ2JNYXgpIH07 CisrICAgIH0KKyt9OworKworK2NvbnN0IFFEQnVzQXJndW1lbnQgJm9wZXJhdG9yPj4oY29uc3Qg UURCdXNBcmd1bWVudCAmYXJndW1lbnQsIFhER0Rlc2t0b3BDb2xvciAmbXlTdHJ1Y3QpCisrewor KyAgICBhcmd1bWVudC5iZWdpblN0cnVjdHVyZSgpOworKyAgICBhcmd1bWVudCA+PiBteVN0cnVj dC5yID4+IG15U3RydWN0LmcgPj4gbXlTdHJ1Y3QuYjsKKysgICAgYXJndW1lbnQuZW5kU3RydWN0 dXJlKCk7CisrICAgIHJldHVybiBhcmd1bWVudDsKKyt9CisrCisrY2xhc3MgWGRnRGVza3RvcFBv cnRhbENvbG9yUGlja2VyIDogcHVibGljIFFQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlcgorK3sK KysgICAgUV9PQkpFQ1QKKytwdWJsaWM6CisrICAgIFhkZ0Rlc2t0b3BQb3J0YWxDb2xvclBpY2tl cihjb25zdCBRU3RyaW5nICZwYXJlbnRXaW5kb3dJZCwgUVdpbmRvdyAqcGFyZW50KQorKyAgICAg ICAgOiBRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQaWNrZXIocGFyZW50KSwgbV9wYXJlbnRXaW5kb3dJ ZChwYXJlbnRXaW5kb3dJZCkKKysgICAgeworKyAgICB9CisrCisrICAgIHZvaWQgcGlja0NvbG9y KCkgb3ZlcnJpZGUKKysgICAgeworKyAgICAgICAgLy8gREJ1cyBzaWduYXR1cmU6CisrICAgICAg ICAvLyBQaWNrQ29sb3IgKElOICAgcyAgICAgIHBhcmVudF93aW5kb3csCisrICAgICAgICAvLyAg ICAgICAgICAgIElOICAgYXtzdn0gIG9wdGlvbnMKKysgICAgICAgIC8vICAgICAgICAgICAgT1VU ICBvICAgICAgaGFuZGxlKQorKyAgICAgICAgLy8gT3B0aW9uczoKKysgICAgICAgIC8vIGhhbmRs ZV90b2tlbiAocykgLSAgQSBzdHJpbmcgdGhhdCB3aWxsIGJlIHVzZWQgYXMgdGhlIGxhc3QgZWxl bWVudCBvZiB0aGUgQGhhbmRsZS4KKysKKysgICAgICAgIFFEQnVzTWVzc2FnZSBtZXNzYWdlID0g UURCdXNNZXNzYWdlOjpjcmVhdGVNZXRob2RDYWxsKAorKyAgICAgICAgICAgICAgICBRU3RyaW5n TGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5EZXNrdG9wIiksIFFTdHJpbmdMaXRlcmFs KCIvb3JnL2ZyZWVkZXNrdG9wL3BvcnRhbC9kZXNrdG9wIiksCisrICAgICAgICAgICAgICAgIFFT dHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLlNjcmVlbnNob3QiKSwgUVN0cmlu Z0xpdGVyYWwoIlBpY2tDb2xvciIpKTsKKysgICAgICAgIG1lc3NhZ2UgPDwgbV9wYXJlbnRXaW5k b3dJZCA8PCBRVmFyaWFudE1hcCgpOworKworKyAgICAgICAgUURCdXNQZW5kaW5nQ2FsbCBwZW5k aW5nQ2FsbCA9IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmFzeW5jQ2FsbChtZXNzYWdl KTsKKysgICAgICAgIGF1dG8gd2F0Y2hlciA9IG5ldyBRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlcihw ZW5kaW5nQ2FsbCwgdGhpcyk7CisrICAgICAgICBjb25uZWN0KHdhdGNoZXIsICZRREJ1c1BlbmRp bmdDYWxsV2F0Y2hlcjo6ZmluaXNoZWQsIHRoaXMsCisrICAgICAgICAgICAgICAgIFt0aGlzXShR REJ1c1BlbmRpbmdDYWxsV2F0Y2hlciAqd2F0Y2hlcikgeworKyAgICAgICAgICAgICAgICAgICAg d2F0Y2hlci0+ZGVsZXRlTGF0ZXIoKTsKKysgICAgICAgICAgICAgICAgICAgIFFEQnVzUGVuZGlu Z1JlcGx5PFFEQnVzT2JqZWN0UGF0aD4gcmVwbHkgPSAqd2F0Y2hlcjsKKysgICAgICAgICAgICAg ICAgICAgIGlmIChyZXBseS5pc0Vycm9yKCkpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBx V2FybmluZygiREJ1cyBjYWxsIHRvIHBpY2sgY29sb3IgZmFpbGVkOiAlcyIsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcVByaW50YWJsZShyZXBseS5lcnJvcigpLm1lc3NhZ2Uo KSkpOworKyAgICAgICAgICAgICAgICAgICAgICAgIFFfRU1JVCBjb2xvclBpY2tlZCh7fSk7Cisr ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICAgICAgICAgIFFE QnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmNvbm5lY3QoCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5EZXNr dG9wIiksIHJlcGx5LnZhbHVlKCkucGF0aCgpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuUmVxdWVzdCIpLCBR U3RyaW5nTGl0ZXJhbCgiUmVzcG9uc2UiKSwgdGhpcywKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFNMT1QoZ290Q29sb3JSZXNwb25zZSh1aW50LFFWYXJpYW50TWFwKSkKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorKyAgICAgICAgICAg ICAgICAgICAgICAgICk7CisrICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAg IH0pOworKyAgICB9CisrCisrcHJpdmF0ZSBRX1NMT1RTOgorKyAgICB2b2lkIGdvdENvbG9yUmVz cG9uc2UodWludCByZXN1bHQsIGNvbnN0IFFWYXJpYW50TWFwICZtYXApCisrICAgIHsKKysgICAg ICAgIGlmIChyZXN1bHQgIT0gMCkKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICBYREdE ZXNrdG9wQ29sb3IgY29sb3J7fTsKKysgICAgICAgIG1hcC52YWx1ZShRU3RyaW5nTGl0ZXJhbCgi Y29sb3IiKSkudmFsdWU8UURCdXNBcmd1bWVudD4oKSA+PiBjb2xvcjsKKysgICAgICAgIFFfRU1J VCBjb2xvclBpY2tlZChjb2xvci50b1FDb2xvcigpKTsKKysgICAgICAgIGRlbGV0ZUxhdGVyKCk7 CisrICAgIH0KKysKKytwcml2YXRlOgorKyAgICBjb25zdCBRU3RyaW5nIG1fcGFyZW50V2luZG93 SWQ7CisrfTsKKyt9IC8vIG5hbWVzcGFjZQorKworICNlbmRpZiAvLyBRVF9DT05GSUcoZGJ1cykK KyAKKytRR2VuZXJpY1VuaXhTZXJ2aWNlczo6UUdlbmVyaWNVbml4U2VydmljZXMoKQorK3sKKysj aWYgUVRfQ09ORklHKGRidXMpCisrICAgIGlmIChxRW52aXJvbm1lbnRWYXJpYWJsZUludFZhbHVl KCJRVF9OT19YREdfREVTS1RPUF9QT1JUQUwiKSA+IDApIHsKKysgICAgICAgIHJldHVybjsKKysg ICAgfQorKyAgICBRREJ1c01lc3NhZ2UgbWVzc2FnZSA9IFFEQnVzTWVzc2FnZTo6Y3JlYXRlTWV0 aG9kQ2FsbCgKKysgICAgICAgICAgICBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBv cnRhbC5EZXNrdG9wIiksIFFTdHJpbmdMaXRlcmFsKCIvb3JnL2ZyZWVkZXNrdG9wL3BvcnRhbC9k ZXNrdG9wIiksCisrICAgICAgICAgICAgUVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5E QnVzLlByb3BlcnRpZXMiKSwgUVN0cmluZ0xpdGVyYWwoIkdldCIpKTsKKysgICAgbWVzc2FnZSA8 PCBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5TY3JlZW5zaG90IikKKysg ICAgICAgICAgICA8PCBRU3RyaW5nTGl0ZXJhbCgidmVyc2lvbiIpOworKworKyAgICBRREJ1c1Bl bmRpbmdDYWxsIHBlbmRpbmdDYWxsID0gUURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCkuYXN5 bmNDYWxsKG1lc3NhZ2UpOworKyAgICBhdXRvIHdhdGNoZXIgPSBuZXcgUURCdXNQZW5kaW5nQ2Fs bFdhdGNoZXIocGVuZGluZ0NhbGwpOworKyAgICBRT2JqZWN0Ojpjb25uZWN0KHdhdGNoZXIsICZR REJ1c1BlbmRpbmdDYWxsV2F0Y2hlcjo6ZmluaXNoZWQsIHdhdGNoZXIsCisrICAgICAgICAgICAg ICAgICAgICAgW3RoaXNdKFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyICp3YXRjaGVyKSB7CisrICAg ICAgICAgICAgICAgICAgICAgICAgIHdhdGNoZXItPmRlbGV0ZUxhdGVyKCk7CisrICAgICAgICAg ICAgICAgICAgICAgICAgIFFEQnVzUGVuZGluZ1JlcGx5PFFWYXJpYW50PiByZXBseSA9ICp3YXRj aGVyOworKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlcGx5LmlzRXJyb3IoKSAmJiBy ZXBseS52YWx1ZSgpLnRvVUludCgpID49IDIpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtX2hhc1NjcmVlbnNob3RQb3J0YWxXaXRoQ29sb3JQaWNraW5nID0gdHJ1ZTsKKysgICAgICAg ICAgICAgICAgICAgICB9KTsKKysKKysjZW5kaWYKKyt9CisrCisrUVBsYXRmb3JtU2VydmljZUNv bG9yUGlja2VyICpRR2VuZXJpY1VuaXhTZXJ2aWNlczo6Y29sb3JQaWNrZXIoUVdpbmRvdyAqcGFy ZW50KQorK3sKKysjaWYgUVRfQ09ORklHKGRidXMpCisrICAgIC8vIE1ha2UgZG91YmxlIHN1cmUg dGhhdCB3ZSBhcmUgaW4gYSB3YXlsYW5kIGVudmlyb25tZW50LiBJbiBwYXJ0aWN1bGFyIGNoZWNr CisrICAgIC8vIFdBWUxBTkRfRElTUExBWSBzbyBhbHNvIFhXYXlsYW5kIGFwcHMgYmVuZWZpdCBm cm9tIHBvcnRhbC1iYXNlZCBjb2xvciBwaWNraW5nLgorKyAgICAvLyBPdXRzaWRlIHdheWxhbmQg d2UnbGwgcmF0aGVyIHJlbHkgb24gb3RoZXIgbWVhbnMgdGhhbiB0aGUgWERHIGRlc2t0b3AgcG9y dGFsLgorKyAgICBpZiAoIXFFbnZpcm9ubWVudFZhcmlhYmxlSXNFbXB0eSgiV0FZTEFORF9ESVNQ TEFZIikKKysgICAgICAgIHx8IFFHdWlBcHBsaWNhdGlvbjo6cGxhdGZvcm1OYW1lKCkuc3RhcnRz V2l0aChRTGF0aW4xU3RyaW5nKCJ3YXlsYW5kIikpKSB7CisrICAgICAgICByZXR1cm4gbmV3IFhk Z0Rlc2t0b3BQb3J0YWxDb2xvclBpY2tlcihwb3J0YWxXaW5kb3dJZGVudGlmaWVyKHBhcmVudCks IHBhcmVudCk7CisrICAgIH0KKysgICAgcmV0dXJuIG51bGxwdHI7CisrI2Vsc2UKKysgICAgUV9V TlVTRUQocGFyZW50KTsKKysgICAgcmV0dXJuIG51bGxwdHI7CisrI2VuZGlmCisrfQorKworIFFC eXRlQXJyYXkgUUdlbmVyaWNVbml4U2VydmljZXM6OmRlc2t0b3BFbnZpcm9ubWVudCgpIGNvbnN0 CisgeworICAgICBzdGF0aWMgY29uc3QgUUJ5dGVBcnJheSByZXN1bHQgPSBkZXRlY3REZXNrdG9w RW52aXJvbm1lbnQoKTsKK0BAIC0zNTIsNiArNDg2LDggQEAgYm9vbCBRR2VuZXJpY1VuaXhTZXJ2 aWNlczo6b3BlbkRvY3VtZW50KGNvbnN0IFFVcmwgJnVybCkKKyB9CisgCisgI2Vsc2UKKytRR2Vu ZXJpY1VuaXhTZXJ2aWNlczo6UUdlbmVyaWNVbml4U2VydmljZXMoKSA9IGRlZmF1bHQ7CisrCisg UUJ5dGVBcnJheSBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6ZGVza3RvcEVudmlyb25tZW50KCkgY29u c3QKKyB7CisgICAgIHJldHVybiBRQnl0ZUFycmF5TGl0ZXJhbCgiVU5LTk9XTiIpOworQEAgLTM3 MSw2ICs1MDcsMzAgQEAgYm9vbCBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6b3BlbkRvY3VtZW50KGNv bnN0IFFVcmwgJnVybCkKKyAgICAgcmV0dXJuIGZhbHNlOworIH0KKyAKKytRUGxhdGZvcm1TZXJ2 aWNlQ29sb3JQaWNrZXIgKlFHZW5lcmljVW5peFNlcnZpY2VzOjpjb2xvclBpY2tlcihRV2luZG93 ICpwYXJlbnQpCisreworKyAgICBRX1VOVVNFRChwYXJlbnQpOworKyAgICByZXR1cm4gbnVsbHB0 cjsKKyt9CisrCisgI2VuZGlmIC8vIFFUX05PX01VTFRJUFJPQ0VTUworIAorK1FTdHJpbmcgUUdl bmVyaWNVbml4U2VydmljZXM6OnBvcnRhbFdpbmRvd0lkZW50aWZpZXIoUVdpbmRvdyAqd2luZG93 KQorK3sKKysgICAgaWYgKFFHdWlBcHBsaWNhdGlvbjo6cGxhdGZvcm1OYW1lKCkgPT0gUUxhdGlu MVN0cmluZygieGNiIikpCisrICAgICAgICByZXR1cm4gUVN0cmluZ0xpdGVyYWwoIngxMToiKSAr IFFTdHJpbmc6Om51bWJlcih3aW5kb3ctPndpbklkKCksIDE2KTsKKysgICAgcmV0dXJuIFFTdHJp bmcoKTsKKyt9CisrCisrYm9vbCBRR2VuZXJpY1VuaXhTZXJ2aWNlczo6aGFzQ2FwYWJpbGl0eShD YXBhYmlsaXR5IGNhcGFiaWxpdHkpIGNvbnN0CisreworKyAgICBzd2l0Y2ggKGNhcGFiaWxpdHkp IHsKKysgICAgY2FzZSBDYXBhYmlsaXR5OjpDb2xvclBpY2tpbmc6CisrICAgICAgICByZXR1cm4g bV9oYXNTY3JlZW5zaG90UG9ydGFsV2l0aENvbG9yUGlja2luZzsKKysgICAgfQorKyAgICByZXR1 cm4gZmFsc2U7CisrfQorKworIFFUX0VORF9OQU1FU1BBQ0UKKysKKysjaW5jbHVkZSAicWdlbmVy aWN1bml4c2VydmljZXMubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBw b3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzX3AuaCBiL3F0YmFz ZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNl cnZpY2VzX3AuaAoraW5kZXggOGFjM2RlNmYwMy4uMzA5MjRlNjRiZCAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5p eHNlcnZpY2VzX3AuaAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMv Z2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4c2VydmljZXNfcC5oCitAQCAtNTksMTYgKzU5LDIxIEBA IFFUX0JFR0lOX05BTUVTUEFDRQorIGNsYXNzIFFHZW5lcmljVW5peFNlcnZpY2VzIDogcHVibGlj IFFQbGF0Zm9ybVNlcnZpY2VzCisgeworIHB1YmxpYzoKKy0gICAgUUdlbmVyaWNVbml4U2Vydmlj ZXMoKSB7fQorKyAgICBRR2VuZXJpY1VuaXhTZXJ2aWNlcygpOworIAorICAgICBRQnl0ZUFycmF5 IGRlc2t0b3BFbnZpcm9ubWVudCgpIGNvbnN0IG92ZXJyaWRlOworIAorKyAgICBib29sIGhhc0Nh cGFiaWxpdHkoQ2FwYWJpbGl0eSBjYXBhYmlsaXR5KSBjb25zdCBvdmVycmlkZTsKKyAgICAgYm9v bCBvcGVuVXJsKGNvbnN0IFFVcmwgJnVybCkgb3ZlcnJpZGU7CisgICAgIGJvb2wgb3BlbkRvY3Vt ZW50KGNvbnN0IFFVcmwgJnVybCkgb3ZlcnJpZGU7CisrICAgIFFQbGF0Zm9ybVNlcnZpY2VDb2xv clBpY2tlciAqY29sb3JQaWNrZXIoUVdpbmRvdyAqcGFyZW50ID0gbnVsbHB0cikgb3ZlcnJpZGU7 CisrCisrICAgIHZpcnR1YWwgUVN0cmluZyBwb3J0YWxXaW5kb3dJZGVudGlmaWVyKFFXaW5kb3cg KndpbmRvdyk7CisgCisgcHJpdmF0ZToKKyAgICAgUVN0cmluZyBtX3dlYkJyb3dzZXI7CisgICAg IFFTdHJpbmcgbV9kb2N1bWVudExhdW5jaGVyOworKyAgICBib29sIG1faGFzU2NyZWVuc2hvdFBv cnRhbFdpdGhDb2xvclBpY2tpbmcgPSBmYWxzZTsKKyB9OworIAorIFFUX0VORF9OQU1FU1BBQ0UK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3Vu aXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jt c3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbi5j cHAKK2luZGV4IDA5NDcwYmNjYzYuLmNjN2M3ZDRkOGEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29u bmVjdGlvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5l cmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uLmNwcAorQEAgLTY5LDYgKzY5LDcg QEAgY29uc3QgUVN0cmluZyBNZW51QmFyUGF0aCA9IFFMYXRpbjFTdHJpbmcoIi9NZW51QmFyIik7 CisgKi8KKyBRREJ1c01lbnVDb25uZWN0aW9uOjpRREJ1c01lbnVDb25uZWN0aW9uKFFPYmplY3Qg KnBhcmVudCwgY29uc3QgUVN0cmluZyAmc2VydmljZU5hbWUpCisgICAgIDogUU9iamVjdChwYXJl bnQpCisrICAgICwgbV9zZXJ2aWNlTmFtZShzZXJ2aWNlTmFtZSkKKyAgICAgLCBtX2Nvbm5lY3Rp b24oc2VydmljZU5hbWUuaXNOdWxsKCkgPyBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFFEQnVzQ29ubmVjdGlv bjo6Y29ubmVjdFRvQnVzKFFEQnVzQ29ubmVjdGlvbjo6U2Vzc2lvbkJ1cywgc2VydmljZU5hbWUp KQorICAgICAsIG1fZGJ1c1dhdGNoZXIobmV3IFFEQnVzU2VydmljZVdhdGNoZXIoU3RhdHVzTm90 aWZpZXJXYXRjaGVyU2VydmljZSwgbV9jb25uZWN0aW9uLCBRREJ1c1NlcnZpY2VXYXRjaGVyOjpX YXRjaEZvclJlZ2lzdHJhdGlvbiwgdGhpcykpCitAQCAtODMsNiArODQsMTIgQEAgUURCdXNNZW51 Q29ubmVjdGlvbjo6UURCdXNNZW51Q29ubmVjdGlvbihRT2JqZWN0ICpwYXJlbnQsIGNvbnN0IFFT dHJpbmcgJnNlcnZpY2UKKyAjZW5kaWYKKyB9CisgCisrUURCdXNNZW51Q29ubmVjdGlvbjo6flFE QnVzTWVudUNvbm5lY3Rpb24oKQorK3sKKysgIGlmICghbV9zZXJ2aWNlTmFtZS5pc0VtcHR5KCkg JiYgbV9jb25uZWN0aW9uLmlzQ29ubmVjdGVkKCkpCisrICAgICAgUURCdXNDb25uZWN0aW9uOjpk aXNjb25uZWN0RnJvbUJ1cyhtX3NlcnZpY2VOYW1lKTsKKyt9CisrCisgdm9pZCBRREJ1c01lbnVD b25uZWN0aW9uOjpkYnVzRXJyb3IoY29uc3QgUURCdXNFcnJvciAmZXJyb3IpCisgeworICAgICBx V2FybmluZygpIDw8ICJRREJ1c1RyYXlJY29uIGVuY291bnRlcmVkIGEgRC1CdXMgZXJyb3I6IiA8 PCBlcnJvcjsKK0BAIC0xMDUsMTMgKzExMiw3IEBAIHZvaWQgUURCdXNNZW51Q29ubmVjdGlvbjo6 dW5yZWdpc3RlclRyYXlJY29uTWVudShRREJ1c1RyYXlJY29uICppdGVtKQorIAorIGJvb2wgUURC dXNNZW51Q29ubmVjdGlvbjo6cmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVtKQor IHsKKy0gICAgYm9vbCBzdWNjZXNzID0gY29ubmVjdGlvbigpLnJlZ2lzdGVyU2VydmljZShpdGVt LT5pbnN0YW5jZUlkKCkpOworLSAgICBpZiAoIXN1Y2Nlc3MpIHsKKy0gICAgICAgIHFXYXJuaW5n KCkgPDwgImZhaWxlZCB0byByZWdpc3RlciBzZXJ2aWNlIiA8PCBpdGVtLT5pbnN0YW5jZUlkKCk7 CistICAgICAgICByZXR1cm4gZmFsc2U7CistICAgIH0KKy0KKy0gICAgc3VjY2VzcyA9IGNvbm5l Y3Rpb24oKS5yZWdpc3Rlck9iamVjdChTdGF0dXNOb3RpZmllckl0ZW1QYXRoLCBpdGVtKTsKKysg ICAgYm9vbCBzdWNjZXNzID0gY29ubmVjdGlvbigpLnJlZ2lzdGVyT2JqZWN0KFN0YXR1c05vdGlm aWVySXRlbVBhdGgsIGl0ZW0pOworICAgICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICAgICAgIHVucmVn aXN0ZXJUcmF5SWNvbihpdGVtKTsKKyAgICAgICAgIHFXYXJuaW5nKCkgPDwgImZhaWxlZCB0byBy ZWdpc3RlciIgPDwgaXRlbS0+aW5zdGFuY2VJZCgpIDw8IFN0YXR1c05vdGlmaWVySXRlbVBhdGg7 CitAQCAtMTI2LDIxICsxMjcsMTggQEAgYm9vbCBRREJ1c01lbnVDb25uZWN0aW9uOjpyZWdpc3Rl clRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pCisgCisgYm9vbCBRREJ1c01lbnVDb25uZWN0 aW9uOjpyZWdpc3RlclRyYXlJY29uV2l0aFdhdGNoZXIoUURCdXNUcmF5SWNvbiAqaXRlbSkKKyB7 CisrICAgIFFfVU5VU0VEKGl0ZW0pOworICAgICBRREJ1c01lc3NhZ2UgcmVnaXN0ZXJNZXRob2Qg PSBRREJ1c01lc3NhZ2U6OmNyZWF0ZU1ldGhvZENhbGwoCisgICAgICAgICAgICAgICAgIFN0YXR1 c05vdGlmaWVyV2F0Y2hlclNlcnZpY2UsIFN0YXR1c05vdGlmaWVyV2F0Y2hlclBhdGgsIFN0YXR1 c05vdGlmaWVyV2F0Y2hlclNlcnZpY2UsCisgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmco IlJlZ2lzdGVyU3RhdHVzTm90aWZpZXJJdGVtIikpOworLSAgICByZWdpc3Rlck1ldGhvZC5zZXRB cmd1bWVudHMoUVZhcmlhbnRMaXN0KCkgPDwgaXRlbS0+aW5zdGFuY2VJZCgpKTsKKysgICAgcmVn aXN0ZXJNZXRob2Quc2V0QXJndW1lbnRzKFFWYXJpYW50TGlzdCgpIDw8IG1fY29ubmVjdGlvbi5i YXNlU2VydmljZSgpKTsKKyAgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5jYWxsV2l0aENhbGxiYWNr KHJlZ2lzdGVyTWV0aG9kLCB0aGlzLCBTSUdOQUwodHJheUljb25SZWdpc3RlcmVkKCkpLCBTTE9U KGRidXNFcnJvcihRREJ1c0Vycm9yKSkpOworIH0KKyAKKy1ib29sIFFEQnVzTWVudUNvbm5lY3Rp b246OnVucmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVtKQorK3ZvaWQgUURCdXNN ZW51Q29ubmVjdGlvbjo6dW5yZWdpc3RlclRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pCisg eworICAgICB1bnJlZ2lzdGVyVHJheUljb25NZW51KGl0ZW0pOworICAgICBjb25uZWN0aW9uKCku dW5yZWdpc3Rlck9iamVjdChTdGF0dXNOb3RpZmllckl0ZW1QYXRoKTsKKy0gICAgYm9vbCBzdWNj ZXNzID0gY29ubmVjdGlvbigpLnVucmVnaXN0ZXJTZXJ2aWNlKGl0ZW0tPmluc3RhbmNlSWQoKSk7 CistICAgIGlmICghc3VjY2VzcykKKy0gICAgICAgIHFXYXJuaW5nKCkgPDwgImZhaWxlZCB0byB1 bnJlZ2lzdGVyIHNlcnZpY2UiIDw8IGl0ZW0tPmluc3RhbmNlSWQoKTsKKy0gICAgcmV0dXJuIHN1 Y2Nlc3M7CisgfQorICNlbmRpZiAvLyBRVF9OT19TWVNURU1UUkFZSUNPTgorIAorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzbWVu dS9xZGJ1c21lbnVjb25uZWN0aW9uX3AuaCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3Ro ZW1lcy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uX3AuaAoraW5kZXgg ZjQ4NDc5NWZiYi4uOTdiZGZhYmI4NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1z dXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uX3Au aAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2Ri dXNtZW51L3FkYnVzbWVudWNvbm5lY3Rpb25fcC5oCitAQCAtNzAsNiArNzAsNyBAQCBjbGFzcyBR REJ1c01lbnVDb25uZWN0aW9uIDogcHVibGljIFFPYmplY3QKKyAKKyBwdWJsaWM6CisgICAgIFFE QnVzTWVudUNvbm5lY3Rpb24oUU9iamVjdCAqcGFyZW50ID0gbnVsbHB0ciwgY29uc3QgUVN0cmlu ZyAmc2VydmljZU5hbWUgPSBRU3RyaW5nKCkpOworKyAgICB+UURCdXNNZW51Q29ubmVjdGlvbigp OworICAgICBRREJ1c0Nvbm5lY3Rpb24gY29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29u bmVjdGlvbjsgfQorICAgICBRREJ1c1NlcnZpY2VXYXRjaGVyICpkYnVzV2F0Y2hlcigpIGNvbnN0 IHsgcmV0dXJuIG1fZGJ1c1dhdGNoZXI7IH0KKyAgICAgYm9vbCBpc1N0YXR1c05vdGlmaWVySG9z dFJlZ2lzdGVyZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1c05vdGlmaWVySG9zdFJlZ2lzdGVy ZWQ7IH0KK0BAIC03OCw3ICs3OSw3IEBAIHB1YmxpYzoKKyAgICAgdm9pZCB1bnJlZ2lzdGVyVHJh eUljb25NZW51KFFEQnVzVHJheUljb24gKml0ZW0pOworICAgICBib29sIHJlZ2lzdGVyVHJheUlj b24oUURCdXNUcmF5SWNvbiAqaXRlbSk7CisgICAgIGJvb2wgcmVnaXN0ZXJUcmF5SWNvbldpdGhX YXRjaGVyKFFEQnVzVHJheUljb24gKml0ZW0pOworLSAgICBib29sIHVucmVnaXN0ZXJUcmF5SWNv bihRREJ1c1RyYXlJY29uICppdGVtKTsKKysgICAgdm9pZCB1bnJlZ2lzdGVyVHJheUljb24oUURC dXNUcmF5SWNvbiAqaXRlbSk7CisgI2VuZGlmIC8vIFFUX05PX1NZU1RFTVRSQVlJQ09OCisgCisg UV9TSUdOQUxTOgorQEAgLTkwLDYgKzkxLDcgQEAgcHJpdmF0ZSBRX1NMT1RTOgorICAgICB2b2lk IGRidXNFcnJvcihjb25zdCBRREJ1c0Vycm9yICZlcnJvcik7CisgCisgcHJpdmF0ZToKKysgICAg UVN0cmluZyBtX3NlcnZpY2VOYW1lOworICAgICBRREJ1c0Nvbm5lY3Rpb24gbV9jb25uZWN0aW9u OworICAgICBRREJ1c1NlcnZpY2VXYXRjaGVyICptX2RidXNXYXRjaGVyOworICAgICBib29sIG1f c3RhdHVzTm90aWZpZXJIb3N0UmVnaXN0ZXJlZDsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Bs YXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c3RyYXkvcWRidXN0cmF5aWNvbi5j cHAgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c3Ry YXkvcWRidXN0cmF5aWNvbi5jcHAKK2luZGV4IGJlZGU3MDk3NWEuLjc2YmZlYzVlNWEgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1 c3RyYXkvcWRidXN0cmF5aWNvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0 L3RoZW1lcy9nZW5lcmljdW5peC9kYnVzdHJheS9xZGJ1c3RyYXlpY29uLmNwcAorQEAgLTcxLDgg KzcxLDEyIEBAIFFfTE9HR0lOR19DQVRFR09SWShxTGNUcmF5LCAicXQucXBhLnRyYXkiKQorIHN0 YXRpYyBRU3RyaW5nIGljb25UZW1wUGF0aCgpCisgeworICAgICBRU3RyaW5nIHRlbXBQYXRoID0g UVN0YW5kYXJkUGF0aHM6OndyaXRhYmxlTG9jYXRpb24oUVN0YW5kYXJkUGF0aHM6OlJ1bnRpbWVM b2NhdGlvbik7CistICAgIGlmICghdGVtcFBhdGguaXNFbXB0eSgpKQorKyAgICBpZiAoIXRlbXBQ YXRoLmlzRW1wdHkoKSkgeworKyAgICAgICAgUVN0cmluZyBmbGF0cGFrSWQgPSBxRW52aXJvbm1l bnRWYXJpYWJsZSgiRkxBVFBBS19JRCIpOworKyAgICAgICAgaWYgKCFmbGF0cGFrSWQuaXNFbXB0 eSgpICYmIFFGaWxlSW5mbzo6ZXhpc3RzKFFMYXRpbjFTdHJpbmcoIi8uZmxhdHBhay1pbmZvIikp KQorKyAgICAgICAgICAgIHRlbXBQYXRoICs9IFFMYXRpbjFTdHJpbmcoIi9hcHAvIikgKyBmbGF0 cGFrSWQ7CisgICAgICAgICByZXR1cm4gdGVtcFBhdGg7CisrICAgIH0KKyAKKyAgICAgdGVtcFBh dGggPSBRU3RhbmRhcmRQYXRoczo6d3JpdGFibGVMb2NhdGlvbihRU3RhbmRhcmRQYXRoczo6R2Vu ZXJpY0NhY2hlTG9jYXRpb24pOworIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1z dXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXh0aGVtZXMuY3BwIGIvcXRiYXNl L3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHRoZW1l cy5jcHAKK2luZGV4IGNiMWIzOWRiNjQuLjZlMDFhZjA1MmMgMTAwNjQ0CistLS0gYS9xdGJhc2Uv c3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4dGhlbWVz LmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4 L3FnZW5lcmljdW5peHRoZW1lcy5jcHAKK0BAIC03NTUsNiArNzU1LDkgQEAgUVZhcmlhbnQgUUdu b21lVGhlbWU6OnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6VGhlbWVIaW50IGhpbnQpIGNvbnN0 CisgICAgICAgICByZXR1cm4gUVZhcmlhbnQoUUNoYXIoMHgyMDIyKSk7CisgICAgIGNhc2UgUVBs YXRmb3JtVGhlbWU6OlVpRWZmZWN0czoKKyAgICAgICAgIHJldHVybiBRVmFyaWFudChpbnQoSG92 ZXJFZmZlY3QpKTsKKysgICAgY2FzZSBRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzOgor KyAgICAgICAgcmV0dXJuIFFWYXJpYW50Ojpmcm9tVmFsdWUoCisrICAgICAgICAgICAgICAgIFFM aXN0PFF0OjpLZXk+KHsgUXQ6OktleV9TcGFjZSwgUXQ6OktleV9SZXR1cm4sIFF0OjpLZXlfRW50 ZXIsIFF0OjpLZXlfU2VsZWN0IH0pKTsKKyAgICAgZGVmYXVsdDoKKyAgICAgICAgIGJyZWFrOwor ICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9h cGkvcWVnbGZzY3Vyc29yLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMv YXBpL3FlZ2xmc2N1cnNvci5jcHAKK2luZGV4IDk4ZTA1MTk1ZWUuLjFlOTJmNDNkZWMgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2FwaS9xZWdsZnNjdXJz b3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2FwaS9xZWds ZnNjdXJzb3IuY3BwCitAQCAtMzQzLDggKzM0Myw3IEBAIHZvaWQgUUVnbEZTQ3Vyc29yOjpwYWlu dE9uU2NyZWVuKCkKKyAgICAgLy8gc2NyZWVucyBhcmUgc2libGluZ3Mgb2YgZWFjaCBvdGhlci4g V2hlbiBub3QgZW5hYmxlZCwgdGhlIHNpYmxpbmcgbGlzdAorICAgICAvLyBvbmx5IGNvbnRhaW5z IG1fc2NyZWVuIGl0c2VsZi4KKyAgICAgZm9yIChRUGxhdGZvcm1TY3JlZW4gKnNjcmVlbiA6IG1f c2NyZWVuLT52aXJ0dWFsU2libGluZ3MoKSkgeworLSAgICAgICAgaWYgKHNjcmVlbi0+Z2VvbWV0 cnkoKS5jb250YWlucyhjci50b3BMZWZ0KCkudG9Qb2ludCgpICsgbV9jdXJzb3IuaG90U3BvdCkK Ky0gICAgICAgICAgICAmJiBRT3BlbkdMQ29udGV4dDo6Y3VycmVudENvbnRleHQoKS0+c2NyZWVu KCkgPT0gc2NyZWVuLT5zY3JlZW4oKSkKKysgICAgICAgIGlmIChzY3JlZW4tPmdlb21ldHJ5KCku Y29udGFpbnMoY3IudG9wTGVmdCgpLnRvUG9pbnQoKSArIG1fY3Vyc29yLmhvdFNwb3QpKQorICAg ICAgICAgeworICAgICAgICAgICAgIGNyLnRyYW5zbGF0ZSgtc2NyZWVuLT5nZW9tZXRyeSgpLnRv cExlZnQoKSk7CisgICAgICAgICAgICAgY29uc3QgUVNpemUgc2NyZWVuU2l6ZSA9IHNjcmVlbi0+ Z2VvbWV0cnkoKS5zaXplKCk7CitAQCAtNDY4LDExICs0NjcsMTIgQEAgdm9pZCBRRWdsRlNDdXJz b3I6OmRyYXcoY29uc3QgUVJlY3RGICZyKQorIHsKKyAgICAgU3RhdGVTYXZlciBzdGF0ZVNhdmVy OworIAorLSAgICBRRWdsRlNDdXJzb3JEYXRhICZnZnggPSBzdGF0aWNfY2FzdDxRRWdsRlNDb250 ZXh0Kj4oUU9wZW5HTENvbnRleHQ6OmN1cnJlbnRDb250ZXh0KCktPmhhbmRsZSgpKS0+Y3Vyc29y RGF0YTsKKy0gICAgaWYgKCFnZngucHJvZ3JhbSkgeworLSAgICAgICAgLy8gb25lIHRpbWUgaW5p dGlhbGl6YXRpb24KKysgICAgLy8gb25lIHRpbWUgaW5pdGlhbGl6YXRpb24KKysgICAgaWYgKCFR T3BlbkdMRnVuY3Rpb25zOjpkX3B0cikKKyAgICAgICAgIGluaXRpYWxpemVPcGVuR0xGdW5jdGlv bnMoKTsKKyAKKysgICAgUUVnbEZTQ3Vyc29yRGF0YSAmZ2Z4ID0gc3RhdGljX2Nhc3Q8UUVnbEZT Q29udGV4dCo+KFFPcGVuR0xDb250ZXh0OjpjdXJyZW50Q29udGV4dCgpLT5oYW5kbGUoKSktPmN1 cnNvckRhdGE7CisrICAgIGlmICghZ2Z4LnByb2dyYW0pIHsKKyAgICAgICAgIGNyZWF0ZVNoYWRl clByb2dyYW1zKCk7CisgCisgICAgICAgICBpZiAoIWdmeC5hdGxhc1RleHR1cmUpIHsKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2RldmljZWludGVncmF0 aW9uL2VnbGZzX2ttc19zdXBwb3J0L3FlZ2xmc2ttc2V2ZW50cmVhZGVyLmNwcCBiL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvZGV2aWNlaW50ZWdyYXRpb24vZWdsZnNfa21zX3N1 cHBvcnQvcWVnbGZza21zZXZlbnRyZWFkZXIuY3BwCitpbmRleCA2NDVhMGFlMmU5Li4zZTBlNDA2 ZjFhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9kZXZp Y2VpbnRlZ3JhdGlvbi9lZ2xmc19rbXNfc3VwcG9ydC9xZWdsZnNrbXNldmVudHJlYWRlci5jcHAK KysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvZWdsZnMvZGV2aWNlaW50ZWdyYXRp b24vZWdsZnNfa21zX3N1cHBvcnQvcWVnbGZza21zZXZlbnRyZWFkZXIuY3BwCitAQCAtMTc5LDcg KzE3OSw3IEBAIHZvaWQgUUVnbEZTS21zRXZlbnRSZWFkZXI6OmNyZWF0ZShRRWdsRlNLbXNEZXZp Y2UgKmRldmljZSkKKyAKKyAgICAgbV9kZXZpY2UgPSBkZXZpY2U7CisgCistICAgIHFDRGVidWco cUxjRWdsZnNLbXNEZWJ1ZywgIkluaXRhbGl6aW5nIGV2ZW50IHJlYWRlciBmb3IgZGV2aWNlICVw IGZkICVkIiwKKysgICAgcUNEZWJ1ZyhxTGNFZ2xmc0ttc0RlYnVnLCAiSW5pdGlhbGl6aW5nIGV2 ZW50IHJlYWRlciBmb3IgZGV2aWNlICVwIGZkICVkIiwKKyAgICAgICAgICAgICBtX2RldmljZSwg bV9kZXZpY2UtPmZkKCkpOworIAorICAgICBtX3RocmVhZCA9IG5ldyBRRWdsRlNLbXNFdmVudFJl YWRlclRocmVhZChtX2RldmljZS0+ZmQoKSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVn aW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmNwcCBiL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5j cHAKK2luZGV4IDE0MWZiNjhhMjMuLmQ0Mjk0ZDQyNWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uY3BwCisr KysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50 ZWdyYXRpb24uY3BwCitAQCAtMTIyLDExICsxMjIsMTMgQEAgUU9mZnNjcmVlbkludGVncmF0aW9u OjpRT2Zmc2NyZWVuSW50ZWdyYXRpb24oKQorICNlbmRpZgorICAgICBtX3NlcnZpY2VzLnJlc2V0 KG5ldyBRUGxhdGZvcm1TZXJ2aWNlcyk7CisgCistICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6 OmhhbmRsZVNjcmVlbkFkZGVkKG5ldyBRT2Zmc2NyZWVuU2NyZWVuKTsKKysgICAgbV9zY3JlZW4g PSBuZXcgUU9mZnNjcmVlblNjcmVlbjsKKysgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFu ZGxlU2NyZWVuQWRkZWQobV9zY3JlZW4pOworIH0KKyAKKyBRT2Zmc2NyZWVuSW50ZWdyYXRpb246 On5RT2Zmc2NyZWVuSW50ZWdyYXRpb24oKQorIHsKKysgICAgUVdpbmRvd1N5c3RlbUludGVyZmFj ZTo6aGFuZGxlU2NyZWVuUmVtb3ZlZChtX3NjcmVlbik7CisgfQorIAorIHZvaWQgUU9mZnNjcmVl bkludGVncmF0aW9uOjppbml0aWFsaXplKCkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdp bnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdyYXRpb24uaCBiL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5oCitp bmRleCAwZWE5MGY2YzJmLi5mZTAwZmRlMDdjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVn aW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmgKKysrKyBiL3F0 YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlv bi5oCitAQCAtODQsNiArODQsNyBAQCBwcm90ZWN0ZWQ6CisgI2VuZGlmCisgICAgIFFTY29wZWRQ b2ludGVyPFFQbGF0Zm9ybUlucHV0Q29udGV4dD4gbV9pbnB1dENvbnRleHQ7CisgICAgIFFTY29w ZWRQb2ludGVyPFFQbGF0Zm9ybVNlcnZpY2VzPiBtX3NlcnZpY2VzOworKyAgICBRUGxhdGZvcm1T Y3JlZW4gKm1fc2NyZWVuOworICAgICBtdXRhYmxlIFFTY29wZWRQb2ludGVyPFFQbGF0Zm9ybU5h dGl2ZUludGVyZmFjZT4gbV9uYXRpdmVJbnRlcmZhY2U7CisgfTsKKyAKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NnbGNvbnRleHQuY3Bw IGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzZ2xjb250ZXh0 LmNwcAoraW5kZXggNmZhNWE4YTJiMy4uMWY0OWYwYWVmZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c2dsY29udGV4dC5jcHAKKysrKyBi L3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c2dsY29udGV4dC5j cHAKK0BAIC00OCw2ICs0OCw3IEBACisgI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm1uYXRpdmVpbnRl cmZhY2UuaD4KKyAjaW5jbHVkZSA8UXRQbGF0Zm9ybUhlYWRlcnMvcXdnbG5hdGl2ZWNvbnRleHQu aD4KKyAKKysjaW5jbHVkZSA8cHJpdmF0ZS9xc3lzdGVtbGlicmFyeV9wLmg+CisgI2luY2x1ZGUg PGFsZ29yaXRobT4KKyAKKyAjaW5jbHVkZSA8d2luZ2RpLmg+CitAQCAtMTYyLDE5ICsxNjMsMjUg QEAgUUZ1bmN0aW9uUG9pbnRlciBRV2luZG93c09wZW5nbDMyRExMOjpyZXNvbHZlKGNvbnN0IGNo YXIgKm5hbWUpCisgCisgYm9vbCBRV2luZG93c09wZW5nbDMyRExMOjppbml0KGJvb2wgc29mdHdh cmVSZW5kZXJpbmcpCisgeworLSAgICBjb25zdCBRQnl0ZUFycmF5IG9wZW5nbDMyID0gUUJ5dGVB cnJheUxpdGVyYWwoIm9wZW5nbDMyLmRsbCIpOworLSAgICBjb25zdCBRQnl0ZUFycmF5IHN3b3Bl bmdsID0gUUJ5dGVBcnJheUxpdGVyYWwoIm9wZW5nbDMyc3cuZGxsIik7CisrICAgIGNvbnN0IFFC eXRlQXJyYXkgb3BlbmdsMzIgPSBRQnl0ZUFycmF5TGl0ZXJhbCgib3BlbmdsMzIiKTsKKysgICAg Y29uc3QgUUJ5dGVBcnJheSBzd29wZW5nbCA9IFFCeXRlQXJyYXlMaXRlcmFsKCJvcGVuZ2wzMnN3 Iik7CisrICAgIGJvb2wgdXNlU3lzdGVtTGliID0gZmFsc2U7CisgCisgICAgIFFCeXRlQXJyYXkg b3BlbmdsRGxsID0gcWdldGVudigiUVRfT1BFTkdMX0RMTCIpOworLSAgICBpZiAob3BlbmdsRGxs LmlzRW1wdHkoKSkKKysgICAgaWYgKG9wZW5nbERsbC5pc0VtcHR5KCkpIHsKKyAgICAgICAgIG9w ZW5nbERsbCA9IHNvZnR3YXJlUmVuZGVyaW5nID8gc3dvcGVuZ2wgOiBvcGVuZ2wzMjsKKysgICAg ICAgIHVzZVN5c3RlbUxpYiA9ICFzb2Z0d2FyZVJlbmRlcmluZzsKKysgICAgfQorIAorICAgICBv cGVuZ2xEbGwgPSBvcGVuZ2xEbGwudG9Mb3dlcigpOworICAgICBtX25vbk9wZW5nbDMyID0gb3Bl bmdsRGxsICE9IG9wZW5nbDMyOworIAorICAgICBxQ0RlYnVnKGxjUXBhR2wpIDw8ICJRdDogVXNp bmcgV0dMIGFuZCBPcGVuR0wgZnJvbSIgPDwgb3BlbmdsRGxsOworIAorLSAgICBtX2xpYiA9IDo6 TG9hZExpYnJhcnlBKG9wZW5nbERsbC5jb25zdERhdGEoKSk7CisrICAgIGlmICh1c2VTeXN0ZW1M aWIpCisrICAgICAgICBtX2xpYiA9IFFTeXN0ZW1MaWJyYXJ5Ojpsb2FkKCh3Y2hhcl90KikoUVN0 cmluZzo6ZnJvbUxhdGluMShvcGVuZ2xEbGwpLnV0ZjE2KCkpKTsKKysgICAgZWxzZQorKyAgICAg ICAgbV9saWIgPSBMb2FkTGlicmFyeUEob3BlbmdsRGxsLmNvbnN0RGF0YSgpKTsKKyAgICAgaWYg KCFtX2xpYikgeworICAgICAgICAgcUVycm5vV2FybmluZyg6OkdldExhc3RFcnJvcigpLCAiRmFp bGVkIHRvIGxvYWQgJXMiLCBvcGVuZ2xEbGwuY29uc3REYXRhKCkpOworICAgICAgICAgcmV0dXJu IGZhbHNlOworQEAgLTE4NCw3ICsxOTEsNyBAQCBib29sIFFXaW5kb3dzT3BlbmdsMzJETEw6Omlu aXQoYm9vbCBzb2Z0d2FyZVJlbmRlcmluZykKKyAgICAgICAgIC8vIExvYWQgb3BlbmdsMzIuZGxs IGFsd2F5cy4gR0RJIGZ1bmN0aW9ucyBsaWtlIENob29zZVBpeGVsRm9ybWF0IGRvCisgICAgICAg ICAvLyBHZXRNb2R1bGVIYW5kbGUgZm9yIG9wZW5nbDMyLmRsbCBhbmQgYmVoYXZlIGRpZmZlcmVu dGx5IChhbmQgY2FsbCBiYWNrIGludG8KKyAgICAgICAgIC8vIG9wZW5nbDMyKSB3aGVuIHRoZSBt b2R1bGUgaXMgcHJlc2VudC4gVGhpcyBpcyBmaW5lIGZvciBkdW1teSBjb250ZXh0cyBhbmQgd2lu ZG93cy4KKy0gICAgICAgIDo6TG9hZExpYnJhcnlBKCJvcGVuZ2wzMi5kbGwiKTsKKysgICAgICAg IFFTeXN0ZW1MaWJyYXJ5Ojpsb2FkKEwib3BlbmdsMzIiKTsKKyAgICAgfQorIAorICAgICB3Z2xD cmVhdGVDb250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxIR0xSQyAoV0lOQVBJICopKEhEQyk+KHJl c29sdmUoIndnbENyZWF0ZUNvbnRleHQiKSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVn aW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzb3BlbmdsdGVzdGVyLmNwcCBiL3F0YmFzZS9z cmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c29wZW5nbHRlc3Rlci5jcHAKK2lu ZGV4IGQ3ZDE4NmU4MDQuLjllYjQwMTFiZjIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdp bnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NvcGVuZ2x0ZXN0ZXIuY3BwCisrKysgYi9xdGJh c2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NvcGVuZ2x0ZXN0ZXIuY3Bw CitAQCAtNDksNiArNDksNyBAQAorICNpbmNsdWRlIDxRdENvcmUvcXN0YW5kYXJkcGF0aHMuaD4K KyAjaW5jbHVkZSA8UXRDb3JlL3FsaWJyYXJ5aW5mby5oPgorICNpbmNsdWRlIDxRdENvcmUvcWhh c2guaD4KKysjaW5jbHVkZSA8cHJpdmF0ZS9xc3lzdGVtbGlicmFyeV9wLmg+CisgCisgI2lmbmRl ZiBRVF9OT19PUEVOR0wKKyAjaW5jbHVkZSA8cHJpdmF0ZS9xb3BlbmdsX3AuaD4KK0BAIC0zOTYs NyArMzk3LDcgQEAgYm9vbCBRV2luZG93c09wZW5HTFRlc3Rlcjo6dGVzdERlc2t0b3BHTCgpCisg CisgICAgIC8vIFRlc3QgIzE6IExvYWQgb3BlbmdsMzIuZGxsIGFuZCB0cnkgdG8gcmVzb2x2ZSBh biBPcGVuR0wgMiBmdW5jdGlvbi4KKyAgICAgLy8gVGhpcyB3aWxsIHR5cGljYWxseSBmYWlsIG9u IHN5c3RlbXMgdGhhdCBkbyBub3QgaGF2ZSBhIHJlYWwgT3BlbkdMIGRyaXZlci4KKy0gICAgbGli ID0gTG9hZExpYnJhcnlBKCJvcGVuZ2wzMi5kbGwiKTsKKysgICAgbGliID0gUVN5c3RlbUxpYnJh cnk6OmxvYWQoTCJvcGVuZ2wzMiIpOworICAgICBpZiAobGliKSB7CisgICAgICAgICBDcmVhdGVD b250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxDcmVhdGVDb250ZXh0VHlwZT4oCisgICAgICAgICAg ICAgcmVpbnRlcnByZXRfY2FzdDxRRnVuY3Rpb25Qb2ludGVyPig6OkdldFByb2NBZGRyZXNzKGxp YiwgIndnbENyZWF0ZUNvbnRleHQiKSkpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMveGNiL25hdGl2ZXBhaW50aW5nL3F0ZXNzZWxsYXRvci5jcHAgYi9xdGJhc2Uv c3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9uYXRpdmVwYWludGluZy9xdGVzc2VsbGF0b3IuY3Bw CitpbmRleCAxYWZhMDBjZmM5Li4xMThhZjZjZTczIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9w bHVnaW5zL3BsYXRmb3Jtcy94Y2IvbmF0aXZlcGFpbnRpbmcvcXRlc3NlbGxhdG9yLmNwcAorKysr IGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvbmF0aXZlcGFpbnRpbmcvcXRlc3Nl bGxhdG9yLmNwcAorQEAgLTQxLDYgKzQxLDcgQEAKKyAKKyAjaW5jbHVkZSA8UVJlY3Q+CisgI2lu Y2x1ZGUgPFFMaXN0PgorKyNpbmNsdWRlIDxRTWFwPgorICNpbmNsdWRlIDxRRGVidWc+CisgCisg I2luY2x1ZGUgPHFtYXRoLmg+CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3Jtcy94Y2IvcXhjYmNvbm5lY3Rpb24uY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jt cy94Y2IvcXhjYmNvbm5lY3Rpb24uY3BwCitpbmRleCA5ZTJhMzdhNmExLi5lNmUxNzVhMTE4IDEw MDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmNvbm5lY3Rp b24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiY29ubmVj dGlvbi5jcHAKK0BAIC00ODgsMTIgKzQ4OCwxMiBAQCB2b2lkIFFYY2JDb25uZWN0aW9uOjpwcmlu dFhjYkVycm9yKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHhjYl9nZW5lcmljX2Vycm9yX3QgKmVycgor ICAgICB1aW50IGNsYW1wZWRfZXJyb3JfY29kZSA9IHFNaW48dWludD4oZXJyb3ItPmVycm9yX2Nv ZGUsIChzaXplb2YoeGNiX2Vycm9ycykgLyBzaXplb2YoeGNiX2Vycm9yc1swXSkpIC0gMSk7Cisg ICAgIHVpbnQgY2xhbXBlZF9tYWpvcl9jb2RlID0gcU1pbjx1aW50PihlcnJvci0+bWFqb3JfY29k ZSwgKHNpemVvZih4Y2JfcHJvdG9jb2xfcmVxdWVzdF9jb2RlcykgLyBzaXplb2YoeGNiX3Byb3Rv Y29sX3JlcXVlc3RfY29kZXNbMF0pKSAtIDEpOworIAorLSAgICBxQ1dhcm5pbmcobGNRcGFYY2Is ICIlczogJWQgKCVzKSwgc2VxdWVuY2U6ICVkLCByZXNvdXJjZSBpZDogJWQsIG1ham9yIGNvZGU6 ICVkICglcyksIG1pbm9yIGNvZGU6ICVkIiwKKy0gICAgICAgICAgICAgbWVzc2FnZSwKKy0gICAg ICAgICAgICAgaW50KGVycm9yLT5lcnJvcl9jb2RlKSwgeGNiX2Vycm9yc1tjbGFtcGVkX2Vycm9y X2NvZGVdLAorLSAgICAgICAgICAgICBpbnQoZXJyb3ItPnNlcXVlbmNlKSwgaW50KGVycm9yLT5y ZXNvdXJjZV9pZCksCistICAgICAgICAgICAgIGludChlcnJvci0+bWFqb3JfY29kZSksIHhjYl9w cm90b2NvbF9yZXF1ZXN0X2NvZGVzW2NsYW1wZWRfbWFqb3JfY29kZV0sCistICAgICAgICAgICAg IGludChlcnJvci0+bWlub3JfY29kZSkpOworKyAgICBxQ0RlYnVnKGxjUXBhWGNiLCAiJXM6ICVk ICglcyksIHNlcXVlbmNlOiAlZCwgcmVzb3VyY2UgaWQ6ICVkLCBtYWpvciBjb2RlOiAlZCAoJXMp LCBtaW5vciBjb2RlOiAlZCIsCisrICAgICAgICAgICAgbWVzc2FnZSwKKysgICAgICAgICAgICBp bnQoZXJyb3ItPmVycm9yX2NvZGUpLCB4Y2JfZXJyb3JzW2NsYW1wZWRfZXJyb3JfY29kZV0sCisr ICAgICAgICAgICAgaW50KGVycm9yLT5zZXF1ZW5jZSksIGludChlcnJvci0+cmVzb3VyY2VfaWQp LAorKyAgICAgICAgICAgIGludChlcnJvci0+bWFqb3JfY29kZSksIHhjYl9wcm90b2NvbF9yZXF1 ZXN0X2NvZGVzW2NsYW1wZWRfbWFqb3JfY29kZV0sCisrICAgICAgICAgICAgaW50KGVycm9yLT5t aW5vcl9jb2RlKSk7CisgfQorIAorIHN0YXRpYyBRdDo6TW91c2VCdXR0b25zIHRyYW5zbGF0ZU1v dXNlQnV0dG9ucyhpbnQgcykKK0BAIC03MDIsNiArNzAyLDggQEAgdm9pZCBRWGNiQ29ubmVjdGlv bjo6aGFuZGxlWGNiRXZlbnQoeGNiX2dlbmVyaWNfZXZlbnRfdCAqZXZlbnQpCisgICAgICAgICAg ICAgUVhjYlZpcnR1YWxEZXNrdG9wICp2aXJ0dWFsRGVza3RvcCA9IHZpcnR1YWxEZXNrdG9wRm9y Um9vdFdpbmRvdyhwcm9wZXJ0eU5vdGlmeS0+d2luZG93KTsKKyAgICAgICAgICAgICBpZiAodmly dHVhbERlc2t0b3ApCisgICAgICAgICAgICAgICAgIHZpcnR1YWxEZXNrdG9wLT51cGRhdGVXb3Jr QXJlYSgpOworKyAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eU5vdGlmeS0+YXRvbSA9PSBhdG9t KFFYY2JBdG9tOjpfTkVUX1NVUFBPUlRFRCkpIHsKKysgICAgICAgICAgICBtX3dtU3VwcG9ydC0+ dXBkYXRlTmV0V01BdG9tcygpOworICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBIQU5E TEVfUExBVEZPUk1fV0lORE9XX0VWRU5UKHhjYl9wcm9wZXJ0eV9ub3RpZnlfZXZlbnRfdCwgd2lu ZG93LCBoYW5kbGVQcm9wZXJ0eU5vdGlmeUV2ZW50KTsKKyAgICAgICAgIH0KK0BAIC03NTAsNyAr NzUyLDcgQEAgdm9pZCBRWGNiQ29ubmVjdGlvbjo6aGFuZGxlWGNiRXZlbnQoeGNiX2dlbmVyaWNf ZXZlbnRfdCAqZXZlbnQpCisgICAgICAgICAgICAgICAgIGNhc2UgWENCX1hLQl9ORVdfS0VZQk9B UkRfTk9USUZZOiB7CisgICAgICAgICAgICAgICAgICAgICB4Y2JfeGtiX25ld19rZXlib2FyZF9u b3RpZnlfZXZlbnRfdCAqZXYgPSAmeGtiX2V2ZW50LT5uZXdfa2V5Ym9hcmRfbm90aWZ5OworICAg ICAgICAgICAgICAgICAgICAgaWYgKGV2LT5jaGFuZ2VkICYgWENCX1hLQl9OS05fREVUQUlMX0tF WUNPREVTKQorLSAgICAgICAgICAgICAgICAgICAgICAgIG1fa2V5Ym9hcmQtPnVwZGF0ZUtleW1h cChldik7CisrICAgICAgICAgICAgICAgICAgICAgICAgbV9rZXlib2FyZC0+dXBkYXRlS2V5bWFw KCk7CisgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgICBkZWZhdWx0OgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXMveGNiL3F4Y2JpbnRlZ3JhdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxh dGZvcm1zL3hjYi9xeGNiaW50ZWdyYXRpb24uY3BwCitpbmRleCA3Njg2OWNlZDYwLi4wMmQyZWVi YjU2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmlu dGVncmF0aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhj YmludGVncmF0aW9uLmNwcAorQEAgLTI3NCw4ICsyNzQsNyBAQCBRUGxhdGZvcm1XaW5kb3cgKlFY Y2JJbnRlZ3JhdGlvbjo6Y3JlYXRlRm9yZWlnbldpbmRvdyhRV2luZG93ICp3aW5kb3csIFdJZCBu YXRpdgorICNpZm5kZWYgUVRfTk9fT1BFTkdMCisgUVBsYXRmb3JtT3BlbkdMQ29udGV4dCAqUVhj YkludGVncmF0aW9uOjpjcmVhdGVQbGF0Zm9ybU9wZW5HTENvbnRleHQoUU9wZW5HTENvbnRleHQg KmNvbnRleHQpIGNvbnN0CisgeworLSAgICBRWGNiU2NyZWVuICpzY3JlZW4gPSBzdGF0aWNfY2Fz dDxRWGNiU2NyZWVuICo+KGNvbnRleHQtPnNjcmVlbigpLT5oYW5kbGUoKSk7CistICAgIFFYY2JH bEludGVncmF0aW9uICpnbEludGVncmF0aW9uID0gc2NyZWVuLT5jb25uZWN0aW9uKCktPmdsSW50 ZWdyYXRpb24oKTsKKysgICAgUVhjYkdsSW50ZWdyYXRpb24gKmdsSW50ZWdyYXRpb24gPSBkZWZh dWx0Q29ubmVjdGlvbigpLT5nbEludGVncmF0aW9uKCk7CisgICAgIGlmICghZ2xJbnRlZ3JhdGlv bikgeworICAgICAgICAgcVdhcm5pbmcoIlFYY2JJbnRlZ3JhdGlvbjogQ2Fubm90IGNyZWF0ZSBw bGF0Zm9ybSBPcGVuR0wgY29udGV4dCwgbmVpdGhlciBHTFggbm9yIEVHTCBhcmUgZW5hYmxlZCIp OworICAgICAgICAgcmV0dXJuIG51bGxwdHI7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVn aW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5jcHAKK2luZGV4IGVmZWNkN2UyZDEuLmU4Mjg2Mzgx YTIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5 Ym9hcmQuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5 Ym9hcmQuY3BwCitAQCAtMzY1LDE3ICszNjUsNiBAQCB2b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRl S2V5bWFwKHhjYl9tYXBwaW5nX25vdGlmeV9ldmVudF90ICpldmVudCkKKyAgICAgdXBkYXRlS2V5 bWFwKCk7CisgfQorIAorLXZvaWQgUVhjYktleWJvYXJkOjp1cGRhdGVLZXltYXAoeGNiX3hrYl9u ZXdfa2V5Ym9hcmRfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KQorLXsKKy0gICAgaWYgKCFldmVudCkK Ky0gICAgICAgIHJldHVybjsKKy0KKy0gICAgaWYgKGV2ZW50LT5kZXZpY2VJRCAhPSBldmVudC0+ b2xkRGV2aWNlSUQpCistICAgICAgICBtX2NvbmZpZyA9IGZhbHNlOworLQorLSAgICB1cGRhdGVL ZXltYXAoKTsKKy19CistCisgdm9pZCBRWGNiS2V5Ym9hcmQ6OnVwZGF0ZUtleW1hcCgpCisgewor ICAgICBLZXlzeW1Nb2RpZmllck1hcCBrZXlzeW1Nb2RzOworQEAgLTM4Myw2ICszNzIsOCBAQCB2 b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRlS2V5bWFwKCkKKyAgICAgICAgIGtleXN5bU1vZHMgPSBr ZXlzeW1zVG9Nb2RpZmllcnMoKTsKKyAgICAgdXBkYXRlTW9kaWZpZXJzKGtleXN5bU1vZHMpOwor IAorKyAgICBtX2NvbmZpZyA9IHRydWU7CisrCisgICAgIGlmICghbV94a2JDb250ZXh0KSB7Cisg ICAgICAgICBtX3hrYkNvbnRleHQucmVzZXQoeGtiX2NvbnRleHRfbmV3KFhLQl9DT05URVhUX05P X0RFRkFVTFRfSU5DTFVERVMpKTsKKyAgICAgICAgIGlmICghbV94a2JDb250ZXh0KSB7CitAQCAt Mzk4LDEzICszODksOCBAQCB2b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRlS2V5bWFwKCkKKyAgICAg aWYgKGNvbm5lY3Rpb24oKS0+aGFzWEtCKCkpIHsKKyAgICAgICAgIG1feGtiS2V5bWFwLnJlc2V0 KHhrYl94MTFfa2V5bWFwX25ld19mcm9tX2RldmljZShtX3hrYkNvbnRleHQuZ2V0KCksIHhjYl9j b25uZWN0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29yZV9kZXZpY2VfaWQsIFhLQl9LRVlNQVBfQ09NUElMRV9OT19GTEFH UykpOworLSAgICAgICAgaWYgKG1feGtiS2V5bWFwKSB7CistICAgICAgICAgICAgaWYgKG1fY29u ZmlnKQorLSAgICAgICAgICAgICAgICBtX3hrYlN0YXRlLnJlc2V0KHhrYl9zdGF0ZV9uZXcobV94 a2JLZXltYXAuZ2V0KCkpKTsKKy0gICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgIG1f eGtiU3RhdGUucmVzZXQoeGtiX3gxMV9zdGF0ZV9uZXdfZnJvbV9kZXZpY2UobV94a2JLZXltYXAu Z2V0KCksIHhjYl9jb25uZWN0aW9uKCksIGNvcmVfZGV2aWNlX2lkKSk7CistCistICAgICAgICB9 CisrICAgICAgICBpZiAobV94a2JLZXltYXApCisrICAgICAgICAgICAgbV94a2JTdGF0ZS5yZXNl dCh4a2JfeDExX3N0YXRlX25ld19mcm9tX2RldmljZShtX3hrYktleW1hcC5nZXQoKSwgeGNiX2Nv bm5lY3Rpb24oKSwgY29yZV9kZXZpY2VfaWQpKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIG1f eGtiS2V5bWFwLnJlc2V0KGtleW1hcEZyb21Db3JlKGtleXN5bU1vZHMpKTsKKyAgICAgICAgIGlm IChtX3hrYktleW1hcCkKK0BAIC00MjUsOCArNDExLDYgQEAgdm9pZCBRWGNiS2V5Ym9hcmQ6OnVw ZGF0ZUtleW1hcCgpCisgICAgIHVwZGF0ZVhLQk1vZHMoKTsKKyAKKyAgICAgUVhrYkNvbW1vbjo6 dmVyaWZ5SGFzTGF0aW5MYXlvdXQobV94a2JLZXltYXAuZ2V0KCkpOworLQorLSAgICBtX2NvbmZp ZyA9IHRydWU7CisgfQorIAorIFFMaXN0PGludD4gUVhjYktleWJvYXJkOjpwb3NzaWJsZUtleXMo Y29uc3QgUUtleUV2ZW50ICpldmVudCkgY29uc3QKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Bs dWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuaCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5oCitpbmRleCBiNjUyYzg1ZmUzLi4wZWUwOGFlZmYy IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJv YXJkLmgKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2Fy ZC5oCitAQCAtNjksNyArNjksNiBAQCBwdWJsaWM6CisgCisgICAgIFF0OjpLZXlib2FyZE1vZGlm aWVycyB0cmFuc2xhdGVNb2RpZmllcnMoaW50IHMpIGNvbnN0OworICAgICB2b2lkIHVwZGF0ZUtl eW1hcCh4Y2JfbWFwcGluZ19ub3RpZnlfZXZlbnRfdCAqZXZlbnQpOworLSAgICB2b2lkIHVwZGF0 ZUtleW1hcCh4Y2JfeGtiX25ld19rZXlib2FyZF9ub3RpZnlfZXZlbnRfdCAqZXZlbnQpOworICAg ICB2b2lkIHVwZGF0ZUtleW1hcCgpOworICAgICBRTGlzdDxpbnQ+IHBvc3NpYmxlS2V5cyhjb25z dCBRS2V5RXZlbnQgKmV2ZW50KSBjb25zdDsKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Bs dWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9w bGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuY3BwCitpbmRleCBmZmRhN2I2YTU3Li44NjNlOTYxZjRj IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRv dy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cu Y3BwCitAQCAtNTY0LDExICs1NjQsNiBAQCB2b2lkIFFYY2JXaW5kb3c6OnNldEdlb21ldHJ5KGNv bnN0IFFSZWN0ICZyZWN0KQorIHsKKyAgICAgUVBsYXRmb3JtV2luZG93OjpzZXRHZW9tZXRyeShy ZWN0KTsKKyAKKy0gICAgaWYgKHNob3VsZERlZmVyVGFzayhUYXNrOjpTZXRHZW9tZXRyeSkpIHsK Ky0gICAgICAgIG1fZGVmZXJyZWRHZW9tZXRyeSA9IHJlY3Q7CistICAgICAgICByZXR1cm47Cist ICAgIH0KKy0KKyAgICAgcHJvcGFnYXRlU2l6ZUhpbnRzKCk7CisgCisgICAgIFFYY2JTY3JlZW4g KmN1cnJlbnRTY3JlZW4gPSB4Y2JTY3JlZW4oKTsKK0BAIC02OTMsOSArNjg4LDYgQEAgdm9pZCBR WGNiV2luZG93OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKKyAKKyB2b2lkIFFYY2JXaW5kb3c6 OnNob3coKQorIHsKKy0gICAgaWYgKHNob3VsZERlZmVyVGFzayhUYXNrOjpNYXApKQorLSAgICAg ICAgcmV0dXJuOworLQorICAgICBpZiAod2luZG93KCktPmlzVG9wTGV2ZWwoKSkgeworIAorICAg ICAgICAgLy8gdXBkYXRlIFdNX05PUk1BTF9ISU5UUworQEAgLTcwNiw3ICs2OTgsNyBAQCB2b2lk IFFYY2JXaW5kb3c6OnNob3coKQorICAgICAgICAgaWYgKGlzVHJhbnNpZW50KHdpbmRvdygpKSkg eworICAgICAgICAgICAgIGNvbnN0IFFXaW5kb3cgKnRwID0gd2luZG93KCktPnRyYW5zaWVudFBh cmVudCgpOworICAgICAgICAgICAgIGlmICh0cCAmJiB0cC0+aGFuZGxlKCkpCistICAgICAgICAg ICAgICAgIHRyYW5zaWVudFhjYlBhcmVudCA9IHN0YXRpY19jYXN0PGNvbnN0IFFYY2JXaW5kb3cg Kj4odHAtPmhhbmRsZSgpKS0+d2luSWQoKTsKKysgICAgICAgICAgICAgICAgdHJhbnNpZW50WGNi UGFyZW50ID0gdHAtPmhhbmRsZSgpLT53aW5JZCgpOworICAgICAgICAgICAgIC8vIERlZmF1bHQg dG8gY2xpZW50IGxlYWRlciBpZiB0aGVyZSBpcyBubyB0cmFuc2llbnQgcGFyZW50LCBlbHNlIG1v ZGFsIGRpYWxvZ3MgY2FuCisgICAgICAgICAgICAgLy8gYmUgaGlkZGVuIGJ5IHRoZWlyIHBhcmVu dHMuCisgICAgICAgICAgICAgaWYgKCF0cmFuc2llbnRYY2JQYXJlbnQpCitAQCAtNzQ2LDEwICs3 MzgsNiBAQCB2b2lkIFFYY2JXaW5kb3c6OnNob3coKQorIAorIHZvaWQgUVhjYldpbmRvdzo6aGlk ZSgpCisgeworLSAgICBpZiAoc2hvdWxkRGVmZXJUYXNrKFRhc2s6OlVubWFwKSkKKy0gICAgICAg IHJldHVybjsKKy0KKy0gICAgbV93bVN0YXRlVmFsaWQgPSBmYWxzZTsKKyAgICAgeGNiX3VubWFw X3dpbmRvdyh4Y2JfY29ubmVjdGlvbigpLCBtX3dpbmRvdyk7CisgCisgICAgIC8vIHNlbmQgc3lu dGhldGljIFVubWFwTm90aWZ5IGV2ZW50IGFjY29yZGluZyB0byBpY2NjbSA0LjEuNAorQEAgLTkw OSw5ICs4OTcsNiBAQCBRWGNiV2luZG93OjpOZXRXbVN0YXRlcyBRWGNiV2luZG93OjpuZXRXbVN0 YXRlcygpCisgCisgdm9pZCBRWGNiV2luZG93OjpzZXRXaW5kb3dGbGFncyhRdDo6V2luZG93Rmxh Z3MgZmxhZ3MpCisgeworLSAgICBpZiAoc2hvdWxkRGVmZXJUYXNrKFRhc2s6OlNldFdpbmRvd0Zs YWdzKSkKKy0gICAgICAgIHJldHVybjsKKy0KKyAgICAgUXQ6OldpbmRvd1R5cGUgdHlwZSA9IHN0 YXRpY19jYXN0PFF0OjpXaW5kb3dUeXBlPihpbnQoZmxhZ3MgJiBRdDo6V2luZG93VHlwZV9NYXNr KSk7CisgCisgICAgIGlmICh0eXBlID09IFF0OjpUb29sVGlwKQorQEAgLTk0MSw4ICs5MjYsNiBA QCB2b2lkIFFYY2JXaW5kb3c6OnNldFdpbmRvd0ZsYWdzKFF0OjpXaW5kb3dGbGFncyBmbGFncykK KyAKKyAgICAgc2V0VHJhbnNwYXJlbnRGb3JNb3VzZUV2ZW50cyhmbGFncyAmIFF0OjpXaW5kb3dU cmFuc3BhcmVudEZvcklucHV0KTsKKyAgICAgdXBkYXRlRG9lc05vdEFjY2VwdEZvY3VzKGZsYWdz ICYgUXQ6OldpbmRvd0RvZXNOb3RBY2NlcHRGb2N1cyk7CistCistICAgIG1faXNXbU1hbmFnZWRX aW5kb3cgPSAhKGZsYWdzICYgUXQ6OlgxMUJ5cGFzc1dpbmRvd01hbmFnZXJIaW50KTsKKyB9Cisg Cisgdm9pZCBRWGNiV2luZG93OjpzZXRNb3RpZldtSGludHMoUXQ6OldpbmRvd0ZsYWdzIGZsYWdz KQorQEAgLTExNDIsOSArMTEyNSw2IEBAIHZvaWQgUVhjYldpbmRvdzo6c2V0V2luZG93U3RhdGUo UXQ6OldpbmRvd1N0YXRlcyBzdGF0ZSkKKyAgICAgaWYgKHN0YXRlID09IG1fd2luZG93U3RhdGUp CisgICAgICAgICByZXR1cm47CisgCistICAgIGlmIChzaG91bGREZWZlclRhc2soVGFzazo6U2V0 V2luZG93U3RhdGUpKQorLSAgICAgICAgcmV0dXJuOworLQorICAgICAvLyB1bnNldCBvbGQgc3Rh dGUKKyAgICAgaWYgKG1fd2luZG93U3RhdGUgJiBRdDo6V2luZG93TWluaW1pemVkKQorICAgICAg ICAgeGNiX21hcF93aW5kb3coeGNiX2Nvbm5lY3Rpb24oKSwgbV93aW5kb3cpOworQEAgLTEzNTAs NiArMTMzMCwxMiBAQCB2b2lkIFFYY2JXaW5kb3c6OnNldFdpbmRvd0ljb24oY29uc3QgUUljb24g Jmljb24pCisgICAgIH0KKyAKKyAgICAgaWYgKCFpY29uX2RhdGEuaXNFbXB0eSgpKSB7CisrICAg ICAgICAvLyBJZ25vcmUgaWNvbiBleGNlZWRpbmcgbWF4aW11bSB4Y2IgcmVxdWVzdCBsZW5ndGgK KysgICAgICAgIGlmIChpY29uX2RhdGEuc2l6ZSgpID4geGNiX2dldF9tYXhpbXVtX3JlcXVlc3Rf bGVuZ3RoKHhjYl9jb25uZWN0aW9uKCkpKSB7CisrICAgICAgICAgICAgcVdhcm5pbmcoIklnbm9y aW5nIHdpbmRvdyBpY29uOiBTaXplICVsbHUgZXhjZWVkcyBtYXhpbXVtIHhjYiByZXF1ZXN0IGxl bmd0aCAldS4iLAorKyAgICAgICAgICAgICAgICAgICAgIGljb25fZGF0YS5zaXplKCksIHhjYl9n ZXRfbWF4aW11bV9yZXF1ZXN0X2xlbmd0aCh4Y2JfY29ubmVjdGlvbigpKSk7CisrICAgICAgICAg ICAgcmV0dXJuOworKyAgICAgICAgfQorICAgICAgICAgeGNiX2NoYW5nZV9wcm9wZXJ0eSh4Y2Jf Y29ubmVjdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYQ0JfUFJPUF9NT0RF X1JFUExBQ0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fd2luZG93LAorQEAgLTE2 MzksNyArMTYyNSw3IEBAIHZvaWQgUVhjYldpbmRvdzo6c2V0V21XaW5kb3dUeXBlKFFYY2JXaW5k b3dGdW5jdGlvbnM6OldtV2luZG93VHlwZXMgdHlwZXMsIFF0OjpXCisgICAgICAgICBicmVhazsK KyAgICAgfQorIAorLSAgICBpZiAoKGZsYWdzICYgUXQ6OkZyYW1lbGVzc1dpbmRvd0hpbnQpICYm ICEodHlwZSAmIFFYY2JXaW5kb3dGdW5jdGlvbnM6OktkZU92ZXJyaWRlKSkgeworKyAgICBpZiAo KGZsYWdzICYgUXQ6OkZyYW1lbGVzc1dpbmRvd0hpbnQpICYmICEodHlwZXMgJiBRWGNiV2luZG93 RnVuY3Rpb25zOjpLZGVPdmVycmlkZSkpIHsKKyAgICAgICAgIC8vIG92ZXJyaWRlIG5ldHdtIHR5 cGUgLSBxdWljayBhbmQgZWFzeSBmb3IgS0RFIG5vYm9yZGVyCisgICAgICAgICBhdG9tcy5hcHBl bmQoYXRvbShRWGNiQXRvbTo6X0tERV9ORVRfV01fV0lORE9XX1RZUEVfT1ZFUlJJREUpKTsKKyAg ICAgfQorQEAgLTE4OTQsMTAgKzE4ODAsNiBAQCB2b2lkIFFYY2JXaW5kb3c6OmhhbmRsZVVubWFw Tm90aWZ5RXZlbnQoY29uc3QgeGNiX3VubWFwX25vdGlmeV9ldmVudF90ICpldmVudCkKKyAgICAg aWYgKGV2ZW50LT53aW5kb3cgPT0gbV93aW5kb3cpIHsKKyAgICAgICAgIG1fbWFwcGVkID0gZmFs c2U7CisgICAgICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVFeHBvc2VFdmVudCh3 aW5kb3coKSwgUVJlZ2lvbigpKTsKKy0gICAgICAgIGlmICghbV9pc1dtTWFuYWdlZFdpbmRvdyB8 fCBwYXJlbnQoKSkgeworLSAgICAgICAgICAgIG1fd21TdGF0ZVZhbGlkID0gdHJ1ZTsKKy0gICAg ICAgICAgICBoYW5kbGVEZWZlcnJlZFRhc2tzKCk7CistICAgICAgICB9CisgICAgIH0KKyB9Cisg CitAQCAtMjIxMiw5OCArMjE5NCwzMCBAQCB2b2lkIFFYY2JXaW5kb3c6OmhhbmRsZUxlYXZlTm90 aWZ5RXZlbnQoY29uc3QgeGNiX2xlYXZlX25vdGlmeV9ldmVudF90ICpldmVudCkKKyAgICAgaGFu ZGxlTGVhdmVOb3RpZnlFdmVudChldmVudC0+cm9vdF94LCBldmVudC0+cm9vdF95LCBldmVudC0+ bW9kZSwgZXZlbnQtPmRldGFpbCwgZXZlbnQtPnRpbWUpOworIH0KKyAKKy1ib29sIFFYY2JXaW5k b3c6OnNob3VsZERlZmVyVGFzayhUYXNrIHRhc2spCisteworLSAgICBpZiAobV93bVN0YXRlVmFs aWQpCistICAgICAgICByZXR1cm4gZmFsc2U7CistCistICAgIG1fZGVmZXJyZWRUYXNrcy5hcHBl bmQodGFzayk7CistICAgIHJldHVybiB0cnVlOworLX0KKy0KKy12b2lkIFFYY2JXaW5kb3c6Omhh bmRsZURlZmVycmVkVGFza3MoKQorLXsKKy0gICAgUV9BU1NFUlQobV93bVN0YXRlVmFsaWQgPT0g dHJ1ZSk7CistICAgIGlmIChtX2RlZmVycmVkVGFza3MuaXNFbXB0eSgpKQorLSAgICAgICAgcmV0 dXJuOworLQorLSAgICBib29sIG1hcCA9IGZhbHNlOworLSAgICBib29sIHVubWFwID0gZmFsc2U7 CistCistICAgIFFWZWN0b3I8VGFzaz4gdGFza3M7CistICAgIGZvciAoYXV0byB0YXNrSXQgPSBt X2RlZmVycmVkVGFza3MucmJlZ2luKCk7IHRhc2tJdCAhPSBtX2RlZmVycmVkVGFza3MucmVuZCgp OyArK3Rhc2tJdCkgeworLSAgICAgICAgaWYgKCF0YXNrcy5jb250YWlucygqdGFza0l0KSkKKy0g ICAgICAgICAgICB0YXNrcy5wcmVwZW5kKCp0YXNrSXQpOworLSAgICB9CistCistICAgIGZvciAo VGFzayB0YXNrIDogdGFza3MpIHsKKy0gICAgICAgIHN3aXRjaCAodGFzaykgeworLSAgICAgICAg Y2FzZSBUYXNrOjpNYXA6CistICAgICAgICAgICAgbWFwID0gdHJ1ZTsKKy0gICAgICAgICAgICB1 bm1hcCA9IGZhbHNlOworLSAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgY2FzZSBUYXNrOjpV bm1hcDoKKy0gICAgICAgICAgICB1bm1hcCA9IHRydWU7CistICAgICAgICAgICAgbWFwID0gZmFs c2U7CistICAgICAgICAgICAgYnJlYWs7CistICAgICAgICBjYXNlIFRhc2s6OlNldEdlb21ldHJ5 OgorLSAgICAgICAgICAgIHNldEdlb21ldHJ5KG1fZGVmZXJyZWRHZW9tZXRyeSk7CistICAgICAg ICAgICAgYnJlYWs7CistICAgICAgICBjYXNlIFRhc2s6OlNldFdpbmRvd0ZsYWdzOgorLSAgICAg ICAgICAgIHNldFdpbmRvd0ZsYWdzKHdpbmRvdygpLT5mbGFncygpKTsKKy0gICAgICAgICAgICBi cmVhazsKKy0gICAgICAgIGNhc2UgVGFzazo6U2V0V2luZG93U3RhdGU6CistICAgICAgICAgICAg c2V0V2luZG93U3RhdGUod2luZG93KCktPndpbmRvd1N0YXRlKCkpOworLSAgICAgICAgICAgIGJy ZWFrOworLSAgICAgICAgfQorLSAgICB9CistICAgIG1fZGVmZXJyZWRUYXNrcy5jbGVhcigpOwor LQorLSAgICBpZiAobWFwKSB7CistICAgICAgICBRX0FTU0VSVCh1bm1hcCA9PSBmYWxzZSk7Cist ICAgICAgICBzaG93KCk7CistICAgIH0KKy0gICAgaWYgKHVubWFwKSB7CistICAgICAgICBRX0FT U0VSVChtYXAgPT0gZmFsc2UpOworLSAgICAgICAgaGlkZSgpOworLSAgICB9CistfQorLQorIHZv aWQgUVhjYldpbmRvdzo6aGFuZGxlUHJvcGVydHlOb3RpZnlFdmVudChjb25zdCB4Y2JfcHJvcGVy dHlfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KQorIHsKKyAgICAgY29ubmVjdGlvbigpLT5zZXRUaW1l KGV2ZW50LT50aW1lKTsKKyAKKy0gICAgY29uc3QgYm9vbCB3bVN0YXRlQ2hhbmdlZCA9IGV2ZW50 LT5hdG9tID09IGF0b20oUVhjYkF0b206OldNX1NUQVRFKTsKKy0gICAgY29uc3QgYm9vbCBuZXRX bVN0YXRlQ2hhbmdlZCA9IGV2ZW50LT5hdG9tID09IGF0b20oUVhjYkF0b206Ol9ORVRfV01fU1RB VEUpOworLSAgICBpZiAobmV0V21TdGF0ZUNoYW5nZWQgfHwgd21TdGF0ZUNoYW5nZWQpIHsKKy0g ICAgICAgIGlmICh3bVN0YXRlQ2hhbmdlZCAmJiAhbV93bVN0YXRlVmFsaWQgJiYgbV9pc1dtTWFu YWdlZFdpbmRvdykgeworLSAgICAgICAgICAgIC8vIElDQ0NNIDQuMS40CistICAgICAgICAgICAg Ly8gQ2xpZW50cyB0aGF0IHdhbnQgdG8gcmUtdXNlIGEgY2xpZW50IHdpbmRvdyAoZS5nLiBieSBt YXBwaW5nIGl0IGFnYWluKQorLSAgICAgICAgICAgIC8vIGFmdGVyIHdpdGhkcmF3aW5nIGl0IG11 c3Qgd2FpdCBmb3IgdGhlIHdpdGhkcmF3YWwgdG8gYmUgY29tcGxldGUgYmVmb3JlCistICAgICAg ICAgICAgLy8gcHJvY2VlZGluZy4gVGhlIHByZWZlcnJlZCBtZXRob2QgZm9yIGRvaW5nIHRoaXMg aXMgZm9yIGNsaWVudHMgdG8gd2FpdCBmb3IKKy0gICAgICAgICAgICAvLyBhIHdpbmRvdyBtYW5h Z2VyIHRvIHVwZGF0ZSBvciByZW1vdmUgdGhlIFdNX1NUQVRFIHByb3BlcnR5LgorLSAgICAgICAg ICAgIG1fd21TdGF0ZVZhbGlkID0gdHJ1ZTsKKy0gICAgICAgICAgICBoYW5kbGVEZWZlcnJlZFRh c2tzKCk7CistICAgICAgICB9CistICAgICAgICBpZiAoZXZlbnQtPnN0YXRlID09IFhDQl9QUk9Q RVJUWV9ERUxFVEUpCisrICAgIGNvbnN0IGJvb2wgcHJvcGVydHlEZWxldGVkID0gZXZlbnQtPnN0 YXRlID09IFhDQl9QUk9QRVJUWV9ERUxFVEU7CisrCisrICAgIGlmIChldmVudC0+YXRvbSA9PSBh dG9tKFFYY2JBdG9tOjpfTkVUX1dNX1NUQVRFKSB8fCBldmVudC0+YXRvbSA9PSBhdG9tKFFYY2JB dG9tOjpXTV9TVEFURSkpIHsKKysgICAgICAgIGlmIChwcm9wZXJ0eURlbGV0ZWQpCisgICAgICAg ICAgICAgcmV0dXJuOworIAorLSAgICAgICAgaWYgKHdtU3RhdGVDaGFuZ2VkKSB7CisrICAgICAg ICBRdDo6V2luZG93U3RhdGVzIG5ld1N0YXRlID0gUXQ6OldpbmRvd05vU3RhdGU7CisrCisrICAg ICAgICBpZiAoZXZlbnQtPmF0b20gPT0gYXRvbShRWGNiQXRvbTo6V01fU1RBVEUpKSB7IC8vIFdN X1NUQVRFOiBRdWljayBjaGVjayBmb3IgJ01pbmltaXplJy4KKyAgICAgICAgICAgICBhdXRvIHJl cGx5ID0gUV9YQ0JfUkVQTFkoeGNiX2dldF9wcm9wZXJ0eSwgeGNiX2Nvbm5lY3Rpb24oKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgbV93aW5kb3csIGF0b20oUVhj YkF0b206OldNX1NUQVRFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg WENCX0FUT01fQU5ZLCAwLCAxMDI0KTsKKyAgICAgICAgICAgICBpZiAocmVwbHkgJiYgcmVwbHkt PmZvcm1hdCA9PSAzMiAmJiByZXBseS0+dHlwZSA9PSBhdG9tKFFYY2JBdG9tOjpXTV9TVEFURSkp IHsKKy0gICAgICAgICAgICAgICAgYXV0byBkYXRhID0gc3RhdGljX2Nhc3Q8Y29uc3QgcXVpbnQz MiAqPih4Y2JfZ2V0X3Byb3BlcnR5X3ZhbHVlKHJlcGx5LmdldCgpKSk7CistICAgICAgICAgICAg ICAgIGlmIChyZXBseS0+bGVuZ3RoICE9IDApIHsKKy0gICAgICAgICAgICAgICAgICAgIGNvbnN0 IGJvb2wgY2hhbmdlZFRvV2l0aGRyYXduID0gZGF0YVswXSA9PSBYQ0JfSUNDQ01fV01fU1RBVEVf V0lUSERSQVdOOworLSAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCBjaGFuZ2VkVG9JY29u aWMgPSBkYXRhWzBdID09IFhDQl9JQ0NDTV9XTV9TVEFURV9JQ09OSUM7CistICAgICAgICAgICAg ICAgICAgICBtX21pbmltaXplZCA9IGNoYW5nZWRUb0ljb25pYyB8fCAoY2hhbmdlZFRvV2l0aGRy YXduICYmIG1fbWluaW1pemVkKTsKKy0gICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAg ICBjb25zdCBxdWludDMyICpkYXRhID0gKGNvbnN0IHF1aW50MzIgKil4Y2JfZ2V0X3Byb3BlcnR5 X3ZhbHVlKHJlcGx5LmdldCgpKTsKKysgICAgICAgICAgICAgICAgaWYgKHJlcGx5LT5sZW5ndGgg IT0gMCkKKysgICAgICAgICAgICAgICAgICAgIG1fbWluaW1pemVkID0gKGRhdGFbMF0gPT0gWENC X0lDQ0NNX1dNX1NUQVRFX0lDT05JQworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfHwgKGRhdGFbMF0gPT0gWENCX0lDQ0NNX1dNX1NUQVRFX1dJVEhEUkFXTiAmJiBtX21pbmlt aXplZCkpOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAKKy0gICAgICAgIC8vIF9ORVRf V01fU1RBVEUgaGFuZGxpbmcKKy0gICAgICAgIFF0OjpXaW5kb3dTdGF0ZXMgbmV3U3RhdGUgPSBR dDo6V2luZG93Tm9TdGF0ZTsKKyAgICAgICAgIGNvbnN0IE5ldFdtU3RhdGVzIHN0YXRlcyA9IG5l dFdtU3RhdGVzKCk7CisgICAgICAgICAvLyBfTkVUX1dNX1NUQVRFX0hJRERFTiBzaG91bGQgYmUg c2V0IGJ5IHRoZSBXaW5kb3cgTWFuYWdlciB0byBpbmRpY2F0ZSB0aGF0IGEgd2luZG93IHdvdWxk CisgICAgICAgICAvLyBub3QgYmUgdmlzaWJsZSBvbiB0aGUgc2NyZWVuIGlmIGl0cyBkZXNrdG9w L3ZpZXdwb3J0IHdlcmUgYWN0aXZlIGFuZCBpdHMgY29vcmRpbmF0ZXMgd2VyZQorQEAgLTIzMjUs NiArMjIzOSw3IEBAIHZvaWQgUVhjYldpbmRvdzo6aGFuZGxlUHJvcGVydHlOb3RpZnlFdmVudChj b25zdCB4Y2JfcHJvcGVydHlfbm90aWZ5X2V2ZW50X3QgKmV2CisgICAgICAgICAgICAgaWYgKCht X3dpbmRvd1N0YXRlICYgUXQ6OldpbmRvd01pbmltaXplZCkgJiYgY29ubmVjdGlvbigpLT5tb3Vz ZUdyYWJiZXIoKSA9PSB0aGlzKQorICAgICAgICAgICAgICAgICBjb25uZWN0aW9uKCktPnNldE1v dXNlR3JhYmJlcihudWxscHRyKTsKKyAgICAgICAgIH0KKysgICAgICAgIHJldHVybjsKKyAgICAg fSBlbHNlIGlmIChldmVudC0+YXRvbSA9PSBhdG9tKFFYY2JBdG9tOjpfTkVUX0ZSQU1FX0VYVEVO VFMpKSB7CisgICAgICAgICBtX2RpcnR5RnJhbWVNYXJnaW5zID0gdHJ1ZTsKKyAgICAgfQorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuaCBi L3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuaAoraW5kZXggNTVh ZjkyNzliMS4uNmY1YzFmNWVkOSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0 Zm9ybXMveGNiL3F4Y2J3aW5kb3cuaAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jt cy94Y2IvcXhjYndpbmRvdy5oCitAQCAtNzQsMTQgKzc0LDYgQEAgcHVibGljOgorIAorICAgICBR X0RFQ0xBUkVfRkxBR1MoTmV0V21TdGF0ZXMsIE5ldFdtU3RhdGUpCisgCistICAgIGVudW0gVGFz ayB7CistICAgICAgICBNYXAsCistICAgICAgICBVbm1hcCwKKy0gICAgICAgIFNldEdlb21ldHJ5 LAorLSAgICAgICAgU2V0V2luZG93RmxhZ3MsCistICAgICAgICBTZXRXaW5kb3dTdGF0ZQorLSAg ICB9OworLQorICAgICBRWGNiV2luZG93KFFXaW5kb3cgKndpbmRvdyk7CisgICAgIH5RWGNiV2lu ZG93KCk7CisgCitAQCAtMTUxLDkgKzE0Myw2IEBAIHB1YmxpYzoKKyAKKyAgICAgUVhjYldpbmRv dyAqdG9XaW5kb3coKSBvdmVycmlkZTsKKyAKKy0gICAgYm9vbCBzaG91bGREZWZlclRhc2soVGFz ayB0YXNrKTsKKy0gICAgdm9pZCBoYW5kbGVEZWZlcnJlZFRhc2tzKCk7CistCisgICAgIHZvaWQg aGFuZGxlTW91c2VFdmVudCh4Y2JfdGltZXN0YW1wX3QgdGltZSwgY29uc3QgUVBvaW50ICZsb2Nh bCwgY29uc3QgUVBvaW50ICZnbG9iYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBRdDo6 S2V5Ym9hcmRNb2RpZmllcnMgbW9kaWZpZXJzLCBRRXZlbnQ6OlR5cGUgdHlwZSwgUXQ6Ok1vdXNl RXZlbnRTb3VyY2Ugc291cmNlKTsKKyAKK0BAIC0yOTIsMTEgKzI4MSw2IEBAIHByb3RlY3RlZDoK KyAgICAgaW50IG1fc3dhcEludGVydmFsID0gLTE7CisgCisgICAgIHFyZWFsIG1fc2l6ZUhpbnRz U2NhbGVGYWN0b3IgPSAxLjA7CistCistICAgIGJvb2wgbV93bVN0YXRlVmFsaWQgPSB0cnVlOwor LSAgICBRVmVjdG9yPFRhc2s+IG1fZGVmZXJyZWRUYXNrczsKKy0gICAgYm9vbCBtX2lzV21NYW5h Z2VkV2luZG93ID0gdHJ1ZTsKKy0gICAgUVJlY3QgbV9kZWZlcnJlZEdlb21ldHJ5OworIH07Cisg CisgY2xhc3MgUVhjYkZvcmVpZ25XaW5kb3cgOiBwdWJsaWMgUVhjYldpbmRvdworZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy9ndGszL3FndGszbWVudS5jcHAg Yi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMvZ3RrMy9xZ3RrM21lbnUuY3BwCitp bmRleCBkOWQxMTdmYWViLi42NDBiNDlkYWEwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVn aW5zL3BsYXRmb3JtdGhlbWVzL2d0azMvcWd0azNtZW51LmNwcAorKysrIGIvcXRiYXNlL3NyYy9w bHVnaW5zL3BsYXRmb3JtdGhlbWVzL2d0azMvcWd0azNtZW51LmNwcAorQEAgLTg1LDYgKzg1LDcg QEAgUUd0azNNZW51SXRlbTo6UUd0azNNZW51SXRlbSgpCisgICAgICAgbV9jaGVja2FibGUoZmFs c2UpLAorICAgICAgIG1fY2hlY2tlZChmYWxzZSksCisgICAgICAgbV9lbmFibGVkKHRydWUpLAor KyAgICAgIG1fZXhjbHVzaXZlKGZhbHNlKSwKKyAgICAgICBtX3VuZGVybGluZShmYWxzZSksCisg ICAgICAgbV9pbnZhbGlkKHRydWUpLAorICAgICAgIG1fbWVudShudWxscHRyKSwKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9x eGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2cuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nLmNw cAoraW5kZXggMDA0OGJiYzFlNi4uMzk2ZTdmNmQxYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv cGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFs ZmlsZWRpYWxvZy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94 ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxvZy5jcHAKK0BAIC0xMDIs MTUgKzEwMiwxMiBAQCBjb25zdCBRREJ1c0FyZ3VtZW50ICZvcGVyYXRvciA+Pihjb25zdCBRREJ1 c0FyZ3VtZW50ICZhcmcsIFFYZGdEZXNrdG9wUG9ydGFsRmlsZQorIGNsYXNzIFFYZGdEZXNrdG9w UG9ydGFsRmlsZURpYWxvZ1ByaXZhdGUKKyB7CisgcHVibGljOgorLSAgICBRWGRnRGVza3RvcFBv cnRhbEZpbGVEaWFsb2dQcml2YXRlKFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZp bGVEaWFsb2cpCisrICAgIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZ1ByaXZhdGUoUVBsYXRm b3JtRmlsZURpYWxvZ0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZywgdWludCBmaWxlQ2hvb3NlclBv cnRhbFZlcnNpb24pCisgICAgICAgICA6IG5hdGl2ZUZpbGVEaWFsb2cobmF0aXZlRmlsZURpYWxv ZykKKysgICAgICAgICwgZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKGZpbGVDaG9vc2VyUG9ydGFs VmVyc2lvbikKKyAgICAgeyB9CisgCistICAgIFdJZCB3aW5JZCA9IDA7CistICAgIGJvb2wgZGly ZWN0b3J5TW9kZSA9IGZhbHNlOworLSAgICBib29sIG1vZGFsID0gZmFsc2U7CistICAgIGJvb2wg bXVsdGlwbGVGaWxlcyA9IGZhbHNlOworLSAgICBib29sIHNhdmVGaWxlID0gZmFsc2U7CisrICAg IFFFdmVudExvb3AgbG9vcDsKKyAgICAgUVN0cmluZyBhY2NlcHRMYWJlbDsKKyAgICAgUVN0cmlu ZyBkaXJlY3Rvcnk7CisgICAgIFFTdHJpbmcgdGl0bGU7CitAQCAtMTIxLDE5ICsxMTgsMjcgQEAg cHVibGljOgorICAgICBRU3RyaW5nIHNlbGVjdGVkTWltZVR5cGVGaWx0ZXI7CisgICAgIFFTdHJp bmcgc2VsZWN0ZWROYW1lRmlsdGVyOworICAgICBRU3RyaW5nTGlzdCBzZWxlY3RlZEZpbGVzOwor LSAgICBRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpuYXRpdmVGaWxlRGlhbG9nID0gbnVsbHB0 cjsKKysgICAgc3RkOjp1bmlxdWVfcHRyPFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXI+IG5hdGl2 ZUZpbGVEaWFsb2c7CisrICAgIHVpbnQgZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uID0gMDsKKysg ICAgYm9vbCBmYWlsZWRUb09wZW4gPSBmYWxzZTsKKysgICAgYm9vbCBkaXJlY3RvcnlNb2RlID0g ZmFsc2U7CisrICAgIGJvb2wgbXVsdGlwbGVGaWxlcyA9IGZhbHNlOworKyAgICBib29sIHNhdmVG aWxlID0gZmFsc2U7CisgfTsKKyAKKy1RWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OlFYZGdE ZXNrdG9wUG9ydGFsRmlsZURpYWxvZyhRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpuYXRpdmVG aWxlRGlhbG9nKQorK1FYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6UVhkZ0Rlc2t0b3BQb3J0 YWxGaWxlRGlhbG9nKFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2cs IHVpbnQgZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKQorICAgICA6IFFQbGF0Zm9ybUZpbGVEaWFs b2dIZWxwZXIoKQorLSAgICAsIGRfcHRyKG5ldyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2dQ cml2YXRlKG5hdGl2ZUZpbGVEaWFsb2cpKQorKyAgICAsIGRfcHRyKG5ldyBRWGRnRGVza3RvcFBv cnRhbEZpbGVEaWFsb2dQcml2YXRlKG5hdGl2ZUZpbGVEaWFsb2csIGZpbGVDaG9vc2VyUG9ydGFs VmVyc2lvbikpCisgeworICAgICBRX0QoUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKTsKKyAK KyAgICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cpIHsKKy0gICAgICAgIGNvbm5lY3QoZC0+bmF0 aXZlRmlsZURpYWxvZywgU0lHTkFMKGFjY2VwdCgpKSwgdGhpcywgU0lHTkFMKGFjY2VwdCgpKSk7 CistICAgICAgICBjb25uZWN0KGQtPm5hdGl2ZUZpbGVEaWFsb2csIFNJR05BTChyZWplY3QoKSks IHRoaXMsIFNJR05BTChyZWplY3QoKSkpOworKyAgICAgICAgY29ubmVjdChkLT5uYXRpdmVGaWxl RGlhbG9nLmdldCgpLCBTSUdOQUwoYWNjZXB0KCkpLCB0aGlzLCBTSUdOQUwoYWNjZXB0KCkpKTsK KysgICAgICAgIGNvbm5lY3QoZC0+bmF0aXZlRmlsZURpYWxvZy5nZXQoKSwgU0lHTkFMKHJlamVj dCgpKSwgdGhpcywgU0lHTkFMKHJlamVjdCgpKSk7CisgICAgIH0KKysKKysgICAgZC0+bG9vcC5j b25uZWN0KHRoaXMsIFNJR05BTChhY2NlcHQoKSksIFNMT1QocXVpdCgpKSk7CisrICAgIGQtPmxv b3AuY29ubmVjdCh0aGlzLCBTSUdOQUwocmVqZWN0KCkpLCBTTE9UKHF1aXQoKSkpOworIH0KKyAK KyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6On5RWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFs b2coKQorQEAgLTE3Nyw3ICsxODIsNyBAQCB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxv Zzo6aW5pdGlhbGl6ZURpYWxvZygpCisgICAgIHNldERpcmVjdG9yeShvcHRpb25zKCktPmluaXRp YWxEaXJlY3RvcnkoKSk7CisgfQorIAorLXZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9n OjpvcGVuUG9ydGFsKCkKKyt2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6b3BlblBv cnRhbChRdDo6V2luZG93RmxhZ3Mgd2luZG93RmxhZ3MsIFF0OjpXaW5kb3dNb2RhbGl0eSB3aW5k b3dNb2RhbGl0eSwgUVdpbmRvdyAqcGFyZW50KQorIHsKKyAgICAgUV9EKFFYZGdEZXNrdG9wUG9y dGFsRmlsZURpYWxvZyk7CisgCitAQCAtMTg1LDEzICsxOTAsMTMgQEAgdm9pZCBRWGRnRGVza3Rv cFBvcnRhbEZpbGVEaWFsb2c6Om9wZW5Qb3J0YWwoKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCIvb3JnL2Zy ZWVkZXNrdG9wL3BvcnRhbC9kZXNrdG9wIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIm9yZy5mcmVlZGVz a3RvcC5wb3J0YWwuRmlsZUNob29zZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+c2F2ZUZpbGUgPyBRTGF0aW4xU3RyaW5n KCJTYXZlRmlsZSIpIDogUUxhdGluMVN0cmluZygiT3BlbkZpbGUiKSk7CistICAgIFFTdHJpbmcg cGFyZW50V2luZG93SWQgPSBRTGF0aW4xU3RyaW5nKCJ4MTE6IikgKyBRU3RyaW5nOjpudW1iZXIo ZC0+d2luSWQsIDE2KTsKKysgICAgUVN0cmluZyBwYXJlbnRXaW5kb3dJZCA9IFFMYXRpbjFTdHJp bmcoIngxMToiKSArIFFTdHJpbmc6Om51bWJlcihwYXJlbnQgPyBwYXJlbnQtPndpbklkKCkgOiAw LCAxNik7CisgCisgICAgIFFWYXJpYW50TWFwIG9wdGlvbnM7CisgICAgIGlmICghZC0+YWNjZXB0 TGFiZWwuaXNFbXB0eSgpKQorICAgICAgICAgb3B0aW9ucy5pbnNlcnQoUUxhdGluMVN0cmluZygi YWNjZXB0X2xhYmVsIiksIGQtPmFjY2VwdExhYmVsKTsKKyAKKy0gICAgb3B0aW9ucy5pbnNlcnQo UUxhdGluMVN0cmluZygibW9kYWwiKSwgZC0+bW9kYWwpOworKyAgICBvcHRpb25zLmluc2VydChR TGF0aW4xU3RyaW5nKCJtb2RhbCIpLCB3aW5kb3dNb2RhbGl0eSAhPSBRdDo6Tm9uTW9kYWwpOwor ICAgICBvcHRpb25zLmluc2VydChRTGF0aW4xU3RyaW5nKCJtdWx0aXBsZSIpLCBkLT5tdWx0aXBs ZUZpbGVzKTsKKyAgICAgb3B0aW9ucy5pbnNlcnQoUUxhdGluMVN0cmluZygiZGlyZWN0b3J5Iiks IGQtPmRpcmVjdG9yeU1vZGUpOworIAorQEAgLTI5MCwxMCArMjk1LDE4IEBAIHZvaWQgUVhkZ0Rl c2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpvcGVuUG9ydGFsKCkKKyAKKyAgICAgUURCdXNQZW5kaW5n Q2FsbCBwZW5kaW5nQ2FsbCA9IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmFzeW5jQ2Fs bChtZXNzYWdlKTsKKyAgICAgUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIgKndhdGNoZXIgPSBuZXcg UURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIocGVuZGluZ0NhbGwpOworLSAgICBjb25uZWN0KHdhdGNo ZXIsICZRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlcjo6ZmluaXNoZWQsIHRoaXMsIFt0aGlzXSAoUURC dXNQZW5kaW5nQ2FsbFdhdGNoZXIgKndhdGNoZXIpIHsKKysgICAgY29ubmVjdCh3YXRjaGVyLCAm UURCdXNQZW5kaW5nQ2FsbFdhdGNoZXI6OmZpbmlzaGVkLCB0aGlzLCBbPV0gKFFEQnVzUGVuZGlu Z0NhbGxXYXRjaGVyICp3YXRjaGVyKSB7CisgICAgICAgICBRREJ1c1BlbmRpbmdSZXBseTxRREJ1 c09iamVjdFBhdGg+IHJlcGx5ID0gKndhdGNoZXI7CistICAgICAgICBpZiAocmVwbHkuaXNFcnJv cigpKSB7CistICAgICAgICAgICAgUV9FTUlUIHJlamVjdCgpOworKyAgICAgICAgLy8gQW55IGVy cm9yIG1lYW5zIHRoZSBkaWFsb2cgaXMgbm90IHNob3duIGFuZCB3ZSBuZWVkIHRvIGZhbGxiYWNr CisrICAgICAgICBkLT5mYWlsZWRUb09wZW4gPSByZXBseS5pc0Vycm9yKCk7CisrICAgICAgICBp ZiAoZC0+ZmFpbGVkVG9PcGVuKSB7CisrICAgICAgICAgICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFs b2cpIHsKKysgICAgICAgICAgICAgICAgZC0+bmF0aXZlRmlsZURpYWxvZy0+c2hvdyh3aW5kb3dG bGFncywgd2luZG93TW9kYWxpdHksIHBhcmVudCk7CisrICAgICAgICAgICAgICAgIGlmIChkLT5s b29wLmlzUnVubmluZygpKQorKyAgICAgICAgICAgICAgICAgICAgZC0+bmF0aXZlRmlsZURpYWxv Zy0+ZXhlYygpOworKyAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgIFFfRU1J VCByZWplY3QoKTsKKysgICAgICAgICAgICB9CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgIFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpLmNvbm5lY3QobnVsbHB0ciwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5LnZhbHVl KCkucGF0aCgpLAorQEAgLTMwMiw2ICszMTUsNyBAQCB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmls ZURpYWxvZzo6b3BlblBvcnRhbCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU0xPVChnb3RSZXNwb25zZSh1aW50LFFWYXJpYW50TWFwKSkpOwor ICAgICAgICAgfQorKyAgICAgICAgd2F0Y2hlci0+ZGVsZXRlTGF0ZXIoKTsKKyAgICAgfSk7Cisg fQorIAorQEAgLTMyNiw3ICszNDAsNyBAQCBRVXJsIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxv Zzo6ZGlyZWN0b3J5KCkgY29uc3QKKyB7CisgICAgIFFfRChjb25zdCBRWGRnRGVza3RvcFBvcnRh bEZpbGVEaWFsb2cpOworIAorLSAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiAob3B0aW9u cygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5IHx8IG9wdGlv bnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeU9ubHkpKQor KyAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiB1c2VOYXRpdmVGaWxlRGlhbG9nKCkpCisg ICAgICAgICByZXR1cm4gZC0+bmF0aXZlRmlsZURpYWxvZy0+ZGlyZWN0b3J5KCk7CisgCisgICAg IHJldHVybiBkLT5kaXJlY3Rvcnk7CitAQCAtMzQ4LDcgKzM2Miw3IEBAIFFMaXN0PFFVcmw+IFFY ZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6c2VsZWN0ZWRGaWxlcygpIGNvbnN0CisgeworICAg ICBRX0QoY29uc3QgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKTsKKyAKKy0gICAgaWYgKGQt Pm5hdGl2ZUZpbGVEaWFsb2cgJiYgKG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxv Z09wdGlvbnM6OkRpcmVjdG9yeSB8fCBvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFs b2dPcHRpb25zOjpEaXJlY3RvcnlPbmx5KSkKKysgICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cg JiYgdXNlTmF0aXZlRmlsZURpYWxvZygpKQorICAgICAgICAgcmV0dXJuIGQtPm5hdGl2ZUZpbGVE aWFsb2ctPnNlbGVjdGVkRmlsZXMoKTsKKyAKKyAgICAgUUxpc3Q8UVVybD4gZmlsZXM7CitAQCAt NDAzLDE2ICs0MTcsMTMgQEAgdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OmV4ZWMo KQorIHsKKyAgICAgUV9EKFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyk7CisgCistICAgIGlm IChkLT5uYXRpdmVGaWxlRGlhbG9nICYmIChvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVE aWFsb2dPcHRpb25zOjpEaXJlY3RvcnkgfHwgb3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxl RGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5T25seSkpIHsKKysgICAgaWYgKGQtPm5hdGl2ZUZpbGVE aWFsb2cgJiYgdXNlTmF0aXZlRmlsZURpYWxvZygpKSB7CisgICAgICAgICBkLT5uYXRpdmVGaWxl RGlhbG9nLT5leGVjKCk7CisgICAgICAgICByZXR1cm47CisgICAgIH0KKyAKKyAgICAgLy8gSEFD SyB3ZSBoYXZlIHRvIGF2b2lkIHJldHVybmluZyB1bnRpbCB3ZSBlbWl0IHRoYXQgdGhlIGRpYWxv ZyB3YXMgYWNjZXB0ZWQgb3IgcmVqZWN0ZWQKKy0gICAgUUV2ZW50TG9vcCBsb29wOworLSAgICBs b29wLmNvbm5lY3QodGhpcywgU0lHTkFMKGFjY2VwdCgpKSwgU0xPVChxdWl0KCkpKTsKKy0gICAg bG9vcC5jb25uZWN0KHRoaXMsIFNJR05BTChyZWplY3QoKSksIFNMT1QocXVpdCgpKSk7CistICAg IGxvb3AuZXhlYygpOworKyAgICBkLT5sb29wLmV4ZWMoKTsKKyB9CisgCisgdm9pZCBRWGRnRGVz a3RvcFBvcnRhbEZpbGVEaWFsb2c6OmhpZGUoKQorQEAgLTQyOSwxMyArNDQwLDEwIEBAIGJvb2wg UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpzaG93KFF0OjpXaW5kb3dGbGFncyB3aW5kb3dG bGFncywgUXQ6OldpbmRvd01vCisgCisgICAgIGluaXRpYWxpemVEaWFsb2coKTsKKyAKKy0gICAg ZC0+bW9kYWwgPSB3aW5kb3dNb2RhbGl0eSAhPSBRdDo6Tm9uTW9kYWw7CistICAgIGQtPndpbklk ID0gcGFyZW50ID8gcGFyZW50LT53aW5JZCgpIDogMDsKKy0KKy0gICAgaWYgKGQtPm5hdGl2ZUZp bGVEaWFsb2cgJiYgKG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6 OkRpcmVjdG9yeSB8fCBvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25z OjpEaXJlY3RvcnlPbmx5KSkKKysgICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYgdXNlTmF0 aXZlRmlsZURpYWxvZyhPcGVuRmFsbGJhY2spKQorICAgICAgICAgcmV0dXJuIGQtPm5hdGl2ZUZp bGVEaWFsb2ctPnNob3cod2luZG93RmxhZ3MsIHdpbmRvd01vZGFsaXR5LCBwYXJlbnQpOworIAor LSAgICBvcGVuUG9ydGFsKCk7CisrICAgIG9wZW5Qb3J0YWwod2luZG93RmxhZ3MsIHdpbmRvd01v ZGFsaXR5LCBwYXJlbnQpOworIAorICAgICByZXR1cm4gdHJ1ZTsKKyB9CitAQCAtNDY1LDQgKzQ3 MywyMSBAQCB2b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6Z290UmVzcG9uc2UodWlu dCByZXNwb25zZSwgY29uc3QgUVZhcmlhbnRNYXAgJgorICAgICB9CisgfQorIAorK2Jvb2wgUVhk Z0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjp1c2VOYXRpdmVGaWxlRGlhbG9nKFFYZGdEZXNrdG9w UG9ydGFsRmlsZURpYWxvZzo6RmFsbGJhY2tUeXBlIGZhbGxiYWNrVHlwZSkgY29uc3QKKyt7Cisr ICAgIFFfRChjb25zdCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cpOworKworKyAgICBpZiAo ZC0+ZmFpbGVkVG9PcGVuICYmIGZhbGxiYWNrVHlwZSAhPSBPcGVuRmFsbGJhY2spCisrICAgICAg ICByZXR1cm4gdHJ1ZTsKKysKKysgICAgaWYgKGQtPmZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbiA8 IDMpIHsKKysgICAgICAgIGlmIChvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dP cHRpb25zOjpEaXJlY3RvcnkpCisrICAgICAgICAgICAgcmV0dXJuIHRydWU7CisrICAgICAgICBl bHNlIGlmIChvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJl Y3RvcnlPbmx5KQorKyAgICAgICAgICAgIHJldHVybiB0cnVlOworKyAgICB9CisrCisrICAgIHJl dHVybiBmYWxzZTsKKyt9CisrCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9w cG9ydGFsZmlsZWRpYWxvZ19wLmggYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMv eGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2dfcC5oCitpbmRleCA0 ZjRkZTk2ZWNmLi42NWUyMmE1Y2YyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3Bs YXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9n X3AuaAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bw b3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nX3AuaAorQEAgLTUxLDYgKzUxLDExIEBA IGNsYXNzIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyA6IHB1YmxpYyBRUGxhdGZvcm1GaWxl RGlhbG9nSGVscGVyCisgICAgIFFfT0JKRUNUCisgICAgIFFfREVDTEFSRV9QUklWQVRFKFFYZGdE ZXNrdG9wUG9ydGFsRmlsZURpYWxvZykKKyBwdWJsaWM6CisrICAgIGVudW0gRmFsbGJhY2tUeXBl IHsKKysgICAgICAgIEdlbmVyaWNGYWxsYmFjaywKKysgICAgICAgIE9wZW5GYWxsYmFjaworKyAg ICB9OworKworICAgICBlbnVtIENvbmRpdGlvblR5cGUgOiB1aW50IHsKKyAgICAgICAgIEdsb2Jh bFBhdHRlcm4gPSAwLAorICAgICAgICAgTWltZVR5cGUgPSAxCitAQCAtNjksNyArNzQsNyBAQCBw dWJsaWM6CisgICAgIH07CisgICAgIHR5cGVkZWYgUVZlY3RvcjxGaWx0ZXI+IEZpbHRlckxpc3Q7 CisgCistICAgIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyhRUGxhdGZvcm1GaWxlRGlhbG9n SGVscGVyICpuYXRpdmVGaWxlRGlhbG9nID0gbnVsbHB0cik7CisrICAgIFFYZGdEZXNrdG9wUG9y dGFsRmlsZURpYWxvZyhRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpuYXRpdmVGaWxlRGlhbG9n ID0gbnVsbHB0ciwgdWludCBmaWxlQ2hvb3NlclBvcnRhbFZlcnNpb24gPSAwKTsKKyAgICAgflFY ZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZygpOworIAorICAgICBib29sIGRlZmF1bHROYW1lRmls dGVyRGlzYWJsZXMoKSBjb25zdCBvdmVycmlkZTsKK0BAIC05Miw3ICs5Nyw4IEBAIHByaXZhdGUg UV9TTE9UUzoKKyAKKyBwcml2YXRlOgorICAgICB2b2lkIGluaXRpYWxpemVEaWFsb2coKTsKKy0g ICAgdm9pZCBvcGVuUG9ydGFsKCk7CisrICAgIHZvaWQgb3BlblBvcnRhbChRdDo6V2luZG93Rmxh Z3Mgd2luZG93RmxhZ3MsIFF0OjpXaW5kb3dNb2RhbGl0eSB3aW5kb3dNb2RhbGl0eSwgUVdpbmRv dyAqcGFyZW50KTsKKysgICAgYm9vbCB1c2VOYXRpdmVGaWxlRGlhbG9nKEZhbGxiYWNrVHlwZSBm YWxsYmFja1R5cGUgPSBHZW5lcmljRmFsbGJhY2spIGNvbnN0OworIAorICAgICBRU2NvcGVkUG9p bnRlcjxRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2dQcml2YXRlPiBkX3B0cjsKKyB9OworZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9y dGFsL3F4ZGdkZXNrdG9wcG9ydGFsdGhlbWUuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWx0aGVtZS5jcHAKK2lu ZGV4IGZiMzI0YWZiZDguLmI4MDk1MDMxMjIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdp bnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbHRoZW1l LmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bw b3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWx0aGVtZS5jcHAKK0BAIC0xMTEsNiArMTExLDcgQEAgUVhk Z0Rlc2t0b3BQb3J0YWxUaGVtZTo6UVhkZ0Rlc2t0b3BQb3J0YWxUaGVtZSgpCisgICAgICAgICBp ZiAocmVwbHkuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICAgZC0+ZmlsZUNob29zZXJQb3J0YWxW ZXJzaW9uID0gcmVwbHkudmFsdWUoKS50b1VJbnQoKTsKKyAgICAgICAgIH0KKysgICAgICAgIHdh dGNoZXItPmRlbGV0ZUxhdGVyKCk7CisgICAgIH0pOworIH0KKyAKK0BAIC0xNTIsMTEgKzE1Mywx MiBAQCBRUGxhdGZvcm1EaWFsb2dIZWxwZXIqIFFYZGdEZXNrdG9wUG9ydGFsVGhlbWU6OmNyZWF0 ZVBsYXRmb3JtRGlhbG9nSGVscGVyKERpYWxvZworIHsKKyAgICAgUV9EKGNvbnN0IFFYZGdEZXNr dG9wUG9ydGFsVGhlbWUpOworIAorLSAgICBpZiAodHlwZSA9PSBGaWxlRGlhbG9nKSB7CisrICAg IGlmICh0eXBlID09IEZpbGVEaWFsb2cgJiYgZC0+ZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKSB7 CisgICAgICAgICAvLyBPbGRlciB2ZXJzaW9ucyBvZiBGaWxlQ2hvb3NlciBwb3J0YWwgZG9uJ3Qg c3VwcG9ydCBvcGVuaW5nIGRpcmVjdG9yaWVzLCB0aGVyZWZvcmUgd2UgZmFsbGJhY2sKKyAgICAg ICAgIC8vIHRvIG5hdGl2ZSBmaWxlIGRpYWxvZyBvcGVuZWQgaW5zaWRlIHRoZSBzYW5kYm94IHRv IG9wZW4gYSBkaXJlY3RvcnkuCistICAgICAgICBpZiAoZC0+ZmlsZUNob29zZXJQb3J0YWxWZXJz aW9uIDwgMyAmJiBkLT5iYXNlVGhlbWUtPnVzZVBsYXRmb3JtTmF0aXZlRGlhbG9nKHR5cGUpKQor LSAgICAgICAgICAgIHJldHVybiBuZXcgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKHN0YXRp Y19jYXN0PFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIqPihkLT5iYXNlVGhlbWUtPmNyZWF0ZVBs YXRmb3JtRGlhbG9nSGVscGVyKHR5cGUpKSk7CisrICAgICAgICBpZiAoZC0+YmFzZVRoZW1lLT51 c2VQbGF0Zm9ybU5hdGl2ZURpYWxvZyh0eXBlKSkKKysgICAgICAgICAgICByZXR1cm4gbmV3IFFY ZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyhzdGF0aWNfY2FzdDxRUGxhdGZvcm1GaWxlRGlhbG9n SGVscGVyKj4oZC0+YmFzZVRoZW1lLT5jcmVhdGVQbGF0Zm9ybURpYWxvZ0hlbHBlcih0eXBlKSks CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+ ZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uKTsKKyAKKyAgICAgICAgIHJldHVybiBuZXcgUVhkZ0Rl c2t0b3BQb3J0YWxGaWxlRGlhbG9nOworICAgICB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9w bHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmUuY3BwIGIvcXRiYXNlL3Ny Yy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmUuY3BwCitpbmRleCA0 M2Q1ZTExOWFkLi4xZjljYmM0NTY1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3By aW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3Bs dWdpbnMvcHJpbnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZS5jcHAKK0BAIC04OSw4ICs4 OSwxMCBAQCB2b2lkIFFDdXBzUHJpbnRFbmdpbmU6OnNldFByb3BlcnR5KFByaW50RW5naW5lUHJv cGVydHlLZXkga2V5LCBjb25zdCBRVmFyaWFudCAmdgorICAgICAgICAgYnJlYWs7CisgICAgIGNh c2UgUFBLX0R1cGxleDogeworICAgICAgICAgUVByaW50OjpEdXBsZXhNb2RlIG1vZGUgPSBRUHJp bnQ6OkR1cGxleE1vZGUodmFsdWUudG9JbnQoKSk7CistICAgICAgICBpZiAobW9kZSAhPSBkLT5k dXBsZXggJiYgZC0+bV9wcmludERldmljZS5zdXBwb3J0ZWREdXBsZXhNb2RlcygpLmNvbnRhaW5z KG1vZGUpKQorKyAgICAgICAgaWYgKGQtPm1fcHJpbnREZXZpY2Uuc3VwcG9ydGVkRHVwbGV4TW9k ZXMoKS5jb250YWlucyhtb2RlKSkgeworICAgICAgICAgICAgIGQtPmR1cGxleCA9IG1vZGU7Cisr ICAgICAgICAgICAgZC0+ZHVwbGV4UmVxdWVzdGVkRXhwbGljaXRseSA9IHRydWU7CisrICAgICAg ICB9CisgICAgICAgICBicmVhazsKKyAgICAgfQorICAgICBjYXNlIFBQS19QcmludGVyTmFtZToK K0BAIC0yNzcsOSArMjc5LDEyIEBAIHZvaWQgUUN1cHNQcmludEVuZ2luZVByaXZhdGU6OmNoYW5n ZVByaW50ZXIoY29uc3QgUVN0cmluZyAmbmV3UHJpbnRlcikKKyAgICAgbV9wcmludERldmljZS5z d2FwKHByaW50RGV2aWNlKTsKKyAgICAgcHJpbnRlck5hbWUgPSBtX3ByaW50RGV2aWNlLmlkKCk7 CisgCistICAgIC8vIENoZWNrIGlmIG5ldyBwcmludGVyIHN1cHBvcnRzIGN1cnJlbnQgc2V0dGlu Z3MsIG90aGVyd2lzZSB1cyBkZWZhdWx0cworLSAgICBpZiAoZHVwbGV4ICE9IFFQcmludDo6RHVw bGV4QXV0byAmJiAhbV9wcmludERldmljZS5zdXBwb3J0ZWREdXBsZXhNb2RlcygpLmNvbnRhaW5z KGR1cGxleCkpCisrICAgIC8vIGluIGNhc2UgYSBkdXBsZXggdmFsdWUgd2FzIGV4cGxpY2l0bHkg c2V0LCBjaGVjayBpZiBuZXcgcHJpbnRlciBzdXBwb3J0cyBjdXJyZW50IHZhbHVlLAorKyAgICAv LyBvdGhlcndpc2UgdXNlIGRldmljZSBkZWZhdWx0CisrICAgIGlmICghZHVwbGV4UmVxdWVzdGVk RXhwbGljaXRseSB8fCAhbV9wcmludERldmljZS5zdXBwb3J0ZWREdXBsZXhNb2RlcygpLmNvbnRh aW5zKGR1cGxleCkpIHsKKyAgICAgICAgIGR1cGxleCA9IG1fcHJpbnREZXZpY2UuZGVmYXVsdER1 cGxleE1vZGUoKTsKKysgICAgICAgIGR1cGxleFJlcXVlc3RlZEV4cGxpY2l0bHkgPSBmYWxzZTsK KysgICAgfQorICAgICBRUHJpbnQ6OkNvbG9yTW9kZSBjb2xvck1vZGUgPSBncmF5c2NhbGUgPyBR UHJpbnQ6OkdyYXlTY2FsZSA6IFFQcmludDo6Q29sb3I7CisgICAgIGlmICghbV9wcmludERldmlj ZS5zdXBwb3J0ZWRDb2xvck1vZGVzKCkuY29udGFpbnMoY29sb3JNb2RlKSkKKyAgICAgICAgIGdy YXlzY2FsZSA9IG1fcHJpbnREZXZpY2UuZGVmYXVsdENvbG9yTW9kZSgpID09IFFQcmludDo6R3Jh eVNjYWxlOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vw cy9xY3Vwc3ByaW50ZW5naW5lX3AuaCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQv Y3Vwcy9xY3Vwc3ByaW50ZW5naW5lX3AuaAoraW5kZXggYzAyMWIwYzY0My4uOGY4MWZlNDc4ZCAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3By aW50ZW5naW5lX3AuaAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBz L3FjdXBzcHJpbnRlbmdpbmVfcC5oCitAQCAtMTAwLDYgKzEwMCw3IEBAIHByaXZhdGU6CisgICAg IFFTdHJpbmdMaXN0IGN1cHNPcHRpb25zOworICAgICBRU3RyaW5nIGN1cHNUZW1wRmlsZTsKKyAg ICAgUVByaW50OjpEdXBsZXhNb2RlIGR1cGxleDsKKysgICAgYm9vbCBkdXBsZXhSZXF1ZXN0ZWRF eHBsaWNpdGx5ID0gZmFsc2U7CisgfTsKKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvaWJhc2UvcXNxbF9pYmFzZS5jcHAgYi9x dGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9pYmFzZS9xc3FsX2liYXNlLmNwcAoraW5kZXgg NjdlNzE1NGZhNi4uNDA4NzYxNTJlNSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9z cWxkcml2ZXJzL2liYXNlL3FzcWxfaWJhc2UuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMv c3FsZHJpdmVycy9pYmFzZS9xc3FsX2liYXNlLmNwcAorQEAgLTgxNyw3ICs4MTcsNyBAQCBib29s IFFJQmFzZVJlc3VsdFByaXZhdGU6OndyaXRlQXJyYXkoaW50IGNvbHVtbiwgY29uc3QgUUxpc3Q8 UVZhcmlhbnQ+ICZsaXN0KQorICAgICBiYS5yZXNpemUoaW50KGJ1ZkxlbikpOworIAorICAgICBp ZiAobGlzdC5zaXplKCkgPiBhcnJheVNpemUpIHsKKy0gICAgICAgIGVycm9yID0gUUxhdGluMVN0 cmluZygiQXJyYXkgc2l6ZSBtaXNzbWF0Y2g6IHNpemUgb2YgJTEgaXMgJTIsIHNpemUgb2YgcHJv dmlkZWQgbGlzdCBpcyAlMyIpOworKyAgICAgICAgZXJyb3IgPSBRTGF0aW4xU3RyaW5nKCJBcnJh eSBzaXplIG1pc21hdGNoOiBzaXplIG9mICUxIGlzICUyLCBzaXplIG9mIHByb3ZpZGVkIGxpc3Qg aXMgJTMiKTsKKyAgICAgICAgIGVycm9yID0gZXJyb3IuYXJnKFFMYXRpbjFTdHJpbmcoc3FsbmFt ZSkpLmFyZyhhcnJheVNpemUpLmFyZyhsaXN0LnNpemUoKSk7CisgICAgICAgICBxLT5zZXRMYXN0 RXJyb3IoUVNxbEVycm9yKGVycm9yLCBRTGF0aW4xU3RyaW5nKCIiKSwgUVNxbEVycm9yOjpTdGF0 ZW1lbnRFcnJvcikpOworICAgICAgICAgcmV0dXJuIGZhbHNlOworZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL215c3FsL3FzcWxfbXlzcWwuY3BwIGIvcXRiYXNlL3Ny Yy9wbHVnaW5zL3NxbGRyaXZlcnMvbXlzcWwvcXNxbF9teXNxbC5jcHAKK2luZGV4IDdjYTA1NWVl YTIuLjZiYzlkNDY3NTUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVy cy9teXNxbC9xc3FsX215c3FsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZl cnMvbXlzcWwvcXNxbF9teXNxbC5jcHAKK0BAIC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgorICAg ICBzdHJ1Y3QgUU15RmllbGQKKyAgICAgeworICAgICAgICAgY2hhciAqb3V0RmllbGQgPSBudWxs cHRyOworLSAgICAgICAgTVlTUUxfRklFTEQgKm15RmllbGQgPSBudWxscHRyOworKyAgICAgICAg Y29uc3QgTVlTUUxfRklFTEQgKm15RmllbGQgPSBudWxscHRyOworICAgICAgICAgUU1ldGFUeXBl OjpUeXBlIHR5cGUgPSBRTWV0YVR5cGU6OlVua25vd25UeXBlOworICAgICAgICAgbXlfYm9vbCBu dWxsSW5kaWNhdG9yID0gZmFsc2U7CisgICAgICAgICB1bG9uZyBidWZMZW5ndGggPSAwdWw7CitA QCAtMzYxLDcgKzM2MSw3IEBAIHN0YXRpYyBib29sIHFJc0ludGVnZXIoaW50IHQpCisgdm9pZCBR TVlTUUxSZXN1bHRQcml2YXRlOjpiaW5kQmxvYnMoKQorIHsKKyAgICAgaW50IGk7CistICAgIE1Z U1FMX0ZJRUxEICpmaWVsZEluZm87CisrICAgIGNvbnN0IE1ZU1FMX0ZJRUxEICpmaWVsZEluZm87 CisgICAgIE1ZU1FMX0JJTkQgKmJpbmQ7CisgCisgICAgIGZvcihpID0gMDsgaSA8IGZpZWxkcy5j b3VudCgpOyArK2kpIHsKK0BAIC0zNzksNyArMzc5LDYgQEAgdm9pZCBRTVlTUUxSZXN1bHRQcml2 YXRlOjpiaW5kQmxvYnMoKQorIGJvb2wgUU1ZU1FMUmVzdWx0UHJpdmF0ZTo6YmluZEluVmFsdWVz KCkKKyB7CisgICAgIE1ZU1FMX0JJTkQgKmJpbmQ7CistICAgIGNoYXIgKmZpZWxkOworICAgICBp bnQgaSA9IDA7CisgCisgICAgIGlmICghbWV0YSkKK0BAIC0zOTIsMzUgKzM5MSwzNCBAQCBib29s IFFNWVNRTFJlc3VsdFByaXZhdGU6OmJpbmRJblZhbHVlcygpCisgICAgIGluQmluZHMgPSBuZXcg TVlTUUxfQklORFtmaWVsZHMuc2l6ZSgpXTsKKyAgICAgbWVtc2V0KGluQmluZHMsIDAsIGZpZWxk cy5zaXplKCkgKiBzaXplb2YoTVlTUUxfQklORCkpOworIAorLSAgICBNWVNRTF9GSUVMRCAqZmll bGRJbmZvOworKyAgICBjb25zdCBNWVNRTF9GSUVMRCAqZmllbGRJbmZvOworIAorICAgICB3aGls ZSgoZmllbGRJbmZvID0gbXlzcWxfZmV0Y2hfZmllbGQobWV0YSkpKSB7CisrICAgICAgICBiaW5k ID0gJmluQmluZHNbaV07CisrCisgICAgICAgICBRTXlGaWVsZCAmZiA9IGZpZWxkc1tpXTsKKyAg ICAgICAgIGYubXlGaWVsZCA9IGZpZWxkSW5mbzsKKy0KKysgICAgICAgIGJpbmQtPmJ1ZmZlcl9s ZW5ndGggPSBmLmJ1Zkxlbmd0aCA9IGZpZWxkSW5mby0+bGVuZ3RoICsgMTsKKysgICAgICAgIGJp bmQtPmJ1ZmZlcl90eXBlID0gZmllbGRJbmZvLT50eXBlOworICAgICAgICAgZi50eXBlID0gcURl Y29kZU1ZU1FMVHlwZShmaWVsZEluZm8tPnR5cGUsIGZpZWxkSW5mby0+ZmxhZ3MpOworICAgICAg ICAgaWYgKHFJc0Jsb2IoZmllbGRJbmZvLT50eXBlKSkgeworICAgICAgICAgICAgIC8vIHRoZSBz aXplIG9mIGEgYmxvYi1maWVsZCBpcyBhdmFpbGFibGUgYXMgc29vbiBhcyB3ZSBjYWxsCisgICAg ICAgICAgICAgLy8gbXlzcWxfc3RtdF9zdG9yZV9yZXN1bHQoKQorICAgICAgICAgICAgIC8vIGFm dGVyIG15c3FsX3N0bXRfZXhlYygpIGluIFFNWVNRTFJlc3VsdDo6ZXhlYygpCistICAgICAgICAg ICAgZmllbGRJbmZvLT5sZW5ndGggPSAwOworKyAgICAgICAgICAgIGJpbmQtPmJ1ZmZlcl9sZW5n dGggPSBmLmJ1Zkxlbmd0aCA9IDA7CisgICAgICAgICAgICAgaGFzQmxvYnMgPSB0cnVlOworICAg ICAgICAgfSBlbHNlIGlmIChxSXNJbnRlZ2VyKGYudHlwZSkpIHsKKy0gICAgICAgICAgICBmaWVs ZEluZm8tPmxlbmd0aCA9IDg7CisrICAgICAgICAgICAgYmluZC0+YnVmZmVyX2xlbmd0aCA9IGYu YnVmTGVuZ3RoID0gODsKKyAgICAgICAgIH0gZWxzZSB7CistICAgICAgICAgICAgZmllbGRJbmZv LT50eXBlID0gTVlTUUxfVFlQRV9TVFJJTkc7CisrICAgICAgICAgICAgYmluZC0+YnVmZmVyX3R5 cGUgPSBNWVNRTF9UWVBFX1NUUklORzsKKyAgICAgICAgIH0KKy0gICAgICAgIGJpbmQgPSAmaW5C aW5kc1tpXTsKKy0gICAgICAgIGZpZWxkID0gbmV3IGNoYXJbZmllbGRJbmZvLT5sZW5ndGggKyAx XTsKKy0gICAgICAgIG1lbXNldChmaWVsZCwgMCwgZmllbGRJbmZvLT5sZW5ndGggKyAxKTsKKyAK Ky0gICAgICAgIGJpbmQtPmJ1ZmZlcl90eXBlID0gZmllbGRJbmZvLT50eXBlOworLSAgICAgICAg YmluZC0+YnVmZmVyID0gZmllbGQ7CistICAgICAgICBiaW5kLT5idWZmZXJfbGVuZ3RoID0gZi5i dWZMZW5ndGggPSBmaWVsZEluZm8tPmxlbmd0aCArIDE7CisgICAgICAgICBiaW5kLT5pc19udWxs ID0gJmYubnVsbEluZGljYXRvcjsKKyAgICAgICAgIGJpbmQtPmxlbmd0aCA9ICZmLmJ1Zkxlbmd0 aDsKKyAgICAgICAgIGJpbmQtPmlzX3Vuc2lnbmVkID0gZmllbGRJbmZvLT5mbGFncyAmIFVOU0lH TkVEX0ZMQUcgPyAxIDogMDsKKy0gICAgICAgIGYub3V0RmllbGQ9ZmllbGQ7CisrCisrICAgICAg ICBjaGFyICpmaWVsZCA9IG5ldyBjaGFyW2JpbmQtPmJ1ZmZlcl9sZW5ndGggKyAxXXt9OworKyAg ICAgICAgYmluZC0+YnVmZmVyID0gZi5vdXRGaWVsZCA9IGZpZWxkOworIAorICAgICAgICAgKytp OworICAgICB9CitAQCAtMTM2OSwyMCArMTM2NywyMCBAQCBib29sIFFNWVNRTERyaXZlcjo6b3Bl bihjb25zdCBRU3RyaW5nJiBkYiwKKyAgICAgfQorIAorICNpZiBNWVNRTF9WRVJTSU9OX0lEID49 IDUwMDA3CistICAgIGlmIChteXNxbF9nZXRfY2xpZW50X3ZlcnNpb24oKSA+PSA1MDUwMyAmJiBt eXNxbF9nZXRfc2VydmVyX3ZlcnNpb24oZC0+bXlzcWwpID49IDUwNTAzKSB7CistICAgICAgICAv LyBmb3JjZSB0aGUgY29tbXVuaWNhdGlvbiB0byBiZSB1dGY4bWI0IChvbmx5IHV0ZjhtYjQgc3Vw cG9ydHMgNC1ieXRlIGNoYXJhY3RlcnMpCistICAgICAgICBteXNxbF9zZXRfY2hhcmFjdGVyX3Nl dChkLT5teXNxbCwgInV0ZjhtYjQiKTsKKysgICAgLy8gZm9yY2UgdGhlIGNvbW11bmljYXRpb24g dG8gYmUgdXRmOG1iNCAob25seSB1dGY4bWI0IHN1cHBvcnRzIDQtYnl0ZSBjaGFyYWN0ZXJzKQor KyAgICBpZiAobXlzcWxfc2V0X2NoYXJhY3Rlcl9zZXQoZC0+bXlzcWwsICJ1dGY4bWI0IikpIHsK KysgICAgICAgIC8vIHRoaXMgZmFpbGVkLCB0cnkgZm9yY2luZyBpdCB0byB1dGYgKEJNUCBvbmx5 KQorKyAgICAgICAgaWYgKG15c3FsX3NldF9jaGFyYWN0ZXJfc2V0KGQtPm15c3FsLCAidXRmOCIp KQorKyAgICAgICAgICAgIHFXYXJuaW5nKCkgPDwgIk15U1FMOiBVbmFibGUgdG8gc2V0IHRoZSBj bGllbnQgY2hhcmFjdGVyIHNldCB0byB1dGY4LiI7CisgI2lmIFFUX0NPTkZJRyh0ZXh0Y29kZWMp CistICAgICAgICBkLT50YyA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTmFtZSgiVVRGLTgiKTsKKysg ICAgICAgIGVsc2UKKysgICAgICAgICAgICBkLT50YyA9IGNvZGVjKGQtPm15c3FsKTsKKyAjZW5k aWYKKy0gICAgfSBlbHNlCistICAgIHsKKy0gICAgICAgIC8vIGZvcmNlIHRoZSBjb21tdW5pY2F0 aW9uIHRvIGJlIHV0ZjgKKy0gICAgICAgIG15c3FsX3NldF9jaGFyYWN0ZXJfc2V0KGQtPm15c3Fs LCAidXRmOCIpOworKyAgICB9CisgI2lmIFFUX0NPTkZJRyh0ZXh0Y29kZWMpCistICAgICAgICBk LT50YyA9IGNvZGVjKGQtPm15c3FsKTsKKysgICAgZWxzZQorKyAgICAgICAgZC0+dGMgPSBRVGV4 dENvZGVjOjpjb2RlY0Zvck5hbWUoIlVURi04Iik7CisgI2VuZGlmCistICAgIH0KKyAjZW5kaWYg IC8vIE1ZU1FMX1ZFUlNJT05fSUQgPj0gNTAwMDcKKyAKKyAgICAgZC0+cHJlcGFyZWRRdWVyeXNF bmFibGVkID0gY2hlY2tQcmVwYXJlZFF1ZXJpZXMoZC0+bXlzcWwpOworZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50LTI0LnBuZyBiL3F0YmFz ZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50ZXItMjQucG5nCitzaW1pbGFy aXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFn ZXMvcHJpbnQtMjQucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdl cy9wcmludGVyLTI0LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2Rp YWxvZ3MvaW1hZ2VzL3ByaW50LTMyLnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvaW1hZ2VzL3ByaW50ZXItMzIucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBm cm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnQtMzIucG5nCityZW5hbWUg dG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludGVyLTMyLnBuZworZGlmZiAt LWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1z aWRlZC0yNC5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3 LXBhZ2VzLWZhY2luZy0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20g c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utc2lkZWQtMjQucG5nCity ZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLWZhY2lu Zy0yNC5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2lt YWdlcy92aWV3LXBhZ2Utc2lkZWQtMzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlh bG9ncy9pbWFnZXMvdmlldy1wYWdlcy1mYWNpbmctMzIucG5nCitzaW1pbGFyaXR5IGluZGV4IDEw MCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdl LXNpZGVkLTMyLnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMv dmlldy1wYWdlcy1mYWNpbmctMzIucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1 cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW11bHRpLTI0LnBuZyBiL3F0YmFzZS9zcmMv cHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMjQucG5nCitz aW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9n cy9pbWFnZXMvdmlldy1wYWdlLW11bHRpLTI0LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBv cnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1vdmVydmlldy0yNC5wbmcKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2UtbXVsdGkt MzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdl cy1vdmVydmlldy0zMi5wbmcKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3Jj L3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2UtbXVsdGktMzIucG5nCityZW5h bWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLW92ZXJ2aWV3 LTMyLnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1h Z2VzL3ZpZXctcGFnZS1vbmUtMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9n cy9pbWFnZXMvdmlldy1wYWdlcy1zaW5nbGUtMjQucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUK K3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW9u ZS0yNC5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXct cGFnZXMtc2luZ2xlLTI0LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0 L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1vbmUtMzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1 cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlcy1zaW5nbGUtMzIucG5nCitzaW1pbGFyaXR5 IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMv dmlldy1wYWdlLW9uZS0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3Mv aW1hZ2VzL3ZpZXctcGFnZXMtc2luZ2xlLTMyLnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv cHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC1wYWdlLTI0LnBuZyBiL3F0YmFzZS9zcmMv cHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXBhZ2UtMjQucG5nCitzaW1pbGFy aXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFn ZXMvZml0LXBhZ2UtMjQucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2lt YWdlcy96b29tLWZpdC1wYWdlLTI0LnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRz dXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL2ZpdC1wYWdlLTMyLnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRz dXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXBhZ2UtMzIucG5nCitzaW1pbGFyaXR5IGlu ZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0 LXBhZ2UtMzIucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96 b29tLWZpdC1wYWdlLTMyLnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0 L2RpYWxvZ3MvaW1hZ2VzL2ZpdC13aWR0aC0yNC5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9y dC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC13aWR0aC0yNC5wbmcKK3NpbWlsYXJpdHkgaW5kZXgg MTAwJQorcmVuYW1lIGZyb20gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtd2lk dGgtMjQucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29t LWZpdC13aWR0aC0yNC5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9k aWFsb2dzL2ltYWdlcy9maXQtd2lkdGgtMzIucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQv ZGlhbG9ncy9pbWFnZXMvem9vbS1maXQtd2lkdGgtMzIucG5nCitzaW1pbGFyaXR5IGluZGV4IDEw MCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXdpZHRo LTMyLnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9vbS1m aXQtd2lkdGgtMzIucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlh bG9ncy9xcGFnZXNldHVwZGlhbG9nX3VuaXguY3BwIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQv ZGlhbG9ncy9xcGFnZXNldHVwZGlhbG9nX3VuaXguY3BwCitpbmRleCA3OGU1YjhkMWVmLi4yYTI4 NTE2NzE5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcGFn ZXNldHVwZGlhbG9nX3VuaXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFs b2dzL3FwYWdlc2V0dXBkaWFsb2dfdW5peC5jcHAKK0BAIC01MzIsNiArNTMyLDcgQEAgdm9pZCBR UGFnZVNldHVwV2lkZ2V0Ojp1cGRhdGVXaWRnZXQoKQorIHZvaWQgUVBhZ2VTZXR1cFdpZGdldDo6 c2V0dXBQcmludGVyKCkgY29uc3QKKyB7CisgICAgIG1fcHJpbnRlci0+c2V0UGFnZUxheW91dCht X3BhZ2VMYXlvdXQpOworKyAgICBtX3ByaW50ZXItPnNldFBhZ2VPcmllbnRhdGlvbihtX3BhZ2VM YXlvdXQub3JpZW50YXRpb24oKSk7CisgI2lmIFFUX0NPTkZJRyhjdXBzKQorICAgICBRQ1VQU1N1 cHBvcnQ6OlBhZ2VzUGVyU2hlZXQgcGFnZXNQZXJTaGVldCA9IHF2YXJpYW50X2Nhc3Q8UUNVUFNT dXBwb3J0OjpQYWdlc1BlclNoZWV0PihtX3VpLnBhZ2VzUGVyU2hlZXRDb21iby0+Y3VycmVudERh dGEoKQorICk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9x cHJpbnRkaWFsb2cucXJjIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRk aWFsb2cucXJjCitpbmRleCA1YTU3OWJhYTU1Li4xMGI4ZTFkMzQxIDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2cucXJjCisrKysgYi9xdGJh c2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZy5xcmMKK0BAIC0xLDkgKzEs OSBAQAorIDwhRE9DVFlQRSBSQ0M+PFJDQyB2ZXJzaW9uPSIxLjAiPgorIDxxcmVzb3VyY2UgcHJl Zml4PSIvcXQtcHJvamVjdC5vcmcvZGlhbG9ncy9xcHJpbnRwcmV2aWV3ZGlhbG9nIj4KKy08Zmls ZT5pbWFnZXMvZml0LXBhZ2UtMjQucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy9maXQtcGFnZS0z Mi5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL2ZpdC13aWR0aC0yNC5wbmc8L2ZpbGU+CistPGZp bGU+aW1hZ2VzL2ZpdC13aWR0aC0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3pvb20tZml0 LXBhZ2UtMjQucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy96b29tLWZpdC1wYWdlLTMyLnBuZzwv ZmlsZT4KKys8ZmlsZT5pbWFnZXMvem9vbS1maXQtd2lkdGgtMjQucG5nPC9maWxlPgorKzxmaWxl PmltYWdlcy96b29tLWZpdC13aWR0aC0zMi5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL2dvLWZp cnN0LTI0LnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvZ28tZmlyc3QtMzIucG5nPC9maWxlPgor IDxmaWxlPmltYWdlcy9nby1sYXN0LTI0LnBuZzwvZmlsZT4KK0BAIC0xOCwxNCArMTgsMTQgQEAK KyA8ZmlsZT5pbWFnZXMvbGF5b3V0LXBvcnRyYWl0LTMyLnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFn ZXMvcGFnZS1zZXR1cC0yNC5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL3BhZ2Utc2V0dXAtMzIu cG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy9wcmludC0yNC5wbmc8L2ZpbGU+CistPGZpbGU+aW1h Z2VzL3ByaW50LTMyLnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvdmlldy1wYWdlLW11bHRpLTI0 LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvdmlldy1wYWdlLW11bHRpLTMyLnBuZzwvZmlsZT4K Ky08ZmlsZT5pbWFnZXMvdmlldy1wYWdlLW9uZS0yNC5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2Vz L3ZpZXctcGFnZS1vbmUtMzIucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy92aWV3LXBhZ2Utc2lk ZWQtMjQucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy92aWV3LXBhZ2Utc2lkZWQtMzIucG5nPC9m aWxlPgorKzxmaWxlPmltYWdlcy9wcmludGVyLTI0LnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMv cHJpbnRlci0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXct MjQucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy92aWV3LXBhZ2VzLW92ZXJ2aWV3LTMyLnBuZzwv ZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1zaW5nbGUtMjQucG5nPC9maWxlPgorKzxm aWxlPmltYWdlcy92aWV3LXBhZ2VzLXNpbmdsZS0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2Vz L3ZpZXctcGFnZXMtZmFjaW5nLTI0LnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmlldy1wYWdl cy1mYWNpbmctMzIucG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy96b29tLWluLTI0LnBuZzwvZmls ZT4KKyA8ZmlsZT5pbWFnZXMvem9vbS1pbi0zMi5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL3pv b20tb3V0LTI0LnBuZzwvZmlsZT4KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9y dC9kaWFsb2dzL3FwcmludGRpYWxvZ191bml4LmNwcCBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0 L2RpYWxvZ3MvcXByaW50ZGlhbG9nX3VuaXguY3BwCitpbmRleCBjNWI4NDVmNGVjLi41YTViYTFk MGE4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRk aWFsb2dfdW5peC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXBy aW50ZGlhbG9nX3VuaXguY3BwCitAQCAtNzAyLDEzICs3MDIsMTQgQEAgdm9pZCBRUHJpbnREaWFs b2dQcml2YXRlOjpzZWxlY3RQcmludGVyKGNvbnN0IFFQcmludGVyOjpPdXRwdXRGb3JtYXQgb3V0 cHV0Rm9ybWEKKyAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICBvcHRpb25zLmdyYXlzY2FsZS0+ c2V0Q2hlY2tlZCh0cnVlKTsKKyAKKy0gICAgICAgIC8vIGtlZXAgZHVwbGV4IHZhbHVlIGV4cGxp Y2l0bHkgc2V0IGJ5IHVzZXIsIGlmIGFueSwgYW5kIHNlbGVjdGVkIHByaW50ZXIgc3VwcG9ydHMg aXQ7CistICAgICAgICAvLyB1c2UgZGV2aWNlIGRlZmF1bHQgb3RoZXJ3aXNlCisrICAgICAgICAv LyBkdXBsZXggcHJpb3JpdGllcyB0byBiZSBhcyBmb2xsb3dzOgorKyAgICAgICAgLy8gMSkgYSB1 c2VyLXNlbGVjdGVkIGR1cGxleCB2YWx1ZSBpbiB0aGUgZGlhbG9nIGhhcyBoaWdoZXN0IHByb3Jp dHkKKysgICAgICAgIC8vIDIpIGR1cGxleCB2YWx1ZSBzZXQgaW4gdGhlIFFQcmludGVyCisgICAg ICAgICBRUHJpbnQ6OkR1cGxleE1vZGUgZHVwbGV4OworICAgICAgICAgaWYgKGV4cGxpY2l0RHVw bGV4TW9kZSAhPSBRUHJpbnQ6OkR1cGxleEF1dG8gJiYgc3VwcG9ydGVkRHVwbGV4TW9kZS5jb250 YWlucyhleHBsaWNpdER1cGxleE1vZGUpKQorICAgICAgICAgICAgIGR1cGxleCA9IGV4cGxpY2l0 RHVwbGV4TW9kZTsKKyAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICBkdXBsZXggPSB0b3AtPmQt Pm1fY3VycmVudFByaW50RGV2aWNlLmRlZmF1bHREdXBsZXhNb2RlKCk7CisrICAgICAgICAgICAg ZHVwbGV4ID0gc3RhdGljX2Nhc3Q8UVByaW50OjpEdXBsZXhNb2RlPihwLT5kdXBsZXgoKSk7Cisg ICAgICAgICBzd2l0Y2ggKGR1cGxleCkgeworICAgICAgICAgY2FzZSBRUHJpbnQ6OkR1cGxleE5v bmU6CisgICAgICAgICAgICAgb3B0aW9ucy5ub0R1cGxleC0+c2V0Q2hlY2tlZCh0cnVlKTsgYnJl YWs7CitAQCAtMTI0MiwxMCArMTI0MywxMCBAQCB2b2lkIFFVbml4UHJpbnRXaWRnZXRQcml2YXRl OjpfcV9wcmludGVyQ2hhbmdlZChpbnQgaW5kZXgpCisgICAgICAgICAgICAgUVN0cmluZyBmaWxl bmFtZSA9IHdpZGdldC5maWxlbmFtZS0+dGV4dCgpOworICAgICAgICAgICAgIHdpZGdldC5maWxl bmFtZS0+c2V0VGV4dChmaWxlbmFtZSk7CisgICAgICAgICAgICAgd2lkZ2V0LmxPdXRwdXQtPnNl dEVuYWJsZWQodHJ1ZSk7CistICAgICAgICAgICAgaWYgKG9wdGlvbnNQYW5lKQorLSAgICAgICAg ICAgICAgICBvcHRpb25zUGFuZS0+c2VsZWN0UHJpbnRlcihRUHJpbnRlcjo6UGRmRm9ybWF0KTsK KyAgICAgICAgICAgICBwcmludGVyLT5zZXRPdXRwdXRGb3JtYXQoUVByaW50ZXI6OlBkZkZvcm1h dCk7CisgICAgICAgICAgICAgbV9jdXJyZW50UHJpbnREZXZpY2UgPSBRUHJpbnREZXZpY2UoKTsK KysgICAgICAgICAgICBpZiAob3B0aW9uc1BhbmUpCisrICAgICAgICAgICAgICAgIG9wdGlvbnNQ YW5lLT5zZWxlY3RQcmludGVyKFFQcmludGVyOjpQZGZGb3JtYXQpOworICAgICAgICAgICAgIHJl dHVybjsKKyAgICAgICAgIH0KKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRz dXBwb3J0L2RpYWxvZ3MvcXByaW50cHJldmlld2RpYWxvZy5jcHAgYi9xdGJhc2Uvc3JjL3ByaW50 c3VwcG9ydC9kaWFsb2dzL3FwcmludHByZXZpZXdkaWFsb2cuY3BwCitpbmRleCAzOTU3NWQ1ZjU3 Li4yM2I3ZTg5NTM4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9n cy9xcHJpbnRwcmV2aWV3ZGlhbG9nLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQv ZGlhbG9ncy9xcHJpbnRwcmV2aWV3ZGlhbG9nLmNwcAorQEAgLTM1Miw3ICszNTIsNyBAQCB2b2lk IFFQcmludFByZXZpZXdEaWFsb2dQcml2YXRlOjppbml0KFFQcmludGVyICpfcHJpbnRlcikKKyBz dGF0aWMgaW5saW5lIHZvaWQgcXRfc2V0dXBBY3Rpb25JY29uKFFBY3Rpb24gKmFjdGlvbiwgUUxh dGluMVN0cmluZyBuYW1lKQorIHsKKyAgICAgUUxhdGluMVN0cmluZyBpbWFnZVByZWZpeCgiOi9x dC1wcm9qZWN0Lm9yZy9kaWFsb2dzL3FwcmludHByZXZpZXdkaWFsb2cvaW1hZ2VzLyIpOworLSAg ICBRSWNvbiBpY29uOworKyAgICBRSWNvbiBpY29uID0gUUljb246OmZyb21UaGVtZShuYW1lKTsK KyAgICAgaWNvbi5hZGRGaWxlKGltYWdlUHJlZml4ICsgbmFtZSArIFFMYXRpbjFTdHJpbmcoIi0y NC5wbmciKSwgUVNpemUoMjQsIDI0KSk7CisgICAgIGljb24uYWRkRmlsZShpbWFnZVByZWZpeCAr IG5hbWUgKyBRTGF0aW4xU3RyaW5nKCItMzIucG5nIiksIFFTaXplKDMyLCAzMikpOworICAgICBh Y3Rpb24tPnNldEljb24oaWNvbik7CitAQCAtMzgzLDggKzM4Myw4IEBAIHZvaWQgUVByaW50UHJl dmlld0RpYWxvZ1ByaXZhdGU6OnNldHVwQWN0aW9ucygpCisgICAgIGZpdFBhZ2VBY3Rpb24tPnNl dE9iamVjdE5hbWUoUUxhdGluMVN0cmluZygiZml0UGFnZUFjdGlvbiIpKTsKKyAgICAgZml0V2lk dGhBY3Rpb24tPnNldENoZWNrYWJsZSh0cnVlKTsKKyAgICAgZml0UGFnZUFjdGlvbi0+c2V0Q2hl Y2thYmxlKHRydWUpOworLSAgICBxdF9zZXR1cEFjdGlvbkljb24oZml0V2lkdGhBY3Rpb24sIFFM YXRpbjFTdHJpbmcoImZpdC13aWR0aCIpKTsKKy0gICAgcXRfc2V0dXBBY3Rpb25JY29uKGZpdFBh Z2VBY3Rpb24sIFFMYXRpbjFTdHJpbmcoImZpdC1wYWdlIikpOworKyAgICBxdF9zZXR1cEFjdGlv bkljb24oZml0V2lkdGhBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInpvb20tZml0LXdpZHRoIikpOwor KyAgICBxdF9zZXR1cEFjdGlvbkljb24oZml0UGFnZUFjdGlvbiwgUUxhdGluMVN0cmluZygiem9v bS1maXQtcGFnZSIpKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChmaXRHcm91cCwgU0lHTkFMKHRy aWdnZXJlZChRQWN0aW9uKikpLCBxLCBTTE9UKF9xX2ZpdChRQWN0aW9uKikpKTsKKyAKKyAgICAg Ly8gWm9vbQorQEAgLTQxMCw5ICs0MTAsOSBAQCB2b2lkIFFQcmludFByZXZpZXdEaWFsb2dQcml2 YXRlOjpzZXR1cEFjdGlvbnMoKQorICAgICBzaW5nbGVNb2RlQWN0aW9uID0gbW9kZUdyb3VwLT5h ZGRBY3Rpb24oUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRUHJpbnRQcmV2aWV3RGlhbG9n IiwgIlNob3cgc2luZ2xlIHBhZ2UiKSk7CisgICAgIGZhY2luZ01vZGVBY3Rpb24gPSBtb2RlR3Jv dXAtPmFkZEFjdGlvbihRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFQcmludFByZXZpZXdE aWFsb2ciLCAiU2hvdyBmYWNpbmcgcGFnZXMiKSk7CisgICAgIG92ZXJ2aWV3TW9kZUFjdGlvbiA9 IG1vZGVHcm91cC0+YWRkQWN0aW9uKFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVByaW50 UHJldmlld0RpYWxvZyIsICJTaG93IG92ZXJ2aWV3IG9mIGFsbCBwYWdlcyIpKTsKKy0gICAgcXRf c2V0dXBBY3Rpb25JY29uKHNpbmdsZU1vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFn ZS1vbmUiKSk7CistICAgIHF0X3NldHVwQWN0aW9uSWNvbihmYWNpbmdNb2RlQWN0aW9uLCBRTGF0 aW4xU3RyaW5nKCJ2aWV3LXBhZ2Utc2lkZWQiKSk7CistICAgIHF0X3NldHVwQWN0aW9uSWNvbihv dmVydmlld01vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFnZS1tdWx0aSIpKTsKKysg ICAgcXRfc2V0dXBBY3Rpb25JY29uKHNpbmdsZU1vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZp ZXctcGFnZXMtc2luZ2xlIikpOworKyAgICBxdF9zZXR1cEFjdGlvbkljb24oZmFjaW5nTW9kZUFj dGlvbiwgUUxhdGluMVN0cmluZygidmlldy1wYWdlcy1mYWNpbmciKSk7CisrICAgIHF0X3NldHVw QWN0aW9uSWNvbihvdmVydmlld01vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFnZXMt b3ZlcnZpZXciKSk7CisgICAgIHNpbmdsZU1vZGVBY3Rpb24tPnNldE9iamVjdE5hbWUoUUxhdGlu MVN0cmluZygic2luZ2xlTW9kZUFjdGlvbiIpKTsKKyAgICAgZmFjaW5nTW9kZUFjdGlvbi0+c2V0 T2JqZWN0TmFtZShRTGF0aW4xU3RyaW5nKCJmYWNpbmdNb2RlQWN0aW9uIikpOworICAgICBvdmVy dmlld01vZGVBY3Rpb24tPnNldE9iamVjdE5hbWUoUUxhdGluMVN0cmluZygib3ZlcnZpZXdNb2Rl QWN0aW9uIikpOworQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIFFQcmludFByZXZpZXdEaWFsb2dQ cml2YXRlOjpzZXR1cEFjdGlvbnMoKQorICAgICBwcmludGVyR3JvdXAgPSBuZXcgUUFjdGlvbkdy b3VwKHEpOworICAgICBwcmludEFjdGlvbiA9IHByaW50ZXJHcm91cC0+YWRkQWN0aW9uKFFDb3Jl QXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVByaW50UHJldmlld0RpYWxvZyIsICJQcmludCIpKTsK KyAgICAgcGFnZVNldHVwQWN0aW9uID0gcHJpbnRlckdyb3VwLT5hZGRBY3Rpb24oUUNvcmVBcHBs aWNhdGlvbjo6dHJhbnNsYXRlKCJRUHJpbnRQcmV2aWV3RGlhbG9nIiwgIlBhZ2Ugc2V0dXAiKSk7 CistICAgIHF0X3NldHVwQWN0aW9uSWNvbihwcmludEFjdGlvbiwgUUxhdGluMVN0cmluZygicHJp bnQiKSk7CisrICAgIHF0X3NldHVwQWN0aW9uSWNvbihwcmludEFjdGlvbiwgUUxhdGluMVN0cmlu ZygicHJpbnRlciIpKTsKKyAgICAgcXRfc2V0dXBBY3Rpb25JY29uKHBhZ2VTZXR1cEFjdGlvbiwg UUxhdGluMVN0cmluZygicGFnZS1zZXR1cCIpKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChwcmlu dEFjdGlvbiwgU0lHTkFMKHRyaWdnZXJlZChib29sKSksIHEsIFNMT1QoX3FfcHJpbnQoKSkpOwor ICAgICBRT2JqZWN0Ojpjb25uZWN0KHBhZ2VTZXR1cEFjdGlvbiwgU0lHTkFMKHRyaWdnZXJlZChi b29sKSksIHEsIFNMT1QoX3FfcGFnZVNldHVwKCkpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L3NxbC9rZXJuZWwvcXNxbHF1ZXJ5LmNwcCBiL3F0YmFzZS9zcmMvc3FsL2tlcm5lbC9xc3FscXVl cnkuY3BwCitpbmRleCAzMmM2MTY2Yzc5Li42MGFmZWYxMGMzIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9zcWwva2VybmVsL3FzcWxxdWVyeS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvc3FsL2tlcm5l bC9xc3FscXVlcnkuY3BwCitAQCAtMSw2ICsxLDYgQEAKKyAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICoqCistKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb3B5 cmlnaHQgKEMpIDIwMjIgVGhlIFF0IENvbXBhbnkgTHRkLgorICoqIENvbnRhY3Q6IGh0dHBzOi8v d3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBR dFNxbCBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCitAQCAtMzc3LDYgKzM3NywxMCBAQCBib29s IFFTcWxRdWVyeTo6ZXhlYyhjb25zdCBRU3RyaW5nJiBxdWVyeSkKKyAgICAgUUVsYXBzZWRUaW1l ciB0OworICAgICB0LnN0YXJ0KCk7CisgI2VuZGlmCisrICAgIGlmICghZHJpdmVyKCkpIHsKKysg ICAgICAgIHFXYXJuaW5nKCJRU3FsUXVlcnk6OmV4ZWM6IGNhbGxlZCBiZWZvcmUgZHJpdmVyIGhh cyBiZWVuIHNldCB1cCIpOworKyAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICB9CisgICAgIGlm IChkLT5yZWYubG9hZFJlbGF4ZWQoKSAhPSAxKSB7CisgICAgICAgICBib29sIGZvID0gaXNGb3J3 YXJkT25seSgpOworICAgICAgICAgKnRoaXMgPSBRU3FsUXVlcnkoZHJpdmVyKCktPmNyZWF0ZVJl c3VsdCgpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1v ZGVsdGVzdGVyLmNwcCBiL3F0YmFzZS9zcmMvdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0 ZXIuY3BwCitpbmRleCA4ZWZiOWM1M2Q0Li5jZTA2MmY2NmQ3IDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAKKysrKyBiL3F0YmFzZS9z cmMvdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3BwCitAQCAtNDU0LDcgKzQ1NCw3 IEBAIHZvaWQgUUFic3RyYWN0SXRlbU1vZGVsVGVzdGVyUHJpdmF0ZTo6cGFyZW50KCkKKyAKKyAg ICAgLy8gQ29tbW9uIGVycm9yIHRlc3QgIzIsIG1ha2Ugc3VyZSB0aGF0IGEgc2Vjb25kIGxldmVs IGluZGV4IGhhcyBhIHBhcmVudAorICAgICAvLyB0aGF0IGlzIHRoZSBmaXJzdCBsZXZlbCBpbmRl eC4KKy0gICAgaWYgKG1vZGVsLT5yb3dDb3VudCh0b3BJbmRleCkgPiAwKSB7CisrICAgIGlmICht b2RlbC0+cm93Q291bnQodG9wSW5kZXgpID4gMCAmJiBtb2RlbC0+Y29sdW1uQ291bnQodG9wSW5k ZXgpID4gMCkgeworICAgICAgICAgUU1vZGVsSW5kZXggY2hpbGRJbmRleCA9IG1vZGVsLT5pbmRl eCgwLCAwLCB0b3BJbmRleCk7CisgICAgICAgICBNT0RFTFRFU1RFUl9WRVJJRlkoY2hpbGRJbmRl eC5pc1ZhbGlkKCkpOworICAgICAgICAgTU9ERUxURVNURVJfQ09NUEFSRShtb2RlbC0+cGFyZW50 KGNoaWxkSW5kZXgpLCB0b3BJbmRleCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy90ZXN0bGli L3Fhc2NpaWtleS5jcHAgYi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFzY2lpa2V5LmNwcAoraW5kZXgg OWEzMDhkYTJiYy4uOTM0OThiMjU2ZiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvdGVzdGxpYi9x YXNjaWlrZXkuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFzY2lpa2V5LmNwcAorQEAg LTQ5OCw2ICs0OTgsMTEgQEAgY2hhciBRVGVzdDo6a2V5VG9Bc2NpaShRdDo6S2V5IGtleSkKKyAg ICAgY2FzZSBRdDo6S2V5X0xhdW5jaEUgOiByZXR1cm4gMDsgLy8gPSAweDEwYjAsCisgICAgIGNh c2UgUXQ6OktleV9MYXVuY2hGIDogcmV0dXJuIDA7IC8vID0gMHgxMGIxLAorIAorKyAgICAvLyBL ZXlwYWQgbmF2aWdhdGlvbiBrZXlzCisrICAgIGNhc2UgUXQ6OktleV9TZWxlY3QgOiByZXR1cm4g MDsgLy8gPSAweDAxMDEwMDAwCisrICAgIGNhc2UgUXQ6OktleV9ZZXMgOiByZXR1cm4gMDsgLy8g PSAweDAxMDEwMDAxCisrICAgIGNhc2UgUXQ6OktleV9ObyA6IHJldHVybiAwOyAvLyA9IDB4MDEw MTAwMDIKKysKKyAgICAgZGVmYXVsdDogUVRFU1RfQVNTRVJUKGZhbHNlKTsgcmV0dXJuIDA7Cisg ICAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy90ZXN0bGliL3F0ZXN0cmVzdWx0LmNw cCBiL3F0YmFzZS9zcmMvdGVzdGxpYi9xdGVzdHJlc3VsdC5jcHAKK2luZGV4IDg4MDI4YWFjNmUu LjJlODk5MzA3NzYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3Rlc3RsaWIvcXRlc3RyZXN1bHQu Y3BwCisrKysgYi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcXRlc3RyZXN1bHQuY3BwCitAQCAtMjUxLDcg KzI1MSw4IEBAIGJvb2wgUVRlc3RSZXN1bHQ6OnZlcmlmeShib29sIHN0YXRlbWVudCwgY29uc3Qg Y2hhciAqc3RhdGVtZW50U3RyLAorIHsKKyAgICAgUVRFU1RfQVNTRVJUKHN0YXRlbWVudFN0cik7 CisgCistICAgIGNoYXIgbXNnWzEwMjRdID0geydcMCd9OworKyAgICBjaGFyIG1zZ1sxMDI0XTsK KysgICAgbXNnWzBdID0gJ1wwJzsKKyAKKyAgICAgaWYgKFFUZXN0TG9nOjp2ZXJib3NlTGV2ZWwo KSA+PSAyKSB7CisgICAgICAgICBxc25wcmludGYobXNnLCAxMDI0LCAiUVZFUklGWSglcykiLCBz dGF0ZW1lbnRTdHIpOworQEAgLTMwOSw3ICszMTAsOCBAQCBzdGF0aWMgYm9vbCBjb21wYXJlSGVs cGVyKGJvb2wgc3VjY2VzcywgY29uc3QgY2hhciAqZmFpbHVyZU1zZywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJvb2wgaGFzVmFsdWVzID0gdHJ1ZSkKKyB7CisgICAgIGNvbnN0IHNpemVf dCBtYXhNc2dMZW4gPSAxMDI0OworLSAgICBjaGFyIG1zZ1ttYXhNc2dMZW5dID0geydcMCd9Owor KyAgICBjaGFyIG1zZ1ttYXhNc2dMZW5dOworKyAgICBtc2dbMF0gPSAnXDAnOworIAorICAgICBR VEVTVF9BU1NFUlQoZXhwZWN0ZWQpOworICAgICBRVEVTVF9BU1NFUlQoYWN0dWFsKTsKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvZGlhbG9ncy9xY29sb3JkaWFsb2cuY3BwIGIvcXRi YXNlL3NyYy93aWRnZXRzL2RpYWxvZ3MvcWNvbG9yZGlhbG9nLmNwcAoraW5kZXggNDI0NzczMTI3 NS4uY2IzMjViZTg1YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9kaWFsb2dzL3Fj b2xvcmRpYWxvZy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9kaWFsb2dzL3Fjb2xvcmRp YWxvZy5jcHAKK0BAIC03OCw3ICs3OCwxMCBAQAorICNpbmNsdWRlICJxd2luZG93LmgiCisgCisg I2luY2x1ZGUgInByaXZhdGUvcWRpYWxvZ19wLmgiCisrI2luY2x1ZGUgInByaXZhdGUvcWd1aWFw cGxpY2F0aW9uX3AuaCIKKyAKKysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXNlcnZpY2VzLmg+Cisr I2luY2x1ZGUgPHFwYS9xcGxhdGZvcm1pbnRlZ3JhdGlvbi5oPgorICNpbmNsdWRlIDxhbGdvcml0 aG0+CisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCitAQCAtMTYxMSw2ICsxNjE0LDIwIEBAIHZvaWQg UUNvbG9yRGlhbG9nUHJpdmF0ZTo6X3FfbmV3U3RhbmRhcmQoaW50IHIsIGludCBjKQorIHZvaWQg UUNvbG9yRGlhbG9nUHJpdmF0ZTo6X3FfcGlja1NjcmVlbkNvbG9yKCkKKyB7CisgICAgIFFfUShR Q29sb3JEaWFsb2cpOworKworKyAgICBhdXRvICpwbGF0Zm9ybVNlcnZpY2VzID0gUUd1aUFwcGxp Y2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5zZXJ2aWNlcygpOworKyAgICBp ZiAocGxhdGZvcm1TZXJ2aWNlcy0+aGFzQ2FwYWJpbGl0eShRUGxhdGZvcm1TZXJ2aWNlczo6Q2Fw YWJpbGl0eTo6Q29sb3JQaWNraW5nKSkgeworKyAgICAgICAgaWYgKGF1dG8gKmNvbG9yUGlja2Vy ID0gcGxhdGZvcm1TZXJ2aWNlcy0+Y29sb3JQaWNrZXIocS0+d2luZG93SGFuZGxlKCkpKSB7Cisr ICAgICAgICAgICAgcS0+Y29ubmVjdChjb2xvclBpY2tlciwgJlFQbGF0Zm9ybVNlcnZpY2VDb2xv clBpY2tlcjo6Y29sb3JQaWNrZWQsIHEsCisrICAgICAgICAgICAgICAgICAgICAgICBbcSwgY29s b3JQaWNrZXJdKGNvbnN0IFFDb2xvciAmY29sb3IpIHsKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb2xvclBpY2tlci0+ZGVsZXRlTGF0ZXIoKTsKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICBxLT5zZXRDdXJyZW50Q29sb3IoY29sb3IpOworKyAgICAgICAgICAgICAgICAgICAgICAg fSk7CisrICAgICAgICAgICAgY29sb3JQaWNrZXItPnBpY2tDb2xvcigpOworKyAgICAgICAgICAg IHJldHVybjsKKysgICAgICAgIH0KKysgICAgfQorKworICAgICBpZiAoIWNvbG9yUGlja2luZ0V2 ZW50RmlsdGVyKQorICAgICAgICAgY29sb3JQaWNraW5nRXZlbnRGaWx0ZXIgPSBuZXcgUUNvbG9y UGlja2luZ0V2ZW50RmlsdGVyKHRoaXMsIHEpOworICAgICBxLT5pbnN0YWxsRXZlbnRGaWx0ZXIo Y29sb3JQaWNraW5nRXZlbnRGaWx0ZXIpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0 cy9pdGVtdmlld3MvcWFic3RyYWN0aXRlbWRlbGVnYXRlLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0 cy9pdGVtdmlld3MvcWFic3RyYWN0aXRlbWRlbGVnYXRlLmNwcAoraW5kZXggZTEyMDgxN2VkYy4u OGVhMzZiNTQyNyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWFi c3RyYWN0aXRlbWRlbGVnYXRlLmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3 cy9xYWJzdHJhY3RpdGVtZGVsZWdhdGUuY3BwCitAQCAtNDAwLDEyICs0MDAsNyBAQCBib29sIFFB YnN0cmFjdEl0ZW1EZWxlZ2F0ZTo6aGVscEV2ZW50KFFIZWxwRXZlbnQgKmV2ZW50LAorICAgICAg ICAgY29uc3QgUVN0cmluZyB0b29sdGlwID0gaW5kZXguaXNWYWxpZCgpID8KKyAgICAgICAgICAg ICAgIGQtPnRleHRGb3JSb2xlKFF0OjpUb29sVGlwUm9sZSwgaW5kZXguZGF0YShRdDo6VG9vbFRp cFJvbGUpLCBvcHRpb24ubG9jYWxlLCBwcmVjaXNpb24pIDoKKyAgICAgICAgICAgICAgIFFTdHJp bmcoKTsKKy0gICAgICAgIFFSZWN0IHJlY3Q7CistICAgICAgICBpZiAoaW5kZXguaXNWYWxpZCgp KSB7CistICAgICAgICAgICAgY29uc3QgUVJlY3QgciA9IHZpZXctPnZpc3VhbFJlY3QoaW5kZXgp OworLSAgICAgICAgICAgIHJlY3QgPSBRUmVjdCh2aWV3LT5tYXBUb0dsb2JhbChyLnRvcExlZnQo KSksIHIuc2l6ZSgpKTsKKy0gICAgICAgIH0KKy0gICAgICAgIFFUb29sVGlwOjpzaG93VGV4dCho ZS0+Z2xvYmFsUG9zKCksIHRvb2x0aXAsIHZpZXcsIHJlY3QpOworKyAgICAgICAgUVRvb2xUaXA6 OnNob3dUZXh0KGhlLT5nbG9iYWxQb3MoKSwgdG9vbHRpcCwgdmlldy0+dmlld3BvcnQoKSwgb3B0 aW9uLnJlY3QpOworICAgICAgICAgZXZlbnQtPnNldEFjY2VwdGVkKCF0b29sdGlwLmlzRW1wdHko KSk7CisgICAgICAgICBicmVhazsKKyAgICAgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L3dpZGdldHMvaXRlbXZpZXdzL3FsaXN0dmlldy5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvaXRl bXZpZXdzL3FsaXN0dmlldy5jcHAKK2luZGV4IDJiMzQ0NzY2NDIuLmVlYmZhYTAzMGUgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FsaXN0dmlldy5jcHAKKysrKyBi L3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcWxpc3R2aWV3LmNwcAorQEAgLTMzODYsNiAr MzM4Niw3IEBAIHZvaWQgUUljb25Nb2RlVmlld0Jhc2U6OnVwZGF0ZUNvbnRlbnRzU2l6ZSgpCisg Ki8KKyB2b2lkIFFMaXN0Vmlldzo6Y3VycmVudENoYW5nZWQoY29uc3QgUU1vZGVsSW5kZXggJmN1 cnJlbnQsIGNvbnN0IFFNb2RlbEluZGV4ICZwcmV2aW91cykKKyB7CisrICAgIFFBYnN0cmFjdEl0 ZW1WaWV3OjpjdXJyZW50Q2hhbmdlZChjdXJyZW50LCBwcmV2aW91cyk7CisgI2lmbmRlZiBRVF9O T19BQ0NFU1NJQklMSVRZCisgICAgIGlmIChRQWNjZXNzaWJsZTo6aXNBY3RpdmUoKSkgeworICAg ICAgICAgaWYgKGN1cnJlbnQuaXNWYWxpZCgpKSB7CitAQCAtMzM5Niw3ICszMzk3LDYgQEAgdm9p ZCBRTGlzdFZpZXc6OmN1cnJlbnRDaGFuZ2VkKGNvbnN0IFFNb2RlbEluZGV4ICZjdXJyZW50LCBj b25zdCBRTW9kZWxJbmRleCAmcHIKKyAgICAgICAgIH0KKyAgICAgfQorICNlbmRpZgorLSAgICBR QWJzdHJhY3RJdGVtVmlldzo6Y3VycmVudENoYW5nZWQoY3VycmVudCwgcHJldmlvdXMpOworIH0K KyAKKyAvKiEKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJs ZXZpZXcuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3LmNwcAor aW5kZXggOTM0YWM1ODFiMi4uZjc5YmIyNDI0OSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lk Z2V0cy9pdGVtdmlld3MvcXRhYmxldmlldy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9p dGVtdmlld3MvcXRhYmxldmlldy5jcHAKK0BAIC0xMDEzLDYgKzEwMTMsNyBAQCB2b2lkIFFUYWJs ZVZpZXdQcml2YXRlOjpkcmF3Q2VsbChRUGFpbnRlciAqcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0 aW9uVmlld0l0ZW0gJgorIGludCBRVGFibGVWaWV3UHJpdmF0ZTo6d2lkdGhIaW50Rm9ySW5kZXgo Y29uc3QgUU1vZGVsSW5kZXggJmluZGV4LCBpbnQgaGludCwgY29uc3QgUVN0eWxlT3B0aW9uVmll d0l0ZW0gJm9wdGlvbikgY29uc3QKKyB7CisgICAgIFFfUShjb25zdCBRVGFibGVWaWV3KTsKKysg ICAgY29uc3QgaW50IG9sZEhpbnQgPSBoaW50OworICAgICBRV2lkZ2V0ICplZGl0b3IgPSBlZGl0 b3JGb3JJbmRleChpbmRleCkud2lkZ2V0LmRhdGEoKTsKKyAgICAgaWYgKGVkaXRvciAmJiBwZXJz aXN0ZW50LmNvbnRhaW5zKGVkaXRvcikpIHsKKyAgICAgICAgIGhpbnQgPSBxTWF4KGhpbnQsIGVk aXRvci0+c2l6ZUhpbnQoKS53aWR0aCgpKTsKK0BAIC0xMDIxLDYgKzEwMjIsMTcgQEAgaW50IFFU YWJsZVZpZXdQcml2YXRlOjp3aWR0aEhpbnRGb3JJbmRleChjb25zdCBRTW9kZWxJbmRleCAmaW5k ZXgsIGludCBoaW50LCBjb24KKyAgICAgICAgIGhpbnQgPSBxQm91bmQobWluLCBoaW50LCBtYXgp OworICAgICB9CisgICAgIGhpbnQgPSBxTWF4KGhpbnQsIHEtPml0ZW1EZWxlZ2F0ZShpbmRleCkt PnNpemVIaW50KG9wdGlvbiwgaW5kZXgpLndpZHRoKCkpOworKworKyAgICBpZiAoaGFzU3BhbnMo KSkgeworKyAgICAgICAgYXV0byBzcGFuID0gc3BhbnMuc3BhbkF0KGluZGV4LmNvbHVtbigpLCBp bmRleC5yb3coKSk7CisrICAgICAgICBpZiAoc3BhbiAmJiBzcGFuLT5tX2xlZnQgPT0gaW5kZXgu Y29sdW1uKCkgJiYgc3Bhbi0+bV90b3AgPT0gaW5kZXgucm93KCkpIHsKKysgICAgICAgICAgICAv LyBzcGFucyBhcmUgc2NyZXdlZCB1cCB3aGVuIHNlY3Rpb25zIGFyZSBtb3ZlZAorKyAgICAgICAg ICAgIGNvbnN0IGF1dG8gbGVmdCA9IGxvZ2ljYWxDb2x1bW4oc3Bhbi0+bV9sZWZ0KTsKKysgICAg ICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBzcGFuLT53aWR0aCgpOyArK2kpCisrICAgICAg ICAgICAgICAgaGludCAtPSBxLT5jb2x1bW5XaWR0aCh2aXN1YWxDb2x1bW4obGVmdCArIGkpKTsK KysgICAgICAgIH0KKysgICAgICAgIGhpbnQgPSBzdGQ6Om1heChoaW50LCBvbGRIaW50KTsKKysg ICAgfQorICAgICByZXR1cm4gaGludDsKKyB9CisgCitAQCAtMTA1Myw2ICsxMDY1LDExIEBAIGlu dCBRVGFibGVWaWV3UHJpdmF0ZTo6aGVpZ2h0SGludEZvckluZGV4KGNvbnN0IFFNb2RlbEluZGV4 ICZpbmRleCwgaW50IGhpbnQsIFFTCisgICAgICAgICBvcHRpb24ucmVjdC5zZXRIZWlnaHQoaGVp Z2h0KTsKKyAgICAgICAgIG9wdGlvbi5yZWN0LnNldFgocS0+Y29sdW1uVmlld3BvcnRQb3NpdGlv bihpbmRleC5jb2x1bW4oKSkpOworICAgICAgICAgb3B0aW9uLnJlY3Quc2V0V2lkdGgocS0+Y29s dW1uV2lkdGgoaW5kZXguY29sdW1uKCkpKTsKKysgICAgICAgIGlmIChoYXNTcGFucygpKSB7Cisr ICAgICAgICAgICAgYXV0byBzcGFuID0gc3BhbnMuc3BhbkF0KGluZGV4LmNvbHVtbigpLCBpbmRl eC5yb3coKSk7CisrICAgICAgICAgICAgaWYgKHNwYW4gJiYgc3Bhbi0+bV9sZWZ0ID09IGluZGV4 LmNvbHVtbigpICYmIHNwYW4tPm1fdG9wID09IGluZGV4LnJvdygpKQorKyAgICAgICAgICAgICAg ICBvcHRpb24ucmVjdC5zZXRXaWR0aChzdGQ6Om1heChvcHRpb24ucmVjdC53aWR0aCgpLCB2aXN1 YWxTcGFuUmVjdCgqc3Bhbikud2lkdGgoKSkpOworKyAgICAgICAgfQorICAgICAgICAgLy8gMXB4 IGxlc3Mgc3BhY2Ugd2hlbiBncmlkIGlzIHNob3duIChzZWUgZHJhd0NlbGwpCisgICAgICAgICBp ZiAoc2hvd0dyaWQpCisgICAgICAgICAgICAgb3B0aW9uLnJlY3Quc2V0V2lkdGgob3B0aW9uLnJl Y3Qud2lkdGgoKSAtIDEpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwv cWFjdGlvbi5oIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xYWN0aW9uLmgKK2luZGV4IDI1 OGExZWEwYTAuLjczN2MxZTgyODUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMva2Vy bmVsL3FhY3Rpb24uaAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xYWN0aW9uLmgK K0BAIC04MSw3ICs4MSw3IEBAIGNsYXNzIFFfV0lER0VUU19FWFBPUlQgUUFjdGlvbiA6IHB1Ymxp YyBRT2JqZWN0CisgICAgIFFfUFJPUEVSVFkoTWVudVJvbGUgbWVudVJvbGUgUkVBRCBtZW51Um9s ZSBXUklURSBzZXRNZW51Um9sZSBOT1RJRlkgY2hhbmdlZCkKKyAgICAgUV9QUk9QRVJUWShib29s IGljb25WaXNpYmxlSW5NZW51IFJFQUQgaXNJY29uVmlzaWJsZUluTWVudSBXUklURSBzZXRJY29u VmlzaWJsZUluTWVudSBOT1RJRlkgY2hhbmdlZCkKKyAgICAgUV9QUk9QRVJUWShib29sIHNob3J0 Y3V0VmlzaWJsZUluQ29udGV4dE1lbnUgUkVBRCBpc1Nob3J0Y3V0VmlzaWJsZUluQ29udGV4dE1l bnUgV1JJVEUgc2V0U2hvcnRjdXRWaXNpYmxlSW5Db250ZXh0TWVudSBOT1RJRlkgY2hhbmdlZCkK Ky0gICAgUV9QUk9QRVJUWShQcmlvcml0eSBwcmlvcml0eSBSRUFEIHByaW9yaXR5IFdSSVRFIHNl dFByaW9yaXR5KQorKyAgICBRX1BST1BFUlRZKFByaW9yaXR5IHByaW9yaXR5IFJFQUQgcHJpb3Jp dHkgV1JJVEUgc2V0UHJpb3JpdHkgTk9USUZZIGNoYW5nZWQpCisgCisgcHVibGljOgorICAgICAv LyBub3RlIHRoaXMgaXMgY29waWVkIGludG8gcXBsYXRmb3JtbWVudS5oLCB3aGljaCBtdXN0IHN0 YXkgaW4gc3luYworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdl dC5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXQuY3BwCitpbmRleCA5ZWJh MWUwMDFlLi4yNmY2ZDI3ZTE4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5l bC9xd2lkZ2V0LmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0LmNw cAorQEAgLTUyOTYsNyArNTI5Niw3IEBAIHZvaWQgUVdpZGdldFByaXZhdGU6OmRyYXdXaWRnZXQo UVBhaW50RGV2aWNlICpwZGV2LCBjb25zdCBRUmVnaW9uICZyZ24sIGNvbnN0IFFQCisgICAgICAg ICBRV2lkZ2V0RWZmZWN0U291cmNlUHJpdmF0ZSAqc291cmNlZCA9IHN0YXRpY19jYXN0PFFXaWRn ZXRFZmZlY3RTb3VyY2VQcml2YXRlICo+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNvdXJjZS0+ZF9mdW5jKCkpOworICAgICAgICAg aWYgKCFzb3VyY2VkLT5jb250ZXh0KSB7CistICAgICAgICAgICAgY29uc3QgUVJlZ2lvbiBlZmZl Y3RSZ24ocmduLmJvdW5kaW5nUmVjdCgpKTsKKysgICAgICAgICAgICBjb25zdCBRUmVnaW9uIGVm ZmVjdFJnbigoZmxhZ3MgJiBVc2VFZmZlY3RSZWdpb25Cb3VuZHMpID8gcmduLmJvdW5kaW5nUmVj dCgpIDogcmduKTsKKyAgICAgICAgICAgICBRV2lkZ2V0UGFpbnRDb250ZXh0IGNvbnRleHQocGRl diwgZWZmZWN0UmduLCBvZmZzZXQsIGZsYWdzLCBzaGFyZWRQYWludGVyLCByZXBhaW50TWFuYWdl cik7CisgICAgICAgICAgICAgc291cmNlZC0+Y29udGV4dCA9ICZjb250ZXh0OworICAgICAgICAg ICAgIGlmICghc2hhcmVkUGFpbnRlcikgeworQEAgLTUzMjgsNiArNTMyOCw3IEBAIHZvaWQgUVdp ZGdldFByaXZhdGU6OmRyYXdXaWRnZXQoUVBhaW50RGV2aWNlICpwZGV2LCBjb25zdCBRUmVnaW9u ICZyZ24sIGNvbnN0IFFQCisgICAgICAgICB9CisgICAgIH0KKyAjZW5kaWYgLy8gUVRfQ09ORklH KGdyYXBoaWNzZWZmZWN0KQorKyAgICBmbGFncyA9IGZsYWdzICYgflVzZUVmZmVjdFJlZ2lvbkJv dW5kczsKKyAKKyAgICAgY29uc3QgYm9vbCBhbHNvT25TY3JlZW4gPSBmbGFncyAmIERyYXdQYWlu dE9uU2NyZWVuOworICAgICBjb25zdCBib29sIHJlY3Vyc2l2ZSA9IGZsYWdzICYgRHJhd1JlY3Vy c2l2ZTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXRfcC5o IGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0X3AuaAoraW5kZXggZWVmNmI4ZmEy Yy4uYzQzMmY0YjVkNSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdp ZGdldF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldF9wLmgKK0BA IC0yMjksNyArMjI5LDggQEAgcHVibGljOgorICAgICAgICAgRG9udFN1YnRyYWN0T3BhcXVlQ2hp bGRyZW4gPSAweDEwLAorICAgICAgICAgRG9udERyYXdPcGFxdWVDaGlsZHJlbiA9IDB4MjAsCisg ICAgICAgICBEb250RHJhd05hdGl2ZUNoaWxkcmVuID0gMHg0MCwKKy0gICAgICAgIERvbnRTZXRD b21wb3NpdGlvbk1vZGUgPSAweDgwCisrICAgICAgICBEb250U2V0Q29tcG9zaXRpb25Nb2RlID0g MHg4MCwKKysgICAgICAgIFVzZUVmZmVjdFJlZ2lvbkJvdW5kcyA9IDB4MTAwCisgICAgIH07Cisg ICAgIFFfREVDTEFSRV9GTEFHUyhEcmF3V2lkZ2V0RmxhZ3MsIERyYXdXaWRnZXRGbGFnKQorICAg ICBRX0ZMQUcoRHJhd1dpZGdldEZsYWdzKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0 cy9rZXJuZWwvcXdpZGdldHJlcGFpbnRtYW5hZ2VyLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9r ZXJuZWwvcXdpZGdldHJlcGFpbnRtYW5hZ2VyLmNwcAoraW5kZXggMDI4ODBiMzRkYS4uMGQ0NGUx MzI2ZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldHJlcGFp bnRtYW5hZ2VyLmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0cmVw YWludG1hbmFnZXIuY3BwCitAQCAtMTAxOCw3ICsxMDE4LDggQEAgdm9pZCBRV2lkZ2V0UmVwYWlu dE1hbmFnZXI6OnBhaW50QW5kRmx1c2goKQorIAorICAgICAvLyBQYWludCB0aGUgcmVzdCB3aXRo IGNvbXBvc2l0aW9uLgorICAgICBpZiAocmVwYWludEFsbFdpZGdldHMgfHwgIWRpcnR5Q29weS5p c0VtcHR5KCkpIHsKKy0gICAgICAgIFFXaWRnZXRQcml2YXRlOjpEcmF3V2lkZ2V0RmxhZ3MgZmxh Z3MgPSBRV2lkZ2V0UHJpdmF0ZTo6RHJhd0FzUm9vdCB8IFFXaWRnZXRQcml2YXRlOjpEcmF3UmVj dXJzaXZlOworKyAgICAgICAgUVdpZGdldFByaXZhdGU6OkRyYXdXaWRnZXRGbGFncyBmbGFncyA9 IFFXaWRnZXRQcml2YXRlOjpEcmF3QXNSb290IHwgUVdpZGdldFByaXZhdGU6OkRyYXdSZWN1cnNp dmUKKysgICAgICAgICAgICAgICAgfCBRV2lkZ2V0UHJpdmF0ZTo6VXNlRWZmZWN0UmVnaW9uQm91 bmRzOworICAgICAgICAgdGx3LT5kX2Z1bmMoKS0+ZHJhd1dpZGdldChzdG9yZS0+cGFpbnREZXZp Y2UoKSwgZGlydHlDb3B5LCBRUG9pbnQoKSwgZmxhZ3MsIG51bGxwdHIsIHRoaXMpOworICAgICB9 CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3N0eWxlcy9xZnVzaW9uc3R5bGUu Y3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL3N0eWxlcy9xZnVzaW9uc3R5bGUuY3BwCitpbmRleCBm NDM0NWQ5N2M0Li45NjI5MTJjODM4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3N0 eWxlcy9xZnVzaW9uc3R5bGUuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvc3R5bGVzL3Fm dXNpb25zdHlsZS5jcHAKK0BAIC0xNzcyLDE0ICsxNzcyLDYgQEAgdm9pZCBRRnVzaW9uU3R5bGU6 OmRyYXdDb250cm9sKENvbnRyb2xFbGVtZW50IGVsZW1lbnQsIGNvbnN0IFFTdHlsZU9wdGlvbiAq b3B0aW8KKyAgICAgICAgICAgICBwcm94eSgpLT5kcmF3Q29udHJvbChDRV9QdXNoQnV0dG9uTGFi ZWwsICZzdWJvcHQsIHBhaW50ZXIsIHdpZGdldCk7CisgICAgICAgICB9CisgICAgICAgICBicmVh azsKKy0gICAgY2FzZSBDRV9QdXNoQnV0dG9uTGFiZWw6CistICAgICAgICBpZiAoY29uc3QgUVN0 eWxlT3B0aW9uQnV0dG9uICpidXR0b24gPSBxc3R5bGVvcHRpb25fY2FzdDxjb25zdCBRU3R5bGVP cHRpb25CdXR0b24gKj4ob3B0aW9uKSkgeworLSAgICAgICAgICAgIFFTdHlsZU9wdGlvbkJ1dHRv biBiKCpidXR0b24pOworLSAgICAgICAgICAgIC8vIG5vIFBNX0J1dHRvblNoaWZ0SG9yaXpvbnRh bCBhbmQgUE1fQnV0dG9uU2hpZnRWZXJ0aWNhbCBmb3IgZnVzaW9uIHN0eWxlCistICAgICAgICAg ICAgYi5zdGF0ZSAmPSB+KFN0YXRlX09uIHwgU3RhdGVfU3Vua2VuKTsKKy0gICAgICAgICAgICBR Q29tbW9uU3R5bGU6OmRyYXdDb250cm9sKGVsZW1lbnQsICZiLCBwYWludGVyLCB3aWRnZXQpOwor LSAgICAgICAgfQorLSAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgQ0VfTWVudUJhckVtcHR5QXJl YToKKyAgICAgICAgIHBhaW50ZXItPnNhdmUoKTsKKyAgICAgeworZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvd2lkZ2V0cy91dGlsL3Fjb21wbGV0ZXIuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL3V0 aWwvcWNvbXBsZXRlci5jcHAKK2luZGV4IDE4YjI0MDYzZDguLmVmNzIwN2E4YTMgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvdXRpbC9xY29tcGxldGVyLmNwcAorKysrIGIvcXRiYXNl L3NyYy93aWRnZXRzL3V0aWwvcWNvbXBsZXRlci5jcHAKK0BAIC0xMTIwLDYgKzExMjAsOCBAQCB2 b2lkIFFDb21wbGV0ZXI6OnNldE1vZGVsKFFBYnN0cmFjdEl0ZW1Nb2RlbCAqbW9kZWwpCisgewor ICAgICBRX0QoUUNvbXBsZXRlcik7CisgICAgIFFBYnN0cmFjdEl0ZW1Nb2RlbCAqb2xkTW9kZWwg PSBkLT5wcm94eS0+c291cmNlTW9kZWwoKTsKKysgICAgaWYgKG9sZE1vZGVsID09IG1vZGVsKQor KyAgICAgICAgcmV0dXJuOworICNpZiBRVF9DT05GSUcoZmlsZXN5c3RlbW1vZGVsKQorICAgICBp ZiAocW9iamVjdF9jYXN0PGNvbnN0IFFGaWxlU3lzdGVtTW9kZWwgKj4ob2xkTW9kZWwpKQorICAg ICAgICAgc2V0Q29tcGxldGlvblJvbGUoUXQ6OkVkaXRSb2xlKTsgLy8gUVRCVUctNTQ2NDIsIGNs ZWFyIEZpbGVOYW1lUm9sZSBzZXQgYnkgUUZpbGVTeXN0ZW1Nb2RlbAorZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi5jcHAgYi9xdGJhc2Uvc3Jj L3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24uY3BwCitpbmRleCBhMTI4YjIzOTUwLi5k YzQwYmY2MmZiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWFic3Ry YWN0YnV0dG9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0 YnV0dG9uLmNwcAorQEAgLTU2LDYgKzU2LDcgQEAKKyAjaWZuZGVmIFFUX05PX0FDQ0VTU0lCSUxJ VFkKKyAjaW5jbHVkZSAicWFjY2Vzc2libGUuaCIKKyAjZW5kaWYKKysjaW5jbHVkZSA8cXBhL3Fw bGF0Zm9ybXRoZW1lLmg+CisgCisgI2luY2x1ZGUgPGFsZ29yaXRobT4KKyAKK0BAIC0xMDc2LDE5 ICsxMDc3LDE5IEBAIHZvaWQgUUFic3RyYWN0QnV0dG9uOjprZXlQcmVzc0V2ZW50KFFLZXlFdmVu dCAqZSkKKyB7CisgICAgIFFfRChRQWJzdHJhY3RCdXR0b24pOworICAgICBib29sIG5leHQgPSB0 cnVlOworLSAgICBzd2l0Y2ggKGUtPmtleSgpKSB7CistICAgIGNhc2UgUXQ6OktleV9FbnRlcjoK Ky0gICAgY2FzZSBRdDo6S2V5X1JldHVybjoKKy0gICAgICAgIGUtPmlnbm9yZSgpOworLSAgICAg ICAgYnJlYWs7CistICAgIGNhc2UgUXQ6OktleV9TZWxlY3Q6CistICAgIGNhc2UgUXQ6OktleV9T cGFjZToKKy0gICAgICAgIGlmICghZS0+aXNBdXRvUmVwZWF0KCkpIHsKKy0gICAgICAgICAgICBz ZXREb3duKHRydWUpOworLSAgICAgICAgICAgIHJlcGFpbnQoKTsKKy0gICAgICAgICAgICBkLT5l bWl0UHJlc3NlZCgpOworLSAgICAgICAgfQorLSAgICAgICAgYnJlYWs7CisrCisrICAgIGNvbnN0 IGF1dG8ga2V5ID0gc3RhdGljX2Nhc3Q8UXQ6OktleT4oZS0+a2V5KCkpOworKyAgICBjb25zdCBh dXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhl bWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhp bnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgaWYg KGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhrZXkpICYmICFlLT5pc0F1dG9SZXBlYXQoKSkgewor KyAgICAgICAgc2V0RG93bih0cnVlKTsKKysgICAgICAgIHJlcGFpbnQoKTsKKysgICAgICAgIGQt PmVtaXRQcmVzc2VkKCk7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysKKysgICAgc3dpdGNo IChrZXkpIHsKKyAgICAgY2FzZSBRdDo6S2V5X1VwOgorICAgICAgICAgbmV4dCA9IGZhbHNlOwor ICAgICAgICAgUV9GQUxMVEhST1VHSCgpOworQEAgLTExNTMsMTUgKzExNTQsMTUgQEAgdm9pZCBR QWJzdHJhY3RCdXR0b246OmtleVJlbGVhc2VFdmVudChRS2V5RXZlbnQgKmUpCisgICAgIGlmICgh ZS0+aXNBdXRvUmVwZWF0KCkpCisgICAgICAgICBkLT5yZXBlYXRUaW1lci5zdG9wKCk7CisgCist ICAgIHN3aXRjaCAoZS0+a2V5KCkpIHsKKy0gICAgY2FzZSBRdDo6S2V5X1NlbGVjdDoKKy0gICAg Y2FzZSBRdDo6S2V5X1NwYWNlOgorLSAgICAgICAgaWYgKCFlLT5pc0F1dG9SZXBlYXQoKSAmJiBk LT5kb3duKQorLSAgICAgICAgICAgIGQtPmNsaWNrKCk7CistICAgICAgICBicmVhazsKKy0gICAg ZGVmYXVsdDoKKy0gICAgICAgIGUtPmlnbm9yZSgpOworKyAgICBjb25zdCBhdXRvIGJ1dHRvblBy ZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3Jt VGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgaWYgKGJ1dHRvblByZXNz S2V5cy5jb250YWlucyhzdGF0aWNfY2FzdDxRdDo6S2V5PihlLT5rZXkoKSkpICYmICFlLT5pc0F1 dG9SZXBlYXQoKSAmJiBkLT5kb3duKSB7CisrICAgICAgICBkLT5jbGljaygpOworKyAgICAgICAg cmV0dXJuOworICAgICB9CisrCisrICAgIGUtPmlnbm9yZSgpOworIH0KKyAKKyAvKiFccmVpbXAK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3guY3BwIGIv cXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94LmNwcAoraW5kZXggN2E0OTZjMjdl MC4uMGEzZDk2NjQ3YiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fj b21ib2JveC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC5j cHAKK0BAIC0zMzUyLDcgKzMzNTIsMjMgQEAgdm9pZCBRQ29tYm9Cb3g6OmtleVByZXNzRXZlbnQo UUtleUV2ZW50ICplKQorIAorICAgICBNb3ZlIG1vdmUgPSBOb01vdmU7CisgICAgIGludCBuZXdJ bmRleCA9IGN1cnJlbnRJbmRleCgpOworLSAgICBzd2l0Y2ggKGUtPmtleSgpKSB7CisrCisrICAg IGJvb2wgcHJlc3NMaWtlQnV0dG9uID0gIWQtPmxpbmVFZGl0OworKyNpZmRlZiBRVF9LRVlQQURf TkFWSUdBVElPTgorKyAgICBwcmVzc0xpa2VCdXR0b24gfD0gUUFwcGxpY2F0aW9uUHJpdmF0ZTo6 a2V5cGFkTmF2aWdhdGlvbkVuYWJsZWQoKSAmJiAhaGFzRWRpdEZvY3VzKCk7CisrI2VuZGlmCisr ICAgIGF1dG8ga2V5ID0gc3RhdGljX2Nhc3Q8UXQ6OktleT4oZS0+a2V5KCkpOworKyAgICBpZiAo cHJlc3NMaWtlQnV0dG9uKSB7CisrICAgICAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9 IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1l OjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICAgICAgaWYgKGJ1dHRvblBy ZXNzS2V5cy5jb250YWlucyhrZXkpKSB7CisrICAgICAgICAgICAgc2hvd1BvcHVwKCk7CisrICAg ICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIHN3aXRjaCAoa2V5 KSB7CisgICAgIGNhc2UgUXQ6OktleV9VcDoKKyAgICAgICAgIGlmIChlLT5tb2RpZmllcnMoKSAm IFF0OjpDb250cm9sTW9kaWZpZXIpCisgICAgICAgICAgICAgYnJlYWs7IC8vIHBhc3MgdG8gbGlu ZSBlZGl0IGZvciBhdXRvIGNvbXBsZXRpb24KK0BAIC0zMzk0LDI2ICszNDEwLDExIEBAIHZvaWQg UUNvbWJvQm94OjprZXlQcmVzc0V2ZW50KFFLZXlFdmVudCAqZSkKKyAgICAgICAgICAgICByZXR1 cm47CisgICAgICAgICB9CisgICAgICAgICBicmVhazsKKy0gICAgY2FzZSBRdDo6S2V5X1NwYWNl OgorLSAgICAgICAgaWYgKCFkLT5saW5lRWRpdCkgeworLSAgICAgICAgICAgIHNob3dQb3B1cCgp OworLSAgICAgICAgICAgIHJldHVybjsKKy0gICAgICAgIH0KKy0gICAgICAgIGJyZWFrOworLSAg ICBjYXNlIFF0OjpLZXlfRW50ZXI6CistICAgIGNhc2UgUXQ6OktleV9SZXR1cm46CisgICAgIGNh c2UgUXQ6OktleV9Fc2NhcGU6CisgICAgICAgICBpZiAoIWQtPmxpbmVFZGl0KQorICAgICAgICAg ICAgIGUtPmlnbm9yZSgpOworICAgICAgICAgYnJlYWs7CisgI2lmZGVmIFFUX0tFWVBBRF9OQVZJ R0FUSU9OCistICAgIGNhc2UgUXQ6OktleV9TZWxlY3Q6CistICAgICAgICBpZiAoUUFwcGxpY2F0 aW9uUHJpdmF0ZTo6a2V5cGFkTmF2aWdhdGlvbkVuYWJsZWQoKQorLSAgICAgICAgICAgICAgICAm JiAoIWhhc0VkaXRGb2N1cygpIHx8ICFkLT5saW5lRWRpdCkpIHsKKy0gICAgICAgICAgICBzaG93 UG9wdXAoKTsKKy0gICAgICAgICAgICByZXR1cm47CistICAgICAgICB9CistICAgICAgICBicmVh azsKKyAgICAgY2FzZSBRdDo6S2V5X0xlZnQ6CisgICAgIGNhc2UgUXQ6OktleV9SaWdodDoKKyAg ICAgICAgIGlmIChRQXBwbGljYXRpb25Qcml2YXRlOjprZXlwYWROYXZpZ2F0aW9uRW5hYmxlZCgp ICYmICFoYXNFZGl0Rm9jdXMoKSkKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lk Z2V0cy9xZGF0ZXRpbWVlZGl0X3AuaCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FkYXRl dGltZWVkaXRfcC5oCitpbmRleCBkMzZiNmY4ZjlhLi5lMGRmNWI1MTU4IDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWRhdGV0aW1lZWRpdF9wLmgKKysrKyBiL3F0YmFz ZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FkYXRldGltZWVkaXRfcC5oCitAQCAtMSw2ICsxLDYgQEAK KyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorICoqCistKiogQ29weXJpZ2h0IChDKSAyMDE4IFRoZSBR dCBDb21wYW55IEx0ZC4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRk LgorICoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdFdpZGdldHMgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0 LgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJveC5jcHAg Yi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3guY3BwCitpbmRleCAwMmEwYmVk MzI1Li4zZjNlY2NjMzcwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMv cWdyb3VwYm94LmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94 LmNwcAorQEAgLTU0LDYgKzU0LDggQEAKKyAjaW5jbHVkZSAicWFjY2Vzc2libGUuaCIKKyAjZW5k aWYKKyAjaW5jbHVkZSA8cHJpdmF0ZS9xd2lkZ2V0X3AuaD4KKysjaW5jbHVkZSA8cHJpdmF0ZS9x Z3VpYXBwbGljYXRpb25fcC5oPgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtdGhlbWUuaD4KKyAK KyAjaW5jbHVkZSAicWRlYnVnLmgiCisgCitAQCAtMzYwLDcgKzM2MiwxMCBAQCBib29sIFFHcm91 cEJveDo6ZXZlbnQoUUV2ZW50ICplKQorICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgIGNhc2Ug UUV2ZW50OjpLZXlQcmVzczogeworICAgICAgICAgUUtleUV2ZW50ICprID0gc3RhdGljX2Nhc3Q8 UUtleUV2ZW50Kj4oZSk7CistICAgICAgICBpZiAoIWstPmlzQXV0b1JlcGVhdCgpICYmIChrLT5r ZXkoKSA9PSBRdDo6S2V5X1NlbGVjdCB8fCBrLT5rZXkoKSA9PSBRdDo6S2V5X1NwYWNlKSkgewor KyAgICAgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2 YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlz dDxRdDo6S2V5Pj4oKTsKKysgICAgICAgIGlmICghay0+aXNBdXRvUmVwZWF0KCkgJiYgYnV0dG9u UHJlc3NLZXlzLmNvbnRhaW5zKHN0YXRpY19jYXN0PFF0OjpLZXk+KGstPmtleSgpKSkpIHsKKyAg ICAgICAgICAgICBkLT5wcmVzc2VkQ29udHJvbCA9IFFTdHlsZTo6U0NfR3JvdXBCb3hDaGVja0Jv eDsKKyAgICAgICAgICAgICB1cGRhdGUoc3R5bGUoKS0+c3ViQ29udHJvbFJlY3QoUVN0eWxlOjpD Q19Hcm91cEJveCwgJmJveCwgUVN0eWxlOjpTQ19Hcm91cEJveENoZWNrQm94LCB0aGlzKSk7Cisg ICAgICAgICAgICAgcmV0dXJuIHRydWU7CitAQCAtMzY5LDcgKzM3NCwxMCBAQCBib29sIFFHcm91 cEJveDo6ZXZlbnQoUUV2ZW50ICplKQorICAgICB9CisgICAgIGNhc2UgUUV2ZW50OjpLZXlSZWxl YXNlOiB7CisgICAgICAgICBRS2V5RXZlbnQgKmsgPSBzdGF0aWNfY2FzdDxRS2V5RXZlbnQqPihl KTsKKy0gICAgICAgIGlmICghay0+aXNBdXRvUmVwZWF0KCkgJiYgKGstPmtleSgpID09IFF0OjpL ZXlfU2VsZWN0IHx8IGstPmtleSgpID09IFF0OjpLZXlfU3BhY2UpKSB7CisrICAgICAgICBjb25z dCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3Jt VGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+Pigp OworKyAgICAgICAgaWYgKCFrLT5pc0F1dG9SZXBlYXQoKSAmJiBidXR0b25QcmVzc0tleXMuY29u dGFpbnMoc3RhdGljX2Nhc3Q8UXQ6OktleT4oay0+a2V5KCkpKSkgeworICAgICAgICAgICAgIGJv b2wgdG9nZ2xlID0gKGQtPnByZXNzZWRDb250cm9sID09IFFTdHlsZTo6U0NfR3JvdXBCb3hMYWJl bAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGQtPnByZXNzZWRDb250cm9sID09IFFT dHlsZTo6U0NfR3JvdXBCb3hDaGVja0JveCk7CisgICAgICAgICAgICAgZC0+cHJlc3NlZENvbnRy b2wgPSBRU3R5bGU6OlNDX05vbmU7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3dp ZGdldHMvcWxhYmVsLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FsYWJlbC5jcHAK K2luZGV4IDMwZmY4MGNiYjAuLmNmMjYwNWMxN2MgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dp ZGdldHMvd2lkZ2V0cy9xbGFiZWwuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0 cy9xbGFiZWwuY3BwCitAQCAtNDIxLDkgKzQyMSw2IEBAIHZvaWQgUUxhYmVsOjpzZXRQaXhtYXAo Y29uc3QgUVBpeG1hcCAmcGl4bWFwKQorICAgICAgICAgZC0+cGl4bWFwID0gbmV3IFFQaXhtYXAo cGl4bWFwKTsKKyAgICAgfQorIAorLSAgICBpZiAoZC0+cGl4bWFwLT5kZXB0aCgpID09IDEgJiYg IWQtPnBpeG1hcC0+bWFzaygpKQorLSAgICAgICAgZC0+cGl4bWFwLT5zZXRNYXNrKCooKFFCaXRt YXAgKilkLT5waXhtYXApKTsKKy0KKyAgICAgZC0+dXBkYXRlTGFiZWwoKTsKKyB9CisgCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcXRvb2xiYXJhcmVhbGF5b3V0LmNw cCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3F0b29sYmFyYXJlYWxheW91dC5jcHAKK2lu ZGV4IDQ5M2MwOTRjYzEuLmQ1ZjRiNTkwMTcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdl dHMvd2lkZ2V0cy9xdG9vbGJhcmFyZWFsYXlvdXQuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdl dHMvd2lkZ2V0cy9xdG9vbGJhcmFyZWFsYXlvdXQuY3BwCitAQCAtMTM2Nyw3ICsxMzY3LDcgQEAg Ym9vbCBRVG9vbEJhckFyZWFMYXlvdXQ6OnJlc3RvcmVTdGF0ZShRRGF0YVN0cmVhbSAmc3RyZWFt LCBjb25zdCBRTGlzdDxRVG9vbEJhcioKKyAgICAgICAgICAgICAgICAgaXRlbS53aWRnZXRJdGVt ID0gbmV3IFFXaWRnZXRJdGVtVjIodG9vbEJhcik7CisgICAgICAgICAgICAgICAgIHRvb2xCYXIt PnNldE9yaWVudGF0aW9uKGZsb2F0aW5nID8gKChzaG93biAmIDIpID8gUXQ6OlZlcnRpY2FsIDog UXQ6Okhvcml6b250YWwpIDogZG9jay5vKTsKKyAgICAgICAgICAgICAgICAgdG9vbEJhci0+c2V0 VmlzaWJsZShzaG93biAmIDEpOworLSAgICAgICAgICAgICAgICB0b29sQmFyLT5kX2Z1bmMoKS0+ c2V0V2luZG93U3RhdGUoZmxvYXRpbmcsIHRydWUsIHJlY3QpOworKyAgICAgICAgICAgICAgICB0 b29sQmFyLT5kX2Z1bmMoKS0+c2V0V2luZG93U3RhdGUoZmxvYXRpbmcsIGZhbHNlLCByZWN0KTsK KyAKKyAgICAgICAgICAgICAgICAgaXRlbS5wcmVmZXJyZWRTaXplID0gaXRlbS5zaXplOworICAg ICAgICAgICAgICAgICBsaW5lLnRvb2xCYXJJdGVtcy5hcHBlbmQoaXRlbSk7CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVs L3RzdF9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2Nv bmN1cnJlbnQvcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC90c3RfcXRjb25jdXJyZW50aXRlcmF0 ZWtlcm5lbC5jcHAKK2luZGV4IDIxMmMwYTJlMTMuLjNjNzdiMWJhMGIgMTAwNjQ0CistLS0gYS9x dGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwvdHN0 X3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9j b25jdXJyZW50L3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwvdHN0X3F0Y29uY3VycmVudGl0ZXJh dGVrZXJuZWwuY3BwCitAQCAtMTI2LDggKzEyNiw3IEBAIHB1YmxpYzoKKyAKKyB2b2lkIHRzdF9R dENvbmN1cnJlbnRJdGVyYXRlS2VybmVsOjppbnN0YW50aWF0ZSgpCisgeworLSAgICBhdXRvIGZ1 dHVyZSA9IHN0YXJ0VGhyZWFkRW5naW5lKG5ldyBQcmludEZvcigwLCA0MCkpLnN0YXJ0QXN5bmNo cm9ub3VzbHkoKTsKKy0gICAgZnV0dXJlLndhaXRGb3JGaW5pc2hlZCgpOworKyAgICBzdGFydFRo cmVhZEVuZ2luZShuZXcgUHJpbnRGb3IoMCwgNDApKS5zdGFydEJsb2NraW5nKCk7CisgICAgIFFD T01QQVJFKGl0ZXJhdGlvbnMubG9hZFJlbGF4ZWQoKSwgNDApOworIH0KKyAKK0BAIC0xNjYsMTAg KzE2NSw4IEBAIHZvaWQgdHN0X1F0Q29uY3VycmVudEl0ZXJhdGVLZXJuZWw6OnN0cmVzc3Rlc3Qo KQorICAgICBjb25zdCBpbnQgdGltZXMgPSA1MDsKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0 aW1lczsgKytpKSB7CisgICAgICAgICBjb3VudGVyLnN0b3JlUmVsYXhlZCgwKTsKKy0gICAgICAg IC8vIFRocmVhZEVuZ2luZSB3aWxsIGRlbGV0ZSBmIHdoZW4gaXQgZmluaXNoZXMKKy0gICAgICAg IGF1dG8gZiA9IG5ldyBDb3VudEZvcigwLCBpdGVyYXRpb25zKTsKKy0gICAgICAgIGF1dG8gZnV0 dXJlID0gZi0+c3RhcnRBc3luY2hyb25vdXNseSgpOworLSAgICAgICAgZnV0dXJlLndhaXRGb3JG aW5pc2hlZCgpOworKyAgICAgICAgQ291bnRGb3IgZigwLCBpdGVyYXRpb25zKTsKKysgICAgICAg IGYuc3RhcnRCbG9ja2luZygpOworICAgICAgICAgUUNPTVBBUkUoY291bnRlci5sb2FkUmVsYXhl ZCgpLCBpdGVyYXRpb25zKTsKKyAgICAgfQorIH0KK0BAIC0xNzcsMTEgKzE3NCw4IEBAIHZvaWQg dHN0X1F0Q29uY3VycmVudEl0ZXJhdGVLZXJuZWw6OnN0cmVzc3Rlc3QoKQorIHZvaWQgdHN0X1F0 Q29uY3VycmVudEl0ZXJhdGVLZXJuZWw6Om5vSXRlcmF0aW9ucygpCisgeworICAgICBjb25zdCBp bnQgdGltZXMgPSAyMDAwMDsKKy0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0aW1lczsgKytpKSB7 CistICAgICAgICBhdXRvIGZ1dHVyZSA9IHN0YXJ0VGhyZWFkRW5naW5lKG5ldyBJdGVyYXRlS2Vy bmVsPFRlc3RJdGVyYXRvciwgdm9pZD4oMCwgMCkpCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgICAgIGZ1dHVyZS53YWl0Rm9yRmlu aXNoZWQoKTsKKy0gICAgfQorKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHRpbWVzOyArK2kpCisr ICAgICAgICBzdGFydFRocmVhZEVuZ2luZShuZXcgSXRlcmF0ZUtlcm5lbDxUZXN0SXRlcmF0b3Is IHZvaWQ+KDAsIDApKS5zdGFydEJsb2NraW5nKCk7CisgfQorIAorIFFNdXRleCB0aHJlYWRzTXV0 ZXg7CitAQCAtMjM2LDEwICsyMzAsOCBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRJdGVyYXRlS2Vy bmVsOjp0aHJvdHRsaW5nKCkKKyAKKyAgICAgdGhyZWFkcy5jbGVhcigpOworIAorLSAgICAvLyBU aHJlYWRFbmdpbmUgd2lsbCBkZWxldGUgZiB3aGVuIGl0IGZpbmlzaGVzCistICAgIGF1dG8gZiA9 IG5ldyBUaHJvdHRsZUZvcigwLCB0b3RhbEl0ZXJhdGlvbnMpOworLSAgICBhdXRvIGZ1dHVyZSA9 IGYtPnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgZnV0dXJlLndhaXRGb3JGaW5pc2hlZCgp OworKyAgICBUaHJvdHRsZUZvciBmKDAsIHRvdGFsSXRlcmF0aW9ucyk7CisrICAgIGYuc3RhcnRC bG9ja2luZygpOworIAorICAgICBRQ09NUEFSRShpdGVyYXRpb25zLmxvYWRSZWxheGVkKCksIHRv dGFsSXRlcmF0aW9ucyk7CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3Vy cmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUvdHN0X3F0Y29uY3VycmVudHRocmVhZGVuZ2lu ZS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVu Z2luZS90c3RfcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAoraW5kZXggYWM3YmU3YWNkZC4u ODFiYzY0YzhkOSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRj b25jdXJyZW50dGhyZWFkZW5naW5lL3RzdF9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuY3BwCisr KysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2lu ZS90c3RfcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmNwcAorQEAgLTY1LDkgKzY1LDE2IEBAIHB1 YmxpYzoKKyAKKyB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OnJ1bkRpcmVjdGx5 KCkKKyB7CistICAgIFByaW50VXNlciAqZW5naW5lID0gbmV3IFByaW50VXNlcigpOworLSAgICBR RnV0dXJlPHZvaWQ+IGYgPSBlbmdpbmUtPnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgZi53 YWl0Rm9yRmluaXNoZWQoKTsKKysgICAgeworKyAgICAgICAgUHJpbnRVc2VyIGVuZ2luZTsKKysg ICAgICAgIGVuZ2luZS5zdGFydFNpbmdsZVRocmVhZGVkKCk7CisrICAgICAgICBlbmdpbmUuc3Rh cnRCbG9ja2luZygpOworKyAgICB9CisrICAgIHsKKysgICAgICAgIFByaW50VXNlciAqZW5naW5l ID0gbmV3IFByaW50VXNlcigpOworKyAgICAgICAgUUZ1dHVyZTx2b2lkPiBmID0gZW5naW5lLT5z dGFydEFzeW5jaHJvbm91c2x5KCk7CisrICAgICAgICBmLndhaXRGb3JGaW5pc2hlZCgpOworKyAg ICB9CisgfQorIAorIGNsYXNzIFN0cmluZ1Jlc3VsdFVzZXIgOiBwdWJsaWMgVGhyZWFkRW5naW5l PFFTdHJpbmc+CitAQCAtOTksMTAgKzEwNiw4IEBAIHB1YmxpYzoKKyAKKyB2b2lkIHRzdF9RdENv bmN1cnJlbnRUaHJlYWRFbmdpbmU6OnJlc3VsdCgpCisgeworLSAgICAvLyBUaHJlYWRFbmdpbmUg d2lsbCBkZWxldGUgJ2VuZ2luZScgd2hlbiBpdCBmaW5pc2hlcworLSAgICBhdXRvIGVuZ2luZSA9 IG5ldyBTdHJpbmdSZXN1bHRVc2VyKCk7CistICAgIGF1dG8gZnV0dXJlID0gZW5naW5lLT5zdGFy dEFzeW5jaHJvbm91c2x5KCk7CistICAgIFFDT01QQVJFKGZ1dHVyZS5yZXN1bHQoKSwgUVN0cmlu ZygiRm9vIikpOworKyAgICBTdHJpbmdSZXN1bHRVc2VyIGVuZ2luZTsKKysgICAgUUNPTVBBUkUo KmVuZ2luZS5zdGFydEJsb2NraW5nKCksIFFTdHJpbmcoIkZvbyIpKTsKKyB9CisgCisgY2xhc3Mg Vm9pZFJlc3VsdFVzZXIgOiBwdWJsaWMgVGhyZWFkRW5naW5lPHZvaWQ+CitAQCAtMTI4LDkgKzEz MywxNyBAQCBwdWJsaWM6CisgCisgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjpy dW5UaHJvdWdoU3RhcnRlcigpCisgeworLSAgICBUaHJlYWRFbmdpbmVTdGFydGVyPFFTdHJpbmc+ IHN0YXJ0ZXIgPSBzdGFydFRocmVhZEVuZ2luZShuZXcgU3RyaW5nUmVzdWx0VXNlcigpKTsKKy0g ICAgUUZ1dHVyZTxRU3RyaW5nPiBmID0gc3RhcnRlci5zdGFydEFzeW5jaHJvbm91c2x5KCk7Cist ICAgIFFDT01QQVJFKGYucmVzdWx0KCksIFFTdHJpbmcoIkZvbyIpKTsKKysgICAgeworKyAgICAg ICAgVGhyZWFkRW5naW5lU3RhcnRlcjxRU3RyaW5nPiBzdGFydGVyID0gc3RhcnRUaHJlYWRFbmdp bmUobmV3IFN0cmluZ1Jlc3VsdFVzZXIoKSk7CisrICAgICAgICBRRnV0dXJlPFFTdHJpbmc+ICBm ID0gc3RhcnRlci5zdGFydEFzeW5jaHJvbm91c2x5KCk7CisrICAgICAgICBRQ09NUEFSRShmLnJl c3VsdCgpLCBRU3RyaW5nKCJGb28iKSk7CisrICAgIH0KKysKKysgICAgeworKyAgICAgICAgVGhy ZWFkRW5naW5lU3RhcnRlcjxRU3RyaW5nPiBzdGFydGVyID0gc3RhcnRUaHJlYWRFbmdpbmUobmV3 IFN0cmluZ1Jlc3VsdFVzZXIoKSk7CisrICAgICAgICBRU3RyaW5nIHN0ciA9IHN0YXJ0ZXIuc3Rh cnRCbG9ja2luZygpOworKyAgICAgICAgUUNPTVBBUkUoc3RyLCBRU3RyaW5nKCJGb28iKSk7Cisr ICAgIH0KKyB9CisgCisgY2xhc3MgQ2FuY2VsVXNlciA6IHB1YmxpYyBUaHJlYWRFbmdpbmU8dm9p ZD4KK0BAIC0yMTMsNiArMjI2LDEyIEBAIHZvaWQgdHN0X1F0Q29uY3VycmVudFRocmVhZEVuZ2lu ZTo6dGhyb3R0bGUoKQorICAgICAgICAgZi53YWl0Rm9yRmluaXNoZWQoKTsKKyAgICAgICAgIFFD T01QQVJFKGNvdW50LmxvYWRSZWxheGVkKCksIDApOworICAgICB9CisrCisrICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgcmVwZWF0czsgKytpKSB7CisrICAgICAgICBUaHJvdHRsZUFsd2F5c1VzZXIg dDsKKysgICAgICAgIHQuc3RhcnRCbG9ja2luZygpOworKyAgICAgICAgUUNPTVBBUkUoY291bnQu bG9hZFJlbGF4ZWQoKSwgMCk7CisrICAgIH0KKyB9CisgCisgUVNldDxRVGhyZWFkICo+IHRocmVh ZHM7CitAQCAtMjQ5LDE3ICsyNjgsMzUgQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5n aW5lOjp0aHJlYWRDb3VudCgpCisgeworICAgICBjb25zdCBpbnQgcmVwZWF0cyA9IDEwOworICAg ICBmb3IgKGludCBpID0gMDsgaSA8IHJlcGVhdHM7ICsraSkgeworKyAgICAgICAgVGhyZWFkQ291 bnRVc2VyIHQ7CisrICAgICAgICB0LnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIGludCBjb3Vu dCA9IHRocmVhZHMuY291bnQoKTsKKysgICAgICAgIGludCBjb3VudF9leHBlY3RlZCA9IFFUaHJl YWRQb29sOjpnbG9iYWxJbnN0YW5jZSgpLT5tYXhUaHJlYWRDb3VudCgpICsgMTsgLy8gKzEgZm9y IHRoZSBtYWluIHRocmVhZC4KKysgICAgICAgIGlmIChjb3VudCAhPSBjb3VudF9leHBlY3RlZCkK KysgICAgICAgICAgICBRRVhQRUNUX0ZBSUwoIiIsICJRVEJVRy0yMzMzMyIsIEFib3J0KTsKKysg ICAgICAgIFFDT01QQVJFKGNvdW50LCBjb3VudF9leHBlY3RlZCk7CisrCisgICAgICAgICAobmV3 IFRocmVhZENvdW50VXNlcigpKS0+c3RhcnRBc3luY2hyb25vdXNseSgpLndhaXRGb3JGaW5pc2hl ZCgpOworLSAgICAgICAgY29uc3QgYXV0byBjb3VudCA9IHRocmVhZHMuY291bnQoKTsKKy0gICAg ICAgIGNvbnN0IGF1dG8gbWF4VGhyZWFkQ291bnQgPSBRVGhyZWFkUG9vbDo6Z2xvYmFsSW5zdGFu Y2UoKS0+bWF4VGhyZWFkQ291bnQoKTsKKy0gICAgICAgIFFWRVJJRlkoY291bnQgPD0gbWF4VGhy ZWFkQ291bnQpOworLSAgICAgICAgUVZFUklGWSghdGhyZWFkcy5jb250YWlucyhRVGhyZWFkOjpj dXJyZW50VGhyZWFkKCkpKTsKKysgICAgICAgIGNvdW50ID0gdGhyZWFkcy5jb3VudCgpOworKyAg ICAgICAgY291bnRfZXhwZWN0ZWQgPSBRVGhyZWFkUG9vbDo6Z2xvYmFsSW5zdGFuY2UoKS0+bWF4 VGhyZWFkQ291bnQoKTsKKysgICAgICAgIGlmIChjb3VudCAhPSBjb3VudF9leHBlY3RlZCkKKysg ICAgICAgICAgICBRRVhQRUNUX0ZBSUwoIiIsICJRVEJVRy0yMzMzMyIsIEFib3J0KTsKKysgICAg ICAgIFFDT01QQVJFKGNvdW50LCBjb3VudF9leHBlY3RlZCk7CisgICAgIH0KKyAKKyAgICAgLy8g U2V0IHRoZSBmaW5pc2ggZmxhZyBpbW1lZGlhdGVseSwgdGhpcyBzaG91bGQgZ2l2ZSB1cyBvbmUg dGhyZWFkIG9ubHkuCisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVwZWF0czsgKytpKSB7Cisr ICAgICAgICBUaHJlYWRDb3VudFVzZXIgdCh0cnVlIC8qZmluaXNoSW1tZWRpYXRlbHkqLyk7Cisr ICAgICAgICB0LnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIGludCBjb3VudCA9IHRocmVhZHMu Y291bnQoKTsKKysgICAgICAgIGlmIChjb3VudCAhPSAxKQorKyAgICAgICAgICAgIFFFWFBFQ1Rf RkFJTCgiIiwgIlFUQlVHLTIzMzMzIiwgQWJvcnQpOworKyAgICAgICAgUUNPTVBBUkUoY291bnQs IDEpOworKworICAgICAgICAgKG5ldyBUaHJlYWRDb3VudFVzZXIodHJ1ZSAvKmZpbmlzaEltbWVk aWF0ZWx5Ki8pKS0+c3RhcnRBc3luY2hyb25vdXNseSgpLndhaXRGb3JGaW5pc2hlZCgpOworLSAg ICAgICAgY29uc3QgYXV0byBjb3VudCA9IHRocmVhZHMuY291bnQoKTsKKysgICAgICAgIGNvdW50 ID0gdGhyZWFkcy5jb3VudCgpOworKyAgICAgICAgaWYgKGNvdW50ICE9IDEpCisrICAgICAgICAg ICAgUUVYUEVDVF9GQUlMKCIiLCAiUVRCVUctMjMzMzMiLCBBYm9ydCk7CisgICAgICAgICBRQ09N UEFSRShjb3VudCwgMSk7CisgICAgICAgICBRVkVSSUZZKCF0aHJlYWRzLmNvbnRhaW5zKFFUaHJl YWQ6OmN1cnJlbnRUaHJlYWQoKSkpOworICAgICB9CitAQCAtNDAwLDYgKzQzNyw3IEBAIHB1Ymxp YzoKKyAKKyB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OmV4Y2VwdGlvbnMoKQor IHsKKysgICAgLy8gQXN5bmNocm9ub3VzIG1vZGU6CisgICAgIHsKKyAgICAgICAgIGJvb2wgY2F1 Z2h0ID0gZmFsc2U7CisgICAgICAgICB0cnkgIHsKK0BAIC00MTIsNiArNDUwLDMyIEBAIHZvaWQg dHN0X1F0Q29uY3VycmVudFRocmVhZEVuZ2luZTo6ZXhjZXB0aW9ucygpCisgICAgICAgICBRVkVS SUZZMihjYXVnaHQsICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKyAgICAgfQorIAorKyAgICAv LyBCbG9ja2luZyBtb2RlOgorKyAgICAvLyB0ZXN0IHRocm93aW5nIHRoZSBleGNlcHRpb24gZnJv bSBhIHdvcmtlciB0aHJlYWQuCisrICAgIHsKKysgICAgICAgIGJvb2wgY2F1Z2h0ID0gZmFsc2U7 CisrICAgICAgICB0cnkgIHsKKysgICAgICAgICAgICBRdENvbmN1cnJlbnRFeGNlcHRpb25UaHJv d2VyIGUoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpKTsKKysgICAgICAgICAgICBlLnN0YXJ0Qmxv Y2tpbmcoKTsKKysgICAgICAgIH0gY2F0Y2ggKGNvbnN0IFFFeGNlcHRpb24gJikgeworKyAgICAg ICAgICAgIGNhdWdodCA9IHRydWU7CisrICAgICAgICB9CisrICAgICAgICBRVkVSSUZZMihjYXVn aHQsICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKysgICAgfQorKworKyAgICAvLyB0ZXN0IHRo cm93aW5nIHRoZSBleGNlcHRpb24gZnJvbSB0aGUgbWFpbiB0aHJlYWQgKGRpZmZlcmVudCBjb2Rl IHBhdGgpCisrICAgIHsKKysgICAgICAgIGJvb2wgY2F1Z2h0ID0gZmFsc2U7CisrICAgICAgICB0 cnkgIHsKKysgICAgICAgICAgICBRdENvbmN1cnJlbnRFeGNlcHRpb25UaHJvd2VyIGUoMCk7Cisr ICAgICAgICAgICAgZS5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICB9IGNhdGNoIChjb25zdCBR RXhjZXB0aW9uICYpIHsKKysgICAgICAgICAgICBjYXVnaHQgPSB0cnVlOworKyAgICAgICAgfQor KyAgICAgICAgUVZFUklGWTIoY2F1Z2h0LCAiZGlkIG5vdCBnZXQgZXhjZXB0aW9uIik7CisrICAg IH0KKysKKysgICAgLy8gQXN5bmNocm9ub3VzIG1vZGU6CisgICAgIHsKKyAgICAgICAgIGJvb2wg Y2F1Z2h0ID0gZmFsc2U7CisgICAgICAgICB0cnkgIHsKK0BAIC00MjMsNiArNDg3LDMxIEBAIHZv aWQgdHN0X1F0Q29uY3VycmVudFRocmVhZEVuZ2luZTo6ZXhjZXB0aW9ucygpCisgICAgICAgICB9 CisgICAgICAgICBRVkVSSUZZMihjYXVnaHQsICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKyAg ICAgfQorKworKyAgICAvLyBCbG9ja2luZyBtb2RlOgorKyAgICAvLyB0ZXN0IHRocm93aW5nIHRo ZSBleGNlcHRpb24gZnJvbSBhIHdvcmtlciB0aHJlYWQuCisrICAgIHsKKysgICAgICAgIGJvb2wg Y2F1Z2h0ID0gZmFsc2U7CisrICAgICAgICB0cnkgIHsKKysgICAgICAgICAgICBVbnJlbGF0ZWRF eGNlcHRpb25UaHJvd2VyIGUoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpKTsKKysgICAgICAgICAg ICBlLnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIH0gY2F0Y2ggKGNvbnN0IFFVbmhhbmRsZWRF eGNlcHRpb24gJikgeworKyAgICAgICAgICAgIGNhdWdodCA9IHRydWU7CisrICAgICAgICB9Cisr ICAgICAgICBRVkVSSUZZMihjYXVnaHQsICJkaWQgbm90IGdldCBleGNlcHRpb24iKTsKKysgICAg fQorKworKyAgICAvLyB0ZXN0IHRocm93aW5nIHRoZSBleGNlcHRpb24gZnJvbSB0aGUgbWFpbiB0 aHJlYWQgKGRpZmZlcmVudCBjb2RlIHBhdGgpCisrICAgIHsKKysgICAgICAgIGJvb2wgY2F1Z2h0 ID0gZmFsc2U7CisrICAgICAgICB0cnkgIHsKKysgICAgICAgICAgICBVbnJlbGF0ZWRFeGNlcHRp b25UaHJvd2VyIGUoMCk7CisrICAgICAgICAgICAgZS5zdGFydEJsb2NraW5nKCk7CisrICAgICAg ICB9IGNhdGNoIChjb25zdCBRVW5oYW5kbGVkRXhjZXB0aW9uICYpIHsKKysgICAgICAgICAgICBj YXVnaHQgPSB0cnVlOworKyAgICAgICAgfQorKyAgICAgICAgUVZFUklGWTIoY2F1Z2h0LCAiZGlk IG5vdCBnZXQgZXhjZXB0aW9uIik7CisrICAgIH0KKyB9CisgCisgI2VuZGlmCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xYnVmZmVyL3RzdF9xYnVmZmVyLmNwcCBi L3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWJ1ZmZlci90c3RfcWJ1ZmZlci5jcHAKK2lu ZGV4IDQ5Njg3NDIxMTAuLmY0YzNmYjcxMWQgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0 by9jb3JlbGliL2lvL3FidWZmZXIvdHN0X3FidWZmZXIuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMv YXV0by9jb3JlbGliL2lvL3FidWZmZXIvdHN0X3FidWZmZXIuY3BwCitAQCAtNDIsNiArNDIsNyBA QCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHdyaXRlQmxvY2tfZGF0YSgpOworICAgICB2b2lk IHdyaXRlQmxvY2soKTsKKyAgICAgdm9pZCBzZWVrKCk7CisrICAgIHZvaWQgaW52YWxpZFNlZWtz KCk7CisgICAgIHZvaWQgc2Vla1Rlc3RfZGF0YSgpOworICAgICB2b2lkIHNlZWtUZXN0KCk7Cisg ICAgIHZvaWQgcmVhZF9yYXdkYXRhKCk7CitAQCAtMjg2LDYgKzI4NywyOSBAQCB2b2lkIHRzdF9R QnVmZmVyOjpzZWVrKCkKKyAgICAgUUNPTVBBUkUoYnVmZmVyLnNpemUoKSwgcG9zKTsKKyB9Cisg Cisrdm9pZCB0c3RfUUJ1ZmZlcjo6aW52YWxpZFNlZWtzKCkKKyt7CisrICAgIGlmIGNvbnN0ZXhw ciAoc2l6ZW9mKHFzaXpldHlwZSkgPT0gc2l6ZW9mKHFpbnQ2NCkpIHsKKysgICAgICAgIC8vIHNp emVvZihxc2l6ZXR5cGUpID09IHNpemVvZihxaW50NjQpLCBzbyArMSB3b3VsZCBvdmVyZmxvdwor KyAgICAgICAgUVNLSVAoIlRoaXMgaXMgYSAzMi1iaXQtb25seSB0ZXN0LiIpOworKyAgICB9IGVs c2UgeworKyAgICAgICAgUUJ1ZmZlciBidWZmZXI7CisrICAgICAgICBidWZmZXIub3BlbihRSU9E ZXZpY2U6OldyaXRlT25seSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIuYnVmZmVyKCkuc2l6 ZSgpLCBxc2l6ZXR5cGUoMCkpOworKyAgICAgICAgUUNPTVBBUkUoYnVmZmVyLnBvcygpLCBxaW50 NjQoMCkpOworKyAgICAgICAgY29uc3RleHByIHFpbnQ2NCBNYXhRQnl0ZUFycmF5Q2FwYWNpdHkg PSAoc3RkOjpudW1lcmljX2xpbWl0czxxc2l6ZXR5cGU+OjptYXgpKCk7CisrICAgICAgICAvLyB0 aGlzIHNob3VsZCBmYWlsIGZhc3QsIG5vdCBhZnRlciB0cnlpbmcgdG8gYWxsb2NhdGUgbmVhcmx5 IDIgR2lCIG9mIGRhdGEsCisrICAgICAgICAvLyBwb3RlbnRpYWxseSBjcmFzaGluZyBpbiB0aGUg cHJvY2VzczoKKysgICAgICAgIFFWRVJJRlkoIWJ1ZmZlci5zZWVrKDIgKiBNYXhRQnl0ZUFycmF5 Q2FwYWNpdHkgLSAxKSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIuYnVmZmVyKCkuc2l6ZSgp LCBxc2l6ZXR5cGUoMCkpOworKyAgICAgICAgUUNPTVBBUkUoYnVmZmVyLnBvcygpLCBxaW50NjQo MCkpOworKyAgICAgICAgLy8gZGl0dG86CisrICAgICAgICBRVkVSSUZZKCFidWZmZXIuc2VlayhN YXhRQnl0ZUFycmF5Q2FwYWNpdHkgKyAxKSk7CisrICAgICAgICBRQ09NUEFSRShidWZmZXIuYnVm ZmVyKCkuc2l6ZSgpLCBxc2l6ZXR5cGUoMCkpOworKyAgICAgICAgUUNPTVBBUkUoYnVmZmVyLnBv cygpLCBxaW50NjQoMCkpOworKyAgICB9CisrfQorKworIHZvaWQgdHN0X1FCdWZmZXI6OnNlZWtU ZXN0X2RhdGEoKQorIHsKKyAgICAgd3JpdGVCbG9ja19kYXRhKCk7CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xaW9kZXZpY2UvdHN0X3Fpb2RldmljZS5jcHAgYi9x dGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fpb2RldmljZS90c3RfcWlvZGV2aWNlLmNwcAor aW5kZXggZGE1MzI3NTk0Yy4uNGEwNGUwZjdjNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9h dXRvL2NvcmVsaWIvaW8vcWlvZGV2aWNlL3RzdF9xaW9kZXZpY2UuY3BwCisrKysgYi9xdGJhc2Uv dGVzdHMvYXV0by9jb3JlbGliL2lvL3Fpb2RldmljZS90c3RfcWlvZGV2aWNlLmNwcAorQEAgLTU2 MSw3ICs1NjEsOCBAQCBwcm90ZWN0ZWQ6CisgICAgIHFpbnQ2NCByZWFkRGF0YShjaGFyICpkYXRh LCBxaW50NjQgbWF4U2l6ZSkgb3ZlcnJpZGUKKyAgICAgeworICAgICAgICAgbWF4U2l6ZSA9IHFN aW4obWF4U2l6ZSwgcWludDY0KGJ1Zi0+c2l6ZSgpIC0gb2Zmc2V0KSk7CistICAgICAgICBtZW1j cHkoZGF0YSwgYnVmLT5jb25zdERhdGEoKSArIG9mZnNldCwgbWF4U2l6ZSk7CisrICAgICAgICBp ZiAobWF4U2l6ZSA+IDApCisrICAgICAgICAgICAgbWVtY3B5KGRhdGEsIGJ1Zi0+Y29uc3REYXRh KCkgKyBvZmZzZXQsIG1heFNpemUpOworICAgICAgICAgb2Zmc2V0ICs9IG1heFNpemU7CisgICAg ICAgICByZXR1cm4gbWF4U2l6ZTsKKyAgICAgfQorQEAgLTYwNCwxMyArNjA1LDE1IEBAIHByb3Rl Y3RlZDoKKyAgICAgcWludDY0IHJlYWREYXRhKGNoYXIgKmRhdGEsIHFpbnQ2NCBtYXhTaXplKSBv dmVycmlkZQorICAgICB7CisgICAgICAgICBtYXhTaXplID0gcU1pbihtYXhTaXplLCBxaW50NjQo YnVmLnNpemUoKSAtIHBvcygpKSk7CistICAgICAgICBtZW1jcHkoZGF0YSwgYnVmLmNvbnN0RGF0 YSgpICsgcG9zKCksIG1heFNpemUpOworKyAgICAgICAgaWYgKG1heFNpemUgPiAwKQorKyAgICAg ICAgICAgIG1lbWNweShkYXRhLCBidWYuY29uc3REYXRhKCkgKyBwb3MoKSwgbWF4U2l6ZSk7Cisg ICAgICAgICByZXR1cm4gbWF4U2l6ZTsKKyAgICAgfQorICAgICBxaW50NjQgd3JpdGVEYXRhKGNv bnN0IGNoYXIgKmRhdGEsIHFpbnQ2NCBtYXhTaXplKSBvdmVycmlkZQorICAgICB7CisgICAgICAg ICBtYXhTaXplID0gcU1pbihtYXhTaXplLCBxaW50NjQoYnVmLnNpemUoKSAtIHBvcygpKSk7Cist ICAgICAgICBtZW1jcHkoYnVmLmRhdGEoKSArIHBvcygpLCBkYXRhLCBtYXhTaXplKTsKKysgICAg ICAgIGlmIChtYXhTaXplID4gMCkKKysgICAgICAgICAgICBtZW1jcHkoYnVmLmRhdGEoKSArIHBv cygpLCBkYXRhLCBtYXhTaXplKTsKKyAgICAgICAgIHJldHVybiBtYXhTaXplOworICAgICB9Cisg CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xcHJvY2Vzcy90c3Rf cXByb2Nlc3MuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xcHJvY2Vzcy90c3Rf cXByb2Nlc3MuY3BwCitpbmRleCBkYjYwYmVhZDY0Li5mMzQ1YTQ0NDE0IDEwMDY0NAorLS0tIGEv cXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xcHJvY2Vzcy90c3RfcXByb2Nlc3MuY3BwCisr KysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fwcm9jZXNzL3RzdF9xcHJvY2Vzcy5j cHAKK0BAIC0xLDcgKzEsOCBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioKKyAqKiBDb3B5 cmlnaHQgKEMpIDIwMjEgVGhlIFF0IENvbXBhbnkgTHRkLgorLSoqIENvcHlyaWdodCAoQykgMjAy MCBJbnRlbCBDb3Jwb3JhdGlvbi4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjAgVGhlIFF0IENvbXBh bnkgTHRkLgorKyoqIENvcHlyaWdodCAoQykgMjAyMiBJbnRlbCBDb3Jwb3JhdGlvbi4KKyAqKiBD b250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlzIGZpbGUg aXMgcGFydCBvZiB0aGUgdGVzdCBzdWl0ZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC0xNTAsNiAr MTUxLDggQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBzdGFydFN0b3BTdGFydFN0b3BCdWZm ZXJzKCk7CisgICAgIHZvaWQgcHJvY2Vzc0V2ZW50c0luQVJlYWR5UmVhZFNsb3RfZGF0YSgpOwor ICAgICB2b2lkIHByb2Nlc3NFdmVudHNJbkFSZWFkeVJlYWRTbG90KCk7CisrICAgIHZvaWQgc3Rh cnRGcm9tQ3VycmVudFdvcmtpbmdEaXJfZGF0YSgpOworKyAgICB2b2lkIHN0YXJ0RnJvbUN1cnJl bnRXb3JraW5nRGlyKCk7CisgCisgICAgIC8vIGtlZXAgdGhlc2UgYXQgdGhlIGVuZCwgc2luY2Ug dGhleSB1c2UgbG90cyBvZiBwcm9jZXNzZXMgYW5kIHNvbWV0aW1lcworICAgICAvLyBjYXVzZWQg b2JzY3VyZSBmYWlsdXJlcyB0byBvY2N1ciBpbiB0ZXN0cyB0aGF0IGZvbGxvd2VkIHRoZW0gKGVz cC4gb24gdGhlIE1hYykKK0BAIC0yNzMxLDUgKzI3MzQsOTQgQEAgdm9pZCB0c3RfUVByb2Nlc3M6 OmZpbmlzaFByb2Nlc3NCZWZvcmVSZWFkaW5nRG9uZV9kZXByZWNhdGVkKCkKKyAKKyAjZW5kaWYK KyAKKytlbnVtIGNsYXNzIENoZGlyTW9kZSB7CisrICAgIE5vbmUgPSAwLAorKyAgICBJblBhcmVu dCwKKysgICAgSW5DaGlsZAorK307CisrUV9ERUNMQVJFX01FVEFUWVBFKENoZGlyTW9kZSkKKysK Kyt2b2lkIHRzdF9RUHJvY2Vzczo6c3RhcnRGcm9tQ3VycmVudFdvcmtpbmdEaXJfZGF0YSgpCisr eworKyAgICBxUmVnaXN0ZXJNZXRhVHlwZTxDaGRpck1vZGU+KCk7CisrICAgIFFUZXN0OjphZGRD b2x1bW48UVN0cmluZz4oInByb2dyYW1QcmVmaXgiKTsKKysgICAgUVRlc3Q6OmFkZENvbHVtbjxD aGRpck1vZGU+KCJjaGRpck1vZGUiKTsKKysgICAgUVRlc3Q6OmFkZENvbHVtbjxib29sPigic3Vj Y2VzcyIpOworKworKyAgICBjb25zdGV4cHIgYm9vbCBJc1dpbmRvd3MgPSB0cnVlCisrI2lmZGVm IFFfT1NfVU5JWAorKyAgICAgICAgICAgICYmIGZhbHNlCisrI2VuZGlmCisrICAgICAgICAgICAg OworKworKyAgICAvLyBiYXNlbGluZTogdHJ5aW5nIHRvIGV4ZWN1dGUgdGhlIGRpcmVjdG9yeSwg dGhpcyBjYW4ndCBwb3NzaWJseSBzdWNjZWVkIQorKyAgICBRVGVzdDo6bmV3Um93KCJwbGFpbi1z YW1lLWN3ZCIpIDw8IFFTdHJpbmcoKSA8PCBDaGRpck1vZGU6Ok5vbmUgPDwgZmFsc2U7CisrCisr ICAgIC8vIGNyb3NzLXBsYXRmb3JtIGJlaGF2aW9yOiBuZWl0aGVyIE9TIHNlYXJjaGVzIHRoZSBz ZXRXb3JraW5nRGlyZWN0b3J5KCkKKysgICAgLy8gZGlyIHdpdGhvdXQgIi4vIgorKyAgICBRVGVz dDo6bmV3Um93KCJwbGFpbi1jaGlsZC1jaGRpciIpIDw8IFFTdHJpbmcoKSA8PCBDaGRpck1vZGU6 OkluQ2hpbGQgPDwgZmFsc2U7CisrCisrICAgIC8vIGNyb3NzLXBsYXRmb3JtIGJlaGF2aW9yOiBi b3RoIE9TZXMgc2VhcmNoIHRoZSBwYXJlbnQncyBDV0Qgd2l0aCAiLi8iCisrICAgIFFUZXN0Ojpu ZXdSb3coInByZWZpeGVkLXBhcmVudC1jaGRpciIpIDw8ICIuLyIgPDwgQ2hkaXJNb2RlOjpJblBh cmVudCA8PCB0cnVlOworKworKyAgICAvLyBvcHBvc2l0ZSBiZWhhdmlvcnM6IFdpbmRvd3Mgc2Vh cmNoZXMgdGhlIHBhcmVudCdzIENXRCBhbmQgVW5peCBzZWFyY2hlcworKyAgICAvLyB0aGUgY2hp bGQncyB3aXRoICIuLyIKKysgICAgUVRlc3Q6Om5ld1JvdygicHJlZml4ZWQtY2hpbGQtY2hkaXIi KSA8PCAiLi8iIDw8IENoZGlyTW9kZTo6SW5DaGlsZCA8PCAhSXNXaW5kb3dzOworKworKyAgICAv LyBXaW5kb3dzIHNlYXJjaGVzIHRoZSBwYXJlbnQncyBDV0Qgd2l0aG91dCAiLi8iCisrICAgIFFU ZXN0OjpuZXdSb3coInBsYWluLXBhcmVudC1jaGRpciIpIDw8IFFTdHJpbmcoKSA8PCBDaGRpck1v ZGU6OkluUGFyZW50IDw8IElzV2luZG93czsKKyt9CisrCisrdm9pZCB0c3RfUVByb2Nlc3M6OnN0 YXJ0RnJvbUN1cnJlbnRXb3JraW5nRGlyKCkKKyt7CisrICAgIFFGRVRDSChRU3RyaW5nLCBwcm9n cmFtUHJlZml4KTsKKysgICAgUUZFVENIKENoZGlyTW9kZSwgY2hkaXJNb2RlKTsKKysgICAgUUZF VENIKGJvb2wsIHN1Y2Nlc3MpOworKworKyAgICBRUHJvY2VzcyBwcm9jZXNzOworKyAgICBxUmVn aXN0ZXJNZXRhVHlwZTxRUHJvY2Vzczo6UHJvY2Vzc0Vycm9yPigpOworKyAgICBRU2lnbmFsU3B5 IGVycm9yU3B5KCZwcm9jZXNzLCAmUVByb2Nlc3M6OmVycm9yT2NjdXJyZWQpOworKyAgICBRVkVS SUZZKGVycm9yU3B5LmlzVmFsaWQoKSk7CisrCisrICAgIC8vIGJvdGggdGhlIGRpciBuYW1lIGFu ZCB0aGUgZXhlY3V0YWJsZSBuYW1lCisrICAgIGNvbnN0IFFTdHJpbmcgdGFyZ2V0ID0gUVN0cmlu Z0xpdGVyYWwoInRlc3RQcm9jZXNzTm9ybWFsIik7CisrICAgIHByb2Nlc3Muc2V0UHJvZ3JhbShw cm9ncmFtUHJlZml4ICsgdGFyZ2V0KTsKKysKKysjaWZkZWYgUV9PU19VTklYCisrICAgIC8vIFJl c2V0IFBBVEgsIHRvIGJlIHN1cmUgaXQgZG9lc24ndCBjb250YWluIC4gb3IgdGhlIGVtcHR5IHBh dGguCisrICAgIC8vIFdlIGNhbid0IGRvIHRoaXMgb24gV2luZG93cyBiZWNhdXNlIERMTHMgYXJl IHNlYXJjaGVkIGluIFBBVEgKKysgICAgLy8gYW5kIFdpbmRvd3MgYWx3YXlzIHNlYXJjaGVzICIu IiBhbnl3YXkuCisrICAgIGF1dG8gcmVzdG9yZUVudiA9IHFTY29wZUd1YXJkKFtvbGQgPSBxZ2V0 ZW52KCJQQVRIIildIHsKKysgICAgICAgIHFwdXRlbnYoIlBBVEgiLCBvbGQpOworKyAgICB9KTsK KysgICAgcXB1dGVudigiUEFUSCIsICIvIik7CisrI2VuZGlmCisrCisrICAgIHN3aXRjaCAoY2hk aXJNb2RlKSB7CisrICAgIGNhc2UgQ2hkaXJNb2RlOjpJblBhcmVudDogeworKyAgICAgICAgYXV0 byByZXN0b3JlQ3dkID0gcVNjb3BlR3VhcmQoW29sZCA9IFFEaXI6OmN1cnJlbnRQYXRoKCldIHsK KysgICAgICAgICAgICBRRGlyOjpzZXRDdXJyZW50KG9sZCk7CisrICAgICAgICB9KTsKKysgICAg ICAgIFFWRVJJRlkoUURpcjo6c2V0Q3VycmVudCh0YXJnZXQpKTsKKysgICAgICAgIHByb2Nlc3Mu c3RhcnQoKTsKKysgICAgICAgIGJyZWFrOworKyAgICB9CisrICAgIGNhc2UgQ2hkaXJNb2RlOjpJ bkNoaWxkOgorKyAgICAgICAgcHJvY2Vzcy5zZXRXb3JraW5nRGlyZWN0b3J5KHRhcmdldCk7Cisr ICAgICAgICBRX0ZBTExUSFJPVUdIKCk7CisrICAgIGNhc2UgQ2hkaXJNb2RlOjpOb25lOgorKyAg ICAgICAgcHJvY2Vzcy5zdGFydCgpOworKyAgICAgICAgYnJlYWs7CisrICAgIH0KKysKKysgICAg UUNPTVBBUkUocHJvY2Vzcy53YWl0Rm9yU3RhcnRlZCgpLCBzdWNjZXNzKTsKKysgICAgUUNPTVBB UkUoZXJyb3JTcHkuY291bnQoKSwgaW50KCFzdWNjZXNzKSk7CisrICAgIGlmIChzdWNjZXNzKSB7 CisrICAgICAgICBRVkVSSUZZKHByb2Nlc3Mud2FpdEZvckZpbmlzaGVkKCkpOworKyAgICB9IGVs c2UgeworKyAgICAgICAgUUNPTVBBUkUocHJvY2Vzcy5lcnJvcigpLCBRUHJvY2Vzczo6RmFpbGVk VG9TdGFydCk7CisrICAgIH0KKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUVByb2Nlc3MpCisgI2lu Y2x1ZGUgInRzdF9xcHJvY2Vzcy5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8v Y29yZWxpYi9pdGVtbW9kZWxzL3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwvdHN0X3Fjb25j YXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9p dGVtbW9kZWxzL3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwvdHN0X3Fjb25jYXRlbmF0ZXRh Ymxlc3Byb3h5bW9kZWwuY3BwCitpbmRleCBlMWVhN2E0NTUyLi45MDk3MmNhYTU3IDEwMDY0NAor LS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pdGVtbW9kZWxzL3Fjb25jYXRlbmF0ZXRh Ymxlc3Byb3h5bW9kZWwvdHN0X3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwuY3BwCisrKysg Yi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2l0ZW1tb2RlbHMvcWNvbmNhdGVuYXRldGFibGVz cHJveHltb2RlbC90c3RfcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC5jcHAKK0BAIC0xMTcs NiArMTE3LDcgQEAgcHJpdmF0ZSBRX1NMT1RTOgorICAgICB2b2lkIHNob3VsZFByb3BhZ2F0ZURy b3BBZnRlckxhc3RSb3dfZGF0YSgpOworICAgICB2b2lkIHNob3VsZFByb3BhZ2F0ZURyb3BBZnRl ckxhc3RSb3coKTsKKyAgICAgdm9pZCBxdGJ1ZzkxNzg4KCk7CisrICAgIHZvaWQgcXRidWc5MTg3 OCgpOworIAorIHByaXZhdGU6CisgICAgIFFTdGFuZGFyZEl0ZW1Nb2RlbCBtb2Q7CitAQCAtODQz LDYgKzg0NCwyMiBAQCB2b2lkIHRzdF9RQ29uY2F0ZW5hdGVUYWJsZXNQcm94eU1vZGVsOjpxdGJ1 ZzkxNzg4KCkKKyAgICAgUUNPTVBBUkUocHJveHlDb25jYXQuY29sdW1uQ291bnQoKSwgMCk7Cisg fQorIAorK3ZvaWQgdHN0X1FDb25jYXRlbmF0ZVRhYmxlc1Byb3h5TW9kZWw6OnF0YnVnOTE4Nzgo KQorK3sKKysgICAgUVN0YW5kYXJkSXRlbU1vZGVsIG07CisrICAgIG0uc2V0Um93Q291bnQoNCk7 CisrICAgIG0uc2V0Q29sdW1uQ291bnQoNCk7CisrCisrICAgIFFDb25jYXRlbmF0ZVRhYmxlc1By b3h5TW9kZWwgcG07CisrICAgIFFTb3J0RmlsdGVyUHJveHlNb2RlbCBwcm94eUZpbHRlcjsKKysg ICAgcHJveHlGaWx0ZXIuc2V0U291cmNlTW9kZWwoJnBtKTsKKysgICAgcHJveHlGaWx0ZXIuc2V0 RmlsdGVyRml4ZWRTdHJpbmcoInNvbWV0aGluZyIpOworKyAgICBwbS5hZGRTb3VyY2VNb2RlbCgm bSk7ICAvLyBUaGlzIHNob3VsZCBub3QgYXNzZXJ0CisrCisrICAgIFFDT01QQVJFKHBtLmNvbHVt bkNvdW50KCksIDQpOworKyAgICBRQ09NUEFSRShwbS5yb3dDb3VudCgpLCA0KTsKKyt9CisrCisg UVRFU1RfR1VJTEVTU19NQUlOKHRzdF9RQ29uY2F0ZW5hdGVUYWJsZXNQcm94eU1vZGVsKQorIAor ICNpbmNsdWRlICJ0c3RfcWNvbmNhdGVuYXRldGFibGVzcHJveHltb2RlbC5tb2MiCitkaWZmIC0t Z2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9rZXJuZWwvcW9iamVjdC90c3RfcW9iamVj dC5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2tlcm5lbC9xb2JqZWN0L3RzdF9xb2Jq ZWN0LmNwcAoraW5kZXggOWJkNjZjMDgzNS4uZWQ0YTBiYWU1ZCAxMDA2NDQKKy0tLSBhL3F0YmFz ZS90ZXN0cy9hdXRvL2NvcmVsaWIva2VybmVsL3FvYmplY3QvdHN0X3FvYmplY3QuY3BwCisrKysg Yi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2tlcm5lbC9xb2JqZWN0L3RzdF9xb2JqZWN0LmNw cAorQEAgLTE1OCw2ICsxNTgsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIG51bGxSZWNl aXZlcigpOworICAgICB2b2lkIGZ1bmN0b3JSZWZlcmVuY2VzQ29ubmVjdGlvbigpOworICAgICB2 b2lkIGRpc2Nvbm5lY3REaXNjb25uZWN0cygpOworKyAgICB2b2lkIGRlY2xhcmF0aXZlRGF0YSgp OworIH07CisgCisgc3RydWN0IFFPYmplY3RDcmVhdGVkT25TaHV0ZG93bgorQEAgLTc2NzksNSAr NzY4MCw4MSBAQCB2b2lkIHRzdF9RT2JqZWN0OjpkaXNjb25uZWN0RGlzY29ubmVjdHMoKQorIFFf U1RBVElDX0FTU0VSVChRdFByaXZhdGU6Okhhc1FfT0JKRUNUX01hY3JvPHRzdF9RT2JqZWN0Pjo6 VmFsdWUpOworIFFfU1RBVElDX0FTU0VSVCghUXRQcml2YXRlOjpIYXNRX09CSkVDVF9NYWNybzxT aWJsaW5nRGVsZXRlcj46OlZhbHVlKTsKKyAKKysjaWZkZWYgUVRfQlVJTERfSU5URVJOQUwKKysv KgorKyAgICBTaW5jZSBRT2JqZWN0UHJpdmF0ZSBzdG9yZXMgdGhlIGRlY2xhcmF0aXZlRGF0YSBw b2ludGVyIGluIGEgdW5pb24gd2l0aCB0aGUgcG9pbnRlcgorKyAgICB0byB0aGUgY3VycmVudGx5 IGRlc3Ryb3llZCBjaGlsZCwgY2FsbHMgdG8gdGhlIFF0RGVjbGFyYXRpdmUgaGFuZGxlcnMgbmVl ZCB0byBiZQorKyAgICBjb3JyZWN0bHkgZ3VhcmRlZC4gUVRCVUctMTA1Mjg2CisrKi8KKytuYW1l c3BhY2UgUXREZWNsYXJhdGl2ZSB7Cisrc3RhdGljIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YSAq dGhlRGF0YTsKKysKKytzdGF0aWMgdm9pZCBkZXN0cm95ZWQoUUFic3RyYWN0RGVjbGFyYXRpdmVE YXRhICpkYXRhLCBRT2JqZWN0ICopCisreworKyAgICBRQ09NUEFSRShkYXRhLCB0aGVEYXRhKTsK Kyt9Cisrc3RhdGljIHZvaWQgc2lnbmFsRW1pdHRlZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGEg KmRhdGEsIFFPYmplY3QgKiwgaW50LCB2b2lkICoqKQorK3sKKysgICAgUUNPTVBBUkUoZGF0YSwg dGhlRGF0YSk7CisrfQorKy8vIHdlIGNhbid0IHVzZSBRQ09NUEFSRSBpbiB0aGUgbmV4dCB0d28g ZnVuY3Rpb25zLCBhcyB0aGV5IGRvbid0IHJldHVybiB2b2lkCisrc3RhdGljIGludCByZWNlaXZl cnMoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhICpkYXRhLCBjb25zdCBRT2JqZWN0ICosIGludCkK Kyt7CisrICAgIFFUZXN0OjpxQ29tcGFyZShkYXRhLCB0aGVEYXRhLCAiZGF0YSIsICJ0aGVEYXRh IiwgX19GSUxFX18sIF9fTElORV9fKTsKKysgICAgcmV0dXJuIDA7CisrfQorK3N0YXRpYyBib29s IGlzU2lnbmFsQ29ubmVjdGVkKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YSAqZGF0YSwgY29uc3Qg UU9iamVjdCAqLCBpbnQpCisreworKyAgICBRVGVzdDo6cUNvbXBhcmUoZGF0YSwgdGhlRGF0YSwg ImRhdGEiLCAidGhlRGF0YSIsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisrICAgIHJldHVybiB0cnVl OworK30KKysKKytjbGFzcyBPYmplY3QgOiBwdWJsaWMgUU9iamVjdAorK3sKKysgICAgUV9PQkpF Q1QKKytwdWJsaWM6CisrICAgIHVzaW5nIFFPYmplY3Q6OlFPYmplY3Q7CisrICAgIH5PYmplY3Qo KQorKyAgICB7CisrICAgICAgICBpZiAoT2JqZWN0ICpwID0gc3RhdGljX2Nhc3Q8T2JqZWN0ICo+ KHBhcmVudCgpKSkKKysgICAgICAgICAgICBwLT5lbWl0U2lnbmFsKCk7CisrICAgIH0KKysKKysg ICAgdm9pZCBlbWl0U2lnbmFsKCkKKysgICAgeworKyAgICAgICAgZW1pdCB0aGVTaWduYWwoKTsK KysgICAgfQorKworK3NpZ25hbHM6CisrICAgIHZvaWQgdGhlU2lnbmFsKCk7CisrfTsKKysKKyt9 CisrI2VuZGlmCisrCisrdm9pZCB0c3RfUU9iamVjdDo6ZGVjbGFyYXRpdmVEYXRhKCkKKyt7Cisr I2lmZGVmIFFUX0JVSUxEX0lOVEVSTkFMCisrICAgIFFTY29wZWRWYWx1ZVJvbGxiYWNrIGRlc3Ry b3llZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGE6OmRlc3Ryb3llZCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFF0RGVjbGFyYXRpdmU6OmRlc3Ryb3llZCk7CisrICAgIFFT Y29wZWRWYWx1ZVJvbGxiYWNrIHNpZ25hbEVtaXR0ZWQoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRh OjpzaWduYWxFbWl0dGVkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFF0RGVjbGFyYXRpdmU6OnNpZ25hbEVtaXR0ZWQpOworKyAgICBRU2NvcGVkVmFsdWVSb2xsYmFj ayByZWNlaXZlcnMoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpyZWNlaXZlcnMsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdERlY2xhcmF0aXZlOjpyZWNlaXZlcnMpOwor KyAgICBRU2NvcGVkVmFsdWVSb2xsYmFjayBpc1NpZ25hbENvbm5lY3RlZChRQWJzdHJhY3REZWNs YXJhdGl2ZURhdGE6OmlzU2lnbmFsQ29ubmVjdGVkLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRdERlY2xhcmF0aXZlOjppc1NpZ25hbENvbm5lY3RlZCk7Cisr CisrICAgIFF0RGVjbGFyYXRpdmU6Ok9iamVjdCBwOworKyAgICBRT2JqZWN0UHJpdmF0ZSAqcHJp diA9IFFPYmplY3RQcml2YXRlOjpnZXQoJnApOworKyAgICBwcml2LT5kZWNsYXJhdGl2ZURhdGEg PSBRdERlY2xhcmF0aXZlOjp0aGVEYXRhID0gbmV3IFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTsK KysKKysgICAgY29ubmVjdCgmcCwgJlF0RGVjbGFyYXRpdmU6Ok9iamVjdDo6dGhlU2lnbmFsLCAm cCwgW117CisrICAgIH0pOworKworKyAgICBRdERlY2xhcmF0aXZlOjpPYmplY3QgKmNoaWxkID0g bmV3IFF0RGVjbGFyYXRpdmU6Ok9iamVjdDsKKysgICAgY2hpbGQtPnNldFBhcmVudCgmcCk7Cisr I2VuZGlmCisrfQorKworIFFURVNUX01BSU4odHN0X1FPYmplY3QpCisgI2luY2x1ZGUgInRzdF9x b2JqZWN0Lm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL21pbWV0 eXBlcy9xbWltZWRhdGFiYXNlL3RzdF9xbWltZWRhdGFiYXNlLmNwcCBiL3F0YmFzZS90ZXN0cy9h dXRvL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UvdHN0X3FtaW1lZGF0YWJhc2UuY3Bw CitpbmRleCAwZWE0MjJlY2JjLi4xYTMyNTY1MzRiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3Rz L2F1dG8vY29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS90c3RfcW1pbWVkYXRhYmFzZS5j cHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJh c2UvdHN0X3FtaW1lZGF0YWJhc2UuY3BwCitAQCAtNzAsMTUgKzcwLDE1IEBAIHN0YXRpYyBpbmxp bmUgUVN0cmluZyB0ZXN0U3VpdGVXYXJuaW5nKCkKKyAKKyAgICAgUVN0cmluZyByZXN1bHQ7Cisg ICAgIFFUZXh0U3RyZWFtIHN0cigmcmVzdWx0KTsKKy0gICAgc3RyIDw8ICJcbkNhbm5vdCBmaW5k IHRoZSBzaGFyZWQtbWltZS1pbmZvIHRlc3Qgc3VpdGVcbnN0YXJ0aW5nIGZyb206ICIKKysgICAg c3RyIDw8ICJcbkNhbm5vdCBmaW5kIHRoZSBzaGFyZWQtbWltZS1pbmZvIHRlc3Qgc3VpdGVcbmlu IHRoZSBwYXJlbnQgb2Y6ICIKKyAgICAgICAgIDw8IFFEaXI6OnRvTmF0aXZlU2VwYXJhdG9ycyhR RGlyOjpjdXJyZW50UGF0aCgpKSA8PCAiXG4iCisgICAgICAgICAgICAiY2QgIiA8PCBRRGlyOjp0 b05hdGl2ZVNlcGFyYXRvcnMoUVN0cmluZ0xpdGVyYWwoInRlc3RzL2F1dG8vY29yZWxpYi9taW1l dHlwZXMvcW1pbWVkYXRhYmFzZSIpKSA8PCAiXG4iCistICAgICAgICAgICAid2dldCBodHRwOi8v Y2dpdC5mcmVlZGVza3RvcC5vcmcveGRnL3NoYXJlZC1taW1lLWluZm8vc25hcHNob3QvUmVsZWFz ZS0xLTEwLnppcFxuIgorLSAgICAgICAgICAgInVuemlwIFJlbGVhc2UtMS0xMC56aXBcbiI7Cisr ICAgICAgICAgICAid2dldCBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcveGRnL3NoYXJl ZC1taW1lLWluZm8vLS9hcmNoaXZlLzIuMS9zaGFyZWQtbWltZS1pbmZvLTIuMS56aXBcbiIKKysg ICAgICAgICAgICJ1bnppcCBzaGFyZWQtbWltZS1pbmZvLTIuMS56aXBcbiI7CisgI2lmZGVmIFFf T1NfV0lOCistICAgIHN0ciA8PCAibWtkaXIgdGVzdGZpbGVzXG54Y29weSAvcyBSZWxlYXNlLTEt MTAgcy1tLWlcbiI7CisrICAgIHN0ciA8PCAibWtkaXIgdGVzdGZpbGVzXG54Y29weSAvcyBzaGFy ZWQtbWltZS1pbmZvLTIuMSBzLW0taVxuIjsKKyAjZWxzZQorLSAgICBzdHIgPDwgImxuIC1zIFJl bGVhc2UtMS0xMCBzLW0taVxuIjsKKysgICAgc3RyIDw8ICJsbiAtcyBzaGFyZWQtbWltZS1pbmZv LTIuMSBzLW0taVxuIjsKKyAjZW5kaWYKKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9CitAQCAtMTU0 LDcgKzE1NCw3IEBAIHZvaWQgdHN0X1FNaW1lRGF0YWJhc2U6OmluaXRUZXN0Q2FzZSgpCisgICAg IFFWRVJJRlkyKGNvcHlSZXNvdXJjZUZpbGUoeG1sRmlsZU5hbWUsIHhtbFRhcmdldEZpbGVOYW1l LCAmZXJyb3JNZXNzYWdlKSwgcVByaW50YWJsZShlcnJvck1lc3NhZ2UpKTsKKyAjZW5kaWYKKyAK Ky0gICAgbV90ZXN0U3VpdGUgPSBRRklORFRFU1REQVRBKCJzLW0taS90ZXN0cyIpOworKyAgICBt X3Rlc3RTdWl0ZSA9IFFGSU5EVEVTVERBVEEoInMtbS1pL3Rlc3RzL21pbWUtZGV0ZWN0aW9uIik7 CisgICAgIGlmIChtX3Rlc3RTdWl0ZS5pc0VtcHR5KCkpCisgICAgICAgICBxV2FybmluZygiJXMi LCBxUHJpbnRhYmxlKHRlc3RTdWl0ZVdhcm5pbmcoKSkpOworIAorQEAgLTYxMSw3ICs2MTEsNyBA QCB2b2lkIHRzdF9RTWltZURhdGFiYXNlOjphbGxNaW1lVHlwZXMoKQorICAgICBRVkVSSUZZKCFs c3QuaXNFbXB0eSgpKTsKKyAKKyAgICAgLy8gSGFyZGNvZGluZyB0aGlzIGlzIHRoZSBvbmx5IHdh eSB0byBjaGVjayBib3RoIHByb3ZpZGVycyBmaW5kIHRoZSBzYW1lIG51bWJlciBvZiBtaW1ldHlw ZXMuCistICAgIFFDT01QQVJFKGxzdC5jb3VudCgpLCA3NzkpOworKyAgICBRQ09NUEFSRShsc3Qu Y291bnQoKSwgODExKTsKKyAKKyAgICAgZm9yZWFjaCAoY29uc3QgUU1pbWVUeXBlICZtaW1lLCBs c3QpIHsKKyAgICAgICAgIGNvbnN0IFFTdHJpbmcgbmFtZSA9IG1pbWUubmFtZSgpOworQEAgLTYz MSwxMCArNjMxLDkgQEAgdm9pZCB0c3RfUU1pbWVEYXRhYmFzZTo6c3VmZml4ZXNfZGF0YSgpCisg CisgICAgIFFUZXN0OjpuZXdSb3coIm1pbWV0eXBlIHdpdGggYSBzaW5nbGUgcGF0dGVybiIpIDw8 ICJhcHBsaWNhdGlvbi9wZGYiIDw8ICIqLnBkZiIgPDwgInBkZiI7CisgICAgIFFUZXN0OjpuZXdS b3coIm1pbWV0eXBlIHdpdGggbXVsdGlwbGUgcGF0dGVybnMiKSA8PCAiYXBwbGljYXRpb24veC1r cHJlc2VudGVyIiA8PCAiKi5rcHI7Ki5rcHQiIDw8ICJrcHIiOworLSAgICBRVGVzdDo6bmV3Um93 KCJqcGVnIikgPDwgImltYWdlL2pwZWciIDw8ICIqLmpwZTsqLmpwZzsqLmpwZWciIDw8ICJqcGVn IjsKKy0gICAgLy9pZiAoS01pbWVUeXBlOjpzaGFyZWRNaW1lSW5mb1ZlcnNpb24oKSA+IEtERV9N QUtFX1ZFUlNJT04oMCwgNjAsIDApKSB7CistICAgICAgICBRVGVzdDo6bmV3Um93KCJtaW1ldHlw ZSB3aXRoIG1hbnkgcGF0dGVybnMiKSA8PCAiYXBwbGljYXRpb24vdm5kLndvcmRwZXJmZWN0IiA8 PCAiKi53cDsqLndwNDsqLndwNTsqLndwNjsqLndwZDsqLndwcCIgPDwgIndwIjsKKy0gICAgLy99 CisrICAgIC8vIFRoZSBwcmVmZXJyZWQgc3VmZml4IGZvciBpbWFnZS9qcGVnIGlzICouanBnLCBh cyBwZXIgaHR0cHM6Ly9idWdzLmtkZS5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjczNworKyAgICBR VGVzdDo6bmV3Um93KCJqcGVnIikgPDwgImltYWdlL2pwZWciIDw8ICIqLmpwZTsqLmpwZzsqLmpw ZWciIDw8ICJqcGciOworKyAgICBRVGVzdDo6bmV3Um93KCJtaW1ldHlwZSB3aXRoIG1hbnkgcGF0 dGVybnMiKSA8PCAiYXBwbGljYXRpb24vdm5kLndvcmRwZXJmZWN0IiA8PCAiKi53cDsqLndwNDsq LndwNTsqLndwNjsqLndwZDsqLndwcCIgPDwgIndwIjsKKyAgICAgUVRlc3Q6Om5ld1Jvdygib2Fz aXMgdGV4dCBtaW1ldHlwZSIpIDw8ICJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50 LnRleHQiIDw8ICIqLm9kdCIgPDwgIm9kdCI7CisgICAgIFFUZXN0OjpuZXdSb3coIm9hc2lzIHBy ZXNlbnRhdGlvbiBtaW1ldHlwZSIpIDw8ICJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3Vt ZW50LnByZXNlbnRhdGlvbiIgPDwgIioub2RwIiA8PCAib2RwIjsKKyAgICAgUVRlc3Q6Om5ld1Jv dygibWltZXR5cGUgd2l0aCBtdWx0aXBsZSBwYXR0ZXJucyIpIDw8ICJ0ZXh0L3BsYWluIiA8PCAi Ki5hc2M7Ki50eHQ7Kix2IiA8PCAidHh0IjsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0 by9jb3JlbGliL3NlcmlhbGl6YXRpb24vanNvbi90c3RfcXRqc29uLmNwcCBiL3F0YmFzZS90ZXN0 cy9hdXRvL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9qc29uL3RzdF9xdGpzb24uY3BwCitpbmRleCAz ZTU4ZGQwM2NjLi5jOGY4MmVmNWQ1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29y ZWxpYi9zZXJpYWxpemF0aW9uL2pzb24vdHN0X3F0anNvbi5jcHAKKysrKyBiL3F0YmFzZS90ZXN0 cy9hdXRvL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9qc29uL3RzdF9xdGpzb24uY3BwCitAQCAtMTc2 LDYgKzE3Niw4IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAgICAgdm9pZCBmcm9tVG9WYXJpYW50Q29u dmVyc2lvbnNfZGF0YSgpOworICAgICB2b2lkIGZyb21Ub1ZhcmlhbnRDb252ZXJzaW9ucygpOwor IAorKyAgICB2b2lkIG5vTGVha09uTmFtZUNsYXNoKCk7CisrCisgcHJpdmF0ZToKKyAgICAgUVN0 cmluZyB0ZXN0RGF0YURpcjsKKyB9OworQEAgLTM2ODUsNSArMzY4NywyMyBAQCB2b2lkIHRzdF9R dEpzb246OmZyb21Ub1ZhcmlhbnRDb252ZXJzaW9ucygpCisgICAgIH0KKyB9CisgCisrdm9pZCB0 c3RfUXRKc29uOjpub0xlYWtPbk5hbWVDbGFzaCgpCisreworKyAgICBRSnNvbkRvY3VtZW50IGRv YyA9IFFKc29uRG9jdW1lbnQ6OmZyb21Kc29uKCJ7XCJcIjp7XCJcIjowfSxcIlwiOjB9Iik7Cisr ICAgIFFWRVJJRlkoIWRvYy5pc051bGwoKSk7CisrICAgIGNvbnN0IFFKc29uT2JqZWN0IG9iaiA9 IGRvYy5vYmplY3QoKTsKKysKKysgICAgLy8gUmVtb3ZlZCB0aGUgZHVwbGljYXRlIGtleS4KKysg ICAgUUNPTVBBUkUob2JqLmxlbmd0aCgpLCAxKTsKKysKKysgICAgLy8gUmV0YWluZWQgdGhlIGxh c3Qgb2YgdGhlIGR1cGxpY2F0ZXMuCisrICAgIGNvbnN0IFFKc29uVmFsdWUgdmFsID0gb2JqLmJl Z2luKCkudmFsdWUoKTsKKysgICAgUVZFUklGWSh2YWwuaXNEb3VibGUoKSk7CisrICAgIFFDT01Q QVJFKHZhbC50b0RvdWJsZSgpLCAwLjApOworKworKyAgICAvLyBJdCBzaG91bGQgbm90IGxlYWsu CisrICAgIC8vIEluIHBhcnRpY3VsYXIgaXQgc2hvdWxkIG5vdCBmb3JnZXQgdG8gZGVyZWYgdGhl IGNvbnRhaW5lciBmb3IgdGhlIGlubmVyIG9iamVjdC4KKyt9CisrCisgUVRFU1RfTUFJTih0c3Rf UXRKc29uKQorICNpbmNsdWRlICJ0c3RfcXRqc29uLm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2Uv dGVzdHMvYXV0by9jb3JlbGliL3RpbWUvcXRpbWV6b25lL3RzdF9xdGltZXpvbmUuY3BwIGIvcXRi YXNlL3Rlc3RzL2F1dG8vY29yZWxpYi90aW1lL3F0aW1lem9uZS90c3RfcXRpbWV6b25lLmNwcAor aW5kZXggYTU5YjU4ZDU3Zi4uMjQxYzNlODRhYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9h dXRvL2NvcmVsaWIvdGltZS9xdGltZXpvbmUvdHN0X3F0aW1lem9uZS5jcHAKKysrKyBiL3F0YmFz ZS90ZXN0cy9hdXRvL2NvcmVsaWIvdGltZS9xdGltZXpvbmUvdHN0X3F0aW1lem9uZS5jcHAKK0BA IC02Myw2ICs2Myw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgaXNWYWxpZElkX2RhdGEo KTsKKyAgICAgdm9pZCBpc1ZhbGlkSWQoKTsKKyAgICAgdm9pZCBtYWxmb3JtZWQoKTsKKysgICAg dm9pZCBzZXJpYWxpemUoKTsKKyAgICAgLy8gQmFja2VuZCB0ZXN0cworICAgICB2b2lkIHV0Y1Rl c3QoKTsKKyAgICAgdm9pZCBpY3VUZXN0KCk7CitAQCAtOTQ3LDYgKzk0OCwzMyBAQCB2b2lkIHRz dF9RVGltZVpvbmU6Om1hbGZvcm1lZCgpCisgICAgICAgICBiYXJmLm9mZnNldEZyb21VdGMobm93 KTsKKyB9CisgCisrdm9pZCB0c3RfUVRpbWVab25lOjpzZXJpYWxpemUoKQorK3sKKysgICAgaW50 IHBhcnRzID0gMDsKKysjaWZuZGVmIFFUX05PX0RFQlVHX1NUUkVBTQorKyAgICBxRGVidWcoKSA8 PCBRVGltZVpvbmUoKTsgLy8gdG8gdmVyaWZ5IG5vIGNyYXNoCisrICAgIHBhcnRzKys7CisrI2Vu ZGlmCisrI2lmbmRlZiBRVF9OT19EQVRBU1RSRUFNCisrICAgIFFCeXRlQXJyYXkgYmxvYjsKKysg ICAgeworKyAgICAgICAgUURhdGFTdHJlYW0gc3RyZWFtKCZibG9iLCBRSU9EZXZpY2U6OldyaXRl T25seSk7CisrICAgICAgICBzdHJlYW0gPDwgUVRpbWVab25lKCJFdXJvcGUvT3NsbyIpIDw8IFFU aW1lWm9uZSg0MjApIDw8IFFUaW1lWm9uZSgpIDw8IHFpbnQ2NCgtMSk7CisrICAgIH0KKysgICAg UURhdGFTdHJlYW0gc3RyZWFtKCZibG9iLCBRSU9EZXZpY2U6OlJlYWRPbmx5KTsKKysgICAgUVRp bWVab25lIGludmFsaWQsIG9mZnNldCwgb3NsbzsKKysgICAgcWludDY0IG1pbnVzb25lOworKyAg ICBzdHJlYW0gPj4gb3NsbyA+PiBvZmZzZXQgPj4gaW52YWxpZCA+PiBtaW51c29uZTsKKysgICAg UUNPTVBBUkUob3NsbywgUVRpbWVab25lKCJFdXJvcGUvT3NsbyIpKTsKKysgICAgUUNPTVBBUkUo b2Zmc2V0LCBRVGltZVpvbmUoNDIwKSk7CisrICAgIFFWRVJJRlkoIWludmFsaWQuaXNWYWxpZCgp KTsKKysgICAgUUNPTVBBUkUobWludXNvbmUsIHFpbnQ2NCgtMSkpOworKyAgICBwYXJ0cysrOwor KyNlbmRpZgorKyAgICBpZiAoIXBhcnRzKQorKyAgICAgICAgUVNLSVAoIk5vIHNlcmlhbGl6YXRp b24gZW5hYmxlZCIpOworK30KKysKKyB2b2lkIHRzdF9RVGltZVpvbmU6OnV0Y1Rlc3QoKQorIHsK KyAjaWZkZWYgUVRfQlVJTERfSU5URVJOQUwKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0 by9kYnVzL3FkYnVzaW50ZXJmYWNlL3RzdF9xZGJ1c2ludGVyZmFjZS5jcHAgYi9xdGJhc2UvdGVz dHMvYXV0by9kYnVzL3FkYnVzaW50ZXJmYWNlL3RzdF9xZGJ1c2ludGVyZmFjZS5jcHAKK2luZGV4 IDA1NDgwYzZkZDIuLjcwZjRjNzU3NTYgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9k YnVzL3FkYnVzaW50ZXJmYWNlL3RzdF9xZGJ1c2ludGVyZmFjZS5jcHAKKysrKyBiL3F0YmFzZS90 ZXN0cy9hdXRvL2RidXMvcWRidXNpbnRlcmZhY2UvdHN0X3FkYnVzaW50ZXJmYWNlLmNwcAorQEAg LTMyNCw2ICszMjQsMTMgQEAgdm9pZCB0c3RfUURCdXNJbnRlcmZhY2U6Om5vdFZhbGlkKCkKKyAK KyAgICAgUVZFUklGWSghaW50ZXJmYWNlLmlzVmFsaWQoKSk7CisgICAgIFFWRVJJRlkoIVFNZXRh T2JqZWN0OjppbnZva2VNZXRob2QoJmludGVyZmFjZSwgIkxpc3ROYW1lcyIsIFF0OjpEaXJlY3RD b25uZWN0aW9uKSk7CisrCisrICAgIC8vIFdpdGggYSBjb25uZWN0aW9uLCBidXQgZW1wdHkvbnVs bCBzZXJ2aWNlIGFuZCBwYXRoIHNwZWNpZmllZAorKyAgICBRREJ1c0Nvbm5lY3Rpb24gY29uID0g UURCdXNDb25uZWN0aW9uOjpzZXNzaW9uQnVzKCk7CisrICAgIFFWRVJJRlkoY29uLmlzQ29ubmVj dGVkKCkpOworKyAgICBRREJ1c0ludGVyZmFjZSBpZmFjZSh7fSwge30sIHt9LCBjb24pOworKyAg ICBRVkVSSUZZKCFpZmFjZS5pc1ZhbGlkKCkpOworKyAgICBRVkVSSUZZKCFRTWV0YU9iamVjdDo6 aW52b2tlTWV0aG9kKCZpbnRlcmZhY2UsICJMaXN0TmFtZXMiLCBRdDo6RGlyZWN0Q29ubmVjdGlv bikpOworIH0KKyAKKyB2b2lkIHRzdF9RREJ1c0ludGVyZmFjZTo6bm90VmFsaWREZXJpdmVkKCkK K2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9ndWkva2VybmVsL3FrZXlzZXF1ZW5jZS90 c3RfcWtleXNlcXVlbmNlLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS9rZXJuZWwvcWtleXNl cXVlbmNlL3RzdF9xa2V5c2VxdWVuY2UuY3BwCitpbmRleCA4NzQ0NjhjOTU0Li4wNGNlYjRhYjY1 IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2Uv dHN0X3FrZXlzZXF1ZW5jZS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS9rZXJuZWwv cWtleXNlcXVlbmNlL3RzdF9xa2V5c2VxdWVuY2UuY3BwCitAQCAtNTA3LDYgKzUwNywxMCBAQCB2 b2lkIHRzdF9RS2V5U2VxdWVuY2U6OnRvU3RyaW5nRnJvbUtleWNvZGVfZGF0YSgpCisgICAgIFFU ZXN0OjpuZXdSb3coIkN0cmwrQWx0K051bStEZWwiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6OkNvbnRy b2xNb2RpZmllciB8IFF0OjpBbHRNb2RpZmllciB8IFF0OjpLZXlwYWRNb2RpZmllciB8IFF0OjpL ZXlfRGVsZXRlKSA8PCAiQ3RybCtBbHQrTnVtK0RlbCI7CisgICAgIFFUZXN0OjpuZXdSb3coIkN0 cmwrSW5zIikgPDwgUUtleVNlcXVlbmNlKFF0OjpDb250cm9sTW9kaWZpZXIgfCBRdDo6S2V5X0lu c2VydCkgPDwgIkN0cmwrSW5zIjsKKyAgICAgUVRlc3Q6Om5ld1JvdygiQ3RybCtOdW0rSW5zKDEp IikgPDwgUUtleVNlcXVlbmNlKFF0OjpLZXlfSW5zZXJ0IHwgUXQ6OktleXBhZE1vZGlmaWVyIHwg UXQ6OkNvbnRyb2xNb2RpZmllcikgPDwgIkN0cmwrTnVtK0lucyI7CisrICAgIFFUZXN0OjpuZXdS b3coIkN0cmwiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6OktleV9Db250cm9sKSA8PCAiQ29udHJvbCI7 CisrICAgIFFUZXN0OjpuZXdSb3coIkFsdCIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6S2V5X0FsdCkg PDwgIkFsdCI7CisrICAgIFFUZXN0OjpuZXdSb3coIlNoaWZ0IikgPDwgUUtleVNlcXVlbmNlKFF0 OjpLZXlfU2hpZnQpIDw8ICJTaGlmdCI7CisrICAgIFFUZXN0OjpuZXdSb3coIk1ldGEiKSA8PCBR S2V5U2VxdWVuY2UoUXQ6OktleV9NZXRhKSA8PCAiTWV0YSI7CisgfQorIAorIHZvaWQgdHN0X1FL ZXlTZXF1ZW5jZTo6dG9TdHJpbmdGcm9tS2V5Y29kZSgpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rl c3RzL2F1dG8vZ3VpL3RleHQvcWZvbnRkYXRhYmFzZS90c3RfcWZvbnRkYXRhYmFzZS5jcHAgYi9x dGJhc2UvdGVzdHMvYXV0by9ndWkvdGV4dC9xZm9udGRhdGFiYXNlL3RzdF9xZm9udGRhdGFiYXNl LmNwcAoraW5kZXggMTVlMGVjYWRhYS4uYjRlY2E3NDI4MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS90 ZXN0cy9hdXRvL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UvdHN0X3Fmb250ZGF0YWJhc2UuY3BwCisr KysgYi9xdGJhc2UvdGVzdHMvYXV0by9ndWkvdGV4dC9xZm9udGRhdGFiYXNlL3RzdF9xZm9udGRh dGFiYXNlLmNwcAorQEAgLTgxLDYgKzgxLDggQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBy ZWdpc3Rlck9wZW5UeXBlUHJlZmVycmVkTmFtZXNTeXN0ZW0oKTsKKyAgICAgdm9pZCByZWdpc3Rl ck9wZW5UeXBlUHJlZmVycmVkTmFtZXNBcHBsaWNhdGlvbigpOworIAorKyAgICB2b2lkIHN0cmV0 Y2hSZXNwZWN0ZWQoKTsKKysKKyBwcml2YXRlOgorICAgICBRU3RyaW5nIG1fbGVkRm9udDsKKyAg ICAgUVN0cmluZyBtX3Rlc3RGb250OworQEAgLTM1NSw2ICszNTcsMjggQEAgc3RhdGljIFFTdHJp bmcgdGVzdFN0cmluZygpCisgICAgIHJldHVybiBRU3RyaW5nTGl0ZXJhbCgiZm9vIGJhciIpOwor IH0KKyAKKyt2b2lkIHRzdF9RRm9udERhdGFiYXNlOjpzdHJldGNoUmVzcGVjdGVkKCkKKyt7Cisr ICAgIGludCBpdGFsaWNJZCA9IFFGb250RGF0YWJhc2U6OmFkZEFwcGxpY2F0aW9uRm9udChtX3Rl c3RGb250SXRhbGljKTsKKysgICAgUVZFUklGWShpdGFsaWNJZCAhPSAtMSk7CisrCisrICAgIFFW RVJJRlkoIVFGb250RGF0YWJhc2U6OmFwcGxpY2F0aW9uRm9udEZhbWlsaWVzKGl0YWxpY0lkKS5p c0VtcHR5KCkpOworKworKyAgICBRU3RyaW5nIGl0YWxpY0ZvbnROYW1lID0gUUZvbnREYXRhYmFz ZTo6YXBwbGljYXRpb25Gb250RmFtaWxpZXMoaXRhbGljSWQpLmZpcnN0KCk7CisrCisrICAgIFFG b250IGl0YWxpY0ZvbnQgPSBRRm9udERhdGFiYXNlKCkuZm9udChpdGFsaWNGb250TmFtZSwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmc6OmZyb21M YXRpbjEoIkl0YWxpYyIpLCAxNCk7CisrICAgIFFWRVJJRlkoaXRhbGljRm9udC5pdGFsaWMoKSk7 CisrCisrICAgIFFGb250IGl0YWxpY1N0cmV0Y2hlZEZvbnQgPSBpdGFsaWNGb250OworKyAgICBp dGFsaWNTdHJldGNoZWRGb250LnNldFN0cmV0Y2goIDQwMCApOworKworKyAgICBRVkVSSUZZKFFG b250TWV0cmljc0YoaXRhbGljRm9udCkuaG9yaXpvbnRhbEFkdmFuY2UoUVN0cmluZ0xpdGVyYWwo ImZvb2JhciIpKSA8CisrICAgICAgICAgICAgUUZvbnRNZXRyaWNzRihpdGFsaWNTdHJldGNoZWRG b250KS5ob3Jpem9udGFsQWR2YW5jZShRU3RyaW5nTGl0ZXJhbCgiZm9vYmFyIikpKTsKKysKKysg ICAgUUZvbnREYXRhYmFzZTo6cmVtb3ZlQXBwbGljYXRpb25Gb250KGl0YWxpY0lkKTsKKyt9Cisr Cisgdm9pZCB0c3RfUUZvbnREYXRhYmFzZTo6Y29uZGVuc2VkRm9udFdpZHRoTm9Gb250TWVyZ2lu ZygpCisgeworICAgICBpbnQgcmVndWxhckZvbnRJZCA9IFFGb250RGF0YWJhc2U6OmFkZEFwcGxp Y2F0aW9uRm9udChtX3Rlc3RGb250KTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9u ZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5L3RzdF9xbmV0d29ya3JlcGx5LmNwcCBiL3F0YmFz ZS90ZXN0cy9hdXRvL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHkvdHN0X3FuZXR3b3JrcmVw bHkuY3BwCitpbmRleCAzZDRhMDk0YzQzLi5iNDIzZTExYTk5IDEwMDY0NAorLS0tIGEvcXRiYXNl L3Rlc3RzL2F1dG8vbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseS90c3RfcW5ldHdvcmtyZXBs eS5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVw bHkvdHN0X3FuZXR3b3JrcmVwbHkuY3BwCitAQCAtMjgxLDYgKzI4MSw3IEBAIHByaXZhdGUgUV9T TE9UUzoKKyAgICAgdm9pZCBpb0dldEZyb21GaWxlU3BlY2lhbCgpOworICAgICB2b2lkIGlvR2V0 RnJvbUZpbGVfZGF0YSgpOworICAgICB2b2lkIGlvR2V0RnJvbUZpbGUoKTsKKysgICAgdm9pZCBp b0dldEZyb21GaWxlVXJsKCk7CisgICAgIHZvaWQgaW9HZXRGcm9tRnRwX2RhdGEoKTsKKyAgICAg dm9pZCBpb0dldEZyb21GdHAoKTsKKyAgICAgdm9pZCBpb0dldEZyb21GdHBXaXRoUmV1c2UoKTsK K0BAIC0zMzAwLDYgKzMzMDEsMTggQEAgdm9pZCB0c3RfUU5ldHdvcmtSZXBseTo6aW9HZXRGcm9t RmlsZSgpCisgICAgIFFDT01QQVJFKHJlYWRlci5kYXRhLCBkYXRhKTsKKyB9CisgCisrdm9pZCB0 c3RfUU5ldHdvcmtSZXBseTo6aW9HZXRGcm9tRmlsZVVybCgpCisreworKyAgICAvLyBUaGlzIGlt bWVkaWF0ZWx5IGZhaWxzIG9uIG5vbi13aW5kb3dzIHBsYXRmb3JtczoKKysgICAgUU5ldHdvcmtS ZXF1ZXN0IHJlcXVlc3QoUVVybCgiZmlsZTovL3VuYy1zZXJ2ZXIvc29tZS9wYXRoIikpOworKyAg ICBRTmV0d29ya1JlcGx5UHRyIHJlcGx5KG1hbmFnZXIuZ2V0KHJlcXVlc3QpKTsKKysgICAgUVNp Z25hbFNweSBmaW5pc2hlZFNweShyZXBseS5nZXQoKSwgJlFOZXR3b3JrUmVwbHk6OmZpbmlzaGVk KTsKKysgICAgLy8gUVRCVUctMTA1NjE4OiBUaGlzIHdvdWxkLCBvbiBub24tV2luZG93cyBwbGF0 Zm9ybXMsIG5ldmVyIGhhcHBlbiBiZWNhdXNlIHRoZSBzaWduYWwKKysgICAgLy8gd2FzIGVtaXR0 ZWQgYmVmb3JlIHRoZSBjb25zdHJ1Y3RvciBmaW5pc2hlZCwgbGVhdmluZyBubyBjaGFuY2UgYXQg YWxsIHRvIGNvbm5lY3QgdG8gdGhlCisrICAgIC8vIHNpZ25hbAorKyAgICBRVkVSSUZZKGZpbmlz aGVkU3B5LndhaXQoKSk7CisrfQorKworIHZvaWQgdHN0X1FOZXR3b3JrUmVwbHk6OmlvR2V0RnJv bUZ0cF9kYXRhKCkKKyB7CisgICAgIFFUZXN0OjphZGRDb2x1bW48UVN0cmluZz4oImZpbGVOYW1l Iik7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tl dC9jZXJ0cy9mbHVrZS5jZXJ0IGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNv Y2tldC9jZXJ0cy9mbHVrZS5jZXJ0CitpbmRleCAwNjlmYTZiMzQxLi40Y2M0ZDlhNWVhIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9m bHVrZS5jZXJ0CisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0 L2NlcnRzL2ZsdWtlLmNlcnQKK0BAIC0xLDc1ICsxLDM0IEBACistQ2VydGlmaWNhdGU6CistICAg IERhdGE6CistICAgICAgICBWZXJzaW9uOiAzICgweDIpCistICAgICAgICBTZXJpYWwgTnVtYmVy OiAwICgweDApCistICAgICAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGExV2l0aFJTQUVuY3J5 cHRpb24KKy0gICAgICAgIElzc3VlcjogQz1OTywgU1Q9T3NsbywgTD1OeWRhbGVuLCBPPU5va2lh IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKSwgT1U9RGV2ZWxvcG1lbnQs IENOPWZsdWtlLnRyb2xsLm5vL2VtYWlsQWRkcmVzcz1haGFuc3NlbkB0cm9sbHRlY2guY29tCist ICAgICAgICBWYWxpZGl0eQorLSAgICAgICAgICAgIE5vdCBCZWZvcmU6IERlYyAgNCAwMToxMDoz MiAyMDA3IEdNVAorLSAgICAgICAgICAgIE5vdCBBZnRlciA6IEFwciAyMSAwMToxMDozMiAyMDM1 IEdNVAorLSAgICAgICAgU3ViamVjdDogQz1OTywgU1Q9T3NsbywgTz1Ob2tpYSBDb3Jwb3JhdGlv biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcyksIE9VPURldmVsb3BtZW50LCBDTj1mbHVrZS50 cm9sbC5ubworLSAgICAgICAgU3ViamVjdCBQdWJsaWMgS2V5IEluZm86CistICAgICAgICAgICAg UHVibGljIEtleSBBbGdvcml0aG06IHJzYUVuY3J5cHRpb24KKy0gICAgICAgICAgICBSU0EgUHVi bGljIEtleTogKDEwMjQgYml0KQorLSAgICAgICAgICAgICAgICBNb2R1bHVzICgxMDI0IGJpdCk6 CistICAgICAgICAgICAgICAgICAgICAwMDphNzpjODphMDo0YTpjNDoxOTowNToxYjo2NjpiYToz MjplMjpkMjpmMToKKy0gICAgICAgICAgICAgICAgICAgIDFjOjZmOjE3OjgyOmU0OjM5OjJlOjAx OjUxOjkwOmRiOjA0OjM0OjMyOjExOgorLSAgICAgICAgICAgICAgICAgICAgMjE6YzI6MGQ6NmY6 NTk6ZDg6NTM6OTA6NTQ6M2Y6ODM6OGY6YTk6ZDM6YjM6CistICAgICAgICAgICAgICAgICAgICBk NTplZToxYTo5Yjo4MDphZTpjMzoyNTpjOTo1ZTphNTphZjo0Yjo2MDowNToKKy0gICAgICAgICAg ICAgICAgICAgIGFhOmEwOmQxOjkxOjAxOjFmOmNhOjA0OjgzOmUzOjU4OjFjOjk5OjMyOjQ1Ogor LSAgICAgICAgICAgICAgICAgICAgODQ6NzA6NzI6NTg6MDM6OTg6NGE6NjM6OGI6NDE6ZjU6MDg6 NDk6ZDI6OTE6CistICAgICAgICAgICAgICAgICAgICAwMjo2MDo2YjplNDo2NDpmZTpkZDphMDph YTo3NDowODplOTozNDo0Yzo5MToKKy0gICAgICAgICAgICAgICAgICAgIDVmOjEyOjNkOjM3OjRk OjU0OjJjOmFkOjdmOjViOjk4OjYwOjM2OjAyOjhjOgorLSAgICAgICAgICAgICAgICAgICAgM2I6 ZjY6NDU6ZjM6Mjc6NmE6OWI6OTQ6OWQKKy0gICAgICAgICAgICAgICAgRXhwb25lbnQ6IDY1NTM3 ICgweDEwMDAxKQorLSAgICAgICAgWDUwOXYzIGV4dGVuc2lvbnM6CistICAgICAgICAgICAgWDUw OXYzIEJhc2ljIENvbnN0cmFpbnRzOiAKKy0gICAgICAgICAgICAgICAgQ0E6RkFMU0UKKy0gICAg ICAgICAgICBOZXRzY2FwZSBDb21tZW50OiAKKy0gICAgICAgICAgICAgICAgT3BlblNTTCBHZW5l cmF0ZWQgQ2VydGlmaWNhdGUKKy0gICAgICAgICAgICBYNTA5djMgU3ViamVjdCBLZXkgSWRlbnRp ZmllcjogCistICAgICAgICAgICAgICAgIDIxOjg1OjA0OjNEOjIzOjAxOjY2OkU1OkY3OjlGOjFB Ojg0OjI0OjhBOkFGOjBBOjc5OkY0OkU1OkFDCistICAgICAgICAgICAgWDUwOXYzIEF1dGhvcml0 eSBLZXkgSWRlbnRpZmllcjogCistICAgICAgICAgICAgICAgIERpck5hbWU6L0M9Tk8vU1Q9T3Ns by9MPU55ZGFsZW4vTz1Ob2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll cykvT1U9RGV2ZWxvcG1lbnQvQ049Zmx1a2UudHJvbGwubm8vZW1haWxBZGRyZXNzPWFoYW5zc2Vu QHRyb2xsdGVjaC5jb20KKy0gICAgICAgICAgICAgICAgc2VyaWFsOjhFOkE4OkI0OkU4OjkxOkI3 OjU0OjJFCistCistICAgIFNpZ25hdHVyZSBBbGdvcml0aG06IHNoYTFXaXRoUlNBRW5jcnlwdGlv bgorLSAgICAgICAgNmQ6NTc6NWY6ZDE6MDU6NDM6ZjA6NjI6MDU6ZWM6MmE6NzE6YTU6ZGM6MTk6 MDg6ZjI6YzQ6CistICAgICAgICBhNjpiZDpiYjoyNTpkOTpjYTo4OTowMTowZTplNDpjZjoxZjpj MTo4YzpjODoyNDoxODozNToKKy0gICAgICAgIDUzOjU5OjdiOmMwOjQzOmI0OjMyOmU2Ojk4OmIy OmE2OmVmOjE1OjA1OjBiOjQ4OjVmOmUxOgorLSAgICAgICAgYTA6MGM6OTc6YTk6YTE6Nzc6ZDg6 MzU6MTg6MzA6YmM6YTk6OGY6ZDM6Yjc6NTQ6Yzc6ZjE6CistICAgICAgICBhOTo5ZTo1ZDplNjox OTpiZjpmNjozYzo1YjoyYjpkODplNDozZTo2MjoxODo4ODo4YjpkMzoKKy0gICAgICAgIDI0OmUx OjQwOjliOjBjOmU2OjI5OjE2OjYyOmFiOmVhOjA1OjI0OjcwOjM2OmFhOjU1OjkzOgorLSAgICAg ICAgZWY6MDI6ODE6MWI6MjM6MTA6YTI6MDQ6ZWI6NTY6OTU6NzU6ZmM6Zjg6OTQ6YjE6NWQ6NDI6 CistICAgICAgICBjNTozZjozNjo0NDo4NTo1ZDozYToyZTo5MDo0Njo4YTphMjpiOTo2Zjo4Nzph ZTowYzoxNToKKy0gICAgICAgIDQwOjE5OjMxOjkwOmZjOjNiOjI1OmJiOmFlOmYxOjY2OjEzOjBk Ojg1OjkwOmQ5OjQ5OjM0OgorLSAgICAgICAgOGY6ZjI6NWQ6Zjk6N2E6ZGI6NGQ6NWQ6Mjc6ZjY6 NzY6OWQ6MzU6OGM6MDY6YTY6NGM6YTM6CistICAgICAgICBiMTpiMjpiNjo2ZjoxZDpkNzphMzow MDpmZDo3MjplYjo5ZTplYTo0NDphMTphZjoyMTozNDoKKy0gICAgICAgIDdkOmM3OjQyOmUyOjQ5 OjkxOjE5OjhiOmMwOmFkOmJhOjgyOjgwOmE4OjcxOjcwOmY0OjM1OgorLSAgICAgICAgMzE6OTE6 NjM6ODQ6MjA6OTU6ZTk6NjA6YWY6NjQ6OGI6Y2M6ZmY6M2Q6OGE6NzY6NzQ6M2Q6CistICAgICAg ICBjODo1NTo2ZDplNDo4ZTpjMzoyYjoxYzplODo0MjoxODphZTo5ZjplNjo2Yjo5YzozNDowNjoK Ky0gICAgICAgIGVjOjZhOmYyOmMzCisgLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCistTUlJ RUV6Q0NBdnVnQXdJQkFnSUJBREFOQmdrcWhraUc5dzBCQVFVRkFEQ0JuREVMTUFrR0ExVUVCaE1D VGs4eAorLURUQUxCZ05WQkFnVEJFOXpiRzh4RURBT0JnTlZCQWNUQjA1NVpHRnNaVzR4RmpBVUJn TlZCQW9URFZSeWIyeHMKKy1kR1ZqYUNCQlUwRXhGREFTQmdOVkJBc1RDMFJsZG1Wc2IzQnRaVzUw TVJjd0ZRWURWUVFERXc1bWJIVnJaUzUwCistY205c2JDNXViekVsTUNNR0NTcUdTSWIzRFFFSkFS WVdZV2hoYm5OelpXNUFkSEp2Ykd4MFpXTm9MbU52YlRBZQorLUZ3MHdOekV5TURRd01URXdNekph Rncwek5UQTBNakV3TVRFd016SmFNR014Q3pBSkJnTlZCQVlUQWs1UE1RMHcKKy1Dd1lEVlFRSUV3 UlBjMnh2TVJZd0ZBWURWUVFLRXcxVWNtOXNiSFJsWTJnZ1FWTkJNUlF3RWdZRFZRUUxFd3RFCist WlhabGJHOXdiV1Z1ZERFWE1CVUdBMVVFQXhNT1pteDFhMlV1ZEhKdmJHd3VibTh3Z1o4d0RRWUpL b1pJaHZjTgorLUFRRUJCUUFEZ1kwQU1JR0pBb0dCQUtmSW9FckVHUVViWnJveTR0THhIRzhYZ3VR NUxnRlJrTnNFTkRJUkljSU4KKy1iMW5ZVTVCVVA0T1BxZE96MWU0YW00Q3V3eVhKWHFXdlMyQUZx cURSa1FFZnlnU0Q0MWdjbVRKRmhIQnlXQU9ZCistU21PTFFmVUlTZEtSQW1CcjVHVCszYUNxZEFq cE5FeVJYeEk5TjAxVUxLMS9XNWhnTmdLTU8vWkY4eWRxbTVTZAorLUFnTUJBQUdqZ2dFYU1JSUJG akFKQmdOVkhSTUVBakFBTUN3R0NXQ0dTQUdHK0VJQkRRUWZGaDFQY0dWdVUxTk0KKy1JRWRsYm1W eVlYUmxaQ0JEWlhKMGFXWnBZMkYwWlRBZEJnTlZIUTRFRmdRVUlZVUVQU01CWnVYM254cUVKSXF2 CistQ25uMDVhd3dnYnNHQTFVZEl3U0JzekNCc0tHQm9xU0JuekNCbkRFTE1Ba0dBMVVFQmhNQ1Rr OHhEVEFMQmdOVgorLUJBZ1RCRTl6Ykc4eEVEQU9CZ05WQkFjVEIwNTVaR0ZzWlc0eEZqQVVCZ05W QkFvVERWUnliMnhzZEdWamFDQkIKKy1VMEV4RkRBU0JnTlZCQXNUQzBSbGRtVnNiM0J0Wlc1ME1S Y3dGUVlEVlFRREV3NW1iSFZyWlM1MGNtOXNiQzV1CistYnpFbE1DTUdDU3FHU0liM0RRRUpBUllX WVdoaGJuTnpaVzVBZEhKdmJHeDBaV05vTG1OdmJZSUpBSTZvdE9pUgorLXQxUXVNQTBHQ1NxR1NJ YjNEUUVCQlFVQUE0SUJBUUJ0VjEvUkJVUHdZZ1hzS25HbDNCa0k4c1NtdmJzbDJjcUoKKy1BUTdr engvQmpNZ2tHRFZUV1h2QVE3UXk1cGl5cHU4VkJRdElYK0dnREplcG9YZllOUmd3dkttUDA3ZFV4 L0dwCistbmwzbUdiLzJQRnNyMk9RK1loaUlpOU1rNFVDYkRPWXBGbUtyNmdVa2NEYXFWWlB2QW9F Ykl4Q2lCT3RXbFhYOAorLStKU3hYVUxGUHpaRWhWMDZMcEJHaXFLNWI0ZXVEQlZBR1RHUS9Ec2x1 Njd4WmhNTmhaRFpTVFNQOGwzNWV0dE4KKy1YU2YyZHAwMWpBYW1US094c3JadkhkZWpBUDF5NjU3 cVJLR3ZJVFI5eDBMaVNaRVppOEN0dW9LQXFIRnc5RFV4Cista1dPRUlKWHBZSzlraTh6L1BZcDJk RDNJVlcza2pzTXJIT2hDR0s2ZjVtdWNOQWJzYXZMRAorK01JSUY2ekNDQTlPZ0F3SUJBZ0lVZm85 YW1KdEpHV3FXRTZmK1NrQU84NXprR3I0d0RRWUpLb1pJaHZjTkFRRUwKKytCUUF3Z1lNeEN6QUpC Z05WQkFZVEFrNVBNUTB3Q3dZRFZRUUlEQVJQYzJ4dk1RMHdDd1lEVlFRSERBUlBjMnh2CisrTVJj d0ZRWURWUVFLREE1VWFHVWdVWFFnUTI5dGNHRnVlVEVNTUFvR0ExVUVDd3dEVWlaRU1SSXdFQVlE VlFRRAorK0RBbElNaUJVWlhOMFpYSXhHekFaQmdrcWhraUc5dzBCQ1FFV0RHMXBibWx0YVVCeGRD NXBiekFnRncweU1ERXcKKytNall4TWpBeE16RmFHQTh5TVRJd01UQXdNakV5TURFek1Wb3dnWU14 Q3pBSkJnTlZCQVlUQWs1UE1RMHdDd1lECisrVlFRSURBUlBjMnh2TVEwd0N3WURWUVFIREFSUGMy eHZNUmN3RlFZRFZRUUtEQTVVYUdVZ1VYUWdRMjl0Y0dGdQorK2VURU1NQW9HQTFVRUN3d0RVaVpF TVJJd0VBWURWUVFEREFsSU1pQlVaWE4wWlhJeEd6QVpCZ2txaGtpRzl3MEIKKytDUUVXREcxcGJt bHRhVUJ4ZEM1cGJ6Q0NBaUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0lQQURDQ0Fnb0NnZ0lCCisr QU9pVXA1K0U0YmxvdUtIN3ErclZOUjhOb1lYMlhrQlcrcStycHkxenU1c3NSU3picXhBakR4OWRr aHQ3UWxuZgorK1ZsRFQwMEp2cE9XZGV1UG9uNTkxNWVkUVJzWTRVbmw2bUtIMjlyYTNPdFVhMS95 Q0pYc0dWSlRLQ2o3azRCeGIKKys1bVp6Yi9mVGxabnRNTGRUSUJNZlVidzYyRktpcjFXaktJY0o5 ZkNvRzhKYUdlS1ZPNFJoNXAwZXpkNFVVVUlkCisrcjFCWGw1TnFkcXkydlRNc0VEbmpPc0QzZWdr djhJMlNLTjRPNm4vQzN3V1lwTU9XWVprR29aaUt6N3JKcy9pLworK2V6N2JzVjdKbHdkelRsaHBK emtjT1NWRkJQNkpsRU94VE5OeFoxd3RLeTdQdFpHbXNTU0FUcTJlNitidzM4QWUKKytPcDBYbnp6 cWNHanRERG9mQm1UN09GelpXalM5VlpTNitET09lMlFIV2xlMW5DSGNIeUg0a3U2SVJsc3I5eGtS CisrTkFJbE9mbnZISHhxSlVlbm9lYVo0b1FEakNCS1MxS1h5Z0pPL3RMN0JMVFFWbi94SzFFbVB2 S05uanpXazR0UgorK1BuaWJVaGhzNTYzNXFwT1UvWVBxRkJoMUpqVnJ1WmJzV2NEQWhSY2V3MHV4 T05YT2E5RSs0bHR0UTl5U1lhMUEKKytMdldxSnVBWDdndTJCc0JNTHlxZm04MTFZbkE3Q0lGTXlP K0hscW1rTEZmdjVML3hJUkFYUjdsMjZZR08wVndYCisrQ0dqTWZ6NE5WUE1Na2U0bkI3cWE5Tmtw WFFCUUtNbXMzUXpkNUpXMEh5OVJ1ajVPOEdQY0ZabVYwdHdqZDF1SgorK1BEL2NBamtXTGFYamRO c0oxNlFXYzJuZ2hRUlM2SFlxS1JYNmorQ1hPeHVwQWdNQkFBR2pVekJSTUIwR0ExVWQKKytEZ1FX QkJSU0NPVTU4ajlOSlprTWFtdDYyM3F5Q3JoTjNUQWZCZ05WSFNNRUdEQVdnQlJTQ09VNThqOU5K WmtNCisrYW10NjIzcXlDcmhOM1RBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUEwR0NTcUdTSWIzRFFF QkN3VUFBNElDQVFDcQorK3E0anhzV2VORHY1TnExNGhKdEY5SEIrWkw2NHpjWnRSakpQMVlnTnMw UXBwS0lDbWpQT0wybklNR21JL2pLcnMKKyswZUdBTC85WFhOVkhQeG0xT1BPbmN2aW1NTW1VNmVt WmZwTWRFdFRmS1A0MytQZzlIZ0tSakxvUXA0MDZ2R2VRCisrOGtpL21iQmhySXRWUGdFbTN0dTJB RkEwMlhUWWkrWXhDSTlrUlpMR2tNM0ZiZ3RPdVRMUGwwWjl5K2tpUGM5RgorK3VDU0MwM2FuQkVx dit2RFNJOCt3T0R5bVEvSUozSnl6MWx4SVJEZnA0cUFla215MGpVMmM5MVZPSEhFbU9tcXEKKytr cXlnR0ZSZHdiZTk5bTl5UDYzcjZxMGI1SzNYMlVuSjZibnMwaG1Ud1RoWXdwVlBYTFU4amRhVGRk Yk11a04yCisrL0VmOTZUc3c4bldPRU9QTXlTSE9USVBnd3laUnAyNmIwa0E5RW1oTHdPUDQwMVN4 WFZRQ21TUm10d05hZ210ZworK2pKS21ab1lCTisvL0Q0NWliSzh6NlEwb09tOVArV2hmL3VVWGVo Y1J4Qnh5VjN4ejdrMHdLR1FiSGovZGR3Y3kKKytJVW9JTjRsckFsaWIrbEsxNzBrVEtOMzUyUERt cnBvMmdtSXpQRXNmdXJLQUlNU2VsRGw2SCtraWgxNkJ0Wjh5CisrTno2Zmg5U29xcmczT1NBd2Fy ZThweFY3azUxY3JCTW9QTE43OEtvUlY4TUZDSzRLN0ZkZHE0clJJU3E2aGlYcQorK3IxbnNqb0VQ dUtNOWh1cHJtWlZaZTl0NVljRGEySSt3YjNJaUUzdXdwWmJBZGFMRHlRNW42Ri9xcHNpSWtaWG4K KytndGNGN29xcEc1b1lyd0NjWjUzeS9lelVnVWc3UGxTejJYd0FHdlF0Z2c9PQorIC0tLS0tRU5E IENFUlRJRklDQVRFLS0tLS0KK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3Jr L3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmtleSBiL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdv cmsvc3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2Uua2V5CitpbmRleCA5ZDE2NjRkNjA5Li4zMzdj ZTU0MWE2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wvcXNzbHNv Y2tldC9jZXJ0cy9mbHVrZS5rZXkKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3Ns L3Fzc2xzb2NrZXQvY2VydHMvZmx1a2Uua2V5CitAQCAtMSwxNSArMSw1MiBAQAorLS0tLS0tQkVH SU4gUlNBIFBSSVZBVEUgS0VZLS0tLS0KKy1NSUlDWEFJQkFBS0JnUUNueUtCS3hCa0ZHMmE2TXVM UzhSeHZGNExrT1M0QlVaRGJCRFF5RVNIQ0RXOVoyRk9RCistVkQrRGo2blRzOVh1R3B1QXJzTWx5 VjZscjB0Z0JhcWcwWkVCSDhvRWcrTllISmt5UllSd2NsZ0RtRXBqaTBIMQorLUNFblNrUUpnYStS ay90MmdxblFJNlRSTWtWOFNQVGROVkN5dGYxdVlZRFlDakR2MlJmTW5hcHVVblFJREFRQUIKKy1B b0dBTkZ6TGthblRlU0dORk0wdXR0QmlwRlQ5RjRhMDBkcUh6NkpuTzd6WEFUMjZJNXI4c1UxcHFR QmI2dUx6CistLytRejVad2s4UlVBUWNzTVJnSmV0dVBRVWIwSlpqRjZEdXYyNGhOYXpxWEJDdTdB WnpVZW5qYWZ3bUtDLzhyaQorLUtwWDNmVHdxemZ6aS8vRktHZ2JYUTgweXlrU1NsaURMM2tuL2Ry QVR4c0xDZ1FFQ1FRRFhoRUZXTEowdlZaMXMKKy0xRWtmKzNOSVRFK0RSMTZYK0xRNFc2dnlFSEFq VGJhTld0Y1RLZEFXTEEybDZONFdBQVBZU2k2YXdtK3pNeHg0CistVm9tVlRzamRBa0VBeDB6K2U3 bmF0TGVGY3JycThwYlUrd2E2U0FQMVZmaFFXS2l0eEwxZTd1L1FPOTBOQ3B4RQorLW9RWUt6TWtt bXBPT0ZqUXdFTUF5MWR2Rk1ibTRMSGxld1FKQUMva3NEQmFVY1FISHFqa3RDdHJVYjhyVmpBeVcK Ky1BOGxzY2NrZUIyZkVZeUc1SjZkSlZhWTRDbE5PT3M1eU1EUzJBZmsxRjZIL3hLdnRRLzVDeklu QS9RSkFURHViCistSytCUFU4ak85cStncHVJaTNWSVpkdXBzc1ZHbUNnT2JWQ0hMYWtHNHVPMDR5 OUl5UGhWOWxBOXRBTHRvSWY0YworLVZJdnY1ZldHWEJyWjQ4a1pBUUpCQUptVkNkelF4ZDlMWkk1 dnhpalVDajVFSTRlK3g1RFJxVlV2eVA4S0NackMKKy1BaU55b0RQODVUK2hCWmFTWEszYVlHcFZ3 ZWx5ajNidm8xR3JUTndOV0x3PQorLS0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCisrLS0t LS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCisrTUlJSlFnSUJBREFOQmdrcWhraUc5dzBCQVFFRkFB U0NDU3d3Z2drb0FnRUFBb0lDQVFEb2xLZWZoT0c1YUxpaAorKys2dnExVFVmRGFHRjlsNUFWdnF2 cTZjdGM3dWJMRVVzMjZzUUl3OGZYWkliZTBKWjMxWlEwOU5DYjZUbG5YcmoKKys2SitmZGVYblVF YkdPRko1ZXBpaDl2YTJ0enJWR3RmOGdpVjdCbFNVeWdvKzVPQWNXK1ptYzIvMzA1V1o3VEMzCisr VXlBVEgxRzhPdGhTb3E5Vm95aUhDZlh3cUJ2Q1dobmlsVHVFWWVhZEhzM2VGRkZDSGE5UVY1ZVRh bmFzdHIwegorK0xCQTU0enJBOTNvSkwvQ05raWplRHVwL3d0OEZtS1REbG1HWkJxR1lpcys2eWJQ NHYzcysyN0ZleVpjSGMwNVkKKythU2M1SERrbFJRVCtpWlJEc1V6VGNXZGNMU3N1ejdXUnByRWtn RTZ0bnV2bThOL0FIanFkRjU4ODZuQm83UXc2CisrSHdaayt6aGMyVm8wdlZXVXV2Z3pqbnRrQjFw WHRad2gzQjhoK0pMdWlFWmJLL2NaRVRRQ0pUbjU3eHg4YWlWSAorK3A2SG1tZUtFQTR3Z1NrdFNs OG9DVHY3Uyt3UzAwRlovOFN0UkpqN3lqWjQ4MXBPTFVUNTRtMUlZYk9ldCthcVQKKytsUDJENmhR WWRTWTFhN21XN0ZuQXdJVVhIc05Mc1RqVnptdlJQdUpiYlVQY2ttR3RRQzcxcWliZ0YrNEx0Z2JB CisrVEM4cW41dk5kV0p3T3dpQlRNanZoNWFwcEN4WDcrUy84U0VRRjBlNWR1bUJqdEZjRndob3pI OCtEVlR6REpIdQorK0p3ZTZtdlRaS1YwQVVDakpyTjBNM2VTVnRCOHZVYm8rVHZCajNCV1psZExj STNkYmlUdy8zQUk1RmkybDQzVGIKKytDZGVrRm5OcDRJVUVVdWgyS2lrVitvL2dsenNicVFJREFR QUJBb0lDQUZ3MXE2dHI1STQ4dlk3REYrclhzdUxuCisrNVpVV0UxSVE2ZnpCNGxyNzJuSnYvOUVF R25NZ1l6dDlQcE1Vc0Q2dmRDcEJnUzJDMCs2UkhBckZ6SnROQStSTQorK2lITElHN0s3NzAydmV5 ci94QngvTXdpU2xNZU12L1hwa0Z4Vkk2RTZza01HRzJzM0FNWHhLdkpUeTVDcFJ4K0kKKytlUUZ5 TEcrWWExWDJsZ0plcy9xKy9DcEFIa09qQ09wY0x5U1FDNU5aNzRxNzM0VjduU2RtbitaczN0WUVo K08vCisrZWl1d1RQL2o1YjM4VGU1dlZUcUR4VGNpSlBtbGptWExDd2EwTjEwMGxXbGJjcHZ3OHFi cWlUSTJKbTNYQ2JVRQorK0F6SGpXOXZtckYzY1JTMWZYeEtGR1NodzNTUnFsa2J4amZlV29pOHFE UFVCUzRtOExPcjhxRzlXbzVOZm9uMHoKKyt6TFA0YmNpM3pIRHZWY2FhWnJyc1VCcy95WmJnK0Rn a2ExRG1YN2VrbWVjY3IyeVRkS0RGZ1B1cFlVeXhWYlRsCisrYTlaTEp5c2pGRDdyZ0J2MVpjbEhv bkxwNlZibStab1RxdnRlbzRpa0F5Nkw5UnRCV0oyM1hFSzM0UGtQLytjNQorKzJ2V1phT3JualNl QkhiRmNlOGNkSlN4cVdwUCtlU0NJNUk5WGJEcllGSXNRL2dxS2d0ekRLeTJpaEoyWThTVEwKKyt5 TzRoeUZQRmp4YytHZzQvUDJQcG1UNUNZMnR5NDRNMEJXcytKR1c5NkNKUHJycGxmMmxtUVVRSmo1 TFpZNjZYCisrWi80QzlMN1pZdEtaK2JzNVN2VTQ2eVd1Z0F2UVpYMjJYbTl4TFhXeVZYUmR4M2Jq KzNNM2ZEbkY5ZGkvemRiaAorK0NnTHg3b1dQTnJYYzdGQ2Fqbm45QW9JQkFRRDVGTVl3UnB3OU5X VDlXRHhRd3grY1NJNEljYmQ4OEJ5VFc2M1MKKytMemVSd1pBMEo5L1Nmd08rYUJSdXB6YzlHa0dY Q2laY0dNdzNBR3NDdGlnOHlGbHc4RTVLbnpON0tsZnRETW5NCisrOU5VeHh6bFI4VndLeUxuWmZH N3NEVGwwNTdabFV1am5xaG10L0Y4RjdkSXk3RlZPMWRFLzhubmdBK0ZZVENPRworK1VaZEdqd3lC RGxETTBKSmRVV0dZM3hzbHV0Y3BDRE41bXpTVEtqeTlkck12SW1Bc2hSYXd4UkY2V0Jwbjd2cjIK KytuQzZ2Y2lxZngxTXp4MXZ5azBKbTBpbGF5ZERkTE1BRGp0L2lMNE5rcjBCRXM0aytVelFpS0R3 cDhndTdhYlExCisrZUJmeGQ5SWFyNGh0UWEySTFFd2w2UDAxRy9xK1pZd2dIaEo5UlZuNEF4UVhl ZklMQW9JQkFRRHZDb3VPUmRRWAorK0M4d3N5cDdNd1hsRi8zTlFlTk41LytCMm1oYnhyQk9mN1Bt TUNYTG5rUldjandKdHp5cFdGcUowc3FhaS8yKzAKKyticWJNY2pYNW1hVDhzdFQyc2hsM3pYZS9F anQyZTNUQllwYzF0eXVzZXM4S2I1Qk1VOGh1NnRUZDNHMkNNWHBECisrZFQ2RFZlbUpaQ1R0d2o5 YUJOSXhTaXp2bGdNb2xKbkNwemhQbmxmSFNJNkUrZzNtL0xUVG8zSHdiak1Tdy9VcQorK2lyZ2pP cEkyd1NCQjZMWlBTZ2p2ZmNZUFJ5V1VrMTZMNEE1dVNYMGNBRG5vdkRGTGE1L2gwd0p2Ti9Pb0NT UWcKKytyTENYRzVFMThFeUw1V2M1OEJDWTFadnhtakczbFF0Z1B4WXUySndjMzZSL3kvSktseFc1 c3VFUjVaTnBiYkQ0CisrdU95VHQyVnhNUTJiQW9JQkFRQzUrTXpSRnFkby9BamZMNVk1SnJiZlZU elhDVERhMDl4Q0dkMTZaVTYwUVRXTgorKys0ZWQvcitvMXNVS3FVY1JGQjJNekVNLzJEUUJqUXBa Qi9DYkVXdldhMVhKV1h4eXBYYm93dmVaVStRcU9ubU4KKyt1UXZqOFdMeUEzbytQTkY5ZTlRdmF1 d0NySHBuOFZweGJ0UFd1YVlvS25VRnJlRlpaUXhIaFBHeFJCSVMySk9aCisrZURyVDhaYVdua0Nr aDFBWnA1c21RNzFMT3ByU2xtS3JnNGpkMUdqQ1ZNeFFSNU41S1hidHl2ME9UQ1ovVUZxSworKzJh UkJzTVB5SmdrYUJDaGtaUExSY0t3Yysvd2xRUngxZkhRYjE0RE5UQXBNeG9YRk83ZU93cW1Pa3BB dDlpeWwKKytTQkl3b1MwVVVJNWFiODgrYkJtWE52S2N1RmROdVE0bm93VEpVbjlwQW9JQkFETU5r SUxCWFN2UzVEZUl5dU8yCisrU3AxdGtvWlVWKzVOZlBZM3NNREszS0lpYmFXLyt0K0VPQlpvNEw3 dEtRQ2I4dlJ6bDIxbW1zZnhmZ1JhUERiagorKzNyM3R2OWcwYjRZTHh4Qnk1MnBGc2NqL3NvWFJh aTE3U1M3VVp3QTJRSytYemdEWWJEY0xOQzZtSXNUUUc0R3gKKytkc1drMy96czNLdVVTUWFlaG13 cldLK2ZJVUszOGMxcExLOHY3TG94ckxrcXhsSHdaMDRSdGhIdzhLVHRoSDdYCisrUG5sMUowTEY4 Q1NlT3lmV0xTdVBVZmtUMEdFenB0bk5IcEViYUhmUU02UjZlYUdoVkpQRjZBWm1lNHk2WVlnZwor K20yaWhoU3QxbjBYVkVXcEhZV2p4RnkzbUsybXo3NXVuRkM0TE0rTkVZMnAyenVVUW9DdzdOam5Z M1FZcmZDbngKKytyUk1DZ2dFQVhlWHNNU0xGamp5dW9MN2lLYkF4bzUySEQvUDBmQm95NThMeVJj d2ZOVnIwbHZZYW40cFlFeCtvCisrS2lqSWg5SzE2UHFYWlhLTUE5djAwM0IrdWxtRjhiSjdTZGRD WjVOR3ZuRmhVVERlNERkVEtncDJSdXdRM0JzYworKzNza1BJRGJoVkVUeU9MQ3R5czM0VVNIcnE4 VS8wRGxHWTNlTFJmeHc5R25iS3hTQkdhL0tFdS9xUUxQTlVvNTAKKys3eEhaRGc3R0tlQzNrcU5K ZXFLTTlya3AwVnpJR2tFbmFEOTEyN0xlTkRtRVJEZmZ0eEp6Rm9DL1RIdlVCTGZVCisrNlN1czJa WXdSRThWRnZLQzMwUTQ1dC9jNTRYM0l1aFl2QXVpQ3VUbXlmRTRydXl6eU93S3poVWtlZUxxMUFQ WAorK2cwdmVGYnlmemxKMHE4cXpEL2lmZnFxSWEyWlNtUT09CisrLS0tLS1FTkQgUFJJVkFURSBL RVktLS0tLQorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL290aGVyL3FhY2Nlc3NpYmls aXR5bGludXgvdHN0X3FhY2Nlc3NpYmlsaXR5bGludXguY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8v b3RoZXIvcWFjY2Vzc2liaWxpdHlsaW51eC90c3RfcWFjY2Vzc2liaWxpdHlsaW51eC5jcHAKK2lu ZGV4IDdiYTM3MTVlMTMuLjc1MmFhMTIyZjYgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0 by9vdGhlci9xYWNjZXNzaWJpbGl0eWxpbnV4L3RzdF9xYWNjZXNzaWJpbGl0eWxpbnV4LmNwcAor KysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vb3RoZXIvcWFjY2Vzc2liaWxpdHlsaW51eC90c3RfcWFj Y2Vzc2liaWxpdHlsaW51eC5jcHAKK0BAIC0xNzksNiArMTc5LDcgQEAgdm9pZCB0c3RfUUFjY2Vz c2liaWxpdHlMaW51eDo6aW5pdFRlc3RDYXNlKCkKKyAgICAgUVZFUklGWSghYWRkcmVzcy5pc0Vt cHR5KCkpOworIAorICAgICBtX3dpbmRvdyA9IG5ldyBBY2Nlc3NpYmxlVGVzdFdpbmRvdygpOwor KyAgICBtX3dpbmRvdy0+c2V0T2JqZWN0TmFtZSgibWFpbldpbmRvdyJfTDEpOworICAgICBtX3dp bmRvdy0+c2hvdygpOworIAorICAgICBRVkVSSUZZKFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9z ZWQobV93aW5kb3cpKTsKK0BAIC0yMzYsOCArMjM3LDExIEBAIGJvb2wgaGFzU3RhdGUoUURCdXNJ bnRlcmZhY2UgKmludGVyZmFjZSwgQXRzcGlTdGF0ZVR5cGUgc3RhdGUpCisgdm9pZCB0c3RfUUFj Y2Vzc2liaWxpdHlMaW51eDo6dGVzdExhYmVsKCkKKyB7CisgICAgIFFMYWJlbCAqbCA9IG5ldyBR TGFiZWwobV93aW5kb3cpOworKyAgICBsLT5zZXRPYmplY3ROYW1lKCJ0aGVPYmplY3ROYW1lIl9M MSk7CisgICAgIGwtPnNldFRleHQoIkhlbGxvIEExMXkiKTsKKyAgICAgbV93aW5kb3ctPmFkZFdp ZGdldChsKTsKKysgICAgYXV0byBhMTF5RW1wdHkgPSBuZXcgUUxhYmVsKG1fd2luZG93KTsKKysg ICAgbV93aW5kb3ctPmFkZFdpZGdldChsKTsKKyAKKyAgICAgLy8gQXBwbGljYXRpb24KKyAgICAg UUNPTVBBUkUoZ2V0UGFyZW50KG1haW5XaW5kb3cpLCBRTGF0aW4xU3RyaW5nKEFUU1BJX0RCVVNf UEFUSF9ST09UKSk7CitAQCAtMjQ5LDYgKzI1Myw4IEBAIHZvaWQgdHN0X1FBY2Nlc3NpYmlsaXR5 TGludXg6OnRlc3RMYWJlbCgpCisgICAgIFFDT01QQVJFKGdldENoaWxkcmVuKGxhYmVsSW50ZXJm YWNlKS5jb3VudCgpLCAwKTsKKyAgICAgUUNPTVBBUkUobGFiZWxJbnRlcmZhY2UtPmNhbGwoUURC dXM6OkJsb2NrLCAiR2V0Um9sZU5hbWUiKS5hcmd1bWVudHMoKS5maXJzdCgpLnRvU3RyaW5nKCks IFFMYXRpbjFTdHJpbmcoImxhYmVsIikpOworICAgICBRQ09NUEFSRShsYWJlbEludGVyZmFjZS0+ Y2FsbChRREJ1czo6QmxvY2ssICJHZXRSb2xlIikuYXJndW1lbnRzKCkuZmlyc3QoKS50b1VJbnQo KSwgMjl1KTsKKysgICAgUUNPTVBBUkUobGFiZWxJbnRlcmZhY2UtPmNhbGwoUURCdXM6OkJsb2Nr LCAiR2V0QWNjZXNzaWJsZUlkIikuYXJndW1lbnRzKCkuZmlyc3QoKS50b1N0cmluZygpLAorKyAg ICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJtYWluV2luZG93LnRoZU9iamVjdE5hbWUiKSk7Cisg ICAgIFFDT01QQVJFKGdldFBhcmVudChsYWJlbEludGVyZmFjZSksIG1haW5XaW5kb3ctPnBhdGgo KSk7CisgICAgIFFWRVJJRlkoIWhhc1N0YXRlKGxhYmVsSW50ZXJmYWNlLCBBVFNQSV9TVEFURV9F RElUQUJMRSkpOworICAgICBRVkVSSUZZKGhhc1N0YXRlKGxhYmVsSW50ZXJmYWNlLCBBVFNQSV9T VEFURV9SRUFEX09OTFkpKTsKK0BAIC0yNTYsNyArMjYyLDEyIEBAIHZvaWQgdHN0X1FBY2Nlc3Np YmlsaXR5TGludXg6OnRlc3RMYWJlbCgpCisgICAgIGwtPnNldFRleHQoIk5ldyB0ZXh0Iik7Cisg ICAgIFFDT01QQVJFKGxhYmVsSW50ZXJmYWNlLT5wcm9wZXJ0eSgiTmFtZSIpLnRvU3RyaW5nKCks IGwtPnRleHQoKSk7CisgCisrICAgIGF1dG8gKmExMXlFbXB0eUludGVyZmFjZSA9IGdldEludGVy ZmFjZShjaGlsZHJlbi5hdCgxKSwgIm9yZy5hMTF5LmF0c3BpLkFjY2Vzc2libGUiKTsKKysgICAg UUNPTVBBUkUoYTExeUVtcHR5SW50ZXJmYWNlLT5jYWxsKFFEQnVzOjpCbG9jaywgIkdldEFjY2Vz c2libGVJZCIpLmFyZ3VtZW50cygpLmZpcnN0KCkudG9TdHJpbmcoKSwKKysgICAgICAgICAgICAg UUxhdGluMVN0cmluZygibWFpbldpbmRvdy5RTGFiZWwiKSk7CisrCisgICAgIG1fd2luZG93LT5j bGVhckNoaWxkcmVuKCk7CisrICAgIGRlbGV0ZSBhMTF5RW1wdHlJbnRlcmZhY2U7CisgICAgIGRl bGV0ZSBsYWJlbEludGVyZmFjZTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1 dG8vc3FsL2tlcm5lbC9xc3FscXVlcnkvdHN0X3FzcWxxdWVyeS5jcHAgYi9xdGJhc2UvdGVzdHMv YXV0by9zcWwva2VybmVsL3FzcWxxdWVyeS90c3RfcXNxbHF1ZXJ5LmNwcAoraW5kZXggNzZkZjYx Yzg5Mi4uNmQ2ZDY1Yjc5MSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3NxbC9rZXJu ZWwvcXNxbHF1ZXJ5L3RzdF9xc3FscXVlcnkuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9z cWwva2VybmVsL3FzcWxxdWVyeS90c3RfcXNxbHF1ZXJ5LmNwcAorQEAgLTEsNiArMSw2IEBACisg LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyAqKgorLSoqIENvcHlyaWdodCAoQykgMjAxNiBUaGUgUXQg Q29tcGFueSBMdGQuCisrKiogQ29weXJpZ2h0IChDKSAyMDIyIFRoZSBRdCBDb21wYW55IEx0ZC4K KyAqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlz IGZpbGUgaXMgcGFydCBvZiB0aGUgdGVzdCBzdWl0ZSBvZiB0aGUgUXQgVG9vbGtpdC4KK0BAIC02 OCw2ICs2OCw4IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgcXVlcnlfZXhlYygpOworICAg ICB2b2lkIGV4ZWNFcnJvclJlY292ZXJ5X2RhdGEoKSB7IGdlbmVyaWNfZGF0YSgpOyB9CisgICAg IHZvaWQgZXhlY0Vycm9yUmVjb3ZlcnkoKTsKKysgICAgdm9pZCBwcmVtYXR1cmVFeGVjX2RhdGEo KSB7IGdlbmVyaWNfZGF0YSgpOyB9CisrICAgIHZvaWQgcHJlbWF0dXJlRXhlYygpOworICAgICB2 b2lkIGZpcnN0X2RhdGEoKSB7IGdlbmVyaWNfZGF0YSgpOyB9CisgICAgIHZvaWQgZmlyc3QoKTsK KyAgICAgdm9pZCBuZXh0X2RhdGEoKSB7IGdlbmVyaWNfZGF0YSgpOyB9CitAQCAtMjc3MCw2ICsy NzcyLDM1IEBAIHZvaWQgdHN0X1FTcWxRdWVyeTo6ZXhlY0Vycm9yUmVjb3ZlcnkoKQorICAgICBR VkVSSUZZX1NRTCggcSwgZXhlYygpICk7CisgfQorIAorK3ZvaWQgdHN0X1FTcWxRdWVyeTo6cHJl bWF0dXJlRXhlYygpCisreworKyAgICBRRkVUQ0goUVN0cmluZywgZGJOYW1lKTsKKysgICAgLy8g V2Ugb25seSB3YW50IHRoZSBlbmdpbmUgbmFtZSwgZm9yIGFkZERhdGFiYXNlKCk6CisrICAgIGlu dCBjdXQgPSBkYk5hbWUuaW5kZXhPZihRQ2hhcignQCcpKTsKKysgICAgaWYgKGN1dCA8IDApCisr ICAgICAgICBRU0tJUCgiRmFpbGVkIHRvIHBhcnNlIGRhdGFiYXNlIHR5cGUgb3V0IG9mIG5hbWUi KTsKKysgICAgZGJOYW1lLnRydW5jYXRlKGN1dCk7CisrICAgIGN1dCA9IGRiTmFtZS5pbmRleE9m KFFDaGFyKCdfJykpOworKyAgICBpZiAoY3V0ID49IDApCisrICAgICAgICBkYk5hbWUgPSBkYk5h bWUubWlkKGN1dCArIDEpOworKworKyAgICBhdXRvIGRiID0gUVNxbERhdGFiYXNlOjphZGREYXRh YmFzZShkYk5hbWUpOworKyAgICBRU3FsUXVlcnkgcShkYik7CisrCisrICAgIFFUZXN0OjppZ25v cmVNZXNzYWdlKFF0V2FybmluZ01zZywKKysgICAgICAgICAgICAgICAgICAgICAgICAgIlFTcWxE YXRhYmFzZVByaXZhdGU6OnJlbW92ZURhdGFiYXNlOiBjb25uZWN0aW9uICIKKysgICAgICAgICAg ICAgICAgICAgICAgICAgIidxdF9zcWxfZGVmYXVsdF9jb25uZWN0aW9uJyBpcyBzdGlsbCBpbiB1 c2UsIGFsbCAiCisrICAgICAgICAgICAgICAgICAgICAgICAgICJxdWVyaWVzIHdpbGwgY2Vhc2Ug dG8gd29yay4iKTsKKysgICAgUVRlc3Q6Omlnbm9yZU1lc3NhZ2UoUXRXYXJuaW5nTXNnLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAiUVNxbERhdGFiYXNlUHJpdmF0ZTo6YWRkRGF0YWJhc2U6 IGR1cGxpY2F0ZSBjb25uZWN0aW9uIG5hbWUgIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAi J3F0X3NxbF9kZWZhdWx0X2Nvbm5lY3Rpb24nLCBvbGQgY29ubmVjdGlvbiByZW1vdmVkLiIpOwor KyAgICBhdXRvIG90aGVyRGIgPSBRU3FsRGF0YWJhc2U6OmFkZERhdGFiYXNlKGRiTmFtZSk7Cisr CisrICAgIFFUZXN0OjppZ25vcmVNZXNzYWdlKFF0V2FybmluZ01zZywgIlFTcWxRdWVyeTo6ZXhl YzogY2FsbGVkIGJlZm9yZSBkcml2ZXIgaGFzIGJlZW4gc2V0IHVwIik7CisrICAgIC8vIFFUQlVH LTEwMDAzNzogc2hvdWxkbid0IGNyYXNoICEKKysgICAgUVZFUklGWSghcS5leGVjKCJzZWxlY3Qg c3R1ZmYgZnJvbSBUaGVWb2lkIikpOworK30KKysKKyB2b2lkIHRzdF9RU3FsUXVlcnk6Omxhc3RJ bnNlcnRJZCgpCisgeworICAgICBRRkVUQ0goIFFTdHJpbmcsIGRiTmFtZSApOworZGlmZiAtLWdp dCBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyL3Rz dF9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdGVzdGxp Yi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIvdHN0X3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5j cHAKK2luZGV4IDRhYTNmOGQ2MGIuLmQyMDUwYTYxYWEgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVz dHMvYXV0by90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci90c3RfcWFic3RyYWN0aXRl bW1vZGVsdGVzdGVyLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdGVzdGxpYi9xYWJzdHJh Y3RpdGVtbW9kZWx0ZXN0ZXIvdHN0X3FhYnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAKK0BAIC0x MTUsNiArMTE1LDEwIEBAIHZvaWQgdHN0X1FBYnN0cmFjdEl0ZW1Nb2RlbFRlc3Rlcjo6c3RhbmRh cmRJdGVtTW9kZWxaZXJvQ29sdW1ucygpCisgICAgIC8vIFFUQlVHLTkyODg2CisgICAgIG1vZGVs Lmluc2VydFJvd3MoMCwgNSk7CisgICAgIG1vZGVsLnJlbW92ZVJvd3MoMSwgMik7CisrCisrICAg IGNvbnN0IFFNb2RlbEluZGV4IHBhcmVudEluZGV4ID0gbW9kZWwuaW5kZXgoMCwgMCk7CisrICAg IG1vZGVsLmluc2VydFJvd3MoMCwgNSwgcGFyZW50SW5kZXgpOworKyAgICBtb2RlbC5yZW1vdmVS b3dzKDEsIDIsIHBhcmVudEluZGV4KTsKKyB9CisgCisgdm9pZCB0c3RfUUFic3RyYWN0SXRlbU1v ZGVsVGVzdGVyOjp0ZXN0SW5zZXJ0VGhyb3VnaFByb3h5KCkKK2RpZmYgLS1naXQgYS9xdGJhc2Uv dGVzdHMvYXV0by90b29scy9tb2MvYWxsbW9jc19iYXNlbGluZV9pbi5qc29uIGIvcXRiYXNlL3Rl c3RzL2F1dG8vdG9vbHMvbW9jL2FsbG1vY3NfYmFzZWxpbmVfaW4uanNvbgoraW5kZXggMTJhNGEy MmExOS4uY2U1MThlNzhmYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21v Yy9hbGxtb2NzX2Jhc2VsaW5lX2luLmpzb24KKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xz L21vYy9hbGxtb2NzX2Jhc2VsaW5lX2luLmpzb24KK0BAIC02NjgsNTAgKzY2OCw2IEBACisgICAg ICAgICAiaW5wdXRGaWxlIjogInRhc2sxOTI1NTIuaCIsCisgICAgICAgICAib3V0cHV0UmV2aXNp b24iOiA2NworICAgICB9LAorLSAgICB7CistICAgICAgICAiY2xhc3NlcyI6IFsKKy0gICAgICAg ICAgICB7CistICAgICAgICAgICAgICAgICJjbGFzc05hbWUiOiAiSW5saW5lU2xvdHNXaXRoVGhy b3dEZWNsYXJhdGlvbiIsCistICAgICAgICAgICAgICAgICJvYmplY3QiOiB0cnVlLAorLSAgICAg ICAgICAgICAgICAicXVhbGlmaWVkQ2xhc3NOYW1lIjogIklubGluZVNsb3RzV2l0aFRocm93RGVj bGFyYXRpb24iLAorLSAgICAgICAgICAgICAgICAic2xvdHMiOiBbCistICAgICAgICAgICAgICAg ICAgICB7CistICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VzcyI6ICJwdWJsaWMiLAorLSAg ICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImEiLAorLSAgICAgICAgICAgICAgICAgICAg ICAgICJyZXR1cm5UeXBlIjogInZvaWQiCistICAgICAgICAgICAgICAgICAgICB9LAorLSAgICAg ICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiOiAicHVi bGljIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJiIiwKKy0gICAgICAgICAg ICAgICAgICAgICAgICAicmV0dXJuVHlwZSI6ICJ2b2lkIgorLSAgICAgICAgICAgICAgICAgICAg fSwKKy0gICAgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAiYWNj ZXNzIjogInB1YmxpYyIsCistICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYyIsCist ICAgICAgICAgICAgICAgICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIKKy0gICAgICAgICAg ICAgICAgICAgIH0sCistICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAg ICAgICAgImFjY2VzcyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJuYW1l IjogImQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQiCist ICAgICAgICAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICAgICAgICAgeworLSAgICAgICAg ICAgICAgICAgICAgICAgICJhY2Nlc3MiOiAicHVibGljIiwKKy0gICAgICAgICAgICAgICAgICAg ICAgICAibmFtZSI6ICJlIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuVHlwZSI6 ICJ2b2lkIgorLSAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICBdLAorLSAg ICAgICAgICAgICAgICAic3VwZXJDbGFzc2VzIjogWworLSAgICAgICAgICAgICAgICAgICAgewor LSAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiOiAicHVibGljIiwKKy0gICAgICAgICAg ICAgICAgICAgICAgICAibmFtZSI6ICJRT2JqZWN0IgorLSAgICAgICAgICAgICAgICAgICAgfQor LSAgICAgICAgICAgICAgICBdCistICAgICAgICAgICAgfQorLSAgICAgICAgXSwKKy0gICAgICAg ICJpbnB1dEZpbGUiOiAidGFzazE4OTk5Ni5oIiwKKy0gICAgICAgICJvdXRwdXRSZXZpc2lvbiI6 IDY3CistICAgIH0sCisgICAgIHsKKyAgICAgICAgICJjbGFzc2VzIjogWworICAgICAgICAgICAg IHsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvbW9jLnBybyBiL3F0 YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9tb2MucHJvCitpbmRleCBjMzI0YjNhOGNkLi40YWNl Yjc4ZGMwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL21vYy5wcm8K KysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9tb2MucHJvCitAQCAtMTUsNyArMTUs NyBAQCBjcm9zc19jb21waWxlOiBERUZJTkVTICs9IE1PQ19DUk9TU19DT01QSUxFRAorIEhFQURF UlMgKz0gdXNpbmctbmFtZXNwYWNlcy5oIG5vLWtleXdvcmRzLmggdGFzazg3ODgzLmggYy1jb21t ZW50cy5oIGJhY2tzbGFzaC1uZXdsaW5lcy5oIG9sZHN0eWxlLWNhc3RzLmggXAorICAgICAgICAg ICAgc2xvdHMtd2l0aC12b2lkLXRlbXBsYXRlLmggcWludm9rYWJsZS5oIG5hbWVzcGFjZWQtZmxh Z3MuaCB0cmlncmFwaHMuaCBcCisgICAgICAgICAgICBlc2NhcGVzLWluLXN0cmluZy1saXRlcmFs cy5oIGNzdHlsZS1lbnVtcy5oIHFwcml2YXRlc2xvdHMuaCBnYWRnZXR3aXRobm9lbnVtcy5oIFwK Ky0gICAgICAgICAgIGRpci1pbi1pbmNsdWRlLXBhdGguaCBzaW5nbGVfZnVuY3Rpb25fa2V5d29y ZC5oIHRhc2sxOTI1NTIuaCB0YXNrMTg5OTk2LmggXAorKyAgICAgICAgICAgZGlyLWluLWluY2x1 ZGUtcGF0aC5oIHNpbmdsZV9mdW5jdGlvbl9rZXl3b3JkLmggdGFzazE5MjU1Mi5oIFwKKyAgICAg ICAgICAgIHRhc2syMzQ5MDkuaCB0YXNrMjQwMzY4LmggcHVyZS12aXJ0dWFsLXNpZ25hbHMuaCBj eHgxMS1lbnVtcy5oIFwKKyAgICAgICAgICAgIGN4eDExLWZpbmFsLWNsYXNzZXMuaCBcCisgICAg ICAgICAgICBjeHgxMS1leHBsaWNpdC1vdmVycmlkZS1jb250cm9sLmggXAorZGlmZiAtLWdpdCBh L3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy90YXNrMTg5OTk2LmggYi9xdGJhc2UvdGVzdHMv YXV0by90b29scy9tb2MvdGFzazE4OTk5Ni5oCitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2lu ZGV4IGY5NGEwNTFiM2EuLjAwMDAwMDAwMDAKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xz L21vYy90YXNrMTg5OTk2LmgKKysrKyAvZGV2L251bGwKK0BAIC0xLDQ3ICswLDAgQEAKKy0vKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgorLSoqCistKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21w YW55IEx0ZC4KKy0qKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCistKioK Ky0qKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdGVzdCBzdWl0ZSBvZiB0aGUgUXQgVG9vbGtp dC4KKy0qKgorLSoqICRRVF9CRUdJTl9MSUNFTlNFOkdQTC1FWENFUFQkCistKiogQ29tbWVyY2lh bCBMaWNlbnNlIFVzYWdlCistKiogTGljZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29tbWVyY2lhbCBR dCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorLSoqIGFjY29yZGFuY2Ugd2l0aCB0aGUg Y29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRoIHRoZQorLSoqIFNvZnR3 YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRlcm1zIGNvbnRh aW5lZCBpbgorLSoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5kIFRoZSBRdCBD b21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCistKiogYW5kIGNvbmRpdGlvbnMgc2VlIGh0dHBz Oi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVyCistKiogaW5mb3JtYXRp b24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQuaW8vY29udGFjdC11cy4K Ky0qKgorLSoqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCistKiogQWx0ZXJuYXRp dmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCist KiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlCistKiogRm91bmRhdGlvbiB3aXRoIGV4Y2VwdGlvbnMgYXMgYXBwZWFyaW5n IGluIHRoZSBmaWxlIExJQ0VOU0UuR1BMMy1FWENFUFQKKy0qKiBpbmNsdWRlZCBpbiB0aGUgcGFj a2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCistKiogaW5m b3JtYXRpb24gdG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJl bWVudHMgd2lsbAorLSoqIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwt My4wLmh0bWwuCistKioKKy0qKiAkUVRfRU5EX0xJQ0VOU0UkCistKioKKy0qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworLS8vIGlubGluZSBmdW5jdGlvbnMgY2FuIGhhdmUgdGhyb3cgZGVjbGFyYXRpb25z CistCistI2lmbmRlZiBUQVNLMTg5OTk2X0gKKy0jZGVmaW5lIFRBU0sxODk5OTZfSAorLQorLSNp bmNsdWRlIDxRT2JqZWN0PgorLQorLWNsYXNzIElubGluZVNsb3RzV2l0aFRocm93RGVjbGFyYXRp b24gOiBwdWJsaWMgUU9iamVjdAorLXsKKy0gICAgUV9PQkpFQ1QKKy0KKy1wdWJsaWMgc2xvdHM6 CistICAgIHZvaWQgYSgpIHRocm93KCkgeyB9CistICAgIHZvaWQgYigpIGNvbnN0IHRocm93KCkg eyB9CistICAgIHZvaWQgYygpIHRocm93KCk7CistICAgIHZvaWQgZCgpIHRocm93KGludCkgeyB9 CistICAgIHZvaWQgZSgpIGNvbnN0IHRocm93KGludCxkb3VibGUpIHsgfQorLX07CistCistI2Vu ZGlmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3RzdF9tb2MuY3Bw IGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3RzdF9tb2MuY3BwCitpbmRleCBjNzE2YWVh ZDIxLi4xNWRkOWU0MWU1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9j L3RzdF9tb2MuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvdHN0X21vYy5j cHAKK0BAIC02MzEsNyArNjMxLDYgQEAgcHVibGljOgorIHByaXZhdGUgc2xvdHM6CisgICAgIHZv aWQgaW5pdFRlc3RDYXNlKCk7CisgCistICAgIHZvaWQgc2xvdFdpdGhFeGNlcHRpb24oKSB0aHJv dyhNeVN0cnVjdCk7CisgICAgIHZvaWQgZG9udFN0cmlwTmFtZXNwYWNlcygpOworICAgICB2b2lk IG9sZFN0eWxlQ2FzdHMoKTsKKyAgICAgdm9pZCB3YXJuT25FeHRyYVNpZ25hbFNsb3RRdWFsaWZp YWN0aW9uKCk7CitAQCAtNjczLDcgKzY3Miw2IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQg dGVtcGxhdGVHdEd0KCk7CisgICAgIHZvaWQgcXByaXZhdGVzbG90cygpOworICAgICB2b2lkIHFw cml2YXRlcHJvcGVydGllcygpOworLSAgICB2b2lkIGlubGluZVNsb3RzV2l0aFRocm93RGVjbGFy YXRpb24oKTsKKyAgICAgdm9pZCB3YXJuT25Qcm9wZXJ0eVdpdGhvdXRSRUFEKCk7CisgICAgIHZv aWQgY29uc3RydWN0b3JzKCk7CisgICAgIHZvaWQgdHlwZW5hbWVXaXRoVW5zaWduZWQoKTsKK0BA IC03ODQsMTIgKzc4Miw2IEBAIHZvaWQgdHN0X01vYzo6aW5pdFRlc3RDYXNlKCkKKyAjZW5kaWYK KyB9CisgCistdm9pZCB0c3RfTW9jOjpzbG90V2l0aEV4Y2VwdGlvbigpIHRocm93KE15U3RydWN0 KQorLXsKKy0gICAgLy8gYmUgaGFwcHkKKy0gICAgUVZFUklGWSh0cnVlKTsKKy19CistCisgdm9p ZCB0c3RfTW9jOjpkb250U3RyaXBOYW1lc3BhY2VzKCkKKyB7CisgICAgIFNlbmRlciBzZW5kZXI7 CitAQCAtODI0LDcgKzgxNiw3IEBAIHZvaWQgdHN0X01vYzo6b2xkU3R5bGVDYXN0cygpCisgCisg ICAgIFFTdHJpbmdMaXN0IGFyZ3M7CisgICAgIGFyZ3MgPDwgIi1jIiA8PCAiLXgiIDw8ICJjKysi IDw8ICItV29sZC1zdHlsZS1jYXN0IiA8PCAiLUkiIDw8ICIuIgorLSAgICAgICAgIDw8ICItSSIg PDwgcXRJbmNsdWRlUGF0aCA8PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1z dGQ9YysrMTEiIDw8ICItIjsKKysgICAgICAgICA8PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwg Ii1vIiA8PCAiL2Rldi9udWxsIiA8PCAiLWZQSUMiIDw8ICItc3RkPWMrKzF6IiA8PCAiLSI7Cisg ICAgIHByb2Muc3RhcnQoImdjYyIsIGFyZ3MpOworICAgICBRVkVSSUZZKHByb2Mud2FpdEZvclN0 YXJ0ZWQoKSk7CisgICAgIHByb2Mud3JpdGUobW9jT3V0KTsKK0BAIC04OTQsNyArODg2LDcgQEAg dm9pZCB0c3RfTW9jOjppbnB1dEZpbGVOYW1lV2l0aERvdHNCdXROb0V4dGVuc2lvbigpCisgCisg ICAgIFFTdHJpbmdMaXN0IGFyZ3M7CisgICAgIGFyZ3MgPDwgIi1jIiA8PCAiLXgiIDw8ICJjKysi IDw8ICItSSIgPDwgIi4uIgorLSAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNsdWRlUGF0aCA8PCAi LW8iIDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMTEiIDw8ICItIjsKKysg ICAgICAgICA8PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1vIiA8PCAiL2Rldi9udWxsIiA8 PCAiLWZQSUMiIDw8ICItc3RkPWMrKzF6IiA8PCAiLSI7CisgICAgIHByb2Muc3RhcnQoImdjYyIs IGFyZ3MpOworICAgICBRVkVSSUZZKHByb2Mud2FpdEZvclN0YXJ0ZWQoKSk7CisgICAgIHByb2Mu d3JpdGUobW9jT3V0KTsKK0BAIC0xMTc0LDcgKzExNjYsNyBAQCB2b2lkIHRzdF9Nb2M6Omlnbm9y ZU9wdGlvbkNsYXNoZXMoKQorICAgICBRU3RyaW5nTGlzdCBnY2NBcmdzOworICAgICBnY2NBcmdz IDw8ICItYyIgPDwgIi14IiA8PCAiYysrIiA8PCAiLUkiIDw8ICIuLiIKKyAgICAgICAgICA8PCAi LUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1JIiA8PCBpbmNsdWRlRGlyIDw8ICItbyIgPDwgIi9k ZXYvbnVsbCIKKy0gICAgICAgICA8PCAiLWZQSUMiIDw8ICItc3RkPWMrKzExIiA8PCAgIi0iOwor KyAgICAgICAgIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMXoiIDw8ICAiLSI7CisgICAgIHByb2Mu c3RhcnQoImdjYyIsIGdjY0FyZ3MpOworICAgICBRVkVSSUZZKHByb2Mud2FpdEZvclN0YXJ0ZWQo KSk7CisgICAgIHByb2Mud3JpdGUobW9jT3V0KTsKK0BAIC0xNTkzLDIxICsxNTg1LDYgQEAgdm9p ZCB0c3RfTW9jOjpxcHJpdmF0ZXByb3BlcnRpZXMoKQorIAorIH0KKyAKKy0jaW5jbHVkZSAidGFz azE4OTk5Ni5oIgorLQorLXZvaWQgSW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbjo6Yygp IHRocm93KCkge30KKy0KKy12b2lkIHRzdF9Nb2M6OmlubGluZVNsb3RzV2l0aFRocm93RGVjbGFy YXRpb24oKQorLXsKKy0gICAgSW5saW5lU2xvdHNXaXRoVGhyb3dEZWNsYXJhdGlvbiB0c3Q7Cist ICAgIGNvbnN0IFFNZXRhT2JqZWN0ICptb2JqID0gdHN0Lm1ldGFPYmplY3QoKTsKKy0gICAgUVZF UklGWShtb2JqLT5pbmRleE9mU2xvdCgiYSgpIikgIT0gLTEpOworLSAgICBRVkVSSUZZKG1vYmot PmluZGV4T2ZTbG90KCJiKCkiKSAhPSAtMSk7CistICAgIFFWRVJJRlkobW9iai0+aW5kZXhPZlNs b3QoImMoKSIpICE9IC0xKTsKKy0gICAgUVZFUklGWShtb2JqLT5pbmRleE9mU2xvdCgiZCgpIikg IT0gLTEpOworLSAgICBRVkVSSUZZKG1vYmotPmluZGV4T2ZTbG90KCJlKCkiKSAhPSAtMSk7Cist fQorLQorIHZvaWQgdHN0X01vYzo6d2Fybk9uUHJvcGVydHlXaXRob3V0UkVBRCgpCisgeworICNp ZmRlZiBNT0NfQ1JPU1NfQ09NUElMRUQKK0BAIC0xODY5LDcgKzE4NDYsNyBAQCB2b2lkIHRzdF9N b2M6Om5vdGlmeUVycm9yKCkKKyAKKyAgICAgUVN0cmluZ0xpc3QgYXJnczsKKyAgICAgYXJncyA8 PCAiLWMiIDw8ICIteCIgPDwgImMrKyIgPDwgIi1JIiA8PCAiLiIKKy0gICAgICAgICA8PCAiLUki IDw8IHF0SW5jbHVkZVBhdGggPDwgIi1vIiA8PCAiL2Rldi9udWxsIiA8PCAiLWZQSUMiIDw8ICIt c3RkPWMrKzExIiA8PCAiLSI7CisrICAgICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8 ICItbyIgPDwgIi9kZXYvbnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysxeiIgPDwgIi0iOwor ICAgICBwcm9jLnN0YXJ0KCJnY2MiLCBhcmdzKTsKKyAgICAgUVZFUklGWShwcm9jLndhaXRGb3JT dGFydGVkKCkpOworICAgICBwcm9jLndyaXRlKG1vY091dCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmlld3MvcWhlYWRlcnZpZXcvdHN0X3FoZWFkZXJ2aWV3 LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3FoZWFkZXJ2aWV3L3Rz dF9xaGVhZGVydmlldy5jcHAKK2luZGV4IGMzNTVlZTk2NjUuLjg4YzA5ZGU4ZTAgMTAwNjQ0Cist LS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xaGVhZGVydmlldy90c3Rf cWhlYWRlcnZpZXcuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3 cy9xaGVhZGVydmlldy90c3RfcWhlYWRlcnZpZXcuY3BwCitAQCAtMjUxLDYgKzI1MSw3IEBAIHBy aXZhdGUgc2xvdHM6CisgICAgIHZvaWQgdGVzdFJlc2V0Q2FjaGVkU2l6ZUhpbnQoKTsKKyAgICAg dm9pZCBzdGF0dXNUaXBzKCk7CisgICAgIHZvaWQgdGVzdFJlbW92aW5nQ29sdW1uc1ZpYUxheW91 dENoYW5nZWQoKTsKKysgICAgdm9pZCB0ZXN0TW9kZWxNb3ZpbmdDb2x1bW5zKCk7CisgCisgcHJv dGVjdGVkOgorICAgICB2b2lkIHNldHVwVGVzdERhdGEoYm9vbCB1c2VfcmVzZXRfbW9kZWwgPSBm YWxzZSk7CitAQCAtMzYwLDYgKzM2MSwxMiBAQCBwdWJsaWM6CisgICAgICAgICBlbmRSZW1vdmVD b2x1bW5zKCk7CisgICAgIH0KKyAKKysgICAgdm9pZCBtb3ZlQ29sdW1uKGludCBmcm9tLCBpbnQg dG8pCisrICAgIHsKKysgICAgICAgIGJlZ2luTW92ZUNvbHVtbnMoUU1vZGVsSW5kZXgoKSwgZnJv bSwgZnJvbSwgUU1vZGVsSW5kZXgoKSwgdG8pOworKyAgICAgICAgZW5kTW92ZUNvbHVtbnMoKTsK KysgICAgfQorKworICAgICB2b2lkIGNsZWFudXAoKQorICAgICB7CisgICAgICAgICBlbWl0IGxh eW91dEFib3V0VG9CZUNoYW5nZWQoKTsKK0BAIC0zNjI3LDUgKzM2MzQsMTggQEAgdm9pZCB0c3Rf UUhlYWRlclZpZXc6OnRlc3RSZW1vdmluZ0NvbHVtbnNWaWFMYXlvdXRDaGFuZ2VkKCkKKyAgICAg Ly8gVGhlIG1haW4gcG9pbnQgb2YgdGhpcyB0ZXN0IGlzIHRoYXQgdGhlIHNlY3Rpb24tc2l6ZSBy ZXN0b3JpbmcgY29kZSBkaWRuJ3QgZ28gb3V0IG9mIGJvdW5kcy4KKyB9CisgCisrdm9pZCB0c3Rf UUhlYWRlclZpZXc6OnRlc3RNb2RlbE1vdmluZ0NvbHVtbnMoKQorK3sKKysgICAgUXRUZXN0TW9k ZWwgbW9kZWwoMTAsIDEwKTsKKysgICAgUUhlYWRlclZpZXcgaHYoUXQ6Okhvcml6b250YWwpOwor KyAgICBodi5zZXRNb2RlbCgmbW9kZWwpOworKyAgICBodi5yZXNpemVTZWN0aW9ucyhRSGVhZGVy Vmlldzo6UmVzaXplVG9Db250ZW50cyk7CisrICAgIGh2LnNob3coKTsKKysKKysgICAgUVBlcnNp c3RlbnRNb2RlbEluZGV4IGluZGV4MyA9IG1vZGVsLmluZGV4KDAsIDMpOworKyAgICBtb2RlbC5t b3ZlQ29sdW1uKDMsIDEpOworKyAgICBRQ09NUEFSRShpbmRleDMuY29sdW1uKCksIDEpOworK30K KysKKyBRVEVTVF9NQUlOKHRzdF9RSGVhZGVyVmlldykKKyAjaW5jbHVkZSAidHN0X3FoZWFkZXJ2 aWV3Lm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3 cy9xdGFibGV2aWV3L3RzdF9xdGFibGV2aWV3LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdl dHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcvdHN0X3F0YWJsZXZpZXcuY3BwCitpbmRleCA3NjEzNTdi MjUyLi4wNmJiNzA2MDc0IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9p dGVtdmlld3MvcXRhYmxldmlldy90c3RfcXRhYmxldmlldy5jcHAKKysrKyBiL3F0YmFzZS90ZXN0 cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcvdHN0X3F0YWJsZXZpZXcuY3BwCitA QCAtMzk3LDYgKzM5Nyw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgY2hlY2tIZWFkZXJN aW5TaXplKCk7CisgCisgICAgIHZvaWQgcmVzaXplVG9Db250ZW50cygpOworKyAgICB2b2lkIHJl c2l6ZVRvQ29udGVudHNTcGFucygpOworIAorICAgICB2b2lkIHRhYkZvY3VzKCk7CisgICAgIHZv aWQgYmlnTW9kZWwoKTsKK0BAIC0zNzIxLDYgKzM3MjIsNzAgQEAgdm9pZCB0c3RfUVRhYmxlVmll dzo6cmVzaXplVG9Db250ZW50cygpCisgCisgfQorIAorKworK2NsYXNzIFNwYW5Nb2RlbCA6IHB1 YmxpYyBRQWJzdHJhY3RUYWJsZU1vZGVsCisreworK3B1YmxpYzoKKysgICAgU3Bhbk1vZGVsKGJv b2wgc2VjdGlvbnNNb3ZlZCkKKysgICAgICAgIDogX3NlY3Rpb25zTW92ZWQoc2VjdGlvbnNNb3Zl ZCkKKysgICAge30KKysgICAgaW50IGNvbHVtbkNvdW50KGNvbnN0IFFNb2RlbEluZGV4ICYgPSB7 fSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMjsgfQorKyAgICBpbnQgcm93Q291bnQoY29uc3Qg UU1vZGVsSW5kZXggJiA9IHt9KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAxOyB9CisrICAgIFFW YXJpYW50IGRhdGEoY29uc3QgUU1vZGVsSW5kZXggJmlkeCwgaW50IHJvbGUgPSBRdDo6RGlzcGxh eVJvbGUpIGNvbnN0IG92ZXJyaWRlCisrICAgIHsKKysgICAgICAgIGlmIChyb2xlICE9IFF0OjpE aXNwbGF5Um9sZSkKKysgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQoKTsKKysgICAgICAgIGNv bnN0IGludCBjb2wgPSBfc2VjdGlvbnNNb3ZlZCA/IDEgLSBpZHguY29sdW1uKCkgOiBpZHguY29s dW1uKCk7CisrICAgICAgICBpZiAoY29sID09IDApCisrICAgICAgICAgICAgcmV0dXJuICJMb3Jl bSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQg ZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFs aXF1YS4iOworKyAgICAgICAgcmV0dXJuIFFWYXJpYW50KCk7CisrICAgIH0KKytwcml2YXRlOgor KyAgICBib29sIF9zZWN0aW9uc01vdmVkOworK307CisrCisrCisrdm9pZCB0c3RfUVRhYmxlVmll dzo6cmVzaXplVG9Db250ZW50c1NwYW5zKCkKKyt7CisrICAgIFNwYW5Nb2RlbCBtb2RlbDEoZmFs c2UpOworKyAgICBTcGFuTW9kZWwgbW9kZWwyKHRydWUpOworKyAgICBRVGFibGVWaWV3IHZpZXcx LCB2aWV3MiwgdmlldzM7CisrICAgIHZpZXcxLnNldE1vZGVsKCZtb2RlbDEpOworKyAgICB2aWV3 Mi5zZXRNb2RlbCgmbW9kZWwyKTsKKysgICAgdmlldzIuaG9yaXpvbnRhbEhlYWRlcigpLT5tb3Zl U2VjdGlvbigwLCAxKTsKKysgICAgdmlldzMuc2V0TW9kZWwoJm1vZGVsMSk7CisrCisrICAgIHZp ZXcxLnNldFNwYW4oMCwgMCwgMSwgMik7CisrICAgIHZpZXcyLnNldFNwYW4oMCwgMSwgMSwgMik7 CisrICAgIHZpZXcxLnNob3coKTsKKysgICAgdmlldzIuc2hvdygpOworKyAgICB2aWV3My5zaG93 KCk7CisrICAgIFFWRVJJRlkoUVRlc3Q6OnFXYWl0Rm9yV2luZG93RXhwb3NlZCgmdmlldzEpKTsK KysgICAgUVZFUklGWShRVGVzdDo6cVdhaXRGb3JXaW5kb3dFeHBvc2VkKCZ2aWV3MikpOworKyAg ICBRVkVSSUZZKFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQoJnZpZXczKSk7CisrICAgIHZp ZXcxLnNldENvbHVtbldpZHRoKDAsIDEwMCk7CisrICAgIHZpZXcxLnNldENvbHVtbldpZHRoKDEs IDEwMCk7CisrICAgIHZpZXcyLnNldENvbHVtbldpZHRoKDAsIDEwMCk7CisrICAgIHZpZXcyLnNl dENvbHVtbldpZHRoKDEsIDEwMCk7CisrICAgIHZpZXczLnNldENvbHVtbldpZHRoKDAsIDIwMCk7 CisrCisrICAgIHZpZXcxLnJlc2l6ZVJvd1RvQ29udGVudHMoMCk7CisrICAgIHZpZXcyLnJlc2l6 ZVJvd1RvQ29udGVudHMoMCk7CisrICAgIHZpZXczLnJlc2l6ZVJvd1RvQ29udGVudHMoMCk7Cisr ICAgIFFDT01QQVJFKHZpZXcxLnJvd0hlaWdodCgwKSwgdmlldzMucm93SGVpZ2h0KDApKTsKKysg ICAgUUNPTVBBUkUodmlldzIucm93SGVpZ2h0KDApLCB2aWV3My5yb3dIZWlnaHQoMCkpOworKwor KyAgICB2aWV3My5yZXNpemVDb2x1bW5Ub0NvbnRlbnRzKDApOworKyAgICB2aWV3My5yZXNpemVS b3dUb0NvbnRlbnRzKDApOworKyAgICAvLyBoZWlnaHQgc2hvdWxkIGJlIG9ubHkgMSB0ZXh0IGxp bmUgZm9yIGVhc3kgdGVzdGluZworKyAgICB2aWV3MS5zZXRSb3dIZWlnaHQoMCwgdmlldzMudmVy dGljYWxIZWFkZXIoKS0+c2VjdGlvblNpemUoMCkpOworKyAgICB2aWV3Mi5zZXRSb3dIZWlnaHQo MCwgdmlldzMudmVydGljYWxIZWFkZXIoKS0+c2VjdGlvblNpemUoMCkpOworKyAgICB2aWV3MS5y ZXNpemVDb2x1bW5Ub0NvbnRlbnRzKDApOworKyAgICB2aWV3Mi5yZXNpemVDb2x1bW5Ub0NvbnRl bnRzKDEpOworKyAgICBRQ09NUEFSRSh2aWV3MS5jb2x1bW5XaWR0aCgwKSwgdmlldzMuY29sdW1u V2lkdGgoMCkgLSB2aWV3MS5jb2x1bW5XaWR0aCgxKSk7CisrICAgIFFDT01QQVJFKHZpZXcyLmNv bHVtbldpZHRoKDApLCB2aWV3My5jb2x1bW5XaWR0aCgwKSAtIHZpZXcyLmNvbHVtbldpZHRoKDEp KTsKKyt9CisrCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgZXh0ZXJuIGJvb2wgUV9XSURHRVRTX0VY UE9SVCBxdF90YWJfYWxsX3dpZGdldHMoKTsgLy8gcWFwcGxpY2F0aW9uLmNwcAorIFFUX0VORF9O QU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2tlcm5lbC9x YXBwbGljYXRpb24vdHN0X3FhcHBsaWNhdGlvbi5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRn ZXRzL2tlcm5lbC9xYXBwbGljYXRpb24vdHN0X3FhcHBsaWNhdGlvbi5jcHAKK2luZGV4IGEzYjhl Zjc4ZDguLjQ5NTVjZWJkNWQgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRz L2tlcm5lbC9xYXBwbGljYXRpb24vdHN0X3FhcHBsaWNhdGlvbi5jcHAKKysrKyBiL3F0YmFzZS90 ZXN0cy9hdXRvL3dpZGdldHMva2VybmVsL3FhcHBsaWNhdGlvbi90c3RfcWFwcGxpY2F0aW9uLmNw cAorQEAgLTE0OTgsNyArMTQ5OCw3IEBAIHZvaWQgdHN0X1FBcHBsaWNhdGlvbjo6ZGVza3RvcFNl dHRpbmdzQXdhcmUoKQorICAgICBlbnZpcm9ubWVudCArPSBRTGF0aW4xU3RyaW5nKCJRVF9NQUNf RElTQUJMRV9GT1JFR1JPVU5EX0FQUExJQ0FUSU9OX1RSQU5TRk9STT0xIik7CisgICAgIHRlc3RQ cm9jZXNzLnNldEVudmlyb25tZW50KGVudmlyb25tZW50KTsKKyAjZW5kaWYKKy0gICAgdGVzdFBy b2Nlc3Muc3RhcnQoImRlc2t0b3BzZXR0aW5nc2F3YXJlX2hlbHBlciIpOworKyAgICB0ZXN0UHJv Y2Vzcy5zdGFydCgiLi9kZXNrdG9wc2V0dGluZ3Nhd2FyZV9oZWxwZXIiKTsKKyAgICAgUVZFUklG WTIodGVzdFByb2Nlc3Mud2FpdEZvclN0YXJ0ZWQoKSwKKyAgICAgICAgICAgICAgcVByaW50YWJs ZShRU3RyaW5nOjpmcm9tTGF0aW4xKCJDYW5ub3Qgc3RhcnQgJ2Rlc2t0b3BzZXR0aW5nc2F3YXJl X2hlbHBlcic6ICUxIikuYXJnKHRlc3RQcm9jZXNzLmVycm9yU3RyaW5nKCkpKSk7CisgICAgIFFW RVJJRlkodGVzdFByb2Nlc3Mud2FpdEZvckZpbmlzaGVkKDEwMDAwKSk7CitAQCAtMjQ1Miw3ICsy NDUyLDcgQEAgdm9pZCB0c3RfUUFwcGxpY2F0aW9uOjpxdGJ1Z18xMjY3MygpCisgI2lmIFFUX0NP TkZJRyhwcm9jZXNzKQorICAgICBRUHJvY2VzcyB0ZXN0UHJvY2VzczsKKyAgICAgUVN0cmluZ0xp c3QgYXJndW1lbnRzOworLSAgICB0ZXN0UHJvY2Vzcy5zdGFydCgibW9kYWxfaGVscGVyIiwgYXJn dW1lbnRzKTsKKysgICAgdGVzdFByb2Nlc3Muc3RhcnQoIi4vbW9kYWxfaGVscGVyIiwgYXJndW1l bnRzKTsKKyAgICAgUVZFUklGWTIodGVzdFByb2Nlc3Mud2FpdEZvclN0YXJ0ZWQoKSwKKyAgICAg ICAgICAgICAgcVByaW50YWJsZShRU3RyaW5nOjpmcm9tTGF0aW4xKCJDYW5ub3Qgc3RhcnQgJ21v ZGFsX2hlbHBlcic6ICUxIikuYXJnKHRlc3RQcm9jZXNzLmVycm9yU3RyaW5nKCkpKSk7CisgICAg IFFWRVJJRlkodGVzdFByb2Nlc3Mud2FpdEZvckZpbmlzaGVkKDIwMDAwKSk7CitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi90c3Rf cWFic3RyYWN0YnV0dG9uLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9x YWJzdHJhY3RidXR0b24vdHN0X3FhYnN0cmFjdGJ1dHRvbi5jcHAKK2luZGV4IGViMTA4YTQwZGUu LmRjYTU1MjhjMWIgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdl dHMvcWFic3RyYWN0YnV0dG9uL3RzdF9xYWJzdHJhY3RidXR0b24uY3BwCisrKysgYi9xdGJhc2Uv dGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uL3RzdF9xYWJzdHJhY3Ri dXR0b24uY3BwCitAQCAtNDEsNiArNDEsNyBAQAorIAorICNpbmNsdWRlIDxwcml2YXRlL3FndWlh cHBsaWNhdGlvbl9wLmg+CisgI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm1pbnRlZ3JhdGlvbi5oPgor KyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtdGhlbWUuaD4KKyAKKyBjbGFzcyB0c3RfUUFic3RyYWN0 QnV0dG9uIDogcHVibGljIFFPYmplY3QKKyB7CitAQCAtNzYsNiArNzcsOCBAQCBwcml2YXRlIHNs b3RzOgorICAgICB2b2lkIGtleU5hdmlnYXRpb24oKTsKKyAjZW5kaWYKKyAKKysgICAgdm9pZCBi dXR0b25QcmVzc0tleXMoKTsKKysKKyBwcm90ZWN0ZWQgc2xvdHM6CisgICAgIHZvaWQgb25DbGlj a2VkKCk7CisgICAgIHZvaWQgb25Ub2dnbGVkKCBib29sIG9uICk7CitAQCAtMjY5LDcgKzI3Miwx MyBAQCB2b2lkIHRzdF9RQWJzdHJhY3RCdXR0b246OnNldEF1dG9SZXBlYXQoKQorICAgICAgICAg UUNPTVBBUkUocHJlc3NfY291bnQsIGNsaWNrX2NvdW50KTsKKyAgICAgICAgIFFWRVJJRlkoY2xp Y2tfY291bnQgPiAxKTsKKyAgICAgICAgIGJyZWFrOworLSAgICBjYXNlIDQ6CisrICAgIGNhc2Ug NDogeworKyAgICAgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRp b25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NL ZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1 ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFp bnMoUXQ6OktleV9FbnRlcikpIHsKKysgICAgICAgICAgICBRU0tJUCgicGxhdGZvcm0gdGhlbWUg aGFzIEtleV9FbnRlciBpbiBCdXR0b25QcmVzc0tleXMiKTsKKysgICAgICAgIH0KKyAgICAgICAg IC8vIGNoZWNrIHRoYXQgcHJlc3NpbmcgRU5URVIgaGFzIG5vIGVmZmVjdCB3aGVuIGF1dG9yZXBl YXQgaXMgZmFsc2UKKyAgICAgICAgIHRlc3RXaWRnZXQtPnNldERvd24oIGZhbHNlICk7CisgICAg ICAgICB0ZXN0V2lkZ2V0LT5zZXRBdXRvUmVwZWF0KCBmYWxzZSApOworQEAgLTI4Niw3ICsyOTUs MTQgQEAgdm9pZCB0c3RfUUFic3RyYWN0QnV0dG9uOjpzZXRBdXRvUmVwZWF0KCkKKyAKKyAgICAg ICAgIFFWRVJJRlkoIGNsaWNrX2NvdW50ID09IDAgKTsKKyAgICAgICAgIGJyZWFrOworLSAgICBj YXNlIDU6CisrICAgIH0KKysgICAgY2FzZSA1OiB7CisrICAgICAgICBjb25zdCBhdXRvIGJ1dHRv blByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQ bGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICAgICAg aWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0VudGVyKSkgeworKyAgICAgICAg ICAgIFFTS0lQKCJwbGF0Zm9ybSB0aGVtZSBoYXMgS2V5X0VudGVyIGluIEJ1dHRvblByZXNzS2V5 cyIpOworKyAgICAgICAgfQorICAgICAgICAgLy8gY2hlY2sgdGhhdCBwcmVzc2luZyBFTlRFUiBo YXMgbm8gZWZmZWN0IHdoZW4gYXV0b3JlcGVhdCBpcyB0cnVlCisgICAgICAgICB0ZXN0V2lkZ2V0 LT5zZXREb3duKCBmYWxzZSApOworICAgICAgICAgdGVzdFdpZGdldC0+c2V0QXV0b1JlcGVhdCgg dHJ1ZSApOworQEAgLTMwNCw2ICszMjAsNyBAQCB2b2lkIHRzdF9RQWJzdHJhY3RCdXR0b246OnNl dEF1dG9SZXBlYXQoKQorIAorICAgICAgICAgUVZFUklGWSggY2xpY2tfY291bnQgPT0gMCApOwor ICAgICAgICAgYnJlYWs7CisrICAgIH0KKyAgICAgY2FzZSA2OgorICAgICAgICAgLy8gdmVyaWZ5 IGF1dG9yZXBlYXQgaXMgb2ZmIGJ5IGRlZmF1bHQuCisgICAgICAgICBNeUJ1dHRvbiB0bXAoIDAp OworQEAgLTY1MSw1ICs2NjgsMTYgQEAgdm9pZCB0c3RfUUFic3RyYWN0QnV0dG9uOjprZXlOYXZp Z2F0aW9uKCkKKyB9CisgI2VuZGlmCisgCisrdm9pZCB0c3RfUUFic3RyYWN0QnV0dG9uOjpidXR0 b25QcmVzc0tleXMoKQorK3sKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3Vp QXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25Q cmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFs dWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYnV0dG9uUHJl c3NLZXlzLmxlbmd0aCgpOyArK2kpIHsKKysgICAgICAgIFFUZXN0OjprZXlDbGljayh0ZXN0V2lk Z2V0LCBidXR0b25QcmVzc0tleXNbaV0pOworKyAgICAgICAgUUNPTVBBUkUoY2xpY2tfY291bnQs IGkgKyAxKTsKKysgICAgfQorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RQWJzdHJhY3RCdXR0b24p CisgI2luY2x1ZGUgInRzdF9xYWJzdHJhY3RidXR0b24ubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFz ZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3gvdHN0X3Fjb21ib2JveC5jcHAg Yi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94L3RzdF9xY29tYm9i b3guY3BwCitpbmRleCAzMjQzNzA1MGY1Li40NmI1YWY2ZDYzIDEwMDY0NAorLS0tIGEvcXRiYXNl L3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC90c3RfcWNvbWJvYm94LmNwcAor KysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC90c3RfcWNv bWJvYm94LmNwcAorQEAgLTE2OCw2ICsxNjgsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lk IGNoZWNrTWVudUl0ZW1Qb3NXaGVuU3R5bGVTaGVldElzU2V0KCk7CisgICAgIHZvaWQgY2hlY2tF bWJlZGRlZExpbmVFZGl0V2hlblN0eWxlU2hlZXRJc1NldCgpOworICAgICB2b2lkIHByb3BhZ2F0 ZVN0eWxlQ2hhbmdlcygpOworKyAgICB2b2lkIGJ1dHRvblByZXNzS2V5cygpOworIAorIHByaXZh dGU6CisgICAgIFBsYXRmb3JtSW5wdXRDb250ZXh0IG1fcGxhdGZvcm1JbnB1dENvbnRleHQ7CitA QCAtMTY4Miw2ICsxNjgzLDE2IEBAIHZvaWQgdHN0X1FDb21ib0JveDo6c2V0TW9kZWwoKQorICAg ICBRQ09NUEFSRShib3gucm9vdE1vZGVsSW5kZXgoKSwgcm9vdE1vZGVsSW5kZXgpOworICAgICBi b3guc2V0TW9kZWwoYm94Lm1vZGVsKCkpOworICAgICBRQ09NUEFSRShib3gucm9vdE1vZGVsSW5k ZXgoKSwgcm9vdE1vZGVsSW5kZXgpOworKworKyAgICAvLyBjaGVjayB0aGF0IHNldHRpbmcgdGhl IHNhbWUgbW9kZWwgYXMgdGhlIGNvbXBsZXRlcidzIGRvZXNuJ3QgY3Jhc2gKKysgICAgUUNvbXBs ZXRlciAqY29tcGxldGVyID0gbmV3IFFDb21wbGV0ZXIoJmJveCk7CisrICAgIGJveC5zZXRFZGl0 YWJsZSh0cnVlKTsKKysgICAgYm94LnNldENvbXBsZXRlcihjb21wbGV0ZXIpOworKyAgICBhdXRv ICpsaXN0TW9kZWwgPSBuZXcgUVN0cmluZ0xpc3RNb2RlbCh7ICJvbmUiLCAidHdvIiB9LCBjb21w bGV0ZXIpOworKyAgICBjb21wbGV0ZXItPnNldE1vZGVsKGxpc3RNb2RlbCk7CisrICAgIFFDT01Q QVJFKGxpc3RNb2RlbC0+cm93Q291bnQoKSwgMik7IC8vIG1ha2Ugc3VyZSBpdCB3YXNuJ3QgZGVs ZXRlZAorKyAgICBib3guc2V0TW9kZWwobGlzdE1vZGVsKTsKKysgICAgUUNPTVBBUkUobGlzdE1v ZGVsLT5yb3dDb3VudCgpLCAyKTsgLy8gbWFrZSBzdXJlIGl0IHdhc24ndCBkZWxldGVkCisgfQor IAorIHZvaWQgdHN0X1FDb21ib0JveDo6c2V0Q3VzdG9tTW9kZWxBbmRWaWV3KCkKK0BAIC0zNjMy LDUgKzM2NDMsMjQgQEAgdm9pZCB0c3RfUUNvbWJvQm94Ojpwcm9wYWdhdGVTdHlsZUNoYW5nZXMo KQorICAgICBRVkVSSUZZKGZyYW1lU3R5bGUuaW5xdWlyZWQpOworIH0KKyAKKyt2b2lkIHRzdF9R Q29tYm9Cb3g6OmJ1dHRvblByZXNzS2V5cygpCisreworKyAgICBRQ29tYm9Cb3ggY29tYm9Cb3g7 CisrICAgIGNvbWJvQm94LnNldEVkaXRhYmxlKGZhbHNlKTsKKysgICAgY29tYm9Cb3guYWRkSXRl bShRU3RyaW5nOjpudW1iZXIoMSkpOworKyAgICBjb21ib0JveC5hZGRJdGVtKFFTdHJpbmc6Om51 bWJlcigyKSk7CisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0 aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlz KQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0 PFF0OjpLZXk+PigpOworKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGJ1dHRvblByZXNzS2V5cy5s ZW5ndGgoKTsgKytpKSB7CisrICAgICAgICBRVGVzdDo6a2V5Q2xpY2soJmNvbWJvQm94LCBidXR0 b25QcmVzc0tleXNbaV0pOworKyAgICAgICAgLy8gT24gc29tZSBwbGF0Zm9ybXMsIGEgd2luZG93 IHdpbGwgbm90IGJlIGltbWVkaWF0ZWx5IHZpc2libGUsCisrICAgICAgICAvLyBidXQgdGFrZSBz b21lIGV2ZW50LWxvb3AgaXRlcmF0aW9ucyB0byBjb21wbGV0ZS4KKysgICAgICAgIC8vIFVzaW5n IFFUUllfVkVSSUZZIHRvIGRlYWwgd2l0aCB0aGF0LgorKyAgICAgICAgUVRSWV9WRVJJRlkoY29t Ym9Cb3gudmlldygpLT5pc1Zpc2libGUoKSk7CisrICAgICAgICBjb21ib0JveC5oaWRlUG9wdXAo KTsKKysgICAgfQorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RQ29tYm9Cb3gpCisgI2luY2x1ZGUg InRzdF9xY29tYm9ib3gubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdl dHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vcWNvbW1hbmRsaW5rYnV0dG9uLnBybyBiL3F0 YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vcWNvbW1h bmRsaW5rYnV0dG9uLnBybworaW5kZXggYmUzY2ZjZDEwNC4uYzIyOGZkZmNjYSAxMDA2NDQKKy0t LSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24v cWNvbW1hbmRsaW5rYnV0dG9uLnBybworKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93 aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi9xY29tbWFuZGxpbmtidXR0b24ucHJvCitAQCAtMSw2 ICsxLDYgQEAKKyBDT05GSUcgKz0gdGVzdGNhc2UKKyBUQVJHRVQgPSB0c3RfcWNvbW1hbmRsaW5r YnV0dG9uCistUVQgKz0gd2lkZ2V0cyB0ZXN0bGliCisrUVQgKz0gd2lkZ2V0cyB0ZXN0bGliIGd1 aS1wcml2YXRlCisgU09VUkNFUyAgKz0gdHN0X3Fjb21tYW5kbGlua2J1dHRvbi5jcHAKKyAKKyAK K2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRs aW5rYnV0dG9uL3RzdF9xY29tbWFuZGxpbmtidXR0b24uY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8v d2lkZ2V0cy93aWRnZXRzL3Fjb21tYW5kbGlua2J1dHRvbi90c3RfcWNvbW1hbmRsaW5rYnV0dG9u LmNwcAoraW5kZXggMDA0NGQzM2M2Ni4uNGNmMDYyOTZlNCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90 ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vdHN0X3Fjb21tYW5k bGlua2J1dHRvbi5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9x Y29tbWFuZGxpbmtidXR0b24vdHN0X3Fjb21tYW5kbGlua2J1dHRvbi5jcHAKK0BAIC00MCw2ICs0 MCw5IEBACisgI2luY2x1ZGUgPFFHcmlkTGF5b3V0PgorICNpbmNsdWRlIDxRUGFpbnRlcj4KKyAK KysjaW5jbHVkZSA8cHJpdmF0ZS9xZ3VpYXBwbGljYXRpb25fcC5oPgorKyNpbmNsdWRlIDxxcGEv cXBsYXRmb3JtdGhlbWUuaD4KKysKKyBjbGFzcyB0c3RfUUNvbW1hbmRMaW5rQnV0dG9uIDogcHVi bGljIFFPYmplY3QKKyB7CisgICAgIFFfT0JKRUNUCitAQCAtMjIzLDYgKzIyNiwxMyBAQCB2b2lk IHRzdF9RQ29tbWFuZExpbmtCdXR0b246OnNldEF1dG9SZXBlYXQoKQorICAgICAvLyBjaGVjayB0 aGF0IHByZXNzaW5nIEVOVEVSIGhhcyBubyBlZmZlY3QKKyAgICAgcmVzZXRDb3VudGVycygpOwor ICAgICB0ZXN0V2lkZ2V0LT5zZXREb3duKCBmYWxzZSApOworKyAgICAvLyBTa2lwIGFmdGVyIHJl c2V0IGlmIEJ1dHRvblByZXNzS2V5cyBoYXMgS2V5X0VudGVyCisrICAgIGNvbnN0IGF1dG8gYnV0 dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxh dGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBpZiAoYnV0dG9u UHJlc3NLZXlzLmNvbnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICByZXR1cm47Cisr ICAgIH0KKyAgICAgdGVzdFdpZGdldC0+c2V0QXV0b1JlcGVhdCggZmFsc2UgKTsKKyAgICAgUVRl c3Q6OmtleVByZXNzKCB0ZXN0V2lkZ2V0LCBRdDo6S2V5X0VudGVyICk7CisgCitAQCAtMjU1LDYg KzI2NSwxNCBAQCB2b2lkIHRzdF9RQ29tbWFuZExpbmtCdXR0b246OnByZXNzZWQoKQorICAgICBR Q09NUEFSRSggcHJlc3NfY291bnQsICh1aW50KTEgKTsKKyAgICAgUUNPTVBBUkUoIHJlbGVhc2Vf Y291bnQsICh1aW50KTEgKTsKKyAKKysgICAgLy8gU2tpcCBpZiBCdXR0b25QcmVzc0tleXMgaGFz IEtleV9FbnRlcgorKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNh dGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5 cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlz dDxRdDo6S2V5Pj4oKTsKKysgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhRdDo6S2V5 X0VudGVyKSkgeworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisgICAgIFFUZXN0OjprZXlQ cmVzcyggdGVzdFdpZGdldCxRdDo6S2V5X0VudGVyICk7CisgICAgIFFDT01QQVJFKCBwcmVzc19j b3VudCwgKHVpbnQpMSApOworICAgICBRQ09NUEFSRSggcmVsZWFzZV9jb3VudCwgKHVpbnQpMSAp OworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBi b3gvcWdyb3VwYm94LnBybyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3Jv dXBib3gvcWdyb3VwYm94LnBybworaW5kZXggNGE1ZTc2ZmY2NS4uYTIzNWZhMWZhYyAxMDA2NDQK Ky0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvcWdyb3Vw Ym94LnBybworKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fncm91cGJv eC9xZ3JvdXBib3gucHJvCitAQCAtMSw2ICsxLDYgQEAKKyBDT05GSUcgKz0gdGVzdGNhc2UKKyBU QVJHRVQgPSB0c3RfcWdyb3VwYm94CistUVQgKz0gd2lkZ2V0cyB0ZXN0bGliCisrUVQgKz0gd2lk Z2V0cyB0ZXN0bGliIGd1aS1wcml2YXRlCisgU09VUkNFUyAgKz0gdHN0X3Fncm91cGJveC5jcHAK KyAKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdy b3VwYm94L3RzdF9xZ3JvdXBib3guY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRn ZXRzL3Fncm91cGJveC90c3RfcWdyb3VwYm94LmNwcAoraW5kZXggNGZiNWQyNjJjYS4uZDhkNzU2 MmI3MyAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xZ3Jv dXBib3gvdHN0X3Fncm91cGJveC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMv d2lkZ2V0cy9xZ3JvdXBib3gvdHN0X3Fncm91cGJveC5jcHAKK0BAIC0zNSw2ICszNSw5IEBACisg I2luY2x1ZGUgPFFSYWRpb0J1dHRvbj4KKyAjaW5jbHVkZSA8UURpYWxvZz4KKyAKKysjaW5jbHVk ZSA8cHJpdmF0ZS9xZ3VpYXBwbGljYXRpb25fcC5oPgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3Jt dGhlbWUuaD4KKysKKyAjaW5jbHVkZSAicWdyb3VwYm94LmgiCisgCisgY2xhc3MgdHN0X1FHcm91 cEJveCA6IHB1YmxpYyBRT2JqZWN0CitAQCAtNjksNiArNzIsNyBAQCBwcml2YXRlIHNsb3RzOgor ICAgICB2b2lkIHByb3BhZ2F0ZUZvY3VzKCk7CisgICAgIHZvaWQgdGFza19RVEJVR18xOTE3MF9p Z25vcmVNb3VzZVJlbGVhc2VFdmVudCgpOworICAgICB2b2lkIHRhc2tfUVRCVUdfMTU1MTlfcHJv cGFnYXRlTW91c2VFdmVudHMoKTsKKysgICAgdm9pZCBidXR0b25QcmVzc0tleXMoKTsKKyAKKyBw cml2YXRlOgorICAgICBib29sIGNoZWNrZWQ7CitAQCAtNjEwLDYgKzYxNCwyMCBAQCB2b2lkIHRz dF9RR3JvdXBCb3g6OnRhc2tfUVRCVUdfMTU1MTlfcHJvcGFnYXRlTW91c2VFdmVudHMoKQorICAg ICBRQ09NUEFSRShwYXJlbnQubW91c2VNb3ZlZCwgdHJ1ZSk7CisgfQorIAorK3ZvaWQgdHN0X1FH cm91cEJveDo6YnV0dG9uUHJlc3NLZXlzKCkKKyt7CisrICAgIFFHcm91cEJveCBncm91cEJveDsK KysgICAgZ3JvdXBCb3guc2V0Q2hlY2thYmxlKHRydWUpOworKyAgICBRU2lnbmFsU3B5IGNsaWNr ZWRTcHkoJmdyb3VwQm94LCAmUUdyb3VwQm94OjpjbGlja2VkKTsKKysgICAgY29uc3QgYXV0byBi dXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQ bGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgYnV0dG9uUHJlc3NLZXlzLmxlbmd0aCgpOyArK2kpIHsKKysgICAgICAgIFFU ZXN0OjprZXlDbGljaygmZ3JvdXBCb3gsIGJ1dHRvblByZXNzS2V5c1tpXSk7CisrICAgICAgICBR Q09NUEFSRShjbGlja2VkU3B5Lmxlbmd0aCgpLCBpICsgMSk7CisrICAgIH0KKyt9CisrCisgdm9p ZCB0c3RfUUdyb3VwQm94OjpzZW5kTW91c2VNb3ZlRXZlbnQoUVdpZGdldCAqd2lkZ2V0LCBjb25z dCBRUG9pbnQgJmxvY2FsUG9zKQorIHsKKyAgICAgLy8gU2VuZCBhIE1vdXNlTW92ZSBldmVudCB3 aXRob3V0IGFjdHVhbGx5IG1vdmluZyB0aGUgcG9pbnRlcgorZGlmZiAtLWdpdCBhL3F0YmFzZS90 ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi9xcHVzaGJ1dHRvbi5wcm8gYi9x dGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24vcXB1c2hidXR0b24u cHJvCitpbmRleCAzNTNhZDA2Y2EyLi5lNTVmNjE0OGYyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rl c3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3FwdXNoYnV0dG9uLnBybworKysr IGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3FwdXNoYnV0 dG9uLnBybworQEAgLTEsNiArMSw2IEBACisgQ09ORklHICs9IHRlc3RjYXNlCisgVEFSR0VUID0g dHN0X3FwdXNoYnV0dG9uCistUVQgKz0gd2lkZ2V0cyB0ZXN0bGliCisrUVQgKz0gd2lkZ2V0cyB0 ZXN0bGliIGd1aS1wcml2YXRlCisgU09VUkNFUyAgKz0gdHN0X3FwdXNoYnV0dG9uLmNwcAorIAor IAorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1 dHRvbi90c3RfcXB1c2hidXR0b24uY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRn ZXRzL3FwdXNoYnV0dG9uL3RzdF9xcHVzaGJ1dHRvbi5jcHAKK2luZGV4IGU4MTg1MTRhNzkuLjQw NDNlOTMyNmEgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMv cXB1c2hidXR0b24vdHN0X3FwdXNoYnV0dG9uLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8v d2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3RzdF9xcHVzaGJ1dHRvbi5jcHAKK0BAIC00MSw2 ICs0MSw5IEBACisgI2luY2x1ZGUgPFFTdHlsZUZhY3Rvcnk+CisgI2luY2x1ZGUgPFFUYWJXaWRn ZXQ+CisgCisrI2luY2x1ZGUgPHByaXZhdGUvcWd1aWFwcGxpY2F0aW9uX3AuaD4KKysjaW5jbHVk ZSA8cXBhL3FwbGF0Zm9ybXRoZW1lLmg+CisrCisgY2xhc3MgdHN0X1FQdXNoQnV0dG9uIDogcHVi bGljIFFPYmplY3QKKyB7CisgUV9PQkpFQ1QKK0BAIC0yMTIsNiArMjE1LDEzIEBAIHZvaWQgdHN0 X1FQdXNoQnV0dG9uOjphdXRvUmVwZWF0KCkKKyAgICAgLy8gY2hlY2sgdGhhdCBwcmVzc2luZyBF TlRFUiBoYXMgbm8gZWZmZWN0CisgICAgIHJlc2V0Q291bnRlcnMoKTsKKyAgICAgdGVzdFdpZGdl dC0+c2V0RG93biggZmFsc2UgKTsKKysgICAgLy8gU2tpcCBhZnRlciByZXNldCBpZiBCdXR0b25Q cmVzc0tleXMgaGFzIEtleV9FbnRlcgorKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9 IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1 dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgaWYgKGJ1dHRvblByZXNzS2V5cy5jb250 YWlucyhRdDo6S2V5X0VudGVyKSkgeworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisgICAgIHRl c3RXaWRnZXQtPnNldEF1dG9SZXBlYXQoIGZhbHNlICk7CisgICAgIFFUZXN0OjprZXlQcmVzcygg dGVzdFdpZGdldCwgUXQ6OktleV9FbnRlciApOworIAorQEAgLTI0Nyw2ICsyNTcsMTQgQEAgdm9p ZCB0c3RfUVB1c2hCdXR0b246OnByZXNzZWQoKQorICAgICBRQ09NUEFSRSggcHJlc3NfY291bnQs ICh1aW50KTEgKTsKKyAgICAgUUNPTVBBUkUoIHJlbGVhc2VfY291bnQsICh1aW50KTEgKTsKKyAK KysgICAgLy8gU2tpcCBpZiBCdXR0b25QcmVzc0tleXMgaGFzIEtleV9FbnRlcgorKyAgICBjb25z dCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3Jt VGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVt ZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAg aWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0VudGVyKSkgeworKyAgICAgICAg cmV0dXJuOworKyAgICB9CisrCisgICAgIFFUZXN0OjprZXlQcmVzcyggdGVzdFdpZGdldCxRdDo6 S2V5X0VudGVyICk7CisgICAgIFFDT01QQVJFKCBwcmVzc19jb3VudCwgKHVpbnQpMSApOworICAg ICBRQ09NUEFSRSggcmVsZWFzZV9jb3VudCwgKHVpbnQpMSApOworZGlmZiAtLWdpdCBhL3F0YmFz ZS90ZXN0cy9tYW51YWwvcmhpL2N1YmVtYXBfcmVuZGVyL2J1aWxkc2hhZGVyLmJhdCBiL3F0YmFz ZS90ZXN0cy9tYW51YWwvcmhpL2N1YmVtYXBfcmVuZGVyL2J1aWxkc2hhZGVyLmJhdAorb2xkIG1v ZGUgMTAwNzU1CituZXcgbW9kZSAxMDA2NDQKK1N1Ym1vZHVsZSBxdGNvbm5lY3Rpdml0eSBlOTU3 ZDQ4MS4uMDU2Mjk0YzA6CitkaWZmIC0tZ2l0IGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290 aC9ibHVlei9oY2ltYW5hZ2VyLmNwcCBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvYmx1 ZXovaGNpbWFuYWdlci5jcHAKK2luZGV4IGUyNjM1ZmFlLi5hOGI4ZTNiOSAxMDA2NDQKKy0tLSBh L3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvYmx1ZXovaGNpbWFuYWdlci5jcHAKKysrKyBi L3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvYmx1ZXovaGNpbWFuYWdlci5jcHAKK0BAIC01 NjMsOSArNTYzLDExIEBAIHZvaWQgSGNpTWFuYWdlcjo6aGFuZGxlSGNpQWNsUGFja2V0KGNvbnN0 IHF1aW50OCAqZGF0YSwgaW50IHNpemUpCisgCisgdm9pZCBIY2lNYW5hZ2VyOjpoYW5kbGVMZU1l dGFFdmVudChjb25zdCBxdWludDggKmRhdGEpCisgeworLSAgICAvLyBTcGVjIHY0LjIsIFZvbCAy LCBwYXJ0IEUsIDcuNy42NWZmCisrICAgIC8vIFNwZWMgdjUuMywgVm9sIDQsIHBhcnQgRSwgNy43 LjY1LioKKyAgICAgc3dpdGNoICgqZGF0YSkgeworLSAgICBjYXNlIDB4MTogeworKyAgICBjYXNl IDB4MTogLy8gSENJX0xFX0Nvbm5lY3Rpb25fQ29tcGxldGUKKysgICAgY2FzZSAweEE6IC8vIEhD SV9MRV9FbmhhbmNlZF9Db25uZWN0aW9uX0NvbXBsZXRlCisrICAgIHsKKyAgICAgICAgIGNvbnN0 IHF1aW50MTYgaGFuZGxlID0gYnRfZ2V0X2xlMTYoZGF0YSArIDIpOworICAgICAgICAgZW1pdCBj b25uZWN0aW9uQ29tcGxldGUoaGFuZGxlKTsKKyAgICAgICAgIGJyZWFrOworZGlmZiAtLWdpdCBh L3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNlcnZpY2VkaXNjb3Zlcnlh Z2VudF9ibHVlei5jcHAgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhz ZXJ2aWNlZGlzY292ZXJ5YWdlbnRfYmx1ZXouY3BwCitpbmRleCA2YTkzMTQzYi4uNGExOGNmYzcg MTAwNjQ0CistLS0gYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzZXJ2 aWNlZGlzY292ZXJ5YWdlbnRfYmx1ZXouY3BwCisrKysgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1 ZXRvb3RoL3FibHVldG9vdGhzZXJ2aWNlZGlzY292ZXJ5YWdlbnRfYmx1ZXouY3BwCitAQCAtMzIw LDcgKzMyMCwxMCBAQCB2b2lkIFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdlbnRQcml2YXRl OjpfcV9maW5pc2hTZHBTY2FuKFFCbHVldG9vdGhTZXJ2aWNlRAorICAgICAgICAgICAgIGZvciAo Y29uc3QgUUJsdWV0b290aFV1aWQgJmlkIDogc2VydmljZUNsYXNzVXVpZHMpIHsKKyAgICAgICAg ICAgICAgICAgaWYgKGlkLm1pbmltdW1TaXplKCkgPT0gMTYpIHsKKyAgICAgICAgICAgICAgICAg ICAgIHNlcnZpY2VJbmZvLnNldFNlcnZpY2VVdWlkKGlkKTsKKy0gICAgICAgICAgICAgICAgICAg IHNlcnZpY2VJbmZvLnNldFNlcnZpY2VOYW1lKFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdl bnQ6OnRyKCJDdXN0b20gU2VydmljZSIpKTsKKysgICAgICAgICAgICAgICAgICAgIGlmIChzZXJ2 aWNlSW5mby5zZXJ2aWNlTmFtZSgpLmlzRW1wdHkoKSkgeworKyAgICAgICAgICAgICAgICAgICAg ICAgIHNlcnZpY2VJbmZvLnNldFNlcnZpY2VOYW1lKAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdlbnQ6OnRyKCJDdXN0b20g U2VydmljZSIpKTsKKysgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg IFFCbHVldG9vdGhTZXJ2aWNlSW5mbzo6U2VxdWVuY2UgbW9kU2VxID0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VydmljZUluZm8uYXR0cmlidXRlKFFCbHVldG9vdGhTZXJ2aWNlSW5m bzo6U2VydmljZUNsYXNzSWRzKS52YWx1ZTxRQmx1ZXRvb3RoU2VydmljZUluZm86OlNlcXVlbmNl PigpOworICAgICAgICAgICAgICAgICAgICAgbW9kU2VxLnJlbW92ZU9uZShRVmFyaWFudDo6ZnJv bVZhbHVlKGlkKSk7CitAQCAtMzM0LDggKzMzNywxMCBAQCB2b2lkIFFCbHVldG9vdGhTZXJ2aWNl RGlzY292ZXJ5QWdlbnRQcml2YXRlOjpfcV9maW5pc2hTZHBTY2FuKFFCbHVldG9vdGhTZXJ2aWNl RAorICAgICAgICAgICAgICAgICBxQ0RlYnVnKFFUX0JUX0JMVUVaKSA8PCAiRGlzY292ZXJlZCBz ZXJ2aWNlcyIgPDwgZGlzY292ZXJlZERldmljZXMuYXQoMCkuYWRkcmVzcygpLnRvU3RyaW5nKCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgc2VydmljZUluZm8uc2Vy dmljZU5hbWUoKSA8PCBzZXJ2aWNlSW5mby5zZXJ2aWNlVXVpZCgpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDw8ICI+Pj4iIDw8IHNlcnZpY2VJbmZvLnNlcnZpY2VDbGFz c1V1aWRzKCk7CistCistICAgICAgICAgICAgICAgIGVtaXQgcS0+c2VydmljZURpc2NvdmVyZWQo c2VydmljZUluZm8pOworKyAgICAgICAgICAgICAgICAvLyBVc2UgcXVldWVkIGNvbm5lY3Rpb24g dG8gYWxsb3cgdXMgZmluaXNoIHRoZSBzZXJ2aWNlIGxvb3Bpbmc7IHRoZSBhcHBsaWNhdGlvbgor KyAgICAgICAgICAgICAgICAvLyBtaWdodCBjYWxsIHN0b3AoKSB3aGVuIGl0IGhhcyBkZXRlY3Rl ZCB0aGUgc2VydmljZS1vZi1pbnRlcmVzdC4KKysgICAgICAgICAgICAgICAgUU1ldGFPYmplY3Q6 Omludm9rZU1ldGhvZChxLCAic2VydmljZURpc2NvdmVyZWQiLCBRdDo6UXVldWVkQ29ubmVjdGlv biwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRX0FSRyhRQmx1 ZXRvb3RoU2VydmljZUluZm8sIHNlcnZpY2VJbmZvKSk7CisgICAgICAgICAgICAgfQorICAgICAg ICAgfQorICAgICB9CitkaWZmIC0tZ2l0IGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9x Ymx1ZXRvb3Roc29ja2V0LmNwcCBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0 b290aHNvY2tldC5jcHAKK2luZGV4IGU0ZDg1NDQ3Li5hYWRkNDc1NSAxMDA2NDQKKy0tLSBhL3F0 Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldC5jcHAKKysrKyBiL3F0 Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldC5jcHAKK0BAIC01OTMs NyArNTkzLDcgQEAgdm9pZCBRQmx1ZXRvb3RoU29ja2V0OjpzZXRTb2NrZXRTdGF0ZShRQmx1ZXRv b3RoU29ja2V0OjpTb2NrZXRTdGF0ZSBzdGF0ZSkKKyBib29sIFFCbHVldG9vdGhTb2NrZXQ6OmNh blJlYWRMaW5lKCkgY29uc3QKKyB7CisgICAgIFFfRChjb25zdCBRQmx1ZXRvb3RoU29ja2V0QmFz ZSk7CistICAgIHJldHVybiBkLT5jYW5SZWFkTGluZSgpOworKyAgICByZXR1cm4gZC0+Y2FuUmVh ZExpbmUoKSB8fCBRSU9EZXZpY2U6OmNhblJlYWRMaW5lKCk7CisgfQorIAorIC8qIQorZGlmZiAt LWdpdCBhL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldF9ibHVl emRidXMuY3BwIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc29ja2V0 X2JsdWV6ZGJ1cy5jcHAKK2luZGV4IDA4NGFhOTU4Li5kNmFhMTdhNyAxMDA2NDQKKy0tLSBhL3F0 Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0b290aHNvY2tldF9ibHVlemRidXMuY3Bw CisrKysgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXRfYmx1 ZXpkYnVzLmNwcAorQEAgLTI4NCw2ICsyODQsMTAgQEAgdm9pZCBRQmx1ZXRvb3RoU29ja2V0UHJp dmF0ZUJsdWV6REJ1czo6Y29ubmVjdFRvU2VydmljZSgKKyAgICAgICAgIHJldHVybjsKKyAgICAg fQorIAorKyAgICBpZiAoc2VydmljZS5zb2NrZXRQcm90b2NvbCgpICE9IFFCbHVldG9vdGhTZXJ2 aWNlSW5mbzo6UHJvdG9jb2w6OlVua25vd25Qcm90b2NvbCkKKysgICAgICAgIHNvY2tldFR5cGUg PSBzZXJ2aWNlLnNvY2tldFByb3RvY29sKCk7CisrICAgIHFDRGVidWcoUVRfQlRfQkxVRVopIDw8 ICJTb2NrZXQgcHJvdG9jb2wgdXNlZDoiIDw8IHNvY2tldFR5cGU7CisrCisgICAgIGNvbm5lY3RU b1NlcnZpY2Uoc2VydmljZS5kZXZpY2UoKS5hZGRyZXNzKCksIHRhcmdldFNlcnZpY2UsIG9wZW5N b2RlKTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXRjb25uZWN0aXZpdHkvdGVzdHMvYXV0by9xYmx1 ZXRvb3Roc29ja2V0L3RzdF9xYmx1ZXRvb3Roc29ja2V0LmNwcCBiL3F0Y29ubmVjdGl2aXR5L3Rl c3RzL2F1dG8vcWJsdWV0b290aHNvY2tldC90c3RfcWJsdWV0b290aHNvY2tldC5jcHAKK2luZGV4 IDA1YmMxYTBmLi5hN2I1ZWYxZiAxMDA2NDQKKy0tLSBhL3F0Y29ubmVjdGl2aXR5L3Rlc3RzL2F1 dG8vcWJsdWV0b290aHNvY2tldC90c3RfcWJsdWV0b290aHNvY2tldC5jcHAKKysrKyBiL3F0Y29u bmVjdGl2aXR5L3Rlc3RzL2F1dG8vcWJsdWV0b290aHNvY2tldC90c3RfcWJsdWV0b290aHNvY2tl dC5jcHAKK0BAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCB0c3RfUUJsdWV0b290aFNvY2tldDo6aW5p dFRlc3RDYXNlKCkKKyAgICAgcURlYnVnKCkgPDwgIlN0YXJ0aW5nIGRpc2NvdmVyeSI7CisgCisg ICAgIHNkYS0+c2V0VXVpZEZpbHRlcihRQmx1ZXRvb3RoVXVpZChRU3RyaW5nKFRFU1RfU0VSVklD RV9VVUlEKSkpOworLSAgICBzZGEtPnN0YXJ0KFFCbHVldG9vdGhTZXJ2aWNlRGlzY292ZXJ5QWdl bnQ6Ok1pbmltYWxEaXNjb3ZlcnkpOworKyAgICBzZGEtPnN0YXJ0KFFCbHVldG9vdGhTZXJ2aWNl RGlzY292ZXJ5QWdlbnQ6OkZ1bGxEaXNjb3ZlcnkpOworIAorICAgICBmb3IgKGludCBjb25uZWN0 VGltZSA9IE1heENvbm5lY3RUaW1lOyAhZG9uZV9kaXNjb3ZlcnkgJiYgY29ubmVjdFRpbWUgPiAw OyBjb25uZWN0VGltZSAtPSAxMDAwKQorICAgICAgICAgUVRlc3Q6OnFXYWl0KDEwMDApOworU3Vi bW9kdWxlIHF0ZGVjbGFyYXRpdmUgZjU3MDFmMGQuLjhkZWZlN2JmOgorZGlmZiAtLWdpdCBhL3F0 ZGVjbGFyYXRpdmUvc3JjL3FtbC9jb21tb24vcXFtbGpzZml4ZWRwb29sYXJyYXlfcC5oIGIvcXRk ZWNsYXJhdGl2ZS9zcmMvcW1sL2NvbW1vbi9xcW1sanNmaXhlZHBvb2xhcnJheV9wLmgKK2luZGV4 IGI2NWI5OTRkNmMuLjE1YThjZDY4NzggMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9x bWwvY29tbW9uL3FxbWxqc2ZpeGVkcG9vbGFycmF5X3AuaAorKysrIGIvcXRkZWNsYXJhdGl2ZS9z cmMvcW1sL2NvbW1vbi9xcW1sanNmaXhlZHBvb2xhcnJheV9wLmgKK0BAIC04Niw3ICs4Niw3IEBA IHB1YmxpYzoKKyAgICAgICAgIGlmIChRVHlwZUluZm88VD46OmlzQ29tcGxleCkgeworICAgICAg ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgICAgICAgICAg bmV3IChkYXRhICsgaSkgVCh2ZWN0b3IuYXQoaSkpOworLSAgICAgICAgfSBlbHNlIHsKKysgICAg ICAgIH0gZWxzZSBpZiAoY291bnQpIHsKKyAgICAgICAgICAgICBtZW1jcHkoZGF0YSwgc3RhdGlj X2Nhc3Q8Y29uc3Qgdm9pZCo+KHZlY3Rvci5jb25zdERhdGEoKSksIGNvdW50ICogc2l6ZW9mKFQp KTsKKyAgICAgICAgIH0KKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3Ft bC9qc3J1bnRpbWUvcXY0cW9iamVjdHdyYXBwZXIuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1s L2pzcnVudGltZS9xdjRxb2JqZWN0d3JhcHBlci5jcHAKK2luZGV4IGU1N2NkZDgyNzguLjk0NjEz NTk4YWYgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvanNydW50aW1lL3F2NHFv YmplY3R3cmFwcGVyLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2pzcnVudGltZS9x djRxb2JqZWN0d3JhcHBlci5jcHAKK0BAIC0xMTQ1LDggKzExNDUsNyBAQCB2b2lkIEhlYXA6OlFP YmplY3RXcmFwcGVyOjptYXJrT2JqZWN0cyhIZWFwOjpCYXNlICp0aGF0LCBRVjQ6Ok1hcmtTdGFj ayAqbWFya1N0YQorIHZvaWQgUU9iamVjdFdyYXBwZXI6OmRlc3Ryb3lPYmplY3QoYm9vbCBsYXN0 Q2FsbCkKKyB7CisgICAgIEhlYXA6OlFPYmplY3RXcmFwcGVyICpoID0gZCgpOworLSAgICBpZiAo IWgtPmludGVybmFsQ2xhc3MpCistICAgICAgICByZXR1cm47IC8vIGRlc3Ryb3lPYmplY3QgYWxy ZWFkeSBnb3QgY2FsbGVkCisrICAgIFFfQVNTRVJUKGgtPmludGVybmFsQ2xhc3MpOworIAorICAg ICBpZiAoaC0+b2JqZWN0KCkpIHsKKyAgICAgICAgIFFRbWxEYXRhICpkZGF0YSA9IFFRbWxEYXRh OjpnZXQoaC0+b2JqZWN0KCksIGZhbHNlKTsKK0BAIC0xMTc2LDcgKzExNzUsNyBAQCB2b2lkIFFP YmplY3RXcmFwcGVyOjpkZXN0cm95T2JqZWN0KGJvb2wgbGFzdENhbGwpCisgICAgICAgICB9Cisg ICAgIH0KKyAKKy0gICAgaC0+fkRhdGEoKTsKKysgICAgaC0+ZGVzdHJveSgpOworIH0KKyAKKyAK K2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvbWVtb3J5L3F2NG1tLmNwcCBiL3F0 ZGVjbGFyYXRpdmUvc3JjL3FtbC9tZW1vcnkvcXY0bW0uY3BwCitpbmRleCAwNmNhZjA0ZTVhLi5k YTE0OWE2N2M0IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL21lbW9yeS9xdjRt bS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9tZW1vcnkvcXY0bW0uY3BwCitAQCAt OTgxLDcgKzk4MSw3IEBAIHZvaWQgTWVtb3J5TWFuYWdlcjo6c3dlZXAoYm9vbCBsYXN0U3dlZXAs IENsYXNzRGVzdHJveVN0YXRzQ2FsbGJhY2sgY2xhc3NDb3VudFB0CisgCisgICAgIGlmIChNdWx0 aXBseVdyYXBwZWRRT2JqZWN0TWFwICptdWx0aXBseVdyYXBwZWRRT2JqZWN0cyA9IGVuZ2luZS0+ bV9tdWx0aXBseVdyYXBwZWRRT2JqZWN0cykgeworICAgICAgICAgZm9yIChNdWx0aXBseVdyYXBw ZWRRT2JqZWN0TWFwOjpJdGVyYXRvciBpdCA9IG11bHRpcGx5V3JhcHBlZFFPYmplY3RzLT5iZWdp bigpOyBpdCAhPSBtdWx0aXBseVdyYXBwZWRRT2JqZWN0cy0+ZW5kKCk7KSB7CistICAgICAgICAg ICAgaWYgKCFpdC52YWx1ZSgpLmlzTnVsbE9yVW5kZWZpbmVkKCkpCisrICAgICAgICAgICAgaWYg KGl0LnZhbHVlKCkuaXNOdWxsT3JVbmRlZmluZWQoKSkKKyAgICAgICAgICAgICAgICAgaXQgPSBt dWx0aXBseVdyYXBwZWRRT2JqZWN0cy0+ZXJhc2UoaXQpOworICAgICAgICAgICAgIGVsc2UKKyAg ICAgICAgICAgICAgICAgKytpdDsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWxt b2RlbHMvcXFtbGRlbGVnYXRlbW9kZWwuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxz L3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAoraW5kZXggMjA3OWE4ZWQwNC4uYTU3N2NiMjM1MSAxMDA2 NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbC5j cHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbC5j cHAKK0BAIC0zODksNiArMzg5LDEyIEBAIHZvaWQgUVFtbERlbGVnYXRlTW9kZWxQcml2YXRlOjpj b25uZWN0VG9BYnN0cmFjdEl0ZW1Nb2RlbCgpCisgICAgICAgICAgICAgICAgICAgICAgIHEsICBR UW1sRGVsZWdhdGVNb2RlbCwgU0xPVChfcV9yb3dzUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50 KSkpOworICAgICBxbWxvYmplY3RfY29ubmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1Nb2RlbCwgU0lH TkFMKHJvd3NBYm91dFRvQmVSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgcSwgIFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX3Jvd3NBYm91dFRv QmVSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIHFtbG9iamVjdF9jb25uZWN0 KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwoY29sdW1uc0luc2VydGVkKFFNb2RlbElu ZGV4LGludCxpbnQpKSwKKysgICAgICAgICAgICAgICAgICAgICAgcSwgUVFtbERlbGVnYXRlTW9k ZWwsIFNMT1QoX3FfY29sdW1uc0luc2VydGVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisrICAg IHFtbG9iamVjdF9jb25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwoY29sdW1u c1JlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpLAorKyAgICAgICAgICAgICAgICAgICAgICBx LCBRUW1sRGVsZWdhdGVNb2RlbCwgU0xPVChfcV9jb2x1bW5zUmVtb3ZlZChRTW9kZWxJbmRleCxp bnQsaW50KSkpOworKyAgICBxbWxvYmplY3RfY29ubmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1Nb2Rl bCwgU0lHTkFMKGNvbHVtbnNNb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGlu dCkpLAorKyAgICAgICAgICAgICAgICAgICAgICBxLCBRUW1sRGVsZWdhdGVNb2RlbCwgU0xPVChf cV9jb2x1bW5zTW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCxRTW9kZWxJbmRleCxpbnQpKSk7Cisg ICAgIHFtbG9iamVjdF9jb25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwoZGF0 YUNoYW5nZWQoUU1vZGVsSW5kZXgsUU1vZGVsSW5kZXgsUVZlY3RvcjxpbnQ+KSksCisgICAgICAg ICAgICAgICAgICAgICAgIHEsIFFRbWxEZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX2RhdGFDaGFuZ2Vk KFFNb2RlbEluZGV4LFFNb2RlbEluZGV4LFFWZWN0b3I8aW50PikpKTsKKyAgICAgcW1sb2JqZWN0 X2Nvbm5lY3QoYWltLCBRQWJzdHJhY3RJdGVtTW9kZWwsIFNJR05BTChyb3dzTW92ZWQoUU1vZGVs SW5kZXgsaW50LGludCxRTW9kZWxJbmRleCxpbnQpKSwKK0BAIC00MTMsNiArNDE5LDEyIEBAIHZv aWQgUVFtbERlbGVnYXRlTW9kZWxQcml2YXRlOjpkaXNjb25uZWN0RnJvbUFic3RyYWN0SXRlbU1v ZGVsKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBxLCBTTE9UKF9xX3Jvd3NBYm91dFRvQmVS ZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisgICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3Qo YWltLCBTSUdOQUwocm93c1JlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpLAorICAgICAgICAg ICAgICAgICAgICAgICAgIHEsIFNMT1QoX3Ffcm93c1JlbW92ZWQoUU1vZGVsSW5kZXgsaW50LGlu dCkpKTsKKysgICAgUU9iamVjdDo6ZGlzY29ubmVjdChhaW0sIFNJR05BTChjb2x1bW5zSW5zZXJ0 ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpLCBxLAorKyAgICAgICAgICAgICAgICAgICAgICAgIFNM T1QoX3FfY29sdW1uc0luc2VydGVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIFFPYmpl Y3Q6OmRpc2Nvbm5lY3QoYWltLCBTSUdOQUwoY29sdW1uc1JlbW92ZWQoUU1vZGVsSW5kZXgsaW50 LGludCkpLCBxLAorKyAgICAgICAgICAgICAgICAgICAgICAgIFNMT1QoX3FfY29sdW1uc1JlbW92 ZWQoUU1vZGVsSW5kZXgsaW50LGludCkpKTsKKysgICAgUU9iamVjdDo6ZGlzY29ubmVjdChhaW0s IFNJR05BTChjb2x1bW5zTW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCxRTW9kZWxJbmRleCxpbnQp KSwgcSwKKysgICAgICAgICAgICAgICAgICAgICAgICBTTE9UKF9xX2NvbHVtbnNNb3ZlZChRTW9k ZWxJbmRleCxpbnQsaW50LFFNb2RlbEluZGV4LGludCkpKTsKKyAgICAgUU9iamVjdDo6ZGlzY29u bmVjdChhaW0sIFNJR05BTChkYXRhQ2hhbmdlZChRTW9kZWxJbmRleCxRTW9kZWxJbmRleCxRVmVj dG9yPGludD4pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBxLCBTTE9UKF9xX2RhdGFDaGFu Z2VkKFFNb2RlbEluZGV4LFFNb2RlbEluZGV4LFFWZWN0b3I8aW50PikpKTsKKyAgICAgUU9iamVj dDo6ZGlzY29ubmVjdChhaW0sIFNJR05BTChyb3dzTW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCxR TW9kZWxJbmRleCxpbnQpKSwKK0BAIC0xOTczLDYgKzE5ODUsMzggQEAgdm9pZCBRUW1sRGVsZWdh dGVNb2RlbDo6X3Ffcm93c01vdmVkKAorICAgICB9CisgfQorIAorK3ZvaWQgUVFtbERlbGVnYXRl TW9kZWw6Ol9xX2NvbHVtbnNJbnNlcnRlZChjb25zdCBRTW9kZWxJbmRleCAmcGFyZW50LCBpbnQg YmVnaW4sIGludCBlbmQpCisreworKyAgICBRX0QoUVFtbERlbGVnYXRlTW9kZWwpOworKyAgICBR X1VOVVNFRChlbmQpOworKyAgICBpZiAocGFyZW50ID09IGQtPm1fYWRhcHRvck1vZGVsLnJvb3RJ bmRleCAmJiBiZWdpbiA9PSAwKSB7CisrICAgICAgICAvLyBtYXJrIGFsbCBpdGVtcyBhcyBjaGFu Z2VkCisrICAgICAgICBfcV9pdGVtc0NoYW5nZWQoMCwgZC0+bV9jb3VudCwgUVZlY3RvcjxpbnQ+ KCkpOworKyAgICB9CisrfQorKworK3ZvaWQgUVFtbERlbGVnYXRlTW9kZWw6Ol9xX2NvbHVtbnNS ZW1vdmVkKGNvbnN0IFFNb2RlbEluZGV4ICZwYXJlbnQsIGludCBiZWdpbiwgaW50IGVuZCkKKyt7 CisrICAgIFFfRChRUW1sRGVsZWdhdGVNb2RlbCk7CisrICAgIFFfVU5VU0VEKGVuZCk7CisrICAg IGlmIChwYXJlbnQgPT0gZC0+bV9hZGFwdG9yTW9kZWwucm9vdEluZGV4ICYmIGJlZ2luID09IDAp IHsKKysgICAgICAgIC8vIG1hcmsgYWxsIGl0ZW1zIGFzIGNoYW5nZWQKKysgICAgICAgIF9xX2l0 ZW1zQ2hhbmdlZCgwLCBkLT5tX2NvdW50LCBRVmVjdG9yPGludD4oKSk7CisrICAgIH0KKyt9Cisr Cisrdm9pZCBRUW1sRGVsZWdhdGVNb2RlbDo6X3FfY29sdW1uc01vdmVkKGNvbnN0IFFNb2RlbElu ZGV4ICZwYXJlbnQsIGludCBzdGFydCwgaW50IGVuZCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgUU1vZGVsSW5kZXggJmRlc3RpbmF0aW9uLCBpbnQgY29s dW1uKQorK3sKKysgICAgUV9EKFFRbWxEZWxlZ2F0ZU1vZGVsKTsKKysgICAgUV9VTlVTRUQoZW5k KTsKKysgICAgaWYgKChwYXJlbnQgPT0gZC0+bV9hZGFwdG9yTW9kZWwucm9vdEluZGV4ICYmIHN0 YXJ0ID09IDApCisrICAgICAgICB8fCAoZGVzdGluYXRpb24gPT0gZC0+bV9hZGFwdG9yTW9kZWwu cm9vdEluZGV4ICYmIGNvbHVtbiA9PSAwKSkgeworKyAgICAgICAgLy8gbWFyayBhbGwgaXRlbXMg YXMgY2hhbmdlZAorKyAgICAgICAgX3FfaXRlbXNDaGFuZ2VkKDAsIGQtPm1fY291bnQsIFFWZWN0 b3I8aW50PigpKTsKKysgICAgfQorK30KKysKKyB2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsOjpfcV9k YXRhQ2hhbmdlZChjb25zdCBRTW9kZWxJbmRleCAmYmVnaW4sIGNvbnN0IFFNb2RlbEluZGV4ICZl bmQsIGNvbnN0IFFWZWN0b3I8aW50PiAmcm9sZXMpCisgeworICAgICBRX0QoUVFtbERlbGVnYXRl TW9kZWwpOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVs ZWdhdGVtb2RlbF9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVnYXRl bW9kZWxfcC5oCitpbmRleCA4YWFiNGJhZGNhLi5kMTQwYmZiYWFmIDEwMDY0NAorLS0tIGEvcXRk ZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsX3AuaAorKysrIGIvcXRk ZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsX3AuaAorQEAgLTE1Miw2 ICsxNTIsOSBAQCBwcml2YXRlIFFfU0xPVFM6CisgICAgIHZvaWQgX3FfaXRlbXNNb3ZlZChpbnQg ZnJvbSwgaW50IHRvLCBpbnQgY291bnQpOworICAgICB2b2lkIF9xX21vZGVsUmVzZXQoKTsKKyAg ICAgdm9pZCBfcV9yb3dzSW5zZXJ0ZWQoY29uc3QgUU1vZGVsSW5kZXggJixpbnQsaW50KTsKKysg ICAgdm9pZCBfcV9jb2x1bW5zSW5zZXJ0ZWQoY29uc3QgUU1vZGVsSW5kZXggJiwgaW50LCBpbnQp OworKyAgICB2b2lkIF9xX2NvbHVtbnNSZW1vdmVkKGNvbnN0IFFNb2RlbEluZGV4ICYsIGludCwg aW50KTsKKysgICAgdm9pZCBfcV9jb2x1bW5zTW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJiwgaW50 LCBpbnQsIGNvbnN0IFFNb2RlbEluZGV4ICYsIGludCk7CisgICAgIHZvaWQgX3Ffcm93c0Fib3V0 VG9CZVJlbW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJnBhcmVudCwgaW50IGJlZ2luLCBpbnQgZW5k KTsKKyAgICAgdm9pZCBfcV9yb3dzUmVtb3ZlZChjb25zdCBRTW9kZWxJbmRleCAmLGludCxpbnQp OworICAgICB2b2lkIF9xX3Jvd3NNb3ZlZChjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQsIGludCwg Y29uc3QgUU1vZGVsSW5kZXggJiwgaW50KTsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Ny Yy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2tpdGVtLmNwcCBiL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja2l0ZW0uY3BwCitpbmRleCA4 NTcxOWZkYzgwLi43OGUyYWIzMDJjIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVp Y2svYWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1aWNraXRlbS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja2l0ZW0uY3BwCitAQCAtNDYs NiArNDYsNyBAQAorICNpbmNsdWRlICJRdFF1aWNrL3ByaXZhdGUvcXF1aWNrdGV4dGlucHV0X3Au aCIKKyAjaW5jbHVkZSAiUXRRdWljay9wcml2YXRlL3FxdWlja2FjY2Vzc2libGVhdHRhY2hlZF9w LmgiCisgI2luY2x1ZGUgIlF0UXVpY2svcXF1aWNrdGV4dGRvY3VtZW50LmgiCisrI2luY2x1ZGUg IlF0UXVpY2svcXF1aWNrcmVuZGVyY29udHJvbC5oIgorIFFUX0JFR0lOX05BTUVTUEFDRQorIAor ICNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKK0BAIC01Nyw3ICs1OCwxOSBAQCBRQWNjZXNz aWJsZVF1aWNrSXRlbTo6UUFjY2Vzc2libGVRdWlja0l0ZW0oUVF1aWNrSXRlbSAqaXRlbSkKKyAK KyBRV2luZG93ICpRQWNjZXNzaWJsZVF1aWNrSXRlbTo6d2luZG93KCkgY29uc3QKKyB7CistICAg IHJldHVybiBpdGVtKCktPndpbmRvdygpOworKyAgICBRUXVpY2tXaW5kb3cgKndpbmRvdyA9IGl0 ZW0oKS0+d2luZG93KCk7CisrCisrICAgIC8vIEZvciBRUXVpY2tXaWRnZXQgdGhlIGFib3ZlIHdp bmRvdyB3aWxsIGJlIHRoZSBvZmZzY3JlZW4gUVF1aWNrV2luZG93LAorKyAgICAvLyB3aGljaCBp cyBub3QgYSBwYXJ0IG9mIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuIERldGVjdCB0aGlzIGNhc2Ug YW5kCisrICAgIC8vIHJldHVybiB0aGUgd2luZG93IGZvciB0aGUgUVF1aWNrV2lkZ2V0IGluc3Rl YWQuCisrICAgIGlmICh3aW5kb3cgJiYgIXdpbmRvdy0+aGFuZGxlKCkpIHsKKysgICAgICAgIGlm IChRUXVpY2tSZW5kZXJDb250cm9sICpyZW5kZXJDb250cm9sID0gUVF1aWNrV2luZG93UHJpdmF0 ZTo6Z2V0KHdpbmRvdyktPnJlbmRlckNvbnRyb2wpIHsKKysgICAgICAgICAgICBpZiAoUVdpbmRv dyAqcmVuZGVyV2luZG93ID0gcmVuZGVyQ29udHJvbC0+cmVuZGVyV2luZG93KG51bGxwdHIpKQor KyAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyV2luZG93OworKyAgICAgICAgfQorKyAgICB9 CisrCisrICAgIHJldHVybiB3aW5kb3c7CisgfQorIAorIGludCBRQWNjZXNzaWJsZVF1aWNrSXRl bTo6Y2hpbGRDb3VudCgpIGNvbnN0CitAQCAtMTEzLDE5ICsxMjYsMTUgQEAgUUFjY2Vzc2libGVJ bnRlcmZhY2UgKlFBY2Nlc3NpYmxlUXVpY2tJdGVtOjpjaGlsZEF0KGludCB4LCBpbnQgeSkgY29u c3QKKyBRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVRdWlja0l0ZW06OnBhcmVudCgp IGNvbnN0CisgeworICAgICBRUXVpY2tJdGVtICpwYXJlbnQgPSBpdGVtKCktPnBhcmVudEl0ZW0o KTsKKy0gICAgUVF1aWNrV2luZG93ICp3aW5kb3cgPSBpdGVtKCktPndpbmRvdygpOworLSAgICBR UXVpY2tJdGVtICpjaSA9IHdpbmRvdyA/IHdpbmRvdy0+Y29udGVudEl0ZW0oKSA6IG51bGxwdHI7 CisrICAgIFFRdWlja1dpbmRvdyAqaXRlbVdpbmRvdyA9IGl0ZW0oKS0+d2luZG93KCk7CisrICAg IFFRdWlja0l0ZW0gKmNpID0gaXRlbVdpbmRvdyA/IGl0ZW1XaW5kb3ctPmNvbnRlbnRJdGVtKCkg OiBudWxscHRyOworICAgICB3aGlsZSAocGFyZW50ICYmICFRUXVpY2tJdGVtUHJpdmF0ZTo6Z2V0 KHBhcmVudCktPmlzQWNjZXNzaWJsZSAmJiBwYXJlbnQgIT0gY2kpCisgICAgICAgICBwYXJlbnQg PSBwYXJlbnQtPnBhcmVudEl0ZW0oKTsKKyAKKyAgICAgaWYgKHBhcmVudCkgeworICAgICAgICAg aWYgKHBhcmVudCA9PSBjaSkgeworLSAgICAgICAgICAgIC8vIEp1bXAgb3V0IHRvIHRoZSBzY2Vu ZSB3aWRnZXQgaWYgdGhlIHBhcmVudCBpcyB0aGUgcm9vdCBpdGVtLgorLSAgICAgICAgICAgIC8v IFRoZXJlIGFyZSB0d28gcm9vdCBpdGVtcywgUVF1aWNrV2luZG93Ojpyb290SXRlbSBhbmQKKy0g ICAgICAgICAgICAvLyBRUXVpY2tWaWV3OjpkZWNsYXJhdGl2ZVJvb3QuIFRoZSBmb3JtZXIgaXMg dGhlIHRydWUgcm9vdCBpdGVtLAorLSAgICAgICAgICAgIC8vIGJ1dCBpcyBub3QgYSBwYXJ0IG9m IHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuIENoZWNrIGlmIHdlIGhpdAorLSAgICAgICAgICAgIC8v IGl0IGhlcmUgYW5kIHJldHVybiBhbiBpbnRlcmZhY2UgZm9yIHRoZSBzY2VuZSBpbnN0ZWFkLgor LSAgICAgICAgICAgIHJldHVybiBRQWNjZXNzaWJsZTo6cXVlcnlBY2Nlc3NpYmxlSW50ZXJmYWNl KHdpbmRvdyk7CisrICAgICAgICAgICAgLy8gSnVtcCBvdXQgdG8gdGhlIHdpbmRvdyBpZiB0aGUg cGFyZW50IGlzIHRoZSByb290IGl0ZW0KKysgICAgICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6 OnF1ZXJ5QWNjZXNzaWJsZUludGVyZmFjZSh3aW5kb3coKSk7CisgICAgICAgICB9IGVsc2Ugewor ICAgICAgICAgICAgIHdoaWxlIChwYXJlbnQgJiYgIXBhcmVudC0+ZF9mdW5jKCktPmlzQWNjZXNz aWJsZSkKKyAgICAgICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRJdGVtKCk7CitA QCAtMTg4LDcgKzE5Nyw3IEBAIFFBY2Nlc3NpYmxlOjpTdGF0ZSBRQWNjZXNzaWJsZVF1aWNrSXRl bTo6c3RhdGUoKSBjb25zdAorICAgICBRUmVjdCB2aWV3UmVjdF8gPSB2aWV3UmVjdCgpOworICAg ICBRUmVjdCBpdGVtUmVjdCA9IHJlY3QoKTsKKyAKKy0gICAgaWYgKHZpZXdSZWN0Xy5pc051bGwo KSB8fCBpdGVtUmVjdC5pc051bGwoKSB8fCAhaXRlbSgpLT53aW5kb3coKSB8fCAhaXRlbSgpLT53 aW5kb3coKS0+aXNWaXNpYmxlKCkgfHwhaXRlbSgpLT5pc1Zpc2libGUoKSB8fCBxRnV6enlJc051 bGwoaXRlbSgpLT5vcGFjaXR5KCkpKQorKyAgICBpZiAodmlld1JlY3RfLmlzTnVsbCgpIHx8IGl0 ZW1SZWN0LmlzTnVsbCgpIHx8ICF3aW5kb3coKSB8fCAhd2luZG93KCktPmlzVmlzaWJsZSgpIHx8 IWl0ZW0oKS0+aXNWaXNpYmxlKCkgfHwgcUZ1enp5SXNOdWxsKGl0ZW0oKS0+b3BhY2l0eSgpKSkK KyAgICAgICAgIHN0YXRlLmludmlzaWJsZSA9IHRydWU7CisgICAgIGlmICghdmlld1JlY3RfLmlu dGVyc2VjdHMoaXRlbVJlY3QpKQorICAgICAgICAgc3RhdGUub2Zmc2NyZWVuID0gdHJ1ZTsKK0BA IC0yMDEsNiArMjEwLDEwIEBAIFFBY2Nlc3NpYmxlOjpTdGF0ZSBRQWNjZXNzaWJsZVF1aWNrSXRl bTo6c3RhdGUoKSBjb25zdAorICAgICBpZiAocm9sZSgpID09IFFBY2Nlc3NpYmxlOjpFZGl0YWJs ZVRleHQpCisgICAgICAgICBpZiAoYXV0byB0aSA9IHFvYmplY3RfY2FzdDxRUXVpY2tUZXh0SW5w dXQgKj4oaXRlbSgpKSkKKyAgICAgICAgICAgICBzdGF0ZS5wYXNzd29yZEVkaXQgPSB0aS0+ZWNo b01vZGUoKSAhPSBRUXVpY2tUZXh0SW5wdXQ6Ok5vcm1hbDsKKysgICAgaWYgKCFpdGVtKCktPmlz RW5hYmxlZCgpKSB7CisrICAgICAgICBzdGF0ZS5mb2N1c2FibGUgPSBmYWxzZTsKKysgICAgICAg IHN0YXRlLmRpc2FibGVkID0gdHJ1ZTsKKysgICAgfQorICAgICByZXR1cm4gc3RhdGU7CisgfQor IAorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vz c2libGVxdWlja3ZpZXdfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9x YWNjZXNzaWJsZXF1aWNrdmlld19wLmgKK2luZGV4IDM5ZmZjYWYzOWMuLjhiYWEwMTMzMGMgMTAw NjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxl cXVpY2t2aWV3X3AuaAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9x YWNjZXNzaWJsZXF1aWNrdmlld19wLmgKK0BAIC01OCw3ICs1OCw3IEBAIFFUX0JFR0lOX05BTUVT UEFDRQorIAorICNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKyAKKy1jbGFzcyBRQWNjZXNz aWJsZVF1aWNrV2luZG93IDogcHVibGljIFFBY2Nlc3NpYmxlT2JqZWN0CisrY2xhc3MgUV9RVUlD S19FWFBPUlQgUUFjY2Vzc2libGVRdWlja1dpbmRvdyA6IHB1YmxpYyBRQWNjZXNzaWJsZU9iamVj dAorIHsKKyBwdWJsaWM6CisgICAgIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3coUVF1aWNrV2luZG93 ICpvYmplY3QpOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3Fx dWlja2RyYWcuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrZHJhZy5j cHAKK2luZGV4IDgzMjFmY2ZlZWQuLjM4MzA3OGIzYjkgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0 aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tkcmFnLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS9z cmMvcXVpY2svaXRlbXMvcXF1aWNrZHJhZy5jcHAKK0BAIC00ODEsNyArNDgxLDkgQEAgdm9pZCBR UXVpY2tEcmFnQXR0YWNoZWQ6OnNldEtleXMoY29uc3QgUVN0cmluZ0xpc3QgJmtleXMpCisgICAg IFxxbWxhdHRhY2hlZHByb3BlcnR5IHN0cmluZ2xpc3QgUXRRdWljazo6RHJhZzo6bWltZURhdGEK KyAgICAgXHNpbmNlIDUuMgorIAorLSAgICBUaGlzIHByb3BlcnR5IGhvbGRzIGEgbWFwIG9mIG1p bWVEYXRhIHRoYXQgaXMgdXNlZCBkdXJpbmcgc3RhcnREcmFnLgorKyAgICBUaGlzIHByb3BlcnR5 IGhvbGRzIGEgbWFwIGZyb20gbWltZSB0eXBlIHRvIGRhdGEgdGhhdCBpcyB1c2VkIGR1cmluZyBz dGFydERyYWcuCisrICAgIFRoZSBtaW1lIGRhdGEgbmVlZHMgdG8gYmUgYSBcYyBzdHJpbmcsIG9y IGFuIFxjIEFycmF5QnVmZmVyIHdpdGggdGhlIGRhdGEgZW5jb2RlZAorKyAgICBhY2NvcmRpbmcg dG8gdGhlIG1pbWUgdHlwZS4KKyAqLworIAorIFFWYXJpYW50TWFwIFFRdWlja0RyYWdBdHRhY2hl ZDo6bWltZURhdGEoKSBjb25zdAorQEAgLTc2Niw4ICs3NjgsMTIgQEAgUXQ6OkRyb3BBY3Rpb24g UVF1aWNrRHJhZ0F0dGFjaGVkUHJpdmF0ZTo6c3RhcnREcmFnKFF0OjpEcm9wQWN0aW9ucyBzdXBw b3J0ZWRBY3QKKyAgICAgUURyYWcgKmRyYWcgPSBuZXcgUURyYWcoc291cmNlID8gc291cmNlIDog cSk7CisgICAgIFFNaW1lRGF0YSAqbWltZURhdGEgPSBuZXcgUU1pbWVEYXRhKCk7CisgCistICAg IGZvciAoYXV0byBpdCA9IGV4dGVybmFsTWltZURhdGEuY2JlZ2luKCksIGVuZCA9IGV4dGVybmFs TWltZURhdGEuY2VuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCistICAgICAgICBtaW1lRGF0YS0+c2V0 RGF0YShpdC5rZXkoKSwgaXQudmFsdWUoKS50b1N0cmluZygpLnRvVXRmOCgpKTsKKysgICAgZm9y IChhdXRvIGl0ID0gZXh0ZXJuYWxNaW1lRGF0YS5jYmVnaW4oKSwgZW5kID0gZXh0ZXJuYWxNaW1l RGF0YS5jZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworKyAgICAgICAgaWYgKHN0YXRpY19jYXN0 PFFNZXRhVHlwZTo6VHlwZT4oaXQudmFsdWUoKS50eXBlKCkpID09IFFNZXRhVHlwZTo6UUJ5dGVB cnJheSkKKysgICAgICAgICAgICBtaW1lRGF0YS0+c2V0RGF0YShpdC5rZXkoKSwgaXQudmFsdWUo KS50b0J5dGVBcnJheSgpKTsKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICBtaW1lRGF0YS0+ c2V0RGF0YShpdC5rZXkoKSwgaXQudmFsdWUoKS50b1N0cmluZygpLnRvVXRmOCgpKTsKKysgICAg fQorIAorICAgICBkcmFnLT5zZXRNaW1lRGF0YShtaW1lRGF0YSk7CisgICAgIGlmIChwaXhtYXBM b2FkZXIuaXNSZWFkeSgpKSB7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2sv aXRlbXMvcXF1aWNraXRlbS5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVp Y2tpdGVtLmNwcAoraW5kZXggNzVmMTQ1NzgxNi4uZGVjMGFlMTlhZSAxMDA2NDQKKy0tLSBhL3F0 ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW0uY3BwCisrKysgYi9xdGRlY2xh cmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtLmNwcAorQEAgLTU5LDYgKzU5LDcgQEAK KyAjaW5jbHVkZSA8UXRDb3JlL3ByaXZhdGUvcW51bWVyaWNfcC5oPgorICNpbmNsdWRlIDxRdEd1 aS9xcGEvcXBsYXRmb3JtdGhlbWUuaD4KKyAjaW5jbHVkZSA8UXRDb3JlL3Fsb2dnaW5nY2F0ZWdv cnkuaD4KKysjaW5jbHVkZSA8UXRDb3JlL3ByaXZhdGUvcWR1cGxpY2F0ZXRyYWNrZXJfcC5oPgor IAorICNpbmNsdWRlIDxwcml2YXRlL3FxbWxnbG9iYWxfcC5oPgorICNpbmNsdWRlIDxwcml2YXRl L3FxbWxlbmdpbmVfcC5oPgorQEAgLTIzMjYsNiArMjMyNyw3IEBAIFFRdWlja0l0ZW06OlFRdWlj a0l0ZW0oUVF1aWNrSXRlbVByaXZhdGUgJmRkLCBRUXVpY2tJdGVtICpwYXJlbnQpCisgUVF1aWNr SXRlbTo6flFRdWlja0l0ZW0oKQorIHsKKyAgICAgUV9EKFFRdWlja0l0ZW0pOworKyAgICBkLT5p bkRlc3RydWN0b3IgPSB0cnVlOworIAorICAgICBpZiAoZC0+d2luZG93UmVmQ291bnQgPiAxKQor ICAgICAgICAgZC0+d2luZG93UmVmQ291bnQgPSAxOyAvLyBNYWtlIHN1cmUgd2luZG93IGlzIHNl dCB0byBudWxsIGluIG5leHQgY2FsbCB0byBkZXJlZldpbmRvdygpLgorQEAgLTI1MjYsNiArMjUy OCw3IEBAIFFRdWlja0l0ZW0qIFFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZv Y3VzQ2hhaW4oUVF1aWNrSXRlbSAqaXRlbSwgYm9vCisgICAgIFFRdWlja0l0ZW0gKmN1cnJlbnQg PSBpdGVtOworICAgICBxQ0RlYnVnKERCR19GT0NVUykgPDwgIlFRdWlja0l0ZW1Qcml2YXRlOjpu ZXh0UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW46IHN0YXJ0SXRlbToiIDw8IHN0YXJ0SXRlbTsKKyAg ICAgcUNEZWJ1ZyhEQkdfRk9DVVMpIDw8ICJRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVt SW5UYWJGb2N1c0NoYWluOiBmaXJzdEZyb21JdGVtOiIgPDwgZmlyc3RGcm9tSXRlbTsKKysgICAg UUR1cGxpY2F0ZVRyYWNrZXI8UVF1aWNrSXRlbSAqPiBjeWNsZURldGVjdG9yOworICAgICBkbyB7 CisgICAgICAgICBxQ0RlYnVnKERCR19GT0NVUykgPDwgIlFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0 UHJldkl0ZW1JblRhYkZvY3VzQ2hhaW46IGN1cnJlbnQ6IiA8PCBjdXJyZW50OworICAgICAgICAg cUNEZWJ1ZyhEQkdfRk9DVVMpIDw8ICJRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJdGVtSW5U YWJGb2N1c0NoYWluOiBmcm9tOiIgPDwgZnJvbTsKK0BAIC0yNTkyLDcgKzI1OTUsMTAgQEAgUVF1 aWNrSXRlbSogUVF1aWNrSXRlbVByaXZhdGU6Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbihR UXVpY2tJdGVtICppdGVtLCBib28KKyAgICAgICAgIC8vIHRyYXZlcnNlZCBhbGwgb2YgdGhlIGNo YWluIChieSBjb21wYXJlIHRoZSBbY3VycmVudF0gaXRlbSB3aXRoIFtzdGFydEl0ZW1dKQorICAg ICAgICAgLy8gU2luY2UgdGhlIFtzdGFydEl0ZW1dIG1pZ2h0IGJlIHByb21vdGVkIHRvIGl0cyBw YXJlbnQgaWYgaXQgaXMgaW52aXNpYmxlLAorICAgICAgICAgLy8gd2Ugc3RpbGwgaGF2ZSB0byBj aGVjayBbY3VycmVudF0gaXRlbSB3aXRoIG9yaWdpbmFsIHN0YXJ0IGl0ZW0KKy0gICAgICAgIGlm ICgoY3VycmVudCA9PSBzdGFydEl0ZW0gfHwgY3VycmVudCA9PSBvcmlnaW5hbFN0YXJ0SXRlbSkg JiYgZnJvbSA9PSBmaXJzdEZyb21JdGVtKSB7CisrICAgICAgICAvLyBXZSBtaWdodCBhbHNvIHJ1 biBpbnRvIGEgY3ljbGUgYmVmb3JlIHdlIHJlYWNoIGZpcnN0RnJvbUl0ZW0gYWdhaW4KKysgICAg ICAgIC8vIGJ1dCBub3RlIHRoYXQgd2UgaGF2ZSB0byBpZ25vcmUgY3VycmVudCBpZiB3ZSBhcmUg bWVhbnQgdG8gc2tpcCBpdAorKyAgICAgICAgaWYgKCgoY3VycmVudCA9PSBzdGFydEl0ZW0gfHwg Y3VycmVudCA9PSBvcmlnaW5hbFN0YXJ0SXRlbSkgJiYgZnJvbSA9PSBmaXJzdEZyb21JdGVtKSB8 fAorKyAgICAgICAgICAgICAgICAoIXNraXAgJiYgY3ljbGVEZXRlY3Rvci5oYXNTZWVuKGN1cnJl bnQpKSkgeworICAgICAgICAgICAgIC8vIHdyYXBwZWQgYXJvdW5kLCBhdm9pZCBlbmRsZXNzIGxv b3BzCisgICAgICAgICAgICAgaWYgKGl0ZW0gPT0gY29udGVudEl0ZW0pIHsKKyAgICAgICAgICAg ICAgICAgcUNEZWJ1ZyhEQkdfRk9DVVMpIDw8ICJRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJ dGVtSW5UYWJGb2N1c0NoYWluOiBsb29wZWQsIHJldHVybiBjb250ZW50SXRlbSI7CitAQCAtMjY4 OSw5ICsyNjk1LDggQEAgdm9pZCBRUXVpY2tJdGVtOjpzZXRQYXJlbnRJdGVtKFFRdWlja0l0ZW0g KnBhcmVudEl0ZW0pCisgCisgICAgICAgICBjb25zdCBib29sIHdhc1Zpc2libGUgPSBpc1Zpc2li bGUoKTsKKyAgICAgICAgIG9wLT5yZW1vdmVDaGlsZCh0aGlzKTsKKy0gICAgICAgIGlmICh3YXNW aXNpYmxlKSB7CisrICAgICAgICBpZiAod2FzVmlzaWJsZSAmJiAhb3AtPmluRGVzdHJ1Y3RvcikK KyAgICAgICAgICAgICBlbWl0IG9sZFBhcmVudEl0ZW0tPnZpc2libGVDaGlsZHJlbkNoYW5nZWQo KTsKKy0gICAgICAgIH0KKyAgICAgfSBlbHNlIGlmIChkLT53aW5kb3cpIHsKKyAgICAgICAgIFFR dWlja1dpbmRvd1ByaXZhdGU6OmdldChkLT53aW5kb3cpLT5wYXJlbnRsZXNzSXRlbXMucmVtb3Zl KHRoaXMpOworICAgICB9CitAQCAtMjc2OCw4ICsyNzczLDkgQEAgdm9pZCBRUXVpY2tJdGVtOjpz ZXRQYXJlbnRJdGVtKFFRdWlja0l0ZW0gKnBhcmVudEl0ZW0pCisgCisgICAgIGQtPml0ZW1DaGFu Z2UoSXRlbVBhcmVudEhhc0NoYW5nZWQsIGQtPnBhcmVudEl0ZW0pOworIAorLSAgICBlbWl0IHBh cmVudENoYW5nZWQoZC0+cGFyZW50SXRlbSk7CistICAgIGlmIChpc1Zpc2libGUoKSAmJiBkLT5w YXJlbnRJdGVtKQorKyAgICBpZiAoIWQtPmluRGVzdHJ1Y3RvcikKKysgICAgICAgIGVtaXQgcGFy ZW50Q2hhbmdlZChkLT5wYXJlbnRJdGVtKTsKKysgICAgaWYgKGlzVmlzaWJsZSgpICYmIGQtPnBh cmVudEl0ZW0gJiYgIVFRdWlja0l0ZW1Qcml2YXRlOjpnZXQoZC0+cGFyZW50SXRlbSktPmluRGVz dHJ1Y3RvcikKKyAgICAgICAgIGVtaXQgZC0+cGFyZW50SXRlbS0+dmlzaWJsZUNoaWxkcmVuQ2hh bmdlZCgpOworIH0KKyAKK0BAIC0yOTY1LDcgKzI5NzEsOCBAQCB2b2lkIFFRdWlja0l0ZW1Qcml2 YXRlOjpyZW1vdmVDaGlsZChRUXVpY2tJdGVtICpjaGlsZCkKKyAKKyAgICAgaXRlbUNoYW5nZShR UXVpY2tJdGVtOjpJdGVtQ2hpbGRSZW1vdmVkQ2hhbmdlLCBjaGlsZCk7CisgCistICAgIGVtaXQg cS0+Y2hpbGRyZW5DaGFuZ2VkKCk7CisrICAgIGlmICghaW5EZXN0cnVjdG9yKQorKyAgICAgICAg ZW1pdCBxLT5jaGlsZHJlbkNoYW5nZWQoKTsKKyB9CisgCisgdm9pZCBRUXVpY2tJdGVtUHJpdmF0 ZTo6cmVmV2luZG93KFFRdWlja1dpbmRvdyAqYykKK0BAIC0zMTk0LDYgKzMyMDEsNyBAQCBRUXVp Y2tJdGVtUHJpdmF0ZTo6UVF1aWNrSXRlbVByaXZhdGUoKQorICAgICAsIHRvdWNoRW5hYmxlZChm YWxzZSkKKyAjZW5kaWYKKyAgICAgLCBoYXNDdXJzb3JIYW5kbGVyKGZhbHNlKQorKyAgICAsIGlu RGVzdHJ1Y3RvcihmYWxzZSkKKyAgICAgLCBkaXJ0eUF0dHJpYnV0ZXMoMCkKKyAgICAgLCBuZXh0 RGlydHlJdGVtKG51bGxwdHIpCisgICAgICwgcHJldkRpcnR5SXRlbShudWxscHRyKQorQEAgLTUx MjAsNiArNTEyOCwxMyBAQCB2b2lkIFFRdWlja0l0ZW06OmNvbXBvbmVudENvbXBsZXRlKCkKKyAg ICAgICAgIGQtPmFkZFRvRGlydHlMaXN0KCk7CisgICAgICAgICBRUXVpY2tXaW5kb3dQcml2YXRl OjpnZXQoZC0+d2luZG93KS0+ZGlydHlJdGVtKHRoaXMpOworICAgICB9CisrCisrI2lmIFFUX0NP TkZJRyhhY2Nlc3NpYmlsaXR5KQorKyAgICBpZiAoZC0+aXNBY2Nlc3NpYmxlICYmIGQtPmVmZmVj dGl2ZVZpc2libGUpIHsKKysgICAgICAgIFFBY2Nlc3NpYmxlRXZlbnQgZXYodGhpcywgUUFjY2Vz c2libGU6Ok9iamVjdFNob3cpOworKyAgICAgICAgUUFjY2Vzc2libGU6OnVwZGF0ZUFjY2Vzc2li aWxpdHkoJmV2KTsKKysgICAgfQorKyNlbmRpZgorIH0KKyAKKyBRUXVpY2tTdGF0ZUdyb3VwICpR UXVpY2tJdGVtUHJpdmF0ZTo6X3N0YXRlcygpCitAQCAtNjEwNiw5ICs2MTIxLDExIEBAIGJvb2wg UVF1aWNrSXRlbVByaXZhdGU6OnNldEVmZmVjdGl2ZVZpc2libGVSZWN1cihib29sIG5ld0VmZmVj dGl2ZVZpc2libGUpCisgICAgICAgICBRQWNjZXNzaWJsZTo6dXBkYXRlQWNjZXNzaWJpbGl0eSgm ZXYpOworICAgICB9CisgI2VuZGlmCistICAgIGVtaXQgcS0+dmlzaWJsZUNoYW5nZWQoKTsKKy0g ICAgaWYgKGNoaWxkVmlzaWJpbGl0eUNoYW5nZWQpCistICAgICAgICBlbWl0IHEtPnZpc2libGVD aGlsZHJlbkNoYW5nZWQoKTsKKysgICAgaWYgKCFpbkRlc3RydWN0b3IpIHsKKysgICAgICAgIGVt aXQgcS0+dmlzaWJsZUNoYW5nZWQoKTsKKysgICAgICAgIGlmIChjaGlsZFZpc2liaWxpdHlDaGFu Z2VkKQorKyAgICAgICAgICAgIGVtaXQgcS0+dmlzaWJsZUNoaWxkcmVuQ2hhbmdlZCgpOworKyAg ICB9CisgCisgICAgIHJldHVybiB0cnVlOyAgICAvLyBlZmZlY3RpdmUgdmlzaWJpbGl0eSBESUQg Y2hhbmdlCisgfQorQEAgLTYxNTcsNiArNjE3NCwxNSBAQCB2b2lkIFFRdWlja0l0ZW1Qcml2YXRl OjpzZXRFZmZlY3RpdmVFbmFibGVSZWN1cihRUXVpY2tJdGVtICpzY29wZSwgYm9vbCBuZXdFZmZl YworICAgICB9CisgCisgICAgIGl0ZW1DaGFuZ2UoUVF1aWNrSXRlbTo6SXRlbUVuYWJsZWRIYXND aGFuZ2VkLCBlZmZlY3RpdmVFbmFibGUpOworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkK KysgICAgaWYgKGlzQWNjZXNzaWJsZSkgeworKyAgICAgICAgUUFjY2Vzc2libGU6OlN0YXRlIGNo YW5nZWRTdGF0ZTsKKysgICAgICAgIGNoYW5nZWRTdGF0ZS5kaXNhYmxlZCA9IHRydWU7CisrICAg ICAgICBjaGFuZ2VkU3RhdGUuZm9jdXNhYmxlID0gdHJ1ZTsKKysgICAgICAgIFFBY2Nlc3NpYmxl U3RhdGVDaGFuZ2VFdmVudCBldihxLCBjaGFuZ2VkU3RhdGUpOworKyAgICAgICAgUUFjY2Vzc2li bGU6OnVwZGF0ZUFjY2Vzc2liaWxpdHkoJmV2KTsKKysgICAgfQorKyNlbmRpZgorICAgICBlbWl0 IHEtPmVuYWJsZWRDaGFuZ2VkKCk7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUv c3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW1fcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2sv aXRlbXMvcXF1aWNraXRlbV9wLmgKK2luZGV4IDg0MWQ5MWJiNDAuLmFkZThmYjYxZjIgMTAwNjQ0 CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtX3AuaAorKysr IGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbV9wLmgKK0BAIC00NzIs NiArNDcyLDcgQEAgcHVibGljOgorICAgICBib29sIHJlcGxheWluZ1ByZXNzRXZlbnQ6MTsKKyAg ICAgYm9vbCB0b3VjaEVuYWJsZWQ6MTsKKyAgICAgYm9vbCBoYXNDdXJzb3JIYW5kbGVyOjE7Cisr ICAgIHF1aW50MzIgaW5EZXN0cnVjdG9yOjE7IC8vIGhhcyBlbnRlcmVkIH5RUXVpY2tJdGVtCisg CisgICAgIGVudW0gRGlydHlUeXBlIHsKKyAgICAgICAgIFRyYW5zZm9ybU9yaWdpbiAgICAgICAg ID0gMHgwMDAwMDAwMSwKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVt cy9xcXVpY2tpdGVtdmlldy5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVp Y2tpdGVtdmlldy5jcHAKK2luZGV4IDAxMGEwMTUyZTEuLmY4YWQxNjhhMTcgMTAwNjQ0CistLS0g YS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtdmlldy5jcHAKKysrKyBi L3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW12aWV3LmNwcAorQEAgLTE3 ODUsNyArMTc4NSw3IEBAIHZvaWQgUVF1aWNrSXRlbVZpZXdQcml2YXRlOjpyZWZpbGwocXJlYWwg ZnJvbSwgcXJlYWwgdG8pCisgCisgICAgIGRvIHsKKyAgICAgICAgIGJ1ZmZlclBhdXNlLnN0b3Ao KTsKKy0gICAgICAgIGlmIChjdXJyZW50Q2hhbmdlcy5oYXNQZW5kaW5nQ2hhbmdlcygpIHx8IGJ1 ZmZlcmVkQ2hhbmdlcy5oYXNQZW5kaW5nQ2hhbmdlcygpKSB7CisrICAgICAgICBpZiAoY3VycmVu dENoYW5nZXMuaGFzUGVuZGluZ0NoYW5nZXMoKSB8fCBidWZmZXJlZENoYW5nZXMuaGFzUGVuZGlu Z0NoYW5nZXMoKSB8fCBjdXJyZW50Q2hhbmdlcy5hY3RpdmUpIHsKKyAgICAgICAgICAgICBjdXJy ZW50Q2hhbmdlcy5yZXNldCgpOworICAgICAgICAgICAgIGJ1ZmZlcmVkQ2hhbmdlcy5yZXNldCgp OworICAgICAgICAgICAgIHJlbGVhc2VWaXNpYmxlSXRlbXMocmV1c2FibGVGbGFnKTsKK2RpZmYg LS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2ttb3VzZWFyZWFfcF9w LmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2ttb3VzZWFyZWFfcF9wLmgK K2luZGV4IGZiYTM4M2UyNjguLjBkNjM2MTg2MjIgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZl L3NyYy9xdWljay9pdGVtcy9xcXVpY2ttb3VzZWFyZWFfcF9wLmgKKysrKyBiL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja21vdXNlYXJlYV9wX3AuaAorQEAgLTYxLDcgKzYxLDYg QEAgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgY2xhc3MgUVF1aWNrTW91c2VFdmVudDsKKyBjbGFz cyBRUXVpY2tNb3VzZUFyZWE7CistY2xhc3MgUVF1aWNrUG9pbnRlck1hc2s7CisgY2xhc3MgUVF1 aWNrTW91c2VBcmVhUHJpdmF0ZSA6IHB1YmxpYyBRUXVpY2tJdGVtUHJpdmF0ZQorIHsKKyAgICAg UV9ERUNMQVJFX1BVQkxJQyhRUXVpY2tNb3VzZUFyZWEpCitAQCAtMTAwLDcgKzk5LDYgQEAgcHVi bGljOgorICNpZiBRVF9DT05GSUcocXVpY2tfZHJhZ2FuZGRyb3ApCisgICAgIFFRdWlja0RyYWcg KmRyYWc7CisgI2VuZGlmCistICAgIFFQb2ludGVyPFFRdWlja1BvaW50ZXJNYXNrPiBtYXNrOwor ICAgICBRUG9pbnRGIHN0YXJ0U2NlbmU7CisgICAgIFFQb2ludEYgdGFyZ2V0U3RhcnRQb3M7Cisg ICAgIFFQb2ludEYgbGFzdFBvczsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlj ay9pdGVtcy9xcXVpY2t0ZXh0LmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3Fx dWlja3RleHQuY3BwCitpbmRleCA2MjMwMTg2OTMzLi5lODIzY2ExMDk1IDEwMDY0NAorLS0tIGEv cXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrdGV4dC5jcHAKKysrKyBiL3F0ZGVj bGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja3RleHQuY3BwCitAQCAtMjE2OCw3ICsyMTY4 LDcgQEAgdm9pZCBRUXVpY2tUZXh0OjpyZXNldE1heGltdW1MaW5lQ291bnQoKQorICAgICA8aW1n IHNyYz0iIiBhbGlnbj0idG9wLG1pZGRsZSxib3R0b20iIHdpZHRoPSIiIGhlaWdodD0iIj4gLSBp bmxpbmUgaW1hZ2VzCisgICAgIDxvbCB0eXBlPSIiPiwgPHVsIHR5cGU9IiI+IGFuZCA8bGk+IC0g b3JkZXJlZCBhbmQgdW5vcmRlcmVkIGxpc3RzCisgICAgIDxwcmU+PC9wcmU+IC0gcHJlZm9ybWF0 dGVkCistICAgICZndDsgJmx0OyAmYW1wOworKyAgICAmZ3Q7ICZsdDsgJmFtcDsgJnF1b3Q7ICZu YnNwOyAmYXBvczsKKyAgICAgXGVuZGNvZGUKKyAKKyAgICAgXGMgVGV4dC5TdHlsZWRUZXh0IHBh cnNlciBpcyBzdHJpY3QsIHJlcXVpcmluZyB0YWdzIHRvIGJlIGNvcnJlY3RseSBuZXN0ZWQuCitk aWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svc2NlbmVncmFwaC9xc2dyaGlkaXN0 YW5jZWZpZWxkZ2x5cGhjYWNoZS5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9zY2VuZWdy YXBoL3FzZ3JoaWRpc3RhbmNlZmllbGRnbHlwaGNhY2hlLmNwcAoraW5kZXggZWI0ZGIwZjg1ZS4u MjMyNWEyNjY1YiAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3NjZW5lZ3Jh cGgvcXNncmhpZGlzdGFuY2VmaWVsZGdseXBoY2FjaGUuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZl L3NyYy9xdWljay9zY2VuZWdyYXBoL3FzZ3JoaWRpc3RhbmNlZmllbGRnbHlwaGNhY2hlLmNwcAor QEAgLTQ0Niw3ICs0NDYsNyBAQCBib29sIFFTR1JoaURpc3RhbmNlRmllbGRHbHlwaENhY2hlOjps b2FkUHJlZ2VuZXJhdGVkQ2FjaGUoY29uc3QgUVJhd0ZvbnQgJmZvbnQpCisgCisgICAgICAgICBj b25zdCBjaGFyICp0ZXh0dXJlUmVjb3JkID0gYWxsb2NhdG9yRGF0YTsKKyAgICAgICAgIGZvciAo aW50IGkgPSAwOyBpIDwgdGV4dHVyZUNvdW50OyArK2ksIHRleHR1cmVSZWNvcmQgKz0gUXRkZjo6 VGV4dHVyZVJlY29yZFNpemUpIHsKKy0gICAgICAgICAgICBpZiAodGV4dHVyZVJlY29yZCArIFF0 ZGY6OlRleHR1cmVSZWNvcmRTaXplID4gcXRkZlRhYmxlRW5kKSB7CisrICAgICAgICAgICAgaWYg KHF0ZGZUYWJsZUVuZCAtIHRleHR1cmVSZWNvcmQgPCBRdGRmOjpUZXh0dXJlUmVjb3JkU2l6ZSkg eworICAgICAgICAgICAgICAgICBxV2FybmluZygicXRkZiB0YWJsZSB0b28gc21hbGwgaW4gZm9u dCAnJXMnLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHFQcmludGFibGUoZm9udC5mYW1p bHlOYW1lKCkpKTsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworQEAgLTQ2Miw3ICs0 NjIsNyBAQCBib29sIFFTR1JoaURpc3RhbmNlRmllbGRHbHlwaENhY2hlOjpsb2FkUHJlZ2VuZXJh dGVkQ2FjaGUoY29uc3QgUVJhd0ZvbnQgJmZvbnQpCisgCisgICAgICAgICBjb25zdCBjaGFyICpn bHlwaFJlY29yZCA9IHRleHR1cmVSZWNvcmQ7CisgICAgICAgICBmb3IgKHF1aW50MzIgaSA9IDA7 IGkgPCBnbHlwaENvdW50OyArK2ksIGdseXBoUmVjb3JkICs9IFF0ZGY6OkdseXBoUmVjb3JkU2l6 ZSkgeworLSAgICAgICAgICAgIGlmIChnbHlwaFJlY29yZCArIFF0ZGY6OkdseXBoUmVjb3JkU2l6 ZSA+IHF0ZGZUYWJsZUVuZCkgeworKyAgICAgICAgICAgIGlmIChxdGRmVGFibGVFbmQgLSBnbHlw aFJlY29yZCA8IFF0ZGY6OiBHbHlwaFJlY29yZFNpemUpIHsKKyAgICAgICAgICAgICAgICAgcVdh cm5pbmcoInF0ZGYgdGFibGUgdG9vIHNtYWxsIGluIGZvbnQgJyVzJy4iLAorICAgICAgICAgICAg ICAgICAgICAgICAgICBxUHJpbnRhYmxlKGZvbnQuZmFtaWx5TmFtZSgpKSk7CisgICAgICAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKK0BAIC01MTIsOCArNTEyLDggQEAgYm9vbCBRU0dSaGlEaXN0 YW5jZUZpZWxkR2x5cGhDYWNoZTo6bG9hZFByZWdlbmVyYXRlZENhY2hlKGNvbnN0IFFSYXdGb250 ICZmb250KQorIAorICAgICAgICAgICAgIGludCB3aWR0aCA9IHRleEluZm8tPmFsbG9jYXRlZEFy ZWEud2lkdGgoKTsKKyAgICAgICAgICAgICBpbnQgaGVpZ2h0ID0gdGV4SW5mby0+YWxsb2NhdGVk QXJlYS5oZWlnaHQoKTsKKy0gICAgICAgICAgICBxaW50NjQgc2l6ZSA9IHdpZHRoICogaGVpZ2h0 OworLSAgICAgICAgICAgIGlmIChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4odGV4dHVy ZURhdGEgKyBzaXplKSA+IHF0ZGZUYWJsZUVuZCkgeworKyAgICAgICAgICAgIHFpbnQ2NCBzaXpl ID0gcWludDY0KHdpZHRoKSAqIGhlaWdodDsKKysgICAgICAgICAgICBpZiAocXRkZlRhYmxlRW5k IC0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KHRleHR1cmVEYXRhKSA8IHNpemUpIHsK KyAgICAgICAgICAgICAgICAgcVdhcm5pbmcoInF0ZGYgdGFibGUgdG9vIHNtYWxsIGluIGZvbnQg JyVzJy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBxUHJpbnRhYmxlKGZvbnQuZmFtaWx5 TmFtZSgpKSk7CisgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKK2RpZmYgLS1naXQgYS9x dGRlY2xhcmF0aXZlL3NyYy9xdWljay91dGlsL3FxdWlja3N0eWxlZHRleHQuY3BwIGIvcXRkZWNs YXJhdGl2ZS9zcmMvcXVpY2svdXRpbC9xcXVpY2tzdHlsZWR0ZXh0LmNwcAoraW5kZXggZDUzMWZj OTIwNS4uYTI1YWY5MDQxNCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3V0 aWwvcXF1aWNrc3R5bGVkdGV4dC5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3V0 aWwvcXF1aWNrc3R5bGVkdGV4dC5jcHAKK0BAIC01NjQsNiArNTY0LDggQEAgdm9pZCBRUXVpY2tT dHlsZWRUZXh0UHJpdmF0ZTo6cGFyc2VFbnRpdHkoY29uc3QgUUNoYXIgKiZjaCwgY29uc3QgUVN0 cmluZyAmdGV4dEkKKyAgICAgICAgICAgICAgICAgdGV4dE91dCArPSBRQ2hhcig2MCk7CisgICAg ICAgICAgICAgZWxzZSBpZiAoZW50aXR5ID09IFFMYXRpbjFTdHJpbmcoImFtcCIpKQorICAgICAg ICAgICAgICAgICB0ZXh0T3V0ICs9IFFDaGFyKDM4KTsKKysgICAgICAgICAgICBlbHNlIGlmIChl bnRpdHkgPT0gUUxhdGluMVN0cmluZygiYXBvcyIpKQorKyAgICAgICAgICAgICAgICB0ZXh0T3V0 ICs9IFFDaGFyKDM5KTsKKyAgICAgICAgICAgICBlbHNlIGlmIChlbnRpdHkgPT0gUUxhdGluMVN0 cmluZygicXVvdCIpKQorICAgICAgICAgICAgICAgICB0ZXh0T3V0ICs9IFFDaGFyKDM0KTsKKyAg ICAgICAgICAgICBlbHNlIGlmIChlbnRpdHkgPT0gUUxhdGluMVN0cmluZygibmJzcCIpKQorZGlm ZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNr d2lkZ2V0LmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1 aWNrd2lkZ2V0LmNwcAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjhh MWM5MDE4ODAKKy0tLSAvZGV2L251bGwKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lk Z2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0LmNwcAorQEAgLTAsMCArMSwxMTAgQEAKKysvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21w YW55IEx0ZC4KKysqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioK KysqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRRdWljayBtb2R1bGUgb2YgdGhlIFF0IFRv b2xraXQuCisrKioKKysqKiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwg TGljZW5zZSBVc2FnZQorKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQg bGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNv bW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2Fy ZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWlu ZWQgaW4KKysqKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29t cGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtcworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczov L3d3dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9u IHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisr KioKKysqKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRl cm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgTGVzc2VyCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGlu IHRoZSBmaWxlIExJQ0VOU0UuTEdQTDMgaW5jbHVkZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9m IHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisr KiogZW5zdXJlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAz IHJlcXVpcmVtZW50cworKyoqIHdpbGwgYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vu c2VzL2xncGwtMy4wLmh0bWwuCisrKioKKysqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBV c2FnZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVQorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAg b3IgKGF0IHlvdXIgb3B0aW9uKSB0aGUgR05VIEdlbmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2 ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisr KiogUXQgRm91bmRhdGlvbi4gVGhlIGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElD RU5TRS5HUEwyIGFuZCBMSUNFTlNFLkdQTDMKKysqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5n IG9mIHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRp b24gdG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMg d2lsbAorKyoqIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0 bWwgYW5kCisrKiogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisr KioKKysqKiAkUVRfRU5EX0xJQ0VOU0UkCisrKioKKysqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKwor KyNpbmNsdWRlICJxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0X3AuaCIKKysKKysjaW5jbHVkZSAicXF1 aWNrd2lkZ2V0X3AuaCIKKysKKytRVF9CRUdJTl9OQU1FU1BBQ0UKKysKKysjaWYgUVRfQ09ORklH KGFjY2Vzc2liaWxpdHkpCisrCisrUUFjY2Vzc2libGVRdWlja1dpZGdldDo6UUFjY2Vzc2libGVR dWlja1dpZGdldChRUXVpY2tXaWRnZXQqIHdpZGdldCkKKys6IFFBY2Nlc3NpYmxlV2lkZ2V0KHdp ZGdldCkKKyssIG1fYWNjZXNzaWJsZVdpbmRvdyhRUXVpY2tXaWRnZXRQcml2YXRlOjpnZXQod2lk Z2V0KS0+b2Zmc2NyZWVuV2luZG93KQorK3sKKysgICAgLy8gTk9URTogbV9hY2Nlc3NpYmxlV2lu ZG93IGlzIGEgUUFjY2Vzc2libGVRdWlja1dpbmRvdywgYW5kIG5vdCBhCisrICAgIC8vIFFBY2Nl c3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3cgKGRlZmluZWQgYmVsb3cpLiBUaGlzIG1l YW5zCisrICAgIC8vIGl0IHdpbGwgcmV0dXJuIHRoZSBRdWljayBpdGVtIGNoaWxkIGludGVyZmFj ZXMsIHdoaWNoIGlzIHdoYXQncyBuZWVkZWQgaGVyZQorKyAgICAvLyAodW5saWtlIFFBY2Nlc3Np YmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3csIHdoaWNoIHdpbGwgcmVwb3J0IDAgY2hpbGRy ZW4pLgorK30KKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVRdWlja1dpZGdl dDo6Y2hpbGQoaW50IGluZGV4KSBjb25zdAorK3sKKysgICAgcmV0dXJuIG1fYWNjZXNzaWJsZVdp bmRvdy5jaGlsZChpbmRleCk7CisrfQorKworK2ludCBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0Ojpj aGlsZENvdW50KCkgY29uc3QKKyt7CisrICAgIHJldHVybiBtX2FjY2Vzc2libGVXaW5kb3cuY2hp bGRDb3VudCgpOworK30KKysKKytpbnQgUUFjY2Vzc2libGVRdWlja1dpZGdldDo6aW5kZXhPZkNo aWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppZmFjZSkgY29uc3QKKyt7CisrICAgIHJl dHVybiBtX2FjY2Vzc2libGVXaW5kb3cuaW5kZXhPZkNoaWxkKGlmYWNlKTsKKyt9CisrCisrUUFj Y2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQ6OmNoaWxkQXQoaW50IHgs IGludCB5KSBjb25zdAorK3sKKysgICAgcmV0dXJuIG1fYWNjZXNzaWJsZVdpbmRvdy5jaGlsZEF0 KHgsIHkpOworK30KKysKKytRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjpR QWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93KFFRdWlja1dpbmRvdyAqd2luZG93 KQorKzpRQWNjZXNzaWJsZVF1aWNrV2luZG93KHdpbmRvdykKKyt7CisrCisrfQorKworK1FBY2Nl c3NpYmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93Ojpj aGlsZChpbnQgaW5kZXgpIGNvbnN0CisreworKyAgICBRX1VOVVNFRChpbmRleCk7CisrICAgIHJl dHVybiBudWxscHRyOworK30KKysKKytpbnQgUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVl bldpbmRvdzo6Y2hpbGRDb3VudCgpIGNvbnN0CisreworKyAgICByZXR1cm4gMDsKKyt9CisrCisr aW50IFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OmluZGV4T2ZDaGlsZChj b25zdCBRQWNjZXNzaWJsZUludGVyZmFjZSAqaWZhY2UpIGNvbnN0CisreworKyAgICBRX1VOVVNF RChpZmFjZSk7CisrICAgIHJldHVybiAtMTsKKyt9CisrCisrUUFjY2Vzc2libGVJbnRlcmZhY2Ug KlFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6OlFBY2Nlc3NpYmxlUXVpY2tX aWRnZXRPZmZzY3JlZW5XaW5kb3c6OmNoaWxkQXQoaW50IHgsIGludCB5KSBjb25zdAorK3sKKysg ICAgUV9VTlVTRUQoeCk7CisrICAgIFFfVU5VU0VEKHkpOworKyAgICByZXR1cm4gbnVsbHB0cjsK Kyt9CisrCisrI2VuZGlmIC8vIGFjY2Vzc2liaWxpdHkKKysKKytRVF9FTkRfTkFNRVNQQUNFCitk aWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVp Y2t3aWRnZXRfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxl cXVpY2t3aWRnZXRfcC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4u N2MyYWI5MzBlMAorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3 aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRfcC5oCitAQCAtMCwwICsxLDk1IEBACisrLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKysqKgorKyoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQgQ29t cGFueSBMdGQuCisrKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworKyoq CisrKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0UXVpY2sgbW9kdWxlIG9mIHRoZSBRdCBU b29sa2l0LgorKyoqCisrKiogJFFUX0JFR0lOX0xJQ0VOU0U6TEdQTCQKKysqKiBDb21tZXJjaWFs IExpY2Vuc2UgVXNhZ2UKKysqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0 IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCisrKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBj b21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCisrKiogU29mdHdh cmUgb3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFp bmVkIGluCisrKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENv bXBhbnkuIEZvciBsaWNlbnNpbmcgdGVybXMKKysqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6 Ly93d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKysqKiBpbmZvcm1hdGlv biB1c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgor KyoqCisrKiogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0 ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIExlc3NlcgorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBp biB0aGUgZmlsZSBMSUNFTlNFLkxHUEwzIGluY2x1ZGVkIGluIHRoZQorKyoqIHBhY2thZ2luZyBv ZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0bwor KyoqIGVuc3VyZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24g MyByZXF1aXJlbWVudHMKKysqKiB3aWxsIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy9sZ3BsLTMuMC5odG1sLgorKyoqCisrKiogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug VXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4w IG9yIChhdCB5b3VyIG9wdGlvbikgdGhlIEdOVSBHZW5lcmFsCisrKiogUHVibGljIGxpY2Vuc2Ug dmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uIGFwcHJvdmVkIGJ5IHRoZSBLREUgRnJlZQor KyoqIFF0IEZvdW5kYXRpb24uIFRoZSBsaWNlbnNlcyBhcmUgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJ Q0VOU0UuR1BMMiBhbmQgTElDRU5TRS5HUEwzCisrKiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2lu ZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZworKyoqIGluZm9ybWF0 aW9uIHRvIGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVxdWlyZW1lbnRz IHdpbGwKKysqKiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5o dG1sIGFuZAorKyoqIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sLgor KyoqCisrKiogJFFUX0VORF9MSUNFTlNFJAorKyoqCisrKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysK KysjaWZuZGVmIFFBQ0NFU1NJQkxFUVVJQ0tXSURHRVRfSAorKyNkZWZpbmUgUUFDQ0VTU0lCTEVR VUlDS1dJREdFVF9ICisrCisrLy8KKysvLyAgVyBBIFIgTiBJIE4gRworKy8vICAtLS0tLS0tLS0t LS0tCisrLy8KKysvLyBUaGlzIGZpbGUgaXMgbm90IHBhcnQgb2YgdGhlIFF0IEFQSS4gIEl0IGV4 aXN0cyBwdXJlbHkgYXMgYW4KKysvLyBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBUaGlzIGhlYWRl ciBmaWxlIG1heSBjaGFuZ2UgZnJvbSB2ZXJzaW9uIHRvCisrLy8gdmVyc2lvbiB3aXRob3V0IG5v dGljZSwgb3IgZXZlbiBiZSByZW1vdmVkLgorKy8vCisrLy8gV2UgbWVhbiBpdC4KKysvLworKwor KyNpbmNsdWRlICJxcXVpY2t3aWRnZXQuaCIKKysjaW5jbHVkZSA8UXRXaWRnZXRzL3FhY2Nlc3Np Ymxld2lkZ2V0Lmg+CisrCisrI2luY2x1ZGUgPHByaXZhdGUvcWFjY2Vzc2libGVxdWlja3ZpZXdf cC5oPgorKworK1FUX0JFR0lOX05BTUVTUEFDRQorKworKyNpZiBRVF9DT05GSUcoYWNjZXNzaWJp bGl0eSkKKysKKysvLyBUaGVzZSBjbGFzc2VzIGltcGxlbWVudCB0aGUgUVF1aWNrV2lnZXQgYWNj ZXNzaWJpbGl0eSBzd2l0Y2hhcm9vLAorKy8vIHdoZXJlIHRoZSBjaGlsZCBpdGVtcyBvZiB0aGUg UVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93IGFyZSByZXBvcnRlZAorKy8vIGFzIGNoaWxkIGFj Y2Vzc2libGUgaW50ZXJmYWNlcyBvZiB0aGUgUUFjY2Vzc2libGVRdWlja1dpZGdldC4KKytjbGFz cyBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0OiBwdWJsaWMgUUFjY2Vzc2libGVXaWRnZXQKKyt7Cisr cHVibGljOgorKyAgICBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0KFFRdWlja1dpZGdldCogd2lkZ2V0 KTsKKysKKysgICAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmNoaWxkKGludCBpbmRleCkgY29uc3Qg b3ZlcnJpZGU7CisrICAgIGludCBjaGlsZENvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIGlu dCBpbmRleE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmlmYWNlKSBjb25zdCBv dmVycmlkZTsKKysgICAgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmNoaWxkQXQoaW50IHgsIGludCB5 KSBjb25zdCBvdmVycmlkZTsKKysKKytwcml2YXRlOgorKyAgICBRQWNjZXNzaWJsZVF1aWNrV2lu ZG93IG1fYWNjZXNzaWJsZVdpbmRvdzsKKysgICAgUV9ESVNBQkxFX0NPUFkoUUFjY2Vzc2libGVR dWlja1dpZGdldCkKKyt9OworKworK2NsYXNzIFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3Jl ZW5XaW5kb3c6IHB1YmxpYyBRQWNjZXNzaWJsZVF1aWNrV2luZG93CisreworK3B1YmxpYzoKKysg ICAgUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyhRUXVpY2tXaW5kb3cgKndp bmRvdyk7CisrICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpjaGlsZChpbnQgaW5kZXgpIGNvbnN0 IG92ZXJyaWRlOworKyAgICBpbnQgY2hpbGRDb3VudCgpIGNvbnN0IG92ZXJyaWRlOworKyAgICBp bnQgaW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppZmFjZSkgY29uc3Qg b3ZlcnJpZGU7CisrICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpjaGlsZEF0KGludCB4LCBpbnQg eSkgY29uc3Qgb3ZlcnJpZGU7CisrfTsKKysKKysjZW5kaWYgLy8gYWNjZXNzaWJpbGl0eQorKwor K1FUX0VORF9OQU1FU1BBQ0UKKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZl L3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnkuY3BwIGIvcXRk ZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5 LmNwcAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjdiYTg4YTE3NjkK Ky0tLSAvZGV2L251bGwKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNj ZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeS5jcHAKK0BAIC0wLDAgKzEsNjAgQEAKKysvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55 IEx0ZC4KKysqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysq KiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRRdWljayBtb2R1bGUgb2YgdGhlIFF0IFRvb2xr aXQuCisrKioKKysqKiAkUVRfQkVHSU5fTElDRU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwgTGlj ZW5zZSBVc2FnZQorKyoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGlj ZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1l cmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBv ciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQg aW4KKysqKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFu eS4gRm9yIGxpY2Vuc2luZyB0ZXJtcworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3 dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVz ZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioK KysqKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5h dGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg TGVzc2VyCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRo ZSBmaWxlIExJQ0VOU0UuTEdQTDMgaW5jbHVkZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9mIHRo aXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisrKiog ZW5zdXJlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJl cXVpcmVtZW50cworKyoqIHdpbGwgYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz L2xncGwtMy4wLmh0bWwuCisrKioKKysqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2Fn ZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVQorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3Ig KGF0IHlvdXIgb3B0aW9uKSB0aGUgR05VIEdlbmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2ZXJz aW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisrKiog UXQgRm91bmRhdGlvbi4gVGhlIGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5T RS5HUEwyIGFuZCBMSUNFTlNFLkdQTDMKKysqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9m IHRoaXMgZmlsZS4gUGxlYXNlIHJldmlldyB0aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRpb24g dG8gZW5zdXJlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2ls bAorKyoqIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwg YW5kCisrKiogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisrKioK KysqKiAkUVRfRU5EX0xJQ0VOU0UkCisrKioKKysqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNp bmNsdWRlICJxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeV9wLmgiCisrI2luY2x1ZGUgInFh Y2Nlc3NpYmxlcXVpY2t3aWRnZXRfcC5oIgorKworK1FUX0JFR0lOX05BTUVTUEFDRQorKworKyNp ZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqcUFj Y2Vzc2libGVRdWlja1dpZGdldEZhY3RvcnkoY29uc3QgUVN0cmluZyAmY2xhc3NuYW1lLCBRT2Jq ZWN0ICpvYmplY3QpCisreworKyAgICBpZiAoY2xhc3NuYW1lID09IFFMYXRpbjFTdHJpbmcoIlFR dWlja1dpZGdldCIpKSB7CisrICAgICAgICByZXR1cm4gbmV3IFFBY2Nlc3NpYmxlUXVpY2tXaWRn ZXQocW9iamVjdF9jYXN0PFFRdWlja1dpZGdldCAqPihvYmplY3QpKTsKKysgICAgfSBlbHNlIGlm IChjbGFzc25hbWUgPT0gUUxhdGluMVN0cmluZygiUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93 IikpIHsKKysgICAgICAgIHJldHVybiBuZXcgUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVl bldpbmRvdyhxb2JqZWN0X2Nhc3Q8UVF1aWNrV2luZG93ICo+KG9iamVjdCkpOworKyAgICB9Cisr ICAgIHJldHVybiAwOworK30KKysKKysjZW5kaWYgLy8gYWNjZXNzaWJpbGl0eQorKworK1FUX0VO RF9OQU1FU1BBQ0UKKysKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdl dHMvcWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnlfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMv cXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5X3AuaAorbmV3IGZpbGUg bW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjhjNjNiMDlmODEKKy0tLSAvZGV2L251bGwK KysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lk Z2V0ZmFjdG9yeV9wLmgKK0BAIC0wLDAgKzEsNjYgQEAKKysvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor KyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb250 YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisrKioKKysqKiBUaGlzIGZpbGUgaXMg cGFydCBvZiB0aGUgUXRRdWljayBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCisrKioKKysqKiAk UVRfQkVHSU5fTElDRU5TRTpMR1BMJAorKyoqIENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQorKyoq IExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNvbW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0 aGlzIGZpbGUgaW4KKysqKiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBh Z3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVs eSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0ZXJtcyBjb250YWluZWQgaW4KKysqKiBhIHdyaXR0 ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFuZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2lu ZyB0ZXJtcworKyoqIGFuZCBjb25kaXRpb25zIHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1j b25kaXRpb25zLiBGb3IgZnVydGhlcgorKyoqIGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBm b3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2NvbnRhY3QtdXMuCisrKioKKysqKiBHTlUgTGVzc2Vy IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZp bGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyCisrKiogR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0Uu TEdQTDMgaW5jbHVkZWQgaW4gdGhlCisrKiogcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxlYXNl IHJldmlldyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvCisrKiogZW5zdXJlIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIHJlcXVpcmVtZW50cworKyoq IHdpbGwgYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0bWwu CisrKioKKysqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorKyoqIEFsdGVybmF0 aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQor KyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjAgb3IgKGF0IHlvdXIgb3B0aW9u KSB0aGUgR05VIEdlbmVyYWwKKysqKiBQdWJsaWMgbGljZW5zZSB2ZXJzaW9uIDMgb3IgYW55IGxh dGVyIHZlcnNpb24gYXBwcm92ZWQgYnkgdGhlIEtERSBGcmVlCisrKiogUXQgRm91bmRhdGlvbi4g VGhlIGxpY2Vuc2VzIGFyZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBG b3VuZGF0aW9uIGFuZCBhcHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5HUEwyIGFuZCBMSUNF TlNFLkdQTDMKKysqKiBpbmNsdWRlZCBpbiB0aGUgcGFja2FnaW5nIG9mIHRoaXMgZmlsZS4gUGxl YXNlIHJldmlldyB0aGUgZm9sbG93aW5nCisrKiogaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSByZXF1aXJlbWVudHMgd2lsbAorKyoqIGJlIG1ldDog aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWwgYW5kCisrKiogaHR0cHM6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLmh0bWwuCisrKioKKysqKiAkUVRfRU5EX0xJ Q0VOU0UkCisrKioKKysqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworKyNpbmNsdWRlIDxRdEd1aS9x YWNjZXNzaWJsZS5oPgorKworKyNpZm5kZWYgUUFDQ0VTU0lCTEVRVUlDS1dJREdFVEZBQ1RPUllf SAorKyNkZWZpbmUgUUFDQ0VTU0lCTEVRVUlDS1dJREdFVEZBQ1RPUllfSAorKworKy8vCisrLy8g IFcgQSBSIE4gSSBOIEcKKysvLyAgLS0tLS0tLS0tLS0tLQorKy8vCisrLy8gVGhpcyBmaWxlIGlz IG5vdCBwYXJ0IG9mIHRoZSBRdCBBUEkuICBJdCBleGlzdHMgcHVyZWx5IGFzIGFuCisrLy8gaW1w bGVtZW50YXRpb24gZGV0YWlsLiAgVGhpcyBoZWFkZXIgZmlsZSBtYXkgY2hhbmdlIGZyb20gdmVy c2lvbiB0bworKy8vIHZlcnNpb24gd2l0aG91dCBub3RpY2UsIG9yIGV2ZW4gYmUgcmVtb3ZlZC4K KysvLworKy8vIFdlIG1lYW4gaXQuCisrLy8KKysKKytRVF9CRUdJTl9OQU1FU1BBQ0UKKysKKysj aWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisrCisrUUFjY2Vzc2libGVJbnRlcmZhY2UgKnFB Y2Nlc3NpYmxlUXVpY2tXaWRnZXRGYWN0b3J5KGNvbnN0IFFTdHJpbmcgJmNsYXNzbmFtZSwgUU9i amVjdCAqb2JqZWN0KTsKKysKKysjZW5kaWYKKysKKytRVF9FTkRfTkFNRVNQQUNFCisrCisrI2Vu ZGlmCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlja3dp ZGdldC5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0LmNw cAoraW5kZXggMzk3ODBmOGRlMy4uOWM5N2I0MzUxOCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXQuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZl L3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0LmNwcAorQEAgLTM5LDYgKzM5LDcgQEAKKyAK KyAjaW5jbHVkZSAicXF1aWNrd2lkZ2V0LmgiCisgI2luY2x1ZGUgInFxdWlja3dpZGdldF9wLmgi CisrI2luY2x1ZGUgInFhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5X3AuaCIKKyAKKyAjaW5j bHVkZSAicHJpdmF0ZS9xcXVpY2t3aW5kb3dfcC5oIgorICNpbmNsdWRlICJwcml2YXRlL3FxdWlj a2l0ZW1fcC5oIgorQEAgLTc1LDkgKzc2LDE2IEBACisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisg CisrUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjpRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5k b3coUVF1aWNrV2luZG93UHJpdmF0ZSAmZGQsIFFRdWlja1JlbmRlckNvbnRyb2wgKmNvbnRyb2wp CisrOlFRdWlja1dpbmRvdyhkZCwgY29udHJvbCkKKyt7CisrICAgIHNldFRpdGxlKFFTdHJpbmc6 OmZyb21MYXRpbjEoIk9mZnNjcmVlbiIpKTsKKysgICAgc2V0T2JqZWN0TmFtZShRU3RyaW5nOjpm cm9tTGF0aW4xKCJRUXVpY2tPZmZTY3JlZW5XaW5kb3ciKSk7CisrfQorKworIC8vIG92ZXJyaWRl IHNldFZpc2JsZSB0byBwcmV2ZW50IGFjY2lkZW50YWwgb2Zmc2NyZWVuIHdpbmRvdyBiZWluZyBj cmVhdGVkCisgLy8gYnkgYmFzZSBjbGFzcy4KKy1jbGFzcyBRUXVpY2tPZmZjcmVlbldpbmRvd1By aXZhdGU6IHB1YmxpYyBRUXVpY2tXaW5kb3dQcml2YXRlIHsKKytjbGFzcyBRUXVpY2tXaWRnZXRP ZmZzY3JlZW5XaW5kb3dQcml2YXRlOiBwdWJsaWMgUVF1aWNrV2luZG93UHJpdmF0ZSB7CisgcHVi bGljOgorICAgICB2b2lkIHNldFZpc2libGUoYm9vbCB2aXNpYmxlKSBvdmVycmlkZSB7CisgICAg ICAgICBRX1EoUVdpbmRvdyk7CitAQCAtMTA1LDkgKzExMyw4IEBAIHZvaWQgUVF1aWNrV2lkZ2V0 UHJpdmF0ZTo6aW5pdChRUW1sRW5naW5lKiBlKQorICAgICBRX1EoUVF1aWNrV2lkZ2V0KTsKKyAK KyAgICAgcmVuZGVyQ29udHJvbCA9IG5ldyBRUXVpY2tXaWRnZXRSZW5kZXJDb250cm9sKHEpOwor LSAgICBvZmZzY3JlZW5XaW5kb3cgPSBuZXcgUVF1aWNrV2luZG93KCpuZXcgUVF1aWNrT2ZmY3Jl ZW5XaW5kb3dQcml2YXRlKCkscmVuZGVyQ29udHJvbCk7CistICAgIG9mZnNjcmVlbldpbmRvdy0+ c2V0VGl0bGUoUVN0cmluZzo6ZnJvbUxhdGluMSgiT2Zmc2NyZWVuIikpOworLSAgICBvZmZzY3Jl ZW5XaW5kb3ctPnNldE9iamVjdE5hbWUoUVN0cmluZzo6ZnJvbUxhdGluMSgiUVF1aWNrT2ZmU2Ny ZWVuV2luZG93IikpOworKyAgICBvZmZzY3JlZW5XaW5kb3cgPSBuZXcgUVF1aWNrV2lkZ2V0T2Zm c2NyZWVuV2luZG93KCpuZXcgUVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93UHJpdmF0ZSgpLCBy ZW5kZXJDb250cm9sKTsKKysgICAgb2Zmc2NyZWVuV2luZG93LT5zZXRTY3JlZW4ocS0+c2NyZWVu KCkpOworICAgICAvLyBEbyBub3QgY2FsbCBjcmVhdGUoKSBvbiBvZmZzY3JlZW5XaW5kb3cuCisg CisgICAgIC8vIENoZWNrIGlmIHRoZSBTb2Z0d2FyZSBBZGFwdGF0aW9uIGlzIGJlaW5nIHVzZWQK K0BAIC0xMzgsNiArMTQ1LDEwIEBAIHZvaWQgUVF1aWNrV2lkZ2V0UHJpdmF0ZTo6aW5pdChRUW1s RW5naW5lKiBlKQorICAgICBRV2lkZ2V0Ojpjb25uZWN0KG9mZnNjcmVlbldpbmRvdywgJlFRdWlj a1dpbmRvdzo6Zm9jdXNPYmplY3RDaGFuZ2VkLCBxLCAmUVF1aWNrV2lkZ2V0Ojpwcm9wYWdhdGVG b2N1c09iamVjdENoYW5nZWQpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KHJlbmRlckNvbnRyb2ws IFNJR05BTChyZW5kZXJSZXF1ZXN0ZWQoKSksIHEsIFNMT1QodHJpZ2dlclVwZGF0ZSgpKSk7Cisg ICAgIFFPYmplY3Q6OmNvbm5lY3QocmVuZGVyQ29udHJvbCwgU0lHTkFMKHNjZW5lQ2hhbmdlZCgp KSwgcSwgU0xPVCh0cmlnZ2VyVXBkYXRlKCkpKTsKKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2li aWxpdHkpCisrICAgIFFBY2Nlc3NpYmxlOjppbnN0YWxsRmFjdG9yeSgmcUFjY2Vzc2libGVRdWlj a1dpZGdldEZhY3RvcnkpOworKyNlbmRpZgorIH0KKyAKKyB2b2lkIFFRdWlja1dpZGdldFByaXZh dGU6OmVuc3VyZUVuZ2luZSgpIGNvbnN0CitAQCAtOTAxLDkgKzkxMiw3IEBAIHZvaWQgUVF1aWNr V2lkZ2V0UHJpdmF0ZTo6Y3JlYXRlQ29udGV4dCgpCisgCisgICAgICAgICBjb250ZXh0ID0gbmV3 IFFPcGVuR0xDb250ZXh0OworICAgICAgICAgY29udGV4dC0+c2V0Rm9ybWF0KG9mZnNjcmVlbldp bmRvdy0+cmVxdWVzdGVkRm9ybWF0KCkpOworLSAgICAgICAgY29uc3QgUVdpbmRvdyAqd2luID0g cS0+d2luZG93KCktPndpbmRvd0hhbmRsZSgpOworLSAgICAgICAgaWYgKHdpbiAmJiB3aW4tPnNj cmVlbigpKQorLSAgICAgICAgICAgIGNvbnRleHQtPnNldFNjcmVlbih3aW4tPnNjcmVlbigpKTsK KysgICAgICAgIGNvbnRleHQtPnNldFNjcmVlbihxLT5zY3JlZW4oKSk7CisgICAgICAgICBRT3Bl bkdMQ29udGV4dCAqc2hhcmVDb250ZXh0ID0gcXRfZ2xfZ2xvYmFsX3NoYXJlX2NvbnRleHQoKTsK KyAgICAgICAgIGlmICghc2hhcmVDb250ZXh0KQorICAgICAgICAgICAgIHNoYXJlQ29udGV4dCA9 IFFXaWRnZXRQcml2YXRlOjpnZXQocS0+d2luZG93KCkpLT5zaGFyZUNvbnRleHQoKTsKK0BAIC0x NTIwLDE5ICsxNTI5LDE2IEBAIGJvb2wgUVF1aWNrV2lkZ2V0OjpldmVudChRRXZlbnQgKmUpCisg ICAgICAgICBkLT5oYW5kbGVXaW5kb3dDaGFuZ2UoKTsKKyAgICAgICAgIGJyZWFrOworIAorLSAg ICBjYXNlIFFFdmVudDo6U2NyZWVuQ2hhbmdlSW50ZXJuYWw6CistICAgICAgICBpZiAoUVdpbmRv dyAqd2luZG93ID0gdGhpcy0+d2luZG93KCktPndpbmRvd0hhbmRsZSgpKSB7CistICAgICAgICAg ICAgUVNjcmVlbiAqbmV3U2NyZWVuID0gd2luZG93LT5zY3JlZW4oKTsKKy0KKy0gICAgICAgICAg ICBpZiAoZC0+b2Zmc2NyZWVuV2luZG93KQorLSAgICAgICAgICAgICAgICBkLT5vZmZzY3JlZW5X aW5kb3ctPnNldFNjcmVlbihuZXdTY3JlZW4pOworLSAgICAgICAgICAgIGlmIChkLT5vZmZzY3Jl ZW5TdXJmYWNlKQorLSAgICAgICAgICAgICAgICBkLT5vZmZzY3JlZW5TdXJmYWNlLT5zZXRTY3Jl ZW4obmV3U2NyZWVuKTsKKysgICAgY2FzZSBRRXZlbnQ6OlNjcmVlbkNoYW5nZUludGVybmFsOiB7 CisrICAgICAgICBRU2NyZWVuICpuZXdTY3JlZW4gPSBzY3JlZW4oKTsKKysgICAgICAgIGlmIChk LT5vZmZzY3JlZW5XaW5kb3cpCisrICAgICAgICAgICAgZC0+b2Zmc2NyZWVuV2luZG93LT5zZXRT Y3JlZW4obmV3U2NyZWVuKTsKKysgICAgICAgIGlmIChkLT5vZmZzY3JlZW5TdXJmYWNlKQorKyAg ICAgICAgICAgIGQtPm9mZnNjcmVlblN1cmZhY2UtPnNldFNjcmVlbihuZXdTY3JlZW4pOworICNp ZiBRVF9DT05GSUcob3BlbmdsKQorLSAgICAgICAgICAgIGlmIChkLT5jb250ZXh0KQorLSAgICAg ICAgICAgICAgICBkLT5jb250ZXh0LT5zZXRTY3JlZW4obmV3U2NyZWVuKTsKKysgICAgICAgIGlm IChkLT5jb250ZXh0KQorKyAgICAgICAgICAgIGQtPmNvbnRleHQtPnNldFNjcmVlbihuZXdTY3Jl ZW4pOworICNlbmRpZgorLSAgICAgICAgfQorIAorICAgICAgICAgaWYgKGQtPnVzZVNvZnR3YXJl UmVuZGVyZXIKKyAjaWYgUVRfQ09ORklHKG9wZW5nbCkKK0BAIC0xNTQ1LDcgKzE1NTEsNyBAQCBi b29sIFFRdWlja1dpZGdldDo6ZXZlbnQoUUV2ZW50ICplKQorICAgICAgICAgICAgIGQtPnJlbmRl cih0cnVlKTsKKyAgICAgICAgIH0KKyAgICAgICAgIGJyZWFrOworLQorKyAgICB9CisgICAgIGNh c2UgUUV2ZW50OjpTaG93OgorICAgICBjYXNlIFFFdmVudDo6TW92ZToKKyAgICAgICAgIGQtPnVw ZGF0ZVBvc2l0aW9uKCk7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRn ZXRzL3FxdWlja3dpZGdldF9wLmggYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1 aWNrd2lkZ2V0X3AuaAoraW5kZXggODgxZjdmOTIyMC4uMWE5NDZiY2M3MSAxMDA2NDQKKy0tLSBh L3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXRfcC5oCisrKysgYi9x dGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0X3AuaAorQEAgLTE0OCw2 ICsxNDgsMTQgQEAgcHVibGljOgorICAgICBib29sIGZvcmNlRnVsbFVwZGF0ZTsKKyB9OworIAor K2NsYXNzIFFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzogcHVibGljIFFRdWlja1dpbmRvdwor K3sKKysgICAgUV9PQkpFQ1QKKysKKytwdWJsaWM6CisrICAgIFFRdWlja1dpZGdldE9mZnNjcmVl bldpbmRvdyhRUXVpY2tXaW5kb3dQcml2YXRlICZkZCwgUVF1aWNrUmVuZGVyQ29udHJvbCAqY29u dHJvbCk7CisrfTsKKysKKyBRVF9FTkRfTkFNRVNQQUNFCisgCisgI2VuZGlmIC8vIFFRdWlja1dp ZGdldF9QX0gKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXVp Y2t3aWRnZXRzLnBybyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xdWlja3dpZGdl dHMucHJvCitpbmRleCAyNDM4ZTU3N2FlLi44NWQxNTZiOGEzIDEwMDY0NAorLS0tIGEvcXRkZWNs YXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3F1aWNrd2lkZ2V0cy5wcm8KKysrKyBiL3F0ZGVjbGFy YXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xdWlja3dpZGdldHMucHJvCitAQCAtNyw5ICs3LDEzIEBA IERFRklORVMgICArPSBRVF9OT19VUkxfQ0FTVF9GUk9NX1NUUklORyBRVF9OT19JTlRFR0VSX0VW RU5UX0NPT1JESU5BVEVTIFFUX05PX0ZPCisgSEVBREVSUyArPSBcCisgICAgIHFxdWlja3dpZGdl dC5oIFwKKyAgICAgcXF1aWNrd2lkZ2V0X3AuaCBcCistICAgIHF0cXVpY2t3aWRnZXRzZ2xvYmFs LmgKKysgICAgcXRxdWlja3dpZGdldHNnbG9iYWwuaCBcCisrICAgIHFhY2Nlc3NpYmxlcXVpY2t3 aWRnZXRfcC5oIFwKKysgICAgcWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnlfcC5oCisgCisg U09VUkNFUyArPSBcCistICAgIHFxdWlja3dpZGdldC5jcHAKKysgICAgcXF1aWNrd2lkZ2V0LmNw cCBcCisrICAgIHFhY2Nlc3NpYmxlcXVpY2t3aWRnZXQuY3BwIFwKKysgICAgcWFjY2Vzc2libGVx dWlja3dpZGdldGZhY3RvcnkuY3BwCisgCisgbG9hZChxdF9tb2R1bGUpCitkaWZmIC0tZ2l0IGEv cXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xanNlbmdpbmUvdHN0X3Fqc2VuZ2luZS5jcHAg Yi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3Fqc2VuZ2luZS90c3RfcWpzZW5naW5lLmNw cAoraW5kZXggM2I3ZDc0ZGY2My4uYjc1YmY4MjBkNSAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRp dmUvdGVzdHMvYXV0by9xbWwvcWpzZW5naW5lL3RzdF9xanNlbmdpbmUuY3BwCisrKysgYi9xdGRl Y2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3Fqc2VuZ2luZS90c3RfcWpzZW5naW5lLmNwcAorQEAg LTEwMiw2ICsxMDIsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHZhbHVlQ29udmVyc2lv bl9SZWd1bGFyRXhwcmVzc2lvbigpOworICAgICB2b2lkIGNhc3RXaXRoTXVsdGlwbGVJbmhlcml0 YW5jZSgpOworICAgICB2b2lkIGNvbGxlY3RHYXJiYWdlKCk7CisrICAgIHZvaWQgY29sbGVjdEdh cmJhZ2VOZXN0ZWRXcmFwcGVyc1R3b0VuZ2luZXMoKTsKKyAgICAgdm9pZCBnY1dpdGhOZXN0ZWRE YXRhU3RydWN0dXJlKCk7CisgICAgIHZvaWQgc3RhY2t0cmFjZSgpOworICAgICB2b2lkIG51bWJl clBhcnNpbmdfZGF0YSgpOworQEAgLTE4MDksNiArMTgxMCw0NCBAQCB2b2lkIHRzdF9RSlNFbmdp bmU6OmNvbGxlY3RHYXJiYWdlKCkKKyAgICAgUVZFUklGWShwdHIuaXNOdWxsKCkpOworIH0KKyAK KytjbGFzcyBUZXN0T2JqZWN0Q29udGFpbmVyIDogcHVibGljIFFPYmplY3QKKyt7CisrICAgIFFf T0JKRUNUCisrICAgIFFfUFJPUEVSVFkoUU9iamVjdCAqZHVtbXkgTUVNQkVSIG1fZHVtbXkgQ09O U1RBTlQpCisrCisrcHVibGljOgorKyAgICBUZXN0T2JqZWN0Q29udGFpbmVyKCkgOiBtX2R1bW15 KG5ldyBRT2JqZWN0KHRoaXMpKSB7fQorKworK3ByaXZhdGU6CisrICAgIFFPYmplY3QgKm1fZHVt bXk7CisrfTsKKysKKyt2b2lkIHRzdF9RSlNFbmdpbmU6OmNvbGxlY3RHYXJiYWdlTmVzdGVkV3Jh cHBlcnNUd29FbmdpbmVzKCkKKyt7CisrICAgIFFKU0VuZ2luZSBlbmdpbmUxOworKyAgICBRSlNF bmdpbmUgZW5naW5lMjsKKysKKysgICAgVGVzdE9iamVjdENvbnRhaW5lciBjb250YWluZXI7Cisr ICAgIFFRbWxFbmdpbmU6OnNldE9iamVjdE93bmVyc2hpcCgmY29udGFpbmVyLCBRUW1sRW5naW5l OjpDcHBPd25lcnNoaXApOworKworKyAgICBlbmdpbmUxLmdsb2JhbE9iamVjdCgpLnNldFByb3Bl cnR5KCJmb29iYXIiLCBlbmdpbmUxLm5ld1FPYmplY3QoJmNvbnRhaW5lcikpOworKyAgICBlbmdp bmUyLmdsb2JhbE9iamVjdCgpLnNldFByb3BlcnR5KCJmb29iYXIiLCBlbmdpbmUyLm5ld1FPYmpl Y3QoJmNvbnRhaW5lcikpOworKworKyAgICBlbmdpbmUxLmV2YWx1YXRlKCJmb29iYXIuZHVtbXku YmF6ID0gNDIiKTsKKysgICAgZW5naW5lMi5ldmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJheiA9IDQz Iik7CisrCisrICAgIFFDT01QQVJFKGVuZ2luZTEuZXZhbHVhdGUoImZvb2Jhci5kdW1teS5iYXoi KS50b0ludCgpLCA0Mik7CisrICAgIFFDT01QQVJFKGVuZ2luZTIuZXZhbHVhdGUoImZvb2Jhci5k dW1teS5iYXoiKS50b0ludCgpLCA0Myk7CisrCisrICAgIGVuZ2luZTEuY29sbGVjdEdhcmJhZ2Uo KTsKKysgICAgZW5naW5lMi5jb2xsZWN0R2FyYmFnZSgpOworKworKyAgICAvLyBUaGUgR0Mgc2hv dWxkIG5vdCBjb2xsZWN0IGR1bW15IG9iamVjdCB3cmFwcGVycyBuZWl0aGVyIGluIGVuZ2luZTEg bm9yIGVuZ2luZTIsIHdlCisrICAgIC8vIHZlcmlmeSB0aGF0IGJ5IGNoZWNraW5nIHdoZXRoZXIg dGhlIGJheiBwcm9wZXJ0eSBzdGlsbCBoYXMgaXRzIHByZXZpb3VzIHZhbHVlLgorKyAgICBRQ09N UEFSRShlbmdpbmUxLmV2YWx1YXRlKCJmb29iYXIuZHVtbXkuYmF6IikudG9JbnQoKSwgNDIpOwor KyAgICBRQ09NUEFSRShlbmdpbmUyLmV2YWx1YXRlKCJmb29iYXIuZHVtbXkuYmF6IikudG9JbnQo KSwgNDMpOworK30KKysKKyB2b2lkIHRzdF9RSlNFbmdpbmU6OmdjV2l0aE5lc3RlZERhdGFTdHJ1 Y3R1cmUoKQorIHsKKyAgICAgLy8gVGhlIEdDIG11c3QgYmUgYWJsZSB0byB0cmF2ZXJzZSBkZWVw bHkgbmVzdGVkIG9iamVjdHMsIG90aGVyd2lzZSB0aGlzCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJh dGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC9kYXRhL3JlZHJhd1Vwb25Db2x1 bW5DaGFuZ2UucW1sIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVt b2RlbC9kYXRhL3JlZHJhd1Vwb25Db2x1bW5DaGFuZ2UucW1sCituZXcgZmlsZSBtb2RlIDEwMDY0 NAoraW5kZXggMDAwMDAwMDAwMC4uMjA2MTMzYmIzOQorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRk ZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC9kYXRhL3JlZHJhd1Vw b25Db2x1bW5DaGFuZ2UucW1sCitAQCAtMCwwICsxLDExIEBACisraW1wb3J0IFF0UXVpY2sgMi44 CisrCisrTGlzdFZpZXcgeworKyAgICBpZDogcm9vdAorKyAgICB3aWR0aDogMjAwCisrICAgIGhl aWdodDogMjAwCisrCisrICAgIGRlbGVnYXRlOiBUZXh0IHsKKysgICAgICAgIHRleHQ6IGRpc3Bs YXkKKysgICAgfQorK30KK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1s L3FxbWxkZWxlZ2F0ZW1vZGVsL3RzdF9xcW1sZGVsZWdhdGVtb2RlbC5jcHAgYi9xdGRlY2xhcmF0 aXZlL3Rlc3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL3RzdF9xcW1sZGVsZWdhdGVtb2Rl bC5jcHAKK2luZGV4IDM1ZjFlMmM5NGQuLjE3MjI0NDc4MzAgMTAwNjQ0CistLS0gYS9xdGRlY2xh cmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3FxbWxkZWxlZ2F0ZW1vZGVsL3RzdF9xcW1sZGVsZWdhdGVt b2RlbC5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRl bW9kZWwvdHN0X3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcAorQEAgLTI3LDYgKzI3LDggQEAKKyAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLworIAorICNpbmNsdWRlIDxRdFRlc3QvcXRlc3QuaD4KKysjaW5jbHVk ZSA8UXRDb3JlL1FDb25jYXRlbmF0ZVRhYmxlc1Byb3h5TW9kZWw+CisrI2luY2x1ZGUgPFF0R3Vp L1FTdGFuZGFyZEl0ZW1Nb2RlbD4KKyAjaW5jbHVkZSA8UXRRbWwvcXFtbGNvbXBvbmVudC5oPgor ICNpbmNsdWRlIDxRdFFtbE1vZGVscy9wcml2YXRlL3FxbWxkZWxlZ2F0ZW1vZGVsX3AuaD4KKyAj aW5jbHVkZSA8UXRRdWljay9xcXVpY2t2aWV3Lmg+CitAQCAtNDcsNiArNDksNyBAQCBwcml2YXRl IHNsb3RzOgorICAgICB2b2lkIGZpbHRlck9uR3JvdXBfcmVtb3ZlV2hlbkNvbXBsZXRlZCgpOwor ICAgICB2b2lkIHF0YnVnXzg2MDE3KCk7CisgICAgIHZvaWQgY29udGV4dEFjY2Vzc2VkQnlIYW5k bGVyKCk7CisrICAgIHZvaWQgcmVkcmF3VXBvbkNvbHVtbkNoYW5nZSgpOworIH07CisgCisgY2xh c3MgQWJzdHJhY3RJdGVtTW9kZWwgOiBwdWJsaWMgUUFic3RyYWN0SXRlbU1vZGVsCitAQCAtMTg2 LDYgKzE4OSwzMCBAQCB2b2lkIHRzdF9RUW1sRGVsZWdhdGVNb2RlbDo6Y29udGV4dEFjY2Vzc2Vk QnlIYW5kbGVyKCkKKyAgICAgUVZFUklGWShyb290LT5wcm9wZXJ0eSgid29ya3MiKS50b0Jvb2wo KSk7CisgfQorIAorK3ZvaWQgdHN0X1FRbWxEZWxlZ2F0ZU1vZGVsOjpyZWRyYXdVcG9uQ29sdW1u Q2hhbmdlKCkKKyt7CisrICAgIFFTdGFuZGFyZEl0ZW1Nb2RlbCBtMTsKKysgICAgbTEuYXBwZW5k Um93KHsKKysgICAgICAgICAgICBuZXcgUVN0YW5kYXJkSXRlbSgiQmFuYW5hIiksCisrICAgICAg ICAgICAgbmV3IFFTdGFuZGFyZEl0ZW0oIkNvY29udXQiKSwKKysgICAgfSk7CisrCisrICAgIFFR dWlja1ZpZXcgdmlldyh0ZXN0RmlsZVVybCgicmVkcmF3VXBvbkNvbHVtbkNoYW5nZS5xbWwiKSk7 CisrICAgIFFDT01QQVJFKHZpZXcuc3RhdHVzKCksIFFRdWlja1ZpZXc6OlJlYWR5KTsKKysgICAg dmlldy5zaG93KCk7CisrICAgIFFRdWlja0l0ZW0gKnJvb3QgPSB2aWV3LnJvb3RPYmplY3QoKTsK KysgICAgcm9vdC0+c2V0UHJvcGVydHkoIm1vZGVsIiwgUVZhcmlhbnQ6OmZyb21WYWx1ZTxRT2Jq ZWN0ICo+KCZtMSkpOworKworKyAgICBRT2JqZWN0ICppdGVtID0gcm9vdC0+cHJvcGVydHkoImN1 cnJlbnRJdGVtIikudmFsdWU8UU9iamVjdCAqPigpOworKyAgICBRVkVSSUZZKGl0ZW0pOworKyAg ICBRQ09NUEFSRShpdGVtLT5wcm9wZXJ0eSgidGV4dCIpLnRvU3RyaW5nKCksICJCYW5hbmEiKTsK KysKKysgICAgUVZFUklGWShyb290KTsKKysgICAgbTEucmVtb3ZlQ29sdW1uKDApOworKworKyAg ICBRQ09NUEFSRShpdGVtLT5wcm9wZXJ0eSgidGV4dCIpLnRvU3RyaW5nKCksICJDb2NvbnV0Iik7 CisrfQorKworIFFURVNUX01BSU4odHN0X1FRbWxEZWxlZ2F0ZU1vZGVsKQorIAorICNpbmNsdWRl ICJ0c3RfcXFtbGRlbGVnYXRlbW9kZWwubW9jIgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUv dGVzdHMvYXV0by9xbWwvcXY0bW0vdHN0X3F2NG1tLmNwcCBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMv YXV0by9xbWwvcXY0bW0vdHN0X3F2NG1tLmNwcAoraW5kZXggNWQ2MzVhYTYzYi4uODI0ZmQ4OWU1 YiAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXY0bW0vdHN0X3F2 NG1tLmNwcAorKysrIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xdjRtbS90c3RfcXY0 bW0uY3BwCitAQCAtNzYsMTAgKzc2LDEwIEBAIHZvaWQgdHN0X3F2NG1tOjptdWx0aVdyYXBwZWRR T2JqZWN0cygpCisgICAgICAgICBRQ09NUEFSRShlbmdpbmUxLm1lbW9yeU1hbmFnZXItPm1fcGVu ZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVlLnNpemUoKSwgMSk7CisgICAgICAgICBRQ09NUEFS RShlbmdpbmUyLm1lbW9yeU1hbmFnZXItPm1fcGVuZGluZ0ZyZWVkT2JqZWN0V3JhcHBlclZhbHVl LnNpemUoKSwgMCk7CisgCistICAgICAgICAvLyBNb3ZlcyB0aGUgYWRkaXRpb25hbCBXZWFrVmFs dWUgZnJvbSBtX211bHRpcGx5V3JhcHBlZFFPYmplY3RzIHRvCistICAgICAgICAvLyBtX3BlbmRp bmdGcmVlZE9iamVjdFdyYXBwZXJWYWx1ZS4gSXQncyBzdGlsbCBhbGl2ZSBhZnRlciBhbGwuCisr ICAgICAgICAvLyBUaGUgYWRkaXRpb25hbCBXZWFrVmFsdWUgZnJvbSBtX211bHRpcGx5V3JhcHBl ZFFPYmplY3RzIGhhc24ndCBiZWVuIG1vdmVkCisrICAgICAgICAvLyB0byBtX3BlbmRpbmdGcmVl ZE9iamVjdFdyYXBwZXJWYWx1ZSB5ZXQuIEl0J3Mgc3RpbGwgYWxpdmUgYWZ0ZXIgYWxsLgorICAg ICAgICAgZW5naW5lMS5tZW1vcnlNYW5hZ2VyLT5ydW5HQygpOworLSAgICAgICAgUUNPTVBBUkUo ZW5naW5lMS5tZW1vcnlNYW5hZ2VyLT5tX3BlbmRpbmdGcmVlZE9iamVjdFdyYXBwZXJWYWx1ZS5z aXplKCksIDIpOworKyAgICAgICAgUUNPTVBBUkUoZW5naW5lMS5tZW1vcnlNYW5hZ2VyLT5tX3Bl bmRpbmdGcmVlZE9iamVjdFdyYXBwZXJWYWx1ZS5zaXplKCksIDEpOworIAorICAgICAgICAgLy8g ZW5naW5lMiBkb2Vzbid0IG93biB0aGUgb2JqZWN0IGFzIGVuZ2luZTEgd2FzIHRoZSBmaXJzdCB0 byB3cmFwIGl0IGFib3ZlLgorICAgICAgICAgLy8gVGhlcmVmb3JlLCBubyBlZmZlY3QgaGVyZS4K K2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNraXRlbTIv ZGF0YS9hY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcDMucW1sIGIvcXRkZWNsYXJhdGl2ZS90 ZXN0cy9hdXRvL3F1aWNrL3FxdWlja2l0ZW0yL2RhdGEvYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0 ZUxvb3AzLnFtbAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjg4OWU0 ODBmM2IKKy0tLSAvZGV2L251bGwKKysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xdWlj ay9xcXVpY2tpdGVtMi9kYXRhL2FjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wMy5xbWwKK0BA IC0wLDAgKzEsMTMgQEAKKytpbXBvcnQgUXRRdWljayAyLjYKKysKKytJdGVtIHsKKysgICAgdmlz aWJsZTogdHJ1ZQorKyAgICBJdGVtIHsKKysgICAgICAgIHZpc2libGU6IGZhbHNlCisrICAgICAg ICBJdGVtIHsKKysgICAgICAgICAgICBvYmplY3ROYW1lOiAiaGlkZGVuQ2hpbGQiCisrICAgICAg ICAgICAgYWN0aXZlRm9jdXNPblRhYjogdHJ1ZQorKyAgICAgICAgICAgIGZvY3VzOiB0cnVlCisr ICAgICAgICB9CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9h dXRvL3F1aWNrL3FxdWlja2l0ZW0yL3RzdF9xcXVpY2tpdGVtLmNwcCBiL3F0ZGVjbGFyYXRpdmUv dGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi90c3RfcXF1aWNraXRlbS5jcHAKK2luZGV4IGM4 ZjI1MWRiZTEuLmM4ZWYzNmVlNjggMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1 dG8vcXVpY2svcXF1aWNraXRlbTIvdHN0X3FxdWlja2l0ZW0uY3BwCisrKysgYi9xdGRlY2xhcmF0 aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNraXRlbTIvdHN0X3FxdWlja2l0ZW0uY3BwCitAQCAt NjcsNiArNjcsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIGFjdGl2ZUZvY3VzT25UYWIx MCgpOworICAgICB2b2lkIGFjdGl2ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wX2RhdGEoKTsKKyAg ICAgdm9pZCBhY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcCgpOworKyAgICB2b2lkIGFjdGl2 ZUZvY3VzT25UYWJfaW5maW5pdGVMb29wQ29udHJvbHMoKTsKKyAKKyAgICAgdm9pZCBuZXh0SXRl bUluRm9jdXNDaGFpbigpOworICAgICB2b2lkIG5leHRJdGVtSW5Gb2N1c0NoYWluMigpOworQEAg LTEwNTcsNiArMTA1OCwxNyBAQCB2b2lkIHRzdF9RUXVpY2tJdGVtOjphY3RpdmVGb2N1c09uVGFi X2luZmluaXRlTG9vcCgpCisgICAgIFFDT01QQVJFKGl0ZW0sIHdpbmRvdy0+cm9vdE9iamVjdCgp KTsKKyB9CisgCisrCisrdm9pZCB0c3RfUVF1aWNrSXRlbTo6YWN0aXZlRm9jdXNPblRhYl9pbmZp bml0ZUxvb3BDb250cm9scygpCisreworKyAgICBhdXRvIHNvdXJjZSA9IHRlc3RGaWxlVXJsKCJh Y3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcDMucW1sIik7CisrICAgIFFTY29wZWRQb2ludGVy PFFRdWlja1ZpZXc+d2luZG93KG5ldyBRUXVpY2tWaWV3KCkpOworKyAgICB3aW5kb3ctPnNldFNv dXJjZShzb3VyY2UpOworKyAgICB3aW5kb3ctPnNob3coKTsKKysgICAgUVZFUklGWSh3aW5kb3ct PmVycm9ycygpLmlzRW1wdHkoKSk7CisrICAgIFFUZXN0OjprZXlDbGljayh3aW5kb3cuZ2V0KCks IFF0OjpLZXlfVGFiKTsgLy8gc2hvdWxkIG5vdCBoYW5nCisrfQorKworIHZvaWQgdHN0X1FRdWlj a0l0ZW06Om5leHRJdGVtSW5Gb2N1c0NoYWluKCkKKyB7CisgICAgIGlmICghcXRfdGFiX2FsbF93 aWRnZXRzKCkpCitTdWJtb2R1bGUgcXRkb2MgYzBjN2JmMDcuLi43OWQ2ZWY2OToKK1N1Ym1vZHVs ZSBxdGltYWdlZm9ybWF0cyAyZGNmMjg5OS4uYWJlNDRjMGY6CitkaWZmIC0tZ2l0IGEvcXRpbWFn ZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2ljbnMvcWljbnNoYW5kbGVyLmNwcCBi L3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9pY25zL3FpY25zaGFuZGxl ci5jcHAKK2luZGV4IGRkZTc4M2MuLjFiZjkwNzQgMTAwNjQ0CistLS0gYS9xdGltYWdlZm9ybWF0 cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvaWNucy9xaWNuc2hhbmRsZXIuY3BwCisrKysgYi9x dGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvaWNucy9xaWNuc2hhbmRsZXIu Y3BwCitAQCAtNDYyLDggKzQ2MiwxMiBAQCBzdGF0aWMgYm9vbCBwYXJzZUljb25FbnRyeUluZm8o SUNOU0VudHJ5ICZpY29uKQorICAgICBpZiAoaXNJY29uQ29tcHJlc3NlZChpY29uKSkKKyAgICAg ICAgIHJldHVybiB0cnVlOworICAgICAvLyBJY29uIGRlcHRoOgorLSAgICBpZiAoIWRlcHRoLmlz RW1wdHkoKSkKKy0gICAgICAgIGljb24uZGVwdGggPSBJQ05TRW50cnk6OkRlcHRoKGRlcHRoLnRv VUludCgpKTsKKysgICAgaWYgKCFkZXB0aC5pc0VtcHR5KCkpIHsKKysgICAgICAgIGNvbnN0IHVp bnQgZGVwdGhVSW50ID0gZGVwdGgudG9VSW50KCk7CisrICAgICAgICBpZiAoZGVwdGhVSW50ID4g MzIpCisrICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICAgICAgaWNvbi5kZXB0aCA9IElD TlNFbnRyeTo6RGVwdGgoZGVwdGhVSW50KTsKKysgICAgfQorICAgICAvLyBUcnkgbW9ubyBpZiBk ZXB0aCBub3QgZm91bmQKKyAgICAgaWYgKGljb24uZGVwdGggPT0gSUNOU0VudHJ5OjpEZXB0aFVu a25vd24pCisgICAgICAgICBpY29uLmRlcHRoID0gSUNOU0VudHJ5OjpEZXB0aE1vbm87CitAQCAt NTE1LDYgKzUxOSw5IEBAIHN0YXRpYyBib29sIHBhcnNlSWNvbkVudHJ5SW5mbyhJQ05TRW50cnkg Jmljb24pCisgICAgICAgICB9CisgICAgICAgICBpY29uLmhlaWdodCA9IGljb24ud2lkdGg7Cisg ICAgIH0KKysgICAgLy8gU2FuaXR5IGNoZWNrCisrICAgIGlmIChpY29uLndpZHRoID09IDAgfHwg aWNvbi53aWR0aCA+IDQwOTYpCisrICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIHJldHVybiB0 cnVlOworIH0KKyAKK0BAIC02ODUsNyArNjkyLDcgQEAgYm9vbCBRSUNOU0hhbmRsZXI6OmNhblJl YWQoKSBjb25zdAorIGJvb2wgUUlDTlNIYW5kbGVyOjpyZWFkKFFJbWFnZSAqb3V0SW1hZ2UpCisg eworICAgICBRSW1hZ2UgaW1nOworLSAgICBpZiAoIWVuc3VyZVNjYW5uZWQoKSkgeworKyAgICBp ZiAoIWVuc3VyZVNjYW5uZWQoKSB8fCBtX2N1cnJlbnRJY29uSW5kZXggPj0gbV9pY29ucy5zaXpl KCkpIHsKKyAgICAgICAgIHFXYXJuaW5nKCJRSUNOU0hhbmRsZXI6OnJlYWQoKTogVGhlIGRldmlj ZSB3YXNuJ3QgcGFyc2VkIHByb3Blcmx5ISIpOworICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg ICB9CitAQCAtODkyLDcgKzg5OSw3IEBAIGJvb2wgUUlDTlNIYW5kbGVyOjpzY2FuRGV2aWNlKCkK KyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgCisgICAgICAgICBjb25zdCBxaW50NjQgYmxv Y2tEYXRhT2Zmc2V0ID0gZGV2aWNlKCktPnBvcygpOworLSAgICAgICAgaWYgKCFpc0Jsb2NrSGVh ZGVyVmFsaWQoYmxvY2tIZWFkZXIpKSB7CisrICAgICAgICBpZiAoIWlzQmxvY2tIZWFkZXJWYWxp ZChibG9ja0hlYWRlciwgSUNOU0Jsb2NrSGVhZGVyU2l6ZSArIGZpbGVsZW5ndGggLSBibG9ja0Rh dGFPZmZzZXQpKSB7CisgICAgICAgICAgICAgcVdhcm5pbmcoIlFJQ05TSGFuZGxlcjo6c2NhbkRl dmljZSgpOiBGYWlsZWQsIGJhZCBoZWFkZXIgYXQgcG9zICVzLiBPU1R5cGUgXCIlc1wiLCBsZW5n dGggJXUiLAorICAgICAgICAgICAgICAgICAgICAgIFFCeXRlQXJyYXk6Om51bWJlcihibG9ja0Rh dGFPZmZzZXQpLmNvbnN0RGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgIG5hbWVGcm9tT1NU eXBlKGJsb2NrSGVhZGVyLm9zdHlwZSkuY29uc3REYXRhKCksIGJsb2NrSGVhZGVyLmxlbmd0aCk7 CitAQCAtOTI3LDExICs5MzQsMTQgQEAgYm9vbCBRSUNOU0hhbmRsZXI6OnNjYW5EZXZpY2UoKQor ICAgICAgICAgY2FzZSBJQ05TQmxvY2tIZWFkZXI6OlR5cGVPZHJwOgorICAgICAgICAgICAgIC8v IEljbnMgY29udGFpbmVyIHNlZW1zIHRvIGhhdmUgYW4gZW1iZWRkZWQgaWNvbiB2YXJpYW50IGNv bnRhaW5lcgorICAgICAgICAgICAgIC8vIExldCdzIHN0YXJ0IGEgc2NhbiBmb3IgZW50cmllcwor LSAgICAgICAgICAgIHdoaWxlIChkZXZpY2UoKS0+cG9zKCkgPCBuZXh0QmxvY2tPZmZzZXQpIHsK KysgICAgICAgICAgICB3aGlsZSAoIXN0cmVhbS5hdEVuZCgpICYmIGRldmljZSgpLT5wb3MoKSA8 IG5leHRCbG9ja09mZnNldCkgeworICAgICAgICAgICAgICAgICBJQ05TQmxvY2tIZWFkZXIgaWNv bjsKKyAgICAgICAgICAgICAgICAgc3RyZWFtID4+IGljb247CisrICAgICAgICAgICAgICAgIGlm IChzdHJlYW0uc3RhdHVzKCkgIT0gUURhdGFTdHJlYW06Ok9rKQorKyAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgaW5jb3JyZWN0 IHZhcmlhbnQgZW50cnkgaGVhZGVyIGFuZCBzdG9wIHNjYW4KKy0gICAgICAgICAgICAgICAgaWYg KCFpc0Jsb2NrSGVhZGVyVmFsaWQoaWNvbiwgYmxvY2tEYXRhTGVuZ3RoKSkKKysgICAgICAgICAg ICAgICAgcXVpbnQ2NCByZW1haW5pbmcgPSBibG9ja0RhdGFMZW5ndGggLSAoZGV2aWNlKCktPnBv cygpIC0gYmxvY2tEYXRhT2Zmc2V0KTsKKysgICAgICAgICAgICAgICAgaWYgKCFpc0Jsb2NrSGVh ZGVyVmFsaWQoaWNvbiwgSUNOU0Jsb2NrSGVhZGVyU2l6ZSArIHJlbWFpbmluZykpCisgICAgICAg ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgaWYgKCFhZGRFbnRyeShpY29u LCBkZXZpY2UoKS0+cG9zKCksIGJsb2NrSGVhZGVyLm9zdHlwZSkpCisgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gZmFsc2U7CitAQCAtMTAwMyw3ICsxMDEzLDcgQEAgYm9vbCBRSUNOU0hhbmRs ZXI6OnNjYW5EZXZpY2UoKQorICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorICAgICB9 CistICAgIHJldHVybiB0cnVlOworKyAgICByZXR1cm4gKG1faWNvbnMuc2l6ZSgpID4gMCk7Cisg fQorIAorIGNvbnN0IElDTlNFbnRyeSAmUUlDTlNIYW5kbGVyOjpnZXRJY29uTWFzayhjb25zdCBJ Q05TRW50cnkgJmljb24pIGNvbnN0CitkaWZmIC0tZ2l0IGEvcXRpbWFnZWZvcm1hdHMvc3JjL3Bs dWdpbnMvaW1hZ2Vmb3JtYXRzL2pwMi9xanAyaGFuZGxlci5jcHAgYi9xdGltYWdlZm9ybWF0cy9z cmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvanAyL3FqcDJoYW5kbGVyLmNwcAoraW5kZXggNTA4MjAy My4uY2IzNDM3NCAxMDA2NDQKKy0tLSBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdl Zm9ybWF0cy9qcDIvcWpwMmhhbmRsZXIuY3BwCisrKysgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1 Z2lucy9pbWFnZWZvcm1hdHMvanAyL3FqcDJoYW5kbGVyLmNwcAorQEAgLTQzLDYgKzQzLDcgQEAK KyAjaW5jbHVkZSAicWltYWdlLmgiCisgI2luY2x1ZGUgInF2YXJpYW50LmgiCisgI2luY2x1ZGUg InFjb2xvci5oIgorKyNpbmNsdWRlICJxaW1hZ2VyZWFkZXIuaCIKKyAKKyAjaW5jbHVkZSA8amFz cGVyL2phc3Blci5oPgorICNpbmNsdWRlIDxtYXRoLmg+IC8vIGZvciBwb3cKK0BAIC0zMzMsMTYg KzMzNCw0NiBAQCBwcml2YXRlOgorIEpwZWcyMDAwSmFzcGVyUmVhZGVyOjpKcGVnMjAwMEphc3Bl clJlYWRlcihRSU9EZXZpY2UgKmlvZCwgU3ViRm9ybWF0IGZvcm1hdCkKKyAgICAgOiBqYXNwZXJP ayh0cnVlKSwgaW9EZXZpY2UoaW9kKSwgZm9ybWF0KGZvcm1hdCksIGhhc0FscGhhKGZhbHNlKQor IHsKKysjaWYgSkFTX1ZFUlNJT05fTUFKT1IgPCAzCisgICAgIGlmIChqYXNfaW5pdCgpKSB7Cisg ICAgICAgICBqYXNwZXJPayA9IGZhbHNlOworICAgICAgICAgcURlYnVnKCJKYXNwZXIgTGlicmFy eSBpbml0aWFsaXphdGlvbiBmYWlsZWQiKTsKKyAgICAgfQorKyNlbHNlCisrICAgIGphc19jb25m X2NsZWFyKCk7CisrI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg2LCAwLCAwKQor KyAgICBqYXNfY29uZl9zZXRfbWF4X21lbV91c2FnZShRSW1hZ2VSZWFkZXI6OmFsbG9jYXRpb25M aW1pdCgpICogMTAyNCAqIDEwMjQpOworKyNlbHNlCisrICAgIC8vIDEyOE1CIHNlZW1zIHRvIGJl IGVub3VnaC4KKysgICAgamFzX2NvbmZfc2V0X21heF9tZW1fdXNhZ2UoMTI4ICogMTAyNCAqIDEw MjQpOworKyNlbmRpZgorKyAgICBpZiAoamFzX2luaXRfbGlicmFyeSgpKSB7CisrICAgICAgICBq YXNwZXJPayA9IGZhbHNlOworKyAgICAgICAgcURlYnVnKCJKYXNwZXIgbGlicmFyeSBpbml0aWFs aXphdGlvbiBmYWlsZWQiKTsKKysgICAgfQorKyAgICBpZiAoamFzX2luaXRfdGhyZWFkKCkpIHsK KysgICAgICAgIGphc19jbGVhbnVwX2xpYnJhcnkoKTsKKysgICAgICAgIGphc3Blck9rID0gZmFs c2U7CisrICAgICAgICBxRGVidWcoIkphc3BlciB0aHJlYWQgaW5pdGlhbGl6YXRpb24gZmFpbGVk Iik7CisrICAgIH0KKysjZW5kaWYKKyB9CisgCisgSnBlZzIwMDBKYXNwZXJSZWFkZXI6On5KcGVn MjAwMEphc3BlclJlYWRlcigpCisgeworKyNpZiBKQVNfVkVSU0lPTl9NQUpPUiA8IDMKKyAgICAg aWYgKGphc3Blck9rKQorICAgICAgICAgamFzX2NsZWFudXAoKTsKKysjZWxzZQorKyAgICBpZiAo amFzcGVyT2spIHsKKysgICAgICAgIGlmIChqYXNfY2xlYW51cF90aHJlYWQoKSkgeworKyAgICAg ICAgICAgIHFEZWJ1ZygiSmFzcGVyIHRocmVhZCBjbGVhbnVwIGZhaWxlZCIpOworKyAgICAgICAg fQorKyAgICAgICAgaWYgKGphc19jbGVhbnVwX2xpYnJhcnkoKSkgeworKyAgICAgICAgICAgIHFE ZWJ1ZygiSmFzcGVyIGxpYnJhcnkgY2xlYW51cCBmYWlsZWQiKTsKKysgICAgICAgIH0KKysgICAg fQorKyNlbmRpZgorIH0KKyAKKyAvKiEgXGludGVybmFsCitAQCAtODU3LDcgKzg4OCw3IEBAIGJv b2wgSnBlZzIwMDBKYXNwZXJSZWFkZXI6OndyaXRlKGNvbnN0IFFJbWFnZSAmaW1hZ2UsIGludCBx dWFsaXR5KQorICAgICB9CisgCisgICAgIC8vIE9wZW4gYW4gZW1wdHkgamFzcGVyIHN0cmVhbSB0 aGF0IGdyb3dzIGF1dG9tYXRpY2FsbHkKKy0gICAgamFzX3N0cmVhbV90ICogbWVtb3J5X3N0cmVh bSA9IGphc19zdHJlYW1fbWVtb3BlbigwLCAtMSk7CisrICAgIGphc19zdHJlYW1fdCAqIG1lbW9y eV9zdHJlYW0gPSBqYXNfc3RyZWFtX21lbW9wZW4oMCwgMCk7CisgCisgICAgIC8vIEphc3BlciB3 YW50cyBhIG5vbi1jb25zdCBzdHJpbmcuCisgICAgIGNoYXIgKnN0ciA9IHFzdHJkdXAoamFzcGVy Rm9ybWF0U3RyaW5nLnRvTGF0aW4xKCkuY29uc3REYXRhKCkpOworZGlmZiAtLWdpdCBhL3F0aW1h Z2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy90aWZmL3F0aWZmaGFuZGxlci5jcHAg Yi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvdGlmZi9xdGlmZmhhbmRs ZXIuY3BwCitpbmRleCAxMzg2NzUwLi5hYzg5NTZjIDEwMDY0NAorLS0tIGEvcXRpbWFnZWZvcm1h dHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3RpZmYvcXRpZmZoYW5kbGVyLmNwcAorKysrIGIv cXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3RpZmYvcXRpZmZoYW5kbGVy LmNwcAorQEAgLTM2MSw2ICszNjEsOCBAQCBib29sIFFUaWZmSGFuZGxlcjo6cmVhZChRSW1hZ2Ug KmltYWdlKQorICAgICB9CisgCisgICAgIFRJRkYgKmNvbnN0IHRpZmYgPSBkLT50aWZmOworKyAg ICBpZiAoVElGRklzVGlsZWQodGlmZikgJiYgVElGRlRpbGVTaXplNjQodGlmZikgPiB1aW50NjRf dChpbWFnZS0+c2l6ZUluQnl0ZXMoKSkpIC8vIENvcnJ1cHQgaW1hZ2UKKysgICAgICAgIHJldHVy biBmYWxzZTsKKyAgICAgY29uc3QgcXVpbnQzMiB3aWR0aCA9IGQtPnNpemUud2lkdGgoKTsKKyAg ICAgY29uc3QgcXVpbnQzMiBoZWlnaHQgPSBkLT5zaXplLmhlaWdodCgpOworIAorZGlmZiAtLWdp dCBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy93ZWJwL3F3ZWJwaGFu ZGxlci5jcHAgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvd2VicC9x d2VicGhhbmRsZXIuY3BwCitpbmRleCA4MmQzOGNiLi5kMDJlYjA1IDEwMDY0NAorLS0tIGEvcXRp bWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3dlYnAvcXdlYnBoYW5kbGVyLmNw cAorKysrIGIvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3dlYnAvcXdl YnBoYW5kbGVyLmNwcAorQEAgLTQ1LDYgKzQ1LDcgQEAKKyAjaW5jbHVkZSA8cWRlYnVnLmg+Cisg I2luY2x1ZGUgPHFwYWludGVyLmg+CisgI2luY2x1ZGUgPHF2YXJpYW50Lmg+CisrI2luY2x1ZGUg PFF0RW5kaWFuPgorIAorIHN0YXRpYyBjb25zdCBpbnQgcmlmZkhlYWRlclNpemUgPSAxMjsgLy8g UklGRl9IRUFERVJfU0laRSBmcm9tIHdlYnAvZm9ybWF0X2NvbnN0YW50cy5oCisgCitAQCAtMTAy LDIxICsxMDMsMjMgQEAgYm9vbCBRV2VicEhhbmRsZXI6OmVuc3VyZVNjYW5uZWQoKSBjb25zdAor IAorICAgICBtX3NjYW5TdGF0ZSA9IFNjYW5FcnJvcjsKKyAKKy0gICAgaWYgKGRldmljZSgpLT5p c1NlcXVlbnRpYWwoKSkgeworLSAgICAgICAgcVdhcm5pbmcoKSA8PCAiU2VxdWVudGlhbCBkZXZp Y2VzIGFyZSBub3Qgc3VwcG9ydGVkIjsKKysgICAgUVdlYnBIYW5kbGVyICp0aGF0ID0gY29uc3Rf Y2FzdDxRV2VicEhhbmRsZXIgKj4odGhpcyk7CisrICAgIGNvbnN0IGludCBoZWFkZXJCeXRlc05l ZWRlZCA9IHNpemVvZihXZWJQQml0c3RyZWFtRmVhdHVyZXMpOworKyAgICBRQnl0ZUFycmF5IGhl YWRlciA9IGRldmljZSgpLT5wZWVrKGhlYWRlckJ5dGVzTmVlZGVkKTsKKysgICAgaWYgKGhlYWRl ci5zaXplKCkgPCBoZWFkZXJCeXRlc05lZWRlZCkKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKy0g ICAgfQorIAorLSAgICBxaW50NjQgb2xkUG9zID0gZGV2aWNlKCktPnBvcygpOworLSAgICBkZXZp Y2UoKS0+c2VlaygwKTsKKy0KKy0gICAgUVdlYnBIYW5kbGVyICp0aGF0ID0gY29uc3RfY2FzdDxR V2VicEhhbmRsZXIgKj4odGhpcyk7CistICAgIFFCeXRlQXJyYXkgaGVhZGVyID0gZGV2aWNlKCkt PnBlZWsoc2l6ZW9mKFdlYlBCaXRzdHJlYW1GZWF0dXJlcykpOworKyAgICAvLyBXZSBkbyBubyBy YW5kb20gYWNjZXNzIGR1cmluZyBkZWNvZGluZywganVzdCBhIHJlYWRBbGwoKSBvZiB0aGUgd2hv bGUgaW1hZ2UgZmlsZS4gU28gaWYKKysgICAgLy8gaWYgaXQgaXMgYWxsIGF2YWlsYWJsZSBhbHJl YWR5LCB3ZSBjYW4gYWNjZXB0IGEgc2VxdWVudGlhbCBkZXZpY2UuIFRoZSByaWZmIGhlYWRlciBj b250YWlucworKyAgICAvLyB0aGUgZmlsZSBzaXplIG1pbnVzIDggYnl0ZXMgaGVhZGVyCisrICAg IHFpbnQ2NCBieXRlU2l6ZSA9IHFGcm9tTGl0dGxlRW5kaWFuPHF1aW50MzI+KGhlYWRlci5jb25z dERhdGEoKSArIDQpOworKyAgICBpZiAoZGV2aWNlKCktPmlzU2VxdWVudGlhbCgpICYmIGRldmlj ZSgpLT5ieXRlc0F2YWlsYWJsZSgpIDwgYnl0ZVNpemUgKyA4KSB7CisrICAgICAgICBxV2Fybmlu ZygpIDw8ICJRV2VicEhhbmRsZXI6IEluc3VmZmljaWVudCBkYXRhIGF2YWlsYWJsZSBpbiBzZXF1 ZW50aWFsIGRldmljZSI7CisrICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgIH0KKyAgICAgaWYg KFdlYlBHZXRGZWF0dXJlcygoY29uc3QgdWludDhfdCopaGVhZGVyLmNvbnN0RGF0YSgpLCBoZWFk ZXIuc2l6ZSgpLCAmKHRoYXQtPm1fZmVhdHVyZXMpKSA9PSBWUDhfU1RBVFVTX09LKSB7CisgICAg ICAgICBpZiAobV9mZWF0dXJlcy5oYXNfYW5pbWF0aW9uKSB7CisgICAgICAgICAgICAgLy8gRm9y IGFuaW1hdGlvbiwgd2UgaGF2ZSB0byByZWFkIGFuZCBzY2FuIHdob2xlIGZpbGUgdG8gZGV0ZXJt aW5lIGxvb3AgY291bnQgYW5kIGltYWdlcyBjb3VudAorLSAgICAgICAgICAgIGRldmljZSgpLT5z ZWVrKG9sZFBvcyk7CistCisgICAgICAgICAgICAgaWYgKHRoYXQtPmVuc3VyZURlbXV4ZXIoKSkg eworICAgICAgICAgICAgICAgICB0aGF0LT5tX2xvb3AgPSBXZWJQRGVtdXhHZXRJKG1fZGVtdXhl ciwgV0VCUF9GRl9MT09QX0NPVU5UKTsKKyAgICAgICAgICAgICAgICAgdGhhdC0+bV9mcmFtZUNv dW50ID0gV2ViUERlbXV4R2V0SShtX2RlbXV4ZXIsIFdFQlBfRkZfRlJBTUVfQ09VTlQpOworQEAg LTEyNiwxNyArMTI5LDEzIEBAIGJvb2wgUVdlYnBIYW5kbGVyOjplbnN1cmVTY2FubmVkKCkgY29u c3QKKyAgICAgICAgICAgICAgICAgaWYgKHRoYXQtPm1fZmVhdHVyZXMuaGFzX2FscGhhKQorICAg ICAgICAgICAgICAgICAgICAgdGhhdC0+bV9jb21wb3NpdGVkLT5maWxsKFF0Ojp0cmFuc3BhcmVu dCk7CisgCistICAgICAgICAgICAgICAgIC8vIFdlIGRvIG5vdCByZXNldCBkZXZpY2UgcG9zaXRp b24gc2luY2Ugd2UgaGF2ZSByZWFkIGluIGFsbCBkYXRhCisgICAgICAgICAgICAgICAgIG1fc2Nh blN0YXRlID0gU2NhblN1Y2Nlc3M7CistICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg ICAgICAgICAgIH0KKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgbV9zY2FuU3RhdGUg PSBTY2FuU3VjY2VzczsKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgICBkZXZpY2UoKS0+c2Vl ayhvbGRQb3MpOworLQorICAgICByZXR1cm4gbV9zY2FuU3RhdGUgPT0gU2NhblN1Y2Nlc3M7Cisg fQorIAorQEAgLTE1OSw3ICsxNTgsNyBAQCBib29sIFFXZWJwSGFuZGxlcjo6ZW5zdXJlRGVtdXhl cigpCisgCisgYm9vbCBRV2VicEhhbmRsZXI6OnJlYWQoUUltYWdlICppbWFnZSkKKyB7CistICAg IGlmICghZW5zdXJlU2Nhbm5lZCgpIHx8IGRldmljZSgpLT5pc1NlcXVlbnRpYWwoKSB8fCAhZW5z dXJlRGVtdXhlcigpKQorKyAgICBpZiAoIWVuc3VyZVNjYW5uZWQoKSB8fCAhZW5zdXJlRGVtdXhl cigpKQorICAgICAgICAgcmV0dXJuIGZhbHNlOworIAorICAgICBRUmVjdCBwcmV2RnJhbWVSZWN0 OworU3VibW9kdWxlIHF0bG9jYXRpb24gOThhNWM1MTEuLmY5OTFlMjhjOgorZGlmZiAtLWdpdCBh L3F0bG9jYXRpb24vc3JjL2xvY2F0aW9uL2NvbmZpZ3VyZS5qc29uIGIvcXRsb2NhdGlvbi9zcmMv bG9jYXRpb24vY29uZmlndXJlLmpzb24KK2luZGV4IDZkMDFhOWEzLi5kMWU2MjNhMSAxMDA2NDQK Ky0tLSBhL3F0bG9jYXRpb24vc3JjL2xvY2F0aW9uL2NvbmZpZ3VyZS5qc29uCisrKysgYi9xdGxv Y2F0aW9uL3NyYy9sb2NhdGlvbi9jb25maWd1cmUuanNvbgorQEAgLTksNyArOSw3IEBACisgICAg ICAgICAgICAgImxhYmVsIjogIlF0LmxhYnMubG9jYXRpb24gZXhwZXJpbWVudGFsIFFNTCBwbHVn aW4iLAorICAgICAgICAgICAgICJwdXJwb3NlIjogIlByb3ZpZGVzIGV4cGVyaW1lbnRhbCBRdExv Y2F0aW9uIFFNTCB0eXBlcyIsCisgICAgICAgICAgICAgInNlY3Rpb24iOiAiTG9jYXRpb24iLAor LSAgICAgICAgICAgICJjb25kaXRpb24iOiAiY29uZmlnLm9wZW5nbCIsCisrICAgICAgICAgICAg ImNvbmRpdGlvbiI6ICJmZWF0dXJlcy5vcGVuZ2wiLAorICAgICAgICAgICAgICJvdXRwdXQiOiBb ICJwcml2YXRlRmVhdHVyZSIgXQorICAgICAgICAgfSwKKyAgICAgICAgICJnZW9zZXJ2aWNlc19v c20iOiB7CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vbGFicy9xc2cvcWdl b21hcG9iamVjdHFzZ3N1cHBvcnQuY3BwIGIvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vbGFicy9x c2cvcWdlb21hcG9iamVjdHFzZ3N1cHBvcnQuY3BwCitpbmRleCBhOTc4NTczZC4uMTFlMTQ2NmYg MTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9sYWJzL3FzZy9xZ2VvbWFwb2Jq ZWN0cXNnc3VwcG9ydC5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL2xvY2F0aW9uL2xhYnMvcXNn L3FnZW9tYXBvYmplY3Rxc2dzdXBwb3J0LmNwcAorQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIFFH ZW9NYXBPYmplY3RRU0dTdXBwb3J0Ojp1cGRhdGVNYXBPYmplY3RzKFFTR05vZGUgKnJvb3QsIFFR dWlja1dpbmRvdyAqd2luZAorICAgICBpZiAoIXJvb3QpCisgICAgICAgICByZXR1cm47CisgCist ICAgIGlmIChtX21hcE9iamVjdHNSb290Tm9kZSAmJiBtX21hcE9iamVjdHNSb290Tm9kZS0+cGFy ZW50KCkpCisrICAgIGlmIChtX21hcE9iamVjdHNSb290Tm9kZSAmJiAhbV9tYXBPYmplY3RzUm9v dE5vZGUtPnBhcmVudCgpKQorICAgICAgICAgcm9vdC0+YXBwZW5kQ2hpbGROb2RlKG1fbWFwT2Jq ZWN0c1Jvb3ROb2RlLmdldCgpKTsKKyAKKyAgICAgaWYgKCFtX21hcE9iamVjdHNSb290Tm9kZSkg eworZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9n ZW9jb2RpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9n ZW9zZXJ2aWNlcy9lc3JpL2dlb2NvZGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK2luZGV4IDVh NDA0NjdlLi5kMTIzYzZhOCAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vv c2VydmljZXMvZXNyaS9nZW9jb2RpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCisrKysgYi9xdGxv Y2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvY29kaW5nbWFuYWdlcmVuZ2lu ZV9lc3JpLmNwcAorQEAgLTU5LDggKzU5LDEwIEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIHN0YXRp YyBjb25zdCBRU3RyaW5nIGtQcmVmaXhFc3JpKFFTdHJpbmdMaXRlcmFsKCJlc3JpLiIpKTsKKyBz dGF0aWMgY29uc3QgUVN0cmluZyBrUGFyYW1Vc2VyQWdlbnQoa1ByZWZpeEVzcmkgKyBRU3RyaW5n TGl0ZXJhbCgidXNlcmFnZW50IikpOworIAorLXN0YXRpYyBjb25zdCBRU3RyaW5nIGtVcmxHZW9j b2RlKFFTdHJpbmdMaXRlcmFsKCJodHRwOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0 L3NlcnZpY2VzL1dvcmxkL0dlb2NvZGVTZXJ2ZXIvZmluZEFkZHJlc3NDYW5kaWRhdGVzIikpOwor LXN0YXRpYyBjb25zdCBRU3RyaW5nIGtVcmxSZXZlcnNlR2VvY29kZShRU3RyaW5nTGl0ZXJhbCgi aHR0cDovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9HZW9j b2RlU2VydmVyL3JldmVyc2VHZW9jb2RlIikpOworK3N0YXRpYyBjb25zdCBRU3RyaW5nIGtVcmxH ZW9jb2RlKFFTdHJpbmdMaXRlcmFsKCJodHRwczovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMv cmVzdC9zZXJ2aWNlcy8iCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIldvcmxkL0dlb2NvZGVTZXJ2ZXIvZmluZEFkZHJlc3NDYW5kaWRhdGVzIikpOwor K3N0YXRpYyBjb25zdCBRU3RyaW5nIGtVcmxSZXZlcnNlR2VvY29kZShRU3RyaW5nTGl0ZXJhbCgK KysgICAgICAgICJodHRwczovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNl cy9Xb3JsZC9HZW9jb2RlU2VydmVyL3JldmVyc2VHZW9jb2RlIikpOworIAorIHN0YXRpYyBRU3Ry aW5nIGFkZHJlc3NUb1F1ZXJ5KGNvbnN0IFFHZW9BZGRyZXNzICZhZGRyZXNzKQorIHsKK2RpZmYg LS1naXQgYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVq c29ucGFyc2VyX2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9l c3JpL2dlb3JvdXRlanNvbnBhcnNlcl9lc3JpLmNwcAoraW5kZXggMTc0OTJkOTQuLjk2YzEyYjFi IDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dl b3JvdXRlanNvbnBhcnNlcl9lc3JpLmNwcAorKysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9n ZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRlanNvbnBhcnNlcl9lc3JpLmNwcAorQEAgLTQ2LDcgKzQ2 LDggQEAKKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKy0vLyBKU09OIHJlZmVyZW5jZTogaHR0 cDovL3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpLyMvUm91dGVf c2VydmljZV93aXRoX3N5bmNocm9ub3VzX2V4ZWN1dGlvbi8wMnIzMDAwMDAwMzYwMDAwMDAvCisr Ly8gSlNPTiByZWZlcmVuY2U6CisrLy8gaHR0cHM6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9o ZWxwL2FyY2dpcy1yZXN0LWFwaS8jL1JvdXRlX3NlcnZpY2Vfd2l0aF9zeW5jaHJvbm91c19leGVj dXRpb24vMDJyMzAwMDAwMDM2MDAwMDAwLworIAorIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtFcnJv ck1lc3NhZ2UoUVN0cmluZ0xpdGVyYWwoIkVycm9yICUxOiAlMi4iKSk7Cisgc3RhdGljIGNvbnN0 IFFTdHJpbmcga0Vycm9ySnNvbihRU3RyaW5nTGl0ZXJhbCgiRXJyb3I6IGludmFsaWRlIEpTT04g ZG9jdW1lbnQuIikpOworZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2Vy dmljZXMvZXNyaS9nZW9yb3V0ZXJlcGx5X2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lu cy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRlcmVwbHlfZXNyaS5jcHAKK2luZGV4IDhjYWRmYjI5 Li45MmI2YmIxMyAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2Vydmlj ZXMvZXNyaS9nZW9yb3V0ZXJlcGx5X2VzcmkuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVn aW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVyZXBseV9lc3JpLmNwcAorQEAgLTQ0LDcgKzQ0 LDggQEAKKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKy0vLyBKU09OIHJlZmVyZW5jZTogaHR0 cDovL3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpLyMvUm91dGVf c2VydmljZV93aXRoX3N5bmNocm9ub3VzX2V4ZWN1dGlvbi8wMnIzMDAwMDAwMzYwMDAwMDAvCisr Ly8gSlNPTiByZWZlcmVuY2U6CisrLy8gaHR0cHM6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9o ZWxwL2FyY2dpcy1yZXN0LWFwaS8jL1JvdXRlX3NlcnZpY2Vfd2l0aF9zeW5jaHJvbm91c19leGVj dXRpb24vMDJyMzAwMDAwMDM2MDAwMDAwLworIAorIEdlb1JvdXRlUmVwbHlFc3JpOjpHZW9Sb3V0 ZVJlcGx5RXNyaShRTmV0d29ya1JlcGx5ICpyZXBseSwgY29uc3QgUUdlb1JvdXRlUmVxdWVzdCAm cmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUU9iamVjdCAq cGFyZW50KSA6CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNl cy9lc3JpL2dlb3JvdXRpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMv cGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3Bw CitpbmRleCAwZTZiYzJjNy4uZWQ2MTNmNGIgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9w bHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAK KysrKyBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0aW5n bWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorQEAgLTQ4LDcgKzQ4LDggQEAgc3RhdGljIGNvbnN0IFFT dHJpbmcga1ByZWZpeEVzcmkoUVN0cmluZ0xpdGVyYWwoImVzcmkuIikpOworIHN0YXRpYyBjb25z dCBRU3RyaW5nIGtQYXJhbVVzZXJBZ2VudChrUHJlZml4RXNyaSArIFFTdHJpbmdMaXRlcmFsKCJ1 c2VyYWdlbnQiKSk7Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcga1BhcmFtVG9rZW4oa1ByZWZpeEVz cmkgKyBRU3RyaW5nTGl0ZXJhbCgidG9rZW4iKSk7CisgCistc3RhdGljIGNvbnN0IFFTdHJpbmcg a1VybFJvdXRpbmcoUVN0cmluZ0xpdGVyYWwoImh0dHA6Ly9yb3V0ZS5hcmNnaXMuY29tL2FyY2dp cy9yZXN0L3NlcnZpY2VzL1dvcmxkL1JvdXRlL05BU2VydmVyL1JvdXRlX1dvcmxkL3NvbHZlIikp OworK3N0YXRpYyBjb25zdCBRU3RyaW5nIGtVcmxSb3V0aW5nKFFTdHJpbmdMaXRlcmFsKAorKyAg ICAgICAgImh0dHBzOi8vcm91dGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3Js ZC9Sb3V0ZS9OQVNlcnZlci9Sb3V0ZV9Xb3JsZC9zb2x2ZSIpKTsKKyAKKyBHZW9Sb3V0aW5nTWFu YWdlckVuZ2luZUVzcmk6Okdlb1JvdXRpbmdNYW5hZ2VyRW5naW5lRXNyaShjb25zdCBRVmFyaWFu dE1hcCAmcGFyYW1ldGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRR2VvU2VydmljZVByb3ZpZGVyOjpFcnJvciAqZXJyb3IsCitA QCAtNzAsNyArNzEsOCBAQCBHZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVzcmk6On5HZW9Sb3V0aW5n TWFuYWdlckVuZ2luZUVzcmkoKQorIHsKKyB9CisgCistLy8gUkVTVCByZWZlcmVuY2U6IGh0dHA6 Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFwaS9pbmRleC5odG1s Iy8vMDJyMzAwMDAwMDM2MDAwMDAwCisrLy8gUkVTVCByZWZlcmVuY2U6CisrLy8gaHR0cHM6Ly9y ZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFwaS9pbmRleC5odG1sIy8v MDJyMzAwMDAwMDM2MDAwMDAwCisgCisgUUdlb1JvdXRlUmVwbHkgKkdlb1JvdXRpbmdNYW5hZ2Vy RW5naW5lRXNyaTo6Y2FsY3VsYXRlUm91dGUoY29uc3QgUUdlb1JvdXRlUmVxdWVzdCAmcmVxdWVz dCkKKyB7CitAQCAtMTI1LDcgKzEyNyw3IEBAIHZvaWQgR2VvUm91dGluZ01hbmFnZXJFbmdpbmVF c3JpOjpyZXBseUVycm9yKFFHZW9Sb3V0ZVJlcGx5OjpFcnJvciBlcnJvckNvZGUsIGNvCisgUVN0 cmluZyBHZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVzcmk6OnByZWZlcmVkRGlyZWN0aW9uTGFuZ2Fn ZSgpCisgeworICAgICAvLyBsaXN0IG9mIHN1cHBvcnRlZCBsYW5nYWdlcyBpcyBkZWZpbmVkIGlu OgorLSAgICAvLyBodHRwOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVz dC1hcGkvaW5kZXguaHRtbCMvLzAycjMwMDAwMDAzNjAwMDAwMAorKyAgICAvLyBodHRwczovL3Jl c291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAvYXJjZ2lzLXJlc3QtYXBpL2luZGV4Lmh0bWwjLy8w MnIzMDAwMDAwMzYwMDAwMDAKKyAgICAgY29uc3QgUVN0cmluZ0xpc3Qgc3VwcG9ydGVkTGFuZ3Vh Z2VzID0geworICAgICAgICAgImFyIiwgLy8gR2VuZXJhdGUgZGlyZWN0aW9ucyBpbiBBcmFiaWMK KyAgICAgICAgICJjcyIsIC8vIEdlbmVyYXRlIGRpcmVjdGlvbnMgaW4gQ3plY2gKK2RpZmYgLS1n aXQgYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvdGlsZWRtYXBw aW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcCBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2Vy dmljZXMvZXNyaS9nZW90aWxlZG1hcHBpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitpbmRleCA1 ZDE1ODM1ZC4uMjQxNDhmOTUgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dl b3NlcnZpY2VzL2VzcmkvZ2VvdGlsZWRtYXBwaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorKysr IGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3RpbGVkbWFwcGlu Z21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK0BAIC0yMzAsNyArMjMwLDggQEAgUUdlb01hcCAqR2Vv VGlsZWRNYXBwaW5nTWFuYWdlckVuZ2luZUVzcmk6OmNyZWF0ZU1hcCgpCisgLy8gJHt5fSA9IFkK KyAvLyAke3Rva2VufSA9IFRva2VuCisgCistLy8gdGVtcGxhdGUgPSAnaHR0cDovL3NlcnZpY2Vz LmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfVG9wb19NYXAvTWFw U2VydmVyL3RpbGUve3t6fX0ve3t5fX0ve3t4fX0ucG5nJworKy8vIHRlbXBsYXRlID0KKysvLyAn aHR0cHM6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dv cmxkX1RvcG9fTWFwL01hcFNlcnZlci90aWxlL3t7en19L3t7eX19L3t7eH19LnBuZycKKyAKKyBi b29sIEdlb1RpbGVkTWFwcGluZ01hbmFnZXJFbmdpbmVFc3JpOjppbml0aWFsaXplTWFwU291cmNl cyhRR2VvU2VydmljZVByb3ZpZGVyOjpFcnJvciAqZXJyb3IsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyAqZXJyb3JT dHJpbmcsCitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9l c3JpL21hcHMuanNvbiBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9t YXBzLmpzb24KK2luZGV4IDgxNjdhZTdkLi44NjJlMDg3ZCAxMDA2NDQKKy0tLSBhL3F0bG9jYXRp b24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9tYXBzLmpzb24KKysrKyBiL3F0bG9jYXRp b24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9tYXBzLmpzb24KK0BAIC02LDggKzYsOCBA QAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBcmNHSVMgT25saW5lIFdvcmxkIFN0cmVl dCBNYXAiLAorICAgICAgICAgICAgICJtb2JpbGUiOiB0cnVlLAorICAgICAgICAgICAgICJuaWdo dCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZpY2VzLmFyY2dpc29u bGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfU3RyZWV0X01hcC9NYXBTZXJ2ZXIi LAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8v d3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9M2I5MzMzNzk4M2U5NDM2ZjhkYjk1MGUz OGE4NjI5YWYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0 dHBzOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3Js ZF9TdHJlZXRfTWFwL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAi JmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9 M2I5MzMzNzk4M2U5NDM2ZjhkYjk1MGUzOGE4NjI5YWYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIK KyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtMTYsOCArMTYsOCBAQAorICAgICAgICAg ICAgICIiOiAiQXJjR0lTIE9ubGluZSBXb3JsZCBJbWFnZXJ5IiwKKyAgICAgICAgICAgICAibW9i aWxlIjogdHJ1ZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAi dXJsIjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNl cy9Xb3JsZF9JbWFnZXJ5L01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQi OiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9p ZD0xMGRmMjI3OWY5Njg0ZTRhOWY2YTdmMDhmZWJhYzJhOSc+RXNyaTwvYT4gY29udHJpYnV0b3Jz IgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9B cmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9JbWFnZXJ5L01hcFNlcnZlciIsCisrICAgICAgICAg ICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5j b20vaG9tZS9pdGVtLmh0bWw/aWQ9MTBkZjIyNzlmOTY4NGU0YTlmNmE3ZjA4ZmViYWMyYTknPkVz cmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtMjYs OCArMjYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBcmNHSVMgT25saW5lIFdv cmxkIFRlcnJhaW4gQmFzZSIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAg ICAgICAgICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZl ci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RlcnJhaW5fQmFz ZS9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBo cmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YzYxYWQ4YWIwMTdk NDllMWE4MmY1ODBlZTEyOTg5MzEnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAg ICAidXJsIjogImh0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2Vy dmljZXMvV29ybGRfVGVycmFpbl9CYXNlL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHly aWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9p dGVtLmh0bWw/aWQ9YzYxYWQ4YWIwMTdkNDllMWE4MmY1ODBlZTEyOTg5MzEnPkVzcmk8L2E+IGNv bnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtMzYsOCArMzYsOCBA QAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBcmNHSVMgT25saW5lIFdvcmxkIFRvcG9n cmFwaHkiLAorICAgICAgICAgICAgICJtb2JpbGUiOiB0cnVlLAorICAgICAgICAgICAgICJuaWdo dCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNnaXNvbmxp bmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RvcG9fTWFwL01hcFNlcnZlciIsCist ICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cu YXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD0zMGU1ZmUzMTQ5YzM0ZGYxYmE5MjJlNmY1YmJm ODA4Zic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6 Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9Ub3Bv X01hcC9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8 YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTMwZTVmZTMx NDljMzRkZjFiYTkyMmU2ZjViYmY4MDhmJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAg ICB9LAorIAorICAgICAgICAgeworQEAgLTQ2LDggKzQ2LDggQEAKKyAgICAgICAgICAgICAiZGVz Y3JpcHRpb24iOiAiVGhpcyBtYXAgcHJlc2VudHMgbGFuZCBjb3ZlciBhbmQgZGV0YWlsZWQgdG9w b2dyYXBoaWMgbWFwcyBmb3IgdGhlIFVuaXRlZCBTdGF0ZXMuIiwKKyAgICAgICAgICAgICAibW9i aWxlIjogdHJ1ZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAi dXJsIjogImh0dHA6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZp Y2VzL1VTQV9Ub3BvX01hcHMvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4 dCI6ICImY29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1s P2lkPTk5Y2Q1ZmJkOTg5MzQwMjg4MDJiNGY3OTdjNGIxNzMyJz5Fc3JpPC9hPiBjb250cmlidXRv cnMiCisrICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5j b20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvVVNBX1RvcG9fTWFwcy9NYXBTZXJ2ZXIiLAorKyAgICAg ICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNn aXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTk5Y2Q1ZmJkOTg5MzQwMjg4MDJiNGY3OTdjNGIxNzMy Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAg LTU2LDggKzU2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiTmF0aW9uYWwgR2Vv Z3JhcGhpYyBXb3JsZCBNYXAiLAorICAgICAgICAgICAgICJtb2JpbGUiOiBmYWxzZSwKKyAgICAg ICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2 aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL05hdEdlb19Xb3JsZF9N YXAvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEg aHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWI5YjFiNDIyMTk4 OTQ0ZmJiZDUyNTBiMzI0MTY5MWI2Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAg ICAgInVybCI6ICJodHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qv c2VydmljZXMvTmF0R2VvX1dvcmxkX01hcC9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5 cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUv aXRlbS5odG1sP2lkPWI5YjFiNDIyMTk4OTQ0ZmJiZDUyNTBiMzI0MTY5MWI2Jz5Fc3JpPC9hPiBj b250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTY2LDggKzY2LDgg QEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlbWF0aWMgY29udGVudCBwcm92aWRp bmcgYSBuZXV0cmFsIGJhY2tncm91bmQgd2l0aCBtaW5pbWFsIGNvbG9ycyIsCisgICAgICAgICAg ICAgIm1vYmlsZSI6IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAg ICAgICAgInVybCI6ICJodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVz dC9zZXJ2aWNlcy9DYW52YXMvV29ybGRfTGlnaHRfR3JheV9CYXNlL01hcFNlcnZlciIsCistICAg ICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJj Z2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1lZDcxMmNiMWRiM2U0YmFlOWU4NTMyOTA0MGZiOWE0 OSc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9z ZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL0NhbnZhcy9Xb3Js ZF9MaWdodF9HcmF5X0Jhc2UvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4 dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRt bD9pZD1lZDcxMmNiMWRiM2U0YmFlOWU4NTMyOTA0MGZiOWE0OSc+RXNyaTwvYT4gY29udHJpYnV0 b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC03Niw4ICs3Niw4IEBACisgICAg ICAgICAgICAgImRlc2NyaXB0aW9uIjogIk5hdHVyYWwgRWFydGggcGh5c2ljYWwgbWFwIGZvciB0 aGUgd29ybGQiLAorICAgICAgICAgICAgICJtb2JpbGUiOiBmYWxzZSwKKyAgICAgICAgICAgICAi bmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lz b25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9QaHlzaWNhbF9NYXAvTWFwU2Vy dmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0 cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWM0ZWM3MjJhMWNkMzRjZjBhMjM5 MDRhYWRmODkyM2EwJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVybCI6 ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dv cmxkX1BoeXNpY2FsX01hcC9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0 IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1s P2lkPWM0ZWM3MjJhMWNkMzRjZjBhMjM5MDRhYWRmODkyM2EwJz5Fc3JpPC9hPiBjb250cmlidXRv cnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTg2LDggKzg2LDggQEAKKyAgICAg ICAgICAgICAiZGVzY3JpcHRpb24iOiAiUG9ydHJheXMgc3VyZmFjZSBlbGV2YXRpb24gYXMgc2hh ZGVkIHJlbGllZiIsCisgICAgICAgICAgICAgIm1vYmlsZSI6IGZhbHNlLAorICAgICAgICAgICAg ICJuaWdodCI6IGZhbHNlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZlci5hcmNn aXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1NoYWRlZF9SZWxpZWYvTWFw U2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0n aHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTljNTM3MGQwYjU0ZjRkZTFi NDhhMzc5MmQ3Mzc3ZmYyJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAgInVy bCI6ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2Vz L1dvcmxkX1NoYWRlZF9SZWxpZWYvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0 VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0u aHRtbD9pZD05YzUzNzBkMGI1NGY0ZGUxYjQ4YTM3OTJkNzM3N2ZmMic+RXNyaTwvYT4gY29udHJp YnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC05Niw4ICs5Niw4IEBACisg ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoaXMgbWFwIGlzIGRlc2lnbmVkIHRvIGJlIHVz ZWQgYXMgYSBiYXNlbWFwIGJ5IG1hcmluZSBHSVMgcHJvZmVzc2lvbmFscyBhbmQgYXMgYSByZWZl cmVuY2UgbWFwIGJ5IGFueW9uZSBpbnRlcmVzdGVkIGluIG9jZWFuIGRhdGEiLAorICAgICAgICAg ICAgICJtb2JpbGUiOiBmYWxzZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAg ICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9hcmNnaXMvcmVz dC9zZXJ2aWNlcy9PY2Vhbi9Xb3JsZF9PY2Vhbl9CYXNlL01hcFNlcnZlciIsCistICAgICAgICAg ICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNv bS9ob21lL2l0ZW0uaHRtbD9pZD0xZTEyNmU3NTIwZjk0NjZjOWNhMjhiOGYyOGI1ZTUwMCc+RXNy aTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIu YXJjZ2lzb25saW5lLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9PY2Vhbi9Xb3JsZF9PY2Vhbl9C YXNlL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxh IGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9MWUxMjZlNzUy MGY5NDY2YzljYTI4YjhmMjhiNWU1MDAnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAg IH0sCisgCisgICAgICAgICB7CitAQCAtMTA2LDggKzEwNiw4IEBACisgICAgICAgICAgICAgImRl c2NyaXB0aW9uIjogIlRoZW1hdGljIGNvbnRlbnQgcHJvdmlkaW5nIGEgbmV1dHJhbCBiYWNrZ3Jv dW5kIHdpdGggbWluaW1hbCBjb2xvcnMiLAorICAgICAgICAgICAgICJtb2JpbGUiOiBmYWxzZSwK KyAgICAgICAgICAgICAibmlnaHQiOiB0cnVlLAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDov L3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvQ2FudmFzL1dv cmxkX0RhcmtfR3JheV9CYXNlL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRl eHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRt bD9pZD1hMjg0YTliOTliMzQ0NmEzOTEwZDQxNDRhNTA5OTBmNic+RXNyaTwvYT4gY29udHJpYnV0 b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUu Y29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL0NhbnZhcy9Xb3JsZF9EYXJrX0dyYXlfQmFzZS9NYXBT ZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdo dHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWEyODRhOWI5OWIzNDQ2YTM5 MTBkNDE0NGE1MDk5MGY2Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAor ICAgICAgICAgeworQEAgLTExNiw4ICsxMTYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlv biI6ICJEZUxvcm1l4oCZcyB0b3BvZ3JhcGhpYyBiYXNlbWFwIGlzIGEgc2VhbWxlc3MgZ2xvYmFs IGRhdGEgc2V0IHRoYXQgcG9ydHJheXMgdHJhbnNwb3J0YXRpb24sIGh5ZHJvZ3JhcGh5LCBqdXJp c2RpY3Rpb24gYm91bmRhcmllcywgYW5kIG1ham9yIGdlb2dyYXBoaWMgZmVhdHVyZXMiLAorICAg ICAgICAgICAgICJtb2JpbGUiOiBmYWxzZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwK Ky0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNH SVMvcmVzdC9zZXJ2aWNlcy9TcGVjaWFsdHkvRGVMb3JtZV9Xb3JsZF9CYXNlX01hcC9NYXBTZXJ2 ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRw Oi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YjE2NWMzZGY0NTNlNGJlNmI1YWM0 ZmRiMjQxZWZmYmUnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjog Imh0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvU3Bl Y2lhbHR5L0RlTG9ybWVfV29ybGRfQmFzZV9NYXAvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAi Y29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9o b21lL2l0ZW0uaHRtbD9pZD1iMTY1YzNkZjQ1M2U0YmU2YjVhYzRmZGIyNDFlZmZiZSc+RXNyaTwv YT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfQorICAgICBdCisgfQorZGlmZiAtLWdpdCBhL3F0 bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9wbGFjZW1hbmFnZXJlbmdpbmVf ZXNyaS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvcGxhY2Vt YW5hZ2VyZW5naW5lX2VzcmkuY3BwCitpbmRleCAzODU4ZGRmNS4uYWY2NmYyOGUgMTAwNjQ0Cist LS0gYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvcGxhY2VtYW5hZ2Vy ZW5naW5lX2VzcmkuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2Vz L2VzcmkvcGxhY2VtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitAQCAtNjMsOCArNjMsMTAgQEAgc3Rh dGljIGNvbnN0IFFTdHJpbmcga0NvdW50cmllc0tleShRU3RyaW5nTGl0ZXJhbCgiZGV0YWlsZWRD b3VudHJpZXMiKSk7Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcga0xvY2FsaXplZE5hbWVzS2V5KFFT dHJpbmdMaXRlcmFsKCJsb2NhbGl6ZWROYW1lcyIpKTsKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBr TWF4TG9jYXRpb25zS2V5KFFTdHJpbmdMaXRlcmFsKCJtYXhMb2NhdGlvbnMiKSk7CisgCistc3Rh dGljIGNvbnN0IFFVcmwga1VybEdlb2NvZGVTZXJ2ZXIoImh0dHA6Ly9nZW9jb2RlLmFyY2dpcy5j b20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvR2VvY29kZVNlcnZlcj9mPXBqc29uIik7Cist c3RhdGljIGNvbnN0IFFVcmwga1VybEZpbmRBZGRyZXNzQ2FuZGlkYXRlcygiaHR0cDovL2dlb2Nv ZGUuYXJjZ2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9HZW9jb2RlU2VydmVyL2Zp bmRBZGRyZXNzQ2FuZGlkYXRlcyIpOworK3N0YXRpYyBjb25zdCBRVXJsIGtVcmxHZW9jb2RlU2Vy dmVyKAorKyAgICAgICAgImh0dHBzOi8vZ2VvY29kZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3Nl cnZpY2VzL1dvcmxkL0dlb2NvZGVTZXJ2ZXI/Zj1wanNvbiIpOworK3N0YXRpYyBjb25zdCBRVXJs IGtVcmxGaW5kQWRkcmVzc0NhbmRpZGF0ZXMoImh0dHBzOi8vZ2VvY29kZS5hcmNnaXMuY29tL2Fy Y2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkLyIKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJHZW9jb2RlU2VydmVyL2ZpbmRBZGRyZXNzQ2FuZGlkYXRlcyIpOwor IAorIFBsYWNlTWFuYWdlckVuZ2luZUVzcmk6OlBsYWNlTWFuYWdlckVuZ2luZUVzcmkoY29uc3Qg UVZhcmlhbnRNYXAgJnBhcmFtZXRlcnMsIFFHZW9TZXJ2aWNlUHJvdmlkZXI6OkVycm9yICplcnJv ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJp bmcgKmVycm9yU3RyaW5nKSA6CitTdWJtb2R1bGUgcXRtdWx0aW1lZGlhIGYwMzQ0MDc5Li4wZDdj YzMzYToKK2RpZmYgLS1naXQgYS9xdG11bHRpbWVkaWEvc3JjL3BsdWdpbnMvcHVsc2VhdWRpby9x YXVkaW9pbnB1dF9wdWxzZS5jcHAgYi9xdG11bHRpbWVkaWEvc3JjL3BsdWdpbnMvcHVsc2VhdWRp by9xYXVkaW9pbnB1dF9wdWxzZS5jcHAKK2luZGV4IDJiNTMyNTEzMi4uYjY4YjRhZjFiIDEwMDY0 NAorLS0tIGEvcXRtdWx0aW1lZGlhL3NyYy9wbHVnaW5zL3B1bHNlYXVkaW8vcWF1ZGlvaW5wdXRf cHVsc2UuY3BwCisrKysgYi9xdG11bHRpbWVkaWEvc3JjL3BsdWdpbnMvcHVsc2VhdWRpby9xYXVk aW9pbnB1dF9wdWxzZS5jcHAKK0BAIC00MDIsNiArNDAyLDggQEAgaW50IFFQdWxzZUF1ZGlvSW5w dXQ6OmJ5dGVzUmVhZHkoKSBjb25zdAorIAorIHFpbnQ2NCBRUHVsc2VBdWRpb0lucHV0OjpyZWFk KGNoYXIgKmRhdGEsIHFpbnQ2NCBsZW4pCisgeworKyAgICBRX0FTU0VSVChkYXRhICE9IG51bGxw dHIgfHwgbGVuID09IDApOworKworICAgICBtX2J5dGVzQXZhaWxhYmxlID0gY2hlY2tCeXRlc1Jl YWR5KCk7CisgCisgICAgIHNldEVycm9yKFFBdWRpbzo6Tm9FcnJvcik7CitAQCAtNDExLDcgKzQx Myw4IEBAIHFpbnQ2NCBRUHVsc2VBdWRpb0lucHV0OjpyZWFkKGNoYXIgKmRhdGEsIHFpbnQ2NCBs ZW4pCisgCisgICAgIGlmICghbV9wdWxsTW9kZSAmJiAhbV90ZW1wQnVmZmVyLmlzRW1wdHkoKSkg eworICAgICAgICAgcmVhZEJ5dGVzID0gcU1pbihzdGF0aWNfY2FzdDxpbnQ+KGxlbiksIG1fdGVt cEJ1ZmZlci5zaXplKCkpOworLSAgICAgICAgbWVtY3B5KGRhdGEsIG1fdGVtcEJ1ZmZlci5jb25z dERhdGEoKSwgcmVhZEJ5dGVzKTsKKysgICAgICAgIGlmIChyZWFkQnl0ZXMpCisrICAgICAgICAg ICAgbWVtY3B5KGRhdGEsIG1fdGVtcEJ1ZmZlci5jb25zdERhdGEoKSwgcmVhZEJ5dGVzKTsKKyAg ICAgICAgIG1fdG90YWxUaW1lVmFsdWUgKz0gcmVhZEJ5dGVzOworIAorICAgICAgICAgaWYgKHJl YWRCeXRlcyA8IG1fdGVtcEJ1ZmZlci5zaXplKCkpIHsKK0BAIC01MDIsOSArNTA1LDEwIEBAIHFp bnQ2NCBRUHVsc2VBdWRpb0lucHV0OjpyZWFkKGNoYXIgKmRhdGEsIHFpbnQ2NCBsZW4pCisgCisg dm9pZCBRUHVsc2VBdWRpb0lucHV0OjphcHBseVZvbHVtZShjb25zdCB2b2lkICpzcmMsIHZvaWQg KmRlc3QsIGludCBsZW4pCisgeworKyAgICBRX0FTU0VSVCgoc3JjICYmIGRlc3QpIHx8IGxlbiA9 PSAwKTsKKyAgICAgaWYgKG1fdm9sdW1lIDwgMS5mKQorICAgICAgICAgUUF1ZGlvSGVscGVySW50 ZXJuYWw6OnFNdWx0aXBseVNhbXBsZXMobV92b2x1bWUsIG1fZm9ybWF0LCBzcmMsIGRlc3QsIGxl bik7CistICAgIGVsc2UKKysgICAgZWxzZSBpZiAobGVuKQorICAgICAgICAgbWVtY3B5KGRlc3Qs IHNyYywgbGVuKTsKKyB9CisgCitTdWJtb2R1bGUgcXRwaW0gMDJlZmVmNWUuLi5mOWE4ZjBmYyAo Y29tbWl0cyBub3QgcHJlc2VudCkKK1N1Ym1vZHVsZSBxdHF1aWNrM2QgYjg1Y2Y2MjIuLjQ3ZGVm YzhiOgorZGlmZiAtLWdpdCBhL3F0cXVpY2szZC9zcmMvcGx1Z2lucy9hc3NldGltcG9ydGVycy9h c3NpbXAvYXNzaW1wLnBybyBiL3F0cXVpY2szZC9zcmMvcGx1Z2lucy9hc3NldGltcG9ydGVycy9h c3NpbXAvYXNzaW1wLnBybworaW5kZXggY2E1YzQ5OWUuLjE3NGEwNzViIDEwMDY0NAorLS0tIGEv cXRxdWljazNkL3NyYy9wbHVnaW5zL2Fzc2V0aW1wb3J0ZXJzL2Fzc2ltcC9hc3NpbXAucHJvCisr KysgYi9xdHF1aWNrM2Qvc3JjL3BsdWdpbnMvYXNzZXRpbXBvcnRlcnMvYXNzaW1wL2Fzc2ltcC5w cm8KK0BAIC0xMCw3ICsxMCw3IEBAIFFUX0ZPUl9DT05GSUcgKz0gYXNzZXRpbXBvcnRlcnMtcHJp dmF0ZQorIGluY2x1ZGUoJCRPVVRfUFdELy4uL3F0YXNzZXRpbXBvcnRlcnMtY29uZmlnLnByaSkK KyAKKyBxdENvbmZpZyhzeXN0ZW0tYXNzaW1wKTohaWYoY3Jvc3NfY29tcGlsZTpob3N0X2J1aWxk KSB7CistICAgIFFNQUtFX1VTRV9QUklWQVRFICs9IGFzc2ltcAorKyAgICBRTUFLRV9VU0VfUFJJ VkFURSArPSBxdWljazNkLWFzc2ltcAorIH0gZWxzZSB7CisgICAgIGluY2x1ZGUoLi4vLi4vLi4v M3JkcGFydHkvYXNzaW1wL2Fzc2ltcC5wcmkpCisgfQorU3VibW9kdWxlIHF0cXVpY2tjb250cm9s czIgM2E2NTdkYzAuLjU2Y2U4MjMzOgorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3Jj L2ltcG9ydHMvcGxhdGZvcm0vd2lkZ2V0cy9xd2lkZ2V0cGxhdGZvcm1tZW51LmNwcCBiL3F0cXVp Y2tjb250cm9sczIvc3JjL2ltcG9ydHMvcGxhdGZvcm0vd2lkZ2V0cy9xd2lkZ2V0cGxhdGZvcm1t ZW51LmNwcAoraW5kZXggZTVmZTczNGY3Li5lMzY5MjI3NzUgMTAwNjQ0CistLS0gYS9xdHF1aWNr Y29udHJvbHMyL3NyYy9pbXBvcnRzL3BsYXRmb3JtL3dpZGdldHMvcXdpZGdldHBsYXRmb3JtbWVu dS5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL2ltcG9ydHMvcGxhdGZvcm0vd2lkZ2V0 cy9xd2lkZ2V0cGxhdGZvcm1tZW51LmNwcAorQEAgLTM4LDYgKzM4LDcgQEAKKyAjaW5jbHVkZSAi cXdpZGdldHBsYXRmb3JtbWVudWl0ZW1fcC5oIgorIAorICNpbmNsdWRlIDxRdEd1aS9xd2luZG93 Lmg+CisrI2luY2x1ZGUgPFF0R3VpL3ByaXZhdGUvcWhpZ2hkcGlzY2FsaW5nX3AuaD4KKyAjaW5j bHVkZSA8UXRXaWRnZXRzL3FtZW51Lmg+CisgI2luY2x1ZGUgPFF0V2lkZ2V0cy9xYWN0aW9uLmg+ CisgCitAQCAtMTQ1LDcgKzE0Niw3IEBAIHZvaWQgUVdpZGdldFBsYXRmb3JtTWVudTo6c2hvd1Bv cHVwKGNvbnN0IFFXaW5kb3cgKndpbmRvdywgY29uc3QgUVJlY3QgJnRhcmdldFJlCisgCisgICAg IFFQb2ludCB0YXJnZXRQb3MgPSB0YXJnZXRSZWN0LmJvdHRvbUxlZnQoKTsKKyAgICAgaWYgKHdp bmRvdykKKy0gICAgICAgIHRhcmdldFBvcyA9IHdpbmRvdy0+bWFwVG9HbG9iYWwodGFyZ2V0UG9z KTsKKysgICAgICAgIHRhcmdldFBvcyA9IHdpbmRvdy0+bWFwVG9HbG9iYWwoUUhpZ2hEcGk6OmZy b21OYXRpdmVMb2NhbFBvc2l0aW9uKHRhcmdldFBvcywgd2luZG93KSk7CisgCisgICAgIGNvbnN0 IFFXaWRnZXRQbGF0Zm9ybU1lbnVJdGVtICp3aWRnZXRJdGVtID0gcW9iamVjdF9jYXN0PGNvbnN0 IFFXaWRnZXRQbGF0Zm9ybU1lbnVJdGVtICo+KGl0ZW0pOworICAgICBtX21lbnUtPnBvcHVwKHRh cmdldFBvcywgd2lkZ2V0SXRlbSA/IHdpZGdldEl0ZW0tPmFjdGlvbigpIDogbnVsbHB0cik7Citk aWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fi c3RyYWN0YnV0dG9uLmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9x cXVpY2thYnN0cmFjdGJ1dHRvbi5jcHAKK2luZGV4IDk1MGU0ZTA5OS4uYjgxZmJlYTBiIDEwMDY0 NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3Ry YWN0YnV0dG9uLmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMy L3FxdWlja2Fic3RyYWN0YnV0dG9uLmNwcAorQEAgLTM4Nyw2ICszODcsMTcgQEAgdm9pZCBRUXVp Y2tBYnN0cmFjdEJ1dHRvblByaXZhdGU6Oml0ZW1JbXBsaWNpdEhlaWdodENoYW5nZWQoUVF1aWNr SXRlbSAqaXRlbSkKKyAgICAgICAgIGVtaXQgcS0+aW1wbGljaXRJbmRpY2F0b3JIZWlnaHRDaGFu Z2VkKCk7CisgfQorIAorK3ZvaWQgUVF1aWNrQWJzdHJhY3RCdXR0b25Qcml2YXRlOjppdGVtRGVz dHJveWVkKFFRdWlja0l0ZW0gKml0ZW0pCisreworKyAgICBRX1EoUVF1aWNrQWJzdHJhY3RCdXR0 b24pOworKyAgICBRUXVpY2tDb250cm9sUHJpdmF0ZTo6aXRlbURlc3Ryb3llZChpdGVtKTsKKysg ICAgaWYgKGl0ZW0gPT0gaW5kaWNhdG9yKSB7CisrICAgICAgICBpbmRpY2F0b3IgPSBudWxscHRy OworKyAgICAgICAgZW1pdCBxLT5pbXBsaWNpdEluZGljYXRvcldpZHRoQ2hhbmdlZCgpOworKyAg ICAgICAgZW1pdCBxLT5pbXBsaWNpdEluZGljYXRvckhlaWdodENoYW5nZWQoKTsKKysgICAgfQor K30KKysKKyBRUXVpY2tBYnN0cmFjdEJ1dHRvbiAqUVF1aWNrQWJzdHJhY3RCdXR0b25Qcml2YXRl OjpmaW5kQ2hlY2tlZEJ1dHRvbigpIGNvbnN0CisgeworICAgICBRX1EoY29uc3QgUVF1aWNrQWJz dHJhY3RCdXR0b24pOworQEAgLTExNzYsNiArMTE4NywxMiBAQCBRQWNjZXNzaWJsZTo6Um9sZSBR UXVpY2tBYnN0cmFjdEJ1dHRvbjo6YWNjZXNzaWJsZVJvbGUoKSBjb25zdAorICAgICB9CisgICAg IHJldHVybiBRQWNjZXNzaWJsZTo6QnV0dG9uOworIH0KKysKKyt2b2lkIFFRdWlja0Fic3RyYWN0 QnV0dG9uOjphY2Nlc3NpYmxlUHJlc3NBY3Rpb24oKQorK3sKKysgICAgUV9EKFFRdWlja0Fic3Ry YWN0QnV0dG9uKTsKKysgICAgZC0+dHJpZ2dlcigpOworK30KKyAjZW5kaWYKKyAKKyBRVF9FTkRf TkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0 ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3AuaCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNr dGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wLmgKK2luZGV4IDBmYTQ4OTgwZS4uYWI2 NjIyMGQwIDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMy L3FxdWlja2Fic3RyYWN0YnV0dG9uX3AuaAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVp Y2t0ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3AuaAorQEAgLTIwOSw2ICsyMDksNyBA QCBwcm90ZWN0ZWQ6CisgI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorICAgICB2b2lkIGFj Y2Vzc2liaWxpdHlBY3RpdmVDaGFuZ2VkKGJvb2wgYWN0aXZlKSBvdmVycmlkZTsKKyAgICAgUUFj Y2Vzc2libGU6OlJvbGUgYWNjZXNzaWJsZVJvbGUoKSBjb25zdCBvdmVycmlkZTsKKysgICAgUV9J TlZPS0FCTEUgdm9pZCBhY2Nlc3NpYmxlUHJlc3NBY3Rpb24oKTsKKyAjZW5kaWYKKyAKKyBwcml2 YXRlOgorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9x cXVpY2thYnN0cmFjdGJ1dHRvbl9wX3AuaCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVt cGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wX3AuaAoraW5kZXggOTI5MWMxYTg3Li5iNzI5 NzIwZjIgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIv cXF1aWNrYWJzdHJhY3RidXR0b25fcF9wLmgKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1 aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wX3AuaAorQEAgLTEwOSw2ICsxMDks NyBAQCBwdWJsaWM6CisgCisgICAgIHZvaWQgaXRlbUltcGxpY2l0V2lkdGhDaGFuZ2VkKFFRdWlj a0l0ZW0gKml0ZW0pIG92ZXJyaWRlOworICAgICB2b2lkIGl0ZW1JbXBsaWNpdEhlaWdodENoYW5n ZWQoUVF1aWNrSXRlbSAqaXRlbSkgb3ZlcnJpZGU7CisrICAgIHZvaWQgaXRlbURlc3Ryb3llZChR UXVpY2tJdGVtICppdGVtKSBvdmVycmlkZTsKKyAKKyAgICAgLy8gY29waWVkIGZyb20gcWFic3Ry YWN0YnV0dG9uLmNwcAorICAgICBzdGF0aWMgY29uc3QgaW50IEFVVE9fUkVQRUFUX0RFTEFZID0g MzAwOworZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9x cXVpY2thY3Rpb24uY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3Fx dWlja2FjdGlvbi5jcHAKK2luZGV4IDIwNDFlNzc0MS4uODYxMGNkZmFlIDEwMDY0NAorLS0tIGEv cXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2FjdGlvbi5jcHAKKysr KyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thY3Rpb24uY3Bw CitAQCAtMTQ1LDcgKzE0NSw3IEBAIGludCBRUXVpY2tBY3Rpb25Qcml2YXRlOjpTaG9ydGN1dEVu dHJ5OjpzaG9ydGN1dElkKCkgY29uc3QKKyAKKyB2b2lkIFFRdWlja0FjdGlvblByaXZhdGU6OlNo b3J0Y3V0RW50cnk6OmdyYWIoY29uc3QgUUtleVNlcXVlbmNlICZzaG9ydGN1dCwgYm9vbCBlbmFi bGVkKQorIHsKKy0gICAgaWYgKHNob3J0Y3V0LmlzRW1wdHkoKSkKKysgICAgaWYgKHNob3J0Y3V0 LmlzRW1wdHkoKSB8fCBtX3Nob3J0Y3V0SWQpCisgICAgICAgICByZXR1cm47CisgCisgICAgIFF0 OjpTaG9ydGN1dENvbnRleHQgY29udGV4dCA9IFF0OjpXaW5kb3dTaG9ydGN1dDsgLy8gVE9ETwor ZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tj b250YWluZXIuY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlj a2NvbnRhaW5lci5jcHAKK2luZGV4IGYzOGMyYjA5Yy4uNmVlZDJhMDI0IDEwMDY0NAorLS0tIGEv cXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRhaW5lci5jcHAK KysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250YWlu ZXIuY3BwCitAQCAtMjI1LDYgKzIyNSw3IEBAIHZvaWQgUVF1aWNrQ29udGFpbmVyUHJpdmF0ZTo6 Y2xlYW51cCgpCisgICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoY29udGVudE1vZGVsLCAmUVFtbE9i amVjdE1vZGVsOjpjb3VudENoYW5nZWQsIHEsICZRUXVpY2tDb250YWluZXI6OmNvdW50Q2hhbmdl ZCk7CisgICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoY29udGVudE1vZGVsLCAmUVFtbE9iamVjdE1v ZGVsOjpjaGlsZHJlbkNoYW5nZWQsIHEsICZRUXVpY2tDb250YWluZXI6OmNvbnRlbnRDaGlsZHJl bkNoYW5nZWQpOworICAgICBkZWxldGUgY29udGVudE1vZGVsOworKyAgICBjb250ZW50TW9kZWwg PSBudWxscHRyOworIH0KKyAKKyBRUXVpY2tJdGVtICpRUXVpY2tDb250YWluZXJQcml2YXRlOjpp dGVtQXQoaW50IGluZGV4KSBjb25zdAorQEAgLTQzNiw3ICs0MzcsNyBAQCB2b2lkIFFRdWlja0Nv bnRhaW5lclByaXZhdGU6OmNvbnRlbnRDaGlsZHJlbl9jbGVhcihRUW1sTGlzdFByb3BlcnR5PFFR dWlja0l0ZW0+Cisgdm9pZCBRUXVpY2tDb250YWluZXJQcml2YXRlOjp1cGRhdGVDb250ZW50V2lk dGgoKQorIHsKKyAgICAgUV9RKFFRdWlja0NvbnRhaW5lcik7CistICAgIGlmIChoYXNDb250ZW50 V2lkdGggfHwgcUZ1enp5Q29tcGFyZShjb250ZW50V2lkdGgsIGltcGxpY2l0Q29udGVudFdpZHRo KSkKKysgICAgaWYgKGhhc0NvbnRlbnRXaWR0aCB8fCBxRnV6enlDb21wYXJlKGNvbnRlbnRXaWR0 aCwgaW1wbGljaXRDb250ZW50V2lkdGgpIHx8ICFjb250ZW50TW9kZWwpCisgICAgICAgICByZXR1 cm47CisgCisgICAgIGNvbnRlbnRXaWR0aCA9IGltcGxpY2l0Q29udGVudFdpZHRoOworQEAgLTQ0 Niw3ICs0NDcsNyBAQCB2b2lkIFFRdWlja0NvbnRhaW5lclByaXZhdGU6OnVwZGF0ZUNvbnRlbnRX aWR0aCgpCisgdm9pZCBRUXVpY2tDb250YWluZXJQcml2YXRlOjp1cGRhdGVDb250ZW50SGVpZ2h0 KCkKKyB7CisgICAgIFFfUShRUXVpY2tDb250YWluZXIpOworLSAgICBpZiAoaGFzQ29udGVudEhl aWdodCB8fCBxRnV6enlDb21wYXJlKGNvbnRlbnRIZWlnaHQsIGltcGxpY2l0Q29udGVudEhlaWdo dCkpCisrICAgIGlmIChoYXNDb250ZW50SGVpZ2h0IHx8IHFGdXp6eUNvbXBhcmUoY29udGVudEhl aWdodCwgaW1wbGljaXRDb250ZW50SGVpZ2h0KSB8fCAhY29udGVudE1vZGVsKQorICAgICAgICAg cmV0dXJuOworIAorICAgICBjb250ZW50SGVpZ2h0ID0gaW1wbGljaXRDb250ZW50SGVpZ2h0Owor ZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tj b250cm9sLmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tj b250cm9sLmNwcAoraW5kZXggYmJiZDBlNjIyLi4xZjRiNDczNDMgMTAwNjQ0CistLS0gYS9xdHF1 aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29udHJvbC5jcHAKKysrKyBi L3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9sLmNwcAor QEAgLTg0NSw2ICs4NDUsMTMgQEAgdm9pZCBRUXVpY2tDb250cm9sUHJpdmF0ZTo6ZXhlY3V0ZUJh Y2tncm91bmQoYm9vbCBjb21wbGV0ZSkKKyAgICAgICAgIHF1aWNrQ29tcGxldGVEZWZlcnJlZChx LCBiYWNrZ3JvdW5kTmFtZSgpLCBiYWNrZ3JvdW5kKTsKKyB9CisgCisrLyoKKysgICAgXGludGVy bmFsCisrCisrICAgIEhpZGVzIGFuIGl0ZW0gdGhhdCB3YXMgcmVwbGFjZWQgYnkgYSBuZXdlciBv bmUsIHJhdGhlciB0aGFuCisrICAgIGRlbGV0aW5nIGl0LCBhcyB0aGUgaXRlbSBpcyB0eXBpY2Fs bHkgY3JlYXRlZCBpbiBRTUwgYW5kIGhlbmNlCisrICAgIHdlIGRvbid0IG93biBpdC4KKysqLwor IHZvaWQgUVF1aWNrQ29udHJvbFByaXZhdGU6OmhpZGVPbGRJdGVtKFFRdWlja0l0ZW0gKml0ZW0p CisgeworICAgICBpZiAoIWl0ZW0pCitAQCAtODYzLDYgKzg3MCwyOSBAQCB2b2lkIFFRdWlja0Nv bnRyb2xQcml2YXRlOjpoaWRlT2xkSXRlbShRUXVpY2tJdGVtICppdGVtKQorICNlbmRpZgorIH0K KyAKKysvKgorKyAgICBcaW50ZXJuYWwKKysKKysgICAgTmFtZWQgInVuaGlkZSIgYmVjYXVzZSBp dCdzIHVzZWQgZm9yIGNhc2VzIHdoZXJlIGFuIGl0ZW0KKysgICAgdGhhdCB3YXMgcHJldmlvdXNs eSBoaWRkZW4gYnkgXGwgaGlkZU9sZEl0ZW0oKSB3YW50cyB0byBiZQorKyAgICBzaG93biBieSBh IGNvbnRyb2wgYWdhaW4sIHN1Y2ggYXMgYSBTY3JvbGxCYXIgaW4gU2Nyb2xsVmlldy4KKysqLwor K3ZvaWQgUVF1aWNrQ29udHJvbFByaXZhdGU6OnVuaGlkZU9sZEl0ZW0oUVF1aWNrQ29udHJvbCAq Y29udHJvbCwgUVF1aWNrSXRlbSAqaXRlbSkKKyt7CisrICAgIFFfQVNTRVJUKGl0ZW0pOworKyAg ICBxQ0RlYnVnKGxjSXRlbU1hbmFnZW1lbnQpIDw8ICJ1bmhpZGluZyBvbGQgaXRlbSIgPDwgaXRl bTsKKysKKysgICAgaXRlbS0+c2V0VmlzaWJsZSh0cnVlKTsKKysgICAgaXRlbS0+c2V0UGFyZW50 SXRlbShjb250cm9sKTsKKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisrICAgIC8v IEFkZCB0aGUgaXRlbSBiYWNrIGluIHRvIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUuCisrICAgIFFR dWlja0FjY2Vzc2libGVBdHRhY2hlZCAqYWNjZXNzaWJsZSA9IGFjY2Vzc2libGVBdHRhY2hlZChp dGVtKTsKKysgICAgaWYgKGFjY2Vzc2libGUpCisrICAgICAgICBhY2Nlc3NpYmxlLT5zZXRJZ25v cmVkKGZhbHNlKTsKKysjZW5kaWYKKyt9CisrCisgdm9pZCBRUXVpY2tDb250cm9sUHJpdmF0ZTo6 dXBkYXRlQmFzZWxpbmVPZmZzZXQoKQorIHsKKyAgICAgUV9RKFFRdWlja0NvbnRyb2wpOworZGlm ZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250 cm9sX3BfcC5oIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2Nv bnRyb2xfcF9wLmgKK2luZGV4IDhlOTc5MDc5ZS4uYTZlNjI0YzkxIDEwMDY0NAorLS0tIGEvcXRx dWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2xfcF9wLmgKKysr KyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9sX3Bf cC5oCitAQCAtMTczLDYgKzE3Myw3IEBAIHB1YmxpYzoKKyAgICAgdmlydHVhbCB2b2lkIGV4ZWN1 dGVCYWNrZ3JvdW5kKGJvb2wgY29tcGxldGUgPSBmYWxzZSk7CisgCisgICAgIHN0YXRpYyB2b2lk IGhpZGVPbGRJdGVtKFFRdWlja0l0ZW0gKml0ZW0pOworKyAgICBzdGF0aWMgdm9pZCB1bmhpZGVP bGRJdGVtKFFRdWlja0NvbnRyb2wgKmNvbnRyb2wsIFFRdWlja0l0ZW0gKml0ZW0pOworIAorICAg ICB2b2lkIHVwZGF0ZUJhc2VsaW5lT2Zmc2V0KCk7CisgCitkaWZmIC0tZ2l0IGEvcXRxdWlja2Nv bnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2RpYWxvZ2J1dHRvbmJveC5jcHAgYi9x dHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrZGlhbG9nYnV0dG9uYm94 LmNwcAoraW5kZXggZTZkYjE0ZWI1Li42MTk3ZDE1NDcgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29u dHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrZGlhbG9nYnV0dG9uYm94LmNwcAorKysr IGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2RpYWxvZ2J1dHRv bmJveC5jcHAKK0BAIC0yMzcsNyArMjM3LDcgQEAgc3RhdGljIFFSZWN0RiBhbGlnbmVkUmVjdChR dDo6TGF5b3V0RGlyZWN0aW9uIGRpcmVjdGlvbiwgUXQ6OkFsaWdubWVudCBhbGlnbm1lbnQKKyB2 b2lkIFFRdWlja0RpYWxvZ0J1dHRvbkJveFByaXZhdGU6OnJlc2l6ZUNvbnRlbnQoKQorIHsKKyAg ICAgUV9RKFFRdWlja0RpYWxvZ0J1dHRvbkJveCk7CistICAgIGlmICghY29udGVudEl0ZW0pCisr ICAgIGlmICghY29udGVudEl0ZW0gfHwgIWNvbnRlbnRNb2RlbCkKKyAgICAgICAgIHJldHVybjsK KyAKKyAgICAgUVJlY3RGIGdlb21ldHJ5ID0gcS0+Ym91bmRpbmdSZWN0KCkuYWRqdXN0ZWQocS0+ bGVmdFBhZGRpbmcoKSwgcS0+dG9wUGFkZGluZygpLCAtcS0+cmlnaHRQYWRkaW5nKCksIC1xLT5i b3R0b21QYWRkaW5nKCkpOworQEAgLTMyMiw2ICszMjIsOSBAQCB2b2lkIFFRdWlja0RpYWxvZ0J1 dHRvbkJveFByaXZhdGU6OnVwZGF0ZUxheW91dCgpCisgcXJlYWwgUVF1aWNrRGlhbG9nQnV0dG9u Qm94UHJpdmF0ZTo6Z2V0Q29udGVudFdpZHRoKCkgY29uc3QKKyB7CisgICAgIFFfUShjb25zdCBR UXVpY2tEaWFsb2dCdXR0b25Cb3gpOworKyAgICBpZiAoIWNvbnRlbnRNb2RlbCkKKysgICAgICAg IHJldHVybiAwOworKworICAgICBjb25zdCBpbnQgY291bnQgPSBjb250ZW50TW9kZWwtPmNvdW50 KCk7CisgICAgIGNvbnN0IHFyZWFsIHRvdGFsU3BhY2luZyA9IHFNYXgoMCwgY291bnQgLSAxKSAq IHNwYWNpbmc7CisgICAgIHFyZWFsIHRvdGFsV2lkdGggPSB0b3RhbFNwYWNpbmc7CitAQCAtMzQx LDYgKzM0NCw5IEBAIHFyZWFsIFFRdWlja0RpYWxvZ0J1dHRvbkJveFByaXZhdGU6OmdldENvbnRl bnRXaWR0aCgpIGNvbnN0CisgcXJlYWwgUVF1aWNrRGlhbG9nQnV0dG9uQm94UHJpdmF0ZTo6Z2V0 Q29udGVudEhlaWdodCgpIGNvbnN0CisgeworICAgICBRX1EoY29uc3QgUVF1aWNrRGlhbG9nQnV0 dG9uQm94KTsKKysgICAgaWYgKCFjb250ZW50TW9kZWwpCisrICAgICAgICByZXR1cm4gMDsKKysK KyAgICAgY29uc3QgaW50IGNvdW50ID0gY29udGVudE1vZGVsLT5jb3VudCgpOworICAgICBxcmVh bCBtYXhIZWlnaHQgPSAwOworICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsK K2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNr b3ZlcmxheS5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNr b3ZlcmxheS5jcHAKK2luZGV4IDkxYmQ1OTE4NC4uMGNlNTE4Zjg0IDEwMDY0NAorLS0tIGEvcXRx dWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja292ZXJsYXkuY3BwCisrKysg Yi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrb3ZlcmxheS5jcHAK K0BAIC0zOTksOCArMzk5LDExIEBAIHZvaWQgUVF1aWNrT3ZlcmxheTo6aXRlbUNoYW5nZShJdGVt Q2hhbmdlIGNoYW5nZSwgY29uc3QgSXRlbUNoYW5nZURhdGEgJmRhdGEpCisgICAgIFFfRChRUXVp Y2tPdmVybGF5KTsKKyAgICAgUVF1aWNrSXRlbTo6aXRlbUNoYW5nZShjaGFuZ2UsIGRhdGEpOwor IAorLSAgICBpZiAoY2hhbmdlID09IEl0ZW1DaGlsZEFkZGVkQ2hhbmdlIHx8IGNoYW5nZSA9PSBJ dGVtQ2hpbGRSZW1vdmVkQ2hhbmdlKQorKyAgICBpZiAoY2hhbmdlID09IEl0ZW1DaGlsZEFkZGVk Q2hhbmdlIHx8IGNoYW5nZSA9PSBJdGVtQ2hpbGRSZW1vdmVkQ2hhbmdlKSB7CisgICAgICAgICBz ZXRWaXNpYmxlKCFkLT5hbGxEcmF3ZXJzLmlzRW1wdHkoKSB8fCAhY2hpbGRJdGVtcygpLmlzRW1w dHkoKSk7CisrICAgICAgICBpZiAoZGF0YS5pdGVtLT5wYXJlbnQoKSA9PSBkLT5tb3VzZUdyYWJi ZXJQb3B1cCkKKysgICAgICAgICAgICBkLT5zZXRNb3VzZUdyYWJiZXJQb3B1cChudWxscHRyKTsK KysgICAgfQorIH0KKyAKKyB2b2lkIFFRdWlja092ZXJsYXk6Omdlb21ldHJ5Q2hhbmdlZChjb25z dCBRUmVjdEYgJm5ld0dlb21ldHJ5LCBjb25zdCBRUmVjdEYgJm9sZEdlb21ldHJ5KQorZGlmZiAt LWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tzY3JvbGxi YXIuY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja3Njcm9s bGJhci5jcHAKK2luZGV4IDRlMmY1MDlkYi4uMWM0YjMwOGNkIDEwMDY0NAorLS0tIGEvcXRxdWlj a2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja3Njcm9sbGJhci5jcHAKKysrKyBi L3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tzY3JvbGxiYXIuY3Bw CitAQCAtNzk3LDYgKzc5NywxNCBAQCB2b2lkIFFRdWlja1Njcm9sbEJhckF0dGFjaGVkUHJpdmF0 ZTo6aW5pdEhvcml6b250YWwoKQorICAgICBpZiAocGFyZW50ICYmIHBhcmVudCA9PSBmbGlja2Fi bGUtPnBhcmVudEl0ZW0oKSkKKyAgICAgICAgIGhvcml6b250YWwtPnN0YWNrQWZ0ZXIoZmxpY2th YmxlKTsKKyAKKysgICAgLy8gSWYgYSBzY3JvbGwgYmFyIHdhcyBwcmV2aW91c2x5IGhpZGRlbiAo ZHVlIHRvIGUuZy4gc2V0dGluZyBhIG5ldyBjb250ZW50SXRlbQorKyAgICAvLyBvbiBhIFNjcm9s bFZpZXcpLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIHVuLWhpZGUgaXQuCisrICAgIC8v IFdlIGRvbid0IGJvdGhlciBjaGVja2luZyBpZiB0aGUgaXRlbSBpcyBhY3R1YWxseSB0aGUgb2xk IG9uZSwgYmVjYXVzZQorKyAgICAvLyBpZiBpdCdzIG5vdCwgYWxsIG9mIHRoZSB0aGluZ3MgdGhl IGZ1bmN0aW9uIGRvZXMgKHNldHRpbmcgcGFyZW50LCB2aXNpYmlsaXR5LCBldGMuKQorKyAgICAv LyBzaG91bGQgYmUgbm8tb3BzIGFueXdheS4KKysgICAgaWYgKGF1dG8gY29udHJvbCA9IHFvYmpl Y3RfY2FzdDxRUXVpY2tDb250cm9sKj4ocV9wdHItPnBhcmVudCgpKSkKKysgICAgICAgIFFRdWlj a0NvbnRyb2xQcml2YXRlOjp1bmhpZGVPbGRJdGVtKGNvbnRyb2wsIGhvcml6b250YWwpOworKwor ICAgICBsYXlvdXRIb3Jpem9udGFsKCk7CisgICAgIGhvcml6b250YWwtPnNldFNpemUoYXJlYS0+ cHJvcGVydHkoIndpZHRoUmF0aW8iKS50b1JlYWwoKSk7CisgICAgIGhvcml6b250YWwtPnNldFBv c2l0aW9uKGFyZWEtPnByb3BlcnR5KCJ4UG9zaXRpb24iKS50b1JlYWwoKSk7CitAQCAtODE4LDYg KzgyNiw5IEBAIHZvaWQgUVF1aWNrU2Nyb2xsQmFyQXR0YWNoZWRQcml2YXRlOjppbml0VmVydGlj YWwoKQorICAgICBpZiAocGFyZW50ICYmIHBhcmVudCA9PSBmbGlja2FibGUtPnBhcmVudEl0ZW0o KSkKKyAgICAgICAgIHZlcnRpY2FsLT5zdGFja0FmdGVyKGZsaWNrYWJsZSk7CisgCisrICAgIGlm IChhdXRvIGNvbnRyb2wgPSBxb2JqZWN0X2Nhc3Q8UVF1aWNrQ29udHJvbCo+KHFfcHRyLT5wYXJl bnQoKSkpCisrICAgICAgICBRUXVpY2tDb250cm9sUHJpdmF0ZTo6dW5oaWRlT2xkSXRlbShjb250 cm9sLCB2ZXJ0aWNhbCk7CisrCisgICAgIGxheW91dFZlcnRpY2FsKCk7CisgICAgIHZlcnRpY2Fs LT5zZXRTaXplKGFyZWEtPnByb3BlcnR5KCJoZWlnaHRSYXRpbyIpLnRvUmVhbCgpKTsKKyAgICAg dmVydGljYWwtPnNldFBvc2l0aW9uKGFyZWEtPnByb3BlcnR5KCJ5UG9zaXRpb24iKS50b1JlYWwo KSk7CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRyb2xzL2Rh dGEvdHN0X3Njcm9sbHZpZXcucW1sIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRy b2xzL2RhdGEvdHN0X3Njcm9sbHZpZXcucW1sCitpbmRleCAwZThiMDgzNTIuLmNkNDkzMTE4NCAx MDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9jb250cm9scy9kYXRhL3Rz dF9zY3JvbGx2aWV3LnFtbAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRy b2xzL2RhdGEvdHN0X3Njcm9sbHZpZXcucW1sCitAQCAtNTc2LDQgKzU3Niw1MSBAQCBUZXN0Q2Fz ZSB7CisgICAgICAgICB2ZXJpZnkobmV3SG9yaXpvbnRhbFNjcm9sbEJhci52aXNpYmxlKQorICAg ICAgICAgdmVyaWZ5KCFvbGRIb3Jpem9udGFsU2Nyb2xsQmFyLnZpc2libGUpCisgICAgIH0KKysK KysgICAgQ29tcG9uZW50IHsKKysgICAgICAgIGlkOiBiaW5kaW5nVG9Db250ZW50SXRlbUFuZFN0 YW5kYWxvbmVGbGlja2FibGUKKysKKysgICAgICAgIEl0ZW0geworKyAgICAgICAgICAgIHdpZHRo OiAyMDAKKysgICAgICAgICAgICBoZWlnaHQ6IDIwMAorKworKyAgICAgICAgICAgIHByb3BlcnR5 IGFsaWFzIHNjcm9sbFZpZXc6IHNjcm9sbFZpZXcKKysKKysgICAgICAgICAgICBTY3JvbGxWaWV3 IHsKKysgICAgICAgICAgICAgICAgaWQ6IHNjcm9sbFZpZXcKKysgICAgICAgICAgICAgICAgYW5j aG9ycy5maWxsOiBwYXJlbnQKKysgICAgICAgICAgICAgICAgY29udGVudEl0ZW06IGxpc3RWaWV3 CisrCisrICAgICAgICAgICAgICAgIHByb3BlcnR5IEl0ZW0gc29tZUJpbmRpbmc6IGNvbnRlbnRJ dGVtCisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIExpc3RWaWV3IHsKKysgICAgICAgICAg ICAgICAgaWQ6IGxpc3RWaWV3CisrICAgICAgICAgICAgICAgIG1vZGVsOiAxMAorKyAgICAgICAg ICAgICAgICBkZWxlZ2F0ZTogSXRlbURlbGVnYXRlIHsKKysgICAgICAgICAgICAgICAgICAgIHRl eHQ6IG1vZGVsRGF0YQorKyAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGxpc3RWaWV3LndpZHRo CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgIH0K KysKKysgICAgLy8gVGVzdHMgdGhhdCBzY3JvbGwgYmFycyBzaG93IHVwIGZvciBhIFNjcm9sbFZp ZXcgd2hlcmUKKysgICAgLy8gLSBpdHMgY29udGVudEl0ZW0gaXMgZGVjbGFyZWQgYXMgYSBzdGFu ZGFsb25lLCBzZXBhcmF0ZSBpdGVtCisrICAgIC8vIC0gdGhlcmUgaXMgYSBiaW5kaW5nIHRvIGNv bnRlbnRJdGVtICh3aGljaCBjYXVzZXMgYSBkZWZhdWx0IEZsaWNrYWJsZSB0byBiZSBjcmVhdGVk KQorKyAgICBmdW5jdGlvbiB0ZXN0X2JpbmRpbmdUb0NvbnRlbnRJdGVtQW5kU3RhbmRhbG9uZUZs aWNrYWJsZSgpIHsKKysgICAgICAgIGxldCByb290ID0gY3JlYXRlVGVtcG9yYXJ5T2JqZWN0KGJp bmRpbmdUb0NvbnRlbnRJdGVtQW5kU3RhbmRhbG9uZUZsaWNrYWJsZSwgdGVzdENhc2UpCisrICAg ICAgICB2ZXJpZnkocm9vdCkKKysKKysgICAgICAgIGxldCBjb250cm9sID0gcm9vdC5zY3JvbGxW aWV3CisrICAgICAgICBsZXQgdmVydGljYWxTY3JvbGxCYXIgPSBjb250cm9sLlNjcm9sbEJhci52 ZXJ0aWNhbAorKyAgICAgICAgbGV0IGhvcml6b250YWxTY3JvbGxCYXIgPSBjb250cm9sLlNjcm9s bEJhci5ob3Jpem9udGFsCisrICAgICAgICBjb21wYXJlKHZlcnRpY2FsU2Nyb2xsQmFyLnBhcmVu dCwgY29udHJvbCkKKysgICAgICAgIGNvbXBhcmUoaG9yaXpvbnRhbFNjcm9sbEJhci5wYXJlbnQs IGNvbnRyb2wpCisrICAgICAgICB2ZXJpZnkodmVydGljYWxTY3JvbGxCYXIudmlzaWJsZSkKKysg ICAgICAgIHZlcmlmeShob3Jpem9udGFsU2Nyb2xsQmFyLnZpc2libGUpCisrCisrICAgICAgICBt b3VzZURyYWcodmVydGljYWxTY3JvbGxCYXIsIHZlcnRpY2FsU2Nyb2xsQmFyLndpZHRoIC8gMiwg dmVydGljYWxTY3JvbGxCYXIuaGVpZ2h0IC8gMiwgMCwgNTApCisrICAgICAgICB2ZXJpZnkodmVy dGljYWxTY3JvbGxCYXIuYWN0aXZlKQorKyAgICAgICAgdmVyaWZ5KGhvcml6b250YWxTY3JvbGxC YXIuYWN0aXZlKQorKyAgICB9CisgfQorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvdGVz dHMvYXV0by9jb250cm9scy9kYXRhL3RzdF9zd2l0Y2gucW1sIGIvcXRxdWlja2NvbnRyb2xzMi90 ZXN0cy9hdXRvL2NvbnRyb2xzL2RhdGEvdHN0X3N3aXRjaC5xbWwKK2luZGV4IGIzZmFiNDFjYS4u MTBiNmJhYTAyIDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRvL2NvbnRy b2xzL2RhdGEvdHN0X3N3aXRjaC5xbWwKKysrKyBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0 by9jb250cm9scy9kYXRhL3RzdF9zd2l0Y2gucW1sCitAQCAtNjA4LDQgKzYwOCwyNyBAQCBUZXN0 Q2FzZSB7CisgICAgICAgICBtb3VzZUNsaWNrKGNvbnRyb2wuaW5kaWNhdG9yKQorICAgICAgICAg dmVyaWZ5KGNvbnRyb2wuYWN0aXZlRm9jdXMpCisgICAgIH0KKysKKysgICAgQ29tcG9uZW50IHsK KysgICAgICAgIGlkOiBkZWxldGlvbk9yZGVyMQorKyAgICAgICAgSXRlbSB7CisrICAgICAgICAg ICAgSW1hZ2UgeyBpZDogaW5uZXJJbWFnZSB9CisrICAgICAgICAgICAgU3dpdGNoIHsgaW5kaWNh dG9yOiBpbm5lckltYWdlIH0KKysgICAgICAgIH0KKysgICAgfQorKworKyAgICBDb21wb25lbnQg eworKyAgICAgICAgaWQ6IGRlbGV0aW9uT3JkZXIyCisrICAgICAgICBJdGVtIHsKKysgICAgICAg ICAgICBTd2l0Y2ggeyBpbmRpY2F0b3I6IGlubmVySW1hZ2UgfQorKyAgICAgICAgICAgIEltYWdl IHsgaWQ6IGlubmVySW1hZ2UgfQorKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIGZ1bmN0aW9u IHRlc3RfZGVsZXRpb25PcmRlcigpIHsKKysgICAgICAgIHZhciBjb250cm9sMSA9IGNyZWF0ZVRl bXBvcmFyeU9iamVjdChkZWxldGlvbk9yZGVyMSwgdGVzdENhc2UpCisrICAgICAgICB2ZXJpZnko Y29udHJvbDEpCisrICAgICAgICB2YXIgY29udHJvbDIgPSBjcmVhdGVUZW1wb3JhcnlPYmplY3Qo ZGVsZXRpb25PcmRlcjIsIHRlc3RDYXNlKQorKyAgICAgICAgdmVyaWZ5KGNvbnRyb2wyKQorKyAg ICB9CisgfQorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2tw b3B1cC9kYXRhL3JlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uLnFtbCBiL3F0cXVpY2tjb250cm9s czIvdGVzdHMvYXV0by9xcXVpY2twb3B1cC9kYXRhL3JlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9u LnFtbAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMC4uOWU0NTk4YjlmCist LS0gL2Rldi9udWxsCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vcXF1aWNrcG9w dXAvZGF0YS9yZWxlYXNlQWZ0ZXJFeGl0VHJhbnNpdGlvbi5xbWwKK0BAIC0wLDAgKzEsNzggQEAK KysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorKyoqCisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBR dCBDb21wYW55IEx0ZC4KKysqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcv CisrKioKKysqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdGVzdCBzdWl0ZSBvZiB0aGUgUXQg VG9vbGtpdC4KKysqKgorKyoqICRRVF9CRUdJTl9MSUNFTlNFOkJTRCQKKysqKiBDb21tZXJjaWFs IExpY2Vuc2UgVXNhZ2UKKysqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0 IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCisrKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBj b21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCisrKiogU29mdHdh cmUgb3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFp bmVkIGluCisrKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENv bXBhbnkuIEZvciBsaWNlbnNpbmcgdGVybXMKKysqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6 Ly93d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKysqKiBpbmZvcm1hdGlv biB1c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgor KyoqCisrKiogQlNEIExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB5b3UgbWF5IHVz ZSB0aGlzIGZpbGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBCU0QgbGljZW5zZQorKyoqIGFzIGZv bGxvd3M6CisrKioKKysqKiAiUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrKiogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0 dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorKyoqIG1ldDoK KysqKiAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh Ym92ZSBjb3B5cmlnaHQKKysqKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKyoqICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyoqICAgICBu b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt ZXIgaW4KKysqKiAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw cm92aWRlZCB3aXRoIHRoZQorKyoqICAgICBkaXN0cmlidXRpb24uCisrKiogICAqIE5laXRoZXIg dGhlIG5hbWUgb2YgVGhlIFF0IENvbXBhbnkgTHRkIG5vciB0aGUgbmFtZXMgb2YgaXRzCisrKiog ICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj dHMgZGVyaXZlZAorKyoqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisrKioKKysqKgorKyoqIFRISVMgU09GVFdBUkUgSVMg UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKysqKiAi QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg QlVUIE5PVAorKyoqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorKyoqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisrKiogT1dORVIgT1Ig Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U QUwsCisrKiogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO Q0xVRElORywgQlVUIE5PVAorKyoqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorKyoqIERBVEEsIE9SIFBST0ZJVFM7 IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorKyoq IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ VFksIE9SIFRPUlQKKysqKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKysqKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiIKKysqKgorKyoq ICRRVF9FTkRfTElDRU5TRSQKKysqKgorKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisraW1wb3J0 IFF0UXVpY2sgMi4xNQorK2ltcG9ydCBRdFF1aWNrLkNvbnRyb2xzIDIuMTUKKysKKytBcHBsaWNh dGlvbldpbmRvdyB7CisrICAgIGlkOiB3aW5kb3cKKysgICAgd2lkdGg6IDQwMAorKyAgICBoZWln aHQ6IDQwMAorKyAgICB0aXRsZTogInJlbGVhc2VBZnRlckV4aXRUcmFuc2l0aW9uIgorKworKyAg ICBwcm9wZXJ0eSBhbGlhcyBwb3B1cDogcG9wdXAKKysgICAgcHJvcGVydHkgYWxpYXMgbW9kYWxQ b3B1cDogbW9kYWxQb3B1cAorKworKyAgICBQb3B1cCB7CisrICAgICAgICBpZDogcG9wdXAKKysg ICAgICAgIHk6IHBhcmVudC5oZWlnaHQgLSBoZWlnaHQKKysgICAgICAgIHdpZHRoOiA1MAorKyAg ICAgICAgaGVpZ2h0OiA1MAorKyAgICB9CisrCisrICAgIFBvcHVwIHsKKysgICAgICAgIGlkOiBt b2RhbFBvcHVwCisrICAgICAgICBtb2RhbDogdHJ1ZQorKyAgICAgICAgeTogcGFyZW50LmhlaWdo dCAtIGhlaWdodAorKyAgICAgICAgd2lkdGg6IDUwCisrICAgICAgICBoZWlnaHQ6IDUwCisrICAg ICAgICBleGl0OiAgVHJhbnNpdGlvbiB7IFBhdXNlQW5pbWF0aW9uIHsgZHVyYXRpb246IDEwMCB9 IH0KKysgICAgfQorK30KK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8v cXF1aWNrcG9wdXAvdHN0X3FxdWlja3BvcHVwLmNwcCBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMv YXV0by9xcXVpY2twb3B1cC90c3RfcXF1aWNrcG9wdXAuY3BwCitpbmRleCA1NDk1MmQxMjguLjNk NTBlMmRkNCAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9xcXVpY2tw b3B1cC90c3RfcXF1aWNrcG9wdXAuY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1 dG8vcXF1aWNrcG9wdXAvdHN0X3FxdWlja3BvcHVwLmNwcAorQEAgLTEwMCw2ICsxMDAsNyBAQCBw cml2YXRlIHNsb3RzOgorICAgICB2b2lkIGludmlzaWJsZVRvb2xUaXBPcGVuKCk7CisgICAgIHZv aWQgY2VudGVySW5PdmVybGF5V2l0aGluU3RhY2tWaWV3SXRlbSgpOworICAgICB2b2lkIGRlc3Ry b3lEdXJpbmdFeGl0VHJhbnNpdGlvbigpOworKyAgICB2b2lkIHJlbGVhc2VBZnRlckV4aXRUcmFu c2l0aW9uKCk7CisgfTsKKyAKKyB2b2lkIHRzdF9RUXVpY2tQb3B1cDo6aW5pdFRlc3RDYXNlKCkK K0BAIC0xNTc1LDYgKzE1NzYsMzQgQEAgdm9pZCB0c3RfUVF1aWNrUG9wdXA6OmRlc3Ryb3lEdXJp bmdFeGl0VHJhbnNpdGlvbigpCisgICAgIFFWRVJJRlkoIWJ1dHRvbi0+aXNEb3duKCkpOworIH0K KyAKKyt2b2lkIHRzdF9RUXVpY2tQb3B1cDo6cmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24oKQor K3sKKysgICAgUVF1aWNrQXBwbGljYXRpb25IZWxwZXIgaGVscGVyKHRoaXMsICJyZWxlYXNlQWZ0 ZXJFeGl0VHJhbnNpdGlvbi5xbWwiKTsKKysgICAgUVZFUklGWTIoaGVscGVyLnJlYWR5LCBoZWxw ZXIuZmFpbHVyZU1lc3NhZ2UoKSk7CisrCisrICAgIFFRdWlja1dpbmRvdyAqd2luZG93ID0gaGVs cGVyLndpbmRvdzsKKysgICAgd2luZG93LT5zaG93KCk7CisrICAgIFFWRVJJRlkoUVRlc3Q6OnFX YWl0Rm9yV2luZG93QWN0aXZlKHdpbmRvdykpOworKworKyAgICBRUXVpY2tPdmVybGF5ICpvdmVy bGF5ID0gUVF1aWNrT3ZlcmxheTo6b3ZlcmxheSh3aW5kb3cpOworKyAgICBRUXVpY2tQb3B1cCAq bW9kYWxQb3B1cCA9IHdpbmRvdy0+cHJvcGVydHkoIm1vZGFsUG9wdXAiKS52YWx1ZTxRUXVpY2tQ b3B1cCAqPigpOworKyAgICBRUXVpY2tQb3B1cCAqcG9wdXAgPSB3aW5kb3ctPnByb3BlcnR5KCJw b3B1cCIpLnZhbHVlPFFRdWlja1BvcHVwICo+KCk7CisrCisrICAgIG1vZGFsUG9wdXAtPm9wZW4o KTsKKysgICAgUVRSWV9WRVJJRlkobW9kYWxQb3B1cC0+aXNPcGVuZWQoKSk7CisrCisrICAgIFFU ZXN0Ojptb3VzZVByZXNzKHdpbmRvdywgUXQ6OkxlZnRCdXR0b24sIFF0OjpOb01vZGlmaWVyLCBR UG9pbnQoMSwgMSkpOworKyAgICAvLyB3YWl0IHVudGlsIHRoZSB0cmFuc2l0aW9uIGlzIGZpbmlz aGVkIGFuZCB0aGUgb3ZlcmxheSBoaWRlcyBpdHNlbGYKKysgICAgUVRSWV9WRVJJRlkoIW92ZXJs YXktPmlzVmlzaWJsZSgpKTsKKysgICAgUVRlc3Q6Om1vdXNlUmVsZWFzZSh3aW5kb3csIFF0OjpM ZWZ0QnV0dG9uLCBRdDo6Tm9Nb2RpZmllciwgUVBvaW50KDEsIDEpKTsKKysKKysgICAgcG9wdXAt Pm9wZW4oKTsKKysgICAgUVRSWV9WRVJJRlkocG9wdXAtPmlzT3BlbmVkKCkpOworKyAgICBRVGVz dDo6bW91c2VDbGljayh3aW5kb3csIFF0OjpMZWZ0QnV0dG9uLCBRdDo6Tm9Nb2RpZmllciwgUVBv aW50KDEsIDEpKTsKKysgICAgUVRSWV9WRVJJRlkoIXBvcHVwLT5pc09wZW5lZCgpKTsKKyt9Cisr CisrCisgUVRFU1RfUVVJQ0tDT05UUk9MU19NQUlOKHRzdF9RUXVpY2tQb3B1cCkKKyAKKyAjaW5j bHVkZSAidHN0X3FxdWlja3BvcHVwLm1vYyIKK1N1Ym1vZHVsZSBxdHNjcmlwdCA1YmU5NWY5Ni4u LjRkOGU0YmQyIChjb21taXRzIG5vdCBwcmVzZW50KQorU3VibW9kdWxlIHF0c3BlZWNoIDE3ZmM5 ZmRlLi4yNTU4NDVlMjoKK2RpZmYgLS1naXQgYS9xdHNwZWVjaC9zcmMvcGx1Z2lucy90dHMvc3Bl ZWNoZGlzcGF0Y2hlci9xdGV4dHRvc3BlZWNoX3NwZWVjaGQuY3BwIGIvcXRzcGVlY2gvc3JjL3Bs dWdpbnMvdHRzL3NwZWVjaGRpc3BhdGNoZXIvcXRleHR0b3NwZWVjaF9zcGVlY2hkLmNwcAoraW5k ZXggNmViNzRiOC4uYmNjN2RkMSAxMDA2NDQKKy0tLSBhL3F0c3BlZWNoL3NyYy9wbHVnaW5zL3R0 cy9zcGVlY2hkaXNwYXRjaGVyL3F0ZXh0dG9zcGVlY2hfc3BlZWNoZC5jcHAKKysrKyBiL3F0c3Bl ZWNoL3NyYy9wbHVnaW5zL3R0cy9zcGVlY2hkaXNwYXRjaGVyL3F0ZXh0dG9zcGVlY2hfc3BlZWNo ZC5jcHAKK0BAIC0zNTcsNyArMzU3LDkgQEAgUVZlY3RvcjxRTG9jYWxlPiBRVGV4dFRvU3BlZWNo RW5naW5lU3BlZWNoZDo6YXZhaWxhYmxlTG9jYWxlcygpIGNvbnN0CisgCisgUVZlY3RvcjxRVm9p Y2U+IFFUZXh0VG9TcGVlY2hFbmdpbmVTcGVlY2hkOjphdmFpbGFibGVWb2ljZXMoKSBjb25zdAor IHsKKy0gICAgcmV0dXJuIG1fdm9pY2VzLnZhbHVlcyhtX2N1cnJlbnRMb2NhbGUubmFtZSgpKS50 b1ZlY3RvcigpOworKyAgICBRTGlzdDxRVm9pY2U+IHJlc3VsdExpc3QgPSBtX3ZvaWNlcy52YWx1 ZXMobV9jdXJyZW50TG9jYWxlLm5hbWUoKSk7CisrICAgIHN0ZDo6cmV2ZXJzZShyZXN1bHRMaXN0 LmJlZ2luKCksIHJlc3VsdExpc3QuZW5kKCkpOworKyAgICByZXR1cm4gcmVzdWx0TGlzdC50b1Zl Y3RvcigpOworIH0KKyAKKyAvLyBXZSBoYXZlIG5vIHdheSBvZiBrbm93aW5nIG91ciBvd24gY2xp ZW50X2lkIHNpbmNlIHNwZWVjaC1kaXNwYXRjaGVyIHNlZW1zIHRvIGJlIGluY29tcGxldGUKK1N1 Ym1vZHVsZSBxdHN2ZyAwYzA1NzgwZS4uYTdhMGYyNDk6CitkaWZmIC0tZ2l0IGEvcXRzdmcvc3Jj L3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3N2Zy9xc3ZnaW9oYW5kbGVyLmNwcCBiL3F0c3ZnL3NyYy9w bHVnaW5zL2ltYWdlZm9ybWF0cy9zdmcvcXN2Z2lvaGFuZGxlci5jcHAKK2luZGV4IDU2MWU3N2Uu LjEyZTA1NzQgMTAwNjQ0CistLS0gYS9xdHN2Zy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvc3Zn L3Fzdmdpb2hhbmRsZXIuY3BwCisrKysgYi9xdHN2Zy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMv c3ZnL3Fzdmdpb2hhbmRsZXIuY3BwCitAQCAtMTkxLDYgKzE5MSw4IEBAIGJvb2wgUVN2Z0lPSGFu ZGxlcjo6cmVhZChRSW1hZ2UgKmltYWdlKQorICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAg ICAgICAgIGlmICghZmluYWxTaXplLmlzRW1wdHkoKSkgeworKyAgICAgICAgICAgIGlmIChxTWF4 KGZpbmFsU2l6ZS53aWR0aCgpLCBmaW5hbFNpemUuaGVpZ2h0KCkpID4gMHhmZmZmKQorKyAgICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEFzc3VtZSBjb3JydXB0ZWQgZmlsZQorICAgICAg ICAgICAgIGltYWdlLT5maWxsKGQtPmJhY2tDb2xvci5yZ2JhKCkpOworICAgICAgICAgICAgIFFQ YWludGVyIHAoaW1hZ2UpOworICAgICAgICAgICAgIGQtPnIucmVuZGVyKCZwLCBib3VuZHMpOwor ZGlmZiAtLWdpdCBhL3F0c3ZnL3NyYy9zdmcvcXN2Z2hhbmRsZXIuY3BwIGIvcXRzdmcvc3JjL3N2 Zy9xc3ZnaGFuZGxlci5jcHAKK2luZGV4IGE1Zjg3N2YuLjhkZGE1NjMgMTAwNjQ0CistLS0gYS9x dHN2Zy9zcmMvc3ZnL3FzdmdoYW5kbGVyLmNwcAorKysrIGIvcXRzdmcvc3JjL3N2Zy9xc3ZnaGFu ZGxlci5jcHAKK0BAIC0xMzkzLDkgKzEzOTMsMTAgQEAgc3RhdGljIHZvaWQgcGFyc2VGb250KFFT dmdOb2RlICpub2RlLAorICAgICAgICAgY2FzZSBGb250U2l6ZU5vbmU6CisgICAgICAgICAgICAg YnJlYWs7CisgICAgICAgICBjYXNlIEZvbnRTaXplVmFsdWU6IHsKKy0gICAgICAgICAgICBRU3Zn SGFuZGxlcjo6TGVuZ3RoVHlwZSBkdW1teTsgLy8gc2hvdWxkIGFsd2F5cyBiZSBwaXhlbCBzaXpl CistICAgICAgICAgICAgZm9udFN0eWxlLT5zZXRTaXplKHFNaW4ocGFyc2VMZW5ndGgoYXR0cmli dXRlcy5mb250U2l6ZSwgZHVtbXksIGhhbmRsZXIpLAorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHFyZWFsKDB4ZmZmZikpKTsKKysgICAgICAgICAgICBRU3ZnSGFuZGxlcjo6 TGVuZ3RoVHlwZSB0eXBlOworKyAgICAgICAgICAgIHFyZWFsIGZzID0gcGFyc2VMZW5ndGgoYXR0 cmlidXRlcy5mb250U2l6ZSwgdHlwZSwgaGFuZGxlcik7CisrICAgICAgICAgICAgZnMgPSBjb252 ZXJ0VG9QaXhlbHMoZnMsIHRydWUsIHR5cGUpOworKyAgICAgICAgICAgIGZvbnRTdHlsZS0+c2V0 U2l6ZShxTWluKGZzLCBxcmVhbCgweGZmZmYpKSk7CisgICAgICAgICB9CisgICAgICAgICAgICAg YnJlYWs7CisgICAgICAgICBkZWZhdWx0OgorQEAgLTI1MTMsNiArMjUxNCw4IEBAIHN0YXRpYyBi b29sIHBhcnNlQW5pbWF0ZVRyYW5zZm9ybU5vZGUoUVN2Z05vZGUgKnBhcmVudCwKKyAgICAgICAg ICAgICArK3M7CisgICAgICAgICB9CisgICAgIH0KKysgICAgaWYgKHZhbHMuY291bnQoKSAlIDMg IT0gMCkKKysgICAgICAgIHJldHVybiBmYWxzZTsKKyAKKyAgICAgYm9vbCBvayA9IHRydWU7Cisg ICAgIGludCBiZWdpbiA9IHBhcnNlQ2xvY2tWYWx1ZShiZWdpblN0ciwgJm9rKTsKK0BAIC0yNTc2 LDYgKzI1NzksOCBAQCBzdGF0aWMgUVN2Z05vZGUgKmNyZWF0ZUNpcmNsZU5vZGUoUVN2Z05vZGUg KnBhcmVudCwKKyAgICAgcXJlYWwgbmN4ID0gdG9Eb3VibGUoY3gpOworICAgICBxcmVhbCBuY3kg PSB0b0RvdWJsZShjeSk7CisgICAgIHFyZWFsIG5yICA9IHRvRG91YmxlKHIpOworKyAgICBpZiAo bnIgPCAwLjApCisrICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAKKyAgICAgUVJlY3RGIHJlY3Qo bmN4LW5yLCBuY3ktbnIsIG5yKjIsIG5yKjIpOworICAgICBRU3ZnTm9kZSAqY2lyY2xlID0gbmV3 IFFTdmdDaXJjbGUocGFyZW50LCByZWN0KTsKK0BAIC0zMDQ2LDE1ICszMDUxLDE2IEBAIHN0YXRp YyBRU3ZnU3R5bGVQcm9wZXJ0eSAqY3JlYXRlUmFkaWFsR3JhZGllbnROb2RlKFFTdmdOb2RlICpu b2RlLAorIAorICAgICBxcmVhbCBuY3ggPSAwLjU7CisgICAgIHFyZWFsIG5jeSA9IDAuNTsKKy0g ICAgcXJlYWwgbnIgID0gMC41OworICAgICBpZiAoIWN4LmlzRW1wdHkoKSkKKyAgICAgICAgIG5j eCA9IHRvRG91YmxlKGN4KTsKKyAgICAgaWYgKCFjeS5pc0VtcHR5KCkpCisgICAgICAgICBuY3kg PSB0b0RvdWJsZShjeSk7CisrCisrICAgIHFyZWFsIG5yID0gMC4wOworICAgICBpZiAoIXIuaXNF bXB0eSgpKQorICAgICAgICAgbnIgPSB0b0RvdWJsZShyKTsKKy0gICAgaWYgKG5yIDwgMC41KQor LSAgICAgICAgbnIgPSAwLjU7CisrICAgIGlmIChuciA8PSAwLjApCisrICAgICAgICByZXR1cm4g bnVsbHB0cjsKKyAKKyAgICAgcXJlYWwgbmZ4ID0gbmN4OworICAgICBpZiAoIWZ4LmlzRW1wdHko KSkKK0BAIC0zMzUwLDcgKzMzNTYsOSBAQCBzdGF0aWMgUVN2Z05vZGUgKmNyZWF0ZVRleHROb2Rl KFFTdmdOb2RlICpwYXJlbnQsCisgICAgIC8vIyMjIGVkaXRhYmxlIGFuZCByb3RhdGUgbm90IGhh bmRsZWQKKyAgICAgUVN2Z0hhbmRsZXI6Okxlbmd0aFR5cGUgdHlwZTsKKyAgICAgcXJlYWwgbngg PSBwYXJzZUxlbmd0aCh4LCB0eXBlLCBoYW5kbGVyKTsKKysgICAgbnggPSBjb252ZXJ0VG9QaXhl bHMobngsIHRydWUsIHR5cGUpOworICAgICBxcmVhbCBueSA9IHBhcnNlTGVuZ3RoKHksIHR5cGUs IGhhbmRsZXIpOworKyAgICBueSA9IGNvbnZlcnRUb1BpeGVscyhueSwgdHJ1ZSwgdHlwZSk7Cisg CisgICAgIFFTdmdOb2RlICp0ZXh0ID0gbmV3IFFTdmdUZXh0KHBhcmVudCwgUVBvaW50RihueCwg bnkpKTsKKyAgICAgcmV0dXJuIHRleHQ7CitAQCAtMzY5MSw5ICszNjk5LDcgQEAgdm9pZCBRU3Zn SGFuZGxlcjo6cGFyc2UoKQorICAgICAgICAgY2FzZSBRWG1sU3RyZWFtUmVhZGVyOjpFbmRFbGVt ZW50OgorICAgICAgICAgICAgIGVuZEVsZW1lbnQoeG1sLT5uYW1lKCkpOworICAgICAgICAgICAg ICsrcmVtYWluaW5nVW5maW5pc2hlZEVsZW1lbnRzOworLSAgICAgICAgICAgIC8vIGlmIHdlIGFy ZSB1c2luZyBzb21lYm9keSBlbHNlJ3MgcXhtbHN0cmVhbXJlYWRlcgorLSAgICAgICAgICAgIC8v IHdlIHNob3VsZCBub3QgcmVhZCB1bnRpbCB0aGUgZW5kIG9mIHRoZSBzdHJlYW0KKy0gICAgICAg ICAgICBkb25lID0gIW1fb3duc1JlYWRlciAmJiAoeG1sLT5uYW1lKCkgPT0gUUxhdGluMVN0cmlu Zygic3ZnIikpOworKyAgICAgICAgICAgIGRvbmUgPSAoeG1sLT5uYW1lKCkgPT0gUUxhdGluMVN0 cmluZygic3ZnIikpOworICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgY2FzZSBRWG1sU3Ry ZWFtUmVhZGVyOjpDaGFyYWN0ZXJzOgorICAgICAgICAgICAgIGNoYXJhY3RlcnMoeG1sLT50ZXh0 KCkpOworZGlmZiAtLWdpdCBhL3F0c3ZnL3NyYy9zdmcvcXN2Z3N0cnVjdHVyZS5jcHAgYi9xdHN2 Zy9zcmMvc3ZnL3FzdmdzdHJ1Y3R1cmUuY3BwCitpbmRleCBiODk2MDhiLi44OWM5ZTRlIDEwMDY0 NAorLS0tIGEvcXRzdmcvc3JjL3N2Zy9xc3Znc3RydWN0dXJlLmNwcAorKysrIGIvcXRzdmcvc3Jj L3N2Zy9xc3Znc3RydWN0dXJlLmNwcAorQEAgLTI1NSw5ICsyNTUsMTMgQEAgaW5saW5lIHN0YXRp YyBib29sIGlzU3VwcG9ydGVkU3ZnRmVhdHVyZShjb25zdCBRU3RyaW5nICZzdHIpCisgICAgIH07 CisgCisgICAgIGlmIChzdHIubGVuZ3RoKCkgPD0gTUFYX1dPUkRfTEVOR1RIICYmIHN0ci5sZW5n dGgoKSA+PSBNSU5fV09SRF9MRU5HVEgpIHsKKysgICAgICAgIGNvbnN0IGNoYXIxNl90IHVuaWNv ZGU0NCA9IHN0ci5hdCg0NCkudW5pY29kZSgpOworKyAgICAgICAgY29uc3QgY2hhcjE2X3QgdW5p Y29kZTQ1ID0gc3RyLmF0KDQ1KS51bmljb2RlKCk7CisrICAgICAgICBpZiAodW5pY29kZTQ0ID49 IHNpemVvZihhc3NvX3ZhbHVlcykgfHwgdW5pY29kZTQ1ID49IHNpemVvZihhc3NvX3ZhbHVlcykp CisrICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgY29uc3QgaW50IGtleSA9IHN0 ci5sZW5ndGgoKQorLSAgICAgICAgICAgICAgICAgICAgICAgICsgYXNzb192YWx1ZXNbc3RyLmF0 KDQ1KS51bmljb2RlKCldCistICAgICAgICAgICAgICAgICAgICAgICAgKyBhc3NvX3ZhbHVlc1tz dHIuYXQoNDQpLnVuaWNvZGUoKV07CisrICAgICAgICAgICAgICAgICAgICAgICAgKyBhc3NvX3Zh bHVlc1t1bmljb2RlNDVdCisrICAgICAgICAgICAgICAgICAgICAgICAgKyBhc3NvX3ZhbHVlc1t1 bmljb2RlNDRdOworICAgICAgICAgaWYgKGtleSA8PSBNQVhfSEFTSF9WQUxVRSAmJiBrZXkgPj0g MCkKKyAgICAgICAgICAgICByZXR1cm4gc3RyID09IFFMYXRpbjFTdHJpbmcod29yZGxpc3Rba2V5 XSk7CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdHN2Zy9zcmMvc3ZnL3Fzdmd0aW55ZG9jdW1lbnQu Y3BwIGIvcXRzdmcvc3JjL3N2Zy9xc3ZndGlueWRvY3VtZW50LmNwcAoraW5kZXggNjNkMDc5Ny4u MTllNzE1NCAxMDA2NDQKKy0tLSBhL3F0c3ZnL3NyYy9zdmcvcXN2Z3Rpbnlkb2N1bWVudC5jcHAK KysrKyBiL3F0c3ZnL3NyYy9zdmcvcXN2Z3Rpbnlkb2N1bWVudC5jcHAKK0BAIC00MzMsOCArNDMz LDE2IEBAIHZvaWQgUVN2Z1RpbnlEb2N1bWVudDo6ZHJhdyhRUGFpbnRlciAqcCwgUVN2Z0V4dHJh U3RhdGVzICYpCisgICAgIGRyYXcocCk7CisgfQorIAorK3N0YXRpYyBib29sIGlzVmFsaWRNYXRy aXgoY29uc3QgUVRyYW5zZm9ybSAmdHJhbnNmb3JtKQorK3sKKysgICAgcXJlYWwgZGV0ZXJtaW5h bnQgPSB0cmFuc2Zvcm0uZGV0ZXJtaW5hbnQoKTsKKysgICAgcmV0dXJuIHFJc0Zpbml0ZShkZXRl cm1pbmFudCk7CisrfQorKworIHZvaWQgUVN2Z1RpbnlEb2N1bWVudDo6bWFwU291cmNlVG9UYXJn ZXQoUVBhaW50ZXIgKnAsIGNvbnN0IFFSZWN0RiAmdGFyZ2V0UmVjdCwgY29uc3QgUVJlY3RGICZz b3VyY2VSZWN0KQorIHsKKysgICAgUVRyYW5zZm9ybSBvbGRUcmFuc2Zvcm0gPSBwLT53b3JsZFRy YW5zZm9ybSgpOworKworICAgICBRUmVjdEYgdGFyZ2V0ID0gdGFyZ2V0UmVjdDsKKyAgICAgaWYg KHRhcmdldC5pc0VtcHR5KCkpIHsKKyAgICAgICAgIFFQYWludERldmljZSAqZGV2ID0gcC0+ZGV2 aWNlKCk7CitAQCAtNDg3LDYgKzQ5NSw5IEBAIHZvaWQgUVN2Z1RpbnlEb2N1bWVudDo6bWFwU291 cmNlVG9UYXJnZXQoUVBhaW50ZXIgKnAsIGNvbnN0IFFSZWN0RiAmdGFyZ2V0UmVjdCwKKyAgICAg ICAgIH0KKyAjZW5kaWYKKyAgICAgfQorKworKyAgICBpZiAoIWlzVmFsaWRNYXRyaXgocC0+d29y bGRUcmFuc2Zvcm0oKSkpCisrICAgICAgICBwLT5zZXRXb3JsZFRyYW5zZm9ybShvbGRUcmFuc2Zv cm0pOworIH0KKyAKKyBRUmVjdEYgUVN2Z1RpbnlEb2N1bWVudDo6Ym91bmRzT25FbGVtZW50KGNv bnN0IFFTdHJpbmcgJmlkKSBjb25zdAorZGlmZiAtLWdpdCBhL3F0c3ZnL3Rlc3RzL2F1dG8vcXN2 Z3JlbmRlcmVyL3RzdF9xc3ZncmVuZGVyZXIuY3BwIGIvcXRzdmcvdGVzdHMvYXV0by9xc3ZncmVu ZGVyZXIvdHN0X3FzdmdyZW5kZXJlci5jcHAKK2luZGV4IDM2Yzc2ZWMuLmRiNzFlMDIgMTAwNjQ0 CistLS0gYS9xdHN2Zy90ZXN0cy9hdXRvL3FzdmdyZW5kZXJlci90c3RfcXN2Z3JlbmRlcmVyLmNw cAorKysrIGIvcXRzdmcvdGVzdHMvYXV0by9xc3ZncmVuZGVyZXIvdHN0X3FzdmdyZW5kZXJlci5j cHAKK0BAIC04Niw2ICs4Niw4IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgb3NzX2Z1enpf MjM3MzEoKTsKKyAgICAgdm9pZCBvc3NfZnV6el8yNDEzMSgpOworICAgICB2b2lkIG9zc19mdXp6 XzI0NzM4KCk7CisrICAgIHZvaWQgaWxsZWdhbEFuaW1hdGVUcmFuc2Zvcm1fZGF0YSgpOworKyAg ICB2b2lkIGlsbGVnYWxBbmltYXRlVHJhbnNmb3JtKCk7CisgCisgI2lmbmRlZiBRVF9OT19DT01Q UkVTUworICAgICB2b2lkIHRlc3RHekxvYWRpbmcoKTsKK0BAIC0xNjQ2LDUgKzE2NDgsMjIgQEAg dm9pZCB0c3RfUVN2Z1JlbmRlcmVyOjpvc3NfZnV6el8yNDczOCgpCisgICAgIFFTdmdSZW5kZXJl cigpLmxvYWQoUUJ5dGVBcnJheSgiPHN2Zz48cGF0aCBkPVwiYSAyIDFlLTIxMi4uLi4uXCI+Iikp OworIH0KKyAKKyt2b2lkIHRzdF9RU3ZnUmVuZGVyZXI6OmlsbGVnYWxBbmltYXRlVHJhbnNmb3Jt X2RhdGEoKQorK3sKKysgICAgUVRlc3Q6OmFkZENvbHVtbjxRQnl0ZUFycmF5Pigic3ZnIik7Cisr CisrICAgIFFUZXN0OjpuZXdSb3coImNhc2UxIikgPDwgUUJ5dGVBcnJheSgiPHN2Zz48YW5pbWF0 ZVRyYW5zZm9ybSB0eXBlPVwicm90YXRlXCIgYmVnaW49XCIxXCIgZHVyPVwiMlwiIHZhbHVlcz1c IjgsMCw1LDBcIj4iKTsKKysgICAgUVRlc3Q6Om5ld1JvdygiY2FzZTIiKSA8PCBRQnl0ZUFycmF5 KCI8c3ZnPjxhbmltYXRlVHJhbnNmb3JtIHR5cGU9XCJyb3RhdGVcIiBiZWdpbj1cIjFcIiBkdXI9 XCIyXCIgdmFsdWVzPVwiMSwyXCI+Iik7CisrICAgIFFUZXN0OjpuZXdSb3coImNhc2UzIikgPDwg UUJ5dGVBcnJheSgiPHN2Zz48YW5pbWF0ZVRyYW5zZm9ybSB0eXBlPVwicm90YXRlXCIgYmVnaW49 XCIxXCIgZHVyPVwiMlwiIGZyb209XCIuLiA1IDJcIiB0bz1cImZcIj4iKTsKKysgICAgUVRlc3Q6 Om5ld1JvdygiY2FzZTQiKSA8PCBRQnl0ZUFycmF5KCI8c3ZnPjxhbmltYXRlVHJhbnNmb3JtIHR5 cGU9XCJzY2FsZVwiIGJlZ2luPVwiMVwiIGR1cj1cIjJcIiBieT1cIi0tLC4uXCI+Iik7CisrfQor KworK3ZvaWQgdHN0X1FTdmdSZW5kZXJlcjo6aWxsZWdhbEFuaW1hdGVUcmFuc2Zvcm0oKQorK3sK KysgICAgUUZFVENIKFFCeXRlQXJyYXksIHN2Zyk7CisrICAgIFFTdmdSZW5kZXJlciByZW5kZXJl cjsKKysgICAgUVZFUklGWSghcmVuZGVyZXIubG9hZChzdmcpKTsgLy8gYWxzbyBzaG91bGRuJ3Qg YXNzZXJ0CisrfQorKworIFFURVNUX01BSU4odHN0X1FTdmdSZW5kZXJlcikKKyAjaW5jbHVkZSAi dHN0X3FzdmdyZW5kZXJlci5tb2MiCitTdWJtb2R1bGUgcXR0b29scyA2OTE0ZjdjOC4uMDkwZTUy NmU6CitkaWZmIC0tZ2l0IGEvcXR0b29scy9zcmMvYXNzaXN0YW50L3FoZWxwZ2VuZXJhdG9yL2hl bHBnZW5lcmF0b3IuY3BwIGIvcXR0b29scy9zcmMvYXNzaXN0YW50L3FoZWxwZ2VuZXJhdG9yL2hl bHBnZW5lcmF0b3IuY3BwCitpbmRleCBmZWFiMWUyZDUuLmNiZmI4MjUwNyAxMDA2NDQKKy0tLSBh L3F0dG9vbHMvc3JjL2Fzc2lzdGFudC9xaGVscGdlbmVyYXRvci9oZWxwZ2VuZXJhdG9yLmNwcAor KysrIGIvcXR0b29scy9zcmMvYXNzaXN0YW50L3FoZWxwZ2VuZXJhdG9yL2hlbHBnZW5lcmF0b3Iu Y3BwCitAQCAtNDQ1LDcgKzQ0NSw5IEBAIGJvb2wgSGVscEdlbmVyYXRvclByaXZhdGU6Omluc2Vy dEZpbGVzKGNvbnN0IFFTdHJpbmdMaXN0ICZmaWxlcywgY29uc3QgUVN0cmluZyAmCisgICAgIGlm IChmaWx0ZXJTZXRJZCA8IDApCisgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICsrZmlsdGVy U2V0SWQ7CistICAgIGZvciAoaW50IGF0dElkIDogcUFzQ29uc3QoZmlsdGVyQXR0cykpIHsKKysg ICAgUUxpc3Q8aW50PiBhdHRWYWx1ZXMgPSBmaWx0ZXJBdHRzLnZhbHVlcygpOworKyAgICBzdGQ6 OnNvcnQoYXR0VmFsdWVzLmJlZ2luKCksIGF0dFZhbHVlcy5lbmQoKSk7CisrICAgIGZvciAoaW50 IGF0dElkIDogcUFzQ29uc3QoYXR0VmFsdWVzKSkgeworICAgICAgICAgbV9xdWVyeS0+cHJlcGFy ZShRTGF0aW4xU3RyaW5nKCJJTlNFUlQgSU5UTyBGaWxlQXR0cmlidXRlU2V0VGFibGUgIgorICAg ICAgICAgICAgICJWQUxVRVMoPywgPykiKSk7CisgICAgICAgICBtX3F1ZXJ5LT5iaW5kVmFsdWUo MCwgZmlsdGVyU2V0SWQpOworU3VibW9kdWxlIHF0d2F5bGFuZCBkZmIwMTI5Yy4uMjkwNGUxYjM6 CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvY29uZmlndXJlLmpzb24gYi9xdHdh eWxhbmQvc3JjL2NsaWVudC9jb25maWd1cmUuanNvbgoraW5kZXggMmY0MjQ1ODAuLjI5MjIyMzU3 IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvY29uZmlndXJlLmpzb24KKysrKyBi L3F0d2F5bGFuZC9zcmMvY2xpZW50L2NvbmZpZ3VyZS5qc29uCitAQCAtMTQ5LDggKzE0OSw3IEBA CisgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmIgorICAgICAgICAgICAgICAgICBdCisgICAg ICAgICAgICAgfSwKKy0gICAgICAgICAgICAibGlicyI6ICItbGRybSIsCistICAgICAgICAgICAg InVzZSI6ICJlZ2wiCisrICAgICAgICAgICAgInVzZSI6ICJkcm0gZWdsIgorICAgICAgICAgfSwK KyAgICAgICAgICJ2dWxrYW4tc2VydmVyLWJ1ZmZlciI6IHsKKyAgICAgICAgICAgICAibGFiZWwi OiAiVnVsa2FuIEJ1ZmZlciBTaGFyaW5nIiwKK0BAIC0xNjgsNyArMTY3LDggQEAKKyAgICAgICAg ICAgICAgICAgICAgICJleHBvcnRBbGxvY0luZm8uaGFuZGxlVHlwZXMgPSBWS19FWFRFUk5BTF9N RU1PUllfSEFORExFX1RZUEVfT1BBUVVFX0ZEX0JJVF9LSFI7IiwKKyAgICAgICAgICAgICAgICAg ICAgICJyZXR1cm4gMDsiCisgICAgICAgICAgICAgICAgIF0KKy0gICAgICAgICAgICB9CisrICAg ICAgICAgICAgfSwKKysgICAgICAgICAgICAidXNlIjogIndheWxhbmQtY2xpZW50IgorICAgICAg ICAgfSwKKyAgICAgICAgICJlZ2xfMV81LXdheWxhbmQiOiB7CisgICAgICAgICAgICAgImxhYmVs IjogIkVHTCAxLjUgd2l0aCBXYXlsYW5kIFBsYXRmb3JtIiwKK0BAIC0xODMsNyArMTgzLDcgQEAK KyAgICAgICAgICAgICAgICAgICAgICJlZ2xHZXRQbGF0Zm9ybURpc3BsYXkoRUdMX1BMQVRGT1JN X1dBWUxBTkRfRVhULCAoc3RydWN0IHdsX2Rpc3BsYXkgKikobnVsbHB0ciksIG51bGxwdHIpOyIK KyAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgIH0sCistICAgICAgICAgICAgInVzZSI6 ICJlZ2wiCisrICAgICAgICAgICAgInVzZSI6ICJlZ2wgd2F5bGFuZC1jbGllbnQiCisgICAgICAg ICB9CisgICAgIH0sCisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFs L3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2Jh bC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5jcHAKK2luZGV4IDEyNWIxZTE5Li5lZGNjZmU2MyAx MDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4 dGVuc2lvbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNs aWVudGV4dGVuc2lvbi5jcHAKK0BAIC03NCw3ICs3NCwxMCBAQCB2b2lkIFFXYXlsYW5kQ2xpZW50 RXh0ZW5zaW9uUHJpdmF0ZTo6aGFuZGxlUmVnaXN0cnlHbG9iYWwodm9pZCAqZGF0YSwgOjp3bF9y ZWdpcworIHZvaWQgUVdheWxhbmRDbGllbnRFeHRlbnNpb246OmFkZFJlZ2lzdHJ5TGlzdGVuZXIo KQorIHsKKyAgICAgUV9EKFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKTsKKy0gICAgZC0+d2F5bGFu ZEludGVncmF0aW9uLT5kaXNwbGF5KCktPmFkZFJlZ2lzdHJ5TGlzdGVuZXIoJlFXYXlsYW5kQ2xp ZW50RXh0ZW5zaW9uUHJpdmF0ZTo6aGFuZGxlUmVnaXN0cnlHbG9iYWwsIHRoaXMpOworKyAgICBp ZiAoIWQtPnJlZ2lzdGVyZWQpIHsKKysgICAgICAgIGQtPndheWxhbmRJbnRlZ3JhdGlvbi0+ZGlz cGxheSgpLT5hZGRSZWdpc3RyeUxpc3RlbmVyKCZRV2F5bGFuZENsaWVudEV4dGVuc2lvblByaXZh dGU6OmhhbmRsZVJlZ2lzdHJ5R2xvYmFsLCB0aGlzKTsKKysgICAgICAgIGQtPnJlZ2lzdGVyZWQg PSB0cnVlOworKyAgICB9CisgfQorIAorIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uOjpRV2F5bGFu ZENsaWVudEV4dGVuc2lvbihjb25zdCBpbnQgdmVyKQorQEAgLTg4LDYgKzkxLDEzIEBAIFFXYXls YW5kQ2xpZW50RXh0ZW5zaW9uOjpRV2F5bGFuZENsaWVudEV4dGVuc2lvbihjb25zdCBpbnQgdmVy KQorICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHRoaXMsICJhZGRSZWdpc3RyeUxpc3Rl bmVyIiwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworIH0KKyAKKytRV2F5bGFuZENsaWVudEV4dGVu c2lvbjo6flFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKCkKKyt7CisrICAgIFFfRChRV2F5bGFuZENs aWVudEV4dGVuc2lvbik7CisrICAgIGlmIChkLT5yZWdpc3RlcmVkICYmICFRQ29yZUFwcGxpY2F0 aW9uOjpjbG9zaW5nRG93bigpKQorKyAgICAgICAgZC0+d2F5bGFuZEludGVncmF0aW9uLT5kaXNw bGF5KCktPnJlbW92ZUxpc3RlbmVyKCZRV2F5bGFuZENsaWVudEV4dGVuc2lvblByaXZhdGU6Omhh bmRsZVJlZ2lzdHJ5R2xvYmFsLCB0aGlzKTsKKyt9CisrCisgUXRXYXlsYW5kQ2xpZW50OjpRV2F5 bGFuZEludGVncmF0aW9uICpRV2F5bGFuZENsaWVudEV4dGVuc2lvbjo6aW50ZWdyYXRpb24oKSBj b25zdAorIHsKKyAgICAgUV9EKGNvbnN0IFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uKTsKK2RpZmYg LS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNp b24uaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lv bi5oCitpbmRleCA5ODI3MmU1Ny4uNWJkMjgzOTggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3Jj L2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24uaAorKysrIGIvcXR3YXlsYW5k L3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmgKK0BAIC02Myw2ICs2 Myw3IEBAIGNsYXNzIFFfV0FZTEFORF9DTElFTlRfRVhQT1JUIFFXYXlsYW5kQ2xpZW50RXh0ZW5z aW9uIDogcHVibGljIFFPYmplY3QKKyAgICAgUV9QUk9QRVJUWShib29sIGFjdGl2ZSBSRUFEIGlz QWN0aXZlIE5PVElGWSBhY3RpdmVDaGFuZ2VkKQorIHB1YmxpYzoKKyAgICAgUVdheWxhbmRDbGll bnRFeHRlbnNpb24oY29uc3QgaW50IHZlcnNpb24pOworKyAgICB+UVdheWxhbmRDbGllbnRFeHRl bnNpb24oKTsKKyAKKyAgICAgUXRXYXlsYW5kQ2xpZW50OjpRV2F5bGFuZEludGVncmF0aW9uICpp bnRlZ3JhdGlvbigpIGNvbnN0OworICAgICBpbnQgdmVyc2lvbigpIGNvbnN0OworZGlmZiAtLWdp dCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbl9w LmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb25f cC5oCitpbmRleCA2OWNjNDZhMC4uOTA5MWVmYmUgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3Jj L2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb25fcC5oCisrKysgYi9xdHdheWxh bmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb25fcC5oCitAQCAtNjgs NiArNjgsNyBAQCBwdWJsaWM6CisgICAgIFF0V2F5bGFuZENsaWVudDo6UVdheWxhbmRJbnRlZ3Jh dGlvbiAqd2F5bGFuZEludGVncmF0aW9uID0gbnVsbHB0cjsKKyAgICAgaW50IHZlcnNpb24gPSAt MTsKKyAgICAgYm9vbCBhY3RpdmUgPSBmYWxzZTsKKysgICAgYm9vbCByZWdpc3RlcmVkID0gZmFs c2U7CisgfTsKKyAKKyBjbGFzcyBRX1dBWUxBTkRfQ0xJRU5UX0VYUE9SVCBRV2F5bGFuZENsaWVu dEV4dGVuc2lvblRlbXBsYXRlUHJpdmF0ZSA6IHB1YmxpYyBRV2F5bGFuZENsaWVudEV4dGVuc2lv blByaXZhdGUKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFk ZXZpY2UuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlLmNwcAor aW5kZXggN2UyZTMzMDguLmUzZTYwZWQ1IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRkYXRhZGV2aWNlLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRkYXRhZGV2aWNlLmNwcAorQEAgLTcyLDYgKzcyLDggQEAgUVdheWxhbmREYXRhRGV2aWNl OjpRV2F5bGFuZERhdGFEZXZpY2UoUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlciAqbWFuYWdlciwg UVdheWwKKyAKKyBRV2F5bGFuZERhdGFEZXZpY2U6On5RV2F5bGFuZERhdGFEZXZpY2UoKQorIHsK KysgICAgaWYgKHdsX2RhdGFfZGV2aWNlX2dldF92ZXJzaW9uKG9iamVjdCgpKSA+PSBXTF9EQVRB X0RFVklDRV9SRUxFQVNFX1NJTkNFX1ZFUlNJT04pCisrICAgICAgICByZWxlYXNlKCk7CisgfQor IAorIFFXYXlsYW5kRGF0YU9mZmVyICpRV2F5bGFuZERhdGFEZXZpY2U6OnNlbGVjdGlvbk9mZmVy KCkgY29uc3QKK0BAIC0xMTAsNyArMTEyLDcgQEAgUVdheWxhbmREYXRhT2ZmZXIgKlFXYXlsYW5k RGF0YURldmljZTo6ZHJhZ09mZmVyKCkgY29uc3QKKyAgICAgcmV0dXJuIG1fZHJhZ09mZmVyLmRh dGEoKTsKKyB9CisgCistYm9vbCBRV2F5bGFuZERhdGFEZXZpY2U6OnN0YXJ0RHJhZyhRTWltZURh dGEgKm1pbWVEYXRhLCBRV2F5bGFuZFdpbmRvdyAqaWNvbikKKytib29sIFFXYXlsYW5kRGF0YURl dmljZTo6c3RhcnREcmFnKFFNaW1lRGF0YSAqbWltZURhdGEsIFF0OjpEcm9wQWN0aW9ucyBzdXBw b3J0ZWRBY3Rpb25zLCBRV2F5bGFuZFdpbmRvdyAqaWNvbikKKyB7CisgICAgIGF1dG8gKnNlYXQg PSBtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpOworICAgICBhdXRvICpvcmlnaW4gPSBz ZWF0LT5wb2ludGVyRm9jdXMoKTsKK0BAIC0xMjMsNyArMTI1LDI4IEBAIGJvb2wgUVdheWxhbmRE YXRhRGV2aWNlOjpzdGFydERyYWcoUU1pbWVEYXRhICptaW1lRGF0YSwgUVdheWxhbmRXaW5kb3cg Kmljb24pCisgICAgIH0KKyAKKyAgICAgbV9kcmFnU291cmNlLnJlc2V0KG5ldyBRV2F5bGFuZERh dGFTb3VyY2UobV9kaXNwbGF5LT5kbmRTZWxlY3Rpb25IYW5kbGVyKCksIG1pbWVEYXRhKSk7Cisr CisrICAgIGlmICh3bF9kYXRhX2RldmljZV9nZXRfdmVyc2lvbihvYmplY3QoKSkgPj0gMykKKysg ICAgICAgIG1fZHJhZ1NvdXJjZS0+c2V0X2FjdGlvbnMoZHJvcEFjdGlvbnNUb1dsKHN1cHBvcnRl ZEFjdGlvbnMpKTsKKysKKyAgICAgY29ubmVjdChtX2RyYWdTb3VyY2UuZGF0YSgpLCAmUVdheWxh bmREYXRhU291cmNlOjpjYW5jZWxsZWQsIHRoaXMsICZRV2F5bGFuZERhdGFEZXZpY2U6OmRyYWdT b3VyY2VDYW5jZWxsZWQpOworKyAgICBjb25uZWN0KG1fZHJhZ1NvdXJjZS5kYXRhKCksICZRV2F5 bGFuZERhdGFTb3VyY2U6OmRuZFJlc3BvbnNlVXBkYXRlZCwgdGhpcywgW3RoaXNdKGJvb2wgYWNj ZXB0ZWQsIFF0OjpEcm9wQWN0aW9uIGFjdGlvbikgeworKyAgICAgICAgICAgIGF1dG8gZHJhZyA9 IHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0 Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSk7CisrICAgICAgICAgICAgLy8gaW4gb2xkIHZlcnNp b25zIGRyb3AgYWN0aW9uIGlzIG5vdCBzZXQsIHNvIHdlIGd1ZXNzCisrICAgICAgICAgICAgaWYg KHdsX2RhdGFfc291cmNlX2dldF92ZXJzaW9uKG1fZHJhZ1NvdXJjZS0+b2JqZWN0KCkpIDwgMykg eworKyAgICAgICAgICAgICAgICBkcmFnLT5zZXRSZXNwb25zZShhY2NlcHRlZCk7CisrICAgICAg ICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2Ug cmVzcG9uc2UoYWNjZXB0ZWQsIGFjdGlvbik7CisrICAgICAgICAgICAgICAgIGRyYWctPnNldFJl c3BvbnNlKHJlc3BvbnNlKTsKKysgICAgICAgICAgICB9CisrICAgIH0pOworKyAgICBjb25uZWN0 KG1fZHJhZ1NvdXJjZS5kYXRhKCksICZRV2F5bGFuZERhdGFTb3VyY2U6OmRuZERyb3BwZWQsIHRo aXMsIFtdKGJvb2wgYWNjZXB0ZWQsIFF0OjpEcm9wQWN0aW9uIGFjdGlvbikgeworKyAgICAgICAg UVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgcmVzcG9uc2UoYWNjZXB0ZWQsIGFjdGlvbik7CisrICAg ICAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6 cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT5zZXREcm9wUmVzcG9uc2UocmVzcG9uc2Up OworKyAgICB9KTsKKysgICAgY29ubmVjdChtX2RyYWdTb3VyY2UuZGF0YSgpLCAmUVdheWxhbmRE YXRhU291cmNlOjpmaW5pc2hlZCwgdGhpcywgW10oKSB7CisrICAgICAgICBzdGF0aWNfY2FzdDxR V2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlv bigpLT5kcmFnKCkpLT5maW5pc2hEcmFnKCk7CisrICAgIH0pOworIAorICAgICBzdGFydF9kcmFn KG1fZHJhZ1NvdXJjZS0+b2JqZWN0KCksIG9yaWdpbi0+d2xTdXJmYWNlKCksIGljb24tPndsU3Vy ZmFjZSgpLCBtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5zZXJpYWwoKSk7CisgICAg IHJldHVybiB0cnVlOworQEAgLTE1Miw3ICsxNzUsNyBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmlj ZTo6ZGF0YV9kZXZpY2VfZHJvcCgpCisgICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gZHJhZy0+ c3VwcG9ydGVkQWN0aW9ucygpOworICAgICB9IGVsc2UgaWYgKG1fZHJhZ09mZmVyKSB7CisgICAg ICAgICBkcmFnRGF0YSA9IG1fZHJhZ09mZmVyLT5taW1lRGF0YSgpOworLSAgICAgICAgc3VwcG9y dGVkQWN0aW9ucyA9IFF0OjpDb3B5QWN0aW9uIHwgUXQ6Ok1vdmVBY3Rpb24gfCBRdDo6TGlua0Fj dGlvbjsKKysgICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBtX2RyYWdPZmZlci0+c3VwcG9ydGVk QWN0aW9ucygpOworICAgICB9IGVsc2UgeworICAgICAgICAgcmV0dXJuOworICAgICB9CitAQCAt MTYyLDcgKzE4NSwxMSBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfZHJv cCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRR3VpQXBwbGljYXRpb246OmtleWJvYXJkTW9kaWZpZXJz KCkpOworIAorICAgICBpZiAoZHJhZykgeworLSAgICAgICAgc3RhdGljX2Nhc3Q8UVdheWxhbmRE cmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJh ZygpKS0+ZmluaXNoRHJhZyhyZXNwb25zZSk7CisrICAgICAgICBhdXRvIGRyYWcgPSAgc3RhdGlj X2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50 ZWdyYXRpb24oKS0+ZHJhZygpKTsKKysgICAgICAgIGRyYWctPnNldERyb3BSZXNwb25zZShyZXNw b25zZSk7CisrICAgICAgICBkcmFnLT5maW5pc2hEcmFnKCk7CisrICAgIH0gZWxzZSBpZiAobV9k cmFnT2ZmZXIpIHsKKysgICAgICAgIG1fZHJhZ09mZmVyLT5maW5pc2goKTsKKyAgICAgfQorIH0K KyAKK0BAIC0xODYsNyArMjEzLDcgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2 aWNlX2VudGVyKHVpbnQzMl90IHNlcmlhbCwgd2xfc3VyZmFjZSAqc3VyZmFjZSwKKyAgICAgICAg IHN1cHBvcnRlZEFjdGlvbnMgPSBkcmFnLT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0gZWxz ZSBpZiAobV9kcmFnT2ZmZXIpIHsKKyAgICAgICAgIGRyYWdEYXRhID0gbV9kcmFnT2ZmZXItPm1p bWVEYXRhKCk7CistICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gUXQ6OkNvcHlBY3Rpb24gfCBR dDo6TW92ZUFjdGlvbiB8IFF0OjpMaW5rQWN0aW9uOworKyAgICAgICAgc3VwcG9ydGVkQWN0aW9u cyA9IG1fZHJhZ09mZmVyLT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0KKyAKKyAgICAgY29u c3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgJnJlc3BvbnNlID0gUVdpbmRvd1N5c3RlbUludGVy ZmFjZTo6aGFuZGxlRHJhZyhtX2RyYWdXaW5kb3csIGRyYWdEYXRhLCBtX2RyYWdQb2ludCwgc3Vw cG9ydGVkQWN0aW9ucywKK0BAIC0xOTcsMTEgKzIyNCw3IEBAIHZvaWQgUVdheWxhbmREYXRhRGV2 aWNlOjpkYXRhX2RldmljZV9lbnRlcih1aW50MzJfdCBzZXJpYWwsIHdsX3N1cmZhY2UgKnN1cmZh Y2UsCisgICAgICAgICBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9u UHJpdmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpLT5zZXRSZXNwb25zZShyZXNw b25zZSk7CisgICAgIH0KKyAKKy0gICAgaWYgKHJlc3BvbnNlLmlzQWNjZXB0ZWQoKSkgeworLSAg ICAgICAgd2xfZGF0YV9vZmZlcl9hY2NlcHQobV9kcmFnT2ZmZXItPm9iamVjdCgpLCBtX2VudGVy U2VyaWFsLCBtX2RyYWdPZmZlci0+Zmlyc3RGb3JtYXQoKS50b1V0ZjgoKS5jb25zdERhdGEoKSk7 CistICAgIH0gZWxzZSB7CistICAgICAgICB3bF9kYXRhX29mZmVyX2FjY2VwdChtX2RyYWdPZmZl ci0+b2JqZWN0KCksIG1fZW50ZXJTZXJpYWwsIG51bGxwdHIpOworLSAgICB9CisrICAgIHNlbmRS ZXNwb25zZShzdXBwb3J0ZWRBY3Rpb25zLCByZXNwb25zZSk7CisgfQorIAorIHZvaWQgUVdheWxh bmREYXRhRGV2aWNlOjpkYXRhX2RldmljZV9sZWF2ZSgpCitAQCAtMjM1LDEwICsyNTgsMTAgQEAg dm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNlX21vdGlvbih1aW50MzJfdCB0aW1l LCB3bF9maXhlZF90IHgsIHdsX2ZpeGUKKyAgICAgICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBkcmFn LT5zdXBwb3J0ZWRBY3Rpb25zKCk7CisgICAgIH0gZWxzZSB7CisgICAgICAgICBkcmFnRGF0YSA9 IG1fZHJhZ09mZmVyLT5taW1lRGF0YSgpOworLSAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IFF0 OjpDb3B5QWN0aW9uIHwgUXQ6Ok1vdmVBY3Rpb24gfCBRdDo6TGlua0FjdGlvbjsKKysgICAgICAg IHN1cHBvcnRlZEFjdGlvbnMgPSBtX2RyYWdPZmZlci0+c3VwcG9ydGVkQWN0aW9ucygpOworICAg ICB9CisgCistICAgIFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlIHJlc3BvbnNlID0gUVdpbmRvd1N5 c3RlbUludGVyZmFjZTo6aGFuZGxlRHJhZyhtX2RyYWdXaW5kb3csIGRyYWdEYXRhLCBtX2RyYWdQ b2ludCwgc3VwcG9ydGVkQWN0aW9ucywKKysgICAgY29uc3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9u c2UgcmVzcG9uc2UgPSBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVEcmFnKG1fZHJhZ1dp bmRvdywgZHJhZ0RhdGEsIG1fZHJhZ1BvaW50LCBzdXBwb3J0ZWRBY3Rpb25zLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUUd1aUFwcGxpY2F0aW9uOjptb3VzZUJ1dHRvbnMoKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFHdWlBcHBsaWNhdGlvbjo6a2V5Ym9hcmRNb2RpZmllcnMoKSk7CisgCitAQCAtMjQ2LDEx ICsyNjksNyBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfbW90aW9uKHVp bnQzMl90IHRpbWUsIHdsX2ZpeGVkX3QgeCwgd2xfZml4ZQorICAgICAgICAgc3RhdGljX2Nhc3Q8 UVdheWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRp b24oKS0+ZHJhZygpKS0+c2V0UmVzcG9uc2UocmVzcG9uc2UpOworICAgICB9CisgCistICAgIGlm IChyZXNwb25zZS5pc0FjY2VwdGVkKCkpIHsKKy0gICAgICAgIHdsX2RhdGFfb2ZmZXJfYWNjZXB0 KG1fZHJhZ09mZmVyLT5vYmplY3QoKSwgbV9lbnRlclNlcmlhbCwgbV9kcmFnT2ZmZXItPmZpcnN0 Rm9ybWF0KCkudG9VdGY4KCkuY29uc3REYXRhKCkpOworLSAgICB9IGVsc2UgeworLSAgICAgICAg d2xfZGF0YV9vZmZlcl9hY2NlcHQobV9kcmFnT2ZmZXItPm9iamVjdCgpLCBtX2VudGVyU2VyaWFs LCBudWxscHRyKTsKKy0gICAgfQorKyAgICBzZW5kUmVzcG9uc2Uoc3VwcG9ydGVkQWN0aW9ucywg cmVzcG9uc2UpOworIH0KKyAjZW5kaWYgLy8gUVRfQ09ORklHKGRyYWdhbmRkcm9wKQorIAorQEAg LTI3NywxNCArMjk2LDEwIEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpzZWxlY3Rpb25Tb3Vy Y2VDYW5jZWxsZWQoKQorICNpZiBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCisgdm9pZCBRV2F5bGFu ZERhdGFEZXZpY2U6OmRyYWdTb3VyY2VDYW5jZWxsZWQoKQorIHsKKysgICAgc3RhdGljX2Nhc3Q8 UVdheWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRp b24oKS0+ZHJhZygpKS0+ZmluaXNoRHJhZygpOworICAgICBtX2RyYWdTb3VyY2UucmVzZXQoKTsK KyB9CisgCistdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRyYWdTb3VyY2VUYXJnZXRDaGFuZ2Vk KGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlKQorLXsKKy0gICAgc3RhdGljX2Nhc3Q8UVdheWxhbmRE cmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJh ZygpKS0+dXBkYXRlVGFyZ2V0KG1pbWVUeXBlKTsKKy19CistCisgUVBvaW50IFFXYXlsYW5kRGF0 YURldmljZTo6Y2FsY3VsYXRlRHJhZ1Bvc2l0aW9uKGludCB4LCBpbnQgeSwgUVdpbmRvdyAqd25k KSBjb25zdAorIHsKKyAgICAgUVBvaW50IHBudCh3bF9maXhlZF90b19pbnQoeCksIHdsX2ZpeGVk X3RvX2ludCh5KSk7CitAQCAtMjk3LDYgKzMxMiwzMyBAQCBRUG9pbnQgUVdheWxhbmREYXRhRGV2 aWNlOjpjYWxjdWxhdGVEcmFnUG9zaXRpb24oaW50IHgsIGludCB5LCBRV2luZG93ICp3bmQpIGNv bgorICAgICB9CisgICAgIHJldHVybiBwbnQ7CisgfQorKworK3ZvaWQgUVdheWxhbmREYXRhRGV2 aWNlOjpzZW5kUmVzcG9uc2UoUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFjdGlvbnMsIGNvbnN0 IFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlICZyZXNwb25zZSkKKyt7CisrICAgIGlmIChyZXNwb25z ZS5pc0FjY2VwdGVkKCkpIHsKKysgICAgICAgIGlmICh3bF9kYXRhX2RldmljZV9nZXRfdmVyc2lv bihvYmplY3QoKSkgPj0gMykKKysgICAgICAgICAgICBtX2RyYWdPZmZlci0+c2V0X2FjdGlvbnMo ZHJvcEFjdGlvbnNUb1dsKHN1cHBvcnRlZEFjdGlvbnMpLCBkcm9wQWN0aW9uc1RvV2wocmVzcG9u c2UuYWNjZXB0ZWRBY3Rpb24oKSkpOworKworKyAgICAgICAgbV9kcmFnT2ZmZXItPmFjY2VwdCht X2VudGVyU2VyaWFsLCBtX2RyYWdPZmZlci0+Zmlyc3RGb3JtYXQoKSk7CisrICAgIH0gZWxzZSB7 CisrICAgICAgICBtX2RyYWdPZmZlci0+YWNjZXB0KG1fZW50ZXJTZXJpYWwsIFFTdHJpbmcoKSk7 CisrICAgIH0KKyt9CisrCisraW50IFFXYXlsYW5kRGF0YURldmljZTo6ZHJvcEFjdGlvbnNUb1ds KFF0OjpEcm9wQWN0aW9ucyBhY3Rpb25zKQorK3sKKysKKysgICAgaW50IHdsQWN0aW9ucyA9IFdM X0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElPTl9OT05FOworKyAgICBpZiAoYWN0aW9ucyAm IFF0OjpDb3B5QWN0aW9uKQorKyAgICAgICAgd2xBY3Rpb25zIHw9IFdMX0RBVEFfREVWSUNFX01B TkFHRVJfRE5EX0FDVElPTl9DT1BZOworKyAgICBpZiAoYWN0aW9ucyAmIChRdDo6TW92ZUFjdGlv biB8IFF0OjpUYXJnZXRNb3ZlQWN0aW9uKSkKKysgICAgICAgIHdsQWN0aW9ucyB8PSBXTF9EQVRB X0RFVklDRV9NQU5BR0VSX0RORF9BQ1RJT05fTU9WRTsKKysKKysgICAgLy8gd2F5bGFuZCBkb2Vz IG5vdCBzdXBwb3J0IExpbmtBY3Rpb24gYXQgdGhlIHRpbWUgb2Ygd3JpdGluZworKyAgICByZXR1 cm4gd2xBY3Rpb25zOworK30KKysKKysKKyAjZW5kaWYgLy8gUVRfQ09ORklHKGRyYWdhbmRkcm9w KQorIAorIH0KK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFk ZXZpY2VfcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlX3AuaAor aW5kZXggMTZjM2FkMjguLjgwMWRjYzJjIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRkYXRhZGV2aWNlX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRkYXRhZGV2aWNlX3AuaAorQEAgLTY0LDYgKzY0LDcgQEAgUVRfUkVRVUlSRV9DT05GSUco d2F5bGFuZF9kYXRhZGV2aWNlKTsKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBjbGFzcyBRTWlt ZURhdGE7CisrY2xhc3MgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2U7CisgY2xhc3MgUVdpbmRvdzsK KyAKKyBuYW1lc3BhY2UgUXRXYXlsYW5kQ2xpZW50IHsKK0BAIC04OSw3ICs5MCw3IEBAIHB1Ymxp YzoKKyAKKyAjaWYgUVRfQ09ORklHKGRyYWdhbmRkcm9wKQorICAgICBRV2F5bGFuZERhdGFPZmZl ciAqZHJhZ09mZmVyKCkgY29uc3Q7CistICAgIGJvb2wgc3RhcnREcmFnKFFNaW1lRGF0YSAqbWlt ZURhdGEsIFFXYXlsYW5kV2luZG93ICppY29uKTsKKysgICAgYm9vbCBzdGFydERyYWcoUU1pbWVE YXRhICptaW1lRGF0YSwgUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZEFjdGlvbnMsIFFXYXlsYW5k V2luZG93ICppY29uKTsKKyAgICAgdm9pZCBjYW5jZWxEcmFnKCk7CisgI2VuZGlmCisgCitAQCAt MTA5LDEzICsxMTAsMTYgQEAgcHJpdmF0ZSBRX1NMT1RTOgorIAorICNpZiBRVF9DT05GSUcoZHJh Z2FuZGRyb3ApCisgICAgIHZvaWQgZHJhZ1NvdXJjZUNhbmNlbGxlZCgpOworLSAgICB2b2lkIGRy YWdTb3VyY2VUYXJnZXRDaGFuZ2VkKGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlKTsKKyAjZW5kaWYK KyAKKyBwcml2YXRlOgorICNpZiBRVF9DT05GSUcoZHJhZ2FuZGRyb3ApCisgICAgIFFQb2ludCBj YWxjdWxhdGVEcmFnUG9zaXRpb24oaW50IHgsIGludCB5LCBRV2luZG93ICp3bmQpIGNvbnN0Owor ICNlbmRpZgorKyAgICB2b2lkIHNlbmRSZXNwb25zZShRdDo6RHJvcEFjdGlvbnMgc3VwcG9ydGVk QWN0aW9ucywgY29uc3QgUVBsYXRmb3JtRHJhZ1F0UmVzcG9uc2UgJnJlc3BvbnNlKTsKKysKKysg ICAgc3RhdGljIGludCBkcm9wQWN0aW9uc1RvV2woUXQ6OkRyb3BBY3Rpb25zIGRyb3BBY3Rpb25z KTsKKysKKyAKKyAgICAgUVdheWxhbmREaXNwbGF5ICptX2Rpc3BsYXkgPSBudWxscHRyOworICAg ICBRV2F5bGFuZElucHV0RGV2aWNlICptX2lucHV0RGV2aWNlID0gbnVsbHB0cjsKK2RpZmYgLS1n aXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyLmNwcCBi L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXIuY3BwCitpbmRl eCAzNWQ2NzMwNy4uNmRjNGY3N2YgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQv cXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlci5jcHAKK0BAIC01MCw4ICs1MCw4IEBAIFFUX0JFR0lO X05BTUVTUEFDRQorIAorIG5hbWVzcGFjZSBRdFdheWxhbmRDbGllbnQgeworIAorLVFXYXlsYW5k RGF0YURldmljZU1hbmFnZXI6OlFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIoUVdheWxhbmREaXNw bGF5ICpkaXNwbGF5LCB1aW50MzJfdCBpZCkKKy0gICAgOiB3bF9kYXRhX2RldmljZV9tYW5hZ2Vy KGRpc3BsYXktPndsX3JlZ2lzdHJ5KCksIGlkLCAxKQorK1FXYXlsYW5kRGF0YURldmljZU1hbmFn ZXI6OlFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5LCBp bnQgdmVyc2lvbiwgdWludDMyX3QgaWQpCisrICAgIDogd2xfZGF0YV9kZXZpY2VfbWFuYWdlcihk aXNwbGF5LT53bF9yZWdpc3RyeSgpLCBpZCwgcU1pbih2ZXJzaW9uLCAzKSkKKyAgICAgLCBtX2Rp c3BsYXkoZGlzcGxheSkKKyB7CisgICAgIC8vIENyZWF0ZSB0cmFuc2ZlciBkZXZpY2VzIGZvciBh bGwgaW5wdXQgZGV2aWNlcy4KK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZGRhdGFkZXZpY2VtYW5hZ2VyX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k ZGF0YWRldmljZW1hbmFnZXJfcC5oCitpbmRleCBiZDA1YzBmYi4uNTEwZDliZTQgMTAwNjQ0Cist LS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyX3AuaAor KysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlcl9wLmgK K0BAIC02OCw3ICs2OCw3IEBAIGNsYXNzIFFXYXlsYW5kSW5wdXREZXZpY2U7CisgY2xhc3MgUV9X QVlMQU5EX0NMSUVOVF9FWFBPUlQgUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlciA6IHB1YmxpYyBR dFdheWxhbmQ6OndsX2RhdGFfZGV2aWNlX21hbmFnZXIKKyB7CisgcHVibGljOgorLSAgICBRV2F5 bGFuZERhdGFEZXZpY2VNYW5hZ2VyKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSwgdWludDMyX3Qg aWQpOworKyAgICBRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyKFFXYXlsYW5kRGlzcGxheSAqZGlz cGxheSwgaW50IHZlcnNpb24sIHVpbnQzMl90IGlkKTsKKyAgICAgflFXYXlsYW5kRGF0YURldmlj ZU1hbmFnZXIoKSBvdmVycmlkZTsKKyAKKyAgICAgUVdheWxhbmREYXRhRGV2aWNlICpnZXREYXRh RGV2aWNlKFFXYXlsYW5kSW5wdXREZXZpY2UgKmlucHV0RGV2aWNlKTsKK2RpZmYgLS1naXQgYS9x dHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFvZmZlci5jcHAgYi9xdHdheWxhbmQvc3Jj L2NsaWVudC9xd2F5bGFuZGRhdGFvZmZlci5jcHAKK2luZGV4IDIyOTdlOGExLi5mZTBlYThjOSAx MDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyLmNwcAor KysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXIuY3BwCitAQCAtODIs NiArODIsMTUgQEAgUU1pbWVEYXRhICpRV2F5bGFuZERhdGFPZmZlcjo6bWltZURhdGEoKQorICAg ICByZXR1cm4gbV9taW1lRGF0YS5kYXRhKCk7CisgfQorIAorK1F0OjpEcm9wQWN0aW9ucyBRV2F5 bGFuZERhdGFPZmZlcjo6c3VwcG9ydGVkQWN0aW9ucygpIGNvbnN0CisreworKyAgICBpZiAod2xf ZGF0YV9vZmZlcl9nZXRfdmVyc2lvbihjb25zdF9jYXN0PDo6d2xfZGF0YV9vZmZlcio+KG9iamVj dCgpKSkgPCAzKSB7CisrICAgICAgICByZXR1cm4gUXQ6Ok1vdmVBY3Rpb24gfCBRdDo6Q29weUFj dGlvbjsKKysgICAgfQorKworKyAgICByZXR1cm4gbV9zdXBwb3J0ZWRBY3Rpb25zOworK30KKysK KyB2b2lkIFFXYXlsYW5kRGF0YU9mZmVyOjpzdGFydFJlY2VpdmluZyhjb25zdCBRU3RyaW5nICZt aW1lVHlwZSwgaW50IGZkKQorIHsKKyAgICAgcmVjZWl2ZShtaW1lVHlwZSwgZmQpOworQEAgLTkz LDYgKzEwMiwyMiBAQCB2b2lkIFFXYXlsYW5kRGF0YU9mZmVyOjpkYXRhX29mZmVyX29mZmVyKGNv bnN0IFFTdHJpbmcgJm1pbWVfdHlwZSkKKyAgICAgbV9taW1lRGF0YS0+YXBwZW5kRm9ybWF0KG1p bWVfdHlwZSk7CisgfQorIAorK3ZvaWQgUVdheWxhbmREYXRhT2ZmZXI6OmRhdGFfb2ZmZXJfYWN0 aW9uKHVpbnQzMl90IGRuZF9hY3Rpb24pCisreworKyAgICBRX1VOVVNFRChkbmRfYWN0aW9uKTsK KysgICAgLy8gVGhpcyBpcyB0aGUgY29tcG9zaXRvciB0ZWxsaW5nIHRoZSBkcmFnIHRhcmdldCB3 aGF0IGFjdGlvbiBpdCBzaG91bGQgcGVyZm9ybQorKyAgICAvLyBJdCBkb2VzIG5vdCBtYXAgbmlj ZWx5IGludG8gUXQgZmluYWwgZHJvcCBzZW1hbnRpY3MsIG90aGVyIHRoYW4gcHJldGVuZGluZyB0 aGVyZSBpcyBvbmx5IG9uZSBzdXBwb3J0ZWQgYWN0aW9uPworK30KKysKKyt2b2lkIFFXYXlsYW5k RGF0YU9mZmVyOjpkYXRhX29mZmVyX3NvdXJjZV9hY3Rpb25zKHVpbnQzMl90IHNvdXJjZV9hY3Rp b25zKQorK3sKKysgICAgbV9zdXBwb3J0ZWRBY3Rpb25zID0gUXQ6OkRyb3BBY3Rpb25zKCk7Cisr ICAgIGlmIChzb3VyY2VfYWN0aW9ucyAmIFdMX0RBVEFfREVWSUNFX01BTkFHRVJfRE5EX0FDVElP Tl9NT1ZFKQorKyAgICAgICAgbV9zdXBwb3J0ZWRBY3Rpb25zIHw9IFF0OjpNb3ZlQWN0aW9uOwor KyAgICBpZiAoc291cmNlX2FjdGlvbnMgJiBXTF9EQVRBX0RFVklDRV9NQU5BR0VSX0RORF9BQ1RJ T05fQ09QWSkKKysgICAgICAgIG1fc3VwcG9ydGVkQWN0aW9ucyB8PSBRdDo6Q29weUFjdGlvbjsK Kyt9CisrCisgUVdheWxhbmRNaW1lRGF0YTo6UVdheWxhbmRNaW1lRGF0YShRV2F5bGFuZEFic3Ry YWN0RGF0YU9mZmVyICpkYXRhT2ZmZXIpCisgICAgIDogbV9kYXRhT2ZmZXIoZGF0YU9mZmVyKQor IHsKK0BAIC0xNjMsMTcgKzE4OCwxOCBAQCBRVmFyaWFudCBRV2F5bGFuZE1pbWVEYXRhOjpyZXRy aWV2ZURhdGFfc3lzKGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlLCBRVmFyaWFudDo6VAorIAorIGlu dCBRV2F5bGFuZE1pbWVEYXRhOjpyZWFkRGF0YShpbnQgZmQsIFFCeXRlQXJyYXkgJmRhdGEpIGNv bnN0CisgeworLSAgICBmZF9zZXQgcmVhZHNldDsKKy0gICAgRkRfWkVSTygmcmVhZHNldCk7Cist ICAgIEZEX1NFVChmZCwgJnJlYWRzZXQpOworLSAgICBzdHJ1Y3QgdGltZXZhbCB0aW1lb3V0Owor KyAgICBzdHJ1Y3QgcG9sbGZkIHJlYWRzZXQ7CisrICAgIHJlYWRzZXQuZmQgPSBmZDsKKysgICAg cmVhZHNldC5ldmVudHMgPSBQT0xMSU47CisrICAgIHN0cnVjdCB0aW1lc3BlYyB0aW1lb3V0Owor ICAgICB0aW1lb3V0LnR2X3NlYyA9IDE7CistICAgIHRpbWVvdXQudHZfdXNlYyA9IDA7CisrICAg IHRpbWVvdXQudHZfbnNlYyA9IDA7CisrCisgCisgICAgIFFfRk9SRVZFUiB7CistICAgICAgICBp bnQgcmVhZHkgPSBzZWxlY3QoRkRfU0VUU0laRSwgJnJlYWRzZXQsIG51bGxwdHIsIG51bGxwdHIs ICZ0aW1lb3V0KTsKKysgICAgICAgIGludCByZWFkeSA9IHF0X3NhZmVfcG9sbCgmcmVhZHNldCwg MSwgJnRpbWVvdXQpOworICAgICAgICAgaWYgKHJlYWR5IDwgMCkgeworLSAgICAgICAgICAgIHFX YXJuaW5nKCkgPDwgIlFXYXlsYW5kRGF0YU9mZmVyOiBzZWxlY3QoKSBmYWlsZWQiOworKyAgICAg ICAgICAgIHFXYXJuaW5nKCkgPDwgIlFXYXlsYW5kRGF0YU9mZmVyOiBxdF9zYWZlX3BvbGwoKSBm YWlsZWQiOworICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgIH0gZWxzZSBpZiAocmVh ZHkgPT0gMCkgeworICAgICAgICAgICAgIHFXYXJuaW5nKCJRV2F5bGFuZERhdGFPZmZlcjogdGlt ZW91dCByZWFkaW5nIGZyb20gcGlwZSIpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kZGF0YW9mZmVyX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k ZGF0YW9mZmVyX3AuaAoraW5kZXggOWNmMTQ4M2MuLjZmNjY3Mzk4IDEwMDY0NAorLS0tIGEvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXJfcC5oCisrKysgYi9xdHdheWxhbmQv c3JjL2NsaWVudC9xd2F5bGFuZGRhdGFvZmZlcl9wLmgKK0BAIC04Miw2ICs4Miw3IEBAIHB1Ymxp YzoKKyAgICAgZXhwbGljaXQgUVdheWxhbmREYXRhT2ZmZXIoUVdheWxhbmREaXNwbGF5ICpkaXNw bGF5LCBzdHJ1Y3QgOjp3bF9kYXRhX29mZmVyICpvZmZlcik7CisgICAgIH5RV2F5bGFuZERhdGFP ZmZlcigpIG92ZXJyaWRlOworICAgICBRTWltZURhdGEgKm1pbWVEYXRhKCkgb3ZlcnJpZGU7Cisr ICAgIFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0ZWRBY3Rpb25zKCkgY29uc3Q7CisgCisgICAgIFFT dHJpbmcgZmlyc3RGb3JtYXQoKSBjb25zdDsKKyAKK0BAIC04OSwxMCArOTAsMTMgQEAgcHVibGlj OgorIAorIHByb3RlY3RlZDoKKyAgICAgdm9pZCBkYXRhX29mZmVyX29mZmVyKGNvbnN0IFFTdHJp bmcgJm1pbWVfdHlwZSkgb3ZlcnJpZGU7CisrICAgIHZvaWQgZGF0YV9vZmZlcl9zb3VyY2VfYWN0 aW9ucyh1aW50MzJfdCBzb3VyY2VfYWN0aW9ucykgb3ZlcnJpZGU7CisrICAgIHZvaWQgZGF0YV9v ZmZlcl9hY3Rpb24odWludDMyX3QgZG5kX2FjdGlvbikgb3ZlcnJpZGU7CisgCisgcHJpdmF0ZToK KyAgICAgUVdheWxhbmREaXNwbGF5ICptX2Rpc3BsYXkgPSBudWxscHRyOworICAgICBRU2NvcGVk UG9pbnRlcjxRV2F5bGFuZE1pbWVEYXRhPiBtX21pbWVEYXRhOworKyAgICBRdDo6RHJvcEFjdGlv bnMgbV9zdXBwb3J0ZWRBY3Rpb25zOworIH07CisgCisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5k L3NyYy9jbGllbnQvcXdheWxhbmRkYXRhc291cmNlLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50 L3F3YXlsYW5kZGF0YXNvdXJjZS5jcHAKK2luZGV4IGY0NTEyMmZiLi41NTk5Y2JkNCAxMDA2NDQK Ky0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZS5jcHAKKysrKyBi L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZS5jcHAKK0BAIC0xMDEsNyAr MTAxLDMyIEBAIHZvaWQgUVdheWxhbmREYXRhU291cmNlOjpkYXRhX3NvdXJjZV9zZW5kKGNvbnN0 IFFTdHJpbmcgJm1pbWVfdHlwZSwgaW50MzJfdCBmZCkKKyAKKyB2b2lkIFFXYXlsYW5kRGF0YVNv dXJjZTo6ZGF0YV9zb3VyY2VfdGFyZ2V0KGNvbnN0IFFTdHJpbmcgJm1pbWVfdHlwZSkKKyB7Cist ICAgIFFfRU1JVCB0YXJnZXRDaGFuZ2VkKG1pbWVfdHlwZSk7CisrICAgIG1fYWNjZXB0ZWQgPSAh bWltZV90eXBlLmlzRW1wdHkoKTsKKysgICAgUV9FTUlUIGRuZFJlc3BvbnNlVXBkYXRlZChtX2Fj Y2VwdGVkLCBtX2Ryb3BBY3Rpb24pOworK30KKysKKyt2b2lkIFFXYXlsYW5kRGF0YVNvdXJjZTo6 ZGF0YV9zb3VyY2VfYWN0aW9uKHVpbnQzMl90IGFjdGlvbikKKyt7CisrICAgIFF0OjpEcm9wQWN0 aW9uIHF0QWN0aW9uID0gUXQ6Oklnbm9yZUFjdGlvbjsKKysKKysgICAgaWYgKGFjdGlvbiA9PSBX TF9EQVRBX0RFVklDRV9NQU5BR0VSX0RORF9BQ1RJT05fTU9WRSkKKysgICAgICAgIHF0QWN0aW9u ID0gUXQ6Ok1vdmVBY3Rpb247CisrICAgIGVsc2UgaWYgKGFjdGlvbiA9PSBXTF9EQVRBX0RFVklD RV9NQU5BR0VSX0RORF9BQ1RJT05fQ09QWSkKKysgICAgICAgIHF0QWN0aW9uID0gUXQ6OkNvcHlB Y3Rpb247CisrCisrICAgIG1fZHJvcEFjdGlvbiA9IHF0QWN0aW9uOworKyAgICBRX0VNSVQgZG5k UmVzcG9uc2VVcGRhdGVkKG1fYWNjZXB0ZWQsIG1fZHJvcEFjdGlvbik7CisrfQorKworK3ZvaWQg UVdheWxhbmREYXRhU291cmNlOjpkYXRhX3NvdXJjZV9kbmRfZmluaXNoZWQoKQorK3sKKysgICAg UV9FTUlUIGZpbmlzaGVkKCk7CisrfQorKworK3ZvaWQgUVdheWxhbmREYXRhU291cmNlOjpkYXRh X3NvdXJjZV9kbmRfZHJvcF9wZXJmb3JtZWQoKQorK3sKKysKKysgICAgUV9FTUlUIGRuZERyb3Bw ZWQobV9hY2NlcHRlZCwgbV9kcm9wQWN0aW9uKTsKKyB9CisgCisgfQorZGlmZiAtLWdpdCBhL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZV9wLmggYi9xdHdheWxhbmQvc3Jj L2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2VfcC5oCitpbmRleCAyNWFmZmY3OS4uOTZmMDdiYzMg MTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2VfcC5o CisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2VfcC5oCitAQCAt NzcsMTcgKzc3LDI1IEBAIHB1YmxpYzoKKyAgICAgUU1pbWVEYXRhICptaW1lRGF0YSgpIGNvbnN0 OworIAorIFFfU0lHTkFMUzoKKy0gICAgdm9pZCB0YXJnZXRDaGFuZ2VkKGNvbnN0IFFTdHJpbmcg Jm1pbWVfdHlwZSk7CisgICAgIHZvaWQgY2FuY2VsbGVkKCk7CisrICAgIHZvaWQgZmluaXNoZWQo KTsKKysKKysgICAgdm9pZCBkbmRSZXNwb25zZVVwZGF0ZWQoYm9vbCBhY2NlcHRlZCwgUXQ6OkRy b3BBY3Rpb24gYWN0aW9uKTsKKysgICAgdm9pZCBkbmREcm9wcGVkKGJvb2wgYWNjZXB0ZWQsIFF0 OjpEcm9wQWN0aW9uIGFjdGlvbik7CisgCisgcHJvdGVjdGVkOgorICAgICB2b2lkIGRhdGFfc291 cmNlX2NhbmNlbGxlZCgpIG92ZXJyaWRlOworICAgICB2b2lkIGRhdGFfc291cmNlX3NlbmQoY29u c3QgUVN0cmluZyAmbWltZV90eXBlLCBpbnQzMl90IGZkKSBvdmVycmlkZTsKKyAgICAgdm9pZCBk YXRhX3NvdXJjZV90YXJnZXQoY29uc3QgUVN0cmluZyAmbWltZV90eXBlKSBvdmVycmlkZTsKKysg ICAgdm9pZCBkYXRhX3NvdXJjZV9kbmRfZHJvcF9wZXJmb3JtZWQoKSBvdmVycmlkZTsKKysgICAg dm9pZCBkYXRhX3NvdXJjZV9kbmRfZmluaXNoZWQoKSBvdmVycmlkZTsKKysgICAgdm9pZCBkYXRh X3NvdXJjZV9hY3Rpb24odWludDMyX3QgYWN0aW9uKSBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgor ICAgICBRV2F5bGFuZERpc3BsYXkgKm1fZGlzcGxheSA9IG51bGxwdHI7CisgICAgIFFNaW1lRGF0 YSAqbV9taW1lX2RhdGEgPSBudWxscHRyOworKyAgICBib29sIG1fYWNjZXB0ZWQgPSBmYWxzZTsK KysgICAgUXQ6OkRyb3BBY3Rpb24gbV9kcm9wQWN0aW9uID0gUXQ6Oklnbm9yZUFjdGlvbjsKKyB9 OworIAorIH0KK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRpc3Bs YXkuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5LmNwcAoraW5kZXgg ZjEwYzFmNzkuLmMwMWUyMzhiIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRkaXNwbGF5LmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNw bGF5LmNwcAorQEAgLTg1LDEwICs4NSwyMDMgQEAKKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAK KysjaW5jbHVkZSA8dHVwbGU+IC8vIGZvciBzdGQ6OnRpZQorKworK3N0YXRpYyB2b2lkIGNoZWNr V2F5bGFuZEVycm9yKHN0cnVjdCB3bF9kaXNwbGF5ICpkaXNwbGF5KQorK3sKKysgICAgaW50IGVj b2RlID0gd2xfZGlzcGxheV9nZXRfZXJyb3IoZGlzcGxheSk7CisrICAgIGlmICgoZWNvZGUgPT0g RVBJUEUgfHwgZWNvZGUgPT0gRUNPTk5SRVNFVCkpIHsKKysgICAgICAgIC8vIHNwZWNpYWwgY2Fz ZSB0aGlzIHRvIHByb3ZpZGUgYSBuaWNlciBlcnJvcgorKyAgICAgICAgcVdhcm5pbmcoIlRoZSBX YXlsYW5kIGNvbm5lY3Rpb24gYnJva2UuIERpZCB0aGUgV2F5bGFuZCBjb21wb3NpdG9yIGRpZT8i KTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIHFXYXJuaW5nKCJUaGUgV2F5bGFuZCBjb25uZWN0 aW9uIGV4cGVyaWVuY2VkIGEgZmF0YWwgZXJyb3I6ICVzIiwgc3RyZXJyb3IoZWNvZGUpKTsKKysg ICAgfQorKyAgICBfZXhpdCgxKTsKKyt9CisrCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisgbmFt ZXNwYWNlIFF0V2F5bGFuZENsaWVudCB7CisgCisrY2xhc3MgRXZlbnRUaHJlYWQgOiBwdWJsaWMg UVRocmVhZAorK3sKKysgICAgUV9PQkpFQ1QKKytwdWJsaWM6CisrICAgIGVudW0gT3BlcmF0aW5n TW9kZSB7CisrICAgICAgICBFbWl0VG9EaXNwYXRjaCwgLy8gRW1pdCB0aGUgc2lnbmFsLCBhbGxv dyBkaXNwYXRjaGluZyBpbiBhIGRpZmZlcm50IHRocmVhZC4KKysgICAgICAgIFNlbGZEaXNwYXRj aCwgLy8gRGlzcGF0Y2ggdGhlIGV2ZW50cyBpbnNpZGUgdGhpcyB0aHJlYWQuCisrICAgIH07Cisr CisrICAgIEV2ZW50VGhyZWFkKHN0cnVjdCB3bF9kaXNwbGF5ICogd2wsIHN0cnVjdCB3bF9ldmVu dF9xdWV1ZSAqIGV2X3F1ZXVlLAorKyAgICAgICAgICAgICAgICBPcGVyYXRpbmdNb2RlIG1vZGUp CisrICAgICAgICA6IG1fZmQod2xfZGlzcGxheV9nZXRfZmQod2wpKQorKyAgICAgICAgLCBtX3Bp cGVmZHsgLTEsIC0xIH0KKysgICAgICAgICwgbV93bGRpc3BsYXkod2wpCisrICAgICAgICAsIG1f d2xldnF1ZXVlKGV2X3F1ZXVlKQorKyAgICAgICAgLCBtX21vZGUobW9kZSkKKysgICAgICAgICwg bV9yZWFkaW5nKHRydWUpCisrICAgICAgICAsIG1fcXVpdHRpbmcoZmFsc2UpCisrICAgIHsKKysg ICAgICAgIHNldE9iamVjdE5hbWUoUVN0cmluZ0xpdGVyYWwoIldheWxhbmRFdmVudFRocmVhZCIp KTsKKysgICAgfQorKworKyAgICB2b2lkIHJlYWRBbmREaXNwYXRjaEV2ZW50cygpCisrICAgIHsK KysgICAgICAgIC8qCisrICAgICAgICAgKiBEaXNwYXRjaCBwZW5kaW5nIGV2ZW50cyBhbmQgZmx1 c2ggdGhlIHJlcXVlc3RzIGF0IGxlYXN0IG9uY2UuIElmIHRoZSBldmVudCB0aHJlYWQKKysgICAg ICAgICAqIGlzIG5vdCByZWFkaW5nLCB0cnkgdG8gY2FsbCBfcHJlcGFyZV9yZWFkKCkgdG8gYWxs b3cgdGhlIGV2ZW50IHRocmVhZCB0byBwb2xsKCkuCisrICAgICAgICAgKiBJZiB0aGF0IGZhaWxz LCByZS10cnkgZGlzcGF0Y2ggJiBmbHVzaCBhZ2FpbiB1bnRpbCBfcHJlcGFyZV9yZWFkKCkgaXMg c3VjY2Vzc2Z1bC4KKysgICAgICAgICAqCisrICAgICAgICAgKiBUaGlzIGFsbG93IGFueSBjYWxs IHRvIHJlYWRBbmREaXNwYXRjaEV2ZW50cygpIHRvIHN0YXJ0IGV2ZW50IHRocmVhZCdzIHBvbGxp bmcsCisrICAgICAgICAgKiBub3Qgb25seSB0aGUgb25lIGlzc3VlZCBmcm9tIGV2ZW50IHRocmVh ZCdzIHdhaXRGb3JSZWFkaW5nKCksIHdoaWNoIG1lYW5zIGZ1bmN0aW9ucworKyAgICAgICAgICog Y2FsbGVkIGZyb20gZGlzcGF0Y2hfcGVuZGluZygpIGNhbiBzYWZlbHkgc3BpbiBhbiBldmVudCBs b29wLgorKyAgICAgICAgICovCisrICAgICAgICBmb3IgKDs7KSB7CisrICAgICAgICAgICAgaWYg KGRpc3BhdGNoUXVldWVQZW5kaW5nKCkgPCAwKSB7CisrICAgICAgICAgICAgICAgIGNoZWNrV2F5 bGFuZEVycm9yKG1fd2xkaXNwbGF5KTsKKysgICAgICAgICAgICAgICAgcmV0dXJuOworKyAgICAg ICAgICAgIH0KKysKKysgICAgICAgICAgICB3bF9kaXNwbGF5X2ZsdXNoKG1fd2xkaXNwbGF5KTsK KysKKysgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGNoZWNrIGlmIGV2ZW50IHRocmVhZCBpcyBy ZWFkaW5nIGV2ZXJ5IHRpbWUgd2UgZGlzcGF0Y2gKKysgICAgICAgICAgICAvLyBzb21ldGhpbmcs IGFzIHRoYXQgbWF5IHJlY3Vyc2l2ZWx5IGNhbGwgdGhpcyBmdW5jdGlvbi4KKysgICAgICAgICAg ICBpZiAobV9yZWFkaW5nLmxvYWRBY3F1aXJlKCkpCisrICAgICAgICAgICAgICAgIGJyZWFrOwor KworKyAgICAgICAgICAgIGlmIChwcmVwYXJlUmVhZFF1ZXVlKCkgPT0gMCkgeworKyAgICAgICAg ICAgICAgICBRTXV0ZXhMb2NrZXIgbCgmbV9tdXRleCk7CisrICAgICAgICAgICAgICAgIG1fcmVh ZGluZy5zdG9yZVJlbGVhc2UodHJ1ZSk7CisrICAgICAgICAgICAgICAgIG1fY29uZC53YWtlT25l KCk7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0K KysgICAgfQorKworKyAgICB2b2lkIHN0b3AoKQorKyAgICB7CisrICAgICAgICAvLyBXZSBoYXZl IHRvIGJvdGggd3JpdGUgdG8gdGhlIHBpcGUgYW5kIHNldCB0aGUgZmxhZywgYXMgdGhlIHRocmVh ZCBtYXkgYmUKKysgICAgICAgIC8vIGVpdGhlciBpbiB0aGUgcG9sbCgpIG9yIHdhaXRpbmcgZm9y IF9wcmVwYXJlX3JlYWQoKS4KKysgICAgICAgIGlmIChtX3BpcGVmZFsxXSAhPSAtMSAmJiB3cml0 ZShtX3BpcGVmZFsxXSwgIlwwIiwgMSkgPT0gLTEpCisrICAgICAgICAgICAgcVdhcm5pbmcoIkZh aWxlZCB0byB3cml0ZSB0byB0aGUgcGlwZTogJXMuIiwgc3RyZXJyb3IoZXJybm8pKTsKKysKKysg ICAgICAgIHsKKysgICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbCgmbV9tdXRleCk7CisrICAgICAg ICAgICAgbV9xdWl0dGluZyA9IHRydWU7CisrICAgICAgICAgICAgbV9jb25kLndha2VPbmUoKTsK KysgICAgICAgIH0KKysKKysgICAgICAgIHdhaXQoKTsKKysgICAgfQorKworK1FfU0lHTkFMUzoK KysgICAgdm9pZCBuZWVkUmVhZEFuZERpc3BhdGNoKCk7CisrCisrcHJvdGVjdGVkOgorKyAgICB2 b2lkIHJ1bigpIG92ZXJyaWRlCisrICAgIHsKKysgICAgICAgIC8vIHdlIHVzZSB0aGlzIHBpcGUg dG8gbWFrZSB0aGUgbG9vcCBleGl0IG90aGVyd2lzZSBpZiB3ZSBzaW1wbHkgdXNlZCBhIGZsYWcg b24gdGhlIGxvb3AgY29uZGl0aW9uLCBpZiBzdG9wKCkgZ2V0cworKyAgICAgICAgLy8gY2FsbGVk IHdoaWxlIHBvbGwoKSBpcyBibG9ja2luZyB0aGUgdGhyZWFkIHdpbGwgbmV2ZXIgcXVpdCBzaW5j ZSB0aGVyZSBhcmUgbm8gd2F5bGFuZCBtZXNzYWdlcyBjb21pbmcgYW55bW9yZS4KKysgICAgICAg IHN0cnVjdCBQaXBlCisrICAgICAgICB7CisrICAgICAgICAgICAgUGlwZShpbnQgKmZkcykKKysg ICAgICAgICAgICAgICAgOiBmZHMoZmRzKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAg ICAgaWYgKHF0X3NhZmVfcGlwZShmZHMpICE9IDApCisrICAgICAgICAgICAgICAgICAgICBxV2Fy bmluZygiUGlwZSBjcmVhdGlvbiBmYWlsZWQuIFF1aXR0aW5nIG1heSBoYW5nLiIpOworKyAgICAg ICAgICAgIH0KKysgICAgICAgICAgICB+UGlwZSgpCisrICAgICAgICAgICAgeworKyAgICAgICAg ICAgICAgICBpZiAoZmRzWzBdICE9IC0xKSB7CisrICAgICAgICAgICAgICAgICAgICBjbG9zZShm ZHNbMF0pOworKyAgICAgICAgICAgICAgICAgICAgY2xvc2UoZmRzWzFdKTsKKysgICAgICAgICAg ICAgICAgfQorKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBpbnQgKmZkczsKKysgICAg ICAgIH0gcGlwZShtX3BpcGVmZCk7CisrCisrICAgICAgICAvLyBNYWtlIHRoZSBtYWluIHRocmVh ZCBjYWxsIHdsX3ByZXBhcmVfcmVhZCgpLCBkaXNwYXRjaCB0aGUgcGVuZGluZyBtZXNzYWdlcyBh bmQgZmx1c2ggdGhlCisrICAgICAgICAvLyBvdXRib3VuZCBvbmVzLiBXYWl0IHVudGlsIGl0J3Mg ZG9uZSBiZWZvcmUgcHJvY2VlZGluZywgdW5sZXNzIHdlJ3JlIHRvbGQgdG8gcXVpdC4KKysgICAg ICAgIHdoaWxlICh3YWl0Rm9yUmVhZGluZygpKSB7CisrICAgICAgICAgICAgcG9sbGZkIGZkc1sy XSA9IHsgeyBtX2ZkLCBQT0xMSU4sIDAgfSwgeyBtX3BpcGVmZFswXSwgUE9MTElOLCAwIH0gfTsK KysgICAgICAgICAgICBwb2xsKGZkcywgMiwgLTEpOworKworKyAgICAgICAgICAgIGlmIChmZHNb MV0ucmV2ZW50cyAmIFBPTExJTikgeworKyAgICAgICAgICAgICAgICAvLyB3ZSBkb24ndCByZWFs bHkgY2FyZSB0byByZWFkIHRoZSBieXRlIHRoYXQgd2FzIHdyaXR0ZW4gaGVyZSBzaW5jZSB3ZSdy ZSBjbG9zaW5nIGRvd24KKysgICAgICAgICAgICAgICAgd2xfZGlzcGxheV9jYW5jZWxfcmVhZCht X3dsZGlzcGxheSk7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysK KysgICAgICAgICAgICBpZiAoZmRzWzBdLnJldmVudHMgJiBQT0xMSU4pCisrICAgICAgICAgICAg ICAgIHdsX2Rpc3BsYXlfcmVhZF9ldmVudHMobV93bGRpc3BsYXkpOworKyAgICAgICAgICAgICAg ICAvLyBUaGUgcG9sbGwgd2FzIHN1Y2Nlc2Z1bGwgYW5kIHRoZSBldmVudCB0aHJlYWQgZGlkIHRo ZSB3bF9kaXNwbGF5X3JlYWRfZXZlbnRzKCkuIE9uIHRoZSBuZXh0IGl0ZXJhdGlvbiBvZiB0aGUg bG9vcAorKyAgICAgICAgICAgICAgICAvLyB0aGUgZXZlbnQgc2VudCB0byB0aGUgbWFpbiB0aHJl YWQgd2lsbCBjYXVzZSBpdCB0byBkaXNwYXRjaCB0aGUgbWVzc2FnZXMganVzdCByZWFkLCB1bmxl c3MgdGhlIGxvb3AgZXhpdHMgaW4gd2hpY2gKKysgICAgICAgICAgICAgICAgLy8gY2FzZSB3ZSBk b24ndCBjYXJlIGFueW1vcmUgYWJvdXQgdGhlbS4KKysgICAgICAgICAgICBlbHNlCisrICAgICAg ICAgICAgICAgIHdsX2Rpc3BsYXlfY2FuY2VsX3JlYWQobV93bGRpc3BsYXkpOworKyAgICAgICAg fQorKyAgICB9CisrCisrcHJpdmF0ZToKKysgICAgYm9vbCB3YWl0Rm9yUmVhZGluZygpCisrICAg IHsKKysgICAgICAgIFFfQVNTRVJUKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKSA9PSB0aGlzKTsK KysKKysgICAgICAgIG1fcmVhZGluZy5zdG9yZVJlbGVhc2UoZmFsc2UpOworKworKyAgICAgICAg aWYgKG1fbW9kZSA9PSBTZWxmRGlzcGF0Y2gpIHsKKysgICAgICAgICAgICByZWFkQW5kRGlzcGF0 Y2hFdmVudHMoKTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgUV9FTUlUIG5lZWRS ZWFkQW5kRGlzcGF0Y2goKTsKKysKKysgICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbG9jaygmbV9t dXRleCk7CisrICAgICAgICAgICAgLy8gbV9yZWFkaW5nIG1pZ2h0IGJlIHNldCBmcm9tIG91ciBl bWl0IG9yIHNvbWUgb3RoZXIgaW52b2NhdGlvbiBvZgorKyAgICAgICAgICAgIC8vIHJlYWRBbmRE aXNwYXRjaEV2ZW50cygpLgorKyAgICAgICAgICAgIHdoaWxlICghbV9yZWFkaW5nLmxvYWRSZWxh eGVkKCkgJiYgIW1fcXVpdHRpbmcpCisrICAgICAgICAgICAgICAgIG1fY29uZC53YWl0KCZtX211 dGV4KTsKKysgICAgICAgIH0KKysKKysgICAgICAgIHJldHVybiAhbV9xdWl0dGluZzsKKysgICAg fQorKworKyAgICBpbnQgZGlzcGF0Y2hRdWV1ZVBlbmRpbmcoKQorKyAgICB7CisrICAgICAgICBp ZiAobV93bGV2cXVldWUpCisrICAgICAgICAgICAgcmV0dXJuIHdsX2Rpc3BsYXlfZGlzcGF0Y2hf cXVldWVfcGVuZGluZyhtX3dsZGlzcGxheSwgbV93bGV2cXVldWUpOworKyAgICAgICAgZWxzZQor KyAgICAgICAgICAgIHJldHVybiB3bF9kaXNwbGF5X2Rpc3BhdGNoX3BlbmRpbmcobV93bGRpc3Bs YXkpOworKyAgICB9CisrCisrICAgIGludCBwcmVwYXJlUmVhZFF1ZXVlKCkKKysgICAgeworKyAg ICAgICAgaWYgKG1fd2xldnF1ZXVlKQorKyAgICAgICAgICAgIHJldHVybiB3bF9kaXNwbGF5X3By ZXBhcmVfcmVhZF9xdWV1ZShtX3dsZGlzcGxheSwgbV93bGV2cXVldWUpOworKyAgICAgICAgZWxz ZQorKyAgICAgICAgICAgIHJldHVybiB3bF9kaXNwbGF5X3ByZXBhcmVfcmVhZChtX3dsZGlzcGxh eSk7CisrICAgIH0KKysKKysgICAgaW50IG1fZmQ7CisrICAgIGludCBtX3BpcGVmZFsyXTsKKysg ICAgd2xfZGlzcGxheSAqbV93bGRpc3BsYXk7CisrICAgIHdsX2V2ZW50X3F1ZXVlICptX3dsZXZx dWV1ZTsKKysgICAgT3BlcmF0aW5nTW9kZSBtX21vZGU7CisrCisrICAgIC8qIENvbmN1cnJlbmN5 IG5vdGUgd2hlbiBvcGVyYXRpbmcgaW4gRW1pdFRvRGlzcGF0Y2ggbW9kZToKKysgICAgICogbV9y ZWFkaW5nIGlzIHNldCB0byBmYWxzZSBpbnNpZGUgZXZlbnQgdGhyZWFkJ3Mgd2FpdEZvclJlYWRp bmcoKSwgYW5kIGlzCisrICAgICAqIHNldCB0byB0cnVlIGluc2lkZSBtYWluIHRocmVhZCdzIHJl YWRBbmREaXNwYXRjaEV2ZW50cygpLgorKyAgICAgKiBUaGUgbG9jayBpcyBub3QgdGFrZW4gd2hl biBzZXR0aW5nIG1fcmVhZGluZyB0byBmYWxzZSwgYXMgdGhlIG1haW4gdGhyZWFkCisrICAgICAq IGlzIG5vdCBhY3RpdmVseSB3YWl0aW5nIGZvciBpdCB0byB0dXJuIGZhbHNlLiBIb3dldmVyLCB0 aGUgbG9jayBpcyB0YWtlbgorKyAgICAgKiBpbnNpZGUgcmVhZEFuZERpc3BhdGNoRXZlbnRzKCkg YmVmb3JlIHNldHRpbmcgbV9yZWFkaW5nIHRvIHRydWUsCisrICAgICAqIGFzIHRoZSBldmVudCB0 aHJlYWQgaXMgYWN0aXZlbHkgd2FpdGluZyBmb3IgaXQgdW5kZXIgdGhlIHdhaXQgY29uZGl0aW9u LgorKyAgICAgKi8KKysKKysgICAgUUF0b21pY0ludGVnZXI8Ym9vbD4gbV9yZWFkaW5nOworKyAg ICBib29sIG1fcXVpdHRpbmc7CisrICAgIFFNdXRleCBtX211dGV4OworKyAgICBRV2FpdENvbmRp dGlvbiBtX2NvbmQ7CisrfTsKKysKKyBRX0xPR0dJTkdfQ0FURUdPUlkobGNRcGFXYXlsYW5kLCAi cXQucXBhLndheWxhbmQiKTsgLy8gZm9yIGdlbmVyYWwgKHVuY2F0ZWdvcml6ZWQpIFdheWxhbmQg cGxhdGZvcm0gbG9nZ2luZworIAorIHN0cnVjdCB3bF9zdXJmYWNlICpRV2F5bGFuZERpc3BsYXk6 OmNyZWF0ZVN1cmZhY2Uodm9pZCAqaGFuZGxlKQorQEAgLTE1OCwxNyArMzUxLDE2IEBAIFFXYXls YW5kRGlzcGxheTo6UVdheWxhbmREaXNwbGF5KFFXYXlsYW5kSW50ZWdyYXRpb24gKndheWxhbmRJ bnRlZ3JhdGlvbikKKyAgICAgaWYgKCFtWGtiQ29udGV4dCkKKyAgICAgICAgIHFDV2FybmluZyhs Y1FwYVdheWxhbmQsICJmYWlsZWQgdG8gY3JlYXRlIHhrYiBjb250ZXh0Iik7CisgI2VuZGlmCist CistICAgIGZvcmNlUm91bmRUcmlwKCk7CistCistICAgIGlmICghbVdhaXRpbmdTY3JlZW5zLmlz RW1wdHkoKSkgeworLSAgICAgICAgLy8gR2l2ZSB3bF9vdXRwdXQuZG9uZSBhbmQgenhkZ19vdXRw dXRfdjEuZG9uZSBldmVudHMgYSBjaGFuY2UgdG8gYXJyaXZlCistICAgICAgICBmb3JjZVJvdW5k VHJpcCgpOworLSAgICB9CisgfQorIAorIFFXYXlsYW5kRGlzcGxheTo6flFXYXlsYW5kRGlzcGxh eSh2b2lkKQorIHsKKysgICAgaWYgKG1fZXZlbnRUaHJlYWQpCisrICAgICAgICBtX2V2ZW50VGhy ZWFkLT5zdG9wKCk7CisrCisrICAgIGlmIChtX2ZyYW1lRXZlbnRRdWV1ZVRocmVhZCkKKysgICAg ICAgIG1fZnJhbWVFdmVudFF1ZXVlVGhyZWFkLT5zdG9wKCk7CisrCisgICAgIGlmIChtU3luY0Nh bGxiYWNrKQorICAgICAgICAgd2xfY2FsbGJhY2tfZGVzdHJveShtU3luY0NhbGxiYWNrKTsKKyAK K0BAIC0xODcsNiArMzc5LDIxIEBAIFFXYXlsYW5kRGlzcGxheTo6flFXYXlsYW5kRGlzcGxheSh2 b2lkKQorICNlbmRpZgorICAgICBpZiAobURpc3BsYXkpCisgICAgICAgICB3bF9kaXNwbGF5X2Rp c2Nvbm5lY3QobURpc3BsYXkpOworKworKyAgICBpZiAobV9mcmFtZUV2ZW50UXVldWUpCisrICAg ICAgICB3bF9ldmVudF9xdWV1ZV9kZXN0cm95KG1fZnJhbWVFdmVudFF1ZXVlKTsKKyt9CisrCisr Ly8gU3RlcHMgd2hpY2ggaXMgY2FsbGVkIGp1c3QgYWZ0ZXIgY29uc3RydWN0b3IuIFRoaXMgc2Vw YXJhdGVzIHJlZ2lzdHJ5X2dsb2JhbCgpIG91dCBvZiB0aGUgY29uc3RydWN0b3IKKysvLyBzbyB0 aGF0IGZhY3RvcnkgZnVuY3Rpb25zIGluIGludGVncmF0aW9uIGNhbiBiZSBvdmVycmlkZGVuLgor K3ZvaWQgUVdheWxhbmREaXNwbGF5Ojppbml0aWFsaXplKCkKKyt7CisrICAgIGZvcmNlUm91bmRU cmlwKCk7CisrCisrICAgIGlmICghbVdhaXRpbmdTY3JlZW5zLmlzRW1wdHkoKSkgeworKyAgICAg ICAgLy8gR2l2ZSB3bF9vdXRwdXQuZG9uZSBhbmQgenhkZ19vdXRwdXRfdjEuZG9uZSBldmVudHMg YSBjaGFuY2UgdG8gYXJyaXZlCisrICAgICAgICBmb3JjZVJvdW5kVHJpcCgpOworKyAgICB9Cisg fQorIAorIHZvaWQgUVdheWxhbmREaXNwbGF5OjplbnN1cmVTY3JlZW4oKQorQEAgLTIwMyw5OCAr NDEwLDM3IEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjplbnN1cmVTY3JlZW4oKQorIAorIHZvaWQg UVdheWxhbmREaXNwbGF5OjpjaGVja0Vycm9yKCkgY29uc3QKKyB7CistICAgIGludCBlY29kZSA9 IHdsX2Rpc3BsYXlfZ2V0X2Vycm9yKG1EaXNwbGF5KTsKKy0gICAgaWYgKChlY29kZSA9PSBFUElQ RSB8fCBlY29kZSA9PSBFQ09OTlJFU0VUKSkgeworLSAgICAgICAgLy8gc3BlY2lhbCBjYXNlIHRo aXMgdG8gcHJvdmlkZSBhIG5pY2VyIGVycm9yCistICAgICAgICBxV2FybmluZygiVGhlIFdheWxh bmQgY29ubmVjdGlvbiBicm9rZS4gRGlkIHRoZSBXYXlsYW5kIGNvbXBvc2l0b3IgZGllPyIpOwor LSAgICB9IGVsc2UgeworLSAgICAgICAgcVdhcm5pbmcoIlRoZSBXYXlsYW5kIGNvbm5lY3Rpb24g ZXhwZXJpZW5jZWQgYSBmYXRhbCBlcnJvcjogJXMiLCBzdHJlcnJvcihlY29kZSkpOworLSAgICB9 CistICAgIF9leGl0KDEpOworKyAgICBjaGVja1dheWxhbmRFcnJvcihtRGlzcGxheSk7CisgfQor IAorKy8vIENhbGxlZCBpbiBtYWluIHRocmVhZCwgZWl0aGVyIGZyb20gcXVldWVkIHNpZ25hbCBv ciBkaXJlY3RseS4KKyB2b2lkIFFXYXlsYW5kRGlzcGxheTo6Zmx1c2hSZXF1ZXN0cygpCisgewor LSAgICBpZiAod2xfZGlzcGxheV9wcmVwYXJlX3JlYWQobURpc3BsYXkpID09IDApIHsKKy0gICAg ICAgIHdsX2Rpc3BsYXlfcmVhZF9ldmVudHMobURpc3BsYXkpOworLSAgICB9CistCistICAgIGlm ICh3bF9kaXNwbGF5X2Rpc3BhdGNoX3BlbmRpbmcobURpc3BsYXkpIDwgMCkKKy0gICAgICAgIGNo ZWNrRXJyb3IoKTsKKy0KKy0gICAgeworLSAgICAgICAgUVJlYWRMb2NrZXIgbG9ja2VyKCZtX2Zy YW1lUXVldWVMb2NrKTsKKy0gICAgICAgIGZvciAoY29uc3QgRnJhbWVRdWV1ZSAmcSA6IG1FeHRl cm5hbFF1ZXVlcykgeworLSAgICAgICAgICAgIFFNdXRleExvY2tlciBsb2NrZXIocS5tdXRleCk7 CistICAgICAgICAgICAgd2hpbGUgKHdsX2Rpc3BsYXlfcHJlcGFyZV9yZWFkX3F1ZXVlKG1EaXNw bGF5LCBxLnF1ZXVlKSAhPSAwKQorLSAgICAgICAgICAgICAgICB3bF9kaXNwbGF5X2Rpc3BhdGNo X3F1ZXVlX3BlbmRpbmcobURpc3BsYXksIHEucXVldWUpOworLSAgICAgICAgICAgIHdsX2Rpc3Bs YXlfcmVhZF9ldmVudHMobURpc3BsYXkpOworLSAgICAgICAgICAgIHdsX2Rpc3BsYXlfZGlzcGF0 Y2hfcXVldWVfcGVuZGluZyhtRGlzcGxheSwgcS5xdWV1ZSk7CistICAgICAgICB9CistICAgIH0K Ky0KKy0gICAgd2xfZGlzcGxheV9mbHVzaChtRGlzcGxheSk7CistfQorLQorLXZvaWQgUVdheWxh bmREaXNwbGF5OjpibG9ja2luZ1JlYWRFdmVudHMoKQorLXsKKy0gICAgaWYgKHdsX2Rpc3BsYXlf ZGlzcGF0Y2gobURpc3BsYXkpIDwgMCkKKy0gICAgICAgIGNoZWNrRXJyb3IoKTsKKy19CistCist dm9pZCBRV2F5bGFuZERpc3BsYXk6OmRlc3Ryb3lGcmFtZVF1ZXVlKGNvbnN0IFFXYXlsYW5kRGlz cGxheTo6RnJhbWVRdWV1ZSAmcSkKKy17CistICAgIFFXcml0ZUxvY2tlciBsb2NrZXIoJm1fZnJh bWVRdWV1ZUxvY2spOworLSAgICBhdXRvIGl0ID0gc3RkOjpmaW5kX2lmKG1FeHRlcm5hbFF1ZXVl cy5iZWdpbigpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1FeHRlcm5hbFF1ZXVlcy5l bmQoKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBbJnFdIChjb25zdCBRV2F5bGFuZERp c3BsYXk6OkZyYW1lUXVldWUgJm90aGVyKXsgcmV0dXJuIG90aGVyLnF1ZXVlID09IHEucXVldWU7 IH0pOworLSAgICBRX0FTU0VSVChpdCAhPSBtRXh0ZXJuYWxRdWV1ZXMuZW5kKCkpOworLSAgICBt RXh0ZXJuYWxRdWV1ZXMuZXJhc2UoaXQpOworLSAgICBpZiAocS5xdWV1ZSAhPSBudWxscHRyKQor LSAgICAgICAgd2xfZXZlbnRfcXVldWVfZGVzdHJveShxLnF1ZXVlKTsKKy0gICAgZGVsZXRlIHEu bXV0ZXg7CisrICAgIG1fZXZlbnRUaHJlYWQtPnJlYWRBbmREaXNwYXRjaEV2ZW50cygpOworIH0K KyAKKy1RV2F5bGFuZERpc3BsYXk6OkZyYW1lUXVldWUgUVdheWxhbmREaXNwbGF5OjpjcmVhdGVG cmFtZVF1ZXVlKCkKKysvLyBXZSBoYXZlIHRvIHdhaXQgdW50aWwgd2UgaGF2ZSBhbiBldmVudERp c3BhdGNoZXIgYmVmb3JlIGNyZWF0aW5nIHRoZSBldmVudFRocmVhZCwKKysvLyBvdGhlcndpc2Ug Zm9yY2VSb3VuZFRyaXAoKSBtYXkgYmxvY2sgaW5zaWRlIF9ldmVudHNfcmVhZCgpIGJlY2F1c2Ug ZXZlbnRUaHJlYWQgaXMKKysvLyBwb2xsaW5nLgorK3ZvaWQgUVdheWxhbmREaXNwbGF5Ojppbml0 RXZlbnRUaHJlYWQoKQorIHsKKy0gICAgUVdyaXRlTG9ja2VyIGxvY2tlcigmbV9mcmFtZVF1ZXVl TG9jayk7CistICAgIEZyYW1lUXVldWUgcXtjcmVhdGVFdmVudFF1ZXVlKCl9OworLSAgICBtRXh0 ZXJuYWxRdWV1ZXMuYXBwZW5kKHEpOworLSAgICByZXR1cm4gcTsKKy19CisrICAgIG1fZXZlbnRU aHJlYWQucmVzZXQoCisrICAgICAgICAgICAgbmV3IEV2ZW50VGhyZWFkKG1EaXNwbGF5LCAvKiBk ZWZhdWx0IHF1ZXVlICovIG51bGxwdHIsIEV2ZW50VGhyZWFkOjpFbWl0VG9EaXNwYXRjaCkpOwor KyAgICBjb25uZWN0KG1fZXZlbnRUaHJlYWQuZ2V0KCksICZFdmVudFRocmVhZDo6bmVlZFJlYWRB bmREaXNwYXRjaCwgdGhpcywKKysgICAgICAgICAgICAmUVdheWxhbmREaXNwbGF5OjpmbHVzaFJl cXVlc3RzLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisrICAgIG1fZXZlbnRUaHJlYWQtPnN0YXJ0 KCk7CisgCistd2xfZXZlbnRfcXVldWUgKlFXYXlsYW5kRGlzcGxheTo6Y3JlYXRlRXZlbnRRdWV1 ZSgpCisteworLSAgICByZXR1cm4gd2xfZGlzcGxheV9jcmVhdGVfcXVldWUobURpc3BsYXkpOwor KyAgICAvLyB3bF9kaXNwbGF5X2Rpc2Nvbm5lY3QoKSBmcmVlIHRoaXMuCisrICAgIG1fZnJhbWVF dmVudFF1ZXVlID0gd2xfZGlzcGxheV9jcmVhdGVfcXVldWUobURpc3BsYXkpOworKyAgICBtX2Zy YW1lRXZlbnRRdWV1ZVRocmVhZC5yZXNldCgKKysgICAgICAgICAgICBuZXcgRXZlbnRUaHJlYWQo bURpc3BsYXksIG1fZnJhbWVFdmVudFF1ZXVlLCBFdmVudFRocmVhZDo6U2VsZkRpc3BhdGNoKSk7 CisrICAgIG1fZnJhbWVFdmVudFF1ZXVlVGhyZWFkLT5zdGFydCgpOworIH0KKyAKKy12b2lkIFFX YXlsYW5kRGlzcGxheTo6ZGlzcGF0Y2hRdWV1ZVdoaWxlKHdsX2V2ZW50X3F1ZXVlICpxdWV1ZSwg c3RkOjpmdW5jdGlvbjxib29sICgpPiBjb25kaXRpb24sIGludCB0aW1lb3V0KQorK3ZvaWQgUVdh eWxhbmREaXNwbGF5OjpibG9ja2luZ1JlYWRFdmVudHMoKQorIHsKKy0gICAgaWYgKCFjb25kaXRp b24oKSkKKy0gICAgICAgIHJldHVybjsKKy0KKy0gICAgUUVsYXBzZWRUaW1lciB0aW1lcjsKKy0g ICAgdGltZXIuc3RhcnQoKTsKKy0gICAgc3RydWN0IHBvbGxmZCBwRmQgPSBxdF9tYWtlX3BvbGxm ZCh3bF9kaXNwbGF5X2dldF9mZChtRGlzcGxheSksIFBPTExJTik7CistICAgIHdoaWxlICh0aW1l b3V0ID09IC0xIHx8IHRpbWVyLmVsYXBzZWQoKSA8IHRpbWVvdXQpIHsKKy0gICAgICAgIHdoaWxl ICh3bF9kaXNwbGF5X3ByZXBhcmVfcmVhZF9xdWV1ZShtRGlzcGxheSwgcXVldWUpICE9IDApCist ICAgICAgICAgICAgd2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1ZV9wZW5kaW5nKG1EaXNwbGF5LCBx dWV1ZSk7CistCistICAgICAgICB3bF9kaXNwbGF5X2ZsdXNoKG1EaXNwbGF5KTsKKy0KKy0gICAg ICAgIGNvbnN0IGludCByZW1haW5pbmcgPSBxTWF4KHRpbWVvdXQgLSB0aW1lci5lbGFwc2VkKCks IDBsbCk7CistICAgICAgICBjb25zdCBpbnQgcG9sbFRpbWVvdXQgPSB0aW1lb3V0ID09IC0xID8g LTEgOiByZW1haW5pbmc7CistICAgICAgICBpZiAocXRfcG9sbF9tc2VjcygmcEZkLCAxLCBwb2xs VGltZW91dCkgPiAwKQorLSAgICAgICAgICAgIHdsX2Rpc3BsYXlfcmVhZF9ldmVudHMobURpc3Bs YXkpOworLSAgICAgICAgZWxzZQorLSAgICAgICAgICAgIHdsX2Rpc3BsYXlfY2FuY2VsX3JlYWQo bURpc3BsYXkpOworLQorLSAgICAgICAgaWYgKHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVldWVfcGVu ZGluZyhtRGlzcGxheSwgcXVldWUpIDwgMCkKKy0gICAgICAgICAgICBjaGVja0Vycm9yKCk7Cist CistICAgICAgICBpZiAoIWNvbmRpdGlvbigpKQorLSAgICAgICAgICAgIGJyZWFrOworLSAgICB9 CisrICAgIGlmICh3bF9kaXNwbGF5X2Rpc3BhdGNoKG1EaXNwbGF5KSA8IDApCisrICAgICAgICBj aGVja1dheWxhbmRFcnJvcihtRGlzcGxheSk7CisgfQorIAorIFFXYXlsYW5kU2NyZWVuICpRV2F5 bGFuZERpc3BsYXk6OnNjcmVlbkZvck91dHB1dChzdHJ1Y3Qgd2xfb3V0cHV0ICpvdXRwdXQpIGNv bnN0CitAQCAtMzQ1LDcgKzQ5MSw3IEBAIHZvaWQgUVdheWxhbmREaXNwbGF5OjpyZWdpc3RyeV9n bG9iYWwodWludDMyX3QgaWQsIGNvbnN0IFFTdHJpbmcgJmludGVyZmFjZSwgdWluCisgICAgIGlm IChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoIndsX291dHB1dCIpKSB7CisgICAgICAgICBt V2FpdGluZ1NjcmVlbnMgPDwgbmV3IFFXYXlsYW5kU2NyZWVuKHRoaXMsIHZlcnNpb24sIGlkKTsK KyAgICAgfSBlbHNlIGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoIndsX2NvbXBvc2l0 b3IiKSkgeworLSAgICAgICAgbUNvbXBvc2l0b3JWZXJzaW9uID0gcU1pbigoaW50KXZlcnNpb24s IDMpOworKyAgICAgICAgbUNvbXBvc2l0b3JWZXJzaW9uID0gcU1pbigoaW50KXZlcnNpb24sIDQp OworICAgICAgICAgbUNvbXBvc2l0b3IuaW5pdChyZWdpc3RyeSwgaWQsIG1Db21wb3NpdG9yVmVy c2lvbik7CisgICAgIH0gZWxzZSBpZiAoaW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ3bF9z aG0iKSkgeworICAgICAgICAgbVNobS5yZXNldChuZXcgUVdheWxhbmRTaG0odGhpcywgdmVyc2lv biwgaWQpKTsKK0BAIC0zNTQsNyArNTAwLDcgQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OnJlZ2lz dHJ5X2dsb2JhbCh1aW50MzJfdCBpZCwgY29uc3QgUVN0cmluZyAmaW50ZXJmYWNlLCB1aW4KKyAg ICAgICAgIG1JbnB1dERldmljZXMuYXBwZW5kKGlucHV0RGV2aWNlKTsKKyAjaWYgUVRfQ09ORklH KHdheWxhbmRfZGF0YWRldmljZSkKKyAgICAgfSBlbHNlIGlmIChpbnRlcmZhY2UgPT0gUVN0cmlu Z0xpdGVyYWwoIndsX2RhdGFfZGV2aWNlX21hbmFnZXIiKSkgeworLSAgICAgICAgbURuZFNlbGVj dGlvbkhhbmRsZXIucmVzZXQobmV3IFFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIodGhpcywgaWQp KTsKKysgICAgICAgIG1EbmRTZWxlY3Rpb25IYW5kbGVyLnJlc2V0KG5ldyBRV2F5bGFuZERhdGFE ZXZpY2VNYW5hZ2VyKHRoaXMsIHZlcnNpb24sIGlkKSk7CisgI2VuZGlmCisgICAgIH0gZWxzZSBp ZiAoaW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJxdF9zdXJmYWNlX2V4dGVuc2lvbiIpKSB7 CisgICAgICAgICBtV2luZG93RXh0ZW5zaW9uLnJlc2V0KG5ldyBRdFdheWxhbmQ6OnF0X3N1cmZh Y2VfZXh0ZW5zaW9uKHJlZ2lzdHJ5LCBpZCwgMSkpOworQEAgLTM2OSw2ICs1MTUsOCBAQCB2b2lk IFFXYXlsYW5kRGlzcGxheTo6cmVnaXN0cnlfZ2xvYmFsKHVpbnQzMl90IGlkLCBjb25zdCBRU3Ry aW5nICZpbnRlcmZhY2UsIHVpbgorICNpZiBRVF9DT05GSUcod2F5bGFuZF9jbGllbnRfcHJpbWFy eV9zZWxlY3Rpb24pCisgICAgIH0gZWxzZSBpZiAoaW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFs KCJ6d3BfcHJpbWFyeV9zZWxlY3Rpb25fZGV2aWNlX21hbmFnZXJfdjEiKSkgeworICAgICAgICAg bVByaW1hcnlTZWxlY3Rpb25NYW5hZ2VyLnJlc2V0KG5ldyBRV2F5bGFuZFByaW1hcnlTZWxlY3Rp b25EZXZpY2VNYW5hZ2VyVjEodGhpcywgaWQsIDEpKTsKKysgICAgICAgIGZvciAoUVdheWxhbmRJ bnB1dERldmljZSAqaW5wdXREZXZpY2UgOiBxQXNDb25zdChtSW5wdXREZXZpY2VzKSkKKysgICAg ICAgICAgICBpbnB1dERldmljZS0+c2V0UHJpbWFyeVNlbGVjdGlvbkRldmljZShtUHJpbWFyeVNl bGVjdGlvbk1hbmFnZXItPmNyZWF0ZURldmljZShpbnB1dERldmljZSkpOworICNlbmRpZgorICAg ICB9IGVsc2UgaWYgKGludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgiendwX3RleHRfaW5wdXRf bWFuYWdlcl92MiIpICYmICFtQ2xpZW50U2lkZUlucHV0Q29udGV4dFJlcXVlc3RlZCkgeworICAg ICAgICAgbVRleHRJbnB1dE1hbmFnZXIucmVzZXQobmV3IFF0V2F5bGFuZDo6endwX3RleHRfaW5w dXRfbWFuYWdlcl92MihyZWdpc3RyeSwgaWQsIDEpKTsKK0BAIC00MjcsNiArNTc1LDEzIEBAIHZv aWQgUVdheWxhbmREaXNwbGF5OjpyZWdpc3RyeV9nbG9iYWxfcmVtb3ZlKHVpbnQzMl90IGlkKQor ICAgICAgICAgICAgICAgICAgICAgaW5wdXREZXZpY2UtPnNldFRleHRJbnB1dChudWxscHRyKTsK KyAgICAgICAgICAgICAgICAgbVdheWxhbmRJbnRlZ3JhdGlvbi0+cmVjb25maWd1cmVJbnB1dENv bnRleHQoKTsKKyAgICAgICAgICAgICB9CisrI2lmIFFUX0NPTkZJRyh3YXlsYW5kX2NsaWVudF9w cmltYXJ5X3NlbGVjdGlvbikKKysgICAgICAgICAgICBpZiAoZ2xvYmFsLmludGVyZmFjZSA9PSBR U3RyaW5nTGl0ZXJhbCgiendwX3ByaW1hcnlfc2VsZWN0aW9uX2RldmljZV9tYW5hZ2VyX3YxIikp IHsKKysgICAgICAgICAgICAgICAgbVByaW1hcnlTZWxlY3Rpb25NYW5hZ2VyLnJlc2V0KCk7Cisr ICAgICAgICAgICAgICAgIGZvciAoUVdheWxhbmRJbnB1dERldmljZSAqaW5wdXREZXZpY2UgOiBx QXNDb25zdChtSW5wdXREZXZpY2VzKSkKKysgICAgICAgICAgICAgICAgICAgIGlucHV0RGV2aWNl LT5zZXRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlKG51bGxwdHIpOworKyAgICAgICAgICAgIH0KKysj ZW5kaWYKKyAgICAgICAgICAgICBtR2xvYmFscy5yZW1vdmVBdChpKTsKKyAgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgIH0KK0BAIC00NTIsOSArNjA3LDEwIEBAIHZvaWQgUVdheWxhbmREaXNw bGF5OjphZGRSZWdpc3RyeUxpc3RlbmVyKFJlZ2lzdHJ5TGlzdGVuZXIgbGlzdGVuZXIsIHZvaWQg KmRhdGEpCisgCisgdm9pZCBRV2F5bGFuZERpc3BsYXk6OnJlbW92ZUxpc3RlbmVyKFJlZ2lzdHJ5 TGlzdGVuZXIgbGlzdGVuZXIsIHZvaWQgKmRhdGEpCisgeworLSAgICBzdGQ6OnJlbW92ZV9pZiht UmVnaXN0cnlMaXN0ZW5lcnMuYmVnaW4oKSwgbVJlZ2lzdHJ5TGlzdGVuZXJzLmVuZCgpLCBbPV0o TGlzdGVuZXIgbCl7CisrICAgIGF1dG8gaXRlciA9IHN0ZDo6cmVtb3ZlX2lmKG1SZWdpc3RyeUxp c3RlbmVycy5iZWdpbigpLCBtUmVnaXN0cnlMaXN0ZW5lcnMuZW5kKCksIFs9XShMaXN0ZW5lciBs KXsKKyAgICAgICAgIHJldHVybiAobC5saXN0ZW5lciA9PSBsaXN0ZW5lciAmJiBsLmRhdGEgPT0g ZGF0YSk7CisgICAgIH0pOworKyAgICBtUmVnaXN0cnlMaXN0ZW5lcnMuZXJhc2UoaXRlciwgbVJl Z2lzdHJ5TGlzdGVuZXJzLmVuZCgpKTsKKyB9CisgCisgdWludDMyX3QgUVdheWxhbmREaXNwbGF5 OjpjdXJyZW50VGltZU1pbGxpc2VjKCkKK0BAIC00NjcsNTAgKzYyMyw5IEBAIHVpbnQzMl90IFFX YXlsYW5kRGlzcGxheTo6Y3VycmVudFRpbWVNaWxsaXNlYygpCisgICAgIHJldHVybiAwOworIH0K KyAKKy1zdGF0aWMgdm9pZAorLXN5bmNfY2FsbGJhY2sodm9pZCAqZGF0YSwgc3RydWN0IHdsX2Nh bGxiYWNrICpjYWxsYmFjaywgdWludDMyX3Qgc2VyaWFsKQorLXsKKy0gICAgUV9VTlVTRUQoc2Vy aWFsKQorLSAgICBib29sICpkb25lID0gc3RhdGljX2Nhc3Q8Ym9vbCAqPihkYXRhKTsKKy0KKy0g ICAgKmRvbmUgPSB0cnVlOworLQorLSAgICAvLyBJZiB0aGUgd2xfY2FsbGJhY2sgZG9uZSBldmVu dCBpcyByZWNlaXZlZCBhZnRlciB0aGUgY29uZGl0aW9uIGNoZWNrIGluIHRoZSB3aGlsZSBsb29w IGluCistICAgIC8vIGZvcmNlUm91bmRUcmlwKCksIGJ1dCBiZWZvcmUgdGhlIGNhbGwgdG8gcHJv Y2Vzc0V2ZW50cywgdGhlIGNhbGwgdG8gcHJvY2Vzc0V2ZW50cyBtYXkgYmxvY2sKKy0gICAgLy8g Zm9yZXZlciBpZiBubyBtb3JlIGV2ZW50cyBhcmUgcG9zdGVkIChldmVudGhvdWdoIHRoZSBjYWxs YmFjayBpcyBoYW5kbGVkIGluIHJlc3BvbnNlIHRvIHRoZQorLSAgICAvLyBhYm91dFRvQmxvY2sg c2lnbmFsKS4gSGVuY2UsIHdlIHdha2UgdXAgdGhlIGV2ZW50IGRpc3BhdGNoZXIgc28gZm9yY2VS b3VuZFRyaXAgbWF5IHJldHVybi4KKy0gICAgLy8gKFFUQlVHLTY0Njk2KQorLSAgICBpZiAoYXV0 byAqZGlzcGF0Y2hlciA9IFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKS0+ZXZlbnREaXNwYXRjaGVy KCkpCistICAgICAgICBkaXNwYXRjaGVyLT53YWtlVXAoKTsKKy0KKy0gICAgd2xfY2FsbGJhY2tf ZGVzdHJveShjYWxsYmFjayk7CistfQorLQorLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfY2FsbGJh Y2tfbGlzdGVuZXIgc3luY19saXN0ZW5lciA9IHsKKy0gICAgc3luY19jYWxsYmFjaworLX07Cist Cisgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmZvcmNlUm91bmRUcmlwKCkKKyB7CistICAgIC8vIHds X2Rpc3BsYXlfcm91bmR0cmlwKCkgd29ya3Mgb24gdGhlIG1haW4gcXVldWUgb25seSwKKy0gICAg Ly8gYnV0IHdlIHVzZSBhIHNlcGFyYXRlIG9uZSwgc28gYmFzaWNhbGx5IHJlaW1wbGVtZW50IGl0 IGhlcmUKKy0gICAgaW50IHJldCA9IDA7CistICAgIGJvb2wgZG9uZSA9IGZhbHNlOworLSAgICB3 bF9jYWxsYmFjayAqY2FsbGJhY2sgPSB3bF9kaXNwbGF5X3N5bmMobURpc3BsYXkpOworLSAgICB3 bF9jYWxsYmFja19hZGRfbGlzdGVuZXIoY2FsbGJhY2ssICZzeW5jX2xpc3RlbmVyLCAmZG9uZSk7 CistICAgIGZsdXNoUmVxdWVzdHMoKTsKKy0gICAgaWYgKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQo KS0+ZXZlbnREaXNwYXRjaGVyKCkpIHsKKy0gICAgICAgIHdoaWxlICghZG9uZSAmJiByZXQgPj0g MCkgeworLSAgICAgICAgICAgIFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKS0+ZXZlbnREaXNwYXRj aGVyKCktPnByb2Nlc3NFdmVudHMoUUV2ZW50TG9vcDo6V2FpdEZvck1vcmVFdmVudHMpOworLSAg ICAgICAgICAgIHJldCA9IHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcGVuZGluZyhtRGlzcGxheSk7Cist ICAgICAgICB9CistICAgIH0gZWxzZSB7CistICAgICAgICB3aGlsZSAoIWRvbmUgJiYgcmV0ID49 IDApCistICAgICAgICAgICAgcmV0ID0gd2xfZGlzcGxheV9kaXNwYXRjaChtRGlzcGxheSk7Cist ICAgIH0KKy0KKy0gICAgaWYgKHJldCA9PSAtMSAmJiAhZG9uZSkKKy0gICAgICAgIHdsX2NhbGxi YWNrX2Rlc3Ryb3koY2FsbGJhY2spOworKyAgICAgd2xfZGlzcGxheV9yb3VuZHRyaXAobURpc3Bs YXkpOworIH0KKyAKKyBib29sIFFXYXlsYW5kRGlzcGxheTo6c3VwcG9ydHNXaW5kb3dEZWNvcmF0 aW9uKCkgY29uc3QKK0BAIC01NzQsMTQgKzY4OSwxMCBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6 aGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRJbnB1dERldmljZSAqaW5wdXREZXZp YworICAgICBpZiAobUxhc3RLZXlib2FyZEZvY3VzID09IGtleWJvYXJkRm9jdXMpCisgICAgICAg ICByZXR1cm47CisgCistICAgIGlmIChtV2F5bGFuZEludGVncmF0aW9uLT5tU2hlbGxJbnRlZ3Jh dGlvbikgeworLSAgICAgICAgbVdheWxhbmRJbnRlZ3JhdGlvbi0+bVNoZWxsSW50ZWdyYXRpb24t PmhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKGtleWJvYXJkRm9jdXMsIG1MYXN0S2V5Ym9hcmRG b2N1cyk7CistICAgIH0gZWxzZSB7CistICAgICAgICBpZiAoa2V5Ym9hcmRGb2N1cykKKy0gICAg ICAgICAgICBoYW5kbGVXaW5kb3dBY3RpdmF0ZWQoa2V5Ym9hcmRGb2N1cyk7CistICAgICAgICBp ZiAobUxhc3RLZXlib2FyZEZvY3VzKQorLSAgICAgICAgICAgIGhhbmRsZVdpbmRvd0RlYWN0aXZh dGVkKG1MYXN0S2V5Ym9hcmRGb2N1cyk7CistICAgIH0KKysgICAgaWYgKGtleWJvYXJkRm9jdXMp CisrICAgICAgICBoYW5kbGVXaW5kb3dBY3RpdmF0ZWQoa2V5Ym9hcmRGb2N1cyk7CisrICAgIGlm IChtTGFzdEtleWJvYXJkRm9jdXMpCisrICAgICAgICBoYW5kbGVXaW5kb3dEZWFjdGl2YXRlZCht TGFzdEtleWJvYXJkRm9jdXMpOworIAorICAgICBtTGFzdEtleWJvYXJkRm9jdXMgPSBrZXlib2Fy ZEZvY3VzOworIH0KK0BAIC02MDAsNiArNzExLDE5IEBAIHZvaWQgUVdheWxhbmREaXNwbGF5Ojpo YW5kbGVXYXlsYW5kU3luYygpCisgICAgIFFXaW5kb3cgKmFjdGl2ZVdpbmRvdyA9IG1BY3RpdmVX aW5kb3dzLmVtcHR5KCkgPyBudWxscHRyIDogbUFjdGl2ZVdpbmRvd3MubGFzdCgpLT53aW5kb3co KTsKKyAgICAgaWYgKGFjdGl2ZVdpbmRvdyAhPSBRR3VpQXBwbGljYXRpb246OmZvY3VzV2luZG93 KCkpCisgICAgICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVXaW5kb3dBY3RpdmF0 ZWQoYWN0aXZlV2luZG93KTsKKysKKysgICAgaWYgKCFhY3RpdmVXaW5kb3cpIHsKKysgICAgICAg IGlmIChsYXN0SW5wdXREZXZpY2UoKSkgeworKyNpZiBRVF9DT05GSUcoY2xpcGJvYXJkKQorKyAg ICAgICAgICAgIGlmIChhdXRvICpkYXRhRGV2aWNlID0gbGFzdElucHV0RGV2aWNlKCktPmRhdGFE ZXZpY2UoKSkKKysgICAgICAgICAgICAgICAgZGF0YURldmljZS0+aW52YWxpZGF0ZVNlbGVjdGlv bk9mZmVyKCk7CisrI2VuZGlmCisrI2lmIFFUX0NPTkZJRyh3YXlsYW5kX2NsaWVudF9wcmltYXJ5 X3NlbGVjdGlvbikKKysgICAgICAgICAgICBpZiAoYXV0byAqZGV2aWNlID0gbGFzdElucHV0RGV2 aWNlKCktPnByaW1hcnlTZWxlY3Rpb25EZXZpY2UoKSkKKysgICAgICAgICAgICAgICAgZGV2aWNl LT5pbnZhbGlkYXRlU2VsZWN0aW9uT2ZmZXIoKTsKKysjZW5kaWYKKysgICAgICAgIH0KKysgICAg fQorIH0KKyAKKyBjb25zdCB3bF9jYWxsYmFja19saXN0ZW5lciBRV2F5bGFuZERpc3BsYXk6OnN5 bmNDYWxsYmFja0xpc3RlbmVyID0geworQEAgLTYyNiw2ICs3NTAsMTMgQEAgUVdheWxhbmRJbnB1 dERldmljZSAqUVdheWxhbmREaXNwbGF5OjpkZWZhdWx0SW5wdXREZXZpY2UoKSBjb25zdAorICAg ICByZXR1cm4gbUlucHV0RGV2aWNlcy5pc0VtcHR5KCkgPyAwIDogbUlucHV0RGV2aWNlcy5maXJz dCgpOworIH0KKyAKKytib29sIFFXYXlsYW5kRGlzcGxheTo6aXNLZXlib2FyZEF2YWlsYWJsZSgp IGNvbnN0CisreworKyAgICByZXR1cm4gc3RkOjphbnlfb2YoCisrICAgICAgICAgICAgbUlucHV0 RGV2aWNlcy5jb25zdEJlZ2luKCksIG1JbnB1dERldmljZXMuY29uc3RFbmQoKSwKKysgICAgICAg ICAgICBbdGhpc10oY29uc3QgUVdheWxhbmRJbnB1dERldmljZSAqZGV2aWNlKSB7IHJldHVybiBk ZXZpY2UtPmtleWJvYXJkKCkgIT0gbnVsbHB0cjsgfSk7CisrfQorKworICNpZiBRVF9DT05GSUco Y3Vyc29yKQorIAorIFFXYXlsYW5kQ3Vyc29yICpRV2F5bGFuZERpc3BsYXk6OndheWxhbmRDdXJz b3IoKQorQEAgLTY1Miw0ICs3ODMsNiBAQCBRV2F5bGFuZEN1cnNvclRoZW1lICpRV2F5bGFuZERp c3BsYXk6OmxvYWRDdXJzb3JUaGVtZShjb25zdCBRU3RyaW5nICZuYW1lLCBpbnQgcAorIAorIH0g Ly8gbmFtZXNwYWNlIFF0V2F5bGFuZENsaWVudAorIAorKyNpbmNsdWRlICJxd2F5bGFuZGRpc3Bs YXkubW9jIgorKworIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3Jj L2NsaWVudC9xd2F5bGFuZGRpc3BsYXlfcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmRkaXNwbGF5X3AuaAoraW5kZXggM2IwOTJiYzguLjQyYmM2NjFkIDEwMDY0NAorLS0tIGEvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5X3AuaAorKysrIGIvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRkaXNwbGF5X3AuaAorQEAgLTEwOSw2ICsxMDksNyBAQCBjbGFzcyBR V2F5bGFuZFN1cmZhY2U7CisgY2xhc3MgUVdheWxhbmRTaGVsbEludGVncmF0aW9uOworIGNsYXNz IFFXYXlsYW5kQ3Vyc29yOworIGNsYXNzIFFXYXlsYW5kQ3Vyc29yVGhlbWU7CisrY2xhc3MgRXZl bnRUaHJlYWQ7CisgCisgdHlwZWRlZiB2b2lkICgqUmVnaXN0cnlMaXN0ZW5lcikodm9pZCAqZGF0 YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgd2xfcmVnaXN0cnkg KnJlZ2lzdHJ5LAorQEAgLTEyMCwxNSArMTIxLDExIEBAIGNsYXNzIFFfV0FZTEFORF9DTElFTlRf RVhQT1JUIFFXYXlsYW5kRGlzcGxheSA6IHB1YmxpYyBRT2JqZWN0LCBwdWJsaWMgUXRXYXlsYW5k CisgICAgIFFfT0JKRUNUCisgCisgcHVibGljOgorLSAgICBzdHJ1Y3QgRnJhbWVRdWV1ZSB7Cist ICAgICAgICBGcmFtZVF1ZXVlKHdsX2V2ZW50X3F1ZXVlICpxID0gbnVsbHB0cikgOiBxdWV1ZShx KSwgbXV0ZXgobmV3IFFNdXRleCkge30KKy0gICAgICAgIHdsX2V2ZW50X3F1ZXVlICpxdWV1ZTsK Ky0gICAgICAgIFFNdXRleCAqbXV0ZXg7CistICAgIH07CistCisgICAgIFFXYXlsYW5kRGlzcGxh eShRV2F5bGFuZEludGVncmF0aW9uICp3YXlsYW5kSW50ZWdyYXRpb24pOworICAgICB+UVdheWxh bmREaXNwbGF5KHZvaWQpIG92ZXJyaWRlOworIAorKyAgICB2b2lkIGluaXRpYWxpemUoKTsKKysK KyAjaWYgUVRfQ09ORklHKHhrYmNvbW1vbikKKyAgICAgc3RydWN0IHhrYl9jb250ZXh0ICp4a2JD b250ZXh0KCkgY29uc3QgeyByZXR1cm4gbVhrYkNvbnRleHQuZ2V0KCk7IH0KKyAjZW5kaWYKK0BA IC0yMTAsMTEgKzIwNywxMSBAQCBwdWJsaWM6CisgICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRGb2N1 c0NoYW5nZWQoUVdheWxhbmRJbnB1dERldmljZSAqaW5wdXREZXZpY2UpOworICAgICB2b2lkIGhh bmRsZVdpbmRvd0Rlc3Ryb3llZChRV2F5bGFuZFdpbmRvdyAqd2luZG93KTsKKyAKKy0gICAgd2xf ZXZlbnRfcXVldWUgKmNyZWF0ZUV2ZW50UXVldWUoKTsKKy0gICAgRnJhbWVRdWV1ZSBjcmVhdGVG cmFtZVF1ZXVlKCk7CistICAgIHZvaWQgZGVzdHJveUZyYW1lUXVldWUoY29uc3QgRnJhbWVRdWV1 ZSAmcSk7CistICAgIHZvaWQgZGlzcGF0Y2hRdWV1ZVdoaWxlKHdsX2V2ZW50X3F1ZXVlICpxdWV1 ZSwgc3RkOjpmdW5jdGlvbjxib29sKCk+IGNvbmRpdGlvbiwgaW50IHRpbWVvdXQgPSAtMSk7Cisr ICAgIHdsX2V2ZW50X3F1ZXVlICpmcmFtZUV2ZW50UXVldWUoKSB7IHJldHVybiBtX2ZyYW1lRXZl bnRRdWV1ZTsgfTsKKysKKysgICAgYm9vbCBpc0tleWJvYXJkQXZhaWxhYmxlKCkgY29uc3Q7Cisg CisrICAgIHZvaWQgaW5pdEV2ZW50VGhyZWFkKCk7CisgcHVibGljIHNsb3RzOgorICAgICB2b2lk IGJsb2NraW5nUmVhZEV2ZW50cygpOworICAgICB2b2lkIGZsdXNoUmVxdWVzdHMoKTsKK0BAIC0y MzcsNiArMjM0LDkgQEAgcHJpdmF0ZToKKyAgICAgfTsKKyAKKyAgICAgc3RydWN0IHdsX2Rpc3Bs YXkgKm1EaXNwbGF5ID0gbnVsbHB0cjsKKysgICAgUVNjb3BlZFBvaW50ZXI8RXZlbnRUaHJlYWQ+ IG1fZXZlbnRUaHJlYWQ7CisrICAgIHdsX2V2ZW50X3F1ZXVlICptX2ZyYW1lRXZlbnRRdWV1ZSA9 IG51bGxwdHI7CisrICAgIFFTY29wZWRQb2ludGVyPEV2ZW50VGhyZWFkPiBtX2ZyYW1lRXZlbnRR dWV1ZVRocmVhZDsKKyAgICAgUXRXYXlsYW5kOjp3bF9jb21wb3NpdG9yIG1Db21wb3NpdG9yOwor ICAgICBRU2NvcGVkUG9pbnRlcjxRV2F5bGFuZFNobT4gbVNobTsKKyAgICAgUUxpc3Q8UVdheWxh bmRTY3JlZW4gKj4gbVdhaXRpbmdTY3JlZW5zOworQEAgLTI3MywxMSArMjczLDkgQEAgcHJpdmF0 ZToKKyAgICAgUVdheWxhbmRJbnB1dERldmljZSAqbUxhc3RJbnB1dERldmljZSA9IG51bGxwdHI7 CisgICAgIFFQb2ludGVyPFFXYXlsYW5kV2luZG93PiBtTGFzdElucHV0V2luZG93OworICAgICBR UG9pbnRlcjxRV2F5bGFuZFdpbmRvdz4gbUxhc3RLZXlib2FyZEZvY3VzOworLSAgICBRVmVjdG9y PFFXYXlsYW5kV2luZG93ICo+IG1BY3RpdmVXaW5kb3dzOworLSAgICBRVmVjdG9yPEZyYW1lUXVl dWU+IG1FeHRlcm5hbFF1ZXVlczsKKysgICAgUUxpc3Q8UVdheWxhbmRXaW5kb3cgKj4gbUFjdGl2 ZVdpbmRvd3M7CisgICAgIHN0cnVjdCB3bF9jYWxsYmFjayAqbVN5bmNDYWxsYmFjayA9IG51bGxw dHI7CisgICAgIHN0YXRpYyBjb25zdCB3bF9jYWxsYmFja19saXN0ZW5lciBzeW5jQ2FsbGJhY2tM aXN0ZW5lcjsKKy0gICAgUVJlYWRXcml0ZUxvY2sgbV9mcmFtZVF1ZXVlTG9jazsKKyAKKyAgICAg Ym9vbCBtQ2xpZW50U2lkZUlucHV0Q29udGV4dFJlcXVlc3RlZCA9ICFRUGxhdGZvcm1JbnB1dENv bnRleHRGYWN0b3J5OjpyZXF1ZXN0ZWQoKS5pc051bGwoKTsKKyAKK2RpZmYgLS1naXQgYS9xdHdh eWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZC5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZGRuZC5jcHAKK2luZGV4IDY1MzVhYTE2Li43YzUzZjVmYSAxMDA2NDQKKy0tLSBhL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmRkbmQuY3BwCitAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFFXYXlsYW5kRHJh Zzo6c3RhcnREcmFnKCkKKyB7CisgICAgIFFCYXNpY0RyYWc6OnN0YXJ0RHJhZygpOworICAgICBR V2F5bGFuZFdpbmRvdyAqaWNvbiA9IHN0YXRpY19jYXN0PFFXYXlsYW5kV2luZG93ICo+KHNoYXBl ZFBpeG1hcFdpbmRvdygpLT5oYW5kbGUoKSk7CistICAgIGlmIChtX2Rpc3BsYXktPmN1cnJlbnRJ bnB1dERldmljZSgpLT5kYXRhRGV2aWNlKCktPnN0YXJ0RHJhZyhkcmFnKCktPm1pbWVEYXRhKCks IGljb24pKSB7CisrICAgIGlmIChtX2Rpc3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5kYXRh RGV2aWNlKCktPnN0YXJ0RHJhZyhkcmFnKCktPm1pbWVEYXRhKCksIGRyYWcoKS0+c3VwcG9ydGVk QWN0aW9ucygpLCBpY29uKSkgeworICAgICAgICAgaWNvbi0+YWRkQXR0YWNoT2Zmc2V0KC1kcmFn KCktPmhvdFNwb3QoKSk7CisgICAgIH0gZWxzZSB7CisgICAgICAgICAvLyBDYW5jZWxsaW5nIGlt bWVkaWF0ZWx5IGRvZXMgbm90IHdvcmssIHNpbmNlIHRoZSBldmVudCBsb29wIGZvciBRRHJhZzo6 ZXhlYyBpcyBzdGFydGVkCitAQCAtODAsNiArODAsOSBAQCB2b2lkIFFXYXlsYW5kRHJhZzo6Y2Fu Y2VsKCkKKyAgICAgUUJhc2ljRHJhZzo6Y2FuY2VsKCk7CisgCisgICAgIG1fZGlzcGxheS0+Y3Vy cmVudElucHV0RGV2aWNlKCktPmRhdGFEZXZpY2UoKS0+Y2FuY2VsRHJhZygpOworKworKyAgICBp ZiAoZHJhZygpKQorKyAgICAgICAgZHJhZygpLT5kZWxldGVMYXRlcigpOworIH0KKyAKKyB2b2lk IFFXYXlsYW5kRHJhZzo6bW92ZShjb25zdCBRUG9pbnQgJmdsb2JhbFBvcywgUXQ6Ok1vdXNlQnV0 dG9ucyBiLCBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgbW9kcykKK0BAIC0xMDMsMzMgKzEwNiw0MSBA QCB2b2lkIFFXYXlsYW5kRHJhZzo6ZW5kRHJhZygpCisgICAgIG1fZGlzcGxheS0+Y3VycmVudElu cHV0RGV2aWNlKCktPmhhbmRsZUVuZERyYWcoKTsKKyB9CisgCistdm9pZCBRV2F5bGFuZERyYWc6 OnVwZGF0ZVRhcmdldChjb25zdCBRU3RyaW5nICZtaW1lVHlwZSkKKyt2b2lkIFFXYXlsYW5kRHJh Zzo6c2V0UmVzcG9uc2UoYm9vbCBhY2NlcHRlZCkKKyB7CistICAgIHNldENhbkRyb3AoIW1pbWVU eXBlLmlzRW1wdHkoKSk7CistCistICAgIGlmIChjYW5Ecm9wKCkpIHsKKy0gICAgICAgIHVwZGF0 ZUN1cnNvcihkZWZhdWx0QWN0aW9uKGRyYWcoKS0+c3VwcG9ydGVkQWN0aW9ucygpLCBtX2Rpc3Bs YXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5tb2RpZmllcnMoKSkpOworLSAgICB9IGVsc2Ugewor LSAgICAgICAgdXBkYXRlQ3Vyc29yKFF0OjpJZ25vcmVBY3Rpb24pOworLSAgICB9CisrICAgIC8v IFRoaXMgbWV0aG9kIGlzIHVzZWQgZm9yIG9sZCBEYXRhRGV2aWNlcyB3aGVyZSB0aGUgZHJhZyBh Y3Rpb24gaXMgbm90IGNvbW11bmljYXRlZAorKyAgICBRdDo6RHJvcEFjdGlvbiBhY3Rpb24gPSBk ZWZhdWx0QWN0aW9uKGRyYWcoKS0+c3VwcG9ydGVkQWN0aW9ucygpLCBtX2Rpc3BsYXktPmN1cnJl bnRJbnB1dERldmljZSgpLT5tb2RpZmllcnMoKSk7CisrICAgIHNldFJlc3BvbnNlKFFQbGF0Zm9y bURyb3BRdFJlc3BvbnNlKGFjY2VwdGVkLCBhY3Rpb24pKTsKKyB9CisgCistdm9pZCBRV2F5bGFu ZERyYWc6OnNldFJlc3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlICZyZXNwb25z ZSkKKyt2b2lkIFFXYXlsYW5kRHJhZzo6c2V0UmVzcG9uc2UoY29uc3QgUVBsYXRmb3JtRHJvcFF0 UmVzcG9uc2UgJnJlc3BvbnNlKQorIHsKKyAgICAgc2V0Q2FuRHJvcChyZXNwb25zZS5pc0FjY2Vw dGVkKCkpOworIAorICAgICBpZiAoY2FuRHJvcCgpKSB7CistICAgICAgICB1cGRhdGVDdXJzb3Io ZGVmYXVsdEFjdGlvbihkcmFnKCktPnN1cHBvcnRlZEFjdGlvbnMoKSwgbV9kaXNwbGF5LT5jdXJy ZW50SW5wdXREZXZpY2UoKS0+bW9kaWZpZXJzKCkpKTsKKysgICAgICAgIHVwZGF0ZUN1cnNvcihy ZXNwb25zZS5hY2NlcHRlZEFjdGlvbigpKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIHVwZGF0 ZUN1cnNvcihRdDo6SWdub3JlQWN0aW9uKTsKKyAgICAgfQorIH0KKyAKKy12b2lkIFFXYXlsYW5k RHJhZzo6ZmluaXNoRHJhZyhjb25zdCBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSAmcmVzcG9uc2Up Cisrdm9pZCBRV2F5bGFuZERyYWc6OnNldERyb3BSZXNwb25zZShjb25zdCBRUGxhdGZvcm1Ecm9w UXRSZXNwb25zZSAmcmVzcG9uc2UpCisgeworICAgICBzZXRFeGVjdXRlZERyb3BBY3Rpb24ocmVz cG9uc2UuYWNjZXB0ZWRBY3Rpb24oKSk7CisrfQorKworK3ZvaWQgUVdheWxhbmREcmFnOjpmaW5p c2hEcmFnKCkKKyt7CisgICAgIFFLZXlFdmVudCBldmVudChRRXZlbnQ6OktleVByZXNzLCBRdDo6 S2V5X0VzY2FwZSwgUXQ6Ok5vTW9kaWZpZXIpOworICAgICBldmVudEZpbHRlcihzaGFwZWRQaXht YXBXaW5kb3coKSwgJmV2ZW50KTsKKysKKysgICAgaWYgKGRyYWcoKSkKKysgICAgICAgIGRyYWco KS0+ZGVsZXRlTGF0ZXIoKTsKKyt9CisrCisrYm9vbCBRV2F5bGFuZERyYWc6Om93bnNEcmFnT2Jq ZWN0KCkgY29uc3QKKyt7CisrICAgIHJldHVybiB0cnVlOworIH0KKyAKKyB9CitkaWZmIC0tZ2l0 IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmRfcC5oIGIvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmRkbmRfcC5oCitpbmRleCA0NzRmZTJhYi4uNDZmNjI5YWMgMTAwNjQ0Cist LS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZF9wLmgKKysrKyBiL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kX3AuaAorQEAgLTcxLDkgKzcxLDEwIEBAIHB1YmxpYzoK KyAgICAgUVdheWxhbmREcmFnKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSk7CisgICAgIH5RV2F5 bGFuZERyYWcoKSBvdmVycmlkZTsKKyAKKy0gICAgdm9pZCB1cGRhdGVUYXJnZXQoY29uc3QgUVN0 cmluZyAmbWltZVR5cGUpOworLSAgICB2b2lkIHNldFJlc3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURy YWdRdFJlc3BvbnNlICZyZXNwb25zZSk7CistICAgIHZvaWQgZmluaXNoRHJhZyhjb25zdCBRUGxh dGZvcm1Ecm9wUXRSZXNwb25zZSAmcmVzcG9uc2UpOworKyAgICB2b2lkIHNldFJlc3BvbnNlKGJv b2wgYWNjZXB0ZWQpOworKyAgICB2b2lkIHNldFJlc3BvbnNlKGNvbnN0IFFQbGF0Zm9ybURyb3BR dFJlc3BvbnNlICZyZXNwb25zZSk7CisrICAgIHZvaWQgc2V0RHJvcFJlc3BvbnNlKGNvbnN0IFFQ bGF0Zm9ybURyb3BRdFJlc3BvbnNlICZyZXNwb25zZSk7CisrICAgIHZvaWQgZmluaXNoRHJhZygp OworIAorIHByb3RlY3RlZDoKKyAgICAgdm9pZCBzdGFydERyYWcoKSBvdmVycmlkZTsKK0BAIC04 Miw2ICs4Myw3IEBAIHByb3RlY3RlZDoKKyAgICAgdm9pZCBkcm9wKGNvbnN0IFFQb2ludCAmZ2xv YmFsUG9zLCBRdDo6TW91c2VCdXR0b25zIGIsIFF0OjpLZXlib2FyZE1vZGlmaWVycyBtb2RzKSBv dmVycmlkZTsKKyAgICAgdm9pZCBlbmREcmFnKCkgb3ZlcnJpZGU7CisgCisrICAgIGJvb2wgb3du c0RyYWdPYmplY3QoKSBjb25zdCBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgorICAgICBRV2F5bGFu ZERpc3BsYXkgKm1fZGlzcGxheSA9IG51bGxwdHI7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRpbnB1dGRldmljZS5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZGlucHV0ZGV2aWNlLmNwcAoraW5kZXggNjEzZmU4NjIuLjRiOTBkZTg0IDEwMDY0NAor LS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnB1dGRldmljZS5jcHAKKysrKyBi L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW5wdXRkZXZpY2UuY3BwCitAQCAtNjg1LDYg KzY4NSwxMSBAQCBwdWJsaWM6CisgCisgdm9pZCBRV2F5bGFuZElucHV0RGV2aWNlOjpQb2ludGVy Ojpwb2ludGVyX2xlYXZlKHVpbnQzMl90IHRpbWUsIHN0cnVjdCB3bF9zdXJmYWNlICpzdXJmYWNl KQorIHsKKysgICAgaW52YWxpZGF0ZUZvY3VzKCk7CisrICAgIG1CdXR0b25zID0gUXQ6Ok5vQnV0 dG9uOworKworKyAgICBtUGFyZW50LT5tVGltZSA9IHRpbWU7CisrCisgICAgIC8vIFRoZSBldmVu dCBtYXkgYXJyaXZlIGFmdGVyIGRlc3Ryb3lpbmcgdGhlIHdpbmRvdywgaW5kaWNhdGVkIGJ5Cisg ICAgIC8vIGEgbnVsbCBzdXJmYWNlLgorICAgICBpZiAoIXN1cmZhY2UpCitAQCAtNjk2LDExICs3 MDEsNiBAQCB2b2lkIFFXYXlsYW5kSW5wdXREZXZpY2U6OlBvaW50ZXI6OnBvaW50ZXJfbGVhdmUo dWludDMyX3QgdGltZSwgc3RydWN0IHdsX3N1cmZhYworIAorICAgICBpZiAoIVFXYXlsYW5kV2lu ZG93Ojptb3VzZUdyYWIoKSkKKyAgICAgICAgIHNldEZyYW1lRXZlbnQobmV3IExlYXZlRXZlbnQo d2luZG93LCBtU3VyZmFjZVBvcywgbUdsb2JhbFBvcykpOworLQorLSAgICBpbnZhbGlkYXRlRm9j dXMoKTsKKy0gICAgbUJ1dHRvbnMgPSBRdDo6Tm9CdXR0b247CistCistICAgIG1QYXJlbnQtPm1U aW1lID0gdGltZTsKKyB9CisgCisgY2xhc3MgTW90aW9uRXZlbnQgOiBwdWJsaWMgUVdheWxhbmRQ b2ludGVyRXZlbnQKK0BAIC0xMzAwLDE0ICsxMzAwLDYgQEAgdm9pZCBRV2F5bGFuZElucHV0RGV2 aWNlOjpLZXlib2FyZDo6aGFuZGxlRm9jdXNEZXN0cm95ZWQoKQorIHZvaWQgUVdheWxhbmRJbnB1 dERldmljZTo6S2V5Ym9hcmQ6OmhhbmRsZUZvY3VzTG9zdCgpCisgeworICAgICBtRm9jdXMgPSBu dWxscHRyOworLSNpZiBRVF9DT05GSUcoY2xpcGJvYXJkKQorLSAgICBpZiAoYXV0byAqZGF0YURl dmljZSA9IG1QYXJlbnQtPmRhdGFEZXZpY2UoKSkKKy0gICAgICAgIGRhdGFEZXZpY2UtPmludmFs aWRhdGVTZWxlY3Rpb25PZmZlcigpOworLSNlbmRpZgorLSNpZiBRVF9DT05GSUcod2F5bGFuZF9j bGllbnRfcHJpbWFyeV9zZWxlY3Rpb24pCistICAgIGlmIChhdXRvICpkZXZpY2UgPSBtUGFyZW50 LT5wcmltYXJ5U2VsZWN0aW9uRGV2aWNlKCkpCistICAgICAgICBkZXZpY2UtPmludmFsaWRhdGVT ZWxlY3Rpb25PZmZlcigpOworLSNlbmRpZgorICAgICBtUGFyZW50LT5tUURpc3BsYXktPmhhbmRs ZUtleWJvYXJkRm9jdXNDaGFuZ2VkKG1QYXJlbnQpOworICAgICBtUmVwZWF0VGltZXIuc3RvcCgp OworIH0KK0BAIC0xMzk2LDYgKzEzODgsNyBAQCB2b2lkIFFXYXlsYW5kSW5wdXREZXZpY2U6OlRv dWNoOjp0b3VjaF9jYW5jZWwoKQorICAgICBpZiAodG91Y2hFeHQpCisgICAgICAgICB0b3VjaEV4 dC0+dG91Y2hDYW5jZWxlZCgpOworIAorKyAgICBtRm9jdXMgPSBudWxscHRyOworICAgICBRV2lu ZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVUb3VjaENhbmNlbEV2ZW50KG51bGxwdHIsIG1QYXJl bnQtPm1Ub3VjaERldmljZSk7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kaW50ZWdyYXRpb24uY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxh bmRpbnRlZ3JhdGlvbi5jcHAKK2luZGV4IGM1M2NjYjc4Li41NDg2MTYwMCAxMDA2NDQKKy0tLSBh L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb24uY3BwCisrKysgYi9xdHdh eWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9uLmNwcAorQEAgLTEyNSw2ICsxMjUs OSBAQCBRV2F5bGFuZEludGVncmF0aW9uOjpRV2F5bGFuZEludGVncmF0aW9uKCkKKyAjZW5kaWYK KyAKKyAgICAgcmVjb25maWd1cmVJbnB1dENvbnRleHQoKTsKKysKKysgICAgUVdheWxhbmRXaW5k b3c6OmZpeGVkVG9wbGV2ZWxQb3NpdGlvbnMgPQorKyAgICAgICAgICAgICFxRW52aXJvbm1lbnRW YXJpYWJsZUlzU2V0KCJRVF9XQVlMQU5EX0RJU0FCTEVfRklYRURfUE9TSVRJT05TIik7CisgfQor IAorIFFXYXlsYW5kSW50ZWdyYXRpb246On5RV2F5bGFuZEludGVncmF0aW9uKCkKK0BAIC0xOTIs MTQgKzE5NSwxOCBAQCBRQWJzdHJhY3RFdmVudERpc3BhdGNoZXIgKlFXYXlsYW5kSW50ZWdyYXRp b246OmNyZWF0ZUV2ZW50RGlzcGF0Y2hlcigpIGNvbnN0CisgCisgdm9pZCBRV2F5bGFuZEludGVn cmF0aW9uOjppbml0aWFsaXplKCkKKyB7CisrICAgIG1EaXNwbGF5LT5pbml0RXZlbnRUaHJlYWQo KTsKKysKKysgICAgLy8gQ2FsbCBhZnRlciBldmVudERpc3BhdGNoZXIgaXMgZnVsbHkgY29ubmVj dGVkLCBmb3IgUVdheWxhbmREaXNwbGF5Ojpmb3JjZVJvdW5kVHJpcCgpCisrICAgIG1EaXNwbGF5 LT5pbml0aWFsaXplKCk7CisrCisrICAgIC8vIEJ1dCB0aGUgYWJvdXRUb0Jsb2NrKCkgYW5kIGF3 YWtlKCkgc2hvdWxkIGJlIGNvbm5lY3RlZCBhZnRlciBpbml0aWFsaXplUGxhdGZvcm0oKS4KKysg ICAgLy8gT3RoZXJ3aXNlIHRoZSBjb25uZWN0ZWQgZmx1c2hSZXF1ZXN0cygpIG1heSBjb25zdW1l cyB1cCBhbGwgZXZlbnRzIGJlZm9yZSBwcm9jZXNzRXZlbnRzIHN0YXJ0cyB0byB3YWl0LAorKyAg ICAvLyBzbyB0aGF0IHByb2Nlc3NFdmVudHMoUUV2ZW50TG9vcDo6V2FpdEZvck1vcmVFdmVudHMp IG1heSBiZSBibG9ja2VkIGluIHRoZSBmb3JjZVJvdW5kVHJpcCgpLgorICAgICBRQWJzdHJhY3RF dmVudERpc3BhdGNoZXIgKmRpc3BhdGNoZXIgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpldmVu dERpc3BhdGNoZXI7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QoZGlzcGF0Y2hlciwgU0lHTkFMKGFi b3V0VG9CbG9jaygpKSwgbURpc3BsYXkuZGF0YSgpLCBTTE9UKGZsdXNoUmVxdWVzdHMoKSkpOwor ICAgICBRT2JqZWN0Ojpjb25uZWN0KGRpc3BhdGNoZXIsIFNJR05BTChhd2FrZSgpKSwgbURpc3Bs YXkuZGF0YSgpLCBTTE9UKGZsdXNoUmVxdWVzdHMoKSkpOworIAorLSAgICBpbnQgZmQgPSB3bF9k aXNwbGF5X2dldF9mZChtRGlzcGxheS0+d2xfZGlzcGxheSgpKTsKKy0gICAgUVNvY2tldE5vdGlm aWVyICpzbiA9IG5ldyBRU29ja2V0Tm90aWZpZXIoZmQsIFFTb2NrZXROb3RpZmllcjo6UmVhZCwg bURpc3BsYXkuZGF0YSgpKTsKKy0gICAgUU9iamVjdDo6Y29ubmVjdChzbiwgU0lHTkFMKGFjdGl2 YXRlZChRU29ja2V0RGVzY3JpcHRvcikpLCBtRGlzcGxheS5kYXRhKCksIFNMT1QoZmx1c2hSZXF1 ZXN0cygpKSk7CistCisgICAgIC8vIFF0IGRvZXMgbm90IHN1cHBvcnQgcnVubmluZyB3aXRoIG5v IHNjcmVlbnMKKyAgICAgbURpc3BsYXktPmVuc3VyZVNjcmVlbigpOworIH0KK0BAIC0yNjIsNiAr MjY5LDE0IEBAIFFXYXlsYW5kRGlzcGxheSAqUVdheWxhbmRJbnRlZ3JhdGlvbjo6ZGlzcGxheSgp IGNvbnN0CisgICAgIHJldHVybiBtRGlzcGxheS5kYXRhKCk7CisgfQorIAorK1F0OjpLZXlib2Fy ZE1vZGlmaWVycyBRV2F5bGFuZEludGVncmF0aW9uOjpxdWVyeUtleWJvYXJkTW9kaWZpZXJzKCkg Y29uc3QKKyt7CisrICAgIGlmIChhdXRvICpzZWF0ID0gbURpc3BsYXktPmN1cnJlbnRJbnB1dERl dmljZSgpKSB7CisrICAgICAgICByZXR1cm4gc2VhdC0+bW9kaWZpZXJzKCk7CisrICAgIH0KKysg ICAgcmV0dXJuIFF0OjpOb01vZGlmaWVyOworK30KKysKKyBRTGlzdDxpbnQ+IFFXYXlsYW5kSW50 ZWdyYXRpb246OnBvc3NpYmxlS2V5cyhjb25zdCBRS2V5RXZlbnQgKmV2ZW50KSBjb25zdAorIHsK KyAgICAgaWYgKGF1dG8gKnNlYXQgPSBtRGlzcGxheS0+Y3VycmVudElucHV0RGV2aWNlKCkpCitA QCAtNDc5LDcgKzQ5NCw3IEBAIHZvaWQgUVdheWxhbmRJbnRlZ3JhdGlvbjo6cmVjb25maWd1cmVJ bnB1dENvbnRleHQoKQorICAgICB9CisgI2VuZGlmCisgCistICAgIHFDRGVidWcobGNRcGFXYXls YW5kKSA8PCAidXNpbmcgaW5wdXQgbWV0aG9kOiIgPDwgaW5wdXRDb250ZXh0KCktPm1ldGFPYmpl Y3QoKS0+Y2xhc3NOYW1lKCk7CisrICAgIHFDRGVidWcobGNRcGFXYXlsYW5kKSA8PCAidXNpbmcg aW5wdXQgbWV0aG9kOiIgPDwgKGlucHV0Q29udGV4dCgpID8gaW5wdXRDb250ZXh0KCktPm1ldGFP YmplY3QoKS0+Y2xhc3NOYW1lKCkgOiAiPG5vbmU+Iik7CisgfQorIAorIFFXYXlsYW5kU2hlbGxJ bnRlZ3JhdGlvbiAqUVdheWxhbmRJbnRlZ3JhdGlvbjo6Y3JlYXRlU2hlbGxJbnRlZ3JhdGlvbihj b25zdCBRU3RyaW5nICZpbnRlZ3JhdGlvbk5hbWUpCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbl9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZGludGVncmF0aW9uX3AuaAoraW5kZXggZmY3MGFlMjUuLjczYjgwNjU4IDEwMDY0NAor LS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbl9wLmgKKysrKyBi L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb25fcC5oCitAQCAtMTA3LDYg KzEwNyw4IEBAIHB1YmxpYzoKKyAKKyAgICAgUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KCkgY29u c3Q7CisgCisrICAgIFF0OjpLZXlib2FyZE1vZGlmaWVycyBxdWVyeUtleWJvYXJkTW9kaWZpZXJz KCkgY29uc3Qgb3ZlcnJpZGU7CisrCisgICAgIFFMaXN0PGludD4gcG9zc2libGVLZXlzKGNvbnN0 IFFLZXlFdmVudCAqZXZlbnQpIGNvbnN0IG92ZXJyaWRlOworIAorICAgICBRU3RyaW5nTGlzdCB0 aGVtZU5hbWVzKCkgY29uc3Qgb3ZlcnJpZGU7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmRwcmltYXJ5c2VsZWN0aW9udjEuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmRwcmltYXJ5c2VsZWN0aW9udjEuY3BwCitpbmRleCA4MzJmOTY3OC4uZWE1MDg3 NzEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHByaW1hcnlzZWxl Y3Rpb252MS5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kcHJpbWFyeXNl bGVjdGlvbnYxLmNwcAorQEAgLTU0LDExICs1NCw2IEBAIFFXYXlsYW5kUHJpbWFyeVNlbGVjdGlv bkRldmljZU1hbmFnZXJWMTo6UVdheWxhbmRQcmltYXJ5U2VsZWN0aW9uRGV2aWNlTWFuYWdlclYx CisgICAgIDogendwX3ByaW1hcnlfc2VsZWN0aW9uX2RldmljZV9tYW5hZ2VyX3YxKGRpc3BsYXkt PndsX3JlZ2lzdHJ5KCksIGlkLCBxTWluKHZlcnNpb24sIHVpbnQoMSkpKQorICAgICAsIG1fZGlz cGxheShkaXNwbGF5KQorIHsKKy0gICAgLy8gQ3JlYXRlIGRldmljZXMgZm9yIGFsbCBzZWF0cy4K Ky0gICAgLy8gVGhpcyBvbmx5IHdvcmtzIGlmIHdlIGdldCB0aGUgZ2xvYmFsIGJlZm9yZSBhbGwg ZGV2aWNlcworLSAgICBjb25zdCBhdXRvIHNlYXRzID0gbV9kaXNwbGF5LT5pbnB1dERldmljZXMo KTsKKy0gICAgZm9yIChhdXRvICpzZWF0IDogc2VhdHMpCistICAgICAgICBzZWF0LT5zZXRQcmlt YXJ5U2VsZWN0aW9uRGV2aWNlKGNyZWF0ZURldmljZShzZWF0KSk7CisgfQorIAorIFFXYXlsYW5k UHJpbWFyeVNlbGVjdGlvbkRldmljZVYxICpRV2F5bGFuZFByaW1hcnlTZWxlY3Rpb25EZXZpY2VN YW5hZ2VyVjE6OmNyZWF0ZURldmljZShRV2F5bGFuZElucHV0RGV2aWNlICpzZWF0KQorZGlmZiAt LWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuLmNwcCBiL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuLmNwcAoraW5kZXggNmNiMzM3ZGUuLjU1MzdkYWZk IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW4uY3BwCisr KysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbi5jcHAKK0BAIC02MCw3ICs2 MCw3IEBAIFFXYXlsYW5kWGRnT3V0cHV0TWFuYWdlclYxOjpRV2F5bGFuZFhkZ091dHB1dE1hbmFn ZXJWMShRV2F5bGFuZERpc3BsYXkqIGRpc3BsYXksCisgfQorIAorIFFXYXlsYW5kU2NyZWVuOjpR V2F5bGFuZFNjcmVlbihRV2F5bGFuZERpc3BsYXkgKndheWxhbmREaXNwbGF5LCBpbnQgdmVyc2lv biwgdWludDMyX3QgaWQpCistICAgIDogUXRXYXlsYW5kOjp3bF9vdXRwdXQod2F5bGFuZERpc3Bs YXktPndsX3JlZ2lzdHJ5KCksIGlkLCBxTWluKHZlcnNpb24sIDIpKQorKyAgICA6IFF0V2F5bGFu ZDo6d2xfb3V0cHV0KHdheWxhbmREaXNwbGF5LT53bF9yZWdpc3RyeSgpLCBpZCwgcU1pbih2ZXJz aW9uLCAzKSkKKyAgICAgLCBtX291dHB1dElkKGlkKQorICAgICAsIG1XYXlsYW5kRGlzcGxheSh3 YXlsYW5kRGlzcGxheSkKKyAgICAgLCBtT3V0cHV0TmFtZShRU3RyaW5nTGl0ZXJhbCgiU2NyZWVu JTEiKS5hcmcoaWQpKQorQEAgLTcyLDcgKzcyLDcgQEAgUVdheWxhbmRTY3JlZW46OlFXYXlsYW5k U2NyZWVuKFFXYXlsYW5kRGlzcGxheSAqd2F5bGFuZERpc3BsYXksIGludCB2ZXJzaW9uLCB1aW4K KyAgICAgICAgIHFDV2FybmluZyhsY1FwYVdheWxhbmQpIDw8ICJ3bF9vdXRwdXQgZG9uZSBldmVu dCBub3Qgc3VwcG9ydGVkIGJ5IGNvbXBvc2l0b3IsIgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPDwgIlFTY3JlZW4gbWF5IG5vdCB3b3JrIGNvcnJlY3RseSI7CisgICAgICAgICBt V2F5bGFuZERpc3BsYXktPmZvcmNlUm91bmRUcmlwKCk7IC8vIEdpdmUgdGhlIGNvbXBvc2l0b3Ig YSBjaGFuY2UgdG8gc2VuZCBnZW9tZXRyeSBldGMuCistICAgICAgICBtT3V0cHV0RG9uZSA9IHRy dWU7IC8vIEZha2UgdGhlIGRvbmUgZXZlbnQKKysgICAgICAgIG1Qcm9jZXNzZWRFdmVudHMgfD0g T3V0cHV0RG9uZUV2ZW50OyAvLyBGYWtlIHRoZSBkb25lIGV2ZW50CisgICAgICAgICBtYXliZUlu aXRpYWxpemUoKTsKKyAgICAgfQorIH0KK0BAIC04MSwxNiArODEsMjkgQEAgUVdheWxhbmRTY3Jl ZW46On5RV2F5bGFuZFNjcmVlbigpCisgeworICAgICBpZiAoenhkZ19vdXRwdXRfdjE6OmlzSW5p dGlhbGl6ZWQoKSkKKyAgICAgICAgIHp4ZGdfb3V0cHV0X3YxOjpkZXN0cm95KCk7CisrICAgIGlm ICh3bF9vdXRwdXQ6OmlzSW5pdGlhbGl6ZWQoKSAmJiB3bF9vdXRwdXRfZ2V0X3ZlcnNpb24od2xf b3V0cHV0OjpvYmplY3QoKSkgPj0gV0xfT1VUUFVUX1JFTEVBU0VfU0lOQ0VfVkVSU0lPTikKKysg ICAgICAgIHdsX291dHB1dDo6cmVsZWFzZSgpOworK30KKysKKyt1aW50IFFXYXlsYW5kU2NyZWVu OjpyZXF1aXJlZEV2ZW50cygpIGNvbnN0CisreworKyAgICB1aW50IHJldCA9IE91dHB1dERvbmVF dmVudDsKKysKKysgICAgaWYgKG1XYXlsYW5kRGlzcGxheS0+eGRnT3V0cHV0TWFuYWdlcigpKSB7 CisrICAgICAgICByZXQgfD0gWGRnT3V0cHV0TmFtZUV2ZW50OworKworKyAgICAgICAgaWYgKG1X YXlsYW5kRGlzcGxheS0+eGRnT3V0cHV0TWFuYWdlcigpLT52ZXJzaW9uKCkgPCAzKQorKyAgICAg ICAgICAgIHJldCB8PSBYZGdPdXRwdXREb25lRXZlbnQ7CisrICAgIH0KKysgICAgcmV0dXJuIHJl dDsKKyB9CisgCisgdm9pZCBRV2F5bGFuZFNjcmVlbjo6bWF5YmVJbml0aWFsaXplKCkKKyB7Cisg ICAgIFFfQVNTRVJUKCFtSW5pdGlhbGl6ZWQpOworIAorLSAgICBpZiAoIW1PdXRwdXREb25lKQor LSAgICAgICAgcmV0dXJuOworLQorLSAgICBpZiAobVdheWxhbmREaXNwbGF5LT54ZGdPdXRwdXRN YW5hZ2VyKCkgJiYgIW1YZGdPdXRwdXREb25lKQorKyAgICBjb25zdCB1aW50IHJlcXVpcmVkRXZl bnRzID0gdGhpcy0+cmVxdWlyZWRFdmVudHMoKTsKKysgICAgaWYgKChtUHJvY2Vzc2VkRXZlbnRz ICYgcmVxdWlyZWRFdmVudHMpICE9IHJlcXVpcmVkRXZlbnRzKQorICAgICAgICAgcmV0dXJuOwor IAorICAgICBtSW5pdGlhbGl6ZWQgPSB0cnVlOworQEAgLTI3Niw5ICsyODksOCBAQCB2b2lkIFFX YXlsYW5kU2NyZWVuOjpvdXRwdXRfc2NhbGUoaW50MzJfdCBmYWN0b3IpCisgCisgdm9pZCBRV2F5 bGFuZFNjcmVlbjo6b3V0cHV0X2RvbmUoKQorIHsKKy0gICAgbU91dHB1dERvbmUgPSB0cnVlOwor LSAgICBpZiAoenhkZ19vdXRwdXRfdjE6OmlzSW5pdGlhbGl6ZWQoKSAmJiBtV2F5bGFuZERpc3Bs YXktPnhkZ091dHB1dE1hbmFnZXIoKS0+dmVyc2lvbigpID49IDMpCistICAgICAgICBtWGRnT3V0 cHV0RG9uZSA9IHRydWU7CisrICAgIG1Qcm9jZXNzZWRFdmVudHMgfD0gT3V0cHV0RG9uZUV2ZW50 OworKworICAgICBpZiAobUluaXRpYWxpemVkKSB7CisgICAgICAgICB1cGRhdGVPdXRwdXRQcm9w ZXJ0aWVzKCk7CisgICAgICAgICBpZiAoenhkZ19vdXRwdXRfdjE6OmlzSW5pdGlhbGl6ZWQoKSkK K0BAIC0zMzksNyArMzUxLDcgQEAgdm9pZCBRV2F5bGFuZFNjcmVlbjo6enhkZ19vdXRwdXRfdjFf ZG9uZSgpCisgICAgIGlmIChRX1VOTElLRUxZKG1XYXlsYW5kRGlzcGxheS0+eGRnT3V0cHV0TWFu YWdlcigpLT52ZXJzaW9uKCkgPj0gMykpCisgICAgICAgICBxV2FybmluZyhsY1FwYVdheWxhbmQp IDw8ICJ6eGRnX291dHB1dF92MS5kb25lIHJlY2VpdmVkIG9uIHZlcnNpb24gMyBvciBuZXdlciwg dGhpcyBpcyBtb3N0IGxpa2VseSBhIGJ1ZyBpbiB0aGUgY29tcG9zaXRvciI7CisgCistICAgIG1Y ZGdPdXRwdXREb25lID0gdHJ1ZTsKKysgICAgbVByb2Nlc3NlZEV2ZW50cyB8PSBYZGdPdXRwdXRE b25lRXZlbnQ7CisgICAgIGlmIChtSW5pdGlhbGl6ZWQpCisgICAgICAgICB1cGRhdGVYZGdPdXRw dXRQcm9wZXJ0aWVzKCk7CisgICAgIGVsc2UKK0BAIC0zNDgsNyArMzYwLDExIEBAIHZvaWQgUVdh eWxhbmRTY3JlZW46Onp4ZGdfb3V0cHV0X3YxX2RvbmUoKQorIAorIHZvaWQgUVdheWxhbmRTY3Jl ZW46Onp4ZGdfb3V0cHV0X3YxX25hbWUoY29uc3QgUVN0cmluZyAmbmFtZSkKKyB7CisrICAgIGlm IChRX1VOTElLRUxZKG1Jbml0aWFsaXplZCkpCisrICAgICAgICBxV2FybmluZyhsY1FwYVdheWxh bmQpIDw8ICJ6eGRnX291dHB1dF92MS5uYW1lIHJlY2VpdmVkIGFmdGVyIG91dHB1dCBoYXMgYmVl biBpbml0aWFsaXplZCwgdGhpcyBpcyBtb3N0IGxpa2VseSBhIGJ1ZyBpbiB0aGUgY29tcG9zaXRv ciI7CisrCisgICAgIG1PdXRwdXROYW1lID0gbmFtZTsKKysgICAgbVByb2Nlc3NlZEV2ZW50cyB8 PSBYZGdPdXRwdXROYW1lRXZlbnQ7CisgfQorIAorIHZvaWQgUVdheWxhbmRTY3JlZW46OnVwZGF0 ZVhkZ091dHB1dFByb3BlcnRpZXMoKQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50 L3F3YXlsYW5kc2NyZWVuX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVu X3AuaAoraW5kZXggZGYxYzk0ZjIuLjA1MGNmZGMwIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRzY3JlZW5fcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9x d2F5bGFuZHNjcmVlbl9wLmgKK0BAIC0xMTYsNiArMTE2LDEzIEBAIHB1YmxpYzoKKyAgICAgc3Rh dGljIFFXYXlsYW5kU2NyZWVuICpmcm9tV2xPdXRwdXQoOjp3bF9vdXRwdXQgKm91dHB1dCk7Cisg CisgcHJpdmF0ZToKKysgICAgZW51bSBFdmVudCA6IHVpbnQgeworKyAgICAgICAgWGRnT3V0cHV0 RG9uZUV2ZW50ID0gMHgxLAorKyAgICAgICAgT3V0cHV0RG9uZUV2ZW50ID0gMHgyLAorKyAgICAg ICAgWGRnT3V0cHV0TmFtZUV2ZW50ID0gMHg0LAorKyAgICB9OworKyAgICB1aW50IHJlcXVpcmVk RXZlbnRzKCkgY29uc3Q7CisrCisgICAgIHZvaWQgb3V0cHV0X21vZGUodWludDMyX3QgZmxhZ3Ms IGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHJlZnJlc2gpIG92ZXJyaWRlOworICAgICB2b2lk IG91dHB1dF9nZW9tZXRyeShpbnQzMl90IHgsIGludDMyX3QgeSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsCitAQCAtMTQ4LDggKzE1NSw3 IEBAIHByaXZhdGU6CisgICAgIFFTaXplIG1QaHlzaWNhbFNpemU7CisgICAgIFFTdHJpbmcgbU91 dHB1dE5hbWU7CisgICAgIFF0OjpTY3JlZW5PcmllbnRhdGlvbiBtX29yaWVudGF0aW9uID0gUXQ6 OlByaW1hcnlPcmllbnRhdGlvbjsKKy0gICAgYm9vbCBtT3V0cHV0RG9uZSA9IGZhbHNlOworLSAg ICBib29sIG1YZGdPdXRwdXREb25lID0gZmFsc2U7CisrICAgIHVpbnQgbVByb2Nlc3NlZEV2ZW50 cyA9IDA7CisgICAgIGJvb2wgbUluaXRpYWxpemVkID0gZmFsc2U7CisgCisgI2lmIFFUX0NPTkZJ RyhjdXJzb3IpCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzaG1i YWNraW5nc3RvcmUuY3BwIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzaG1iYWNraW5n c3RvcmUuY3BwCitpbmRleCBkYzdmZjY3MC4uNDFjZmZkZjcgMTAwNjQ0CistLS0gYS9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZHNobWJhY2tpbmdzdG9yZS5jcHAKKysrKyBiL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kc2htYmFja2luZ3N0b3JlLmNwcAorQEAgLTUyLDYgKzUyLDcg QEAKKyAKKyAjaW5jbHVkZSA8UXRXYXlsYW5kQ2xpZW50L3ByaXZhdGUvd2F5bGFuZC13YXlsYW5k LWNsaWVudC1wcm90b2NvbC5oPgorIAorKyNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDx1 bmlzdGQuaD4KKyAjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyAKK0BAIC02MSw2ICs2Miw5IEBACisg IyAgaWZuZGVmIE1GRF9DTE9FWEVDCisgIyAgICBkZWZpbmUgTUZEX0NMT0VYRUMgICAgIDB4MDAw MVUKKyAjICBlbmRpZgorKyMgIGlmbmRlZiBNRkRfQUxMT1dfU0VBTElORworKyMgICAgZGVmaW5l IE1GRF9BTExPV19TRUFMSU5HIDB4MDAwMlUKKysjICBlbmRpZgorICNlbmRpZgorIAorIFFUX0JF R0lOX05BTUVTUEFDRQorQEAgLTc0LDggKzc4LDEwIEBAIFFXYXlsYW5kU2htQnVmZmVyOjpRV2F5 bGFuZFNobUJ1ZmZlcihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXksCisgICAgIGludCBhbGxvYyA9 IHN0cmlkZSAqIHNpemUuaGVpZ2h0KCk7CisgICAgIGludCBmZCA9IC0xOworIAorLSNpZmRlZiBT WVNfbWVtZmRfY3JlYXRlCistICAgIGZkID0gc3lzY2FsbChTWVNfbWVtZmRfY3JlYXRlLCAid2F5 bGFuZC1zaG0iLCBNRkRfQ0xPRVhFQyk7CisrI2lmIGRlZmluZWQoU1lTX21lbWZkX2NyZWF0ZSkg JiYgZGVmaW5lZChGX1NFQUxfU0VBTCkKKysgICAgZmQgPSBzeXNjYWxsKFNZU19tZW1mZF9jcmVh dGUsICJ3YXlsYW5kLXNobSIsIE1GRF9DTE9FWEVDIHwgTUZEX0FMTE9XX1NFQUxJTkcpOworKyAg ICBpZiAoZmQgPj0gMCkKKysgICAgICAgIGZjbnRsKGZkLCBGX0FERF9TRUFMUywgRl9TRUFMX1NI UklOSyB8IEZfU0VBTF9TRUFMKTsKKyAjZW5kaWYKKyAKKyAgICAgUVNjb3BlZFBvaW50ZXI8UUZp bGU+IGZpbGVQb2ludGVyOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXls YW5kd2luZG93LmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93LmNwcAor aW5kZXggY2I4Mjg1N2EuLmZiMmM1OWRjIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmR3aW5kb3cuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFu ZHdpbmRvdy5jcHAKK0BAIC03Niw3ICs3Niw2IEBAIFFXYXlsYW5kV2luZG93ICpRV2F5bGFuZFdp bmRvdzo6bU1vdXNlR3JhYiA9IG51bGxwdHI7CisgUVdheWxhbmRXaW5kb3c6OlFXYXlsYW5kV2lu ZG93KFFXaW5kb3cgKndpbmRvdywgUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KQorICAgICA6IFFQ bGF0Zm9ybVdpbmRvdyh3aW5kb3cpCisgICAgICwgbURpc3BsYXkoZGlzcGxheSkKKy0gICAgLCBt RnJhbWVRdWV1ZShtRGlzcGxheS0+Y3JlYXRlRnJhbWVRdWV1ZSgpKQorICAgICAsIG1SZXNpemVB ZnRlclN3YXAocUVudmlyb25tZW50VmFyaWFibGVJc1NldCgiUVRfV0FZTEFORF9SRVNJWkVfQUZU RVJfU1dBUCIpKQorIHsKKyAgICAgeworQEAgLTk1LDkgKzk0LDYgQEAgUVdheWxhbmRXaW5kb3c6 OlFXYXlsYW5kV2luZG93KFFXaW5kb3cgKndpbmRvdywgUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5 KQorIAorIFFXYXlsYW5kV2luZG93Ojp+UVdheWxhbmRXaW5kb3coKQorIHsKKy0gICAgbURpc3Bs YXktPmRlc3Ryb3lGcmFtZVF1ZXVlKG1GcmFtZVF1ZXVlKTsKKy0gICAgbURpc3BsYXktPmhhbmRs ZVdpbmRvd0Rlc3Ryb3llZCh0aGlzKTsKKy0KKyAgICAgZGVsZXRlIG1XaW5kb3dEZWNvcmF0aW9u OworIAorICAgICBpZiAobVN1cmZhY2UpCitAQCAtMjQzLDYgKzIzOSw3IEBAIGJvb2wgUVdheWxh bmRXaW5kb3c6OnNob3VsZENyZWF0ZVN1YlN1cmZhY2UoKSBjb25zdAorIAorIHZvaWQgUVdheWxh bmRXaW5kb3c6OnJlc2V0KCkKKyB7CisrICAgIGNsb3NlQ2hpbGRQb3B1cHMoKTsKKyAgICAgZGVs ZXRlIG1TaGVsbFN1cmZhY2U7CisgICAgIG1TaGVsbFN1cmZhY2UgPSBudWxscHRyOworICAgICBk ZWxldGUgbVN1YlN1cmZhY2VXaW5kb3c7CitAQCAtMjU1LDE3ICsyNTIsMjIgQEAgdm9pZCBRV2F5 bGFuZFdpbmRvdzo6cmVzZXQoKQorICAgICAgICAgbVN1cmZhY2UucmVzZXQoKTsKKyAgICAgfQor IAorLSAgICBpZiAobUZyYW1lQ2FsbGJhY2spIHsKKy0gICAgICAgIHdsX2NhbGxiYWNrX2Rlc3Ry b3kobUZyYW1lQ2FsbGJhY2spOworLSAgICAgICAgbUZyYW1lQ2FsbGJhY2sgPSBudWxscHRyOwor LSAgICB9CisrICAgIHsKKysgICAgICAgIFFNdXRleExvY2tlciBsb2NrKCZtRnJhbWVTeW5jTXV0 ZXgpOworKyAgICAgICAgaWYgKG1GcmFtZUNhbGxiYWNrKSB7CisrICAgICAgICAgICAgd2xfY2Fs bGJhY2tfZGVzdHJveShtRnJhbWVDYWxsYmFjayk7CisrICAgICAgICAgICAgbUZyYW1lQ2FsbGJh Y2sgPSBudWxscHRyOworKyAgICAgICAgfQorIAorLSAgICBtRnJhbWVDYWxsYmFja0VsYXBzZWRU aW1lci5pbnZhbGlkYXRlKCk7CistICAgIG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjayA9IGZhbHNl OworKyAgICAgICAgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaW52YWxpZGF0ZSgpOworKyAg ICAgICAgbVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrID0gZmFsc2U7CisrICAgIH0KKyAgICAgbUZy YW1lQ2FsbGJhY2tUaW1lZE91dCA9IGZhbHNlOworIAorICAgICBtTWFzayA9IFFSZWdpb24oKTsK KyAgICAgbVF1ZXVlZEJ1ZmZlciA9IG51bGxwdHI7CisrCisrICAgIG1EaXNwbGF5LT5oYW5kbGVX aW5kb3dEZXN0cm95ZWQodGhpcyk7CisgfQorIAorIFFXYXlsYW5kV2luZG93ICpRV2F5bGFuZFdp bmRvdzo6ZnJvbVdsU3VyZmFjZSg6OndsX3N1cmZhY2UgKnN1cmZhY2UpCitAQCAtMzUxLDE5ICsz NTMsMjUgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0R2VvbWV0cnlfaGVscGVyKGNvbnN0IFFS ZWN0ICZyZWN0KQorICAgICB9CisgfQorIAorLXZvaWQgUVdheWxhbmRXaW5kb3c6OnNldEdlb21l dHJ5KGNvbnN0IFFSZWN0ICZyZWN0KQorK3ZvaWQgUVdheWxhbmRXaW5kb3c6OnNldEdlb21ldHJ5 KGNvbnN0IFFSZWN0ICZyKQorIHsKKysgICAgYXV0byByZWN0ID0gcjsKKysgICAgaWYgKGZpeGVk VG9wbGV2ZWxQb3NpdGlvbnMgJiYgIVFQbGF0Zm9ybVdpbmRvdzo6cGFyZW50KCkgJiYgd2luZG93 KCktPnR5cGUoKSAhPSBRdDo6UG9wdXAKKysgICAgICAgICYmIHdpbmRvdygpLT50eXBlKCkgIT0g UXQ6OlRvb2xUaXApIHsKKysgICAgICAgIHJlY3QubW92ZVRvKHNjcmVlbigpLT5nZW9tZXRyeSgp LnRvcExlZnQoKSk7CisrICAgIH0KKyAgICAgc2V0R2VvbWV0cnlfaGVscGVyKHJlY3QpOworIAor ICAgICBpZiAod2luZG93KCktPmlzVmlzaWJsZSgpICYmIHJlY3QuaXNWYWxpZCgpKSB7CisgICAg ICAgICBpZiAobVdpbmRvd0RlY29yYXRpb24pCisgICAgICAgICAgICAgbVdpbmRvd0RlY29yYXRp b24tPnVwZGF0ZSgpOworIAorLSAgICAgICAgaWYgKG1SZXNpemVBZnRlclN3YXAgJiYgd2luZG93 VHlwZSgpID09IEVnbCAmJiBtU2VudEluaXRpYWxSZXNpemUpCisrICAgICAgICBpZiAobVJlc2l6 ZUFmdGVyU3dhcCAmJiB3aW5kb3dUeXBlKCkgPT0gRWdsICYmIG1TZW50SW5pdGlhbFJlc2l6ZSkg eworKyAgICAgICAgICAgIFFNdXRleExvY2tlciBsb2NrKCZtUmVzaXplTG9jayk7CisgICAgICAg ICAgICAgbVJlc2l6ZURpcnR5ID0gdHJ1ZTsKKy0gICAgICAgIGVsc2UKKysgICAgICAgIH0gZWxz ZSB7CisgICAgICAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlR2VvbWV0cnlD aGFuZ2Uod2luZG93KCksIGdlb21ldHJ5KCkpOworLQorKyAgICAgICAgfQorICAgICAgICAgbVNl bnRJbml0aWFsUmVzaXplID0gdHJ1ZTsKKyAgICAgfQorICAgICBRUmVjdCBleHBvc2VHZW9tZXRy eShRUG9pbnQoKSwgZ2VvbWV0cnkoKS5zaXplKCkpOworQEAgLTM3NCw3ICszODIsNyBAQCB2b2lk IFFXYXlsYW5kV2luZG93OjpzZXRHZW9tZXRyeShjb25zdCBRUmVjdCAmcmVjdCkKKyAgICAgICAg IG1TaGVsbFN1cmZhY2UtPnNldFdpbmRvd0dlb21ldHJ5KHdpbmRvd0NvbnRlbnRHZW9tZXRyeSgp KTsKKyAKKyAgICAgaWYgKGlzT3BhcXVlKCkgJiYgbU1hc2suaXNFbXB0eSgpKQorLSAgICAgICAg c2V0T3BhcXVlQXJlYShyZWN0KTsKKysgICAgICAgIHNldE9wYXF1ZUFyZWEoUVJlY3QoUVBvaW50 KDAsIDApLCByZWN0LnNpemUoKSkpOworIH0KKyAKKyB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXNp emVGcm9tQXBwbHlDb25maWd1cmUoY29uc3QgUVNpemUgJnNpemVXaXRoTWFyZ2lucywgY29uc3Qg UVBvaW50ICZvZmZzZXQpCitAQCAtMzk5LDIxICs0MDcsNiBAQCB2b2lkIFFXYXlsYW5kV2luZG93 OjpzZW5kRXhwb3NlRXZlbnQoY29uc3QgUVJlY3QgJnJlY3QpCisgICAgIG1MYXN0RXhwb3NlR2Vv bWV0cnkgPSByZWN0OworIH0KKyAKKy0KKy1zdGF0aWMgUVZlY3RvcjxRUG9pbnRlcjxRV2F5bGFu ZFdpbmRvdz4+IGFjdGl2ZVBvcHVwczsKKy0KKy12b2lkIFFXYXlsYW5kV2luZG93OjpjbG9zZVBv cHVwcyhRV2F5bGFuZFdpbmRvdyAqcGFyZW50KQorLXsKKy0gICAgd2hpbGUgKCFhY3RpdmVQb3B1 cHMuaXNFbXB0eSgpKSB7CistICAgICAgICBhdXRvIHBvcHVwID0gYWN0aXZlUG9wdXBzLnRha2VM YXN0KCk7CistICAgICAgICBpZiAocG9wdXAuaXNOdWxsKCkpCistICAgICAgICAgICAgY29udGlu dWU7CistICAgICAgICBpZiAocG9wdXAuZGF0YSgpID09IHBhcmVudCkKKy0gICAgICAgICAgICBy ZXR1cm47CistICAgICAgICBwb3B1cC0+cmVzZXQoKTsKKy0gICAgfQorLX0KKy0KKyBRUGxhdGZv cm1TY3JlZW4gKlFXYXlsYW5kV2luZG93OjpjYWxjdWxhdGVTY3JlZW5Gcm9tU3VyZmFjZUV2ZW50 cygpIGNvbnN0CisgeworICAgICBRUmVhZExvY2tlciBsb2NrKCZtU3VyZmFjZUxvY2spOworQEAg LTQzMywxMCArNDI2LDcgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0VmlzaWJsZShib29sIHZp c2libGUpCisgICAgIGxhc3RWaXNpYmxlID0gdmlzaWJsZTsKKyAKKyAgICAgaWYgKHZpc2libGUp IHsKKy0gICAgICAgIGlmICh3aW5kb3coKS0+dHlwZSgpID09IFF0OjpQb3B1cCB8fCB3aW5kb3co KS0+dHlwZSgpID09IFF0OjpUb29sVGlwKQorLSAgICAgICAgICAgIGFjdGl2ZVBvcHVwcyA8PCB0 aGlzOworICAgICAgICAgaW5pdFdpbmRvdygpOworLSAgICAgICAgbURpc3BsYXktPmZsdXNoUmVx dWVzdHMoKTsKKyAKKyAgICAgICAgIHNldEdlb21ldHJ5KHdpbmRvd0dlb21ldHJ5KCkpOworICAg ICAgICAgLy8gRG9uJ3QgZmx1c2ggdGhlIGV2ZW50cyBoZXJlLCBvciBlbHNlIHRoZSBuZXdseSB2 aXNpYmxlIHdpbmRvdyBtYXkgc3RhcnQgZHJhd2luZywgYnV0IHNpbmNlCitAQCAtNDQ0LDcgKzQz NCw2IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQorICAg ICAgICAgLy8gUVdheWxhbmRTaG1CYWNraW5nU3RvcmU6OmJlZ2luUGFpbnQoKS4KKyAgICAgfSBl bHNlIHsKKyAgICAgICAgIHNlbmRFeHBvc2VFdmVudChRUmVjdCgpKTsKKy0gICAgICAgIGNsb3Nl UG9wdXBzKHRoaXMpOworICAgICAgICAgcmVzZXQoKTsKKyAgICAgfQorIH0KK0BAIC01NTYsMTIg KzU0NSwxMiBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpzZW5kUmVjdXJzaXZlRXhwb3NlRXZlbnQo KQorIAorIHZvaWQgUVdheWxhbmRXaW5kb3c6OmF0dGFjaChRV2F5bGFuZEJ1ZmZlciAqYnVmZmVy LCBpbnQgeCwgaW50IHkpCisgeworLSAgICBRX0FTU0VSVCghYnVmZmVyLT5jb21taXR0ZWQoKSk7 CisgICAgIFFSZWFkTG9ja2VyIGxvY2tlcigmbVN1cmZhY2VMb2NrKTsKKyAgICAgaWYgKG1TdXJm YWNlID09IG51bGxwdHIpCisgICAgICAgICByZXR1cm47CisgCisgICAgIGlmIChidWZmZXIpIHsK KysgICAgICAgIFFfQVNTRVJUKCFidWZmZXItPmNvbW1pdHRlZCgpKTsKKyAgICAgICAgIGhhbmRs ZVVwZGF0ZSgpOworICAgICAgICAgYnVmZmVyLT5zZXRCdXN5KCk7CisgCitAQCAtNTgzLDcgKzU3 MiwxMSBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpkYW1hZ2UoY29uc3QgUVJlY3QgJnJlY3QpCisg ICAgIGlmIChtU3VyZmFjZSA9PSBudWxscHRyKQorICAgICAgICAgcmV0dXJuOworIAorLSAgICBt U3VyZmFjZS0+ZGFtYWdlKHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0Lmhl aWdodCgpKTsKKysgICAgY29uc3QgaW50IHMgPSBzY2FsZSgpOworKyAgICBpZiAobURpc3BsYXkt PmNvbXBvc2l0b3JWZXJzaW9uKCkgPj0gNCkKKysgICAgICAgIG1TdXJmYWNlLT5kYW1hZ2VfYnVm ZmVyKHMgKiByZWN0LngoKSwgcyAqIHJlY3QueSgpLCBzICogcmVjdC53aWR0aCgpLCBzICogcmVj dC5oZWlnaHQoKSk7CisrICAgIGVsc2UKKysgICAgICAgIG1TdXJmYWNlLT5kYW1hZ2UocmVjdC54 KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworIH0KKyAKKyB2b2lk IFFXYXlsYW5kV2luZG93OjpzYWZlQ29tbWl0KFFXYXlsYW5kQnVmZmVyICpidWZmZXIsIGNvbnN0 IFFSZWdpb24gJmRhbWFnZSkKK0BAIC02MTksOCArNjEyLDE0IEBAIHZvaWQgUVdheWxhbmRXaW5k b3c6OmNvbW1pdChRV2F5bGFuZEJ1ZmZlciAqYnVmZmVyLCBjb25zdCBRUmVnaW9uICZkYW1hZ2Up CisgICAgICAgICByZXR1cm47CisgCisgICAgIGF0dGFjaE9mZnNldChidWZmZXIpOworLSAgICBm b3IgKGNvbnN0IFFSZWN0ICZyZWN0OiBkYW1hZ2UpCistICAgICAgICBtU3VyZmFjZS0+ZGFtYWdl KHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKysgICAg aWYgKG1EaXNwbGF5LT5jb21wb3NpdG9yVmVyc2lvbigpID49IDQpIHsKKysgICAgICAgIGNvbnN0 IGludCBzID0gc2NhbGUoKTsKKysgICAgICAgIGZvciAoY29uc3QgUVJlY3QgJnJlY3Q6IGRhbWFn ZSkKKysgICAgICAgICAgICBtU3VyZmFjZS0+ZGFtYWdlX2J1ZmZlcihzICogcmVjdC54KCksIHMg KiByZWN0LnkoKSwgcyAqIHJlY3Qud2lkdGgoKSwgcyAqIHJlY3QuaGVpZ2h0KCkpOworKyAgICB9 IGVsc2UgeworKyAgICAgICAgZm9yIChjb25zdCBRUmVjdCAmcmVjdDogZGFtYWdlKQorKyAgICAg ICAgICAgIG1TdXJmYWNlLT5kYW1hZ2UocmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCks IHJlY3QuaGVpZ2h0KCkpOworKyAgICB9CisgICAgIFFfQVNTRVJUKCFidWZmZXItPmNvbW1pdHRl ZCgpKTsKKyAgICAgYnVmZmVyLT5zZXRDb21taXR0ZWQoKTsKKyAgICAgbVN1cmZhY2UtPmNvbW1p dCgpOworQEAgLTYzNSw0MiArNjM0LDUzIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OmNvbW1pdCgp CisgCisgY29uc3Qgd2xfY2FsbGJhY2tfbGlzdGVuZXIgUVdheWxhbmRXaW5kb3c6OmNhbGxiYWNr TGlzdGVuZXIgPSB7CisgICAgIFtdKHZvaWQgKmRhdGEsIHdsX2NhbGxiYWNrICpjYWxsYmFjaywg dWludDMyX3QgdGltZSkgeworLSAgICAgICAgUV9VTlVTRUQoY2FsbGJhY2spOworICAgICAgICAg UV9VTlVTRUQodGltZSk7CisgICAgICAgICBhdXRvICp3aW5kb3cgPSBzdGF0aWNfY2FzdDxRV2F5 bGFuZFdpbmRvdyo+KGRhdGEpOworLSAgICAgICAgd2luZG93LT5oYW5kbGVGcmFtZUNhbGxiYWNr KCk7CisrICAgICAgICB3aW5kb3ctPmhhbmRsZUZyYW1lQ2FsbGJhY2soY2FsbGJhY2spOworICAg ICB9CisgfTsKKyAKKy12b2lkIFFXYXlsYW5kV2luZG93OjpoYW5kbGVGcmFtZUNhbGxiYWNrKCkK Kyt2b2lkIFFXYXlsYW5kV2luZG93OjpoYW5kbGVGcmFtZUNhbGxiYWNrKHdsX2NhbGxiYWNrKiBj YWxsYmFjaykKKyB7CisrICAgIFFNdXRleExvY2tlciBsb2NrZXIoJm1GcmFtZVN5bmNNdXRleCk7 CisrICAgIGlmICghbUZyYW1lQ2FsbGJhY2spIHsKKysgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhl IGNhbGxiYWNrIGlzIGFscmVhZHkgdW5zZXQgYnkgUVdheWxhbmRXaW5kb3c6OnJlc2V0LgorKyAg ICAgICAgLy8gVGhlIHdsX2NhbGxiYWNrIG9iamVjdCB3aWxsIGJlIGRlc3Ryb3llZCB0aGVyZSB0 b28uCisrICAgICAgICByZXR1cm47CisrICAgIH0KKysgICAgUV9BU1NFUlQoY2FsbGJhY2sgPT0g bUZyYW1lQ2FsbGJhY2spOworKyAgICB3bF9jYWxsYmFja19kZXN0cm95KGNhbGxiYWNrKTsKKysg ICAgbUZyYW1lQ2FsbGJhY2sgPSBudWxscHRyOworKworICAgICBtV2FpdGluZ0ZvckZyYW1lQ2Fs bGJhY2sgPSBmYWxzZTsKKyAgICAgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaW52YWxpZGF0 ZSgpOworIAorICAgICAvLyBUaGUgcmVzdCBjYW4gd2FpdCB1bnRpbCB3ZSBjYW4gcnVuIGl0IG9u IHRoZSBjb3JyZWN0IHRocmVhZAorLSAgICBpZiAoIW1XYWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkp IHsKKy0gICAgICAgIGF1dG8gZG9IYW5kbGVFeHBvc2UgPSBbdGhpc10oKSB7CistICAgICAgICAg ICAgYm9vbCB3YXNFeHBvc2VkID0gaXNFeHBvc2VkKCk7CistICAgICAgICAgICAgbUZyYW1lQ2Fs bGJhY2tUaW1lZE91dCA9IGZhbHNlOworLSAgICAgICAgICAgIGlmICghd2FzRXhwb3NlZCAmJiBp c0V4cG9zZWQoKSkgLy8gRGlkIHNldHRpbmcgbUZyYW1lQ2FsbGJhY2tUaW1lZE91dCBtYWtlIHRo ZSB3aW5kb3cgZXhwb3NlZD8KKy0gICAgICAgICAgICAgICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0 KFFQb2ludCgpLCBnZW9tZXRyeSgpLnNpemUoKSkpOworLSAgICAgICAgICAgIGlmICh3YXNFeHBv c2VkICYmIGhhc1BlbmRpbmdVcGRhdGVSZXF1ZXN0KCkpCistICAgICAgICAgICAgICAgIGRlbGl2 ZXJVcGRhdGVSZXF1ZXN0KCk7CistCistICAgICAgICAgICAgbVdhaXRpbmdGb3JVcGRhdGVEZWxp dmVyeSA9IGZhbHNlOworLSAgICAgICAgfTsKKysgICAgYXV0byBkb0hhbmRsZUV4cG9zZSA9IFt0 aGlzXSgpIHsKKysgICAgICAgIG1XYWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkuc3RvcmVSZWxlYXNl KGZhbHNlKTsKKysgICAgICAgIGJvb2wgd2FzRXhwb3NlZCA9IGlzRXhwb3NlZCgpOworKyAgICAg ICAgbUZyYW1lQ2FsbGJhY2tUaW1lZE91dCA9IGZhbHNlOworKyAgICAgICAgaWYgKCF3YXNFeHBv c2VkICYmIGlzRXhwb3NlZCgpKSAvLyBEaWQgc2V0dGluZyBtRnJhbWVDYWxsYmFja1RpbWVkT3V0 IG1ha2UgdGhlIHdpbmRvdyBleHBvc2VkPworKyAgICAgICAgICAgIHNlbmRFeHBvc2VFdmVudChR UmVjdChRUG9pbnQoKSwgZ2VvbWV0cnkoKS5zaXplKCkpKTsKKysgICAgICAgIGlmICh3YXNFeHBv c2VkICYmIGhhc1BlbmRpbmdVcGRhdGVSZXF1ZXN0KCkpCisrICAgICAgICAgICAgZGVsaXZlclVw ZGF0ZVJlcXVlc3QoKTsKKysgICAgfTsKKyAKKysgICAgaWYgKG1XYWl0aW5nRm9yVXBkYXRlRGVs aXZlcnkudGVzdEFuZFNldEFjcXVpcmUoZmFsc2UsIHRydWUpKSB7CisgICAgICAgICAvLyBRdWV1 ZWQgY29ubmVjdGlvbiwgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGNhbGwgaGFuZGxlVXBkYXRlKCkg ZnJvbSBpbnNpZGUgd2FpdEZvckZyYW1lU3luYygpCisgICAgICAgICAvLyBpbiB0aGUgc2luZ2xl LXRocmVhZGVkIGNhc2UuCistICAgICAgICBtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5ID0gdHJ1 ZTsKKyAgICAgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgZG9IYW5kbGVFeHBv c2UsIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKyAgICAgfQorKworKyAgICBtRnJhbWVTeW5jV2Fp dC5ub3RpZnlfYWxsKCk7CisgfQorIAorIGJvb2wgUVdheWxhbmRXaW5kb3c6OndhaXRGb3JGcmFt ZVN5bmMoaW50IHRpbWVvdXQpCisgeworLSAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKG1GcmFtZVF1 ZXVlLm11dGV4KTsKKy0gICAgbURpc3BsYXktPmRpc3BhdGNoUXVldWVXaGlsZShtRnJhbWVRdWV1 ZS5xdWV1ZSwgWyZdKCkgeyByZXR1cm4gbVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrOyB9LCB0aW1l b3V0KTsKKysgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsKKysKKysg ICAgUURlYWRsaW5lVGltZXIgZGVhZGxpbmUodGltZW91dCk7CisrICAgIHdoaWxlIChtV2FpdGlu Z0ZvckZyYW1lQ2FsbGJhY2sgJiYgbUZyYW1lU3luY1dhaXQud2FpdCgmbUZyYW1lU3luY011dGV4 LCBkZWFkbGluZSkpIHsgfQorIAorICAgICBpZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrKSB7 CisgICAgICAgICBxQ0RlYnVnKGxjV2F5bGFuZEJhY2tpbmdzdG9yZSkgPDwgIkRpZG4ndCByZWNl aXZlIGZyYW1lIGNhbGxiYWNrIGluIHRpbWUsIHdpbmRvdyBzaG91bGQgbm93IGJlIGluZXhwb3Nl ZCI7CitAQCAtODY4LDYgKzg3OCwxNyBAQCBib29sIFFXYXlsYW5kV2luZG93OjpjcmVhdGVEZWNv cmF0aW9uKCkKKyAgICAgICAgICAgICBzdWJzdXJmLT5zZXRfcG9zaXRpb24ocG9zLngoKSArIG0u bGVmdCgpLCBwb3MueSgpICsgbS50b3AoKSk7CisgICAgICAgICB9CisgICAgICAgICBzZW5kRXhw b3NlRXZlbnQoUVJlY3QoUVBvaW50KCksIGdlb21ldHJ5KCkuc2l6ZSgpKSk7CisrCisrICAgICAg ICAvLyBUaGlzIGlzIGEgc3BlY2lhbCBjYXNlIHdoZXJlIHRoZSBidWZmZXIgaXMgcmVjcmVhdGVk LCBidXQgc2luY2UKKysgICAgICAgIC8vIHRoZSBjb250ZW50IHJlY3QgcmVtYWlucyB0aGUgc2Ft ZSwgdGhlIHdpZGdldHMgcmVtYWluIHRoZSBzYW1lCisrICAgICAgICAvLyBzaXplIGFuZCBhcmUg bm90IHJlZHJhd24sIGxlYXZpbmcgdGhlIG5ldyBidWZmZXIgZW1wdHkuIEFzIGEgc2ltcGxlCisr ICAgICAgICAvLyB3b3JrLWFyb3VuZCwgd2UgdHJpZ2dlciBhIGZ1bGwgZXh0cmEgdXBkYXRlIHdo ZW5ldmVyIHRoZSBjbGllbnQtc2lkZQorKyAgICAgICAgLy8gd2luZG93IGRlY29yYXRpb25zIGFy ZSB0b2dnbGVkIHdoaWxlIHRoZSB3aW5kb3cgaXMgc2hvd2luZy4KKysgICAgICAgIC8vIE5vdGU6 IGNyZWF0ZURlY29yYXRpb24oKSBpcyBzb21ldGltZXMgY2FsbGVkIGZyb20gdGhlIHJlbmRlciB0 aHJlYWQKKysgICAgICAgIC8vIG9mIFF0IFF1aWNrLiBUaGlzIGlzIGVzc2VudGlhbGx5IHdyb25n IGFuZCBjb3VsZCBwb3RlbnRpYWxseSBjYXVzZSBwcm9ibGVtcywKKysgICAgICAgIC8vIGJ1dCB1 bnRpbCB0aGUgdW5kZXJseWluZyBpc3N1ZSBoYXMgYmVlbiBmaXhlZCwgd2UgaGF2ZSB0byB1c2Ug aW52b2tlTWV0aG9kKCkKKysgICAgICAgIC8vIGhlcmUgdG8gYXZvaWQgYXNzZXJ0cy4KKysgICAg ICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2Qod2luZG93KCksICZRV2luZG93OjpyZXF1ZXN0 VXBkYXRlKTsKKyAgICAgfQorIAorICAgICByZXR1cm4gbVdpbmRvd0RlY29yYXRpb247CitAQCAt MTAyMyw2ICsxMDQ0LDEzIEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OmhhbmRsZVNjcmVlbnNDaGFu Z2VkKCkKKyAKKyAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlV2luZG93U2NyZWVu Q2hhbmdlZCh3aW5kb3coKSwgbmV3U2NyZWVuLT5RUGxhdGZvcm1TY3JlZW46OnNjcmVlbigpKTsK KyAgICAgbUxhc3RSZXBvcnRlZFNjcmVlbiA9IG5ld1NjcmVlbjsKKysgICAgaWYgKGZpeGVkVG9w bGV2ZWxQb3NpdGlvbnMgJiYgIVFQbGF0Zm9ybVdpbmRvdzo6cGFyZW50KCkgJiYgd2luZG93KCkt PnR5cGUoKSAhPSBRdDo6UG9wdXAKKysgICAgICAgICYmIHdpbmRvdygpLT50eXBlKCkgIT0gUXQ6 OlRvb2xUaXAKKysgICAgICAgICYmIGdlb21ldHJ5KCkudG9wTGVmdCgpICE9IG5ld1NjcmVlbi0+ Z2VvbWV0cnkoKS50b3BMZWZ0KCkpIHsKKysgICAgICAgIGF1dG8gZ2VvbWV0cnkgPSB0aGlzLT5n ZW9tZXRyeSgpOworKyAgICAgICAgZ2VvbWV0cnkubW92ZVRvKG5ld1NjcmVlbi0+Z2VvbWV0cnko KS50b3BMZWZ0KCkpOworKyAgICAgICAgc2V0R2VvbWV0cnkoZ2VvbWV0cnkpOworKyAgICB9Cisg CisgICAgIGludCBzY2FsZSA9IG5ld1NjcmVlbi0+aXNQbGFjZWhvbGRlcigpID8gMSA6IHN0YXRp Y19jYXN0PFFXYXlsYW5kU2NyZWVuICo+KG5ld1NjcmVlbiktPnNjYWxlKCk7CisgICAgIGlmIChz Y2FsZSAhPSBtU2NhbGUpIHsKK0BAIC0xMDk0LDEwICsxMTIyLDE4IEBAIGJvb2wgUVdheWxhbmRX aW5kb3c6OnNldE1vdXNlR3JhYkVuYWJsZWQoYm9vbCBncmFiKQorICAgICByZXR1cm4gdHJ1ZTsK KyB9CisgCisrUXQ6OldpbmRvd1N0YXRlcyBRV2F5bGFuZFdpbmRvdzo6d2luZG93U3RhdGVzKCkg Y29uc3QKKyt7CisrICAgIHJldHVybiBtTGFzdFJlcG9ydGVkV2luZG93U3RhdGVzOworK30KKysK KyB2b2lkIFFXYXlsYW5kV2luZG93OjpoYW5kbGVXaW5kb3dTdGF0ZXNDaGFuZ2VkKFF0OjpXaW5k b3dTdGF0ZXMgc3RhdGVzKQorIHsKKyAgICAgY3JlYXRlRGVjb3JhdGlvbigpOworLSAgICBRV2lu ZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVXaW5kb3dTdGF0ZUNoYW5nZWQod2luZG93KCksIHN0 YXRlcywgbUxhc3RSZXBvcnRlZFdpbmRvd1N0YXRlcyk7CisrICAgIFF0OjpXaW5kb3dTdGF0ZXMg c3RhdGVzV2l0aG91dEFjdGl2ZSA9IHN0YXRlcyAmIH5RdDo6V2luZG93QWN0aXZlOworKyAgICBR dDo6V2luZG93U3RhdGVzIGxhc3RTdGF0ZXNXaXRob3V0QWN0aXZlID0gbUxhc3RSZXBvcnRlZFdp bmRvd1N0YXRlcyAmIH5RdDo6V2luZG93QWN0aXZlOworKyAgICBRV2luZG93U3lzdGVtSW50ZXJm YWNlOjpoYW5kbGVXaW5kb3dTdGF0ZUNoYW5nZWQod2luZG93KCksIHN0YXRlc1dpdGhvdXRBY3Rp dmUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsYXN0U3RhdGVzV2l0aG91dEFjdGl2ZSk7CisgICAgIG1MYXN0UmVwb3J0ZWRXaW5kb3dTdGF0 ZXMgPSBzdGF0ZXM7CisgfQorIAorQEAgLTExMzksMTkgKzExNzUsMjQgQEAgdm9pZCBRV2F5bGFu ZFdpbmRvdzo6dGltZXJFdmVudChRVGltZXJFdmVudCAqZXZlbnQpCisgICAgIGlmIChldmVudC0+ dGltZXJJZCgpICE9IG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQpCisgICAgICAg ICByZXR1cm47CisgCistICAgIGJvb2wgY2FsbGJhY2tUaW1lckV4cGlyZWQgPSBtRnJhbWVDYWxs YmFja0VsYXBzZWRUaW1lci5oYXNFeHBpcmVkKG1GcmFtZUNhbGxiYWNrVGltZW91dCk7CistICAg IGlmICghbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaXNWYWxpZCgpIHx8IGNhbGxiYWNrVGlt ZXJFeHBpcmVkICkgeworLSAgICAgICAga2lsbFRpbWVyKG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRl cnZhbFRpbWVySWQpOworLSAgICAgICAgbUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJ ZCA9IC0xOworLSAgICB9CistICAgIGlmIChtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pc1Zh bGlkKCkgJiYgY2FsbGJhY2tUaW1lckV4cGlyZWQpIHsKKy0gICAgICAgIG1GcmFtZUNhbGxiYWNr RWxhcHNlZFRpbWVyLmludmFsaWRhdGUoKTsKKysgICAgeworKyAgICAgICAgUU11dGV4TG9ja2Vy IGxvY2soJm1GcmFtZVN5bmNNdXRleCk7CisgCistICAgICAgICBxQ0RlYnVnKGxjV2F5bGFuZEJh Y2tpbmdzdG9yZSkgPDwgIkRpZG4ndCByZWNlaXZlIGZyYW1lIGNhbGxiYWNrIGluIHRpbWUsIHdp bmRvdyBzaG91bGQgbm93IGJlIGluZXhwb3NlZCI7CistICAgICAgICBtRnJhbWVDYWxsYmFja1Rp bWVkT3V0ID0gdHJ1ZTsKKy0gICAgICAgIG1XYWl0aW5nRm9yVXBkYXRlID0gZmFsc2U7CistICAg ICAgICBzZW5kRXhwb3NlRXZlbnQoUVJlY3QoKSk7CisrICAgICAgICBib29sIGNhbGxiYWNrVGlt ZXJFeHBpcmVkID0gbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaGFzRXhwaXJlZChtRnJhbWVD YWxsYmFja1RpbWVvdXQpOworKyAgICAgICAgaWYgKCFtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1l ci5pc1ZhbGlkKCkgfHwgY2FsbGJhY2tUaW1lckV4cGlyZWQgKSB7CisrICAgICAgICAgICAga2ls bFRpbWVyKG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQpOworKyAgICAgICAgICAg IG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQgPSAtMTsKKysgICAgICAgIH0KKysg ICAgICAgIGlmICghbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaXNWYWxpZCgpIHx8ICFjYWxs YmFja1RpbWVyRXhwaXJlZCkgeworKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysg ICAgICAgIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmludmFsaWRhdGUoKTsKKyAgICAgfQor KworKyAgICBxQ0RlYnVnKGxjV2F5bGFuZEJhY2tpbmdzdG9yZSkgPDwgIkRpZG4ndCByZWNlaXZl IGZyYW1lIGNhbGxiYWNrIGluIHRpbWUsIHdpbmRvdyBzaG91bGQgbm93IGJlIGluZXhwb3NlZCI7 CisrICAgIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgPSB0cnVlOworKyAgICBtV2FpdGluZ0ZvclVw ZGF0ZSA9IGZhbHNlOworKyAgICBzZW5kRXhwb3NlRXZlbnQoUVJlY3QoKSk7CisgfQorIAorIHZv aWQgUVdheWxhbmRXaW5kb3c6OnJlcXVlc3RVcGRhdGUoKQorQEAgLTExNjAsOCArMTIwMSwxMSBA QCB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXF1ZXN0VXBkYXRlKCkKKyAgICAgUV9BU1NFUlQoaGFz UGVuZGluZ1VwZGF0ZVJlcXVlc3QoKSk7IC8vIHNob3VsZCBiZSBzZXQgYnkgUVBBCisgCisgICAg IC8vIElmIHdlIGhhdmUgYSBmcmFtZSBjYWxsYmFjayBhbGwgaXMgZ29vZCBhbmQgd2lsbCBiZSB0 YWtlbiBjYXJlIG9mIHRoZXJlCistICAgIGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spCist ICAgICAgICByZXR1cm47CisrICAgIHsKKysgICAgICAgIFFNdXRleExvY2tlciBsb2NrZXIoJm1G cmFtZVN5bmNNdXRleCk7CisrICAgICAgICBpZiAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrKQor KyAgICAgICAgICAgIHJldHVybjsKKysgICAgfQorIAorICAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5 IGNhbGxlZCBkZWxpdmVyVXBkYXRlUmVxdWVzdCgpLCBidXQgaGF2ZW4ndCBzZWVuIGFueSBhdHRh Y2grY29tbWl0L3N3YXAgeWV0CisgICAgIC8vIFRoaXMgaXMgYSBzb21ld2hhdCByZWR1bmRhbnQg YmVoYXZpb3IgYW5kIG1pZ2h0IGluZGljYXRlIGEgYnVnIGluIHRoZSBjYWxsaW5nIGNvZGUsIHNv IGxvZworQEAgLTExNzQsNyArMTIxOCwxMiBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXF1ZXN0 VXBkYXRlKCkKKyAgICAgLy8gc28gdXNlIGludm9rZU1ldGhvZCB0byBkZWxheSB0aGUgZGVsaXZl cnkgYSBiaXQuCisgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgW3RoaXNdIHsK KyAgICAgICAgIC8vIFRoaW5ncyBtaWdodCBoYXZlIGNoYW5nZWQgaW4gdGhlIG1lYW50aW1lCist ICAgICAgICBpZiAoaGFzUGVuZGluZ1VwZGF0ZVJlcXVlc3QoKSAmJiAhbVdhaXRpbmdGb3JGcmFt ZUNhbGxiYWNrKQorKyAgICAgICAgeworKyAgICAgICAgICAgIFFNdXRleExvY2tlciBsb2NrZXIo Jm1GcmFtZVN5bmNNdXRleCk7CisrICAgICAgICAgICAgaWYgKG1XYWl0aW5nRm9yRnJhbWVDYWxs YmFjaykKKysgICAgICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAgICAgICAgaWYg KGhhc1BlbmRpbmdVcGRhdGVSZXF1ZXN0KCkpCisgICAgICAgICAgICAgZGVsaXZlclVwZGF0ZVJl cXVlc3QoKTsKKyAgICAgfSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworIH0KK0BAIC0xMTg1LDE5 ICsxMjM0LDE4IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlcXVlc3RVcGRhdGUoKQorIHZvaWQg UVdheWxhbmRXaW5kb3c6OmhhbmRsZVVwZGF0ZSgpCisgeworICAgICBxQ0RlYnVnKGxjV2F5bGFu ZEJhY2tpbmdzdG9yZSkgPDwgImhhbmRsZVVwZGF0ZSIgPDwgUVRocmVhZDo6Y3VycmVudFRocmVh ZCgpOworKworICAgICAvLyBUT0RPOiBTaG91bGQgc3luYyBzdWJzdXJmYWNlcyBhdm9pZCByZXF1 ZXN0aW5nIGZyYW1lIGNhbGxiYWNrcz8KKyAgICAgUVJlYWRMb2NrZXIgbG9jaygmbVN1cmZhY2VM b2NrKTsKKyAgICAgaWYgKCFtU3VyZmFjZSkKKyAgICAgICAgIHJldHVybjsKKyAKKy0gICAgaWYg KG1GcmFtZUNhbGxiYWNrKSB7CistICAgICAgICB3bF9jYWxsYmFja19kZXN0cm95KG1GcmFtZUNh bGxiYWNrKTsKKy0gICAgICAgIG1GcmFtZUNhbGxiYWNrID0gbnVsbHB0cjsKKy0gICAgfQorKyAg ICBRTXV0ZXhMb2NrZXIgbG9ja2VyKCZtRnJhbWVTeW5jTXV0ZXgpOworKyAgICBpZiAobVdhaXRp bmdGb3JGcmFtZUNhbGxiYWNrKQorKyAgICAgICAgcmV0dXJuOworIAorLSAgICBRTXV0ZXhMb2Nr ZXIgbG9ja2VyKG1GcmFtZVF1ZXVlLm11dGV4KTsKKyAgICAgc3RydWN0IDo6d2xfc3VyZmFjZSAq d3JhcHBlZFN1cmZhY2UgPSByZWludGVycHJldF9jYXN0PHN0cnVjdCA6OndsX3N1cmZhY2UgKj4o d2xfcHJveHlfY3JlYXRlX3dyYXBwZXIobVN1cmZhY2UtPm9iamVjdCgpKSk7CistICAgIHdsX3By b3h5X3NldF9xdWV1ZShyZWludGVycHJldF9jYXN0PHdsX3Byb3h5ICo+KHdyYXBwZWRTdXJmYWNl KSwgbUZyYW1lUXVldWUucXVldWUpOworKyAgICB3bF9wcm94eV9zZXRfcXVldWUocmVpbnRlcnBy ZXRfY2FzdDx3bF9wcm94eSAqPih3cmFwcGVkU3VyZmFjZSksIG1EaXNwbGF5LT5mcmFtZUV2ZW50 UXVldWUoKSk7CisgICAgIG1GcmFtZUNhbGxiYWNrID0gd2xfc3VyZmFjZV9mcmFtZSh3cmFwcGVk U3VyZmFjZSk7CisgICAgIHdsX3Byb3h5X3dyYXBwZXJfZGVzdHJveSh3cmFwcGVkU3VyZmFjZSk7 CisgICAgIHdsX2NhbGxiYWNrX2FkZF9saXN0ZW5lcihtRnJhbWVDYWxsYmFjaywgJlFXYXlsYW5k V2luZG93OjpjYWxsYmFja0xpc3RlbmVyLCB0aGlzKTsKK0BAIC0xMjA3LDYgKzEyNTUsOCBAQCB2 b2lkIFFXYXlsYW5kV2luZG93OjpoYW5kbGVVcGRhdGUoKQorICAgICAvLyBTdGFydCBhIHRpbWVy IGZvciBoYW5kbGluZyB0aGUgY2FzZSB3aGVuIHRoZSBjb21wb3NpdG9yIHN0b3BzIHNlbmRpbmcg ZnJhbWUgY2FsbGJhY2tzLgorICAgICBpZiAobUZyYW1lQ2FsbGJhY2tUaW1lb3V0ID4gMCkgewor ICAgICAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCBbdGhpc10geworKyAgICAg ICAgICAgIFFNdXRleExvY2tlciBsb2NrZXIoJm1GcmFtZVN5bmNNdXRleCk7CisrCisgICAgICAg ICAgICAgaWYgKG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjaykgeworICAgICAgICAgICAgICAgICBp ZiAobUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCA8IDApCisgICAgICAgICAgICAg ICAgICAgICBtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkID0gc3RhcnRUaW1lciht RnJhbWVDYWxsYmFja1RpbWVvdXQpOworQEAgLTEyNjcsNiArMTMxNywyMCBAQCB2b2lkIFFXYXls YW5kV2luZG93OjpzZXRPcGFxdWVBcmVhKGNvbnN0IFFSZWdpb24gJm9wYXF1ZUFyZWEpCisgICAg IHdsX3JlZ2lvbl9kZXN0cm95KHJlZ2lvbik7CisgfQorIAorK3ZvaWQgUVdheWxhbmRXaW5kb3c6 OmFkZENoaWxkUG9wdXAoUVdheWxhbmRXaW5kb3cgKnN1cmZhY2UpIHsKKysgICAgbUNoaWxkUG9w dXBzLmFwcGVuZChzdXJmYWNlKTsKKyt9CisrCisrdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVtb3Zl Q2hpbGRQb3B1cChRV2F5bGFuZFdpbmRvdyAqc3VyZmFjZSkgeworKyAgICBtQ2hpbGRQb3B1cHMu cmVtb3ZlQWxsKHN1cmZhY2UpOworK30KKysKKyt2b2lkIFFXYXlsYW5kV2luZG93OjpjbG9zZUNo aWxkUG9wdXBzKCkgeworKyAgICB3aGlsZSAoIW1DaGlsZFBvcHVwcy5pc0VtcHR5KCkpIHsKKysg ICAgICAgIGF1dG8gcG9wdXAgPSBtQ2hpbGRQb3B1cHMudGFrZUxhc3QoKTsKKysgICAgICAgIHBv cHVwLT5yZXNldCgpOworKyAgICB9CisrfQorIH0KKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZm IC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3dfcC5oIGIvcXR3YXls YW5kL3NyYy9jbGllbnQvcXdheWxhbmR3aW5kb3dfcC5oCitpbmRleCAwMTMzN2NmZi4uMmYyMTlk OGMgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvd19wLmgK KysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93X3AuaAorQEAgLTk4LDYg Kzk4LDkgQEAgcHVibGljOgorICAgICBRV2F5bGFuZFdpbmRvdyhRV2luZG93ICp3aW5kb3csIFFX YXlsYW5kRGlzcGxheSAqZGlzcGxheSk7CisgICAgIH5RV2F5bGFuZFdpbmRvdygpIG92ZXJyaWRl OworIAorKyAgICAvLyBLZWVwIFRvcGxldmVscyBwb3NpdGlvbiBvbiB0aGUgdG9wIGxlZnQgY29y bmVyIG9mIHRoZWlyIHNjcmVlbgorKyAgICBzdGF0aWMgaW5saW5lIGJvb2wgZml4ZWRUb3BsZXZl bFBvc2l0aW9ucyA9IHRydWU7CisrCisgICAgIHZpcnR1YWwgV2luZG93VHlwZSB3aW5kb3dUeXBl KCkgY29uc3QgPSAwOworICAgICB2aXJ0dWFsIHZvaWQgZW5zdXJlU2l6ZSgpOworICAgICBXSWQg d2luSWQoKSBjb25zdCBvdmVycmlkZTsKK0BAIC0xNDgsNiArMTUxLDcgQEAgcHVibGljOgorICAg ICB2b2lkIHNldFdpbmRvd1N0YXRlKFF0OjpXaW5kb3dTdGF0ZXMgc3RhdGVzKSBvdmVycmlkZTsK KyAgICAgdm9pZCBzZXRXaW5kb3dGbGFncyhRdDo6V2luZG93RmxhZ3MgZmxhZ3MpIG92ZXJyaWRl OworICAgICB2b2lkIGhhbmRsZVdpbmRvd1N0YXRlc0NoYW5nZWQoUXQ6OldpbmRvd1N0YXRlcyBz dGF0ZXMpOworKyAgICBRdDo6V2luZG93U3RhdGVzIHdpbmRvd1N0YXRlcygpIGNvbnN0OworIAor ICAgICB2b2lkIHJhaXNlKCkgb3ZlcnJpZGU7CisgICAgIHZvaWQgbG93ZXIoKSBvdmVycmlkZTsK K0BAIC0yMDYsNiArMjEwLDEwIEBAIHB1YmxpYzoKKyAgICAgdm9pZCBoYW5kbGVVcGRhdGUoKTsK KyAgICAgdm9pZCBkZWxpdmVyVXBkYXRlUmVxdWVzdCgpIG92ZXJyaWRlOworIAorKyAgICB2b2lk IGFkZENoaWxkUG9wdXAoUVdheWxhbmRXaW5kb3cqIGNoaWxkKTsKKysgICAgdm9pZCByZW1vdmVD aGlsZFBvcHVwKFFXYXlsYW5kV2luZG93KiBjaGlsZCk7CisrICAgIHZvaWQgY2xvc2VDaGlsZFBv cHVwcygpOworKworIHB1YmxpYyBzbG90czoKKyAgICAgdm9pZCBhcHBseUNvbmZpZ3VyZSgpOwor IAorQEAgLTIxNSw3ICsyMjMsMTEgQEAgc2lnbmFsczoKKyAKKyBwcm90ZWN0ZWQ6CisgICAgIFFX YXlsYW5kRGlzcGxheSAqbURpc3BsYXkgPSBudWxscHRyOworKworKyAgICAvLyBtU3VyZmFjZSBj YW4gYmUgd3JpdHRlbiBieSB0aGUgbWFpbiB0aHJlYWQuIE90aGVyIHRocmVhZHMgc2hvdWxkIGNs YWltIGEgcmVhZCBsb2NrIGZvciBhY2Nlc3MKKysgICAgbXV0YWJsZSBRUmVhZFdyaXRlTG9jayBt U3VyZmFjZUxvY2s7CisgICAgIFFTY29wZWRQb2ludGVyPFFXYXlsYW5kU3VyZmFjZT4gbVN1cmZh Y2U7CisrCisgICAgIFFXYXlsYW5kU2hlbGxTdXJmYWNlICptU2hlbGxTdXJmYWNlID0gbnVsbHB0 cjsKKyAgICAgUVdheWxhbmRTdWJTdXJmYWNlICptU3ViU3VyZmFjZVdpbmRvdyA9IG51bGxwdHI7 CisgICAgIFFWZWN0b3I8UVdheWxhbmRTdWJTdXJmYWNlICo+IG1DaGlsZHJlbjsKK0BAIC0yMjUs MTMgKzIzNywxNCBAQCBwcm90ZWN0ZWQ6CisgICAgIFF0OjpNb3VzZUJ1dHRvbnMgbU1vdXNlUHJl c3NlZEluQ29udGVudEFyZWEgPSBRdDo6Tm9CdXR0b247CisgCisgICAgIFdJZCBtV2luZG93SWQ7 CistICAgIGJvb2wgbVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrID0gZmFsc2U7CisgICAgIGJvb2wg bUZyYW1lQ2FsbGJhY2tUaW1lZE91dCA9IGZhbHNlOyAvLyBXaGV0aGVyIHRoZSBmcmFtZSBjYWxs YmFjayBoYXMgdGltZWQgb3V0CistICAgIGJvb2wgbVdhaXRpbmdGb3JVcGRhdGVEZWxpdmVyeSA9 IGZhbHNlOworICAgICBpbnQgbUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCA9IC0x OworLSAgICBRRWxhcHNlZFRpbWVyIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyOworLSAgICBz dHJ1Y3QgOjp3bF9jYWxsYmFjayAqbUZyYW1lQ2FsbGJhY2sgPSBudWxscHRyOworLSAgICBRV2F5 bGFuZERpc3BsYXk6OkZyYW1lUXVldWUgbUZyYW1lUXVldWU7CisrICAgIFFBdG9taWNJbnQgbVdh aXRpbmdGb3JVcGRhdGVEZWxpdmVyeSA9IGZhbHNlOworKworKyAgICBib29sIG1XYWl0aW5nRm9y RnJhbWVDYWxsYmFjayA9IGZhbHNlOyAvLyBQcm90ZWN0ZWQgYnkgbUZyYW1lU3luY011dGV4Cisr ICAgIFFFbGFwc2VkVGltZXIgbUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXI7IC8vIFByb3RlY3Rl ZCBieSBtRnJhbWVTeW5jTXV0ZXgKKysgICAgc3RydWN0IDo6d2xfY2FsbGJhY2sgKm1GcmFtZUNh bGxiYWNrID0gbnVsbHB0cjsgLy8gUHJvdGVjdGVkIGJ5IG1GcmFtZVN5bmNNdXRleAorKyAgICBR TXV0ZXggbUZyYW1lU3luY011dGV4OworICAgICBRV2FpdENvbmRpdGlvbiBtRnJhbWVTeW5jV2Fp dDsKKyAKKyAgICAgLy8gVHJ1ZSB3aGVuIHdlIGhhdmUgY2FsbGVkIGRlbGl2ZXJSZXF1ZXN0VXBk YXRlLCBidXQgdGhlIGNsaWVudCBoYXMgbm90IHlldCBhdHRhY2hlZCBhIG5ldyBidWZmZXIKK0BA IC0yNjEsNiArMjc0LDggQEAgcHJvdGVjdGVkOgorICAgICBRV2F5bGFuZEJ1ZmZlciAqbVF1ZXVl ZEJ1ZmZlciA9IG51bGxwdHI7CisgICAgIFFSZWdpb24gbVF1ZXVlZEJ1ZmZlckRhbWFnZTsKKyAK KysgICAgUUxpc3Q8UVBvaW50ZXI8UVdheWxhbmRXaW5kb3c+PiBtQ2hpbGRQb3B1cHM7CisrCisg cHJpdmF0ZToKKyAgICAgdm9pZCBzZXRHZW9tZXRyeV9oZWxwZXIoY29uc3QgUVJlY3QgJnJlY3Qp OworICAgICB2b2lkIGluaXRXaW5kb3coKTsKK0BAIC0yODMsMTIgKzI5OCwxMCBAQCBwcml2YXRl OgorICAgICBRUmVjdCBtTGFzdEV4cG9zZUdlb21ldHJ5OworIAorICAgICBzdGF0aWMgY29uc3Qg d2xfY2FsbGJhY2tfbGlzdGVuZXIgY2FsbGJhY2tMaXN0ZW5lcjsKKy0gICAgdm9pZCBoYW5kbGVG cmFtZUNhbGxiYWNrKCk7CisrICAgIHZvaWQgaGFuZGxlRnJhbWVDYWxsYmFjayhzdHJ1Y3QgOjp3 bF9jYWxsYmFjayogY2FsbGJhY2spOworIAorICAgICBzdGF0aWMgUVdheWxhbmRXaW5kb3cgKm1N b3VzZUdyYWI7CisgCistICAgIG11dGFibGUgUVJlYWRXcml0ZUxvY2sgbVN1cmZhY2VMb2NrOwor LQorICAgICBmcmllbmQgY2xhc3MgUVdheWxhbmRTdWJTdXJmYWNlOworIH07CisgCitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvc2hlbGxpbnRlZ3JhdGlvbi9xd2F5bGFuZHNoZWxs aW50ZWdyYXRpb25fcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvc2hlbGxpbnRlZ3JhdGlvbi9x d2F5bGFuZHNoZWxsaW50ZWdyYXRpb25fcC5oCitpbmRleCBjY2FkMDA0OC4uNGNjOWIzYjggMTAw NjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9zaGVsbGludGVncmF0aW9uL3F3YXlsYW5k c2hlbGxpbnRlZ3JhdGlvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3NoZWxsaW50 ZWdyYXRpb24vcXdheWxhbmRzaGVsbGludGVncmF0aW9uX3AuaAorQEAgLTczLDExICs3MywxMCBA QCBwdWJsaWM6CisgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgfQorICAgICB2aXJ0dWFsIFFX YXlsYW5kU2hlbGxTdXJmYWNlICpjcmVhdGVTaGVsbFN1cmZhY2UoUVdheWxhbmRXaW5kb3cgKndp bmRvdykgPSAwOworKyAgICAvLyBrZXB0IGZvciBiaW5hcnkgY29tcGF0IHdpdGggbGF5ZXItc2hl bGwtcXQKKyAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXls YW5kV2luZG93ICpuZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKSB7CistICAgICAg ICBpZiAobmV3Rm9jdXMpCistICAgICAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dBY3Rp dmF0ZWQobmV3Rm9jdXMpOworLSAgICAgICAgaWYgKG9sZEZvY3VzKQorLSAgICAgICAgICAgIG1f ZGlzcGxheS0+aGFuZGxlV2luZG93RGVhY3RpdmF0ZWQob2xkRm9jdXMpOworKyAgICAgICAgUV9V TlVTRUQobmV3Rm9jdXMpOworKyAgICAgICAgUV9VTlVTRUQob2xkRm9jdXMpOworICAgICB9Cisg ICAgIHZpcnR1YWwgdm9pZCAqbmF0aXZlUmVzb3VyY2VGb3JXaW5kb3coY29uc3QgUUJ5dGVBcnJh eSAmcmVzb3VyY2UsIFFXaW5kb3cgKndpbmRvdykgeworICAgICAgICAgUV9VTlVTRUQocmVzb3Vy Y2UpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY29tcG9zaXRvci9jb25maWd1cmUuanNv biBiL3F0d2F5bGFuZC9zcmMvY29tcG9zaXRvci9jb25maWd1cmUuanNvbgoraW5kZXggYmNmZDUy MTUuLmRhOTVkMDdiIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jb21wb3NpdG9yL2NvbmZp Z3VyZS5qc29uCisrKysgYi9xdHdheWxhbmQvc3JjL2NvbXBvc2l0b3IvY29uZmlndXJlLmpzb24K K0BAIC03LDYgKzcsMzEgQEAKKyAgICAgInRlc3REaXIiOiAiLi4vLi4vY29uZmlnLnRlc3RzIiwK KyAKKyAgICAgImxpYnJhcmllcyI6IHsKKysgICAgICAgICJ3YXlsYW5kLWNsaWVudCI6IHsKKysg ICAgICAgICAgICAibGFiZWwiOiAiV2F5bGFuZCBjbGllbnQgbGlicmFyeSIsCisrICAgICAgICAg ICAgImhlYWRlcnMiOiAid2F5bGFuZC12ZXJzaW9uLmgiLAorKyAgICAgICAgICAgICJ0ZXN0Ijog eworKyAgICAgICAgICAgICAgICAibWFpbiI6IFsKKysgICAgICAgICAgICAgICAgICAgICIjaWYg V0FZTEFORF9WRVJTSU9OX01BSk9SIDwgMSIsCisrICAgICAgICAgICAgICAgICAgICAiIyBlcnJv ciBXYXlsYW5kIDEuOC4wIG9yIGhpZ2hlciByZXF1aXJlZCIsCisrICAgICAgICAgICAgICAgICAg ICAiI2VuZGlmIiwKKysgICAgICAgICAgICAgICAgICAgICIjaWYgV0FZTEFORF9WRVJTSU9OX01B Sk9SID09IDEiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgaWYgV0FZTEFORF9WRVJTSU9OX01J Tk9SIDwgOCIsCisrICAgICAgICAgICAgICAgICAgICAiIyAgZXJyb3IgV2F5bGFuZCAxLjguMCBv ciBoaWdoZXIgcmVxdWlyZWQiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgZW5kaWYiLAorKyAg ICAgICAgICAgICAgICAgICAgIiMgaWYgV0FZTEFORF9WRVJTSU9OX01JTk9SID09IDgiLAorKyAg ICAgICAgICAgICAgICAgICAgIiMgIGlmIFdBWUxBTkRfVkVSU0lPTl9NSUNSTyA8IDAiLAorKyAg ICAgICAgICAgICAgICAgICAgIiMgICBlcnJvciBXYXlsYW5kIDEuOC4wIG9yIGhpZ2hlciByZXF1 aXJlZCIsCisrICAgICAgICAgICAgICAgICAgICAiIyAgZW5kaWYiLAorKyAgICAgICAgICAgICAg ICAgICAgIiMgZW5kaWYiLAorKyAgICAgICAgICAgICAgICAgICAgIiNlbmRpZiIKKysgICAgICAg ICAgICAgICAgIF0KKysgICAgICAgICAgICB9LAorKyAgICAgICAgICAgICJzb3VyY2VzIjogWwor KyAgICAgICAgICAgICAgICB7ICJ0eXBlIjogInBrZ0NvbmZpZyIsICJhcmdzIjogIndheWxhbmQt Y2xpZW50IiB9LAorKyAgICAgICAgICAgICAgICAiLWx3YXlsYW5kLWNsaWVudCIKKysgICAgICAg ICAgICBdCisrICAgICAgICB9LAorICAgICAgICAgIndheWxhbmQtc2VydmVyIjogeworICAgICAg ICAgICAgICJsYWJlbCI6ICJ3YXlsYW5kLXNlcnZlciIsCisgICAgICAgICAgICAgImhlYWRlcnMi OiAid2F5bGFuZC12ZXJzaW9uLmgiLAorQEAgLTE1MSw4ICsxNzYsNyBAQAorICAgICAgICAgICAg ICAgICAgICAgIiNlbmRpZiIKKyAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgIH0sCist ICAgICAgICAgICAgImxpYnMiOiAiLWxkcm0iLAorLSAgICAgICAgICAgICJ1c2UiOiAiZWdsIgor KyAgICAgICAgICAgICJ1c2UiOiAiZHJtIGVnbCIKKyAgICAgICAgIH0sCisgICAgICAgICAiZG1h YnVmLWNsaWVudC1idWZmZXIiOiB7CisgICAgICAgICAgICAgImxhYmVsIjogIkxpbnV4IENsaWVu dCBkbWEtYnVmIEJ1ZmZlciBTaGFyaW5nIiwKK0BAIC0xNzYsOCArMjAwLDcgQEAKKyAgICAgICAg ICAgICAgICAgICAgICJyZXR1cm4gMDsiCisgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAg ICB9LAorLSAgICAgICAgICAgICJsaWJzIjogIi1sZHJtIiwKKy0gICAgICAgICAgICAidXNlIjog ImVnbCIKKysgICAgICAgICAgICAidXNlIjogImRybSBlZ2wiCisgICAgICAgICB9LAorICAgICAg ICAgInZ1bGthbi1zZXJ2ZXItYnVmZmVyIjogeworICAgICAgICAgICAgICJsYWJlbCI6ICJWdWxr YW4gQnVmZmVyIFNoYXJpbmciLAorQEAgLTE5NSw3ICsyMTgsOCBAQAorICAgICAgICAgICAgICAg ICAgICAgImV4cG9ydEFsbG9jSW5mby5oYW5kbGVUeXBlcyA9IFZLX0VYVEVSTkFMX01FTU9SWV9I QU5ETEVfVFlQRV9PUEFRVUVfRkRfQklUX0tIUjsiLAorICAgICAgICAgICAgICAgICAgICAgInJl dHVybiAwOyIKKyAgICAgICAgICAgICAgICAgXQorLSAgICAgICAgICAgIH0KKysgICAgICAgICAg ICB9LAorKyAgICAgICAgICAgICJ1c2UiOiAid2F5bGFuZC1jbGllbnQiCisgICAgICAgICB9Cisg ICAgIH0sCisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9u L2NsaWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5jcHAgYi9xdHdheWxhbmQvc3Jj L2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93 LmNwcAoraW5kZXggNzg4OWY1NzUuLjY0MTQwNjcyIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Ny Yy9oYXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRv dy5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5 bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuY3BwCitAQCAtNDAsNiArNDAsNyBAQAorICNpbmNs dWRlICJxd2F5bGFuZGVnbHdpbmRvdy5oIgorIAorICNpbmNsdWRlIDxRdFdheWxhbmRDbGllbnQv cHJpdmF0ZS9xd2F5bGFuZHNjcmVlbl9wLmg+CisrI2luY2x1ZGUgPFF0V2F5bGFuZENsaWVudC9w cml2YXRlL3F3YXlsYW5kc3VyZmFjZV9wLmg+CisgI2luY2x1ZGUgInF3YXlsYW5kZ2xjb250ZXh0 LmgiCisgCisgI2luY2x1ZGUgPFF0RWdsU3VwcG9ydC9wcml2YXRlL3FlZ2xjb252ZW5pZW5jZV9w Lmg+CitAQCAtMTI0LDYgKzEyNSw3IEBAIHZvaWQgUVdheWxhbmRFZ2xXaW5kb3c6OnVwZGF0ZVN1 cmZhY2UoYm9vbCBjcmVhdGUpCisgICAgICAgICB9CisgICAgICAgICBtT2Zmc2V0ID0gUVBvaW50 KCk7CisgICAgIH0gZWxzZSB7CisrICAgICAgICBRUmVhZExvY2tlciBsb2NrZXIoJm1TdXJmYWNl TG9jayk7CisgICAgICAgICBpZiAobV93YXlsYW5kRWdsV2luZG93KSB7CisgICAgICAgICAgICAg aW50IGN1cnJlbnRfd2lkdGgsIGN1cnJlbnRfaGVpZ2h0OworICAgICAgICAgICAgIHN0YXRpYyBi b29sIGRpc2FibGVSZXNpemVDaGVjayA9IHFnZXRlbnYoIlFUX1dBWUxBTkRfRElTQUJMRV9SRVNJ WkVDSEVDSyIpLnRvSW50KCk7CitAQCAtMTMxLDE0ICsxMzMsMTYgQEAgdm9pZCBRV2F5bGFuZEVn bFdpbmRvdzo6dXBkYXRlU3VyZmFjZShib29sIGNyZWF0ZSkKKyAgICAgICAgICAgICBpZiAoIWRp c2FibGVSZXNpemVDaGVjaykgeworICAgICAgICAgICAgICAgICB3bF9lZ2xfd2luZG93X2dldF9h dHRhY2hlZF9zaXplKG1fd2F5bGFuZEVnbFdpbmRvdywgJmN1cnJlbnRfd2lkdGgsICZjdXJyZW50 X2hlaWdodCk7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGlmIChkaXNhYmxlUmVzaXpl Q2hlY2sgfHwgKGN1cnJlbnRfd2lkdGggIT0gc2l6ZVdpdGhNYXJnaW5zLndpZHRoKCkgfHwgY3Vy cmVudF9oZWlnaHQgIT0gc2l6ZVdpdGhNYXJnaW5zLmhlaWdodCgpKSkgeworKyAgICAgICAgICAg IGlmIChkaXNhYmxlUmVzaXplQ2hlY2sgfHwgKGN1cnJlbnRfd2lkdGggIT0gc2l6ZVdpdGhNYXJn aW5zLndpZHRoKCkgfHwgY3VycmVudF9oZWlnaHQgIT0gc2l6ZVdpdGhNYXJnaW5zLmhlaWdodCgp KSB8fCBtX3JlcXVlc3RlZFNpemUgIT0gc2l6ZVdpdGhNYXJnaW5zKSB7CisgICAgICAgICAgICAg ICAgIHdsX2VnbF93aW5kb3dfcmVzaXplKG1fd2F5bGFuZEVnbFdpbmRvdywgc2l6ZVdpdGhNYXJn aW5zLndpZHRoKCksIHNpemVXaXRoTWFyZ2lucy5oZWlnaHQoKSwgbU9mZnNldC54KCksIG1PZmZz ZXQueSgpKTsKKysgICAgICAgICAgICAgICAgbV9yZXF1ZXN0ZWRTaXplID0gc2l6ZVdpdGhNYXJn aW5zOworICAgICAgICAgICAgICAgICBtT2Zmc2V0ID0gUVBvaW50KCk7CisgCisgICAgICAgICAg ICAgICAgIG1fcmVzaXplID0gdHJ1ZTsKKyAgICAgICAgICAgICB9CistICAgICAgICB9IGVsc2Ug aWYgKGNyZWF0ZSAmJiB3bFN1cmZhY2UoKSkgeworLSAgICAgICAgICAgIG1fd2F5bGFuZEVnbFdp bmRvdyA9IHdsX2VnbF93aW5kb3dfY3JlYXRlKHdsU3VyZmFjZSgpLCBzaXplV2l0aE1hcmdpbnMu d2lkdGgoKSwgc2l6ZVdpdGhNYXJnaW5zLmhlaWdodCgpKTsKKysgICAgICAgIH0gZWxzZSBpZiAo Y3JlYXRlICYmIG1TdXJmYWNlKSB7CisrICAgICAgICAgICAgbV93YXlsYW5kRWdsV2luZG93ID0g d2xfZWdsX3dpbmRvd19jcmVhdGUobVN1cmZhY2UtPm9iamVjdCgpLCBzaXplV2l0aE1hcmdpbnMu d2lkdGgoKSwgc2l6ZVdpdGhNYXJnaW5zLmhlaWdodCgpKTsKKysgICAgICAgICAgICBtX3JlcXVl c3RlZFNpemUgPSBzaXplV2l0aE1hcmdpbnM7CisgICAgICAgICB9CisgCisgICAgICAgICBpZiAo IW1fZWdsU3VyZmFjZSAmJiBtX3dheWxhbmRFZ2xXaW5kb3cgJiYgY3JlYXRlKSB7CitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVn bC9xd2F5bGFuZGVnbHdpbmRvdy5oIGIvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9u L2NsaWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5oCitpbmRleCA1YjFmNGQ1Ni4u MDA3OWRmZWYgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24v Y2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmgKKysrKyBiL3F0d2F5bGFuZC9z cmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5k b3cuaAorQEAgLTg4LDYgKzg4LDcgQEAgcHJpdmF0ZToKKyAgICAgbXV0YWJsZSBRT3BlbkdMRnJh bWVidWZmZXJPYmplY3QgKm1fY29udGVudEZCTyA9IG51bGxwdHI7CisgCisgICAgIFFTdXJmYWNl Rm9ybWF0IG1fZm9ybWF0OworKyAgICBRU2l6ZSBtX3JlcXVlc3RlZFNpemU7CisgfTsKKyAKKyB9 CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NvbXBvc2l0 b3IvbGludXgtZG1hYnVmLXVuc3RhYmxlLXYxL2xpbnV4ZG1hYnVmLmggYi9xdHdheWxhbmQvc3Jj L2hhcmR3YXJlaW50ZWdyYXRpb24vY29tcG9zaXRvci9saW51eC1kbWFidWYtdW5zdGFibGUtdjEv bGludXhkbWFidWYuaAoraW5kZXggNTZhNzEwYzMuLmM2YThiNmM2IDEwMDY0NAorLS0tIGEvcXR3 YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NvbXBvc2l0b3IvbGludXgtZG1hYnVmLXVu c3RhYmxlLXYxL2xpbnV4ZG1hYnVmLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRl Z3JhdGlvbi9jb21wb3NpdG9yL2xpbnV4LWRtYWJ1Zi11bnN0YWJsZS12MS9saW51eGRtYWJ1Zi5o CitAQCAtNDEsNiArNDEsOCBAQAorICNpbmNsdWRlIDxRdENvcmUvUVRleHRTdHJlYW0+CisgI2lu Y2x1ZGUgPFF0R3VpL1FPcGVuR0xUZXh0dXJlPgorIAorKyNpbmNsdWRlIDxhcnJheT4KKysKKyAj aW5jbHVkZSA8RUdML2VnbC5oPgorICNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisgCitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL2RlY29yYXRpb25zL2JyYWRpZW50L21haW4uY3Bw IGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL2RlY29yYXRpb25zL2JyYWRpZW50L21haW4uY3BwCitp bmRleCBlNzVmZGEzYy4uZmE4ODUxNDMgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdp bnMvZGVjb3JhdGlvbnMvYnJhZGllbnQvbWFpbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1 Z2lucy9kZWNvcmF0aW9ucy9icmFkaWVudC9tYWluLmNwcAorQEAgLTE2NCwxMyArMTY0LDEwIEBA IHZvaWQgUVdheWxhbmRCcmFkaWVudERlY29yYXRpb246OnBhaW50KFFQYWludERldmljZSAqZGV2 aWNlKQorICAgICAvLyBXaW5kb3cgaWNvbgorICAgICBRSWNvbiBpY29uID0gd2F5bGFuZFdpbmRv dygpLT53aW5kb3dJY29uKCk7CisgICAgIGlmICghaWNvbi5pc051bGwoKSkgeworLSAgICAgICAg UVBpeG1hcCBwaXhtYXAgPSBpY29uLnBpeG1hcChRU2l6ZSgxMjgsIDEyOCkpOworLSAgICAgICAg UVBpeG1hcCBzY2FsZWQgPSBwaXhtYXAuc2NhbGVkKDIyLCAyMiwgUXQ6Oklnbm9yZUFzcGVjdFJh dGlvLCBRdDo6U21vb3RoVHJhbnNmb3JtYXRpb24pOworLQorICAgICAgICAgUVJlY3RGIGljb25S ZWN0KDAsIDAsIDIyLCAyMik7CistICAgICAgICBwLmRyYXdQaXhtYXAoaWNvblJlY3QuYWRqdXN0 ZWQobWFyZ2lucygpLmxlZnQoKSArIEJVVFRPTl9TUEFDSU5HLCA0LAorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbnMoKS5sZWZ0KCkgKyBCVVRUT05fU1BBQ0lO RywgNCksCistICAgICAgICAgICAgICAgICAgICAgc2NhbGVkLCBpY29uUmVjdCk7CisrICAgICAg ICBpY29uUmVjdC5hZGp1c3QobWFyZ2lucygpLmxlZnQoKSArIEJVVFRPTl9TUEFDSU5HLCA0LAor KyAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbnMoKS5sZWZ0KCkgKyBCVVRUT05fU1BBQ0lO RywgNCksCisrICAgICAgICBpY29uLnBhaW50KCZwLCBpY29uUmVjdC50b1JlY3QoKSk7CisgICAg IH0KKyAKKyAgICAgLy8gV2luZG93IHRpdGxlCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9w bHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NS5j cHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUv cXdheWxhbmR4ZGdwb3B1cHY1LmNwcAoraW5kZXggODVkMjVlM2MuLjYwYmRkNDkxIDEwMDY0NAor LS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1 L3F3YXlsYW5keGRncG9wdXB2NS5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVs bGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVwdjUuY3BwCitAQCAtNDcs MTggKzQ3LDIxIEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIG5hbWVzcGFjZSBRdFdheWxhbmRD bGllbnQgeworIAorLVFXYXlsYW5kWGRnUG9wdXBWNTo6UVdheWxhbmRYZGdQb3B1cFY1KHN0cnVj dCA6OnhkZ19wb3B1cF92NSAqcG9wdXAsIFFXYXlsYW5kV2luZG93ICp3aW5kb3cpCisrUVdheWxh bmRYZGdQb3B1cFY1OjpRV2F5bGFuZFhkZ1BvcHVwVjUoc3RydWN0IDo6eGRnX3BvcHVwX3Y1ICpw b3B1cCwgUVdheWxhbmRXaW5kb3cqIHBhcmVudCwgUVdheWxhbmRXaW5kb3cgKndpbmRvdykKKyAg ICAgOiBRV2F5bGFuZFNoZWxsU3VyZmFjZSh3aW5kb3cpCisgICAgICwgUXRXYXlsYW5kOjp4ZGdf cG9wdXBfdjUocG9wdXApCisrICAgICwgbV9wYXJlbnQocGFyZW50KQorICAgICAsIG1fd2luZG93 KHdpbmRvdykKKyB7CisgICAgIGlmICh3aW5kb3ctPmRpc3BsYXkoKS0+d2luZG93RXh0ZW5zaW9u KCkpCisgICAgICAgICBtX2V4dGVuZGVkV2luZG93ID0gbmV3IFFXYXlsYW5kRXh0ZW5kZWRTdXJm YWNlKHdpbmRvdyk7CisrICAgIG1fcGFyZW50LT5hZGRDaGlsZFBvcHVwKG1fd2luZG93KTsKKyB9 CisgCisgUVdheWxhbmRYZGdQb3B1cFY1Ojp+UVdheWxhbmRYZGdQb3B1cFY1KCkKKyB7CisgICAg IHhkZ19wb3B1cF9kZXN0cm95KG9iamVjdCgpKTsKKysgICAgbV9wYXJlbnQtPnJlbW92ZUNoaWxk UG9wdXAobV93aW5kb3cpOworICAgICBkZWxldGUgbV9leHRlbmRlZFdpbmRvdzsKKyB9CisgCitk aWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNo ZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NV9wLmggYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hl bGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1X3AuaAoraW5kZXgg NzQ5NGY2YTYuLmQ4NWYxMzBiIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3No ZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NV9wLmgKKysrKyBi L3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5 bGFuZHhkZ3BvcHVwdjVfcC5oCitAQCAtNzAsNyArNzAsNyBAQCBjbGFzcyBRX1dBWUxBTkRfQ0xJ RU5UX0VYUE9SVCBRV2F5bGFuZFhkZ1BvcHVwVjUgOiBwdWJsaWMgUVdheWxhbmRTaGVsbFN1cmZh Y2UKKyB7CisgICAgIFFfT0JKRUNUCisgcHVibGljOgorLSAgICBRV2F5bGFuZFhkZ1BvcHVwVjUo c3RydWN0IDo6eGRnX3BvcHVwX3Y1ICpwb3B1cCwgUVdheWxhbmRXaW5kb3cgKndpbmRvdyk7Cisr ICAgIFFXYXlsYW5kWGRnUG9wdXBWNShzdHJ1Y3QgOjp4ZGdfcG9wdXBfdjUgKnBvcHVwLCBRV2F5 bGFuZFdpbmRvdyogcGFyZW50LCBRV2F5bGFuZFdpbmRvdyAqd2luZG93KTsKKyAgICAgflFXYXls YW5kWGRnUG9wdXBWNSgpIG92ZXJyaWRlOworIAorIHByb3RlY3RlZDoKK0BAIC03OCw2ICs3OCw3 IEBAIHByb3RlY3RlZDoKKyAKKyBwcml2YXRlOgorICAgICBRV2F5bGFuZEV4dGVuZGVkU3VyZmFj ZSAqbV9leHRlbmRlZFdpbmRvdyA9IG51bGxwdHI7CisrICAgIFFXYXlsYW5kV2luZG93ICptX3Bh cmVudCA9IG51bGxwdHI7CisgICAgIFFXYXlsYW5kV2luZG93ICptX3dpbmRvdyA9IG51bGxwdHI7 CisgfTsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3Jh dGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1LmNwcCBiL3F0d2F5bGFuZC9zcmMv cGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjUu Y3BwCitpbmRleCA3ZTI0MmM0YS4uZGVmODQ1MmEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3Jj L3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1 LmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNo ZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NS5jcHAKK0BAIC04NCw3ICs4NCw3IEBAIFFXYXlsYW5k WGRnUG9wdXBWNSAqUVdheWxhbmRYZGdTaGVsbFY1OjpjcmVhdGVYZGdQb3B1cChRV2F5bGFuZFdp bmRvdyAqd2luZG93LCBRCisgICAgIGludCB4ID0gcG9zaXRpb24ueCgpICsgcGFyZW50V2luZG93 LT5mcmFtZU1hcmdpbnMoKS5sZWZ0KCk7CisgICAgIGludCB5ID0gcG9zaXRpb24ueSgpICsgcGFy ZW50V2luZG93LT5mcmFtZU1hcmdpbnMoKS50b3AoKTsKKyAKKy0gICAgYXV0byBwb3B1cCA9IG5l dyBRV2F5bGFuZFhkZ1BvcHVwVjUoZ2V0X3hkZ19wb3B1cCh3aW5kb3ctPndsU3VyZmFjZSgpLCBw YXJlbnRTdXJmYWNlLCBzZWF0LCBtX3BvcHVwU2VyaWFsLCB4LCB5KSwgd2luZG93KTsKKysgICAg YXV0byBwb3B1cCA9IG5ldyBRV2F5bGFuZFhkZ1BvcHVwVjUoZ2V0X3hkZ19wb3B1cCh3aW5kb3ct PndsU3VyZmFjZSgpLCBwYXJlbnRTdXJmYWNlLCBzZWF0LCBtX3BvcHVwU2VyaWFsLCB4LCB5KSwg cGFyZW50V2luZG93LCB3aW5kb3cpOworICAgICBtX3BvcHVwcy5hcHBlbmQod2luZG93KTsKKyAg ICAgUU9iamVjdDo6Y29ubmVjdChwb3B1cCwgJlFXYXlsYW5kWGRnUG9wdXBWNTo6ZGVzdHJveWVk LCBbdGhpcywgd2luZG93XSgpeworICAgICAgICAgbV9wb3B1cHMucmVtb3ZlT25lKHdpbmRvdyk7 CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRn LXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWludGVncmF0aW9uLmNwcCBiL3F0d2F5bGFuZC9z cmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxs djVpbnRlZ3JhdGlvbi5jcHAKK2luZGV4IDRlMjU5NDlmLi5jZmM2MDkzOSAxMDA2NDQKKy0tLSBh L3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5 bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lu cy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3Jh dGlvbi5jcHAKK0BAIC04NSwxMyArODUsNiBAQCBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqUVdheWxh bmRYZGdTaGVsbFY1SW50ZWdyYXRpb246OmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZAorICAg ICByZXR1cm4gbV94ZGdTaGVsbC0+Y3JlYXRlWGRnU3VyZmFjZSh3aW5kb3cpOworIH0KKyAKKy12 b2lkIFFXYXlsYW5kWGRnU2hlbGxWNUludGVncmF0aW9uOjpoYW5kbGVLZXlib2FyZEZvY3VzQ2hh bmdlZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1cykg eworLSAgICBpZiAobmV3Rm9jdXMgJiYgcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnUG9wdXBWNSAq PihuZXdGb2N1cy0+c2hlbGxTdXJmYWNlKCkpKQorLSAgICAgICAgbV9kaXNwbGF5LT5oYW5kbGVX aW5kb3dBY3RpdmF0ZWQobmV3Rm9jdXMpOworLSAgICBpZiAob2xkRm9jdXMgJiYgcW9iamVjdF9j YXN0PFFXYXlsYW5kWGRnUG9wdXBWNSAqPihvbGRGb2N1cy0+c2hlbGxTdXJmYWNlKCkpKQorLSAg ICAgICAgbV9kaXNwbGF5LT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChvbGRGb2N1cyk7CistfQor LQorIH0KKyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9w bHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NWlu dGVncmF0aW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hk Zy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbl9wLmgKK2luZGV4IGNlNmJk YjllLi5hZWQ4ODY3MCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGlu dGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbl9wLmgK KysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12 NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbl9wLmgKK0BAIC02Nyw3ICs2Nyw2IEBAIHB1 YmxpYzoKKyAgICAgUVdheWxhbmRYZGdTaGVsbFY1SW50ZWdyYXRpb24oKSB7fQorICAgICBib29s IGluaXRpYWxpemUoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5KSBvdmVycmlkZTsKKyAgICAgUVdh eWxhbmRTaGVsbFN1cmZhY2UgKmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZFdpbmRvdyAqd2lu ZG93KSBvdmVycmlkZTsKKy0gICAgdm9pZCBoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5 bGFuZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1cykgb3ZlcnJpZGU7 CisgCisgcHJpdmF0ZToKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVdheWxhbmRYZGdTaGVsbFY1PiBt X3hkZ1NoZWxsOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVn cmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjYuY3BwIGIvcXR3YXlsYW5kL3Ny Yy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2 Ni5jcHAKK2luZGV4IDhjMzcxNjYxLi4xNTFjNzhlMyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9z cmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxs djYuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGct c2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2LmNwcAorQEAgLTE3NCw2ICsxNzQsNyBAQCBRV2F5 bGFuZFhkZ1N1cmZhY2VWNjo6UG9wdXA6OlBvcHVwKFFXYXlsYW5kWGRnU3VyZmFjZVY2ICp4ZGdT dXJmYWNlLCBRV2F5bGFuZFhkZworICAgICAsIG1feGRnU3VyZmFjZSh4ZGdTdXJmYWNlKQorICAg ICAsIG1fcGFyZW50KHBhcmVudCkKKyB7CisrICAgIG1fcGFyZW50LT53aW5kb3coKS0+YWRkQ2hp bGRQb3B1cChtX3hkZ1N1cmZhY2UtPndpbmRvdygpKTsKKyB9CisgCisgUVdheWxhbmRYZGdTdXJm YWNlVjY6OlBvcHVwOjp+UG9wdXAoKQorQEAgLTE4MSw2ICsxODIsOCBAQCBRV2F5bGFuZFhkZ1N1 cmZhY2VWNjo6UG9wdXA6On5Qb3B1cCgpCisgICAgIGlmIChpc0luaXRpYWxpemVkKCkpCisgICAg ICAgICBkZXN0cm95KCk7CisgCisrICAgIG1fcGFyZW50LT53aW5kb3coKS0+cmVtb3ZlQ2hpbGRQ b3B1cChtX3hkZ1N1cmZhY2UtPndpbmRvdygpKTsKKysKKyAgICAgaWYgKG1fZ3JhYmJpbmcpIHsK KyAgICAgICAgIGF1dG8gKnNoZWxsID0gbV94ZGdTdXJmYWNlLT5tX3NoZWxsOworICAgICAgICAg UV9BU1NFUlQoc2hlbGwtPm1fdG9wbW9zdEdyYWJiaW5nUG9wdXAgPT0gdGhpcyk7CitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2 L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uLmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lu cy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3Jh dGlvbi5jcHAKK2luZGV4IDAzMTY0MzE2Li5lOGRhOGJhMSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFu ZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3No ZWxsdjZpbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGlu dGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbi5jcHAK K0BAIC02OCwyMCArNjgsNiBAQCBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqUVdheWxhbmRYZGdTaGVs bFY2SW50ZWdyYXRpb246OmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZAorICAgICByZXR1cm4g bV94ZGdTaGVsbC0+Z2V0WGRnU3VyZmFjZSh3aW5kb3cpOworIH0KKyAKKy12b2lkIFFXYXlsYW5k WGRnU2hlbGxWNkludGVncmF0aW9uOjpoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFu ZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1cykKKy17CistICAgIGlm IChuZXdGb2N1cykgeworLSAgICAgICAgYXV0byAqeGRnU3VyZmFjZSA9IHFvYmplY3RfY2FzdDxR V2F5bGFuZFhkZ1N1cmZhY2VWNiAqPihuZXdGb2N1cy0+c2hlbGxTdXJmYWNlKCkpOworLSAgICAg ICAgaWYgKHhkZ1N1cmZhY2UgJiYgIXhkZ1N1cmZhY2UtPmhhbmRsZXNBY3RpdmVTdGF0ZSgpKQor LSAgICAgICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93QWN0aXZhdGVkKG5ld0ZvY3VzKTsK Ky0gICAgfQorLSAgICBpZiAob2xkRm9jdXMgJiYgcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3Vy ZmFjZVY2ICo+KG9sZEZvY3VzLT5zaGVsbFN1cmZhY2UoKSkpIHsKKy0gICAgICAgIGF1dG8gKnhk Z1N1cmZhY2UgPSBxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlVjYgKj4ob2xkRm9jdXMt PnNoZWxsU3VyZmFjZSgpKTsKKy0gICAgICAgIGlmICh4ZGdTdXJmYWNlICYmICF4ZGdTdXJmYWNl LT5oYW5kbGVzQWN0aXZlU3RhdGUoKSkKKy0gICAgICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdp bmRvd0RlYWN0aXZhdGVkKG9sZEZvY3VzKTsKKy0gICAgfQorLX0KKy0KKyB9CisgCisgUVRfRU5E X05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVn cmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbl9wLmggYi9x dHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxh bmR4ZGdzaGVsbHY2aW50ZWdyYXRpb25fcC5oCitpbmRleCAyNjFmOGNiYi4uYzFiY2Q1YzYgMTAw NjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hl bGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2aW50ZWdyYXRpb25fcC5oCisrKysgYi9xdHdheWxhbmQv c3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVs bHY2aW50ZWdyYXRpb25fcC5oCitAQCAtNjUsNyArNjUsNiBAQCBwdWJsaWM6CisgICAgIFFXYXls YW5kWGRnU2hlbGxWNkludGVncmF0aW9uKCkge30KKyAgICAgYm9vbCBpbml0aWFsaXplKFFXYXls YW5kRGlzcGxheSAqZGlzcGxheSkgb3ZlcnJpZGU7CisgICAgIFFXYXlsYW5kU2hlbGxTdXJmYWNl ICpjcmVhdGVTaGVsbFN1cmZhY2UoUVdheWxhbmRXaW5kb3cgKndpbmRvdykgb3ZlcnJpZGU7Cist ICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0Zv Y3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xkRm9jdXMpIG92ZXJyaWRlOworIAorIHByaXZhdGU6Cisg ICAgIFFTY29wZWRQb2ludGVyPFFXYXlsYW5kWGRnU2hlbGxWNj4gbV94ZGdTaGVsbDsKK2RpZmYg LS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwv cXdheWxhbmR4ZGdzaGVsbC5jcHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3Jh dGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbC5jcHAKK2luZGV4IGYzZTNjMzMwLi5mYTZk NTgwOCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9u L3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVn aW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGwuY3BwCitAQCAt NjcsMTEgKzY3LDYgQEAgUVdheWxhbmRYZGdTdXJmYWNlOjpUb3BsZXZlbDo6VG9wbGV2ZWwoUVdh eWxhbmRYZGdTdXJmYWNlICp4ZGdTdXJmYWNlKQorIAorIFFXYXlsYW5kWGRnU3VyZmFjZTo6VG9w bGV2ZWw6On5Ub3BsZXZlbCgpCisgeworLSAgICBpZiAobV9hcHBsaWVkLnN0YXRlcyAmIFF0OjpX aW5kb3dBY3RpdmUpIHsKKy0gICAgICAgIFFXYXlsYW5kV2luZG93ICp3aW5kb3cgPSBtX3hkZ1N1 cmZhY2UtPndpbmRvdygpOworLSAgICAgICAgd2luZG93LT5kaXNwbGF5KCktPmhhbmRsZVdpbmRv d0RlYWN0aXZhdGVkKHdpbmRvdyk7CistICAgIH0KKy0KKyAgICAgLy8gVGhlIHByb3RvY29sIHNw ZWMgcmVxdWlyZXMgdGhhdCB0aGUgZGVjb3JhdGlvbiBvYmplY3QgaXMgZGVsZXRlZCBiZWZvcmUg eGRnX3RvcGxldmVsLgorICAgICBkZWxldGUgbV9kZWNvcmF0aW9uOworICAgICBtX2RlY29yYXRp b24gPSBudWxscHRyOworQEAgLTg1LDE2ICs4MCwxNSBAQCB2b2lkIFFXYXlsYW5kWGRnU3VyZmFj ZTo6VG9wbGV2ZWw6OmFwcGx5Q29uZmlndXJlKCkKKyAgICAgaWYgKCEobV9hcHBsaWVkLnN0YXRl cyAmIChRdDo6V2luZG93TWF4aW1pemVkfFF0OjpXaW5kb3dGdWxsU2NyZWVuKSkpCisgICAgICAg ICBtX25vcm1hbFNpemUgPSBtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT53aW5kb3dGcmFtZUdlb21l dHJ5KCkuc2l6ZSgpOworIAorLSAgICBpZiAoKG1fcGVuZGluZy5zdGF0ZXMgJiBRdDo6V2luZG93 QWN0aXZlKSAmJiAhKG1fYXBwbGllZC5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSkKKysgICAg aWYgKChtX3BlbmRpbmcuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkgJiYgIShtX2FwcGxpZWQu c3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkKKysgICAgICAgICYmICFtX3hkZ1N1cmZhY2UtPm1f d2luZG93LT5kaXNwbGF5KCktPmlzS2V5Ym9hcmRBdmFpbGFibGUoKSkKKyAgICAgICAgIG1feGRn U3VyZmFjZS0+bV93aW5kb3ctPmRpc3BsYXkoKS0+aGFuZGxlV2luZG93QWN0aXZhdGVkKG1feGRn U3VyZmFjZS0+bV93aW5kb3cpOworIAorLSAgICBpZiAoIShtX3BlbmRpbmcuc3RhdGVzICYgUXQ6 OldpbmRvd0FjdGl2ZSkgJiYgKG1fYXBwbGllZC5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZlKSkK KysgICAgaWYgKCEobV9wZW5kaW5nLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpICYmIChtX2Fw cGxpZWQuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2ZSkKKysgICAgICAgICYmICFtX3hkZ1N1cmZh Y2UtPm1fd2luZG93LT5kaXNwbGF5KCktPmlzS2V5Ym9hcmRBdmFpbGFibGUoKSkKKyAgICAgICAg IG1feGRnU3VyZmFjZS0+bV93aW5kb3ctPmRpc3BsYXkoKS0+aGFuZGxlV2luZG93RGVhY3RpdmF0 ZWQobV94ZGdTdXJmYWNlLT5tX3dpbmRvdyk7CisgCistICAgIC8vIFRPRE86IG5vbmUgb2YgdGhl IG90aGVyIHBsdWdpbnMgc2VuZCBXaW5kb3dBY3RpdmUgZWl0aGVyLCBidXQgaXMgaXQgb24gcHVy cG9zZT8KKy0gICAgUXQ6OldpbmRvd1N0YXRlcyBzdGF0ZXNXaXRob3V0QWN0aXZlID0gbV9wZW5k aW5nLnN0YXRlcyAmIH5RdDo6V2luZG93QWN0aXZlOworLQorLSAgICBtX3hkZ1N1cmZhY2UtPm1f d2luZG93LT5oYW5kbGVXaW5kb3dTdGF0ZXNDaGFuZ2VkKHN0YXRlc1dpdGhvdXRBY3RpdmUpOwor KyAgICBtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT5oYW5kbGVXaW5kb3dTdGF0ZXNDaGFuZ2VkKG1f cGVuZGluZy5zdGF0ZXMpOworIAorICAgICBpZiAobV9wZW5kaW5nLnNpemUuaXNFbXB0eSgpKSB7 CisgICAgICAgICAvLyBBbiBlbXB0eSBzaXplIGluIHRoZSBjb25maWd1cmUgbWVhbnMgaXQncyB1 cCB0byB0aGUgY2xpZW50IHRvIGNob29zZSB0aGUgc2l6ZQorQEAgLTEwNSw4ICs5OSw2IEBAIHZv aWQgUVdheWxhbmRYZGdTdXJmYWNlOjpUb3BsZXZlbDo6YXBwbHlDb25maWd1cmUoKQorICAgICAg ICAgbV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+cmVzaXplRnJvbUFwcGx5Q29uZmlndXJlKG1fcGVu ZGluZy5zaXplKTsKKyAgICAgfQorIAorLSAgICBtX3hkZ1N1cmZhY2UtPnNldFNpemVIaW50cygp OworLQorICAgICBtX2FwcGxpZWQgPSBtX3BlbmRpbmc7CisgICAgIHFDRGVidWcobGNRcGFXYXls YW5kKSA8PCAiQXBwbGllZCBwZW5kaW5nIHhkZ190b3BsZXZlbCBjb25maWd1cmUgZXZlbnQ6IiA8 PCBtX2FwcGxpZWQuc2l6ZSA8PCBtX2FwcGxpZWQuc3RhdGVzOworIH0KK0BAIC0yMDMsMTIgKzE5 NSwxNyBAQCBRdFdheWxhbmQ6OnhkZ190b3BsZXZlbDo6cmVzaXplX2VkZ2UgUVdheWxhbmRYZGdT dXJmYWNlOjpUb3BsZXZlbDo6Y29udmVydFRvUmVzaQorICAgICAgICAgICAgICAgICB8ICgoZWRn ZXMgJiBRdDo6UmlnaHRFZGdlKSA/IHJlc2l6ZV9lZGdlX3JpZ2h0IDogMCkpOworIH0KKyAKKy1R V2F5bGFuZFhkZ1N1cmZhY2U6OlBvcHVwOjpQb3B1cChRV2F5bGFuZFhkZ1N1cmZhY2UgKnhkZ1N1 cmZhY2UsIFFXYXlsYW5kWGRnU3VyZmFjZSAqcGFyZW50LAorK1FXYXlsYW5kWGRnU3VyZmFjZTo6 UG9wdXA6OlBvcHVwKFFXYXlsYW5kWGRnU3VyZmFjZSAqeGRnU3VyZmFjZSwgUVdheWxhbmRXaW5k b3cgKnBhcmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdFdheWxhbmQ6 OnhkZ19wb3NpdGlvbmVyICpwb3NpdGlvbmVyKQorLSAgICA6IHhkZ19wb3B1cCh4ZGdTdXJmYWNl LT5nZXRfcG9wdXAocGFyZW50LT5vYmplY3QoKSwgcG9zaXRpb25lci0+b2JqZWN0KCkpKQorLSAg ICAsIG1feGRnU3VyZmFjZSh4ZGdTdXJmYWNlKQorKyAgICA6IG1feGRnU3VyZmFjZSh4ZGdTdXJm YWNlKQorKyAgICAsIG1fcGFyZW50WGRnU3VyZmFjZShxb2JqZWN0X2Nhc3Q8UVdheWxhbmRYZGdT dXJmYWNlICo+KHBhcmVudC0+c2hlbGxTdXJmYWNlKCkpKQorICAgICAsIG1fcGFyZW50KHBhcmVu dCkKKyB7CisrCisrICAgIGluaXQoeGRnU3VyZmFjZS0+Z2V0X3BvcHVwKG1fcGFyZW50WGRnU3Vy ZmFjZSA/IG1fcGFyZW50WGRnU3VyZmFjZS0+b2JqZWN0KCkgOiBudWxscHRyLCBwb3NpdGlvbmVy LT5vYmplY3QoKSkpOworKyAgICBpZiAobV9wYXJlbnQpIHsKKysgICAgICAgIG1fcGFyZW50LT5h ZGRDaGlsZFBvcHVwKG1feGRnU3VyZmFjZS0+d2luZG93KCkpOworKyAgICB9CisgfQorIAorIFFX YXlsYW5kWGRnU3VyZmFjZTo6UG9wdXA6On5Qb3B1cCgpCitAQCAtMjE2LDEwICsyMTMsMjQgQEAg UVdheWxhbmRYZGdTdXJmYWNlOjpQb3B1cDo6flBvcHVwKCkKKyAgICAgaWYgKGlzSW5pdGlhbGl6 ZWQoKSkKKyAgICAgICAgIGRlc3Ryb3koKTsKKyAKKysgICAgaWYgKG1fcGFyZW50KSB7CisrICAg ICAgICBtX3BhcmVudC0+cmVtb3ZlQ2hpbGRQb3B1cChtX3hkZ1N1cmZhY2UtPndpbmRvdygpKTsK KysgICAgfQorKworICAgICBpZiAobV9ncmFiYmluZykgeworICAgICAgICAgYXV0byAqc2hlbGwg PSBtX3hkZ1N1cmZhY2UtPm1fc2hlbGw7CisgICAgICAgICBRX0FTU0VSVChzaGVsbC0+bV90b3Bt b3N0R3JhYmJpbmdQb3B1cCA9PSB0aGlzKTsKKy0gICAgICAgIHNoZWxsLT5tX3RvcG1vc3RHcmFi YmluZ1BvcHVwID0gbV9wYXJlbnQtPm1fcG9wdXA7CisrICAgICAgICBzaGVsbC0+bV90b3Btb3N0 R3JhYmJpbmdQb3B1cCA9IG1fcGFyZW50WGRnU3VyZmFjZSA/IG1fcGFyZW50WGRnU3VyZmFjZS0+ bV9wb3B1cCA6IG51bGxwdHI7CisrICAgICAgICBtX2dyYWJiaW5nID0gZmFsc2U7CisrCisrICAg ICAgICAvLyBTeW50aGVzaXplIFF0IGVudGVyL2xlYXZlIGV2ZW50cyBmb3IgcG9wdXAKKysgICAg ICAgIFFXaW5kb3cgKmxlYXZlID0gbnVsbHB0cjsKKysgICAgICAgIGlmIChtX3hkZ1N1cmZhY2Ug JiYgbV94ZGdTdXJmYWNlLT53aW5kb3coKSkKKysgICAgICAgICAgICBsZWF2ZSA9IG1feGRnU3Vy ZmFjZS0+d2luZG93KCktPndpbmRvdygpOworKyAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFj ZTo6aGFuZGxlTGVhdmVFdmVudChsZWF2ZSk7CisrCisrICAgICAgICBpZiAoUVdpbmRvdyAqZW50 ZXIgPSBRR3VpQXBwbGljYXRpb246OnRvcExldmVsQXQoUUN1cnNvcjo6cG9zKCkpKQorKyAgICAg ICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZUVudGVyRXZlbnQoZW50ZXIsIGVu dGVyLT5tYXBGcm9tR2xvYmFsKFFDdXJzb3I6OnBvcygpKSwgUUN1cnNvcjo6cG9zKCkpOworICAg ICB9CisgfQorIAorQEAgLTI1Nyw2ICsyNjgsNyBAQCBRV2F5bGFuZFhkZ1N1cmZhY2U6OlFXYXls YW5kWGRnU3VyZmFjZShRV2F5bGFuZFhkZ1NoZWxsICpzaGVsbCwgOjp4ZGdfc3VyZmFjZSAqcwor ICAgICAgICAgICAgICAgICBtX3RvcGxldmVsLT5zZXRfcGFyZW50KHBhcmVudFhkZ1N1cmZhY2Ut Pm1fdG9wbGV2ZWwtPm9iamVjdCgpKTsKKyAgICAgICAgIH0KKyAgICAgfQorKyAgICBzZXRTaXpl SGludHMoKTsKKyB9CisgCisgUVdheWxhbmRYZGdTdXJmYWNlOjp+UVdheWxhbmRYZGdTdXJmYWNl KCkKK0BAIC00MDAsOCArNDEyLDYgQEAgdm9pZCBRV2F5bGFuZFhkZ1N1cmZhY2U6OnNldFBvcHVw KFFXYXlsYW5kV2luZG93ICpwYXJlbnQpCisgeworICAgICBRX0FTU0VSVCghbV90b3BsZXZlbCAm JiAhbV9wb3B1cCk7CisgCistICAgIGF1dG8gcGFyZW50WGRnU3VyZmFjZSA9IHN0YXRpY19jYXN0 PFFXYXlsYW5kWGRnU3VyZmFjZSAqPihwYXJlbnQtPnNoZWxsU3VyZmFjZSgpKTsKKy0KKyAgICAg YXV0byBwb3NpdGlvbmVyID0gbmV3IFF0V2F5bGFuZDo6eGRnX3Bvc2l0aW9uZXIobV9zaGVsbC0+ Y3JlYXRlX3Bvc2l0aW9uZXIoKSk7CisgICAgIC8vIHNldF9wb3B1cCBleHBlY3RzIGEgcG9zaXRp b24gcmVsYXRpdmUgdG8gdGhlIHBhcmVudAorICAgICBRUG9pbnQgdHJhbnNpZW50UG9zID0gbV93 aW5kb3ctPmdlb21ldHJ5KCkudG9wTGVmdCgpOyAvLyB0aGlzIGlzIGFic29sdXRlCitAQCAtNDE0 LDggKzQyNCw5IEBAIHZvaWQgUVdheWxhbmRYZGdTdXJmYWNlOjpzZXRQb3B1cChRV2F5bGFuZFdp bmRvdyAqcGFyZW50KQorICAgICBwb3NpdGlvbmVyLT5zZXRfYW5jaG9yKFF0V2F5bGFuZDo6eGRn X3Bvc2l0aW9uZXI6OmFuY2hvcl90b3BfbGVmdCk7CisgICAgIHBvc2l0aW9uZXItPnNldF9ncmF2 aXR5KFF0V2F5bGFuZDo6eGRnX3Bvc2l0aW9uZXI6OmdyYXZpdHlfYm90dG9tX3JpZ2h0KTsKKyAg ICAgcG9zaXRpb25lci0+c2V0X3NpemUobV93aW5kb3ctPmdlb21ldHJ5KCkud2lkdGgoKSwgbV93 aW5kb3ctPmdlb21ldHJ5KCkuaGVpZ2h0KCkpOworLSAgICBtX3BvcHVwID0gbmV3IFBvcHVwKHRo aXMsIHBhcmVudFhkZ1N1cmZhY2UsIHBvc2l0aW9uZXIpOworKyAgICBtX3BvcHVwID0gbmV3IFBv cHVwKHRoaXMsIHBhcmVudCwgcG9zaXRpb25lcik7CisgICAgIHBvc2l0aW9uZXItPmRlc3Ryb3ko KTsKKysKKyAgICAgZGVsZXRlIHBvc2l0aW9uZXI7CisgfQorIAorQEAgLTQzNyw2ICs0NDgsMjMg QEAgdm9pZCBRV2F5bGFuZFhkZ1N1cmZhY2U6OnNldEdyYWJQb3B1cChRV2F5bGFuZFdpbmRvdyAq cGFyZW50LCBRV2F5bGFuZElucHV0RGV2aWMKKyAgICAgfQorICAgICBzZXRQb3B1cChwYXJlbnQp OworICAgICBtX3BvcHVwLT5ncmFiKGRldmljZSwgc2VyaWFsKTsKKysKKysgICAgLy8gU3ludGhl c2l6ZSBRdCBlbnRlci9sZWF2ZSBldmVudHMgZm9yIHBvcHVwCisrICAgIGlmICghcGFyZW50KQor KyAgICAgICAgcmV0dXJuOworKyAgICBRV2luZG93ICpjdXJyZW50ID0gUUd1aUFwcGxpY2F0aW9u Ojp0b3BMZXZlbEF0KFFDdXJzb3I6OnBvcygpKTsKKysgICAgUVdpbmRvdyAqbGVhdmUgPSBwYXJl bnQtPndpbmRvdygpOworKyAgICBpZiAoY3VycmVudCAhPSBsZWF2ZSkKKysgICAgICAgIHJldHVy bjsKKysKKysgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlTGVhdmVFdmVudChsZWF2 ZSk7CisrCisrICAgIFFXaW5kb3cgKmVudGVyID0gbnVsbHB0cjsKKysgICAgaWYgKG1fcG9wdXAg JiYgbV9wb3B1cC0+bV94ZGdTdXJmYWNlICYmIG1fcG9wdXAtPm1feGRnU3VyZmFjZS0+d2luZG93 KCkpCisrICAgICAgICBlbnRlciA9IG1fcG9wdXAtPm1feGRnU3VyZmFjZS0+d2luZG93KCktPndp bmRvdygpOworKworKyAgICBpZiAoZW50ZXIpCisrICAgICAgICBRV2luZG93U3lzdGVtSW50ZXJm YWNlOjpoYW5kbGVFbnRlckV2ZW50KGVudGVyLCBlbnRlci0+bWFwRnJvbUdsb2JhbChRQ3Vyc29y Ojpwb3MoKSksIFFDdXJzb3I6OnBvcygpKTsKKyB9CisgCisgdm9pZCBRV2F5bGFuZFhkZ1N1cmZh Y2U6OnhkZ19zdXJmYWNlX2NvbmZpZ3VyZSh1aW50MzJfdCBzZXJpYWwpCitkaWZmIC0tZ2l0IGEv cXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5k eGRnc2hlbGxfcC5oIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRn LXNoZWxsL3F3YXlsYW5keGRnc2hlbGxfcC5oCitpbmRleCA5Njc4NTIwNS4uNGI1MThmMGEgMTAw NjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hl bGwvcXdheWxhbmR4ZGdzaGVsbF9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVs bGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsX3AuaAorQEAgLTEzMSwxNCAr MTMxLDE1IEBAIHByaXZhdGU6CisgCisgICAgIGNsYXNzIFBvcHVwIDogcHVibGljIFF0V2F5bGFu ZDo6eGRnX3BvcHVwIHsKKyAgICAgcHVibGljOgorLSAgICAgICAgUG9wdXAoUVdheWxhbmRYZGdT dXJmYWNlICp4ZGdTdXJmYWNlLCBRV2F5bGFuZFhkZ1N1cmZhY2UgKnBhcmVudCwgUXRXYXlsYW5k Ojp4ZGdfcG9zaXRpb25lciAqcG9zaXRpb25lcik7CisrICAgICAgICBQb3B1cChRV2F5bGFuZFhk Z1N1cmZhY2UgKnhkZ1N1cmZhY2UsIFFXYXlsYW5kV2luZG93ICpwYXJlbnQsIFF0V2F5bGFuZDo6 eGRnX3Bvc2l0aW9uZXIgKnBvc2l0aW9uZXIpOworICAgICAgICAgflBvcHVwKCkgb3ZlcnJpZGU7 CisgCisgICAgICAgICB2b2lkIGdyYWIoUVdheWxhbmRJbnB1dERldmljZSAqc2VhdCwgdWludCBz ZXJpYWwpOworICAgICAgICAgdm9pZCB4ZGdfcG9wdXBfcG9wdXBfZG9uZSgpIG92ZXJyaWRlOwor IAorICAgICAgICAgUVdheWxhbmRYZGdTdXJmYWNlICptX3hkZ1N1cmZhY2UgPSBudWxscHRyOwor LSAgICAgICAgUVdheWxhbmRYZGdTdXJmYWNlICptX3BhcmVudCA9IG51bGxwdHI7CisrICAgICAg ICBRV2F5bGFuZFhkZ1N1cmZhY2UgKm1fcGFyZW50WGRnU3VyZmFjZSA9IG51bGxwdHI7CisrICAg ICAgICBRV2F5bGFuZFdpbmRvdyAqbV9wYXJlbnQgPSBudWxscHRyOworICAgICAgICAgYm9vbCBt X2dyYWJiaW5nID0gZmFsc2U7CisgICAgIH07CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Ny Yy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRl Z3JhdGlvbi5jcHAgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGct c2hlbGwvcXdheWxhbmR4ZGdzaGVsbGludGVncmF0aW9uLmNwcAoraW5kZXggODc2OWQ5NzEuLmRh MGRkNmE3IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRp b24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0d2F5 bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3No ZWxsaW50ZWdyYXRpb24uY3BwCitAQCAtNjksMjAgKzY5LDYgQEAgUVdheWxhbmRTaGVsbFN1cmZh Y2UgKlFXYXlsYW5kWGRnU2hlbGxJbnRlZ3JhdGlvbjo6Y3JlYXRlU2hlbGxTdXJmYWNlKFFXYXls YW5kV2kKKyAgICAgcmV0dXJuIG1feGRnU2hlbGwtPmdldFhkZ1N1cmZhY2Uod2luZG93KTsKKyB9 CisgCistdm9pZCBRV2F5bGFuZFhkZ1NoZWxsSW50ZWdyYXRpb246OmhhbmRsZUtleWJvYXJkRm9j dXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpuZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZv Y3VzKQorLXsKKy0gICAgaWYgKG5ld0ZvY3VzKSB7CistICAgICAgICBhdXRvICp4ZGdTdXJmYWNl ID0gcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3VyZmFjZSAqPihuZXdGb2N1cy0+c2hlbGxTdXJm YWNlKCkpOworLSAgICAgICAgaWYgKHhkZ1N1cmZhY2UgJiYgIXhkZ1N1cmZhY2UtPmhhbmRsZXNB Y3RpdmVTdGF0ZSgpKQorLSAgICAgICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93QWN0aXZh dGVkKG5ld0ZvY3VzKTsKKy0gICAgfQorLSAgICBpZiAob2xkRm9jdXMgJiYgcW9iamVjdF9jYXN0 PFFXYXlsYW5kWGRnU3VyZmFjZSAqPihvbGRGb2N1cy0+c2hlbGxTdXJmYWNlKCkpKSB7CistICAg ICAgICBhdXRvICp4ZGdTdXJmYWNlID0gcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3VyZmFjZSAq PihvbGRGb2N1cy0+c2hlbGxTdXJmYWNlKCkpOworLSAgICAgICAgaWYgKHhkZ1N1cmZhY2UgJiYg IXhkZ1N1cmZhY2UtPmhhbmRsZXNBY3RpdmVTdGF0ZSgpKQorLSAgICAgICAgICAgIG1fZGlzcGxh eS0+aGFuZGxlV2luZG93RGVhY3RpdmF0ZWQob2xkRm9jdXMpOworLSAgICB9CistfQorLQorIH0K KyAKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5z L3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbl9w LmggYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdh eWxhbmR4ZGdzaGVsbGludGVncmF0aW9uX3AuaAoraW5kZXggYjZjYWE2YzkuLjJmOTI5Zjk4IDEw MDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNo ZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMv cGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdy YXRpb25fcC5oCitAQCAtNjUsNyArNjUsNiBAQCBwdWJsaWM6CisgICAgIFFXYXlsYW5kWGRnU2hl bGxJbnRlZ3JhdGlvbigpIHt9CisgICAgIGJvb2wgaW5pdGlhbGl6ZShRV2F5bGFuZERpc3BsYXkg KmRpc3BsYXkpIG92ZXJyaWRlOworICAgICBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqY3JlYXRlU2hl bGxTdXJmYWNlKFFXYXlsYW5kV2luZG93ICp3aW5kb3cpIG92ZXJyaWRlOworLSAgICB2b2lkIGhh bmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2luZG93ICpuZXdGb2N1cywgUVdheWxh bmRXaW5kb3cgKm9sZEZvY3VzKSBvdmVycmlkZTsKKyAKKyBwcml2YXRlOgorICAgICBRU2NvcGVk UG9pbnRlcjxRV2F5bGFuZFhkZ1NoZWxsPiBtX3hkZ1NoZWxsOworZGlmZiAtLWdpdCBhL3F0d2F5 bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kaW5wdXRtZXRob2RldmVudGJ1aWxkZXIuY3BwIGIvcXR3 YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRpbnB1dG1ldGhvZGV2ZW50YnVpbGRlci5jcHAKK2lu ZGV4IDUyNmQwZWY0Li5mNTBjY2YzMCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvc2hhcmVk L3F3YXlsYW5kaW5wdXRtZXRob2RldmVudGJ1aWxkZXIuY3BwCisrKysgYi9xdHdheWxhbmQvc3Jj L3NoYXJlZC9xd2F5bGFuZGlucHV0bWV0aG9kZXZlbnRidWlsZGVyLmNwcAorQEAgLTM5LDcgKzM5 LDEwIEBACisgCisgI2luY2x1ZGUgInF3YXlsYW5kaW5wdXRtZXRob2RldmVudGJ1aWxkZXJfcC5o IgorIAorKyNpbmNsdWRlIDxRQnJ1c2g+CisrI2luY2x1ZGUgPFFHdWlBcHBsaWNhdGlvbj4KKyAj aW5jbHVkZSA8UUlucHV0TWV0aG9kPgorKyNpbmNsdWRlIDxRUGFsZXR0ZT4KKyAjaW5jbHVkZSA8 UVRleHRDaGFyRm9ybWF0PgorIAorICNpZmRlZiBRVF9CVUlMRF9XQVlMQU5EQ09NUE9TSVRPUl9M SUIKK0BAIC04MSwzMiArODQsMzggQEAgdm9pZCBRV2F5bGFuZElucHV0TWV0aG9kRXZlbnRCdWls ZGVyOjphZGRQcmVlZGl0U3R5bGluZyh1aW50MzJfdCBpbmRleCwgdWludDMyX3QKKyAgICAgUVRl eHRDaGFyRm9ybWF0IGZvcm1hdDsKKyAKKyAgICAgc3dpdGNoIChzdHlsZSkgeworLSAgICBjYXNl IDA6CistICAgIGNhc2UgMToKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NU WUxFX05PTkU6CisrICAgICAgICBicmVhazsKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9Q UkVFRElUX1NUWUxFX0RFRkFVTFQ6CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJ VF9TVFlMRV9VTkRFUkxJTkU6CisgICAgICAgICBmb3JtYXQuc2V0Rm9udFVuZGVybGluZSh0cnVl KTsKKyAgICAgICAgIGZvcm1hdC5zZXRVbmRlcmxpbmVTdHlsZShRVGV4dENoYXJGb3JtYXQ6OlNp bmdsZVVuZGVybGluZSk7CisgICAgICAgICBtX3ByZWVkaXRTdHlsZXMuYXBwZW5kKFFJbnB1dE1l dGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZlbnQ6OlRleHRGb3JtYXQsIGluZGV4 LCBsZW5ndGgsIGZvcm1hdCkpOworICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgMjoKKy0gICAg Y2FzZSAzOgorKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfQUNUSVZF OgorKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BSRUVESVRfU1RZTEVfSU5BQ1RJVkU6Cisg ICAgICAgICBmb3JtYXQuc2V0Rm9udFdlaWdodChRRm9udDo6Qm9sZCk7CisgICAgICAgICBmb3Jt YXQuc2V0Rm9udFVuZGVybGluZSh0cnVlKTsKKyAgICAgICAgIGZvcm1hdC5zZXRVbmRlcmxpbmVT dHlsZShRVGV4dENoYXJGb3JtYXQ6OlNpbmdsZVVuZGVybGluZSk7CisgICAgICAgICBtX3ByZWVk aXRTdHlsZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9k RXZlbnQ6OlRleHRGb3JtYXQsIGluZGV4LCBsZW5ndGgsIGZvcm1hdCkpOworICAgICAgICAgYnJl YWs7CistICAgIGNhc2UgNDoKKy0gICAgICAgIGZvcm1hdC5zZXRGb250VW5kZXJsaW5lKHRydWUp OworLSAgICAgICAgZm9ybWF0LnNldFVuZGVybGluZVN0eWxlKFFUZXh0Q2hhckZvcm1hdDo6U2lu Z2xlVW5kZXJsaW5lKTsKKy0gICAgICAgIG1fcHJlZWRpdFN0eWxlcy5hcHBlbmQoUUlucHV0TWV0 aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6VGV4dEZvcm1hdCwgaW5kZXgs IGxlbmd0aCwgZm9ybWF0KSk7CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9T VFlMRV9ISUdITElHSFQ6CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlM RV9TRUxFQ1RJT046CisrICAgICAgICB7CisrICAgICAgICAgICAgZm9ybWF0LnNldEZvbnRVbmRl cmxpbmUodHJ1ZSk7CisrICAgICAgICAgICAgZm9ybWF0LnNldFVuZGVybGluZVN0eWxlKFFUZXh0 Q2hhckZvcm1hdDo6U2luZ2xlVW5kZXJsaW5lKTsKKysgICAgICAgICAgICBRUGFsZXR0ZSBwYWxl dHRlID0gcUFwcC0+cGFsZXR0ZSgpOworKyAgICAgICAgICAgIGZvcm1hdC5zZXRCYWNrZ3JvdW5k KFFCcnVzaChwYWxldHRlLmNvbG9yKFFQYWxldHRlOjpBY3RpdmUsIFFQYWxldHRlOjpIaWdobGln aHQpKSk7CisrICAgICAgICAgICAgZm9ybWF0LnNldEZvcmVncm91bmQoUUJydXNoKHBhbGV0dGUu Y29sb3IoUVBhbGV0dGU6OkFjdGl2ZSwgUVBhbGV0dGU6OkhpZ2hsaWdodGVkVGV4dCkpKTsKKysg ICAgICAgICAgICBtX3ByZWVkaXRTdHlsZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRy aWJ1dGUoUUlucHV0TWV0aG9kRXZlbnQ6OlRleHRGb3JtYXQsIGluZGV4LCBsZW5ndGgsIGZvcm1h dCkpOworKyAgICAgICAgfQorICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgNToKKysgICAgY2Fz ZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX0lOQ09SUkVDVDoKKyAgICAgICAgIGZv cm1hdC5zZXRGb250VW5kZXJsaW5lKHRydWUpOworICAgICAgICAgZm9ybWF0LnNldFVuZGVybGlu ZVN0eWxlKFFUZXh0Q2hhckZvcm1hdDo6V2F2ZVVuZGVybGluZSk7CisgICAgICAgICBmb3JtYXQu c2V0VW5kZXJsaW5lQ29sb3IoUUNvbG9yKFF0OjpyZWQpKTsKKyAgICAgICAgIG1fcHJlZWRpdFN0 eWxlcy5hcHBlbmQoUUlucHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVu dDo6VGV4dEZvcm1hdCwgaW5kZXgsIGxlbmd0aCwgZm9ybWF0KSk7CisgICAgICAgICBicmVhazsK Ky0vLyAgICBjYXNlIFF0V2F5bGFuZDo6d2xfdGV4dF9pbnB1dDo6cHJlZWRpdF9zdHlsZV9zZWxl Y3Rpb246CistLy8gICAgY2FzZSBRdFdheWxhbmQ6OndsX3RleHRfaW5wdXQ6OnByZWVkaXRfc3R5 bGVfbm9uZToKKyAgICAgZGVmYXVsdDoKKyAgICAgICAgIGJyZWFrOworICAgICB9CitAQCAtMTUz LDcgKzE2Miw3IEBAIFFJbnB1dE1ldGhvZEV2ZW50IFFXYXlsYW5kSW5wdXRNZXRob2RFdmVudEJ1 aWxkZXI6OmJ1aWxkUHJlZWRpdChjb25zdCBRU3RyaW5nICZ0CisgCisgICAgIGlmIChtX3ByZWVk aXRDdXJzb3IgPCAwKSB7CisgICAgICAgICBhdHRyaWJ1dGVzLmFwcGVuZChRSW5wdXRNZXRob2RF dmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpDdXJzb3IsIDAsIDAsIFFWYXJpYW50 KCkpKTsKKy0gICAgfSBlbHNlIGlmIChtX3ByZWVkaXRDdXJzb3IgPiAwKSB7CisrICAgIH0gZWxz ZSB7CisgICAgICAgICBhdHRyaWJ1dGVzLmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0cmli dXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpDdXJzb3IsIGluZGV4RnJvbVdheWxhbmQodGV4dCwgbV9w cmVlZGl0Q3Vyc29yKSwgMSwgUVZhcmlhbnQoKSkpOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEv cXR3YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRtaW1laGVscGVyLmNwcCBiL3F0d2F5bGFuZC9z cmMvc2hhcmVkL3F3YXlsYW5kbWltZWhlbHBlci5jcHAKK2luZGV4IGE1ZmRkMzRkLi5lMmZlMTky OCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kbWltZWhlbHBlci5j cHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kbWltZWhlbHBlci5jcHAKK0BA IC02MCw3ICs2MCw3IEBAIFFCeXRlQXJyYXkgUVdheWxhbmRNaW1lSGVscGVyOjpnZXRCeXRlQXJy YXkoUU1pbWVEYXRhICptaW1lRGF0YSwgY29uc3QgUVN0cmluZyAmCisgICAgICAgICAgICAgYnVm Lm9wZW4oUUlPRGV2aWNlOjpSZWFkV3JpdGUpOworICAgICAgICAgICAgIFFCeXRlQXJyYXkgZm10 ID0gIkJNUCI7CisgICAgICAgICAgICAgaWYgKG1pbWVUeXBlLnN0YXJ0c1dpdGgoUUxhdGluMVN0 cmluZygiaW1hZ2UvIikpKSB7CistICAgICAgICAgICAgICAgIFFCeXRlQXJyYXkgaW1nRm10ID0g bWltZVR5cGUubWlkKDYpLnRvVXBwZXIoKS50b0xhdGluMSgpOworKyAgICAgICAgICAgICAgICBR Qnl0ZUFycmF5IGltZ0ZtdCA9IG1pbWVUeXBlLm1pZCg2KS50b0xvd2VyKCkudG9MYXRpbjEoKTsK KyAgICAgICAgICAgICAgICAgaWYgKFFJbWFnZVdyaXRlcjo6c3VwcG9ydGVkSW1hZ2VGb3JtYXRz KCkuY29udGFpbnMoaW1nRm10KSkKKyAgICAgICAgICAgICAgICAgICAgIGZtdCA9IGltZ0ZtdDsK KyAgICAgICAgICAgICB9CitAQCAtNzQsNyArNzQsNyBAQCBRQnl0ZUFycmF5IFFXYXlsYW5kTWlt ZUhlbHBlcjo6Z2V0Qnl0ZUFycmF5KFFNaW1lRGF0YSAqbWltZURhdGEsIGNvbnN0IFFTdHJpbmcg JgorICAgICAgICAgUUxpc3Q8UVVybD4gdXJscyA9IG1pbWVEYXRhLT51cmxzKCk7CisgICAgICAg ICBmb3IgKGludCBpID0gMDsgaSA8IHVybHMuY291bnQoKTsgKytpKSB7CisgICAgICAgICAgICAg Y29udGVudC5hcHBlbmQodXJscy5hdChpKS50b0VuY29kZWQoKSk7CistICAgICAgICAgICAgY29u dGVudC5hcHBlbmQoJ1xuJyk7CisrICAgICAgICAgICAgY29udGVudC5hcHBlbmQoIlxyXG4iKTsK KyAgICAgICAgIH0KKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIGNvbnRlbnQgPSBtaW1lRGF0YS0+ ZGF0YShtaW1lVHlwZSk7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50 L2RhdGFkZXZpY2V2MS90c3RfZGF0YWRldmljZXYxLmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRv L2NsaWVudC9kYXRhZGV2aWNldjEvdHN0X2RhdGFkZXZpY2V2MS5jcHAKK2luZGV4IDE1NjhiM2I5 Li4wNjc0MTBkMCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9kYXRh ZGV2aWNldjEvdHN0X2RhdGFkZXZpY2V2MS5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRv L2NsaWVudC9kYXRhZGV2aWNldjEvdHN0X2RhdGFkZXZpY2V2MS5jcHAKK0BAIC0zNSw3ICszNSw3 IEBACisgCisgdXNpbmcgbmFtZXNwYWNlIE1vY2tDb21wb3NpdG9yOworIAorLWNvbnN0ZXhwciBp bnQgZGF0YURldmljZVZlcnNpb24gPSAxOworK2NvbnN0ZXhwciBpbnQgZGF0YURldmljZVZlcnNp b24gPSAzOworIAorIGNsYXNzIERhdGFEZXZpY2VDb21wb3NpdG9yIDogcHVibGljIERlZmF1bHRD b21wb3NpdG9yIHsKKyBwdWJsaWM6CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8v Y2xpZW50L3NlYXR2NS90c3Rfc2VhdHY1LmNwcCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVu dC9zZWF0djUvdHN0X3NlYXR2NS5jcHAKK2luZGV4IDkzMTJjMmU1Li4yZWEzODJmMSAxMDA2NDQK Ky0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zZWF0djUvdHN0X3NlYXR2NS5jcHAK KysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zZWF0djUvdHN0X3NlYXR2NS5jcHAK K0BAIC03Myw2ICs3Myw3IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgbXVsdGlUb3VjaCgp OworICAgICB2b2lkIG11bHRpVG91Y2hVcEFuZE1vdGlvbkZyYW1lKCk7CisgICAgIHZvaWQgdGFw QW5kTW92ZUluU2FtZUZyYW1lKCk7CisrICAgIHZvaWQgY2FuY2VsVG91Y2goKTsKKyB9OworIAor IHZvaWQgdHN0X3NlYXR2NTo6YmluZHNUb1NlYXQoKQorQEAgLTY0Niw1ICs2NDcsMzQgQEAgdm9p ZCB0c3Rfc2VhdHY1Ojp0YXBBbmRNb3ZlSW5TYW1lRnJhbWUoKQorICAgICBRVFJZX0NPTVBBUkUo d2luZG93Lm1fZXZlbnRzLmxhc3QoKS50b3VjaFBvaW50cy5maXJzdCgpLnN0YXRlKCksIFF0OjpU b3VjaFBvaW50U3RhdGU6OlRvdWNoUG9pbnRSZWxlYXNlZCk7CisgfQorIAorK3ZvaWQgdHN0X3Nl YXR2NTo6Y2FuY2VsVG91Y2goKQorK3sKKysgICAgVG91Y2hXaW5kb3cgd2luZG93OworKyAgICBR Q09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1N1cmZhY2UoKSAmJiB4ZGdTdXJmYWNlKCktPm1fY29t bWl0dGVkQ29uZmlndXJlU2VyaWFsKTsKKysKKysgICAgZXhlYyhbPV0geworKyAgICAgICAgYXV0 byAqdCA9IHRvdWNoKCk7CisrICAgICAgICBhdXRvICpjID0gY2xpZW50KCk7CisrICAgICAgICB0 LT5zZW5kRG93bih4ZGdUb3BsZXZlbCgpLT5zdXJmYWNlKCksIHszMiwgMzJ9LCAxKTsKKysgICAg ICAgIHQtPnNlbmRGcmFtZShjKTsKKysgICAgICAgIHQtPnNlbmRDYW5jZWwoYyk7CisrICAgICAg ICB0LT5zZW5kRnJhbWUoYyk7CisrICAgIH0pOworKworKyAgICBRVFJZX1ZFUklGWSghd2luZG93 Lm1fZXZlbnRzLmVtcHR5KCkpOworKyAgICB7CisrICAgICAgICBhdXRvIGUgPSB3aW5kb3cubV9l dmVudHMudGFrZUZpcnN0KCk7CisrICAgICAgICBRQ09NUEFSRShlLnR5cGUsIFFFdmVudDo6VG91 Y2hCZWdpbik7CisrICAgICAgICBRQ09NUEFSRShlLnRvdWNoUG9pbnRTdGF0ZXMsIFF0OjpUb3Vj aFBvaW50UHJlc3NlZCk7CisrICAgICAgICBRQ09NUEFSRShlLnRvdWNoUG9pbnRzLmxlbmd0aCgp LCAxKTsKKysgICAgICAgIFFDT01QQVJFKGUudG91Y2hQb2ludHMuZmlyc3QoKS5wb3MoKSwgUVBv aW50RigzMi13aW5kb3cuZnJhbWVNYXJnaW5zKCkubGVmdCgpLCAzMi13aW5kb3cuZnJhbWVNYXJn aW5zKCkudG9wKCkpKTsKKysgICAgfQorKyAgICB7CisrICAgICAgICBhdXRvIGUgPSB3aW5kb3cu bV9ldmVudHMudGFrZUZpcnN0KCk7CisrICAgICAgICBRQ09NUEFSRShlLnR5cGUsIFFFdmVudDo6 VG91Y2hDYW5jZWwpOworKyAgICAgICAgUUNPTVBBUkUoZS50b3VjaFBvaW50cy5sZW5ndGgoKSwg MCk7CisrICAgIH0KKyt9CisrCisgUUNPTVBPU0lUT1JfVEVTVF9NQUlOKHRzdF9zZWF0djUpCisg I2luY2x1ZGUgInRzdF9zZWF0djUubW9jIgorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9h dXRvL2NsaWVudC9zaGFyZWQvY29yZWNvbXBvc2l0b3IuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1 dG8vY2xpZW50L3NoYXJlZC9jb3JlY29tcG9zaXRvci5jcHAKK2luZGV4IDVjNmM4M2JhLi5mYTli NzY2MiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29y ZWNvbXBvc2l0b3IuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVk L2NvcmVjb21wb3NpdG9yLmNwcAorQEAgLTI3LDYgKzI3LDcgQEAKKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLworIAorICNpbmNsdWRlICJjb3JlY29tcG9zaXRvci5oIgorKyNpbmNsdWRlIDx0aHJlYWQ+ CisgCisgbmFtZXNwYWNlIE1vY2tDb21wb3NpdG9yIHsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxh bmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5jcHAgYi9xdHdheWxhbmQv dGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5jcHAKK2luZGV4IDBkOTg4NTIx Li5kMWEyZTdjYiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFy ZWQvY29yZXByb3RvY29sLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3No YXJlZC9jb3JlcHJvdG9jb2wuY3BwCitAQCAtNDUxLDYgKzQ1MSwxMyBAQCB2b2lkIFRvdWNoOjpz ZW5kRnJhbWUod2xfY2xpZW50ICpjbGllbnQpCisgICAgICAgICBzZW5kX2ZyYW1lKHItPmhhbmRs ZSk7CisgfQorIAorK3ZvaWQgVG91Y2g6OnNlbmRDYW5jZWwod2xfY2xpZW50ICpjbGllbnQpCisr eworKyAgICBjb25zdCBhdXRvIHRvdWNoUmVzb3VyY2VzID0gcmVzb3VyY2VNYXAoKS52YWx1ZXMo Y2xpZW50KTsKKysgICAgZm9yIChhdXRvICpyIDogdG91Y2hSZXNvdXJjZXMpCisrICAgICAgICBz ZW5kX2NhbmNlbChyLT5oYW5kbGUpOworK30KKysKKyB1aW50IEtleWJvYXJkOjpzZW5kRW50ZXIo U3VyZmFjZSAqc3VyZmFjZSkKKyB7CisgICAgIGF1dG8gc2VyaWFsID0gbV9zZWF0LT5tX2NvbXBv c2l0b3ItPm5leHRTZXJpYWwoKTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9j bGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5oIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50 L3NoYXJlZC9jb3JlcHJvdG9jb2wuaAoraW5kZXggYTFhZjEzN2EuLjIxMGQ4ZGRiIDEwMDY0NAor LS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuaAor KysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuaAor QEAgLTE1OCw3ICsxNTgsNyBAQCBjbGFzcyBXbENvbXBvc2l0b3IgOiBwdWJsaWMgR2xvYmFsLCBw dWJsaWMgUXRXYXlsYW5kU2VydmVyOjp3bF9jb21wb3NpdG9yCisgeworICAgICBRX09CSkVDVAor IHB1YmxpYzoKKy0gICAgZXhwbGljaXQgV2xDb21wb3NpdG9yKENvcmVDb21wb3NpdG9yICpjb21w b3NpdG9yLCBpbnQgdmVyc2lvbiA9IDMpCisrICAgIGV4cGxpY2l0IFdsQ29tcG9zaXRvcihDb3Jl Q29tcG9zaXRvciAqY29tcG9zaXRvciwgaW50IHZlcnNpb24gPSA0KQorICAgICAgICAgOiBRdFdh eWxhbmRTZXJ2ZXI6OndsX2NvbXBvc2l0b3IoY29tcG9zaXRvci0+bV9kaXNwbGF5LCB2ZXJzaW9u KQorICAgICAgICAgLCBtX2NvbXBvc2l0b3IoY29tcG9zaXRvcikKKyAgICAge30KK0BAIC0zNjQs NiArMzY0LDcgQEAgcHVibGljOgorICAgICB1aW50IHNlbmRVcCh3bF9jbGllbnQgKmNsaWVudCwg aW50IGlkKTsKKyAgICAgdm9pZCBzZW5kTW90aW9uKHdsX2NsaWVudCAqY2xpZW50LCBjb25zdCBR UG9pbnRGICZwb3NpdGlvbiwgaW50IGlkKTsKKyAgICAgdm9pZCBzZW5kRnJhbWUod2xfY2xpZW50 ICpjbGllbnQpOworKyAgICB2b2lkIHNlbmRDYW5jZWwod2xfY2xpZW50ICpjbGllbnQpOworIAor ICAgICBTZWF0ICptX3NlYXQgPSBudWxscHRyOworIH07CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5k L3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja2NvbXBvc2l0b3IuY3BwIGIvcXR3YXls YW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja2NvbXBvc2l0b3IuY3BwCitpbmRl eCBhNDE1Y2JmNS4uYjFkM2QwN2QgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9j bGllbnQvc2hhcmVkX29sZC9tb2NrY29tcG9zaXRvci5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0 cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tjb21wb3NpdG9yLmNwcAorQEAgLTM0Miw3ICsz NDIsNyBAQCBDb21wb3NpdG9yOjpDb21wb3NpdG9yKE1vY2tDb21wb3NpdG9yICptb2NrQ29tcG9z aXRvcikKKyAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgICAgfQorIAorLSAgICB3bF9n bG9iYWxfY3JlYXRlKG1fZGlzcGxheSwgJndsX2NvbXBvc2l0b3JfaW50ZXJmYWNlLCAxLCB0aGlz LCBiaW5kQ29tcG9zaXRvcik7CisrICAgIHdsX2dsb2JhbF9jcmVhdGUobV9kaXNwbGF5LCAmd2xf Y29tcG9zaXRvcl9pbnRlcmZhY2UsIDQsIHRoaXMsIGJpbmRDb21wb3NpdG9yKTsKKyAKKyAgICAg bV9kYXRhX2RldmljZV9tYW5hZ2VyLnJlc2V0KG5ldyBEYXRhRGV2aWNlTWFuYWdlcih0aGlzLCBt X2Rpc3BsYXkpKTsKKyAKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQv c2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQv c2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5jcHAKK2luZGV4IGU5ZGY1ZjkwLi5jMzI0NmU0YSAxMDA2 NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJm YWNlLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9j a3N1cmZhY2UuY3BwCitAQCAtMTI1LDYgKzEyNSwxNiBAQCB2b2lkIFN1cmZhY2U6OnN1cmZhY2Vf ZGFtYWdlKFJlc291cmNlICpyZXNvdXJjZSwKKyAgICAgUV9VTlVTRUQoaGVpZ2h0KTsKKyB9Cisg Cisrdm9pZCBTdXJmYWNlOjpzdXJmYWNlX2RhbWFnZV9idWZmZXIoUmVzb3VyY2UgKnJlc291cmNl LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgeCwgaW50MzJf dCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkKKyt7CisrICAgIFFfVU5VU0VEKHJl c291cmNlKTsKKysgICAgUV9VTlVTRUQoeCk7CisrICAgIFFfVU5VU0VEKHkpOworKyAgICBRX1VO VVNFRCh3aWR0aCk7CisrICAgIFFfVU5VU0VEKGhlaWdodCk7CisrfQorKworIHZvaWQgU3VyZmFj ZTo6c3VyZmFjZV9mcmFtZShSZXNvdXJjZSAqcmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQzMl90IGNhbGxiYWNrKQorIHsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQv dGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2Nrc3VyZmFjZS5oIGIvcXR3YXlsYW5kL3Rl c3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuaAoraW5kZXggOTQ5ZGMyM2Qu LmQxNzY4MzdlIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJl ZF9vbGQvbW9ja3N1cmZhY2UuaAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3No YXJlZF9vbGQvbW9ja3N1cmZhY2UuaAorQEAgLTY1LDYgKzY1LDggQEAgcHJvdGVjdGVkOgorICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB3bF9yZXNvdXJjZSAqYnVmZmVyLCBpbnQgeCwg aW50IHkpIG92ZXJyaWRlOworICAgICB2b2lkIHN1cmZhY2VfZGFtYWdlKFJlc291cmNlICpyZXNv dXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50 MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpIG92ZXJyaWRlOworKyAgICB2b2lkIHN1cmZhY2Vf ZGFtYWdlX2J1ZmZlcihSZXNvdXJjZSAqcmVzb3VyY2UsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludDMyX3QgeCwgaW50MzJfdCB5LCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhl aWdodCkgb3ZlcnJpZGU7CisgICAgIHZvaWQgc3VyZmFjZV9mcmFtZShSZXNvdXJjZSAqcmVzb3Vy Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBjYWxsYmFjaykgb3ZlcnJpZGU7 CisgICAgIHZvaWQgc3VyZmFjZV9jb21taXQoUmVzb3VyY2UgKnJlc291cmNlKSBvdmVycmlkZTsK K2RpZmYgLS1naXQgYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc3VyZmFjZS90c3Rfc3Vy ZmFjZS5jcHAgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc3VyZmFjZS90c3Rfc3VyZmFj ZS5jcHAKK2luZGV4IDk1ZTRlNjA5Li42MGM2NzJjZSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90 ZXN0cy9hdXRvL2NsaWVudC9zdXJmYWNlL3RzdF9zdXJmYWNlLmNwcAorKysrIGIvcXR3YXlsYW5k L3Rlc3RzL2F1dG8vY2xpZW50L3N1cmZhY2UvdHN0X3N1cmZhY2UuY3BwCitAQCAtMTI5LDYgKzEy OSwxMCBAQCB2b2lkIHRzdF9zdXJmYWNlOjp3YWl0Rm9yRnJhbWVDYWxsYmFja0dsKCkKKyAgICAg Ly8gTWFrZSBzdXJlIHdlIGZvbGxvdyBmcmFtZSBjYWxsYmFja3MgZm9yIHNvbWUgZnJhbWVzCisg ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgKytpKSB7CisgICAgICAgICB4ZGdQaW5nQW5kV2Fp dEZvclBvbmcoKTsgLy8gTWFrZSBzdXJlIHRoaW5ncyBoYXZlIGhhcHBlbmVkIG9uIHRoZSBjbGll bnQKKysgICAgICAgIGlmICghcUVudmlyb25tZW50VmFyaWFibGVJbnRWYWx1ZSgiUVRfV0FZTEFO RF9ESVNBQkxFX1dJTkRPV0RFQ09SQVRJT04iKSAmJiBpID09IDApIHsKKysgICAgICAgICAgICBR Q09NUEFSRShidWZmZXJTcHkuY291bnQoKSwgMSk7CisrICAgICAgICAgICAgYnVmZmVyU3B5LnJl bW92ZUZpcnN0KCk7CisrICAgICAgICB9CisgICAgICAgICBleGVjKFsmXSB7CisgICAgICAgICAg ICAgUVZFUklGWShidWZmZXJTcHkuZW1wdHkoKSk7IC8vIE1ha2Ugc3VyZSBubyBleHRyYSBidWZm ZXJzIGhhdmUgYXJyaXZlZAorICAgICAgICAgICAgIFFWRVJJRlkoIXhkZ1RvcGxldmVsKCktPnN1 cmZhY2UoKS0+bV93YWl0aW5nRnJhbWVDYWxsYmFja3MuZW1wdHkoKSk7CitkaWZmIC0tZ2l0IGEv cXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3hkZ3NoZWxsL3RzdF94ZGdzaGVsbC5jcHAgYi9x dHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQveGRnc2hlbGwvdHN0X3hkZ3NoZWxsLmNwcAoraW5k ZXggMjI3N2JiYjguLjc0Nzg3NWI0IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8v Y2xpZW50L3hkZ3NoZWxsL3RzdF94ZGdzaGVsbC5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9h dXRvL2NsaWVudC94ZGdzaGVsbC90c3RfeGRnc2hlbGwuY3BwCitAQCAtMzEsNiArMzEsNyBAQAor ICNpbmNsdWRlIDxRdEd1aS9RT3BlbkdMV2luZG93PgorICNpbmNsdWRlIDxRdEd1aS9xcGEvcXBs YXRmb3JtbmF0aXZlaW50ZXJmYWNlLmg+CisgI2luY2x1ZGUgPFF0V2F5bGFuZENsaWVudC9wcml2 YXRlL3dheWxhbmQtd2F5bGFuZC1jbGllbnQtcHJvdG9jb2wuaD4KKysjaW5jbHVkZSA8UXRXYXls YW5kQ2xpZW50L3ByaXZhdGUvcXdheWxhbmR3aW5kb3dfcC5oPgorIAorIHVzaW5nIG5hbWVzcGFj ZSBNb2NrQ29tcG9zaXRvcjsKKyAKK0BAIC00NSw2ICs0Niw3IEBAIHByaXZhdGUgc2xvdHM6Cisg ICAgIHZvaWQgY29uZmlndXJlU3RhdGVzKCk7CisgICAgIHZvaWQgcG9wdXAoKTsKKyAgICAgdm9p ZCB0b29sdGlwT25Qb3B1cCgpOworKyAgICB2b2lkIHRvb2x0aXBBbmRTaWJsaW5nUG9wdXAoKTsK KyAgICAgdm9pZCBzd2l0Y2hQb3B1cHMoKTsKKyAgICAgdm9pZCBoaWRlUG9wdXBQYXJlbnQoKTsK KyAgICAgdm9pZCBwb25ncygpOworQEAgLTEzOCw2ICsxNDAsNyBAQCB2b2lkIHRzdF94ZGdzaGVs bDo6Y29uZmlndXJlU2l6ZSgpCisgCisgdm9pZCB0c3RfeGRnc2hlbGw6OmNvbmZpZ3VyZVN0YXRl cygpCisgeworKyAgICBRVkVSSUZZKHFwdXRlbnYoIlFUX1dBWUxBTkRfRlJBTUVfQ0FMTEJBQ0tf VElNRU9VVCIsICIwIikpOworICAgICBRUmFzdGVyV2luZG93IHdpbmRvdzsKKyAgICAgd2luZG93 LnJlc2l6ZSg2NCwgNDgpOworICAgICB3aW5kb3cuc2hvdygpOworQEAgLTE1NCw5ICsxNTcsMTIg QEAgdm9pZCB0c3RfeGRnc2hlbGw6OmNvbmZpZ3VyZVN0YXRlcygpCisgICAgIC8vIFRvcGxldmVs IHdpbmRvd3MgZG9uJ3Qga25vdyB0aGVpciBwb3NpdGlvbiBvbiB4ZGctc2hlbGwKKyAvLyAgICBR Q09NUEFSRSh3aW5kb3cuZnJhbWVHZW9tZXRyeSgpLnRvcExlZnQoKSwgUVBvaW50KCkpOyAvLyBU T0RPOiB0aGlzIGRvZXNuJ3QgY3VycmVudGx5IHdvcmsgd2hlbiB3aW5kb3cgZGVjb3JhdGlvbnMg YXJlIGVuYWJsZWQKKyAKKy0vLyAgICBRRVhQRUNUX0ZBSUwoIiIsICJjb25maWd1cmUgaGFzIGFs cmVhZHkgYmVlbiBhY2tlZCwgd2Ugc2hvdWxkbid0IGhhdmUgdG8gd2FpdCBmb3IgaXNBY3RpdmUi LCBDb250aW51ZSk7CistLy8gICAgUVZFUklGWSh3aW5kb3cuaXNBY3RpdmUoKSk7CistICAgIFFU UllfVkVSSUZZKHdpbmRvdy5pc0FjdGl2ZSgpKTsgLy8gSnVzdCBtYWtlIHN1cmUgaXQgZXZlbnR1 YWxseSBnZXQncyBzZXQgY29ycmVjdGx5CisrICAgIC8vIHdpbmRvdy53aW5kb3dzdGF0ZSgpIGlz IGRyaXZlbiBieSBrZXlib2FyZCBmb2N1cywgaG93ZXZlciBmb3IgZGVjb3JhdGlvbnMgd2Ugd2Fu dCB0byBmb2xsb3cKKysgICAgLy8gWERHU2hlbGwgdGhpcyBpcyBpbnRlcm5hbCB0byBRdFdheWxh bmQgc28gaXQgaXMgcXVlcmllZCBkaXJlY3RseQorKyAgICBhdXRvIHdheWxhbmRXaW5kb3cgPSBz dGF0aWNfY2FzdDxRdFdheWxhbmRDbGllbnQ6OlFXYXlsYW5kV2luZG93ICo+KHdpbmRvdy5oYW5k bGUoKSk7CisrICAgIFFfQVNTRVJUKHdheWxhbmRXaW5kb3cpOworKyAgICBRVFJZX1ZFUklGWSh3 YXlsYW5kV2luZG93LT53aW5kb3dTdGF0ZXMoKS50ZXN0RmxhZygKKysgICAgICAgICAgICBRdDo6 V2luZG93QWN0aXZlKSk7IC8vIEp1c3QgbWFrZSBzdXJlIGl0IGV2ZW50dWFsbHkgZ2V0J3Mgc2V0 IGNvcnJlY3RseQorIAorICAgICBjb25zdCBRU2l6ZSBzY3JlZW5TaXplKDY0MCwgNDgwKTsKKyAg ICAgY29uc3QgdWludCBtYXhpbWl6ZWRTZXJpYWwgPSBleGVjKFs9XSB7CitAQCAtMTg2LDYgKzE5 Miw3IEBAIHZvaWQgdHN0X3hkZ3NoZWxsOjpjb25maWd1cmVTdGF0ZXMoKQorICAgICBRQ09NUEFS RSh3aW5kb3cud2luZG93U3RhdGVzKCksIFF0OjpXaW5kb3dOb1N0YXRlKTsKKyAgICAgUUNPTVBB UkUod2luZG93LmZyYW1lR2VvbWV0cnkoKS5zaXplKCksIHdpbmRvd2VkU2l6ZSk7CisgLy8gICAg UUNPTVBBUkUod2luZG93LmZyYW1lR2VvbWV0cnkoKS50b3BMZWZ0KCksIFFQb2ludCgpKTsgLy8g VE9ETzogdGhpcyBkb2Vzbid0IGN1cnJlbnRseSB3b3JrIHdoZW4gd2luZG93IGRlY29yYXRpb25z IGFyZSBlbmFibGVkCisrICAgIFFWRVJJRlkocXVuc2V0ZW52KCJRVF9XQVlMQU5EX0ZSQU1FX0NB TExCQUNLX1RJTUVPVVQiKSk7CisgfQorIAorIHZvaWQgdHN0X3hkZ3NoZWxsOjpwb3B1cCgpCitA QCAtMzQwLDYgKzM0Nyw5MiBAQCB2b2lkIHRzdF94ZGdzaGVsbDo6dG9vbHRpcE9uUG9wdXAoKQor ICAgICBRQ09NUE9TSVRPUl9UUllfQ09NUEFSRSh4ZGdQb3B1cCgwKSwgbnVsbHB0cik7CisgfQor IAorK3ZvaWQgdHN0X3hkZ3NoZWxsOjp0b29sdGlwQW5kU2libGluZ1BvcHVwKCkKKyt7CisrICAg IGNsYXNzIFRvb2xUaXAgOiBwdWJsaWMgUVJhc3RlcldpbmRvdyB7CisrICAgIHB1YmxpYzoKKysg ICAgICAgIGV4cGxpY2l0IFRvb2xUaXAoUVdpbmRvdyAqcGFyZW50KSB7CisrICAgICAgICAgICAg c2V0VHJhbnNpZW50UGFyZW50KHBhcmVudCk7CisrICAgICAgICAgICAgc2V0RmxhZ3MoUXQ6OlRv b2xUaXApOworKyAgICAgICAgICAgIHJlc2l6ZSgxMDAsIDEwMCk7CisrICAgICAgICAgICAgc2hv dygpOworKyAgICAgICAgfQorKyAgICAgICAgdm9pZCBtb3VzZVByZXNzRXZlbnQoUU1vdXNlRXZl bnQgKmV2ZW50KSBvdmVycmlkZSB7CisrICAgICAgICAgICAgUVJhc3RlcldpbmRvdzo6bW91c2VQ cmVzc0V2ZW50KGV2ZW50KTsKKysgICAgICAgICAgICBtX3BvcHVwID0gbmV3IFFSYXN0ZXJXaW5k b3c7CisrICAgICAgICAgICAgbV9wb3B1cC0+c2V0VHJhbnNpZW50UGFyZW50KHRyYW5zaWVudFBh cmVudCgpKTsKKysgICAgICAgICAgICBtX3BvcHVwLT5zZXRGbGFncyhRdDo6UG9wdXApOworKyAg ICAgICAgICAgIG1fcG9wdXAtPnJlc2l6ZSgxMDAsIDEwMCk7CisrICAgICAgICAgICAgbV9wb3B1 cC0+c2hvdygpOworKyAgICAgICAgfQorKworKyAgICAgICAgUVJhc3RlcldpbmRvdyAqbV9wb3B1 cCA9IG51bGxwdHI7CisrICAgIH07CisrCisrICAgIGNsYXNzIFdpbmRvdyA6IHB1YmxpYyBRUmFz dGVyV2luZG93IHsKKysgICAgcHVibGljOgorKyAgICAgICAgdm9pZCBtb3VzZVByZXNzRXZlbnQo UU1vdXNlRXZlbnQgKmV2ZW50KSBvdmVycmlkZSB7CisrICAgICAgICAgICAgUVJhc3RlcldpbmRv dzo6bW91c2VQcmVzc0V2ZW50KGV2ZW50KTsKKysgICAgICAgICAgICBtX3Rvb2x0aXAgPSBuZXcg VG9vbFRpcCh0aGlzKTsKKysgICAgICAgIH0KKysgICAgICAgIFRvb2xUaXAgKm1fdG9vbHRpcCA9 IG51bGxwdHI7CisrICAgIH07CisrCisrICAgIFdpbmRvdyB3aW5kb3c7CisrICAgIHdpbmRvdy5y ZXNpemUoMjAwLCAyMDApOworKyAgICB3aW5kb3cuc2hvdygpOworKworKyAgICBRQ09NUE9TSVRP Ul9UUllfVkVSSUZZKHhkZ1RvcGxldmVsKCkpOworKyAgICBleGVjKFs9XSB7IHhkZ1RvcGxldmVs KCktPnNlbmRDb21wbGV0ZUNvbmZpZ3VyZSgpOyB9KTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZF UklGWSh4ZGdUb3BsZXZlbCgpLT5tX3hkZ1N1cmZhY2UtPm1fY29tbWl0dGVkQ29uZmlndXJlU2Vy aWFsKTsKKysKKysgICAgZXhlYyhbPV0geworKyAgICAgICAgYXV0byAqc3VyZmFjZSA9IHhkZ1Rv cGxldmVsKCktPnN1cmZhY2UoKTsKKysgICAgICAgIGF1dG8gKnAgPSBwb2ludGVyKCk7CisrICAg ICAgICBhdXRvICpjID0gY2xpZW50KCk7CisrICAgICAgICBwLT5zZW5kRW50ZXIoc3VyZmFjZSwg ezEwMCwgMTAwfSk7CisrICAgICAgICBwLT5zZW5kRnJhbWUoYyk7CisrICAgICAgICBwLT5zZW5k QnV0dG9uKGNsaWVudCgpLCBCVE5fTEVGVCwgUG9pbnRlcjo6YnV0dG9uX3N0YXRlX3ByZXNzZWQp OworKyAgICAgICAgcC0+c2VuZEJ1dHRvbihjbGllbnQoKSwgQlROX0xFRlQsIFBvaW50ZXI6OmJ1 dHRvbl9zdGF0ZV9yZWxlYXNlZCk7CisrICAgICAgICBwLT5zZW5kRnJhbWUoYyk7CisrICAgICAg ICBwLT5zZW5kTGVhdmUoc3VyZmFjZSk7CisrICAgICAgICBwLT5zZW5kRnJhbWUoYyk7CisrICAg IH0pOworKworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKCkpOworKyAgICBl eGVjKFs9XSB7IHhkZ1BvcHVwKCktPnNlbmRDb21wbGV0ZUNvbmZpZ3VyZShRUmVjdCgxMDAsIDEw MCwgMTAwLCAxMDApKTsgfSk7CisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAo KS0+bV94ZGdTdXJmYWNlLT5tX2NvbW1pdHRlZENvbmZpZ3VyZVNlcmlhbCk7CisrICAgIFFDT01Q T1NJVE9SX1RSWV9WRVJJRlkoIXhkZ1BvcHVwKCktPm1fZ3JhYmJlZCk7CisrCisrICAgIGV4ZWMo Wz1dIHsKKysgICAgICAgIGF1dG8gKnN1cmZhY2UgPSB4ZGdQb3B1cCgpLT5zdXJmYWNlKCk7Cisr ICAgICAgICBhdXRvICpwID0gcG9pbnRlcigpOworKyAgICAgICAgYXV0byAqYyA9IGNsaWVudCgp OworKyAgICAgICAgcC0+c2VuZEVudGVyKHN1cmZhY2UsIHsxMDAsIDEwMH0pOworKyAgICAgICAg cC0+c2VuZEZyYW1lKGMpOworKyAgICAgICAgcC0+c2VuZEJ1dHRvbihjbGllbnQoKSwgQlROX0xF RlQsIFBvaW50ZXI6OmJ1dHRvbl9zdGF0ZV9wcmVzc2VkKTsKKysgICAgICAgIHAtPnNlbmRCdXR0 b24oY2xpZW50KCksIEJUTl9MRUZULCBQb2ludGVyOjpidXR0b25fc3RhdGVfcmVsZWFzZWQpOwor KyAgICAgICAgcC0+c2VuZEZyYW1lKGMpOworKyAgICB9KTsKKysKKysgICAgUUNPTVBPU0lUT1Jf VFJZX1ZFUklGWSh4ZGdQb3B1cCgxKSk7CisrICAgIGV4ZWMoWz1dIHsgeGRnUG9wdXAoMSktPnNl bmRDb21wbGV0ZUNvbmZpZ3VyZShRUmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKTsgfSk7CisrICAg IFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoMSktPm1feGRnU3VyZmFjZS0+bV9jb21t aXR0ZWRDb25maWd1cmVTZXJpYWwpOworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1Bv cHVwKDEpLT5tX2dyYWJiZWQpOworKworKyAgICAvLyBDbG9zZSB0aGUgbWlkZGxlIHRvb2x0aXAg KGl0IHNob3VsZCBub3QgY2xvc2UgdGhlIHNpYmxpbmcgcG9wdXApCisrICAgIHdpbmRvdy5tX3Rv b2x0aXAtPmNsb3NlKCk7CisrCisrICAgIFFDT01QT1NJVE9SX1RSWV9DT01QQVJFKHhkZ1BvcHVw KDEpLCBudWxscHRyKTsKKysgICAgLy8gVmVyaWZ5IHRoZSByZW1haW5pbmcgeGRnIHN1cmZhY2Ug aXMgYSBncmFiIHBvcHVwLi4KKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgw KSk7CisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoMCktPm1fZ3JhYmJlZCk7 CisrCisrICAgIHdpbmRvdy5tX3Rvb2x0aXAtPm1fcG9wdXAtPmNsb3NlKCk7CisrICAgIFFDT01Q T1NJVE9SX1RSWV9DT01QQVJFKHhkZ1BvcHVwKDEpLCBudWxscHRyKTsKKysgICAgUUNPTVBPU0lU T1JfVFJZX0NPTVBBUkUoeGRnUG9wdXAoMCksIG51bGxwdHIpOworK30KKysKKyAvLyBRVEJVRy02 NTY4MAorIHZvaWQgdHN0X3hkZ3NoZWxsOjpzd2l0Y2hQb3B1cHMoKQorIHsKK0BAIC01MDUsNyAr NTk4LDcgQEAgdm9pZCB0c3RfeGRnc2hlbGw6Om1pbk1heFNpemUoKQorICAgICB3aW5kb3cuc2hv dygpOworICAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1RvcGxldmVsKCkpOworIAorLSAg ICBleGVjKFs9XSB7IHhkZ1RvcGxldmVsKCktPnNlbmRDb21wbGV0ZUNvbmZpZ3VyZSgpOyB9KTsK KysgICAgLy8gd2UgZG9uJ3Qgcm91bmR0cmlwIHdpdGggb3VyIGNvbmZpZ3VyYXRpb24gdGhlIGlu aXRpYWwgY29tbWl0IHNob3VsZCBiZSBjb3JyZWN0CisgCisgICAgIFFDT01QT1NJVE9SX1RSWV9D T01QQVJFKHhkZ1RvcGxldmVsKCktPm1fY29tbWl0dGVkLm1pblNpemUsIFFTaXplKDEwMCwgMTAw KSk7CisgICAgIFFDT01QT1NJVE9SX1RSWV9DT01QQVJFKHhkZ1RvcGxldmVsKCktPm1fY29tbWl0 dGVkLm1heFNpemUsIFFTaXplKDEwMDAsIDEwMDApKTsKK1N1Ym1vZHVsZSBxdHdlYmNoYW5uZWwg NjE4NDIyZWUuLmY4OTQ5NjU1OgorZGlmZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hh bm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hlci5jcHAgYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5u ZWwvcW1ldGFvYmplY3RwdWJsaXNoZXIuY3BwCitpbmRleCA1MzZlYjVjLi44OThkNzY5IDEwMDY0 NAorLS0tIGEvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVy LmNwcAorKysrIGIvcXR3ZWJjaGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlz aGVyLmNwcAorQEAgLTE4Niw4ICsxODYsNiBAQCBRX0RFQ0xBUkVfVFlQRUlORk8oT3ZlcmxvYWRS ZXNvbHV0aW9uQ2FuZGlkYXRlLCBRX01PVkFCTEVfVFlQRSk7CisgUU1ldGFPYmplY3RQdWJsaXNo ZXI6OlFNZXRhT2JqZWN0UHVibGlzaGVyKFFXZWJDaGFubmVsICp3ZWJDaGFubmVsKQorICAgICA6 IFFPYmplY3Qod2ViQ2hhbm5lbCkKKyAgICAgLCB3ZWJDaGFubmVsKHdlYkNoYW5uZWwpCistICAg ICwgc2lnbmFsSGFuZGxlcih0aGlzKQorLSAgICAsIGNsaWVudElzSWRsZShmYWxzZSkKKyAgICAg LCBibG9ja1VwZGF0ZXMoZmFsc2UpCisgICAgICwgcHJvcGVydHlVcGRhdGVzSW5pdGlhbGl6ZWQo ZmFsc2UpCisgeworQEAgLTMwMSwxNyArMjk5LDE3IEBAIFFKc29uT2JqZWN0IFFNZXRhT2JqZWN0 UHVibGlzaGVyOjpjbGFzc0luZm9Gb3JPYmplY3QoY29uc3QgUU9iamVjdCAqb2JqZWN0LCBRV2Vi CisgICAgIHJldHVybiBkYXRhOworIH0KKyAKKy12b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpz ZXRDbGllbnRJc0lkbGUoYm9vbCBpc0lkbGUpCisrdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6 c2V0Q2xpZW50SXNJZGxlKGJvb2wgaXNJZGxlLCBRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0 ICp0cmFuc3BvcnQpCisgeworLSAgICBpZiAoY2xpZW50SXNJZGxlID09IGlzSWRsZSkgeworLSAg ICAgICAgcmV0dXJuOworLSAgICB9CistICAgIGNsaWVudElzSWRsZSA9IGlzSWRsZTsKKy0gICAg aWYgKCFpc0lkbGUgJiYgdGltZXIuaXNBY3RpdmUoKSkgeworLSAgICAgICAgdGltZXIuc3RvcCgp OworLSAgICB9IGVsc2UgaWYgKGlzSWRsZSAmJiAhdGltZXIuaXNBY3RpdmUoKSkgeworLSAgICAg ICAgdGltZXIuc3RhcnQoUFJPUEVSVFlfVVBEQVRFX0lOVEVSVkFMLCB0aGlzKTsKKy0gICAgfQor KyAgICB0cmFuc3BvcnRTdGF0ZVt0cmFuc3BvcnRdLmNsaWVudElzSWRsZSA9IGlzSWRsZTsKKysg ICAgaWYgKGlzSWRsZSkKKysgICAgICAgIHNlbmRFbnF1ZXVlZFByb3BlcnR5VXBkYXRlcyh0cmFu c3BvcnQpOworK30KKysKKytib29sIFFNZXRhT2JqZWN0UHVibGlzaGVyOjppc0NsaWVudElkbGUo UVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KQorK3sKKysgICAgYXV0byBm b3VuZCA9IHRyYW5zcG9ydFN0YXRlLmZpbmQodHJhbnNwb3J0KTsKKysgICAgcmV0dXJuIGZvdW5k ICE9IHRyYW5zcG9ydFN0YXRlLmVuZCgpICYmIGZvdW5kLnZhbHVlKCkuY2xpZW50SXNJZGxlOwor IH0KKyAKKyBRSnNvbk9iamVjdCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aW5pdGlhbGl6ZUNsaWVu dChRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpCitAQCAtMzMzLDYgKzMz MSw3IEBAIFFKc29uT2JqZWN0IFFNZXRhT2JqZWN0UHVibGlzaGVyOjppbml0aWFsaXplQ2xpZW50 KFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQKKyAKKyB2b2lkIFFNZXRhT2JqZWN0UHVibGlz aGVyOjppbml0aWFsaXplUHJvcGVydHlVcGRhdGVzKGNvbnN0IFFPYmplY3QgKmNvbnN0IG9iamVj dCwgY29uc3QgUUpzb25PYmplY3QgJm9iamVjdEluZm8pCisgeworKyAgICBhdXRvICpzaWduYWxI YW5kbGVyID0gc2lnbmFsSGFuZGxlckZvcihvYmplY3QpOworICAgICBmb3JlYWNoIChjb25zdCBR SnNvblZhbHVlICZwcm9wZXJ0eUluZm9WYXIsIG9iamVjdEluZm9bS0VZX1BST1BFUlRJRVNdLnRv QXJyYXkoKSkgeworICAgICAgICAgY29uc3QgUUpzb25BcnJheSAmcHJvcGVydHlJbmZvID0gcHJv cGVydHlJbmZvVmFyLnRvQXJyYXkoKTsKKyAgICAgICAgIGlmIChwcm9wZXJ0eUluZm8uc2l6ZSgp IDwgMikgeworQEAgLTM1MywxOSArMzUyLDE5IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6 OmluaXRpYWxpemVQcm9wZXJ0eVVwZGF0ZXMoY29uc3QgUU9iamVjdCAqY29uc3Qgb2JqZWN0Cisg CisgICAgICAgICAvLyBPbmx5IGNvbm5lY3QgZm9yIGEgcHJvcGVydHkgdXBkYXRlIG9uY2UKKyAg ICAgICAgIGlmIChjb25uZWN0ZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKSkgeworLSAgICAgICAgICAg IHNpZ25hbEhhbmRsZXIuY29ubmVjdFRvKG9iamVjdCwgc2lnbmFsSW5kZXgpOworKyAgICAgICAg ICAgIHNpZ25hbEhhbmRsZXItPmNvbm5lY3RUbyhvYmplY3QsIHNpZ25hbEluZGV4KTsKKyAgICAg ICAgIH0KKyAKKyAgICAgICAgIGNvbm5lY3RlZFByb3BlcnRpZXMuaW5zZXJ0KHByb3BlcnR5SW5k ZXgpOworICAgICB9CisgCisgICAgIC8vIGFsc28gYWx3YXlzIGNvbm5lY3QgdG8gZGVzdHJveWVk IHNpZ25hbAorLSAgICBzaWduYWxIYW5kbGVyLmNvbm5lY3RUbyhvYmplY3QsIHNfZGVzdHJveWVk U2lnbmFsSW5kZXgpOworKyAgICBzaWduYWxIYW5kbGVyLT5jb25uZWN0VG8ob2JqZWN0LCBzX2Rl c3Ryb3llZFNpZ25hbEluZGV4KTsKKyB9CisgCisgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6 c2VuZFBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMoKQorIHsKKy0gICAgaWYgKGJsb2NrVXBkYXRlcyB8 fCAhY2xpZW50SXNJZGxlIHx8IHBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMuaXNFbXB0eSgpKSB7Cisr ICAgIGlmIChibG9ja1VwZGF0ZXMpIHsKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAorQEAg LTQxNSwxOCArNDE0LDE5IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNlbmRQZW5kaW5n UHJvcGVydHlVcGRhdGVzKCkKKyAKKyAgICAgLy8gZGF0YSBkb2VzIG5vdCBjb250YWluIHNwZWNp ZmljIHVwZGF0ZXMKKyAgICAgaWYgKCFkYXRhLmlzRW1wdHkoKSkgeworLSAgICAgICAgc2V0Q2xp ZW50SXNJZGxlKGZhbHNlKTsKKy0KKyAgICAgICAgIG1lc3NhZ2VbS0VZX0RBVEFdID0gZGF0YTsK Ky0gICAgICAgIGJyb2FkY2FzdE1lc3NhZ2UobWVzc2FnZSk7CisrICAgICAgICBlbnF1ZXVlQnJv YWRjYXN0TWVzc2FnZShtZXNzYWdlKTsKKyAgICAgfQorIAorICAgICAvLyBzZW5kIGV2ZXJ5IHBy b3BlcnR5IHVwZGF0ZSB3aGljaCBpcyBub3Qgc3VwcG9zZWQgdG8gYmUgYnJvYWRjYXN0ZWQKKyAg ICAgY29uc3QgUUhhc2g8UVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCosIFFKc29uQXJyYXk+ Ojpjb25zdF9pdGVyYXRvciBzdWVuZCA9IHNwZWNpZmljVXBkYXRlcy5jb25zdEVuZCgpOworICAg ICBmb3IgKFFIYXNoPFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQqLCBRSnNvbkFycmF5Pjo6 Y29uc3RfaXRlcmF0b3IgaXQgPSBzcGVjaWZpY1VwZGF0ZXMuY29uc3RCZWdpbigpOyBpdCAhPSBz dWVuZDsgKytpdCkgeworICAgICAgICAgbWVzc2FnZVtLRVlfREFUQV0gPSBpdC52YWx1ZSgpOwor LSAgICAgICAgaXQua2V5KCktPnNlbmRNZXNzYWdlKG1lc3NhZ2UpOworKyAgICAgICAgZW5xdWV1 ZU1lc3NhZ2UobWVzc2FnZSwgaXQua2V5KCkpOworICAgICB9CisrCisrICAgIGZvciAoYXV0byBz dGF0ZSA9IHRyYW5zcG9ydFN0YXRlLmJlZ2luKCk7IHN0YXRlICE9IHRyYW5zcG9ydFN0YXRlLmVu ZCgpOyArK3N0YXRlKQorKyAgICAgICAgc2VuZEVucXVldWVkUHJvcGVydHlVcGRhdGVzKHN0YXRl LmtleSgpKTsKKyB9CisgCisgUVZhcmlhbnQgUU1ldGFPYmplY3RQdWJsaXNoZXI6Omludm9rZU1l dGhvZChRT2JqZWN0ICpjb25zdCBvYmplY3QsIGNvbnN0IFFNZXRhTWV0aG9kICZtZXRob2QsCitA QCAtNTcyLDcgKzU3Miw3IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNpZ25hbEVtaXR0 ZWQoY29uc3QgUU9iamVjdCAqb2JqZWN0LCBjb25zdCBpbnQgc2lnbmFsCisgICAgICAgICB9Cisg ICAgIH0gZWxzZSB7CisgICAgICAgICBwZW5kaW5nUHJvcGVydHlVcGRhdGVzW29iamVjdF1bc2ln bmFsSW5kZXhdID0gYXJndW1lbnRzOworLSAgICAgICAgaWYgKGNsaWVudElzSWRsZSAmJiAhYmxv Y2tVcGRhdGVzICYmICF0aW1lci5pc0FjdGl2ZSgpKSB7CisrICAgICAgICBpZiAoIWJsb2NrVXBk YXRlcyAmJiAhdGltZXIuaXNBY3RpdmUoKSkgeworICAgICAgICAgICAgIHRpbWVyLnN0YXJ0KFBS T1BFUlRZX1VQREFURV9JTlRFUlZBTCwgdGhpcyk7CisgICAgICAgICB9CisgICAgIH0KK0BAIC01 OTAsNyArNTkwLDcgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6b2JqZWN0RGVzdHJveWVk KGNvbnN0IFFPYmplY3QgKm9iamVjdCkKKyAgICAgLy8gb25seSByZW1vdmUgZnJvbSBoYW5kbGVy IHdoZW4gd2UgaW5pdGlhbGl6ZWQgdGhlIHByb3BlcnR5IHVwZGF0ZXMKKyAgICAgLy8gY2Y6IGh0 dHBzOi8vYnVncmVwb3J0cy5xdC5pby9icm93c2UvUVRCVUctNjAyNTAKKyAgICAgaWYgKHByb3Bl cnR5VXBkYXRlc0luaXRpYWxpemVkKSB7CistICAgICAgICBzaWduYWxIYW5kbGVyLnJlbW92ZShv YmplY3QpOworKyAgICAgICAgc2lnbmFsSGFuZGxlckZvcihvYmplY3QpLT5yZW1vdmUob2JqZWN0 KTsKKyAgICAgICAgIHNpZ25hbFRvUHJvcGVydHlNYXAucmVtb3ZlKG9iamVjdCk7CisgICAgIH0K KyAgICAgcGVuZGluZ1Byb3BlcnR5VXBkYXRlcy5yZW1vdmUob2JqZWN0KTsKK0BAIC04NTIsNiAr ODUyLDUyIEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmJyb2FkY2FzdE1lc3NhZ2UoY29u c3QgUUpzb25PYmplY3QgJm1lc3NhZ2UpIGNvbnN0CisgICAgIH0KKyB9CisgCisrdm9pZCBRTWV0 YU9iamVjdFB1Ymxpc2hlcjo6ZW5xdWV1ZUJyb2FkY2FzdE1lc3NhZ2UoY29uc3QgUUpzb25PYmpl Y3QgJm1lc3NhZ2UpCisreworKyAgICBpZiAod2ViQ2hhbm5lbC0+ZF9mdW5jKCktPnRyYW5zcG9y dHMuaXNFbXB0eSgpKSB7CisrICAgICAgICBxV2FybmluZygiUVdlYkNoYW5uZWwgaXMgbm90IGNv bm5lY3RlZCB0byBhbnkgdHJhbnNwb3J0cywgY2Fubm90IHNlbmQgbWVzc2FnZTogJXMiLAorKyAg ICAgICAgICAgICAgICAgUUpzb25Eb2N1bWVudChtZXNzYWdlKS50b0pzb24oKS5jb25zdERhdGEo KSk7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysKKysgICAgZm9yIChhdXRvICp0cmFuc3Bv cnQgOiB3ZWJDaGFubmVsLT5kX2Z1bmMoKS0+dHJhbnNwb3J0cykgeworKyAgICAgICAgYXV0byAm c3RhdGUgPSB0cmFuc3BvcnRTdGF0ZVt0cmFuc3BvcnRdOworKyAgICAgICAgc3RhdGUucXVldWVk TWVzc2FnZXMuYXBwZW5kKG1lc3NhZ2UpOworKyAgICB9CisrfQorKworK3ZvaWQgUU1ldGFPYmpl Y3RQdWJsaXNoZXI6OmVucXVldWVNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFXZWJDaGFubmVsQWJz dHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCkKKyt7CisrICAgIGF1dG8gJnN0YXRlID0gdHJhbnNw b3J0U3RhdGVbdHJhbnNwb3J0XTsKKysgICAgc3RhdGUucXVldWVkTWVzc2FnZXMuYXBwZW5kKG1l c3NhZ2UpOworK30KKysKKyt2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZW5kRW5xdWV1ZWRQ cm9wZXJ0eVVwZGF0ZXMoUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KQor K3sKKysgICAgYXV0byBmb3VuZCA9IHRyYW5zcG9ydFN0YXRlLmZpbmQodHJhbnNwb3J0KTsKKysg ICAgaWYgKGZvdW5kICE9IHRyYW5zcG9ydFN0YXRlLmVuZCgpICYmIGZvdW5kLnZhbHVlKCkuY2xp ZW50SXNJZGxlCisrICAgICAgICAmJiAhZm91bmQudmFsdWUoKS5xdWV1ZWRNZXNzYWdlcy5pc0Vt cHR5KCkpIHsKKysKKysgICAgICAgIC8vIElmIHRoZSBjbGllbnQgaXMgY29ubmVjdGVkIHdpdGgg YW4gaW4tcHJvY2VzcyB0cmFuc3BvcnQsIGl0IGNhbgorKyAgICAgICAgLy8gaGFwcGVuIHRoYXQg YSBtZXNzYWdlIHRyaWdnZXJzIGEgc3Vic2VxdWVudCBwcm9wZXJ0eSBjaGFuZ2UuIEluCisrICAg ICAgICAvLyB0aGF0IGNhc2UsIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHF1ZXVlZCBtZXNz YWdlcyBoYXZlIGFscmVhZHkKKysgICAgICAgIC8vIGJlZW4gY2xlYXJlZDsgb3RoZXJ3aXNlIHRo ZSByZWN1cnNpdmUgY2FsbCB3aWxsIHNlbmQgZXZlcnl0aGlnIGFnYWluLgorKyAgICAgICAgLy8g Q2FzZSBpbiBwb2ludDogVGhlIHFtbHdlYmNoYW5uZWwgdGVzdHMgZmFpbCBpZiB3ZSBkb24ndCBj bGVhciB0aGUKKysgICAgICAgIC8vIHF1ZXVlZCBtZXNzYWdlcyBiZWZvcmUgc2VuZGluZyB0aGVt IG91dC4KKysgICAgICAgIC8vIEZvciB0aGF0IHNhbWUgcmVhc29uIHNldCB0aGUgY2xpZW50IHRv ICJidXN5IiAoYWthIG5vbi1pZGxlKSBqdXN0CisrICAgICAgICAvLyByaWdodCBiZWZvcmUgc2Vu ZGluZyBvdXQgdGhlIG1lc3NhZ2VzOyBvdGhlcndpc2UgYSBwb3RlbnRpYWwKKysgICAgICAgIC8v ICJJZGxlIiB0eXBlIG1lc3NhZ2Ugd2lsbCBub3QgY29ycmVjdGx5IHJlc3RvcmUgdGhlIElkbGUg c3RhdGUuCisrICAgICAgICBjb25zdCBhdXRvIG1lc3NhZ2VzID0gc3RkOjptb3ZlKGZvdW5kLnZh bHVlKCkucXVldWVkTWVzc2FnZXMpOworKyAgICAgICAgUV9BU1NFUlQoZm91bmQudmFsdWUoKS5x dWV1ZWRNZXNzYWdlcy5pc0VtcHR5KCkpOworKyAgICAgICAgZm91bmQudmFsdWUoKS5jbGllbnRJ c0lkbGUgPSBmYWxzZTsKKysKKysgICAgICAgIGZvciAoY29uc3QgYXV0byAmbWVzc2FnZSA6IG1l c3NhZ2VzKSB7CisrICAgICAgICAgICAgdHJhbnNwb3J0LT5zZW5kTWVzc2FnZShtZXNzYWdlKTsK KysgICAgICAgIH0KKysgICAgfQorK30KKysKKyB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpo YW5kbGVNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlLCBRV2ViQ2hhbm5lbEFic3Ry YWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpCisgeworICAgICBpZiAoIXdlYkNoYW5uZWwtPmRfZnVu YygpLT50cmFuc3BvcnRzLmNvbnRhaW5zKHRyYW5zcG9ydCkpIHsKK0BAIC04NjYsNyArOTEyLDcg QEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aGFuZGxlTWVzc2FnZShjb25zdCBRSnNvbk9i amVjdCAmbWVzc2FnZSwgUVdlYkNoYW5uZWwKKyAKKyAgICAgY29uc3QgTWVzc2FnZVR5cGUgdHlw ZSA9IHRvVHlwZShtZXNzYWdlLnZhbHVlKEtFWV9UWVBFKSk7CisgICAgIGlmICh0eXBlID09IFR5 cGVJZGxlKSB7CistICAgICAgICBzZXRDbGllbnRJc0lkbGUodHJ1ZSk7CisrICAgICAgICBzZXRD bGllbnRJc0lkbGUodHJ1ZSwgdHJhbnNwb3J0KTsKKyAgICAgfSBlbHNlIGlmICh0eXBlID09IFR5 cGVJbml0KSB7CisgICAgICAgICBpZiAoIW1lc3NhZ2UuY29udGFpbnMoS0VZX0lEKSkgeworICAg ICAgICAgICAgIHFXYXJuaW5nKCJKU09OIG1lc3NhZ2Ugb2JqZWN0IGlzIG1pc3NpbmcgdGhlIGlk IHByb3BlcnR5OiAlcyIsCitAQCAtOTEzLDkgKzk1OSw5IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJs aXNoZXI6OmhhbmRsZU1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UsIFFXZWJDaGFu bmVsCisgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICB0cmFuc3BvcnQtPnNl bmRNZXNzYWdlKGNyZWF0ZVJlc3BvbnNlKG1lc3NhZ2UudmFsdWUoS0VZX0lEKSwgd3JhcFJlc3Vs dChyZXN1bHQsIHRyYW5zcG9ydCkpKTsKKyAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBUeXBl Q29ubmVjdFRvU2lnbmFsKSB7CistICAgICAgICAgICAgc2lnbmFsSGFuZGxlci5jb25uZWN0VG8o b2JqZWN0LCBtZXNzYWdlLnZhbHVlKEtFWV9TSUdOQUwpLnRvSW50KC0xKSk7CisrICAgICAgICAg ICAgc2lnbmFsSGFuZGxlckZvcihvYmplY3QpLT5jb25uZWN0VG8ob2JqZWN0LCBtZXNzYWdlLnZh bHVlKEtFWV9TSUdOQUwpLnRvSW50KC0xKSk7CisgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0g VHlwZURpc2Nvbm5lY3RGcm9tU2lnbmFsKSB7CistICAgICAgICAgICAgc2lnbmFsSGFuZGxlci5k aXNjb25uZWN0RnJvbShvYmplY3QsIG1lc3NhZ2UudmFsdWUoS0VZX1NJR05BTCkudG9JbnQoLTEp KTsKKysgICAgICAgICAgICBzaWduYWxIYW5kbGVyRm9yKG9iamVjdCktPmRpc2Nvbm5lY3RGcm9t KG9iamVjdCwgbWVzc2FnZS52YWx1ZShLRVlfU0lHTkFMKS50b0ludCgtMSkpOworICAgICAgICAg fSBlbHNlIGlmICh0eXBlID09IFR5cGVTZXRQcm9wZXJ0eSkgeworICAgICAgICAgICAgIHNldFBy b3BlcnR5KG9iamVjdCwgbWVzc2FnZS52YWx1ZShLRVlfUFJPUEVSVFkpLnRvSW50KC0xKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnZhbHVlKEtFWV9WQUxVRSkpOworQEAgLTkz MSw2ICs5NzcsNyBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpzZXRCbG9ja1VwZGF0ZXMo Ym9vbCBibG9jaykKKyAgICAgYmxvY2tVcGRhdGVzID0gYmxvY2s7CisgCisgICAgIGlmICghYmxv Y2tVcGRhdGVzKSB7CisrICAgICAgICB0aW1lci5zdGFydChQUk9QRVJUWV9VUERBVEVfSU5URVJW QUwsIHRoaXMpOworICAgICAgICAgc2VuZFBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMoKTsKKyAgICAg fSBlbHNlIGlmICh0aW1lci5pc0FjdGl2ZSgpKSB7CisgICAgICAgICB0aW1lci5zdG9wKCk7CitA QCAtOTQ4LDQgKzk5NSwxNSBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjp0aW1lckV2ZW50 KFFUaW1lckV2ZW50ICpldmVudCkKKyAgICAgfQorIH0KKyAKKytTaWduYWxIYW5kbGVyPFFNZXRh T2JqZWN0UHVibGlzaGVyPiAqUU1ldGFPYmplY3RQdWJsaXNoZXI6OnNpZ25hbEhhbmRsZXJGb3Io Y29uc3QgUU9iamVjdCAqb2JqZWN0KQorK3sKKysgICAgYXV0byB0aHJlYWQgPSBvYmplY3QtPnRo cmVhZCgpOworKyAgICBhdXRvIGl0ID0gc2lnbmFsSGFuZGxlcnMuZmluZCh0aHJlYWQpOworKyAg ICBpZiAoaXQgPT0gc2lnbmFsSGFuZGxlcnMuZW5kKCkpIHsKKysgICAgICAgIGl0ID0gc2lnbmFs SGFuZGxlcnMuZW1wbGFjZSh0aHJlYWQsIHRoaXMpLmZpcnN0OworKyAgICAgICAgaXQtPnNlY29u ZC5tb3ZlVG9UaHJlYWQodGhyZWFkKTsKKysgICAgfQorKyAgICByZXR1cm4gJml0LT5zZWNvbmQ7 CisrfQorKworIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdlYmNoYW5uZWwvc3Jj L3dlYmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXJfcC5oIGIvcXR3ZWJjaGFubmVsL3NyYy93 ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyX3AuaAoraW5kZXggYmJkOTg3NS4uNDcxM2Vm MSAxMDA2NDQKKy0tLSBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1 Ymxpc2hlcl9wLmgKKysrKyBiL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVj dHB1Ymxpc2hlcl9wLmgKK0BAIC01OSw2ICs1OSw5IEBACisgI2luY2x1ZGUgPFFCYXNpY1RpbWVy PgorICNpbmNsdWRlIDxRUG9pbnRlcj4KKyAjaW5jbHVkZSA8UUpzb25PYmplY3Q+CisrI2luY2x1 ZGUgPFFRdWV1ZT4KKysKKysjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KKyAKKyAjaW5jbHVkZSAi cXdlYmNoYW5uZWxnbG9iYWwuaCIKKyAKK0BAIC0xMDksMTcgKzExMiwzNiBAQCBwdWJsaWM6Cisg ICAgICAqLworICAgICB2b2lkIGJyb2FkY2FzdE1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1l c3NhZ2UpIGNvbnN0OworIAorKyAgICAvKioKKysgICAgICogRW5xdWV1ZSB0aGUgZ2l2ZW4gQHAg bWVzc2FnZSB0byBhbGwga25vd24gdHJhbnNwb3J0cy4KKysgICAgICovCisrICAgIHZvaWQgZW5x dWV1ZUJyb2FkY2FzdE1lc3NhZ2UoY29uc3QgUUpzb25PYmplY3QgJm1lc3NhZ2UpOworKworKyAg ICAvKioKKysgICAgICogRW5xdWV1ZSB0aGUgZ2l2ZW4gQHAgbWVzc2FnZSB0byBAcCB0cmFuc3Bv cnQuCisrICAgICAqLworKyAgICB2b2lkIGVucXVldWVNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0 ICZtZXNzYWdlLCBRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpOworKwor KyAgICAvKioKKysgICAgICogSWYgY2xpZW50IGZvciBnaXZlbiBAcCB0cmFuc3BvcnQgaXMgaWRs ZSwgc2VuZCBxdWV1ZWQgbWVzc2FnZWQgdG8gQHAgdHJhbnNwb3J0IGFuZCB0aGVuIG1hcmsKKysg ICAgICogdGhlIGNsaWVudCBhcyBub3QgaWRsZS4KKysgICAgICovCisrICAgIHZvaWQgc2VuZEVu cXVldWVkUHJvcGVydHlVcGRhdGVzKFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5z cG9ydCk7CisrCisgICAgIC8qKgorICAgICAgKiBTZXJpYWxpemUgdGhlIFFNZXRhT2JqZWN0IG9m IEBwIG9iamVjdCBhbmQgcmV0dXJuIGl0IGluIEpTT04gZm9ybS4KKyAgICAgICovCisgICAgIFFK c29uT2JqZWN0IGNsYXNzSW5mb0Zvck9iamVjdChjb25zdCBRT2JqZWN0ICpvYmplY3QsIFFXZWJD aGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCk7CisgCisgICAgIC8qKgorLSAgICAg KiBTZXQgdGhlIGNsaWVudCB0byBpZGxlIG9yIGJ1c3ksIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiBA cCBpc0lkbGUuCistICAgICAqCistICAgICAqIFdoZW4gdGhlIHZhbHVlIGNoYW5nZWQsIHN0YXJ0 L3N0b3AgdGhlIHByb3BlcnR5IHVwZGF0ZSB0aW1lciBhY2NvcmRpbmdseS4KKysgICAgICogU2V0 IHRoZSBjbGllbnQgdG8gaWRsZSBvciBidXN5IGZvciBhIHNpbmdsZSBAcCB0cmFuc3BvcnQsIGJh c2VkIG9uIHRoZSB2YWx1ZSBvZiBAcCBpc0lkbGUuCisrICAgICAqLworKyAgICB2b2lkIHNldENs aWVudElzSWRsZShib29sIGlzSWRsZSwgUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJh bnNwb3J0KTsKKysKKysgICAgLyoqCisrICAgICAqIENoZWNrIHRoYXQgY2xpZW50IGlzIGlkbGUg Zm9yIEBwIHRyYW5zcG9ydC4KKyAgICAgICovCistICAgIHZvaWQgc2V0Q2xpZW50SXNJZGxlKGJv b2wgaXNJZGxlKTsKKysgICAgYm9vbCBpc0NsaWVudElkbGUoUVdlYkNoYW5uZWxBYnN0cmFjdFRy YW5zcG9ydCAqdHJhbnNwb3J0KTsKKyAKKyAgICAgLyoqCisgICAgICAqIEluaXRpYWxpemUgY2xp ZW50cyBieSBzZW5kaW5nIHRoZW0gdGhlIGNsYXNzIGluZm9ybWF0aW9uIG9mIHRoZSByZWdpc3Rl cmVkIG9iamVjdHMuCitAQCAtMjcyLDEwICsyOTQsMTggQEAgcHJpdmF0ZToKKyAgICAgZnJpZW5k IGNsYXNzIFRlc3RXZWJDaGFubmVsOworIAorICAgICBRV2ViQ2hhbm5lbCAqd2ViQ2hhbm5lbDsK Ky0gICAgU2lnbmFsSGFuZGxlcjxRTWV0YU9iamVjdFB1Ymxpc2hlcj4gc2lnbmFsSGFuZGxlcjsK KysgICAgc3RkOjp1bm9yZGVyZWRfbWFwPGNvbnN0IFFUaHJlYWQqLCBTaWduYWxIYW5kbGVyPFFN ZXRhT2JqZWN0UHVibGlzaGVyPj4gc2lnbmFsSGFuZGxlcnM7CisrICAgIFNpZ25hbEhhbmRsZXI8 UU1ldGFPYmplY3RQdWJsaXNoZXI+ICpzaWduYWxIYW5kbGVyRm9yKGNvbnN0IFFPYmplY3QgKm9i amVjdCk7CisgCistICAgIC8vIHRydWUgd2hlbiB0aGUgY2xpZW50IGlzIGlkbGUsIGZhbHNlIG90 aGVyd2lzZQorLSAgICBib29sIGNsaWVudElzSWRsZTsKKysgICAgc3RydWN0IFRyYW5zcG9ydFN0 YXRlCisrICAgIHsKKysgICAgICAgIFRyYW5zcG9ydFN0YXRlKCkgOiBjbGllbnRJc0lkbGUoZmFs c2UpIHsgfQorKyAgICAgICAgLy8gdHJ1ZSB3aGVuIHRoZSBjbGllbnQgaXMgaWRsZSwgZmFsc2Ug b3RoZXJ3aXNlCisrICAgICAgICBib29sIGNsaWVudElzSWRsZTsKKysgICAgICAgIC8vIG1lc3Nh Z2VzIHRvIHNlbmQKKysgICAgICAgIFFRdWV1ZTxRSnNvbk9iamVjdD4gcXVldWVkTWVzc2FnZXM7 CisrICAgIH07CisrICAgIFFIYXNoPFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKiwgVHJh bnNwb3J0U3RhdGU+IHRyYW5zcG9ydFN0YXRlOworIAorICAgICAvLyB0cnVlIHdoZW4gbm8gcHJv cGVydHkgdXBkYXRlcyBzaG91bGQgYmUgc2VudCwgZmFsc2Ugb3RoZXJ3aXNlCisgICAgIGJvb2wg YmxvY2tVcGRhdGVzOworZGlmZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9z aWduYWxoYW5kbGVyX3AuaCBiL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9zaWduYWxoYW5k bGVyX3AuaAoraW5kZXggMjdhZmFkYi4uZDc3MzczYyAxMDA2NDQKKy0tLSBhL3F0d2ViY2hhbm5l bC9zcmMvd2ViY2hhbm5lbC9zaWduYWxoYW5kbGVyX3AuaAorKysrIGIvcXR3ZWJjaGFubmVsL3Ny Yy93ZWJjaGFubmVsL3NpZ25hbGhhbmRsZXJfcC5oCitAQCAtNTYsNiArNTYsNyBAQAorICNpbmNs dWRlIDxRVmVjdG9yPgorICNpbmNsdWRlIDxRTWV0YU1ldGhvZD4KKyAjaW5jbHVkZSA8UURlYnVn PgorKyNpbmNsdWRlIDxRVGhyZWFkPgorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorIAorQEAgLTcx LDYgKzcyLDcgQEAgc3RhdGljIGNvbnN0IGludCBzX2Rlc3Ryb3llZFNpZ25hbEluZGV4ID0gUU9i amVjdDo6c3RhdGljTWV0YU9iamVjdC5pbmRleE9mTWV0aG8KKyB0ZW1wbGF0ZTxjbGFzcyBSZWNl aXZlcj4KKyBjbGFzcyBTaWduYWxIYW5kbGVyIDogcHVibGljIFFPYmplY3QKKyB7CisrICAgIFFf RElTQUJMRV9DT1BZKFNpZ25hbEhhbmRsZXIpCisgcHVibGljOgorICAgICBTaWduYWxIYW5kbGVy KFJlY2VpdmVyICpyZWNlaXZlciwgUU9iamVjdCAqcGFyZW50ID0gMCk7CisgCitAQCAtMjY4LDYg KzI3MCw3IEBAIGludCBTaWduYWxIYW5kbGVyPFJlY2VpdmVyPjo6cXRfbWV0YWNhbGwoUU1ldGFP YmplY3Q6OkNhbGwgY2FsbCwgaW50IG1ldGhvZElkLCB2CisgICAgIGlmIChjYWxsID09IFFNZXRh T2JqZWN0OjpJbnZva2VNZXRhTWV0aG9kKSB7CisgICAgICAgICBjb25zdCBRT2JqZWN0ICpvYmpl Y3QgPSBzZW5kZXIoKTsKKyAgICAgICAgIFFfQVNTRVJUKG9iamVjdCk7CisrICAgICAgICBRX0FT U0VSVChRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCkgPT0gb2JqZWN0LT50aHJlYWQoKSk7CisgICAg ICAgICBRX0FTU0VSVChzZW5kZXJTaWduYWxJbmRleCgpID09IG1ldGhvZElkKTsKKyAgICAgICAg IFFfQVNTRVJUKG1fY29ubmVjdGlvbnNDb3VudGVyLmNvbnRhaW5zKG9iamVjdCkpOworICAgICAg ICAgUV9BU1NFUlQobV9jb25uZWN0aW9uc0NvdW50ZXIudmFsdWUob2JqZWN0KS5jb250YWlucyht ZXRob2RJZCkpOworZGlmZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3FtbC90ZXN0 d2ViY2hhbm5lbC5jcHAgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by9xbWwvdGVzdHdlYmNoYW5u ZWwuY3BwCitpbmRleCA5ODkxNjg3Li4zY2E4MWMyIDEwMDY0NAorLS0tIGEvcXR3ZWJjaGFubmVs L3Rlc3RzL2F1dG8vcW1sL3Rlc3R3ZWJjaGFubmVsLmNwcAorKysrIGIvcXR3ZWJjaGFubmVsL3Rl c3RzL2F1dG8vcW1sL3Rlc3R3ZWJjaGFubmVsLmNwcAorQEAgLTQ2LDcgKzQ2LDExIEBAIFRlc3RX ZWJDaGFubmVsOjp+VGVzdFdlYkNoYW5uZWwoKQorIAorIGJvb2wgVGVzdFdlYkNoYW5uZWw6OmNs aWVudElzSWRsZSgpIGNvbnN0CisgeworLSAgICByZXR1cm4gUVdlYkNoYW5uZWw6OmRfZnVuYygp LT5wdWJsaXNoZXItPmNsaWVudElzSWRsZTsKKysgICAgZm9yIChhdXRvICp0cmFuc3BvcnQgOiBR V2ViQ2hhbm5lbDo6ZF9mdW5jKCktPnRyYW5zcG9ydHMpIHsKKysgICAgICAgIGlmIChRV2ViQ2hh bm5lbDo6ZF9mdW5jKCktPnB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKHRyYW5zcG9ydCkpCisrICAg ICAgICAgICAgcmV0dXJuIHRydWU7CisrICAgIH0KKysgICAgcmV0dXJuIGZhbHNlOworIH0KKyAK KyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8v d2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5jcHAgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93 ZWJjaGFubmVsL3RzdF93ZWJjaGFubmVsLmNwcAoraW5kZXggMTgxZGE5ZS4uMzdmOTg5YSAxMDA2 NDQKKy0tLSBhL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5u ZWwuY3BwCisrKysgYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJj aGFubmVsLmNwcAorQEAgLTc4NSw3ICs3ODUsNyBAQCB2b2lkIFRlc3RXZWJDaGFubmVsOjp0ZXN0 VHJhbnNwb3J0V3JhcE9iamVjdFByb3BlcnRpZXMoKQorICAgICBEdW1teVRyYW5zcG9ydCAqZHVt bXlUcmFuc3BvcnQgPSBuZXcgRHVtbXlUcmFuc3BvcnQodGhpcyk7CisgICAgIGNoYW5uZWwuY29u bmVjdFRvKGR1bW15VHJhbnNwb3J0KTsKKyAgICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVy LT5pbml0aWFsaXplQ2xpZW50KGR1bW15VHJhbnNwb3J0KTsKKy0gICAgY2hhbm5lbC5kX2Z1bmMo KS0+cHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1ZSk7CisrICAgIGNoYW5uZWwuZF9mdW5j KCktPnB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUsIGR1bW15VHJhbnNwb3J0KTsKKyAK KyAgICAgUUNPTVBBUkUoY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlzaGVyLT50cmFuc3BvcnRlZFdy YXBwZWRPYmplY3RzLnNpemUoKSwgMCk7CisgCitAQCAtOTQzLDggKzk0Myw2IEBAIHZvaWQgVGVz dFdlYkNoYW5uZWw6OnRlc3RJbmZpbml0ZVJlY3Vyc2lvbigpCisgCisgdm9pZCBUZXN0V2ViQ2hh bm5lbDo6dGVzdEFzeW5jT2JqZWN0KCkKKyB7CistICAgIFFTS0lQKCJUaGlzIHRlc3QgaXMgYnJv a2VuLiBTZWUgUVRCVUctODA3MjkiKTsKKy0KKyAgICAgUVdlYkNoYW5uZWwgY2hhbm5lbDsKKyAg ICAgY2hhbm5lbC5jb25uZWN0VG8obV9kdW1teVRyYW5zcG9ydCk7CisgCitAQCAtOTkwLDYgKzk4 OCw1MCBAQCB2b2lkIFRlc3RXZWJDaGFubmVsOjp0ZXN0QXN5bmNPYmplY3QoKQorICAgICB0aHJl YWQud2FpdCgpOworIH0KKyAKKyt2b2lkIFRlc3RXZWJDaGFubmVsOjp0ZXN0UHJvcGVydHlNdWx0 aXBsZVRyYW5zcG9ydHMoKQorK3sKKysgICAgRHVtbXlUcmFuc3BvcnQgdHJhbnNwb3J0MTsKKysg ICAgRHVtbXlUcmFuc3BvcnQgdHJhbnNwb3J0MjsKKysKKysgICAgUVdlYkNoYW5uZWwgY2hhbm5l bDsKKysgICAgUU1ldGFPYmplY3RQdWJsaXNoZXIgKnB1Ymxpc2hlciA9IGNoYW5uZWwuZF9mdW5j KCktPnB1Ymxpc2hlcjsKKysKKysgICAgVGVzdE9iamVjdCB0ZXN0T2JqOworKyAgICB0ZXN0T2Jq LnNldE9iamVjdE5hbWUoInRlc3RPYmplY3QiKTsKKysgICAgY2hhbm5lbC5yZWdpc3Rlck9iamVj dCh0ZXN0T2JqLm9iamVjdE5hbWUoKSwgJnRlc3RPYmopOworKyAgICBjaGFubmVsLmNvbm5lY3RU bygmdHJhbnNwb3J0MSk7CisrICAgIGNoYW5uZWwuY29ubmVjdFRvKCZ0cmFuc3BvcnQyKTsKKysK KysgICAgdGVzdE9iai5zZXRQcm9wKCJIZWxsbyIpOworKworKyAgICBwdWJsaXNoZXItPmluaXRp YWxpemVDbGllbnQoJnRyYW5zcG9ydDEpOworKyAgICBwdWJsaXNoZXItPmluaXRpYWxpemVDbGll bnQoJnRyYW5zcG9ydDIpOworKyAgICBwdWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVlLCAm dHJhbnNwb3J0MSk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFu c3BvcnQxKSwgdHJ1ZSk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0 cmFuc3BvcnQyKSwgZmFsc2UpOworKyAgICBRVkVSSUZZKHRyYW5zcG9ydDEubWVzc2FnZXNTZW50 KCkuaXNFbXB0eSgpKTsKKysgICAgUVZFUklGWSh0cmFuc3BvcnQyLm1lc3NhZ2VzU2VudCgpLmlz RW1wdHkoKSk7CisrCisrICAgIHRlc3RPYmouc2V0UHJvcCgiV29ybGQiKTsKKysgICAgUVRSWV9D T01QQVJFX1dJVEhfVElNRU9VVCh0cmFuc3BvcnQxLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMXUs IDIwMDApOworKyAgICBRQ09NUEFSRSh0cmFuc3BvcnQyLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwg MHUpOworKyAgICBwdWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVlLCAmdHJhbnNwb3J0Mik7 CisrICAgIFFUUllfQ09NUEFSRV9XSVRIX1RJTUVPVVQodHJhbnNwb3J0Mi5tZXNzYWdlc1NlbnQo KS5zaXplKCksIDF1LCAyMDAwKTsKKysgICAgUUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElk bGUoJnRyYW5zcG9ydDEpLCBmYWxzZSk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGll bnRJZGxlKCZ0cmFuc3BvcnQyKSwgZmFsc2UpOworKworKyAgICB0ZXN0T2JqLnNldFByb3AoIiEh ISIpOworKyAgICBwdWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVlLCAmdHJhbnNwb3J0Mik7 CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQyKSwgdHJ1 ZSk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQxKSwg ZmFsc2UpOworKyAgICBRVFJZX0NPTVBBUkVfV0lUSF9USU1FT1VUKHRyYW5zcG9ydDIubWVzc2Fn ZXNTZW50KCkuc2l6ZSgpLCAydSwgMjAwMCk7CisrICAgIFFDT01QQVJFKHRyYW5zcG9ydDEubWVz c2FnZXNTZW50KCkuc2l6ZSgpLCAxdSk7CisrICAgIHB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxl KHRydWUsICZ0cmFuc3BvcnQxKTsKKysgICAgUVRSWV9DT01QQVJFX1dJVEhfVElNRU9VVCh0cmFu c3BvcnQxLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMnUsIDIwMDApOworKyAgICBRQ09NUEFSRShw dWJsaXNoZXItPmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0MSksIGZhbHNlKTsKKysgICAgUUNPTVBB UkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDIpLCBmYWxzZSk7CisrfQorKwor IGNsYXNzIEZ1bmN0aW9uV3JhcHBlciA6IHB1YmxpYyBRT2JqZWN0CisgeworICAgICBRX09CSkVD VAorQEAgLTEwODIsNyArMTEyNCw3IEBAIHZvaWQgVGVzdFdlYkNoYW5uZWw6OmJlbmNoSW5pdGlh bGl6ZUNsaWVudHMoKQorIAorICAgICAgICAgcHVibGlzaGVyLT5wcm9wZXJ0eVVwZGF0ZXNJbml0 aWFsaXplZCA9IGZhbHNlOworICAgICAgICAgcHVibGlzaGVyLT5zaWduYWxUb1Byb3BlcnR5TWFw LmNsZWFyKCk7CistICAgICAgICBwdWJsaXNoZXItPnNpZ25hbEhhbmRsZXIuY2xlYXIoKTsKKysg ICAgICAgIHB1Ymxpc2hlci0+c2lnbmFsSGFuZGxlcnMuY2xlYXIoKTsKKyAgICAgfQorIH0KKyAK K0BAIC0xMTA3LDcgKzExNDksNyBAQCB2b2lkIFRlc3RXZWJDaGFubmVsOjpiZW5jaFByb3BlcnR5 VXBkYXRlcygpCisgICAgICAgICAgICAgb2JqLT5jaGFuZ2UoKTsKKyAgICAgICAgIH0KKyAKKy0g ICAgICAgIGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hlci0+Y2xpZW50SXNJZGxlID0gdHJ1ZTsK KysgICAgICAgIGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRy dWUsIG1fZHVtbXlUcmFuc3BvcnQpOworICAgICAgICAgY2hhbm5lbC5kX2Z1bmMoKS0+cHVibGlz aGVyLT5zZW5kUGVuZGluZ1Byb3BlcnR5VXBkYXRlcygpOworICAgICB9CisgfQorZGlmZiAtLWdp dCBhL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuaCBi L3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuaAoraW5k ZXggZWFlMjFmNC4uZGQ0ZTY5MCAxMDA2NDQKKy0tLSBhL3F0d2ViY2hhbm5lbC90ZXN0cy9hdXRv L3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuaAorKysrIGIvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1 dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5oCitAQCAtMzQ4LDYgKzM0OCw3IEBAIHByaXZh dGUgc2xvdHM6CisgICAgIHZvaWQgdGVzdEpzb25Ub1ZhcmlhbnQoKTsKKyAgICAgdm9pZCB0ZXN0 SW5maW5pdGVSZWN1cnNpb24oKTsKKyAgICAgdm9pZCB0ZXN0QXN5bmNPYmplY3QoKTsKKysgICAg dm9pZCB0ZXN0UHJvcGVydHlNdWx0aXBsZVRyYW5zcG9ydHMoKTsKKyAgICAgdm9pZCB0ZXN0RGVs ZXRpb25EdXJpbmdNZXRob2RJbnZvY2F0aW9uX2RhdGEoKTsKKyAgICAgdm9pZCB0ZXN0RGVsZXRp b25EdXJpbmdNZXRob2RJbnZvY2F0aW9uKCk7CisgCitTdWJtb2R1bGUgcXR3ZWJlbmdpbmUgZjMy ODA1NGQuLi4zOGUwZGY2YyAoY29tbWl0cyBub3QgcHJlc2VudCkKK1N1Ym1vZHVsZSBxdHdlYnNv Y2tldHMgNjU4NTA5NTQuLjYzZmI4ZGExOgorZGlmZiAtLWdpdCBhL3F0d2Vic29ja2V0cy9zcmMv d2Vic29ja2V0cy9xd2Vic29ja2V0ZGF0YXByb2Nlc3Nvci5jcHAgYi9xdHdlYnNvY2tldHMvc3Jj L3dlYnNvY2tldHMvcXdlYnNvY2tldGRhdGFwcm9jZXNzb3IuY3BwCitpbmRleCAyYWZmZGQ1Li45 NWYxMTk0IDEwMDY0NAorLS0tIGEvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2Nr ZXRkYXRhcHJvY2Vzc29yLmNwcAorKysrIGIvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3 ZWJzb2NrZXRkYXRhcHJvY2Vzc29yLmNwcAorQEAgLTI3Myw2ICsyNzMsNyBAQCB2b2lkIFFXZWJT b2NrZXREYXRhUHJvY2Vzc29yOjpjbGVhcigpCisgICAgIGlmICghbV9wQ29udmVydGVyU3RhdGUp CisgICAgICAgICBtX3BDb252ZXJ0ZXJTdGF0ZSA9IG5ldyBRVGV4dENvZGVjOjpDb252ZXJ0ZXJT dGF0ZShRVGV4dENvZGVjOjpDb252ZXJ0SW52YWxpZFRvTnVsbCB8CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVGV4dENvZGVjOjpJ Z25vcmVIZWFkZXIpOworKyAgICBmcmFtZS5jbGVhcigpOworIH0KKyAKKyAvKiEKK2RpZmYgLS1n aXQgYS9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldHByb3RvY29sLmNwcCBi L3F0d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0cy9xd2Vic29ja2V0cHJvdG9jb2wuY3BwCitpbmRl eCBkZjg3YTkzLi5kMDQ2NWYxIDEwMDY0NAorLS0tIGEvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2Nr ZXRzL3F3ZWJzb2NrZXRwcm90b2NvbC5jcHAKKysrKyBiL3F0d2Vic29ja2V0cy9zcmMvd2Vic29j a2V0cy9xd2Vic29ja2V0cHJvdG9jb2wuY3BwCitAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgUVdl YlNvY2tldFByb3RvY29sOjptYXNrKGNoYXIgKnBheWxvYWQsIHF1aW50NjQgc2l6ZSwgcXVpbnQz MiBtYXNraW5nS2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWludDgoKG1hc2tp bmdLZXkgJiAweDAwMDBGRjAwdSkgPj4gOCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHF1aW50OCgobWFza2luZ0tleSAmIDB4MDAwMDAwRkZ1KSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIH07CistICAgIGludCBpID0gMDsKKysgICAgcXVpbnQ2NCBpID0gMDsKKyAgICAgd2hp bGUgKHNpemUtLSA+IDApCisgICAgICAgICAqcGF5bG9hZCsrIF49IG1hc2tbaSsrICUgNF07Cisg fQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvdGVtcGxhdGUgYi9zcmNwa2dzL3F0NS90ZW1wbGF0 ZQppbmRleCBhNzlkMjVlNjlkYTgxLi42ZGRkY2U3ZjNlNDY2IDEwMDY0NAotLS0gYS9zcmNwa2dz L3F0NS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NS90ZW1wbGF0ZQpAQCAtMiwxMSArMiwxMSBA QAogIwogIyByZXZidW1wIGxpYnF0eGRnIGFmdGVyIGJ1bXBpbmcgcGF0Y2ggdmVyc2lvbgogcGtn bmFtZT1xdDUKLXZlcnNpb249NS4xNS43KzIwMjIxMTE5Cit2ZXJzaW9uPTUuMTUuOAorcmV2aXNp b249MQorYnVpbGRfc3R5bGU9bWV0YQogIyBjb21taXQgZjhjOWZiMzA0YmMzZTUzYjNhYTA3Zjk2 MmNkNzRlOTE2MGRlY2NjYwogIyBiYXNlIHJlcG86IGh0dHBzOi8vaW52ZW50LmtkZS5vcmcvcXQv cXQvcXQ1Ci1yZXZpc2lvbj01Ci1idWlsZF9zdHlsZT1tZXRhCiBob3N0bWFrZWRlcGVuZHM9ImNt YWtlIGNsYW5nIGZsZXggcGVybCBnbGliLWRldmVsIHBrZy1jb25maWcKICBweXRob24gcmUyYyBy dWJ5IHdoaWNoIgogbWFrZWRlcGVuZHM9IlNETDItZGV2ZWwgVnVsa2FuLUhlYWRlcnMgYWxzYS1s aWItZGV2ZWwgZG91YmxlLWNvbnZlcnNpb24tZGV2ZWwKQEAgLTI5LDggKzI5LDkgQEAgaG9tZXBh Z2U9Imh0dHBzOi8vcXQuaW8vIgogIyB0YXJiYWxsIGlzIGdlbmVyYXRlZCB3aXRoIGBnaXQgYXJj aGl2ZS1hbGwgcXQ1LSR2ZXJzaW9uLnRhci5nemAKICMgdG8ga2VlcCB0aGUgc2l6ZSBzbWFsbGVy IHF0d2ViZW5naW5lLCBxdHdlYnZpZXcsIHF0ZG9jZ2FsbGVyeSwgcXRhY3RpdmVxdCBhbmQgcXRw aW0KICMgY2FuIGJlIG1hcmtlZCB3aXRoIHRoZSBleHBvcnQtaWdub3JlIGF0dHJpYnV0ZQotZGlz dGZpbGVzPSJodHRwczovL3ZvaWQuam9obm55bmF0b3IuZGV2L2Rpc3RmaWxlcy9xdDUtJHt2ZXJz aW9ufS50YXIuZ3oiCi1jaGVja3N1bT05ZDU3YWY0NzFjNzgwMjlhMzYyMjc2YjdjOTkxMDhlYTAw OWY1MTFiYjliYTZmZjZjYjg4NGY2ZGRkMjU1ZTlmCisjZGlzdGZpbGVzPSJodHRwczovL3ZvaWQu am9obm55bmF0b3IuZGV2L2Rpc3RmaWxlcy9xdDUtJHt2ZXJzaW9ufS50YXIuZ3oiCitkaXN0Zmls ZXM9Imh0dHBzOi8vZG93bmxvYWQucXQuaW8vYXJjaGl2ZS9xdC81LjE1LyR7dmVyc2lvbn0vc2lu Z2xlL3F0LWV2ZXJ5d2hlcmUtb3BlbnNvdXJjZS1zcmMtJHt2ZXJzaW9ufS50YXIueHoiCitjaGVj a3N1bT03NzZhOTMwMmMzMzY2NzFmOTQwNmE1M2JkMzBiOGUzNmY4MjU3NDJiMmVjNDRhNTdjMDgy MTdiZmYwZmE4NmI5CiBweXRob25fdmVyc2lvbj0yICN1bnZlcmlmaWVkCiByZXBsYWNlcz0icXQ1 LWRvYzw1LjYuMCBxdDUtcXVpY2sxPDUuNi4wIHF0NS1xdWljazEtZGV2ZWw8NS42LjAgcXQ1LXdl YmtpdDw1LjYuMCBxdDUtd2Via2l0LWRldmVsPDUuNi4wCiAgcXQ1LWVuZ2luaW88NS43LjEgcXQ1 LWVuZ2luaW8tZGV2ZWw8NS43LjEgcXQ1LXBsdWdpbi1ndGs8NS43LjEgcXQ1LWNhbnZhczNkPDUu MTMuMCIKQEAgLTI1MCw3ICsyNTEsNiBAQCBkb19jb25maWd1cmUoKSB7CiAJIyBvcHRzKz0iIC12 IgogCW9wdHMrPSIgLXNraXAgcXR3ZWJlbmdpbmUiCiAJb3B0cys9IiAtc2tpcCBxdHdlYnZpZXci Ci0Jb3B0cys9IiAtc2tpcCBxdGRvY2dhbGxlcnkiCiAJb3B0cys9IiAtc2tpcCBxdHBpbSIKIAlv cHRzKz0iIC1za2lwIHF0c3lzdGVtcyIKIAlvcHRzKz0iIC1za2lwIHF0c3BlZWNoIgoKRnJvbSA1 MmVmMDE1OWM0NGZiODJhY2M5MDkxOTdhMGZlODRiZWZlMzUzYzJiIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNzQvMTEzXSBxdGF2OiByZXZi dW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvcXRhdi90ZW1wbGF0ZSB8IDQgKyst LQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL3F0YXYvdGVtcGxhdGUgYi9zcmNwa2dzL3F0YXYvdGVtcGxhdGUKaW5k ZXggMzRjMzBiMmMwYzc4Zi4uMmQwMGFkMTA0MzU1ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdGF2 L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXRhdi90ZW1wbGF0ZQpAQCAtMSwxMCArMSwxMCBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAncXRhdicKIHBrZ25hbWU9cXRhdgogdmVyc2lvbj0xLjEzLjAK LXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPXFtYWtlCiBob3N0bWFrZWRlcGVu ZHM9InF0NS1xbWFrZSBxdDUtaG9zdC10b29scyIKLW1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwg bGliYXNzLWRldmVsIGxpYm9wZW5hbC1kZXZlbAorbWFrZWRlcGVuZHM9ImZmbXBlZzQtZGV2ZWwg bGliYXNzLWRldmVsIGxpYm9wZW5hbC1kZXZlbAogIGxpYnZhLWdseC1kZXZlbCBsaWJYdi1kZXZl bCBwdWxzZWF1ZGlvLWRldmVsCiAgcXQ1LWRlY2xhcmF0aXZlLWRldmVsIHF0NS1zdmctZGV2ZWwK ICBxdDUtcXVpY2tjb250cm9scyIKCkZyb20gZGQxNWNhZDkzZmIxZGI4MTM3ZmMyODQzOGIwYzZi NzAyY2M0ZjMxMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1 QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDc1LzExM10gcXRveDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNw a2dzL3F0b3gvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0b3gvdGVtcGxhdGUgYi9zcmNw a2dzL3F0b3gvdGVtcGxhdGUKaW5kZXggMTYwMTlkN2VhZWM5ZS4uNWNlYTBiMTFiNjk3MSAxMDA2 NDQKLS0tIGEvc3JjcGtncy9xdG94L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXRveC90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0b3gnCiBwa2duYW1lPXF0 b3gKIHZlcnNpb249MS4xNy42Ci1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1j bWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EVVBEQVRFX0NIRUNLPU9GRgogIC1ER0lUX0RFU0NSSUJF PSR7dmVyc2lvbn0KCkZyb20gYjI2OWQ3NDkwYmE0NWRkYjFkNjZlNmIyOWFmNjMxNmY5ZTUwODQ0 NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDc2LzExM10gcmV0cm9hcmNoOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mv cmV0cm9hcmNoL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9yZXRyb2FyY2gvdGVtcGxhdGUg Yi9zcmNwa2dzL3JldHJvYXJjaC90ZW1wbGF0ZQppbmRleCAyODAxNmFhMDEyOWU2Li4yMGExNDE1 OTEzYmU1IDEwMDY0NAotLS0gYS9zcmNwa2dzL3JldHJvYXJjaC90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL3JldHJvYXJjaC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ3JldHJvYXJjaCcKIHBrZ25hbWU9cmV0cm9hcmNoCiB2ZXJzaW9uPTEuMTUuMAotcmV2aXNp b249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y29uZmlndXJlCiBjb25maWd1cmVfYXJncz0i LS1wcmVmaXg9L3VzciAtLXN5c2NvbmZkaXI9L2V0YyAtLWVuYWJsZS1uZXR3b3JraW5nCiAgLS1l bmFibGUtdWRldiAtLWRpc2FibGUtYnVpbHRpbmZsYWMgLS1kaXNhYmxlLWJ1aWx0aW5nbHNsYW5n CgpGcm9tIDY4YmI3NDQ2M2Y4MmU3MDdlNDRmODQ0YTA4MWVhYzE1NTIxZTk5ZDggTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3Ny8xMTNdIHNj cmNweTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3NjcmNweS90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc2NyY3B5L3RlbXBsYXRlIGIvc3JjcGtncy9zY3JjcHkvdGVt cGxhdGUKaW5kZXggMDYyMDhjMzg5Y2E5Ny4uYTVkZTkzNWM3ZGVmNyAxMDA2NDQKLS0tIGEvc3Jj cGtncy9zY3JjcHkvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zY3JjcHkvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzY3JjcHknCiBwa2duYW1lPXNjcmNweQog dmVyc2lvbj0yLjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBj b25maWd1cmVfYXJncz0iLURjb21waWxlX3NlcnZlcj1mYWxzZQogIC1EcHJlYnVpbHRfc2VydmVy PS91c3Ivc2hhcmUvc2NyY3B5L3NjcmNweS1zZXJ2ZXItdiR7dmVyc2lvbn0iCgpGcm9tIGQyZWIw NGVhYWIwZTVmMzg0ZmQ2OTRiYWNjZTBhMDY2ZDhmNGYyNzYgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIw MjMgMjA6MDE6NTEgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3OC8xMTNdIHNwZWstYWx0ZXJuYXRp dmU6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9zcGVrLWFsdGVybmF0 aXZlL3RlbXBsYXRlIHwgNiArKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyks IDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zcGVrLWFsdGVybmF0aXZlL3Rl bXBsYXRlIGIvc3JjcGtncy9zcGVrLWFsdGVybmF0aXZlL3RlbXBsYXRlCmluZGV4IGQ2NTA4NmI4 ZjAwOGMuLjA1MjQ2ZjFiOGQwYzggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvc3Blay1hbHRlcm5hdGl2 ZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUvdGVtcGxhdGUKQEAgLTEs MTEgKzEsMTEgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3NwZWstYWx0ZXJuYXRpdmUnCiBwa2du YW1lPXNwZWstYWx0ZXJuYXRpdmUKIHZlcnNpb249MC44LjIuMwotcmV2aXNpb249MQorcmV2aXNp b249MgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFr ZSBnZXR0ZXh0LWRldmVsIGludGx0b29sIGxpYnRvb2wgcGtnLWNvbmZpZyB3eFdpZGdldHMtY29t bW9uIgotbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCB3eFdpZGdldHMtZ3RrMy1kZXZlbCIKLWRl cGVuZHM9ImZmbXBlZyIKK21ha2VkZXBlbmRzPSJmZm1wZWc0LWRldmVsIHd4V2lkZ2V0cy1ndGsz LWRldmVsIgorZGVwZW5kcz0iZmZtcGVnNCIKIHNob3J0X2Rlc2M9IkFjb3VzdGljIHNwZWN0cnVt IGFuYWx5c2VyIgogbWFpbnRhaW5lcj0iS2FydGlrIFNpbmdoIDxrYXJ0aWsueW53YUBnbWFpbC5j b20+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKCkZyb20gZmQ4YjU0NGU3MmExYjE3ZGNh YzYxOWYxZmI5MTI0MmI3MWYxMThhMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MSAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDc5LzExM10gc3NyOiByZXZidW1wIGZvciBmZm1wZWc0LTQu NC4zCgotLS0KIHNyY3BrZ3Mvc3NyL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwg MiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3Ny L3RlbXBsYXRlIGIvc3JjcGtncy9zc3IvdGVtcGxhdGUKaW5kZXggYjA1NWI5ZWMwNzc0YS4uMzQ0 OGNhMTEwZWIwYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9zc3IvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9zc3IvdGVtcGxhdGUKQEAgLTEsMTEgKzEsMTEgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3Nz cicKIHBrZ25hbWU9c3NyCiB2ZXJzaW9uPTAuNC40Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBi dWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EV0lUSF9RVDU9T04iCiBob3N0bWFr ZWRlcGVuZHM9InBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgZmZtcGVn LWRldmVsIGdsdS1kZXZlbCBqYWNrLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwKK21ha2VkZXBlbmRz PSJhbHNhLWxpYi1kZXZlbCBmZm1wZWc0LWRldmVsIGdsdS1kZXZlbCBqYWNrLWRldmVsIHB1bHNl YXVkaW8tZGV2ZWwKICBxdDUtdG9vbHMtZGV2ZWwgcXQ1LXgxMWV4dHJhcy1kZXZlbCBsaWJYaW5l cmFtYS1kZXZlbCB2NGwtdXRpbHMtZGV2ZWwiCiBkZXBlbmRzPSJkZXNrdG9wLWZpbGUtdXRpbHMg aGljb2xvci1pY29uLXRoZW1lIgogc2hvcnRfZGVzYz0iU2ltcGxlIFNjcmVlbiBSZWNvcmRlciBm b3IgcHJvZ3JhbXMgYW5kIGdhbWVzIgoKRnJvbSAzMWIzY2YzYzFiNGZlN2EzNDhjMWExYTA0YTQw NWY5ZjM1ODViYzZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwODAvMTEzXSBzdW1vOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNy Y3BrZ3Mvc3Vtby90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3Vtby90ZW1wbGF0ZSBiL3Ny Y3BrZ3Mvc3Vtby90ZW1wbGF0ZQppbmRleCAwZjliOWVjODE1ZjU2Li5hM2ZlMTM0YWE1YWNjIDEw MDY0NAotLS0gYS9zcmNwa2dzL3N1bW8vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zdW1vL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc3VtbycKIHBrZ25hbWU9 c3VtbwogdmVyc2lvbj0xLjEyLjAKLXJldmlzaW9uPTUKK3JldmlzaW9uPTYKIGJ1aWxkX3N0eWxl PWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9ImxpYmdkYWwtdG9vbHMgcGtnLWNvbmZpZyBzd2lnIHB5 dGhvbjMtc2V0dXB0b29scyIKIG1ha2VkZXBlbmRzPSJweXRob24zLWRldmVsIGZmbXBlZy1kZXZl bCBmb3gtZGV2ZWwgZ2wycHMtZGV2ZWwgbGliZ2RhbC1kZXZlbAoKRnJvbSA1NjNhZWM1NTU1Mzhk ODY2MzMyODA3YzMwMzAxZjViMzBjZDUzN2NjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAx OjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODEvMTEzXSBzeW5maWc6IHJldmJ1bXAgZm9yIGZm bXBlZy02LjAgYW5kIG1sdDcKCi0tLQogc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBh dGNoIHwgNzEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9zeW5maWcvdGVt cGxhdGUgICAgICAgICAgICAgIHwgIDYgKy0tCiAyIGZpbGVzIGNoYW5nZWQsIDc0IGluc2VydGlv bnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9zeW5maWcv cGF0Y2hlcy9mZm1wZWc2LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zeW5maWcvcGF0Y2hl cy9mZm1wZWc2LnBhdGNoIGIvc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjEwNzgwYjQyNzgyZjQKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3N5bmZpZy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gKQEAg LTAsMCArMSw3MSBAQAorLS0tIGEvc3JjL21vZHVsZXMvbW9kX2xpYmF2Y29kZWMvdHJndF9hdi5j cHAJMjAyMi0xMC0yNSAwOToxNDoxMi4wMDAwMDAwMDAgLTA0MDAKKysrKyBiL3NyYy9tb2R1bGVz L21vZF9saWJhdmNvZGVjL3RyZ3RfYXYuY3BwCTIwMjMtMDUtMDUgMjE6MzQ6MTcuODk5MTk0NTU5 IC0wNDAwCitAQCAtMzgsNiArNDEsNyBAQAorIGV4dGVybiAiQyIKKyB7CisgI2lmZGVmIEhBVkVf TElCQVZGT1JNQVRfQVZGT1JNQVRfSAorKyMJaW5jbHVkZSA8bGliYXZjb2RlYy9hdmNvZGVjLmg+ CisgIwlpbmNsdWRlIDxsaWJhdmZvcm1hdC9hdmZvcm1hdC5oPgorICNlbGlmIGRlZmluZWQoSEFW RV9BVkZPUk1BVF9IKQorICMJaW5jbHVkZSA8YXZmb3JtYXQuaD4KK0BAIC0xNTUsMTEgKzE1Niwx MSBAQAorICAgICB9CisgCisgCWJvb2wgb3Blbl92aWRlb19zdHJlYW0oKSB7CistCQlpZiAoYXZj b2RlY19vcGVuMih2aWRlb19jb250ZXh0LCBOVUxMLCBOVUxMKSA8IDApIHsKKysJCWlmIChhdmNv ZGVjX29wZW4yKHZpZGVvX2NvbnRleHQsIG51bGxwdHIsIG51bGxwdHIpIDwgMCkgeworIAkJCXN5 bmZpZzo6ZXJyb3IoIlRhcmdldF9MaWJBVkNvZGVjOiBjb3VsZCBub3Qgb3BlbiB2aWRlbyBjb2Rl YyIpOworIAkJCS8vIHNlZW1zIHRoZSBjYWxsaW5nIG9mIGF2Y29kZWNfZnJlZV9jb250ZXh0IGFm dGVyIGVycm9yIHdpbGwgY2F1c2UgY3Jhc2gKKyAJCQkvLyBzbyBqdXN0IGZvcmdldCBhYm91dCB0 aGlzIGNvbnRleHQKKy0JCQl2aWRlb19jb250ZXh0ID0gTlVMTDsKKysJCQl2aWRlb19jb250ZXh0 ID0gbnVsbHB0cjsKKyAJCQljbG9zZSgpOworIAkJCXJldHVybiBmYWxzZTsKKyAgICAgICAgIH0K K0BAIC0yMzQsMTUgKzIzNSwyMSBAQAorIAkJY2xvc2UoKTsKKyAKKyAJCWlmICghYXZfcmVnaXN0 ZXJlZCkgeworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1OCAvLyBGRk1QRUcgPCA0 LjAKKyAJCQlhdl9yZWdpc3Rlcl9hbGwoKTsKKysjZW5kaWYKKyAJCQlhdl9yZWdpc3RlcmVkID0g dHJ1ZTsKKyAJCX0KKyAKKyAJCS8vIGd1ZXNzIGZvcm1hdAorLQkJQVZPdXRwdXRGb3JtYXQgKmZv cm1hdCA9IGF2X2d1ZXNzX2Zvcm1hdChOVUxMLCBmaWxlbmFtZS5jX3N0cigpLCBOVUxMKTsKKysj aWYgTElCQVZDT0RFQ19WRVJTSU9OX01BSk9SIDwgNTkgLy8gRkZNUEVHIDwgNS4wCisrCQlBVk91 dHB1dEZvcm1hdCogZm9ybWF0ID0gYXZfZ3Vlc3NfZm9ybWF0KG51bGxwdHIsIGZpbGVuYW1lLmNf c3RyKCksIG51bGxwdHIpOworKyNlbHNlCisrCQljb25zdCBBVk91dHB1dEZvcm1hdCogZm9ybWF0 ID0gYXZfZ3Vlc3NfZm9ybWF0KG51bGxwdHIsIGZpbGVuYW1lLmNfc3RyKCksIG51bGxwdHIpOwor KyNlbmRpZgorIAkJaWYgKCFmb3JtYXQpIHsKKyAJCQlzeW5maWc6Ondhcm5pbmcoIlRhcmdldF9M aWJBVkNvZGVjOiB1bmFibGUgdG8gZ3Vlc3MgdGhlIG91dHB1dCBmb3JtYXQsIGRlZmF1bHRpbmcg dG8gTVBFRyIpOworLQkJCWZvcm1hdCA9IGF2X2d1ZXNzX2Zvcm1hdCgibXBlZyIsIE5VTEwsIE5V TEwpOworKwkJCWZvcm1hdCA9IGF2X2d1ZXNzX2Zvcm1hdCgibXBlZyIsIG51bGxwdHIsIG51bGxw dHIpOworIAkJfQorIAkJaWYgKCFmb3JtYXQpIHsKKyAJCQlzeW5maWc6OmVycm9yKCJUYXJnZXRf TGliQVZDb2RlYzogdW5hYmxlIHRvIGZpbmQgJ21wZWcnIG91dHB1dCBmb3JtYXQiKTsKK0BAIC0y NTQsNiArMjYxLDcgQEAKKyAJCWNvbnRleHQgPSBhdmZvcm1hdF9hbGxvY19jb250ZXh0KCk7Cisg CQlhc3NlcnQoY29udGV4dCk7CisgCQljb250ZXh0LT5vZm9ybWF0ID0gZm9ybWF0OworKyNpZiBM SUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPCA1OCAvLyBGRk1QRUcgPCA0LjAKKyAJCWlmIChmaWxl bmFtZS5zaXplKCkgKyAxID4gc2l6ZW9mKGNvbnRleHQtPmZpbGVuYW1lKSkgeworIAkJCXN5bmZp Zzo6ZXJyb3IoCisgCQkJCSJUYXJnZXRfTGliQVZDb2RlYzogZmlsZW5hbWUgdG9vIGxvbmcsIG1h eCBsZW5ndGggaXMgJWQsIGZpbGVuYW1lIGlzICclcyciLAorQEAgLTI2Myw2ICsyNzEsMTQgQEAK KyAJCQlyZXR1cm4gZmFsc2U7CisgCQl9CisgCQltZW1jcHkoY29udGV4dC0+ZmlsZW5hbWUsIGZp bGVuYW1lLmNfc3RyKCksIGZpbGVuYW1lLnNpemUoKSArIDEpOworKyNlbHNlCisrCQljb250ZXh0 LT51cmwgPSBhdl9zdHJuZHVwKGZpbGVuYW1lLmNfc3RyKCksIGZpbGVuYW1lLnNpemUoKSk7Cisr CQlpZiAoIWNvbnRleHQtPnVybCkgeworKwkJCXN5bmZpZzo6ZXJyb3IoIlRhcmdldF9MaWJBVkNv ZGVjOiBjYW5ub3QgYWxsb2NhdGUgc3BhY2UgZm9yIGZpbGVuYW1lIik7CisrCQkJY2xvc2UoKTsK KysJCQlyZXR1cm4gZmFsc2U7CisrCQl9CisrI2VuZGlmCisgCisgCQlwYWNrZXQgPSBhdl9wYWNr ZXRfYWxsb2MoKTsKKyAJCWFzc2VydChwYWNrZXQpOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zeW5m aWcvdGVtcGxhdGUgYi9zcmNwa2dzL3N5bmZpZy90ZW1wbGF0ZQppbmRleCAzMDEwOTU0MWVjNGZj Li43MDNjZmQ3ZWJhYzg0IDEwMDY0NAotLS0gYS9zcmNwa2dzL3N5bmZpZy90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3N5bmZpZy90ZW1wbGF0ZQpAQCAtMiwxMSArMiwxMSBAQAogIyBTaG91bGQgYmUg a2VwdCBpbiBzeW5jIHdpdGggJ3N5bmZpZ3N0dWRpbycgYW5kICdFVEwnCiBwa2duYW1lPXN5bmZp ZwogdmVyc2lvbj0xLjQuNAotcmV2aXNpb249MworcmV2aXNpb249NAogYnVpbGRfc3R5bGU9Z251 LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0td2l0aC1ib29zdC1saWJkaXI9JHtYQlBTX0NS T1NTX0JBU0V9L3Vzci9saWIiCiBob3N0bWFrZWRlcGVuZHM9ImJvb3N0LWJ1aWxkIEltYWdlTWFn aWNrIHBrZy1jb25maWcgaW50bHRvb2wiCi1tYWtlZGVwZW5kcz0iRVRMIGdldHRleHQtZGV2ZWwg bGlieG1sKystZGV2ZWwgbWx0LWRldmVsIGxpYm1hZ2ljay1kZXZlbAorbWFrZWRlcGVuZHM9IkVU TCBnZXR0ZXh0LWRldmVsIGxpYnhtbCsrLWRldmVsIG1sdDctZGV2ZWwgbGlibWFnaWNrLWRldmVs CiAgbGlibW5nLWRldmVsIGJvb3N0LWJ1aWxkIGJvb3N0LWRldmVsIGxpYm9wZW5leHItZGV2ZWwg ZmZtcGVnLWRldmVsIgogZGVwZW5kcz0iSW1hZ2VNYWdpY2siCiBzaG9ydF9kZXNjPSJDTEkgMkQg dmVjdG9yIGFuZCB0aW1lbGluZS1iYXNlZCBhbmltYXRpb24gc29mdHdhcmUiCkBAIC0yMCw3ICsy MCw3IEBAIENYWEZMQUdTPSItc3RkPWMrKzExIC1ESEFWRV9MT0NBTEVfSD0xIgogCiBzeW5maWct ZGV2ZWxfcGFja2FnZSgpIHsKIAlkZXBlbmRzPSIke3NvdXJjZXBrZ30+PSR7dmVyc2lvbn1fJHty ZXZpc2lvbn0KLQkgbGlib3BlbmV4ci1kZXZlbCBsaWJ4bWwrKy1kZXZlbCBtbHQtZGV2ZWwiCisJ IGxpYm9wZW5leHItZGV2ZWwgbGlieG1sKystZGV2ZWwgbWx0Ny1kZXZlbCIKIAlzaG9ydF9kZXNj Kz0iIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCiAJcGtnX2luc3RhbGwoKSB7CiAJCXZtb3ZlIHVzci9i aW4vc3luZmlnLWNvbmZpZwoKRnJvbSA4ZjEwNGMxNGJkMTJmYTY4MTRiNTdlMWZhNWI4NjE4MWEy NmUzMjhiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwODIvMTEzXSB0Z19vd3Q6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtn cy90Z19vd3QvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3RnX293dC90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvdGdfb3d0L3RlbXBsYXRlCmluZGV4IDk3ZDE5NWRkYjM0YTMuLjU1MTYxNGIyNDk1NmMg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdGdfb3d0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdGdfb3d0 L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAndGdfb3d0Jwog cGtnbmFtZT10Z19vd3QKIHZlcnNpb249MC4wLjAuMjAyMzAxMDcKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIF9jb21taXQ9NTA5ODczMGI5ZWI2MTczZjBiNTIwNjhmZTI1NTViN2MxMDE1MTIzYQog X2xpYnl1dl9jb21taXQ9MDA5NTA4NDBkMWM5YmNiYjNlYjZlYmM1YWFjNTc5M2U3MTE2NmM4Ygog X2Fic2VpbF9jb21taXQ9OGMwYjk0ZTc5M2E2NjQ5NWUwYjFmMzRhNWViMjZiZDdkYzY3MmRiMAoK RnJvbSBkOTBmYmVlMGQ4ZTY0OGEwZjg5ODliOWJlYTEyMmExOGNkN2Q3MTU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODMvMTEzXSB0aW1n OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvdGltZy90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvdGltZy90ZW1wbGF0ZSBiL3NyY3BrZ3MvdGltZy90ZW1wbGF0ZQppbmRl eCAyYTJhYjc2M2QyZmRkLi44ZmI0MzI3NTM1ZWY5IDEwMDY0NAotLS0gYS9zcmNwa2dzL3RpbWcv dGVtcGxhdGUKKysrIGIvc3JjcGtncy90aW1nL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAndGltZycKIHBrZ25hbWU9dGltZwogdmVyc2lvbj0xLjQuNQotcmV2 aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSIt RFdJVEhfT1BFTlNMSURFX1NVUFBPUlQ9b2ZmIC1Xbm8tZGV2IgogaG9zdG1ha2VkZXBlbmRzPSJw a2ctY29uZmlnIGdpdCIKCkZyb20gZTU5MzNlNThkODFmZGYxYWYzZGE5Mjk5NjQxNTM0NGQzODA0 NDA5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDg0LzExM10gdHZoZWFkZW5kOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNy Y3BrZ3MvdHZoZWFkZW5kL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNl cnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdHZoZWFkZW5k L3RlbXBsYXRlIGIvc3JjcGtncy90dmhlYWRlbmQvdGVtcGxhdGUKaW5kZXggZTZiMTZkN2NjZjNi ZC4uNDZiNTJiNmZiN2Y5NCAxMDA2NDQKLS0tIGEvc3JjcGtncy90dmhlYWRlbmQvdGVtcGxhdGUK KysrIGIvc3JjcGtncy90dmhlYWRlbmQvdGVtcGxhdGUKQEAgLTEsMTQgKzEsMTQgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ3R2aGVhZGVuZCcKIHBrZ25hbWU9dHZoZWFkZW5kCiB2ZXJzaW9uPTQu Mi44Ci1yZXZpc2lvbj02CityZXZpc2lvbj03CiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBj b25maWd1cmVfYXJncz0iLS1lbmFibGUtZHZic2NhbiAtLWRpc2FibGUtZmZtcGVnX3N0YXRpYwog LS1kaXNhYmxlLWhkaG9tZXJ1bl9zdGF0aWMgLS1kaXNhYmxlLWJpbnRyYXlfY2FjaGUgLS1kaXNh YmxlLWxpYngyNjRfc3RhdGljCiAtLWRpc2FibGUtbGlieDI2NV9zdGF0aWMgLS1kaXNhYmxlLWxp YnZweF9zdGF0aWMgLS1kaXNhYmxlLWxpYnRoZW9yYV9zdGF0aWMKIC0tZGlzYWJsZS1saWJ2b3Ji aXNfc3RhdGljIC0tZGlzYWJsZS1saWJmZGthYWNfc3RhdGljIgogaG9zdG1ha2VkZXBlbmRzPSJn ZXR0ZXh0IHBrZy1jb25maWcgcHl0aG9uIGdpdCB3aGljaCIKLW1ha2VkZXBlbmRzPSJhdmFoaS1s aWJzLWRldmVsIG9wZW5zc2wtZGV2ZWwgemxpYi1kZXZlbCBsaWJjdXJsLWRldmVsIGZmbXBlZy1k ZXZlbCIKK21ha2VkZXBlbmRzPSJhdmFoaS1saWJzLWRldmVsIG9wZW5zc2wtZGV2ZWwgemxpYi1k ZXZlbCBsaWJjdXJsLWRldmVsIGZmbXBlZzQtZGV2ZWwiCiBzaG9ydF9kZXNjPSJUViBzdHJlYW1p bmcgc2VydmVyIgogbWFpbnRhaW5lcj0ibGVtbWkgPGxlbW1pQG5lcmQybmVyZC5vcmc+IgogbGlj ZW5zZT0iR1BMLTMuMC1vbmx5IgoKRnJvbSBiZDEyYWVkMTc2Nzg4NTAyODk5ZGVmNTJkMjg1MjA3 ZGE3ZWMxZDBiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwODUvMTEzXSB1bnBhcGVyOiB1cGRhdGUgdG8gNy4wLjAuCgotLS0KIHNyY3BrZ3Mv dW5wYXBlci90ZW1wbGF0ZSB8IDE2ICsrKysrKysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4 IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy91bnBh cGVyL3RlbXBsYXRlIGIvc3JjcGtncy91bnBhcGVyL3RlbXBsYXRlCmluZGV4IDM4ZWQ0N2E1ODQw MTYuLjFmZjkxMGU3MjJhZmMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdW5wYXBlci90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL3VucGFwZXIvdGVtcGxhdGUKQEAgLTEsMTMgKzEsMTMgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ3VucGFwZXInCiBwa2duYW1lPXVucGFwZXIKLXZlcnNpb249Ni4xCi1yZXZp c2lvbj0zCi1idWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCit2ZXJzaW9uPTcuMC4wCityZXZpc2lv bj0xCitidWlsZF9zdHlsZT1tZXNvbgoraG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIG1lc29u IGxpYnhzbHQiCittYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIHB5dGhvbjMtU3BoaW54Igorc2hv cnRfZGVzYz0iUG9zdC1wcm9jZXNzaW5nIHRvb2wgZm9yIHNjYW5uZWQgc2hlZXRzIG9mIHBhcGVy IgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKLWhvc3RtYWtl ZGVwZW5kcz0icGtnLWNvbmZpZyBsaWJ4c2x0IgotbWFrZWRlcGVuZHM9ImZmbXBlZy1kZXZlbCIK LWxpY2Vuc2U9IkdQTC0yIgorbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJo dHRwczovL3d3dy5mbGFtZWV5ZXMuZXUvcHJvamVjdHMvdW5wYXBlciIKLXNob3J0X2Rlc2M9IkEg cG9zdC1wcm9jZXNzaW5nIHRvb2wgZm9yIHNjYW5uZWQgc2hlZXRzIG9mIHBhcGVyIgogZGlzdGZp bGVzPSJodHRwczovL3d3dy5mbGFtZWV5ZXMuZXUvZmlsZXMvJHtwa2duYW1lfS0ke3ZlcnNpb259 LnRhci54eiIKLWNoZWNrc3VtPTIzN2M4NGY1ZGE1NDRiM2Y3NzA5ODI3ZjlmMTJjMzdjMzQ2Y2Rm MDI5YjExMjhmYjQ2MzNmOWJhZmE1Y2I5MzAKK2NoZWNrc3VtPTI1NzVmYmJmMjZjMjI3MTlkMWNi ODgyYjU5NjAyYzk5MDBjN2Y3NDcxMThhYzEzMDg4M2Y2MzQxOWJlNDZhODAKCkZyb20gYTE2Y2Nj M2FlYWQ0ZjIxNmNhYmU3MGNjOWI2ZTFhNjcwMTY5ZjA1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAy MyAyMDowMTo1MiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg2LzExM10gdmJhLW06IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy92YmEtbS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmls ZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvdmJhLW0vdGVtcGxhdGUgYi9zcmNwa2dzL3ZiYS1tL3RlbXBsYXRlCmluZGV4IGJhMTUz ZTBiNThjYTQuLmFhNjA5MzY0NWU5NzQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdmJhLW0vdGVtcGxh dGUKKysrIGIvc3JjcGtncy92YmEtbS90ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAKIHBrZ25hbWU9 dmJhLW0KIHJldmVydHM9MTI5Ml8yCiB2ZXJzaW9uPTIuMS41Ci1yZXZpc2lvbj0xCityZXZpc2lv bj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1ERU5BQkxFX0dUSz1UUlVF IC1ERU5BQkxFX0ZGTVBFRz1UUlVFIC1ERU5BQkxFX0xJTks9VFJVRSAtRENNQUtFX0JVSUxEX1RZ UEU9UmVsZWFzZSIKIGhvc3RtYWtlZGVwZW5kcz0iZ2V0dGV4dCBwa2ctY29uZmlnIHVuemlwIHpp cCB5YXNtIHd4V2lkZ2V0cy1ndGszLWRldmVsIgoKRnJvbSBjMmFlNGZjNTExOGZjYmUwYjliYzdk NTdmNDA4NTdjNDIzMzM4YTkyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwODcvMTEzXSB2aWNlOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4z CgotLS0KIHNyY3BrZ3MvdmljZS90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3ZpY2Uv dGVtcGxhdGUgYi9zcmNwa2dzL3ZpY2UvdGVtcGxhdGUKaW5kZXggZmU5ZDMzYTgxMTk0Ny4uNGJl YWIyYzVmOWViZCAxMDA2NDQKLS0tIGEvc3JjcGtncy92aWNlL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvdmljZS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3Zp Y2UnCiBwa2duYW1lPXZpY2UKIHZlcnNpb249My43LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIK IGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSIKIAkkKHZvcHRfZW5h YmxlIHNkbDIgc2RsdWkyKQpAQCAtMjYsNyArMjYsNyBAQCBtYWtlZGVwZW5kcz0iCiAJJCh2b3B0 X2lmIGd0azMgZ3RrKzMtZGV2ZWwpCiAJJCh2b3B0X2lmIGd0azMgcHVsc2VhdWRpby1kZXZlbCkK IAkkKHZvcHRfaWYgZ3RrMyBwYW5nby1kZXZlbCkKLQkkKHZvcHRfaWYgZmZtcGVnIGZmbXBlZy1k ZXZlbCkiCisJJCh2b3B0X2lmIGZmbXBlZyBmZm1wZWc0LWRldmVsKSIKIHNob3J0X2Rlc2M9IkVt dWxhdG9yIGZvciBDNjQsIEMxMjgsIENCTS1JSSwgUEVULCBWSUMyMCwgUGx1czQgYW5kIEMxNiIK IG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJH UEwtMi4wLW9yLWxhdGVyIgoKRnJvbSBkMTA1ZGQ1ZmQzYjNlYWJhMjAwNGU3MzNlNmRlNjZjYzY0 YWY5MTA5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwODgvMTEzXSB3YXlwaXBlOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3Br Z3Mvd2F5cGlwZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvd2F5cGlwZS90ZW1wbGF0ZSBi L3NyY3BrZ3Mvd2F5cGlwZS90ZW1wbGF0ZQppbmRleCA1YzQxNjE5MDAwNjBhLi4xYTQ2ZmUyN2Y3 ZDgzIDEwMDY0NAotLS0gYS9zcmNwa2dzL3dheXBpcGUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy93 YXlwaXBlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnd2F5 cGlwZScKIHBrZ25hbWU9d2F5cGlwZQogdmVyc2lvbj0wLjguNAotcmV2aXNpb249MQorcmV2aXNp b249MgogYnVpbGRfc3R5bGU9bWVzb24KICMgbHRvIGlzIG9mZiBiZWNhdXNlIGl0IGNhdXNlcyBs aW5raW5nIGVycm9ycyBpbiBhcm12NmwgYW5kIGFybXY3bCAoZHVlIHRvIE5FT04pCiBjb25maWd1 cmVfYXJncz0iLUR3ZXJyb3I9ZmFsc2UgLUR3aXRoX2RtYWJ1Zj1lbmFibGVkIC1Ed2l0aF9sejQ9 ZW5hYmxlZAoKRnJvbSAxNTEyNzlmODA4NGQ2MTU1OTMyY2IxNGYxZDMzNmE3MzExODVhYzkyIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODkv MTEzXSB3Zi1yZWNvcmRlcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3dm LXJlY29yZGVyL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy93Zi1yZWNvcmRlci90ZW1wbGF0 ZSBiL3NyY3BrZ3Mvd2YtcmVjb3JkZXIvdGVtcGxhdGUKaW5kZXggZTI3OGViMDAxNjAwZi4uNWQw MTRhNWYyOGFmYiAxMDA2NDQKLS0tIGEvc3JjcGtncy93Zi1yZWNvcmRlci90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3dmLXJlY29yZGVyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAnd2YtcmVjb3JkZXInCiBwa2duYW1lPXdmLXJlY29yZGVyCiB2ZXJzaW9uPTAu My4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2Vk ZXBlbmRzPSJwa2ctY29uZmlnIHNjZG9jIHdheWxhbmQtZGV2ZWwiCiBtYWtlZGVwZW5kcz0id2F5 bGFuZC1wcm90b2NvbHMgd2F5bGFuZC1kZXZlbCBmZm1wZWctZGV2ZWwgeDI2NC1kZXZlbAoKRnJv bSBmN2E1YzVhOWRiYmI0ZjRhNDEwZjM3MTc1N2M0NjRiOTYzNjYwMjBlIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTAvMTEzXSB4cHJhOiBy ZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MveHByYS90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MveHByYS90ZW1wbGF0ZSBiL3NyY3BrZ3MveHByYS90ZW1wbGF0ZQppbmRleCAw YTYzZmRiNmM3NDM3Li5kNWFjYzE5ODFjNWY2IDEwMDY0NAotLS0gYS9zcmNwa2dzL3hwcmEvdGVt cGxhdGUKKysrIGIvc3JjcGtncy94cHJhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAneHByYScKIHBrZ25hbWU9eHByYQogdmVyc2lvbj00LjQuNgotcmV2aXNp b249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9cHl0aG9uMy1tb2R1bGUKIG1ha2VfYnVpbGRf YXJncz0iLS13aXRob3V0LWN1ZGFfa2VybmVscyAtLXdpdGhvdXQtY3VkYV9yZWJ1aWxkIgogbWFr ZV9pbnN0YWxsX2FyZ3M9IiQodm9wdF93aXRoIGRvY3MpICR7bWFrZV9idWlsZF9hcmdzfSIKCkZy b20gZGU1ZGJmOWMwYjUwZWFlNWFhNmVjNmNkMGRkYTIzNDNhZDAwZDc5MyBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAz MSBNYXIgMjAyMyAwOTowNzo0MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDkxLzExM10gbnYtY29k ZWMtaGVhZGVyczogdXBkYXRlIHRvIDEyLjAuMTYuMAoKLS0tCiBzcmNwa2dzL252LWNvZGVjLWhl YWRlcnMvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9udi1jb2RlYy1oZWFkZXJzL3Rl bXBsYXRlIGIvc3JjcGtncy9udi1jb2RlYy1oZWFkZXJzL3RlbXBsYXRlCmluZGV4IDNkNDIyYTYx ZTQ4OTEuLjI1MWUwNTdmODI2ZmIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbnYtY29kZWMtaGVhZGVy cy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL252LWNvZGVjLWhlYWRlcnMvdGVtcGxhdGUKQEAgLTEs NiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdudi1jb2RlYy1oZWFkZXJzJwogcGtnbmFt ZT1udi1jb2RlYy1oZWFkZXJzCi12ZXJzaW9uPTExLjEuNS4xCit2ZXJzaW9uPTEyLjAuMTYuMAog cmV2aXNpb249MQogYnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBzaG9ydF9kZXNjPSJGRm1wZWcg dmVyc2lvbiBvZiBoZWFkZXJzIHJlcXVpcmVkIHRvIGludGVyZmFjZSB3aXRoIE52aWRpYXMgY29k ZWMgQVBJcyIKQEAgLTgsNyArOCw3IEBAIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9p ZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJNSVQiCiBob21lcGFnZT0iaHR0cDovL2dpdC52aWRlb2xh bi5vcmcvP3A9ZmZtcGVnL252LWNvZGVjLWhlYWRlcnMuZ2l0IgogZGlzdGZpbGVzPSJodHRwczov L2dpdGh1Yi5jb20vRkZtcGVnL252LWNvZGVjLWhlYWRlcnMvYXJjaGl2ZS9uJHt2ZXJzaW9ufS50 YXIuZ3oiCi1jaGVja3N1bT1kMDk1ZmJkNTZhYTkzNzcyNDcxYTMyM2JlMGViZTY1NTA0YTBmNDNm MDZjNzZhMzBiNmQyNWRhNzdiMDZhZTljCitjaGVja3N1bT0yYTE1MzNiNjVmNTVmOWRhNTI5NTZm YWYwNjI3ZWQzYjc0ODY4YWMwYzdmMjY5OTkwZWRkMjEzNjkxMTNiNDhmCiAKIHBvc3RfaW5zdGFs bCgpIHsKIAlzZWQgLW4gJzQsMjVwJyBpbmNsdWRlL2ZmbnZjb2RlYy9udkVuY29kZUFQSS5oID4g TElDRU5TRQoKRnJvbSAxNTU2NjExZDA2ZDcyODcwOGFkNWMzYjkzZDE2MzkxOGYzYzg1M2RmIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBGcmksIDMxIE1hciAyMDIzIDA5OjA4OjQwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwOTIv MTEzXSBvcGVuaW1hZ2VkZW5vaXNlOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3Br Z3Mvb3BlbmltYWdlZGVub2lzZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3BlbmltYWdl ZGVub2lzZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3BlbmltYWdlZGVub2lzZS90ZW1wbGF0ZQppbmRl eCBkYjVjY2RiMDU1Y2M5Li5jYjkwMDQ1YWZiNjM0IDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW5p bWFnZWRlbm9pc2UvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vcGVuaW1hZ2VkZW5vaXNlL3RlbXBs YXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb3BlbmltYWdlZGVub2lz ZScKIHBrZ25hbWU9b3BlbmltYWdlZGVub2lzZQogdmVyc2lvbj0xLjQuMwotcmV2aXNpb249MQor cmV2aXNpb249MgogYXJjaHM9Ing4Nl82NCoiCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2Vk ZXBlbmRzPSJpc3BjIHB5dGhvbjMiCgpGcm9tIGY4ODUyZDc2MTdmY2YwNjU0NjUzNTk1ZjRlMTIy ZTQ5YWNiOGZkNTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1 NUBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMyBBcHIgMjAyMyAyMzozMTo0NSAtMDQwMApTdWJqZWN0 OiBbUEFUQ0ggMDkzLzExM10gc2hvdGN1dDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBz cmNwa2dzL3Nob3RjdXQvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3Nob3RjdXQvdGVtcGxh dGUgYi9zcmNwa2dzL3Nob3RjdXQvdGVtcGxhdGUKaW5kZXggN2QyYWY3YjA0NzBiNS4uYzQxNmM5 MDZmZjczNCAxMDA2NDQKLS0tIGEvc3JjcGtncy9zaG90Y3V0L3RlbXBsYXRlCisrKyBiL3NyY3Br Z3Mvc2hvdGN1dC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3Ig J3Nob3RjdXQnCiBwa2duYW1lPXNob3RjdXQKIHZlcnNpb249MjMuMDUuMTQKLXJldmlzaW9uPTEK K3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURTSE9UQ1VU X1ZFUlNJT049JHt2ZXJzaW9ufSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDYtdG9v bHMtZGV2ZWwiCgpGcm9tIDJkZmI1MjY0MjMzNjRlOTRjYTk5NDRjNGY2MDVlMWM2MWZhZmY4OGUg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMyBBcHIgMjAyMyAyMzozMzozMCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk0 LzExM10gc2hpYm9rZW4yOiByZXZidW1wIGZvciBxdDUtNS4xNS44CgotLS0KIHNyY3BrZ3Mvc2hp Ym9rZW4yL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2ggfCAxICsKIHNy Y3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQog Y3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3Mvc2hpYm9rZW4yL3BhdGNoZXMvaW1wb3J0bGliLW1h Y2hpbmVyeS1ieXBhc3MucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3NoaWJva2VuMi9wYXRj aGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoIGIvc3JjcGtncy9zaGlib2tlbjIv cGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEy MDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi5lZmNmMzI0OWJkODg1Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9zaGlib2tlbjIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5w YXRjaApAQCAtMCwwICsxIEBACisuLi8uLi9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRs aWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtLWdpdCBhL3NyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlIGIvc3JjcGtncy9zaGlib2tlbjIv dGVtcGxhdGUKaW5kZXggMDg0ZWNjM2JhMWUxYy4uMmEyMTk5ODk5N2ViMSAxMDA2NDQKLS0tIGEv c3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxh dGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzaGlib2tlbjInCiBwa2du YW1lPXNoaWJva2VuMgogdmVyc2lvbj01LjE1LjcKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIF9w a2duYW1lPSJweXNpZGUtc2V0dXAtb3BlbnNvdXJjZS1zcmMtJHt2ZXJzaW9ufSIKIGJ1aWxkX3dy a3NyYz0ic291cmNlcy9zaGlib2tlbjIiCiBidWlsZF9zdHlsZT1jbWFrZQoKRnJvbSAwZDFmN2Ix OTA5MTk4OGQ0ZGQwZDYwZmYwOTQyYmRlOTMwNTQ4MjZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBNb24sIDMgQXByIDIwMjMg MjM6MzM6NTMgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5NS8xMTNdIHB5dGhvbjMtcHlzaWRlMjog dXBkYXRlIHRvIDUuMTUuOAoKLS0tCiAuLi4vcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5 cGFzcy5wYXRjaCAgICAgIHwgMTUgKysrKysrKysrKysrKysrCiBzcmNwa2dzL3B5dGhvbjMtcHlz aWRlMi90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgIHwgIDkgKysrKystLS0tCiAyIGZpbGVzIGNo YW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5 cGFzcy5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3BhdGNoZXMv aW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2ggYi9zcmNwa2dzL3B5dGhvbjMtcHlzaWRl Mi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjY0YzQyOTU4NDc3NmIKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnkt YnlwYXNzLnBhdGNoCkBAIC0wLDAgKzEsMTUgQEAKK1VzaW5nIHRoaXMgcHJldmVudHMgYW4gZXJy b3IgYXJvdW5kIGxpbmUgMjIwIGJlbG93IGl0LgorIkF0dHJpYnV0ZUVycm9yOiBtb2R1bGUgJ2lt cG9ydGxpYicgaGFzIG5vIGF0dHJpYnV0ZSAnbWFjaGluZXJ5JyIKK1RoZSBvbGQgYmFja3VwIGxv Z2ljIGlzIGluIHBsYWNlIGFuZCBjb21waWxlcyB3aXRob3V0IGlzc3Vlcy4KKy0tLSBhL3NvdXJj ZXMvc2hpYm9rZW4yL2xpYnNoaWJva2VuL2VtYmVkL3NpZ25hdHVyZV9ib290c3RyYXAucHkJMjAy My0wNC0wMiAyMzowOTozNC42ODg5MTI0MDIgLTA0MDAKKysrKyBiL3NvdXJjZXMvc2hpYm9rZW4y L2xpYnNoaWJva2VuL2VtYmVkL3NpZ25hdHVyZV9ib290c3RyYXAucHkJMjAyMy0wNC0wMiAyMzox MDowMy4zOTU1Mjk1ODIgLTA0MDAKK0BAIC0xNzAsOSArMTcwLDYgQEAKKworICAgICAjICd6aXBz dHJpbmdfc2VxdWVuY2UnIGNvbWVzIGZyb20gc2lnbmF0dXJlLmNwcAorICAgICB6aXBieXRlcyA9 IGJhc2U2NC5iNjRkZWNvZGUoJycuam9pbih6aXBzdHJpbmdfc2VxdWVuY2UpKQorLSAgICBpZiBz eXMudmVyc2lvbl9pbmZvWzBdID49IDM6CistICAgICAgICB2emlwID0gemlwZmlsZS5aaXBGaWxl KGlvLkJ5dGVzSU8oemlwYnl0ZXMpKQorLSAgICAgICAgcmV0dXJuIHN5cy5tZXRhX3BhdGgsIEVt YmVkZGFibGVaaXBJbXBvcnRlcih2emlwKQorCisgICAgICMgT2xkIHZlcnNpb24gZm9yIFB5dGhv biAyLjcsIG9ubHkuCisgICAgIGltcG9ydCBvcwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9weXRob24z LXB5c2lkZTIvdGVtcGxhdGUgYi9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90ZW1wbGF0ZQppbmRl eCA1MGU2ZmYyNjBkM2I1Li5iNTBlNjJiZDIxNWQ0IDEwMDY0NAotLS0gYS9zcmNwa2dzL3B5dGhv bjMtcHlzaWRlMi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3B5dGhvbjMtcHlzaWRlMi90ZW1wbGF0 ZQpAQCAtMSwxMSArMSwxMiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncHl0aG9uMy1weXNpZGUy JwogcGtnbmFtZT1weXRob24zLXB5c2lkZTIKLXZlcnNpb249NS4xNS41Ci1yZXZpc2lvbj0yCit2 ZXJzaW9uPTUuMTUuOAorcmV2aXNpb249MQogX3BrZ25hbWU9InB5c2lkZS1zZXR1cC1vcGVuc291 cmNlLXNyYy0ke3ZlcnNpb259IgogYnVpbGRfd3Jrc3JjPSJzb3VyY2VzL3B5c2lkZTIiCiBidWls ZF9zdHlsZT1jbWFrZQotY29uZmlndXJlX2FyZ3M9Ii1EUFlUSE9OX0VYRUNVVEFCTEU9L3Vzci9i aW4vcHl0aG9uIgorY29uZmlndXJlX2FyZ3M9Ii1EUFlUSE9OX0VYRUNVVEFCTEU9L3Vzci9iaW4v cHl0aG9uIC1EQ01BS0VfQlVJTERfVFlQRT1Ob25lCisgLURCVUlMRF9URVNUUz1PRkYiCiBob3N0 bWFrZWRlcGVuZHM9ImNtYWtlIHB5dGhvbjMgc2hpYm9rZW4yIgogbWFrZWRlcGVuZHM9InB5dGhv bjMtZGV2ZWwgbGlic2hpYm9rZW4yLWRldmVsIHF0NS1kZXZlbAogIHF0NS1tdWx0aW1lZGlhLWRl dmVsIHF0NS10b29scy1kZXZlbCBxdDUtcGx1Z2luLW15c3FsIHF0NS1wbHVnaW4tb2RiYwpAQCAt MjMsNyArMjQsNyBAQCBtYWludGFpbmVyPSJ5b3BpdG8gPHBpZXJyZS5ib3VyZ2luQGZyZWUuZnI+ IgogbGljZW5zZT0iTEdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly93aWtpLnF0 LmlvL1F0X2Zvcl9QeXRob24iCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZG93bmxvYWQucXQuaW8vb2Zm aWNpYWxfcmVsZWFzZXMvUXRGb3JQeXRob24vcHlzaWRlMi9QeVNpZGUyLSR7dmVyc2lvbn0tc3Jj LyR7X3BrZ25hbWV9LnRhci54eiIKLWNoZWNrc3VtPTM5MjBhNGZiMzUzMzAwMjYwYzliYzQ2ZmY3 MGYxZmI5NzVjNWU3ZWZhMjJlOWQ1MTIyMjU4ODkyOGNlMTliMzMKK2NoZWNrc3VtPTIzNDM2MzAy YzhkZWI1YjRjYmM3NjliMjA1ZDA5NjA0ZTM4YmE4M2I0MDcwOGVmY2NiN2JkOGM5YWY2ZjZiNWQK IAogYnVpbGRfb3B0aW9ucz0id2ViZW5naW5lIgogZGVzY19vcHRpb25fd2ViZW5naW5lPSJCdWls ZCBRdDUgV2ViRW5naW5lIGJpbmRpbmdzIgoKRnJvbSA0YWI2YzU4OWE5YjMyZTQ1YjNlZDhlOTk0 OTkxZmNjYWY3YWE1MDZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDQgQXByIDIwMjMgMTE6MTQ6MzUgLTA0MDAKU3Vi amVjdDogW1BBVENIIDA5Ni8xMTNdIGtvbnF1ZXJvcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoK LS0tCiBzcmNwa2dzL2tvbnF1ZXJvci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQs IDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2tv bnF1ZXJvci90ZW1wbGF0ZSBiL3NyY3BrZ3Mva29ucXVlcm9yL3RlbXBsYXRlCmluZGV4IGQ4ZDBl NzNhNzhhYjIuLmM1YmRiYTYwMWQzYzMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva29ucXVlcm9yL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3Mva29ucXVlcm9yL3RlbXBsYXRlCkBAIC0xLDExICsxLDExIEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdrb25xdWVyb3InCiBwa2duYW1lPWtvbnF1ZXJvcgogdmVy c2lvbj0yMy4wNC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQog Y29uZmlndXJlX2FyZ3M9Ii1EREVTS1RPUFRPSlNPTl9FWEVDVVRBQkxFPS91c3IvYmluL2Rlc2t0 b3B0b2pzb24iCiBob3N0bWFrZWRlcGVuZHM9ImV4dHJhLWNtYWtlLW1vZHVsZXMgcHl0aG9uMyBx dDUtaG9zdC10b29scyBxdDUtcW1ha2Uga2RvY3Rvb2xzCi1rY29yZWFkZG9ucyBrY29uZmlnIGdl dHRleHQiCisga2NvcmVhZGRvbnMga2NvbmZpZyBnZXR0ZXh0IgogbWFrZWRlcGVuZHM9InF0NS1k ZXZlbCBxdDUtd2ViZW5naW5lLWRldmVsIHF0NS1kZWNsYXJhdGl2ZS1kZXZlbAogIHF0NS13ZWJj aGFubmVsLWRldmVsIHF0NS1sb2NhdGlvbi1kZXZlbCBrY211dGlscy1kZXZlbCBrZGVsaWJzNHN1 cHBvcnQtZGV2ZWwKICBrYXJjaGl2ZS1kZXZlbCBraHRtbC1kZXZlbCBrZGVzdS1kZXZlbCBrYWN0 aXZpdGllczUtZGV2ZWwiCgpGcm9tIDJjYzNhYjQyZGI0OTg1ZGZjZmE4ZWU4MTEzMmNjNzY1NWY5 ZGM3ZDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFR1ZSwgNCBBcHIgMjAyMyAxMToxNDo1OCAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDk3LzExM10gcXQ1LXNwZWVjaDogcmV2YnVtcCBmb3IgcXQ1LTUuMTUuOAoKLS0tCiBzcmNw a2dzL3F0NS1zcGVlY2gvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS1zcGVlY2gvdGVt cGxhdGUgYi9zcmNwa2dzL3F0NS1zcGVlY2gvdGVtcGxhdGUKaW5kZXggM2VjZDEwZDUwNjUwYy4u MmQ3ZDRkNGQyNDUzNSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUtc3BlZWNoL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvcXQ1LXNwZWVjaC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ3F0NS1zcGVlY2gnCiBwa2duYW1lPXF0NS1zcGVlY2gKIHZlcnNpb249NS4x NS43Ci1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBfY29tbWl0PWQzMmY0YTQ3OWQzOGExMWY1NDc1 OTgwMDRiOTc1ZjQzNTY0MjRhMTYKIGJ1aWxkX3N0eWxlPXFtYWtlCiBjb25maWd1cmVfYXJncz0i LS0gLWZsaXRlIC1mbGl0ZS1hbHNhIC1zcGVlY2hkIgoKRnJvbSBiNDBlODg0YjRlZGJlYjFhZDNi MDIwY2MyNzFlODkwZDgwYmQwYmQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDQgQXByIDIwMjMgMTg6Mzg6NTAgLTA0 MDAKU3ViamVjdDogW1BBVENIIDA5OC8xMTNdIHF0NS1zdHlsZXBsdWdpbnM6IHJldmJ1bXAgZm9y IHF0NS01LjE1LjgKCi0tLQogc3JjcGtncy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBsYXRlIGIvc3JjcGtncy9xdDUtc3R5 bGVwbHVnaW5zL3RlbXBsYXRlCmluZGV4IDk2ZWQ5N2QxMmNkMjQuLjMwZDkzNjYwYTJhNGUgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1LXN0eWxlcGx1Z2lucy90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdxdDUtc3R5bGVwbHVnaW5zJwogcGtnbmFtZT1xdDUtc3R5bGVwbHVnaW5zCiB2ZXJz aW9uPTUuMC4wCi1yZXZpc2lvbj0yMAorcmV2aXNpb249MjEKIF9naXRyZXY9MzM1ZGJlY2UxMDNl MmNiZjZjN2NmODE5YWI2NjcyYzI5NTZiMTdiMwogYnVpbGRfc3R5bGU9cW1ha2UKIGhvc3RtYWtl ZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUtcW1ha2UiCgpGcm9tIDJiYjdi ZGFiMzUxZjIzODQ0OWI0ZmY1YzM0NTQ1NDk3M2YyYzJmNzcgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgNyBNYXkgMjAy MyAyMDoxNDoxNCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk5LzExM10gbWx0NzogcmV2YnVtcCBm b3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZSB8IDIgKy0KIHNy Y3BrZ3MvbWx0Ny90ZW1wbGF0ZSAgICAgIHwgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2Vy dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QtbGliYXYv dGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQppbmRleCAwNGMzOWJmZjE0ODk2 Li44YzcyZmMzZTk3ZWVlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ2dzdC1saWJhdicKIHBrZ25hbWU9Z3N0LWxpYmF2CiB2ZXJzaW9uPTEuMjIu MgotcmV2aXNpb249MgorcmV2aXNpb249MQogYnVpbGRfc3R5bGU9bWVzb24KIGhvc3RtYWtlZGVw ZW5kcz0icGtnLWNvbmZpZyB5YXNtIgogbWFrZWRlcGVuZHM9Im9yYy1kZXZlbCBnc3QtcGx1Z2lu cy1iYXNlMS1kZXZlbCBmZm1wZWctZGV2ZWwiCmRpZmYgLS1naXQgYS9zcmNwa2dzL21sdDcvdGVt cGxhdGUgYi9zcmNwa2dzL21sdDcvdGVtcGxhdGUKaW5kZXggOWZiN2Y2MGQ2OTJlMS4uY2NhMGVi NjhjZmMzMSAxMDA2NDQKLS0tIGEvc3JjcGtncy9tbHQ3L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv bWx0Ny90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21sdDcn CiBwa2duYW1lPW1sdDcKIHZlcnNpb249Ny4xNC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBi dWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EU1dJR19QWVRIT049T04iCiBob3N0 bWFrZWRlcGVuZHM9ImRveHlnZW4gcGtnLWNvbmZpZyBsYWRzcGEtc2RrIHN3aWcgcHl0aG9uMyB3 aGljaAoKRnJvbSBmNzQ3OTU5OTczMTgwMWE5ZGY5ZjVjODY3OTdlZDY0NmMwYWI3ZmM4IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBTdW4sIDcgTWF5IDIwMjMgMjA6MTU6MDMgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwMC8xMTNd IHF0Ni13ZWJlbmdpbmU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9xdDYt d2ViZW5naW5lL3RlbXBsYXRlIHwgMyArKy0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMo KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvdGVt cGxhdGUgYi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvdGVtcGxhdGUKaW5kZXggNGUyMmNiNmU4ODYz OC4uNDM3NzhiNTY4ZDNmMCAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDYtd2ViZW5naW5lL3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0Ni13ZWJlbmdpbmUnCiBwa2duYW1lPXF0Ni13ZWJlbmdp bmUKIHZlcnNpb249Ni41LjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNt YWtlCiBjb25maWd1cmVfYXJncz0iCiAgLURRVF9GRUFUVVJFX3dlYmVuZ2luZV9zeXN0ZW1fZmZt cGVnPU9OCkBAIC0xNDUsNiArMTQ1LDcgQEAgcHJlX2luc3RhbGwoKSB7CiB9CiAKIHBvc3RfaW5z dGFsbCgpIHsKKwl2bGljZW5zZSBMSUNFTlNFUy9CU0QtMy1DbGF1c2UudHh0CiAJbG9jYWwgX2Zp bGUKIAlmaW5kICIke0RFU1RESVJ9Ii91c3IvbGliL3F0Ni9leGFtcGxlcyBcCiAJCS1wYXRoICcq L2xpYi9xdDYvKiovbGliL3F0Ni8qJyAtdHlwZSBmIHwKCkZyb20gYWYwZmM3MTg2MTk1ZjJkZDU0 YWExZDQ5YzYwOGFmM2I2OTMzYTNiMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCA3IE1heSAyMDIzIDIwOjE1OjI5IC0w NDAwClN1YmplY3Q6IFtQQVRDSCAxMDEvMTEzXSB0cmFja2VyLW1pbmVyczogcmV2YnVtcCBmb3Ig ZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3RyYWNrZXItbWluZXJzL3RlbXBsYXRlIHwgMiArLQog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy90cmFja2VyLW1pbmVycy90ZW1wbGF0ZSBiL3NyY3BrZ3MvdHJhY2tlci1taW5l cnMvdGVtcGxhdGUKaW5kZXggOGMwMDVkNjk3ZmE0Mi4uYTZlNWFhNTc3NzAyNCAxMDA2NDQKLS0t IGEvc3JjcGtncy90cmFja2VyLW1pbmVycy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3RyYWNrZXIt bWluZXJzL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAndHJh Y2tlci1taW5lcnMnCiBwa2duYW1lPXRyYWNrZXItbWluZXJzCiB2ZXJzaW9uPTMuNS4wCi1yZXZp c2lvbj0zCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1tZXNvbgogYnVpbGRfaGVscGVyPXFlbXUK ICMgbWlzc2luZyBsaWJncnNzIGZvciBtaW5lcl9yc3MKCkZyb20gYWFjZTA5YjcxNmFkYWQ4YTg4 MzdjZTgyMzlhYjdhZTc4MjM4YjE0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCA3IE1heSAyMDIzIDIwOjIwOjU4IC0w NDAwClN1YmplY3Q6IFtQQVRDSCAxMDIvMTEzXSBtcGQ6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogc3JjcGtncy9tcGQvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNl cnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21wZC90ZW1wbGF0 ZSBiL3NyY3BrZ3MvbXBkL3RlbXBsYXRlCmluZGV4IDlkYmQ0YzkzNWFjYzUuLjlmMDU4YjYyZGYy ZjMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbXBkL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbXBkL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbXBkJwogcGtnbmFt ZT1tcGQKIHZlcnNpb249MC4yMy4xMwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5 bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdzPSItRG9wdXM9ZW5hYmxlZCAtRG1pa21vZD1lbmFibGVk IC1EbmVpZ2hib3I9dHJ1ZQogIC1Ec291bmRjbG91ZD1lbmFibGVkIC1EcGlwZT10cnVlIC1EdHdv bGFtZT1lbmFibGVkIC1EYnppcDI9ZW5hYmxlZAoKRnJvbSA4MTQ4YzA2YzMzNmYzNjYxMDI2YjM1 MWQ4NzQ2YjVlYmRiOWEzMWY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUaHUsIDExIE1heSAyMDIzIDE0OjA1OjE0IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAxMDMvMTEzXSBvcGVubXc6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogc3JjcGtncy9vcGVubXcvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBp bnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29wZW5tdy90 ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3Blbm13L3RlbXBsYXRlCmluZGV4IGUzNzcxYzdhYWYxYTMuLjNj YmYyMGIwNjU3NzAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3Blbm13L3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3Mvb3Blbm13L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnb3Blbm13JwogcGtnbmFtZT1vcGVubXcKIHZlcnNpb249MC40Ny4wCi1yZXZpc2lvbj01City ZXZpc2lvbj02CiBidWlsZF9zdHlsZT1jbWFrZQogX3JlY2FzdF9jb21taXQ9ZTc1YWRmODZmOTFl YjMwODIyMjAwODVlNDJkZGE2MjY3OWY5YTNlYQogX2J1bGxldF90YWc9My4xNwoKRnJvbSAzYWU0 NzhmNTQ1MzE5YjBhMDg0ZTVkZTYyYTA0MTgyNDc3ZGI4NDIwIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDIxIE1heSAy MDIzIDEyOjQ0OjExIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDQvMTEzXSBlbGVjdHJvbjI0OiBy ZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZWxlY3Ryb24yNC90ZW1wbGF0ZSB8 IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24yNC90ZW1wbGF0ZSBiL3NyY3BrZ3MvZWxlY3Ryb24y NC90ZW1wbGF0ZQppbmRleCBiZGFhNTZhZGM4YTY1Li5mZjNkNWUzZWYzODE5IDEwMDY0NAotLS0g YS9zcmNwa2dzL2VsZWN0cm9uMjQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9lbGVjdHJvbjI0L3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZWxlY3Ryb24yNCcK IHBrZ25hbWU9ZWxlY3Ryb24yNAogdmVyc2lvbj0yNC4zLjAKLXJldmlzaW9uPTEKK3JldmlzaW9u PTIKIF9ub2RldmVyPTE4LjE0LjAKIF9jaHJvbWl1bXZlcj0xMTIuMC41NjE1LjE2NQogYXJjaHM9 Ing4Nl82NCogYWFyY2g2NCoiCgpGcm9tIDI2MGEwZGUwN2I4YWJiMjY4YzI0NDk5MDYwMjBlY2Vm NTMzOTk0MDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFNhdCwgMyBKdW4gMjAyMyAwODoyMDoyMiAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMTA1LzExM10gZ3RrNDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L2d0azQvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2d0azQvdGVtcGxhdGUgYi9zcmNwa2dz L2d0azQvdGVtcGxhdGUKaW5kZXggYjMxOGI3YmFlMWRkOS4uZTNiZGU0YTUwZTU0NyAxMDA2NDQK LS0tIGEvc3JjcGtncy9ndGs0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3RrNC90ZW1wbGF0ZQpA QCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2d0azQnCiBwa2duYW1lPWd0azQK IHZlcnNpb249NC4xMC40Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNv bgogYnVpbGRfaGVscGVyPSJnaXIiCiBjb25maWd1cmVfYXJncz0iLURtYW4tcGFnZXM9dHJ1ZSAt RGd0a19kb2M9dHJ1ZSAtRGJ1aWxkLXRlc3RzPWZhbHNlCgpGcm9tIDJmZmY3Nzk1YTExN2I3MDFm OGFlZDk2ZjFiODViNzQ5ZjhmZTM0ZTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgNCBKdW4gMjAyMyAxMToyNTo1MCAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMTA2LzExM10gZWxlY3Ryb24xOTogcmV2YnVtcCBmb3IgZmZt cGVnLTYuMAoKLS0tCiBzcmNwa2dzL2VsZWN0cm9uMTkvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUg Y2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNw a2dzL2VsZWN0cm9uMTkvdGVtcGxhdGUgYi9zcmNwa2dzL2VsZWN0cm9uMTkvdGVtcGxhdGUKaW5k ZXggMzJjZTMwMWU3MzBjZi4uYWI3ZjMwOGY1ZThhNiAxMDA2NDQKLS0tIGEvc3JjcGtncy9lbGVj dHJvbjE5L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xOS90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2VsZWN0cm9uMTknCiBwa2duYW1lPWVsZWN0 cm9uMTkKIHZlcnNpb249MTkuMC44Ci1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBfbm9kZXZlcj0x Ni4xNC4yCiBfY2hyb21pdW12ZXI9MTAyLjAuNTAwNS4xMjUKIGFyY2hzPSJ4ODZfNjQqIGFhcmNo NjQqIHBwYzY0bGUqIgoKRnJvbSA0MzZjMzU5M2I0ZGUxMzA2ZmVkYzZjOTk3MGU1NGZlMmU3NmE5 NzNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBTdW4sIDQgSnVuIDIwMjMgMTE6Mjg6MjYgLTA0MDAKU3ViamVjdDogW1BBVENI IDEwNy8xMTNdIHNpcmlsOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvc2ly aWwvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3NpcmlsL3RlbXBsYXRlIGIvc3JjcGtncy9z aXJpbC90ZW1wbGF0ZQppbmRleCA4NDMzMmY3OWQwNjBkLi42Mjc1MGRkMjQ3NTQ4IDEwMDY0NAot LS0gYS9zcmNwa2dzL3NpcmlsL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc2lyaWwvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzaXJpbCcKIHBrZ25hbWU9c2ly aWwKIHZlcnNpb249MC45LjEyCi1yZXZpc2lvbj0xMAorcmV2aXNpb249MTEKIGJ1aWxkX3N0eWxl PWdudS1jb25maWd1cmUKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBpbnRsdG9vbCBhdXRv Y29uZiBhdXRvbWFrZSBnZXR0ZXh0LWRldmVsIgogbWFrZWRlcGVuZHM9ImZmdHctZGV2ZWwgbGli Y29uZmlnLWRldmVsIGxpYm9wZW5jdi1kZXZlbCBsaWJmZm1zMi1kZXZlbAoKRnJvbSAwYjk5MDMy N2I5YTc4ZDg4NGRmYmVjY2E4MzM4MWNlYzg4ZTg1MjJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDQgSnVuIDIwMjMg MTE6Mjk6MDggLTA0MDAKU3ViamVjdDogW1BBVENIIDEwOC8xMTNdIHRlbGVncmFtLWRlc2t0b3A6 IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3Rl bXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlIGIvc3Jj cGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlCmluZGV4IGYxMTRiMjM0MWRjNWQuLjlkYjlm ODBjMWE1M2YgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL3RlbGVncmFtLWRlc2t0b3AvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICd0ZWxlZ3JhbS1kZXNrdG9wJwogcGtnbmFtZT10ZWxlZ3JhbS1k ZXNrdG9wCiB2ZXJzaW9uPTQuOC4xCi1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBidWlsZF9zdHls ZT1jbWFrZQogYnVpbGRfaGVscGVyPSJxZW11IgogY29uZmlndXJlX2FyZ3M9Ii1EVERFU0tUT1Bf QVBJX0lEPTIwOTIzNQoKRnJvbSAzMmJkZGZjZTc1MmY1NmQ2MmFlNzczMWExYmQzMmY4MzMyZTRj MTlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBTYXQsIDEwIEp1biAyMDIzIDAwOjQwOjM5IC0wNDAwClN1YmplY3Q6IFtQQVRD SCAxMDkvMTEzXSBmcmVlY2FkOiByZXZidW1wIGZvciBxdDUtd2ViZW5naW5lLTUuMTUuMTMKCi0t LQogc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mcmVlY2FkL3Rl bXBsYXRlIGIvc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlCmluZGV4IGE0YTNmNWY3NmIyOWEuLjg2 MDhkMTY3MGM4N2YgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZnJlZWNhZC90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL2ZyZWVjYWQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdmcmVlY2FkJwogcGtnbmFtZT1mcmVlY2FkCiB2ZXJzaW9uPTAuMjAuMgotcmV2aXNpb249 NQorcmV2aXNpb249NgogYnVpbGRfc3R5bGU9Y21ha2UKIAogX2luc3RfcHJlZml4PS91c3IvbGli LyR7cGtnbmFtZX0KCkZyb20gYjI4NDIwYWIwZDA3Y2YxODM5YWExMmM0YjI2ZjU3ODQ4OGU2Zjhj MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogU2F0LCAxMCBKdW4gMjAyMyAwMDo1NzowOSAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MTEwLzExM10gcXQ2LW11bHRpbWVkaWE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3Jj cGtncy9xdDYtbXVsdGltZWRpYS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGlu c2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2LW11bHRp bWVkaWEvdGVtcGxhdGUgYi9zcmNwa2dzL3F0Ni1tdWx0aW1lZGlhL3RlbXBsYXRlCmluZGV4IGE2 ODMyZmRkNjliZmUuLmM5ZmZhYzkxNGFiOGYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ2LW11bHRp bWVkaWEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDYtbXVsdGltZWRpYS90ZW1wbGF0ZQpAQCAt MSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0Ni1tdWx0aW1lZGlhJwogcGtnbmFt ZT1xdDYtbXVsdGltZWRpYQogdmVyc2lvbj02LjUuMAotcmV2aXNpb249MgorcmV2aXNpb249Mwog YnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFFUX0ZFQVRVUkVfZ3N0cmVhbWVy PU9OIgogaG9zdG1ha2VkZXBlbmRzPSJwZXJsIHF0Ni1kZWNsYXJhdGl2ZS1ob3N0LXRvb2xzIHBr Zy1jb25maWcgcXQ2LXNoYWRlcnRvb2xzIgoKRnJvbSA1MjI3YzQwMDc5YzU0MzYyNzdlODk5MGM0 OWRkZDQ1NjZiOWM3Mzk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBUaHUsIDIyIEp1biAyMDIzIDEwOjI1OjAyIC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAxMTEvMTEzXSBrZGVubGl2ZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoK LS0tCiBzcmNwa2dzL2tkZW5saXZlL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9rZGVubGl2 ZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mva2RlbmxpdmUvdGVtcGxhdGUKaW5kZXggODljMGRjZmI4NTc3 Zi4uNzU0OTViM2EzNTg2OSAxMDA2NDQKLS0tIGEvc3JjcGtncy9rZGVubGl2ZS90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL2tkZW5saXZlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAna2RlbmxpdmUnCiBwa2duYW1lPWtkZW5saXZlCiB2ZXJzaW9uPTIzLjA0LjIK LXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVu ZHM9IgogIGV4dHJhLWNtYWtlLW1vZHVsZXMga2NvbmZpZyBrY29yZWFkZG9ucyBrZG9jdG9vbHMg cGtnLWNvbmZpZyBweXRob24zCgpGcm9tIDI2ZWQ5ODMyNzgyMmQ1OGQ0ZDY3ZGQ1NjljZGY5NDFi ZTJlYzYzY2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAwOToxODoyMyAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMTEyLzExM10gZ21pYzogcmV2YnVtcCBmb3Igb3BlbmN2LTQuNy4wCgotLS0KIHNyY3Br Z3MvZ21pYy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ21pYy90ZW1wbGF0ZSBiL3NyY3Br Z3MvZ21pYy90ZW1wbGF0ZQppbmRleCAwYmI0MDM0ZDVjYzg2Li44MDg5NTNlOWI1NDNjIDEwMDY0 NAotLS0gYS9zcmNwa2dzL2dtaWMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nbWljL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ21pYycKIHBrZ25hbWU9Z21p YwogdmVyc2lvbj0zLjEuNgotcmV2aXNpb249NAorcmV2aXNpb249NQogX3phcnRfaGFzaD0zNGVi ZjZjY2UwYmFmYjk4YWJlNTdjZWM4M2M0YTAyY2QxYWJlY2EwCiBjcmVhdGVfd3Jrc3JjPXllcwog YnVpbGRfd3Jrc3JjPSJzcmMiCgpGcm9tIDMxOGUwYzUyNWY5YWZhOGQ5MDM2ZGJiYTc2Y2FmY2Mw YTk1MmRlNGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAwOToyOTo1MiAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMTEzLzExM10gc3luZmlnc3R1ZGlvOiByZXZidW1wIGZvciBzeW5maWcgbWx0NwoKLS0t CiBzcmNwa2dzL3N5bmZpZ3N0dWRpby90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3luZmln c3R1ZGlvL3RlbXBsYXRlIGIvc3JjcGtncy9zeW5maWdzdHVkaW8vdGVtcGxhdGUKaW5kZXggYWYx YzVhMjk2ZWYwZi4uMDllNDQyZGE5YTY4MCAxMDA2NDQKLS0tIGEvc3JjcGtncy9zeW5maWdzdHVk aW8vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zeW5maWdzdHVkaW8vdGVtcGxhdGUKQEAgLTIsNyAr Miw3IEBACiAjIFNob3VsZCBiZSBrZXB0IGluIHN5bmMgd2l0aCAnc3luZmlnJyBhbmQgJ0VUTCcK IHBrZ25hbWU9c3luZmlnc3R1ZGlvCiB2ZXJzaW9uPTEuNC40Ci1yZXZpc2lvbj0zCityZXZpc2lv bj00CiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1kaXNhYmxl LXVwZGF0ZS1taW1lZGIiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgaW50bHRvb2wgZ2V0 dGV4dCBzeW5maWciCg== --===============1161422915385693635==--