<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>143255</bug_id>
          
          <creation_ts>2015-03-30 22:35:12 -0700</creation_ts>
          <short_desc>WebRTC: Add support for Promise-based MediaDevices.getUserMedia()</short_desc>
          <delta_ts>2015-04-02 10:38:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>143211</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Bergkvist">adam.bergkvist</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>pnormand</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1081568</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2015-03-30 22:35:12 -0700</bug_when>
    <thetext>MediaDevices [1] is a &quot;name space&quot; object that collects some functionality related to local media devices. It&apos;s, for example, home to the Promise-based version of getUserMedia() (unprefixed) and enumerateDevices().

[1] https://w3c.github.io/mediacapture-main/#mediadevices</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081693</commentid>
    <comment_count>1</comment_count>
      <attachid>249834</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2015-03-31 10:51:34 -0700</bug_when>
    <thetext>Created attachment 249834
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082216</commentid>
    <comment_count>2</comment_count>
      <attachid>249834</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-04-02 06:37:37 -0700</bug_when>
    <thetext>Comment on attachment 249834
Proposed patch

View in context: https://bugs.webkit.org/attachment.cgi?id=249834&amp;action=review

&gt; LayoutTests/fast/mediastream/MediaDevices-getUserMedia.html:20
&gt; +&lt;body&gt;
&gt; +&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
&gt; +&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
&gt; +&lt;script&gt;
&gt; +description(&quot;Tests getUserMedia (Promise-based version on navigator.mediaDevices)&quot;);
&gt; +
&gt; +function setUserMediaPermission(isGranted) {
&gt; +    if (window.testRunner)
&gt; +        testRunner.setUserMediaPermission(isGranted);
&gt; +    else
&gt; +        debug(&quot;This test can not be run without the testRunner&quot;);
&gt; +}
&gt; +
&gt; +var stream;
&gt; +var errorArg;

Nit: I think this would be slightly easier to read and understand if it was indented.

&gt; Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:204
&gt;      RefPtr&lt;NavigatorUserMediaError&gt; error = NavigatorUserMediaError::create(NavigatorUserMediaError::permissionDeniedErrorName(), emptyString());

Shouldn&apos;t this be a MediaStreamError? If so, please add a FIXME: with a bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082219</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2015-04-02 07:20:58 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Nit: I think this would be slightly easier to read and understand if it was
&gt; indented.

I found a few different styles among the tests, but most tests within the mediastream module seems to be indented so I&apos;ll align this test.

&gt; &gt; Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:204
&gt; &gt;      RefPtr&lt;NavigatorUserMediaError&gt; error = NavigatorUserMediaError::create(NavigatorUserMediaError::permissionDeniedErrorName(), emptyString());
&gt; 
&gt; Shouldn&apos;t this be a MediaStreamError? If so, please add a FIXME: with a bug.

I&apos;ll do that.

Thanks for reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082222</commentid>
    <comment_count>4</comment_count>
      <attachid>249978</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2015-04-02 07:59:57 -0700</bug_when>
    <thetext>Created attachment 249978
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082229</commentid>
    <comment_count>5</comment_count>
      <attachid>249978</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2015-04-02 08:53:06 -0700</bug_when>
    <thetext>Comment on attachment 249978
Patch for landing

Bots all green, setting cq+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082231</commentid>
    <comment_count>6</comment_count>
      <attachid>249978</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-02 08:55:14 -0700</bug_when>
    <thetext>Comment on attachment 249978
Patch for landing

Rejecting attachment 249978 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 249978, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in LayoutTests/ChangeLog contains OOPS!.

Full output: http://webkit-queues.appspot.com/results/5272158381015040</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082234</commentid>
    <comment_count>7</comment_count>
      <attachid>249983</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2015-04-02 09:07:17 -0700</bug_when>
    <thetext>Created attachment 249983
Patch for landing

With reviewer name this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082267</commentid>
    <comment_count>8</comment_count>
      <attachid>249983</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-02 10:38:10 -0700</bug_when>
    <thetext>Comment on attachment 249983
Patch for landing

Clearing flags on attachment: 249983

Committed r182275: &lt;http://trac.webkit.org/changeset/182275&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082268</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-02 10:38:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249834</attachid>
            <date>2015-03-31 10:51:34 -0700</date>
            <delta_ts>2015-04-02 07:59:57 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>mediadevices_0.patch</filename>
            <type>text/plain</type>
            <size>48337</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiOTA1M2I3Li4yZjNmMTVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDMt
MzEgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCisgICAg
ICAgIFdlYlJUQzogQWRkIHN1cHBvcnQgZm9yIFByb21pc2UtYmFzZWQgTWVkaWFEZXZpY2VzLmdl
dFVzZXJNZWRpYSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDMyNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRlZCB0ZXN0IGZvciBuZXcgUHJvbWlzZS1iYXNlZCBnZXRVc2VyTWVkaWEoKSAob24g
TWVkaWFEZXZpY2VzKS4KKworICAgICAgICAqIGZhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1u
by1jcmFzaC5odG1sOgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdl
dFVzZXJNZWRpYS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJl
YW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS5odG1sOiBBZGRlZC4KKwogMjAxNS0wMy0zMCAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBFeHRlbmRpbmcgbnVs
bCBzaG91bGQgc2V0IF9fcHJvdG9fXyB0byBudWxsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC5odG1sCmluZGV4IDExNzQ2NzIuLmNh
OGQ1MmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hl
ZC1uby1jcmFzaC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRh
Y2hlZC1uby1jcmFzaC5odG1sCkBAIC01Miw3ICs1Miw3IEBAIGZ1bmN0aW9uIGNoZWNrX25hdmln
YXRvcl9hbmRfZG9uZSgpIHsKIGZ1bmN0aW9uIGNoZWNrX25hdmlnYXRvcigpIHsKICAgdmFyIHN0
cmluZ3MgPSBbIF07CiAgIGZvciAocCBpbiBvbGRfbmF2KSB7Ci0gICAgaWYgKHAgPT0gJ2dlb2xv
Y2F0aW9uJyB8fCBwID09ICd3ZWJraXRHZXRVc2VyTWVkaWEnKSAvLyBEb24ndCBpbmNsdWRlIEdl
b2xvY2F0aW9uIG9yIHRoZSBNZWRpYSBTdHJlYW0gQVBJIGZ1bmN0aW9ucyB1bnRpbCBtb3N0IHBs
YXRmb3JtcyBoYXZlIHN1cHBvcnQuCisgICAgaWYgKHAgPT0gJ2dlb2xvY2F0aW9uJyB8fCBwID09
ICd3ZWJraXRHZXRVc2VyTWVkaWEnIHx8IHAgPT0gJ21lZGlhRGV2aWNlcycpIC8vIERvbid0IGlu
Y2x1ZGUgR2VvbG9jYXRpb24gb3IgdGhlIE1lZGlhIFN0cmVhbSBBUEkgZnVuY3Rpb25zIHVudGls
IG1vc3QgcGxhdGZvcm1zIGhhdmUgc3VwcG9ydC4KICAgICAgIGNvbnRpbnVlOwogCiAgICAgaWYg
KHR5cGVvZiBvbGRfbmF2W3BdID09ICdmdW5jdGlvbicpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRVc2VyTWVk
aWEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1YWU4
MWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlcy1nZXRVc2VyTWVkaWEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzQgQEAKK1Rlc3Rz
IGdldFVzZXJNZWRpYSAoUHJvbWlzZS1iYXNlZCB2ZXJzaW9uIG9uIG5hdmlnYXRvci5tZWRpYURl
dmljZXMpCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5hdmlnYXRvci5t
ZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEZp
cnN0IGFyZ3VtZW50IG9mIGdldFVzZXJNZWRpYSBtdXN0IGJlIGEgdmFsaWQgRGljdGlvbmFyeS4K
K1BBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe30pOyB0aHJldyBleGNl
cHRpb24gRXJyb3I6IE5vdFN1cHBvcnRlZEVycm9yOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIG5h
dmlnYXRvci5tZWRpYURldmljZXMud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSk7IHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IG5hdmlnYXRvci5tZWRpYURldmljZXMud2Via2l0R2V0
VXNlck1lZGlhIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ25hdmlnYXRvci5tZWRpYURldmljZXMu
d2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSknLCAnbmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy53ZWJraXRHZXRVc2VyTWVkaWEnIGlzIHVuZGVmaW5lZCkuCitQQVNTIG5hdmlnYXRvci5tZWRp
YURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSkudGhlbihnb3RTdHJlYW0xKTsgZGlk
IG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCitQQVNTIHN0cmVh
bS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCitQQVNTIHN0cmVhbS5nZXRWaWRlb1RyYWNr
cygpLmxlbmd0aCBpcyAwCitQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlh
KHt2aWRlbzp0cnVlfSkudGhlbihnb3RTdHJlYW0yKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24u
CitQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCitQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxl
bmd0aCBpcyAwCitQQVNTIHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCitQQVNT
IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0
cnVlfSkudGhlbihnb3RTdHJlYW0zKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFN0
cmVhbSBnZW5lcmF0ZWQuCitQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAx
CitQQVNTIHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCitQQVNTIG5hdmlnYXRv
ci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp7fSwgdmlkZW86e319KS50aGVuKGdv
dFN0cmVhbTQpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgU3RyZWFtIGdlbmVyYXRl
ZC4KK1BBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKK1BBU1Mgc3RyZWFt
LmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDEKK1BBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGludmFsaWRHb3RTdHJlYW0sIGVycm9y
MSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBFcnJvciBjYWxsYmFjayBjYWxsZWQu
CitQQVNTIGVycm9yQXJnLm5hbWUgaXMgIlBlcm1pc3Npb25EZW5pZWRFcnJvciIKK1BBU1MgZXJy
b3JBcmcuY29uc3RyYWludE5hbWUgaXMgIiIKK1BBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5n
ZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGludmFsaWRHb3RTdHJlYW0pLmNhdGNoKGVy
cm9yMik7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBFcnJvciBjYWxsYmFjayBjYWxs
ZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0
VXNlck1lZGlhLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
cy1nZXRVc2VyTWVkaWEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m
YmQ3MTc0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9N
ZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWwKQEAgLTAsMCArMSw4OSBAQAorPCFET0NUWVBF
IEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0
aW9uKCJUZXN0cyBnZXRVc2VyTWVkaWEgKFByb21pc2UtYmFzZWQgdmVyc2lvbiBvbiBuYXZpZ2F0
b3IubWVkaWFEZXZpY2VzKSIpOworCitmdW5jdGlvbiBzZXRVc2VyTWVkaWFQZXJtaXNzaW9uKGlz
R3JhbnRlZCkgeworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5l
ci5zZXRVc2VyTWVkaWFQZXJtaXNzaW9uKGlzR3JhbnRlZCk7CisgICAgZWxzZQorICAgICAgICBk
ZWJ1ZygiVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIHRlc3RSdW5uZXIiKTsK
K30KKwordmFyIHN0cmVhbTsKK3ZhciBlcnJvckFyZzsKKworZnVuY3Rpb24gaW52YWxpZEdvdFN0
cmVhbSgpIHsKKyAgICB0ZXN0RmFpbGVkKCJTdHJlYW0gZ2VuZXJhdGVkIHdoZW4gYW4gZXJyb3Ig
c2hvdWxkIGhhdmUgb2NjdXJyZWQuIik7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0
aW9uIGVycm9yMihlKSB7CisgICAgdGVzdFBhc3NlZCgiRXJyb3IgY2FsbGJhY2sgY2FsbGVkLiIp
OworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBlcnJvcjEoZSkgeworICAgIGVy
cm9yQXJnID0gZTsKKyAgICB0ZXN0UGFzc2VkKCJFcnJvciBjYWxsYmFjayBjYWxsZWQuIik7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJlcnJvckFyZy5uYW1lIiwgIlBlcm1pc3Npb25EZW5p
ZWRFcnJvciIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXJyb3JBcmcuY29uc3RyYWlu
dE5hbWUiLCAiIik7CisKKyAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGludmFsaWRHb3RTdHJlYW0pLmNhdGNo
KGVycm9yMik7Iik7Cit9CisKK2Z1bmN0aW9uIGdvdFN0cmVhbTQocykgeworICAgIHN0cmVhbSA9
IHM7CisgICAgdGVzdFBhc3NlZCgiU3RyZWFtIGdlbmVyYXRlZC4iKTsKKyAgICBzaG91bGRCZSgi
c3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZSgic3Ry
ZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIiwgIjEiKTsKKworICAgIHNldFVzZXJNZWRpYVBl
cm1pc3Npb24oZmFsc2UpOworICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZp
Y2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oaW52YWxpZEdvdFN0cmVhbSwgZXJy
b3IxKTsiKTsKK30KKworZnVuY3Rpb24gZ290U3RyZWFtMyhzKSB7CisgICAgc3RyZWFtID0gczsK
KyAgICB0ZXN0UGFzc2VkKCJTdHJlYW0gZ2VuZXJhdGVkLiIpOworICAgIHNob3VsZEJlKCJzdHJl
YW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgiLCAiMSIpOworICAgIHNob3VsZEJlKCJzdHJlYW0u
Z2V0VmlkZW9UcmFja3MoKS5sZW5ndGgiLCAiMSIpOworCisgICAgc2hvdWxkTm90VGhyb3coIm5h
dmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp7fSwgdmlkZW86e319KS50
aGVuKGdvdFN0cmVhbTQpOyIpOworfQorCitmdW5jdGlvbiBnb3RTdHJlYW0yKHMpIHsKKyAgICBz
dHJlYW0gPSBzOworICAgIHRlc3RQYXNzZWQoIlN0cmVhbSBnZW5lcmF0ZWQuIik7CisgICAgc2hv
dWxkQmUoInN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCIsICIwIik7CisgICAgc2hvdWxk
QmUoInN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCIsICIxIik7CisKKyAgICBzaG91bGRO
b3RUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUs
IHZpZGVvOnRydWV9KS50aGVuKGdvdFN0cmVhbTMpOyIpOworfQorCitmdW5jdGlvbiBnb3RTdHJl
YW0xKHMpIHsKKyAgICBzdHJlYW0gPSBzOworICAgIHRlc3RQYXNzZWQoIlN0cmVhbSBnZW5lcmF0
ZWQuIik7CisgICAgc2hvdWxkQmUoInN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCIsICIx
Iik7CisgICAgc2hvdWxkQmUoInN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCIsICIwIik7
CisKKyAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVk
aWEoe3ZpZGVvOnRydWV9KS50aGVuKGdvdFN0cmVhbTIpOyIpCit9CisKK3Nob3VsZFRocm93KCJu
YXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpOyIpOworc2hvdWxkVGhyb3coIm5h
dmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt9KTsiKTsKK3Nob3VsZFRocm93KCJu
YXZpZ2F0b3IubWVkaWFEZXZpY2VzLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pOyIp
Oworc2V0VXNlck1lZGlhUGVybWlzc2lvbih0cnVlKTsKK3Nob3VsZE5vdFRocm93KCJuYXZpZ2F0
b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oZ290U3RyZWFt
MSk7Iik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3dpbmRvdy5zdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDE4MzBhN2UuLmZiZjg3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0y
MjUsNiArMjI1LDcgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL0NhcGFiaWxpdHlSYW5nZS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFt
L0RPTVVSTE1lZGlhU3RyZWFtLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vSFRNTE1lZGlh
RWxlbWVudE1lZGlhU3RyZWFtLmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsCiAg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwKICAgICBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzLmlkbApAQCAtMjM1LDYgKzIzNiw3IEBAIHNl
dChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVRyYWNrQ29uc3RyYWludC5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tD
b25zdHJhaW50U2V0LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0
cmFpbnRzLmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2Vz
LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhLmlkbAogICAg
IE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaWRsCiAgICAgTW9k
dWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbApAQCAt
ODczLDYgKzg3NSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBNb2R1bGVzL21lZGlhc3Ry
ZWFtL0RPTVVSTE1lZGlhU3RyZWFtLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vSFRNTE1l
ZGlhRWxlbWVudE1lZGlhU3RyZWFtLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFD
b25zdHJhaW50c0ltcGwuY3BwCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMu
Y3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5jcHAKICAgICBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuY3BwCkBAIC04ODQsNiArODg3LDcgQEAgc2V0KFdl
YkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFp
bnQuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNldC5j
cHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAKKyAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhRGV2aWNlcy5jcHAKICAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYS5jcHAKICAgICBNb2R1bGVzL21lZGlh
c3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRFRNRlNlbmRlci5jcHAKQEAgLTExMjgsNiArMTEzMiw3IEBAIHNldChXZWJDb3JlX1NP
VVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAogICAgIGJpbmRp
bmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNNYWluVGhyZWFk
RXhlY1N0YXRlLmNwcAorICAgIGJpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcAog
ICAgIGJpbmRpbmdzL2pzL0pTTWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwCiAgICAgYmluZGlu
Z3MvanMvSlNNZWRpYVN0cmVhbUNhcGFiaWxpdGllc0N1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9q
cy9KU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU1ZmNlNWMuLjNiZGVl
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAorMjAxNS0wMy0zMSAgQWRhbSBCZXJna3Zp
c3QgIDxhZGFtLmJlcmdrdmlzdEBlcmljc3Nvbi5jb20+CisKKyAgICAgICAgV2ViUlRDOiBBZGQg
c3VwcG9ydCBmb3IgUHJvbWlzZS1iYXNlZCBNZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKCkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzI1NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBNZWRpYURl
dmljZXMgb2JqZWN0IGNvbGxlY3RzIGZ1bmN0aW9uYWxpdHkgcmVsYXRlZCB0byBsb2NhbCBtZWRp
YQorICAgICAgICBkZXZpY2VzLiBUaGlzIHBhdGNoIGFkZHMgdGhlIFByb21pc2UtYmFzZWQgdmVy
c2lvbiBvZiBnZXRVc2VyTWVkaWEoKQorICAgICAgICAodW5wcmVmaXhlZCkuIE90aGVyIGZ1bmN0
aW9uYWxpdHksIGxpa2UgZW51bWVyYXRlRGV2aWNlcygpLCB3aWxsIGJlCisgICAgICAgIGFkZGVk
IGluIGxhdGVyIHBhdGNoZXMuCisKKyAgICAgICAgVGhlIG9sZCBjYWxsYmFjay1iYXNlZCB3ZWJr
aXRHZXRVc2VyTWVkaWEoKSAob24gTmF2aWdhdG9yKSBpcyBrZXB0IGZvcgorICAgICAgICBsZWdh
Y3kgcHVycG9zZXMgKGFjY29yZGluZyB0byB0aGUgTWVkaWEgQ2FwdHVyZSBhbmQgU3RyZWFtcyBB
UEkgc3BlYyBbMV0pLgorICAgICAgICBCb3RoIHZlcnNpb25zIG9mIGdldFVzZXJNZWRpYSBhcmUg
YmFja2VkIHVwIGJ5IFVzZXJNZWRpYVJlcXVlc3Qgd2hlcmUKKyAgICAgICAgdGhlIGNhbGxiYWNr
cyBmcm9tIHRoZSBjYWxsYmFjay1iYXNlZCB2ZXJzaW9uIGFyZSB3cmFwcGVkIGluc2lkZSBjKysK
KyAgICAgICAgbGFtYmRhIGZ1bmN0aW9ucy4gVGhlIG5ldyBQcm9taXNlLWJhc2VkIGdldFVzZXJN
ZWRpYSgpIHVzZXMgdGhlIGxhbWJkYQorICAgICAgICBmdW5jdGlvbnMgZGlyZWN0bHkgYXMgY3Jl
YXRlZCBieSB0aGUgUHJvbWlzZSBiaW5kaW5ncy4KKworICAgICAgICBbMV0gaHR0cDovL3czYy5n
aXRodWIuaW8vbWVkaWFjYXB0dXJlLW1haW4vYXJjaGl2ZXMvMjAxNTAzMjQvZ2V0dXNlcm1lZGlh
Lmh0bWwjbmF2aWdhdG9ydXNlcm1lZGlhLWludGVyZmFjZS1leHRlbnNpb25zCisKKyAgICAgICAg
VGVzdDogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWwKKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhRGV2aWNlczo6TWVkaWFEZXZpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
RGV2aWNlczo6fk1lZGlhRGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXM6
OmRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlh
KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oOiBBZGRlZC4K
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGw6IEFkZGVkLgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JNZWRpYURldmljZXM6Ok5hdmlnYXRv
ck1lZGlhRGV2aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JNZWRpYURldmljZXM6
On5OYXZpZ2F0b3JNZWRpYURldmljZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yTWVk
aWFEZXZpY2VzOjpmcm9tKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvck1lZGlhRGV2aWNl
czo6bWVkaWFEZXZpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvck1lZGlhRGV2aWNl
czo6c3VwcGxlbWVudE5hbWUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdh
dG9yTWVkaWFEZXZpY2VzLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TmF2aWdhdG9yTWVkaWFEZXZpY2VzLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRp
YVJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpV
c2VyTWVkaWFSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmRp
ZENyZWF0ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpmYWls
ZWRUb0NyZWF0ZVN0cmVhbVdpdGhDb25zdHJhaW50c0Vycm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlVzZXJNZWRpYVJlcXVlc3Q6OmZhaWxlZFRvQ3JlYXRlU3RyZWFtV2l0aFBlcm1pc3Npb25FcnJv
cik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0Lmg6Cisg
ICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3Vz
dG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU01lZGlhRGV2aWNlczo6Z2V0VXNl
ck1lZGlhKToKKwogMjAxNS0wMy0zMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIxODIxNjgu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBiZDE0M2IwLi4zNWUyMTg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTExOSw2ICsxMTksNyBAQCBOT05fU1ZHX0JJ
TkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJp
bGl0eVJhbmdlLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL0hUTUxN
ZWRpYUVsZW1lbnRNZWRpYVN0cmVhbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXMuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1FdmVudC5pZGwgXApAQCAtMTI4LDYgKzEyOSw3IEBAIE5PTl9T
VkdfQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVRyYWNrQ29uc3RyYWludC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaWRsIFwKKyAgICAkKFdlYkNvcmUp
L01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYS5pZGwgXAogICAg
ICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5p
ZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVk
aWFFcnJvckNhbGxiYWNrLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMGU3NjBkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBk
aXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUg
bmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZWRpYURldmljZXMuaCIKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYUNvbnRy
b2xsZXIuaCIKKyNpbmNsdWRlICJVc2VyTWVkaWFSZXF1ZXN0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUmVmPE1lZGlhRGV2aWNlcz4gTWVkaWFEZXZpY2VzOjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRp
YURldmljZXMoY29udGV4dCkpOworfQorCitNZWRpYURldmljZXM6Ok1lZGlhRGV2aWNlcyhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIoY29udGV4dCkKK3sKK30KKworTWVkaWFEZXZpY2VzOjp+TWVkaWFEZXZpY2VzKCkKK3sK
K30KKworRG9jdW1lbnQqIE1lZGlhRGV2aWNlczo6ZG9jdW1lbnQoKSBjb25zdAoreworICAgIHJl
dHVybiBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKK30KKwor
dm9pZCBNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYShjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25z
LCBSZXNvbHZlQ2FsbGJhY2sgcmVzb2x2ZUNhbGxiYWNrLCBSZWplY3RDYWxsYmFjayByZWplY3RD
YWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAgVXNlck1lZGlhQ29udHJv
bGxlciogdXNlck1lZGlhID0gVXNlck1lZGlhQ29udHJvbGxlcjo6ZnJvbShkb2N1bWVudCgpID8g
ZG9jdW1lbnQoKS0+cGFnZSgpIDogbnVsbHB0cik7CisgICAgaWYgKCF1c2VyTWVkaWEpIHsKKyAg
ICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiByZXF1ZXN0ID0gVXNlck1lZGlhUmVxdWVzdDo6
Y3JlYXRlKGRvY3VtZW50KCksIHVzZXJNZWRpYSwgb3B0aW9ucywgV1RGOjptb3ZlKHJlc29sdmVD
YWxsYmFjayksIFdURjo6bW92ZShyZWplY3RDYWxsYmFjayksIGVjKTsKKyAgICBpZiAoIXJlcXVl
c3QpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHJlcXVlc3QtPnN0YXJ0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi43OGMwNTU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaApAQCAtMCwwICsxLDcwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29u
IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgTWVkaWFEZXZpY2VzX2gKKyNkZWZpbmUgTWVkaWFEZXZpY2VzX2gKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlci5oIgorI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIERpY3Rpb25hcnk7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIE1lZGlhU3RyZWFt
OworY2xhc3MgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3I7CisKK3R5cGVkZWYgaW50IEV4Y2VwdGlv
bkNvZGU7CisKK2NsYXNzIE1lZGlhRGV2aWNlcyA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1
YmxpYyBSZWZDb3VudGVkPE1lZGlhRGV2aWNlcz4sIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxNZWRpYURldmljZXM+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgdmlydHVhbCB+TWVkaWFEZXZpY2VzKCk7CisK
KyAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKKworICAgIHR5cGVkZWYgc3RkOjpmdW5j
dGlvbjx2b2lkKFJlZlB0cjxNZWRpYVN0cmVhbT4pPiBSZXNvbHZlQ2FsbGJhY2s7CisgICAgdHlw
ZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yPik+
IFJlamVjdENhbGxiYWNrOworCisgICAgdm9pZCBnZXRVc2VyTWVkaWEoY29uc3QgRGljdGlvbmFy
eSYsIFJlc29sdmVDYWxsYmFjaywgUmVqZWN0Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBNZWRpYURldmljZXMoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIE1lZGlhRGV2aWNlc19oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFiZjg2ZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbApAQCAt
MCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEVyaWNzc29uIEFCLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0
aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK1sKKyAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBDb25kaXRp
b25hbD1NRURJQV9TVFJFQU0sCisgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQorXSBpbnRl
cmZhY2UgTWVkaWFEZXZpY2VzIHsKKyAgICBbQ3VzdG9tLCBSYWlzZXNFeGNlcHRpb25dIFByb21p
c2UgZ2V0VXNlck1lZGlhKERpY3Rpb25hcnkgb3B0aW9ucyk7Cit9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmlj
ZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxZjAyZDkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRv
ck1lZGlhRGV2aWNlcy5jcHAKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9u
LgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3IgdGhlIG5hbWVzIG9mIGl0
cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIk5hdmlnYXRvck1lZGlh
RGV2aWNlcy5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgor
I2luY2x1ZGUgIk1lZGlhRGV2aWNlcy5oIgorI2luY2x1ZGUgIk5hdmlnYXRvci5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK05hdmlnYXRvck1lZGlhRGV2aWNlczo6TmF2aWdhdG9yTWVkaWFE
ZXZpY2VzKEZyYW1lKiBmcmFtZSkKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQorewor
fQorCitOYXZpZ2F0b3JNZWRpYURldmljZXM6On5OYXZpZ2F0b3JNZWRpYURldmljZXMoKQorewor
fQorCitOYXZpZ2F0b3JNZWRpYURldmljZXMqIE5hdmlnYXRvck1lZGlhRGV2aWNlczo6ZnJvbShO
YXZpZ2F0b3IqIG5hdmlnYXRvcikKK3sKKyAgICBOYXZpZ2F0b3JNZWRpYURldmljZXMqIHN1cHBs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxOYXZpZ2F0b3JNZWRpYURldmljZXMqPihTdXBwbGVtZW50PE5h
dmlnYXRvcj46OmZyb20obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CisgICAgaWYgKCFz
dXBwbGVtZW50KSB7CisgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8TmF2aWdhdG9yTWVkaWFEZXZpY2VzPihuYXZpZ2F0b3ItPmZyYW1lKCkpOworICAgICAgICBz
dXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKKyAgICAgICAgcHJvdmlkZVRvKG5hdmln
YXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGOjptb3ZlKG5ld1N1cHBsZW1lbnQpKTsKKyAgICB9
CisgICAgcmV0dXJuIHN1cHBsZW1lbnQ7Cit9CisKK01lZGlhRGV2aWNlcyogTmF2aWdhdG9yTWVk
aWFEZXZpY2VzOjptZWRpYURldmljZXMoTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCit7CisgICAgcmV0
dXJuIE5hdmlnYXRvck1lZGlhRGV2aWNlczo6ZnJvbShuYXZpZ2F0b3IpLT5tZWRpYURldmljZXMo
KTsKK30KKworTWVkaWFEZXZpY2VzKiBOYXZpZ2F0b3JNZWRpYURldmljZXM6Om1lZGlhRGV2aWNl
cygpIGNvbnN0Cit7CisgICAgaWYgKCFtX21lZGlhRGV2aWNlcyAmJiBmcmFtZSgpKQorICAgICAg
ICBtX21lZGlhRGV2aWNlcyA9IE1lZGlhRGV2aWNlczo6Y3JlYXRlKGZyYW1lKCktPmRvY3VtZW50
KCkpOworICAgIHJldHVybiBtX21lZGlhRGV2aWNlcy5nZXQoKTsKK30KKworY29uc3QgY2hhciog
TmF2aWdhdG9yTWVkaWFEZXZpY2VzOjpzdXBwbGVtZW50TmFtZSgpCit7CisgICAgcmV0dXJuICJO
YXZpZ2F0b3JNZWRpYURldmljZXMiOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVhMDQ5OQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmgK
QEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBFcmljc3NvbiBBQi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0
aGUgbmFtZSBvZiBFcmljc3NvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAq
ICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE5hdmlnYXRvck1lZGlhRGV2aWNlc19oCisj
ZGVmaW5lIE5hdmlnYXRvck1lZGlhRGV2aWNlc19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQorCisjaW5jbHVkZSAiRE9NV2luZG93UHJvcGVydHkuaCIKKyNpbmNsdWRlICJTdXBwbGVtZW50
YWJsZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZyYW1lOworY2xhc3MgTWVk
aWFEZXZpY2VzOworY2xhc3MgTmF2aWdhdG9yOworCitjbGFzcyBOYXZpZ2F0b3JNZWRpYURldmlj
ZXMgOiBwdWJsaWMgU3VwcGxlbWVudDxOYXZpZ2F0b3I+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVy
dHkgeworcHVibGljOgorICAgIGV4cGxpY2l0IE5hdmlnYXRvck1lZGlhRGV2aWNlcyhGcmFtZSop
OworICAgIHZpcnR1YWwgfk5hdmlnYXRvck1lZGlhRGV2aWNlcygpOworICAgIHN0YXRpYyBOYXZp
Z2F0b3JNZWRpYURldmljZXMqIGZyb20oTmF2aWdhdG9yKik7CisKKyAgICBzdGF0aWMgTWVkaWFE
ZXZpY2VzKiBtZWRpYURldmljZXMoTmF2aWdhdG9yKik7CisgICAgTWVkaWFEZXZpY2VzKiBtZWRp
YURldmljZXMoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc3Vw
cGxlbWVudE5hbWUoKTsKKworICAgIG11dGFibGUgUmVmUHRyPE1lZGlhRGV2aWNlcz4gbV9tZWRp
YURldmljZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gTmF2aWdhdG9yTWVkaWFEZXZpY2VzX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVk
aWFEZXZpY2VzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdh
dG9yTWVkaWFEZXZpY2VzLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5i
ZDNiZWEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuaWRsCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAg
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWwor
ICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKK10gcGFydGlhbCBpbnRlcmZhY2UgTmF2aWdh
dG9yIHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFEZXZpY2VzIG1lZGlhRGV2aWNlczsK
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFSZXF1ZXN0LmNwcAppbmRleCA5OWFiZTUwLi42YTkyNzE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAK
QEAgLTQ0LDYgKzQ0LDggQEAKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzSW1wbC5oIgogI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCisj
aW5jbHVkZSAiTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIk5h
dmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVk
aWFTb3VyY2VDZW50ZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUg
IlVzZXJNZWRpYUNvbnRyb2xsZXIuaCIKQEAgLTc0LDYgKzc2LDIxIEBAIFBhc3NSZWZQdHI8VXNl
ck1lZGlhUmVxdWVzdD4gVXNlck1lZGlhUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvCiB7CiAgICAgQVNTRVJUKHN1Y2Nlc3NDYWxsYmFjayk7CiAKKyAgICBhdXRvIHJl
c29sdmVDYWxsYmFjayA9IFtzdWNjZXNzQ2FsbGJhY2tdKFJlZlB0cjxNZWRpYVN0cmVhbT4gc3Ry
ZWFtKSBtdXRhYmxlIHsKKyAgICAgICAgc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChzdHJl
YW0uZ2V0KCkpOworICAgIH07CisgICAgYXV0byByZWplY3RDYWxsYmFjayA9IFtlcnJvckNhbGxi
YWNrXShSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKKyAg
ICAgICAgaWYgKGVycm9yQ2FsbGJhY2spCisgICAgICAgICAgICBlcnJvckNhbGxiYWNrLT5oYW5k
bGVFdmVudChlcnJvci5nZXQoKSk7CisgICAgfTsKKworICAgIHJldHVybiBVc2VyTWVkaWFSZXF1
ZXN0OjpjcmVhdGUoY29udGV4dCwgY29udHJvbGxlciwgb3B0aW9ucywgV1RGOjptb3ZlKHJlc29s
dmVDYWxsYmFjayksIFdURjo6bW92ZShyZWplY3RDYWxsYmFjayksIGVjKTsKK30KKworUGFzc1Jl
ZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBVc2VyTWVkaWFSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgVXNlck1lZGlhQ29udHJvbGxlciogY29udHJvbGxlciwg
Y29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgTWVkaWFEZXZpY2VzOjpSZXNvbHZlQ2FsbGJhY2sg
cmVzb2x2ZUNhbGxiYWNrLCBNZWRpYURldmljZXM6OlJlamVjdENhbGxiYWNrIHJlamVjdENhbGxi
YWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBBU1NFUlQocmVzb2x2ZUNhbGxiYWNrICYm
IHJlamVjdENhbGxiYWNrKTsKKwogICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0Nv
bnN0cmFpbnRzID0gcGFyc2VPcHRpb25zKG9wdGlvbnMsIEF0b21pY1N0cmluZygiYXVkaW8iLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSwgZWMpOwogICAgIGlmIChlYykKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04NSwxNiArMTAyLDE2IEBAIFBhc3NSZWZQdHI8VXNl
ck1lZGlhUmVxdWVzdD4gVXNlck1lZGlhUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvCiAgICAgaWYgKCFhdWRpb0NvbnN0cmFpbnRzICYmICF2aWRlb0NvbnN0cmFpbnRz
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVXNl
ck1lZGlhUmVxdWVzdChjb250ZXh0LCBjb250cm9sbGVyLCBhdWRpb0NvbnN0cmFpbnRzLnJlbGVh
c2UoKSwgdmlkZW9Db25zdHJhaW50cy5yZWxlYXNlKCksIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JD
YWxsYmFjaykpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgVXNlck1lZGlhUmVxdWVzdChjb250
ZXh0LCBjb250cm9sbGVyLCBhdWRpb0NvbnN0cmFpbnRzLnJlbGVhc2UoKSwgdmlkZW9Db25zdHJh
aW50cy5yZWxlYXNlKCksIFdURjo6bW92ZShyZXNvbHZlQ2FsbGJhY2spLCBXVEY6Om1vdmUocmVq
ZWN0Q2FsbGJhY2spKSk7CiB9CiAKLVVzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVlc3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVXNlck1lZGlhQ29udHJvbGxlciogY29u
dHJvbGxlciwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQ
YXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8
TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK1Vz
ZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgVXNlck1lZGlhQ29udHJvbGxlciogY29udHJvbGxlciwgUGFzc1JlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+IHZpZGVvQ29uc3RyYWludHMsIE1lZGlhRGV2aWNlczo6UmVzb2x2ZUNhbGxiYWNrIHJlc29s
dmVDYWxsYmFjaywgTWVkaWFEZXZpY2VzOjpSZWplY3RDYWxsYmFjayByZWplY3RDYWxsYmFjaykK
ICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGNvbnRleHQpCiAgICAgLCBtX2F1ZGlv
Q29uc3RyYWludHMoYXVkaW9Db25zdHJhaW50cykKICAgICAsIG1fdmlkZW9Db25zdHJhaW50cyh2
aWRlb0NvbnN0cmFpbnRzKQogICAgICwgbV9jb250cm9sbGVyKGNvbnRyb2xsZXIpCi0gICAgLCBt
X3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCi0gICAgLCBtX2Vycm9yQ2FsbGJhY2so
ZXJyb3JDYWxsYmFjaykKKyAgICAsIG1fcmVzb2x2ZUNhbGxiYWNrKHJlc29sdmVDYWxsYmFjaykK
KyAgICAsIG1fcmVqZWN0Q2FsbGJhY2socmVqZWN0Q2FsbGJhY2spCiB7CiB9CiAKQEAgLTE0OSw3
ICsxNjYsNyBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmNvbnN0cmFpbnRzSW52YWxpZChjb25z
dCBTdHJpbmcmIGNvbnN0cmFpbnROYW1lKQogCiB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmRpZENy
ZWF0ZVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gcHJpdmF0ZVN0cmVhbSkK
IHsKLSAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCAhbV9zdWNjZXNzQ2FsbGJh
Y2spCisgICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybjsK
IAogICAgIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwpAQCAt
MTYxLDggKzE3OCw3IEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6ZGlkQ3JlYXRlU3RyZWFtKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPiBwcml2YXRlU3RyCiAgICAgICAgIGZvciAoYXV0
byYgdHJhY2sgOiBzdHJlYW0tPmdldFZpZGVvVHJhY2tzKCkpCiAgICAgICAgICAgICB0cmFjay0+
YXBwbHlDb25zdHJhaW50cyhwcm90ZWN0ZWRUaGlzLT5tX3ZpZGVvQ29uc3RyYWludHMpOwogCi0g
ICAgICAgIEFTU0VSVChwcm90ZWN0ZWRUaGlzLT5tX3N1Y2Nlc3NDYWxsYmFjayk7Ci0gICAgICAg
IHByb3RlY3RlZFRoaXMtPm1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChzdHJlYW0uZ2V0
KCkpOworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3Jlc29sdmVDYWxsYmFjayhzdHJlYW0uZ2V0
KCkpOwogICAgIH0pOwogfQogCkBAIC0xNzIsMTMgKzE4OCwxMCBAQCB2b2lkIFVzZXJNZWRpYVJl
cXVlc3Q6OmZhaWxlZFRvQ3JlYXRlU3RyZWFtV2l0aENvbnN0cmFpbnRzRXJyb3IoY29uc3QgU3Ry
aW5nJiBjbwogICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoIW1fZXJyb3JDYWxsYmFjaykKLSAgICAgICAgcmV0dXJuOwotCiAgICAg
UmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgUmVmUHRy
PE5hdmlnYXRvclVzZXJNZWRpYUVycm9yPiBlcnJvciA9IE5hdmlnYXRvclVzZXJNZWRpYUVycm9y
OjpjcmVhdGUoTmF2aWdhdG9yVXNlck1lZGlhRXJyb3I6OmNvbnN0cmFpbnROb3RTYXRpc2ZpZWRF
cnJvck5hbWUoKSwgY29uc3RyYWludE5hbWUpOwogICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3Rl
Y3RlZFRoaXMsIGVycm9yXSB7Ci0gICAgICAgIHByb3RlY3RlZFRoaXMtPm1fZXJyb3JDYWxsYmFj
ay0+aGFuZGxlRXZlbnQoZXJyb3IuZ2V0KCkpOworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3Jl
amVjdENhbGxiYWNrKGVycm9yLmdldCgpKTsKICAgICB9KTsKIH0KIApAQCAtMTg3LDEzICsyMDAs
MTAgQEAgdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpmYWlsZWRUb0NyZWF0ZVN0cmVhbVdpdGhQZXJt
aXNzaW9uRXJyb3IoKQogICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoIW1fZXJyb3JDYWxsYmFjaykKLSAgICAgICAgcmV0dXJuOwot
CiAgICAgUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAg
UmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yPiBlcnJvciA9IE5hdmlnYXRvclVzZXJNZWRp
YUVycm9yOjpjcmVhdGUoTmF2aWdhdG9yVXNlck1lZGlhRXJyb3I6OnBlcm1pc3Npb25EZW5pZWRF
cnJvck5hbWUoKSwgZW1wdHlTdHJpbmcoKSk7CiAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVj
dGVkVGhpcywgZXJyb3JdIHsKLSAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9lcnJvckNhbGxiYWNr
LT5oYW5kbGVFdmVudChlcnJvci5nZXQoKSk7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcmVq
ZWN0Q2FsbGJhY2soZXJyb3IuZ2V0KCkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCmluZGV4IGI3
NWVjZGUuLjBjNjg0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5oCkBAIC0zNiwxMCArMzYsOCBAQAogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRl
ICJNZWRpYURldmljZXMuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50Lmgi
Ci0jaW5jbHVkZSAiTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5oIgotI2luY2x1ZGUg
Ik5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oIgotI2luY2x1ZGUgIlJlYWx0aW1l
TWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC01MSw2
ICs0OSw4IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBNZWRpYUNvbnN0
cmFpbnRzOwogY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRlOworY2xhc3MgTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3JDYWxsYmFjazsKK2NsYXNzIE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFj
azsKIGNsYXNzIFVzZXJNZWRpYUNvbnRyb2xsZXI7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIApA
QCAtNTksNiArNTksNyBAQCB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogY2xhc3MgVXNlck1l
ZGlhUmVxdWVzdCA6IHB1YmxpYyBNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50LCBwdWJsaWMgQ29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFVzZXJNZWRpYVJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVXNlck1l
ZGlhQ29udHJvbGxlciosIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2
aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2Vy
TWVkaWFFcnJvckNhbGxiYWNrPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFVzZXJNZWRpYVJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVXNl
ck1lZGlhQ29udHJvbGxlciosIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIE1lZGlhRGV2aWNl
czo6UmVzb2x2ZUNhbGxiYWNrLCBNZWRpYURldmljZXM6OlJlamVjdENhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgflVzZXJNZWRpYVJlcXVlc3QoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OwpAQCAtNzEsNyArNzIsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCByZXF1aXJlc1ZpZGVvKCkgY29uc3QgeyByZXR1cm4gbV92aWRl
b0NvbnN0cmFpbnRzOyB9CiAKIHByaXZhdGU6Ci0gICAgVXNlck1lZGlhUmVxdWVzdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgVXNlck1lZGlhQ29udHJvbGxlciosIFBhc3NSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4gYXVkaW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRz
PiB2aWRlb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3ND
YWxsYmFjaz4sIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaz4pOwor
ICAgIFVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVzZXJNZWRpYUNv
bnRyb2xsZXIqLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMs
IFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZp
Y2VzOjpSZXNvbHZlQ2FsbGJhY2ssIE1lZGlhRGV2aWNlczo6UmVqZWN0Q2FsbGJhY2spOwogCiAg
ICAgLy8gTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBjb25zdHJh
aW50c1ZhbGlkYXRlZCgpIG92ZXJyaWRlIGZpbmFsOwpAQCAtODgsOCArODksOCBAQCBwcml2YXRl
OgogCiAgICAgVXNlck1lZGlhQ29udHJvbGxlciogbV9jb250cm9sbGVyOwogCi0gICAgUmVmUHRy
PE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7Ci0g
ICAgUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+IG1fZXJyb3JDYWxsYmFj
azsKKyAgICBNZWRpYURldmljZXM6OlJlc29sdmVDYWxsYmFjayBtX3Jlc29sdmVDYWxsYmFjazsK
KyAgICBNZWRpYURldmljZXM6OlJlamVjdENhbGxiYWNrIG1fcmVqZWN0Q2FsbGJhY2s7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDM0
MDNkZWUuLjdjMDczZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC02NDgsNiArNjQ4
LDkgQEAgbGlzdChBUFBFTkQgR09iamVjdERPTUJpbmRpbmdzVW5zdGFibGVfSURMX0ZJTEVTCiAK
ICAgICBNb2R1bGVzL21lZGlhc291cmNlL1ZpZGVvUGxheWJhY2tRdWFsaXR5LmlkbAogCisgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0
cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuaWRsCisKICAgICBNb2R1bGVzL3F1b3RhL1N0b3Jh
Z2VJbmZvLmlkbAogICAgIE1vZHVsZXMvcXVvdGEvU3RvcmFnZVF1b3RhLmlkbAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjg4
ZGJlYi4uOWQ0MTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMjE4NSw2ICsyMTg1LDExIEBACiAJCTVERkU4RjU2MEQxNjQ3
N0IwMDc2RTkzNyAvKiBTY2hlZHVsZWRBY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBMzc4QkEwRDE1RjY0MjAwQjc5M0Q2IC8qIFNjaGVk
dWxlZEFjdGlvbi5jcHAgKi87IH07CiAJCTVERkU4RjU3MEQxNjQ3N0MwMDc2RTkzNyAvKiBTY2hl
ZHVsZWRBY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDQTM3OEJCMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVsZWRBY3Rpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1REZFQkFCNzE4NTky
QjZEMDBDNzVCRUIgLyogV2ViS2l0QXZhaWxhYmlsaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1REZFQkFCNjE4NTkyQjZEMDBDNzVCRUIgLyogV2Vi
S2l0QXZhaWxhYmlsaXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNUVBNzI1RDExQUNBQkQzODAwRUFEMTdCIC8qIEpTTWVkaWFEZXZpY2VzQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVF
QTcyNUQwMUFDQUJEMjcwMEVBRDE3QiAvKiBKU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgKi87IH07
CisJCTVFQTcyNUQyMUFDQUJENDcwMEVBRDE3QiAvKiBNZWRpYURldmljZXMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUVBNzI1Q0QxQUNBQkNEOTAw
RUFEMTdCIC8qIE1lZGlhRGV2aWNlcy5jcHAgKi87IH07CisJCTVFQTcyNUQzMUFDQUJENDcwMEVB
RDE3QiAvKiBNZWRpYURldmljZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVFQTcyNUNFMUFDQUJDRDkwMEVBRDE3QiAvKiBNZWRpYURldmljZXMuaCAq
LzsgfTsKKwkJNUVBNzI1RDUxQUNBQkQ1NzAwRUFEMTdCIC8qIE5hdmlnYXRvck1lZGlhRGV2aWNl
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RUE3
MjVDQTFBQ0FCQ0I1MDBFQUQxN0IgLyogTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcCAqLzsgfTsK
KwkJNUVBNzI1RDYxQUNBQkQ1NzAwRUFEMTdCIC8qIE5hdmlnYXRvck1lZGlhRGV2aWNlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUVBNzI1Q0IxQUNB
QkNCNTAwRUFEMTdCIC8qIE5hdmlnYXRvck1lZGlhRGV2aWNlcy5oICovOyB9OwogCQk1RjJEQkJF
OTE3OEUzQzgxMDAxNDE0ODYgLyogQ2VydGlmaWNhdGVJbmZvTWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUYyREJCRTcxNzhFMzMyRDAwMTQxNDg2
IC8qIENlcnRpZmljYXRlSW5mb01hYy5tbSAqLzsgfTsKIAkJNUZBOTA0Q0ExNzhFNjFGNTAwNEM4
QTJEIC8qIENlcnRpZmljYXRlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUYyREJCRTgxNzhFMzM2OTAwMTQxNDg2IC8qIENlcnRpZmljYXRlSW5m
by5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVG
QzdEQzI2Q0ZFMjU2MzIwMEI4NUFFNCAvKiBKU0V2ZW50VGFyZ2V0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RkM3REMyNkNGRTI1NjMyMDBCODVBRTUg
LyogSlNFdmVudFRhcmdldC5oICovOyB9OwpAQCAtOTM4NCw2ICs5Mzg5LDEzIEBACiAJCTVEQjFC
QzY4MTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFuc2Zvcm1Tb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVHJhbnNmb3JtU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVEQjFCQzY5MTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFuc2Zvcm1Tb3VyY2VMaWJ4
c2x0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYW5zZm9ybVNv
dXJjZUxpYnhzbHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1REZFQkFCNjE4
NTkyQjZEMDBDNzVCRUIgLyogV2ViS2l0QXZhaWxhYmlsaXR5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYktpdEF2YWlsYWJpbGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1RUE3MjVDQTFBQ0FCQ0I1MDBFQUQxN0IgLyogTmF2aWdhdG9yTWVkaWFEZXZp
Y2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdmlnYXRvck1l
ZGlhRGV2aWNlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVFQTcyNUNCMUFD
QUJDQjUwMEVBRDE3QiAvKiBOYXZpZ2F0b3JNZWRpYURldmljZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVFQTcyNUNDMUFDQUJDQjUwMEVBRDE3QiAvKiBOYXZpZ2F0b3JNZWRp
YURldmljZXMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5hdmlnYXRvck1lZGlhRGV2aWNl
cy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVFQTcyNUNEMUFDQUJDRDkwMEVB
RDE3QiAvKiBNZWRpYURldmljZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTWVkaWFEZXZpY2VzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUVB
NzI1Q0UxQUNBQkNEOTAwRUFEMTdCIC8qIE1lZGlhRGV2aWNlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZWRpYURldmljZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNUVBNzI1Q0YxQUNBQkNEOTAwRUFEMTdCIC8qIE1lZGlhRGV2aWNlcy5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFEZXZpY2VzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUVBNzI1RDAxQUNBQkQyNzAwRUFEMTdCIC8qIEpTTWVkaWFEZXZpY2VzQ3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTTWVkaWFEZXZpY2Vz
Q3VzdG9tLmNwcDsgcGF0aCA9IGJpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcDsg
c291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk1RjJEQkJFNzE3OEUzMzJEMDAxNDE0ODYg
LyogQ2VydGlmaWNhdGVJbmZvTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gQ2VydGlmaWNhdGVJbmZvTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1RjJEQkJFODE3OEUzMzY5MDAxNDE0ODYgLyogQ2VydGlmaWNhdGVJbmZvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENlcnRpZmljYXRlSW5mby5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1RkM3REMyNkNGRTI1NjMyMDBCODVBRTUgLyogSlNFdmVudFRh
cmdldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFdmVudFRhcmdldC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ1MzQsNiArMTQ1NDYsMTMgQEAKIAkJ
CQkwNzIyMUI0QTE3Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFDb25zdHJhaW50c0ltcGwuY3BwICov
LAogCQkJCTA3MjIxQjRCMTdDRUMzMjcwMDg0OEU1MSAvKiBNZWRpYUNvbnN0cmFpbnRzSW1wbC5o
ICovLAogCQkJCTA3QzU5QjY1MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNvdXJjZVN0YXRlcy5j
cHAgKi8sCisJCQkJNUVBNzI1RDAxQUNBQkQyNzAwRUFEMTdCIC8qIEpTTWVkaWFEZXZpY2VzQ3Vz
dG9tLmNwcCAqLywKKwkJCQk1RUE3MjVDRDFBQ0FCQ0Q5MDBFQUQxN0IgLyogTWVkaWFEZXZpY2Vz
LmNwcCAqLywKKwkJCQk1RUE3MjVDRTFBQ0FCQ0Q5MDBFQUQxN0IgLyogTWVkaWFEZXZpY2VzLmgg
Ki8sCisJCQkJNUVBNzI1Q0YxQUNBQkNEOTAwRUFEMTdCIC8qIE1lZGlhRGV2aWNlcy5pZGwgKi8s
CisJCQkJNUVBNzI1Q0ExQUNBQkNCNTAwRUFEMTdCIC8qIE5hdmlnYXRvck1lZGlhRGV2aWNlcy5j
cHAgKi8sCisJCQkJNUVBNzI1Q0IxQUNBQkNCNTAwRUFEMTdCIC8qIE5hdmlnYXRvck1lZGlhRGV2
aWNlcy5oICovLAorCQkJCTVFQTcyNUNDMUFDQUJDQjUwMEVBRDE3QiAvKiBOYXZpZ2F0b3JNZWRp
YURldmljZXMuaWRsICovLAogCQkJCTA3QzU5QjY2MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNv
dXJjZVN0YXRlcy5oICovLAogCQkJCTA3QzU5QjY3MTdGNzg0QkEwMDBGQkNCQiAvKiBNZWRpYVNv
dXJjZVN0YXRlcy5pZGwgKi8sCiAJCQkJMDcyMjFCNEMxN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlh
U3RyZWFtLmNwcCAqLywKQEAgLTI1NDUyLDYgKzI1NDcxLDcgQEAKIAkJCQlCMkZBM0RDMzBBQjc1
QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMkZBM0RDNTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnQ3Vy
dmV0b0N1YmljU21vb3RoUmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0RDNzBBQjc1QTZG
MDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY0Ficy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNUVBNzI1RDMxQUNBQkQ0NzAwRUFEMTdCIC8qIE1lZGlhRGV2aWNlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjJGQTNEQzkwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0N1
cnZldG9RdWFkcmF0aWNSZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRENCMEFCNzVBNkYw
MDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMkZBM0RDRDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnQ3Vy
dmV0b1F1YWRyYXRpY1Ntb290aFJlbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjgzNyw2ICsyNjg1
Nyw3IEBACiAJCQkJODU0RkU3MzkwQTIyOTdCRTAwNThEN0FEIC8qIFRyZWVXYWxrZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUMzNzVEN0ZFMTY2Mzk1MTkwMDYxODRBQiAvKiBUeXBlQWhlYWQuaCBp
biBIZWFkZXJzICovLAogCQkJCUU0NkEyQjFDMTdDQTY1QjkwMDBEQkNEOCAvKiBUeXBlZEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTVFQTcyNUQ2MUFDQUJE
NTcwMEVBRDE3QiAvKiBOYXZpZ2F0b3JNZWRpYURldmljZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTM3QzI4QTY4MTBGNjU5Q0MwMDhDNzgxMyAvKiBUeXBlc2V0dGluZ0ZlYXR1cmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MzMwOUUxQTA5OUU2NDkyMDA1NkU1ODEgLyogVHlwaW5nQ29tbWFuZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNEUwQTQ0RUZDNzAwRjk5MkUwIC8qIFVJRXZlbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtMjk0ODgsNiArMjk1MDksNyBAQAogCQkJCUJDRTQ0MTMzMTJG
NzQ4RTIwMDlCODRCOCAvKiBSZW5kZXJDb21iaW5lVGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5MzkyRjE0NDBBRDE4NUZFMDA2OTFCRDQgLyogUmVuZGVyQ291bnRlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQ0VBNDg2RDA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVFQTcyNUQ1MUFDQUJENTcwMEVBRDE3
QiAvKiBOYXZpZ2F0b3JNZWRpYURldmljZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDMwMjc1
NDkxMkE1RkU4NDAwNEJEODI4IC8qIFJlbmRlckRldGFpbHNNYXJrZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOUIzMkNEQUExM0RGN0ZBOTAwRjM0RDEzIC8qIFJlbmRlcmVkUG9zaXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTQzQTAyM0QxN0VCMzcxMzAwNENERDI1IC8qIFJlbmRlckVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTU1MSw2ICsyOTU3Myw3IEBACiAJCQkJQkNF
OTNGNDcxNTE3QzZENTAwOENDRjc0IC8qIFJlbmRlclJlZ2lvblNldC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBODcxREZFMjBBMTUzNzZCMDBCMTJBNjggLyogUmVuZGVyUmVwbGFjZWQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNBODQ2RDYwREM2N0EzNTAwMjZDMzA5IC8qIFJlbmRlclJlcGxp
Y2EuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUVBNzI1RDIxQUNBQkQ0NzAwRUFEMTdCIC8qIE1l
ZGlhRGV2aWNlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDc5RkFFRDEwOUFFMzc1MDBERUQ2
NTUgLyogUmVuZGVyUnVieS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDc5RkFFRjEwOUFFMzc1
MDBERUQ2NTUgLyogUmVuZGVyUnVieUJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3OUZB
RjExMDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlSdW4uY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0yOTY5NSw2ICsyOTcxOCw3IEBACiAJCQkJMEZFQTNFN0MxOTFCMkZDNTAwMEYxQjU1IC8qIFNj
cm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
QTg4RUJEMTZBOEQxQkQwMEY5OTk4NCAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzMUNCRDBDMTYxQTQ0RTkwMEU0Qzg3NCAvKiBT
Y3JvbGxpbmdTdGF0ZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUVBNzI1RDExQUNBQkQz
ODAwRUFEMTdCIC8qIEpTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTkzRUY3RDU1MTk1NEYxMzkwMERGQjcxRCAvKiBTY3JvbGxpbmdTdGF0ZU5vZGUubW0gaW4gU291
cmNlcyAqLywKIAkJCQkwRkVBM0U4MzE5MUIzMUJGMDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVP
dmVyZmxvd1Njcm9sbGluZ05vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMxQ0JEMEUxNjFB
NDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZp
Y2VzQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2Vz
Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDAxYWIwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZWRpYURldmlj
ZXNDdXN0b20uY3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
RXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29u
dHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbmNsdWRlICJKU01lZGlhRGV2aWNlcy5oIgor
CisjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNp
bmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKKyNpbmNs
dWRlICJKU01lZGlhU3RyZWFtLmgiCisjaW5jbHVkZSAiSlNOYXZpZ2F0b3JVc2VyTWVkaWFFcnJv
ci5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pT
VmFsdWUgSlNNZWRpYURldmljZXM6OmdldFVzZXJNZWRpYShFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgRGljdGlvbmFyeSBvcHRpb25zKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisg
ICAgaWYgKCFvcHRpb25zLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiRmlyc3QgYXJndW1lbnQgb2YgZ2V0VXNlck1lZGlhIG11
c3QgYmUgYSB2YWxpZCBEaWN0aW9uYXJ5IikpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICB9CisKKyAgICBEZWZlcnJlZFdyYXBwZXIgd3JhcHBlcihleGVjLCBnbG9iYWxPYmpl
Y3QoKSk7CisgICAgYXV0byByZXNvbHZlQ2FsbGJhY2sgPSBbd3JhcHBlcl0oUmVmUHRyPE1lZGlh
U3RyZWFtPiBzdHJlYW0pIG11dGFibGUgeworICAgICAgICB3cmFwcGVyLnJlc29sdmUoc3RyZWFt
LmdldCgpKTsKKyAgICB9OworICAgIGF1dG8gcmVqZWN0Q2FsbGJhY2sgPSBbd3JhcHBlcl0oUmVm
UHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yPiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIHdy
YXBwZXIucmVqZWN0KGVycm9yLmdldCgpKTsKKyAgICB9OworCisgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgaW1wbCgpLmdldFVzZXJNZWRpYShvcHRpb25zLCBXVEY6Om1vdmUocmVzb2x2
ZUNhbGxiYWNrKSwgV1RGOjptb3ZlKHJlamVjdENhbGxiYWNrKSwgZWMpOworICAgIGlmIChlYykg
eworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gd3JhcHBlci5wcm9taXNlKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0p
Cg==
</data>
<flag name="review"
          id="274674"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249978</attachid>
            <date>2015-04-02 07:59:57 -0700</date>
            <delta_ts>2015-04-02 09:07:17 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>mediadevices_1.patch</filename>
            <type>text/plain</type>
            <size>49203</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiOTA1M2I3Li4yZjNmMTVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDMt
MzEgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCisgICAg
ICAgIFdlYlJUQzogQWRkIHN1cHBvcnQgZm9yIFByb21pc2UtYmFzZWQgTWVkaWFEZXZpY2VzLmdl
dFVzZXJNZWRpYSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDMyNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRlZCB0ZXN0IGZvciBuZXcgUHJvbWlzZS1iYXNlZCBnZXRVc2VyTWVkaWEoKSAob24g
TWVkaWFEZXZpY2VzKS4KKworICAgICAgICAqIGZhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1u
by1jcmFzaC5odG1sOgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdl
dFVzZXJNZWRpYS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJl
YW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS5odG1sOiBBZGRlZC4KKwogMjAxNS0wMy0zMCAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBFeHRlbmRpbmcgbnVs
bCBzaG91bGQgc2V0IF9fcHJvdG9fXyB0byBudWxsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC5odG1sCmluZGV4IDExNzQ2NzIuLmNh
OGQ1MmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hl
ZC1uby1jcmFzaC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRh
Y2hlZC1uby1jcmFzaC5odG1sCkBAIC01Miw3ICs1Miw3IEBAIGZ1bmN0aW9uIGNoZWNrX25hdmln
YXRvcl9hbmRfZG9uZSgpIHsKIGZ1bmN0aW9uIGNoZWNrX25hdmlnYXRvcigpIHsKICAgdmFyIHN0
cmluZ3MgPSBbIF07CiAgIGZvciAocCBpbiBvbGRfbmF2KSB7Ci0gICAgaWYgKHAgPT0gJ2dlb2xv
Y2F0aW9uJyB8fCBwID09ICd3ZWJraXRHZXRVc2VyTWVkaWEnKSAvLyBEb24ndCBpbmNsdWRlIEdl
b2xvY2F0aW9uIG9yIHRoZSBNZWRpYSBTdHJlYW0gQVBJIGZ1bmN0aW9ucyB1bnRpbCBtb3N0IHBs
YXRmb3JtcyBoYXZlIHN1cHBvcnQuCisgICAgaWYgKHAgPT0gJ2dlb2xvY2F0aW9uJyB8fCBwID09
ICd3ZWJraXRHZXRVc2VyTWVkaWEnIHx8IHAgPT0gJ21lZGlhRGV2aWNlcycpIC8vIERvbid0IGlu
Y2x1ZGUgR2VvbG9jYXRpb24gb3IgdGhlIE1lZGlhIFN0cmVhbSBBUEkgZnVuY3Rpb25zIHVudGls
IG1vc3QgcGxhdGZvcm1zIGhhdmUgc3VwcG9ydC4KICAgICAgIGNvbnRpbnVlOwogCiAgICAgaWYg
KHR5cGVvZiBvbGRfbmF2W3BdID09ICdmdW5jdGlvbicpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRVc2VyTWVk
aWEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1YWU4
MWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlcy1nZXRVc2VyTWVkaWEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzQgQEAKK1Rlc3Rz
IGdldFVzZXJNZWRpYSAoUHJvbWlzZS1iYXNlZCB2ZXJzaW9uIG9uIG5hdmlnYXRvci5tZWRpYURl
dmljZXMpCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5hdmlnYXRvci5t
ZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKCk7IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEZp
cnN0IGFyZ3VtZW50IG9mIGdldFVzZXJNZWRpYSBtdXN0IGJlIGEgdmFsaWQgRGljdGlvbmFyeS4K
K1BBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe30pOyB0aHJldyBleGNl
cHRpb24gRXJyb3I6IE5vdFN1cHBvcnRlZEVycm9yOiBET00gRXhjZXB0aW9uIDkuCitQQVNTIG5h
dmlnYXRvci5tZWRpYURldmljZXMud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSk7IHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IG5hdmlnYXRvci5tZWRpYURldmljZXMud2Via2l0R2V0
VXNlck1lZGlhIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ25hdmlnYXRvci5tZWRpYURldmljZXMu
d2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSknLCAnbmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy53ZWJraXRHZXRVc2VyTWVkaWEnIGlzIHVuZGVmaW5lZCkuCitQQVNTIG5hdmlnYXRvci5tZWRp
YURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSkudGhlbihnb3RTdHJlYW0xKTsgZGlk
IG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCitQQVNTIHN0cmVh
bS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCitQQVNTIHN0cmVhbS5nZXRWaWRlb1RyYWNr
cygpLmxlbmd0aCBpcyAwCitQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlh
KHt2aWRlbzp0cnVlfSkudGhlbihnb3RTdHJlYW0yKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24u
CitQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCitQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxl
bmd0aCBpcyAwCitQQVNTIHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCitQQVNT
IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0
cnVlfSkudGhlbihnb3RTdHJlYW0zKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFN0
cmVhbSBnZW5lcmF0ZWQuCitQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAx
CitQQVNTIHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCitQQVNTIG5hdmlnYXRv
ci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp7fSwgdmlkZW86e319KS50aGVuKGdv
dFN0cmVhbTQpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgU3RyZWFtIGdlbmVyYXRl
ZC4KK1BBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKK1BBU1Mgc3RyZWFt
LmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDEKK1BBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGludmFsaWRHb3RTdHJlYW0sIGVycm9y
MSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBFcnJvciBjYWxsYmFjayBjYWxsZWQu
CitQQVNTIGVycm9yQXJnLm5hbWUgaXMgIlBlcm1pc3Npb25EZW5pZWRFcnJvciIKK1BBU1MgZXJy
b3JBcmcuY29uc3RyYWludE5hbWUgaXMgIiIKK1BBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5n
ZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGludmFsaWRHb3RTdHJlYW0pLmNhdGNoKGVy
cm9yMik7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBFcnJvciBjYWxsYmFjayBjYWxs
ZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0
VXNlck1lZGlhLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
cy1nZXRVc2VyTWVkaWEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44
MDY1MDE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9N
ZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWwKQEAgLTAsMCArMSw4OSBAQAorPCFET0NUWVBF
IEhUTUw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5
PgorICAgICAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAgICAgICAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBkZXNjcmlwdGlvbigi
VGVzdHMgZ2V0VXNlck1lZGlhIChQcm9taXNlLWJhc2VkIHZlcnNpb24gb24gbmF2aWdhdG9yLm1l
ZGlhRGV2aWNlcykiKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gc2V0VXNlck1lZGlhUGVybWlz
c2lvbihpc0dyYW50ZWQpIHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlck1lZGlhUGVybWlzc2lvbihp
c0dyYW50ZWQpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZGVi
dWcoIlRoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSB0ZXN0UnVubmVyIik7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBzdHJlYW07CisgICAgICAgICAgICB2YXIg
ZXJyb3JBcmc7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGludmFsaWRHb3RTdHJlYW0oKSB7Cisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiU3RyZWFtIGdlbmVyYXRlZCB3aGVuIGFuIGVycm9y
IHNob3VsZCBoYXZlIG9jY3VycmVkLiIpOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBlcnJvcjIoZSkgeworICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkVycm9yIGNhbGxiYWNrIGNhbGxlZC4iKTsKKyAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZnVuY3Rpb24gZXJyb3IxKGUpIHsKKyAgICAgICAgICAgICAgICBlcnJvckFyZyA9IGU7CisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiRXJyb3IgY2FsbGJhY2sgY2FsbGVkLiIpOworICAgICAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXJyb3JBcmcubmFtZSIsICJQZXJtaXNz
aW9uRGVuaWVkRXJyb3IiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImVycm9yQXJnLmNvbnN0cmFpbnROYW1lIiwgIiIpOworCisgICAgICAgICAgICAgICAgc2hvdWxk
Tm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVl
fSkudGhlbihpbnZhbGlkR290U3RyZWFtKS5jYXRjaChlcnJvcjIpOyIpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW00KHMpIHsKKyAgICAgICAgICAgICAg
ICBzdHJlYW0gPSBzOworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlN0cmVhbSBnZW5lcmF0
ZWQuIik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoInN0cmVhbS5nZXRBdWRpb1RyYWNrcygp
Lmxlbmd0aCIsICIxIik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoInN0cmVhbS5nZXRWaWRl
b1RyYWNrcygpLmxlbmd0aCIsICIxIik7CisKKyAgICAgICAgICAgICAgICBzZXRVc2VyTWVkaWFQ
ZXJtaXNzaW9uKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdh
dG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGludmFsaWRH
b3RTdHJlYW0sIGVycm9yMSk7Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0
aW9uIGdvdFN0cmVhbTMocykgeworICAgICAgICAgICAgICAgIHN0cmVhbSA9IHM7CisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiU3RyZWFtIGdlbmVyYXRlZC4iKTsKKyAgICAgICAgICAgICAg
ICBzaG91bGRCZSgic3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIiwgIjEiKTsKKyAgICAg
ICAgICAgICAgICBzaG91bGRCZSgic3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIiwgIjEi
KTsKKworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZp
Y2VzLmdldFVzZXJNZWRpYSh7YXVkaW86e30sIHZpZGVvOnt9fSkudGhlbihnb3RTdHJlYW00KTsi
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtMihzKSB7
CisgICAgICAgICAgICAgICAgc3RyZWFtID0gczsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJTdHJlYW0gZ2VuZXJhdGVkLiIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJzdHJlYW0u
Z2V0QXVkaW9UcmFja3MoKS5sZW5ndGgiLCAiMCIpOworICAgICAgICAgICAgICAgIHNob3VsZEJl
KCJzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgiLCAiMSIpOworCisgICAgICAgICAgICAg
ICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHth
dWRpbzp0cnVlLCB2aWRlbzp0cnVlfSkudGhlbihnb3RTdHJlYW0zKTsiKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtMShzKSB7CisgICAgICAgICAgICAg
ICAgc3RyZWFtID0gczsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTdHJlYW0gZ2VuZXJh
dGVkLiIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJzdHJlYW0uZ2V0QXVkaW9UcmFja3Mo
KS5sZW5ndGgiLCAiMSIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJzdHJlYW0uZ2V0Vmlk
ZW9UcmFja3MoKS5sZW5ndGgiLCAiMCIpOworCisgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhy
b3coIm5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt2aWRlbzp0cnVlfSkudGhl
bihnb3RTdHJlYW0yKTsiKQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzaG91bGRUaHJv
dygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoKTsiKTsKKyAgICAgICAgICAg
IHNob3VsZFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7fSk7Iik7
CisgICAgICAgICAgICBzaG91bGRUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy53ZWJraXRH
ZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KTsiKTsKKyAgICAgICAgICAgIHNldFVzZXJNZWRpYVBl
cm1pc3Npb24odHJ1ZSk7CisgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLm1l
ZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGdvdFN0cmVhbTEpOyIp
OworCisgICAgICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgICAg
ICB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDE4MzBh
N2UuLmZiZjg3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMjUsNiArMjI1LDcgQEAgc2V0
KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0NhcGFi
aWxpdHlSYW5nZS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0RPTVVSTE1lZGlhU3RyZWFt
LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vSFRNTE1lZGlhRWxlbWVudE1lZGlhU3RyZWFt
LmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbAogICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
Q2FwYWJpbGl0aWVzLmlkbApAQCAtMjM1LDYgKzIzNiw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdf
SURMX0ZJTEVTCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludC5p
ZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50U2V0LmlkbAog
ICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRzLmlkbAorICAgIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmlkbAogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJl
YW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9O
YXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbApAQCAtODczLDYgKzg3NSw3IEBAIHNl
dChXZWJDb3JlX1NPVVJDRVMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0RPTVVSTE1lZGlhU3Ry
ZWFtLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vSFRNTE1lZGlhRWxlbWVudE1lZGlhU3Ry
ZWFtLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuY3Bw
CisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCiAgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVNvdXJjZVN0YXRlcy5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXMuY3BwCkBAIC04ODQsNiArODg3LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAg
IE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuY3BwCiAgICAgTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNldC5jcHAKICAgICBNb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAKKyAgICBNb2R1bGVzL21lZGlhc3Ry
ZWFtL05hdmlnYXRvck1lZGlhRGV2aWNlcy5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL05h
dmlnYXRvclVzZXJNZWRpYS5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVz
ZXJNZWRpYUVycm9yLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5j
cHAKQEAgLTExMjgsNiArMTEzMiw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5n
cy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTTG9jYXRpb25D
dXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNNYWluVGhyZWFkRXhlY1N0YXRlLmNwcAorICAg
IGJpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pT
TWVkaWFTb3VyY2VTdGF0ZXNDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNNZWRpYVN0cmVh
bUNhcGFiaWxpdGllc0N1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU01lc3NhZ2VDaGFubmVs
Q3VzdG9tLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU1ZmNlNWMuLjNiZGVlMWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1NiBAQAorMjAxNS0wMy0zMSAgQWRhbSBCZXJna3Zpc3QgIDxhZGFtLmJlcmdrdmlz
dEBlcmljc3Nvbi5jb20+CisKKyAgICAgICAgV2ViUlRDOiBBZGQgc3VwcG9ydCBmb3IgUHJvbWlz
ZS1iYXNlZCBNZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKCkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzI1NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBNZWRpYURldmljZXMgb2JqZWN0IGNvbGxl
Y3RzIGZ1bmN0aW9uYWxpdHkgcmVsYXRlZCB0byBsb2NhbCBtZWRpYQorICAgICAgICBkZXZpY2Vz
LiBUaGlzIHBhdGNoIGFkZHMgdGhlIFByb21pc2UtYmFzZWQgdmVyc2lvbiBvZiBnZXRVc2VyTWVk
aWEoKQorICAgICAgICAodW5wcmVmaXhlZCkuIE90aGVyIGZ1bmN0aW9uYWxpdHksIGxpa2UgZW51
bWVyYXRlRGV2aWNlcygpLCB3aWxsIGJlCisgICAgICAgIGFkZGVkIGluIGxhdGVyIHBhdGNoZXMu
CisKKyAgICAgICAgVGhlIG9sZCBjYWxsYmFjay1iYXNlZCB3ZWJraXRHZXRVc2VyTWVkaWEoKSAo
b24gTmF2aWdhdG9yKSBpcyBrZXB0IGZvcgorICAgICAgICBsZWdhY3kgcHVycG9zZXMgKGFjY29y
ZGluZyB0byB0aGUgTWVkaWEgQ2FwdHVyZSBhbmQgU3RyZWFtcyBBUEkgc3BlYyBbMV0pLgorICAg
ICAgICBCb3RoIHZlcnNpb25zIG9mIGdldFVzZXJNZWRpYSBhcmUgYmFja2VkIHVwIGJ5IFVzZXJN
ZWRpYVJlcXVlc3Qgd2hlcmUKKyAgICAgICAgdGhlIGNhbGxiYWNrcyBmcm9tIHRoZSBjYWxsYmFj
ay1iYXNlZCB2ZXJzaW9uIGFyZSB3cmFwcGVkIGluc2lkZSBjKysKKyAgICAgICAgbGFtYmRhIGZ1
bmN0aW9ucy4gVGhlIG5ldyBQcm9taXNlLWJhc2VkIGdldFVzZXJNZWRpYSgpIHVzZXMgdGhlIGxh
bWJkYQorICAgICAgICBmdW5jdGlvbnMgZGlyZWN0bHkgYXMgY3JlYXRlZCBieSB0aGUgUHJvbWlz
ZSBiaW5kaW5ncy4KKworICAgICAgICBbMV0gaHR0cDovL3czYy5naXRodWIuaW8vbWVkaWFjYXB0
dXJlLW1haW4vYXJjaGl2ZXMvMjAxNTAzMjQvZ2V0dXNlcm1lZGlhLmh0bWwjbmF2aWdhdG9ydXNl
cm1lZGlhLWludGVyZmFjZS1leHRlbnNpb25zCisKKyAgICAgICAgVGVzdDogZmFzdC9tZWRpYXN0
cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLmh0bWwKKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhRGV2aWNlczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlczo6
TWVkaWFEZXZpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlczo6fk1lZGlhRGV2
aWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXM6OmRvY3VtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlhKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGw6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpOYXZpZ2F0b3JNZWRpYURldmljZXM6Ok5hdmlnYXRvck1lZGlhRGV2aWNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JNZWRpYURldmljZXM6On5OYXZpZ2F0b3JNZWRpYURl
dmljZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yTWVkaWFEZXZpY2VzOjpmcm9tKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvck1lZGlhRGV2aWNlczo6bWVkaWFEZXZpY2VzKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvck1lZGlhRGV2aWNlczo6c3VwcGxlbWVudE5hbWUp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmg6
IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZp
Y2VzLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpVc2VyTWVkaWFSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmRpZENyZWF0ZVN0cmVhbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0OjpmYWlsZWRUb0NyZWF0ZVN0cmVhbVdp
dGhDb25zdHJhaW50c0Vycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6
OmZhaWxlZFRvQ3JlYXRlU3RyZWFtV2l0aFBlcm1pc3Npb25FcnJvcik6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0Lmg6CisgICAgICAgICogUGxhdGZvcm1H
VEsuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVkaWFEZXZpY2VzQ3VzdG9tLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpKU01lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlhKToKKwogMjAxNS0w
My0zMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIxODIxNjguCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQppbmRleCBiZDE0M2IwLi4zNWUyMTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKQEAgLTExOSw2ICsxMTksNyBAQCBOT05fU1ZHX0JJTkRJTkdfSURMUyA9IFwKICAg
ICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vQ2FwYWJpbGl0eVJhbmdlLmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL0hUTUxNZWRpYUVsZW1lbnRNZWRpYVN0
cmVhbS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVNvdXJj
ZVN0YXRlcy5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZXMuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0u
aWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DYXBhYmls
aXRpZXMuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1FdmVudC5pZGwgXApAQCAtMTI4LDYgKzEyOSw3IEBAIE5PTl9TVkdfQklORElOR19JRExTID0g
XAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWlu
dC5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29u
c3RyYWludHMuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFU
cmFja0NvbnN0cmFpbnRTZXQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJl
YW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYS5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5pZGwgXAogICAgICQoV2ViQ29y
ZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlk
bCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RGV2aWNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2
aWNlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGU3NjBkOQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFE
ZXZpY2VzLmNwcApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEVy
aWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAz
LiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRy
aWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJNZWRpYURldmljZXMuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNp
bmNsdWRlICJEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJN
ZWRpYVN0cmVhbS5oIgorI2luY2x1ZGUgIlVzZXJNZWRpYUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJVc2VyTWVkaWFSZXF1ZXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPE1lZGlh
RGV2aWNlcz4gTWVkaWFEZXZpY2VzOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYURldmljZXMoY29udGV4dCkp
OworfQorCitNZWRpYURldmljZXM6Ok1lZGlhRGV2aWNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQorICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29udGV4dCkKK3sK
K30KKworTWVkaWFEZXZpY2VzOjp+TWVkaWFEZXZpY2VzKCkKK3sKK30KKworRG9jdW1lbnQqIE1l
ZGlhRGV2aWNlczo6ZG9jdW1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBkb3duY2FzdDxEb2N1
bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKK30KKwordm9pZCBNZWRpYURldmljZXM6
OmdldFVzZXJNZWRpYShjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBSZXNvbHZlQ2FsbGJhY2sg
cmVzb2x2ZUNhbGxiYWNrLCBSZWplY3RDYWxsYmFjayByZWplY3RDYWxsYmFjaywgRXhjZXB0aW9u
Q29kZSYgZWMpIGNvbnN0Cit7CisgICAgVXNlck1lZGlhQ29udHJvbGxlciogdXNlck1lZGlhID0g
VXNlck1lZGlhQ29udHJvbGxlcjo6ZnJvbShkb2N1bWVudCgpID8gZG9jdW1lbnQoKS0+cGFnZSgp
IDogbnVsbHB0cik7CisgICAgaWYgKCF1c2VyTWVkaWEpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQ
UE9SVEVEX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxVc2VyTWVk
aWFSZXF1ZXN0PiByZXF1ZXN0ID0gVXNlck1lZGlhUmVxdWVzdDo6Y3JlYXRlKGRvY3VtZW50KCks
IHVzZXJNZWRpYSwgb3B0aW9ucywgV1RGOjptb3ZlKHJlc29sdmVDYWxsYmFjayksIFdURjo6bW92
ZShyZWplY3RDYWxsYmFjayksIGVjKTsKKyAgICBpZiAoIXJlcXVlc3QpIHsKKyAgICAgICAgZWMg
PSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJlcXVl
c3QtPnN0YXJ0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYURldmljZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43
OGMwNTU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYURldmljZXMuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRp
b24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2Yg
aXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVkaWFE
ZXZpY2VzX2gKKyNkZWZpbmUgTWVkaWFEZXZpY2VzX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgorI2luY2x1ZGUg
IlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERpY3Rpb25h
cnk7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIE1lZGlhU3RyZWFtOworY2xhc3MgTmF2aWdhdG9y
VXNlck1lZGlhRXJyb3I7CisKK3R5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CisKK2NsYXNzIE1l
ZGlhRGV2aWNlcyA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPE1l
ZGlhRGV2aWNlcz4sIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxNZWRpYURldmljZXM+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7CisgICAgdmlydHVhbCB+TWVkaWFEZXZpY2VzKCk7CisKKyAgICBEb2N1bWVudCogZG9j
dW1lbnQoKSBjb25zdDsKKworICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKFJlZlB0cjxN
ZWRpYVN0cmVhbT4pPiBSZXNvbHZlQ2FsbGJhY2s7CisgICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9u
PHZvaWQoUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yPik+IFJlamVjdENhbGxiYWNrOwor
CisgICAgdm9pZCBnZXRVc2VyTWVkaWEoY29uc3QgRGljdGlvbmFyeSYsIFJlc29sdmVDYWxsYmFj
aywgUmVqZWN0Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKworcHJpdmF0ZToKKyAg
ICBleHBsaWNpdCBNZWRpYURldmljZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2VuZGlmIC8vIE1lZGlhRGV2aWNlc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYmFiZjg2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbApAQCAtMCwwICsxLDM3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5v
ciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K1sKKyAgICBOb0ludGVyZmFjZU9iamVjdCwKKyAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0s
CisgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQorXSBpbnRlcmZhY2UgTWVkaWFEZXZpY2Vz
IHsKKyAgICBbQ3VzdG9tLCBSYWlzZXNFeGNlcHRpb25dIFByb21pc2UgZ2V0VXNlck1lZGlhKERp
Y3Rpb25hcnkgb3B0aW9ucyk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxZjAyZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhRGV2aWNlcy5jcHAK
QEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBFcmljc3NvbiBBQi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0
aGUgbmFtZSBvZiBFcmljc3NvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAq
ICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIk5hdmlnYXRvck1lZGlhRGV2aWNlcy5oIgorCisjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIk1lZGlhRGV2
aWNlcy5oIgorI2luY2x1ZGUgIk5hdmlnYXRvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K05hdmlnYXRvck1lZGlhRGV2aWNlczo6TmF2aWdhdG9yTWVkaWFEZXZpY2VzKEZyYW1lKiBmcmFt
ZSkKKyAgICA6IERPTVdpbmRvd1Byb3BlcnR5KGZyYW1lKQoreworfQorCitOYXZpZ2F0b3JNZWRp
YURldmljZXM6On5OYXZpZ2F0b3JNZWRpYURldmljZXMoKQoreworfQorCitOYXZpZ2F0b3JNZWRp
YURldmljZXMqIE5hdmlnYXRvck1lZGlhRGV2aWNlczo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRv
cikKK3sKKyAgICBOYXZpZ2F0b3JNZWRpYURldmljZXMqIHN1cHBsZW1lbnQgPSBzdGF0aWNfY2Fz
dDxOYXZpZ2F0b3JNZWRpYURldmljZXMqPihTdXBwbGVtZW50PE5hdmlnYXRvcj46OmZyb20obmF2
aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpKSk7CisgICAgaWYgKCFzdXBwbGVtZW50KSB7CisgICAg
ICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yTWVkaWFE
ZXZpY2VzPihuYXZpZ2F0b3ItPmZyYW1lKCkpOworICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3Vw
cGxlbWVudC5nZXQoKTsKKyAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5h
bWUoKSwgV1RGOjptb3ZlKG5ld1N1cHBsZW1lbnQpKTsKKyAgICB9CisgICAgcmV0dXJuIHN1cHBs
ZW1lbnQ7Cit9CisKK01lZGlhRGV2aWNlcyogTmF2aWdhdG9yTWVkaWFEZXZpY2VzOjptZWRpYURl
dmljZXMoTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCit7CisgICAgcmV0dXJuIE5hdmlnYXRvck1lZGlh
RGV2aWNlczo6ZnJvbShuYXZpZ2F0b3IpLT5tZWRpYURldmljZXMoKTsKK30KKworTWVkaWFEZXZp
Y2VzKiBOYXZpZ2F0b3JNZWRpYURldmljZXM6Om1lZGlhRGV2aWNlcygpIGNvbnN0Cit7CisgICAg
aWYgKCFtX21lZGlhRGV2aWNlcyAmJiBmcmFtZSgpKQorICAgICAgICBtX21lZGlhRGV2aWNlcyA9
IE1lZGlhRGV2aWNlczo6Y3JlYXRlKGZyYW1lKCktPmRvY3VtZW50KCkpOworICAgIHJldHVybiBt
X21lZGlhRGV2aWNlcy5nZXQoKTsKK30KKworY29uc3QgY2hhciogTmF2aWdhdG9yTWVkaWFEZXZp
Y2VzOjpzdXBwbGVtZW50TmFtZSgpCit7CisgICAgcmV0dXJuICJOYXZpZ2F0b3JNZWRpYURldmlj
ZXMiOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9OYXZpZ2F0b3JNZWRpYURldmljZXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMzVhMDQ5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmgKQEAgLTAsMCArMSw2NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3Nv
biBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIE5hdmlnYXRvck1lZGlhRGV2aWNlc19oCisjZGVmaW5lIE5hdmlnYXRvck1l
ZGlhRGV2aWNlc19oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiRE9N
V2luZG93UHJvcGVydHkuaCIKKyNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEZyYW1lOworY2xhc3MgTWVkaWFEZXZpY2VzOworY2xhc3Mg
TmF2aWdhdG9yOworCitjbGFzcyBOYXZpZ2F0b3JNZWRpYURldmljZXMgOiBwdWJsaWMgU3VwcGxl
bWVudDxOYXZpZ2F0b3I+LCBwdWJsaWMgRE9NV2luZG93UHJvcGVydHkgeworcHVibGljOgorICAg
IGV4cGxpY2l0IE5hdmlnYXRvck1lZGlhRGV2aWNlcyhGcmFtZSopOworICAgIHZpcnR1YWwgfk5h
dmlnYXRvck1lZGlhRGV2aWNlcygpOworICAgIHN0YXRpYyBOYXZpZ2F0b3JNZWRpYURldmljZXMq
IGZyb20oTmF2aWdhdG9yKik7CisKKyAgICBzdGF0aWMgTWVkaWFEZXZpY2VzKiBtZWRpYURldmlj
ZXMoTmF2aWdhdG9yKik7CisgICAgTWVkaWFEZXZpY2VzKiBtZWRpYURldmljZXMoKSBjb25zdDsK
KworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKKwor
ICAgIG11dGFibGUgUmVmUHRyPE1lZGlhRGV2aWNlcz4gbV9tZWRpYURldmljZXM7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQor
CisjZW5kaWYgLy8gTmF2aWdhdG9yTWVkaWFEZXZpY2VzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDNiZWEwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRp
YURldmljZXMuaWRsCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
RXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29u
dHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPU1F
RElBX1NUUkVBTSwKK10gcGFydGlhbCBpbnRlcmZhY2UgTmF2aWdhdG9yIHsKKyAgICByZWFkb25s
eSBhdHRyaWJ1dGUgTWVkaWFEZXZpY2VzIG1lZGlhRGV2aWNlczsKK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcApp
bmRleCA5OWFiZTUwLi5kNzk2MTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTQ0LDYgKzQ0LDggQEAK
ICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzSW1wbC5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
LmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Qcml2YXRlLmgiCisjaW5jbHVkZSAiTmF2aWdhdG9y
VXNlck1lZGlhRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIk5hdmlnYXRvclVzZXJNZWRpYVN1
Y2Nlc3NDYWxsYmFjay5oIgogI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYUNvbnRyb2xs
ZXIuaCIKQEAgLTc0LDYgKzc2LDIxIEBAIFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gVXNl
ck1lZGlhUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvCiB7CiAgICAg
QVNTRVJUKHN1Y2Nlc3NDYWxsYmFjayk7CiAKKyAgICBhdXRvIHJlc29sdmVDYWxsYmFjayA9IFtz
dWNjZXNzQ2FsbGJhY2tdKFJlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtKSBtdXRhYmxlIHsKKyAg
ICAgICAgc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChzdHJlYW0uZ2V0KCkpOworICAgIH07
CisgICAgYXV0byByZWplY3RDYWxsYmFjayA9IFtlcnJvckNhbGxiYWNrXShSZWZQdHI8TmF2aWdh
dG9yVXNlck1lZGlhRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGVycm9yQ2Fs
bGJhY2spCisgICAgICAgICAgICBlcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChlcnJvci5nZXQo
KSk7CisgICAgfTsKKworICAgIHJldHVybiBVc2VyTWVkaWFSZXF1ZXN0OjpjcmVhdGUoY29udGV4
dCwgY29udHJvbGxlciwgb3B0aW9ucywgV1RGOjptb3ZlKHJlc29sdmVDYWxsYmFjayksIFdURjo6
bW92ZShyZWplY3RDYWxsYmFjayksIGVjKTsKK30KKworUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1
ZXN0PiBVc2VyTWVkaWFSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgVXNlck1lZGlhQ29udHJvbGxlciogY29udHJvbGxlciwgY29uc3QgRGljdGlvbmFyeSYg
b3B0aW9ucywgTWVkaWFEZXZpY2VzOjpSZXNvbHZlQ2FsbGJhY2sgcmVzb2x2ZUNhbGxiYWNrLCBN
ZWRpYURldmljZXM6OlJlamVjdENhbGxiYWNrIHJlamVjdENhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBBU1NFUlQocmVzb2x2ZUNhbGxiYWNrICYmIHJlamVjdENhbGxiYWNrKTsK
KwogICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzID0gcGFyc2VP
cHRpb25zKG9wdGlvbnMsIEF0b21pY1N0cmluZygiYXVkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC04NSwxNiArMTAyLDE2IEBAIFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gVXNl
ck1lZGlhUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvCiAgICAgaWYg
KCFhdWRpb0NvbnN0cmFpbnRzICYmICF2aWRlb0NvbnN0cmFpbnRzKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVXNlck1lZGlhUmVxdWVzdChjb250
ZXh0LCBjb250cm9sbGVyLCBhdWRpb0NvbnN0cmFpbnRzLnJlbGVhc2UoKSwgdmlkZW9Db25zdHJh
aW50cy5yZWxlYXNlKCksIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgVXNlck1lZGlhUmVxdWVzdChjb250ZXh0LCBjb250cm9sbGVyLCBh
dWRpb0NvbnN0cmFpbnRzLnJlbGVhc2UoKSwgdmlkZW9Db25zdHJhaW50cy5yZWxlYXNlKCksIFdU
Rjo6bW92ZShyZXNvbHZlQ2FsbGJhY2spLCBXVEY6Om1vdmUocmVqZWN0Q2FsbGJhY2spKSk7CiB9
CiAKLVVzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgVXNlck1lZGlhQ29udHJvbGxlciogY29udHJvbGxlciwgUGFzc1JlZlB0
cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29u
c3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlh
U3VjY2Vzc0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNl
ck1lZGlhRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK1VzZXJNZWRpYVJlcXVlc3Q6OlVz
ZXJNZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVXNlck1lZGlh
Q29udHJvbGxlciogY29udHJvbGxlciwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRp
b0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWlu
dHMsIE1lZGlhRGV2aWNlczo6UmVzb2x2ZUNhbGxiYWNrIHJlc29sdmVDYWxsYmFjaywgTWVkaWFE
ZXZpY2VzOjpSZWplY3RDYWxsYmFjayByZWplY3RDYWxsYmFjaykKICAgICA6IENvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyKGNvbnRleHQpCiAgICAgLCBtX2F1ZGlvQ29uc3RyYWludHMoYXVkaW9D
b25zdHJhaW50cykKICAgICAsIG1fdmlkZW9Db25zdHJhaW50cyh2aWRlb0NvbnN0cmFpbnRzKQog
ICAgICwgbV9jb250cm9sbGVyKGNvbnRyb2xsZXIpCi0gICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhz
dWNjZXNzQ2FsbGJhY2spCi0gICAgLCBtX2Vycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFjaykKKyAg
ICAsIG1fcmVzb2x2ZUNhbGxiYWNrKHJlc29sdmVDYWxsYmFjaykKKyAgICAsIG1fcmVqZWN0Q2Fs
bGJhY2socmVqZWN0Q2FsbGJhY2spCiB7CiB9CiAKQEAgLTE0OSw3ICsxNjYsNyBAQCB2b2lkIFVz
ZXJNZWRpYVJlcXVlc3Q6OmNvbnN0cmFpbnRzSW52YWxpZChjb25zdCBTdHJpbmcmIGNvbnN0cmFp
bnROYW1lKQogCiB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmRpZENyZWF0ZVN0cmVhbShQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gcHJpdmF0ZVN0cmVhbSkKIHsKLSAgICBpZiAoIW1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCB8fCAhbV9zdWNjZXNzQ2FsbGJhY2spCisgICAgaWYgKCFtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxVc2Vy
TWVkaWFSZXF1ZXN0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwpAQCAtMTYxLDggKzE3OCw3IEBAIHZv
aWQgVXNlck1lZGlhUmVxdWVzdDo6ZGlkQ3JlYXRlU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1Qcml2YXRlPiBwcml2YXRlU3RyCiAgICAgICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJlYW0t
PmdldFZpZGVvVHJhY2tzKCkpCiAgICAgICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cyhw
cm90ZWN0ZWRUaGlzLT5tX3ZpZGVvQ29uc3RyYWludHMpOwogCi0gICAgICAgIEFTU0VSVChwcm90
ZWN0ZWRUaGlzLT5tX3N1Y2Nlc3NDYWxsYmFjayk7Ci0gICAgICAgIHByb3RlY3RlZFRoaXMtPm1f
c3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChzdHJlYW0uZ2V0KCkpOworICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5tX3Jlc29sdmVDYWxsYmFjayhzdHJlYW0uZ2V0KCkpOwogICAgIH0pOwogfQog
CkBAIC0xNzIsMTMgKzE4OCwxMCBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmZhaWxlZFRvQ3Jl
YXRlU3RyZWFtV2l0aENvbnN0cmFpbnRzRXJyb3IoY29uc3QgU3RyaW5nJiBjbwogICAgIGlmICgh
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1f
ZXJyb3JDYWxsYmFjaykKLSAgICAgICAgcmV0dXJuOwotCiAgICAgUmVmUHRyPFVzZXJNZWRpYVJl
cXVlc3Q+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRp
YUVycm9yPiBlcnJvciA9IE5hdmlnYXRvclVzZXJNZWRpYUVycm9yOjpjcmVhdGUoTmF2aWdhdG9y
VXNlck1lZGlhRXJyb3I6OmNvbnN0cmFpbnROb3RTYXRpc2ZpZWRFcnJvck5hbWUoKSwgY29uc3Ry
YWludE5hbWUpOwogICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMsIGVycm9yXSB7
Ci0gICAgICAgIHByb3RlY3RlZFRoaXMtPm1fZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJy
b3IuZ2V0KCkpOworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3JlamVjdENhbGxiYWNrKGVycm9y
LmdldCgpKTsKICAgICB9KTsKIH0KIApAQCAtMTg3LDEzICsyMDAsMTEgQEAgdm9pZCBVc2VyTWVk
aWFSZXF1ZXN0OjpmYWlsZWRUb0NyZWF0ZVN0cmVhbVdpdGhQZXJtaXNzaW9uRXJyb3IoKQogICAg
IGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoIW1fZXJyb3JDYWxsYmFjaykKLSAgICAgICAgcmV0dXJuOwotCiAgICAgUmVmUHRyPFVzZXJN
ZWRpYVJlcXVlc3Q+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgLy8gRklYTUU6IFJlcGxhY2Ug
TmF2aWdhdG9yVXNlck1lZGlhRXJyb3Igd2l0aCBNZWRpYVN0cmVhbUVycm9yIChzZWUgYnVnIDE0
MzMzNSkKICAgICBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3I+IGVycm9yID0gTmF2aWdh
dG9yVXNlck1lZGlhRXJyb3I6OmNyZWF0ZShOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvcjo6cGVybWlz
c2lvbkRlbmllZEVycm9yTmFtZSgpLCBlbXB0eVN0cmluZygpKTsKICAgICBjYWxsT25NYWluVGhy
ZWFkKFtwcm90ZWN0ZWRUaGlzLCBlcnJvcl0gewotICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX2Vy
cm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGVycm9yLmdldCgpKTsKKyAgICAgICAgcHJvdGVjdGVk
VGhpcy0+bV9yZWplY3RDYWxsYmFjayhlcnJvci5nZXQoKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVz
dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0
LmgKaW5kZXggYjc1ZWNkZS4uMGM2ODRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmgKQEAgLTM2LDEwICszNiw4IEBA
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgorI2luY2x1ZGUgIk1lZGlhRGV2aWNlcy5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ3JlYXRp
b25DbGllbnQuaCIKLSNpbmNsdWRlICJOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmgi
Ci0jaW5jbHVkZSAiTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmgiCi0jaW5jbHVk
ZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KQEAgLTUxLDYgKzQ5LDggQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNz
IE1lZGlhQ29uc3RyYWludHM7CiBjbGFzcyBNZWRpYVN0cmVhbVByaXZhdGU7CitjbGFzcyBOYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrOworY2xhc3MgTmF2aWdhdG9yVXNlck1lZGlhU3Vj
Y2Vzc0NhbGxiYWNrOwogY2xhc3MgVXNlck1lZGlhQ29udHJvbGxlcjsKIGNsYXNzIFNlY3VyaXR5
T3JpZ2luOwogCkBAIC01OSw2ICs1OSw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiBj
bGFzcyBVc2VyTWVkaWFSZXF1ZXN0IDogcHVibGljIE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQs
IHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBVc2VyTWVkaWFDb250cm9sbGVyKiwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgUGFz
c1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPE5h
dmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+LCBFeGNlcHRpb25Db2RlJik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBVc2VyTWVkaWFDb250cm9sbGVyKiwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywg
TWVkaWFEZXZpY2VzOjpSZXNvbHZlQ2FsbGJhY2ssIE1lZGlhRGV2aWNlczo6UmVqZWN0Q2FsbGJh
Y2ssIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB+VXNlck1lZGlhUmVxdWVzdCgpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CkBAIC03
MSw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICBib29sIHJlcXVpcmVzVmlkZW8oKSBjb25zdCB7IHJl
dHVybiBtX3ZpZGVvQ29uc3RyYWludHM7IH0KIAogcHJpdmF0ZToKLSAgICBVc2VyTWVkaWFSZXF1
ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBVc2VyTWVkaWFDb250cm9sbGVyKiwgUGFzc1Jl
ZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlh
Q29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1l
ZGlhU3VjY2Vzc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNh
bGxiYWNrPik7CisgICAgVXNlck1lZGlhUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
VXNlck1lZGlhQ29udHJvbGxlciosIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gYXVkaW9D
b25zdHJhaW50cywgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiB2aWRlb0NvbnN0cmFpbnRz
LCBNZWRpYURldmljZXM6OlJlc29sdmVDYWxsYmFjaywgTWVkaWFEZXZpY2VzOjpSZWplY3RDYWxs
YmFjayk7CiAKICAgICAvLyBNZWRpYVN0cmVhbUNyZWF0aW9uQ2xpZW50CiAgICAgdmlydHVhbCB2
b2lkIGNvbnN0cmFpbnRzVmFsaWRhdGVkKCkgb3ZlcnJpZGUgZmluYWw7CkBAIC04OCw4ICs4OSw4
IEBAIHByaXZhdGU6CiAKICAgICBVc2VyTWVkaWFDb250cm9sbGVyKiBtX2NvbnRyb2xsZXI7CiAK
LSAgICBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiBtX3N1Y2Nlc3ND
YWxsYmFjazsKLSAgICBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaz4gbV9l
cnJvckNhbGxiYWNrOworICAgIE1lZGlhRGV2aWNlczo6UmVzb2x2ZUNhbGxiYWNrIG1fcmVzb2x2
ZUNhbGxiYWNrOworICAgIE1lZGlhRGV2aWNlczo6UmVqZWN0Q2FsbGJhY2sgbV9yZWplY3RDYWxs
YmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21h
a2UKaW5kZXggMzQwM2RlZS4uN2MwNzNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAg
LTY0OCw2ICs2NDgsOSBAQCBsaXN0KEFQUEVORCBHT2JqZWN0RE9NQmluZGluZ3NVbnN0YWJsZV9J
RExfRklMRVMKIAogICAgIE1vZHVsZXMvbWVkaWFzb3VyY2UvVmlkZW9QbGF5YmFja1F1YWxpdHku
aWRsCiAKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwKKyAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhRGV2aWNlcy5pZGwKKwogICAgIE1vZHVsZXMv
cXVvdGEvU3RvcmFnZUluZm8uaWRsCiAgICAgTW9kdWxlcy9xdW90YS9TdG9yYWdlUXVvdGEuaWRs
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAyODhkYmViLi45ZDQxMmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTg1LDYgKzIxODUsMTEgQEAKIAkJNURG
RThGNTYwRDE2NDc3QjAwNzZFOTM3IC8qIFNjaGVkdWxlZEFjdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EzNzhCQTBEMTVGNjQyMDBCNzkz
RDYgLyogU2NoZWR1bGVkQWN0aW9uLmNwcCAqLzsgfTsKIAkJNURGRThGNTcwRDE2NDc3QzAwNzZF
OTM3IC8qIFNjaGVkdWxlZEFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNBMzc4QkIwRDE1RjY0MjAwQjc5M0Q2IC8qIFNjaGVkdWxlZEFjdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVE
RkVCQUI3MTg1OTJCNkQwMEM3NUJFQiAvKiBXZWJLaXRBdmFpbGFiaWxpdHkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVERkVCQUI2MTg1OTJCNkQwMEM3
NUJFQiAvKiBXZWJLaXRBdmFpbGFiaWxpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk1RUE3MjVEMTFBQ0FCRDM4MDBFQUQxN0IgLyogSlNNZWRp
YURldmljZXNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUVBNzI1RDAxQUNBQkQyNzAwRUFEMTdCIC8qIEpTTWVkaWFEZXZpY2VzQ3VzdG9t
LmNwcCAqLzsgfTsKKwkJNUVBNzI1RDIxQUNBQkQ0NzAwRUFEMTdCIC8qIE1lZGlhRGV2aWNlcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RUE3MjVD
RDFBQ0FCQ0Q5MDBFQUQxN0IgLyogTWVkaWFEZXZpY2VzLmNwcCAqLzsgfTsKKwkJNUVBNzI1RDMx
QUNBQkQ0NzAwRUFEMTdCIC8qIE1lZGlhRGV2aWNlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUVBNzI1Q0UxQUNBQkNEOTAwRUFEMTdCIC8qIE1lZGlh
RGV2aWNlcy5oICovOyB9OworCQk1RUE3MjVENTFBQ0FCRDU3MDBFQUQxN0IgLyogTmF2aWdhdG9y
TWVkaWFEZXZpY2VzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVFQTcyNUNBMUFDQUJDQjUwMEVBRDE3QiAvKiBOYXZpZ2F0b3JNZWRpYURldmljZXMu
Y3BwICovOyB9OworCQk1RUE3MjVENjFBQ0FCRDU3MDBFQUQxN0IgLyogTmF2aWdhdG9yTWVkaWFE
ZXZpY2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
RUE3MjVDQjFBQ0FCQ0I1MDBFQUQxN0IgLyogTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmggKi87IH07
CiAJCTVGMkRCQkU5MTc4RTNDODEwMDE0MTQ4NiAvKiBDZXJ0aWZpY2F0ZUluZm9NYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RjJEQkJFNzE3OEUz
MzJEMDAxNDE0ODYgLyogQ2VydGlmaWNhdGVJbmZvTWFjLm1tICovOyB9OwogCQk1RkE5MDRDQTE3
OEU2MUY1MDA0QzhBMkQgLyogQ2VydGlmaWNhdGVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RjJEQkJFODE3OEUzMzY5MDAxNDE0ODYgLyogQ2Vy
dGlmaWNhdGVJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNUZDN0RDMjZDRkUyNTYzMjAwQjg1QUU0IC8qIEpTRXZlbnRUYXJnZXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVGQzdEQzI2Q0ZFMjU2
MzIwMEI4NUFFNSAvKiBKU0V2ZW50VGFyZ2V0LmggKi87IH07CkBAIC05Mzg0LDYgKzkzODksMTMg
QEAKIAkJNURCMUJDNjgxMDcxNUE2NDAwRUZBQTQ5IC8qIFRyYW5zZm9ybVNvdXJjZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2Zvcm1Tb3VyY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNURCMUJDNjkxMDcxNUE2NDAwRUZBQTQ5IC8qIFRyYW5zZm9y
bVNvdXJjZUxpYnhzbHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VHJhbnNmb3JtU291cmNlTGlieHNsdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVERkVCQUI2MTg1OTJCNkQwMEM3NUJFQiAvKiBXZWJLaXRBdmFpbGFiaWxpdHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0QXZhaWxhYmlsaXR5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVFQTcyNUNBMUFDQUJDQjUwMEVBRDE3QiAvKiBOYXZpZ2F0
b3JNZWRpYURldmljZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NUVBNzI1Q0IxQUNBQkNCNTAwRUFEMTdCIC8qIE5hdmlnYXRvck1lZGlhRGV2aWNlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0b3JNZWRpYURldmljZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUVBNzI1Q0MxQUNBQkNCNTAwRUFEMTdCIC8qIE5h
dmlnYXRvck1lZGlhRGV2aWNlcy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmF2aWdhdG9y
TWVkaWFEZXZpY2VzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUVBNzI1Q0Qx
QUNBQkNEOTAwRUFEMTdCIC8qIE1lZGlhRGV2aWNlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNZWRpYURldmljZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1RUE3MjVDRTFBQ0FCQ0Q5MDBFQUQxN0IgLyogTWVkaWFEZXZpY2VzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhRGV2aWNlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1RUE3MjVDRjFBQ0FCQ0Q5MDBFQUQxN0IgLyogTWVkaWFEZXZpY2Vz
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYURldmljZXMuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1RUE3MjVEMDFBQ0FCRDI3MDBFQUQxN0IgLyogSlNNZWRpYURl
dmljZXNDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNN
ZWRpYURldmljZXNDdXN0b20uY3BwOyBwYXRoID0gYmluZGluZ3MvanMvSlNNZWRpYURldmljZXND
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTVGMkRCQkU3MTc4RTMz
MkQwMDE0MTQ4NiAvKiBDZXJ0aWZpY2F0ZUluZm9NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBDZXJ0aWZpY2F0ZUluZm9NYWMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVGMkRCQkU4MTc4RTMzNjkwMDE0MTQ4NiAvKiBDZXJ0aWZpY2F0ZUlu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2VydGlmaWNhdGVJbmZvLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVGQzdEQzI2Q0ZFMjU2MzIwMEI4NUFFNSAv
KiBKU0V2ZW50VGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V2
ZW50VGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDUzNCw2ICsxNDU0
NiwxMyBAQAogCQkJCTA3MjIxQjRBMTdDRUMzMjcwMDg0OEU1MSAvKiBNZWRpYUNvbnN0cmFpbnRz
SW1wbC5jcHAgKi8sCiAJCQkJMDcyMjFCNEIxN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhQ29uc3Ry
YWludHNJbXBsLmggKi8sCiAJCQkJMDdDNTlCNjUxN0Y3ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291
cmNlU3RhdGVzLmNwcCAqLywKKwkJCQk1RUE3MjVEMDFBQ0FCRDI3MDBFQUQxN0IgLyogSlNNZWRp
YURldmljZXNDdXN0b20uY3BwICovLAorCQkJCTVFQTcyNUNEMUFDQUJDRDkwMEVBRDE3QiAvKiBN
ZWRpYURldmljZXMuY3BwICovLAorCQkJCTVFQTcyNUNFMUFDQUJDRDkwMEVBRDE3QiAvKiBNZWRp
YURldmljZXMuaCAqLywKKwkJCQk1RUE3MjVDRjFBQ0FCQ0Q5MDBFQUQxN0IgLyogTWVkaWFEZXZp
Y2VzLmlkbCAqLywKKwkJCQk1RUE3MjVDQTFBQ0FCQ0I1MDBFQUQxN0IgLyogTmF2aWdhdG9yTWVk
aWFEZXZpY2VzLmNwcCAqLywKKwkJCQk1RUE3MjVDQjFBQ0FCQ0I1MDBFQUQxN0IgLyogTmF2aWdh
dG9yTWVkaWFEZXZpY2VzLmggKi8sCisJCQkJNUVBNzI1Q0MxQUNBQkNCNTAwRUFEMTdCIC8qIE5h
dmlnYXRvck1lZGlhRGV2aWNlcy5pZGwgKi8sCiAJCQkJMDdDNTlCNjYxN0Y3ODRCQTAwMEZCQ0JC
IC8qIE1lZGlhU291cmNlU3RhdGVzLmggKi8sCiAJCQkJMDdDNTlCNjcxN0Y3ODRCQTAwMEZCQ0JC
IC8qIE1lZGlhU291cmNlU3RhdGVzLmlkbCAqLywKIAkJCQkwNzIyMUI0QzE3Q0VDMzI3MDA4NDhF
NTEgLyogTWVkaWFTdHJlYW0uY3BwICovLApAQCAtMjU0NTIsNiArMjU0NzEsNyBAQAogCQkJCUIy
RkEzREMzMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhB
YnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREM1MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NW
R1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEz
REM3MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1RUE3MjVEMzFBQ0FCRDQ3MDBFQUQxN0IgLyogTWVkaWFEZXZp
Y2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0RDOTBBQjc1QTZGMDAwRTVBQzQgLyogSlNT
VkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNE
Q0IwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhB
YnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRENEMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NW
R1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsLmggaW4gSGVhZGVycyAqLywKQEAgLTI2
ODM3LDYgKzI2ODU3LDcgQEAKIAkJCQk4NTRGRTczOTBBMjI5N0JFMDA1OEQ3QUQgLyogVHJlZVdh
bGtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzM3NUQ3RkUxNjYzOTUxOTAwNjE4NEFCIC8qIFR5
cGVBaGVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ2QTJCMUMxN0NBNjVCOTAwMERCQ0Q4IC8q
IFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUVB
NzI1RDYxQUNBQkQ1NzAwRUFEMTdCIC8qIE5hdmlnYXRvck1lZGlhRGV2aWNlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzdDMjhBNjgxMEY2NTlDQzAwOEM3ODEzIC8qIFR5cGVzZXR0aW5nRmVhdHVy
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTFBMDk5RTY0OTIwMDU2RTU4MSAvKiBUeXBp
bmdDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0RTBBNDRFRkM3MDBGOTkyRTAg
LyogVUlFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTQ4OCw2ICsyOTUwOSw3IEBACiAJCQkJ
QkNFNDQxMzMxMkY3NDhFMjAwOUI4NEI4IC8qIFJlbmRlckNvbWJpbmVUZXh0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzOTJGMTQ0MEFEMTg1RkUwMDY5MUJENCAvKiBSZW5kZXJDb3VudGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUE0ODZEMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3guY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUVBNzI1RDUxQUNB
QkQ1NzAwRUFEMTdCIC8qIE5hdmlnYXRvck1lZGlhRGV2aWNlcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlEMzAyNzU0OTEyQTVGRTg0MDA0QkQ4MjggLyogUmVuZGVyRGV0YWlsc01hcmtlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5QjMyQ0RBQTEzREY3RkE5MDBGMzREMTMgLyogUmVuZGVyZWRQ
b3NpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDNBMDIzRDE3RUIzNzEzMDA0Q0REMjUg
LyogUmVuZGVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI5NTUxLDYgKzI5NTczLDcg
QEAKIAkJCQlCQ0U5M0Y0NzE1MTdDNkQ1MDA4Q0NGNzQgLyogUmVuZGVyUmVnaW9uU2V0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE4NzFERkUyMEExNTM3NkIwMEIxMkE2OCAvKiBSZW5kZXJSZXBs
YWNlZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0E4NDZENjBEQzY3QTM1MDAyNkMzMDkgLyog
UmVuZGVyUmVwbGljYS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1RUE3MjVEMjFBQ0FCRDQ3MDBF
QUQxN0IgLyogTWVkaWFEZXZpY2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NzlGQUVEMTA5
QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NzlG
QUVGMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5QmFzZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDc5RkFGMTEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieVJ1bi5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTI5Njk1LDYgKzI5NzE4LDcgQEAKIAkJCQkwRkVBM0U3QzE5MUIyRkM1MDAw
RjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZBODhFQkQxNkE4RDFCRDAwRjk5OTg0IC8qIFNjcm9sbGluZ1N0YXRlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMxQ0JEMEMxNjFBNDRFOTAw
RTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1RUE3
MjVEMTFBQ0FCRDM4MDBFQUQxN0IgLyogSlNNZWRpYURldmljZXNDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTNFRjdENTUxOTU0RjEzOTAwREZCNzFEIC8qIFNjcm9sbGluZ1N0YXRlTm9k
ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEzRTgzMTkxQjMxQkYwMDBGMUI1NSAvKiBTY3Jv
bGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
MzFDQkQwRTE2MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNNZWRpYURldmljZXNDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
ZWRpYURldmljZXNDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmU0MDFhYjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U01lZGlhRGV2aWNlc0N1c3RvbS5jcHAKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJp
YnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3IgdGhlIG5hbWVz
IG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2luY2x1ZGUgIkpTTWVkaWFE
ZXZpY2VzLmgiCisKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlz
ZS5oIgorI2luY2x1ZGUgIkpTTWVkaWFTdHJlYW0uaCIKKyNpbmNsdWRlICJKU05hdmlnYXRvclVz
ZXJNZWRpYUVycm9yLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworSlNWYWx1ZSBKU01lZGlhRGV2aWNlczo6Z2V0VXNlck1lZGlhKEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICBEaWN0aW9uYXJ5IG9wdGlvbnMoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkp
OworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CisKKyAgICBpZiAoIW9wdGlvbnMuaXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd1ZN
RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJGaXJzdCBhcmd1bWVudCBvZiBnZXRV
c2VyTWVkaWEgbXVzdCBiZSBhIHZhbGlkIERpY3Rpb25hcnkiKSk7CisgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIERlZmVycmVkV3JhcHBlciB3cmFwcGVyKGV4ZWMs
IGdsb2JhbE9iamVjdCgpKTsKKyAgICBhdXRvIHJlc29sdmVDYWxsYmFjayA9IFt3cmFwcGVyXShS
ZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSkgbXV0YWJsZSB7CisgICAgICAgIHdyYXBwZXIucmVz
b2x2ZShzdHJlYW0uZ2V0KCkpOworICAgIH07CisgICAgYXV0byByZWplY3RDYWxsYmFjayA9IFt3
cmFwcGVyXShSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsK
KyAgICAgICAgd3JhcHBlci5yZWplY3QoZXJyb3IuZ2V0KCkpOworICAgIH07CisKKyAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICBpbXBsKCkuZ2V0VXNlck1lZGlhKG9wdGlvbnMsIFdURjo6
bW92ZShyZXNvbHZlQ2FsbGJhY2spLCBXVEY6Om1vdmUocmVqZWN0Q2FsbGJhY2spLCBlYyk7Cisg
ICAgaWYgKGVjKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIHJldHVybiB3cmFwcGVyLnByb21p
c2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NUUkVBTSkK
</data>
<flag name="commit-queue"
          id="274820"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249983</attachid>
            <date>2015-04-02 09:07:17 -0700</date>
            <delta_ts>2015-04-02 10:38:10 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>mediadevices_2.patch</filename>
            <type>text/plain</type>
            <size>49199</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiOTA1M2I3Li44ZmRhZTQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDMt
MzEgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCisgICAg
ICAgIFdlYlJUQzogQWRkIHN1cHBvcnQgZm9yIFByb21pc2UtYmFzZWQgTWVkaWFEZXZpY2VzLmdl
dFVzZXJNZWRpYSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDMyNTUKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAg
ICAgQWRkZWQgdGVzdCBmb3IgbmV3IFByb21pc2UtYmFzZWQgZ2V0VXNlck1lZGlhKCkgKG9uIE1l
ZGlhRGV2aWNlcykuCisKKyAgICAgICAgKiBmYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8t
Y3Jhc2guaHRtbDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRV
c2VyTWVkaWEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy1nZXRVc2VyTWVkaWEuaHRtbDogQWRkZWQuCisKIDIwMTUtMDMtMzAgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRXh0ZW5kaW5nIG51bGwg
c2hvdWxkIHNldCBfX3Byb3RvX18gdG8gbnVsbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2guaHRtbAppbmRleCAxMTc0NjcyLi5jYThk
NTJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQt
bm8tY3Jhc2guaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNo
ZWQtbm8tY3Jhc2guaHRtbApAQCAtNTIsNyArNTIsNyBAQCBmdW5jdGlvbiBjaGVja19uYXZpZ2F0
b3JfYW5kX2RvbmUoKSB7CiBmdW5jdGlvbiBjaGVja19uYXZpZ2F0b3IoKSB7CiAgIHZhciBzdHJp
bmdzID0gWyBdOwogICBmb3IgKHAgaW4gb2xkX25hdikgewotICAgIGlmIChwID09ICdnZW9sb2Nh
dGlvbicgfHwgcCA9PSAnd2Via2l0R2V0VXNlck1lZGlhJykgLy8gRG9uJ3QgaW5jbHVkZSBHZW9s
b2NhdGlvbiBvciB0aGUgTWVkaWEgU3RyZWFtIEFQSSBmdW5jdGlvbnMgdW50aWwgbW9zdCBwbGF0
Zm9ybXMgaGF2ZSBzdXBwb3J0LgorICAgIGlmIChwID09ICdnZW9sb2NhdGlvbicgfHwgcCA9PSAn
d2Via2l0R2V0VXNlck1lZGlhJyB8fCBwID09ICdtZWRpYURldmljZXMnKSAvLyBEb24ndCBpbmNs
dWRlIEdlb2xvY2F0aW9uIG9yIHRoZSBNZWRpYSBTdHJlYW0gQVBJIGZ1bmN0aW9ucyB1bnRpbCBt
b3N0IHBsYXRmb3JtcyBoYXZlIHN1cHBvcnQuCiAgICAgICBjb250aW51ZTsKIAogICAgIGlmICh0
eXBlb2Ygb2xkX25hdltwXSA9PSAnZnVuY3Rpb24nKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRVc2VyTWVkaWEtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlh
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWFlODFi
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM0IEBACitUZXN0cyBn
ZXRVc2VyTWVkaWEgKFByb21pc2UtYmFzZWQgdmVyc2lvbiBvbiBuYXZpZ2F0b3IubWVkaWFEZXZp
Y2VzKQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBuYXZpZ2F0b3IubWVk
aWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpOyB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBGaXJz
dCBhcmd1bWVudCBvZiBnZXRVc2VyTWVkaWEgbXVzdCBiZSBhIHZhbGlkIERpY3Rpb25hcnkuCitQ
QVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHt9KTsgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBOb3RTdXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgorUEFTUyBuYXZp
Z2F0b3IubWVkaWFEZXZpY2VzLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pOyB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLndlYmtpdEdldFVz
ZXJNZWRpYSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICduYXZpZ2F0b3IubWVkaWFEZXZpY2VzLndl
YmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pJywgJ25hdmlnYXRvci5tZWRpYURldmljZXMu
d2Via2l0R2V0VXNlck1lZGlhJyBpcyB1bmRlZmluZWQpLgorUEFTUyBuYXZpZ2F0b3IubWVkaWFE
ZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oZ290U3RyZWFtMSk7IGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBTdHJlYW0gZ2VuZXJhdGVkLgorUEFTUyBzdHJlYW0u
Z2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMQorUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3Mo
KS5sZW5ndGggaXMgMAorUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7
dmlkZW86dHJ1ZX0pLnRoZW4oZ290U3RyZWFtMik7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgor
UEFTUyBTdHJlYW0gZ2VuZXJhdGVkLgorUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5n
dGggaXMgMAorUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMQorUEFTUyBu
YXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1
ZX0pLnRoZW4oZ290U3RyZWFtMyk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBTdHJl
YW0gZ2VuZXJhdGVkLgorUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMQor
UEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMQorUEFTUyBuYXZpZ2F0b3Iu
bWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86e30sIHZpZGVvOnt9fSkudGhlbihnb3RT
dHJlYW00KTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFN0cmVhbSBnZW5lcmF0ZWQu
CitQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCitQQVNTIHN0cmVhbS5n
ZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCitQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMu
Z2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSkudGhlbihpbnZhbGlkR290U3RyZWFtLCBlcnJvcjEp
OyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgRXJyb3IgY2FsbGJhY2sgY2FsbGVkLgor
UEFTUyBlcnJvckFyZy5uYW1lIGlzICJQZXJtaXNzaW9uRGVuaWVkRXJyb3IiCitQQVNTIGVycm9y
QXJnLmNvbnN0cmFpbnROYW1lIGlzICIiCitQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0
VXNlck1lZGlhKHthdWRpbzp0cnVlfSkudGhlbihpbnZhbGlkR290U3RyZWFtKS5jYXRjaChlcnJv
cjIpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgRXJyb3IgY2FsbGJhY2sgY2FsbGVk
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVz
ZXJNZWRpYS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMt
Z2V0VXNlck1lZGlhLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA2
NTAxNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVk
aWFEZXZpY2VzLWdldFVzZXJNZWRpYS5odG1sCkBAIC0wLDAgKzEsODkgQEAKKzwhRE9DVFlQRSBI
VE1MPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4K
KyAgICAgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisgICAgICAgIDxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRl
c3RzIGdldFVzZXJNZWRpYSAoUHJvbWlzZS1iYXNlZCB2ZXJzaW9uIG9uIG5hdmlnYXRvci5tZWRp
YURldmljZXMpIik7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHNldFVzZXJNZWRpYVBlcm1pc3Np
b24oaXNHcmFudGVkKSB7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFVzZXJNZWRpYVBlcm1pc3Npb24oaXNH
cmFudGVkKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGRlYnVn
KCJUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgdGVzdFJ1bm5lciIpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgc3RyZWFtOworICAgICAgICAgICAgdmFyIGVy
cm9yQXJnOworCisgICAgICAgICAgICBmdW5jdGlvbiBpbnZhbGlkR290U3RyZWFtKCkgeworICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlN0cmVhbSBnZW5lcmF0ZWQgd2hlbiBhbiBlcnJvciBz
aG91bGQgaGF2ZSBvY2N1cnJlZC4iKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3IyKGUpIHsKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJFcnJvciBjYWxsYmFjayBjYWxsZWQuIik7CisgICAgICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1
bmN0aW9uIGVycm9yMShlKSB7CisgICAgICAgICAgICAgICAgZXJyb3JBcmcgPSBlOworICAgICAg
ICAgICAgICAgIHRlc3RQYXNzZWQoIkVycm9yIGNhbGxiYWNrIGNhbGxlZC4iKTsKKyAgICAgICAg
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImVycm9yQXJnLm5hbWUiLCAiUGVybWlzc2lv
bkRlbmllZEVycm9yIik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJl
cnJvckFyZy5jb25zdHJhaW50TmFtZSIsICIiKTsKKworICAgICAgICAgICAgICAgIHNob3VsZE5v
dFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0p
LnRoZW4oaW52YWxpZEdvdFN0cmVhbSkuY2F0Y2goZXJyb3IyKTsiKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtNChzKSB7CisgICAgICAgICAgICAgICAg
c3RyZWFtID0gczsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTdHJlYW0gZ2VuZXJhdGVk
LiIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5s
ZW5ndGgiLCAiMSIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJzdHJlYW0uZ2V0VmlkZW9U
cmFja3MoKS5sZW5ndGgiLCAiMSIpOworCisgICAgICAgICAgICAgICAgc2V0VXNlck1lZGlhUGVy
bWlzc2lvbihmYWxzZSk7CisgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRv
ci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSkudGhlbihpbnZhbGlkR290
U3RyZWFtLCBlcnJvcjEpOyIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlv
biBnb3RTdHJlYW0zKHMpIHsKKyAgICAgICAgICAgICAgICBzdHJlYW0gPSBzOworICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoIlN0cmVhbSBnZW5lcmF0ZWQuIik7CisgICAgICAgICAgICAgICAg
c2hvdWxkQmUoInN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCIsICIxIik7CisgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoInN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCIsICIxIik7
CisKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnt9LCB2aWRlbzp7fX0pLnRoZW4oZ290U3RyZWFtNCk7Iik7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbTIocykgewor
ICAgICAgICAgICAgICAgIHN0cmVhbSA9IHM7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
U3RyZWFtIGdlbmVyYXRlZC4iKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgic3RyZWFtLmdl
dEF1ZGlvVHJhY2tzKCkubGVuZ3RoIiwgIjAiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgi
c3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIiwgIjEiKTsKKworICAgICAgICAgICAgICAg
IHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVk
aW86dHJ1ZSwgdmlkZW86dHJ1ZX0pLnRoZW4oZ290U3RyZWFtMyk7Iik7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbTEocykgeworICAgICAgICAgICAgICAg
IHN0cmVhbSA9IHM7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiU3RyZWFtIGdlbmVyYXRl
ZC4iKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgic3RyZWFtLmdldEF1ZGlvVHJhY2tzKCku
bGVuZ3RoIiwgIjEiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgic3RyZWFtLmdldFZpZGVv
VHJhY2tzKCkubGVuZ3RoIiwgIjAiKTsKKworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93
KCJuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7dmlkZW86dHJ1ZX0pLnRoZW4o
Z290U3RyZWFtMik7IikKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2hvdWxkVGhyb3co
Im5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKCk7Iik7CisgICAgICAgICAgICBz
aG91bGRUaHJvdygibmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe30pOyIpOwor
ICAgICAgICAgICAgc2hvdWxkVGhyb3coIm5hdmlnYXRvci5tZWRpYURldmljZXMud2Via2l0R2V0
VXNlck1lZGlhKHthdWRpbzp0cnVlfSk7Iik7CisgICAgICAgICAgICBzZXRVc2VyTWVkaWFQZXJt
aXNzaW9uKHRydWUpOworICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci5tZWRp
YURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSkudGhlbihnb3RTdHJlYW0xKTsiKTsK
KworICAgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICAgICAg
d2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgICAgIDwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxODMwYTdl
Li5mYmY4N2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjI1LDYgKzIyNSw3IEBAIHNldChX
ZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmls
aXR5UmFuZ2UuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01VUkxNZWRpYVN0cmVhbS5p
ZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0hUTUxNZWRpYUVsZW1lbnRNZWRpYVN0cmVhbS5p
ZGwKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5pZGwKICAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU291cmNlU3RhdGVzLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW0uaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNh
cGFiaWxpdGllcy5pZGwKQEAgLTIzNSw2ICsyMzYsNyBAQCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lE
TF9GSUxFUwogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnQuaWRs
CiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludFNldC5pZGwKICAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50cy5pZGwKKyAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhRGV2aWNlcy5pZGwKICAgICBNb2R1bGVzL21l
ZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFt
L05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2
aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5pZGwKQEAgLTg3Myw2ICs4NzUsNyBAQCBzZXQo
V2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01VUkxNZWRpYVN0cmVh
bS5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL0hUTUxNZWRpYUVsZW1lbnRNZWRpYVN0cmVh
bS5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmNwcAor
ICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAogICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTb3VyY2VTdGF0ZXMuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbS5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2FwYWJp
bGl0aWVzLmNwcApAQCAtODg0LDYgKzg4Nyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBN
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50LmNwcAogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuY3BwCiAgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwCisgICAgTW9kdWxlcy9tZWRpYXN0cmVh
bS9OYXZpZ2F0b3JNZWRpYURldmljZXMuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZp
Z2F0b3JVc2VyTWVkaWEuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2Vy
TWVkaWFFcnJvci5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3Bw
CkBAIC0xMTI4LDYgKzExMzIsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3Mv
anMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3Vz
dG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5jcHAKKyAgICBi
aW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU01l
ZGlhU291cmNlU3RhdGVzQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1D
YXBhYmlsaXRpZXNDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNNZXNzYWdlQ2hhbm5lbEN1
c3RvbS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1NWZjZTVjLi5mYTEwYzNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTYgQEAKKzIwMTUtMDMtMzEgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RA
ZXJpY3Nzb24uY29tPgorCisgICAgICAgIFdlYlJUQzogQWRkIHN1cHBvcnQgZm9yIFByb21pc2Ut
YmFzZWQgTWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMyNTUKKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgVGhlIE1lZGlhRGV2aWNlcyBvYmplY3QgY29sbGVjdHMg
ZnVuY3Rpb25hbGl0eSByZWxhdGVkIHRvIGxvY2FsIG1lZGlhCisgICAgICAgIGRldmljZXMuIFRo
aXMgcGF0Y2ggYWRkcyB0aGUgUHJvbWlzZS1iYXNlZCB2ZXJzaW9uIG9mIGdldFVzZXJNZWRpYSgp
CisgICAgICAgICh1bnByZWZpeGVkKS4gT3RoZXIgZnVuY3Rpb25hbGl0eSwgbGlrZSBlbnVtZXJh
dGVEZXZpY2VzKCksIHdpbGwgYmUKKyAgICAgICAgYWRkZWQgaW4gbGF0ZXIgcGF0Y2hlcy4KKwor
ICAgICAgICBUaGUgb2xkIGNhbGxiYWNrLWJhc2VkIHdlYmtpdEdldFVzZXJNZWRpYSgpIChvbiBO
YXZpZ2F0b3IpIGlzIGtlcHQgZm9yCisgICAgICAgIGxlZ2FjeSBwdXJwb3NlcyAoYWNjb3JkaW5n
IHRvIHRoZSBNZWRpYSBDYXB0dXJlIGFuZCBTdHJlYW1zIEFQSSBzcGVjIFsxXSkuCisgICAgICAg
IEJvdGggdmVyc2lvbnMgb2YgZ2V0VXNlck1lZGlhIGFyZSBiYWNrZWQgdXAgYnkgVXNlck1lZGlh
UmVxdWVzdCB3aGVyZQorICAgICAgICB0aGUgY2FsbGJhY2tzIGZyb20gdGhlIGNhbGxiYWNrLWJh
c2VkIHZlcnNpb24gYXJlIHdyYXBwZWQgaW5zaWRlIGMrKworICAgICAgICBsYW1iZGEgZnVuY3Rp
b25zLiBUaGUgbmV3IFByb21pc2UtYmFzZWQgZ2V0VXNlck1lZGlhKCkgdXNlcyB0aGUgbGFtYmRh
CisgICAgICAgIGZ1bmN0aW9ucyBkaXJlY3RseSBhcyBjcmVhdGVkIGJ5IHRoZSBQcm9taXNlIGJp
bmRpbmdzLgorCisgICAgICAgIFsxXSBodHRwOi8vdzNjLmdpdGh1Yi5pby9tZWRpYWNhcHR1cmUt
bWFpbi9hcmNoaXZlcy8yMDE1MDMyNC9nZXR1c2VybWVkaWEuaHRtbCNuYXZpZ2F0b3J1c2VybWVk
aWEtaW50ZXJmYWNlLWV4dGVuc2lvbnMKKworICAgICAgICBUZXN0OiBmYXN0L21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy1nZXRVc2VyTWVkaWEuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFEZXZpY2VzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpNZWRp
YURldmljZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjp+TWVkaWFEZXZpY2Vz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRGV2aWNlczo6ZG9jdW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok5hdmlnYXRvck1lZGlhRGV2aWNlczo6TmF2aWdhdG9yTWVkaWFEZXZpY2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdmlnYXRvck1lZGlhRGV2aWNlczo6fk5hdmlnYXRvck1lZGlhRGV2aWNl
cyk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JNZWRpYURldmljZXM6OmZyb20pOgorICAg
ICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yTWVkaWFEZXZpY2VzOjptZWRpYURldmljZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yTWVkaWFEZXZpY2VzOjpzdXBwbGVtZW50TmFtZSk6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuaDogQWRk
ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OlVzZXJNZWRpYVJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6ZGlkQ3JlYXRlU3RyZWFtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmZhaWxlZFRvQ3JlYXRlU3RyZWFtV2l0aENv
bnN0cmFpbnRzRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6VXNlck1lZGlhUmVxdWVzdDo6ZmFp
bGVkVG9DcmVhdGVTdHJlYW1XaXRoUGVybWlzc2lvbkVycm9yKToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaDoKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5j
bWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNNZWRpYURldmljZXNDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkpTTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEpOgorCiAyMDE1LTAzLTMw
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjE4MjE2OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCmluZGV4IGJkMTQzYjAuLjM1ZTIxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtMTE5LDYgKzExOSw3IEBAIE5PTl9TVkdfQklORElOR19JRExTID0gXAogICAgICQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9DYXBhYmlsaXR5UmFuZ2UuaWRsIFwKICAgICAk
KFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vSFRNTE1lZGlhRWxlbWVudE1lZGlhU3RyZWFt
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU291cmNlU3Rh
dGVzLmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNl
cy5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwg
XAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNhcGFiaWxpdGll
cy5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUV2
ZW50LmlkbCBcCkBAIC0xMjgsNiArMTI5LDcgQEAgTk9OX1NWR19CSU5ESU5HX0lETFMgPSBcCiAg
ICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJhaW50Lmlk
bCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhVHJhY2tDb25zdHJh
aW50cy5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVRyYWNr
Q29uc3RyYWludFNldC5pZGwgXAorICAgICQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9O
YXZpZ2F0b3JNZWRpYURldmljZXMuaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
dHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhLmlkbCBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmlkbCBcCiAgICAgJChXZWJDb3JlKS9N
b2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaWRsIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZp
Y2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2Vz
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTc2MGQ5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmlj
ZXMuY3BwCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgRXJpY3Nz
b24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5l
aXRoZXIgdGhlIG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0
b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIk1lZGlhRGV2aWNlcy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1
ZGUgIkRpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIk1lZGlh
U3RyZWFtLmgiCisjaW5jbHVkZSAiVXNlck1lZGlhQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlVz
ZXJNZWRpYVJlcXVlc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8TWVkaWFEZXZp
Y2VzPiBNZWRpYURldmljZXM6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRGV2aWNlcyhjb250ZXh0KSk7Cit9
CisKK01lZGlhRGV2aWNlczo6TWVkaWFEZXZpY2VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCisgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihjb250ZXh0KQoreworfQor
CitNZWRpYURldmljZXM6On5NZWRpYURldmljZXMoKQoreworfQorCitEb2N1bWVudCogTWVkaWFE
ZXZpY2VzOjpkb2N1bWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50
PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworfQorCit2b2lkIE1lZGlhRGV2aWNlczo6Z2V0
VXNlck1lZGlhKGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIFJlc29sdmVDYWxsYmFjayByZXNv
bHZlQ2FsbGJhY2ssIFJlamVjdENhbGxiYWNrIHJlamVjdENhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
JiBlYykgY29uc3QKK3sKKyAgICBVc2VyTWVkaWFDb250cm9sbGVyKiB1c2VyTWVkaWEgPSBVc2Vy
TWVkaWFDb250cm9sbGVyOjpmcm9tKGRvY3VtZW50KCkgPyBkb2N1bWVudCgpLT5wYWdlKCkgOiBu
dWxscHRyKTsKKyAgICBpZiAoIXVzZXJNZWRpYSkgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JU
RURfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPFVzZXJNZWRpYVJl
cXVlc3Q+IHJlcXVlc3QgPSBVc2VyTWVkaWFSZXF1ZXN0OjpjcmVhdGUoZG9jdW1lbnQoKSwgdXNl
ck1lZGlhLCBvcHRpb25zLCBXVEY6Om1vdmUocmVzb2x2ZUNhbGxiYWNrKSwgV1RGOjptb3ZlKHJl
amVjdENhbGxiYWNrKSwgZWMpOworICAgIGlmICghcmVxdWVzdCkgeworICAgICAgICBlYyA9IE5P
VF9TVVBQT1JURURfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcmVxdWVzdC0+
c3RhcnQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFEZXZpY2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4YzA1
NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4K
KyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMg
Y29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYURldmlj
ZXNfaAorI2RlZmluZSBNZWRpYURldmljZXNfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCisjaW5jbHVkZSAiU2Ny
aXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGljdGlvbmFyeTsK
K2NsYXNzIERvY3VtZW50OworY2xhc3MgTWVkaWFTdHJlYW07CitjbGFzcyBOYXZpZ2F0b3JVc2Vy
TWVkaWFFcnJvcjsKKwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKKworY2xhc3MgTWVkaWFE
ZXZpY2VzIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFE
ZXZpY2VzPiwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPE1lZGlhRGV2aWNlcz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKKyAgICB2aXJ0dWFsIH5NZWRpYURldmljZXMoKTsKKworICAgIERvY3VtZW50KiBkb2N1bWVu
dCgpIGNvbnN0OworCisgICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVmUHRyPE1lZGlh
U3RyZWFtPik+IFJlc29sdmVDYWxsYmFjazsKKyAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9p
ZChSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3I+KT4gUmVqZWN0Q2FsbGJhY2s7CisKKyAg
ICB2b2lkIGdldFVzZXJNZWRpYShjb25zdCBEaWN0aW9uYXJ5JiwgUmVzb2x2ZUNhbGxiYWNrLCBS
ZWplY3RDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworCitwcml2YXRlOgorICAgIGV4
cGxpY2l0IE1lZGlhRGV2aWNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
ZW5kaWYgLy8gTWVkaWFEZXZpY2VzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5iYWJmODZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuaWRsCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAg
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWwor
ICAgIE5vSW50ZXJmYWNlT2JqZWN0LAorICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAg
ICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCitdIGludGVyZmFjZSBNZWRpYURldmljZXMgewor
ICAgIFtDdXN0b20sIFJhaXNlc0V4Y2VwdGlvbl0gUHJvbWlzZSBnZXRVc2VyTWVkaWEoRGljdGlv
bmFyeSBvcHRpb25zKTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhRGV2aWNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhRGV2aWNlcy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNzFmMDJkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcApAQCAt
MCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEVyaWNzc29uIEFCLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0
aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCisjaW5jbHVkZSAiTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmgiCisKKyNpbmNsdWRl
ICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTWVkaWFEZXZpY2Vz
LmgiCisjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTmF2
aWdhdG9yTWVkaWFEZXZpY2VzOjpOYXZpZ2F0b3JNZWRpYURldmljZXMoRnJhbWUqIGZyYW1lKQor
ICAgIDogRE9NV2luZG93UHJvcGVydHkoZnJhbWUpCit7Cit9CisKK05hdmlnYXRvck1lZGlhRGV2
aWNlczo6fk5hdmlnYXRvck1lZGlhRGV2aWNlcygpCit7Cit9CisKK05hdmlnYXRvck1lZGlhRGV2
aWNlcyogTmF2aWdhdG9yTWVkaWFEZXZpY2VzOjpmcm9tKE5hdmlnYXRvciogbmF2aWdhdG9yKQor
eworICAgIE5hdmlnYXRvck1lZGlhRGV2aWNlcyogc3VwcGxlbWVudCA9IHN0YXRpY19jYXN0PE5h
dmlnYXRvck1lZGlhRGV2aWNlcyo+KFN1cHBsZW1lbnQ8TmF2aWdhdG9yPjo6ZnJvbShuYXZpZ2F0
b3IsIHN1cHBsZW1lbnROYW1lKCkpKTsKKyAgICBpZiAoIXN1cHBsZW1lbnQpIHsKKyAgICAgICAg
YXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JNZWRpYURldmlj
ZXM+KG5hdmlnYXRvci0+ZnJhbWUoKSk7CisgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVt
ZW50LmdldCgpOworICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgp
LCBXVEY6Om1vdmUobmV3U3VwcGxlbWVudCkpOworICAgIH0KKyAgICByZXR1cm4gc3VwcGxlbWVu
dDsKK30KKworTWVkaWFEZXZpY2VzKiBOYXZpZ2F0b3JNZWRpYURldmljZXM6Om1lZGlhRGV2aWNl
cyhOYXZpZ2F0b3IqIG5hdmlnYXRvcikKK3sKKyAgICByZXR1cm4gTmF2aWdhdG9yTWVkaWFEZXZp
Y2VzOjpmcm9tKG5hdmlnYXRvciktPm1lZGlhRGV2aWNlcygpOworfQorCitNZWRpYURldmljZXMq
IE5hdmlnYXRvck1lZGlhRGV2aWNlczo6bWVkaWFEZXZpY2VzKCkgY29uc3QKK3sKKyAgICBpZiAo
IW1fbWVkaWFEZXZpY2VzICYmIGZyYW1lKCkpCisgICAgICAgIG1fbWVkaWFEZXZpY2VzID0gTWVk
aWFEZXZpY2VzOjpjcmVhdGUoZnJhbWUoKS0+ZG9jdW1lbnQoKSk7CisgICAgcmV0dXJuIG1fbWVk
aWFEZXZpY2VzLmdldCgpOworfQorCitjb25zdCBjaGFyKiBOYXZpZ2F0b3JNZWRpYURldmljZXM6
OnN1cHBsZW1lbnROYW1lKCkKK3sKKyAgICByZXR1cm4gIk5hdmlnYXRvck1lZGlhRGV2aWNlcyI7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05h
dmlnYXRvck1lZGlhRGV2aWNlcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9OYXZpZ2F0b3JNZWRpYURldmljZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4zNWEwNDk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuaApAQCAtMCwwICsxLDY0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5v
ciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgTmF2aWdhdG9yTWVkaWFEZXZpY2VzX2gKKyNkZWZpbmUgTmF2aWdhdG9yTWVkaWFE
ZXZpY2VzX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJET01XaW5k
b3dQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgRnJhbWU7CitjbGFzcyBNZWRpYURldmljZXM7CitjbGFzcyBOYXZp
Z2F0b3I7CisKK2NsYXNzIE5hdmlnYXRvck1lZGlhRGV2aWNlcyA6IHB1YmxpYyBTdXBwbGVtZW50
PE5hdmlnYXRvcj4sIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgTmF2aWdhdG9yTWVkaWFEZXZpY2VzKEZyYW1lKik7CisgICAgdmlydHVhbCB+TmF2aWdh
dG9yTWVkaWFEZXZpY2VzKCk7CisgICAgc3RhdGljIE5hdmlnYXRvck1lZGlhRGV2aWNlcyogZnJv
bShOYXZpZ2F0b3IqKTsKKworICAgIHN0YXRpYyBNZWRpYURldmljZXMqIG1lZGlhRGV2aWNlcyhO
YXZpZ2F0b3IqKTsKKyAgICBNZWRpYURldmljZXMqIG1lZGlhRGV2aWNlcygpIGNvbnN0OworCitw
cml2YXRlOgorICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOworCisgICAg
bXV0YWJsZSBSZWZQdHI8TWVkaWFEZXZpY2VzPiBtX21lZGlhRGV2aWNlczsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNl
bmRpZiAvLyBOYXZpZ2F0b3JNZWRpYURldmljZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYURldmljZXMuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkM2JlYTAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhRGV2
aWNlcy5pZGwKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBFcmlj
c3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4g
TmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmli
dXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9TUVESUFf
U1RSRUFNLAorXSBwYXJ0aWFsIGludGVyZmFjZSBOYXZpZ2F0b3IgeworICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBNZWRpYURldmljZXMgbWVkaWFEZXZpY2VzOworfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4
IDk5YWJlNTAuLmQ3OTYxNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAtNDQsNiArNDQsOCBAQAogI2lu
Y2x1ZGUgIk1lZGlhQ29uc3RyYWludHNJbXBsLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIK
ICNpbmNsdWRlICJNZWRpYVN0cmVhbVByaXZhdGUuaCIKKyNpbmNsdWRlICJOYXZpZ2F0b3JVc2Vy
TWVkaWFFcnJvckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vz
c0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhQ29udHJvbGxlci5o
IgpAQCAtNzQsNiArNzYsMjEgQEAgUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBVc2VyTWVk
aWFSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY28KIHsKICAgICBBU1NF
UlQoc3VjY2Vzc0NhbGxiYWNrKTsKIAorICAgIGF1dG8gcmVzb2x2ZUNhbGxiYWNrID0gW3N1Y2Nl
c3NDYWxsYmFja10oUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0pIG11dGFibGUgeworICAgICAg
ICBzdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KHN0cmVhbS5nZXQoKSk7CisgICAgfTsKKyAg
ICBhdXRvIHJlamVjdENhbGxiYWNrID0gW2Vycm9yQ2FsbGJhY2tdKFJlZlB0cjxOYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvcj4gZXJyb3IpIG11dGFibGUgeworICAgICAgICBpZiAoZXJyb3JDYWxsYmFj
aykKKyAgICAgICAgICAgIGVycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGVycm9yLmdldCgpKTsK
KyAgICB9OworCisgICAgcmV0dXJuIFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBj
b250cm9sbGVyLCBvcHRpb25zLCBXVEY6Om1vdmUocmVzb2x2ZUNhbGxiYWNrKSwgV1RGOjptb3Zl
KHJlamVjdENhbGxiYWNrKSwgZWMpOworfQorCitQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+
IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBVc2VyTWVkaWFDb250cm9sbGVyKiBjb250cm9sbGVyLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRp
b25zLCBNZWRpYURldmljZXM6OlJlc29sdmVDYWxsYmFjayByZXNvbHZlQ2FsbGJhY2ssIE1lZGlh
RGV2aWNlczo6UmVqZWN0Q2FsbGJhY2sgcmVqZWN0Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIEFTU0VSVChyZXNvbHZlQ2FsbGJhY2sgJiYgcmVqZWN0Q2FsbGJhY2spOworCiAg
ICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMgPSBwYXJzZU9wdGlv
bnMob3B0aW9ucywgQXRvbWljU3RyaW5nKCJhdWRpbyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTg1LDE2ICsxMDIsMTYgQEAgUGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBVc2VyTWVk
aWFSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY28KICAgICBpZiAoIWF1
ZGlvQ29uc3RyYWludHMgJiYgIXZpZGVvQ29uc3RyYWludHMpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVc2VyTWVkaWFSZXF1ZXN0KGNvbnRleHQs
IGNvbnRyb2xsZXIsIGF1ZGlvQ29uc3RyYWludHMucmVsZWFzZSgpLCB2aWRlb0NvbnN0cmFpbnRz
LnJlbGVhc2UoKSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBVc2VyTWVkaWFSZXF1ZXN0KGNvbnRleHQsIGNvbnRyb2xsZXIsIGF1ZGlv
Q29uc3RyYWludHMucmVsZWFzZSgpLCB2aWRlb0NvbnN0cmFpbnRzLnJlbGVhc2UoKSwgV1RGOjpt
b3ZlKHJlc29sdmVDYWxsYmFjayksIFdURjo6bW92ZShyZWplY3RDYWxsYmFjaykpKTsKIH0KIAot
VXNlck1lZGlhUmVxdWVzdDo6VXNlck1lZGlhUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBVc2VyTWVkaWFDb250cm9sbGVyKiBjb250cm9sbGVyLCBQYXNzUmVmUHRyPE1l
ZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJh
aW50cz4gdmlkZW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFTdWNj
ZXNzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVk
aWFFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQorVXNlck1lZGlhUmVxdWVzdDo6VXNlck1l
ZGlhUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBVc2VyTWVkaWFDb250
cm9sbGVyKiBjb250cm9sbGVyLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29u
c3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gdmlkZW9Db25zdHJhaW50cywg
TWVkaWFEZXZpY2VzOjpSZXNvbHZlQ2FsbGJhY2sgcmVzb2x2ZUNhbGxiYWNrLCBNZWRpYURldmlj
ZXM6OlJlamVjdENhbGxiYWNrIHJlamVjdENhbGxiYWNrKQogICAgIDogQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXIoY29udGV4dCkKICAgICAsIG1fYXVkaW9Db25zdHJhaW50cyhhdWRpb0NvbnN0
cmFpbnRzKQogICAgICwgbV92aWRlb0NvbnN0cmFpbnRzKHZpZGVvQ29uc3RyYWludHMpCiAgICAg
LCBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKLSAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nl
c3NDYWxsYmFjaykKLSAgICAsIG1fZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrKQorICAgICwg
bV9yZXNvbHZlQ2FsbGJhY2socmVzb2x2ZUNhbGxiYWNrKQorICAgICwgbV9yZWplY3RDYWxsYmFj
ayhyZWplY3RDYWxsYmFjaykKIHsKIH0KIApAQCAtMTQ5LDcgKzE2Niw3IEBAIHZvaWQgVXNlck1l
ZGlhUmVxdWVzdDo6Y29uc3RyYWludHNJbnZhbGlkKGNvbnN0IFN0cmluZyYgY29uc3RyYWludE5h
bWUpCiAKIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6ZGlkQ3JlYXRlU3RyZWFtKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1Qcml2YXRlPiBwcml2YXRlU3RyZWFtKQogewotICAgIGlmICghbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0IHx8ICFtX3N1Y2Nlc3NDYWxsYmFjaykKKyAgICBpZiAoIW1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPFVzZXJNZWRp
YVJlcXVlc3Q+IHByb3RlY3RlZFRoaXModGhpcyk7CkBAIC0xNjEsOCArMTc4LDcgQEAgdm9pZCBV
c2VyTWVkaWFSZXF1ZXN0OjpkaWRDcmVhdGVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVBy
aXZhdGU+IHByaXZhdGVTdHIKICAgICAgICAgZm9yIChhdXRvJiB0cmFjayA6IHN0cmVhbS0+Z2V0
VmlkZW9UcmFja3MoKSkKICAgICAgICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKHByb3Rl
Y3RlZFRoaXMtPm1fdmlkZW9Db25zdHJhaW50cyk7CiAKLSAgICAgICAgQVNTRVJUKHByb3RlY3Rl
ZFRoaXMtPm1fc3VjY2Vzc0NhbGxiYWNrKTsKLSAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9zdWNj
ZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KHN0cmVhbS5nZXQoKSk7CisgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPm1fcmVzb2x2ZUNhbGxiYWNrKHN0cmVhbS5nZXQoKSk7CiAgICAgfSk7CiB9CiAKQEAg
LTE3MiwxMyArMTg4LDEwIEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6ZmFpbGVkVG9DcmVhdGVT
dHJlYW1XaXRoQ29uc3RyYWludHNFcnJvcihjb25zdCBTdHJpbmcmIGNvCiAgICAgaWYgKCFtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9lcnJv
ckNhbGxiYWNrKQotICAgICAgICByZXR1cm47Ci0KICAgICBSZWZQdHI8VXNlck1lZGlhUmVxdWVz
dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJy
b3I+IGVycm9yID0gTmF2aWdhdG9yVXNlck1lZGlhRXJyb3I6OmNyZWF0ZShOYXZpZ2F0b3JVc2Vy
TWVkaWFFcnJvcjo6Y29uc3RyYWludE5vdFNhdGlzZmllZEVycm9yTmFtZSgpLCBjb25zdHJhaW50
TmFtZSk7CiAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgZXJyb3JdIHsKLSAg
ICAgICAgcHJvdGVjdGVkVGhpcy0+bV9lcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChlcnJvci5n
ZXQoKSk7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcmVqZWN0Q2FsbGJhY2soZXJyb3IuZ2V0
KCkpOwogICAgIH0pOwogfQogCkBAIC0xODcsMTMgKzIwMCwxMSBAQCB2b2lkIFVzZXJNZWRpYVJl
cXVlc3Q6OmZhaWxlZFRvQ3JlYXRlU3RyZWFtV2l0aFBlcm1pc3Npb25FcnJvcigpCiAgICAgaWYg
KCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICgh
bV9lcnJvckNhbGxiYWNrKQotICAgICAgICByZXR1cm47Ci0KICAgICBSZWZQdHI8VXNlck1lZGlh
UmVxdWVzdD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICAvLyBGSVhNRTogUmVwbGFjZSBOYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvciB3aXRoIE1lZGlhU3RyZWFtRXJyb3IgKHNlZSBidWcgMTQzMzM1
KQogICAgIFJlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvcj4gZXJyb3IgPSBOYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvcjo6Y3JlYXRlKE5hdmlnYXRvclVzZXJNZWRpYUVycm9yOjpwZXJtaXNzaW9u
RGVuaWVkRXJyb3JOYW1lKCksIGVtcHR5U3RyaW5nKCkpOwogICAgIGNhbGxPbk1haW5UaHJlYWQo
W3Byb3RlY3RlZFRoaXMsIGVycm9yXSB7Ci0gICAgICAgIHByb3RlY3RlZFRoaXMtPm1fZXJyb3JD
YWxsYmFjay0+aGFuZGxlRXZlbnQoZXJyb3IuZ2V0KCkpOworICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5tX3JlamVjdENhbGxiYWNrKGVycm9yLmdldCgpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaApp
bmRleCBiNzVlY2RlLi4wYzY4NGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaApAQCAtMzYsMTAgKzM2LDggQEAKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisj
aW5jbHVkZSAiTWVkaWFEZXZpY2VzLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1DcmVhdGlvbkNs
aWVudC5oIgotI2luY2x1ZGUgIk5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCIKLSNp
bmNsdWRlICJOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJS
ZWFsdGltZU1lZGlhU291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpA
QCAtNTEsNiArNDksOCBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgTWVk
aWFDb25zdHJhaW50czsKIGNsYXNzIE1lZGlhU3RyZWFtUHJpdmF0ZTsKK2NsYXNzIE5hdmlnYXRv
clVzZXJNZWRpYUVycm9yQ2FsbGJhY2s7CitjbGFzcyBOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNz
Q2FsbGJhY2s7CiBjbGFzcyBVc2VyTWVkaWFDb250cm9sbGVyOwogY2xhc3MgU2VjdXJpdHlPcmln
aW47CiAKQEAgLTU5LDYgKzU5LDcgQEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIGNsYXNz
IFVzZXJNZWRpYVJlcXVlc3QgOiBwdWJsaWMgTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudCwgcHVi
bGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFVzZXJNZWRpYUNvbnRyb2xsZXIqLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBQYXNzUmVm
UHRyPE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4sIFBhc3NSZWZQdHI8TmF2aWdh
dG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFVzZXJNZWRpYUNvbnRyb2xsZXIqLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBNZWRp
YURldmljZXM6OlJlc29sdmVDYWxsYmFjaywgTWVkaWFEZXZpY2VzOjpSZWplY3RDYWxsYmFjaywg
RXhjZXB0aW9uQ29kZSYpOwogICAgIH5Vc2VyTWVkaWFSZXF1ZXN0KCk7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKQEAgLTcxLDcg
KzcyLDcgQEAgcHVibGljOgogICAgIGJvb2wgcmVxdWlyZXNWaWRlbygpIGNvbnN0IHsgcmV0dXJu
IG1fdmlkZW9Db25zdHJhaW50czsgfQogCiBwcml2YXRlOgotICAgIFVzZXJNZWRpYVJlcXVlc3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVzZXJNZWRpYUNvbnRyb2xsZXIqLCBQYXNzUmVmUHRy
PE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4gdmlkZW9Db25zdHJhaW50cywgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFT
dWNjZXNzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJh
Y2s+KTsKKyAgICBVc2VyTWVkaWFSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBVc2Vy
TWVkaWFDb250cm9sbGVyKiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBhdWRpb0NvbnN0
cmFpbnRzLCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IHZpZGVvQ29uc3RyYWludHMsIE1l
ZGlhRGV2aWNlczo6UmVzb2x2ZUNhbGxiYWNrLCBNZWRpYURldmljZXM6OlJlamVjdENhbGxiYWNr
KTsKIAogICAgIC8vIE1lZGlhU3RyZWFtQ3JlYXRpb25DbGllbnQKICAgICB2aXJ0dWFsIHZvaWQg
Y29uc3RyYWludHNWYWxpZGF0ZWQoKSBvdmVycmlkZSBmaW5hbDsKQEAgLTg4LDggKzg5LDggQEAg
cHJpdmF0ZToKIAogICAgIFVzZXJNZWRpYUNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsKIAotICAg
IFJlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxi
YWNrOwotICAgIFJlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPiBtX2Vycm9y
Q2FsbGJhY2s7CisgICAgTWVkaWFEZXZpY2VzOjpSZXNvbHZlQ2FsbGJhY2sgbV9yZXNvbHZlQ2Fs
bGJhY2s7CisgICAgTWVkaWFEZXZpY2VzOjpSZWplY3RDYWxsYmFjayBtX3JlamVjdENhbGxiYWNr
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpp
bmRleCAzNDAzZGVlLi43YzA3M2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtNjQ4
LDYgKzY0OCw5IEBAIGxpc3QoQVBQRU5EIEdPYmplY3RET01CaW5kaW5nc1Vuc3RhYmxlX0lETF9G
SUxFUwogCiAgICAgTW9kdWxlcy9tZWRpYXNvdXJjZS9WaWRlb1BsYXliYWNrUXVhbGl0eS5pZGwK
IAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmlkbAorICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmlkbAorCiAgICAgTW9kdWxlcy9xdW90
YS9TdG9yYWdlSW5mby5pZGwKICAgICBNb2R1bGVzL3F1b3RhL1N0b3JhZ2VRdW90YS5pZGwKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDI4OGRiZWIuLjlkNDEyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxODUsNiArMjE4NSwxMSBAQAogCQk1REZFOEY1
NjBEMTY0NzdCMDA3NkU5MzcgLyogU2NoZWR1bGVkQWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTM3OEJBMEQxNUY2NDIwMEI3OTNENiAv
KiBTY2hlZHVsZWRBY3Rpb24uY3BwICovOyB9OwogCQk1REZFOEY1NzBEMTY0NzdDMDA3NkU5Mzcg
LyogU2NoZWR1bGVkQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0EzNzhCQjBEMTVGNjQyMDBCNzkzRDYgLyogU2NoZWR1bGVkQWN0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNURGRUJB
QjcxODU5MkI2RDAwQzc1QkVCIC8qIFdlYktpdEF2YWlsYWJpbGl0eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNURGRUJBQjYxODU5MkI2RDAwQzc1QkVC
IC8qIFdlYktpdEF2YWlsYWJpbGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTVFQTcyNUQxMUFDQUJEMzgwMEVBRDE3QiAvKiBKU01lZGlhRGV2
aWNlc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1RUE3MjVEMDFBQ0FCRDI3MDBFQUQxN0IgLyogSlNNZWRpYURldmljZXNDdXN0b20uY3Bw
ICovOyB9OworCQk1RUE3MjVEMjFBQ0FCRDQ3MDBFQUQxN0IgLyogTWVkaWFEZXZpY2VzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVFQTcyNUNEMUFD
QUJDRDkwMEVBRDE3QiAvKiBNZWRpYURldmljZXMuY3BwICovOyB9OworCQk1RUE3MjVEMzFBQ0FC
RDQ3MDBFQUQxN0IgLyogTWVkaWFEZXZpY2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1RUE3MjVDRTFBQ0FCQ0Q5MDBFQUQxN0IgLyogTWVkaWFEZXZp
Y2VzLmggKi87IH07CisJCTVFQTcyNUQ1MUFDQUJENTcwMEVBRDE3QiAvKiBOYXZpZ2F0b3JNZWRp
YURldmljZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUVBNzI1Q0ExQUNBQkNCNTAwRUFEMTdCIC8qIE5hdmlnYXRvck1lZGlhRGV2aWNlcy5jcHAg
Ki87IH07CisJCTVFQTcyNUQ2MUFDQUJENTcwMEVBRDE3QiAvKiBOYXZpZ2F0b3JNZWRpYURldmlj
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVFQTcy
NUNCMUFDQUJDQjUwMEVBRDE3QiAvKiBOYXZpZ2F0b3JNZWRpYURldmljZXMuaCAqLzsgfTsKIAkJ
NUYyREJCRTkxNzhFM0M4MTAwMTQxNDg2IC8qIENlcnRpZmljYXRlSW5mb01hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVGMkRCQkU3MTc4RTMzMkQw
MDE0MTQ4NiAvKiBDZXJ0aWZpY2F0ZUluZm9NYWMubW0gKi87IH07CiAJCTVGQTkwNENBMTc4RTYx
RjUwMDRDOEEyRCAvKiBDZXJ0aWZpY2F0ZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVGMkRCQkU4MTc4RTMzNjkwMDE0MTQ4NiAvKiBDZXJ0aWZp
Y2F0ZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1RkM3REMyNkNGRTI1NjMyMDBCODVBRTQgLyogSlNFdmVudFRhcmdldC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUZDN0RDMjZDRkUyNTYzMjAw
Qjg1QUU1IC8qIEpTRXZlbnRUYXJnZXQuaCAqLzsgfTsKQEAgLTkzODQsNiArOTM4OSwxMyBAQAog
CQk1REIxQkM2ODEwNzE1QTY0MDBFRkFBNDkgLyogVHJhbnNmb3JtU291cmNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYW5zZm9ybVNvdXJjZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1REIxQkM2OTEwNzE1QTY0MDBFRkFBNDkgLyogVHJhbnNmb3JtU291
cmNlTGlieHNsdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFu
c2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNURG
RUJBQjYxODU5MkI2RDAwQzc1QkVCIC8qIFdlYktpdEF2YWlsYWJpbGl0eS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRBdmFpbGFiaWxpdHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNUVBNzI1Q0ExQUNBQkNCNTAwRUFEMTdCIC8qIE5hdmlnYXRvck1l
ZGlhRGV2aWNlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXZp
Z2F0b3JNZWRpYURldmljZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1RUE3
MjVDQjFBQ0FCQ0I1MDBFQUQxN0IgLyogTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdmlnYXRvck1lZGlhRGV2aWNlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1RUE3MjVDQzFBQ0FCQ0I1MDBFQUQxN0IgLyogTmF2aWdh
dG9yTWVkaWFEZXZpY2VzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOYXZpZ2F0b3JNZWRp
YURldmljZXMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1RUE3MjVDRDFBQ0FC
Q0Q5MDBFQUQxN0IgLyogTWVkaWFEZXZpY2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1lZGlhRGV2aWNlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTVFQTcyNUNFMUFDQUJDRDkwMEVBRDE3QiAvKiBNZWRpYURldmljZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFEZXZpY2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTVFQTcyNUNGMUFDQUJDRDkwMEVBRDE3QiAvKiBNZWRpYURldmljZXMuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhRGV2aWNlcy5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVFQTcyNUQwMUFDQUJEMjcwMEVBRDE3QiAvKiBKU01lZGlhRGV2aWNl
c0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU01lZGlh
RGV2aWNlc0N1c3RvbS5jcHA7IHBhdGggPSBiaW5kaW5ncy9qcy9KU01lZGlhRGV2aWNlc0N1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNUYyREJCRTcxNzhFMzMyRDAw
MTQxNDg2IC8qIENlcnRpZmljYXRlSW5mb01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IENlcnRpZmljYXRlSW5mb01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUYyREJCRTgxNzhFMzM2OTAwMTQxNDg2IC8qIENlcnRpZmljYXRlSW5mby5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDZXJ0aWZpY2F0ZUluZm8uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUZDN0RDMjZDRkUyNTYzMjAwQjg1QUU1IC8qIEpT
RXZlbnRUYXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZlbnRU
YXJnZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NTM0LDYgKzE0NTQ2LDEz
IEBACiAJCQkJMDcyMjFCNEExN0NFQzMyNzAwODQ4RTUxIC8qIE1lZGlhQ29uc3RyYWludHNJbXBs
LmNwcCAqLywKIAkJCQkwNzIyMUI0QjE3Q0VDMzI3MDA4NDhFNTEgLyogTWVkaWFDb25zdHJhaW50
c0ltcGwuaCAqLywKIAkJCQkwN0M1OUI2NTE3Rjc4NEJBMDAwRkJDQkIgLyogTWVkaWFTb3VyY2VT
dGF0ZXMuY3BwICovLAorCQkJCTVFQTcyNUQwMUFDQUJEMjcwMEVBRDE3QiAvKiBKU01lZGlhRGV2
aWNlc0N1c3RvbS5jcHAgKi8sCisJCQkJNUVBNzI1Q0QxQUNBQkNEOTAwRUFEMTdCIC8qIE1lZGlh
RGV2aWNlcy5jcHAgKi8sCisJCQkJNUVBNzI1Q0UxQUNBQkNEOTAwRUFEMTdCIC8qIE1lZGlhRGV2
aWNlcy5oICovLAorCQkJCTVFQTcyNUNGMUFDQUJDRDkwMEVBRDE3QiAvKiBNZWRpYURldmljZXMu
aWRsICovLAorCQkJCTVFQTcyNUNBMUFDQUJDQjUwMEVBRDE3QiAvKiBOYXZpZ2F0b3JNZWRpYURl
dmljZXMuY3BwICovLAorCQkJCTVFQTcyNUNCMUFDQUJDQjUwMEVBRDE3QiAvKiBOYXZpZ2F0b3JN
ZWRpYURldmljZXMuaCAqLywKKwkJCQk1RUE3MjVDQzFBQ0FCQ0I1MDBFQUQxN0IgLyogTmF2aWdh
dG9yTWVkaWFEZXZpY2VzLmlkbCAqLywKIAkJCQkwN0M1OUI2NjE3Rjc4NEJBMDAwRkJDQkIgLyog
TWVkaWFTb3VyY2VTdGF0ZXMuaCAqLywKIAkJCQkwN0M1OUI2NzE3Rjc4NEJBMDAwRkJDQkIgLyog
TWVkaWFTb3VyY2VTdGF0ZXMuaWRsICovLAogCQkJCTA3MjIxQjRDMTdDRUMzMjcwMDg0OEU1MSAv
KiBNZWRpYVN0cmVhbS5jcHAgKi8sCkBAIC0yNTQ1Miw2ICsyNTQ3MSw3IEBACiAJCQkJQjJGQTNE
QzMwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEQzUwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0
aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEQzcw
QUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTVFQTcyNUQzMUFDQUJENDcwMEVBRDE3QiAvKiBNZWRpYURldmljZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREM5MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1Bh
dGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0RDQjBB
Qjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEQ0QwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0
aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwuaCBpbiBIZWFkZXJzICovLApAQCAtMjY4Mzcs
NiArMjY4NTcsNyBAQAogCQkJCTg1NEZFNzM5MEEyMjk3QkUwMDU4RDdBRCAvKiBUcmVlV2Fsa2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMzc1RDdGRTE2NjM5NTE5MDA2MTg0QUIgLyogVHlwZUFo
ZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDZBMkIxQzE3Q0E2NUI5MDAwREJDRDggLyogVHlw
ZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1RUE3MjVE
NjFBQ0FCRDU3MDBFQUQxN0IgLyogTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkzN0MyOEE2ODEwRjY1OUNDMDA4Qzc4MTMgLyogVHlwZXNldHRpbmdGZWF0dXJlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMUEwOTlFNjQ5MjAwNTZFNTgxIC8qIFR5cGluZ0Nv
bW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjRFMEE0NEVGQzcwMEY5OTJFMCAvKiBV
SUV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI5NDg4LDYgKzI5NTA5LDcgQEAKIAkJCQlCQ0U0
NDEzMzEyRjc0OEUyMDA5Qjg0QjggLyogUmVuZGVyQ29tYmluZVRleHQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTM5MkYxNDQwQUQxODVGRTAwNjkxQkQ0IC8qIFJlbmRlckNvdW50ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNFQTQ4NkQwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1RUE3MjVENTFBQ0FCRDU3
MDBFQUQxN0IgLyogTmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUQzMDI3NTQ5MTJBNUZFODQwMDRCRDgyOCAvKiBSZW5kZXJEZXRhaWxzTWFya2VyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTlCMzJDREFBMTNERjdGQTkwMEYzNEQxMyAvKiBSZW5kZXJlZFBvc2l0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0M0EwMjNEMTdFQjM3MTMwMDRDREQyNSAvKiBS
ZW5kZXJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk1NTEsNiArMjk1NzMsNyBAQAog
CQkJCUJDRTkzRjQ3MTUxN0M2RDUwMDhDQ0Y3NCAvKiBSZW5kZXJSZWdpb25TZXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTg3MURGRTIwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlclJlcGxhY2Vk
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQTg0NkQ2MERDNjdBMzUwMDI2QzMwOSAvKiBSZW5k
ZXJSZXBsaWNhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVFQTcyNUQyMUFDQUJENDcwMEVBRDE3
QiAvKiBNZWRpYURldmljZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3OUZBRUQxMDlBRTM3
NTAwREVENjU1IC8qIFJlbmRlclJ1YnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3OUZBRUYx
MDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0NzlGQUYxMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5UnVuLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMjk2OTUsNiArMjk3MTgsNyBAQAogCQkJCTBGRUEzRTdDMTkxQjJGQzUwMDBGMUI1
NSAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkE4OEVCRDE2QThEMUJEMDBGOTk5ODQgLyogU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9s
bGluZ05vZGVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzFDQkQwQzE2MUE0NEU5MDBFNEM4
NzQgLyogU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVFQTcyNUQx
MUFDQUJEMzgwMEVBRDE3QiAvKiBKU01lZGlhRGV2aWNlc0N1c3RvbS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5M0VGN0Q1NTE5NTRGMTM5MDBERkI3MUQgLyogU2Nyb2xsaW5nU3RhdGVOb2RlLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTNFODMxOTFCMzFCRjAwMEYxQjU1IC8qIFNjcm9sbGlu
Z1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMUNC
RDBFMTYxQTQ0RTkwMEU0Qzg3NCAvKiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01l
ZGlhRGV2aWNlc0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lZGlh
RGV2aWNlc0N1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQw
MWFiMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVk
aWFEZXZpY2VzQ3VzdG9tLmNwcApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRp
b24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2Yg
aXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW5jbHVkZSAiSlNNZWRpYURldmlj
ZXMuaCIKKworI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgi
CisjaW5jbHVkZSAiSlNNZWRpYVN0cmVhbS5oIgorI2luY2x1ZGUgIkpTTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3IuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitKU1ZhbHVlIEpTTWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIERpY3Rpb25hcnkgb3B0aW9ucyhleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7Cisg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKworICAgIGlmICghb3B0aW9ucy5pc09iamVjdCgpKSB7CisgICAgICAgIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkZpcnN0IGFyZ3VtZW50IG9mIGdldFVzZXJN
ZWRpYSBtdXN0IGJlIGEgdmFsaWQgRGljdGlvbmFyeSIpKTsKKyAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CisgICAgfQorCisgICAgRGVmZXJyZWRXcmFwcGVyIHdyYXBwZXIoZXhlYywgZ2xv
YmFsT2JqZWN0KCkpOworICAgIGF1dG8gcmVzb2x2ZUNhbGxiYWNrID0gW3dyYXBwZXJdKFJlZlB0
cjxNZWRpYVN0cmVhbT4gc3RyZWFtKSBtdXRhYmxlIHsKKyAgICAgICAgd3JhcHBlci5yZXNvbHZl
KHN0cmVhbS5nZXQoKSk7CisgICAgfTsKKyAgICBhdXRvIHJlamVjdENhbGxiYWNrID0gW3dyYXBw
ZXJdKFJlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvcj4gZXJyb3IpIG11dGFibGUgeworICAg
ICAgICB3cmFwcGVyLnJlamVjdChlcnJvci5nZXQoKSk7CisgICAgfTsKKworICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgIGltcGwoKS5nZXRVc2VyTWVkaWEob3B0aW9ucywgV1RGOjptb3Zl
KHJlc29sdmVDYWxsYmFjayksIFdURjo6bW92ZShyZWplY3RDYWxsYmFjayksIGVjKTsKKyAgICBp
ZiAoZWMpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisgICAgcmV0dXJuIHdyYXBwZXIucHJvbWlzZSgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>