From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail05.groups.io (mail05.groups.io [45.79.224.7]) by spool.mail.gandi.net (Postfix) with ESMTPS id 14EA4740035 for ; Fri, 3 Jan 2025 21:39:19 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=xBs85cI0tjO24Yh3fuPtSHtibo03ZFafVfuwNDSw+8g=; c=relaxed/simple; d=groups.io; h=Subject:To:From:User-Agent:MIME-Version:Date:Message-ID:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Type; s=20240830; t=1735940359; v=1; x=1736199558; b=FdGme7ctLnoDqtDKH7D7AH3uIQzm8imJbSzuy8nd5zGSKKvbx6P7DyPoaWdl+wITUGwP1Ab+ TRCibna1COXwFYCWgLtnqU9F5XmVjiD6yZLTcq/hMaeHnHErJrYsbbJmFGCHHjBkNILY6f2VVqn XTf3n57OcadylJatAOQbIBpe8Wk+5NUaC1xkk38BuTSn9ZRWhBWy/Y+8edf5Sms71uHZKjSOGiQ 8p0pgUygUqJKA73BcYG4OoagYdMjdvd2Qd9w1Y3PLOTP+hbLAZ4/19sjL8yN8GI4y7YZFuZS1RA x5N+GQq6XPp5c6r4Puf+dv9rQ60aBANaEFc128upAMZtQ== X-Received: by 127.0.0.2 with SMTP id 5DE5YY7687511xQSTGHi78We; Fri, 03 Jan 2025 13:39:18 -0800 Subject: [edk2-devel] [staging/usb_iad] MdeModulePkg UsbBusDxe: Add support for USB Interface Association To: devel@edk2.groups.io From: "olegi via groups.io" X-Originating-Location: US (63.147.10.75) X-Originating-Platform: Windows Firefox 133 User-Agent: GROUPS.IO Web Poster MIME-Version: 1.0 Date: Fri, 03 Jan 2025 13:39:12 -0800 Message-ID: <6rTt.1735940352524703631.nU95@groups.io> Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,olegi@ami.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: kI57GjxYBv9FSIOOhpVaYInix7686176AA= Content-Type: multipart/mixed; boundary="AEXyGVcRQmhLRfIIayO1" X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20240830 header.b=FdGme7ct; dmarc=pass (policy=none) header.from=groups.io; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 45.79.224.7 as permitted sender) smtp.mailfrom=bounce@groups.io --AEXyGVcRQmhLRfIIayO1 Content-Type: multipart/alternative; boundary="IcDbJPYFnI9WHjfQZVOo" --IcDbJPYFnI9WHjfQZVOo Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable USB Interface Association is a group of UsbIo that implement a USB function= . UEFI device driver manages multiple UsbIo instances. Examples of such dev= ices are: USB camera, USB serial, USB network, etc. Current approach for supporting these devices is to respond on UsbIo instal= lation and analyze if the current UsbIo belongs to the USB association. Thi= s algorithm is based on assumptions that may not be correct for different d= evice configurations. Having USB association protocol that reports its asso= ciates (UsbIo) simplifies the USB device driver. For the USB configurations that implement USB association the UsbDxeBus dri= ver will: * create USB association device * install device path * install USB association IO protocol Request to create edk2-staging/usb_iad branch, patch is attached. -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#120949): https://edk2.groups.io/g/devel/message/120949 Mute This Topic: https://groups.io/mt/110414302/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- --IcDbJPYFnI9WHjfQZVOo Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable
USB Interface Association is a group of UsbIo that implement a USB fun= ction. UEFI device driver manages multiple UsbIo instances. Examples of suc= h devices are: USB camera, USB serial, USB network, etc.
Current approach for supporting these devices is to respond on UsbIo i= nstallation and analyze if the current UsbIo belongs to the USB association= . This algorithm is based on assumptions that may not be correct for differ= ent device configurations. Having USB association protocol that reports its= associates (UsbIo) simplifies the USB device driver.
 
For the USB configurations that implement USB association the UsbDxeBu= s driver will:
  • create USB association device
  • install device path
  • install USB association IO protocol
Request to create edk2-staging/usb_iad branch, patch is attached.
_._,_._,_

Groups.io Links:

=20 You receive all messages sent to this group. =20 =20

View/Reply Online (#120949) | =20 | Mute= This Topic | New Topic
Your Subscriptio= n | Contact Group Owner | Unsubscribe [rebecca@openfw.io]

_._,_._,_
--IcDbJPYFnI9WHjfQZVOo-- --AEXyGVcRQmhLRfIIayO1 Content-Type: application/octet-stream; name="diff.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="diff.patch" ZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9CdXMvVXNiL1VzYkJ1c0R4ZS9Vc2JCdXMuaCBiL01k ZU1vZHVsZVBrZy9CdXMvVXNiL1VzYkJ1c0R4ZS9Vc2JCdXMuaAppbmRleCAyMWEyNDIxOGZjLi5h ZjFmZWQxYmM0IDEwMDY0NAotLS0gYS9NZGVNb2R1bGVQa2cvQnVzL1VzYi9Vc2JCdXNEeGUvVXNi QnVzLmgKKysrIGIvTWRlTW9kdWxlUGtnL0J1cy9Vc2IvVXNiQnVzRHhlL1VzYkJ1cy5oCkBAIC0z LDYgKzMsNyBAQAogICAgIFVzYiBCdXMgRHJpdmVyIEJpbmRpbmcgYW5kIEJ1cyBJTyBQcm90b2Nv bC4NCiANCiBDb3B5cmlnaHQgKGMpIDIwMDQgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs IHJpZ2h0cyByZXNlcnZlZC48QlI+DQorQ29weXJpZ2h0IChjKSAyMDI1LCBBbWVyaWNhbiBNZWdh dHJlbmRzIEludGVybmF0aW9uYWwsIExMQy4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQogU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCiANCiAqKi8NCkBAIC0x NSw2ICsxNiw3IEBAIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50 CiAjaW5jbHVkZSA8UHJvdG9jb2wvVXNiMkhvc3RDb250cm9sbGVyLmg+DQogI2luY2x1ZGUgPFBy b3RvY29sL1VzYkhvc3RDb250cm9sbGVyLmg+DQogI2luY2x1ZGUgPFByb3RvY29sL1VzYklvLmg+ DQorI2luY2x1ZGUgPFByb3RvY29sL1VzYkFzc29jaWF0aW9uSW8uaD4NCiAjaW5jbHVkZSA8UHJv dG9jb2wvRGV2aWNlUGF0aC5oPg0KIA0KICNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4NCkBA IC0yOSwxMCArMzEsMTEgQEAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1Q YXRlbnQKIA0KICNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL1VzYi5oPg0KIA0KLXR5cGVkZWYg c3RydWN0IF9VU0JfREVWSUNFICAgICBVU0JfREVWSUNFOw0KLXR5cGVkZWYgc3RydWN0IF9VU0Jf SU5URVJGQUNFICBVU0JfSU5URVJGQUNFOw0KLXR5cGVkZWYgc3RydWN0IF9VU0JfQlVTICAgICAg ICBVU0JfQlVTOw0KLXR5cGVkZWYgc3RydWN0IF9VU0JfSFVCX0FQSSAgICBVU0JfSFVCX0FQSTsN Cit0eXBlZGVmIHN0cnVjdCBfVVNCX0RFVklDRSAgICAgICBVU0JfREVWSUNFOw0KK3R5cGVkZWYg c3RydWN0IF9VU0JfSU5URVJGQUNFICAgIFVTQl9JTlRFUkZBQ0U7DQordHlwZWRlZiBzdHJ1Y3Qg X1VTQl9CVVMgICAgICAgICAgVVNCX0JVUzsNCit0eXBlZGVmIHN0cnVjdCBfVVNCX0hVQl9BUEkg ICAgICBVU0JfSFVCX0FQSTsNCit0eXBlZGVmIHN0cnVjdCBfVVNCX0FTU09DSUFUSU9OICBVU0Jf QVNTT0NJQVRJT047DQogDQogI2luY2x1ZGUgIlVzYlV0aWxpdHkuaCINCiAjaW5jbHVkZSAiVXNi RGVzYy5oIg0KQEAgLTEzMiw4ICsxMzUsOSBAQCB0eXBlZGVmIHN0cnVjdCBfVVNCX0hVQl9BUEkg ICAgVVNCX0hVQl9BUEk7CiAvLw0KICNkZWZpbmUgIFVTQl9CVVNfVFBMICBUUExfTk9USUZZDQog DQotI2RlZmluZSAgVVNCX0lOVEVSRkFDRV9TSUdOQVRVUkUgIFNJR05BVFVSRV8zMiAoJ1UnLCAn UycsICdCJywgJ0knKQ0KLSNkZWZpbmUgIFVTQl9CVVNfU0lHTkFUVVJFICAgICAgICBTSUdOQVRV UkVfMzIgKCdVJywgJ1MnLCAnQicsICdCJykNCisjZGVmaW5lICBVU0JfSU5URVJGQUNFX1NJR05B VFVSRSAgICBTSUdOQVRVUkVfMzIgKCdVJywgJ1MnLCAnQicsICdJJykNCisjZGVmaW5lICBVU0Jf QlVTX1NJR05BVFVSRSAgICAgICAgICBTSUdOQVRVUkVfMzIgKCdVJywgJ1MnLCAnQicsICdCJykN CisjZGVmaW5lICBVU0JfQVNTT0NJQVRJT05fU0lHTkFUVVJFICBTSUdOQVRVUkVfMzIgKCdVJywg J1MnLCAnQicsICdBJykNCiANCiAjZGVmaW5lIFVTQl9CSVQoYSkgICAgICAgICAgICAgICAgICgo VUlOVE4pKDEgPDwgKGEpKSkNCiAjZGVmaW5lIFVTQl9CSVRfSVNfU0VUKERhdGEsIEJpdCkgICgo Qk9PTEVBTikoKChEYXRhKSAmIChCaXQpKSA9PSAoQml0KSkpDQpAQCAtMTQxLDYgKzE0NSw5IEBA IHR5cGVkZWYgc3RydWN0IF9VU0JfSFVCX0FQSSAgICBVU0JfSFVCX0FQSTsKICNkZWZpbmUgVVNC X0lOVEVSRkFDRV9GUk9NX1VTQklPKGEpIFwNCiAgICAgICAgICAgQ1IoYSwgVVNCX0lOVEVSRkFD RSwgVXNiSW8sIFVTQl9JTlRFUkZBQ0VfU0lHTkFUVVJFKQ0KIA0KKyNkZWZpbmUgVVNCX0FTU09D SUFUSU9OX0ZST01fVVNCSUEoYSkgXA0KKyAgICAgICAgICBDUihhLCBVU0JfQVNTT0NJQVRJT04s IFVzYklhUHJvdG9jb2wsIFVTQl9BU1NPQ0lBVElPTl9TSUdOQVRVUkUpDQorDQogI2RlZmluZSBV U0JfQlVTX0ZST01fVEhJUyhhKSBcDQogICAgICAgICAgIENSKGEsIFVTQl9CVVMsIEJ1c0lkLCBV U0JfQlVTX1NJR05BVFVSRSkNCiANCkBAIC0xNzYsNiArMTgzLDkgQEAgc3RydWN0IF9VU0JfREVW SUNFIHsKICAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYW5nSWRbVVNC X01BWF9MQU5HX0lEXTsNCiAgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg VG90YWxMYW5nSWQ7DQogDQorICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE51bU9mQXNzb2NpYXRpb247DQorICBVU0JfQVNTT0NJQVRJT04gICAgICAgICAgICAgICAgICAg ICAgICpBc3NvY2lhdGlvbnNbVVNCX01BWF9BU1NPQ0lBVElPTl07DQorDQogICBVSU5UOCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bU9mSW50ZXJmYWNlOw0KICAgVVNCX0lOVEVS RkFDRSAgICAgICAgICAgICAgICAgICAgICAgICAqSW50ZXJmYWNlc1tVU0JfTUFYX0lOVEVSRkFD RV07DQogDQpAQCAtMjMwLDYgKzI0MCwyMyBAQCBzdHJ1Y3QgX1VTQl9JTlRFUkZBQ0UgewogICBV SU5UOCAgICAgICAgICAgICAgICAgICAgICAgTWF4U3BlZWQ7DQogfTsNCiANCisvLw0KKy8vIFN0 YW5kcyBmb3IgYSBmdW5jdGlvbiBpbXBsZW1lbnRlZCB1c2luZyBpbnRlcmZhY2UgYXNzb2NpYXRp b24NCisvLw0KK3N0cnVjdCBfVVNCX0FTU09DSUFUSU9OIHsNCisgIFVJTlROICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlOw0KKyAgVVNCX0RFVklDRSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRGV2aWNlOw0KKyAgVVNCX0lOVEVSRkFDRV9B U1NPQ0lBVElPTl9ERVNDICAgICAgICAgICAgICAqSWFEZXNjOw0KKw0KKyAgLy8NCisgIC8vIEhh bmRsZXMgYW5kIHByb3RvY29scw0KKyAgLy8NCisgIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgSGFuZGxlOw0KKyAgRURLSUlfVVNCX0lOVEVSRkFDRV9BU1NPQ0lB VElPTl9QUk9UT0NPTCAgICBVc2JJYVByb3RvY29sOw0KKyAgRUZJX0RFVklDRV9QQVRIX1BST1RP Q09MICAgICAgICAgICAgICAgICAgICAqRGV2aWNlUGF0aDsNCisgIEJPT0xFQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSXNNYW5hZ2VkOw0KK307DQorDQogLy8NCiAvLyBT dGFuZHMgZm9yIHRoZSBjdXJyZW50IFVTQiBCdXMNCiAvLw0KQEAgLTc1MSw5ICs3NzgsMTAgQEAg VXNiQnVzQ29udHJvbGxlckRyaXZlclN0b3AgKAogICBJTiBFRklfSEFORExFICAgICAgICAgICAg ICAgICAgICpDaGlsZEhhbmRsZUJ1ZmZlcg0KICAgKTsNCiANCi1leHRlcm4gRUZJX1VTQl9JT19Q Uk9UT0NPTCAgICAgICAgICAgbVVzYklvUHJvdG9jb2w7DQotZXh0ZXJuIEVGSV9EUklWRVJfQklO RElOR19QUk9UT0NPTCAgIG1Vc2JCdXNEcml2ZXJCaW5kaW5nOw0KLWV4dGVybiBFRklfQ09NUE9O RU5UX05BTUVfUFJPVE9DT0wgICBtVXNiQnVzQ29tcG9uZW50TmFtZTsNCi1leHRlcm4gRUZJX0NP TVBPTkVOVF9OQU1FMl9QUk9UT0NPTCAgbVVzYkJ1c0NvbXBvbmVudE5hbWUyOw0KK2V4dGVybiBF RklfVVNCX0lPX1BST1RPQ09MICAgICAgICAgICAgICAgICAgICAgICBtVXNiSW9Qcm90b2NvbDsN CitleHRlcm4gRURLSUlfVVNCX0lOVEVSRkFDRV9BU1NPQ0lBVElPTl9QUk9UT0NPTCAgbVVzYklh UHJvdG9jb2w7DQorZXh0ZXJuIEVGSV9EUklWRVJfQklORElOR19QUk9UT0NPTCAgICAgICAgICAg ICAgIG1Vc2JCdXNEcml2ZXJCaW5kaW5nOw0KK2V4dGVybiBFRklfQ09NUE9ORU5UX05BTUVfUFJP VE9DT0wgICAgICAgICAgICAgICBtVXNiQnVzQ29tcG9uZW50TmFtZTsNCitleHRlcm4gRUZJX0NP TVBPTkVOVF9OQU1FMl9QUk9UT0NPTCAgICAgICAgICAgICAgbVVzYkJ1c0NvbXBvbmVudE5hbWUy Ow0KIA0KICNlbmRpZg0KZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9CdXMvVXNiL1VzYkJ1c0R4 ZS9Vc2JCdXNEeGUuaW5mIGIvTWRlTW9kdWxlUGtnL0J1cy9Vc2IvVXNiQnVzRHhlL1VzYkJ1c0R4 ZS5pbmYKaW5kZXggZGQ4NTg5NDM0Ni4uMmI4NjZmYzIwNCAxMDA2NDQKLS0tIGEvTWRlTW9kdWxl UGtnL0J1cy9Vc2IvVXNiQnVzRHhlL1VzYkJ1c0R4ZS5pbmYKKysrIGIvTWRlTW9kdWxlUGtnL0J1 cy9Vc2IvVXNiQnVzRHhlL1VzYkJ1c0R4ZS5pbmYKQEAgLTIsNiArMiw3IEBACiAjICBUaGUgVXNi IEJ1cyBEeGUgZHJpdmVyIGlzIHVzZWQgdG8gZW51bWVyYXRlIGFuZCBtYW5hZ2UgYWxsIGF0dGFj aGVkIHVzYiBkZXZpY2VzLg0KICMNCiAjICBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDE4LCBJbnRl bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQorIyAgQ29weXJpZ2h0IChj KSAyMDI1LCBBbWVyaWNhbiBNZWdhdHJlbmRzIEludGVybmF0aW9uYWwsIExMQy4gQWxsIHJpZ2h0 cyByZXNlcnZlZC48QlI+DQogIw0KICMgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1D bGF1c2UtUGF0ZW50DQogIw0KQEAgLTQwLDEwICs0MSwxMSBAQAogICBVc2JVdGlsaXR5LmMNCiAg IFVzYkRlc2MuaA0KICAgVXNiQnVzLmgNCisgIFVzYkludGZBc3NvYy5jDQogDQogW1BhY2thZ2Vz XQ0KICAgTWRlUGtnL01kZVBrZy5kZWMNCi0NCisgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cu ZGVjDQogDQogW0xpYnJhcnlDbGFzc2VzXQ0KICAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KQEAgLTU4 LDYgKzYwLDcgQEAKIA0KIFtQcm90b2NvbHNdDQogICBnRWZpVXNiSW9Qcm90b2NvbEd1aWQgICAg ICAgICAgICAgICAgICAgICAgICAgIyMgQllfU1RBUlQNCisgIGdFZGtpaVVzYkludGVyZmFjZUFz c29jaWF0aW9uUHJvdG9jb2xHdWlkDQogICAjIyBUT19TVEFSVA0KICAgIyMgQllfU1RBUlQNCiAg IGdFZmlEZXZpY2VQYXRoUHJvdG9jb2xHdWlkDQpkaWZmIC0tZ2l0IGEvTWRlTW9kdWxlUGtnL0J1 cy9Vc2IvVXNiQnVzRHhlL1VzYkRlc2MuYyBiL01kZU1vZHVsZVBrZy9CdXMvVXNiL1VzYkJ1c0R4 ZS9Vc2JEZXNjLmMKaW5kZXggOGIwNzhlN2U0OS4uYzU3MDM4ZWM1NiAxMDA2NDQKLS0tIGEvTWRl TW9kdWxlUGtnL0J1cy9Vc2IvVXNiQnVzRHhlL1VzYkRlc2MuYworKysgYi9NZGVNb2R1bGVQa2cv QnVzL1VzYi9Vc2JCdXNEeGUvVXNiRGVzYy5jCkBAIC0zLDYgKzMsNyBAQAogICAgIE1hbmFnZSBV c2IgRGVzY3JpcHRvciBMaXN0DQogDQogQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAxOCwgSW50ZWwg Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KK0NvcHlyaWdodCAoYykgMjAy NSwgQW1lcmljYW4gTWVnYXRyZW5kcyBJbnRlcm5hdGlvbmFsLCBMTEMuIEFsbCByaWdodHMgcmVz ZXJ2ZWQuPEJSPg0KIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50 DQogDQogKiovDQpAQCAtNDYsNiArNDcsMjQgQEAgVXNiRnJlZUludGVyZmFjZURlc2MgKAogICBG cmVlUG9vbCAoU2V0dGluZyk7DQogfQ0KIA0KKy8qKg0KKyAgRnJlZSB0aGUgaW50ZXJmYWNlIGFz c29jaWF0aW9uIGRlc2NyaXB0b3INCisNCisgIEBwYXJhbSAgSWFkICAgICAgICAgICAgICAgVGhl IGludGVyZmFjZSBhc3NvY2lhdGlvbiBkZXNjcmlwdG9yIHRvIGZyZWUuDQorDQorKiovDQorVk9J RA0KK1VzYkZyZWVJbnRlcmZhY2VBc3NvY2lhdGlvbkRlc2MgKA0KKyAgSU4gVVNCX0lOVEVSRkFD RV9BU1NPQ0lBVElPTl9ERVNDICAqSWFkDQorICApDQorew0KKyAgaWYgKElhZC0+SW50ZXJmYWNl cyAhPSBOVUxMKSB7DQorICAgIEZyZWVQb29sIChJYWQtPkludGVyZmFjZXMpOw0KKyAgfQ0KKw0K KyAgRnJlZVBvb2wgKElhZCk7DQorfQ0KKw0KIC8qKg0KICAgRnJlZSBhIGNvbmZpZ3VyYXRpb24g ZGVzY3JpcHRvciB3aXRoIGl0cyBpbnRlcmZhY2UNCiAgIGRlc2NyaXB0b3JzLiBJdCBtYXkgYmUg aW5pdGlhbGl6ZWQgcGFydGlhbGx5Lg0KQEAgLTE2Nyw2ICsxODYsMTEgQEAgVXNiQ3JlYXRlRGVz YyAoCiAgICAgICBDdHJsTGVuID0gc2l6ZW9mIChVU0JfRU5EUE9JTlRfREVTQyk7DQogICAgICAg YnJlYWs7DQogDQorICAgIGNhc2UgVVNCX0RFU0NfVFlQRV9JTlRFUkZBQ0VfQVNTT0NJQVRJT046 DQorICAgICAgRGVzY0xlbiA9IHNpemVvZiAoRUZJX1VTQl9JTlRFUkZBQ0VfQVNTT0NJQVRJT05f REVTQ1JJUFRPUik7DQorICAgICAgQ3RybExlbiA9IHNpemVvZiAoVVNCX0lOVEVSRkFDRV9BU1NP Q0lBVElPTl9ERVNDKTsNCisgICAgICBicmVhazsNCisNCiAgICAgZGVmYXVsdDoNCiAgICAgICBB U1NFUlQgKEZBTFNFKTsNCiAgICAgICByZXR1cm4gTlVMTDsNCkBAIC0yMzEsNiArMjU1LDcgQEAg VXNiQ3JlYXRlRGVzYyAoCiAgICAgcmV0dXJuIE5VTEw7DQogICB9DQogDQorICBBU1NFUlQgKEN0 cmxMZW4gPj0gRGVzY0xlbik7DQogICBDb3B5TWVtIChEZXNjLCBIZWFkLCAoVUlOVE4pRGVzY0xl bik7DQogDQogICAqQ29uc3VtZWQgPSBPZmZzZXQ7DQpAQCAtMzE5LDYgKzM0NCw4NSBAQCBPTl9F UlJPUjoKICAgcmV0dXJuIE5VTEw7DQogfQ0KIA0KKy8qKg0KKyAgUGFyc2UgYW4gaW50ZXJmYWNl IGFzc29jaWF0aW9uIGFuZCBpdHMgaW50ZXJmYWNlcy4NCisNCisgIEBwYXJhbSAgRGVzY0J1ZiAg ICAgICAgICAgICAgIFRoZSBidWZmZXIgb2YgcmF3IGludGVyZmFjZSBhc3NvY2lhdGlvbiBkZXNj cmlwdG9yLg0KKyAgQHBhcmFtICBMZW4gICAgICAgICAgICAgICAgICAgVGhlIGxlbmd0aCBvZiB0 aGUgcmF3IGRlc2NyaXB0b3IgYnVmZmVyLg0KKyAgQHBhcmFtICBDb25maWcgICAgICAgICAgICAg ICAgVGhlIGRldmljZSBjb25maWd1cmF0aW9uIGJ1ZmZlci4NCisgIEBwYXJhbSAgQ29uc3VtZWQg ICAgICAgICAgICAgIFRoZSBudW1iZXIgb2YgcmF3IGRlc2NyaXB0b3IgY29uc3VtZWQuDQorDQor ICBAcmV0dXJuIFRoZSBjcmVhdGVkIGludGVyZmFjZSBhc3NvY2lhdGlvbiBkZXNjcmlwdG9yIG9y IE5VTEwgaWYgZmFpbGVkLg0KKw0KKyoqLw0KK1VTQl9JTlRFUkZBQ0VfQVNTT0NJQVRJT05fREVT QyAqDQorVXNiUGFyc2VJbnRlcmZhY2VBc3NvY2lhdGlvbkRlc2MgKA0KKyAgSU4gVUlOVDggICAg ICAgICAgICAqRGVzY0J1ZiwNCisgIElOIFVJTlROICAgICAgICAgICAgTGVuLA0KKyAgSU4gVVNC X0NPTkZJR19ERVNDICAqQ29uZmlnLA0KKyAgT1VUIFVJTlROICAgICAgICAgICAqQ29uc3VtZWQN CisgICkNCit7DQorICBVU0JfSU5URVJGQUNFX0FTU09DSUFUSU9OX0RFU0MgICpJYWQ7DQorICBV SU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KKyAgVUlOVDggICAgICAgICAg ICAgICAgICAgICAgICAgICBJZkluZGV4Ow0KKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAg ICAgICBpOw0KKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1JZjsNCisgIFVJ TlROICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlZDsNCisNCisgICpDb25zdW1lZCA9IDA7 DQorICBJYWQgICAgICAgPSBVc2JDcmVhdGVEZXNjIChEZXNjQnVmLCBMZW4sIFVTQl9ERVNDX1RZ UEVfSU5URVJGQUNFX0FTU09DSUFUSU9OLCAmVXNlZCk7DQorDQorICBpZiAoSWFkID09IE5VTEwp IHsNCisgICAgcmV0dXJuIE5VTEw7DQorICB9DQorDQorICAvLw0KKyAgLy8gQ3JlYXRlIGFuIGFy cmF5IHRvIGhvbGQgdGhlIGFzc29jaWF0aW9uJ3MgaW50ZXJmYWNlcw0KKyAgLy8NCisgIE51bUlm ID0gSWFkLT5EZXNjLkludGVyZmFjZUNvdW50Ow0KKw0KKyAgREVCVUcgKCgNCisgICAgREVCVUdf SU5GTywNCisgICAgIlVzYlBhcnNlSW50ZXJmYWNlQXNzb2NpYXRpb25EZXNjOiBpbnRlcmZhY2Ug YXNzb2NpYXRpb24gaGFzICVkIGludGVyZmFjZXNcbiIsDQorICAgIChVSU5UMzIpTnVtSWYNCisg ICAgKSk7DQorDQorICBBU1NFUlQgKE51bUlmID4gMCk7DQorICBpZiAoTnVtSWYgPT0gMCkgew0K KyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiVXNiUGFyc2VJbnRlcmZhY2VBc3NvY2lhdGlvbkRl c2M6IG5vIGludGVyZmFjZXMgYXJlIHJlcG9ydGVkIGZvciB0aGlzIGFzc29jaWF0aW9uLlxuIikp Ow0KKyAgICBnb3RvIE9OX0VSUk9SOw0KKyAgfQ0KKw0KKyAgSWFkLT5JbnRlcmZhY2VzID0gQWxs b2NhdGVaZXJvUG9vbCAoc2l6ZW9mIChVU0JfSU5URVJGQUNFX0RFU0MgKikgKiBOdW1JZik7DQor DQorICAvLw0KKyAgLy8gUG9wdWxhdGUgaW50ZXJmYWNlcyBmb3IgdGhpcyBhc3NvY2lhdGlvbg0K KyAgLy8NCisgIElmSW5kZXggPSAwOw0KKyAgZm9yIChJbmRleCA9IElhZC0+RGVzYy5GaXJzdElu dGVyZmFjZTsgSW5kZXggPCAoVUlOVDgpKElhZC0+RGVzYy5GaXJzdEludGVyZmFjZSArIElhZC0+ RGVzYy5JbnRlcmZhY2VDb3VudCk7IEluZGV4KyspIHsNCisgICAgZm9yIChpID0gMDsgaSA8IENv bmZpZy0+RGVzYy5OdW1JbnRlcmZhY2VzOyBpKyspIHsNCisgICAgICBpZiAoSW5kZXggPT0gQ29u ZmlnLT5JbnRlcmZhY2VzW2ldLT5TZXR0aW5nc1swXS0+RGVzYy5JbnRlcmZhY2VOdW1iZXIpIHsN CisgICAgICAgIGJyZWFrOw0KKyAgICAgIH0NCisgICAgfQ0KKw0KKyAgICBpZiAoaSA9PSBDb25m aWctPkRlc2MuTnVtSW50ZXJmYWNlcykgew0KKyAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICJV c2JQYXJzZUludGVyZmFjZUFzc29jaWF0aW9uRGVzYzogaW50ZXJmYWNlICVkIG5vdCBmb3VuZC5c biIsIEluZGV4KSk7DQorICAgICAgZ290byBPTl9FUlJPUjsNCisgICAgfQ0KKw0KKyAgICBJYWQt PkludGVyZmFjZXNbSWZJbmRleCsrXSA9IENvbmZpZy0+SW50ZXJmYWNlc1tpXTsNCisgIH0NCisN CisgICpDb25zdW1lZCA9IFVzZWQ7DQorICByZXR1cm4gSWFkOw0KKw0KK09OX0VSUk9SOg0KKyAg VXNiRnJlZUludGVyZmFjZUFzc29jaWF0aW9uRGVzYyAoSWFkKTsNCisgIHJldHVybiBOVUxMOw0K K30NCisNCiAvKioNCiAgIFBhcnNlIHRoZSBjb25maWd1cmF0aW9uIGRlc2NyaXB0b3IgYW5kIGl0 cyBpbnRlcmZhY2VzLg0KIA0KQEAgLTMzNCwxNiArNDM4LDIyIEBAIFVzYlBhcnNlQ29uZmlnRGVz YyAoCiAgIElOIFVJTlROICBMZW4NCiAgICkNCiB7DQotICBVU0JfQ09ORklHX0RFU0MgICAgICAg ICpDb25maWc7DQotICBVU0JfSU5URVJGQUNFX1NFVFRJTkcgICpTZXR0aW5nOw0KLSAgVVNCX0lO VEVSRkFDRV9ERVNDICAgICAqSW50ZXJmYWNlOw0KLSAgVUlOVE4gICAgICAgICAgICAgICAgICBJ bmRleDsNCi0gIFVJTlROICAgICAgICAgICAgICAgICAgTnVtSWY7DQotICBVSU5UTiAgICAgICAg ICAgICAgICAgIENvbnN1bWVkOw0KKyAgVVNCX0NPTkZJR19ERVNDICAgICAgICAgICAgICAgICAq Q29uZmlnOw0KKyAgVVNCX0lOVEVSRkFDRV9TRVRUSU5HICAgICAgICAgICAqU2V0dGluZzsNCisg IFVTQl9JTlRFUkZBQ0VfREVTQyAgICAgICAgICAgICAgKkludGVyZmFjZTsNCisgIFVJTlROICAg ICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXg7DQorICBVSU5UTiAgICAgICAgICAgICAgICAg ICAgICAgICAgIE51bUlmOw0KKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICBDb25z dW1lZDsNCisgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgKkJ1ZmZlcjsNCisgIFVJ TlROICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoOw0KKyAgVVNCX0lOVEVSRkFDRV9B U1NPQ0lBVElPTl9ERVNDICAqSWFkOw0KIA0KICAgQVNTRVJUIChEZXNjQnVmICE9IE5VTEwpOw0K IA0KLSAgQ29uZmlnID0gVXNiQ3JlYXRlRGVzYyAoRGVzY0J1ZiwgTGVuLCBVU0JfREVTQ19UWVBF X0NPTkZJRywgJkNvbnN1bWVkKTsNCisgIEJ1ZmZlciA9IERlc2NCdWY7DQorICBMZW5ndGggPSBM ZW47DQorDQorICBDb25maWcgPSBVc2JDcmVhdGVEZXNjIChCdWZmZXIsIExlbmd0aCwgVVNCX0RF U0NfVFlQRV9DT05GSUcsICZDb25zdW1lZCk7DQogDQogICBpZiAoQ29uZmlnID09IE5VTEwpIHsN CiAgICAgcmV0dXJuIE5VTEw7DQpAQCAtMzg0LDE1ICs0OTQsMTUgQEAgVXNiUGFyc2VDb25maWdE ZXNjICgKICAgLy8gc2V0dGluZyAxfGludGVyZmFjZSAxLCBzZXR0aW5nIDB8aW50ZXJmYWNlIDIs IHNldHRpbmcgMHwuIENoZWNrDQogICAvLyBVU0IyLjAgc3BlYywgcGFnZSAyNjcuDQogICAvLw0K LSAgRGVzY0J1ZiArPSBDb25zdW1lZDsNCi0gIExlbiAgICAgLT0gQ29uc3VtZWQ7DQorICBCdWZm ZXIgKz0gQ29uc3VtZWQ7DQorICBMZW5ndGggLT0gQ29uc3VtZWQ7DQogDQogICAvLw0KICAgLy8g TWFrZSBhbGxvd2FuY2VzIGZvciBkZXZpY2VzIHRoYXQgcmV0dXJuIGV4dHJhIGRhdGEgYXQgdGhl DQogICAvLyBlbmQgb2YgdGhlaXIgY29uZmlnIGRlc2NyaXB0b3JzDQogICAvLw0KLSAgd2hpbGUg KExlbiA+PSBzaXplb2YgKEVGSV9VU0JfSU5URVJGQUNFX0RFU0NSSVBUT1IpKSB7DQotICAgIFNl dHRpbmcgPSBVc2JQYXJzZUludGVyZmFjZURlc2MgKERlc2NCdWYsIExlbiwgJkNvbnN1bWVkKTsN CisgIHdoaWxlIChMZW5ndGggPj0gc2l6ZW9mIChFRklfVVNCX0lOVEVSRkFDRV9ERVNDUklQVE9S KSkgew0KKyAgICBTZXR0aW5nID0gVXNiUGFyc2VJbnRlcmZhY2VEZXNjIChCdWZmZXIsIExlbmd0 aCwgJkNvbnN1bWVkKTsNCiANCiAgICAgaWYgKFNldHRpbmcgPT0gTlVMTCkgew0KICAgICAgIERF QlVHICgoREVCVUdfRVJST1IsICJVc2JQYXJzZUNvbmZpZ0Rlc2M6IHdhcm5pbmc6IGZhaWxlZCB0 byBnZXQgaW50ZXJmYWNlIHNldHRpbmcsIHN0b3AgcGFyc2luZyBub3cuXG4iKSk7DQpAQCAtNDE2 LDggKzUyNiwzNiBAQCBVc2JQYXJzZUNvbmZpZ0Rlc2MgKAogICAgIEludGVyZmFjZS0+U2V0dGlu Z3NbSW50ZXJmYWNlLT5OdW1PZlNldHRpbmddID0gU2V0dGluZzsNCiAgICAgSW50ZXJmYWNlLT5O dW1PZlNldHRpbmcrKzsNCiANCi0gICAgRGVzY0J1ZiArPSBDb25zdW1lZDsNCi0gICAgTGVuICAg ICAtPSBDb25zdW1lZDsNCisgICAgQnVmZmVyICs9IENvbnN1bWVkOw0KKyAgICBMZW5ndGggLT0g Q29uc3VtZWQ7DQorICB9DQorDQorICAvLw0KKyAgLy8gUHJvY2VzcyBpbnRlcmZhY2UgYXNzb2Np YXRpb24gZGVzY3JpcHRvcnMuDQorICAvLw0KKyAgQnVmZmVyID0gRGVzY0J1ZjsNCisgIExlbmd0 aCA9IExlbjsNCisNCisgIHdoaWxlIChMZW5ndGggPj0gc2l6ZW9mIChFRklfVVNCX0lOVEVSRkFD RV9BU1NPQ0lBVElPTl9ERVNDUklQVE9SKSkgew0KKyAgICBJYWQgPSBVc2JQYXJzZUludGVyZmFj ZUFzc29jaWF0aW9uRGVzYyAoQnVmZmVyLCBMZW5ndGgsIENvbmZpZywgJkNvbnN1bWVkKTsNCisN CisgICAgaWYgKElhZCA9PSBOVUxMKSB7DQorICAgICAgYnJlYWs7DQorICAgIH0NCisNCisgICAg Ly8NCisgICAgLy8gSW5zZXJ0IHRoZSBhc3NvY2lhdGlvbiBkZXNjcmlwdG9yIHRvIHRoZSBjb3Jy ZXNwb25kaW5nIHNldC4NCisgICAgLy8NCisgICAgaWYgKENvbmZpZy0+TnVtT2ZJYWRzID49IFVT Ql9NQVhfQVNTT0NJQVRJT04pIHsNCisgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiVXNiUGFy c2VDb25maWdEZXNjOiB0b28gbWFueSBpbnRlcmZhY2UgYXNzb2NpYXRpb24gZGVzY3JpcHRvcnMg aW4gdGhpcyBjb25maWd1cmF0aW9uLlxuIikpOw0KKyAgICAgIGdvdG8gT05fRVJST1I7DQorICAg IH0NCisNCisgICAgQ29uZmlnLT5JYWRzW0NvbmZpZy0+TnVtT2ZJYWRzXSA9IElhZDsNCisgICAg Q29uZmlnLT5OdW1PZklhZHMrKzsNCisNCisgICAgQnVmZmVyICs9IENvbnN1bWVkOw0KKyAgICBM ZW5ndGggLT0gQ29uc3VtZWQ7DQogICB9DQogDQogICByZXR1cm4gQ29uZmlnOw0KZGlmZiAtLWdp dCBhL01kZU1vZHVsZVBrZy9CdXMvVXNiL1VzYkJ1c0R4ZS9Vc2JEZXNjLmggYi9NZGVNb2R1bGVQ a2cvQnVzL1VzYi9Vc2JCdXNEeGUvVXNiRGVzYy5oCmluZGV4IGNlMjA1ZTcwNmQuLjAzZjM4Yzdh ZmEgMTAwNjQ0Ci0tLSBhL01kZU1vZHVsZVBrZy9CdXMvVXNiL1VzYkJ1c0R4ZS9Vc2JEZXNjLmgK KysrIGIvTWRlTW9kdWxlUGtnL0J1cy9Vc2IvVXNiQnVzRHhlL1VzYkRlc2MuaApAQCAtMyw2ICsz LDcgQEAKICAgICBNYW5hZ2UgVXNiIERlc2NyaXB0b3IgTGlzdA0KIA0KIENvcHlyaWdodCAoYykg MjAwNyAtIDIwMTQsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4N CitDb3B5cmlnaHQgKGMpIDIwMjUsIEFtZXJpY2FuIE1lZ2F0cmVuZHMgSW50ZXJuYXRpb25hbCwg TExDLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog QlNELTItQ2xhdXNlLVBhdGVudA0KIA0KICoqLw0KQEAgLTExLDYgKzEyLDcgQEAgU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQKICNkZWZpbmUgX1VTQl9ERVNDUklQ VE9SX0hfDQogDQogI2RlZmluZSBVU0JfTUFYX0lOVEVSRkFDRV9TRVRUSU5HICAyNTYNCisjZGVm aW5lIFVTQl9NQVhfQVNTT0NJQVRJT04gICAgICAgIDE2DQogDQogLy8NCiAvLyBUaGUgUmVxdWVz dFR5cGUgaW4gRUZJX1VTQl9ERVZJQ0VfUkVRVUVTVCBpcyBjb21wb3NlZCBvZg0KQEAgLTYyLDgg KzY0LDE1IEBAIHR5cGVkZWYgc3RydWN0IHsKIH0gVVNCX0lOVEVSRkFDRV9ERVNDOw0KIA0KIHR5 cGVkZWYgc3RydWN0IHsNCi0gIEVGSV9VU0JfQ09ORklHX0RFU0NSSVBUT1IgICAgRGVzYzsNCi0g IFVTQl9JTlRFUkZBQ0VfREVTQyAgICAgICAgICAgKipJbnRlcmZhY2VzOw0KKyAgRUZJX1VTQl9J TlRFUkZBQ0VfQVNTT0NJQVRJT05fREVTQ1JJUFRPUiAgICBEZXNjOw0KKyAgVVNCX0lOVEVSRkFD RV9ERVNDICAgICAgICAgICAgICAgICAgICAgICAgICAqKkludGVyZmFjZXM7DQorfSBVU0JfSU5U RVJGQUNFX0FTU09DSUFUSU9OX0RFU0M7DQorDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgRUZJX1VT Ql9DT05GSUdfREVTQ1JJUFRPUiAgICAgICAgIERlc2M7DQorICBVU0JfSU5URVJGQUNFX0FTU09D SUFUSU9OX0RFU0MgICAgKklhZHNbVVNCX01BWF9BU1NPQ0lBVElPTl07DQorICBVSU5UOCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTnVtT2ZJYWRzOw0KKyAgVVNCX0lOVEVSRkFDRV9ERVND ICAgICAgICAgICAgICAgICoqSW50ZXJmYWNlczsNCiB9IFVTQl9DT05GSUdfREVTQzsNCiANCiB0 eXBlZGVmIHN0cnVjdCB7DQpkaWZmIC0tZ2l0IGEvTWRlTW9kdWxlUGtnL0J1cy9Vc2IvVXNiQnVz RHhlL1VzYkVudW1lci5jIGIvTWRlTW9kdWxlUGtnL0J1cy9Vc2IvVXNiQnVzRHhlL1VzYkVudW1l ci5jCmluZGV4IGIzYTQwNjM5ZjIuLmY2ZTU0MTg5MzEgMTAwNjQ0Ci0tLSBhL01kZU1vZHVsZVBr Zy9CdXMvVXNiL1VzYkJ1c0R4ZS9Vc2JFbnVtZXIuYworKysgYi9NZGVNb2R1bGVQa2cvQnVzL1Vz Yi9Vc2JCdXNEeGUvVXNiRW51bWVyLmMKQEAgLTMsNiArMyw3IEBACiAgICAgVXNiIGJ1cyBlbnVt ZXJhdGlvbiBzdXBwb3J0Lg0KIA0KIENvcHlyaWdodCAoYykgMjAwNyAtIDIwMTgsIEludGVsIENv cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCitDb3B5cmlnaHQgKGMpIDIwMjUs IEFtZXJpY2FuIE1lZ2F0cmVuZHMgSW50ZXJuYXRpb25hbCwgTExDLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLjxCUj4NCiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0K IA0KICoqLw0KQEAgLTQxLDYgKzQyLDQxIEBAIFVzYkdldEVuZHBvaW50RGVzYyAoCiAgIHJldHVy biBOVUxMOw0KIH0NCiANCisvKioNCisgIENoZWNrIGlmIGdpdmVuIFVzYiBpbnRlcmZhY2UgaXMg YSBwYXJ0IG9mIFVzYiBhc3NvY2lhdGlvbi4NCisNCisgIEBwYXJhbVtpbl0gIERldmljZSAgICBU aGUgZGV2aWNlIG1heSBoYXZlIHRoZSBpbnRlcmZhY2UgYXNzb2NpYXRpb24gZGVzY3JpcHRvci4N CisgIEBwYXJhbVtpbl0gIElmRGVzYyAgICBUaGUgaW50ZXJmYWNlIGRlc2NyaXB0b3IgdG8gY2hl Y2sgZm9yLg0KKyAgQHBhcmFtW291dF0gSWZBc3NvYyAgIFRoZSBVU0IgYXNzb2NpYXRpb24gZGV2 aWNlIHBvaW50ZXIuDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgSWZEZXNjIGlzIGZvdW5k IHdpdGhpbiBhc3NvY2lhdGlvbnMsIElmQXNzb2MgaGFzIHZhbGlkIHBvaW50ZXIuDQorICBAcmV0 dmFsIEVGSV9OT1RfRk9VTkQgSWZEZXNjIGRvZXMgbm8gYmVsb25nIHRvIGFueSBhc3NvY2lhdGlv bi4NCisNCisqKi8NCitFRklfU1RBVFVTDQorR2V0SW50ZXJmYWNlQXNzb2NpYXRpb24gKA0KKyAg SU4gVVNCX0RFVklDRSAgICAgICAgICAqRGV2aWNlLA0KKyAgSU4gVVNCX0lOVEVSRkFDRV9ERVND ICAqSWZEZXNjLA0KKyAgT1VUIFVTQl9BU1NPQ0lBVElPTiAgICAqKklmQXNzb2MNCisgICkNCit7 DQorICBVSU5UTiAgICAgICAgICAgIEluZGV4Ow0KKyAgVUlOVE4gICAgICAgICAgICBpOw0KKyAg VVNCX0FTU09DSUFUSU9OICAqSWE7DQorDQorICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBEZXZp Y2UtPk51bU9mQXNzb2NpYXRpb247IEluZGV4KyspIHsNCisgICAgSWEgPSBEZXZpY2UtPkFzc29j aWF0aW9uc1tJbmRleF07DQorICAgIGZvciAoaSA9IDA7IGkgPCBJYS0+SWFEZXNjLT5EZXNjLklu dGVyZmFjZUNvdW50OyBpKyspIHsNCisgICAgICBpZiAoSWZEZXNjLT5TZXR0aW5nc1swXS0+RGVz Yy5JbnRlcmZhY2VOdW1iZXIgPT0gSWEtPklhRGVzYy0+SW50ZXJmYWNlc1tpXS0+U2V0dGluZ3Nb MF0tPkRlc2MuSW50ZXJmYWNlTnVtYmVyKSB7DQorICAgICAgICAqSWZBc3NvYyA9IElhOw0KKyAg ICAgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KKyAgICAgIH0NCisgICAgfQ0KKyAgfQ0KKw0KKyAg cmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQorfQ0KKw0KIC8qKg0KICAgRnJlZSB0aGUgcmVzb3VyY2Ug dXNlZCBieSBVU0IgaW50ZXJmYWNlLg0KIA0KQEAgLTU0LDkgKzkwLDI1IEBAIFVzYkZyZWVJbnRl cmZhY2UgKAogICBJTiBVU0JfSU5URVJGQUNFICAqVXNiSWYNCiAgICkNCiB7DQotICBFRklfU1RB VFVTICBTdGF0dXM7DQorICBFRklfU1RBVFVTICAgICAgIFN0YXR1czsNCisgIFVTQl9BU1NPQ0lB VElPTiAgKlVzYklhOw0KIA0KLSAgVXNiQ2xvc2VIb3N0UHJvdG9CeUNoaWxkIChVc2JJZi0+RGV2 aWNlLT5CdXMsIFVzYklmLT5IYW5kbGUpOw0KKyAgU3RhdHVzID0gR2V0SW50ZXJmYWNlQXNzb2Np YXRpb24gKFVzYklmLT5EZXZpY2UsIFVzYklmLT5JZkRlc2MsICZVc2JJYSk7DQorDQorICBpZiAo IUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICAvLw0KKyAgICAvLyBDbG9zZSBVU0IgSW50ZXJm YWNlIEFzc29jaWF0aW9uIFByb3RvY29sIGJ5IENoaWxkDQorICAgIC8vDQorICAgIFN0YXR1cyA9 IGdCUy0+Q2xvc2VQcm90b2NvbCAoDQorICAgICAgICAgICAgICAgICAgICBVc2JJYS0+SGFuZGxl LA0KKyAgICAgICAgICAgICAgICAgICAgJmdFZGtpaVVzYkludGVyZmFjZUFzc29jaWF0aW9uUHJv dG9jb2xHdWlkLA0KKyAgICAgICAgICAgICAgICAgICAgbVVzYkJ1c0RyaXZlckJpbmRpbmcuRHJp dmVyQmluZGluZ0hhbmRsZSwNCisgICAgICAgICAgICAgICAgICAgIFVzYklmLT5IYW5kbGUNCisg ICAgICAgICAgICAgICAgICAgICk7DQorICAgIERFQlVHICgoREVCVUdfSU5GTywgIlVzYkZyZWVJ bnRlcmZhY2U6IGNsb3NlIElBRCBwcm90b2NvbCBieSBjaGlsZCwgJXJcbiIsIFN0YXR1cykpOw0K KyAgfSBlbHNlIHsNCisgICAgVXNiQ2xvc2VIb3N0UHJvdG9CeUNoaWxkIChVc2JJZi0+RGV2aWNl LT5CdXMsIFVzYklmLT5IYW5kbGUpOw0KKyAgfQ0KIA0KICAgU3RhdHVzID0gZ0JTLT5Vbmluc3Rh bGxNdWx0aXBsZVByb3RvY29sSW50ZXJmYWNlcyAoDQogICAgICAgICAgICAgICAgICAgVXNiSWYt PkhhbmRsZSwNCkBAIC03Myw3ICsxMjUsNjYgQEAgVXNiRnJlZUludGVyZmFjZSAoCiANCiAgICAg RnJlZVBvb2wgKFVzYklmKTsNCiAgIH0gZWxzZSB7DQotICAgIFVzYk9wZW5Ib3N0UHJvdG9CeUNo aWxkIChVc2JJZi0+RGV2aWNlLT5CdXMsIFVzYklmLT5IYW5kbGUpOw0KKyAgICBTdGF0dXMgPSBH ZXRJbnRlcmZhY2VBc3NvY2lhdGlvbiAoVXNiSWYtPkRldmljZSwgVXNiSWYtPklmRGVzYywgJlVz YklhKTsNCisNCisgICAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgICAvLw0KKyAg ICAgIC8vIFJlb3BlbiBVU0IgSW50ZXJmYWNlIEFzc2ljaWF0aW9uIFByb3RvY29sIGJ5IENoaWxk DQorICAgICAgLy8NCisgICAgICBTdGF0dXMgPSBnQlMtPk9wZW5Qcm90b2NvbCAoDQorICAgICAg ICAgICAgICAgICAgICAgIFVzYklhLT5IYW5kbGUsDQorICAgICAgICAgICAgICAgICAgICAgICZn RWRraWlVc2JJbnRlcmZhY2VBc3NvY2lhdGlvblByb3RvY29sR3VpZCwNCisgICAgICAgICAgICAg ICAgICAgICAgKFZPSUQgKiopJlVzYklhLA0KKyAgICAgICAgICAgICAgICAgICAgICBtVXNiQnVz RHJpdmVyQmluZGluZy5Ecml2ZXJCaW5kaW5nSGFuZGxlLA0KKyAgICAgICAgICAgICAgICAgICAg ICBVc2JJZi0+SGFuZGxlLA0KKyAgICAgICAgICAgICAgICAgICAgICBFRklfT1BFTl9QUk9UT0NP TF9CWV9DSElMRF9DT05UUk9MTEVSDQorICAgICAgICAgICAgICAgICAgICAgICk7DQorICAgICAg REVCVUcgKChERUJVR19JTkZPLCAiVXNiRnJlZUludGVyZmFjZTogcmVvcGVuIElBRCBmb3IgY2hp bGQsIFN0YXR1cyA9ICVyXG4iLCBTdGF0dXMpKTsNCisgICAgfSBlbHNlIHsNCisgICAgICAvLw0K KyAgICAgIC8vIFJlb3BlbiBVU0IgSG9zdCBDb250cm9sbGVyIFByb3RvY29sIGJ5IENoaWxkDQor ICAgICAgLy8NCisgICAgICBTdGF0dXMgPSBVc2JPcGVuSG9zdFByb3RvQnlDaGlsZCAoVXNiSWYt PkRldmljZS0+QnVzLCBVc2JJZi0+SGFuZGxlKTsNCisgICAgICBERUJVRyAoKERFQlVHX0lORk8s ICJVc2JGcmVlSW50ZXJmYWNlOiByZW9wZW4gaG9zdCBjb250cm9sbGVyIGZvciBjaGlsZCwgU3Rh dHVzID0gJXJcbiIsIFN0YXR1cykpOw0KKyAgICB9DQorICB9DQorDQorICByZXR1cm4gU3RhdHVz Ow0KK30NCisNCisvKioNCisgIEZyZWUgdGhlIHJlc291cmNlIHVzZWQgYnkgVVNCIGFzc29jaWF0 aW9uLg0KKw0KKyAgQHBhcmFtICBVc2JJYSAgICAgICAgICAgICAgICAgVGhlIFVTQiBhc3NvY2lh dGlvbiB0byBmcmVlLg0KKw0KKyAgQHJldHZhbCBFRklfQUNDRVNTX0RFTklFRCAgICAgVGhlIFVz YiBhc3NvY2lhdGlvbiByZXNvdXJjZSBpcyBzdGlsbCBvY2N1cGllZC4NCisgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgICAgIFRoZSBVc2IgYXNzb2NpYXRpb24gcmVzb3VyY2UgaXMgZnJlZWQu DQorDQorKiovDQorRUZJX1NUQVRVUw0KK1VzYkZyZWVBc3NvY2lhdGlvbiAoDQorICBJTiBVU0Jf QVNTT0NJQVRJT04gICpVc2JJYQ0KKyAgKQ0KK3sNCisgIEVGSV9TVEFUVVMgIFN0YXR1czsNCisN CisgIFN0YXR1cyA9IGdCUy0+VW5pbnN0YWxsTXVsdGlwbGVQcm90b2NvbEludGVyZmFjZXMgKA0K KyAgICAgICAgICAgICAgICAgIFVzYklhLT5IYW5kbGUsDQorICAgICAgICAgICAgICAgICAgJmdF ZmlEZXZpY2VQYXRoUHJvdG9jb2xHdWlkLA0KKyAgICAgICAgICAgICAgICAgIFVzYklhLT5EZXZp Y2VQYXRoLA0KKyAgICAgICAgICAgICAgICAgICZnRWRraWlVc2JJbnRlcmZhY2VBc3NvY2lhdGlv blByb3RvY29sR3VpZCwNCisgICAgICAgICAgICAgICAgICAmVXNiSWEtPlVzYklhUHJvdG9jb2ws DQorICAgICAgICAgICAgICAgICAgTlVMTA0KKyAgICAgICAgICAgICAgICAgICk7DQorDQorICBp ZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICBpZiAoVXNiSWEtPkRldmljZVBhdGggIT0g TlVMTCkgew0KKyAgICAgIEZyZWVQb29sIChVc2JJYS0+RGV2aWNlUGF0aCk7DQorICAgIH0NCisN CisgICAgRnJlZVBvb2wgKFVzYklhKTsNCisgIH0gZWxzZSB7DQorICAgIFVzYk9wZW5Ib3N0UHJv dG9CeUNoaWxkIChVc2JJYS0+RGV2aWNlLT5CdXMsIFVzYklhLT5IYW5kbGUpOw0KICAgfQ0KIA0K ICAgcmV0dXJuIFN0YXR1czsNCkBAIC04Miw2ICsxOTMsNyBAQCBVc2JGcmVlSW50ZXJmYWNlICgK IC8qKg0KICAgQ3JlYXRlIGFuIGludGVyZmFjZSBmb3IgdGhlIGRlc2NyaXB0b3IgSWZEZXNjLiBF YWNoDQogICBkZXZpY2UncyBjb25maWd1cmF0aW9uIGNhbiBoYXZlIHNldmVyYWwgaW50ZXJmYWNl cy4NCisgIEludGVyZmFjZSBtYXkgYmVsb25nIHRvIGludGVyZmFjZSBhc3NvY2lhdGlvbi4NCiAN CiAgIEBwYXJhbSAgRGV2aWNlICAgICAgICAgICAgICAgIFRoZSBkZXZpY2UgaGFzIHRoZSBpbnRl cmZhY2UgZGVzY3JpcHRvci4NCiAgIEBwYXJhbSAgSWZEZXNjICAgICAgICAgICAgICAgIFRoZSBp bnRlcmZhY2UgZGVzY3JpcHRvci4NCkBAIC05NSwxMCArMjA3LDEyIEBAIFVzYkNyZWF0ZUludGVy ZmFjZSAoCiAgIElOIFVTQl9JTlRFUkZBQ0VfREVTQyAgKklmRGVzYw0KICAgKQ0KIHsNCi0gIFVT Ql9ERVZJQ0VfUEFUSCAgVXNiTm9kZTsNCi0gIFVTQl9JTlRFUkZBQ0UgICAgKlVzYklmOw0KLSAg VVNCX0lOVEVSRkFDRSAgICAqSHViSWY7DQotICBFRklfU1RBVFVTICAgICAgIFN0YXR1czsNCisg IFVTQl9ERVZJQ0VfUEFUSCAgICAgICAgICAgVXNiTm9kZTsNCisgIFVTQl9JTlRFUkZBQ0UgICAg ICAgICAgICAgKlVzYklmOw0KKyAgVVNCX0lOVEVSRkFDRSAgICAgICAgICAgICAqSHViSWY7DQor ICBVU0JfQVNTT0NJQVRJT04gICAgICAgICAgICpVc2JJYTsNCisgIEVGSV9ERVZJQ0VfUEFUSF9Q Uk9UT0NPTCAgKkRldmljZVBhdGhQcm90b2NvbDsNCisgIEVGSV9TVEFUVVMgICAgICAgICAgICAg ICAgU3RhdHVzOw0KIA0KICAgVXNiSWYgPSBBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YgKFVTQl9J TlRFUkZBQ0UpKTsNCiANCkBAIC0xMjgsMTAgKzI0MiwxNyBAQCBVc2JDcmVhdGVJbnRlcmZhY2Ug KAogDQogICBTZXREZXZpY2VQYXRoTm9kZUxlbmd0aCAoJlVzYk5vZGUuSGVhZGVyLCBzaXplb2Yg KFVzYk5vZGUpKTsNCiANCi0gIEh1YklmID0gRGV2aWNlLT5QYXJlbnRJZjsNCi0gIEFTU0VSVCAo SHViSWYgIT0gTlVMTCk7DQorICBTdGF0dXMgPSBHZXRJbnRlcmZhY2VBc3NvY2lhdGlvbiAoRGV2 aWNlLCBJZkRlc2MsICZVc2JJYSk7DQorDQorICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0K KyAgICBEZXZpY2VQYXRoUHJvdG9jb2wgPSBVc2JJYS0+RGV2aWNlUGF0aDsNCisgIH0gZWxzZSB7 DQorICAgIEh1YklmID0gRGV2aWNlLT5QYXJlbnRJZjsNCisgICAgQVNTRVJUIChIdWJJZiAhPSBO VUxMKTsNCisgICAgRGV2aWNlUGF0aFByb3RvY29sID0gSHViSWYtPkRldmljZVBhdGg7DQorICB9 DQogDQotICBVc2JJZi0+RGV2aWNlUGF0aCA9IEFwcGVuZERldmljZVBhdGhOb2RlIChIdWJJZi0+ RGV2aWNlUGF0aCwgJlVzYk5vZGUuSGVhZGVyKTsNCisgIFVzYklmLT5EZXZpY2VQYXRoID0gQXBw ZW5kRGV2aWNlUGF0aE5vZGUgKERldmljZVBhdGhQcm90b2NvbCwgJlVzYk5vZGUuSGVhZGVyKTsN CiANCiAgIGlmIChVc2JJZi0+RGV2aWNlUGF0aCA9PSBOVUxMKSB7DQogICAgIERFQlVHICgoREVC VUdfRVJST1IsICJVc2JDcmVhdGVJbnRlcmZhY2U6IGZhaWxlZCB0byBjcmVhdGUgZGV2aWNlIHBh dGhcbiIpKTsNCkBAIC0xNTQsMTAgKzI3NSwyOCBAQCBVc2JDcmVhdGVJbnRlcmZhY2UgKAogICAg IGdvdG8gT05fRVJST1I7DQogICB9DQogDQotICAvLw0KLSAgLy8gT3BlbiBVU0IgSG9zdCBDb250 cm9sbGVyIFByb3RvY29sIGJ5IENoaWxkDQotICAvLw0KLSAgU3RhdHVzID0gVXNiT3Blbkhvc3RQ cm90b0J5Q2hpbGQgKERldmljZS0+QnVzLCBVc2JJZi0+SGFuZGxlKTsNCisgIFN0YXR1cyA9IEdl dEludGVyZmFjZUFzc29jaWF0aW9uIChEZXZpY2UsIElmRGVzYywgJlVzYklhKTsNCisNCisgIGlm ICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgIC8vDQorICAgIC8vIE9wZW4gVVNCIEludGVy ZmFjZSBBc3NpY2lhdGlvbiBQcm90b2NvbCBieSBDaGlsZA0KKyAgICAvLw0KKyAgICBTdGF0dXMg PSBnQlMtPk9wZW5Qcm90b2NvbCAoDQorICAgICAgICAgICAgICAgICAgICBVc2JJYS0+SGFuZGxl LA0KKyAgICAgICAgICAgICAgICAgICAgJmdFZGtpaVVzYkludGVyZmFjZUFzc29jaWF0aW9uUHJv dG9jb2xHdWlkLA0KKyAgICAgICAgICAgICAgICAgICAgKFZPSUQgKiopJlVzYklhLA0KKyAgICAg ICAgICAgICAgICAgICAgbVVzYkJ1c0RyaXZlckJpbmRpbmcuRHJpdmVyQmluZGluZ0hhbmRsZSwN CisgICAgICAgICAgICAgICAgICAgIFVzYklmLT5IYW5kbGUsDQorICAgICAgICAgICAgICAgICAg ICBFRklfT1BFTl9QUk9UT0NPTF9CWV9DSElMRF9DT05UUk9MTEVSDQorICAgICAgICAgICAgICAg ICAgICApOw0KKyAgICBERUJVRyAoKERFQlVHX0lORk8sICJVc2JDcmVhdGVJbnRlcmZhY2U6IG9w ZW4gSUFEIGZvciBjaGlsZCwgU3RhdHVzID0gJXJcbiIsIFN0YXR1cykpOw0KKyAgfSBlbHNlIHsN CisgICAgLy8NCisgICAgLy8gT3BlbiBVU0IgSG9zdCBDb250cm9sbGVyIFByb3RvY29sIGJ5IENo aWxkDQorICAgIC8vDQorICAgIFN0YXR1cyA9IFVzYk9wZW5Ib3N0UHJvdG9CeUNoaWxkIChEZXZp Y2UtPkJ1cywgVXNiSWYtPkhhbmRsZSk7DQorICAgIERFQlVHICgoREVCVUdfSU5GTywgIlVzYkNy ZWF0ZUludGVyZmFjZTogb3BlbiBob3N0IGNvbnRyb2xsZXIgZm9yIGNoaWxkLCBTdGF0dXMgPSAl clxuIiwgU3RhdHVzKSk7DQorICB9DQogDQogICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQog ICAgIGdCUy0+VW5pbnN0YWxsTXVsdGlwbGVQcm90b2NvbEludGVyZmFjZXMgKA0KQEAgLTE4NCw2 ICszMjMsMTEyIEBAIE9OX0VSUk9SOgogICByZXR1cm4gTlVMTDsNCiB9DQogDQorLyoqDQorICBD cmVhdGUgYW4gaW50ZXJmYWNlIGFzc29jaWF0aW9uIGluc3RhbmNlIGFuZCBpbnN0YWxsIHByb3Rv Y29scyB0byBtYW5hZ2UgaXQuDQorDQorICBAcGFyYW0gIERldmljZSAgICAgICAgVGhlIFVzYiBk ZXZpY2UgdGhhdCBoYXMgdGhlIGludGVyZmFjZSBhc3NvY2lhdGlvbi4NCisgIEBwYXJhbSAgSW5k ZXggICAgICAgICBUaGUgaW50ZXJmYWNlIGFzc29jaWF0aW9uIGluZGV4IHdpdGhpbiBEZXZpY2Uu DQorICBAcGFyYW0gIElmQXNzb2NEZXNjICAgVGhlIGludGVyZmFjZSBhc3NvY2lhdGlvbiBkZXNj cmlwdG9yLg0KKw0KKyAgQHJldHVybiBUaGUgY3JlYXRlZCBVU0IgaW50ZXJmYWNlIGFzc29jaWF0 aW9uLCBvciBOVUxMLg0KKw0KKyoqLw0KK1VTQl9BU1NPQ0lBVElPTiAqDQorVXNiQ3JlYXRlQXNz b2NpYXRpb24gKA0KKyAgSU4gVVNCX0RFVklDRSAgICAgICAgICAgICAgICAgICAgICAqRGV2aWNl LA0KKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCwNCisgIElOIFVT Ql9JTlRFUkZBQ0VfQVNTT0NJQVRJT05fREVTQyAgKklmQXNzb2NEZXNjDQorICApDQorew0KKyAg VVNCX0RFVklDRV9QQVRIICBVc2JOb2RlOw0KKyAgVVNCX0FTU09DSUFUSU9OICAqVXNiQXNzb2M7 DQorICBFRklfU1RBVFVTICAgICAgIFN0YXR1czsNCisNCisgIFVzYkFzc29jID0gQWxsb2NhdGVa ZXJvUG9vbCAoc2l6ZW9mIChVU0JfQVNTT0NJQVRJT04pKTsNCisNCisgIGlmIChVc2JBc3NvYyA9 PSBOVUxMKSB7DQorICAgIHJldHVybiBOVUxMOw0KKyAgfQ0KKw0KKyAgVXNiQXNzb2MtPlNpZ25h dHVyZSA9IFVTQl9BU1NPQ0lBVElPTl9TSUdOQVRVUkU7DQorICBVc2JBc3NvYy0+RGV2aWNlICAg ID0gRGV2aWNlOw0KKyAgVXNiQXNzb2MtPklhRGVzYyAgICA9IElmQXNzb2NEZXNjOw0KKw0KKyAg Q29weU1lbSAoDQorICAgICYoVXNiQXNzb2MtPlVzYklhUHJvdG9jb2wpLA0KKyAgICAmbVVzYklh UHJvdG9jb2wsDQorICAgIHNpemVvZiAoRURLSUlfVVNCX0lOVEVSRkFDRV9BU1NPQ0lBVElPTl9Q Uk9UT0NPTCkNCisgICAgKTsNCisNCisgIC8vDQorICAvLyBJbnN0YWxsIFVTQiBhc3NvY2lhdGlv biBwcm90b2NvbHMNCisgIC8vDQorICAvLyBEZXZpY2UgcGF0aCBwcm90b2NvbCBmb3IgdGhlIGFz c29jaWF0aW9uIGhhcyB0aGUgVVNCIG5vZGUgc2ltaWxhciB0byB0aGUNCisgIC8vIG9uZSBpbnN0 YWxsZWQgZm9yIFVTQiBpbnRlcmZhY2UuDQorICAvLw0KKw0KKyAgVXNiTm9kZS5IZWFkZXIuVHlw ZSAgICAgID0gTUVTU0FHSU5HX0RFVklDRV9QQVRIOw0KKyAgVXNiTm9kZS5IZWFkZXIuU3ViVHlw ZSAgID0gTVNHX1VTQl9EUDsNCisgIFVzYk5vZGUuUGFyZW50UG9ydE51bWJlciA9IERldmljZS0+ UGFyZW50UG9ydDsNCisgIFVzYk5vZGUuSW50ZXJmYWNlTnVtYmVyICA9IEluZGV4Ow0KKw0KKyAg U2V0RGV2aWNlUGF0aE5vZGVMZW5ndGggKCZVc2JOb2RlLkhlYWRlciwgc2l6ZW9mIChVc2JOb2Rl KSk7DQorDQorICBBU1NFUlQgKERldmljZS0+UGFyZW50SWYgIT0gTlVMTCk7DQorDQorICBVc2JB c3NvYy0+RGV2aWNlUGF0aCA9IEFwcGVuZERldmljZVBhdGhOb2RlIChEZXZpY2UtPlBhcmVudElm LT5EZXZpY2VQYXRoLCAmVXNiTm9kZS5IZWFkZXIpOw0KKw0KKyAgaWYgKFVzYkFzc29jLT5EZXZp Y2VQYXRoID09IE5VTEwpIHsNCisgICAgREVCVUcgKChERUJVR19FUlJPUiwgIlVzYkNyZWF0ZUFz c29jaWF0aW9uOiBmYWlsZWQgdG8gY3JlYXRlIGRldmljZSBwYXRoXG4iKSk7DQorDQorICAgIFN0 YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KKyAgICBnb3RvIE9OX0VSUk9SOw0KKyAgfQ0K Kw0KKyAgU3RhdHVzID0gZ0JTLT5JbnN0YWxsTXVsdGlwbGVQcm90b2NvbEludGVyZmFjZXMgKA0K KyAgICAgICAgICAgICAgICAgICZVc2JBc3NvYy0+SGFuZGxlLA0KKyAgICAgICAgICAgICAgICAg ICZnRWZpRGV2aWNlUGF0aFByb3RvY29sR3VpZCwNCisgICAgICAgICAgICAgICAgICBVc2JBc3Nv Yy0+RGV2aWNlUGF0aCwNCisgICAgICAgICAgICAgICAgICAmZ0Vka2lpVXNiSW50ZXJmYWNlQXNz b2NpYXRpb25Qcm90b2NvbEd1aWQsDQorICAgICAgICAgICAgICAgICAgJlVzYkFzc29jLT5Vc2JJ YVByb3RvY29sLA0KKyAgICAgICAgICAgICAgICAgIE5VTEwNCisgICAgICAgICAgICAgICAgICAp Ow0KKw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICBERUJVRyAoKERFQlVHX0VS Uk9SLCAiVXNiQ3JlYXRlQXNzb2NpYXRpb246IGZhaWxlZCB0byBpbnN0YWxsIFVzYklhZCAtICVy XG4iLCBTdGF0dXMpKTsNCisgICAgZ290byBPTl9FUlJPUjsNCisgIH0NCisNCisgIC8vDQorICAv LyBPcGVuIFVTQiBIb3N0IENvbnRyb2xsZXIgUHJvdG9jb2wgYnkgQ2hpbGQNCisgIC8vDQorICBT dGF0dXMgPSBVc2JPcGVuSG9zdFByb3RvQnlDaGlsZCAoRGV2aWNlLT5CdXMsIFVzYkFzc29jLT5I YW5kbGUpOw0KKw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICBnQlMtPlVuaW5z dGFsbE11bHRpcGxlUHJvdG9jb2xJbnRlcmZhY2VzICgNCisgICAgICAgICAgIFVzYkFzc29jLT5I YW5kbGUsDQorICAgICAgICAgICAmZ0VmaURldmljZVBhdGhQcm90b2NvbEd1aWQsDQorICAgICAg ICAgICBVc2JBc3NvYy0+RGV2aWNlUGF0aCwNCisgICAgICAgICAgICZnRWRraWlVc2JJbnRlcmZh Y2VBc3NvY2lhdGlvblByb3RvY29sR3VpZCwNCisgICAgICAgICAgICZVc2JBc3NvYy0+VXNiSWFQ cm90b2NvbCwNCisgICAgICAgICAgIE5VTEwNCisgICAgICAgICAgICk7DQorDQorICAgIERFQlVH ICgoREVCVUdfRVJST1IsICJVc2JDcmVhdGVBc3NvY2lhdGlvbjogZmFpbGVkIHRvIG9wZW4gaG9z dCBmb3IgY2hpbGQgLSAlclxuIiwgU3RhdHVzKSk7DQorICAgIGdvdG8gT05fRVJST1I7DQorICB9 DQorDQorICByZXR1cm4gVXNiQXNzb2M7DQorDQorT05fRVJST1I6DQorICBpZiAoVXNiQXNzb2Mt PkRldmljZVBhdGggIT0gTlVMTCkgew0KKyAgICBGcmVlUG9vbCAoVXNiQXNzb2MtPkRldmljZVBh dGgpOw0KKyAgfQ0KKw0KKyAgRnJlZVBvb2wgKFVzYkFzc29jKTsNCisgIHJldHVybiBOVUxMOw0K K30NCisNCiAvKioNCiAgIEZyZWUgdGhlIHJlc291cmNlIHVzZWQgYnkgdGhpcyBVU0IgZGV2aWNl Lg0KIA0KQEAgLTIzNiw2ICs0ODEsNDEgQEAgVXNiQ3JlYXRlRGV2aWNlICgKICAgcmV0dXJuIERl dmljZTsNCiB9DQogDQorLyoqDQorICBDb25uZWN0IFVTQiBjb250cm9sbGVyIGF0IFRQTF9DQUxM QkFDSw0KKw0KKyAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gYm90aCBVc2JJb0NvbnRyb2xU cmFuc2ZlciBhbmQNCisgIHRoZSB0aW1lciBjYWxsYmFjayBpbiBodWIgZW51bWVyYXRpb24uIFNv LCBhdCBsZWFzdCBpdCBpcw0KKyAgY2FsbGVkIGF0IFRQTF9DQUxMQkFDSy4gU29tZSBkcml2ZXIg c2l0dGluZyBvbiBVU0IgaGFzDQorICB0d2lzdGVkIFRQTCB1c2VkLiBJdCBzaG91bGQgYmUgbm8g cHJvYmxlbSBmb3IgdXMgdG8gY29ubmVjdA0KKyAgb3IgZGlzY29ubmVjdCBhdCBDQUxMQkFDSy4N CisNCisgIEBwYXJhbSAgSGFuZGxlICAgICAgICBDb250cm9sbGVyIGhhbmRsZSB0byBiZSBjb25u ZWN0ZWQNCisNCisqKi8NCitFRklfU1RBVFVTDQorVXNiQ29ubmVjdENvbnRyb2xsZXIgKA0KKyAg RUZJX0hBTkRMRSAgSGFuZGxlDQorICApDQorew0KKyAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KKyAg RUZJX1RQTCAgICAgT2xkVHBsOw0KKw0KKyAgT2xkVHBsID0gVXNiR2V0Q3VycmVudFRwbCAoKTsN CisgIERFQlVHICgoREVCVUdfSU5GTywgIlVzYkNvbm5lY3REcml2ZXI6IFRQTCBiZWZvcmUgY29u bmVjdCBpcyAlZCwgJXBcbiIsIChVSU5UMzIpT2xkVHBsLCBIYW5kbGUpKTsNCisNCisgIGdCUy0+ UmVzdG9yZVRQTCAoVFBMX0NBTExCQUNLKTsNCisNCisgIFN0YXR1cyA9IGdCUy0+Q29ubmVjdENv bnRyb2xsZXIgKEhhbmRsZSwgTlVMTCwgTlVMTCwgVFJVRSk7DQorDQorICBERUJVRyAoKERFQlVH X0lORk8sICJVc2JDb25uZWN0RHJpdmVyOiBUUEwgYWZ0ZXIgY29ubmVjdCBpcyAlZFxuIiwgKFVJ TlQzMilVc2JHZXRDdXJyZW50VHBsICgpKSk7DQorICBBU1NFUlQgKFVzYkdldEN1cnJlbnRUcGwg KCkgPT0gVFBMX0NBTExCQUNLKTsNCisNCisgIGdCUy0+UmFpc2VUUEwgKE9sZFRwbCk7DQorDQor ICByZXR1cm4gU3RhdHVzOw0KK30NCisNCiAvKioNCiAgIENvbm5lY3QgdGhlIFVTQiBpbnRlcmZh Y2Ugd2l0aCBpdHMgZHJpdmVyLiBFRkkgVVNCIGJ1cyB3aWxsDQogICBjcmVhdGUgYSBVU0IgaW50 ZXJmYWNlIGZvciBlYWNoIHNlcGFyYXRlIGludGVyZmFjZSBkZXNjcmlwdG9yLg0KQEAgLTI1Miw3 ICs1MzIsNiBAQCBVc2JDb25uZWN0RHJpdmVyICgKICAgKQ0KIHsNCiAgIEVGSV9TVEFUVVMgIFN0 YXR1czsNCi0gIEVGSV9UUEwgICAgIE9sZFRwbDsNCiANCiAgIFN0YXR1cyA9IEVGSV9TVUNDRVNT Ow0KIA0KQEAgLTI2NCwzMCArNTQzLDEyIEBAIFVzYkNvbm5lY3REcml2ZXIgKAogICAgIERFQlVH ICgoREVCVUdfSU5GTywgIlVzYkNvbm5lY3REcml2ZXI6IGZvdW5kIGEgaHViIGRldmljZVxuIikp Ow0KICAgICBTdGF0dXMgPSBtVXNiSHViQXBpLkluaXQgKFVzYklmKTsNCiAgIH0gZWxzZSB7DQot ICAgIC8vDQotICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGluIGJvdGggVXNiSW9Db250 cm9sVHJhbnNmZXIgYW5kDQotICAgIC8vIHRoZSB0aW1lciBjYWxsYmFjayBpbiBodWIgZW51bWVy YXRpb24uIFNvLCBhdCBsZWFzdCBpdCBpcw0KLSAgICAvLyBjYWxsZWQgYXQgVFBMX0NBTExCQUNL LiBTb21lIGRyaXZlciBzaXR0aW5nIG9uIFVTQiBoYXMNCi0gICAgLy8gdHdpc3RlZCBUUEwgdXNl ZC4gSXQgc2hvdWxkIGJlIG5vIHByb2JsZW0gZm9yIHVzIHRvIGNvbm5lY3QNCi0gICAgLy8gb3Ig ZGlzY29ubmVjdCBhdCBDQUxMQkFDSy4NCi0gICAgLy8NCi0NCiAgICAgLy8NCiAgICAgLy8gT25s eSByZWN1cnNpdmVseSB3YW50ZWQgdXNiIGNoaWxkIGRldmljZQ0KICAgICAvLw0KICAgICBpZiAo VXNiQnVzSXNXYW50ZWRVc2JJTyAoVXNiSWYtPkRldmljZS0+QnVzLCBVc2JJZikpIHsNCi0gICAg ICBPbGRUcGwgPSBVc2JHZXRDdXJyZW50VHBsICgpOw0KLSAgICAgIERFQlVHICgoREVCVUdfSU5G TywgIlVzYkNvbm5lY3REcml2ZXI6IFRQTCBiZWZvcmUgY29ubmVjdCBpcyAlZCwgJXBcbiIsIChV SU5UMzIpT2xkVHBsLCBVc2JJZi0+SGFuZGxlKSk7DQotDQotICAgICAgZ0JTLT5SZXN0b3JlVFBM IChUUExfQ0FMTEJBQ0spOw0KLQ0KLSAgICAgIFN0YXR1cyAgICAgICAgICAgPSBnQlMtPkNvbm5l Y3RDb250cm9sbGVyIChVc2JJZi0+SGFuZGxlLCBOVUxMLCBOVUxMLCBUUlVFKTsNCisgICAgICBT dGF0dXMgICAgICAgICAgID0gVXNiQ29ubmVjdENvbnRyb2xsZXIgKFVzYklmLT5IYW5kbGUpOw0K ICAgICAgIFVzYklmLT5Jc01hbmFnZWQgPSAoQk9PTEVBTikgIUVGSV9FUlJPUiAoU3RhdHVzKTsN Ci0NCi0gICAgICBERUJVRyAoKERFQlVHX0lORk8sICJVc2JDb25uZWN0RHJpdmVyOiBUUEwgYWZ0 ZXIgY29ubmVjdCBpcyAlZFxuIiwgKFVJTlQzMilVc2JHZXRDdXJyZW50VHBsICgpKSk7DQotICAg ICAgQVNTRVJUIChVc2JHZXRDdXJyZW50VHBsICgpID09IFRQTF9DQUxMQkFDSyk7DQotDQotICAg ICAgZ0JTLT5SYWlzZVRQTCAoT2xkVHBsKTsNCiAgICAgfQ0KICAgfQ0KIA0KQEAgLTM3OCw2ICs2 MzksNyBAQCBVc2JTZWxlY3RDb25maWcgKAogICBVU0JfSU5URVJGQUNFICAgICAgICpVc2JJZjsN CiAgIEVGSV9TVEFUVVMgICAgICAgICAgU3RhdHVzOw0KICAgVUlOVDggICAgICAgICAgICAgICBJ bmRleDsNCisgIFVTQl9BU1NPQ0lBVElPTiAgICAgKlVzYklhOw0KIA0KICAgLy8NCiAgIC8vIExv Y2F0ZSB0aGUgYWN0aXZlIGNvbmZpZywgdGhlbiBzZXQgdGhlIGRldmljZSdzIHBvaW50ZXINCkBA IC0zOTMsNyArNjU1LDcgQEAgVXNiU2VsZWN0Q29uZmlnICgKICAgICB9DQogICB9DQogDQotICBp ZiAoSW5kZXggPT0gRGV2RGVzYy0+RGVzYy5OdW1Db25maWd1cmF0aW9ucykgew0KKyAgaWYgKChD b25maWdEZXNjID09IE5VTEwpIHx8IChJbmRleCA9PSBEZXZEZXNjLT5EZXNjLk51bUNvbmZpZ3Vy YXRpb25zKSkgew0KICAgICByZXR1cm4gRUZJX05PVF9GT1VORDsNCiAgIH0NCiANCkBAIC00MDYs NiArNjY4LDE5IEBAIFVzYlNlbGVjdENvbmZpZyAoCiAgICAgRGV2aWNlLT5BZGRyZXNzDQogICAg ICkpOw0KIA0KKyAgLy8NCisgIC8vIENyZWF0ZSBpbnRlcmZhY2VzIGZvciBlYWNoIFVTQiBpbnRl cmZhY2UgYXNzb2NpYXRpb24gZGVzY3JpcHRvci4NCisgIC8vDQorICBEZXZpY2UtPk51bU9mQXNz b2NpYXRpb24gPSBDb25maWdEZXNjLT5OdW1PZklhZHM7DQorDQorICBmb3IgKEluZGV4ID0gMDsg SW5kZXggPCBDb25maWdEZXNjLT5OdW1PZklhZHM7IEluZGV4KyspIHsNCisgICAgREVCVUcgKChE RUJVR19JTkZPLCAiVXNiU2VsZWN0Q29uZmlnOiBwcm9jZXNzIElBRCAlZFxuIiwgSW5kZXgpKTsN CisNCisgICAgVXNiSWEgPSBVc2JDcmVhdGVBc3NvY2lhdGlvbiAoRGV2aWNlLCBJbmRleCwgQ29u ZmlnRGVzYy0+SWFkc1tJbmRleF0pOw0KKyAgICBBU1NFUlQgKEluZGV4IDwgVVNCX01BWF9BU1NP Q0lBVElPTik7DQorICAgIERldmljZS0+QXNzb2NpYXRpb25zW0luZGV4XSA9IFVzYklhOw0KKyAg fQ0KKw0KICAgLy8NCiAgIC8vIENyZWF0ZSBpbnRlcmZhY2VzIGZvciBlYWNoIFVTQiBpbnRlcmZh Y2UgZGVzY3JpcHRvci4NCiAgIC8vDQpAQCAtNDQ4LDkgKzcyMyw1NSBAQCBVc2JTZWxlY3RDb25m aWcgKAogDQogICBEZXZpY2UtPk51bU9mSW50ZXJmYWNlID0gSW5kZXg7DQogDQorICAvLw0KKyAg Ly8gQ29ubmVjdCBhc3NvY2lhdGlvbiBkZXZpY2UgZHJpdmVycy4gQ29ubmVjdGlvbiBtYXkgZmFp bCBpZiBpZiBkZXZpY2UgZHJpdmVyIGhhcyBiZWVuIGFscmVhZHkNCisgIC8vIHN0YXJ0ZWQgZm9y IGFueSBVc2JJbyB0aGF0IGJlbG9uZ3MgdG8gdGhlIGFzc29jaWF0aW9uLg0KKyAgLy8NCisgIGZv ciAoSW5kZXggPSAwOyBJbmRleCA8IERldmljZS0+TnVtT2ZBc3NvY2lhdGlvbjsgSW5kZXgrKykg ew0KKyAgICBTdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGdCUy0+Q29u bmVjdENvbnRyb2xsZXIgKERldmljZS0+QXNzb2NpYXRpb25zW0luZGV4XS0+SGFuZGxlLCBOVUxM LCBOVUxMLCBUUlVFKTsNCisgICAgRGV2aWNlLT5Bc3NvY2lhdGlvbnNbSW5kZXhdLT5Jc01hbmFn ZWQgPSAoQk9PTEVBTikgIUVGSV9FUlJPUiAoU3RhdHVzKTsNCisNCisgICAgREVCVUcgKChERUJV R19JTkZPLCAiVXNiU2VsZWN0Q29uZmlnOiBhc3NvY2lhdGlvbiBkcml2ZXIgY29ubmVjdDogJXJc biIsIFN0YXR1cykpOw0KKyAgfQ0KKw0KICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KIH0NCiANCisv KioNCisgIERpc2Nvbm5lY3QgVVNCIGNvbnRyb2xsZXIgYXQgVFBMX0NBTExCQUNLDQorDQorICBU aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiBib3RoIFVzYklvQ29udHJvbFRyYW5zZmVyIGFuZA0K KyAgdGhlIHRpbWVyIGNhbGxiYWNrIGluIGh1YiBlbnVtZXJhdGlvbi4gU28sIGF0IGxlYXN0IGl0 IGlzDQorICBjYWxsZWQgYXQgVFBMX0NBTExCQUNLLiBTb21lIGRyaXZlciBzaXR0aW5nIG9uIFVT QiBoYXMNCisgIHR3aXN0ZWQgVFBMIHVzZWQuIEl0IHNob3VsZCBiZSBubyBwcm9ibGVtIGZvciB1 cyB0byBjb25uZWN0DQorICBvciBkaXNjb25uZWN0IGF0IENBTExCQUNLLg0KKw0KKyAgQHBhcmFt ICBIYW5kbGUgICAgICAgIENvbnRyb2xsZXIgaGFuZGxlIHRvIGJlIGRpc2Nvbm5lY3RlZA0KKw0K KyoqLw0KK0VGSV9TVEFUVVMNCitVc2JEaXNjb25uZWN0Q29udHJvbGxlciAoDQorICBFRklfSEFO RExFICBIYW5kbGUNCisgICkNCit7DQorICBFRklfVFBMICAgICBPbGRUcGw7DQorICBFRklfU1RB VFVTICBTdGF0dXM7DQorDQorICBPbGRUcGwgPSBVc2JHZXRDdXJyZW50VHBsICgpOw0KKyAgREVC VUcgKChERUJVR19JTkZPLCAiVXNiRGlzY29ubmVjdERyaXZlcjogb2xkIFRQTCBpcyAlZCwgJXBc biIsIChVSU5UMzIpT2xkVHBsLCBIYW5kbGUpKTsNCisNCisgIGdCUy0+UmVzdG9yZVRQTCAoVFBM X0NBTExCQUNLKTsNCisNCisgIFN0YXR1cyA9IGdCUy0+RGlzY29ubmVjdENvbnRyb2xsZXIgKEhh bmRsZSwgTlVMTCwgTlVMTCk7DQorDQorICBERUJVRyAoKERFQlVHX0lORk8sICJVc2JEaXNjb25u ZWN0RHJpdmVyOiBUUEwgYWZ0ZXIgZGlzY29ubmVjdCBpcyAlZCwgJWRcbiIsIChVSU5UMzIpVXNi R2V0Q3VycmVudFRwbCAoKSwgU3RhdHVzKSk7DQorICBBU1NFUlQgKFVzYkdldEN1cnJlbnRUcGwg KCkgPT0gVFBMX0NBTExCQUNLKTsNCisNCisgIGdCUy0+UmFpc2VUUEwgKE9sZFRwbCk7DQorDQor ICByZXR1cm4gU3RhdHVzOw0KK30NCisNCiAvKioNCiAgIERpc2Nvbm5lY3QgdGhlIFVTQiBpbnRl cmZhY2Ugd2l0aCBpdHMgZHJpdmVyLg0KIA0KQEAgLTQ2Miw3ICs3ODMsNiBAQCBVc2JEaXNjb25u ZWN0RHJpdmVyICgKICAgSU4gVVNCX0lOVEVSRkFDRSAgKlVzYklmDQogICApDQogew0KLSAgRUZJ X1RQTCAgICAgT2xkVHBsOw0KICAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KIA0KICAgLy8NCkBAIC00 NzMsMjcgKzc5MywxMSBAQCBVc2JEaXNjb25uZWN0RHJpdmVyICgKICAgaWYgKFVzYklmLT5Jc0h1 Yikgew0KICAgICBTdGF0dXMgPSBVc2JJZi0+SHViQXBpLT5SZWxlYXNlIChVc2JJZik7DQogICB9 IGVsc2UgaWYgKFVzYklmLT5Jc01hbmFnZWQpIHsNCi0gICAgLy8NCi0gICAgLy8gVGhpcyBmdW5j dGlvbiBpcyBjYWxsZWQgaW4gYm90aCBVc2JJb0NvbnRyb2xUcmFuc2ZlciBhbmQNCi0gICAgLy8g dGhlIHRpbWVyIGNhbGxiYWNrIGluIGh1YiBlbnVtZXJhdGlvbi4gU28sIGF0IGxlYXN0IGl0IGlz DQotICAgIC8vIGNhbGxlZCBhdCBUUExfQ0FMTEJBQ0suIFNvbWUgZHJpdmVyIHNpdHRpbmcgb24g VVNCIGhhcw0KLSAgICAvLyB0d2lzdGVkIFRQTCB1c2VkLiBJdCBzaG91bGQgYmUgbm8gcHJvYmxl bSBmb3IgdXMgdG8gY29ubmVjdA0KLSAgICAvLyBvciBkaXNjb25uZWN0IGF0IENBTExCQUNLLg0K LSAgICAvLw0KLSAgICBPbGRUcGwgPSBVc2JHZXRDdXJyZW50VHBsICgpOw0KLSAgICBERUJVRyAo KERFQlVHX0lORk8sICJVc2JEaXNjb25uZWN0RHJpdmVyOiBvbGQgVFBMIGlzICVkLCAlcFxuIiwg KFVJTlQzMilPbGRUcGwsIFVzYklmLT5IYW5kbGUpKTsNCisgICAgU3RhdHVzID0gVXNiRGlzY29u bmVjdENvbnRyb2xsZXIgKFVzYklmLT5IYW5kbGUpOw0KIA0KLSAgICBnQlMtPlJlc3RvcmVUUEwg KFRQTF9DQUxMQkFDSyk7DQotDQotICAgIFN0YXR1cyA9IGdCUy0+RGlzY29ubmVjdENvbnRyb2xs ZXIgKFVzYklmLT5IYW5kbGUsIE5VTEwsIE5VTEwpOw0KICAgICBpZiAoIUVGSV9FUlJPUiAoU3Rh dHVzKSkgew0KICAgICAgIFVzYklmLT5Jc01hbmFnZWQgPSBGQUxTRTsNCiAgICAgfQ0KLQ0KLSAg ICBERUJVRyAoKERFQlVHX0lORk8sICJVc2JEaXNjb25uZWN0RHJpdmVyOiBUUEwgYWZ0ZXIgZGlz Y29ubmVjdCBpcyAlZCwgJWRcbiIsIChVSU5UMzIpVXNiR2V0Q3VycmVudFRwbCAoKSwgU3RhdHVz KSk7DQotICAgIEFTU0VSVCAoVXNiR2V0Q3VycmVudFRwbCAoKSA9PSBUUExfQ0FMTEJBQ0spOw0K LQ0KLSAgICBnQlMtPlJhaXNlVFBMIChPbGRUcGwpOw0KICAgfQ0KIA0KICAgcmV0dXJuIFN0YXR1 czsNCkBAIC01MTAsMTAgKzgxNCwxMSBAQCBVc2JSZW1vdmVDb25maWcgKAogICBJTiBVU0JfREVW SUNFICAqRGV2aWNlDQogICApDQogew0KLSAgVVNCX0lOVEVSRkFDRSAgKlVzYklmOw0KLSAgVUlO VE4gICAgICAgICAgSW5kZXg7DQotICBFRklfU1RBVFVTICAgICBTdGF0dXM7DQotICBFRklfU1RB VFVTICAgICBSZXR1cm5TdGF0dXM7DQorICBVU0JfSU5URVJGQUNFICAgICpVc2JJZjsNCisgIFVT Ql9BU1NPQ0lBVElPTiAgKlVzYklhOw0KKyAgVUlOVE4gICAgICAgICAgICBJbmRleDsNCisgIEVG SV9TVEFUVVMgICAgICAgU3RhdHVzOw0KKyAgRUZJX1NUQVRVUyAgICAgICBSZXR1cm5TdGF0dXM7 DQogDQogICAvLw0KICAgLy8gUmVtb3ZlIGVhY2ggaW50ZXJmYWNlIG9mIHRoZSBkZXZpY2UNCkBA IC01NDMsNiArODQ4LDM1IEBAIFVzYlJlbW92ZUNvbmZpZyAoCiAgIH0NCiANCiAgIERldmljZS0+ QWN0aXZlQ29uZmlnID0gTlVMTDsNCisNCisgIGlmIChFRklfRVJST1IgKFJldHVyblN0YXR1cykp IHsNCisgICAgcmV0dXJuIFJldHVyblN0YXR1czsNCisgIH0NCisNCisgIC8vIFJldHVyblN0YXR1 cyBpcyBFRklfU1VDQ0VTUw0KKw0KKyAgLy8NCisgIC8vIFJlbW92ZSBlYWNoIGludGVyZmFjZSBh c3NvY2lhdGlvbg0KKyAgLy8NCisgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IERldmljZS0+TnVt T2ZBc3NvY2lhdGlvbjsgSW5kZXgrKykgew0KKyAgICBVc2JJYSA9IERldmljZS0+QXNzb2NpYXRp b25zW0luZGV4XTsNCisNCisgICAgU3RhdHVzID0gVXNiRGlzY29ubmVjdENvbnRyb2xsZXIgKFVz YklhLT5IYW5kbGUpOw0KKyAgICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICAgIFN0 YXR1cyA9IFVzYkZyZWVBc3NvY2lhdGlvbiAoVXNiSWEpOw0KKyAgICAgIERFQlVHICgoREVCVUdf SU5GTywgIlVzYlJlbW92ZUNvbmZpZzogZnJlZSBhc3NvY2lhdGlvbjogJXJcbiIsIFN0YXR1cykp Ow0KKyAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgICAgIFVzYkNvbm5lY3RD b250cm9sbGVyIChVc2JJYS0+SGFuZGxlKTsNCisgICAgICB9DQorICAgIH0NCisNCisgICAgaWYg KCFFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgICBEZXZpY2UtPkFzc29jaWF0aW9uc1tJbmRl eF0gPSBOVUxMOw0KKyAgICB9IGVsc2Ugew0KKyAgICAgIFJldHVyblN0YXR1cyA9IFN0YXR1czsN CisgICAgfQ0KKyAgfQ0KKw0KICAgcmV0dXJuIFJldHVyblN0YXR1czsNCiB9DQogDQpkaWZmIC0t Z2l0IGEvTWRlTW9kdWxlUGtnL0J1cy9Vc2IvVXNiQnVzRHhlL1VzYkludGZBc3NvYy5jIGIvTWRl TW9kdWxlUGtnL0J1cy9Vc2IvVXNiQnVzRHhlL1VzYkludGZBc3NvYy5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjE1ZWE0MWRjZTkKLS0tIC9kZXYvbnVsbAorKysgYi9N ZGVNb2R1bGVQa2cvQnVzL1VzYi9Vc2JCdXNEeGUvVXNiSW50ZkFzc29jLmMKQEAgLTAsMCArMSwx NTMgQEAKKy8qKiBAZmlsZQ0KKw0KKyAgVXNiIEludGVyZmFjZSBBc3NvY2lhdGlvbiBQcm90b2Nv bCBpbXBsZW1lbnRhdGlvbi4NCisNCitDb3B5cmlnaHQgKGMpIDIwMjUsIEFtZXJpY2FuIE1lZ2F0 cmVuZHMgSW50ZXJuYXRpb25hbCwgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCitTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KKw0KKyoqLw0KKw0KKyNp bmNsdWRlICJVc2JCdXMuaCINCisNCisvKioNCisgIEdldCB0aGUgaW50ZXJmYWNlIGZyb20gaW50 ZXJmYWNlIGFzc29jaWF0aW9uLg0KKw0KKyAgQHBhcmFtW2luXSAgVXNiSWEgICBBIHBvaW50ZXIg dG8gdGhlIGludGVyZmFjZSBhc3NvY2lhdGlvbiBkYXRhLg0KKyAgQHBhcmFtW2luXSAgSW50ZXJm YWNlTnVtYmVyIEludGVyZmFjZSB0byBsb29rIGZvciBpbnNpZGUgdGhlIGFzc29jaWF0aW9uLg0K Kw0KKyAgQHJldHZhbCBBIHBvaW50ZXIgdG8gdGhlIGludGVyZmFjZSBkYXRhDQorICBAcmV0dmFs IE5VTEwgIEludGVyZmFjZSBpcyBub3QgZm91bmQgaW4gdGhlIGFzc29jaWF0aW9uLg0KKw0KKyoq Lw0KK1VTQl9JTlRFUkZBQ0VfREVTQyAqDQorVXNiQXNzb2NGaW5kSW50ZXJmYWNlICgNCisgIElO IFVTQl9BU1NPQ0lBVElPTiAgKlVzYklhLA0KKyAgSU4gVUlOVDggICAgICAgICAgICBJbnRlcmZh Y2VOdW1iZXINCisgICkNCit7DQorICBVSU5UOCAgSW5kZXg7DQorICBVSU5UOCAgSW50cmY7DQor DQorICBJbnRyZiA9IFVzYklhLT5JYURlc2MtPkRlc2MuRmlyc3RJbnRlcmZhY2U7DQorICBmb3Ig KEluZGV4ID0gMDsgSW5kZXggPCBVc2JJYS0+SWFEZXNjLT5EZXNjLkludGVyZmFjZUNvdW50OyBJ bmRleCsrKSB7DQorICAgIGlmIChJbnRlcmZhY2VOdW1iZXIgPT0gSW50cmYpIHsNCisgICAgICBy ZXR1cm4gVXNiSWEtPklhRGVzYy0+SW50ZXJmYWNlc1tJbmRleF07DQorICAgIH0NCisNCisgICAg SW50cmYrKzsNCisgIH0NCisNCisgIERFQlVHICgoREVCVUdfRVJST1IsICJVc2JBc3NvY0ZpbmRJ bnRlcmZhY2U6IGludGVyZmFjZSAweCV4IGRvZXMgbm90IGJlbG9uZyB0byB0aGlzIGFzc29jaWF0 aW9uXG4iLCBJbnRlcmZhY2VOdW1iZXIpKTsNCisgIHJldHVybiBOVUxMOw0KK30NCisNCisvKioN CisgIEdldCB0aGUgVVNCIEludGVyZmFjZSBBc3NvY2lhdGlvbiBEZXNjcmlwdG9yIGZyb20gdGhl IGN1cnJlbnQgVVNCIGNvbmZpZ3VyYXRpb24uDQorDQorICBAcGFyYW1baW5dIFRoaXMgICAgICAg ICAgICAgIEEgcG9pbnRlciB0byB0aGUgRURLSUlfVVNCX0lOVEVSRkFDRV9BU1NPQ0lBVElPTl9Q Uk9UT0NPTCBpbnN0YW5jZS4NCisgIEBwYXJhbVtvdXRdIERlc2NyaXB0b3IgICAgICAgQSBwb2lu dGVyIHRvIHRoZSBjYWxsZXIgYWxsb2NhdGVkIFVTQiBJbnRlcmZhY2UgQXNzb2NpYXRpb24gRGVz Y3JpcHRvci4NCisNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFRoZSBkZXNjcmlw dG9yIHdhcyByZXRyaWV2ZWQgc3VjY2Vzc2Z1bGx5Lg0KKyAgQHJldHZhbCBFRklfSU5WQUxJRF9Q QVJBTUVURVIgRGVzY3JpcHRvciBpcyBOVUxMLg0KKw0KKyoqLw0KK0VGSV9TVEFUVVMNCitFRklB UEkNCitVc2JJYUdldEFzc29jaWF0aW9uRGVzY3JpcHRvciAoDQorICBJTiAgRURLSUlfVVNCX0lO VEVSRkFDRV9BU1NPQ0lBVElPTl9QUk9UT0NPTCAgKlRoaXMsDQorICBPVVQgRUZJX1VTQl9JTlRF UkZBQ0VfQVNTT0NJQVRJT05fREVTQ1JJUFRPUiAgKkRlc2NyaXB0b3INCisgICkNCit7DQorICBV U0JfQVNTT0NJQVRJT04gICpVc2JJYTsNCisgIEVGSV9UUEwgICAgICAgICAgT2xkVHBsOw0KKyAg RUZJX1NUQVRVUyAgICAgICBTdGF0dXM7DQorDQorICBPbGRUcGwgPSBnQlMtPlJhaXNlVFBMIChV U0JfQlVTX1RQTCk7DQorDQorICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsNCisNCisgIEFTU0VSVCAo RGVzY3JpcHRvciAhPSBOVUxMKTsNCisgIGlmIChEZXNjcmlwdG9yID09IE5VTEwpIHsNCisgICAg U3RhdHVzID0gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KKyAgICBnb3RvIE9OX0VYSVQ7DQorICB9 DQorDQorICBVc2JJYSA9IFVTQl9BU1NPQ0lBVElPTl9GUk9NX1VTQklBIChUaGlzKTsNCisgIENv cHlNZW0gKERlc2NyaXB0b3IsICYoVXNiSWEtPklhRGVzYy0+RGVzYyksIHNpemVvZiAoRUZJX1VT Ql9JTlRFUkZBQ0VfQVNTT0NJQVRJT05fREVTQ1JJUFRPUikpOw0KKw0KK09OX0VYSVQ6DQorICBn QlMtPlJlc3RvcmVUUEwgKE9sZFRwbCk7DQorDQorICByZXR1cm4gU3RhdHVzOw0KK30NCisNCisv KioNCisgIFJldHJpZXZlIHRoZSBkZXRhaWxzIG9mIHRoZSByZXF1ZXN0ZWQgaW50ZXJmYWNlIHRo YXQgYmVsb25ncyB0byBVU0IgYXNzb2NpYXRpb24uDQorDQorICBAcGFyYW1baW5dIFRoaXMgICAg ICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRURLSUlfVVNCX0lOVEVSRkFDRV9BU1NPQ0lBVElP Tl9QUk9UT0NPTCBpbnN0YW5jZS4NCisgIEBwYXJhbVtpbl0gSW50ZXJmYWNlTnVtYmVyICAgSW50 ZXJmYWNlIG51bWJlci4NCisgIEBwYXJhbVtvdXRdIFVzYklvICAgICAgICAgICAgQSBwb2ludGVy IHRvIHRoZSBjYWxsZXIgYWxsb2NhdGVkIFVzYklvIHByb3RvY29sLg0KKyAgQHBhcmFtW291dF0g U2V0dGluZ3NDb3VudCAgICBBIHBvaW50ZXIgdG8gdGhlIGNhbGxlciBhbGxvY2F0ZWQgbnVtYmVy IG9mIHNldHRpbmdzIGZvciB0aGlzIGludGVyZmFjZS4NCisNCisgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgICAgIE91dHB1dCBwYXJhbWV0ZXJzIHdlcmUgdXBkYXRlZCBzdWNjZXNzZnVsbHku DQorICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBVc2JJbyBvciBTZXR0dW50c0NvdW50 IGlzIE5VTEwuDQorICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICBJbnRlcmZhY2UgZG9l cyBub3QgYmVsb25nIHRvIHRoaXMgaW50ZXJmYWNlIGFzc29jaWF0aW9uLg0KKw0KKyoqLw0KK0VG SV9TVEFUVVMNCitFRklBUEkNCitVc2JJYUdldEFzc29jaWF0ZVNldHRpbmdzICgNCisgIElOICBF REtJSV9VU0JfSU5URVJGQUNFX0FTU09DSUFUSU9OX1BST1RPQ09MICAqVGhpcywNCisgIElOICBV SU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcmZhY2VOdW1iZXIs DQorICBPVVQgRUZJX1VTQl9JT19QUk9UT0NPTCAgICAgICAgICAgICAgICAgICAgICAgKipVc2JJ bywNCisgIE9VVCBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqU2V0 dGluZ3NDb3VudA0KKyAgKQ0KK3sNCisgIFVTQl9BU1NPQ0lBVElPTiAgICAgKlVzYklhOw0KKyAg RUZJX1RQTCAgICAgICAgICAgICBPbGRUcGw7DQorICBVSU5UOCAgICAgICAgICAgICAgIEluZGV4 Ow0KKyAgRUZJX1NUQVRVUyAgICAgICAgICBTdGF0dXM7DQorICBVU0JfREVWSUNFICAgICAgICAg ICpEZXZpY2U7DQorICBVU0JfSU5URVJGQUNFX0RFU0MgICpJZkRlc2M7DQorDQorICBPbGRUcGwg PSBnQlMtPlJhaXNlVFBMIChVU0JfQlVTX1RQTCk7DQorDQorICBBU1NFUlQgKChVc2JJbyAhPSBO VUxMKSAmJiAoU2V0dGluZ3NDb3VudCAhPSBOVUxMKSk7DQorICBpZiAoKFVzYklvID09IE5VTEwp IHx8IChTZXR0aW5nc0NvdW50ID09IE5VTEwpKSB7DQorICAgIFN0YXR1cyA9ICBFRklfSU5WQUxJ RF9QQVJBTUVURVI7DQorICAgIGdvdG8gIE9OX0VYSVQ7DQorICB9DQorDQorICBVc2JJYSA9IFVT Ql9BU1NPQ0lBVElPTl9GUk9NX1VTQklBIChUaGlzKTsNCisNCisgIElmRGVzYyA9IFVzYkFzc29j RmluZEludGVyZmFjZSAoVXNiSWEsIEludGVyZmFjZU51bWJlcik7DQorICBpZiAoSWZEZXNjID09 IE5VTEwpIHsNCisgICAgU3RhdHVzID0gRUZJX05PVF9GT1VORDsNCisgICAgZ290byBPTl9FWElU Ow0KKyAgfQ0KKw0KKyAgKlNldHRpbmdzQ291bnQgPSBJZkRlc2MtPk51bU9mU2V0dGluZyAtIDE7 DQorDQorICAvLw0KKyAgLy8gRmluZCBVc2JJbyBwcm90b2NvbCBmb3IgdGhpcyBpbnRlcmZhY2UN CisgIC8vDQorICBEZXZpY2UgPSBVc2JJYS0+RGV2aWNlOw0KKyAgU3RhdHVzID0gRUZJX05PVF9G T1VORDsNCisNCisgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IERldmljZS0+TnVtT2ZJbnRlcmZh Y2U7IEluZGV4KyspIHsNCisgICAgaWYgKERldmljZS0+SW50ZXJmYWNlc1tJbmRleF0tPklmU2V0 dGluZy0+RGVzYy5JbnRlcmZhY2VOdW1iZXIgPT0gSW50ZXJmYWNlTnVtYmVyKSB7DQorICAgICAg KlVzYklvID0gJkRldmljZS0+SW50ZXJmYWNlc1tJbmRleF0tPlVzYklvOw0KKyAgICAgIFN0YXR1 cyA9IEVGSV9TVUNDRVNTOw0KKyAgICAgIGJyZWFrOw0KKyAgICB9DQorICB9DQorDQorT05fRVhJ VDoNCisgIGdCUy0+UmVzdG9yZVRQTCAoT2xkVHBsKTsNCisgIHJldHVybiBTdGF0dXM7DQorfQ0K Kw0KK0VES0lJX1VTQl9JTlRFUkZBQ0VfQVNTT0NJQVRJT05fUFJPVE9DT0wgIG1Vc2JJYVByb3Rv Y29sID0gew0KKyAgVXNiSWFHZXRBc3NvY2lhdGlvbkRlc2NyaXB0b3IsDQorICBVc2JJYUdldEFz c29jaWF0ZVNldHRpbmdzDQorfTsNCmRpZmYgLS1naXQgYS9NZGVNb2R1bGVQa2cvSW5jbHVkZS9Q cm90b2NvbC9Vc2JBc3NvY2lhdGlvbklvLmggYi9NZGVNb2R1bGVQa2cvSW5jbHVkZS9Qcm90b2Nv bC9Vc2JBc3NvY2lhdGlvbklvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MC4uMjgzNWRhYjVjMAotLS0gL2Rldi9udWxsCisrKyBiL01kZU1vZHVsZVBrZy9JbmNsdWRlL1By b3RvY29sL1VzYkFzc29jaWF0aW9uSW8uaApAQCAtMCwwICsxLDgxIEBACisvKiogQGZpbGUNCisg IEVGSSBVc2IgSW50ZXJmYWNlIEFzc29jaWF0aW9uIHByb3RvY29sLg0KKw0KKyAgVGhpcyBwcm90 b2NvbCBpcyB1c2VkIGJ5IFVTQiBkcml2ZXJzLCBydW5uaW5nIGluIHRoZSBFRkkgYm9vdCBzZXJ2 aWNlcw0KKyAgZW52aXJvbm1lbnQgdG8gYWNjZXNzIFVTQiBkZXZpY2VzIHRoYXQgaW1wbGVtZW50 IHRoZWlyIGNvbmZpZ3VyYXRpb25zDQorICB1c2luZyBpbnRlcmZhY2UgYXNzb2NpYXRpb246IFVT QiBjYW1lcmFzLCBVU0IgYXVkaW8gZGV2aWNlcywgVVNCIG1vZGVtcywgZXRjLg0KKw0KKyAgQ29w eXJpZ2h0IChjKSAyMDI1LCBBbWVyaWNhbiBNZWdhdHJlbmRzIEludGVybmF0aW9uYWwgTExDLiBB bGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCisgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt Mi1DbGF1c2UtUGF0ZW50DQorDQorKiovDQorDQorI2lmbmRlZiBfX1VTQl9BU1NPQ0lBVElPTl9J T19IX18NCisjZGVmaW5lIF9fVVNCX0FTU09DSUFUSU9OX0lPX0hfXw0KKw0KKyNpbmNsdWRlIDxJ bmR1c3RyeVN0YW5kYXJkL1VzYi5oPg0KKyNpbmNsdWRlIDxQcm90b2NvbC9Vc2JJby5oPg0KKw0K K3R5cGVkZWYgVVNCX0lOVEVSRkFDRV9BU1NPQ0lBVElPTl9ERVNDUklQVE9SIEVGSV9VU0JfSU5U RVJGQUNFX0FTU09DSUFUSU9OX0RFU0NSSVBUT1I7DQorDQorLy8NCisvLyBHbG9iYWwgSUQgZm9y IHRoZSBVU0IgSUFEIFByb3RvY29sDQorLy8NCisjZGVmaW5lIEVES0lJX1VTQl9JTlRFUkZBQ0Vf QVNTT0NJQVRJT05fUFJPVE9DT0xfR1VJRCBcDQorICB7IFwNCisgICAgMHhmNDI3OWZiMSwgMHhl ZjFlLCAweDQzNDYsIHsgMHhhYiwgMHgzMiwgMHgzZiwgMHhlMywgMHg4NiwgMHhlZSwgMHhiNCwg MHg1MiB9IFwNCisgIH0NCisNCit0eXBlZGVmIHN0cnVjdCBfRURLSUlfVVNCX0lOVEVSRkFDRV9B U1NPQ0lBVElPTl9QUk9UT0NPTCBFREtJSV9VU0JfSU5URVJGQUNFX0FTU09DSUFUSU9OX1BST1RP Q09MOw0KKw0KKy8qKg0KKyAgR2V0IHRoZSBVU0IgSW50ZXJmYWNlIEFzc29jaWF0aW9uIERlc2Ny aXB0b3IgZnJvbSB0aGUgY3VycmVudCBVU0IgY29uZmlndXJhdGlvbi4NCisNCisgIEBwYXJhbVtp bl0gIFRoaXMgICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX1VTQl9JQV9QUk9UT0NP TCBpbnN0YW5jZS4NCisgIEBwYXJhbVtvdXRdICBEZXNjcmlwdG9yICAgICAgIEEgcG9pbnRlciB0 byB0aGUgY2FsbGVyIGFsbG9jYXRlZCBVU0IgSW50ZXJmYWNlIEFzc29jaWF0aW9uIERlc2NyaXB0 b3IuDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgZGVzY3JpcHRvciB3 YXMgcmV0cmlldmVkIHN1Y2Nlc3NmdWxseS4NCisgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1F VEVSIERlc2NyaXB0b3IgaXMgTlVMTC4NCisNCisqKi8NCit0eXBlZGVmDQorRUZJX1NUQVRVUw0K KyhFRklBUEkgKkVES0lJX1VTQl9JQV9HRVRfQVNTT0NJQVRJT05fREVTQ1JJUFRPUikoDQorICBJ TiAgRURLSUlfVVNCX0lOVEVSRkFDRV9BU1NPQ0lBVElPTl9QUk9UT0NPTCAgKlRoaXMsDQorICBP VVQgRUZJX1VTQl9JTlRFUkZBQ0VfQVNTT0NJQVRJT05fREVTQ1JJUFRPUiAgKkRlc2NyaXB0b3IN CisgICk7DQorDQorLyoqDQorICBSZXRyaWV2ZSB0aGUgZGV0YWlscyBvZiB0aGUgcmVxdWVzdGVk IGludGVyZmFjZSB0aGF0IGJlbG9uZ3MgdG8gVVNCIGFzc29jaWF0aW9uLg0KKw0KKyAgQHBhcmFt W2luXSBUaGlzICAgICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9VU0JfSUFfUFJPVE9D T0wgaW5zdGFuY2UuDQorICBAcGFyYW1baW5dIEludGVyZmFjZU51bWJlciAgIEludGVyZmFjZSBu dW1iZXIuDQorICBAcGFyYW1bb3V0XSBVc2JJbyAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUg Y2FsbGVyIGFsbG9jYXRlZCBVc2JJbyBwcm90b2NvbC4NCisgIEBwYXJhbVtvdXRdIFNldHRpbmdz Q291bnQgICAgQSBwb2ludGVyIHRvIHRoZSBjYWxsZXIgYWxsb2NhdGVkIG51bWJlciBvZiBzZXR0 aW5ncyBmb3IgdGhpcyBpbnRlcmZhY2UuDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAg ICAgICBPdXRwdXQgcGFyYW1ldGVycyB3ZXJlIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5Lg0KKyAgQHJl dHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgVXNiSW8gb3IgU2V0dHVudHNDb3VudCBpcyBOVUxM Lg0KKyAgQHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgSW50ZXJmYWNlIGRvZXMgbm90IGJl bG9uZyB0byB0aGlzIGludGVyZmFjZSBhc3NvY2lhdGlvbi4NCisNCisqKi8NCit0eXBlZGVmDQor RUZJX1NUQVRVUw0KKyhFRklBUEkgKkVES0lJX1VTQl9JQV9HRVRfQVNTT0NJQVRFX1NFVFRJTkdT KSgNCisgIElOICBFREtJSV9VU0JfSU5URVJGQUNFX0FTU09DSUFUSU9OX1BST1RPQ09MICAqVGhp cywNCisgIElOICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRl cmZhY2VOdW1iZXIsDQorICBPVVQgRUZJX1VTQl9JT19QUk9UT0NPTCAgICAgICAgICAgICAgICAg ICAgICAgKipVc2JJbywNCisgIE9VVCBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqU2V0dGluZ3NDb3VudA0KKyAgKTsNCisNCisvKioNCisgIFVTQiBpbnRlcmZhY2Ug YXNzb2NpYXRpb24gcHJvdG9jb2wgZnVuY3Rpb25zLg0KKw0KKyoqLw0KK3N0cnVjdCBfRURLSUlf VVNCX0lOVEVSRkFDRV9BU1NPQ0lBVElPTl9QUk9UT0NPTCB7DQorICBFREtJSV9VU0JfSUFfR0VU X0FTU09DSUFUSU9OX0RFU0NSSVBUT1IgICAgVXNiSWFHZXRBc3NvY2lhdGlvbkRlc2NyaXB0b3I7 DQorICBFREtJSV9VU0JfSUFfR0VUX0FTU09DSUFURV9TRVRUSU5HUyAgICAgICAgVXNiSWFHZXRB c3NvY2lhdGVTZXR0aW5nczsNCit9Ow0KKw0KK2V4dGVybiBFRklfR1VJRCAgZ0Vka2lpVXNiSW50 ZXJmYWNlQXNzb2NpYXRpb25Qcm90b2NvbEd1aWQ7DQorDQorI2VuZGlmDQpkaWZmIC0tZ2l0IGEv TWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMgYi9NZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtn LmRlYwppbmRleCBiOWJjNzA0MWYyLi44YmYxMTgxNjFjIDEwMDY0NAotLS0gYS9NZGVNb2R1bGVQ a2cvTWRlTW9kdWxlUGtnLmRlYworKysgYi9NZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYwpA QCAtMTAsNiArMTAsNyBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMTcsIEFNRCBJbmNvcnBvcmF0ZWQu IEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KICMgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29y cG9yYXRpb24uPEJSPg0KICMgQ29weXJpZ2h0IChDKSAyMDI0IEFkdmFuY2VkIE1pY3JvIERldmlj ZXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQorIyBDb3B5cmlnaHQgKEMpIDIwMjUg QW1lcmljYW4gTWVnYXRyZW5kcyBJbnRlcm5hdGlvbmFsLCBMTEMuIEFsbCByaWdodHMgcmVzZXJ2 ZWQuPEJSPg0KICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQN CiAjDQogIyMNCkBAIC03MzUsNiArNzM2LDkgQEAKICAgIyMgSW5jbHVkZS9Qcm90b2NvbC9QbGF0 Zm9ybUJvb3RNYW5hZ2VyLmgNCiAgIGdFZGtpaVBsYXRmb3JtQm9vdE1hbmFnZXJQcm90b2NvbEd1 aWQgPSB7IDB4YWExN2FkZDQsIDB4NzU2YywgMHg0NjBkLCB7IDB4OTQsIDB4YjgsIDB4NDMsIDB4 ODgsIDB4ZDcsIDB4ZmIsIDB4M2UsIDB4NTkgfSB9DQogDQorICAjIyBJbmNsdWRlL1Byb3RvY29s L1VzYkFzc29jaWF0aW9uSW8uaA0KKyAgZ0Vka2lpVXNiSW50ZXJmYWNlQXNzb2NpYXRpb25Qcm90 b2NvbEd1aWQgPSB7IDB4ZjQyNzlmYjEsIDB4ZWYxZSwgMHg0MzQ2LCB7IDB4YWIsIDB4MzIsIDB4 M2YsIDB4ZTMsIDB4ODYsIDB4ZWUsIDB4YjQsIDB4NTIgfX0NCisNCiAjDQogIyBbRXJyb3IuZ0Vm aU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkXQ0KICMgICAweDgwMDAwMDAxIHwgSW52YWxpZCB2 YWx1ZSBwcm92aWRlZC4NCg== --AEXyGVcRQmhLRfIIayO1--