<?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>125646</bug_id>
          
          <creation_ts>2013-12-12 11:26:32 -0800</creation_ts>
          <short_desc>[iOS] Upstream WebCore/dom changes</short_desc>
          <delta_ts>2013-12-16 17:29:04 -0800</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>125765</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>aestes</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>959263</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-12-12 11:26:32 -0800</bug_when>
    <thetext>Upstream the iOS related changes to WebCore/dom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959269</commentid>
    <comment_count>1</comment_count>
      <attachid>219102</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-12-12 11:35:12 -0800</bug_when>
    <thetext>Created attachment 219102
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959270</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-12 11:36:57 -0800</bug_when>
    <thetext>Attachment 219102 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/dom/ActiveDOMObject.h&apos;, u&apos;Source/WebCore/dom/DOMImplementation.cpp&apos;, u&apos;Source/WebCore/dom/DeviceMotionClient.h&apos;, u&apos;Source/WebCore/dom/DeviceMotionController.cpp&apos;, u&apos;Source/WebCore/dom/DeviceMotionController.h&apos;, u&apos;Source/WebCore/dom/DeviceOrientationClient.h&apos;, u&apos;Source/WebCore/dom/DeviceOrientationController.cpp&apos;, u&apos;Source/WebCore/dom/DeviceOrientationController.h&apos;, u&apos;Source/WebCore/dom/DeviceOrientationData.cpp&apos;, u&apos;Source/WebCore/dom/DeviceOrientationData.h&apos;, u&apos;Source/WebCore/dom/DeviceOrientationEvent.idl&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/dom/Document.h&apos;, u&apos;Source/WebCore/dom/Document.idl&apos;, u&apos;Source/WebCore/dom/DocumentMarker.h&apos;, u&apos;Source/WebCore/dom/DocumentMarkerController.cpp&apos;, u&apos;Source/WebCore/dom/DocumentMarkerController.h&apos;, u&apos;Source/WebCore/dom/Element.cpp&apos;, u&apos;Source/WebCore/dom/Element.h&apos;, u&apos;Source/WebCore/dom/EventContext.cpp&apos;, u&apos;Source/WebCore/dom/EventContext.h&apos;, u&apos;Source/WebCore/dom/EventDispatcher.cpp&apos;, u&apos;Source/WebCore/dom/EventNames.h&apos;, u&apos;Source/WebCore/dom/EventNames.in&apos;, u&apos;Source/WebCore/dom/MouseRelatedEvent.cpp&apos;, u&apos;Source/WebCore/dom/Node.cpp&apos;, u&apos;Source/WebCore/dom/Node.h&apos;, u&apos;Source/WebCore/dom/Position.h&apos;, u&apos;Source/WebCore/dom/Range.cpp&apos;, u&apos;Source/WebCore/dom/Range.h&apos;, u&apos;Source/WebCore/dom/ScriptExecutionContext.cpp&apos;, u&apos;Source/WebCore/dom/TreeScope.cpp&apos;, u&apos;Source/WebCore/dom/ViewportArguments.cpp&apos;, u&apos;Source/WebCore/dom/ViewportArguments.h&apos;, u&apos;Source/WebCore/dom/make_names.pl&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/page/Settings.cpp&apos;, u&apos;Source/WebCore/page/Settings.h&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/dom/EventNames.h:268:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/EventNames.h:271:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/EventNames.h:273:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/EventNames.h:277:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 4 in 40 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959283</commentid>
    <comment_count>3</comment_count>
      <attachid>219102</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-12 12:01:40 -0800</bug_when>
    <thetext>Comment on attachment 219102
Patch

Attachment 219102 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/45288088</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959292</commentid>
    <comment_count>4</comment_count>
      <attachid>219102</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-12 12:18:15 -0800</bug_when>
    <thetext>Comment on attachment 219102
Patch

Attachment 219102 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/48438003</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959293</commentid>
    <comment_count>5</comment_count>
      <attachid>219102</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-12-12 12:18:31 -0800</bug_when>
    <thetext>Comment on attachment 219102
Patch

Attachment 219102 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/48398001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959295</commentid>
    <comment_count>6</comment_count>
      <attachid>219108</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-12-12 12:19:28 -0800</bug_when>
    <thetext>Created attachment 219108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959296</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-12 12:21:55 -0800</bug_when>
    <thetext>Attachment 219108 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/dom/ActiveDOMObject.h&apos;, u&apos;Source/WebCore/dom/DOMImplementation.cpp&apos;, u&apos;Source/WebCore/dom/DeviceMotionClient.h&apos;, u&apos;Source/WebCore/dom/DeviceMotionController.cpp&apos;, u&apos;Source/WebCore/dom/DeviceMotionController.h&apos;, u&apos;Source/WebCore/dom/DeviceOrientationClient.h&apos;, u&apos;Source/WebCore/dom/DeviceOrientationController.cpp&apos;, u&apos;Source/WebCore/dom/DeviceOrientationController.h&apos;, u&apos;Source/WebCore/dom/DeviceOrientationData.cpp&apos;, u&apos;Source/WebCore/dom/DeviceOrientationData.h&apos;, u&apos;Source/WebCore/dom/DeviceOrientationEvent.idl&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/dom/Document.h&apos;, u&apos;Source/WebCore/dom/Document.idl&apos;, u&apos;Source/WebCore/dom/DocumentMarker.h&apos;, u&apos;Source/WebCore/dom/DocumentMarkerController.cpp&apos;, u&apos;Source/WebCore/dom/DocumentMarkerController.h&apos;, u&apos;Source/WebCore/dom/Element.cpp&apos;, u&apos;Source/WebCore/dom/Element.h&apos;, u&apos;Source/WebCore/dom/EventContext.cpp&apos;, u&apos;Source/WebCore/dom/EventContext.h&apos;, u&apos;Source/WebCore/dom/EventDispatcher.cpp&apos;, u&apos;Source/WebCore/dom/EventNames.h&apos;, u&apos;Source/WebCore/dom/EventNames.in&apos;, u&apos;Source/WebCore/dom/MouseRelatedEvent.cpp&apos;, u&apos;Source/WebCore/dom/Node.cpp&apos;, u&apos;Source/WebCore/dom/Node.h&apos;, u&apos;Source/WebCore/dom/Position.h&apos;, u&apos;Source/WebCore/dom/Range.cpp&apos;, u&apos;Source/WebCore/dom/Range.h&apos;, u&apos;Source/WebCore/dom/ScriptExecutionContext.cpp&apos;, u&apos;Source/WebCore/dom/TreeScope.cpp&apos;, u&apos;Source/WebCore/dom/ViewportArguments.cpp&apos;, u&apos;Source/WebCore/dom/ViewportArguments.h&apos;, u&apos;Source/WebCore/dom/make_names.pl&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/page/Settings.cpp&apos;, u&apos;Source/WebCore/page/Settings.h&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebCore/dom/EventNames.h:268:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/EventNames.h:271:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/EventNames.h:273:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/EventNames.h:277:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 4 in 40 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960306</commentid>
    <comment_count>8</comment_count>
      <attachid>219108</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2013-12-16 16:43:39 -0800</bug_when>
    <thetext>Comment on attachment 219108
Patch

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

r=me

&gt; Source/WebCore/dom/DOMImplementation.cpp:352
&gt; -#if ENABLE(VIDEO)
&gt; +#if ENABLE(VIDEO) &amp;&amp; !PLATFORM(IOS)

Would this be written better as:

#if ENABLE(VIDEO) &amp;&amp; !ENABLE(PLUGIN_PROXY_FOR_VIDEO)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960325</commentid>
    <comment_count>9</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-12-16 17:29:04 -0800</bug_when>
    <thetext>Committed r160679: &lt;http://trac.webkit.org/changeset/160679&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219102</attachid>
            <date>2013-12-12 11:35:12 -0800</date>
            <delta_ts>2013-12-12 12:19:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125646-20131212113513.patch</filename>
            <type>text/plain</type>
            <size>108656</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwNDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmZjNzgyZDAxZjM4Mjdm
MzUyNWMwZmIzYjhjZDcyZGQ5NzQxMmVmZi4uNjg4OWQzZjA1YzczYWQxN2RiMzk0MjhiZTI4ZmRm
MDA1YzI4MWZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NSBAQAorMjAxMy0xMi0xMiAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVXBzdHJlYW0g
V2ViQ29yZS9kb20gY2hhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI1NjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogQWRkZWQgc3ltYm9sIF9fWk43V2ViQ29yZThT
ZXR0aW5nczE3c2V0TGF5b3V0SW50ZXJ2YWxFaSBhbmQgcmVtb3ZlZCBzeW1ib2wKKyAgICAgICAg
X19aTjdXZWJDb3JlMjRjTGF5b3V0U2NoZWR1bGVUaHJlc2hvbGRFLgorICAgICAgICAqIGRvbS9B
Y3RpdmVET01PYmplY3QuaDogQWRkIHN1c3BlbnNpb24gcmVhc29uIERvY3VtZW50V2lsbEJlUGF1
c2VkLgorICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQpOiBPcHQtb3V0IG9mIEVOQUJM
RShWSURFTykgbG9naWMgd2hlbgorICAgICAgICBidWlsZGluZyBmb3IgaU9TLgorICAgICAgICAq
IGRvbS9EZXZpY2VNb3Rpb25DbGllbnQuaDogTWFkZSBjbGFzcyBub24tY29weWFibGUuCisgICAg
ICAgIChXZWJDb3JlOjpEZXZpY2VNb3Rpb25DbGllbnQ6OkRldmljZU1vdGlvbkNsaWVudCk6IEFk
ZGVkOworICAgICAgICAqIGRvbS9EZXZpY2VNb3Rpb25Db250cm9sbGVyLmNwcDogQWRkZWQgRklY
TUUgY29tbWVudCB0byByZWNvbmNpbGUgaU9TIGFuZCBPcGVuU291cmNlIGRpZmZlcmVuY2VzLgor
ICAgICAgICAoV2ViQ29yZTo6RGV2aWNlTW90aW9uQ29udHJvbGxlcjo6c3VzcGVuZFVwZGF0ZXMp
OiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJT1MpLgorICAgICAgICAoV2ViQ29yZTo6RGV2
aWNlTW90aW9uQ29udHJvbGxlcjo6cmVzdW1lVXBkYXRlcyk6IEFkZGVkOyBndWFyZGVkIGJ5IFBM
QVRGT1JNKElPUykuCisgICAgICAgICogZG9tL0RldmljZU1vdGlvbkNvbnRyb2xsZXIuaDogQWRk
ZWQgRklYTUUgY29tbWVudCB0byByZWNvbmNpbGUgaU9TIGFuZCBPcGVuU291cmNlIGRpZmZlcmVu
Y2VzLgorICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oOiBNYWRlIGNsYXNz
IG5vbi1jb3B5YWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50
OjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudCk6IEFkZGVkLgorICAgICAgICAqIGRvbS9EZXZpY2VP
cmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwOiBBZGRlZCBGSVhNRSBjb21tZW50IHRvIHJlY29uY2ls
ZSBpT1MgYW5kIE9wZW5Tb3VyY2UgZGlmZmVyZW5jZXMuCisgICAgICAgIChXZWJDb3JlOjpEZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OnN1c3BlbmRVcGRh
dGVzKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKFdlYkNvcmU6
OkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6cmVzdW1lVXBkYXRlcyk6IEFkZGVkOyBndWFy
ZGVkIGJ5IFBMQVRGT1JNKElPUykuCisgICAgICAgICogZG9tL0RldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlci5oOiBBZGRlZCBGSVhNRSBjb21tZW50IHRvIHJlY29uY2lsZSBpT1MgYW5kIE9wZW5T
b3VyY2UgZGlmZmVyZW5jZXMuCisgICAgICAgICogZG9tL0RldmljZU9yaWVudGF0aW9uRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkRhdGE6OmNyZWF0ZSk6IEFk
ZGVkOyBpT1Mtc3BlY2lmaWMuIEFkZGVkIEZJWE1FIGNvbW1lbnQuCisgICAgICAgIChXZWJDb3Jl
OjpEZXZpY2VPcmllbnRhdGlvbkRhdGE6OkRldmljZU9yaWVudGF0aW9uRGF0YSk6IEFkZGVkIGlP
Uy1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25EYXRh
Ojpjb21wYXNzSGVhZGluZyk6IEFkZGVkOyBndWFyZGVkIGJ5IFBMQVRGT1JNKElPUykuCisgICAg
ICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkRhdGE6OmNvbXBhc3NBY2N1cmFjeSk6IEFk
ZGVkOyBndWFyZGVkIGJ5IFBMQVRGT1JNKElPUykuCisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VP
cmllbnRhdGlvbkRhdGE6OmNhblByb3ZpZGVDb21wYXNzSGVhZGluZyk6IEFkZGVkOyBndWFyZGVk
IGJ5IFBMQVRGT1JNKElPUykuCisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkRh
dGE6OmNhblByb3ZpZGVDb21wYXNzQWNjdXJhY3kpOiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9S
TShJT1MpLgorICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkRhdGEuaDoKKyAgICAgICAg
KiBkb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5pZGw6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2Rl
LgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6IE1vdmVkIGNvbnN0YW50IGNMYXlvdXRTY2hl
ZHVsZVRocmVzaG9sZCB0byBTZXR0aW5ncy5jcHAgYW5kIHJlbmFtZWQgaXQKKyAgICAgICAgbGF5
b3V0U2NoZWR1bGVUaHJlc2hvbGQgdG93YXJkcyBhbGxvd2luZyBhIHBvcnQgdG8gY29uZmlndXJl
IHRoZSBsYXlvdXQgaW50ZXJ2YWwuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1l
bnQpOiBBZGRlZCBvcHRpb25hbCBhcmd1bWVudCBpc1N5bnRoZXNpemVkLCBkZWZhdWx0cyBmYWxz
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOiBBZGRlZCBpT1Mtc3Bl
Y2lmaWMgY29kZSB0byBkZXN0cm95IHRoZSBkZXZpY2UgbW90aW9uCisgICAgICAgIGFuZCBkZXZp
Y2Ugb3JpZW50YXRpb24gY29udHJvbGxlcnMuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
ZGlkQmVjb21lQ3VycmVudERvY3VtZW50SW5GcmFtZSk6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2Rl
IHdpdGggRklYTUUgY29tbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwcmVwYXJl
Rm9yRGVzdHJ1Y3Rpb24pOiBBZGRlZCBpT1Mtc3BlY2lmaWMgdG91Y2ggZXZlbnQgY29kZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZW1vdmVBbGxFdmVudExpc3RlbmVycyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBsYXRmb3JtU3VzcGVuZE9yU3RvcEFjdGl2
ZURPTU9iamVjdHMpOiBBZGRlZDsgY29tcGlsZXMgdG8gYW4gZW1wdHkgZnVuY3Rpb24gb24KKyAg
ICAgICAgbm9uLWlPUyBwb3J0LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1c3BlbmRB
Y3RpdmVET01PYmplY3RzKTogTW9kaWZpZWQgdG8gY2FsbCBwbGF0Zm9ybVN1c3BlbmRPclN0b3BB
Y3RpdmVET01PYmplY3RzKCkuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVzdW1lQWN0
aXZlRE9NT2JqZWN0cyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN0b3BB
Y3RpdmVET01PYmplY3RzKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1w
bGljaXRDbG9zZSk6IE1vZGlmaWVkIHRvIHF1ZXJ5IFNldHRpbmdzOjpsYXlvdXRJbnRlcnZhbCgp
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om1pbmltdW1MYXlvdXREZWxheSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nlc3NWaWV3cG9ydCk6IEFkZGVkIGlP
Uy1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZVZpZXdw
b3J0QXJndW1lbnRzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpzZXRQYXJzZXJGZWF0dXJl
KTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojpwcm9jZXNzRm9ybWF0RGV0ZWN0aW9uKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZP
Uk0oSU9TKS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpwcm9jZXNzV2ViQXBwT3JpZW50
YXRpb25zKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojppc1RlbGVwaG9uZU51bWJlclBhcnNpbmdFbmFibGVkKTogQWRkZWQ7IGd1
YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRJ
c1RlbGVwaG9uZU51bWJlclBhcnNpbmdBbGxvd2VkKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZP
Uk0oSU9TKS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppc1RlbGVwaG9uZU51bWJlclBh
cnNpbmdBbGxvd2VkKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KTogQWRkZWQgaU9TLXNwZWNp
ZmljIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3VzcGVuZFNjaGVkdWxlZFRh
c2tzKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpkZXZpY2VNb3Rpb25Db250cm9sbGVyKTogQWRkZWQ7IGlPUy1zcGVjaWZpYy4K
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIp
OiBBZGRlZDsgaU9TLXNwZWNpZmljLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkanVz
dEZsb2F0UXVhZHNGb3JTY3JvbGxBbmRBYnNvbHV0ZVpvb21BbmRGcmFtZVNjYWxlKTogQWRkZWQg
aU9TLXNwZWNpZmljIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRqdXN0Rmxv
YXRSZWN0Rm9yU2Nyb2xsQW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZSk6IEFkZGVkIGlPUy1z
cGVjaWZpYyBjb2RlLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOiBSZWdpc3RlciBnZXN0dXJl
IGV2ZW50cyBnZXN0dXJle2NoYW5nZSwgZW5kLCBzdGFydH07IGd1YXJkZWQgYnkgRU5BQkxFKElP
U19HRVNUVVJFX0VWRU5UUykuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aXNTeW50aGVz
aXplZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBsYXRmb3JtU3VzcGVu
ZE9yU3RvcEFjdGl2ZURPTU9iamVjdHMpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aWRsOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlci5oOiBBZGRlZCBpT1Mtc3BlY2lmaWMg
Y2hhbmdlcy4gV2Ugc2hvdWxkIGxvb2sgdG8gcmVjb25jaWxlIHRoZSBkaWZmZXJlbmNlcyBiZXR3
ZWVuCisgICAgICAgIGlPUyBhbmQgT3BlblNvdXJjZS4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xMTMw
NjQyMj4uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6QWxsTWFya2Vyczo6QWxs
TWFya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6RG9jdW1lbnRNYXJr
ZXIpOiBBZGRlZDsgaU9TLXNwZWNpZmljLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJr
ZXI6OmFsdGVybmF0aXZlcyk6IEFkZGVkOyBpT1Mtc3BlY2lmaWMuCisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudE1hcmtlcjo6c2V0QWx0ZXJuYXRpdmUpOiBBZGRlZDsgaU9TLXNwZWNpZmljLgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXI6Om1ldGFkYXRhKTogQWRkZWQ7IGlPUy1z
cGVjaWZpYy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyOjpzZXRNZXRhZGF0YSk6
IEFkZGVkOyBpT1Mtc3BlY2lmaWMuCisgICAgICAgICogZG9tL0RvY3VtZW50TWFya2VyQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFk
ZE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFk
ZERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNNYXJrZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGREaWN0YXRpb25SZXN1bHRNYXJrZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpzaGlmdE1hcmtlcnMp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBk
b20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpmb2N1cyk6IEFkZCBp
T1Mtc3BlY2lmaWMgd29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzY2OTk3NDE+LgorICAg
ICAgICAqIGRvbS9FbGVtZW50Lmg6IFJlZ2lzdGVyIGdlc3R1cmUgZXZlbnRzIGdlc3R1cmV7Y2hh
bmdlLCBlbmQsIHN0YXJ0fTsgZ3VhcmRlZCBieSBFTkFCTEUoSU9TX0dFU1RVUkVfRVZFTlRTKS4K
KyAgICAgICAgKiBkb20vRXZlbnRDb250ZXh0LmNwcDogT3B0LW91dCBvZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKS1ndWFyZGVkIGNvZGUgd2hlbiBidWlsZGluZyB0aGUgaU9TIHBvcnQuCisgICAgICAg
ICogZG9tL0V2ZW50Q29udGV4dC5oOiBEaXR0by4KKyAgICAgICAgKiBkb20vRXZlbnREaXNwYXRj
aGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UmVsYXRlZE5vZGVSZXNvbHZlcjo6RXZl
bnRSZWxhdGVkTm9kZVJlc29sdmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFdmVudERp
c3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
UGF0aDo6RXZlbnRQYXRoKTogRGl0dG8uCisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDogQWRk
ZWQgZXZlbnRzIHdlYmtpdHtjdXJyZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZCwg
cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkfQorICAgICAgICBhbmQgZ2VzdHVyZXtj
aGFuZ2UsIGVuZCwgc3RhcnR9LgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmluOiBBZGRlZCBl
dmVudCBuYW1lcyBHZXN0dXJlRXZlbnQgYW5kIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5RXZlbnQgY29uZGl0aW9uZWQgb24KKyAgICAgICAgdGhlIG1hY3JvIGRlZmluZXMgRU5BQkxF
X0lPU19HRVNUVVJFX0VWRU5UUyBhbmQgRU5BQkxFX0lPU19BSVJQTEFZLgorICAgICAgICAqIGRv
bS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50c1Njcm9s
bE9mZnNldCk6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6TW91
c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KTogRGl0dG8uCisgICAgICAgICogZG9t
L05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6d2lsbEJlRGVsZXRlZEZyb20pOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRGVzY2VuZGFudE9mKTogRml4ZWQgc3R5
bGUgaXNzdWUgaW4gZnVuY3Rpb24gcHJvdG90eXBlOyBtb3ZlZCAnKicgdG8gdGhlIGxlZnQgc2lk
ZS4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRGVzY2VuZGFudE9yU2hhZG93RGVzY2VuZGFu
dE9mKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjp0cnlBZGRFdmVudExpc3RlbmVyKTogQWRk
ZWQgaU9TLXNwZWNpZmljIGNvZGU7IGFsc28gYWRkZWQgRklYTUUgY29tbWVudC4KKyAgICAgICAg
KFdlYkNvcmU6OnRyeVJlbW92ZUV2ZW50TGlzdGVuZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OmRpc3BhdGNoRXZlbnQpOiBPcHQtb3V0IG9mIEVOQUJMRShUT1VDSF9FVkVOVFMp
LWd1YXJkZWQgY29kZSB3aGVuIGJ1aWxkaW5nIHRoZSBpT1MgcG9ydC4KKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29kZS4K
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMpOiBB
ZGRlZCBpT1Mtc3BlY2lmaWMgY29kZTsgYWxzbyBhZGRlZCBGSVhNRSBjb21tZW50LgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMpOiBBZGRlZCBp
T1Mtc3BlY2lmaWMgY29kZTsgYWxzbyBhZGRlZCBGSVhNRSBjb21tZW50LgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6d2lsbFJlc3BvbmRUb01vdXNlV2hlZWxFdmVudHMpOiBBZGRlZC4KKyAgICAg
ICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGRvbS9Qb3NpdGlvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6b3BlcmF0b3I8KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj4pOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPj0pOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Om9wZXJhdG9yPD0pOiBBZGRlZC4KKyAgICAgICAgKiBkb20vUmFuZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmFuZ2U6OmNyZWF0ZSk6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlOyBh
bHNvIGFkZGVkIEZJWE1FIGNvbW1lbnQuCisgICAgICAgIChXZWJDb3JlOjppbnRlcnZhbHNTdWZm
aWNpZW50bHlPdmVybGFwKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAg
ICAgKFdlYkNvcmU6OnByaW50UmVjdHMpOiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJT1Mp
LgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0TGluZUhlaWdodE9mU2VsZWN0aW9uUmVjdHMpOiBB
ZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJT1MpLgorICAgICAgICAoV2ViQ29yZTo6Y29hbGVz
Y2VTZWxlY3Rpb25SZWN0cyk6IEFkZGVkOyBndWFyZGVkIGJ5IFBMQVRGT1JNKElPUykuCisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZTo6Y29sbGVjdFNlbGVjdGlvblJlY3RzKTogQWRkZWQ7IGd1YXJk
ZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKiBkb20vUmFuZ2UuaDoKKyAgICAgICAgKiBk
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6IEFkZGVkIGlPUy1zcGVj
aWZpYyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlz
cGF0Y2hFcnJvckV2ZW50KTogRGl0dG8uCisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpub2RlRnJvbVBvaW50KTogRGl0dG8uCisgICAgICAgICogZG9tL1Zp
ZXdwb3J0QXJndW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVWaWV3cG9ydEF0
dHJpYnV0ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmZpbmFsaXplVmlld3BvcnRBcmd1
bWVudHMpOiBBZGRlZDsgaU9TLXNwZWNpZmljLgorICAgICAgICAqIGRvbS9WaWV3cG9ydEFyZ3Vt
ZW50cy5oOgorICAgICAgICAqIGRvbS9tYWtlX25hbWVzLnBsOiBBZGRlZCBzdXBwb3J0IHRvIGZp
bmQgdGhlIHBhdGggdG8gZ2NjIHdpdGggcmVzcGVjdCB0byB0aGUgZW52aXJvbm1lbnQKKyAgICAg
ICAgdmFyaWFibGUgU0RLUk9PVC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoSFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZCk6CisgICAgICAgICogcGFnZS9T
ZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOiBJbml0
aWFsaXplIHNldHRpbmcgbV9sYXlvdXRJbnRlcnZhbCB0byBsYXlvdXRTY2hlZHVsZVRocmVzaG9s
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRMYXlvdXRJbnRlcnZhbCk6IEFkZGVk
LgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdz
OjpsYXlvdXRJbnRlcnZhbCk6IEFkZGVkLgorCiAyMDEzLTEyLTEyICBBbmRyZWFzIEtsaW5nICA8
YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBTdG9wIG5vdCBjYWNoaW5nIEhUVFAg
cmVzb3VyY2VzIHdpdGggIlZhcnkiIGhlYWRlciBpbiByZXNwb25zZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KaW5kZXggZGZiYjk2NzQ0NzI2NjBiYjI5OGZkY2QyNmMwYTQxNzg1NzhjNzczYi4uYjBmNmQ1
Njg5M2RiNGNmOGM2ZDEyOTU2ZDA5ZmExYjVjNGUxNWZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
QEAgLTExNjQsNiArMTE2NCw3IEBAIF9fWk43V2ViQ29yZThTZXR0aW5nczE2c2V0SW1hZ2VzRW5h
YmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldFNjcmlwdEVuYWJsZWRFYgogX19aTjdX
ZWJDb3JlOFNldHRpbmdzMTZzZXRVc2VzUGFnZUNhY2hlRWIKIF9fWk43V2ViQ29yZThTZXR0aW5n
czE3c2V0UGx1Z2luc0VuYWJsZWRFYgorX19aTjdXZWJDb3JlOFNldHRpbmdzMTdzZXRMYXlvdXRJ
bnRlcnZhbEVpCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxOHNldERlZmF1bHRGb250U2l6ZUVpCiBf
X1pON1dlYkNvcmU4U2V0dGluZ3MxOHNldEZpeGVkRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNT
dHJpbmdFMTFVU2NyaXB0Q29kZQogX19aTjdXZWJDb3JlOFNldHRpbmdzMThzZXRNaW5pbXVtRm9u
dFNpemVFaQpAQCAtMjI5NSw3ICsyMjk2LDYgQEAgX19aTjdXZWJDb3JlMjFzZXRTdHJva2VBbmRG
aWxsQ29sb3JFUDlDR0NvbnRleHRQN0NHQ29sb3IKIF9fWk43V2ViQ29yZTIySFRNTFBsdWdJbklt
YWdlRWxlbWVudDI1Y3JlYXRlU2hhZG93SUZyYW1lU3VidHJlZUVSS04zV1RGNlN0cmluZ0UKIF9f
Wk43V2ViQ29yZTIyc3RhcnRPZkVkaXRhYmxlQ29udGVudEVSS05TXzE1VmlzaWJsZVBvc2l0aW9u
RQogX19aTjdXZWJDb3JlMjNhcHBsaWNhdGlvbklzTW9iaWxlTWFpbEV2Ci1fX1pON1dlYkNvcmUy
NGNMYXlvdXRTY2hlZHVsZVRocmVzaG9sZEUKIF9fWk43V2ViQ29yZTI0Y3JlYXRlVGVtcG9yYXJ5
RGlyZWN0b3J5RVA4TlNTdHJpbmcKIF9fWk43V2ViQ29yZTI0cHJldmlvdXNTZW50ZW5jZVBvc2l0
aW9uRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FCiBfX1pON1dlYkNvcmUyNHJlbGVhc2VMaW5lQnJl
YWtJdGVyYXRvckVQTlNfMTdUZXh0QnJlYWtJdGVyYXRvckUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVE
T01PYmplY3QuaAppbmRleCA2YWIxMmU0MTU5MTllZDNkOTU5NTBiZWQ5N2E4YzZlMjVhY2UyNWVj
Li41YTFmM2QxMjFiYTM2YmNiYTMxNDgwMTlhNWMwOTlmNDczMzMxNGJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0FjdGl2ZURPTU9iamVjdC5oCkBAIC01Niw3ICs1Niw4IEBAIHB1YmxpYzoKICAgICAgICAg
SmF2YVNjcmlwdERlYnVnZ2VyUGF1c2VkLAogICAgICAgICBXaWxsRGVmZXJMb2FkaW5nLAogICAg
ICAgICBEb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSwKLSAgICAgICAgUGFnZVdpbGxCZVN1c3Bl
bmRlZAorICAgICAgICBQYWdlV2lsbEJlU3VzcGVuZGVkLAorICAgICAgICBEb2N1bWVudFdpbGxC
ZVBhdXNlZAogICAgIH07CiAgICAgdmlydHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCmluZGV4IGQwZGJiNGNmODcyMWY0MmQwYTUyZmJh
YzkwMTk3ZTg3ZTU0NjYxMDAuLjEyZjA4MjM3YjI0MTZmMjFiZGY4YzRiYjZhMjU3NTUyYjU0YThl
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcApAQCAtMzQ5LDcg
KzM0OSw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVE
b2N1bWVudChjb25zdCBTdHJpbmcmIHR5cGUsIEZyYW1lCiAgICAgaWYgKEltYWdlOjpzdXBwb3J0
c1R5cGUodHlwZSkpCiAgICAgICAgIHJldHVybiBJbWFnZURvY3VtZW50OjpjcmVhdGUoZnJhbWUs
IHVybCk7CiAKLSNpZiBFTkFCTEUoVklERU8pCisjaWYgRU5BQkxFKFZJREVPKSAmJiAhUExBVEZP
Uk0oSU9TKQogICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIHR5cGUgY2FuIGJlIHBsYXllZCBi
eSBvdXIgTWVkaWFQbGF5ZXIsIGlmIHNvIGNyZWF0ZSBhIE1lZGlhRG9jdW1lbnQKICAgICAvLyBL
ZXkgc3lzdGVtIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuCiAgICAgRE9NSW1wbGVtZW50YXRpb25T
dXBwb3J0c1R5cGVDbGllbnQgY2xpZW50KGZyYW1lICYmIGZyYW1lLT5zZXR0aW5ncygpLm5lZWRz
U2l0ZVNwZWNpZmljUXVpcmtzKCksIHVybC5ob3N0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RldmljZU1vdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rldmlj
ZU1vdGlvbkNsaWVudC5oCmluZGV4IDgyMmJmZWVjMzI5MDg3Y2VjYTU5OWZmMTE0MmE5OTAzMjYw
ZWE0MjUuLjc1MzNmNmM2MDhkOTRiODI3NjVmMjBjMDk3OTUzNDI2NGNjNjQzYmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25DbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGV2aWNlTW90aW9uQ2xpZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtMjgsNiArMjgsNyBAQAogI2RlZmluZSBEZXZpY2VNb3Rpb25DbGll
bnRfaAogCiAjaW5jbHVkZSAiRGV2aWNlQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzYsOCArMzcsMTAgQEAgY2xhc3Mg
RGV2aWNlTW90aW9uRGF0YTsKIGNsYXNzIFBhZ2U7CiAKIGNsYXNzIERldmljZU1vdGlvbkNsaWVu
dCA6IHB1YmxpYyBEZXZpY2VDbGllbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERldmlj
ZU1vdGlvbkNsaWVudCk7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+RGV2aWNlTW90aW9uQ2xpZW50
KCkge30KKyAgICBEZXZpY2VNb3Rpb25DbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIH5EZXZpY2VN
b3Rpb25DbGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udHJvbGxlcihEZXZpY2VN
b3Rpb25Db250cm9sbGVyKikgPSAwOwogICAgIHZpcnR1YWwgRGV2aWNlTW90aW9uRGF0YSogbGFz
dE1vdGlvbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGV2aWNlTW90aW9uQ29udHJv
bGxlckRlc3Ryb3llZCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZp
Y2VNb3Rpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25D
b250cm9sbGVyLmNwcAppbmRleCBiNTczNzAxNWQ2OGY0Njk1NGFhNjYzMzk1MjY4YTNlMmU2NDdj
NGNjLi44OWViMDAyNjI4MWQyMjdmZjBiNzVmOWMyNGQyZTNhODBmYTJjZTljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC00Niw2ICs0Niwy
MiBAQCBQYXNzT3duUHRyPERldmljZU1vdGlvbkNvbnRyb2xsZXI+IERldmljZU1vdGlvbkNvbnRy
b2xsZXI6OmNyZWF0ZShEZXZpY2VNb3Rpb25DbAogICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGV2
aWNlTW90aW9uQ29udHJvbGxlcihjbGllbnQpKTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKKy8v
IEZJWE1FOiBXZSBzaG91bGQgbG9vayB0byByZWNvbmNpbGUgdGhlIGlPUyBhbmQgT3BlblNvdXJj
ZSBkaWZmZXJlbmNlcyB3aXRoIHRoaXMgY2xhc3MKKy8vIHNvIHRoYXQgd2UgY2FuIGVpdGhlciBy
ZW1vdmUgdGhlc2UgbWV0aG9kcyBvciByZW1vdmUgdGhlIFBMQVRGT1JNKElPUyktZ3VhcmQuCit2
b2lkIERldmljZU1vdGlvbkNvbnRyb2xsZXI6OnN1c3BlbmRVcGRhdGVzKCkKK3sKKyAgICBpZiAo
bV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zdG9wVXBkYXRpbmcoKTsKK30KKwordm9pZCBE
ZXZpY2VNb3Rpb25Db250cm9sbGVyOjpyZXN1bWVVcGRhdGVzKCkKK3sKKyAgICBpZiAobV9jbGll
bnQgJiYgIW1fbGlzdGVuZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9jbGllbnQtPnN0YXJ0VXBk
YXRpbmcoKTsKK30KKyNlbmRpZgorICAgIAogdm9pZCBEZXZpY2VNb3Rpb25Db250cm9sbGVyOjpk
aWRDaGFuZ2VEZXZpY2VNb3Rpb24oRGV2aWNlTW90aW9uRGF0YSogZGV2aWNlTW90aW9uRGF0YSkK
IHsKICAgICBkaXNwYXRjaERldmljZUV2ZW50KERldmljZU1vdGlvbkV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmRldmljZW1vdGlvbkV2ZW50LCBkZXZpY2VNb3Rpb25EYXRhKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkNvbnRyb2xsZXIuaAppbmRleCAyOWJmOTEzNDE0YThh
ZmYwMTgzOWE2ZGQ0NjU1NDAxZmM3Y2QyMTAxLi42NmQyMjBiOTdhY2NiYjRjMTQzNTJlZDQ1Yzlh
YzcwYWZkODAzMTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9u
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25Db250cm9s
bGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9u
aWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjgsNiArMjgs
NyBAQAogI2RlZmluZSBEZXZpY2VNb3Rpb25Db250cm9sbGVyX2gKIAogI2luY2x1ZGUgIkRldmlj
ZUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0zNSwxMSArMzYsMTkgQEAgY2xhc3MgRGV2aWNlTW90aW9uQ2xpZW50
OwogY2xhc3MgRGV2aWNlTW90aW9uRGF0YTsKIAogY2xhc3MgRGV2aWNlTW90aW9uQ29udHJvbGxl
ciA6IHB1YmxpYyBEZXZpY2VDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShE
ZXZpY2VNb3Rpb25Db250cm9sbGVyKTsKIHB1YmxpYzoKICAgICB+RGV2aWNlTW90aW9uQ29udHJv
bGxlcigpIHsgfTsKIAogICAgIHN0YXRpYyBQYXNzT3duUHRyPERldmljZU1vdGlvbkNvbnRyb2xs
ZXI+IGNyZWF0ZShEZXZpY2VNb3Rpb25DbGllbnQqKTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGxvb2sgdG8gcmVjb25jaWxlIHRoZSBpT1MgYW5kIE9wZW5T
b3VyY2UgZGlmZmVyZW5jZXMgd2l0aCB0aGlzIGNsYXNzCisgICAgLy8gc28gdGhhdCB3ZSBjYW4g
ZWl0aGVyIHJlbW92ZSB0aGVzZSBtZXRob2RzIG9yIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TKS1n
dWFyZC4KKyAgICB2b2lkIHN1c3BlbmRVcGRhdGVzKCk7CisgICAgdm9pZCByZXN1bWVVcGRhdGVz
KCk7CisjZW5kaWYKKwogICAgIHZvaWQgZGlkQ2hhbmdlRGV2aWNlTW90aW9uKERldmljZU1vdGlv
bkRhdGEqKTsKICAgICBEZXZpY2VNb3Rpb25DbGllbnQqIGRldmljZU1vdGlvbkNsaWVudCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25DbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oCmluZGV4IDg1
ZDYyZWMwZDdiZDQ2YmY5YTQ2MmM5YjUyZWNhOWE0ODExZWViMTcuLjViNWQxNzY4YjA4ZWUyYzIy
MmZkZjhmZGE5ZDdmMjIzZjBjZGQ5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
ZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VP
cmllbnRhdGlvbkNsaWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAyMDEw
LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAs
IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKICAqIENvcHlyaWdodCAoQykgMjAxMiBT
YW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dApAQCAtMjgsNiArMjgsNyBAQAogI2RlZmluZSBEZXZpY2VPcmllbnRhdGlvbkNsaWVudF9oCiAK
ICNpbmNsdWRlICJEZXZpY2VDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNiw4ICszNywxMCBAQCBjbGFzcyBEZXZpY2VP
cmllbnRhdGlvbkRhdGE7CiBjbGFzcyBQYWdlOwogCiBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNs
aWVudCA6IHB1YmxpYyBEZXZpY2VDbGllbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERl
dmljZU9yaWVudGF0aW9uQ2xpZW50KTsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5EZXZpY2VPcmll
bnRhdGlvbkNsaWVudCgpIHt9CisgICAgRGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSB7IH0KKyAg
ICB2aXJ0dWFsIH5EZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBzZXRDb250cm9sbGVyKERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciopID0gMDsKICAgICB2
aXJ0dWFsIERldmljZU9yaWVudGF0aW9uRGF0YSogbGFzdE9yaWVudGF0aW9uKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQo
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXIuY3BwCmluZGV4IDk1MjY3NjY1MjE0ZjJhNmNkNjgwMGMyYWUxMWRjYjZhY2Y3ZmNjMTUu
LmZmN2IwMDRkZDdkNWI1ZDU0ZWQxMzYwNzJkYjgyMzIwNjg0YmIzZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0zOCw4
ICszOCwxNiBAQCBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OkRldmljZU9yaWVudGF0aW9u
Q29udHJvbGxlcihQYWdlKiBwYWdlLCBEZXZpY2VPcmllbgogICAgIDogRGV2aWNlQ29udHJvbGxl
cihjbGllbnQpCiAgICAgLCBtX3BhZ2UocGFnZSkKIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAg
Ly8gRklYTUU6IFRlbXBvcmFyaWx5IGF2b2lkIGFzc2VydGluZyB3aGlsZSBPcGVuU291cmNlIGlz
IHVzaW5nIGEgZGlmZmVyZW50IGRlc2lnbi4KKyAgICAvLyBXZSBzaG91bGQgcmVjb25jaWxlIHRo
ZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIE9wZW5Tb3VyY2UgYW5kIGlPUyBzbyB0aGF0IHdlIGNhbgor
ICAgIC8vIHJlbW92ZSB0aGlzIGNvZGUgcGF0aC4KKyAgICBpZiAobV9jbGllbnQpCisgICAgICAg
IGRldmljZU9yaWVudGF0aW9uQ2xpZW50KCktPnNldENvbnRyb2xsZXIodGhpcyk7CisjZWxzZQog
ICAgIEFTU0VSVChtX2NsaWVudCk7CiAgICAgZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKS0+c2V0
Q29udHJvbGxlcih0aGlzKTsKKyNlbmRpZgogfQogCiBQYXNzT3duUHRyPERldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlcj4gRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpjcmVhdGUoUGFnZSog
cGFnZSwgRGV2aWNlT3JpZW50YXRpb25DbGllbnQqIGNsaWVudCkKQEAgLTU4LDYgKzY2LDIxIEBA
IERldmljZU9yaWVudGF0aW9uQ2xpZW50KiBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OmRl
dmljZU9yaWVudGF0aW9uQ2xpZW50KCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGV2aWNlT3Jp
ZW50YXRpb25DbGllbnQqPihtX2NsaWVudCk7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCisvLyBG
SVhNRTogV2Ugc2hvdWxkIGxvb2sgdG8gcmVjb25jaWxlIHRoZSBpT1MgYW5kIE9wZW5Tb3VyY2Ug
ZGlmZmVyZW5jZXMgd2l0aCB0aGlzIGNsYXNzCisvLyBzbyB0aGF0IHdlIGNhbiBlaXRoZXIgcmVt
b3ZlIHRoZXNlIG1ldGhvZHMgb3IgcmVtb3ZlIHRoZSBQTEFURk9STShJT1MpLWd1YXJkLgordm9p
ZCBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OnN1c3BlbmRVcGRhdGVzKCkKK3sKKyAgICBp
ZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zdG9wVXBkYXRpbmcoKTsKK30KKwordm9p
ZCBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OnJlc3VtZVVwZGF0ZXMoKQoreworICAgIGlm
IChtX2NsaWVudCAmJiAhbV9saXN0ZW5lcnMuaXNFbXB0eSgpKQorICAgICAgICBtX2NsaWVudC0+
c3RhcnRVcGRhdGluZygpOworfQorI2Vsc2UKIGJvb2wgRGV2aWNlT3JpZW50YXRpb25Db250cm9s
bGVyOjpoYXNMYXN0RGF0YSgpCiB7CiAgICAgcmV0dXJuIGRldmljZU9yaWVudGF0aW9uQ2xpZW50
KCktPmxhc3RPcmllbnRhdGlvbigpOwpAQCAtNjcsNiArOTAsNyBAQCBQYXNzUmVmUHRyPEV2ZW50
PiBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OmdldExhc3RFdmVudCgpCiB7CiAgICAgcmV0
dXJuIERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZGV2aWNlb3Jp
ZW50YXRpb25FdmVudCwgZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKS0+bGFzdE9yaWVudGF0aW9u
KCkpOwogfQorI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogY29uc3QgY2hhciogRGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyOjpzdXBwbGVtZW50TmFtZSgpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmgKaW5kZXggMTljMDI4NGFlMjM1
OTM1OTMwMGM5YmZmZWIzZjU4YjVhNTNiNWZmNi4uNDc4M2Y1Y2NlYTkwYTJmYzliODY4ZTYxYTJm
ZDljZjE4NjIwNjI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVu
dGF0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXIuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiRGV2aWNlQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgorI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM2LDYgKzM3LDcg
QEAgY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnQ7CiBjbGFzcyBEZXZpY2VPcmllbnRhdGlv
bkRhdGE7CiAKIGNsYXNzIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciA6IHB1YmxpYyBEZXZp
Y2VDb250cm9sbGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXIpOwogcHVibGljOgogICAgIH5EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIo
KSB7IH07CiAKQEAgLTQ0LDggKzQ2LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENoYW5nZURl
dmljZU9yaWVudGF0aW9uKERldmljZU9yaWVudGF0aW9uRGF0YSopOwogICAgIERldmljZU9yaWVu
dGF0aW9uQ2xpZW50KiBkZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpOwogCisjaWYgUExBVEZPUk0o
SU9TKQorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbG9vayB0byByZWNvbmNpbGUgdGhlIGlPUyBh
bmQgT3BlblNvdXJjZSBkaWZmZXJlbmNlcyB3aXRoIHRoaXMgY2xhc3MKKyAgICAvLyBzbyB0aGF0
IHdlIGNhbiBlaXRoZXIgcmVtb3ZlIHRoZXNlIG1ldGhvZHMgb3IgcmVtb3ZlIHRoZSBQTEFURk9S
TShJT1MpLWd1YXJkLgorICAgIHZvaWQgc3VzcGVuZFVwZGF0ZXMoKTsKKyAgICB2b2lkIHJlc3Vt
ZVVwZGF0ZXMoKTsKKyNlbHNlCiAgICAgdmlydHVhbCBib29sIGhhc0xhc3REYXRhKCkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEV2ZW50PiBnZXRMYXN0RXZlbnQoKSBPVkVSUklE
RTsKKyNlbmRpZgogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAg
ICAgc3RhdGljIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciogZnJvbShQYWdlKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkRhdGEuY3BwCmluZGV4IDZlNzMwMmZk
N2Y4YmJiNTI4OWI3ZjZlNmU1NTYxNTQ5MThiZjZhYTQuLmQ2YTVmMmNmNDczYjljYThhZmFkODg2
NTI5ZTMwNDYwNjZiNmVkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VP
cmllbnRhdGlvbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRh
dGlvbkRhdGEuY3BwCkBAIC0zMywyNCArMzMsNTIgQEAgUGFzc1JlZlB0cjxEZXZpY2VPcmllbnRh
dGlvbkRhdGE+IERldmljZU9yaWVudGF0aW9uRGF0YTo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IERldmljZU9yaWVudGF0aW9uRGF0YSk7CiB9CiAKKyNpZiBQTEFURk9STShJT1Mp
CisvLyBGSVhNRTogV2Ugc2hvdWxkIHJlY29uY2lsZSB0aGUgaU9TIGFuZCBPcGVuU291cmNlIGRp
ZmZlcmVuY2VzLgorUGFzc1JlZlB0cjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IERldmljZU9yaWVu
dGF0aW9uRGF0YTo6Y3JlYXRlKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJv
b2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91
YmxlIGdhbW1hLCBib29sIGNhblByb3ZpZGVDb21wYXNzSGVhZGluZywgZG91YmxlIGNvbXBhc3NI
ZWFkaW5nLCBib29sIGNhblByb3ZpZGVDb21wYXNzQWNjdXJhY3ksIGRvdWJsZSBjb21wYXNzQWNj
dXJhY3kpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZXZpY2VPcmllbnRhdGlvbkRhdGEo
Y2FuUHJvdmlkZUFscGhhLCBhbHBoYSwgY2FuUHJvdmlkZUJldGEsIGJldGEsIGNhblByb3ZpZGVH
YW1tYSwgZ2FtbWEsIGNhblByb3ZpZGVDb21wYXNzSGVhZGluZywgY29tcGFzc0hlYWRpbmcsIGNh
blByb3ZpZGVDb21wYXNzQWNjdXJhY3ksIGNvbXBhc3NBY2N1cmFjeSkpOworfQorI2Vsc2UKIFBh
c3NSZWZQdHI8RGV2aWNlT3JpZW50YXRpb25EYXRhPiBEZXZpY2VPcmllbnRhdGlvbkRhdGE6OmNy
ZWF0ZShib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVC
ZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSwgYm9v
bCBjYW5Qcm92aWRlQWJzb2x1dGUsIGJvb2wgYWJzb2x1dGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBEZXZpY2VPcmllbnRhdGlvbkRhdGEoY2FuUHJvdmlkZUFscGhhLCBhbHBoYSwgY2Fu
UHJvdmlkZUJldGEsIGJldGEsIGNhblByb3ZpZGVHYW1tYSwgZ2FtbWEsIGNhblByb3ZpZGVBYnNv
bHV0ZSwgYWJzb2x1dGUpKTsKIH0KKyNlbmRpZgogCiAKIERldmljZU9yaWVudGF0aW9uRGF0YTo6
RGV2aWNlT3JpZW50YXRpb25EYXRhKCkKICAgICA6IG1fY2FuUHJvdmlkZUFscGhhKGZhbHNlKQog
ICAgICwgbV9jYW5Qcm92aWRlQmV0YShmYWxzZSkKICAgICAsIG1fY2FuUHJvdmlkZUdhbW1hKGZh
bHNlKQorI2lmICFQTEFURk9STShJT1MpCiAgICAgLCBtX2NhblByb3ZpZGVBYnNvbHV0ZShmYWxz
ZSkKKyNlbmRpZgogICAgICwgbV9hbHBoYSgwKQogICAgICwgbV9iZXRhKDApCiAgICAgLCBtX2dh
bW1hKDApCisjaWYgUExBVEZPUk0oSU9TKQorICAgICwgbV9jYW5Qcm92aWRlQ29tcGFzc0hlYWRp
bmcoZmFsc2UpCisgICAgLCBtX2NhblByb3ZpZGVDb21wYXNzQWNjdXJhY3koZmFsc2UpCisjZWxz
ZQogICAgICwgbV9hYnNvbHV0ZShmYWxzZSkKKyNlbmRpZgogewogfQogCisjaWYgUExBVEZPUk0o
SU9TKQorRGV2aWNlT3JpZW50YXRpb25EYXRhOjpEZXZpY2VPcmllbnRhdGlvbkRhdGEoYm9vbCBj
YW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91Ymxl
IGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEsIGJvb2wgY2FuUHJvdmlk
ZUNvbXBhc3NIZWFkaW5nLCBkb3VibGUgY29tcGFzc0hlYWRpbmcsIGJvb2wgY2FuUHJvdmlkZUNv
bXBhc3NBY2N1cmFjeSwgZG91YmxlIGNvbXBhc3NBY2N1cmFjeSkKKyAgICA6IG1fY2FuUHJvdmlk
ZUFscGhhKGNhblByb3ZpZGVBbHBoYSkKKyAgICAsIG1fY2FuUHJvdmlkZUJldGEoY2FuUHJvdmlk
ZUJldGEpCisgICAgLCBtX2NhblByb3ZpZGVHYW1tYShjYW5Qcm92aWRlR2FtbWEpCisgICAgLCBt
X2FscGhhKGFscGhhKQorICAgICwgbV9iZXRhKGJldGEpCisgICAgLCBtX2dhbW1hKGdhbW1hKQor
ICAgICwgbV9jYW5Qcm92aWRlQ29tcGFzc0hlYWRpbmcoY2FuUHJvdmlkZUNvbXBhc3NIZWFkaW5n
KQorICAgICwgbV9jYW5Qcm92aWRlQ29tcGFzc0FjY3VyYWN5KGNhblByb3ZpZGVDb21wYXNzQWNj
dXJhY3kpCisgICAgLCBtX2NvbXBhc3NIZWFkaW5nKGNvbXBhc3NIZWFkaW5nKQorICAgICwgbV9j
b21wYXNzQWNjdXJhY3koY29tcGFzc0FjY3VyYWN5KQorI2Vsc2UKIERldmljZU9yaWVudGF0aW9u
RGF0YTo6RGV2aWNlT3JpZW50YXRpb25EYXRhKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUg
YWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVH
YW1tYSwgZG91YmxlIGdhbW1hLCBib29sIGNhblByb3ZpZGVBYnNvbHV0ZSwgYm9vbCBhYnNvbHV0
ZSkKICAgICA6IG1fY2FuUHJvdmlkZUFscGhhKGNhblByb3ZpZGVBbHBoYSkKICAgICAsIG1fY2Fu
UHJvdmlkZUJldGEoY2FuUHJvdmlkZUJldGEpCkBAIC02MCw2ICs4OCw3IEBAIERldmljZU9yaWVu
dGF0aW9uRGF0YTo6RGV2aWNlT3JpZW50YXRpb25EYXRhKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBk
b3VibGUgYWxwaGEsCiAgICAgLCBtX2JldGEoYmV0YSkKICAgICAsIG1fZ2FtbWEoZ2FtbWEpCiAg
ICAgLCBtX2Fic29sdXRlKGFic29sdXRlKQorI2VuZGlmCiB7CiB9CiAKQEAgLTc4LDEwICsxMDcs
MTIgQEAgZG91YmxlIERldmljZU9yaWVudGF0aW9uRGF0YTo6Z2FtbWEoKSBjb25zdAogICAgIHJl
dHVybiBtX2dhbW1hOwogfQogCisjaWYgIVBMQVRGT1JNKElPUykKIGJvb2wgRGV2aWNlT3JpZW50
YXRpb25EYXRhOjphYnNvbHV0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYWJzb2x1dGU7CiB9
CisjZW5kaWYKIAogYm9vbCBEZXZpY2VPcmllbnRhdGlvbkRhdGE6OmNhblByb3ZpZGVBbHBoYSgp
IGNvbnN0CiB7CkBAIC05OCw5ICsxMjksMzMgQEAgYm9vbCBEZXZpY2VPcmllbnRhdGlvbkRhdGE6
OmNhblByb3ZpZGVHYW1tYSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY2FuUHJvdmlkZUdhbW1hOwog
fQogCisjaWYgUExBVEZPUk0oSU9TKQorZG91YmxlIERldmljZU9yaWVudGF0aW9uRGF0YTo6Y29t
cGFzc0hlYWRpbmcoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbXBhc3NIZWFkaW5nOworfQor
Citkb3VibGUgRGV2aWNlT3JpZW50YXRpb25EYXRhOjpjb21wYXNzQWNjdXJhY3koKSBjb25zdAor
eworICAgIHJldHVybiBtX2NvbXBhc3NBY2N1cmFjeTsKK30KKworYm9vbCBEZXZpY2VPcmllbnRh
dGlvbkRhdGE6OmNhblByb3ZpZGVDb21wYXNzSGVhZGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fY2FuUHJvdmlkZUNvbXBhc3NIZWFkaW5nOworfQorCitib29sIERldmljZU9yaWVudGF0aW9u
RGF0YTo6Y2FuUHJvdmlkZUNvbXBhc3NBY2N1cmFjeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
Y2FuUHJvdmlkZUNvbXBhc3NBY2N1cmFjeTsKK30KKyNlbmRpZgorCisjaWYgIVBMQVRGT1JNKElP
UykKIGJvb2wgRGV2aWNlT3JpZW50YXRpb25EYXRhOjpjYW5Qcm92aWRlQWJzb2x1dGUoKSBjb25z
dAogewogICAgIHJldHVybiBtX2NhblByb3ZpZGVBYnNvbHV0ZTsKIH0KKyNlbmRpZgogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNl
T3JpZW50YXRpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25E
YXRhLmgKaW5kZXggMWRmOWI2NThmYWI4OWY4ZTFhNGU3YWFiZmQyZGM3ZTkzOWUwNjUwNy4uZmFj
ZjkxNzA5NGU4NzQyMGJiNTdmMzA5ODM2ZWMyMmYwMGU1YjcxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EZXZpY2VPcmllbnRhdGlvbkRhdGEuaApAQCAtMzQsNyArMzQsMTEgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgRGV2aWNlT3JpZW50YXRpb25EYXRhIDogcHVibGljIFJlZkNvdW50
ZWQ8RGV2aWNlT3JpZW50YXRpb25EYXRhPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RGV2aWNlT3JpZW50YXRpb25EYXRhPiBjcmVhdGUoKTsKKyNpZiBQTEFURk9STShJT1MpCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RGV2aWNlT3JpZW50YXRpb25EYXRhPiBjcmVhdGUoYm9vbCBj
YW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91Ymxl
IGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEsIGJvb2wgY2FuUHJvdmlk
ZUNvbXBhc3NIZWFkaW5nLCBkb3VibGUgY29tcGFzc0hlYWRpbmcsIGJvb2wgY2FuUHJvdmlkZUNv
bXBhc3NBY2N1cmFjeSwgZG91YmxlIGNvbXBhc3NBY2N1cmFjeSk7CisjZWxzZQogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPERldmljZU9yaWVudGF0aW9uRGF0YT4gY3JlYXRlKGJvb2wgY2FuUHJvdmlk
ZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBi
b29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hLCBib29sIGNhblByb3ZpZGVBYnNvbHV0
ZSA9IGZhbHNlLCBib29sIGFic29sdXRlID0gZmFsc2UpOworI2VuZGlmCiAKICAgICBkb3VibGUg
YWxwaGEoKSBjb25zdDsKICAgICBkb3VibGUgYmV0YSgpIGNvbnN0OwpAQCAtNDUsMTggKzQ5LDM5
IEBAIHB1YmxpYzoKICAgICBib29sIGNhblByb3ZpZGVHYW1tYSgpIGNvbnN0OwogICAgIGJvb2wg
Y2FuUHJvdmlkZUFic29sdXRlKCkgY29uc3Q7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgZG91
YmxlIGNvbXBhc3NIZWFkaW5nKCkgY29uc3Q7CisgICAgZG91YmxlIGNvbXBhc3NBY2N1cmFjeSgp
IGNvbnN0OworICAgIGJvb2wgY2FuUHJvdmlkZUNvbXBhc3NIZWFkaW5nKCkgY29uc3Q7CisgICAg
Ym9vbCBjYW5Qcm92aWRlQ29tcGFzc0FjY3VyYWN5KCkgY29uc3Q7CisjZW5kaWYKKwogcHJpdmF0
ZToKICAgICBEZXZpY2VPcmllbnRhdGlvbkRhdGEoKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAg
RGV2aWNlT3JpZW50YXRpb25EYXRhKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEs
IGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwg
ZG91YmxlIGdhbW1hLCBib29sIGNhblByb3ZpZGVDb21wYXNzSGVhZGluZywgZG91YmxlIGNvbXBh
c3NIZWFkaW5nLCBib29sIGNhblByb3ZpZGVDb21wYXNzQWNjdXJhY3ksIGRvdWJsZSBjb21wYXNz
QWNjdXJhY3kpOworI2Vsc2UKICAgICBEZXZpY2VPcmllbnRhdGlvbkRhdGEoYm9vbCBjYW5Qcm92
aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEs
IGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEsIGJvb2wgY2FuUHJvdmlkZUFic29s
dXRlLCBib29sIGFic29sdXRlKTsKKyNlbmRpZgogCiAgICAgYm9vbCBtX2NhblByb3ZpZGVBbHBo
YTsKICAgICBib29sIG1fY2FuUHJvdmlkZUJldGE7CiAgICAgYm9vbCBtX2NhblByb3ZpZGVHYW1t
YTsKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIGJvb2wgbV9jYW5Qcm92aWRlQWJzb2x1dGU7Cisj
ZW5kaWYKICAgICBkb3VibGUgbV9hbHBoYTsKICAgICBkb3VibGUgbV9iZXRhOwogICAgIGRvdWJs
ZSBtX2dhbW1hOworCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGJvb2wgbV9jYW5Qcm92aWRlQ29t
cGFzc0hlYWRpbmc7CisgICAgYm9vbCBtX2NhblByb3ZpZGVDb21wYXNzQWNjdXJhY3k7CisgICAg
ZG91YmxlIG1fY29tcGFzc0hlYWRpbmc7CisgICAgZG91YmxlIG1fY29tcGFzc0FjY3VyYWN5Owor
I2Vsc2UKICAgICBib29sIG1fYWJzb2x1dGU7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlv
bkV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50Lmlk
bAppbmRleCA1MWYzZjk4YzgwOWU2YzUwZDc2NTRhNTNhYTg3NWMzODNhN2EyMjVmLi4zYjBkMTE0
OTViNjc3NGU2NWQyOTRmMGFhZGY1MmI0NmQ1YjJmMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuaWRsCkBAIC0yOSw2ICsyOSwxOCBAQAogICAgIFtD
dXN0b21dIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgYWxwaGE7CiAgICAgW0N1c3RvbV0gcmVh
ZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBiZXRhOwogICAgIFtDdXN0b21dIHJlYWRvbmx5IGF0dHJp
YnV0ZSBkb3VibGUgZ2FtbWE7CisjaWYgV1RGX1BMQVRGT1JNX0lPUworICAgIFtDdXN0b21dIHJl
YWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgd2Via2l0Q29tcGFzc0hlYWRpbmc7CisgICAgW0N1c3Rv
bV0gcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSB3ZWJraXRDb21wYXNzQWNjdXJhY3k7CisgICAg
W0N1c3RvbV0gdm9pZCBpbml0RGV2aWNlT3JpZW50YXRpb25FdmVudChbRGVmYXVsdD1VbmRlZmlu
ZWRdIG9wdGlvbmFsIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBib29sZWFuIGJ1
YmJsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbRGVm
YXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGJvb2xlYW4gY2FuY2VsYWJsZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0
aW9uYWwgZG91YmxlIGFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBkb3VibGUgYmV0YSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5l
ZF0gb3B0aW9uYWwgZG91YmxlIGdhbW1hLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBkb3VibGUgY29tcGFz
c0hlYWRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
RGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGRvdWJsZSBjb21wYXNzQWNjdXJhY3kpOworI2Vs
c2UKICAgICBbQ3VzdG9tXSByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBhYnNvbHV0ZTsKICAg
ICBbQ3VzdG9tXSB2b2lkIGluaXREZXZpY2VPcmllbnRhdGlvbkV2ZW50KFtEZWZhdWx0PVVuZGVm
aW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUsIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBib29sZWFu
IGJ1YmJsZXMsIApAQCAtMzcsNSArNDksNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBkb3VibGUgYmV0
YSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbRGVmYXVs
dD1VbmRlZmluZWRdIG9wdGlvbmFsIGRvdWJsZSBnYW1tYSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgYm9v
bGVhbiBhYnNvbHV0ZSk7CisjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4
IGU5NGYyNzMwZGM1YTc4ZWIzMGU0MjBhM2E0ZWEyM2RmNDc2Y2ZlYzMuLjQ2YjY2OGJlODRhMmI1
Y2M5ZDM4NjQzYzNjNDIyYzEzMjg4OTVjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAt
MTcyLDYgKzE3MiwyMyBAQAogI2luY2x1ZGUgIlRvdWNoTGlzdC5oIgogI2VuZGlmCiAKKyNpZiBQ
TEFURk9STShJT1MpCisjaW5jbHVkZSAiQ1NTRm9udFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiRGV2
aWNlTW90aW9uQ2xpZW50SU9TLmgiCisjaW5jbHVkZSAiRGV2aWNlTW90aW9uQ29udHJvbGxlci5o
IgorI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50SU9TLmgiCisjaW5jbHVkZSAiRGV2
aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKKyNp
bmNsdWRlICJOYXZpZ2F0b3IuaCIKKyNpbmNsdWRlICJOYXZpZ2F0b3JHZW9sb2NhdGlvbi5oIgor
I2luY2x1ZGUgIldLQ29udGVudE9ic2VydmF0aW9uLmgiCisjaW5jbHVkZSAiV2ViQ29yZVN5c3Rl
bUludGVyZmFjZS5oIgorI2VuZGlmCisKKyNpZiBFTkFCTEUoSU9TX0dFU1RVUkVfRVZFTlRTKQor
I2luY2x1ZGUgIkdlc3R1cmVFdmVudC5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoTUFUSE1MKQog
I2luY2x1ZGUgIk1hdGhNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJNYXRoTUxFbGVtZW50RmFjdG9y
eS5oIgpAQCAtMjE0LDExICsyMzEsNiBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBz
dGF0aWMgY29uc3QgdW5zaWduZWQgY01heFdyaXRlUmVjdXJzaW9uRGVwdGggPSAyMTsKIAotLy8g
VGhpcyBhbW91bnQgb2YgdGltZSBtdXN0IGhhdmUgZWxhcHNlZCBiZWZvcmUgd2Ugd2lsbCBldmVu
IGNvbnNpZGVyIHNjaGVkdWxpbmcgYSBsYXlvdXQgd2l0aG91dCBhIGRlbGF5LgotLy8gRklYTUU6
IEZvciBmYXN0ZXIgbWFjaGluZXMgdGhpcyB2YWx1ZSBjYW4gcmVhbGx5IGJlIGxvd2VyZWQgdG8g
MjAwLiAgMjUwIGlzIGFkZXF1YXRlLCBidXQgYSBsaXR0bGUgaGlnaAotLy8gZm9yIGR1YWwgRzVz
LiA6KQotc3RhdGljIGNvbnN0IGludCBjTGF5b3V0U2NoZWR1bGVUaHJlc2hvbGQgPSAyNTA7Ci0K
IC8vIERPTSBMZXZlbCAyIHNheXMgKGxldHRlcnMgYWRkZWQpOgogLy8KIC8vIGEpIE5hbWUgc3Rh
cnQgY2hhcmFjdGVycyBtdXN0IGhhdmUgb25lIG9mIHRoZSBjYXRlZ29yaWVzIExsLCBMdSwgTG8s
IEx0LCBObC4KQEAgLTM3OCw5ICszOTAsMTQgQEAgYm9vbCBUZXh0QXV0b1NpemluZ1RyYWl0czo6
aXNEZWxldGVkVmFsdWUoY29uc3QgVGV4dEF1dG9TaXppbmdLZXkmIHZhbHVlKQogfQogI2VuZGlm
CiAKLURvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNp
Z25lZCBkb2N1bWVudENsYXNzZXMpCitEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzLCBib29sIGlzU3ludGhlc2l6
ZWQpCiAgICAgOiBDb250YWluZXJOb2RlKG51bGxwdHIsIENyZWF0ZURvY3VtZW50KQogICAgICwg
VHJlZVNjb3BlKHRoaXMpCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgUExBVEZPUk0oSU9T
KQorICAgICwgbV9oYW5kbGluZ1RvdWNoRXZlbnQoZmFsc2UpCisgICAgLCBtX3RvdWNoRXZlbnRS
ZWdpb25zRGlydHkoZmFsc2UpCisgICAgLCBtX3RvdWNoRXZlbnRzQ2hhbmdlZFRpbWVyKHRoaXMs
ICZEb2N1bWVudDo6dG91Y2hFdmVudHNDaGFuZ2VkVGltZXJGaXJlZCkKKyNlbmRpZgogICAgICwg
bV9zdHlsZVJlc29sdmVyVGhyb3dhd2F5VGltZXIodGhpcywgJkRvY3VtZW50OjpzdHlsZVJlc29s
dmVyVGhyb3dhd2F5VGltZXJGaXJlZCwgdGltZUJlZm9yZVRocm93aW5nQXdheVN0eWxlUmVzb2x2
ZXJBZnRlckxhc3RVc2VJblNlY29uZHMpCiAgICAgLCBtX2RpZENhbGN1bGF0ZVN0eWxlUmVzb2x2
ZXIoZmFsc2UpCiAgICAgLCBtX2hhc05vZGVzV2l0aFBsYWNlaG9sZGVyU3R5bGUoZmFsc2UpCkBA
IC00MzYsNiArNDUzLDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3Qg
VVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3NlcykKICAgICAsIG1faW5QYWdlQ2FjaGUo
ZmFsc2UpCiAgICAgLCBtX2FjY2Vzc0tleU1hcFZhbGlkKGZhbHNlKQogICAgICwgbV9kb2N1bWVu
dENsYXNzZXMoZG9jdW1lbnRDbGFzc2VzKQorICAgICwgbV9pc1N5bnRoZXNpemVkKGlzU3ludGhl
c2l6ZWQpCiAgICAgLCBtX2lzVmlld1NvdXJjZShmYWxzZSkKICAgICAsIG1fc2F3RWxlbWVudHNJ
bktub3duTmFtZXNwYWNlcyhmYWxzZSkKICAgICAsIG1faXNTcmNkb2NEb2N1bWVudChmYWxzZSkK
QEAgLTQ1OCw2ICs0NzYsMTUgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29u
c3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3NlcykKICAgICAsIG1fd3JpdGVSZWN1
cnNpb25EZXB0aCgwKQogICAgICwgbV93aGVlbEV2ZW50SGFuZGxlckNvdW50KDApCiAgICAgLCBt
X2xhc3RIYW5kbGVkVXNlckdlc3R1cmVUaW1lc3RhbXAoMCkKKyNpZiBQTEFURk9STShJT1MpCisj
aWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKKyAgICAsIG1fZGV2aWNlTW90aW9uQ2xpZW50
KERldmljZU1vdGlvbkNsaWVudElPUzo6Y3JlYXRlKCkpCisgICAgLCBtX2RldmljZU1vdGlvbkNv
bnRyb2xsZXIoRGV2aWNlTW90aW9uQ29udHJvbGxlcjo6Y3JlYXRlKG1fZGV2aWNlTW90aW9uQ2xp
ZW50LmdldCgpKSkKKyAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnQoRGV2aWNlT3JpZW50
YXRpb25DbGllbnRJT1M6OmNyZWF0ZSgpKQorICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXIoRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpjcmVhdGUoZnJhbWUgPyBmcmFtZS0+
cGFnZSgpIDogbnVsbHB0ciwgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudC5nZXQoKSkpCisjZW5k
aWYKKyAgICAsIG1faXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nQWxsb3dlZCh0cnVlKQorI2VuZGlm
CiAgICAgLCBtX3BlbmRpbmdUYXNrc1RpbWVyKHRoaXMsICZEb2N1bWVudDo6cGVuZGluZ1Rhc2tz
VGltZXJGaXJlZCkKICAgICAsIG1fc2NoZWR1bGVkVGFza3NBcmVTdXNwZW5kZWQoZmFsc2UpCiAg
ICAgLCBtX3Zpc3VhbFVwZGF0ZXNBbGxvd2VkKHRydWUpCkBAIC01MzUsNiArNTYyLDExIEBAIERv
Y3VtZW50Ojp+RG9jdW1lbnQoKQogICAgIEFTU0VSVCghbV9zdHlsZVJlY2FsY1RpbWVyLmlzQWN0
aXZlKCkpOwogICAgIEFTU0VSVCghbV9wYXJlbnRUcmVlU2NvcGUpOwogCisjaWYgRU5BQkxFKERF
VklDRV9PUklFTlRBVElPTikgJiYgUExBVEZPUk0oSU9TKQorICAgIG1fZGV2aWNlTW90aW9uQ2xp
ZW50LT5kZXZpY2VNb3Rpb25Db250cm9sbGVyRGVzdHJveWVkKCk7CisgICAgbV9kZXZpY2VPcmll
bnRhdGlvbkNsaWVudC0+ZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyRGVzdHJveWVkKCk7Cisj
ZW5kaWYKKyAgICAKICNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKICAgICBpZiAobV90ZW1w
bGF0ZURvY3VtZW50KQogICAgICAgICBtX3RlbXBsYXRlRG9jdW1lbnQtPnNldFRlbXBsYXRlRG9j
dW1lbnRIb3N0KG51bGxwdHIpOyAvLyBiYWxhbmNlZCBpbiB0ZW1wbGF0ZURvY3VtZW50KCkuCkBA
IC0xOTc5LDYgKzIwMTEsMTcgQEAgdm9pZCBEb2N1bWVudDo6ZGlkQmVjb21lQ3VycmVudERvY3Vt
ZW50SW5GcmFtZSgpCiAgICAgICAgIHBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkubmVlZFRvdWNo
RXZlbnRzKHRydWUpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgLy8gRW5zdXJl
IHRoYXQgZG9jdW1lbnQgc2NoZWR1bGVkIHRhc2sgc3RhdGUgbWF0Y2hlcyBmcmFtZSB0aW1lciBz
dGF0ZS4gSXQgY2FuIGJlIG91dCBvZiBzeW5jCisgICAgLy8gaWYgdGltZXJzIHN0YXRlIGNoYW5n
ZWQgd2hpbGUgdGhlIGRvY3VtZW50IHdhcyBub3QgaW4gdGhlIGZyYW1lIChwb3NzaWJseSBpbiBw
YWdlIGNhY2hlLAorICAgIC8vIG9yIHNpbXBseSBuZXdseSBjcmVhdGVkKS4KKyAgICAvLyBGSVhN
RTogSG93IGRvZXMgdGhpcyBpbnRlcmFjdCB3aXRoIGNyb3NzLXBsYXRmb3JtIGNvZGUgYmVsb3c/
CisgICAgaWYgKG1fZnJhbWUtPnRpbWVyc1BhdXNlZCgpKQorICAgICAgICBzdXNwZW5kU2NoZWR1
bGVkVGFza3MoQWN0aXZlRE9NT2JqZWN0OjpEb2N1bWVudFdpbGxCZVBhdXNlZCk7CisgICAgZWxz
ZQorICAgICAgICByZXN1bWVTY2hlZHVsZWRUYXNrcyhBY3RpdmVET01PYmplY3Q6OkRvY3VtZW50
V2lsbEJlUGF1c2VkKTsKKyNlbmRpZgorCiAgICAgaWYgKG1fZnJhbWUtPmFjdGl2ZURPTU9iamVj
dHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKCkpIHsKICAgICAgICAgc3VzcGVuZFNjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgICAgICBtX2ZyYW1lLT5hbmltYXRpb24o
KS5zdXNwZW5kQW5pbWF0aW9uc0ZvckRvY3VtZW50KHRoaXMpOwpAQCAtMjAzNSw2ICsyMDc4LDEw
IEBAIHZvaWQgRG9jdW1lbnQ6OmRlc3Ryb3lSZW5kZXJUcmVlKCkKIAogdm9pZCBEb2N1bWVudDo6
cHJlcGFyZUZvckRlc3RydWN0aW9uKCkKIHsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQ
TEFURk9STShJT1MpCisgICAgY2xlYXJUb3VjaEV2ZW50TGlzdGVuZXJzKCk7CisjZW5kaWYKKwog
ICAgIGRpc2Nvbm5lY3REZXNjZW5kYW50RnJhbWVzKCk7CiAgICAgaWYgKG1fZG9tV2luZG93ICYm
IG1fZnJhbWUpCiAgICAgICAgIG1fZG9tV2luZG93LT53aWxsRGV0YWNoRG9jdW1lbnRGcm9tRnJh
bWUoKTsKQEAgLTIwNzksMTggKzIxMjYsNTQgQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlQWxsRXZl
bnRMaXN0ZW5lcnMoKQogCiAgICAgaWYgKG1fZG9tV2luZG93KQogICAgICAgICBtX2RvbVdpbmRv
dy0+cmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAm
JiBQTEFURk9STShJT1MpCisgICAgY2xlYXJUb3VjaEV2ZW50TGlzdGVuZXJzKCk7CisjZW5kaWYK
ICAgICBmb3IgKE5vZGUqIG5vZGUgPSBmaXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBOb2RlVHJh
dmVyc2FsOjpuZXh0KG5vZGUpKQogICAgICAgICBub2RlLT5yZW1vdmVBbGxFdmVudExpc3RlbmVy
cygpOwogfQogCit2b2lkIERvY3VtZW50OjpwbGF0Zm9ybVN1c3BlbmRPclN0b3BBY3RpdmVET01P
YmplY3RzKCkKK3sKKyNpZiBQTEFURk9STShJT1MpCisjaWYgRU5BQkxFKERFVklDRV9PUklFTlRB
VElPTikKKyAgICBpZiAobV9kZXZpY2VNb3Rpb25Db250cm9sbGVyKQorICAgICAgICBtX2Rldmlj
ZU1vdGlvbkNvbnRyb2xsZXItPnN1c3BlbmRVcGRhdGVzKCk7CisgICAgaWYgKG1fZGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyKQorICAgICAgICBtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxl
ci0+c3VzcGVuZFVwZGF0ZXMoKTsKKyNlbmRpZgorCisgICAgaWYgKFdlYlRocmVhZENvdW50T2ZP
YnNlcnZlZENvbnRlbnRNb2RpZmllcnMoKSA+IDApIHsKKyAgICAgICAgRnJhbWUqIGZyYW1lID0g
dGhpcy0+ZnJhbWUoKTsKKyAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZSA/IGZyYW1lLT5w
YWdlKCkgOiBudWxscHRyKQorICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuY2xl
YXJDb250ZW50Q2hhbmdlT2JzZXJ2ZXJzKGZyYW1lKTsKKyAgICB9CisjZW5kaWYKK30KKwogdm9p
ZCBEb2N1bWVudDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0OjpSZWFz
b25Gb3JTdXNwZW5zaW9uIHdoeSkKIHsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdXNw
ZW5kQWN0aXZlRE9NT2JqZWN0cyh3aHkpOworICAgIHBsYXRmb3JtU3VzcGVuZE9yU3RvcEFjdGl2
ZURPTU9iamVjdHMoKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0
cyhBY3RpdmVET01PYmplY3Q6OlJlYXNvbkZvclN1c3BlbnNpb24gd2h5KQogewogICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHMod2h5KTsKKworI2lmIEVO
QUJMRShERVZJQ0VfT1JJRU5UQVRJT04pICYmIFBMQVRGT1JNKElPUykKKyAgICBpZiAobV9kZXZp
Y2VNb3Rpb25Db250cm9sbGVyKQorICAgICAgICBtX2RldmljZU1vdGlvbkNvbnRyb2xsZXItPnJl
c3VtZVVwZGF0ZXMoKTsKKyAgICBpZiAobV9kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIpCisg
ICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLT5yZXN1bWVVcGRhdGVzKCk7Cisj
ZW5kaWYKKyAgICAvLyBGSVhNRTogRm9yIGlPUywgZG8gd2UgbmVlZCB0byBhZGQgY29udGVudCBj
aGFuZ2Ugb2JzZXJ2ZXJzIHRoYXQgd2VyZSByZW1vdmVkIGluIERvY3VtZW50OjpzdXNwZW5kQWN0
aXZlRE9NT2JqZWN0cygpPworfQorCit2b2lkIERvY3VtZW50OjpzdG9wQWN0aXZlRE9NT2JqZWN0
cygpCit7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3RvcEFjdGl2ZURPTU9iamVjdHMo
KTsKKyAgICBwbGF0Zm9ybVN1c3BlbmRPclN0b3BBY3RpdmVET01PYmplY3RzKCk7CiB9CiAKIHZv
aWQgRG9jdW1lbnQ6OmNsZWFyQVhPYmplY3RDYWNoZSgpCkBAIC0yMzY4LDcgKzI0NTEsNyBAQCB2
b2lkIERvY3VtZW50OjppbXBsaWNpdENsb3NlKCkKICAgICAvLyBmaXJlcy4gVGhpcyB3aWxsIGlt
cHJvdmUgb25sb2FkIHNjb3JlcywgYW5kIG90aGVyIGJyb3dzZXJzIGRvIGl0LgogICAgIC8vIElm
IHRoZXkgd2FubmEgY2hlYXQsIHdlIGNhbiB0b28uIC1kd2gKIAotICAgIGlmIChmcmFtZSgpLT5u
YXZpZ2F0aW9uU2NoZWR1bGVyKCkubG9jYXRpb25DaGFuZ2VQZW5kaW5nKCkgJiYgZWxhcHNlZFRp
bWUoKSA8IGNMYXlvdXRTY2hlZHVsZVRocmVzaG9sZCkgeworICAgIGlmIChmcmFtZSgpLT5uYXZp
Z2F0aW9uU2NoZWR1bGVyKCkubG9jYXRpb25DaGFuZ2VQZW5kaW5nKCkgJiYgZWxhcHNlZFRpbWUo
KSA8IHNldHRpbmdzKCktPmxheW91dEludGVydmFsKCkpIHsKICAgICAgICAgLy8gSnVzdCBiYWls
IG91dC4gQmVmb3JlIG9yIGR1cmluZyB0aGUgb25sb2FkIHdlIHdlcmUgc2hpZnRlZCB0byBhbm90
aGVyIHBhZ2UuCiAgICAgICAgIC8vIFRoZSBvbGQgaS1CZW5jaCBzdWl0ZSBkb2VzIHRoaXMuIFdo
ZW4gdGhpcyBoYXBwZW5zIGRvbid0IGJvdGhlciBwYWludGluZyBvciBsYXlpbmcgb3V0LiAgICAg
ICAgCiAgICAgICAgIG1fcHJvY2Vzc2luZ0xvYWRFdmVudCA9IGZhbHNlOwpAQCAtMjQ1NCwxMCAr
MjUzNywxMCBAQCBpbnQgRG9jdW1lbnQ6Om1pbmltdW1MYXlvdXREZWxheSgpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIAogICAgIGludCBlbGFwc2VkID0gZWxhcHNlZFRpbWUoKTsKLSAgICBtX292
ZXJNaW5pbXVtTGF5b3V0VGhyZXNob2xkID0gZWxhcHNlZCA+IGNMYXlvdXRTY2hlZHVsZVRocmVz
aG9sZDsKLSAgICAKKyAgICBtX292ZXJNaW5pbXVtTGF5b3V0VGhyZXNob2xkID0gZWxhcHNlZCA+
IHNldHRpbmdzKCktPmxheW91dEludGVydmFsKCk7CisKICAgICAvLyBXZSdsbCB3YW50IHRvIHNj
aGVkdWxlIHRoZSB0aW1lciB0byBmaXJlIGF0IHRoZSBtaW5pbXVtIGxheW91dCB0aHJlc2hvbGQu
Ci0gICAgcmV0dXJuIHN0ZDo6bWF4KDAsIGNMYXlvdXRTY2hlZHVsZVRocmVzaG9sZCAtIGVsYXBz
ZWQpOworICAgIHJldHVybiBzdGQ6Om1heCgwLCBzZXR0aW5ncygpLT5sYXlvdXRJbnRlcnZhbCgp
IC0gZWxhcHNlZCk7CiB9CiAKIGludCBEb2N1bWVudDo6ZWxhcHNlZFRpbWUoKSBjb25zdApAQCAt
Mjg3MCw2ICsyOTUzLDE0IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NWaWV3cG9ydChjb25zdCBT
dHJpbmcmIGZlYXR1cmVzLCBWaWV3cG9ydEFyZ3VtZW50czo6VHlwZSBvCiAgICAgbV92aWV3cG9y
dEFyZ3VtZW50cyA9IFZpZXdwb3J0QXJndW1lbnRzKG9yaWdpbik7CiAgICAgcHJvY2Vzc0FyZ3Vt
ZW50cyhmZWF0dXJlcywgKHZvaWQqKSZtX3ZpZXdwb3J0QXJndW1lbnRzLCAmc2V0Vmlld3BvcnRG
ZWF0dXJlKTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBGSVhNRTogPHJkYXI6Ly9wcm9i
bGVtLzg5NTU5NTk+IEludmVzdGlnYXRlIG1vdmluZyB0byBUb1QgV2ViS2l0J3MgZXh0ZW5kZWQg
Vmlld3BvcnQgSW1wbGVtZW50YXRpb24KKyAgICAvLyBNb3ZpbmcgdG8gVG9UJ3MgaW1wbGVtZW50
YXRpb24gd291bGQgbWVhbiBjYWxsaW5nIGZpbmRDb25maWd1cmF0aW9uRm9yVmlld3BvcnREYXRh
LCB3aGljaCBkb2VzCisgICAgLy8gYm91bmRzIGNoZWNraW5nIGFuZCBkZXRlcm1pbmluZyBjb25j
cmV0ZSB2YWx1ZXMgZm9yIFZhbHVlQXV0byB3aGljaCB3ZSBhbHJlYWR5IGRvIGluIFVJS2l0Lgor
ICAgIC8vIFRvIG1haW50YWluIG9sZCBiZWhhdmlvciwgd2UganVzdCBuZWVkIHRvIHVwZGF0ZSBh
IGZldyB2YWx1ZXMsIGxlYXZpbmcgQXV0bydzIGZvciBVSUtpdC4KKyAgICBmaW5hbGl6ZVZpZXdw
b3J0QXJndW1lbnRzKG1fdmlld3BvcnRBcmd1bWVudHMpOworI2VuZGlmCisKICAgICB1cGRhdGVW
aWV3cG9ydEFyZ3VtZW50cygpOwogfQogCkBAIC0yODgwLDkgKzI5NzEsMzMgQEAgdm9pZCBEb2N1
bWVudDo6dXBkYXRlVmlld3BvcnRBcmd1bWVudHMoKQogICAgICAgICBtX2RpZERpc3BhdGNoVmll
d3BvcnRQcm9wZXJ0aWVzQ2hhbmdlZCA9IHRydWU7CiAjZW5kaWYKICAgICAgICAgcGFnZSgpLT5j
aHJvbWUoKS5kaXNwYXRjaFZpZXdwb3J0UHJvcGVydGllc0RpZENoYW5nZShtX3ZpZXdwb3J0QXJn
dW1lbnRzKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIHBhZ2UoKS0+Y2hyb21lKCkuZGlk
UmVjZWl2ZURvY1R5cGUoZnJhbWUoKSk7CisjZW5kaWYKICAgICB9CiB9CiAKKyNpZiBQTEFURk9S
TShJT1MpCisvLyBGSVhNRTogRmluZCBhIGJldHRlciBwbGFjZSBmb3IgdGhpcyBmdW5jdGlvbmFs
aXR5Lgordm9pZCBzZXRQYXJzZXJGZWF0dXJlKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJp
bmcmIHZhbHVlLCBEb2N1bWVudCogZG9jdW1lbnQsIHZvaWQqKQoreworICAgIGlmIChrZXkgPT0g
InRlbGVwaG9uZSIgJiYgZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJubyIpKQorICAgICAgICBk
b2N1bWVudC0+c2V0SXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nQWxsb3dlZChmYWxzZSk7Cit9CisK
K3ZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NGb3JtYXREZXRlY3Rpb24oY29uc3QgU3RyaW5nJiBmZWF0
dXJlcykKK3sKKyAgICBBU1NFUlQoIWZlYXR1cmVzLmlzTnVsbCgpKTsKKyAgICBwcm9jZXNzQXJn
dW1lbnRzKGZlYXR1cmVzLCBudWxscHRyLCAmc2V0UGFyc2VyRmVhdHVyZSk7Cit9CisKK3ZvaWQg
RG9jdW1lbnQ6OnByb2Nlc3NXZWJBcHBPcmllbnRhdGlvbnMoKQoreworICAgIGlmIChQYWdlKiBw
YWdlID0gdGhpcy0+cGFnZSgpKQorICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS53ZWJB
cHBPcmllbnRhdGlvbnNVcGRhdGVkKCk7Cit9CisjZW5kaWYKKwogdm9pZCBEb2N1bWVudDo6cHJv
Y2Vzc1JlZmVycmVyUG9saWN5KGNvbnN0IFN0cmluZyYgcG9saWN5KQogewogICAgIEFTU0VSVCgh
cG9saWN5LmlzTnVsbCgpKTsKQEAgLTQ0MDYsNiArNDUyMSwyNSBAQCB2b2lkIERvY3VtZW50Ojpz
dHlsZVJlc29sdmVyVGhyb3dhd2F5VGltZXJGaXJlZChEZWZlcnJhYmxlT25lU2hvdFRpbWVyPERv
Y3VtZW50PgogICAgIGNsZWFyU3R5bGVSZXNvbHZlcigpOwogfQogCisjaWYgUExBVEZPUk0oSU9T
KQorLy8gRklYTUU6IEZpbmQgYSBiZXR0ZXIgcGxhY2UgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eS4K
K2Jvb2wgRG9jdW1lbnQ6OmlzVGVsZXBob25lTnVtYmVyUGFyc2luZ0VuYWJsZWQoKSBjb25zdAor
eworICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IHRoaXMtPnNldHRpbmdzKCk7CisgICAgcmV0dXJu
IHNldHRpbmdzICYmIHNldHRpbmdzLT50ZWxlcGhvbmVOdW1iZXJQYXJzaW5nRW5hYmxlZCgpICYm
IG1faXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nQWxsb3dlZDsKK30KKwordm9pZCBEb2N1bWVudDo6
c2V0SXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nQWxsb3dlZChib29sIGlzVGVsZXBob25lTnVtYmVy
UGFyc2luZ0FsbG93ZWQpCit7CisgICAgbV9pc1RlbGVwaG9uZU51bWJlclBhcnNpbmdBbGxvd2Vk
ID0gaXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nQWxsb3dlZDsKK30KKworYm9vbCBEb2N1bWVudDo6
aXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nQWxsb3dlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
aXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nQWxsb3dlZDsKK30KKyNlbmRpZgorCiBQYXNzUmVmUHRy
PFhQYXRoRXhwcmVzc2lvbj4gRG9jdW1lbnQ6OmNyZWF0ZUV4cHJlc3Npb24oY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFhQYXRoTlNSZXNvbHZlciogcmVzb2x2ZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSYgZWMp
CkBAIC00NTE0LDYgKzQ2NDgsMTcgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4
dCgpCiAgICAgLy8gbG9hZGluZyBVUkwgd2l0aCBhIGZyZXNoIGNvbnRlbnQgc2VjdXJpdHkgcG9s
aWN5LgogICAgIG1fY29va2llVVJMID0gbV91cmw7CiAgICAgZW5mb3JjZVNhbmRib3hGbGFncyht
X2ZyYW1lLT5sb2FkZXIoKS5lZmZlY3RpdmVTYW5kYm94RmxhZ3MoKSk7CisKKyNpZiBQTEFURk9S
TShJT1MpCisgICAgLy8gT24gaU9TIHdlIGRpc3BsYXkgYXR0YWNobWVudHMgaW5saW5lIHJlZ2Fy
ZGxlc3Mgb2Ygd2hldGhlciB0aGUgcmVzcG9uc2UgaW5jbHVkZXMKKyAgICAvLyB0aGUgSFRUUCBo
ZWFkZXIgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQiLiBTbywgd2UgZW5mb3JjZSBh
IHVuaXF1ZQorICAgIC8vIHNlY3VyaXR5IG9yaWdpbiBmb3Igc3VjaCBkb2N1bWVudHMuIEFzIGFu
IG9wdGltaXphdGlvbiwgd2UgZG9uJ3QgbmVlZCB0byBwYXJzZQorICAgIC8vIHRoZSByZXNwb25k
ZSBoZWFkZXIgKGkuZS4gY2FsbCBSZXNvdXJjZVJlc3BvbnNlOjppc0F0dGFjaG1lbnQoKSkgZm9y
IGEgc3ludGhlc2l6ZWQKKyAgICAvLyBkb2N1bWVudCBiZWNhdXNlIHN1Y2ggZG9jdW1lbnRzIGNh
bm5vdCBiZSBhbiBhdHRhY2htZW50LgorICAgIGlmICghbV9pc1N5bnRoZXNpemVkICYmIG1fZnJh
bWUtPmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkuaXNBdHRhY2ht
ZW50KCkpCisgICAgICAgIGVuZm9yY2VTYW5kYm94RmxhZ3MoU2FuZGJveE9yaWdpbik7CisjZW5k
aWYKKwogICAgIHNldFNlY3VyaXR5T3JpZ2luKGlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pID8g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpIDogU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSht
X3VybCkpOwogICAgIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmNyZWF0ZSh0aGlzKSk7CiAKQEAgLTQ4MjYsNiArNDk3MSwxMyBAQCB2b2lkIERvY3VtZW50
OjpwZW5kaW5nVGFza3NUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50PiopCiAKIHZvaWQgRG9jdW1l
bnQ6OnN1c3BlbmRTY2hlZHVsZWRUYXNrcyhBY3RpdmVET01PYmplY3Q6OlJlYXNvbkZvclN1c3Bl
bnNpb24gcmVhc29uKQogeworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAobV9zY2hlZHVsZWRU
YXNrc0FyZVN1c3BlbmRlZCkgeworICAgICAgICBBU1NFUlQocmVhc29uRm9yU3VzcGVuZGluZ0Fj
dGl2ZURPTU9iamVjdHMoKSA9PSBBY3RpdmVET01PYmplY3Q6OkRvY3VtZW50V2lsbEJlUGF1c2Vk
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgQVNTRVJUKCFtX3NjaGVk
dWxlZFRhc2tzQXJlU3VzcGVuZGVkKTsKIAogICAgIHN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXJDYWxsYmFja3MoKTsKQEAgLTQ5NjgsNiArNTEyMCwxOCBAQCBNZWRpYUNhblN0YXJ0
TGlzdGVuZXIqIERvY3VtZW50Ojp0YWtlQW55TWVkaWFDYW5TdGFydExpc3RlbmVyKCkKICAgICBy
ZXR1cm4gbGlzdGVuZXI7CiB9CiAKKyNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKSAmJiBQ
TEFURk9STShJT1MpCitEZXZpY2VNb3Rpb25Db250cm9sbGVyKiBEb2N1bWVudDo6ZGV2aWNlTW90
aW9uQ29udHJvbGxlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGV2aWNlTW90aW9uQ29udHJv
bGxlci5nZXQoKTsKK30KKworRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiBEb2N1bWVudDo6
ZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuZ2V0KCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKIGJvb2wgRG9jdW1lbnQ6OmZ1bGxTY3JlZW5Jc0FsbG93ZWRGb3JFbGVt
ZW50KEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CkBAIC01NTA0LDYgKzU2NjgsNyBAQCB2b2lk
IERvY3VtZW50OjpjbGVhclNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcigpCiB9CiAjZW5kaWYK
IAorI2lmICFQTEFURk9STShJT1MpCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIFBhc3NSZWZQ
dHI8VG91Y2g+IERvY3VtZW50OjpjcmVhdGVUb3VjaChET01XaW5kb3cqIHdpbmRvdywgRXZlbnRU
YXJnZXQqIHRhcmdldCwgaW50IGlkZW50aWZpZXIsIGludCBwYWdlWCwgaW50IHBhZ2VZLCBpbnQg
c2NyZWVuWCwgaW50IHNjcmVlblksIGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSwgZmxvYXQgcm90
YXRpb25BbmdsZSwgZmxvYXQgZm9yY2UsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdAogewpAQCAtNTUx
NSw2ICs1NjgwLDcgQEAgUGFzc1JlZlB0cjxUb3VjaD4gRG9jdW1lbnQ6OmNyZWF0ZVRvdWNoKERP
TVdpbmRvdyogd2luZG93LCBFdmVudFRhcmdldCogdGFyZ2V0LAogICAgIHJldHVybiBUb3VjaDo6
Y3JlYXRlKGZyYW1lLCB0YXJnZXQsIGlkZW50aWZpZXIsIHNjcmVlblgsIHNjcmVlblksIHBhZ2VY
LCBwYWdlWSwgcmFkaXVzWCwgcmFkaXVzWSwgcm90YXRpb25BbmdsZSwgZm9yY2UpOwogfQogI2Vu
ZGlmCisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKIAogc3RhdGljIHZvaWQgd2hlZWxFdmVudEhh
bmRsZXJDb3VudENoYW5nZWQoRG9jdW1lbnQqIGRvY3VtZW50KQogewpAQCAtNTY4Myw3ICs1ODQ5
LDExIEBAIHZvaWQgRG9jdW1lbnQ6OmFkanVzdEZsb2F0UXVhZHNGb3JTY3JvbGxBbmRBYnNvbHV0
ZVpvb21BbmRGcmFtZVNjYWxlKFZlY3RvcjxGbG9hCiAgICAgaWYgKGZyYW1lKCkpCiAgICAgICAg
IGludmVyc2VGcmFtZVNjYWxlID0gMSAvIGZyYW1lKCktPmZyYW1lU2NhbGVGYWN0b3IoKTsKIAor
I2lmIFBMQVRGT1JNKElPUykKKyAgICBMYXlvdXRSZWN0IHZpc2libGVDb250ZW50UmVjdCA9IHZp
ZXcoKS0+YWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCk7CisjZWxzZQogICAgIExheW91dFJlY3Qg
dmlzaWJsZUNvbnRlbnRSZWN0ID0gdmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoKTsKKyNlbmRp
ZgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcXVhZHMuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgcXVhZHNbaV0ubW92ZSgtdmlzaWJsZUNvbnRlbnRSZWN0LngoKSwgLXZpc2libGVDb250ZW50
UmVjdC55KCkpOwogICAgICAgICBpZiAoem9vbSAhPSAxKQpAQCAtNTcwMyw3ICs1ODczLDExIEBA
IHZvaWQgRG9jdW1lbnQ6OmFkanVzdEZsb2F0UmVjdEZvclNjcm9sbEFuZEFic29sdXRlWm9vbUFu
ZEZyYW1lU2NhbGUoRmxvYXRSZWN0JiByCiAgICAgaWYgKGZyYW1lKCkpCiAgICAgICAgIGludmVy
c2VGcmFtZVNjYWxlID0gMSAvIGZyYW1lKCktPmZyYW1lU2NhbGVGYWN0b3IoKTsKIAorI2lmIFBM
QVRGT1JNKElPUykKKyAgICBMYXlvdXRSZWN0IHZpc2libGVDb250ZW50UmVjdCA9IHZpZXcoKS0+
YWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCk7CisjZWxzZQogICAgIExheW91dFJlY3QgdmlzaWJs
ZUNvbnRlbnRSZWN0ID0gdmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoKTsKKyNlbmRpZgogICAg
IHJlY3QubW92ZSgtdmlzaWJsZUNvbnRlbnRSZWN0LngoKSwgLXZpc2libGVDb250ZW50UmVjdC55
KCkpOwogICAgIGlmICh6b29tICE9IDEpCiAgICAgICAgIHJlY3Quc2NhbGUoMSAvIHpvb20pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAppbmRleCA2ZDgwYmM3NzVlOTA5NjdmMDU4NTBkYTRjNzQ4YTEyMzNi
Y2YyYjA5Li4zZGRkMGRiODcxNjdjNTIzMzZhYmVjNWQ0ZmI1YjMzYjVmMjNiODRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaApAQCAtMTYzLDYgKzE2Myw5IEBAIHN0cnVjdCBBbm5vdGF0ZWRSZWdpb25W
YWx1ZTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpZiBQTEFURk9STShJ
T1MpCisjaW5jbHVkZSAiRG9jdW1lbnRJT1NGb3J3YXJkLmgiCisjZW5kaWYKIGNsYXNzIFRvdWNo
OwogY2xhc3MgVG91Y2hMaXN0OwogI2VuZGlmCkBAIC0xODYsNiArMTg5LDEzIEBAIGNsYXNzIEZv
bnRMb2FkZXI7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKKyNpZiBQTEFURk9STShJ
T1MpCitjbGFzcyBEZXZpY2VNb3Rpb25DbGllbnQ7CitjbGFzcyBEZXZpY2VNb3Rpb25Db250cm9s
bGVyOworY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnQ7CitjbGFzcyBEZXZpY2VPcmllbnRh
dGlvbkNvbnRyb2xsZXI7CisjZW5kaWYKKwogI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5H
KQogc3RydWN0IFRleHRBdXRvU2l6aW5nSGFzaDsKIGNsYXNzIFRleHRBdXRvU2l6aW5nS2V5OwpA
QCAtMzE0LDYgKzMyNCwxMSBAQCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUih0b3VjaGVuZCk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih0
b3VjaGNhbmNlbCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoSU9TX0dFU1RVUkVfRVZFTlRTKQorICAg
IERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZ2VzdHVyZXN0YXJ0KTsKKyAgICBERUZJ
TkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGdlc3R1cmVjaGFuZ2UpOworICAgIERFRklORV9B
VFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZ2VzdHVyZWVuZCk7CisjZW5kaWYKICNpZiBFTkFCTEUo
RlVMTFNDUkVFTl9BUEkpCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJr
aXRmdWxsc2NyZWVuY2hhbmdlKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KHdlYmtpdGZ1bGxzY3JlZW5lcnJvcik7CkBAIC00NDEsNiArNDU2LDcgQEAgcHVibGljOgogICAg
IFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGRvY3VtZW50TmFtZWRJdGVtcyhjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUpOwogCiAgICAgLy8gT3RoZXIgbWV0aG9kcyAobm90IHBhcnQgb2YgRE9N
KQorICAgIGJvb2wgaXNTeW50aGVzaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTeW50aGVzaXpl
ZDsgfQogICAgIGJvb2wgaXNIVE1MRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50
Q2xhc3NlcyAmIEhUTUxEb2N1bWVudENsYXNzOyB9CiAgICAgYm9vbCBpc1hIVE1MRG9jdW1lbnQo
KSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50Q2xhc3NlcyAmIFhIVE1MRG9jdW1lbnRDbGFzczsg
fQogICAgIGJvb2wgaXNJbWFnZURvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudENs
YXNzZXMgJiBJbWFnZURvY3VtZW50Q2xhc3M7IH0KQEAgLTU0Nyw2ICs1NjMsNyBAQCBwdWJsaWM6
CiAgICAgLy8gT3ZlcnJpZGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBtZXRob2RzIHRvIGRvIGFk
ZGl0aW9uYWwgd29yawogICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhB
Y3RpdmVET01PYmplY3Q6OlJlYXNvbkZvclN1c3BlbnNpb24pIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9y
U3VzcGVuc2lvbikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHN0b3BBY3RpdmVET01PYmpl
Y3RzKCkgT1ZFUlJJREU7CiAKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZW5kZXJWaWV3OyB9CiAKQEAgLTc4MCw2ICs3OTcsMTQgQEAgcHVibGljOgogICAg
ICAqIEBwYXJhbSBjb250ZW50IFRoZSBoZWFkZXIgdmFsdWUgKHZhbHVlIG9mIHRoZSBtZXRhIHRh
ZydzICJjb250ZW50IiBhdHRyaWJ1dGUpCiAgICAgICovCiAgICAgdm9pZCBwcm9jZXNzSHR0cEVx
dWl2KGNvbnN0IFN0cmluZyYgZXF1aXYsIGNvbnN0IFN0cmluZyYgY29udGVudCk7CisKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgdm9pZCBwcm9jZXNzRm9ybWF0RGV0ZWN0aW9uKGNvbnN0IFN0cmlu
ZyYpOworCisgICAgLy8gQ2FsbGVkIHdoZW4gPG1ldGEgbmFtZT0iYXBwbGUtbW9iaWxlLXdlYi1h
cHAtb3JpZW50YXRpb25zIj4gY2hhbmdlcy4KKyAgICB2b2lkIHByb2Nlc3NXZWJBcHBPcmllbnRh
dGlvbnMoKTsKKyNlbmRpZgorICAgIAogICAgIHZvaWQgcHJvY2Vzc1ZpZXdwb3J0KGNvbnN0IFN0
cmluZyYgZmVhdHVyZXMsIFZpZXdwb3J0QXJndW1lbnRzOjpUeXBlIG9yaWdpbik7CiAgICAgdm9p
ZCB1cGRhdGVWaWV3cG9ydEFyZ3VtZW50cygpOwogICAgIHZvaWQgcHJvY2Vzc1JlZmVycmVyUG9s
aWN5KGNvbnN0IFN0cmluZyYgcG9saWN5KTsKQEAgLTEwODQsNyArMTEwOSwxNiBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc0RlbGF5aW5nTG9hZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9sb2FkRXZl
bnREZWxheUNvdW50OyB9CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIFBhc3NSZWZQ
dHI8VG91Y2g+IGNyZWF0ZVRvdWNoKERPTVdpbmRvdyosIEV2ZW50VGFyZ2V0KiwgaW50IGlkZW50
aWZpZXIsIGludCBwYWdlWCwgaW50IHBhZ2VZLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGlu
dCByYWRpdXNYLCBpbnQgcmFkaXVzWSwgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxvYXQgZm9yY2Us
IEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAiRG9j
dW1lbnRJT1MuaCIKKyNlbHNlCisgICAgUGFzc1JlZlB0cjxUb3VjaD4gY3JlYXRlVG91Y2goRE9N
V2luZG93KiwgRXZlbnRUYXJnZXQqLCBpbnQgaWRlbnRpZmllciwgaW50IHBhZ2VYLCBpbnQgcGFn
ZVksIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHJhZGl1c1gsIGludCByYWRpdXNZLCBm
bG9hdCByb3RhdGlvbkFuZ2xlLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CisjZW5kaWYgLy8gUExB
VEZPUk0oSU9TKQorI2VuZGlmCisKKyNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKSAmJiBQ
TEFURk9STShJT1MpCisgICAgRGV2aWNlTW90aW9uQ29udHJvbGxlciogZGV2aWNlTW90aW9uQ29u
dHJvbGxlcigpIGNvbnN0OworICAgIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciogZGV2aWNl
T3JpZW50YXRpb25Db250cm9sbGVyKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJf
VElNSU5HKQpAQCAtMTE4NCw3ICsxMjE4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VmlzdWFs
VXBkYXRlc0FsbG93ZWRCeUNsaWVudChib29sKTsKIAogcHJvdGVjdGVkOgotICAgIERvY3VtZW50
KEZyYW1lKiwgY29uc3QgVVJMJiwgdW5zaWduZWQgPSBEZWZhdWx0RG9jdW1lbnRDbGFzcyk7Cisg
ICAgRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwmLCB1bnNpZ25lZCA9IERlZmF1bHREb2N1bWVu
dENsYXNzLCBib29sIGlzU3ludGhlc2l6ZWQgPSBmYWxzZSk7CiAKICAgICB2b2lkIGNsZWFyWE1M
VmVyc2lvbigpIHsgbV94bWxWZXJzaW9uID0gU3RyaW5nKCk7IH0KIApAQCAtMTQ2MSw2ICsxNDk1
LDggQEAgcHJpdmF0ZToKIAogICAgIERvY3VtZW50Q2xhc3NGbGFncyBtX2RvY3VtZW50Q2xhc3Nl
czsKIAorICAgIGJvb2wgbV9pc1N5bnRoZXNpemVkOworCiAgICAgYm9vbCBtX2lzVmlld1NvdXJj
ZTsKICAgICBib29sIG1fc2F3RWxlbWVudHNJbktub3duTmFtZXNwYWNlczsKICAgICBib29sIG1f
aXNTcmNkb2NEb2N1bWVudDsKQEAgLTE1MTcsNiArMTU1MywzNCBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI+IG1fc2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKSAmJiBQTEFU
Rk9STShJT1MpCisgICAgLy8gRklYTUU6IFVzZSBzdGQ6OnVuaXF1ZV9wdHIgaW5zdGVhZCBvZiBP
d25QdHIgYWZ0ZXIgd2UgdXBzdHJlYW0gRGV2aWNlTW90aW9uQ2xpZW50SU9TLntoLCBtbX0uCisg
ICAgT3duUHRyPERldmljZU1vdGlvbkNsaWVudD4gbV9kZXZpY2VNb3Rpb25DbGllbnQ7CisgICAg
T3duUHRyPERldmljZU1vdGlvbkNvbnRyb2xsZXI+IG1fZGV2aWNlTW90aW9uQ29udHJvbGxlcjsK
KyAgICBPd25QdHI8RGV2aWNlT3JpZW50YXRpb25DbGllbnQ+IG1fZGV2aWNlT3JpZW50YXRpb25D
bGllbnQ7CisgICAgT3duUHRyPERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcj4gbV9kZXZpY2VP
cmllbnRhdGlvbkNvbnRyb2xsZXI7CisjZW5kaWYKKworLy8gRklYTUU6IEZpbmQgYSBiZXR0ZXIg
cGxhY2UgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eS4KKyNpZiBQTEFURk9STShJT1MpCitwdWJsaWM6
CisKKyAgICAvLyBUaGVzZSBmdW5jdGlvbnMgcHJvdmlkZSBhIHR3by1sZXZlbCBzZXR0aW5nOgor
ICAgIC8vICAgIC0gQSB1c2VyLXNldHRhYmxlIHdhbnRzVGVsZXBob25lTnVtYmVyUGFyc2luZyAo
YXQgdGhlIFBhZ2UgLyBXZWJWaWV3IGxldmVsKQorICAgIC8vICAgIC0gQSByZWFkLW9ubHkgdGVs
ZXBob25lTnVtYmVyUGFyc2luZ0FsbG93ZWQgd2hpY2ggaXMgc2V0IGJ5IHRoZQorICAgIC8vICAg
ICAgZG9jdW1lbnQgaWYgaXQgaGFzIHRoZSBhcHByb3ByaWF0ZSBtZXRhIHRhZy4KKyAgICAvLyAg
ICAtIGlzVGVsZXBob25lTnVtYmVyUGFyc2luZ0VuYWJsZWQoKSA9PSBpc1RlbGVwaG9uZU51bWJl
clBhcnNpbmdBbGxvd2VkKCkgJiYgcGFnZSgpLT5zZXR0aW5ncygpLT5pc1RlbGVwaG9uZU51bWJl
clBhcnNpbmdFbmFibGVkKCkKKworICAgIGJvb2wgaXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nQWxs
b3dlZCgpIGNvbnN0OworICAgIGJvb2wgaXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nRW5hYmxlZCgp
IGNvbnN0OworCitwcml2YXRlOgorICAgIGZyaWVuZCB2b2lkIHNldFBhcnNlckZlYXR1cmUoY29u
c3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUsIERvY3VtZW50Kiwgdm9pZCogdXNl
ckRhdGEpOworICAgIHZvaWQgc2V0SXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nQWxsb3dlZChib29s
KTsKKworICAgIGJvb2wgbV9pc1RlbGVwaG9uZU51bWJlclBhcnNpbmdBbGxvd2VkOworI2VuZGlm
CisKICAgICBUaW1lcjxEb2N1bWVudD4gbV9wZW5kaW5nVGFza3NUaW1lcjsKICAgICBWZWN0b3I8
T3duUHRyPFRhc2s+PiBtX3BlbmRpbmdUYXNrczsKIApAQCAtMTUzNSw2ICsxNTk5LDggQEAgcHJp
dmF0ZToKICAgICBPd25QdHI8VGV4dEF1dG9zaXplcj4gbV90ZXh0QXV0b3NpemVyOwogI2VuZGlm
CiAKKyAgICB2b2lkIHBsYXRmb3JtU3VzcGVuZE9yU3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKKwog
ICAgIGJvb2wgbV9zY2hlZHVsZWRUYXNrc0FyZVN1c3BlbmRlZDsKICAgICAKICAgICBib29sIG1f
dmlzdWFsVXBkYXRlc0FsbG93ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAppbmRleCBlZTY0YTFk
MDQ1MzkyOGUzMDBlNzk3Nzg2MTAzYzdlOGI5ODY0Y2RlLi41NjQyOTMzZjhkODczYTg1NjNkYWEy
Mjk2MDQ2NzU2MDA4MGVjOTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKQEAgLTMyMSw2ICsz
MjEsOSBAQAogI2VuZGlmCiAKICNpZiBkZWZpbmVkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICYmIEVO
QUJMRV9UT1VDSF9FVkVOVFMKKyNpZiBkZWZpbmVkKFdURl9QTEFURk9STV9JT1MpICYmIFdURl9Q
TEFURk9STV9JT1MKKyNpbmNsdWRlICJEb2N1bWVudElPUy5pZGwiCisjZWxzZQogICAgIFtSZXR1
cm5OZXdPYmplY3QsIFJhaXNlc0V4Y2VwdGlvbl0gVG91Y2ggY3JlYXRlVG91Y2goW0RlZmF1bHQ9
VW5kZWZpbmVkXSBvcHRpb25hbCBET01XaW5kb3cgd2luZG93LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9w
dGlvbmFsIEV2ZW50VGFyZ2V0IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBsb25n
IGlkZW50aWZpZXIsCkBAIC0zMzMsNiArMzM2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25h
bCBmbG9hdCB3ZWJraXRSb3RhdGlvbkFuZ2xlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGZs
b2F0IHdlYmtpdEZvcmNlKTsKICAgICBbUmV0dXJuTmV3T2JqZWN0LCBDdXN0b20sIFJhaXNlc0V4
Y2VwdGlvbl0gVG91Y2hMaXN0IGNyZWF0ZVRvdWNoTGlzdCgpOworI2VuZGlmIC8vIGRlZmluZWQo
V1RGX1BMQVRGT1JNX0lPUykgJiYgV1RGX1BMQVRGT1JNX0lPUwogI2VuZGlmCiAKICNpZiBkZWZp
bmVkKExBTkdVQUdFX0NQUCkgJiYgTEFOR1VBR0VfQ1BQCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRNYXJrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1h
cmtlci5oCmluZGV4IDNmYWExOTAzOTJhOGJlYWQ3MDFkYzQ1ZDkxN2VkOTQxNGQ4MjZiNDAuLmIz
YWM1NTkwMGZhNmU2MGU1NDFhMjNlMjI5YTFlMDBmYWMwZmVkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE1hcmtlci5oCkBAIC0yOCw2ICsyOCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIFBMQVRGT1JNKElPUykK
KyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KK3R5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0ICpp
ZDsKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50TWFya2Vy
RGV0YWlsczsKQEAgLTY1LDcgKzcwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgRGVsZXRlZEF1dG9j
b3JyZWN0aW9uID0gMSA8PCA4LAogICAgICAgICAvLyBUaGlzIG1hcmtlciBpbmRpY2F0ZXMgdGhh
dCB0aGUgcmFuZ2Ugb2YgdGV4dCBzcGFubmVkIGJ5IHRoZSBtYXJrZXIgaXMgZW50ZXJlZCBieSB2
b2ljZSBkaWN0YXRpb24sCiAgICAgICAgIC8vIGFuZCBpdCBoYXMgYWx0ZXJuYXRpdmUgdGV4dC4K
LSAgICAgICAgRGljdGF0aW9uQWx0ZXJuYXRpdmVzID0gMSA8PCA5CisgICAgICAgIERpY3RhdGlv
bkFsdGVybmF0aXZlcyA9IDEgPDwgOSwKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIC8vIEZJ
WE1FOiBpT1MgaGFzIGl0cyBvd24gZGljdGF0aW9uIG1hcmtzLiBpT1Mgc2hvdWxkIHVzZSBPcGVu
U291cmNlJ3MuCisgICAgICAgIERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXMgPSAxIDw8
IDEwLAorICAgICAgICBEaWN0YXRpb25SZXN1bHQgPSAxIDw8IDExLAorI2VuZGlmCiAgICAgfTsK
IAogICAgIGNsYXNzIE1hcmtlclR5cGVzIHsKQEAgLTg3LDcgKzk3LDExIEBAIHB1YmxpYzoKICAg
ICBjbGFzcyBBbGxNYXJrZXJzIDogcHVibGljIE1hcmtlclR5cGVzIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIEFsbE1hcmtlcnMoKQorI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgICAgICA6IE1h
cmtlclR5cGVzKFNwZWxsaW5nIHwgR3JhbW1hciB8IFRleHRNYXRjaCB8IFJlcGxhY2VtZW50IHwg
Q29ycmVjdGlvbkluZGljYXRvciB8IFJlamVjdGVkQ29ycmVjdGlvbiB8IEF1dG9jb3JyZWN0ZWQg
fCBTcGVsbENoZWNraW5nRXhlbXB0aW9uIHwgRGVsZXRlZEF1dG9jb3JyZWN0aW9uIHwgRGljdGF0
aW9uQWx0ZXJuYXRpdmVzKQorI2Vsc2UKKyAgICAgICAgICAgIDogTWFya2VyVHlwZXMoU3BlbGxp
bmcgfCBHcmFtbWFyIHwgVGV4dE1hdGNoIHwgUmVwbGFjZW1lbnQgfCBDb3JyZWN0aW9uSW5kaWNh
dG9yIHwgUmVqZWN0ZWRDb3JyZWN0aW9uIHwgQXV0b2NvcnJlY3RlZCB8IFNwZWxsQ2hlY2tpbmdF
eGVtcHRpb24gfCBEZWxldGVkQXV0b2NvcnJlY3Rpb24gfCBEaWN0YXRpb25BbHRlcm5hdGl2ZXMg
fCBEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzIHwgRGljdGF0aW9uUmVzdWx0KQorI2Vu
ZGlmIC8vICFQTEFURk9STShJT1MpCiAgICAgICAgIHsKICAgICAgICAgfQogICAgIH07CkBAIC05
NSw2ICsxMDksOSBAQCBwdWJsaWM6CiAgICAgRG9jdW1lbnRNYXJrZXIoKTsKICAgICBEb2N1bWVu
dE1hcmtlcihNYXJrZXJUeXBlLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KTsKICAgICBEb2N1bWVudE1hcmtlcihNYXJrZXJUeXBlLCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0LCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKTsKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgRG9jdW1lbnRNYXJrZXIoTWFya2VyVHlwZSwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlcywgUmV0YWluUHRyPGlkPiBtZXRhZGF0
YSk7CisjZW5kaWYKICAgICBEb2N1bWVudE1hcmtlcih1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0LCBib29sIGFjdGl2ZU1hdGNoKTsKICAgICBEb2N1bWVudE1hcmtlcihN
YXJrZXJUeXBlLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0LCBQYXNz
UmVmUHRyPERvY3VtZW50TWFya2VyRGV0YWlscz4pOwogCkBAIC0xMTUsNiArMTMyLDEzIEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEVuZE9mZnNldCh1bnNpZ25lZCBvZmZzZXQpIHsgbV9lbmRPZmZz
ZXQgPSBvZmZzZXQ7IH0KICAgICB2b2lkIHNoaWZ0T2Zmc2V0cyhpbnQgZGVsdGEpOwogCisjaWYg
UExBVEZPUk0oSU9TKQorICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZXMoKSBj
b25zdDsKKyAgICB2b2lkIHNldEFsdGVybmF0aXZlKGNvbnN0IFN0cmluZyYsIHNpemVfdCBpbmRl
eCk7CisgICAgaWQgbWV0YWRhdGEoKSBjb25zdDsKKyAgICB2b2lkIHNldE1ldGFkYXRhKGlkKTsK
KyNlbmRpZgorCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERvY3VtZW50TWFya2VyJiBvKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBvLnR5cGUoKSAmJiBzdGFydE9m
ZnNldCgpID09IG8uc3RhcnRPZmZzZXQoKSAmJiBlbmRPZmZzZXQoKSA9PSBvLmVuZE9mZnNldCgp
OwpAQCAtMTI5LDYgKzE1MywxMSBAQCBwcml2YXRlOgogICAgIE1hcmtlclR5cGUgbV90eXBlOwog
ICAgIHVuc2lnbmVkIG1fc3RhcnRPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV9lbmRPZmZzZXQ7Cisj
aWYgUExBVEZPUk0oSU9TKQorICAgIC8vIEZJWE1FOiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzk0MzEy
NDk+LgorICAgIFZlY3RvcjxTdHJpbmc+IG1fYWx0ZXJuYXRpdmVzOworICAgIFJldGFpblB0cjxp
ZD4gbV9tZXRhZGF0YTsKKyNlbmRpZgogICAgIFJlZlB0cjxEb2N1bWVudE1hcmtlckRldGFpbHM+
IG1fZGV0YWlsczsKIH07CiAKQEAgLTEzNyw2ICsxNjYsNDMgQEAgaW5saW5lIERvY3VtZW50TWFy
a2VyRGV0YWlscyogRG9jdW1lbnRNYXJrZXI6OmRldGFpbHMoKSBjb25zdAogICAgIHJldHVybiBt
X2RldGFpbHMuZ2V0KCk7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCitpbmxpbmUgRG9jdW1lbnRN
YXJrZXI6OkRvY3VtZW50TWFya2VyKE1hcmtlclR5cGUgdHlwZSwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGFsdGVybmF0aXZlcywgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSkKKyAgICA6IG1fdHlwZSh0
eXBlKQorICAgICwgbV9zdGFydE9mZnNldChzdGFydE9mZnNldCkKKyAgICAsIG1fZW5kT2Zmc2V0
KGVuZE9mZnNldCkKKyAgICAsIG1fYWx0ZXJuYXRpdmVzKGFsdGVybmF0aXZlcykKKyAgICAsIG1f
bWV0YWRhdGEobWV0YWRhdGEpCit7CisgICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS8xMTMw
NjQyMj4gaU9TIHNob3VsZCBpbnZlc3RpZ2F0ZSBjbGVhbmVyIG1lcmdlIHdpdGggVG9UIERpY3Rh
dGlvbiBzdXBwb3J0CisgICAgQVNTRVJUKHR5cGUgPT0gRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVy
bmF0aXZlcyB8fCB0eXBlID09IERpY3RhdGlvblJlc3VsdCk7Cit9CisjZW5kaWYKKworI2lmIFBM
QVRGT1JNKElPUykKK2lubGluZSBjb25zdCBWZWN0b3I8U3RyaW5nPiYgRG9jdW1lbnRNYXJrZXI6
OmFsdGVybmF0aXZlcygpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBEb2N1bWVudE1h
cmtlcjo6RGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcyk7CisgICAgcmV0dXJuIG1fYWx0
ZXJuYXRpdmVzOworfQorCitpbmxpbmUgdm9pZCBEb2N1bWVudE1hcmtlcjo6c2V0QWx0ZXJuYXRp
dmUoY29uc3QgU3RyaW5nJiBhbHRlcm5hdGl2ZSwgc2l6ZV90IGluZGV4KQoreworICAgIEFTU0VS
VChtX3R5cGUgPT0gRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2
ZXMpOworICAgIG1fYWx0ZXJuYXRpdmVzW2luZGV4XSA9IGFsdGVybmF0aXZlOworfQorCitpbmxp
bmUgaWQgRG9jdW1lbnRNYXJrZXI6Om1ldGFkYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9t
ZXRhZGF0YS5nZXQoKTsKK30KKworaW5saW5lIHZvaWQgRG9jdW1lbnRNYXJrZXI6OnNldE1ldGFk
YXRhKGlkIG1ldGFkYXRhKQoreworICAgIG1fbWV0YWRhdGEgPSBtZXRhZGF0YTsKK30KKyNlbmRp
ZgorCiBjbGFzcyBEb2N1bWVudE1hcmtlckRldGFpbHMgOiBwdWJsaWMgUmVmQ291bnRlZDxEb2N1
bWVudE1hcmtlckRldGFpbHM+CiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IDkwOWNkNzZiMDFjNDRjM2Q5YTc1ZGFk
Njg5MDJmZmEwNjVhNGRhN2MuLmJjYzczNjljY2NmMGU2ZWU2ODQ4MDNmZjRkNWMxZDBmOThkMDFk
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
Y3BwCkBAIC0xMDYsNiArMTA2LDQzIEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjph
ZGRUZXh0TWF0Y2hNYXJrZXIoY29uc3QgUmFuZ2UqIHJhbmdlLCBib29sIGFjdGl2CiAgICAgfQog
fQogCisjaWYgUExBVEZPUk0oSU9TKQordm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFk
ZE1hcmtlcihSYW5nZSogcmFuZ2UsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHR5cGUsIFN0
cmluZyBkZXNjcmlwdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGludGVycHJldGF0aW9ucywg
Y29uc3QgUmV0YWluUHRyPGlkPiYgbWV0YWRhdGEpCit7CisgICAgLy8gVXNlIGEgVGV4dEl0ZXJh
dG9yIHRvIHZpc2l0IHRoZSBwb3RlbnRpYWxseSBtdWx0aXBsZSBub2RlcyB0aGUgcmFuZ2UgY292
ZXJzLgorICAgIGZvciAoVGV4dEl0ZXJhdG9yIG1hcmtlZFRleHQocmFuZ2UpOyAhbWFya2VkVGV4
dC5hdEVuZCgpOyBtYXJrZWRUZXh0LmFkdmFuY2UoKSkgeworICAgICAgICBSZWZQdHI8UmFuZ2U+
IHRleHRQaWVjZSA9IG1hcmtlZFRleHQucmFuZ2UoKTsKKyAgICAgICAgYWRkTWFya2VyKHRleHRQ
aWVjZS0+c3RhcnRDb250YWluZXIoKSwgRG9jdW1lbnRNYXJrZXIodHlwZSwgdGV4dFBpZWNlLT5z
dGFydE9mZnNldCgpLCB0ZXh0UGllY2UtPmVuZE9mZnNldCgpLCBkZXNjcmlwdGlvbiwgaW50ZXJw
cmV0YXRpb25zLCBtZXRhZGF0YSkpOworICAgIH0KK30KKwordm9pZCBEb2N1bWVudE1hcmtlckNv
bnRyb2xsZXI6OmFkZERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNNYXJrZXIoUmFuZ2Uq
IHJhbmdlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW50ZXJwcmV0YXRpb25zKQoreworICAgIEFT
U0VSVChpbnRlcnByZXRhdGlvbnMuc2l6ZSgpID4gMSk7CisgICAgaWYgKGludGVycHJldGF0aW9u
cy5zaXplKCkgPD0gMSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2l6ZV90IG51bWJlck9mQWx0
ZXJuYXRpdmVzID0gaW50ZXJwcmV0YXRpb25zLnNpemUoKSAtIDE7CisgICAgLy8gVXNlIGEgVGV4
dEl0ZXJhdG9yIHRvIHZpc2l0IHRoZSBwb3RlbnRpYWxseSBtdWx0aXBsZSBub2RlcyB0aGUgcmFu
Z2UgY292ZXJzLgorICAgIGZvciAoVGV4dEl0ZXJhdG9yIG1hcmtlZFRleHQocmFuZ2UpOyAhbWFy
a2VkVGV4dC5hdEVuZCgpOyBtYXJrZWRUZXh0LmFkdmFuY2UoKSkgeworICAgICAgICBSZWZQdHI8
UmFuZ2U+IHRleHRQaWVjZSA9IG1hcmtlZFRleHQucmFuZ2UoKTsKKyAgICAgICAgRG9jdW1lbnRN
YXJrZXIgbWFya2VyKERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRp
dmVzLCB0ZXh0UGllY2UtPnN0YXJ0T2Zmc2V0KCksIHRleHRQaWVjZS0+ZW5kT2Zmc2V0KCksICIi
LCBWZWN0b3I8U3RyaW5nPihudW1iZXJPZkFsdGVybmF0aXZlcyksIFJldGFpblB0cjxpZD4oKSk7
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZBbHRlcm5hdGl2ZXM7ICsr
aSkKKyAgICAgICAgICAgIG1hcmtlci5zZXRBbHRlcm5hdGl2ZShpbnRlcnByZXRhdGlvbnNbaSAr
IDFdLCBpKTsKKyAgICAgICAgYWRkTWFya2VyKHRleHRQaWVjZS0+c3RhcnRDb250YWluZXIoKSwg
bWFya2VyKTsKKyAgICB9Cit9CisKK3ZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRE
aWN0YXRpb25SZXN1bHRNYXJrZXIoUmFuZ2UqIHJhbmdlLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBt
ZXRhZGF0YSkKK3sKKyAgICAvLyBVc2UgYSBUZXh0SXRlcmF0b3IgdG8gdmlzaXQgdGhlIHBvdGVu
dGlhbGx5IG11bHRpcGxlIG5vZGVzIHRoZSByYW5nZSBjb3ZlcnMuCisgICAgZm9yIChUZXh0SXRl
cmF0b3IgbWFya2VkVGV4dChyYW5nZSk7ICFtYXJrZWRUZXh0LmF0RW5kKCk7IG1hcmtlZFRleHQu
YWR2YW5jZSgpKSB7CisgICAgICAgIFJlZlB0cjxSYW5nZT4gdGV4dFBpZWNlID0gbWFya2VkVGV4
dC5yYW5nZSgpOworICAgICAgICBhZGRNYXJrZXIodGV4dFBpZWNlLT5zdGFydENvbnRhaW5lcigp
LCBEb2N1bWVudE1hcmtlcihEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUmVzdWx0LCB0ZXh0UGll
Y2UtPnN0YXJ0T2Zmc2V0KCksIHRleHRQaWVjZS0+ZW5kT2Zmc2V0KCksIFN0cmluZygpLCBWZWN0
b3I8U3RyaW5nPigpLCBtZXRhZGF0YSkpOworICAgIH0KK30KKyNlbmRpZgorCiB2b2lkIERvY3Vt
ZW50TWFya2VyQ29udHJvbGxlcjo6cmVtb3ZlTWFya2VycyhSYW5nZSogcmFuZ2UsIERvY3VtZW50
TWFya2VyOjpNYXJrZXJUeXBlcyBtYXJrZXJUeXBlcywgUmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBp
bmdNYXJrZXJPck5vdCBzaG91bGRSZW1vdmVQYXJ0aWFsbHlPdmVybGFwcGluZ01hcmtlcikKIHsK
ICAgICBmb3IgKFRleHRJdGVyYXRvciBtYXJrZWRUZXh0KHJhbmdlKTsgIW1hcmtlZFRleHQuYXRF
bmQoKTsgbWFya2VkVGV4dC5hZHZhbmNlKCkpIHsKQEAgLTEzNiw2ICsxNzMsMTggQEAgdm9pZCBE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihOb2RlKiBub2RlLCBjb25zdCBEb2N1
bWVudE1hcmtlciYgbmV3TWEKICAgICBpZiAoIWxpc3QpIHsKICAgICAgICAgbGlzdCA9IGFkb3B0
UHRyKG5ldyBNYXJrZXJMaXN0KTsKICAgICAgICAgbGlzdC0+YXBwZW5kKFJlbmRlcmVkRG9jdW1l
bnRNYXJrZXIobmV3TWFya2VyKSk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIH0gZWxzZSBpZiAo
bmV3TWFya2VyLnR5cGUoKSA9PSBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUGhyYXNlV2l0aEFs
dGVybmF0aXZlcyB8fCBuZXdNYXJrZXIudHlwZSgpID09IERvY3VtZW50TWFya2VyOjpEaWN0YXRp
b25SZXN1bHQpIHsKKyAgICAgICAgLy8gV2UgZG9uJ3QgbWVyZ2UgZGljdGF0aW9uIG1hcmtlcnMu
CisgICAgICAgIHNpemVfdCBpOworICAgICAgICBzaXplX3QgbnVtYmVyT2ZNYXJrZXJzID0gbGlz
dC0+c2l6ZSgpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtYmVyT2ZNYXJrZXJzOyArK2kp
IHsKKyAgICAgICAgICAgIERvY3VtZW50TWFya2VyIG1hcmtlciA9IGxpc3QtPmF0KGkpOworICAg
ICAgICAgICAgaWYgKG1hcmtlci5zdGFydE9mZnNldCgpID4gbmV3TWFya2VyLnN0YXJ0T2Zmc2V0
KCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgbGlzdC0+aW5z
ZXJ0KGksIFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIobmV3TWFya2VyKSk7CisjZW5kaWYKICAgICB9
IGVsc2UgewogICAgICAgICBSZW5kZXJlZERvY3VtZW50TWFya2VyIHRvSW5zZXJ0KG5ld01hcmtl
cik7CiAgICAgICAgIHNpemVfdCBudW1NYXJrZXJzID0gbGlzdC0+c2l6ZSgpOwpAQCAtNTIxLDgg
KzU3MCwxNiBAQCB2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6c2hpZnRNYXJrZXJzKE5v
ZGUqIG5vZGUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBpbgogICAgICAgICByZXR1cm47CiAKICAg
ICBib29sIGRvY0RpcnR5ID0gZmFsc2U7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gbGlz
dC0+c2l6ZSgpOyArK2kpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBsaXN0LT5zaXpl
KCk7ICkgewogICAgICAgICBSZW5kZXJlZERvY3VtZW50TWFya2VyJiBtYXJrZXIgPSBsaXN0LT5h
dChpKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIGludCB0YXJnZXRTdGFydE9mZnNldCA9
IG1hcmtlci5zdGFydE9mZnNldCgpICsgZGVsdGE7CisgICAgICAgIGludCB0YXJnZXRFbmRPZmZz
ZXQgPSBtYXJrZXIuZW5kT2Zmc2V0KCkgKyBkZWx0YTsKKyAgICAgICAgaWYgKHRhcmdldFN0YXJ0
T2Zmc2V0ID49IG5vZGUtPm1heENoYXJhY3Rlck9mZnNldCgpIHx8IHRhcmdldEVuZE9mZnNldCA8
PSAwKSB7CisgICAgICAgICAgICBsaXN0LT5yZW1vdmUoaSk7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIGlmIChtYXJrZXIuc3RhcnRPZmZzZXQoKSA+
PSBzdGFydE9mZnNldCkgewogICAgICAgICAgICAgQVNTRVJUKChpbnQpbWFya2VyLnN0YXJ0T2Zm
c2V0KCkgKyBkZWx0YSA+PSAwKTsKICAgICAgICAgICAgIG1hcmtlci5zaGlmdE9mZnNldHMoZGVs
dGEpOwpAQCAtNTMwLDcgKzU4NywyNCBAQCB2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6
c2hpZnRNYXJrZXJzKE5vZGUqIG5vZGUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBpbgogCiAgICAg
ICAgICAgICAvLyBNYXJrZXIgbW92ZWQsIHNvIHByZXZpb3VzbHktY29tcHV0ZWQgcmVuZGVyZWQg
cmVjdGFuZ2xlIGlzIG5vdyBpbnZhbGlkCiAgICAgICAgICAgICBtYXJrZXIuaW52YWxpZGF0ZSgp
OworI2lmICFQTEFURk9STShJT1MpCisgICAgICAgIH0KKyNlbHNlCisgICAgICAgIC8vIEZJWE1F
OiBJbnNlcnRpbmcgdGV4dCBpbnNpZGUgYSBEb2N1bWVudE1hcmtlciBkb2VzIG5vdCBncm93IHRo
ZSBtYXJrZXIuCisgICAgICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTYyNTA0Pi4KKyAgICAgICAgfSBlbHNlIGlmIChtYXJrZXIuZW5kT2Zmc2V0KCkg
PiBzdGFydE9mZnNldCkgeworICAgICAgICAgICAgaWYgKG1hcmtlci5lbmRPZmZzZXQoKSArIGRl
bHRhIDw9IG1hcmtlci5zdGFydE9mZnNldCgpKSB7CisgICAgICAgICAgICAgICAgbGlzdC0+cmVt
b3ZlKGkpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgbWFya2VyLnNldEVuZE9mZnNldCh0YXJnZXRFbmRPZmZzZXQgPCBub2RlLT5tYXhDaGFy
YWN0ZXJPZmZzZXQoKSA/IHRhcmdldEVuZE9mZnNldCA6IG5vZGUtPm1heENoYXJhY3Rlck9mZnNl
dCgpKTsKKyAgICAgICAgICAgIGRvY0RpcnR5ID0gdHJ1ZTsKKworICAgICAgICAgICAgLy8gTWFy
a2VyIG1vdmVkLCBzbyBwcmV2aW91c2x5LWNvbXB1dGVkIHJlbmRlcmVkIHJlY3RhbmdsZSBpcyBu
b3cgaW52YWxpZAorICAgICAgICAgICAgbWFya2VyLmludmFsaWRhdGUoKTsKICAgICAgICAgfQor
I2VuZGlmCisgICAgICAgICsraTsKICAgICB9CiAKICAgICAvLyByZXBhaW50IHRoZSBhZmZlY3Rl
ZCBub2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgK
aW5kZXggOTI0ZWJiYmEzY2RhNTQ1OTdjZTY5ZmNhYTNjNDEzNTJkZThjNjVmMi4uNzY5NDY0Nzhi
ZTViM2U3Yzk4NTgwMzgxMTkwNmQ0YTRlN2FmNzYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaApAQCAtNTMsNiArNTMsMTEgQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkTWFya2VyVG9Ob2RlKE5vZGUqLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSk7CiAgICAgdm9pZCBhZGRN
YXJrZXJUb05vZGUoTm9kZSosIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgs
IERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlLCBQYXNzUmVmUHRyPERvY3VtZW50TWFya2VyRGV0
YWlscz4pOwogICAgIHZvaWQgYWRkVGV4dE1hdGNoTWFya2VyKGNvbnN0IFJhbmdlKiwgYm9vbCBh
Y3RpdmVNYXRjaCk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZvaWQgYWRkTWFya2VyKFJhbmdl
KiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIFN0cmluZyBkZXNjcmlwdGlvbiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGludGVycHJldGF0aW9ucywgY29uc3QgUmV0YWluUHRyPGlkPiYgbWV0
YWRhdGEpOworICAgIHZvaWQgYWRkRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc01hcmtl
cihSYW5nZSosIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpbnRlcnByZXRhdGlvbnMpOworICAgIHZv
aWQgYWRkRGljdGF0aW9uUmVzdWx0TWFya2VyKFJhbmdlKiwgY29uc3QgUmV0YWluUHRyPGlkPiYg
bWV0YWRhdGEpOworI2VuZGlmCiAKICAgICB2b2lkIGNvcHlNYXJrZXJzKE5vZGUqIHNyY05vZGUs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBpbnQgbGVuZ3RoLCBOb2RlKiBkc3ROb2RlLCBpbnQgZGVs
dGEpOwogICAgIGJvb2wgaGFzTWFya2VycygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5k
ZXggY2I2ODVkYTkwZjUzNGNhMmFkYWFmNTJmODA5Nzg0N2YzMWJjYTRmYS4uMjcxMzE2ZDZiZmRj
NTM0MWU3NjA1ZTc5N2I5YTc3OTA0Mjg2ZmIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAt
MjAwMSw3ICsyMDAxLDIwIEBAIHZvaWQgRWxlbWVudDo6Zm9jdXMoYm9vbCByZXN0b3JlUHJldmlv
dXNTZWxlY3Rpb24sIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICB9CiAgICAgICAgIAog
ICAgIGNhbmNlbEZvY3VzQXBwZWFyYW5jZVVwZGF0ZSgpOworI2lmIFBMQVRGT1JNKElPUykKKyAg
ICAvLyBGb2N1c2luZyBhIGZvcm0gZWxlbWVudCB0cmlnZ2VycyBhbmltYXRpb24gaW4gVUlLaXQg
dG8gc2Nyb2xsIHRvIHRoZSByaWdodCBwb3NpdGlvbi4KKyAgICAvLyBDYWxsaW5nIHVwZGF0ZUZv
Y3VzQXBwZWFyYW5jZSgpIHdvdWxkIGdlbmVyYXRlIGFuIHVubmVjZXNzYXJ5IGNhbGwgdG8gU2Ny
b2xsVmlldzo6c2V0U2Nyb2xsUG9zaXRpb24oKSwKKyAgICAvLyB3aGljaCB3b3VsZCBqdW1wIHVz
IGFyb3VuZCBkdXJpbmcgdGhpcyBhbmltYXRpb24uIFNlZSA8cmRhcjovL3Byb2JsZW0vNjY5OTc0
MT4uCisgICAgRnJhbWVWaWV3KiB2aWV3ID0gZG9jdW1lbnQoKS52aWV3KCk7CisgICAgYm9vbCBp
c0Zvcm1Db250cm9sID0gdmlldyAmJiBpc0Zvcm1Db250cm9sRWxlbWVudCgpOworICAgIGlmIChp
c0Zvcm1Db250cm9sKQorICAgICAgICB2aWV3LT5zZXRQcm9oaWJpdHNTY3JvbGxpbmcodHJ1ZSk7
CisjZW5kaWYKICAgICB1cGRhdGVGb2N1c0FwcGVhcmFuY2UocmVzdG9yZVByZXZpb3VzU2VsZWN0
aW9uKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKGlzRm9ybUNvbnRyb2wpCisgICAgICAg
IHZpZXctPnNldFByb2hpYml0c1Njcm9sbGluZyhmYWxzZSk7CisjZW5kaWYKIH0KIAogdm9pZCBF
bGVtZW50Ojp1cGRhdGVGb2N1c0FwcGVhcmFuY2VBZnRlckF0dGFjaElmTmVlZGVkKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCmluZGV4IDgwNmJhOTQ5Y2Y3NzY5ZTEyOTAxNGJkMWI3ZjVkOWI0ZTViN2NkYmEu
LjVlNzJjODYyMmRhYjA0NjdmM2NlZGIzYzYxZGQyMTA2NzFhMDdjODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaApAQCAtMTI1LDYgKzEyNSwxMSBAQCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJQlVURV9F
VkVOVF9MSVNURU5FUih0b3VjaGVuZCk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUih0b3VjaGNhbmNlbCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoSU9TX0dFU1RVUkVfRVZFTlRT
KQorICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZ2VzdHVyZXN0YXJ0KTsKKyAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGdlc3R1cmVjaGFuZ2UpOworICAgIERF
RklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZ2VzdHVyZWVuZCk7CisjZW5kaWYKICNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
Uih3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKHdlYmtpdGZ1bGxzY3JlZW5lcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQu
Y3BwCmluZGV4IDc1Y2FhOTRhYjZjMWM4Mzg4NjI3ZGQ5ODNjZDVhMWJiZjY4MzFkZGYuLjVjMWZl
YjE3MTYzN2Y3N2EzYzNkYTA0NDNiZWEzZjYzMzk3NmJiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dENvbnRleHQuY3BwCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgTW91c2VPckZvY3VzRXZlbnRDb250
ZXh0Ojppc01vdXNlT3JGb2N1c0V2ZW50Q29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
ICYmICFQTEFURk9STShJT1MpCiBUb3VjaEV2ZW50Q29udGV4dDo6VG91Y2hFdmVudENvbnRleHQo
UGFzc1JlZlB0cjxOb2RlPiBub2RlLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBjdXJyZW50VGFy
Z2V0LCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiB0YXJnZXQpCiAgICAgOiBFdmVudENvbnRleHQo
bm9kZSwgY3VycmVudFRhcmdldCwgdGFyZ2V0KQogICAgICwgbV90b3VjaGVzKFRvdWNoTGlzdDo6
Y3JlYXRlKCkpCkBAIC0xMzIsNiArMTMyLDYgQEAgdm9pZCBUb3VjaEV2ZW50Q29udGV4dDo6Y2hl
Y2tSZWFjaGFiaWxpdHkoVG91Y2hMaXN0KiB0b3VjaExpc3QpIGNvbnN0CiB9CiAjZW5kaWYKIAot
I2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VW
RU5UUykgJiYgIVBMQVRGT1JNKElPUykKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oCmlu
ZGV4IGYzODljZGQ1YjkwNzYzM2MxOGRjZGZmOWRiZTQ2MGFkMWFhZmZmNWUuLjNlY2EwNDZjZTA5
YTRkYWNiOWRmZmJmYjQ4NjBhNDI2N2QzMDJmMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0
LmgKQEAgLTM1LDcgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRXZlbnQ7
Ci0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAh
UExBVEZPUk0oSU9TKQogY2xhc3MgVG91Y2hMaXN0OwogI2VuZGlmCiAKQEAgLTgyLDcgKzgyLDcg
QEAgaW5saW5lIE1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dCYgdG9Nb3VzZU9yRm9jdXNFdmVudENv
bnRleHQoRXZlbnRDb250ZXh0JiBldmVudEMKIH0KIAogCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhUExBVEZPUk0oSU9TKQogY2xhc3MgVG91
Y2hFdmVudENvbnRleHQgRklOQUwgOiBwdWJsaWMgRXZlbnRDb250ZXh0IHsKIHB1YmxpYzoKICAg
ICBUb3VjaEV2ZW50Q29udGV4dChQYXNzUmVmUHRyPE5vZGU+LCBQYXNzUmVmUHRyPEV2ZW50VGFy
Z2V0PiBjdXJyZW50VGFyZ2V0LCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiB0YXJnZXQpOwpAQCAt
MTMyLDcgKzEzMiw3IEBAIGlubGluZSBUb3VjaEV2ZW50Q29udGV4dCogdG9Ub3VjaEV2ZW50Q29u
dGV4dChFdmVudENvbnRleHQqIGV2ZW50Q29udGV4dCkKICAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTighZXZlbnRDb250ZXh0IHx8IGV2ZW50Q29udGV4dC0+aXNUb3VjaEV2ZW50
Q29udGV4dCgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VG91Y2hFdmVudENvbnRleHQqPihl
dmVudENvbnRleHQpOwogfQotI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjZW5kaWYg
Ly8gRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPUykKIAogI2lmbmRlZiBOREVC
VUcKIGlubGluZSBib29sIEV2ZW50Q29udGV4dDo6aXNVbnJlYWNoYWJsZU5vZGUoRXZlbnRUYXJn
ZXQqIHRhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNo
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggYzE1
ODRlNjg0ZjhjMmY1NjM2MzNiMThhNjYxZTY0NDJlOWQ4ZTk5MC4uZmE5NDg0NTdkMDRjZDRmNTBh
ZGY1Y2U4ZDQ5YjMxOTg5NWJjNzAyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hl
ci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgRXZlbnRDb250ZXh0KiBsYXN0
Q29udGV4dElmRXhpc3RzKCkgeyByZXR1cm4gbV9wYXRoLmlzRW1wdHkoKSA/IDAgOiBtX3BhdGgu
bGFzdCgpLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhUExBVEZPUk0oSU9TKQogICAgIHZvaWQgdXBkYXRl
VG91Y2hMaXN0c0luRXZlbnRQYXRoKGNvbnN0IFRvdWNoTGlzdCosIFRvdWNoRXZlbnRDb250ZXh0
OjpUb3VjaExpc3RUeXBlKTsKICNlbmRpZgogCkBAIC0xMTQsMTQgKzExNCwxNCBAQCBwdWJsaWM6
CiAgICAgICAgICwgbV9yZWxhdGVkTm9kZVRyZWVTY29wZShyZWxhdGVkTm9kZS50cmVlU2NvcGUo
KSkKICAgICAgICAgLCBtX3JlbGF0ZWROb2RlSW5DdXJyZW50VHJlZVNjb3BlKG51bGxwdHIpCiAg
ICAgICAgICwgbV9jdXJyZW50VHJlZVNjb3BlKG51bGxwdHIpCi0jaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhUExBVEZPUk0oSU9TKQogICAgICAg
ICAsIG1fdG91Y2goMCkKICAgICAgICAgLCBtX3RvdWNoTGlzdFR5cGUoVG91Y2hFdmVudENvbnRl
eHQ6Ok5vdFRvdWNoTGlzdCkKICNlbmRpZgogICAgIHsKICAgICB9CiAKLSNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFQTEFURk9STShJT1MpCiAg
ICAgRXZlbnRSZWxhdGVkTm9kZVJlc29sdmVyKFRvdWNoJiB0b3VjaCwgVG91Y2hFdmVudENvbnRl
eHQ6OlRvdWNoTGlzdFR5cGUgdG91Y2hMaXN0VHlwZSkKICAgICAgICAgOiBtX3JlbGF0ZWROb2Rl
KCp0b3VjaC50YXJnZXQoKS0+dG9Ob2RlKCkpCiAgICAgICAgICwgbV9yZWxhdGVkTm9kZVRyZWVT
Y29wZShtX3JlbGF0ZWROb2RlLnRyZWVTY29wZSgpKQpAQCAtMTM0LDcgKzEzNCw3IEBAIHB1Ymxp
YzoKICAgICB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPUykKICAgICBUb3VjaCogdG91Y2goKSBjb25z
dCB7IHJldHVybiBtX3RvdWNoOyB9CiAgICAgVG91Y2hFdmVudENvbnRleHQ6OlRvdWNoTGlzdFR5
cGUgdG91Y2hMaXN0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdG91Y2hMaXN0VHlwZTsgfQogI2Vu
ZGlmCkBAIC0xNjgsNyArMTY4LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBUcmVlU2NvcGUmIG1f
cmVsYXRlZE5vZGVUcmVlU2NvcGU7CiAgICAgTm9kZSogbV9yZWxhdGVkTm9kZUluQ3VycmVudFRy
ZWVTY29wZTsKICAgICBUcmVlU2NvcGUqIG1fY3VycmVudFRyZWVTY29wZTsKLSNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFQTEFURk9STShJT1Mp
CiAgICAgVG91Y2gqIG1fdG91Y2g7CiAgICAgVG91Y2hFdmVudENvbnRleHQ6OlRvdWNoTGlzdFR5
cGUgbV90b3VjaExpc3RUeXBlOwogI2VuZGlmCkBAIC0zMTEsNyArMzExLDcgQEAgYm9vbCBFdmVu
dERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQoTm9kZSogb3JpZ2luLCBQYXNzUmVmUHRyPEV2ZW50
PiBwcnBFdmVudCkKIAogICAgIGlmIChFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCA9IGV2ZW50
LT5yZWxhdGVkVGFyZ2V0KCkpCiAgICAgICAgIGV2ZW50UGF0aC5zZXRSZWxhdGVkVGFyZ2V0KCpy
ZWxhdGVkVGFyZ2V0KTsKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpICYmICFQTEFURk9STShJT1MpCiAgICAgaWYgKGV2ZW50LT5pc1RvdWNoRXZlbnQo
KSkKICAgICAgICAgZXZlbnRQYXRoLnVwZGF0ZVRvdWNoTGlzdHMoKnRvVG91Y2hFdmVudChldmVu
dC5nZXQoKSkpOwogI2VuZGlmCkBAIC0zOTQsNyArMzk0LDcgQEAgRXZlbnRQYXRoOjpFdmVudFBh
dGgoTm9kZSYgdGFyZ2V0Tm9kZSwgRXZlbnQmIGV2ZW50KQogICAgIGJvb2wgaW5Eb2N1bWVudCA9
IHRhcmdldE5vZGUuaW5Eb2N1bWVudCgpOwogICAgIGJvb2wgaXNTVkdFbGVtZW50ID0gdGFyZ2V0
Tm9kZS5pc1NWR0VsZW1lbnQoKTsKICAgICBib29sIGlzTW91c2VPckZvY3VzRXZlbnQgPSBldmVu
dC5pc01vdXNlRXZlbnQoKSB8fCBldmVudC5pc0ZvY3VzRXZlbnQoKTsKLSNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFQTEFURk9STShJT1MpCiAg
ICAgYm9vbCBpc1RvdWNoRXZlbnQgPSBldmVudC5pc1RvdWNoRXZlbnQoKTsKICNlbmRpZgogICAg
IEV2ZW50VGFyZ2V0KiB0YXJnZXQgPSAwOwpAQCAtNDA3LDcgKzQwNyw3IEBAIEV2ZW50UGF0aDo6
RXZlbnRQYXRoKE5vZGUmIHRhcmdldE5vZGUsIEV2ZW50JiBldmVudCkKICAgICAgICAgICAgIEV2
ZW50VGFyZ2V0JiBjdXJyZW50VGFyZ2V0ID0gZXZlbnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0UnVs
ZXMoKm5vZGUpOwogICAgICAgICAgICAgaWYgKGlzTW91c2VPckZvY3VzRXZlbnQpCiAgICAgICAg
ICAgICAgICAgbV9wYXRoLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPE1vdXNlT3JGb2N1c0V2ZW50
Q29udGV4dD4obm9kZSwgJmN1cnJlbnRUYXJnZXQsIHRhcmdldCkpOwotI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPUykKICAg
ICAgICAgICAgIGVsc2UgaWYgKGlzVG91Y2hFdmVudCkKICAgICAgICAgICAgICAgICBtX3BhdGgu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8VG91Y2hFdmVudENvbnRleHQ+KG5vZGUsICZjdXJyZW50
VGFyZ2V0LCB0YXJnZXQpKTsKICNlbmRpZgpAQCAtNDI0LDcgKzQyNCw3IEBAIEV2ZW50UGF0aDo6
RXZlbnRQYXRoKE5vZGUmIHRhcmdldE5vZGUsIEV2ZW50JiBldmVudCkKICAgICB9CiB9CiAKLSNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFQTEFU
Rk9STShJT1MpCiBzdGF0aWMgdm9pZCBhZGRSZWxhdGVkTm9kZVJlc29sdmVyc0ZvclRvdWNoTGlz
dChWZWN0b3I8RXZlbnRSZWxhdGVkTm9kZVJlc29sdmVyLCAxNj4mIHRvdWNoVGFyZ2V0UmVzb2x2
ZXJzLCBUb3VjaExpc3QqIHRvdWNoTGlzdCwgVG91Y2hFdmVudENvbnRleHQ6OlRvdWNoTGlzdFR5
cGUgdHlwZSkKIHsKICAgICBjb25zdCBzaXplX3QgdG91Y2hMaXN0U2l6ZSA9IHRvdWNoTGlzdC0+
bGVuZ3RoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCA2YTM2NjFlZWMyMGU0MjQ5NTFj
MGNlMjQwYzFjMzU5YTEwYjliNDI3Li4wNDg4MzlhYjY3ZjIxY2ViMTMxMzIxOWQzOThjMmFmOTI4
NjRkOTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTI2NSw2ICsyNjUsMTYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIFwKICAgICBtYWNybyhzZWN1cml0eXBvbGljeXZpb2xhdGlv
bikgXAogICAgIFwKKyAgICAvKiBFTkFCTEUoSU9TX0FJUlBMQVkpICovIFwKKyAgICBtYWNybyh3
ZWJraXRjdXJyZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZCkgXAorICAgIG1hY3Jv
KHdlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZCkgXAorICAgIC8qIEVuZCBv
ZiBFTkFCTEUoSU9TX0FJUlBMQVkpICovIFwKKyAgICBcCisgICAgLyogRU5BQkxFKElPU19HRVNU
VVJFX0VWRU5UUykgKi8gXAorICAgIG1hY3JvKGdlc3R1cmVzdGFydCkgXAorICAgIG1hY3JvKGdl
c3R1cmVjaGFuZ2UpIFwKKyAgICBtYWNybyhnZXN0dXJlZW5kKSBcCisgICAgLyogRW5kIG9mIEVO
QUJMRShJT1NfR0VTVFVSRV9FVkVOVFMpICovIFwKIAogLy8gZW5kIG9mIERPTV9FVkVOVF9OQU1F
U19GT1JfRUFDSAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5p
biBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCmluZGV4IDM5OGUwNDI0NzUwYTEw
MjkyZGNiNTQwMzhiOGM0NTgwNjVkMzZlMzkuLmQwZjMxM2Q0YzRlNWRkZTU3MDY5YzI0ODYwNGIy
NmM5NTI5YTQ3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmlu
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluCkBAIC01OSw0ICs1OSw2IEBA
IFRyYWNrRXZlbnQgY29uZGl0aW9uYWw9VklERU9fVFJBQ0sKIENTU0ZvbnRGYWNlTG9hZEV2ZW50
IGNvbmRpdGlvbmFsPUZPTlRfTE9BRF9FVkVOVFMKIFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZl
bnQgY29uZGl0aW9uYWw9Q1NQX05FWFQKIFVJUmVxdWVzdEV2ZW50IGNvbmRpdGlvbmFsPUlORElF
X1VJCitHZXN0dXJlRXZlbnQgY29uZGl0aW9uYWw9SU9TX0dFU1RVUkVfRVZFTlRTCitXZWJLaXRQ
bGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50IGNvbmRpdGlvbmFsPUlPU19BSVJQTEFZCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCmluZGV4IDFjZmQ0ZDFkYzIx
N2YwNDE3MjBjZDIyYWM3YzRhMjhkYmM1Y2FmMjkuLmQzYjhjMzU4MTQxOTY1MjgzYmZiNWNkNWYw
ZGNlZjMzZGFhYTBmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0
ZWRFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNw
cApAQCAtNDcsOCArNDcsMTIgQEAgc3RhdGljIExheW91dFNpemUgY29udGVudHNTY3JvbGxPZmZz
ZXQoQWJzdHJhY3RWaWV3KiBhYnN0cmFjdFZpZXcpCiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcg
PSBmcmFtZS0+dmlldygpOwogICAgIGlmICghZnJhbWVWaWV3KQogICAgICAgICByZXR1cm4gTGF5
b3V0U2l6ZSgpOworI2lmICFQTEFURk9STShJT1MpCiAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBm
cmFtZS0+cGFnZVpvb21GYWN0b3IoKSAqIGZyYW1lLT5mcmFtZVNjYWxlRmFjdG9yKCk7CiAgICAg
cmV0dXJuIExheW91dFNpemUoZnJhbWVWaWV3LT5zY3JvbGxYKCkgLyBzY2FsZUZhY3RvciwgZnJh
bWVWaWV3LT5zY3JvbGxZKCkgLyBzY2FsZUZhY3Rvcik7CisjZWxzZQorICAgIHJldHVybiBMYXlv
dXRTaXplKGZyYW1lVmlldy0+YWN0dWFsU2Nyb2xsWCgpLCBmcmFtZVZpZXctPmFjdHVhbFNjcm9s
bFkoKSk7CisjZW5kaWYKIH0KIAogTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBkb3VibGUgdGltZXN0YW1wLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gYWJzdHJh
Y3RWaWV3LApAQCAtNzAsNyArNzQsMTEgQEAgTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRl
ZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmIKICAgICBG
cmFtZSogZnJhbWUgPSB2aWV3KCkgPyB2aWV3KCktPmZyYW1lKCkgOiAwOwogICAgIGlmIChmcmFt
ZSAmJiAhaXNTaW11bGF0ZWQpIHsKICAgICAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0g
ZnJhbWUtPnZpZXcoKSkgeworI2lmICFQTEFURk9STShJT1MpCiAgICAgICAgICAgICBzY3JvbGxQ
b3NpdGlvbiA9IGZyYW1lVmlldy0+c2Nyb2xsUG9zaXRpb24oKTsKKyNlbHNlCisgICAgICAgICAg
ICBzY3JvbGxQb3NpdGlvbiA9IGZyYW1lVmlldy0+YWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCku
bG9jYXRpb24oKTsKKyNlbmRpZgogICAgICAgICAgICAgYWRqdXN0ZWRQYWdlTG9jYXRpb24gPSBm
cmFtZVZpZXctPndpbmRvd1RvQ29udGVudHMod2luZG93TG9jYXRpb24pOwogICAgICAgICAgICAg
ZmxvYXQgc2NhbGVGYWN0b3IgPSAxIC8gKGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpICogZnJhbWUt
PmZyYW1lU2NhbGVGYWN0b3IoKSk7CiAgICAgICAgICAgICBpZiAoc2NhbGVGYWN0b3IgIT0gMS4w
ZikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDYwOGI1MjFlN2UzY2IxNDMzYmQ0M2MxMjcxYWQ1ZTAw
MWM2YzBkMmQuLjBhNGNmMGEyOGM1ZDE4ZWI1ZDViODA1Y2ZlYTYzY2IwNzRiMTJjYjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKQEAgLTMxNSw4ICszMTUsMTMgQEAgTm9kZTo6fk5vZGUoKQogCiB2b2lkIE5v
ZGU6OndpbGxCZURlbGV0ZWRGcm9tKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBpZiAoaGFz
RXZlbnRUYXJnZXREYXRhKCkpCisgICAgaWYgKGhhc0V2ZW50VGFyZ2V0RGF0YSgpKSB7CisjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgUExBVEZPUk0oSU9TKQorICAgICAgICBpZiAoZG9jdW1l
bnQpCisgICAgICAgICAgICBkb2N1bWVudC0+cmVtb3ZlVG91Y2hFdmVudExpc3RlbmVyKHRoaXMs
IHRydWUpOworI2VuZGlmCiAgICAgICAgIGNsZWFyRXZlbnRUYXJnZXREYXRhKCk7CisgICAgfQog
CiAgICAgaWYgKGRvY3VtZW50KSB7CiAgICAgICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9
IGRvY3VtZW50LT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKQEAgLTc4Myw3ICs3ODgsNyBAQCB2
b2lkIE5vZGU6OmNoZWNrU2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBFeGNl
cHRpb25Db2RlJiBlYykKICAgICAvLyBBdHRyaWJ1dGUtc3BlY2lmaWMgY2hlY2tzIGFyZSBpbiBB
dHRyOjpzZXRQcmVmaXgoKS4KIH0KIAotYm9vbCBOb2RlOjppc0Rlc2NlbmRhbnRPZihjb25zdCBO
b2RlICpvdGhlcikgY29uc3QKK2Jvb2wgTm9kZTo6aXNEZXNjZW5kYW50T2YoY29uc3QgTm9kZSog
b3RoZXIpIGNvbnN0CiB7CiAgICAgLy8gUmV0dXJuIHRydWUgaWYgb3RoZXIgaXMgYW4gYW5jZXN0
b3Igb2YgdGhpcywgb3RoZXJ3aXNlIGZhbHNlCiAgICAgaWYgKCFvdGhlciB8fCAhb3RoZXItPmhh
c0NoaWxkTm9kZXMoKSB8fCBpbkRvY3VtZW50KCkgIT0gb3RoZXItPmluRG9jdW1lbnQoKSkKQEAg
LTc5Nyw2ICs4MDIsMTggQEAgYm9vbCBOb2RlOjppc0Rlc2NlbmRhbnRPZihjb25zdCBOb2RlICpv
dGhlcikgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgTm9kZTo6aXNEZXNjZW5k
YW50T3JTaGFkb3dEZXNjZW5kYW50T2YoY29uc3QgTm9kZSogb3RoZXIpIGNvbnN0Cit7CisgICAg
aWYgKCFvdGhlcikgCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoaXNEZXNjZW5kYW50
T2Yob3RoZXIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjb25zdCBOb2RlKiBzaGFkb3dB
bmNlc3Rvck5vZGUgPSBkZXByZWNhdGVkU2hhZG93QW5jZXN0b3JOb2RlKCk7CisgICAgaWYgKCFz
aGFkb3dBbmNlc3Rvck5vZGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gc2hh
ZG93QW5jZXN0b3JOb2RlID09IG90aGVyIHx8IHNoYWRvd0FuY2VzdG9yTm9kZS0+aXNEZXNjZW5k
YW50T2Yob3RoZXIpOworfQorCiBib29sIE5vZGU6OmNvbnRhaW5zKGNvbnN0IE5vZGUqIG5vZGUp
IGNvbnN0CiB7CiAgICAgaWYgKCFub2RlKQpAQCAtMTc3NSw2ICsxNzkyLDI4IEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCB0cnlBZGRFdmVudExpc3RlbmVyKE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlCiAgICAgZWxzZSBpZiAoZXZlbnROYW1lcygpLmlzVG91Y2hFdmVudFR5
cGUoZXZlbnRUeXBlKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5kaWRBZGRUb3Vj
aEV2ZW50SGFuZGxlcih0YXJnZXROb2RlKTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAo
dGFyZ2V0Tm9kZSA9PSAmdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKSAmJiBldmVudFR5cGUgPT0gZXZl
bnROYW1lcygpLnNjcm9sbEV2ZW50KQorICAgICAgICB0YXJnZXROb2RlLT5kb2N1bWVudCgpLmRv
bVdpbmRvdygpLT5pbmNyZW1lbnRTY3JvbGxFdmVudExpc3RlbmVyc0NvdW50KCk7CisKKyAgICAv
LyBGSVhNRTogV291bGQgaXQgYmUgc3VmZmljaWVudCB0byBzcGVjaWFsLWNhc2UgdGhpcyBjb2Rl
IGZvciA8Ym9keT4gYW5kIDxmcmFtZXNldD4/CisgICAgLy8KKyAgICAvLyBUaGlzIGNvZGUgd2Fz
IGFkZGVkIHRvIGFkZHJlc3MgPHJkYXI6Ly9wcm9ibGVtLzU4NDY0OTI+IE9ub3JpZW50YXRpb25j
aGFuZ2UgZXZlbnQgbm90IHdvcmtpbmcgZm9yIGRvY3VtZW50LmJvZHkuCisgICAgLy8gRm9yd2Fy
ZCB0aGlzIGNhbGwgdG8gYWRkRXZlbnRMaXN0ZW5lcigpIHRvIHRoZSB3aW5kb3cgc2luY2UgdGhl
c2UgYXJlIHdpbmRvdy1vbmx5IGV2ZW50cy4KKyAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFt
ZXMoKS5vcmllbnRhdGlvbmNoYW5nZUV2ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCku
cmVzaXplRXZlbnQpCisgICAgICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZG9tV2luZG93KCkt
PmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisKKyNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGlmIChldmVudE5hbWVzKCkuaXNUb3VjaEV2ZW50
VHlwZShldmVudFR5cGUpKQorICAgICAgICB0YXJnZXROb2RlLT5kb2N1bWVudCgpLmFkZFRvdWNo
RXZlbnRMaXN0ZW5lcih0YXJnZXROb2RlKTsKKyNlbmRpZgorI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKKworI2lmIEVOQUJMRShJT1NfR0VTVFVSRV9FVkVOVFMpICYmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZ2VzdHVyZXN0YXJ0RXZlbnQg
fHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5nZXN0dXJlY2hhbmdlRXZlbnQgfHwgZXZlbnRU
eXBlID09IGV2ZW50TmFtZXMoKS5nZXN0dXJlZW5kRXZlbnQpCisgICAgICAgIHRhcmdldE5vZGUt
PmRvY3VtZW50KCkuYWRkVG91Y2hFdmVudExpc3RlbmVyKHRhcmdldE5vZGUpOworI2VuZGlmCisK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTc5NSw2ICsxODM0LDI3IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCB0cnlSZW1vdmVFdmVudExpc3RlbmVyKE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0IEF0
b21pY1N0cmluZyYKICAgICBlbHNlIGlmIChldmVudE5hbWVzKCkuaXNUb3VjaEV2ZW50VHlwZShl
dmVudFR5cGUpKQogICAgICAgICB0YXJnZXROb2RlLT5kb2N1bWVudCgpLmRpZFJlbW92ZVRvdWNo
RXZlbnRIYW5kbGVyKHRhcmdldE5vZGUpOwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmICh0
YXJnZXROb2RlID09ICZ0YXJnZXROb2RlLT5kb2N1bWVudCgpICYmIGV2ZW50VHlwZSA9PSBldmVu
dE5hbWVzKCkuc2Nyb2xsRXZlbnQpCisgICAgICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZG9t
V2luZG93KCktPmRlY3JlbWVudFNjcm9sbEV2ZW50TGlzdGVuZXJzQ291bnQoKTsKKworICAgIC8v
IEZJWE1FOiBXb3VsZCBpdCBiZSBzdWZmaWNpZW50IHRvIHNwZWNpYWwtY2FzZSB0aGlzIGNvZGUg
Zm9yIDxib2R5PiBhbmQgPGZyYW1lc2V0Pj8gU2VlIDxyZGFyOi8vcHJvYmxlbS8xNTY0NzgyMz4u
CisgICAgLy8gVGhpcyBjb2RlIHdhcyBhZGRlZCB0byBhZGRyZXNzIDxyZGFyOi8vcHJvYmxlbS81
ODQ2NDkyPiBPbm9yaWVudGF0aW9uY2hhbmdlIGV2ZW50IG5vdCB3b3JraW5nIGZvciBkb2N1bWVu
dC5ib2R5LgorICAgIC8vIEZvcndhcmQgdGhpcyBjYWxsIHRvIHJlbW92ZUV2ZW50TGlzdGVuZXIo
KSB0byB0aGUgd2luZG93IHNpbmNlIHRoZXNlIGFyZSB3aW5kb3ctb25seSBldmVudHMuCisgICAg
aWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkub3JpZW50YXRpb25jaGFuZ2VFdmVudCB8fCBl
dmVudFR5cGUgPT0gZXZlbnROYW1lcygpLnJlc2l6ZUV2ZW50KQorICAgICAgICB0YXJnZXROb2Rl
LT5kb2N1bWVudCgpLmRvbVdpbmRvdygpLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwg
bGlzdGVuZXIsIHVzZUNhcHR1cmUpOworCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBp
ZiAoZXZlbnROYW1lcygpLmlzVG91Y2hFdmVudFR5cGUoZXZlbnRUeXBlKSkKKyAgICAgICAgdGFy
Z2V0Tm9kZS0+ZG9jdW1lbnQoKS5yZW1vdmVUb3VjaEV2ZW50TGlzdGVuZXIodGFyZ2V0Tm9kZSk7
CisjZW5kaWYKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisKKyNpZiBFTkFCTEUoSU9TX0dFU1RV
UkVfRVZFTlRTKSAmJiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGlmIChldmVudFR5cGUgPT0g
ZXZlbnROYW1lcygpLmdlc3R1cmVzdGFydEV2ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVz
KCkuZ2VzdHVyZWNoYW5nZUV2ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZ2VzdHVy
ZWVuZEV2ZW50KQorICAgICAgICB0YXJnZXROb2RlLT5kb2N1bWVudCgpLnJlbW92ZVRvdWNoRXZl
bnRMaXN0ZW5lcih0YXJnZXROb2RlKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTE5NjUsNyArMjAyNSw3IEBAIHZvaWQgTm9kZTo6ZGlzcGF0Y2hTY29wZWRFdmVudChQYXNz
UmVmUHRyPEV2ZW50PiBldmVudCkKIAogYm9vbCBOb2RlOjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQ
dHI8RXZlbnQ+IGV2ZW50KQogewotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPUykKICAgICBpZiAoZXZlbnQtPmlzVG91Y2hF
dmVudCgpKQogICAgICAgICByZXR1cm4gZGlzcGF0Y2hUb3VjaEV2ZW50KGFkb3B0UmVmKHRvVG91
Y2hFdmVudChldmVudC5sZWFrUmVmKCkpKSk7CiAjZW5kaWYKQEAgLTE5OTQsNyArMjA1NCw3IEBA
IGJvb2wgTm9kZTo6ZGlzcGF0Y2hET01BY3RpdmF0ZUV2ZW50KGludCBkZXRhaWwsIFBhc3NSZWZQ
dHI8RXZlbnQ+IHVuZGVybHlpbmdFdmVuCiAgICAgcmV0dXJuIGV2ZW50LT5kZWZhdWx0SGFuZGxl
ZCgpOwogfQogCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKSAmJiAhUExBVEZPUk0oSU9TKQogYm9vbCBOb2RlOjpkaXNwYXRjaFRvdWNoRXZlbnQoUGFz
c1JlZlB0cjxUb3VjaEV2ZW50PiBldmVudCkKIHsKICAgICByZXR1cm4gRXZlbnREaXNwYXRjaGVy
OjpkaXNwYXRjaEV2ZW50KHRoaXMsIGV2ZW50KTsKQEAgLTIwNzcsNiArMjEzNywxOSBAQCB2b2lk
IE5vZGU6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgICAgICBpZiAoc3Rh
cnROb2RlICYmIHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIGlmIChGcmFtZSog
ZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50
SGFuZGxlcigpLmRlZmF1bHRXaGVlbEV2ZW50SGFuZGxlcihzdGFydE5vZGUsIHdoZWVsRXZlbnQp
OworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmIFBMQVRGT1JNKElPUykKKyAgICB9IGVsc2Ug
aWYgKGV2ZW50LT5ldmVudEludGVyZmFjZSgpID09IFRvdWNoRXZlbnRJbnRlcmZhY2VUeXBlICYm
IGV2ZW50TmFtZXMoKS5pc1RvdWNoRXZlbnRUeXBlKGV2ZW50VHlwZSkpIHsKKyAgICAgICAgVG91
Y2hFdmVudCogdG91Y2hFdmVudCA9IHN0YXRpY19jYXN0PFRvdWNoRXZlbnQqPihldmVudCk7CisK
KyAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CisgICAg
ICAgIHdoaWxlIChyZW5kZXJlciAmJiAoIXJlbmRlcmVyLT5pc0JveCgpIHx8ICF0b1JlbmRlckJv
eChyZW5kZXJlciktPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpKSkKKyAgICAg
ICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpOworCisgICAgICAgIGlmIChyZW5k
ZXJlciAmJiByZW5kZXJlci0+bm9kZSgpKSB7CisgICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1l
ID0gZG9jdW1lbnQoKS5mcmFtZSgpKQorICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRs
ZXIoKS5kZWZhdWx0VG91Y2hFdmVudEhhbmRsZXIocmVuZGVyZXItPm5vZGUoKSwgdG91Y2hFdmVu
dCk7CisgICAgICAgIH0KKyNlbmRpZgogICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBl
dmVudE5hbWVzKCkud2Via2l0RWRpdGFibGVDb250ZW50Q2hhbmdlZEV2ZW50KSB7CiAgICAgICAg
IGRpc3BhdGNoSW5wdXRFdmVudCgpOwogICAgIH0KQEAgLTIwODQsMjAgKzIxNTcsMzMgQEAgdm9p
ZCBOb2RlOjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIAogYm9vbCBOb2RlOjp3
aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkKIHsKKyAgICAvLyBGSVhNRTogV2h5IGlzIHRo
ZSBpT1MgY29kZSBwYXRoIGRpZmZlcmVudCBmcm9tIHRoZSBub24taU9TIGNvZGUgcGF0aD8KKyNp
ZiAhUExBVEZPUk0oSU9TKQogICAgIGlmICghaXNFbGVtZW50Tm9kZSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaWYgKHRvRWxlbWVudCh0aGlzKS0+aXNEaXNhYmxlZEZvcm1Db250cm9s
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogICAgIHJldHVybiBoYXNFdmVudExp
c3RlbmVycyhldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQpIHx8IGhhc0V2ZW50TGlzdGVuZXJz
KGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnRO
YW1lcygpLm1vdXNlb3V0RXZlbnQpOwogfQogCiBib29sIE5vZGU6OndpbGxSZXNwb25kVG9Nb3Vz
ZUNsaWNrRXZlbnRzKCkKIHsKKyAgICAvLyBGSVhNRTogV2h5IGlzIHRoZSBpT1MgY29kZSBwYXRo
IGRpZmZlcmVudCBmcm9tIHRoZSBub24taU9TIGNvZGUgcGF0aD8KKyNpZiBQTEFURk9STShJT1Mp
CisgICAgcmV0dXJuIGlzQ29udGVudEVkaXRhYmxlKCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZl
bnROYW1lcygpLm1vdXNldXBFdmVudCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygp
Lm1vdXNlZG93bkV2ZW50KSB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkuY2xpY2tF
dmVudCk7CisjZWxzZQogICAgIGlmICghaXNFbGVtZW50Tm9kZSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaWYgKHRvRWxlbWVudCh0aGlzKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gaXNDb250ZW50RWRpdGFibGUoVXNl
clNlbGVjdEFsbElzQWx3YXlzTm9uRWRpdGFibGUpIHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50
TmFtZXMoKS5tb3VzZXVwRXZlbnQpIHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5t
b3VzZWRvd25FdmVudCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLmNsaWNrRXZl
bnQpIHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5ET01BY3RpdmF0ZUV2ZW50KTsK
KyNlbmRpZgorfQorCitib29sIE5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZVdoZWVsRXZlbnRzKCkK
K3sKKyAgICByZXR1cm4gaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNld2hlZWxF
dmVudCk7CiB9CiAKIGJvb2wgTm9kZTo6d2lsbFJlc3BvbmRUb1RvdWNoRXZlbnRzKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCmluZGV4IDI0Yjk2ZjJlZDdhYmFlN2RiYzA5NDA0MmVkZDI1YmNmZjZjYzgwYzguLjQ5Njhj
NDE4ZmQ2NTM5NmNmMDk4OGFhY2M1OTJmNDdmYzZhMjczNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtODIs
NyArODIsNyBAQCBjbGFzcyBUYWdOb2RlTGlzdDsKIGNsYXNzIFVJUmVxdWVzdEV2ZW50OwogI2Vu
ZGlmCiAgICAgCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKSAmJiAhUExBVEZPUk0oSU9TKQogY2xhc3MgVG91Y2hFdmVudDsKICNlbmRpZgogCkBAIC00
MTQsNyArNDE0LDkgQEAgcHVibGljOgogICAgIE5vZGUqIGNoaWxkTm9kZSh1bnNpZ25lZCBpbmRl
eCkgY29uc3Q7CiAKICAgICB2b2lkIGNoZWNrU2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYg
cHJlZml4LCBFeGNlcHRpb25Db2RlJik7CisKICAgICBib29sIGlzRGVzY2VuZGFudE9mKGNvbnN0
IE5vZGUqKSBjb25zdDsKKyAgICBib29sIGlzRGVzY2VuZGFudE9yU2hhZG93RGVzY2VuZGFudE9m
KGNvbnN0IE5vZGUqKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUqKSBjb25z
dDsKICAgICBib29sIGNvbnRhaW5zSW5jbHVkaW5nU2hhZG93RE9NKGNvbnN0IE5vZGUqKSBjb25z
dDsKICAgICBib29sIGNvbnRhaW5zSW5jbHVkaW5nSG9zdEVsZW1lbnRzKGNvbnN0IE5vZGUqKSBj
b25zdDsKQEAgLTUwMSw2ICs1MDMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgd2ls
bFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cygpOwogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9u
ZFRvTW91c2VDbGlja0V2ZW50cygpOworICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91
c2VXaGVlbEV2ZW50cygpOwogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvVG91Y2hFdmVu
dHMoKTsKIAogICAgIHVuc2lnbmVkIHNob3J0IGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKE5vZGUq
KTsKQEAgLTUyNCw3ICs1MjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwYXRjaFN1YnRyZWVN
b2RpZmllZEV2ZW50KCk7CiAgICAgYm9vbCBkaXNwYXRjaERPTUFjdGl2YXRlRXZlbnQoaW50IGRl
dGFpbCwgUGFzc1JlZlB0cjxFdmVudD4gdW5kZXJseWluZ0V2ZW50KTsKIAotI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPUykK
ICAgICBib29sIGRpc3BhdGNoVG91Y2hFdmVudChQYXNzUmVmUHRyPFRvdWNoRXZlbnQ+KTsKICNl
bmRpZgogI2lmIEVOQUJMRShJTkRJRV9VSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKaW5kZXggYzEzNDEy
ZWIxODBkMWZiOTgyYjI1Nzk5ZTgyOTU1YzA2MDAyZmZlNi4uZTEwMDJkODcxZDY5MjZmNjFjY2E1
ZjU1OWEwNTkzMWQ2ODk0MDhhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKQEAgLTIzOSw2ICsyMzks
MzAgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQb3NpdGlvbiYgYSwgY29uc3QgUG9z
aXRpb24mIGIpCiAgICAgcmV0dXJuICEoYSA9PSBiKTsKIH0KIAoraW5saW5lIGJvb2wgb3BlcmF0
b3I8KGNvbnN0IFBvc2l0aW9uJiBhLCBjb25zdCBQb3NpdGlvbiYgYikKK3sKKyAgICBpZiAoYS5p
c051bGwoKSB8fCBiLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGEu
YW5jaG9yTm9kZSgpID09IGIuYW5jaG9yTm9kZSgpKQorICAgICAgICByZXR1cm4gYS5kZXByZWNh
dGVkRWRpdGluZ09mZnNldCgpIDwgYi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOworICAgIHJl
dHVybiBiLmFuY2hvck5vZGUoKS0+Y29tcGFyZURvY3VtZW50UG9zaXRpb24oYS5hbmNob3JOb2Rl
KCkpID09IE5vZGU6OkRPQ1VNRU5UX1BPU0lUSU9OX1BSRUNFRElORzsKK30KKworaW5saW5lIGJv
b2wgb3BlcmF0b3I+KGNvbnN0IFBvc2l0aW9uJiBhLCBjb25zdCBQb3NpdGlvbiYgYikgCit7Cisg
ICAgcmV0dXJuICFhLmlzTnVsbCgpICYmICFiLmlzTnVsbCgpICYmIGEgIT0gYiAmJiBiIDwgYTsK
K30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCBQb3NpdGlvbiYgYSwgY29uc3QgUG9z
aXRpb24mIGIpIAoreworICAgIHJldHVybiAhYS5pc051bGwoKSAmJiAhYi5pc051bGwoKSAmJiAo
YSA9PSBiIHx8IGEgPiBiKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25zdCBQb3Np
dGlvbiYgYSwgY29uc3QgUG9zaXRpb24mIGIpIAoreworICAgIHJldHVybiAhYS5pc051bGwoKSAm
JiAhYi5pc051bGwoKSAmJiAoYSA9PSBiIHx8IGEgPCBiKTsKK30KKwogLy8gV2UgZGVmaW5lIHBv
c2l0aW9uIGNyZWF0aW9uIGZ1bmN0aW9ucyB0byBtYWtlIGNhbGxzaXRlcyBtb3JlIHJlYWRhYmxl
LgogLy8gVGhlc2UgYXJlIGlubGluZSB0byBwcmV2ZW50IHJlZi1jaHVybiB3aGVuIHJldHVybmlu
ZyBhIFBvc2l0aW9uIG9iamVjdC4KIC8vIElmIHdlIGV2ZXIgYWRkIGEgUGFzc1Bvc2l0aW9uIHdl
IGNhbiBtYWtlIHRoZXNlIG5vbi1pbmxpbmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAppbmRleCAxOTE0ZDI1
ZGJiYWJmODZkZjQ0ZWMyNjYxOGJkNWM2MjAwNTYyMWE0Li42NTg5YTNhYzUyYTdlMWY3ZDNjY2Jk
ODljNjIyMTM1NDcxOGY0YzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAgLTUwLDYgKzUwLDEwIEBA
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KIAorI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJTZWxlY3Rpb25SZWN0
LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwpAQCAtMTAwLDYgKzEwNCwxNSBAQCBQYXNzUmVmUHRyPFJhbmdlPiBSYW5nZTo6Y3Jl
YXRlKERvY3VtZW50JiBvd25lckRvY3VtZW50LCBjb25zdCBQb3NpdGlvbiYgc3RhcnQsCiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBSYW5nZShvd25lckRvY3VtZW50LCBzdGFydC5jb250YWluZXJO
b2RlKCksIHN0YXJ0LmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKSwgZW5kLmNvbnRhaW5l
ck5vZGUoKSwgZW5kLmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKSkpOwogfQogCisjaWYg
UExBVEZPUk0oSU9TKQorUGFzc1JlZlB0cjxSYW5nZT4gUmFuZ2U6OmNyZWF0ZShEb2N1bWVudCYg
b3duZXJEb2N1bWVudCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlU3RhcnQsIGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZUVuZCkKK3sKKyAgICBQb3NpdGlvbiBzdGFydCA9IHZp
c2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwor
ICAgIFBvc2l0aW9uIGVuZCA9IHZpc2libGVFbmQuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNo
b3JlZEVxdWl2YWxlbnQoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJhbmdlKG93bmVyRG9j
dW1lbnQsIHN0YXJ0LmFuY2hvck5vZGUoKSwgc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQo
KSwgZW5kLmFuY2hvck5vZGUoKSwgZW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpKTsKK30K
KyNlbmRpZgorCiBSYW5nZTo6flJhbmdlKCkKIHsKICAgICAvLyBBbHdheXMgZGV0YWNoIChldmVu
IGlmIHdlJ3ZlIGFscmVhZHkgZGV0YWNoZWQpIHRvIGZpeCBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjYwNDQKQEAgLTE2NjAsNiArMTY3MywyOTYgQEAgdm9pZCBSYW5n
ZTo6dGV4dFF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCB1c2VTZWxlY3Rpb25I
ZWlnaHQsIFJhbmdlSW4KICAgICAgICAgKmluRml4ZWQgPSBhbGxGaXhlZCA/IEVudGlyZWx5Rml4
ZWRQb3NpdGlvbiA6IChzb21lRml4ZWQgPyBQYXJ0aWFsbHlGaXhlZFBvc2l0aW9uIDogTm90Rml4
ZWRQb3NpdGlvbik7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCitzdGF0aWMgYm9vbCBpbnRlcnZh
bHNTdWZmaWNpZW50bHlPdmVybGFwKGludCBzdGFydEEsIGludCBlbmRBLCBpbnQgc3RhcnRCLCBp
bnQgZW5kQikKK3sKKyAgICBpZiAoZW5kQSA8PSBzdGFydEEgfHwgZW5kQiA8PSBzdGFydEIpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IGZsb2F0IHN1ZmZpY2llbnRPdmVybGFw
ID0gLjc1OworCisgICAgaW50IGxlbmd0aEEgPSBlbmRBIC0gc3RhcnRBOworICAgIGludCBsZW5n
dGhCID0gZW5kQiAtIHN0YXJ0QjsKKworICAgIGludCBtYXhTdGFydCA9IHN0ZDo6bWF4KHN0YXJ0
QSwgc3RhcnRCKTsKKyAgICBpbnQgbWluRW5kID0gc3RkOjptaW4oZW5kQSwgZW5kQik7CisKKyAg
ICBpZiAobWF4U3RhcnQgPiBtaW5FbmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiBtaW5FbmQgLSBtYXhTdGFydCA+PSBzdWZmaWNpZW50T3ZlcmxhcCAqIHN0ZDo6bWluKGxl
bmd0aEEsIGxlbmd0aEIpOworfQorCisjaWZuZGVmIE5ERUJVRworc3RhdGljIHZvaWQgcHJpbnRS
ZWN0cyhWZWN0b3I8U2VsZWN0aW9uUmVjdD4mIHJlY3RzKQoreworICAgIHNpemVfdCBudW1iZXJP
ZlJlY3RzID0gcmVjdHMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVy
T2ZSZWN0czsgKytpKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXp1XHRbJWQsICVkXSAt
IFslZCwgJWRdXHQlYyAlc1x0aXMgZmlyc3Q6ICVzXHRpcyBsYXN0OiVzXHRjb250YWlucyBzdGFy
dDogJXNcdGNvbnRhaW5zIGVuZDogJXNcdGxpbmU6ICVkXHRydWJ5OiAlc1x0Y29sdW1uOiAlZFxu
IiwKKyAgICAgICAgICAgIGksCisgICAgICAgICAgICByZWN0c1tpXS5yZWN0KCkueCgpLCByZWN0
c1tpXS5yZWN0KCkueSgpLCByZWN0c1tpXS5yZWN0KCkud2lkdGgoKSwgcmVjdHNbaV0ucmVjdCgp
LmhlaWdodCgpLAorICAgICAgICAgICAgcmVjdHNbaV0uaXNIb3Jpem9udGFsKCkgPyAnSCcgOiAn
VicsCisgICAgICAgICAgICByZWN0c1tpXS5kaXJlY3Rpb24oKSA9PSBMVFIgPyAiTFRSIiA6ICJS
VEwiLAorICAgICAgICAgICAgcmVjdHNbaV0uaXNGaXJzdE9uTGluZSgpID8gInllcyIgOiAibm8i
LAorICAgICAgICAgICAgcmVjdHNbaV0uaXNMYXN0T25MaW5lKCkgPyAieWVzIiA6ICJubyIsCisg
ICAgICAgICAgICByZWN0c1tpXS5jb250YWluc1N0YXJ0KCkgPyAieWVzIiA6ICJubyIsCisgICAg
ICAgICAgICByZWN0c1tpXS5jb250YWluc0VuZCgpID8gInllcyIgOiAibm8iLAorICAgICAgICAg
ICAgcmVjdHNbaV0ubGluZU51bWJlcigpLAorICAgICAgICAgICAgcmVjdHNbaV0uaXNSdWJ5VGV4
dCgpID8gInllcyI6ICJubyIsCisgICAgICAgICAgICByZWN0c1tpXS5jb2x1bW5OdW1iZXIoKSk7
CisgICAgfQorICAgIGZwcmludGYoc3RkZXJyLCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS1cbiIpOworfQorI2VuZGlmCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhZGp1c3RM
aW5lSGVpZ2h0T2ZTZWxlY3Rpb25SZWN0cyhWZWN0b3I8U2VsZWN0aW9uUmVjdD4mIHJlY3RzLCBz
aXplX3QgbnVtYmVyT2ZSZWN0cywgaW50IGxpbmVOdW1iZXIsIGludCBsaW5lVG9wLCBpbnQgbGlu
ZUhlaWdodCkKK3sKKyAgICBBU1NFUlQocmVjdHMuc2l6ZSgpID49IG51bWJlck9mUmVjdHMpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSBudW1iZXJPZlJlY3RzOyBpOyApIHsKKyAgICAgICAgLS1pOwor
ICAgICAgICBpZiAocmVjdHNbaV0ubGluZU51bWJlcigpKQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIHJlY3RzW2ldLnNldExpbmVOdW1iZXIobGluZU51bWJlcik7CisgICAgICAgIHJlY3Rz
W2ldLnNldExvZ2ljYWxUb3AobGluZVRvcCk7CisgICAgICAgIHJlY3RzW2ldLnNldExvZ2ljYWxI
ZWlnaHQobGluZUhlaWdodCk7CisgICAgfQorfQorCitzdGF0aWMgU2VsZWN0aW9uUmVjdCBjb2Fs
ZXNjZVNlbGVjdGlvblJlY3RzKGNvbnN0IFNlbGVjdGlvblJlY3QmIG9yaWdpbmFsLCBjb25zdCBT
ZWxlY3Rpb25SZWN0JiBwcmV2aW91cykKK3sKKyAgICBTZWxlY3Rpb25SZWN0IHJlc3VsdCh1bmlv
blJlY3QocHJldmlvdXMucmVjdCgpLCBvcmlnaW5hbC5yZWN0KCkpLCBvcmlnaW5hbC5pc0hvcml6
b250YWwoKSwgb3JpZ2luYWwuY29sdW1uTnVtYmVyKCkpOworICAgIHJlc3VsdC5zZXREaXJlY3Rp
b24ob3JpZ2luYWwuY29udGFpbnNTdGFydCgpIHx8IG9yaWdpbmFsLmNvbnRhaW5zRW5kKCkgPyBv
cmlnaW5hbC5kaXJlY3Rpb24oKSA6IHByZXZpb3VzLmRpcmVjdGlvbigpKTsKKyAgICByZXN1bHQu
c2V0Q29udGFpbnNTdGFydChwcmV2aW91cy5jb250YWluc1N0YXJ0KCkgfHwgb3JpZ2luYWwuY29u
dGFpbnNTdGFydCgpKTsKKyAgICByZXN1bHQuc2V0Q29udGFpbnNFbmQocHJldmlvdXMuY29udGFp
bnNFbmQoKSB8fCBvcmlnaW5hbC5jb250YWluc0VuZCgpKTsKKyAgICByZXN1bHQuc2V0SXNGaXJz
dE9uTGluZShwcmV2aW91cy5pc0ZpcnN0T25MaW5lKCkgfHwgb3JpZ2luYWwuaXNGaXJzdE9uTGlu
ZSgpKTsKKyAgICByZXN1bHQuc2V0SXNMYXN0T25MaW5lKHByZXZpb3VzLmlzTGFzdE9uTGluZSgp
IHx8IG9yaWdpbmFsLmlzTGFzdE9uTGluZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisv
LyBUaGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgaW4gc3Bpcml0IHRvIGFkZExpbmVCb3hSZWN0cywg
YnV0IGFubm90YXRlcyB0aGUgcmV0dXJuZWQgcmVjdGFuZ2xlcworLy8gd2l0aCBhZGRpdGlvbmFs
IHN0YXRlIHdoaWNoIGhlbHBzIGlPUyBkcmF3IHNlbGVjdGlvbnMgaW4gaXRzIHVuaXF1ZSB3YXku
Cit2b2lkIFJhbmdlOjpjb2xsZWN0U2VsZWN0aW9uUmVjdHMoVmVjdG9yPFNlbGVjdGlvblJlY3Q+
JiByZWN0cykKK3sKKyAgICBpZiAoIW1fc3RhcnQuY29udGFpbmVyKCkgfHwgIW1fZW5kLmNvbnRh
aW5lcigpKQorICAgICAgICByZXR1cm47CisKKyAgICBOb2RlKiBzdGFydENvbnRhaW5lciA9IG1f
c3RhcnQuY29udGFpbmVyKCk7CisgICAgTm9kZSogZW5kQ29udGFpbmVyID0gbV9lbmQuY29udGFp
bmVyKCk7CisgICAgaW50IHN0YXJ0T2Zmc2V0ID0gbV9zdGFydC5vZmZzZXQoKTsKKyAgICBpbnQg
ZW5kT2Zmc2V0ID0gbV9lbmQub2Zmc2V0KCk7CisKKyAgICBWZWN0b3I8U2VsZWN0aW9uUmVjdD4g
bmV3UmVjdHM7CisgICAgTm9kZSogc3RvcE5vZGUgPSBwYXN0TGFzdE5vZGUoKTsKKyAgICBib29s
IGhhc0ZsaXBwZWRXcml0aW5nTW9kZSA9IHN0YXJ0Q29udGFpbmVyLT5yZW5kZXJlcigpICYmIHN0
YXJ0Q29udGFpbmVyLT5yZW5kZXJlcigpLT5zdHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdN
b2RlKCk7CisgICAgYm9vbCBjb250YWluc0RpZmZlcmVudFdyaXRpbmdNb2RlcyA9IGZhbHNlOwor
ICAgIGZvciAoTm9kZSogbm9kZSA9IGZpcnN0Tm9kZSgpOyBub2RlICYmIG5vZGUgIT0gc3RvcE5v
ZGU7IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KG5vZGUpKSB7CisgICAgICAgIFJlbmRlck9i
amVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOworICAgICAgICAvLyBPbmx5IGFzayBs
ZWFmIHJlbmRlciBvYmplY3RzIGZvciB0aGVpciBsaW5lIGJveCByZWN0cy4KKyAgICAgICAgaWYg
KHJlbmRlcmVyICYmICFyZW5kZXJlci0+Zmlyc3RDaGlsZFNsb3coKSAmJiByZW5kZXJlci0+c3R5
bGUoKS51c2VyU2VsZWN0KCkgIT0gU0VMRUNUX05PTkUpIHsKKyAgICAgICAgICAgIGJvb2wgaXNT
dGFydE5vZGUgPSByZW5kZXJlci0+bm9kZSgpID09IHN0YXJ0Q29udGFpbmVyOworICAgICAgICAg
ICAgYm9vbCBpc0VuZE5vZGUgPSByZW5kZXJlci0+bm9kZSgpID09IGVuZENvbnRhaW5lcjsKKyAg
ICAgICAgICAgIGlmIChoYXNGbGlwcGVkV3JpdGluZ01vZGUgIT0gcmVuZGVyZXItPnN0eWxlKCku
aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSkKKyAgICAgICAgICAgICAgICBjb250YWluc0Rp
ZmZlcmVudFdyaXRpbmdNb2RlcyA9IHRydWU7CisgICAgICAgICAgICAvLyBGSVhNRTogU2VuZGlu
ZyAwIGZvciB0aGUgc3RhcnRPZmZzZXQgaXMgYSB3ZWlyZCB3YXkgb2YgdGVsbGluZyB0aGUgcmVu
ZGVyZXIgdGhhdCB0aGUgc2VsZWN0aW9uCisgICAgICAgICAgICAvLyBkb2Vzbid0IHN0YXJ0IGlu
c2lkZSBpdCwgc2luY2Ugd2UnbGwgYWxzbyBzZW5kIDAgaWYgdGhlIHNlbGVjdGlvbiAqZG9lcyog
c3RhcnQgaW4gaXQsIGF0IG9mZnNldCAwLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8v
IEZJWE1FOiBTZWxlY3Rpb24gZW5kcG9pbnRzIGFyZW4ndCBhbHdheXMgaW5zaWRlIGxlYXZlcywg
YW5kIHdlIG9ubHkgYnVpbGQgU2VsZWN0aW9uUmVjdHMgZm9yIGxlYXZlcywKKyAgICAgICAgICAg
IC8vIHNvIHdlIGNhbid0IGFjY3VyYXRlbHkgZGV0ZXJtaW5lIHdoaWNoIFNlbGVjdGlvblJlY3Rz
IGNvbnRhaW4gdGhlIHNlbGVjdGlvbiBzdGFydCBhbmQgZW5kIHVzaW5nCisgICAgICAgICAgICAv
LyBvbmx5IHRoZSBvZmZzZXRzIG9mIHRoZSBzdGFydCBhbmQgZW5kLiBXZSBuZWVkIHRvIHBhc3Mg
dGhlIHdob2xlIFJhbmdlLgorICAgICAgICAgICAgaW50IGJlZ2luU2VsZWN0aW9uT2Zmc2V0ID0g
aXNTdGFydE5vZGUgPyBzdGFydE9mZnNldCA6IDA7CisgICAgICAgICAgICBpbnQgZW5kU2VsZWN0
aW9uT2Zmc2V0ID0gaXNFbmROb2RlID8gZW5kT2Zmc2V0IDogc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ+OjptYXgoKTsKKyAgICAgICAgICAgIHJlbmRlcmVyLT5jb2xsZWN0U2VsZWN0aW9uUmVjdHMo
bmV3UmVjdHMsIGJlZ2luU2VsZWN0aW9uT2Zmc2V0LCBlbmRTZWxlY3Rpb25PZmZzZXQpOworICAg
ICAgICAgICAgc2l6ZV90IG51bWJlck9mTmV3UmVjdHMgPSBuZXdSZWN0cy5zaXplKCk7CisgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mTmV3UmVjdHM7ICsraSkgewor
ICAgICAgICAgICAgICAgIFNlbGVjdGlvblJlY3QmIHNlbGVjdGlvblJlY3QgPSBuZXdSZWN0c1tp
XTsKKyAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uUmVjdC5jb250YWluc1N0YXJ0KCkgJiYg
IWlzU3RhcnROb2RlKQorICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0LnNldENvbnRh
aW5zU3RhcnQoZmFsc2UpOworICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb25SZWN0LmNvbnRh
aW5zRW5kKCkgJiYgIWlzRW5kTm9kZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVj
dC5zZXRDb250YWluc0VuZChmYWxzZSk7CisgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvblJl
Y3QubG9naWNhbFdpZHRoKCkgfHwgc2VsZWN0aW9uUmVjdC5sb2dpY2FsSGVpZ2h0KCkpCisgICAg
ICAgICAgICAgICAgICAgIHJlY3RzLmFwcGVuZChuZXdSZWN0c1tpXSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBuZXdSZWN0cy5zaHJpbmsoMCk7CisgICAgICAgIH0KKyAgICB9CisKKyNp
Zm5kZWYgTkRFQlVHCisgICAgcHJpbnRSZWN0cyhyZWN0cyk7CisjZW5kaWYKKworICAgIC8vIFRo
ZSByYW5nZSBjb3VsZCBzcGFuIG92ZXIgbm9kZXMgd2l0aCBkaWZmZXJlbnQgd3JpdGluZyBtb2Rl
cy4KKyAgICAvLyBJZiB0aGlzIGlzIHRoZSBjYXNlLCB3ZSB1c2UgdGhlIHdyaXRpbmcgbW9kZSBv
ZiB0aGUgY29tbW9uIGFuY2VzdG9yLgorICAgIGlmIChjb250YWluc0RpZmZlcmVudFdyaXRpbmdN
b2RlcykgeworICAgICAgICBpZiAoTm9kZSogYW5jZXN0b3IgPSBjb21tb25BbmNlc3RvckNvbnRh
aW5lcihzdGFydENvbnRhaW5lciwgZW5kQ29udGFpbmVyKSkKKyAgICAgICAgICAgIGhhc0ZsaXBw
ZWRXcml0aW5nTW9kZSA9IGFuY2VzdG9yLT5yZW5kZXJlcigpLT5zdHlsZSgpLmlzRmxpcHBlZEJs
b2Nrc1dyaXRpbmdNb2RlKCk7CisgICAgfQorCisgICAgY29uc3Qgc2l6ZV90IG51bWJlck9mUmVj
dHMgPSByZWN0cy5zaXplKCk7CisKKyAgICAvLyBJZiB0aGUgc2VsZWN0aW9uIGVuZHMgaW4gYSBC
UiwgdGhlbiBhZGQgdGhlIGxpbmUgYnJlYWsgYml0IHRvIHRoZSBsYXN0CisgICAgLy8gcmVjdCB3
ZSBoYXZlLiBUaGlzIHdpbGwgY2F1c2UgaXRzIHNlbGVjdGlvbiByZWN0IHRvIGV4dGVuZCB0byB0
aGUKKyAgICAvLyBlbmQgb2YgdGhlIGxpbmUuCisgICAgaWYgKHN0b3BOb2RlICYmIHN0b3BOb2Rl
LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6YnJUYWcpICYmIG51bWJlck9mUmVjdHMpIHsKKyAgICAg
ICAgLy8gT25seSBzZXQgdGhlIGxpbmUgYnJlYWsgYml0IGlmIHRoZSBlbmQgb2YgdGhlIHJhbmdl
IGFjdHVhbGx5CisgICAgICAgIC8vIGV4dGVuZHMgYWxsIHRoZSB3YXkgdG8gaW5jbHVkZSB0aGUg
PGJyPi4gVmlzaWJsZVBvc2l0aW9uIGhlbHBzIHRvCisgICAgICAgIC8vIGZpZ3VyZSB0aGlzIG91
dC4KKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGVuZFBvc2l0aW9uKGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbihlbmRDb250YWluZXIsIGVuZE9mZnNldCksIFZQX0RFRkFVTFRfQUZGSU5JVFkp
OworICAgICAgICBWaXNpYmxlUG9zaXRpb24gYnJQb3NpdGlvbihjcmVhdGVMZWdhY3lFZGl0aW5n
UG9zaXRpb24oc3RvcE5vZGUsIDApLCBWUF9ERUZBVUxUX0FGRklOSVRZKTsKKyAgICAgICAgaWYg
KGVuZFBvc2l0aW9uID09IGJyUG9zaXRpb24pCisgICAgICAgICAgICByZWN0cy5sYXN0KCkuc2V0
SXNMaW5lQnJlYWsodHJ1ZSk7ICAgIAorICAgIH0KKworICAgIGludCBsaW5lVG9wID0gc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKTsKKyAgICBpbnQgbGluZUJvdHRvbSA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50Pjo6bWluKCk7CisgICAgaW50IGxhc3RMaW5lVG9wID0gbGluZVRvcDsK
KyAgICBpbnQgbGFzdExpbmVCb3R0b20gPSBsaW5lQm90dG9tOworICAgIGludCBsaW5lTnVtYmVy
ID0gMDsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZSZWN0czsgKytpKSB7
CisgICAgICAgIGludCBjdXJyZW50UmVjdFRvcCA9IHJlY3RzW2ldLmxvZ2ljYWxUb3AoKTsKKyAg
ICAgICAgaW50IGN1cnJlbnRSZWN0Qm90dG9tID0gY3VycmVudFJlY3RUb3AgKyByZWN0c1tpXS5s
b2dpY2FsSGVpZ2h0KCk7CisKKyAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBjb3VudCB0aGUg
cnVieSB0ZXh0IGFzIGEgc2VwYXJhdGUgbGluZS4KKyAgICAgICAgaWYgKGludGVydmFsc1N1ZmZp
Y2llbnRseU92ZXJsYXAoY3VycmVudFJlY3RUb3AsIGN1cnJlbnRSZWN0Qm90dG9tLCBsaW5lVG9w
LCBsaW5lQm90dG9tKSB8fCAoaSAmJiByZWN0c1tpXS5pc1J1YnlUZXh0KCkpKSB7CisgICAgICAg
ICAgICAvLyBHcm93IHRoZSBjdXJyZW50IGxpbmUgYm91bmRzLgorICAgICAgICAgICAgbGluZVRv
cCA9IHN0ZDo6bWluKGxpbmVUb3AsIGN1cnJlbnRSZWN0VG9wKTsKKyAgICAgICAgICAgIGxpbmVC
b3R0b20gPSBzdGQ6Om1heChsaW5lQm90dG9tLCBjdXJyZW50UmVjdEJvdHRvbSk7CisgICAgICAg
ICAgICAvLyBBdm9pZCBvdmVybGFwIHdpdGggdGhlIHByZXZpb3VzIGxpbmUuCisgICAgICAgICAg
ICBpZiAoIWhhc0ZsaXBwZWRXcml0aW5nTW9kZSkKKyAgICAgICAgICAgICAgICBsaW5lVG9wID0g
c3RkOjptYXgobGFzdExpbmVCb3R0b20sIGxpbmVUb3ApOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGxpbmVCb3R0b20gPSBzdGQ6Om1pbihsYXN0TGluZVRvcCwgbGluZUJvdHRv
bSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhZGp1c3RMaW5lSGVpZ2h0T2ZTZWxl
Y3Rpb25SZWN0cyhyZWN0cywgaSwgbGluZU51bWJlciwgbGluZVRvcCwgbGluZUJvdHRvbSAtIGxp
bmVUb3ApOworICAgICAgICAgICAgaWYgKCFoYXNGbGlwcGVkV3JpdGluZ01vZGUpIHsKKyAgICAg
ICAgICAgICAgICBsYXN0TGluZVRvcCA9IGxpbmVUb3A7CisgICAgICAgICAgICAgICAgaWYgKGN1
cnJlbnRSZWN0Qm90dG9tID49IGxhc3RMaW5lVG9wKSB7CisgICAgICAgICAgICAgICAgICAgIGxh
c3RMaW5lQm90dG9tID0gbGluZUJvdHRvbTsKKyAgICAgICAgICAgICAgICAgICAgbGluZVRvcCA9
IGxhc3RMaW5lQm90dG9tOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIGxpbmVUb3AgPSBjdXJyZW50UmVjdFRvcDsKKyAgICAgICAgICAgICAgICAgICAgbGFz
dExpbmVCb3R0b20gPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBsaW5lQm90dG9tID0gY3VycmVudFJlY3RCb3R0b207
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxhc3RMaW5lQm90dG9tID0g
bGluZUJvdHRvbTsKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudFJlY3RUb3AgPD0gbGFzdExp
bmVCb3R0b20gJiYgaSAmJiByZWN0c1tpXS5jb2x1bW5OdW1iZXIoKSA9PSByZWN0c1tpIC0gMV0u
Y29sdW1uTnVtYmVyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbGFzdExpbmVUb3AgPSBsaW5l
VG9wOworICAgICAgICAgICAgICAgICAgICBsaW5lQm90dG9tID0gbGFzdExpbmVUb3A7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbGFzdExpbmVUb3AgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOworICAgICAgICAgICAgICAgICAgICBsaW5l
Qm90dG9tID0gY3VycmVudFJlY3RCb3R0b207CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGxpbmVUb3AgPSBjdXJyZW50UmVjdFRvcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICsrbGluZU51bWJlcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEFkanVzdCBsaW5l
IGhlaWdodC4KKyAgICBhZGp1c3RMaW5lSGVpZ2h0T2ZTZWxlY3Rpb25SZWN0cyhyZWN0cywgbnVt
YmVyT2ZSZWN0cywgbGluZU51bWJlciwgbGluZVRvcCwgbGluZUJvdHRvbSAtIGxpbmVUb3ApOwor
CisgICAgLy8gU29ydCB0aGUgcmVjdGFuZ2xlcyBhbmQgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBn
YXBzLiBUaGUgcmVjdGFuZ2xlcyBjb3VsZCBiZSB1bnNvcnRlZCB3aGVuCisgICAgLy8gdGhlcmUg
aXMgcnVieSB0ZXh0IGFuZCB3ZSBjb3VsZCBoYXZlIGdhcHMgb24gdGhlIGxpbmUgd2hlbiBhZGph
Y2VudCBlbGVtZW50cyBvbiB0aGUgbGluZQorICAgIC8vIGhhdmUgYSBkaWZmZXJlbnQgb3JpZW50
YXRpb24uCisgICAgc2l6ZV90IGZpcnN0UmVjdFdpdGhDdXJyZW50TGluZU51bWJlciA9IDA7Cisg
ICAgZm9yIChzaXplX3QgY3VycmVudFJlY3QgPSAxOyBjdXJyZW50UmVjdCA8IG51bWJlck9mUmVj
dHM7ICsrY3VycmVudFJlY3QpIHsKKyAgICAgICAgaWYgKHJlY3RzW2N1cnJlbnRSZWN0XS5saW5l
TnVtYmVyKCkgIT0gcmVjdHNbY3VycmVudFJlY3QgLSAxXS5saW5lTnVtYmVyKCkpIHsKKyAgICAg
ICAgICAgIGZpcnN0UmVjdFdpdGhDdXJyZW50TGluZU51bWJlciA9IGN1cnJlbnRSZWN0OworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlY3RzW2N1cnJlbnRS
ZWN0XS5sb2dpY2FsTGVmdCgpID49IHJlY3RzW2N1cnJlbnRSZWN0IC0gMV0ubG9naWNhbExlZnQo
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFNlbGVjdGlvblJlY3Qgc2VsZWN0
aW9uUmVjdCA9IHJlY3RzW2N1cnJlbnRSZWN0XTsKKyAgICAgICAgc2l6ZV90IGk7CisgICAgICAg
IGZvciAoaSA9IGN1cnJlbnRSZWN0OyBpID4gZmlyc3RSZWN0V2l0aEN1cnJlbnRMaW5lTnVtYmVy
ICYmIHNlbGVjdGlvblJlY3QubG9naWNhbExlZnQoKSA8IHJlY3RzW2kgLSAxXS5sb2dpY2FsTGVm
dCgpOyAtLWkpCisgICAgICAgICAgICByZWN0c1tpXSA9IHJlY3RzW2kgLSAxXTsKKyAgICAgICAg
cmVjdHNbaV0gPSBzZWxlY3Rpb25SZWN0OworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGogPSAx
OyBqIDwgbnVtYmVyT2ZSZWN0czsgKytqKSB7CisgICAgICAgIGlmIChyZWN0c1tqXS5saW5lTnVt
YmVyKCkgIT0gcmVjdHNbaiAtIDFdLmxpbmVOdW1iZXIoKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBTZWxlY3Rpb25SZWN0JiBwcmV2aW91c1JlY3QgPSByZWN0c1tqIC0gMV07Cisg
ICAgICAgIGJvb2wgcHJldmlvdXNSZWN0TWF5Tm90UmVhY2hSaWdodEVkZ2UgPSAocHJldmlvdXNS
ZWN0LmRpcmVjdGlvbigpID09IExUUiAmJiBwcmV2aW91c1JlY3QuY29udGFpbnNFbmQoKSkgfHwg
KHByZXZpb3VzUmVjdC5kaXJlY3Rpb24oKSA9PSBSVEwgJiYgcHJldmlvdXNSZWN0LmNvbnRhaW5z
U3RhcnQoKSk7CisgICAgICAgIGlmIChwcmV2aW91c1JlY3RNYXlOb3RSZWFjaFJpZ2h0RWRnZSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpbnQgYWRqdXN0ZWRXaWR0aCA9IHJlY3Rz
W2pdLmxvZ2ljYWxMZWZ0KCkgLSBwcmV2aW91c1JlY3QubG9naWNhbExlZnQoKTsKKyAgICAgICAg
aWYgKGFkanVzdGVkV2lkdGggPiBwcmV2aW91c1JlY3QubG9naWNhbFdpZHRoKCkpCisgICAgICAg
ICAgICBwcmV2aW91c1JlY3Quc2V0TG9naWNhbFdpZHRoKGFkanVzdGVkV2lkdGgpOworICAgIH0K
KworICAgIGludCBtYXhMaW5lTnVtYmVyID0gbGluZU51bWJlcjsKKworICAgIC8vIEV4dGVuZCBy
ZWN0cyBvdXQgdG8gZWRnZXMgYXMgbmVlZGVkLgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtYmVyT2ZSZWN0czsgKytpKSB7CisgICAgICAgIFNlbGVjdGlvblJlY3QmIHNlbGVjdGlvblJl
Y3QgPSByZWN0c1tpXTsKKyAgICAgICAgaWYgKCFzZWxlY3Rpb25SZWN0LmlzTGluZUJyZWFrKCkg
JiYgc2VsZWN0aW9uUmVjdC5saW5lTnVtYmVyKCkgPj0gbWF4TGluZU51bWJlcikKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoc2VsZWN0aW9uUmVjdC5kaXJlY3Rpb24oKSA9PSBS
VEwgJiYgc2VsZWN0aW9uUmVjdC5pc0ZpcnN0T25MaW5lKCkpIHsKKyAgICAgICAgICAgIHNlbGVj
dGlvblJlY3Quc2V0TG9naWNhbFdpZHRoKHNlbGVjdGlvblJlY3QubG9naWNhbFdpZHRoKCkgKyBz
ZWxlY3Rpb25SZWN0LmxvZ2ljYWxMZWZ0KCkgLSBzZWxlY3Rpb25SZWN0Lm1pblgoKSk7CisgICAg
ICAgICAgICBzZWxlY3Rpb25SZWN0LnNldExvZ2ljYWxMZWZ0KHNlbGVjdGlvblJlY3QubWluWCgp
KTsKKyAgICAgICAgfSBlbHNlIGlmIChzZWxlY3Rpb25SZWN0LmRpcmVjdGlvbigpID09IExUUiAm
JiBzZWxlY3Rpb25SZWN0LmlzTGFzdE9uTGluZSgpKQorICAgICAgICAgICAgc2VsZWN0aW9uUmVj
dC5zZXRMb2dpY2FsV2lkdGgoc2VsZWN0aW9uUmVjdC5tYXhYKCkgLSBzZWxlY3Rpb25SZWN0Lmxv
Z2ljYWxMZWZ0KCkpOworICAgIH0KKworICAgIC8vIFVuaW9uIGFsbCB0aGUgcmVjdGFuZ2xlcyBv
biBpbnRlcmlvciBsaW5lcyAoaS5lLiBub3QgZmlyc3Qgb3IgbGFzdCkuCisgICAgLy8gT24gZmly
c3QgYW5kIGxhc3QgbGluZXMsIGp1c3QgYXZvaWQgaGF2aW5nIG92ZXJsYXBzIGJ5IG1lcmdpbmcg
aW50ZXJzZWN0aW5nIHJlY3RhbmdsZXMuCisgICAgVmVjdG9yPFNlbGVjdGlvblJlY3Q+IHVuaW9u
ZWRSZWN0czsKKyAgICBJbnRSZWN0IGludGVyaW9yVW5pb25SZWN0OworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbnVtYmVyT2ZSZWN0czsgKytpKSB7CisgICAgICAgIFNlbGVjdGlvblJlY3Qm
IGN1cnJlbnRSZWN0ID0gcmVjdHNbaV07CisgICAgICAgIGlmIChjdXJyZW50UmVjdC5saW5lTnVt
YmVyKCkgPT0gMSkgeworICAgICAgICAgICAgQVNTRVJUKGludGVyaW9yVW5pb25SZWN0LmlzRW1w
dHkoKSk7CisgICAgICAgICAgICBpZiAoIXVuaW9uZWRSZWN0cy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgICAgICBTZWxlY3Rpb25SZWN0JiBwcmV2aW91c1JlY3QgPSB1bmlvbmVkUmVjdHMubGFz
dCgpOworICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c1JlY3QucmVjdCgpLmludGVyc2VjdHMo
Y3VycmVudFJlY3QucmVjdCgpKSkgeworICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1JlY3Qg
PSBjb2FsZXNjZVNlbGVjdGlvblJlY3RzKGN1cnJlbnRSZWN0LCBwcmV2aW91c1JlY3QpOworICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAvLyBDb3VsZG4ndCBtZXJnZSB3aXRoIHByZXZpb3VzIHJlY3QsIHNv
IGp1c3QgYXBwZW5kaW5nLgorICAgICAgICAgICAgdW5pb25lZFJlY3RzLmFwcGVuZChjdXJyZW50
UmVjdCk7CisgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudFJlY3QubGluZU51bWJlcigpIDwgbWF4
TGluZU51bWJlcikgeworICAgICAgICAgICAgaWYgKGludGVyaW9yVW5pb25SZWN0LmlzRW1wdHko
KSkgeworICAgICAgICAgICAgICAgIC8vIFN0YXJ0IGNvbGxlY3RpbmcgaW50ZXJpb3IgcmVjdHMu
CisgICAgICAgICAgICAgICAgaW50ZXJpb3JVbmlvblJlY3QgPSBjdXJyZW50UmVjdC5yZWN0KCk7
ICAgICAgICAgCisgICAgICAgICAgICB9IGVsc2UgaWYgKGludGVyaW9yVW5pb25SZWN0LmludGVy
c2VjdHMoY3VycmVudFJlY3QucmVjdCgpKQorICAgICAgICAgICAgICAgIHx8IGludGVyaW9yVW5p
b25SZWN0Lm1heFgoKSA9PSBjdXJyZW50UmVjdC5yZWN0KCkueCgpCisgICAgICAgICAgICAgICAg
fHwgaW50ZXJpb3JVbmlvblJlY3QubWF4WSgpID09IGN1cnJlbnRSZWN0LnJlY3QoKS55KCkKKyAg
ICAgICAgICAgICAgICB8fCBpbnRlcmlvclVuaW9uUmVjdC54KCkgPT0gY3VycmVudFJlY3QucmVj
dCgpLm1heFgoKQorICAgICAgICAgICAgICAgIHx8IGludGVyaW9yVW5pb25SZWN0LnkoKSA9PSBj
dXJyZW50UmVjdC5yZWN0KCkubWF4WSgpKSB7CisgICAgICAgICAgICAgICAgLy8gT25seSB1bmlv
biB0aGUgbGluZXMgdGhhdCBhcmUgYXR0YWNoZWQuCisgICAgICAgICAgICAgICAgLy8gRm9yIGlC
b29rcywgdGhlIGludGVyaW9yIGxpbmVzIG1heSBjcm9zcyBtdWx0aXBsZSBob3Jpem9udGFsIHBh
Z2VzLgorICAgICAgICAgICAgICAgIGludGVyaW9yVW5pb25SZWN0LnVuaXRlKGN1cnJlbnRSZWN0
LnJlY3QoKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHVuaW9uZWRS
ZWN0cy5hcHBlbmQoU2VsZWN0aW9uUmVjdChpbnRlcmlvclVuaW9uUmVjdCwgY3VycmVudFJlY3Qu
aXNIb3Jpem9udGFsKCksIGN1cnJlbnRSZWN0LmNvbHVtbk51bWJlcigpKSk7CisgICAgICAgICAg
ICAgICAgaW50ZXJpb3JVbmlvblJlY3QgPSBjdXJyZW50UmVjdC5yZWN0KCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBQcm9jZXNzaW5nIGxhc3QgbGlu
ZS4KKyAgICAgICAgICAgIGlmICghaW50ZXJpb3JVbmlvblJlY3QuaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICAgICAgdW5pb25lZFJlY3RzLmFwcGVuZChTZWxlY3Rpb25SZWN0KGludGVyaW9yVW5p
b25SZWN0LCBjdXJyZW50UmVjdC5pc0hvcml6b250YWwoKSwgY3VycmVudFJlY3QuY29sdW1uTnVt
YmVyKCkpKTsKKyAgICAgICAgICAgICAgICBpbnRlcmlvclVuaW9uUmVjdCA9IEludFJlY3QoKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQVNTRVJUKCF1bmlvbmVkUmVjdHMuaXNFbXB0
eSgpKTsKKyAgICAgICAgICAgIFNlbGVjdGlvblJlY3QmIHByZXZpb3VzUmVjdCA9IHVuaW9uZWRS
ZWN0cy5sYXN0KCk7CisgICAgICAgICAgICBpZiAocHJldmlvdXNSZWN0LmxvZ2ljYWxUb3AoKSA9
PSBjdXJyZW50UmVjdC5sb2dpY2FsVG9wKCkgJiYgcHJldmlvdXNSZWN0LnJlY3QoKS5pbnRlcnNl
Y3RzKGN1cnJlbnRSZWN0LnJlY3QoKSkpIHsKKyAgICAgICAgICAgICAgICAvLyBwcmV2aW91c1Jl
Y3QgaXMgYWxzbyBvbiB0aGUgbGFzdCBsaW5lLCBhbmQgaW50ZXJzZWN0cyB0aGUgY3VycmVudCBv
bmUuCisgICAgICAgICAgICAgICAgcHJldmlvdXNSZWN0ID0gY29hbGVzY2VTZWxlY3Rpb25SZWN0
cyhjdXJyZW50UmVjdCwgcHJldmlvdXNSZWN0KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIENvdWxkbid0IG1lcmdlIHdpdGggcHJldmlv
dXMgcmVjdCwgc28ganVzdCBhcHBlbmRpbmcuCisgICAgICAgICAgICB1bmlvbmVkUmVjdHMuYXBw
ZW5kKGN1cnJlbnRSZWN0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJlY3RzLnN3YXAodW5p
b25lZFJlY3RzKTsKK30KKyNlbmRpZgorCiAjaWZuZGVmIE5ERUJVRwogdm9pZCBSYW5nZTo6Zm9y
bWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9SYW5nZS5oCmluZGV4IDhiNzc4ZmE0OTQ2MDE0ZTNkYzM0ODVlZDg3ZmFkN2ZmMzhhNWUzM2Uu
LmMzNTMzNDY0M2Q1NWNmZTdiOTE1NGQ0MzhlODRmNWNmYWFlMmQ2ZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5o
CkBAIC00NSwxMiArNDUsMjAgQEAgY2xhc3MgRmxvYXRRdWFkOwogY2xhc3MgTm9kZTsKIGNsYXNz
IE5vZGVXaXRoSW5kZXg7CiBjbGFzcyBUZXh0OworI2lmIFBMQVRGT1JNKElPUykKK2NsYXNzIFNl
bGVjdGlvblJlY3Q7CitjbGFzcyBWaXNpYmxlUG9zaXRpb247CisjZW5kaWYKIAogY2xhc3MgUmFu
Z2UgOiBwdWJsaWMgUmVmQ291bnRlZDxSYW5nZT4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFJhbmdlPiBjcmVhdGUoRG9jdW1lbnQmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxS
YW5nZT4gY3JlYXRlKERvY3VtZW50JiwgUGFzc1JlZlB0cjxOb2RlPiBzdGFydENvbnRhaW5lciwg
aW50IHN0YXJ0T2Zmc2V0LCBQYXNzUmVmUHRyPE5vZGU+IGVuZENvbnRhaW5lciwgaW50IGVuZE9m
ZnNldCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IGNyZWF0ZShEb2N1bWVudCYsIGNv
bnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAg
Ly8gRklYTUU6IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgc3RhdGljIG5vbi1tZW1iZXIsIG5vbi1m
cmllbmQgZnVuY3Rpb24uCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IGNyZWF0ZShEb2N1
bWVudCYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwor
I2VuZGlmCiAgICAgflJhbmdlKCk7CiAKICAgICBEb2N1bWVudCYgb3duZXJEb2N1bWVudCgpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RG9jdW1lbnQmPihtX293bmVyRG9jdW1lbnQuZ2V0KCkp
OyB9CkBAIC0xMjcsNiArMTM1LDkgQEAgcHVibGljOgogICAgIHZvaWQgdGV4dFF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQgPSBmYWxzZSwgUmFuZ2VJbkZp
eGVkUG9zaXRpb24qID0gMCkgY29uc3Q7CiAgICAgdm9pZCBnZXRCb3JkZXJBbmRUZXh0UXVhZHMo
VmVjdG9yPEZsb2F0UXVhZD4mKSBjb25zdDsKICAgICBGbG9hdFJlY3QgYm91bmRpbmdSZWN0KCkg
Y29uc3Q7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIHZvaWQgY29sbGVjdFNlbGVjdGlvblJlY3Rz
KFZlY3RvcjxTZWxlY3Rpb25SZWN0PiYpOworI2VuZGlmCiAKICAgICB2b2lkIG5vZGVDaGlsZHJl
bkNoYW5nZWQoQ29udGFpbmVyTm9kZSYpOwogICAgIHZvaWQgbm9kZUNoaWxkcmVuV2lsbEJlUmVt
b3ZlZChDb250YWluZXJOb2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHAKaW5kZXggYjVlYmE1ZDRlMzQyMDIzYmYxZTVkNzkzMmYxODFjNjI1NTU5
MDhlYy4uZGQzMGRkMDdjM2QxOTJhMzQyMWRmNDJjNzc0ZmMwMDY1OGMzMzBlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtNDMsNiArNDMs
MTAgQEAKIC8vIEZJWE1FOiBUaGlzIGlzIGEgbGF5ZXJpbmcgdmlvbGF0aW9uLgogI2luY2x1ZGUg
IkpTRE9NV2luZG93LmgiCiAKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICNpbmNsdWRlICJEYXRhYmFz
ZUNvbnRleHQuaCIKICNlbmRpZgpAQCAtMTc3LDYgKzE4MSwxMyBAQCBib29sIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OmNhblN1c3BlbmRBY3RpdmVET01PYmplY3RzKCkKIAogdm9pZCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6
OlJlYXNvbkZvclN1c3BlbnNpb24gd2h5KQogeworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAo
bV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKSB7CisgICAgICAgIEFTU0VSVChtX3JlYXNv
bkZvclN1c3BlbmRpbmdBY3RpdmVET01PYmplY3RzID09IEFjdGl2ZURPTU9iamVjdDo6RG9jdW1l
bnRXaWxsQmVQYXVzZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICAv
LyBObyBwcm90ZWN0aW9uIGFnYWluc3QgbV9hY3RpdmVET01PYmplY3RzIGNoYW5naW5nIGR1cmlu
ZyBpdGVyYXRpb246IHN1c3BlbmQoKSBzaG91bGRuJ3QgZXhlY3V0ZSBhcmJpdHJhcnkgSlMuCiAg
ICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gdHJ1ZTsKICAgICBBY3RpdmVET01PYmpl
Y3RzU2V0OjppdGVyYXRvciBhY3RpdmVPYmplY3RzRW5kID0gbV9hY3RpdmVET01PYmplY3RzLmVu
ZCgpOwpAQCAtMzIwLDYgKzMzMSwxNCBAQCBib29sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRp
c3BhdGNoRXJyb3JFdmVudChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50CiAgICAgaWYg
KCF0YXJnZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAg
ICBpZiAodGFyZ2V0ID09IHRhcmdldC0+dG9ET01XaW5kb3coKSAmJiBpc0RvY3VtZW50KCkpIHsK
KyAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPih0aGlz
KS0+c2V0dGluZ3MoKTsKKyAgICAgICAgaWYgKHNldHRpbmdzICYmICFzZXR0aW5ncy0+c2hvdWxk
RGlzcGF0Y2hKYXZhU2NyaXB0V2luZG93T25FcnJvckV2ZW50cygpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyNlbmRpZgorCiAgICAgU3RyaW5nIG1lc3NhZ2UgPSBlcnJvck1l
c3NhZ2U7CiAgICAgaW50IGxpbmUgPSBsaW5lTnVtYmVyOwogICAgIGludCBjb2x1bW4gPSBjb2x1
bW5OdW1iZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IDM2YmIzZmUyOGY2MzljNjAw
YjUzYzRiMGMyNWNmNWY4YjFmN2MwMTQuLjQyNDZmOTJmMzZjMGU5NTVjZjMxZTAxOTExYmQ3Yzc5
NDE2MTIxZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC0yNDgsMTEgKzI0OCwxNyBA
QCBOb2RlKiBub2RlRnJvbVBvaW50KERvY3VtZW50KiBkb2N1bWVudCwgaW50IHgsIGludCB5LCBM
YXlvdXRQb2ludCogbG9jYWxQb2ludCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBm
bG9hdCBzY2FsZUZhY3RvciA9IGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpICogZnJhbWUtPmZyYW1l
U2NhbGVGYWN0b3IoKTsKKyNpZiAhUExBVEZPUk0oSU9TKQogICAgIEludFBvaW50IHBvaW50ID0g
cm91bmRlZEludFBvaW50KEZsb2F0UG9pbnQoeCAqIHNjYWxlRmFjdG9yICArIGZyYW1lVmlldy0+
c2Nyb2xsWCgpLCB5ICogc2NhbGVGYWN0b3IgKyBmcmFtZVZpZXctPnNjcm9sbFkoKSkpOwogCiAg
ICAgaWYgKCFmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpLmNvbnRhaW5zKHBvaW50KSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisjZWxzZQorICAgIEludFBvaW50IHBvaW50ID0gcm91
bmRlZEludFBvaW50KEZsb2F0UG9pbnQoeCAqIHNjYWxlRmFjdG9yICArIGZyYW1lVmlldy0+YWN0
dWFsU2Nyb2xsWCgpLCB5ICogc2NhbGVGYWN0b3IgKyBmcmFtZVZpZXctPmFjdHVhbFNjcm9sbFko
KSkpOwogCisgICAgaWYgKCFmcmFtZVZpZXctPmFjdHVhbFZpc2libGVDb250ZW50UmVjdCgpLmNv
bnRhaW5zKHBvaW50KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKICAgICBIaXRU
ZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1
ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsKICAg
ICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCk7CiAgICAgZG9jdW1lbnQtPnJlbmRlclZpZXco
KS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFy
Z3VtZW50cy5jcHAKaW5kZXggOWUyZjVlZjNhMGQ4MTlmNzhlMDZiNWQwOGY2Y2MwNmU5NThkYjE1
NC4uM2MxODQ0ODU3ZmU5OThkZWE0OTVhZjgyMTE4MWFhMDEyNmMyODIzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCkBAIC0zNyw2ICszNywxMCBAQAogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCIKIAorI2lm
IFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkgfHwg
UExBVEZPUk0oR1RLKQpAQCAtMjYzLDYgKzI2NywxMyBAQCBzdGF0aWMgRmxvYXRTaXplIGNvbnZl
cnRUb1VzZXJTcGFjZShjb25zdCBGbG9hdFNpemUmIGRldmljZVNpemUsIGZsb2F0IGRldmljZVBp
eAogCiBWaWV3cG9ydEF0dHJpYnV0ZXMgY29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcyhWaWV3cG9y
dEFyZ3VtZW50cyBhcmdzLCBpbnQgZGVza3RvcFdpZHRoLCBpbnQgZGV2aWNlV2lkdGgsIGludCBk
ZXZpY2VIZWlnaHQsIGZsb2F0IGRldmljZVBpeGVsUmF0aW8sIEludFNpemUgdmlzaWJsZVZpZXdw
b3J0KQogeworI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJv
YmFibHkgYmUgZml4ZWQgZWxzZXdoZXJlIG9uIGlPUy4gaU9TIG1heSBvbmx5IHVzZSBjb21wdXRl
Vmlld3BvcnRBdHRyaWJ1dGVzIGZvciB0ZXN0cy4KKyAgICBDR1NpemUgc2NyZWVuU2l6ZSA9IHdr
R2V0Vmlld3BvcnRTY3JlZW5TaXplKCk7CisgICAgdmlzaWJsZVZpZXdwb3J0LnNldFdpZHRoKHNj
cmVlblNpemUud2lkdGgpOworICAgIHZpc2libGVWaWV3cG9ydC5zZXRIZWlnaHQoc2NyZWVuU2l6
ZS5oZWlnaHQpOworI2VuZGlmCisKICAgICBGbG9hdFNpemUgaW5pdGlhbFZpZXdwb3J0U2l6ZSA9
IGNvbnZlcnRUb1VzZXJTcGFjZSh2aXNpYmxlVmlld3BvcnQsIGRldmljZVBpeGVsUmF0aW8pOwog
ICAgIEZsb2F0U2l6ZSBkZXZpY2VTaXplID0gY29udmVydFRvVXNlclNwYWNlKEZsb2F0U2l6ZShk
ZXZpY2VXaWR0aCwgZGV2aWNlSGVpZ2h0KSwgZGV2aWNlUGl4ZWxSYXRpbyk7CiAKQEAgLTQwMCw2
ICs0MTEsMjMgQEAgdm9pZCBzZXRWaWV3cG9ydEZlYXR1cmUoY29uc3QgU3RyaW5nJiBrZXlTdHJp
bmcsIGNvbnN0IFN0cmluZyYgdmFsdWVTdHJpbmcsIERvY3UKICAgICAgICAgcmVwb3J0Vmlld3Bv
cnRXYXJuaW5nKGRvY3VtZW50LCBVbnJlY29nbml6ZWRWaWV3cG9ydEFyZ3VtZW50S2V5RXJyb3Is
IGtleVN0cmluZywgU3RyaW5nKCkpOwogfQogCisjaWYgUExBVEZPUk0oSU9TKQordm9pZCBmaW5h
bGl6ZVZpZXdwb3J0QXJndW1lbnRzKFZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMpCit7Cisg
ICAgQ0dTaXplIHNjcmVlblNpemUgPSB3a0dldFZpZXdwb3J0U2NyZWVuU2l6ZSgpOworCisgICAg
aWYgKGFyZ3VtZW50cy53aWR0aCA9PSBWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVEZXZpY2VXaWR0
aCkKKyAgICAgICAgYXJndW1lbnRzLndpZHRoID0gc2NyZWVuU2l6ZS53aWR0aDsKKyAgICBlbHNl
IGlmIChhcmd1bWVudHMud2lkdGggPT0gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlRGV2aWNlSGVp
Z2h0KQorICAgICAgICBhcmd1bWVudHMud2lkdGggPSBzY3JlZW5TaXplLmhlaWdodDsKKworICAg
IGlmIChhcmd1bWVudHMuaGVpZ2h0ID09IFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZURldmljZVdp
ZHRoKQorICAgICAgICBhcmd1bWVudHMuaGVpZ2h0ID0gc2NyZWVuU2l6ZS53aWR0aDsKKyAgICBl
bHNlIGlmIChhcmd1bWVudHMuaGVpZ2h0ID09IFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZURldmlj
ZUhlaWdodCkKKyAgICAgICAgYXJndW1lbnRzLmhlaWdodCA9IHNjcmVlblNpemUuaGVpZ2h0Owor
fQorI2VuZGlmCisKIHN0YXRpYyBjb25zdCBjaGFyKiB2aWV3cG9ydEVycm9yTWVzc2FnZVRlbXBs
YXRlKFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSkKIHsKICAgICBzdGF0aWMgY29uc3QgY2hh
ciogY29uc3QgZXJyb3JzW10gPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmll
d3BvcnRBcmd1bWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5o
CmluZGV4IGM2NDkzNzU4NjQ5OTYzZmU4MzczNWYyMDcxODYzNzA1YTdlNjAwOWIuLmUwNDg3ZjQ0
MzQzZWI4NDI5YzllNGVjYmQxZTY5Nzg5OGM1ZTc4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3
cG9ydEFyZ3VtZW50cy5oCkBAIC02Myw2ICs2MywxMCBAQCBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVu
dHMgewogICAgICAgICBIYW5kaGVsZEZyaWVuZGx5TWV0YSwKICAgICAgICAgTW9iaWxlT3B0aW1p
emVkTWV0YSwKICNlbmRpZgorI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgUGx1Z2luRG9jdW1l
bnQsCisgICAgICAgIEltYWdlRG9jdW1lbnQsCisjZW5kaWYKICAgICAgICAgVmlld3BvcnRNZXRh
LAogICAgICAgICBDU1NEZXZpY2VBZGFwdGF0aW9uCiAgICAgfSB0eXBlOwpAQCAtMTQ0LDYgKzE0
OCwxMCBAQCBmbG9hdCBjb21wdXRlTWluaW11bVNjYWxlRmFjdG9yRm9yQ29udGVudENvbnRhaW5l
ZChjb25zdCBWaWV3cG9ydEF0dHJpYnV0ZXMmIHJlcwogdm9pZCBzZXRWaWV3cG9ydEZlYXR1cmUo
Y29uc3QgU3RyaW5nJiBrZXlTdHJpbmcsIGNvbnN0IFN0cmluZyYgdmFsdWVTdHJpbmcsIERvY3Vt
ZW50Kiwgdm9pZCogZGF0YSk7CiB2b2lkIHJlcG9ydFZpZXdwb3J0V2FybmluZyhEb2N1bWVudCos
IFZpZXdwb3J0RXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50MSwgY29uc3QgU3Ry
aW5nJiByZXBsYWNlbWVudDIpOwogCisjaWYgUExBVEZPUk0oSU9TKQordm9pZCBmaW5hbGl6ZVZp
ZXdwb3J0QXJndW1lbnRzKFZpZXdwb3J0QXJndW1lbnRzJik7CisjZW5kaWYKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVmlld3BvcnRBcmd1bWVudHNfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
bWFrZV9uYW1lcy5wbAppbmRleCBmMDM2Y2ZlNDZhNzZlZmRhYTFiY2Y1NDU0NjBiOTUzMTQ1M2Yz
MzkwLi44NDQzYWMwYTA0MDFjZGQ3NjRiMWRlZWFlMGUzOTI2MzZkNDJjMDEzIDEwMDc1NQotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vbWFrZV9uYW1lcy5wbApAQCAtNjcsNiArNjcsOCBAQCBpZiAoJEVOVntDQ30pIHsKICAgICAk
Z2NjTG9jYXRpb24gPSAkRU5We0NDfTsKIH0gZWxzaWYgKCgkQ29uZmlnOjpDb25maWd7J29zbmFt
ZSd9KSA9fiAvc29sYXJpcy9pKSB7CiAgICAgJGdjY0xvY2F0aW9uID0gIi91c3Ivc2Z3L2Jpbi9n
Y2MiOworfSBlbHNpZiAoJEVOVntTREtST09UfSkgeworICAgIGNob21wKCRnY2NMb2NhdGlvbiA9
IGB4Y3J1biAtZmluZCBjYyAtc2RrICckRU5We1NES1JPT1R9J2ApOwogfSBlbHNlIHsKICAgICAk
Z2NjTG9jYXRpb24gPSAiL3Vzci9iaW4vZ2NjIjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCmluZGV4IGI5YTQyYzYxNGEyMDNlYzk1Y2I1ZmVhYThiZTkxMGMyZWI2
ZTJmZTcuLjQxY2RmNjYzMzFkMzRiZDI5MTAwMTVmNDQxYmZlZDJkYTllNjdhNzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDI4OSw4ICs0Mjg5LDkgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24gd2h5KQog
ICAgICAgICAgICAgc3RvcCgpOwogICAgICAgICAgICAgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihS
ZXF1aXJlUGFnZUNvbnNlbnRUb1Jlc3VtZU1lZGlhUmVzdHJpY3Rpb24pOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgUGFnZVdpbGxCZVN1c3BlbmRlZDoKKyAgICAgICAgY2FzZSBE
b2N1bWVudFdpbGxCZVBhdXNlZDoKICAgICAgICAgY2FzZSBKYXZhU2NyaXB0RGVidWdnZXJQYXVz
ZWQ6CisgICAgICAgIGNhc2UgUGFnZVdpbGxCZVN1c3BlbmRlZDoKICAgICAgICAgY2FzZSBXaWxs
RGVmZXJMb2FkaW5nOgogICAgICAgICAgICAgLy8gRG8gbm90aGluZywgd2UgZG9uJ3QgcGF1c2Ug
bWVkaWEgcGxheWJhY2sgaW4gdGhlc2UgY2FzZXMuCiAgICAgICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggNDg5NDkxYzk0YjQ1NGQ1Yjg1NzM1NDcxYjI5N2RlYzBl
MzMyZmVkMS4uYzVmYWQ0OWEzMWE1NDBlODMwYTk0ODBlNzNkMGYxNGFmNjc1YTVkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTEzNSwxMSArMTM1LDE3IEBAIHN0YXRpYyBjb25zdCBi
b29sIGRlZmF1bHRVbmlmaWVkVGV4dENoZWNrZXJFbmFibGVkID0gZmFsc2U7CiBzdGF0aWMgY29u
c3QgYm9vbCBkZWZhdWx0U21hcnRJbnNlcnREZWxldGVFbmFibGVkID0gdHJ1ZTsKIHN0YXRpYyBj
b25zdCBib29sIGRlZmF1bHRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkID0gZmFsc2U7
CiAKKy8vIFRoaXMgYW1vdW50IG9mIHRpbWUgbXVzdCBoYXZlIGVsYXBzZWQgYmVmb3JlIHdlIHdp
bGwgZXZlbiBjb25zaWRlciBzY2hlZHVsaW5nIGEgbGF5b3V0IHdpdGhvdXQgYSBkZWxheS4KKy8v
IEZJWE1FOiBGb3IgZmFzdGVyIG1hY2hpbmVzIHRoaXMgdmFsdWUgY2FuIHJlYWxseSBiZSBsb3dl
cmVkIHRvIDIwMC4gMjUwIGlzIGFkZXF1YXRlLCBidXQgYSBsaXR0bGUgaGlnaAorLy8gZm9yIGR1
YWwgRzVzLiA6KQorc3RhdGljIGNvbnN0IGludCBsYXlvdXRTY2hlZHVsZVRocmVzaG9sZCA9IDI1
MDsKKwogU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgOiBtX3BhZ2UoMCkKICAg
ICAsIG1fbWVkaWFUeXBlT3ZlcnJpZGUoInNjcmVlbiIpCiAgICAgLCBtX2ZvbnRHZW5lcmljRmFt
aWxpZXMoc3RkOjptYWtlX3VuaXF1ZTxGb250R2VuZXJpY0ZhbWlsaWVzPigpKQogICAgICwgbV9z
dG9yYWdlQmxvY2tpbmdQb2xpY3koU2VjdXJpdHlPcmlnaW46OkFsbG93QWxsU3RvcmFnZSkKKyAg
ICAsIG1fbGF5b3V0SW50ZXJ2YWwobGF5b3V0U2NoZWR1bGVUaHJlc2hvbGQpCiAjaWYgRU5BQkxF
KFRFWFRfQVVUT1NJWklORykKICAgICAsIG1fdGV4dEF1dG9zaXppbmdGb250U2NhbGVGYWN0b3Io
MSkKICNpZiBIQUNLX0ZPUkNFX1RFWFRfQVVUT1NJWklOR19PTl9ERVNLVE9QCkBAIC00NzMsNiAr
NDc5LDEzIEBAIGRvdWJsZSBTZXR0aW5nczo6ZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZhbCgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fcGFnZS0+dGltZXJBbGlnbm1lbnRJbnRlcnZhbCgpOwogfQogCit2
b2lkIFNldHRpbmdzOjpzZXRMYXlvdXRJbnRlcnZhbChpbnQgbGF5b3V0SW50ZXJ2YWwpCit7Cisg
ICAgLy8gRklYTUU6IEl0IHNlZW1zIHdlaXJkIHRoYXQgdGhpcyBmdW5jdGlvbiBtYXkgZGlzcmVn
YXJkIHRoZSBzcGVjaWZpZWQgbGF5b3V0IGludGVydmFsLgorICAgIC8vIFdlIHNob3VsZCBlaXRo
ZXIgZXhwb3NlIGxheW91dFNjaGVkdWxlVGhyZXNob2xkIG9yIGJldHRlciBjb21tdW5pY2F0ZSB0
aGlzIGludmFyaWFudC4KKyAgICBtX2xheW91dEludGVydmFsID0gc3RkOjptYXgobGF5b3V0SW50
ZXJ2YWwsIGxheW91dFNjaGVkdWxlVGhyZXNob2xkKTsKK30KKwogdm9pZCBTZXR0aW5nczo6c2V0
VXNlc1BhZ2VDYWNoZShib29sIHVzZXNQYWdlQ2FjaGUpCiB7CiAgICAgaWYgKG1fdXNlc1BhZ2VD
YWNoZSA9PSB1c2VzUGFnZUNhY2hlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCmluZGV4IDE5ZGJmODJh
YTJmNWY4YWI0MTlkY2FkZDA1OTVjYjBjMjAwOGVkYzYuLjA1MDExNDFhZWIwYWIyNzIwNDA1MTUz
MTQ2NTM1OGVlNDQxOWU3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKQEAgLTE3MSw2ICsxNzEs
MTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RE9NVGltZXJBbGlnbm1lbnRJbnRlcnZhbChkb3Vi
bGUpOwogICAgIGRvdWJsZSBkb21UaW1lckFsaWdubWVudEludGVydmFsKCkgY29uc3Q7CiAKKyAg
ICAvLyBGSVhNRTogQ2hhbmdlIHRoZXNlIG1ldGhvZHMgdG8gdGFrZS9yZXR1cm4gYW4gdW5zaWdu
ZWQgaW50ZWdlciBhZnRlciB3ZSB1cHN0cmVhbSB0aGUgaU9TIHBvcnQuCisgICAgdm9pZCBzZXRM
YXlvdXRJbnRlcnZhbChpbnQpOworICAgIGludCBsYXlvdXRJbnRlcnZhbCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGF5b3V0SW50ZXJ2YWw7IH0KKwogI2lmIEVOQUJMRShISURERU5fUEFHRV9ET01fVElN
RVJfVEhST1RUTElORykKICAgICBib29sIGhpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9oaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nRW5hYmxl
ZDsgfQogICAgIHZvaWQgc2V0SGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0VuYWJsZWQoYm9v
bCk7CkBAIC0yNzYsNiArMjgwLDcgQEAgcHJpdmF0ZToKICAgICBVUkwgbV91c2VyU3R5bGVTaGVl
dExvY2F0aW9uOwogICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxGb250R2VuZXJpY0ZhbWlsaWVz
PiBtX2ZvbnRHZW5lcmljRmFtaWxpZXM7CiAgICAgU2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9j
a2luZ1BvbGljeSBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeTsKKyAgICBpbnQgbV9sYXlvdXRJbnRl
cnZhbDsKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQogICAgIGZsb2F0IG1fdGV4dEF1dG9z
aXppbmdGb250U2NhbGVGYWN0b3I7CiAgICAgSW50U2l6ZSBtX3RleHRBdXRvc2l6aW5nV2luZG93
U2l6ZU92ZXJyaWRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219108</attachid>
            <date>2013-12-12 12:19:28 -0800</date>
            <delta_ts>2013-12-16 16:43:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125646-20131212121930.patch</filename>
            <type>text/plain</type>
            <size>109851</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwNDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmZjNzgyZDAxZjM4Mjdm
MzUyNWMwZmIzYjhjZDcyZGQ5NzQxMmVmZi4uZjY5YjFlZTM3MTZmOTY3OWQ2ZDIzZTYwNGZjMDRj
YTg2MmUzMTA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NiBAQAorMjAxMy0xMi0xMiAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gVXBzdHJlYW0g
V2ViQ29yZS9kb20gY2hhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI1NjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogQWRkZWQgc3ltYm9sIF9fWk43V2ViQ29yZThT
ZXR0aW5nczE3c2V0TGF5b3V0SW50ZXJ2YWxFaSBhbmQgcmVtb3ZlZCBzeW1ib2wKKyAgICAgICAg
X19aTjdXZWJDb3JlMjRjTGF5b3V0U2NoZWR1bGVUaHJlc2hvbGRFLgorICAgICAgICAqIGRvbS9B
Y3RpdmVET01PYmplY3QuaDogQWRkIHN1c3BlbnNpb24gcmVhc29uIERvY3VtZW50V2lsbEJlUGF1
c2VkLgorICAgICAgICAqIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQpOiBPcHQtb3V0IG9mIEVOQUJM
RShWSURFTykgbG9naWMgd2hlbgorICAgICAgICBidWlsZGluZyBmb3IgaU9TLgorICAgICAgICAq
IGRvbS9EZXZpY2VNb3Rpb25DbGllbnQuaDogTWFkZSBjbGFzcyBub24tY29weWFibGUuCisgICAg
ICAgIChXZWJDb3JlOjpEZXZpY2VNb3Rpb25DbGllbnQ6OkRldmljZU1vdGlvbkNsaWVudCk6IEFk
ZGVkOworICAgICAgICAqIGRvbS9EZXZpY2VNb3Rpb25Db250cm9sbGVyLmNwcDogQWRkZWQgRklY
TUUgY29tbWVudCB0byByZWNvbmNpbGUgaU9TIGFuZCBPcGVuU291cmNlIGRpZmZlcmVuY2VzLgor
ICAgICAgICAoV2ViQ29yZTo6RGV2aWNlTW90aW9uQ29udHJvbGxlcjo6c3VzcGVuZFVwZGF0ZXMp
OiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJT1MpLgorICAgICAgICAoV2ViQ29yZTo6RGV2
aWNlTW90aW9uQ29udHJvbGxlcjo6cmVzdW1lVXBkYXRlcyk6IEFkZGVkOyBndWFyZGVkIGJ5IFBM
QVRGT1JNKElPUykuCisgICAgICAgICogZG9tL0RldmljZU1vdGlvbkNvbnRyb2xsZXIuaDogQWRk
ZWQgRklYTUUgY29tbWVudCB0byByZWNvbmNpbGUgaU9TIGFuZCBPcGVuU291cmNlIGRpZmZlcmVu
Y2VzLgorICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oOiBNYWRlIGNsYXNz
IG5vbi1jb3B5YWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50
OjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudCk6IEFkZGVkLgorICAgICAgICAqIGRvbS9EZXZpY2VP
cmllbnRhdGlvbkNvbnRyb2xsZXIuY3BwOiBBZGRlZCBGSVhNRSBjb21tZW50IHRvIHJlY29uY2ls
ZSBpT1MgYW5kIE9wZW5Tb3VyY2UgZGlmZmVyZW5jZXMuCisgICAgICAgIChXZWJDb3JlOjpEZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OnN1c3BlbmRVcGRh
dGVzKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKFdlYkNvcmU6
OkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6cmVzdW1lVXBkYXRlcyk6IEFkZGVkOyBndWFy
ZGVkIGJ5IFBMQVRGT1JNKElPUykuCisgICAgICAgICogZG9tL0RldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlci5oOiBBZGRlZCBGSVhNRSBjb21tZW50IHRvIHJlY29uY2lsZSBpT1MgYW5kIE9wZW5T
b3VyY2UgZGlmZmVyZW5jZXMuCisgICAgICAgICogZG9tL0RldmljZU9yaWVudGF0aW9uRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkRhdGE6OmNyZWF0ZSk6IEFk
ZGVkOyBpT1Mtc3BlY2lmaWMuIEFkZGVkIEZJWE1FIGNvbW1lbnQuCisgICAgICAgIChXZWJDb3Jl
OjpEZXZpY2VPcmllbnRhdGlvbkRhdGE6OkRldmljZU9yaWVudGF0aW9uRGF0YSk6IEFkZGVkIGlP
Uy1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb25EYXRh
Ojpjb21wYXNzSGVhZGluZyk6IEFkZGVkOyBndWFyZGVkIGJ5IFBMQVRGT1JNKElPUykuCisgICAg
ICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkRhdGE6OmNvbXBhc3NBY2N1cmFjeSk6IEFk
ZGVkOyBndWFyZGVkIGJ5IFBMQVRGT1JNKElPUykuCisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VP
cmllbnRhdGlvbkRhdGE6OmNhblByb3ZpZGVDb21wYXNzSGVhZGluZyk6IEFkZGVkOyBndWFyZGVk
IGJ5IFBMQVRGT1JNKElPUykuCisgICAgICAgIChXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkRh
dGE6OmNhblByb3ZpZGVDb21wYXNzQWNjdXJhY3kpOiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9S
TShJT1MpLgorICAgICAgICAqIGRvbS9EZXZpY2VPcmllbnRhdGlvbkRhdGEuaDoKKyAgICAgICAg
KiBkb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5pZGw6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2Rl
LgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6IE1vdmVkIGNvbnN0YW50IGNMYXlvdXRTY2hl
ZHVsZVRocmVzaG9sZCB0byBTZXR0aW5ncy5jcHAgYW5kIHJlbmFtZWQgaXQKKyAgICAgICAgbGF5
b3V0U2NoZWR1bGVUaHJlc2hvbGQgdG93YXJkcyBhbGxvd2luZyBhIHBvcnQgdG8gY29uZmlndXJl
IHRoZSBsYXlvdXQgaW50ZXJ2YWwuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1l
bnQpOiBBZGRlZCBvcHRpb25hbCBhcmd1bWVudCBpc1N5bnRoZXNpemVkLCBkZWZhdWx0cyBmYWxz
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOiBBZGRlZCBpT1Mtc3Bl
Y2lmaWMgY29kZSB0byBkZXN0cm95IHRoZSBkZXZpY2UgbW90aW9uCisgICAgICAgIGFuZCBkZXZp
Y2Ugb3JpZW50YXRpb24gY29udHJvbGxlcnMuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
ZGlkQmVjb21lQ3VycmVudERvY3VtZW50SW5GcmFtZSk6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2Rl
IHdpdGggRklYTUUgY29tbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwcmVwYXJl
Rm9yRGVzdHJ1Y3Rpb24pOiBBZGRlZCBpT1Mtc3BlY2lmaWMgdG91Y2ggZXZlbnQgY29kZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZW1vdmVBbGxFdmVudExpc3RlbmVycyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBsYXRmb3JtU3VzcGVuZE9yU3RvcEFjdGl2
ZURPTU9iamVjdHMpOiBBZGRlZDsgY29tcGlsZXMgdG8gYW4gZW1wdHkgZnVuY3Rpb24gb24KKyAg
ICAgICAgbm9uLWlPUyBwb3J0LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1c3BlbmRB
Y3RpdmVET01PYmplY3RzKTogTW9kaWZpZWQgdG8gY2FsbCBwbGF0Zm9ybVN1c3BlbmRPclN0b3BB
Y3RpdmVET01PYmplY3RzKCkuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVzdW1lQWN0
aXZlRE9NT2JqZWN0cyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN0b3BB
Y3RpdmVET01PYmplY3RzKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1w
bGljaXRDbG9zZSk6IE1vZGlmaWVkIHRvIHF1ZXJ5IFNldHRpbmdzOjpsYXlvdXRJbnRlcnZhbCgp
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om1pbmltdW1MYXlvdXREZWxheSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nlc3NWaWV3cG9ydCk6IEFkZGVkIGlP
Uy1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZVZpZXdw
b3J0QXJndW1lbnRzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpzZXRQYXJzZXJGZWF0dXJl
KTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojpwcm9jZXNzRm9ybWF0RGV0ZWN0aW9uKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZP
Uk0oSU9TKS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpwcm9jZXNzV2ViQXBwT3JpZW50
YXRpb25zKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojppc1RlbGVwaG9uZU51bWJlclBhcnNpbmdFbmFibGVkKTogQWRkZWQ7IGd1
YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRJ
c1RlbGVwaG9uZU51bWJlclBhcnNpbmdBbGxvd2VkKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZP
Uk0oSU9TKS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppc1RlbGVwaG9uZU51bWJlclBh
cnNpbmdBbGxvd2VkKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KTogQWRkZWQgaU9TLXNwZWNp
ZmljIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3VzcGVuZFNjaGVkdWxlZFRh
c2tzKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpkZXZpY2VNb3Rpb25Db250cm9sbGVyKTogQWRkZWQ7IGlPUy1zcGVjaWZpYy4K
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIp
OiBBZGRlZDsgaU9TLXNwZWNpZmljLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkanVz
dEZsb2F0UXVhZHNGb3JTY3JvbGxBbmRBYnNvbHV0ZVpvb21BbmRGcmFtZVNjYWxlKTogQWRkZWQg
aU9TLXNwZWNpZmljIGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRqdXN0Rmxv
YXRSZWN0Rm9yU2Nyb2xsQW5kQWJzb2x1dGVab29tQW5kRnJhbWVTY2FsZSk6IEFkZGVkIGlPUy1z
cGVjaWZpYyBjb2RlLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOiBSZWdpc3RlciBnZXN0dXJl
IGV2ZW50cyBnZXN0dXJle2NoYW5nZSwgZW5kLCBzdGFydH07IGd1YXJkZWQgYnkgRU5BQkxFKElP
U19HRVNUVVJFX0VWRU5UUykuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aXNTeW50aGVz
aXplZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBsYXRmb3JtU3VzcGVu
ZE9yU3RvcEFjdGl2ZURPTU9iamVjdHMpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aWRsOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlci5oOiBBZGRlZCBpT1Mtc3BlY2lmaWMg
Y2hhbmdlcy4gV2Ugc2hvdWxkIGxvb2sgdG8gcmVjb25jaWxlIHRoZSBkaWZmZXJlbmNlcyBiZXR3
ZWVuCisgICAgICAgIGlPUyBhbmQgT3BlblNvdXJjZS4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xMTMw
NjQyMj4uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6QWxsTWFya2Vyczo6QWxs
TWFya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6RG9jdW1lbnRNYXJr
ZXIpOiBBZGRlZDsgaU9TLXNwZWNpZmljLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJr
ZXI6OmFsdGVybmF0aXZlcyk6IEFkZGVkOyBpT1Mtc3BlY2lmaWMuCisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudE1hcmtlcjo6c2V0QWx0ZXJuYXRpdmUpOiBBZGRlZDsgaU9TLXNwZWNpZmljLgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXI6Om1ldGFkYXRhKTogQWRkZWQ7IGlPUy1z
cGVjaWZpYy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyOjpzZXRNZXRhZGF0YSk6
IEFkZGVkOyBpT1Mtc3BlY2lmaWMuCisgICAgICAgICogZG9tL0RvY3VtZW50TWFya2VyQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFk
ZE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFk
ZERpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXNNYXJrZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGREaWN0YXRpb25SZXN1bHRNYXJrZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpzaGlmdE1hcmtlcnMp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBk
b20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpmb2N1cyk6IEFkZCBp
T1Mtc3BlY2lmaWMgd29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzY2OTk3NDE+LgorICAg
ICAgICAqIGRvbS9FbGVtZW50Lmg6IFJlZ2lzdGVyIGdlc3R1cmUgZXZlbnRzIGdlc3R1cmV7Y2hh
bmdlLCBlbmQsIHN0YXJ0fTsgZ3VhcmRlZCBieSBFTkFCTEUoSU9TX0dFU1RVUkVfRVZFTlRTKS4K
KyAgICAgICAgKiBkb20vRXZlbnRDb250ZXh0LmNwcDogT3B0LW91dCBvZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKS1ndWFyZGVkIGNvZGUgd2hlbiBidWlsZGluZyB0aGUgaU9TIHBvcnQuCisgICAgICAg
ICogZG9tL0V2ZW50Q29udGV4dC5oOiBEaXR0by4KKyAgICAgICAgKiBkb20vRXZlbnREaXNwYXRj
aGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UmVsYXRlZE5vZGVSZXNvbHZlcjo6RXZl
bnRSZWxhdGVkTm9kZVJlc29sdmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFdmVudERp
c3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
UGF0aDo6RXZlbnRQYXRoKTogRGl0dG8uCisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDogQWRk
ZWQgZXZlbnRzIHdlYmtpdHtjdXJyZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZCwg
cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkfQorICAgICAgICBhbmQgZ2VzdHVyZXtj
aGFuZ2UsIGVuZCwgc3RhcnR9LgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmluOiBBZGRlZCBl
dmVudCBuYW1lcyBHZXN0dXJlRXZlbnQgYW5kIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5RXZlbnQgY29uZGl0aW9uZWQgb24KKyAgICAgICAgdGhlIG1hY3JvIGRlZmluZXMgRU5BQkxF
X0lPU19HRVNUVVJFX0VWRU5UUyBhbmQgRU5BQkxFX0lPU19BSVJQTEFZLgorICAgICAgICAqIGRv
bS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50c1Njcm9s
bE9mZnNldCk6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6TW91
c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KTogRGl0dG8uCisgICAgICAgICogZG9t
L05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6d2lsbEJlRGVsZXRlZEZyb20pOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRGVzY2VuZGFudE9mKTogRml4ZWQgc3R5
bGUgaXNzdWUgaW4gZnVuY3Rpb24gcHJvdG90eXBlOyBtb3ZlZCAnKicgdG8gdGhlIGxlZnQgc2lk
ZS4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRGVzY2VuZGFudE9yU2hhZG93RGVzY2VuZGFu
dE9mKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjp0cnlBZGRFdmVudExpc3RlbmVyKTogQWRk
ZWQgaU9TLXNwZWNpZmljIGNvZGU7IGFsc28gYWRkZWQgRklYTUUgY29tbWVudC4KKyAgICAgICAg
KFdlYkNvcmU6OnRyeVJlbW92ZUV2ZW50TGlzdGVuZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OmRpc3BhdGNoRXZlbnQpOiBPcHQtb3V0IG9mIEVOQUJMRShUT1VDSF9FVkVOVFMp
LWd1YXJkZWQgY29kZSB3aGVuIGJ1aWxkaW5nIHRoZSBpT1MgcG9ydC4KKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBBZGRlZCBpT1Mtc3BlY2lmaWMgY29kZS4K
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMpOiBB
ZGRlZCBpT1Mtc3BlY2lmaWMgY29kZTsgYWxzbyBhZGRlZCBGSVhNRSBjb21tZW50LgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMpOiBBZGRlZCBp
T1Mtc3BlY2lmaWMgY29kZTsgYWxzbyBhZGRlZCBGSVhNRSBjb21tZW50LgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6d2lsbFJlc3BvbmRUb01vdXNlV2hlZWxFdmVudHMpOiBBZGRlZC4KKyAgICAg
ICAgKiBkb20vTm9kZS5oOgorICAgICAgICAqIGRvbS9Qb3NpdGlvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6b3BlcmF0b3I8KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj4pOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPj0pOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Om9wZXJhdG9yPD0pOiBBZGRlZC4KKyAgICAgICAgKiBkb20vUmFuZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmFuZ2U6OmNyZWF0ZSk6IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlOyBh
bHNvIGFkZGVkIEZJWE1FIGNvbW1lbnQuCisgICAgICAgIChXZWJDb3JlOjppbnRlcnZhbHNTdWZm
aWNpZW50bHlPdmVybGFwKTogQWRkZWQ7IGd1YXJkZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAg
ICAgKFdlYkNvcmU6OnByaW50UmVjdHMpOiBBZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJT1Mp
LgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0TGluZUhlaWdodE9mU2VsZWN0aW9uUmVjdHMpOiBB
ZGRlZDsgZ3VhcmRlZCBieSBQTEFURk9STShJT1MpLgorICAgICAgICAoV2ViQ29yZTo6Y29hbGVz
Y2VTZWxlY3Rpb25SZWN0cyk6IEFkZGVkOyBndWFyZGVkIGJ5IFBMQVRGT1JNKElPUykuCisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZTo6Y29sbGVjdFNlbGVjdGlvblJlY3RzKTogQWRkZWQ7IGd1YXJk
ZWQgYnkgUExBVEZPUk0oSU9TKS4KKyAgICAgICAgKiBkb20vUmFuZ2UuaDoKKyAgICAgICAgKiBk
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6IEFkZGVkIGlPUy1zcGVj
aWZpYyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlz
cGF0Y2hFcnJvckV2ZW50KTogRGl0dG8uCisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpub2RlRnJvbVBvaW50KTogRGl0dG8uCisgICAgICAgICogZG9tL1Zp
ZXdwb3J0QXJndW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVWaWV3cG9ydEF0
dHJpYnV0ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnNldFZpZXdwb3J0RmVhdHVyZSk6
IEFkZGVkIGlPUy1zcGVjaWZpYyBjb2RlLgorICAgICAgICAoV2ViQ29yZTo6ZmluYWxpemVWaWV3
cG9ydEFyZ3VtZW50cyk6IEFkZGVkOyBpT1Mtc3BlY2lmaWMuCisgICAgICAgICogZG9tL1ZpZXdw
b3J0QXJndW1lbnRzLmg6CisgICAgICAgICogZG9tL21ha2VfbmFtZXMucGw6IEFkZGVkIHN1cHBv
cnQgdG8gZmluZCB0aGUgcGF0aCB0byBnY2Mgd2l0aCByZXNwZWN0IHRvIHRoZSBlbnZpcm9ubWVu
dAorICAgICAgICB2YXJpYWJsZSBTREtST09ULgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHA6CisgICAgICAgIChIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kKToKKyAgICAgICAg
KiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5n
cyk6IEluaXRpYWxpemUgc2V0dGluZyBtX2xheW91dEludGVydmFsIHRvIGxheW91dFNjaGVkdWxl
VGhyZXNob2xkLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldExheW91dEludGVydmFs
KTogQWRkZWQuCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6
U2V0dGluZ3M6OmxheW91dEludGVydmFsKTogQWRkZWQuCisKIDIwMTMtMTItMTIgIEFuZHJlYXMg
S2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIFN0b3Agbm90IGNhY2hp
bmcgSFRUUCByZXNvdXJjZXMgd2l0aCAiVmFyeSIgaGVhZGVyIGluIHJlc3BvbnNlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgppbmRleCBkZmJiOTY3NDQ3MjY2MGJiMjk4ZmRjZDI2YzBhNDE3ODU3OGM3NzNi
Li5iMGY2ZDU2ODkzZGI0Y2Y4YzZkMTI5NTZkMDlmYTFiNWM0ZTE1ZmIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgpAQCAtMTE2NCw2ICsxMTY0LDcgQEAgX19aTjdXZWJDb3JlOFNldHRpbmdzMTZzZXRJ
bWFnZXNFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczE2c2V0U2NyaXB0RW5hYmxlZEVi
CiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldFVzZXNQYWdlQ2FjaGVFYgogX19aTjdXZWJDb3Jl
OFNldHRpbmdzMTdzZXRQbHVnaW5zRW5hYmxlZEViCitfX1pON1dlYkNvcmU4U2V0dGluZ3MxN3Nl
dExheW91dEludGVydmFsRWkKIF9fWk43V2ViQ29yZThTZXR0aW5nczE4c2V0RGVmYXVsdEZvbnRT
aXplRWkKIF9fWk43V2ViQ29yZThTZXR0aW5nczE4c2V0Rml4ZWRGb250RmFtaWx5RVJLTjNXVEYx
MkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxOHNldE1p
bmltdW1Gb250U2l6ZUVpCkBAIC0yMjk1LDcgKzIyOTYsNiBAQCBfX1pON1dlYkNvcmUyMXNldFN0
cm9rZUFuZEZpbGxDb2xvckVQOUNHQ29udGV4dFA3Q0dDb2xvcgogX19aTjdXZWJDb3JlMjJIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50MjVjcmVhdGVTaGFkb3dJRnJhbWVTdWJ0cmVlRVJLTjNXVEY2U3Ry
aW5nRQogX19aTjdXZWJDb3JlMjJzdGFydE9mRWRpdGFibGVDb250ZW50RVJLTlNfMTVWaXNpYmxl
UG9zaXRpb25FCiBfX1pON1dlYkNvcmUyM2FwcGxpY2F0aW9uSXNNb2JpbGVNYWlsRXYKLV9fWk43
V2ViQ29yZTI0Y0xheW91dFNjaGVkdWxlVGhyZXNob2xkRQogX19aTjdXZWJDb3JlMjRjcmVhdGVU
ZW1wb3JhcnlEaXJlY3RvcnlFUDhOU1N0cmluZwogX19aTjdXZWJDb3JlMjRwcmV2aW91c1NlbnRl
bmNlUG9zaXRpb25FUktOU18xNVZpc2libGVQb3NpdGlvbkUKIF9fWk43V2ViQ29yZTI0cmVsZWFz
ZUxpbmVCcmVha0l0ZXJhdG9yRVBOU18xN1RleHRCcmVha0l0ZXJhdG9yRQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0FjdGl2ZURPTU9iamVjdC5oCmluZGV4IDZhYjEyZTQxNTkxOWVkM2Q5NTk1MGJlZDk3YThjNmUy
NWFjZTI1ZWMuLjVhMWYzZDEyMWJhMzZiY2JhMzE0ODAxOWE1YzA5OWY0NzMzMzE0YmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKQEAgLTU2LDcgKzU2LDggQEAgcHVibGljOgog
ICAgICAgICBKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQsCiAgICAgICAgIFdpbGxEZWZlckxvYWRp
bmcsCiAgICAgICAgIERvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlLAotICAgICAgICBQYWdlV2ls
bEJlU3VzcGVuZGVkCisgICAgICAgIFBhZ2VXaWxsQmVTdXNwZW5kZWQsCisgICAgICAgIERvY3Vt
ZW50V2lsbEJlUGF1c2VkCiAgICAgfTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuU3VzcGVuZCgpIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKaW5kZXggZDBkYmI0Y2Y4NzIxZjQy
ZDBhNTJmYmFjOTAxOTdlODdlNTQ2NjEwMC4uMTJmMDgyMzdiMjQxNmYyMWJkZjhjNGJiNmEyNTc1
NTJiNTRhOGVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCkBA
IC0zNDksNyArMzQ5LDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246
OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgdHlwZSwgRnJhbWUKICAgICBpZiAoSW1hZ2U6
OnN1cHBvcnRzVHlwZSh0eXBlKSkKICAgICAgICAgcmV0dXJuIEltYWdlRG9jdW1lbnQ6OmNyZWF0
ZShmcmFtZSwgdXJsKTsKIAotI2lmIEVOQUJMRShWSURFTykKKyNpZiBFTkFCTEUoVklERU8pICYm
ICFQTEFURk9STShJT1MpCiAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgdHlwZSBjYW4gYmUg
cGxheWVkIGJ5IG91ciBNZWRpYVBsYXllciwgaWYgc28gY3JlYXRlIGEgTWVkaWFEb2N1bWVudAog
ICAgIC8vIEtleSBzeXN0ZW0gaXMgbm90IGFwcGxpY2FibGUgaGVyZS4KICAgICBET01JbXBsZW1l
bnRhdGlvblN1cHBvcnRzVHlwZUNsaWVudCBjbGllbnQoZnJhbWUgJiYgZnJhbWUtPnNldHRpbmdz
KCkubmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSwgdXJsLmhvc3QoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRGV2aWNlTW90aW9uQ2xpZW50LmgKaW5kZXggODIyYmZlZWMzMjkwODdjZWNhNTk5ZmYxMTQy
YTk5MDMyNjBlYTQyNS4uNzUzM2Y2YzYwOGQ5NGI4Mjc2NWYyMGMwOTc5NTM0MjY0Y2M2NDNiZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25DbGllbnQuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yOCw2ICsyOCw3IEBACiAjZGVmaW5lIERldmljZU1v
dGlvbkNsaWVudF9oCiAKICNpbmNsdWRlICJEZXZpY2VDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNiw4ICszNywxMCBA
QCBjbGFzcyBEZXZpY2VNb3Rpb25EYXRhOwogY2xhc3MgUGFnZTsKIAogY2xhc3MgRGV2aWNlTW90
aW9uQ2xpZW50IDogcHVibGljIERldmljZUNsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoRGV2aWNlTW90aW9uQ2xpZW50KTsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5EZXZpY2VNb3Rp
b25DbGllbnQoKSB7fQorICAgIERldmljZU1vdGlvbkNsaWVudCgpIHsgfQorICAgIHZpcnR1YWwg
fkRldmljZU1vdGlvbkNsaWVudCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250cm9sbGVy
KERldmljZU1vdGlvbkNvbnRyb2xsZXIqKSA9IDA7CiAgICAgdmlydHVhbCBEZXZpY2VNb3Rpb25E
YXRhKiBsYXN0TW90aW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VNb3Rp
b25Db250cm9sbGVyRGVzdHJveWVkKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RldmljZU1vdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rldmlj
ZU1vdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGI1NzM3MDE1ZDY4ZjQ2OTU0YWE2NjMzOTUyNjhh
M2UyZTY0N2M0Y2MuLjg5ZWIwMDI2MjgxZDIyN2ZmMGI3NWY5YzI0ZDJlM2E4MGZhMmNlOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25Db250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uQ29udHJvbGxlci5jcHAKQEAgLTQ2
LDYgKzQ2LDIyIEBAIFBhc3NPd25QdHI8RGV2aWNlTW90aW9uQ29udHJvbGxlcj4gRGV2aWNlTW90
aW9uQ29udHJvbGxlcjo6Y3JlYXRlKERldmljZU1vdGlvbkNsCiAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBEZXZpY2VNb3Rpb25Db250cm9sbGVyKGNsaWVudCkpOwogfQogCisjaWYgUExBVEZPUk0o
SU9TKQorLy8gRklYTUU6IFdlIHNob3VsZCBsb29rIHRvIHJlY29uY2lsZSB0aGUgaU9TIGFuZCBP
cGVuU291cmNlIGRpZmZlcmVuY2VzIHdpdGggdGhpcyBjbGFzcworLy8gc28gdGhhdCB3ZSBjYW4g
ZWl0aGVyIHJlbW92ZSB0aGVzZSBtZXRob2RzIG9yIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TKS1n
dWFyZC4KK3ZvaWQgRGV2aWNlTW90aW9uQ29udHJvbGxlcjo6c3VzcGVuZFVwZGF0ZXMoKQorewor
ICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnN0b3BVcGRhdGluZygpOworfQor
Cit2b2lkIERldmljZU1vdGlvbkNvbnRyb2xsZXI6OnJlc3VtZVVwZGF0ZXMoKQoreworICAgIGlm
IChtX2NsaWVudCAmJiAhbV9saXN0ZW5lcnMuaXNFbXB0eSgpKQorICAgICAgICBtX2NsaWVudC0+
c3RhcnRVcGRhdGluZygpOworfQorI2VuZGlmCisgICAgCiB2b2lkIERldmljZU1vdGlvbkNvbnRy
b2xsZXI6OmRpZENoYW5nZURldmljZU1vdGlvbihEZXZpY2VNb3Rpb25EYXRhKiBkZXZpY2VNb3Rp
b25EYXRhKQogewogICAgIGRpc3BhdGNoRGV2aWNlRXZlbnQoRGV2aWNlTW90aW9uRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuZGV2aWNlbW90aW9uRXZlbnQsIGRldmljZU1vdGlvbkRhdGEpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25Db250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlTW90aW9uQ29udHJvbGxlci5oCmluZGV4IDI5YmY5
MTM0MTRhOGFmZjAxODM5YTZkZDQ2NTU0MDFmYzdjZDIxMDEuLjY2ZDIyMGI5N2FjY2JiNGMxNDM1
MmVkNDVjOWFjNzBhZmQ4MDMxNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZp
Y2VNb3Rpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlv
bkNvbnRyb2xsZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcg
RWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0y
OCw2ICsyOCw3IEBACiAjZGVmaW5lIERldmljZU1vdGlvbkNvbnRyb2xsZXJfaAogCiAjaW5jbHVk
ZSAiRGV2aWNlQ29udHJvbGxlci5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM1LDExICszNiwxOSBAQCBjbGFzcyBEZXZpY2VNb3Rp
b25DbGllbnQ7CiBjbGFzcyBEZXZpY2VNb3Rpb25EYXRhOwogCiBjbGFzcyBEZXZpY2VNb3Rpb25D
b250cm9sbGVyIDogcHVibGljIERldmljZUNvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKERldmljZU1vdGlvbkNvbnRyb2xsZXIpOwogcHVibGljOgogICAgIH5EZXZpY2VNb3Rp
b25Db250cm9sbGVyKCkgeyB9OwogCiAgICAgc3RhdGljIFBhc3NPd25QdHI8RGV2aWNlTW90aW9u
Q29udHJvbGxlcj4gY3JlYXRlKERldmljZU1vdGlvbkNsaWVudCopOwogCisjaWYgUExBVEZPUk0o
SU9TKQorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbG9vayB0byByZWNvbmNpbGUgdGhlIGlPUyBh
bmQgT3BlblNvdXJjZSBkaWZmZXJlbmNlcyB3aXRoIHRoaXMgY2xhc3MKKyAgICAvLyBzbyB0aGF0
IHdlIGNhbiBlaXRoZXIgcmVtb3ZlIHRoZXNlIG1ldGhvZHMgb3IgcmVtb3ZlIHRoZSBQTEFURk9S
TShJT1MpLWd1YXJkLgorICAgIHZvaWQgc3VzcGVuZFVwZGF0ZXMoKTsKKyAgICB2b2lkIHJlc3Vt
ZVVwZGF0ZXMoKTsKKyNlbmRpZgorCiAgICAgdm9pZCBkaWRDaGFuZ2VEZXZpY2VNb3Rpb24oRGV2
aWNlTW90aW9uRGF0YSopOwogICAgIERldmljZU1vdGlvbkNsaWVudCogZGV2aWNlTW90aW9uQ2xp
ZW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlv
bkNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ2xpZW50LmgK
aW5kZXggODVkNjJlYzBkN2JkNDZiZjlhNDYyYzliNTJlY2E5YTQ4MTFlZWIxNy4uNWI1ZDE3Njhi
MDhlZTJjMjIyZmRmOGZkYTlkN2YyMjNmMGNkZDk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RldmljZU9yaWVudGF0aW9uQ2xpZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IDIwMTAsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqIENvcHlyaWdodCAo
QykgMjAxMCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAogICogQ29weXJpZ2h0IChD
KSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CkBAIC0yOCw2ICsyOCw3IEBACiAjZGVmaW5lIERldmljZU9yaWVudGF0aW9uQ2xp
ZW50X2gKIAogI2luY2x1ZGUgIkRldmljZUNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM2LDggKzM3LDEwIEBAIGNsYXNz
IERldmljZU9yaWVudGF0aW9uRGF0YTsKIGNsYXNzIFBhZ2U7CiAKIGNsYXNzIERldmljZU9yaWVu
dGF0aW9uQ2xpZW50IDogcHVibGljIERldmljZUNsaWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRGV2aWNlT3JpZW50YXRpb25DbGllbnQpOwogcHVibGljOgotICAgIHZpcnR1YWwgfkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50KCkge30KKyAgICBEZXZpY2VPcmllbnRhdGlvbkNsaWVudCgp
IHsgfQorICAgIHZpcnR1YWwgfkRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIHNldENvbnRyb2xsZXIoRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKikgPSAw
OwogICAgIHZpcnR1YWwgRGV2aWNlT3JpZW50YXRpb25EYXRhKiBsYXN0T3JpZW50YXRpb24oKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlckRl
c3Ryb3llZCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmll
bnRhdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlci5jcHAKaW5kZXggOTUyNjc2NjUyMTRmMmE2Y2Q2ODAwYzJhZTExZGNiNmFj
ZjdmY2MxNS4uZmY3YjAwNGRkN2Q1YjVkNTRlZDEzNjA3MmRiODIzMjA2ODRiYjNkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5jcHAK
QEAgLTM4LDggKzM4LDE2IEBAIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6RGV2aWNlT3Jp
ZW50YXRpb25Db250cm9sbGVyKFBhZ2UqIHBhZ2UsIERldmljZU9yaWVuCiAgICAgOiBEZXZpY2VD
b250cm9sbGVyKGNsaWVudCkKICAgICAsIG1fcGFnZShwYWdlKQogeworI2lmIFBMQVRGT1JNKElP
UykKKyAgICAvLyBGSVhNRTogVGVtcG9yYXJpbHkgYXZvaWQgYXNzZXJ0aW5nIHdoaWxlIE9wZW5T
b3VyY2UgaXMgdXNpbmcgYSBkaWZmZXJlbnQgZGVzaWduLgorICAgIC8vIFdlIHNob3VsZCByZWNv
bmNpbGUgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gT3BlblNvdXJjZSBhbmQgaU9TIHNvIHRoYXQg
d2UgY2FuCisgICAgLy8gcmVtb3ZlIHRoaXMgY29kZSBwYXRoLgorICAgIGlmIChtX2NsaWVudCkK
KyAgICAgICAgZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKS0+c2V0Q29udHJvbGxlcih0aGlzKTsK
KyNlbHNlCiAgICAgQVNTRVJUKG1fY2xpZW50KTsKICAgICBkZXZpY2VPcmllbnRhdGlvbkNsaWVu
dCgpLT5zZXRDb250cm9sbGVyKHRoaXMpOworI2VuZGlmCiB9CiAKIFBhc3NPd25QdHI8RGV2aWNl
T3JpZW50YXRpb25Db250cm9sbGVyPiBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OmNyZWF0
ZShQYWdlKiBwYWdlLCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudCogY2xpZW50KQpAQCAtNTgsNiAr
NjYsMjEgQEAgRGV2aWNlT3JpZW50YXRpb25DbGllbnQqIERldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlcjo6ZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudCo+KG1fY2xpZW50KTsKIH0KIAorI2lmIFBMQVRGT1JNKElP
UykKKy8vIEZJWE1FOiBXZSBzaG91bGQgbG9vayB0byByZWNvbmNpbGUgdGhlIGlPUyBhbmQgT3Bl
blNvdXJjZSBkaWZmZXJlbmNlcyB3aXRoIHRoaXMgY2xhc3MKKy8vIHNvIHRoYXQgd2UgY2FuIGVp
dGhlciByZW1vdmUgdGhlc2UgbWV0aG9kcyBvciByZW1vdmUgdGhlIFBMQVRGT1JNKElPUyktZ3Vh
cmQuCit2b2lkIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6c3VzcGVuZFVwZGF0ZXMoKQor
eworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnN0b3BVcGRhdGluZygpOwor
fQorCit2b2lkIERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6cmVzdW1lVXBkYXRlcygpCit7
CisgICAgaWYgKG1fY2xpZW50ICYmICFtX2xpc3RlbmVycy5pc0VtcHR5KCkpCisgICAgICAgIG1f
Y2xpZW50LT5zdGFydFVwZGF0aW5nKCk7Cit9CisjZWxzZQogYm9vbCBEZXZpY2VPcmllbnRhdGlv
bkNvbnRyb2xsZXI6Omhhc0xhc3REYXRhKCkKIHsKICAgICByZXR1cm4gZGV2aWNlT3JpZW50YXRp
b25DbGllbnQoKS0+bGFzdE9yaWVudGF0aW9uKCk7CkBAIC02Nyw2ICs5MCw3IEBAIFBhc3NSZWZQ
dHI8RXZlbnQ+IERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6Z2V0TGFzdEV2ZW50KCkKIHsK
ICAgICByZXR1cm4gRGV2aWNlT3JpZW50YXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5k
ZXZpY2VvcmllbnRhdGlvbkV2ZW50LCBkZXZpY2VPcmllbnRhdGlvbkNsaWVudCgpLT5sYXN0T3Jp
ZW50YXRpb24oKSk7CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCiBjb25zdCBjaGFyKiBE
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OnN1cHBsZW1lbnROYW1lKCkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaAppbmRleCAxOWMw
Mjg0YWUyMzU5MzU5MzAwYzliZmZlYjNmNThiNWE1M2I1ZmY2Li40NzgzZjVjY2VhOTBhMmZjOWI4
NjhlNjFhMmZkOWNmMTg2MjA2Mjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2
aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJE
ZXZpY2VDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CisjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzYs
NiArMzcsNyBAQCBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKIGNsYXNzIERldmljZU9y
aWVudGF0aW9uRGF0YTsKIAogY2xhc3MgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyIDogcHVi
bGljIERldmljZUNvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERldmljZU9y
aWVudGF0aW9uQ29udHJvbGxlcik7CiBwdWJsaWM6CiAgICAgfkRldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlcigpIHsgfTsKIApAQCAtNDQsOCArNDYsMTUgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
Q2hhbmdlRGV2aWNlT3JpZW50YXRpb24oRGV2aWNlT3JpZW50YXRpb25EYXRhKik7CiAgICAgRGV2
aWNlT3JpZW50YXRpb25DbGllbnQqIGRldmljZU9yaWVudGF0aW9uQ2xpZW50KCk7CiAKKyNpZiBQ
TEFURk9STShJT1MpCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBsb29rIHRvIHJlY29uY2lsZSB0
aGUgaU9TIGFuZCBPcGVuU291cmNlIGRpZmZlcmVuY2VzIHdpdGggdGhpcyBjbGFzcworICAgIC8v
IHNvIHRoYXQgd2UgY2FuIGVpdGhlciByZW1vdmUgdGhlc2UgbWV0aG9kcyBvciByZW1vdmUgdGhl
IFBMQVRGT1JNKElPUyktZ3VhcmQuCisgICAgdm9pZCBzdXNwZW5kVXBkYXRlcygpOworICAgIHZv
aWQgcmVzdW1lVXBkYXRlcygpOworI2Vsc2UKICAgICB2aXJ0dWFsIGJvb2wgaGFzTGFzdERhdGEo
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RXZlbnQ+IGdldExhc3RFdmVudCgp
IE9WRVJSSURFOworI2VuZGlmCiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5h
bWUoKTsKICAgICBzdGF0aWMgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiBmcm9tKFBhZ2Uq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkRhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRGF0YS5jcHAKaW5kZXgg
NmU3MzAyZmQ3ZjhiYmI1Mjg5YjdmNmU2ZTU1NjE1NDkxOGJmNmFhNC4uZDZhNWYyY2Y0NzNiOWNh
OGFmYWQ4ODY1MjllMzA0NjA2NmI2ZWRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RldmljZU9yaWVudGF0aW9uRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rldmlj
ZU9yaWVudGF0aW9uRGF0YS5jcHAKQEAgLTMzLDI0ICszMyw1MiBAQCBQYXNzUmVmUHRyPERldmlj
ZU9yaWVudGF0aW9uRGF0YT4gRGV2aWNlT3JpZW50YXRpb25EYXRhOjpjcmVhdGUoKQogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgRGV2aWNlT3JpZW50YXRpb25EYXRhKTsKIH0KIAorI2lmIFBMQVRG
T1JNKElPUykKKy8vIEZJWE1FOiBXZSBzaG91bGQgcmVjb25jaWxlIHRoZSBpT1MgYW5kIE9wZW5T
b3VyY2UgZGlmZmVyZW5jZXMuCitQYXNzUmVmUHRyPERldmljZU9yaWVudGF0aW9uRGF0YT4gRGV2
aWNlT3JpZW50YXRpb25EYXRhOjpjcmVhdGUoYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBh
bHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdh
bW1hLCBkb3VibGUgZ2FtbWEsIGJvb2wgY2FuUHJvdmlkZUNvbXBhc3NIZWFkaW5nLCBkb3VibGUg
Y29tcGFzc0hlYWRpbmcsIGJvb2wgY2FuUHJvdmlkZUNvbXBhc3NBY2N1cmFjeSwgZG91YmxlIGNv
bXBhc3NBY2N1cmFjeSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IERldmljZU9yaWVudGF0
aW9uRGF0YShjYW5Qcm92aWRlQWxwaGEsIGFscGhhLCBjYW5Qcm92aWRlQmV0YSwgYmV0YSwgY2Fu
UHJvdmlkZUdhbW1hLCBnYW1tYSwgY2FuUHJvdmlkZUNvbXBhc3NIZWFkaW5nLCBjb21wYXNzSGVh
ZGluZywgY2FuUHJvdmlkZUNvbXBhc3NBY2N1cmFjeSwgY29tcGFzc0FjY3VyYWN5KSk7Cit9Cisj
ZWxzZQogUGFzc1JlZlB0cjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IERldmljZU9yaWVudGF0aW9u
RGF0YTo6Y3JlYXRlKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2Fu
UHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdh
bW1hLCBib29sIGNhblByb3ZpZGVBYnNvbHV0ZSwgYm9vbCBhYnNvbHV0ZSkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IERldmljZU9yaWVudGF0aW9uRGF0YShjYW5Qcm92aWRlQWxwaGEsIGFs
cGhhLCBjYW5Qcm92aWRlQmV0YSwgYmV0YSwgY2FuUHJvdmlkZUdhbW1hLCBnYW1tYSwgY2FuUHJv
dmlkZUFic29sdXRlLCBhYnNvbHV0ZSkpOwogfQorI2VuZGlmCiAKIAogRGV2aWNlT3JpZW50YXRp
b25EYXRhOjpEZXZpY2VPcmllbnRhdGlvbkRhdGEoKQogICAgIDogbV9jYW5Qcm92aWRlQWxwaGEo
ZmFsc2UpCiAgICAgLCBtX2NhblByb3ZpZGVCZXRhKGZhbHNlKQogICAgICwgbV9jYW5Qcm92aWRl
R2FtbWEoZmFsc2UpCisjaWYgIVBMQVRGT1JNKElPUykKICAgICAsIG1fY2FuUHJvdmlkZUFic29s
dXRlKGZhbHNlKQorI2VuZGlmCiAgICAgLCBtX2FscGhhKDApCiAgICAgLCBtX2JldGEoMCkKICAg
ICAsIG1fZ2FtbWEoMCkKKyNpZiBQTEFURk9STShJT1MpCisgICAgLCBtX2NhblByb3ZpZGVDb21w
YXNzSGVhZGluZyhmYWxzZSkKKyAgICAsIG1fY2FuUHJvdmlkZUNvbXBhc3NBY2N1cmFjeShmYWxz
ZSkKKyNlbHNlCiAgICAgLCBtX2Fic29sdXRlKGZhbHNlKQorI2VuZGlmCiB7CiB9CiAKKyNpZiBQ
TEFURk9STShJT1MpCitEZXZpY2VPcmllbnRhdGlvbkRhdGE6OkRldmljZU9yaWVudGF0aW9uRGF0
YShib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRh
LCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSwgYm9vbCBj
YW5Qcm92aWRlQ29tcGFzc0hlYWRpbmcsIGRvdWJsZSBjb21wYXNzSGVhZGluZywgYm9vbCBjYW5Q
cm92aWRlQ29tcGFzc0FjY3VyYWN5LCBkb3VibGUgY29tcGFzc0FjY3VyYWN5KQorICAgIDogbV9j
YW5Qcm92aWRlQWxwaGEoY2FuUHJvdmlkZUFscGhhKQorICAgICwgbV9jYW5Qcm92aWRlQmV0YShj
YW5Qcm92aWRlQmV0YSkKKyAgICAsIG1fY2FuUHJvdmlkZUdhbW1hKGNhblByb3ZpZGVHYW1tYSkK
KyAgICAsIG1fYWxwaGEoYWxwaGEpCisgICAgLCBtX2JldGEoYmV0YSkKKyAgICAsIG1fZ2FtbWEo
Z2FtbWEpCisgICAgLCBtX2NhblByb3ZpZGVDb21wYXNzSGVhZGluZyhjYW5Qcm92aWRlQ29tcGFz
c0hlYWRpbmcpCisgICAgLCBtX2NhblByb3ZpZGVDb21wYXNzQWNjdXJhY3koY2FuUHJvdmlkZUNv
bXBhc3NBY2N1cmFjeSkKKyAgICAsIG1fY29tcGFzc0hlYWRpbmcoY29tcGFzc0hlYWRpbmcpCisg
ICAgLCBtX2NvbXBhc3NBY2N1cmFjeShjb21wYXNzQWNjdXJhY3kpCisjZWxzZQogRGV2aWNlT3Jp
ZW50YXRpb25EYXRhOjpEZXZpY2VPcmllbnRhdGlvbkRhdGEoYm9vbCBjYW5Qcm92aWRlQWxwaGEs
IGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2Fu
UHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEsIGJvb2wgY2FuUHJvdmlkZUFic29sdXRlLCBib29s
IGFic29sdXRlKQogICAgIDogbV9jYW5Qcm92aWRlQWxwaGEoY2FuUHJvdmlkZUFscGhhKQogICAg
ICwgbV9jYW5Qcm92aWRlQmV0YShjYW5Qcm92aWRlQmV0YSkKQEAgLTYwLDYgKzg4LDcgQEAgRGV2
aWNlT3JpZW50YXRpb25EYXRhOjpEZXZpY2VPcmllbnRhdGlvbkRhdGEoYm9vbCBjYW5Qcm92aWRl
QWxwaGEsIGRvdWJsZSBhbHBoYSwKICAgICAsIG1fYmV0YShiZXRhKQogICAgICwgbV9nYW1tYShn
YW1tYSkKICAgICAsIG1fYWJzb2x1dGUoYWJzb2x1dGUpCisjZW5kaWYKIHsKIH0KIApAQCAtNzgs
MTAgKzEwNywxMiBAQCBkb3VibGUgRGV2aWNlT3JpZW50YXRpb25EYXRhOjpnYW1tYSgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fZ2FtbWE7CiB9CiAKKyNpZiAhUExBVEZPUk0oSU9TKQogYm9vbCBEZXZp
Y2VPcmllbnRhdGlvbkRhdGE6OmFic29sdXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9hYnNv
bHV0ZTsKIH0KKyNlbmRpZgogCiBib29sIERldmljZU9yaWVudGF0aW9uRGF0YTo6Y2FuUHJvdmlk
ZUFscGhhKCkgY29uc3QKIHsKQEAgLTk4LDkgKzEyOSwzMyBAQCBib29sIERldmljZU9yaWVudGF0
aW9uRGF0YTo6Y2FuUHJvdmlkZUdhbW1hKCkgY29uc3QKICAgICByZXR1cm4gbV9jYW5Qcm92aWRl
R2FtbWE7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCitkb3VibGUgRGV2aWNlT3JpZW50YXRpb25E
YXRhOjpjb21wYXNzSGVhZGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29tcGFzc0hlYWRp
bmc7Cit9CisKK2RvdWJsZSBEZXZpY2VPcmllbnRhdGlvbkRhdGE6OmNvbXBhc3NBY2N1cmFjeSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29tcGFzc0FjY3VyYWN5OworfQorCitib29sIERldmlj
ZU9yaWVudGF0aW9uRGF0YTo6Y2FuUHJvdmlkZUNvbXBhc3NIZWFkaW5nKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9jYW5Qcm92aWRlQ29tcGFzc0hlYWRpbmc7Cit9CisKK2Jvb2wgRGV2aWNlT3Jp
ZW50YXRpb25EYXRhOjpjYW5Qcm92aWRlQ29tcGFzc0FjY3VyYWN5KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9jYW5Qcm92aWRlQ29tcGFzc0FjY3VyYWN5OworfQorI2VuZGlmCisKKyNpZiAhUExB
VEZPUk0oSU9TKQogYm9vbCBEZXZpY2VPcmllbnRhdGlvbkRhdGE6OmNhblByb3ZpZGVBYnNvbHV0
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY2FuUHJvdmlkZUFic29sdXRlOwogfQorI2VuZGlm
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EZXZpY2VPcmllbnRhdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmll
bnRhdGlvbkRhdGEuaAppbmRleCAxZGY5YjY1OGZhYjg5ZjhlMWE0ZTdhYWJmZDJkYzdlOTM5ZTA2
NTA3Li5mYWNmOTE3MDk0ZTg3NDIwYmI1N2YzMDk4MzZlYzIyZjAwZTViNzE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25EYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRGF0YS5oCkBAIC0zNCw3ICszNCwxMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkRhdGEgOiBwdWJsaWMg
UmVmQ291bnRlZDxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IGNyZWF0ZSgpOworI2lmIFBMQVRGT1JN
KElPUykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZXZpY2VPcmllbnRhdGlvbkRhdGE+IGNyZWF0
ZShib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRh
LCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSwgYm9vbCBj
YW5Qcm92aWRlQ29tcGFzc0hlYWRpbmcsIGRvdWJsZSBjb21wYXNzSGVhZGluZywgYm9vbCBjYW5Q
cm92aWRlQ29tcGFzc0FjY3VyYWN5LCBkb3VibGUgY29tcGFzc0FjY3VyYWN5KTsKKyNlbHNlCiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RGV2aWNlT3JpZW50YXRpb25EYXRhPiBjcmVhdGUoYm9vbCBj
YW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91Ymxl
IGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEsIGJvb2wgY2FuUHJvdmlk
ZUFic29sdXRlID0gZmFsc2UsIGJvb2wgYWJzb2x1dGUgPSBmYWxzZSk7CisjZW5kaWYKIAogICAg
IGRvdWJsZSBhbHBoYSgpIGNvbnN0OwogICAgIGRvdWJsZSBiZXRhKCkgY29uc3Q7CkBAIC00NSwx
OCArNDksMzkgQEAgcHVibGljOgogICAgIGJvb2wgY2FuUHJvdmlkZUdhbW1hKCkgY29uc3Q7CiAg
ICAgYm9vbCBjYW5Qcm92aWRlQWJzb2x1dGUoKSBjb25zdDsKIAorI2lmIFBMQVRGT1JNKElPUykK
KyAgICBkb3VibGUgY29tcGFzc0hlYWRpbmcoKSBjb25zdDsKKyAgICBkb3VibGUgY29tcGFzc0Fj
Y3VyYWN5KCkgY29uc3Q7CisgICAgYm9vbCBjYW5Qcm92aWRlQ29tcGFzc0hlYWRpbmcoKSBjb25z
dDsKKyAgICBib29sIGNhblByb3ZpZGVDb21wYXNzQWNjdXJhY3koKSBjb25zdDsKKyNlbmRpZgor
CiBwcml2YXRlOgogICAgIERldmljZU9yaWVudGF0aW9uRGF0YSgpOworI2lmIFBMQVRGT1JNKElP
UykKKyAgICBEZXZpY2VPcmllbnRhdGlvbkRhdGEoYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJs
ZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlk
ZUdhbW1hLCBkb3VibGUgZ2FtbWEsIGJvb2wgY2FuUHJvdmlkZUNvbXBhc3NIZWFkaW5nLCBkb3Vi
bGUgY29tcGFzc0hlYWRpbmcsIGJvb2wgY2FuUHJvdmlkZUNvbXBhc3NBY2N1cmFjeSwgZG91Ymxl
IGNvbXBhc3NBY2N1cmFjeSk7CisjZWxzZQogICAgIERldmljZU9yaWVudGF0aW9uRGF0YShib29s
IGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3Vi
bGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSwgYm9vbCBjYW5Qcm92
aWRlQWJzb2x1dGUsIGJvb2wgYWJzb2x1dGUpOworI2VuZGlmCiAKICAgICBib29sIG1fY2FuUHJv
dmlkZUFscGhhOwogICAgIGJvb2wgbV9jYW5Qcm92aWRlQmV0YTsKICAgICBib29sIG1fY2FuUHJv
dmlkZUdhbW1hOworI2lmICFQTEFURk9STShJT1MpCiAgICAgYm9vbCBtX2NhblByb3ZpZGVBYnNv
bHV0ZTsKKyNlbmRpZgogICAgIGRvdWJsZSBtX2FscGhhOwogICAgIGRvdWJsZSBtX2JldGE7CiAg
ICAgZG91YmxlIG1fZ2FtbWE7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgYm9vbCBtX2NhblBy
b3ZpZGVDb21wYXNzSGVhZGluZzsKKyAgICBib29sIG1fY2FuUHJvdmlkZUNvbXBhc3NBY2N1cmFj
eTsKKyAgICBkb3VibGUgbV9jb21wYXNzSGVhZGluZzsKKyAgICBkb3VibGUgbV9jb21wYXNzQWNj
dXJhY3k7CisjZWxzZQogICAgIGJvb2wgbV9hYnNvbHV0ZTsKKyNlbmRpZgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9y
aWVudGF0aW9uRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9u
RXZlbnQuaWRsCmluZGV4IDUxZjNmOThjODA5ZTZjNTBkNzY1NGE1M2FhODc1YzM4M2E3YTIyNWYu
LjNiMGQxMTQ5NWI2Nzc0ZTY1ZDI5NGYwYWFkZjUyYjQ2ZDViMmYyMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5pZGwKQEAgLTI5LDYgKzI5LDE4IEBA
CiAgICAgW0N1c3RvbV0gcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBhbHBoYTsKICAgICBbQ3Vz
dG9tXSByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGJldGE7CiAgICAgW0N1c3RvbV0gcmVhZG9u
bHkgYXR0cmlidXRlIGRvdWJsZSBnYW1tYTsKKyNpZiBXVEZfUExBVEZPUk1fSU9TCisgICAgW0N1
c3RvbV0gcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSB3ZWJraXRDb21wYXNzSGVhZGluZzsKKyAg
ICBbQ3VzdG9tXSByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIHdlYmtpdENvbXBhc3NBY2N1cmFj
eTsKKyAgICBbQ3VzdG9tXSB2b2lkIGluaXREZXZpY2VPcmllbnRhdGlvbkV2ZW50KFtEZWZhdWx0
PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGJv
b2xlYW4gYnViYmxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgYm9vbGVhbiBjYW5jZWxhYmxlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZp
bmVkXSBvcHRpb25hbCBkb3VibGUgYWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGRvdWJsZSBiZXRh
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9
VW5kZWZpbmVkXSBvcHRpb25hbCBkb3VibGUgZ2FtbWEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGRvdWJs
ZSBjb21wYXNzSGVhZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZG91YmxlIGNvbXBhc3NBY2N1cmFj
eSk7CisjZWxzZQogICAgIFtDdXN0b21dIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGFic29s
dXRlOwogICAgIFtDdXN0b21dIHZvaWQgaW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQoW0RlZmF1
bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgdHlwZSwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFs
IGJvb2xlYW4gYnViYmxlcywgCkBAIC0zNyw1ICs0OSw2IEBACiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGRv
dWJsZSBiZXRhLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZG91YmxlIGdhbW1hLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRp
b25hbCBib29sZWFuIGFic29sdXRlKTsKKyNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggZTk0ZjI3MzBkYzVhNzhlYjMwZTQyMGEzYTRlYTIzZGY0NzZjZmVjMy4uNDZiNjY4
YmU4NGEyYjVjYzlkMzg2NDNjM2M0MjJjMTMyODg5NWNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCkBAIC0xNzIsNiArMTcyLDIzIEBACiAjaW5jbHVkZSAiVG91Y2hMaXN0LmgiCiAjZW5kaWYK
IAorI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJDU1NGb250U2VsZWN0b3IuaCIKKyNpbmNs
dWRlICJEZXZpY2VNb3Rpb25DbGllbnRJT1MuaCIKKyNpbmNsdWRlICJEZXZpY2VNb3Rpb25Db250
cm9sbGVyLmgiCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnRJT1MuaCIKKyNpbmNs
dWRlICJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlv
bi5oIgorI2luY2x1ZGUgIk5hdmlnYXRvci5oIgorI2luY2x1ZGUgIk5hdmlnYXRvckdlb2xvY2F0
aW9uLmgiCisjaW5jbHVkZSAiV0tDb250ZW50T2JzZXJ2YXRpb24uaCIKKyNpbmNsdWRlICJXZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjZW5kaWYKKworI2lmIEVOQUJMRShJT1NfR0VTVFVSRV9F
VkVOVFMpCisjaW5jbHVkZSAiR2VzdHVyZUV2ZW50LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShN
QVRITUwpCiAjaW5jbHVkZSAiTWF0aE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIk1hdGhNTEVsZW1l
bnRGYWN0b3J5LmgiCkBAIC0yMTQsMTEgKzIzMSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjTWF4V3JpdGVSZWN1cnNpb25EZXB0aCA9IDIx
OwogCi0vLyBUaGlzIGFtb3VudCBvZiB0aW1lIG11c3QgaGF2ZSBlbGFwc2VkIGJlZm9yZSB3ZSB3
aWxsIGV2ZW4gY29uc2lkZXIgc2NoZWR1bGluZyBhIGxheW91dCB3aXRob3V0IGEgZGVsYXkuCi0v
LyBGSVhNRTogRm9yIGZhc3RlciBtYWNoaW5lcyB0aGlzIHZhbHVlIGNhbiByZWFsbHkgYmUgbG93
ZXJlZCB0byAyMDAuICAyNTAgaXMgYWRlcXVhdGUsIGJ1dCBhIGxpdHRsZSBoaWdoCi0vLyBmb3Ig
ZHVhbCBHNXMuIDopCi1zdGF0aWMgY29uc3QgaW50IGNMYXlvdXRTY2hlZHVsZVRocmVzaG9sZCA9
IDI1MDsKLQogLy8gRE9NIExldmVsIDIgc2F5cyAobGV0dGVycyBhZGRlZCk6CiAvLwogLy8gYSkg
TmFtZSBzdGFydCBjaGFyYWN0ZXJzIG11c3QgaGF2ZSBvbmUgb2YgdGhlIGNhdGVnb3JpZXMgTGws
IEx1LCBMbywgTHQsIE5sLgpAQCAtMzc4LDkgKzM5MCwxNCBAQCBib29sIFRleHRBdXRvU2l6aW5n
VHJhaXRzOjppc0RlbGV0ZWRWYWx1ZShjb25zdCBUZXh0QXV0b1NpemluZ0tleSYgdmFsdWUpCiB9
CiAjZW5kaWYKIAotRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1
cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3NlcykKK0RvY3VtZW50OjpEb2N1bWVudChGcmFtZSog
ZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNpZ25lZCBkb2N1bWVudENsYXNzZXMsIGJvb2wgaXNT
eW50aGVzaXplZCkKICAgICA6IENvbnRhaW5lck5vZGUobnVsbHB0ciwgQ3JlYXRlRG9jdW1lbnQp
CiAgICAgLCBUcmVlU2NvcGUodGhpcykKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiBQTEFU
Rk9STShJT1MpCisgICAgLCBtX2hhbmRsaW5nVG91Y2hFdmVudChmYWxzZSkKKyAgICAsIG1fdG91
Y2hFdmVudFJlZ2lvbnNEaXJ0eShmYWxzZSkKKyAgICAsIG1fdG91Y2hFdmVudHNDaGFuZ2VkVGlt
ZXIodGhpcywgJkRvY3VtZW50Ojp0b3VjaEV2ZW50c0NoYW5nZWRUaW1lckZpcmVkKQorI2VuZGlm
CiAgICAgLCBtX3N0eWxlUmVzb2x2ZXJUaHJvd2F3YXlUaW1lcih0aGlzLCAmRG9jdW1lbnQ6OnN0
eWxlUmVzb2x2ZXJUaHJvd2F3YXlUaW1lckZpcmVkLCB0aW1lQmVmb3JlVGhyb3dpbmdBd2F5U3R5
bGVSZXNvbHZlckFmdGVyTGFzdFVzZUluU2Vjb25kcykKICAgICAsIG1fZGlkQ2FsY3VsYXRlU3R5
bGVSZXNvbHZlcihmYWxzZSkKICAgICAsIG1faGFzTm9kZXNXaXRoUGxhY2Vob2xkZXJTdHlsZShm
YWxzZSkKQEAgLTQzNiw2ICs0NTMsNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1l
LCBjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzKQogICAgICwgbV9pblBh
Z2VDYWNoZShmYWxzZSkKICAgICAsIG1fYWNjZXNzS2V5TWFwVmFsaWQoZmFsc2UpCiAgICAgLCBt
X2RvY3VtZW50Q2xhc3Nlcyhkb2N1bWVudENsYXNzZXMpCisgICAgLCBtX2lzU3ludGhlc2l6ZWQo
aXNTeW50aGVzaXplZCkKICAgICAsIG1faXNWaWV3U291cmNlKGZhbHNlKQogICAgICwgbV9zYXdF
bGVtZW50c0luS25vd25OYW1lc3BhY2VzKGZhbHNlKQogICAgICwgbV9pc1NyY2RvY0RvY3VtZW50
KGZhbHNlKQpAQCAtNDU4LDYgKzQ3NiwxNSBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZy
YW1lLCBjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzKQogICAgICwgbV93
cml0ZVJlY3Vyc2lvbkRlcHRoKDApCiAgICAgLCBtX3doZWVsRXZlbnRIYW5kbGVyQ291bnQoMCkK
ICAgICAsIG1fbGFzdEhhbmRsZWRVc2VyR2VzdHVyZVRpbWVzdGFtcCgwKQorI2lmIFBMQVRGT1JN
KElPUykKKyNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQorICAgICwgbV9kZXZpY2VNb3Rp
b25DbGllbnQoRGV2aWNlTW90aW9uQ2xpZW50SU9TOjpjcmVhdGUoKSkKKyAgICAsIG1fZGV2aWNl
TW90aW9uQ29udHJvbGxlcihEZXZpY2VNb3Rpb25Db250cm9sbGVyOjpjcmVhdGUobV9kZXZpY2VN
b3Rpb25DbGllbnQuZ2V0KCkpKQorICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudChEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudElPUzo6Y3JlYXRlKCkpCisgICAgLCBtX2RldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlcihEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OmNyZWF0ZShmcmFtZSA/
IGZyYW1lLT5wYWdlKCkgOiBudWxscHRyLCBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50LmdldCgp
KSkKKyNlbmRpZgorICAgICwgbV9pc1RlbGVwaG9uZU51bWJlclBhcnNpbmdBbGxvd2VkKHRydWUp
CisjZW5kaWYKICAgICAsIG1fcGVuZGluZ1Rhc2tzVGltZXIodGhpcywgJkRvY3VtZW50OjpwZW5k
aW5nVGFza3NUaW1lckZpcmVkKQogICAgICwgbV9zY2hlZHVsZWRUYXNrc0FyZVN1c3BlbmRlZChm
YWxzZSkKICAgICAsIG1fdmlzdWFsVXBkYXRlc0FsbG93ZWQodHJ1ZSkKQEAgLTUzNSw2ICs1NjIs
MTEgQEAgRG9jdW1lbnQ6On5Eb2N1bWVudCgpCiAgICAgQVNTRVJUKCFtX3N0eWxlUmVjYWxjVGlt
ZXIuaXNBY3RpdmUoKSk7CiAgICAgQVNTRVJUKCFtX3BhcmVudFRyZWVTY29wZSk7CiAKKyNpZiBF
TkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKSAmJiBQTEFURk9STShJT1MpCisgICAgbV9kZXZpY2VN
b3Rpb25DbGllbnQtPmRldmljZU1vdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKTsKKyAgICBtX2Rl
dmljZU9yaWVudGF0aW9uQ2xpZW50LT5kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJEZXN0cm95
ZWQoKTsKKyNlbmRpZgorICAgIAogI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQogICAgIGlm
IChtX3RlbXBsYXRlRG9jdW1lbnQpCiAgICAgICAgIG1fdGVtcGxhdGVEb2N1bWVudC0+c2V0VGVt
cGxhdGVEb2N1bWVudEhvc3QobnVsbHB0cik7IC8vIGJhbGFuY2VkIGluIHRlbXBsYXRlRG9jdW1l
bnQoKS4KQEAgLTE5NzksNiArMjAxMSwxNyBAQCB2b2lkIERvY3VtZW50OjpkaWRCZWNvbWVDdXJy
ZW50RG9jdW1lbnRJbkZyYW1lKCkKICAgICAgICAgcGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5u
ZWVkVG91Y2hFdmVudHModHJ1ZSk7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICAv
LyBFbnN1cmUgdGhhdCBkb2N1bWVudCBzY2hlZHVsZWQgdGFzayBzdGF0ZSBtYXRjaGVzIGZyYW1l
IHRpbWVyIHN0YXRlLiBJdCBjYW4gYmUgb3V0IG9mIHN5bmMKKyAgICAvLyBpZiB0aW1lcnMgc3Rh
dGUgY2hhbmdlZCB3aGlsZSB0aGUgZG9jdW1lbnQgd2FzIG5vdCBpbiB0aGUgZnJhbWUgKHBvc3Np
Ymx5IGluIHBhZ2UgY2FjaGUsCisgICAgLy8gb3Igc2ltcGx5IG5ld2x5IGNyZWF0ZWQpLgorICAg
IC8vIEZJWE1FOiBIb3cgZG9lcyB0aGlzIGludGVyYWN0IHdpdGggY3Jvc3MtcGxhdGZvcm0gY29k
ZSBiZWxvdz8KKyAgICBpZiAobV9mcmFtZS0+dGltZXJzUGF1c2VkKCkpCisgICAgICAgIHN1c3Bl
bmRTY2hlZHVsZWRUYXNrcyhBY3RpdmVET01PYmplY3Q6OkRvY3VtZW50V2lsbEJlUGF1c2VkKTsK
KyAgICBlbHNlCisgICAgICAgIHJlc3VtZVNjaGVkdWxlZFRhc2tzKEFjdGl2ZURPTU9iamVjdDo6
RG9jdW1lbnRXaWxsQmVQYXVzZWQpOworI2VuZGlmCisKICAgICBpZiAobV9mcmFtZS0+YWN0aXZl
RE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSkgewogICAgICAgICBzdXNwZW5kU2Ny
aXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CiAgICAgICAgIG1fZnJhbWUtPmFu
aW1hdGlvbigpLnN1c3BlbmRBbmltYXRpb25zRm9yRG9jdW1lbnQodGhpcyk7CkBAIC0yMDM1LDYg
KzIwNzgsMTAgQEAgdm9pZCBEb2N1bWVudDo6ZGVzdHJveVJlbmRlclRyZWUoKQogCiB2b2lkIERv
Y3VtZW50OjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKQogeworI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpICYmIFBMQVRGT1JNKElPUykKKyAgICBjbGVhclRvdWNoRXZlbnRMaXN0ZW5lcnMoKTsKKyNl
bmRpZgorCiAgICAgZGlzY29ubmVjdERlc2NlbmRhbnRGcmFtZXMoKTsKICAgICBpZiAobV9kb21X
aW5kb3cgJiYgbV9mcmFtZSkKICAgICAgICAgbV9kb21XaW5kb3ctPndpbGxEZXRhY2hEb2N1bWVu
dEZyb21GcmFtZSgpOwpAQCAtMjA3OSwxOCArMjEyNiw1NCBAQCB2b2lkIERvY3VtZW50OjpyZW1v
dmVBbGxFdmVudExpc3RlbmVycygpCiAKICAgICBpZiAobV9kb21XaW5kb3cpCiAgICAgICAgIG1f
ZG9tV2luZG93LT5yZW1vdmVBbGxFdmVudExpc3RlbmVycygpOworI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpICYmIFBMQVRGT1JNKElPUykKKyAgICBjbGVhclRvdWNoRXZlbnRMaXN0ZW5lcnMoKTsK
KyNlbmRpZgogICAgIGZvciAoTm9kZSogbm9kZSA9IGZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9
IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSkpCiAgICAgICAgIG5vZGUtPnJlbW92ZUFsbEV2ZW50
TGlzdGVuZXJzKCk7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnBsYXRmb3JtU3VzcGVuZE9yU3RvcEFj
dGl2ZURPTU9iamVjdHMoKQoreworI2lmIFBMQVRGT1JNKElPUykKKyNpZiBFTkFCTEUoREVWSUNF
X09SSUVOVEFUSU9OKQorICAgIGlmIChtX2RldmljZU1vdGlvbkNvbnRyb2xsZXIpCisgICAgICAg
IG1fZGV2aWNlTW90aW9uQ29udHJvbGxlci0+c3VzcGVuZFVwZGF0ZXMoKTsKKyAgICBpZiAobV9k
ZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIpCisgICAgICAgIG1fZGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyLT5zdXNwZW5kVXBkYXRlcygpOworI2VuZGlmCisKKyAgICBpZiAoV2ViVGhyZWFk
Q291bnRPZk9ic2VydmVkQ29udGVudE1vZGlmaWVycygpID4gMCkgeworICAgICAgICBGcmFtZSog
ZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lID8g
ZnJhbWUtPnBhZ2UoKSA6IG51bGxwdHIpCisgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGll
bnQoKS5jbGVhckNvbnRlbnRDaGFuZ2VPYnNlcnZlcnMoZnJhbWUpOworICAgIH0KKyNlbmRpZgor
fQorCiB2b2lkIERvY3VtZW50OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmpl
Y3Q6OlJlYXNvbkZvclN1c3BlbnNpb24gd2h5KQogewogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKHdoeSk7CisgICAgcGxhdGZvcm1TdXNwZW5kT3JT
dG9wQWN0aXZlRE9NT2JqZWN0cygpOwogfQogCiB2b2lkIERvY3VtZW50OjpyZXN1bWVBY3RpdmVE
T01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVuc2lvbiB3aHkpCiB7CiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0cyh3aHkpOwor
CisjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikgJiYgUExBVEZPUk0oSU9TKQorICAgIGlm
IChtX2RldmljZU1vdGlvbkNvbnRyb2xsZXIpCisgICAgICAgIG1fZGV2aWNlTW90aW9uQ29udHJv
bGxlci0+cmVzdW1lVXBkYXRlcygpOworICAgIGlmIChtX2RldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlcikKKyAgICAgICAgbV9kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXItPnJlc3VtZVVwZGF0
ZXMoKTsKKyNlbmRpZgorICAgIC8vIEZJWE1FOiBGb3IgaU9TLCBkbyB3ZSBuZWVkIHRvIGFkZCBj
b250ZW50IGNoYW5nZSBvYnNlcnZlcnMgdGhhdCB3ZXJlIHJlbW92ZWQgaW4gRG9jdW1lbnQ6OnN1
c3BlbmRBY3RpdmVET01PYmplY3RzKCk/Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnN0b3BBY3RpdmVE
T01PYmplY3RzKCkKK3sKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdG9wQWN0aXZlRE9N
T2JqZWN0cygpOworICAgIHBsYXRmb3JtU3VzcGVuZE9yU3RvcEFjdGl2ZURPTU9iamVjdHMoKTsK
IH0KIAogdm9pZCBEb2N1bWVudDo6Y2xlYXJBWE9iamVjdENhY2hlKCkKQEAgLTIzNjgsNyArMjQ1
MSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UoKQogICAgIC8vIGZpcmVzLiBUaGlz
IHdpbGwgaW1wcm92ZSBvbmxvYWQgc2NvcmVzLCBhbmQgb3RoZXIgYnJvd3NlcnMgZG8gaXQuCiAg
ICAgLy8gSWYgdGhleSB3YW5uYSBjaGVhdCwgd2UgY2FuIHRvby4gLWR3aAogCi0gICAgaWYgKGZy
YW1lKCktPm5hdmlnYXRpb25TY2hlZHVsZXIoKS5sb2NhdGlvbkNoYW5nZVBlbmRpbmcoKSAmJiBl
bGFwc2VkVGltZSgpIDwgY0xheW91dFNjaGVkdWxlVGhyZXNob2xkKSB7CisgICAgaWYgKGZyYW1l
KCktPm5hdmlnYXRpb25TY2hlZHVsZXIoKS5sb2NhdGlvbkNoYW5nZVBlbmRpbmcoKSAmJiBlbGFw
c2VkVGltZSgpIDwgc2V0dGluZ3MoKS0+bGF5b3V0SW50ZXJ2YWwoKSkgewogICAgICAgICAvLyBK
dXN0IGJhaWwgb3V0LiBCZWZvcmUgb3IgZHVyaW5nIHRoZSBvbmxvYWQgd2Ugd2VyZSBzaGlmdGVk
IHRvIGFub3RoZXIgcGFnZS4KICAgICAgICAgLy8gVGhlIG9sZCBpLUJlbmNoIHN1aXRlIGRvZXMg
dGhpcy4gV2hlbiB0aGlzIGhhcHBlbnMgZG9uJ3QgYm90aGVyIHBhaW50aW5nIG9yIGxheWluZyBv
dXQuICAgICAgICAKICAgICAgICAgbV9wcm9jZXNzaW5nTG9hZEV2ZW50ID0gZmFsc2U7CkBAIC0y
NDU0LDEwICsyNTM3LDEwIEBAIGludCBEb2N1bWVudDo6bWluaW11bUxheW91dERlbGF5KCkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgaW50IGVsYXBzZWQgPSBlbGFwc2VkVGltZSgpOwot
ICAgIG1fb3Zlck1pbmltdW1MYXlvdXRUaHJlc2hvbGQgPSBlbGFwc2VkID4gY0xheW91dFNjaGVk
dWxlVGhyZXNob2xkOwotICAgIAorICAgIG1fb3Zlck1pbmltdW1MYXlvdXRUaHJlc2hvbGQgPSBl
bGFwc2VkID4gc2V0dGluZ3MoKS0+bGF5b3V0SW50ZXJ2YWwoKTsKKwogICAgIC8vIFdlJ2xsIHdh
bnQgdG8gc2NoZWR1bGUgdGhlIHRpbWVyIHRvIGZpcmUgYXQgdGhlIG1pbmltdW0gbGF5b3V0IHRo
cmVzaG9sZC4KLSAgICByZXR1cm4gc3RkOjptYXgoMCwgY0xheW91dFNjaGVkdWxlVGhyZXNob2xk
IC0gZWxhcHNlZCk7CisgICAgcmV0dXJuIHN0ZDo6bWF4KDAsIHNldHRpbmdzKCktPmxheW91dElu
dGVydmFsKCkgLSBlbGFwc2VkKTsKIH0KIAogaW50IERvY3VtZW50OjplbGFwc2VkVGltZSgpIGNv
bnN0CkBAIC0yODcwLDYgKzI5NTMsMTQgQEAgdm9pZCBEb2N1bWVudDo6cHJvY2Vzc1ZpZXdwb3J0
KGNvbnN0IFN0cmluZyYgZmVhdHVyZXMsIFZpZXdwb3J0QXJndW1lbnRzOjpUeXBlIG8KICAgICBt
X3ZpZXdwb3J0QXJndW1lbnRzID0gVmlld3BvcnRBcmd1bWVudHMob3JpZ2luKTsKICAgICBwcm9j
ZXNzQXJndW1lbnRzKGZlYXR1cmVzLCAodm9pZCopJm1fdmlld3BvcnRBcmd1bWVudHMsICZzZXRW
aWV3cG9ydEZlYXR1cmUpOwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIEZJWE1FOiA8cmRh
cjovL3Byb2JsZW0vODk1NTk1OT4gSW52ZXN0aWdhdGUgbW92aW5nIHRvIFRvVCBXZWJLaXQncyBl
eHRlbmRlZCBWaWV3cG9ydCBJbXBsZW1lbnRhdGlvbgorICAgIC8vIE1vdmluZyB0byBUb1QncyBp
bXBsZW1lbnRhdGlvbiB3b3VsZCBtZWFuIGNhbGxpbmcgZmluZENvbmZpZ3VyYXRpb25Gb3JWaWV3
cG9ydERhdGEsIHdoaWNoIGRvZXMKKyAgICAvLyBib3VuZHMgY2hlY2tpbmcgYW5kIGRldGVybWlu
aW5nIGNvbmNyZXRlIHZhbHVlcyBmb3IgVmFsdWVBdXRvIHdoaWNoIHdlIGFscmVhZHkgZG8gaW4g
VUlLaXQuCisgICAgLy8gVG8gbWFpbnRhaW4gb2xkIGJlaGF2aW9yLCB3ZSBqdXN0IG5lZWQgdG8g
dXBkYXRlIGEgZmV3IHZhbHVlcywgbGVhdmluZyBBdXRvJ3MgZm9yIFVJS2l0LgorICAgIGZpbmFs
aXplVmlld3BvcnRBcmd1bWVudHMobV92aWV3cG9ydEFyZ3VtZW50cyk7CisjZW5kaWYKKwogICAg
IHVwZGF0ZVZpZXdwb3J0QXJndW1lbnRzKCk7CiB9CiAKQEAgLTI4ODAsOSArMjk3MSwzMyBAQCB2
b2lkIERvY3VtZW50Ojp1cGRhdGVWaWV3cG9ydEFyZ3VtZW50cygpCiAgICAgICAgIG1fZGlkRGlz
cGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNDaGFuZ2VkID0gdHJ1ZTsKICNlbmRpZgogICAgICAgICBw
YWdlKCktPmNocm9tZSgpLmRpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKG1fdmll
d3BvcnRBcmd1bWVudHMpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgcGFnZSgpLT5jaHJv
bWUoKS5kaWRSZWNlaXZlRG9jVHlwZShmcmFtZSgpKTsKKyNlbmRpZgogICAgIH0KIH0KIAorI2lm
IFBMQVRGT1JNKElPUykKKy8vIEZJWE1FOiBGaW5kIGEgYmV0dGVyIHBsYWNlIGZvciB0aGlzIGZ1
bmN0aW9uYWxpdHkuCit2b2lkIHNldFBhcnNlckZlYXR1cmUoY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgdmFsdWUsIERvY3VtZW50KiBkb2N1bWVudCwgdm9pZCopCit7CisgICAgaWYg
KGtleSA9PSAidGVsZXBob25lIiAmJiBlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgIm5vIikpCisg
ICAgICAgIGRvY3VtZW50LT5zZXRJc1RlbGVwaG9uZU51bWJlclBhcnNpbmdBbGxvd2VkKGZhbHNl
KTsKK30KKwordm9pZCBEb2N1bWVudDo6cHJvY2Vzc0Zvcm1hdERldGVjdGlvbihjb25zdCBTdHJp
bmcmIGZlYXR1cmVzKQoreworICAgIEFTU0VSVCghZmVhdHVyZXMuaXNOdWxsKCkpOworICAgIHBy
b2Nlc3NBcmd1bWVudHMoZmVhdHVyZXMsIG51bGxwdHIsICZzZXRQYXJzZXJGZWF0dXJlKTsKK30K
Kwordm9pZCBEb2N1bWVudDo6cHJvY2Vzc1dlYkFwcE9yaWVudGF0aW9ucygpCit7CisgICAgaWYg
KFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCisgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVu
dCgpLndlYkFwcE9yaWVudGF0aW9uc1VwZGF0ZWQoKTsKK30KKyNlbmRpZgorCiB2b2lkIERvY3Vt
ZW50Ojpwcm9jZXNzUmVmZXJyZXJQb2xpY3koY29uc3QgU3RyaW5nJiBwb2xpY3kpCiB7CiAgICAg
QVNTRVJUKCFwb2xpY3kuaXNOdWxsKCkpOwpAQCAtNDQwNiw2ICs0NTIxLDI1IEBAIHZvaWQgRG9j
dW1lbnQ6OnN0eWxlUmVzb2x2ZXJUaHJvd2F3YXlUaW1lckZpcmVkKERlZmVycmFibGVPbmVTaG90
VGltZXI8RG9jdW1lbnQ+CiAgICAgY2xlYXJTdHlsZVJlc29sdmVyKCk7CiB9CiAKKyNpZiBQTEFU
Rk9STShJT1MpCisvLyBGSVhNRTogRmluZCBhIGJldHRlciBwbGFjZSBmb3IgdGhpcyBmdW5jdGlv
bmFsaXR5LgorYm9vbCBEb2N1bWVudDo6aXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nRW5hYmxlZCgp
IGNvbnN0Cit7CisgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gdGhpcy0+c2V0dGluZ3MoKTsKKyAg
ICByZXR1cm4gc2V0dGluZ3MgJiYgc2V0dGluZ3MtPnRlbGVwaG9uZU51bWJlclBhcnNpbmdFbmFi
bGVkKCkgJiYgbV9pc1RlbGVwaG9uZU51bWJlclBhcnNpbmdBbGxvd2VkOworfQorCit2b2lkIERv
Y3VtZW50OjpzZXRJc1RlbGVwaG9uZU51bWJlclBhcnNpbmdBbGxvd2VkKGJvb2wgaXNUZWxlcGhv
bmVOdW1iZXJQYXJzaW5nQWxsb3dlZCkKK3sKKyAgICBtX2lzVGVsZXBob25lTnVtYmVyUGFyc2lu
Z0FsbG93ZWQgPSBpc1RlbGVwaG9uZU51bWJlclBhcnNpbmdBbGxvd2VkOworfQorCitib29sIERv
Y3VtZW50Ojppc1RlbGVwaG9uZU51bWJlclBhcnNpbmdBbGxvd2VkKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9pc1RlbGVwaG9uZU51bWJlclBhcnNpbmdBbGxvd2VkOworfQorI2VuZGlmCisKIFBh
c3NSZWZQdHI8WFBhdGhFeHByZXNzaW9uPiBEb2N1bWVudDo6Y3JlYXRlRXhwcmVzc2lvbihjb25z
dCBTdHJpbmcmIGV4cHJlc3Npb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWFBhdGhOU1Jlc29sdmVyKiByZXNvbHZlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25D
b2RlJiBlYykKQEAgLTQ1MTQsNiArNDY0OCwxNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJp
dHlDb250ZXh0KCkKICAgICAvLyBsb2FkaW5nIFVSTCB3aXRoIGEgZnJlc2ggY29udGVudCBzZWN1
cml0eSBwb2xpY3kuCiAgICAgbV9jb29raWVVUkwgPSBtX3VybDsKICAgICBlbmZvcmNlU2FuZGJv
eEZsYWdzKG1fZnJhbWUtPmxvYWRlcigpLmVmZmVjdGl2ZVNhbmRib3hGbGFncygpKTsKKworI2lm
IFBMQVRGT1JNKElPUykKKyAgICAvLyBPbiBpT1Mgd2UgZGlzcGxheSBhdHRhY2htZW50cyBpbmxp
bmUgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSByZXNwb25zZSBpbmNsdWRlcworICAgIC8vIHRo
ZSBIVFRQIGhlYWRlciAiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudCIuIFNvLCB3ZSBl
bmZvcmNlIGEgdW5pcXVlCisgICAgLy8gc2VjdXJpdHkgb3JpZ2luIGZvciBzdWNoIGRvY3VtZW50
cy4gQXMgYW4gb3B0aW1pemF0aW9uLCB3ZSBkb24ndCBuZWVkIHRvIHBhcnNlCisgICAgLy8gdGhl
IHJlc3BvbmRlIGhlYWRlciAoaS5lLiBjYWxsIFJlc291cmNlUmVzcG9uc2U6OmlzQXR0YWNobWVu
dCgpKSBmb3IgYSBzeW50aGVzaXplZAorICAgIC8vIGRvY3VtZW50IGJlY2F1c2Ugc3VjaCBkb2N1
bWVudHMgY2Fubm90IGJlIGFuIGF0dGFjaG1lbnQuCisgICAgaWYgKCFtX2lzU3ludGhlc2l6ZWQg
JiYgbV9mcmFtZS0+bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKS5p
c0F0dGFjaG1lbnQoKSkKKyAgICAgICAgZW5mb3JjZVNhbmRib3hGbGFncyhTYW5kYm94T3JpZ2lu
KTsKKyNlbmRpZgorCiAgICAgc2V0U2VjdXJpdHlPcmlnaW4oaXNTYW5kYm94ZWQoU2FuZGJveE9y
aWdpbikgPyBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkgOiBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKG1fdXJsKSk7CiAgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KENvbnRlbnRTZWN1
cml0eVBvbGljeTo6Y3JlYXRlKHRoaXMpKTsKIApAQCAtNDgyNiw2ICs0OTcxLDEzIEBAIHZvaWQg
RG9jdW1lbnQ6OnBlbmRpbmdUYXNrc1RpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnQ+KikKIAogdm9p
ZCBEb2N1bWVudDo6c3VzcGVuZFNjaGVkdWxlZFRhc2tzKEFjdGl2ZURPTU9iamVjdDo6UmVhc29u
Rm9yU3VzcGVuc2lvbiByZWFzb24pCiB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChtX3Nj
aGVkdWxlZFRhc2tzQXJlU3VzcGVuZGVkKSB7CisgICAgICAgIEFTU0VSVChyZWFzb25Gb3JTdXNw
ZW5kaW5nQWN0aXZlRE9NT2JqZWN0cygpID09IEFjdGl2ZURPTU9iamVjdDo6RG9jdW1lbnRXaWxs
QmVQYXVzZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBBU1NFUlQo
IW1fc2NoZWR1bGVkVGFza3NBcmVTdXNwZW5kZWQpOwogCiAgICAgc3VzcGVuZFNjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwpAQCAtNDk2OCw2ICs1MTIwLDE4IEBAIE1lZGlh
Q2FuU3RhcnRMaXN0ZW5lciogRG9jdW1lbnQ6OnRha2VBbnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIo
KQogICAgIHJldHVybiBsaXN0ZW5lcjsKIH0KIAorI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJ
T04pICYmIFBMQVRGT1JNKElPUykKK0RldmljZU1vdGlvbkNvbnRyb2xsZXIqIERvY3VtZW50Ojpk
ZXZpY2VNb3Rpb25Db250cm9sbGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kZXZpY2VNb3Rp
b25Db250cm9sbGVyLmdldCgpOworfQorCitEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIERv
Y3VtZW50OjpkZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIoKSBjb25zdAoreworICAgIHJldHVy
biBtX2RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5nZXQoKTsKK30KKyNlbmRpZgorCiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogYm9vbCBEb2N1bWVudDo6ZnVsbFNjcmVlbklzQWxsb3dl
ZEZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKQEAgLTU1MDQsNiArNTY2OCw3
IEBAIHZvaWQgRG9jdW1lbnQ6OmNsZWFyU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyKCkKIH0K
ICNlbmRpZgogCisjaWYgIVBMQVRGT1JNKElPUykKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQog
UGFzc1JlZlB0cjxUb3VjaD4gRG9jdW1lbnQ6OmNyZWF0ZVRvdWNoKERPTVdpbmRvdyogd2luZG93
LCBFdmVudFRhcmdldCogdGFyZ2V0LCBpbnQgaWRlbnRpZmllciwgaW50IHBhZ2VYLCBpbnQgcGFn
ZVksIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHJhZGl1c1gsIGludCByYWRpdXNZLCBm
bG9hdCByb3RhdGlvbkFuZ2xlLCBmbG9hdCBmb3JjZSwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0CiB7
CkBAIC01NTE1LDYgKzU2ODAsNyBAQCBQYXNzUmVmUHRyPFRvdWNoPiBEb2N1bWVudDo6Y3JlYXRl
VG91Y2goRE9NV2luZG93KiB3aW5kb3csIEV2ZW50VGFyZ2V0KiB0YXJnZXQsCiAgICAgcmV0dXJu
IFRvdWNoOjpjcmVhdGUoZnJhbWUsIHRhcmdldCwgaWRlbnRpZmllciwgc2NyZWVuWCwgc2NyZWVu
WSwgcGFnZVgsIHBhZ2VZLCByYWRpdXNYLCByYWRpdXNZLCByb3RhdGlvbkFuZ2xlLCBmb3JjZSk7
CiB9CiAjZW5kaWYKKyNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQogCiBzdGF0aWMgdm9pZCB3aGVl
bEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZChEb2N1bWVudCogZG9jdW1lbnQpCiB7CkBAIC01Njgz
LDcgKzU4NDksMTEgQEAgdm9pZCBEb2N1bWVudDo6YWRqdXN0RmxvYXRRdWFkc0ZvclNjcm9sbEFu
ZEFic29sdXRlWm9vbUFuZEZyYW1lU2NhbGUoVmVjdG9yPEZsb2EKICAgICBpZiAoZnJhbWUoKSkK
ICAgICAgICAgaW52ZXJzZUZyYW1lU2NhbGUgPSAxIC8gZnJhbWUoKS0+ZnJhbWVTY2FsZUZhY3Rv
cigpOwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIExheW91dFJlY3QgdmlzaWJsZUNvbnRlbnRS
ZWN0ID0gdmlldygpLT5hY3R1YWxWaXNpYmxlQ29udGVudFJlY3QoKTsKKyNlbHNlCiAgICAgTGF5
b3V0UmVjdCB2aXNpYmxlQ29udGVudFJlY3QgPSB2aWV3KCktPnZpc2libGVDb250ZW50UmVjdCgp
OworI2VuZGlmCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkcy5zaXplKCk7ICsraSkg
ewogICAgICAgICBxdWFkc1tpXS5tb3ZlKC12aXNpYmxlQ29udGVudFJlY3QueCgpLCAtdmlzaWJs
ZUNvbnRlbnRSZWN0LnkoKSk7CiAgICAgICAgIGlmICh6b29tICE9IDEpCkBAIC01NzAzLDcgKzU4
NzMsMTEgQEAgdm9pZCBEb2N1bWVudDo6YWRqdXN0RmxvYXRSZWN0Rm9yU2Nyb2xsQW5kQWJzb2x1
dGVab29tQW5kRnJhbWVTY2FsZShGbG9hdFJlY3QmIHIKICAgICBpZiAoZnJhbWUoKSkKICAgICAg
ICAgaW52ZXJzZUZyYW1lU2NhbGUgPSAxIC8gZnJhbWUoKS0+ZnJhbWVTY2FsZUZhY3RvcigpOwog
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIExheW91dFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0g
dmlldygpLT5hY3R1YWxWaXNpYmxlQ29udGVudFJlY3QoKTsKKyNlbHNlCiAgICAgTGF5b3V0UmVj
dCB2aXNpYmxlQ29udGVudFJlY3QgPSB2aWV3KCktPnZpc2libGVDb250ZW50UmVjdCgpOworI2Vu
ZGlmCiAgICAgcmVjdC5tb3ZlKC12aXNpYmxlQ29udGVudFJlY3QueCgpLCAtdmlzaWJsZUNvbnRl
bnRSZWN0LnkoKSk7CiAgICAgaWYgKHpvb20gIT0gMSkKICAgICAgICAgcmVjdC5zY2FsZSgxIC8g
em9vbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDZkODBiYzc3NWU5MDk2N2YwNTg1MGRhNGM3
NDhhMTIzM2JjZjJiMDkuLmI2YTQzNzY0ZDM3NjYwN2ZmZGE5NTdiOGUzMWFjNTc3MDE1NzhjMGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xNjMsNiArMTYzLDkgQEAgc3RydWN0IEFubm90YXRl
ZFJlZ2lvblZhbHVlOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2lmIFBM
QVRGT1JNKElPUykKKyNpbmNsdWRlICJEb2N1bWVudElPU0ZvcndhcmQuaCIKKyNlbmRpZgogY2xh
c3MgVG91Y2g7CiBjbGFzcyBUb3VjaExpc3Q7CiAjZW5kaWYKQEAgLTE4Niw2ICsxODksMTMgQEAg
Y2xhc3MgRm9udExvYWRlcjsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAorI2lmIFBM
QVRGT1JNKElPUykKK2NsYXNzIERldmljZU1vdGlvbkNsaWVudDsKK2NsYXNzIERldmljZU1vdGlv
bkNvbnRyb2xsZXI7CitjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKK2NsYXNzIERldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlcjsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKElPU19URVhUX0FV
VE9TSVpJTkcpCiBzdHJ1Y3QgVGV4dEF1dG9TaXppbmdIYXNoOwogY2xhc3MgVGV4dEF1dG9TaXpp
bmdLZXk7CkBAIC0zMTQsNiArMzI0LDExIEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKHRvdWNoZW5kKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKHRvdWNoY2FuY2VsKTsKICNlbmRpZgorI2lmIEVOQUJMRShJT1NfR0VTVFVSRV9FVkVO
VFMpCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihnZXN0dXJlc3RhcnQpOwor
ICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZ2VzdHVyZWNoYW5nZSk7CisgICAg
REVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihnZXN0dXJlZW5kKTsKKyNlbmRpZgogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RF
TkVSKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIod2Via2l0ZnVsbHNjcmVlbmVycm9yKTsKQEAgLTQ0MSw2ICs0NTYsNyBAQCBwdWJs
aWM6CiAgICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZG9jdW1lbnROYW1lZEl0ZW1zKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CiAKICAgICAvLyBPdGhlciBtZXRob2RzIChub3QgcGFy
dCBvZiBET00pCisgICAgYm9vbCBpc1N5bnRoZXNpemVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1N5
bnRoZXNpemVkOyB9CiAgICAgYm9vbCBpc0hUTUxEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZG9jdW1lbnRDbGFzc2VzICYgSFRNTERvY3VtZW50Q2xhc3M7IH0KICAgICBib29sIGlzWEhUTUxE
b2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRDbGFzc2VzICYgWEhUTUxEb2N1bWVu
dENsYXNzOyB9CiAgICAgYm9vbCBpc0ltYWdlRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2Rv
Y3VtZW50Q2xhc3NlcyAmIEltYWdlRG9jdW1lbnRDbGFzczsgfQpAQCAtNTQ3LDYgKzU2Myw3IEBA
IHB1YmxpYzoKICAgICAvLyBPdmVycmlkZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IG1ldGhvZHMg
dG8gZG8gYWRkaXRpb25hbCB3b3JrCiAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRBY3RpdmVET01P
YmplY3RzKEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVuc2lvbikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0OjpS
ZWFzb25Gb3JTdXNwZW5zaW9uKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcEFjdGl2
ZURPTU9iamVjdHMoKSBPVkVSUklERTsKIAogICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcoKSBj
b25zdCB7IHJldHVybiBtX3JlbmRlclZpZXc7IH0KIApAQCAtNzgwLDYgKzc5NywxNCBAQCBwdWJs
aWM6CiAgICAgICogQHBhcmFtIGNvbnRlbnQgVGhlIGhlYWRlciB2YWx1ZSAodmFsdWUgb2YgdGhl
IG1ldGEgdGFnJ3MgImNvbnRlbnQiIGF0dHJpYnV0ZSkKICAgICAgKi8KICAgICB2b2lkIHByb2Nl
c3NIdHRwRXF1aXYoY29uc3QgU3RyaW5nJiBlcXVpdiwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsK
KworI2lmIFBMQVRGT1JNKElPUykKKyAgICB2b2lkIHByb2Nlc3NGb3JtYXREZXRlY3Rpb24oY29u
c3QgU3RyaW5nJik7CisKKyAgICAvLyBDYWxsZWQgd2hlbiA8bWV0YSBuYW1lPSJhcHBsZS1tb2Jp
bGUtd2ViLWFwcC1vcmllbnRhdGlvbnMiPiBjaGFuZ2VzLgorICAgIHZvaWQgcHJvY2Vzc1dlYkFw
cE9yaWVudGF0aW9ucygpOworI2VuZGlmCisgICAgCiAgICAgdm9pZCBwcm9jZXNzVmlld3BvcnQo
Y29uc3QgU3RyaW5nJiBmZWF0dXJlcywgVmlld3BvcnRBcmd1bWVudHM6OlR5cGUgb3JpZ2luKTsK
ICAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0QXJndW1lbnRzKCk7CiAgICAgdm9pZCBwcm9jZXNzUmVm
ZXJyZXJQb2xpY3koY29uc3QgU3RyaW5nJiBwb2xpY3kpOwpAQCAtMTA4NCw3ICsxMTA5LDE2IEBA
IHB1YmxpYzoKICAgICBib29sIGlzRGVsYXlpbmdMb2FkRXZlbnQoKSBjb25zdCB7IHJldHVybiBt
X2xvYWRFdmVudERlbGF5Q291bnQ7IH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaWYg
UExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIkRvY3VtZW50SU9TLmgiCisjZWxzZQogICAgIFBhc3NS
ZWZQdHI8VG91Y2g+IGNyZWF0ZVRvdWNoKERPTVdpbmRvdyosIEV2ZW50VGFyZ2V0KiwgaW50IGlk
ZW50aWZpZXIsIGludCBwYWdlWCwgaW50IHBhZ2VZLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblks
IGludCByYWRpdXNYLCBpbnQgcmFkaXVzWSwgZmxvYXQgcm90YXRpb25BbmdsZSwgZmxvYXQgZm9y
Y2UsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisjZW5k
aWYKKworI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pICYmIFBMQVRGT1JNKElPUykKKyAg
ICBEZXZpY2VNb3Rpb25Db250cm9sbGVyKiBkZXZpY2VNb3Rpb25Db250cm9sbGVyKCkgY29uc3Q7
CisgICAgRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiBkZXZpY2VPcmllbnRhdGlvbkNvbnRy
b2xsZXIoKSBjb25zdDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9USU1JTkcpCkBAIC0xMTg0
LDcgKzEyMTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRWaXN1YWxVcGRhdGVzQWxsb3dlZEJ5
Q2xpZW50KGJvb2wpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBV
UkwmLCB1bnNpZ25lZCA9IERlZmF1bHREb2N1bWVudENsYXNzKTsKKyAgICBEb2N1bWVudChGcmFt
ZSosIGNvbnN0IFVSTCYsIHVuc2lnbmVkID0gRGVmYXVsdERvY3VtZW50Q2xhc3MsIGJvb2wgaXNT
eW50aGVzaXplZCA9IGZhbHNlKTsKIAogICAgIHZvaWQgY2xlYXJYTUxWZXJzaW9uKCkgeyBtX3ht
bFZlcnNpb24gPSBTdHJpbmcoKTsgfQogCkBAIC0xNDYxLDYgKzE0OTUsOCBAQCBwcml2YXRlOgog
CiAgICAgRG9jdW1lbnRDbGFzc0ZsYWdzIG1fZG9jdW1lbnRDbGFzc2VzOwogCisgICAgYm9vbCBt
X2lzU3ludGhlc2l6ZWQ7CisKICAgICBib29sIG1faXNWaWV3U291cmNlOwogICAgIGJvb2wgbV9z
YXdFbGVtZW50c0luS25vd25OYW1lc3BhY2VzOwogICAgIGJvb2wgbV9pc1NyY2RvY0RvY3VtZW50
OwpAQCAtMTUxNyw2ICsxNTUzLDM0IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlcj4gbV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI7CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pICYmIFBMQVRGT1JNKElPUykKKyAgICAv
LyBGSVhNRTogVXNlIHN0ZDo6dW5pcXVlX3B0ciBpbnN0ZWFkIG9mIE93blB0ciBhZnRlciB3ZSB1
cHN0cmVhbSBEZXZpY2VNb3Rpb25DbGllbnRJT1Mue2gsIG1tfS4KKyAgICBPd25QdHI8RGV2aWNl
TW90aW9uQ2xpZW50PiBtX2RldmljZU1vdGlvbkNsaWVudDsKKyAgICBPd25QdHI8RGV2aWNlTW90
aW9uQ29udHJvbGxlcj4gbV9kZXZpY2VNb3Rpb25Db250cm9sbGVyOworICAgIE93blB0cjxEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudD4gbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKKyAgICBPd25Q
dHI8RGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyPiBtX2RldmljZU9yaWVudGF0aW9uQ29udHJv
bGxlcjsKKyNlbmRpZgorCisvLyBGSVhNRTogRmluZCBhIGJldHRlciBwbGFjZSBmb3IgdGhpcyBm
dW5jdGlvbmFsaXR5LgorI2lmIFBMQVRGT1JNKElPUykKK3B1YmxpYzoKKworICAgIC8vIFRoZXNl
IGZ1bmN0aW9ucyBwcm92aWRlIGEgdHdvLWxldmVsIHNldHRpbmc6CisgICAgLy8gICAgLSBBIHVz
ZXItc2V0dGFibGUgd2FudHNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nIChhdCB0aGUgUGFnZSAvIFdl
YlZpZXcgbGV2ZWwpCisgICAgLy8gICAgLSBBIHJlYWQtb25seSB0ZWxlcGhvbmVOdW1iZXJQYXJz
aW5nQWxsb3dlZCB3aGljaCBpcyBzZXQgYnkgdGhlCisgICAgLy8gICAgICBkb2N1bWVudCBpZiBp
dCBoYXMgdGhlIGFwcHJvcHJpYXRlIG1ldGEgdGFnLgorICAgIC8vICAgIC0gaXNUZWxlcGhvbmVO
dW1iZXJQYXJzaW5nRW5hYmxlZCgpID09IGlzVGVsZXBob25lTnVtYmVyUGFyc2luZ0FsbG93ZWQo
KSAmJiBwYWdlKCktPnNldHRpbmdzKCktPmlzVGVsZXBob25lTnVtYmVyUGFyc2luZ0VuYWJsZWQo
KQorCisgICAgYm9vbCBpc1RlbGVwaG9uZU51bWJlclBhcnNpbmdBbGxvd2VkKCkgY29uc3Q7Cisg
ICAgYm9vbCBpc1RlbGVwaG9uZU51bWJlclBhcnNpbmdFbmFibGVkKCkgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgZnJpZW5kIHZvaWQgc2V0UGFyc2VyRmVhdHVyZShjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgRG9jdW1lbnQqLCB2b2lkKiB1c2VyRGF0YSk7CisgICAgdm9p
ZCBzZXRJc1RlbGVwaG9uZU51bWJlclBhcnNpbmdBbGxvd2VkKGJvb2wpOworCisgICAgYm9vbCBt
X2lzVGVsZXBob25lTnVtYmVyUGFyc2luZ0FsbG93ZWQ7CisjZW5kaWYKKwogICAgIFRpbWVyPERv
Y3VtZW50PiBtX3BlbmRpbmdUYXNrc1RpbWVyOwogICAgIFZlY3RvcjxPd25QdHI8VGFzaz4+IG1f
cGVuZGluZ1Rhc2tzOwogCkBAIC0xNTM1LDYgKzE1OTksOCBAQCBwcml2YXRlOgogICAgIE93blB0
cjxUZXh0QXV0b3NpemVyPiBtX3RleHRBdXRvc2l6ZXI7CiAjZW5kaWYKIAorICAgIHZvaWQgcGxh
dGZvcm1TdXNwZW5kT3JTdG9wQWN0aXZlRE9NT2JqZWN0cygpOworCiAgICAgYm9vbCBtX3NjaGVk
dWxlZFRhc2tzQXJlU3VzcGVuZGVkOwogICAgIAogICAgIGJvb2wgbV92aXN1YWxVcGRhdGVzQWxs
b3dlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCmluZGV4IGVlNjRhMWQwNDUzOTI4ZTMwMGU3OTc3
ODYxMDNjN2U4Yjk4NjRjZGUuLjU2NDI5MzNmOGQ4NzNhODU2M2RhYTIyOTYwNDY3NTYwMDgwZWM5
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbApAQCAtMzIxLDYgKzMyMSw5IEBACiAjZW5kaWYK
IAogI2lmIGRlZmluZWQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJiYgRU5BQkxFX1RPVUNIX0VWRU5U
UworI2lmIGRlZmluZWQoV1RGX1BMQVRGT1JNX0lPUykgJiYgV1RGX1BMQVRGT1JNX0lPUworI2lu
Y2x1ZGUgIkRvY3VtZW50SU9TLmlkbCIKKyNlbHNlCiAgICAgW1JldHVybk5ld09iamVjdCwgUmFp
c2VzRXhjZXB0aW9uXSBUb3VjaCBjcmVhdGVUb3VjaChbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlv
bmFsIERPTVdpbmRvdyB3aW5kb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRXZlbnRUYXJn
ZXQgdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGxvbmcgaWRlbnRpZmllciwKQEAg
LTMzMyw2ICszMzYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGZsb2F0IHdlYmtpdFJv
dGF0aW9uQW5nbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgZmxvYXQgd2Via2l0Rm9yY2Up
OwogICAgIFtSZXR1cm5OZXdPYmplY3QsIEN1c3RvbSwgUmFpc2VzRXhjZXB0aW9uXSBUb3VjaExp
c3QgY3JlYXRlVG91Y2hMaXN0KCk7CisjZW5kaWYgLy8gZGVmaW5lZChXVEZfUExBVEZPUk1fSU9T
KSAmJiBXVEZfUExBVEZPUk1fSU9TCiAjZW5kaWYKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfQ1BQ
KSAmJiBMQU5HVUFHRV9DUFAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dE1hcmtlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyLmgKaW5kZXggM2Zh
YTE5MDM5MmE4YmVhZDcwMWRjNDVkOTE3ZWQ5NDE0ZDgyNmI0MC4uYjNhYzU1OTAwZmE2ZTYwZTU0
MWEyM2UyMjlhMWUwMGZhYzBmZWQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50TWFya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyLmgK
QEAgLTI4LDYgKzI4LDExIEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgordHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QgKmlkOworI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnRNYXJrZXJEZXRhaWxzOwpAQCAtNjUs
NyArNzAsMTIgQEAgcHVibGljOgogICAgICAgICBEZWxldGVkQXV0b2NvcnJlY3Rpb24gPSAxIDw8
IDgsCiAgICAgICAgIC8vIFRoaXMgbWFya2VyIGluZGljYXRlcyB0aGF0IHRoZSByYW5nZSBvZiB0
ZXh0IHNwYW5uZWQgYnkgdGhlIG1hcmtlciBpcyBlbnRlcmVkIGJ5IHZvaWNlIGRpY3RhdGlvbiwK
ICAgICAgICAgLy8gYW5kIGl0IGhhcyBhbHRlcm5hdGl2ZSB0ZXh0LgotICAgICAgICBEaWN0YXRp
b25BbHRlcm5hdGl2ZXMgPSAxIDw8IDkKKyAgICAgICAgRGljdGF0aW9uQWx0ZXJuYXRpdmVzID0g
MSA8PCA5LAorI2lmIFBMQVRGT1JNKElPUykKKyAgICAgICAgLy8gRklYTUU6IGlPUyBoYXMgaXRz
IG93biBkaWN0YXRpb24gbWFya3MuIGlPUyBzaG91bGQgdXNlIE9wZW5Tb3VyY2Uncy4KKyAgICAg
ICAgRGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcyA9IDEgPDwgMTAsCisgICAgICAgIERp
Y3RhdGlvblJlc3VsdCA9IDEgPDwgMTEsCisjZW5kaWYKICAgICB9OwogCiAgICAgY2xhc3MgTWFy
a2VyVHlwZXMgewpAQCAtODcsNyArOTcsMTEgQEAgcHVibGljOgogICAgIGNsYXNzIEFsbE1hcmtl
cnMgOiBwdWJsaWMgTWFya2VyVHlwZXMgewogICAgIHB1YmxpYzoKICAgICAgICAgQWxsTWFya2Vy
cygpCisjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgICAgIDogTWFya2VyVHlwZXMoU3BlbGxp
bmcgfCBHcmFtbWFyIHwgVGV4dE1hdGNoIHwgUmVwbGFjZW1lbnQgfCBDb3JyZWN0aW9uSW5kaWNh
dG9yIHwgUmVqZWN0ZWRDb3JyZWN0aW9uIHwgQXV0b2NvcnJlY3RlZCB8IFNwZWxsQ2hlY2tpbmdF
eGVtcHRpb24gfCBEZWxldGVkQXV0b2NvcnJlY3Rpb24gfCBEaWN0YXRpb25BbHRlcm5hdGl2ZXMp
CisjZWxzZQorICAgICAgICAgICAgOiBNYXJrZXJUeXBlcyhTcGVsbGluZyB8IEdyYW1tYXIgfCBU
ZXh0TWF0Y2ggfCBSZXBsYWNlbWVudCB8IENvcnJlY3Rpb25JbmRpY2F0b3IgfCBSZWplY3RlZENv
cnJlY3Rpb24gfCBBdXRvY29ycmVjdGVkIHwgU3BlbGxDaGVja2luZ0V4ZW1wdGlvbiB8IERlbGV0
ZWRBdXRvY29ycmVjdGlvbiB8IERpY3RhdGlvbkFsdGVybmF0aXZlcyB8IERpY3RhdGlvblBocmFz
ZVdpdGhBbHRlcm5hdGl2ZXMgfCBEaWN0YXRpb25SZXN1bHQpCisjZW5kaWYgLy8gIVBMQVRGT1JN
KElPUykKICAgICAgICAgewogICAgICAgICB9CiAgICAgfTsKQEAgLTk1LDYgKzEwOSw5IEBAIHB1
YmxpYzoKICAgICBEb2N1bWVudE1hcmtlcigpOwogICAgIERvY3VtZW50TWFya2VyKE1hcmtlclR5
cGUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogICAgIERvY3Vt
ZW50TWFya2VyKE1hcmtlclR5cGUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24pOworI2lmIFBMQVRGT1JNKElPUykKKyAg
ICBEb2N1bWVudE1hcmtlcihNYXJrZXJUeXBlLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0LCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYWx0ZXJuYXRpdmVzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKTsKKyNlbmRpZgogICAg
IERvY3VtZW50TWFya2VyKHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQs
IGJvb2wgYWN0aXZlTWF0Y2gpOwogICAgIERvY3VtZW50TWFya2VyKE1hcmtlclR5cGUsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIFBhc3NSZWZQdHI8RG9jdW1lbnRN
YXJrZXJEZXRhaWxzPik7CiAKQEAgLTExNSw2ICsxMzIsMTMgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0RW5kT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkgeyBtX2VuZE9mZnNldCA9IG9mZnNldDsgfQog
ICAgIHZvaWQgc2hpZnRPZmZzZXRzKGludCBkZWx0YSk7CiAKKyNpZiBQTEFURk9STShJT1MpCisg
ICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlcygpIGNvbnN0OworICAgIHZvaWQg
c2V0QWx0ZXJuYXRpdmUoY29uc3QgU3RyaW5nJiwgc2l6ZV90IGluZGV4KTsKKyAgICBpZCBtZXRh
ZGF0YSgpIGNvbnN0OworICAgIHZvaWQgc2V0TWV0YWRhdGEoaWQpOworI2VuZGlmCisKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgRG9jdW1lbnRNYXJrZXImIG8pIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gdHlwZSgpID09IG8udHlwZSgpICYmIHN0YXJ0T2Zmc2V0KCkgPT0gby5zdGFy
dE9mZnNldCgpICYmIGVuZE9mZnNldCgpID09IG8uZW5kT2Zmc2V0KCk7CkBAIC0xMjksNiArMTUz
LDExIEBAIHByaXZhdGU6CiAgICAgTWFya2VyVHlwZSBtX3R5cGU7CiAgICAgdW5zaWduZWQgbV9z
dGFydE9mZnNldDsKICAgICB1bnNpZ25lZCBtX2VuZE9mZnNldDsKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgLy8gRklYTUU6IFNlZSA8cmRhcjovL3Byb2JsZW0vOTQzMTI0OT4uCisgICAgVmVjdG9y
PFN0cmluZz4gbV9hbHRlcm5hdGl2ZXM7CisgICAgUmV0YWluUHRyPGlkPiBtX21ldGFkYXRhOwor
I2VuZGlmCiAgICAgUmVmUHRyPERvY3VtZW50TWFya2VyRGV0YWlscz4gbV9kZXRhaWxzOwogfTsK
IApAQCAtMTM3LDYgKzE2Niw0MyBAQCBpbmxpbmUgRG9jdW1lbnRNYXJrZXJEZXRhaWxzKiBEb2N1
bWVudE1hcmtlcjo6ZGV0YWlscygpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGV0YWlscy5nZXQoKTsK
IH0KIAorI2lmIFBMQVRGT1JNKElPUykKK2lubGluZSBEb2N1bWVudE1hcmtlcjo6RG9jdW1lbnRN
YXJrZXIoTWFya2VyVHlwZSB0eXBlLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0LCBjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVz
LCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKQorICAgIDogbV90eXBlKHR5cGUpCisgICAgLCBtX3N0
YXJ0T2Zmc2V0KHN0YXJ0T2Zmc2V0KQorICAgICwgbV9lbmRPZmZzZXQoZW5kT2Zmc2V0KQorICAg
ICwgbV9hbHRlcm5hdGl2ZXMoYWx0ZXJuYXRpdmVzKQorICAgICwgbV9tZXRhZGF0YShtZXRhZGF0
YSkKK3sKKyAgICAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzExMzA2NDIyPiBpT1Mgc2hvdWxk
IGludmVzdGlnYXRlIGNsZWFuZXIgbWVyZ2Ugd2l0aCBUb1QgRGljdGF0aW9uIHN1cHBvcnQKKyAg
ICBBU1NFUlQodHlwZSA9PSBEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzIHx8IHR5cGUg
PT0gRGljdGF0aW9uUmVzdWx0KTsKK30KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TKQoraW5s
aW5lIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBEb2N1bWVudE1hcmtlcjo6YWx0ZXJuYXRpdmVzKCkg
Y29uc3QKK3sKKyAgICBBU1NFUlQobV90eXBlID09IERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25Q
aHJhc2VXaXRoQWx0ZXJuYXRpdmVzKTsKKyAgICByZXR1cm4gbV9hbHRlcm5hdGl2ZXM7Cit9CisK
K2lubGluZSB2b2lkIERvY3VtZW50TWFya2VyOjpzZXRBbHRlcm5hdGl2ZShjb25zdCBTdHJpbmcm
IGFsdGVybmF0aXZlLCBzaXplX3QgaW5kZXgpCit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBEb2N1
bWVudE1hcmtlcjo6RGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcyk7CisgICAgbV9hbHRl
cm5hdGl2ZXNbaW5kZXhdID0gYWx0ZXJuYXRpdmU7Cit9CisKK2lubGluZSBpZCBEb2N1bWVudE1h
cmtlcjo6bWV0YWRhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX21ldGFkYXRhLmdldCgpOwor
fQorCitpbmxpbmUgdm9pZCBEb2N1bWVudE1hcmtlcjo6c2V0TWV0YWRhdGEoaWQgbWV0YWRhdGEp
Cit7CisgICAgbV9tZXRhZGF0YSA9IG1ldGFkYXRhOworfQorI2VuZGlmCisKIGNsYXNzIERvY3Vt
ZW50TWFya2VyRGV0YWlscyA6IHB1YmxpYyBSZWZDb3VudGVkPERvY3VtZW50TWFya2VyRGV0YWls
cz4KIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29u
dHJvbGxlci5jcHAKaW5kZXggOTA5Y2Q3NmIwMWM0NGMzZDlhNzVkYWQ2ODkwMmZmYTA2NWE0ZGE3
Yy4uYmNjNzM2OWNjY2YwZTZlZTY4NDgwM2ZmNGQ1YzFkMGY5OGQwMWRmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKQEAgLTEwNiw2ICsx
MDYsNDMgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZFRleHRNYXRjaE1hcmtl
cihjb25zdCBSYW5nZSogcmFuZ2UsIGJvb2wgYWN0aXYKICAgICB9CiB9CiAKKyNpZiBQTEFURk9S
TShJT1MpCit2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKFJhbmdlKiBy
YW5nZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgdHlwZSwgU3RyaW5nIGRlc2NyaXB0aW9u
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW50ZXJwcmV0YXRpb25zLCBjb25zdCBSZXRhaW5QdHI8
aWQ+JiBtZXRhZGF0YSkKK3sKKyAgICAvLyBVc2UgYSBUZXh0SXRlcmF0b3IgdG8gdmlzaXQgdGhl
IHBvdGVudGlhbGx5IG11bHRpcGxlIG5vZGVzIHRoZSByYW5nZSBjb3ZlcnMuCisgICAgZm9yIChU
ZXh0SXRlcmF0b3IgbWFya2VkVGV4dChyYW5nZSk7ICFtYXJrZWRUZXh0LmF0RW5kKCk7IG1hcmtl
ZFRleHQuYWR2YW5jZSgpKSB7CisgICAgICAgIFJlZlB0cjxSYW5nZT4gdGV4dFBpZWNlID0gbWFy
a2VkVGV4dC5yYW5nZSgpOworICAgICAgICBhZGRNYXJrZXIodGV4dFBpZWNlLT5zdGFydENvbnRh
aW5lcigpLCBEb2N1bWVudE1hcmtlcih0eXBlLCB0ZXh0UGllY2UtPnN0YXJ0T2Zmc2V0KCksIHRl
eHRQaWVjZS0+ZW5kT2Zmc2V0KCksIGRlc2NyaXB0aW9uLCBpbnRlcnByZXRhdGlvbnMsIG1ldGFk
YXRhKSk7CisgICAgfQorfQorCit2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkRGlj
dGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlc01hcmtlcihSYW5nZSogcmFuZ2UsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBpbnRlcnByZXRhdGlvbnMpCit7CisgICAgQVNTRVJUKGludGVycHJldGF0
aW9ucy5zaXplKCkgPiAxKTsKKyAgICBpZiAoaW50ZXJwcmV0YXRpb25zLnNpemUoKSA8PSAxKQor
ICAgICAgICByZXR1cm47CisKKyAgICBzaXplX3QgbnVtYmVyT2ZBbHRlcm5hdGl2ZXMgPSBpbnRl
cnByZXRhdGlvbnMuc2l6ZSgpIC0gMTsKKyAgICAvLyBVc2UgYSBUZXh0SXRlcmF0b3IgdG8gdmlz
aXQgdGhlIHBvdGVudGlhbGx5IG11bHRpcGxlIG5vZGVzIHRoZSByYW5nZSBjb3ZlcnMuCisgICAg
Zm9yIChUZXh0SXRlcmF0b3IgbWFya2VkVGV4dChyYW5nZSk7ICFtYXJrZWRUZXh0LmF0RW5kKCk7
IG1hcmtlZFRleHQuYWR2YW5jZSgpKSB7CisgICAgICAgIFJlZlB0cjxSYW5nZT4gdGV4dFBpZWNl
ID0gbWFya2VkVGV4dC5yYW5nZSgpOworICAgICAgICBEb2N1bWVudE1hcmtlciBtYXJrZXIoRG9j
dW1lbnRNYXJrZXI6OkRpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXMsIHRleHRQaWVjZS0+
c3RhcnRPZmZzZXQoKSwgdGV4dFBpZWNlLT5lbmRPZmZzZXQoKSwgIiIsIFZlY3RvcjxTdHJpbmc+
KG51bWJlck9mQWx0ZXJuYXRpdmVzKSwgUmV0YWluUHRyPGlkPigpKTsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZkFsdGVybmF0aXZlczsgKytpKQorICAgICAgICAgICAg
bWFya2VyLnNldEFsdGVybmF0aXZlKGludGVycHJldGF0aW9uc1tpICsgMV0sIGkpOworICAgICAg
ICBhZGRNYXJrZXIodGV4dFBpZWNlLT5zdGFydENvbnRhaW5lcigpLCBtYXJrZXIpOworICAgIH0K
K30KKwordm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZERpY3RhdGlvblJlc3VsdE1h
cmtlcihSYW5nZSogcmFuZ2UsIGNvbnN0IFJldGFpblB0cjxpZD4mIG1ldGFkYXRhKQoreworICAg
IC8vIFVzZSBhIFRleHRJdGVyYXRvciB0byB2aXNpdCB0aGUgcG90ZW50aWFsbHkgbXVsdGlwbGUg
bm9kZXMgdGhlIHJhbmdlIGNvdmVycy4KKyAgICBmb3IgKFRleHRJdGVyYXRvciBtYXJrZWRUZXh0
KHJhbmdlKTsgIW1hcmtlZFRleHQuYXRFbmQoKTsgbWFya2VkVGV4dC5hZHZhbmNlKCkpIHsKKyAg
ICAgICAgUmVmUHRyPFJhbmdlPiB0ZXh0UGllY2UgPSBtYXJrZWRUZXh0LnJhbmdlKCk7CisgICAg
ICAgIGFkZE1hcmtlcih0ZXh0UGllY2UtPnN0YXJ0Q29udGFpbmVyKCksIERvY3VtZW50TWFya2Vy
KERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25SZXN1bHQsIHRleHRQaWVjZS0+c3RhcnRPZmZzZXQo
KSwgdGV4dFBpZWNlLT5lbmRPZmZzZXQoKSwgU3RyaW5nKCksIFZlY3RvcjxTdHJpbmc+KCksIG1l
dGFkYXRhKSk7CisgICAgfQorfQorI2VuZGlmCisKIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyOjpyZW1vdmVNYXJrZXJzKFJhbmdlKiByYW5nZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5
cGVzIG1hcmtlclR5cGVzLCBSZW1vdmVQYXJ0aWFsbHlPdmVybGFwcGluZ01hcmtlck9yTm90IHNo
b3VsZFJlbW92ZVBhcnRpYWxseU92ZXJsYXBwaW5nTWFya2VyKQogewogICAgIGZvciAoVGV4dEl0
ZXJhdG9yIG1hcmtlZFRleHQocmFuZ2UpOyAhbWFya2VkVGV4dC5hdEVuZCgpOyBtYXJrZWRUZXh0
LmFkdmFuY2UoKSkgewpAQCAtMTM2LDYgKzE3MywxOCBAQCB2b2lkIERvY3VtZW50TWFya2VyQ29u
dHJvbGxlcjo6YWRkTWFya2VyKE5vZGUqIG5vZGUsIGNvbnN0IERvY3VtZW50TWFya2VyJiBuZXdN
YQogICAgIGlmICghbGlzdCkgewogICAgICAgICBsaXN0ID0gYWRvcHRQdHIobmV3IE1hcmtlckxp
c3QpOwogICAgICAgICBsaXN0LT5hcHBlbmQoUmVuZGVyZWREb2N1bWVudE1hcmtlcihuZXdNYXJr
ZXIpKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgfSBlbHNlIGlmIChuZXdNYXJrZXIudHlwZSgp
ID09IERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzIHx8IG5l
d01hcmtlci50eXBlKCkgPT0gRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvblJlc3VsdCkgeworICAg
ICAgICAvLyBXZSBkb24ndCBtZXJnZSBkaWN0YXRpb24gbWFya2Vycy4KKyAgICAgICAgc2l6ZV90
IGk7CisgICAgICAgIHNpemVfdCBudW1iZXJPZk1hcmtlcnMgPSBsaXN0LT5zaXplKCk7CisgICAg
ICAgIGZvciAoaSA9IDA7IGkgPCBudW1iZXJPZk1hcmtlcnM7ICsraSkgeworICAgICAgICAgICAg
RG9jdW1lbnRNYXJrZXIgbWFya2VyID0gbGlzdC0+YXQoaSk7CisgICAgICAgICAgICBpZiAobWFy
a2VyLnN0YXJ0T2Zmc2V0KCkgPiBuZXdNYXJrZXIuc3RhcnRPZmZzZXQoKSkKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBsaXN0LT5pbnNlcnQoaSwgUmVuZGVyZWRE
b2N1bWVudE1hcmtlcihuZXdNYXJrZXIpKTsKKyNlbmRpZgogICAgIH0gZWxzZSB7CiAgICAgICAg
IFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIgdG9JbnNlcnQobmV3TWFya2VyKTsKICAgICAgICAgc2l6
ZV90IG51bU1hcmtlcnMgPSBsaXN0LT5zaXplKCk7CkBAIC01MjEsOCArNTcwLDE2IEBAIHZvaWQg
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpzaGlmdE1hcmtlcnMoTm9kZSogbm9kZSwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIGluCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgZG9jRGlydHkg
PSBmYWxzZTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBsaXN0LT5zaXplKCk7ICsraSkg
eworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGxpc3QtPnNpemUoKTsgKSB7CiAgICAgICAg
IFJlbmRlcmVkRG9jdW1lbnRNYXJrZXImIG1hcmtlciA9IGxpc3QtPmF0KGkpOworI2lmIFBMQVRG
T1JNKElPUykKKyAgICAgICAgaW50IHRhcmdldFN0YXJ0T2Zmc2V0ID0gbWFya2VyLnN0YXJ0T2Zm
c2V0KCkgKyBkZWx0YTsKKyAgICAgICAgaW50IHRhcmdldEVuZE9mZnNldCA9IG1hcmtlci5lbmRP
ZmZzZXQoKSArIGRlbHRhOworICAgICAgICBpZiAodGFyZ2V0U3RhcnRPZmZzZXQgPj0gbm9kZS0+
bWF4Q2hhcmFjdGVyT2Zmc2V0KCkgfHwgdGFyZ2V0RW5kT2Zmc2V0IDw9IDApIHsKKyAgICAgICAg
ICAgIGxpc3QtPnJlbW92ZShpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9Cisj
ZW5kaWYKICAgICAgICAgaWYgKG1hcmtlci5zdGFydE9mZnNldCgpID49IHN0YXJ0T2Zmc2V0KSB7
CiAgICAgICAgICAgICBBU1NFUlQoKGludCltYXJrZXIuc3RhcnRPZmZzZXQoKSArIGRlbHRhID49
IDApOwogICAgICAgICAgICAgbWFya2VyLnNoaWZ0T2Zmc2V0cyhkZWx0YSk7CkBAIC01MzAsNyAr
NTg3LDI0IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpzaGlmdE1hcmtlcnMoTm9k
ZSogbm9kZSwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGluCiAKICAgICAgICAgICAgIC8vIE1hcmtl
ciBtb3ZlZCwgc28gcHJldmlvdXNseS1jb21wdXRlZCByZW5kZXJlZCByZWN0YW5nbGUgaXMgbm93
IGludmFsaWQKICAgICAgICAgICAgIG1hcmtlci5pbnZhbGlkYXRlKCk7CisjaWYgIVBMQVRGT1JN
KElPUykKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgLy8gRklYTUU6IEluc2VydGluZyB0ZXh0
IGluc2lkZSBhIERvY3VtZW50TWFya2VyIGRvZXMgbm90IGdyb3cgdGhlIG1hcmtlci4KKyAgICAg
ICAgLy8gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI1MDQ+
LgorICAgICAgICB9IGVsc2UgaWYgKG1hcmtlci5lbmRPZmZzZXQoKSA+IHN0YXJ0T2Zmc2V0KSB7
CisgICAgICAgICAgICBpZiAobWFya2VyLmVuZE9mZnNldCgpICsgZGVsdGEgPD0gbWFya2VyLnN0
YXJ0T2Zmc2V0KCkpIHsKKyAgICAgICAgICAgICAgICBsaXN0LT5yZW1vdmUoaSk7CisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtYXJrZXIuc2V0
RW5kT2Zmc2V0KHRhcmdldEVuZE9mZnNldCA8IG5vZGUtPm1heENoYXJhY3Rlck9mZnNldCgpID8g
dGFyZ2V0RW5kT2Zmc2V0IDogbm9kZS0+bWF4Q2hhcmFjdGVyT2Zmc2V0KCkpOworICAgICAgICAg
ICAgZG9jRGlydHkgPSB0cnVlOworCisgICAgICAgICAgICAvLyBNYXJrZXIgbW92ZWQsIHNvIHBy
ZXZpb3VzbHktY29tcHV0ZWQgcmVuZGVyZWQgcmVjdGFuZ2xlIGlzIG5vdyBpbnZhbGlkCisgICAg
ICAgICAgICBtYXJrZXIuaW52YWxpZGF0ZSgpOwogICAgICAgICB9CisjZW5kaWYKKyAgICAgICAg
KytpOwogICAgIH0KIAogICAgIC8vIHJlcGFpbnQgdGhlIGFmZmVjdGVkIG5vZGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaAppbmRleCA5MjRlYmJiYTNj
ZGE1NDU5N2NlNjlmY2FhM2M0MTM1MmRlOGM2NWYyLi43Njk0NjQ3OGJlNWIzZTdjOTg1ODAzODEx
OTA2ZDRhNGU3YWY3NjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRN
YXJrZXJDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5oCkBAIC01Myw2ICs1MywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRNYXJr
ZXJUb05vZGUoTm9kZSosIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIERv
Y3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsKICAgICB2b2lkIGFkZE1hcmtlclRvTm9kZShOb2Rl
KiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRG9jdW1lbnRNYXJrZXI6
Ok1hcmtlclR5cGUsIFBhc3NSZWZQdHI8RG9jdW1lbnRNYXJrZXJEZXRhaWxzPik7CiAgICAgdm9p
ZCBhZGRUZXh0TWF0Y2hNYXJrZXIoY29uc3QgUmFuZ2UqLCBib29sIGFjdGl2ZU1hdGNoKTsKKyNp
ZiBQTEFURk9STShJT1MpCisgICAgdm9pZCBhZGRNYXJrZXIoUmFuZ2UqLCBEb2N1bWVudE1hcmtl
cjo6TWFya2VyVHlwZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
aW50ZXJwcmV0YXRpb25zLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSk7CisgICAgdm9p
ZCBhZGREaWN0YXRpb25QaHJhc2VXaXRoQWx0ZXJuYXRpdmVzTWFya2VyKFJhbmdlKiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGludGVycHJldGF0aW9ucyk7CisgICAgdm9pZCBhZGREaWN0YXRpb25S
ZXN1bHRNYXJrZXIoUmFuZ2UqLCBjb25zdCBSZXRhaW5QdHI8aWQ+JiBtZXRhZGF0YSk7CisjZW5k
aWYKIAogICAgIHZvaWQgY29weU1hcmtlcnMoTm9kZSogc3JjTm9kZSwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIGludCBsZW5ndGgsIE5vZGUqIGRzdE5vZGUsIGludCBkZWx0YSk7CiAgICAgYm9vbCBo
YXNNYXJrZXJzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBjYjY4NWRhOTBmNTM0
Y2EyYWRhYWY1MmY4MDk3ODQ3ZjMxYmNhNGZhLi4yNzEzMTZkNmJmZGM1MzQxZTc2MDVlNzk3Yjlh
Nzc5MDQyODZmYjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yMDAxLDcgKzIwMDEsMjAg
QEAgdm9pZCBFbGVtZW50Ojpmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbiwgRm9j
dXNEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgIH0KICAgICAgICAgCiAgICAgY2FuY2VsRm9jdXNB
cHBlYXJhbmNlVXBkYXRlKCk7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIEZvY3VzaW5nIGEg
Zm9ybSBlbGVtZW50IHRyaWdnZXJzIGFuaW1hdGlvbiBpbiBVSUtpdCB0byBzY3JvbGwgdG8gdGhl
IHJpZ2h0IHBvc2l0aW9uLgorICAgIC8vIENhbGxpbmcgdXBkYXRlRm9jdXNBcHBlYXJhbmNlKCkg
d291bGQgZ2VuZXJhdGUgYW4gdW5uZWNlc3NhcnkgY2FsbCB0byBTY3JvbGxWaWV3OjpzZXRTY3Jv
bGxQb3NpdGlvbigpLAorICAgIC8vIHdoaWNoIHdvdWxkIGp1bXAgdXMgYXJvdW5kIGR1cmluZyB0
aGlzIGFuaW1hdGlvbi4gU2VlIDxyZGFyOi8vcHJvYmxlbS82Njk5NzQxPi4KKyAgICBGcmFtZVZp
ZXcqIHZpZXcgPSBkb2N1bWVudCgpLnZpZXcoKTsKKyAgICBib29sIGlzRm9ybUNvbnRyb2wgPSB2
aWV3ICYmIGlzRm9ybUNvbnRyb2xFbGVtZW50KCk7CisgICAgaWYgKGlzRm9ybUNvbnRyb2wpCisg
ICAgICAgIHZpZXctPnNldFByb2hpYml0c1Njcm9sbGluZyh0cnVlKTsKKyNlbmRpZgogICAgIHVw
ZGF0ZUZvY3VzQXBwZWFyYW5jZShyZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pOworI2lmIFBMQVRG
T1JNKElPUykKKyAgICBpZiAoaXNGb3JtQ29udHJvbCkKKyAgICAgICAgdmlldy0+c2V0UHJvaGli
aXRzU2Nyb2xsaW5nKGZhbHNlKTsKKyNlbmRpZgogfQogCiB2b2lkIEVsZW1lbnQ6OnVwZGF0ZUZv
Y3VzQXBwZWFyYW5jZUFmdGVyQXR0YWNoSWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXgg
ODA2YmE5NDljZjc3NjllMTI5MDE0YmQxYjdmNWQ5YjRlNWI3Y2RiYS4uNWU3MmM4NjIyZGFiMDQ2
N2YzY2VkYjNjNjFkZDIxMDY3MWEwN2M4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0xMjUsNiAr
MTI1LDExIEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHRv
dWNoZW5kKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHRvdWNoY2FuY2Vs
KTsKICNlbmRpZgorI2lmIEVOQUJMRShJT1NfR0VTVFVSRV9FVkVOVFMpCisgICAgREVGSU5FX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUihnZXN0dXJlc3RhcnQpOworICAgIERFRklORV9BVFRSSUJV
VEVfRVZFTlRfTElTVEVORVIoZ2VzdHVyZWNoYW5nZSk7CisgICAgREVGSU5FX0FUVFJJQlVURV9F
VkVOVF9MSVNURU5FUihnZXN0dXJlZW5kKTsKKyNlbmRpZgogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGZ1bGxzY3Jl
ZW5jaGFuZ2UpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0ZnVs
bHNjcmVlbmVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5jcHAKaW5kZXggNzVjYWE5
NGFiNmMxYzgzODg2MjdkZDk4M2NkNWExYmJmNjgzMWRkZi4uNWMxZmViMTcxNjM3Zjc3YTNjM2Rh
MDQ0M2JlYTNmNjMzOTc2YmIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5jcHAKQEAg
LTkxLDcgKzkxLDcgQEAgYm9vbCBNb3VzZU9yRm9jdXNFdmVudENvbnRleHQ6OmlzTW91c2VPckZv
Y3VzRXZlbnRDb250ZXh0KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElP
UykKIFRvdWNoRXZlbnRDb250ZXh0OjpUb3VjaEV2ZW50Q29udGV4dChQYXNzUmVmUHRyPE5vZGU+
IG5vZGUsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IGN1cnJlbnRUYXJnZXQsIFBhc3NSZWZQdHI8
RXZlbnRUYXJnZXQ+IHRhcmdldCkKICAgICA6IEV2ZW50Q29udGV4dChub2RlLCBjdXJyZW50VGFy
Z2V0LCB0YXJnZXQpCiAgICAgLCBtX3RvdWNoZXMoVG91Y2hMaXN0OjpjcmVhdGUoKSkKQEAgLTEz
Miw2ICsxMzIsNiBAQCB2b2lkIFRvdWNoRXZlbnRDb250ZXh0OjpjaGVja1JlYWNoYWJpbGl0eShU
b3VjaExpc3QqIHRvdWNoTGlzdCkgY29uc3QKIH0KICNlbmRpZgogCi0jZW5kaWYgLy8gRU5BQkxF
KFRPVUNIX0VWRU5UUykKKyNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhUExBVEZP
Uk0oSU9TKQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmgKaW5kZXggZjM4OWNkZDViOTA3
NjMzYzE4ZGNkZmY5ZGJlNDYwYWQxYWFmZmY1ZS4uM2VjYTA0NmNlMDlhNGRhY2I5ZGZmYmZiNDg2
MGE0MjY3ZDMwMmYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuaApAQCAtMzUsNyArMzUs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFdmVudDsKLSNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFQTEFURk9STShJT1MpCiBj
bGFzcyBUb3VjaExpc3Q7CiAjZW5kaWYKIApAQCAtODIsNyArODIsNyBAQCBpbmxpbmUgTW91c2VP
ckZvY3VzRXZlbnRDb250ZXh0JiB0b01vdXNlT3JGb2N1c0V2ZW50Q29udGV4dChFdmVudENvbnRl
eHQmIGV2ZW50QwogfQogCiAKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpICYmICFQTEFURk9STShJT1MpCiBjbGFzcyBUb3VjaEV2ZW50Q29udGV4dCBG
SU5BTCA6IHB1YmxpYyBFdmVudENvbnRleHQgewogcHVibGljOgogICAgIFRvdWNoRXZlbnRDb250
ZXh0KFBhc3NSZWZQdHI8Tm9kZT4sIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IGN1cnJlbnRUYXJn
ZXQsIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHRhcmdldCk7CkBAIC0xMzIsNyArMTMyLDcgQEAg
aW5saW5lIFRvdWNoRXZlbnRDb250ZXh0KiB0b1RvdWNoRXZlbnRDb250ZXh0KEV2ZW50Q29udGV4
dCogZXZlbnRDb250ZXh0KQogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFl
dmVudENvbnRleHQgfHwgZXZlbnRDb250ZXh0LT5pc1RvdWNoRXZlbnRDb250ZXh0KCkpOwogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxUb3VjaEV2ZW50Q29udGV4dCo+KGV2ZW50Q29udGV4dCk7CiB9
Ci0jZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hf
RVZFTlRTKSAmJiAhUExBVEZPUk0oSU9TKQogCiAjaWZuZGVmIE5ERUJVRwogaW5saW5lIGJvb2wg
RXZlbnRDb250ZXh0Ojppc1VucmVhY2hhYmxlTm9kZShFdmVudFRhcmdldCogdGFyZ2V0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCBjMTU4NGU2ODRmOGMyZjU2MzYz
M2IxOGE2NjFlNjQ0MmU5ZDhlOTkwLi5mYTk0ODQ1N2QwNGNkNGY1MGFkZjVjZThkNDliMzE5ODk1
YmM3MDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtMTAwLDcg
KzEwMCw3IEBAIHB1YmxpYzoKICAgICBFdmVudENvbnRleHQqIGxhc3RDb250ZXh0SWZFeGlzdHMo
KSB7IHJldHVybiBtX3BhdGguaXNFbXB0eSgpID8gMCA6IG1fcGF0aC5sYXN0KCkuZ2V0KCk7IH0K
IAogcHJpdmF0ZToKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpICYmICFQTEFURk9STShJT1MpCiAgICAgdm9pZCB1cGRhdGVUb3VjaExpc3RzSW5FdmVu
dFBhdGgoY29uc3QgVG91Y2hMaXN0KiwgVG91Y2hFdmVudENvbnRleHQ6OlRvdWNoTGlzdFR5cGUp
OwogI2VuZGlmCiAKQEAgLTExNCwxNCArMTE0LDE0IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3Jl
bGF0ZWROb2RlVHJlZVNjb3BlKHJlbGF0ZWROb2RlLnRyZWVTY29wZSgpKQogICAgICAgICAsIG1f
cmVsYXRlZE5vZGVJbkN1cnJlbnRUcmVlU2NvcGUobnVsbHB0cikKICAgICAgICAgLCBtX2N1cnJl
bnRUcmVlU2NvcGUobnVsbHB0cikKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpICYmICFQTEFURk9STShJT1MpCiAgICAgICAgICwgbV90b3VjaCgwKQog
ICAgICAgICAsIG1fdG91Y2hMaXN0VHlwZShUb3VjaEV2ZW50Q29udGV4dDo6Tm90VG91Y2hMaXN0
KQogI2VuZGlmCiAgICAgewogICAgIH0KIAotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPUykKICAgICBFdmVudFJlbGF0ZWRO
b2RlUmVzb2x2ZXIoVG91Y2gmIHRvdWNoLCBUb3VjaEV2ZW50Q29udGV4dDo6VG91Y2hMaXN0VHlw
ZSB0b3VjaExpc3RUeXBlKQogICAgICAgICA6IG1fcmVsYXRlZE5vZGUoKnRvdWNoLnRhcmdldCgp
LT50b05vZGUoKSkKICAgICAgICAgLCBtX3JlbGF0ZWROb2RlVHJlZVNjb3BlKG1fcmVsYXRlZE5v
ZGUudHJlZVNjb3BlKCkpCkBAIC0xMzQsNyArMTM0LDcgQEAgcHVibGljOgogICAgIH0KICNlbmRp
ZgogCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAm
JiAhUExBVEZPUk0oSU9TKQogICAgIFRvdWNoKiB0b3VjaCgpIGNvbnN0IHsgcmV0dXJuIG1fdG91
Y2g7IH0KICAgICBUb3VjaEV2ZW50Q29udGV4dDo6VG91Y2hMaXN0VHlwZSB0b3VjaExpc3RUeXBl
KCkgY29uc3QgeyByZXR1cm4gbV90b3VjaExpc3RUeXBlOyB9CiAjZW5kaWYKQEAgLTE2OCw3ICsx
NjgsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFRyZWVTY29wZSYgbV9yZWxhdGVkTm9kZVRyZWVT
Y29wZTsKICAgICBOb2RlKiBtX3JlbGF0ZWROb2RlSW5DdXJyZW50VHJlZVNjb3BlOwogICAgIFRy
ZWVTY29wZSogbV9jdXJyZW50VHJlZVNjb3BlOwotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPUykKICAgICBUb3VjaCogbV90
b3VjaDsKICAgICBUb3VjaEV2ZW50Q29udGV4dDo6VG91Y2hMaXN0VHlwZSBtX3RvdWNoTGlzdFR5
cGU7CiAjZW5kaWYKQEAgLTMxMSw3ICszMTEsNyBAQCBib29sIEV2ZW50RGlzcGF0Y2hlcjo6ZGlz
cGF0Y2hFdmVudChOb2RlKiBvcmlnaW4sIFBhc3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50KQogCiAg
ICAgaWYgKEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFyZ2V0ID0gZXZlbnQtPnJlbGF0ZWRUYXJnZXQo
KSkKICAgICAgICAgZXZlbnRQYXRoLnNldFJlbGF0ZWRUYXJnZXQoKnJlbGF0ZWRUYXJnZXQpOwot
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIVBM
QVRGT1JNKElPUykKICAgICBpZiAoZXZlbnQtPmlzVG91Y2hFdmVudCgpKQogICAgICAgICBldmVu
dFBhdGgudXBkYXRlVG91Y2hMaXN0cygqdG9Ub3VjaEV2ZW50KGV2ZW50LmdldCgpKSk7CiAjZW5k
aWYKQEAgLTM5NCw3ICszOTQsNyBAQCBFdmVudFBhdGg6OkV2ZW50UGF0aChOb2RlJiB0YXJnZXRO
b2RlLCBFdmVudCYgZXZlbnQpCiAgICAgYm9vbCBpbkRvY3VtZW50ID0gdGFyZ2V0Tm9kZS5pbkRv
Y3VtZW50KCk7CiAgICAgYm9vbCBpc1NWR0VsZW1lbnQgPSB0YXJnZXROb2RlLmlzU1ZHRWxlbWVu
dCgpOwogICAgIGJvb2wgaXNNb3VzZU9yRm9jdXNFdmVudCA9IGV2ZW50LmlzTW91c2VFdmVudCgp
IHx8IGV2ZW50LmlzRm9jdXNFdmVudCgpOwotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPUykKICAgICBib29sIGlzVG91Y2hF
dmVudCA9IGV2ZW50LmlzVG91Y2hFdmVudCgpOwogI2VuZGlmCiAgICAgRXZlbnRUYXJnZXQqIHRh
cmdldCA9IDA7CkBAIC00MDcsNyArNDA3LDcgQEAgRXZlbnRQYXRoOjpFdmVudFBhdGgoTm9kZSYg
dGFyZ2V0Tm9kZSwgRXZlbnQmIGV2ZW50KQogICAgICAgICAgICAgRXZlbnRUYXJnZXQmIGN1cnJl
bnRUYXJnZXQgPSBldmVudFRhcmdldFJlc3BlY3RpbmdUYXJnZXRSdWxlcygqbm9kZSk7CiAgICAg
ICAgICAgICBpZiAoaXNNb3VzZU9yRm9jdXNFdmVudCkKICAgICAgICAgICAgICAgICBtX3BhdGgu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8TW91c2VPckZvY3VzRXZlbnRDb250ZXh0Pihub2RlLCAm
Y3VycmVudFRhcmdldCwgdGFyZ2V0KSk7Ci0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhUExBVEZPUk0oSU9TKQogICAgICAgICAgICAgZWxzZSBp
ZiAoaXNUb3VjaEV2ZW50KQogICAgICAgICAgICAgICAgIG1fcGF0aC5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxUb3VjaEV2ZW50Q29udGV4dD4obm9kZSwgJmN1cnJlbnRUYXJnZXQsIHRhcmdldCkp
OwogI2VuZGlmCkBAIC00MjQsNyArNDI0LDcgQEAgRXZlbnRQYXRoOjpFdmVudFBhdGgoTm9kZSYg
dGFyZ2V0Tm9kZSwgRXZlbnQmIGV2ZW50KQogICAgIH0KIH0KIAotI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgIVBMQVRGT1JNKElPUykKIHN0YXRp
YyB2b2lkIGFkZFJlbGF0ZWROb2RlUmVzb2x2ZXJzRm9yVG91Y2hMaXN0KFZlY3RvcjxFdmVudFJl
bGF0ZWROb2RlUmVzb2x2ZXIsIDE2PiYgdG91Y2hUYXJnZXRSZXNvbHZlcnMsIFRvdWNoTGlzdCog
dG91Y2hMaXN0LCBUb3VjaEV2ZW50Q29udGV4dDo6VG91Y2hMaXN0VHlwZSB0eXBlKQogewogICAg
IGNvbnN0IHNpemVfdCB0b3VjaExpc3RTaXplID0gdG91Y2hMaXN0LT5sZW5ndGgoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnROYW1lcy5oCmluZGV4IDZhMzY2MWVlYzIwZTQyNDk1MWMwY2UyNDBjMWMzNTlhMTBi
OWI0MjcuLjA0ODgzOWFiNjdmMjFjZWIxMzEzMjE5ZDM5OGMyYWY5Mjg2NGQ5NWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaApAQCAtMjY1LDYgKzI2NSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgXAogICAgIG1hY3JvKHNlY3VyaXR5cG9saWN5dmlvbGF0aW9uKSBcCiAgICAgXAorICAg
IC8qIEVOQUJMRShJT1NfQUlSUExBWSkgKi8gXAorICAgIG1hY3JvKHdlYmtpdGN1cnJlbnRwbGF5
YmFja3RhcmdldGlzd2lyZWxlc3NjaGFuZ2VkKSBcCisgICAgbWFjcm8od2Via2l0cGxheWJhY2t0
YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkKSBcCisgICAgLyogRW5kIG9mIEVOQUJMRShJT1NfQUlS
UExBWSkgKi8gXAorICAgIFwKKyAgICAvKiBFTkFCTEUoSU9TX0dFU1RVUkVfRVZFTlRTKSAqLyBc
CisgICAgbWFjcm8oZ2VzdHVyZXN0YXJ0KSBcCisgICAgbWFjcm8oZ2VzdHVyZWNoYW5nZSkgXAor
ICAgIG1hY3JvKGdlc3R1cmVlbmQpIFwKKyAgICAvKiBFbmQgb2YgRU5BQkxFKElPU19HRVNUVVJF
X0VWRU5UUykgKi8gXAogCiAvLyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNICiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TmFtZXMuaW4KaW5kZXggMzk4ZTA0MjQ3NTBhMTAyOTJkY2I1NDAzOGI4YzQ1
ODA2NWQzNmUzOS4uZDBmMzEzZDRjNGU1ZGRlNTcwNjljMjQ4NjA0YjI2Yzk1MjlhNDc0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4KKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4KQEAgLTU5LDQgKzU5LDYgQEAgVHJhY2tFdmVudCBjb25k
aXRpb25hbD1WSURFT19UUkFDSwogQ1NTRm9udEZhY2VMb2FkRXZlbnQgY29uZGl0aW9uYWw9Rk9O
VF9MT0FEX0VWRU5UUwogU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudCBjb25kaXRpb25hbD1D
U1BfTkVYVAogVUlSZXF1ZXN0RXZlbnQgY29uZGl0aW9uYWw9SU5ESUVfVUkKK0dlc3R1cmVFdmVu
dCBjb25kaXRpb25hbD1JT1NfR0VTVFVSRV9FVkVOVFMKK1dlYktpdFBsYXliYWNrVGFyZ2V0QXZh
aWxhYmlsaXR5RXZlbnQgY29uZGl0aW9uYWw9SU9TX0FJUlBMQVkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAKaW5kZXggMWNmZDRkMWRjMjE3ZjA0MTcyMGNkMjJhYzdj
NGEyOGRiYzVjYWYyOS4uZDNiOGMzNTgxNDE5NjUyODNiZmI1Y2Q1ZjBkY2VmMzNkYWFhMGZkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCkBAIC00Nyw4ICs0Nywx
MiBAQCBzdGF0aWMgTGF5b3V0U2l6ZSBjb250ZW50c1Njcm9sbE9mZnNldChBYnN0cmFjdFZpZXcq
IGFic3RyYWN0VmlldykKICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7
CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybiBMYXlvdXRTaXplKCk7CisjaWYg
IVBMQVRGT1JNKElPUykKICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IGZyYW1lLT5wYWdlWm9vbUZh
Y3RvcigpICogZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKTsKICAgICByZXR1cm4gTGF5b3V0U2l6
ZShmcmFtZVZpZXctPnNjcm9sbFgoKSAvIHNjYWxlRmFjdG9yLCBmcmFtZVZpZXctPnNjcm9sbFko
KSAvIHNjYWxlRmFjdG9yKTsKKyNlbHNlCisgICAgcmV0dXJuIExheW91dFNpemUoZnJhbWVWaWV3
LT5hY3R1YWxTY3JvbGxYKCksIGZyYW1lVmlldy0+YWN0dWFsU2Nyb2xsWSgpKTsKKyNlbmRpZgog
fQogCiBNb3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGRvdWJsZSB0
aW1lc3RhbXAsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiBhYnN0cmFjdFZpZXcsCkBAIC03MCw3
ICs3NCwxMSBAQCBNb3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYgogICAgIEZyYW1lKiBmcmFtZSA9IHZp
ZXcoKSA/IHZpZXcoKS0+ZnJhbWUoKSA6IDA7CiAgICAgaWYgKGZyYW1lICYmICFpc1NpbXVsYXRl
ZCkgewogICAgICAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpKSB7
CisjaWYgIVBMQVRGT1JNKElPUykKICAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uID0gZnJhbWVW
aWV3LT5zY3JvbGxQb3NpdGlvbigpOworI2Vsc2UKKyAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9u
ID0gZnJhbWVWaWV3LT5hY3R1YWxWaXNpYmxlQ29udGVudFJlY3QoKS5sb2NhdGlvbigpOworI2Vu
ZGlmCiAgICAgICAgICAgICBhZGp1c3RlZFBhZ2VMb2NhdGlvbiA9IGZyYW1lVmlldy0+d2luZG93
VG9Db250ZW50cyh3aW5kb3dMb2NhdGlvbik7CiAgICAgICAgICAgICBmbG9hdCBzY2FsZUZhY3Rv
ciA9IDEgLyAoZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCkgKiBmcmFtZS0+ZnJhbWVTY2FsZUZhY3Rv
cigpKTsKICAgICAgICAgICAgIGlmIChzY2FsZUZhY3RvciAhPSAxLjBmKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKaW5kZXggNjA4YjUyMWU3ZTNjYjE0MzNiZDQzYzEyNzFhZDVlMDAxYzZjMGQyZC4uMGE0Y2Yw
YTI4YzVkMThlYjVkNWI4MDVjZmVhNjNjYjA3NGIxMmNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAt
MzE1LDggKzMxNSwxMyBAQCBOb2RlOjp+Tm9kZSgpCiAKIHZvaWQgTm9kZTo6d2lsbEJlRGVsZXRl
ZEZyb20oRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIGlmIChoYXNFdmVudFRhcmdldERhdGEo
KSkKKyAgICBpZiAoaGFzRXZlbnRUYXJnZXREYXRhKCkpIHsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKSAmJiBQTEFURk9STShJT1MpCisgICAgICAgIGlmIChkb2N1bWVudCkKKyAgICAgICAgICAg
IGRvY3VtZW50LT5yZW1vdmVUb3VjaEV2ZW50TGlzdGVuZXIodGhpcywgdHJ1ZSk7CisjZW5kaWYK
ICAgICAgICAgY2xlYXJFdmVudFRhcmdldERhdGEoKTsKKyAgICB9CiAKICAgICBpZiAoZG9jdW1l
bnQpIHsKICAgICAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gZG9jdW1lbnQtPmV4aXN0
aW5nQVhPYmplY3RDYWNoZSgpKQpAQCAtNzgzLDcgKzc4OCw3IEBAIHZvaWQgTm9kZTo6Y2hlY2tT
ZXRQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgIC8vIEF0dHJpYnV0ZS1zcGVjaWZpYyBjaGVja3MgYXJlIGluIEF0dHI6OnNldFByZWZpeCgp
LgogfQogCi1ib29sIE5vZGU6OmlzRGVzY2VuZGFudE9mKGNvbnN0IE5vZGUgKm90aGVyKSBjb25z
dAorYm9vbCBOb2RlOjppc0Rlc2NlbmRhbnRPZihjb25zdCBOb2RlKiBvdGhlcikgY29uc3QKIHsK
ICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBvdGhlciBpcyBhbiBhbmNlc3RvciBvZiB0aGlzLCBvdGhl
cndpc2UgZmFsc2UKICAgICBpZiAoIW90aGVyIHx8ICFvdGhlci0+aGFzQ2hpbGROb2RlcygpIHx8
IGluRG9jdW1lbnQoKSAhPSBvdGhlci0+aW5Eb2N1bWVudCgpKQpAQCAtNzk3LDYgKzgwMiwxOCBA
QCBib29sIE5vZGU6OmlzRGVzY2VuZGFudE9mKGNvbnN0IE5vZGUgKm90aGVyKSBjb25zdAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBOb2RlOjppc0Rlc2NlbmRhbnRPclNoYWRvd0Rlc2Nl
bmRhbnRPZihjb25zdCBOb2RlKiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAoIW90aGVyKSAKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChpc0Rlc2NlbmRhbnRPZihvdGhlcikpCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGNvbnN0IE5vZGUqIHNoYWRvd0FuY2VzdG9yTm9kZSA9IGRl
cHJlY2F0ZWRTaGFkb3dBbmNlc3Rvck5vZGUoKTsKKyAgICBpZiAoIXNoYWRvd0FuY2VzdG9yTm9k
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBzaGFkb3dBbmNlc3Rvck5vZGUg
PT0gb3RoZXIgfHwgc2hhZG93QW5jZXN0b3JOb2RlLT5pc0Rlc2NlbmRhbnRPZihvdGhlcik7Cit9
CisKIGJvb2wgTm9kZTo6Y29udGFpbnMoY29uc3QgTm9kZSogbm9kZSkgY29uc3QKIHsKICAgICBp
ZiAoIW5vZGUpCkBAIC0xNzc1LDYgKzE3OTIsMjggQEAgc3RhdGljIGlubGluZSBib29sIHRyeUFk
ZEV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBldmUK
ICAgICBlbHNlIGlmIChldmVudE5hbWVzKCkuaXNUb3VjaEV2ZW50VHlwZShldmVudFR5cGUpKQog
ICAgICAgICB0YXJnZXROb2RlLT5kb2N1bWVudCgpLmRpZEFkZFRvdWNoRXZlbnRIYW5kbGVyKHRh
cmdldE5vZGUpOwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmICh0YXJnZXROb2RlID09ICZ0
YXJnZXROb2RlLT5kb2N1bWVudCgpICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuc2Nyb2xs
RXZlbnQpCisgICAgICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZG9tV2luZG93KCktPmluY3Jl
bWVudFNjcm9sbEV2ZW50TGlzdGVuZXJzQ291bnQoKTsKKworICAgIC8vIEZJWE1FOiBXb3VsZCBp
dCBiZSBzdWZmaWNpZW50IHRvIHNwZWNpYWwtY2FzZSB0aGlzIGNvZGUgZm9yIDxib2R5PiBhbmQg
PGZyYW1lc2V0Pj8KKyAgICAvLworICAgIC8vIFRoaXMgY29kZSB3YXMgYWRkZWQgdG8gYWRkcmVz
cyA8cmRhcjovL3Byb2JsZW0vNTg0NjQ5Mj4gT25vcmllbnRhdGlvbmNoYW5nZSBldmVudCBub3Qg
d29ya2luZyBmb3IgZG9jdW1lbnQuYm9keS4KKyAgICAvLyBGb3J3YXJkIHRoaXMgY2FsbCB0byBh
ZGRFdmVudExpc3RlbmVyKCkgdG8gdGhlIHdpbmRvdyBzaW5jZSB0aGVzZSBhcmUgd2luZG93LW9u
bHkgZXZlbnRzLgorICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLm9yaWVudGF0aW9u
Y2hhbmdlRXZlbnQgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5yZXNpemVFdmVudCkKKyAg
ICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5kb21XaW5kb3coKS0+YWRkRXZlbnRMaXN0ZW5l
cihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKKworI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCisgICAgaWYgKGV2ZW50TmFtZXMoKS5pc1RvdWNoRXZlbnRUeXBlKGV2ZW50VHlwZSkp
CisgICAgICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkuYWRkVG91Y2hFdmVudExpc3RlbmVyKHRh
cmdldE5vZGUpOworI2VuZGlmCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorCisjaWYgRU5BQkxF
KElPU19HRVNUVVJFX0VWRU5UUykgJiYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBpZiAoZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMoKS5nZXN0dXJlc3RhcnRFdmVudCB8fCBldmVudFR5cGUgPT0g
ZXZlbnROYW1lcygpLmdlc3R1cmVjaGFuZ2VFdmVudCB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1l
cygpLmdlc3R1cmVlbmRFdmVudCkKKyAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5hZGRU
b3VjaEV2ZW50TGlzdGVuZXIodGFyZ2V0Tm9kZSk7CisjZW5kaWYKKwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0xNzk1LDYgKzE4MzQsMjcgQEAgc3RhdGljIGlubGluZSBib29sIHRyeVJlbW92
ZUV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJgogICAg
IGVsc2UgaWYgKGV2ZW50TmFtZXMoKS5pc1RvdWNoRXZlbnRUeXBlKGV2ZW50VHlwZSkpCiAgICAg
ICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZGlkUmVtb3ZlVG91Y2hFdmVudEhhbmRsZXIodGFy
Z2V0Tm9kZSk7CiAKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKHRhcmdldE5vZGUgPT0gJnRh
cmdldE5vZGUtPmRvY3VtZW50KCkgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5zY3JvbGxF
dmVudCkKKyAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5kb21XaW5kb3coKS0+ZGVjcmVt
ZW50U2Nyb2xsRXZlbnRMaXN0ZW5lcnNDb3VudCgpOworCisgICAgLy8gRklYTUU6IFdvdWxkIGl0
IGJlIHN1ZmZpY2llbnQgdG8gc3BlY2lhbC1jYXNlIHRoaXMgY29kZSBmb3IgPGJvZHk+IGFuZCA8
ZnJhbWVzZXQ+PyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzE1NjQ3ODIzPi4KKyAgICAvLyBUaGlzIGNv
ZGUgd2FzIGFkZGVkIHRvIGFkZHJlc3MgPHJkYXI6Ly9wcm9ibGVtLzU4NDY0OTI+IE9ub3JpZW50
YXRpb25jaGFuZ2UgZXZlbnQgbm90IHdvcmtpbmcgZm9yIGRvY3VtZW50LmJvZHkuCisgICAgLy8g
Rm9yd2FyZCB0aGlzIGNhbGwgdG8gcmVtb3ZlRXZlbnRMaXN0ZW5lcigpIHRvIHRoZSB3aW5kb3cg
c2luY2UgdGhlc2UgYXJlIHdpbmRvdy1vbmx5IGV2ZW50cy4KKyAgICBpZiAoZXZlbnRUeXBlID09
IGV2ZW50TmFtZXMoKS5vcmllbnRhdGlvbmNoYW5nZUV2ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVu
dE5hbWVzKCkucmVzaXplRXZlbnQpCisgICAgICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZG9t
V2luZG93KCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdXNlQ2Fw
dHVyZSk7CisKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGlmIChldmVudE5hbWVzKCku
aXNUb3VjaEV2ZW50VHlwZShldmVudFR5cGUpKQorICAgICAgICB0YXJnZXROb2RlLT5kb2N1bWVu
dCgpLnJlbW92ZVRvdWNoRXZlbnRMaXN0ZW5lcih0YXJnZXROb2RlKTsKKyNlbmRpZgorI2VuZGlm
IC8vIFBMQVRGT1JNKElPUykKKworI2lmIEVOQUJMRShJT1NfR0VTVFVSRV9FVkVOVFMpICYmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZ2Vz
dHVyZXN0YXJ0RXZlbnQgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5nZXN0dXJlY2hhbmdl
RXZlbnQgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5nZXN0dXJlZW5kRXZlbnQpCisgICAg
ICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkucmVtb3ZlVG91Y2hFdmVudExpc3RlbmVyKHRhcmdl
dE5vZGUpOworI2VuZGlmCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTk2NSw3ICsyMDI1
LDcgQEAgdm9pZCBOb2RlOjpkaXNwYXRjaFNjb3BlZEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2
ZW50KQogCiBib29sIE5vZGU6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQp
CiB7Ci0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAm
JiAhUExBVEZPUk0oSU9TKQogICAgIGlmIChldmVudC0+aXNUb3VjaEV2ZW50KCkpCiAgICAgICAg
IHJldHVybiBkaXNwYXRjaFRvdWNoRXZlbnQoYWRvcHRSZWYodG9Ub3VjaEV2ZW50KGV2ZW50Lmxl
YWtSZWYoKSkpKTsKICNlbmRpZgpAQCAtMTk5NCw3ICsyMDU0LDcgQEAgYm9vbCBOb2RlOjpkaXNw
YXRjaERPTUFjdGl2YXRlRXZlbnQoaW50IGRldGFpbCwgUGFzc1JlZlB0cjxFdmVudD4gdW5kZXJs
eWluZ0V2ZW4KICAgICByZXR1cm4gZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCk7CiB9CiAKLSNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFQTEFURk9S
TShJT1MpCiBib29sIE5vZGU6OmRpc3BhdGNoVG91Y2hFdmVudChQYXNzUmVmUHRyPFRvdWNoRXZl
bnQ+IGV2ZW50KQogewogICAgIHJldHVybiBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQo
dGhpcywgZXZlbnQpOwpAQCAtMjA3Nyw2ICsyMTM3LDE5IEBAIHZvaWQgTm9kZTo6ZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAgIGlmIChzdGFydE5vZGUgJiYgc3RhcnRO
b2RlLT5yZW5kZXJlcigpKQogICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50
KCkuZnJhbWUoKSkKICAgICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuZGVmYXVs
dFdoZWVsRXZlbnRIYW5kbGVyKHN0YXJ0Tm9kZSwgd2hlZWxFdmVudCk7CisjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykgJiYgUExBVEZPUk0oSU9TKQorICAgIH0gZWxzZSBpZiAoZXZlbnQtPmV2ZW50
SW50ZXJmYWNlKCkgPT0gVG91Y2hFdmVudEludGVyZmFjZVR5cGUgJiYgZXZlbnROYW1lcygpLmlz
VG91Y2hFdmVudFR5cGUoZXZlbnRUeXBlKSkgeworICAgICAgICBUb3VjaEV2ZW50KiB0b3VjaEV2
ZW50ID0gc3RhdGljX2Nhc3Q8VG91Y2hFdmVudCo+KGV2ZW50KTsKKworICAgICAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICAgICAgd2hpbGUgKHJlbmRl
cmVyICYmICghcmVuZGVyZXItPmlzQm94KCkgfHwgIXRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y2Fu
QmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpKQorICAgICAgICAgICAgcmVuZGVyZXIg
PSByZW5kZXJlci0+cGFyZW50KCk7CisKKyAgICAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVy
LT5ub2RlKCkpIHsKKyAgICAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZy
YW1lKCkpCisgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLmRlZmF1bHRUb3Vj
aEV2ZW50SGFuZGxlcihyZW5kZXJlci0+bm9kZSgpLCB0b3VjaEV2ZW50KTsKKyAgICAgICAgfQor
I2VuZGlmCiAgICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS53ZWJr
aXRFZGl0YWJsZUNvbnRlbnRDaGFuZ2VkRXZlbnQpIHsKICAgICAgICAgZGlzcGF0Y2hJbnB1dEV2
ZW50KCk7CiAgICAgfQpAQCAtMjA4NCwyMCArMjE1NywzMyBAQCB2b2lkIE5vZGU6OmRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogCiBib29sIE5vZGU6OndpbGxSZXNwb25kVG9Nb3Vz
ZU1vdmVFdmVudHMoKQogeworICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhlIGlPUyBjb2RlIHBhdGgg
ZGlmZmVyZW50IGZyb20gdGhlIG5vbi1pT1MgY29kZSBwYXRoPworI2lmICFQTEFURk9STShJT1Mp
CiAgICAgaWYgKCFpc0VsZW1lbnROb2RlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBp
ZiAodG9FbGVtZW50KHRoaXMpLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCiAgICAgcmV0dXJuIGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFt
ZXMoKS5tb3VzZW1vdmVFdmVudCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLm1v
dXNlb3ZlckV2ZW50KSB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2VvdXRF
dmVudCk7CiB9CiAKIGJvb2wgTm9kZTo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKQog
eworICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhlIGlPUyBjb2RlIHBhdGggZGlmZmVyZW50IGZyb20g
dGhlIG5vbi1pT1MgY29kZSBwYXRoPworI2lmIFBMQVRGT1JNKElPUykKKyAgICByZXR1cm4gaXND
b250ZW50RWRpdGFibGUoKSB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2V1
cEV2ZW50KSB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQp
IHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KTsKKyNlbHNlCiAg
ICAgaWYgKCFpc0VsZW1lbnROb2RlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
dG9FbGVtZW50KHRoaXMpLT5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIHJldHVybiBpc0NvbnRlbnRFZGl0YWJsZShVc2VyU2VsZWN0QWxsSXNBbHdh
eXNOb25FZGl0YWJsZSkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNldXBF
dmVudCkgfHwgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50KSB8
fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgfHwgaGFzRXZlbnRM
aXN0ZW5lcnMoZXZlbnROYW1lcygpLkRPTUFjdGl2YXRlRXZlbnQpOworI2VuZGlmCit9CisKK2Jv
b2wgTm9kZTo6d2lsbFJlc3BvbmRUb01vdXNlV2hlZWxFdmVudHMoKQoreworICAgIHJldHVybiBo
YXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2V3aGVlbEV2ZW50KTsKIH0KIAogYm9v
bCBOb2RlOjp3aWxsUmVzcG9uZFRvVG91Y2hFdmVudHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggMjRiOTZm
MmVkN2FiYWU3ZGJjMDk0MDQyZWRkMjViY2ZmNmNjODBjOC4uNDk2OGM0MThmZDY1Mzk2Y2YwOTg4
YWFjYzU5MmY0N2ZjNmEyNzM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC04Miw3ICs4Miw3IEBAIGNsYXNz
IFRhZ05vZGVMaXN0OwogY2xhc3MgVUlSZXF1ZXN0RXZlbnQ7CiAjZW5kaWYKICAgICAKLSNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpICYmICFQTEFURk9S
TShJT1MpCiBjbGFzcyBUb3VjaEV2ZW50OwogI2VuZGlmCiAKQEAgLTQxNCw3ICs0MTQsOSBAQCBw
dWJsaWM6CiAgICAgTm9kZSogY2hpbGROb2RlKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKIAogICAg
IHZvaWQgY2hlY2tTZXRQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIEV4Y2VwdGlv
bkNvZGUmKTsKKwogICAgIGJvb2wgaXNEZXNjZW5kYW50T2YoY29uc3QgTm9kZSopIGNvbnN0Owor
ICAgIGJvb2wgaXNEZXNjZW5kYW50T3JTaGFkb3dEZXNjZW5kYW50T2YoY29uc3QgTm9kZSopIGNv
bnN0OwogICAgIGJvb2wgY29udGFpbnMoY29uc3QgTm9kZSopIGNvbnN0OwogICAgIGJvb2wgY29u
dGFpbnNJbmNsdWRpbmdTaGFkb3dET00oY29uc3QgTm9kZSopIGNvbnN0OwogICAgIGJvb2wgY29u
dGFpbnNJbmNsdWRpbmdIb3N0RWxlbWVudHMoY29uc3QgTm9kZSopIGNvbnN0OwpAQCAtNTAxLDYg
KzUwMyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VN
b3ZlRXZlbnRzKCk7CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZl
bnRzKCk7CisgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZVdoZWVsRXZlbnRzKCk7
CiAgICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Ub3VjaEV2ZW50cygpOwogCiAgICAgdW5z
aWduZWQgc2hvcnQgY29tcGFyZURvY3VtZW50UG9zaXRpb24oTm9kZSopOwpAQCAtNTI0LDcgKzUy
Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQoKTsK
ICAgICBib29sIGRpc3BhdGNoRE9NQWN0aXZhdGVFdmVudChpbnQgZGV0YWlsLCBQYXNzUmVmUHRy
PEV2ZW50PiB1bmRlcmx5aW5nRXZlbnQpOwogCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKSAmJiAhUExBVEZPUk0oSU9TKQogICAgIGJvb2wgZGlzcGF0
Y2hUb3VjaEV2ZW50KFBhc3NSZWZQdHI8VG91Y2hFdmVudD4pOwogI2VuZGlmCiAjaWYgRU5BQkxF
KElORElFX1VJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAppbmRleCBjMTM0MTJlYjE4MGQxZmI5ODJiMjU3
OTllODI5NTVjMDYwMDJmZmU2Li5lMTAwMmQ4NzFkNjkyNmY2MWNjYTVmNTU5YTA1OTMxZDY4OTQw
OGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaApAQCAtMjM5LDYgKzIzOSwzMCBAQCBpbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFBvc2l0aW9uJiBhLCBjb25zdCBQb3NpdGlvbiYgYikKICAgICBy
ZXR1cm4gIShhID09IGIpOwogfQogCitpbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgUG9zaXRp
b24mIGEsIGNvbnN0IFBvc2l0aW9uJiBiKQoreworICAgIGlmIChhLmlzTnVsbCgpIHx8IGIuaXNO
dWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYS5hbmNob3JOb2RlKCkgPT0g
Yi5hbmNob3JOb2RlKCkpCisgICAgICAgIHJldHVybiBhLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0
KCkgPCBiLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CisgICAgcmV0dXJuIGIuYW5jaG9yTm9k
ZSgpLT5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhLmFuY2hvck5vZGUoKSkgPT0gTm9kZTo6RE9D
VU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj4oY29u
c3QgUG9zaXRpb24mIGEsIGNvbnN0IFBvc2l0aW9uJiBiKSAKK3sKKyAgICByZXR1cm4gIWEuaXNO
dWxsKCkgJiYgIWIuaXNOdWxsKCkgJiYgYSAhPSBiICYmIGIgPCBhOworfQorCitpbmxpbmUgYm9v
bCBvcGVyYXRvcj49KGNvbnN0IFBvc2l0aW9uJiBhLCBjb25zdCBQb3NpdGlvbiYgYikgCit7Cisg
ICAgcmV0dXJuICFhLmlzTnVsbCgpICYmICFiLmlzTnVsbCgpICYmIChhID09IGIgfHwgYSA+IGIp
OworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFBvc2l0aW9uJiBhLCBjb25zdCBQ
b3NpdGlvbiYgYikgCit7CisgICAgcmV0dXJuICFhLmlzTnVsbCgpICYmICFiLmlzTnVsbCgpICYm
IChhID09IGIgfHwgYSA8IGIpOworfQorCiAvLyBXZSBkZWZpbmUgcG9zaXRpb24gY3JlYXRpb24g
ZnVuY3Rpb25zIHRvIG1ha2UgY2FsbHNpdGVzIG1vcmUgcmVhZGFibGUuCiAvLyBUaGVzZSBhcmUg
aW5saW5lIHRvIHByZXZlbnQgcmVmLWNodXJuIHdoZW4gcmV0dXJuaW5nIGEgUG9zaXRpb24gb2Jq
ZWN0LgogLy8gSWYgd2UgZXZlciBhZGQgYSBQYXNzUG9zaXRpb24gd2UgY2FuIG1ha2UgdGhlc2Ug
bm9uLWlubGluZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4IDE5MTRkMjVkYmJhYmY4NmRmNDRlYzI2
NjE4YmQ1YzYyMDA1NjIxYTQuLjY1ODlhM2FjNTJhN2UxZjdkM2NjYmQ4OWM2MjIxMzU0NzE4ZjRj
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtNTAsNiArNTAsMTAgQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCisj
aWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIlNlbGVjdGlvblJlY3QuaCIKKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0xMDAs
NiArMTA0LDE1IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IFJhbmdlOjpjcmVhdGUoRG9jdW1lbnQmIG93
bmVyRG9jdW1lbnQsIGNvbnN0IFBvc2l0aW9uJiBzdGFydCwKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFJhbmdlKG93bmVyRG9jdW1lbnQsIHN0YXJ0LmNvbnRhaW5lck5vZGUoKSwgc3RhcnQuY29t
cHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpLCBlbmQuY29udGFpbmVyTm9kZSgpLCBlbmQuY29t
cHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpKSk7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCitQ
YXNzUmVmUHRyPFJhbmdlPiBSYW5nZTo6Y3JlYXRlKERvY3VtZW50JiBvd25lckRvY3VtZW50LCBj
b25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVTdGFydCwgY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiB2aXNpYmxlRW5kKQoreworICAgIFBvc2l0aW9uIHN0YXJ0ID0gdmlzaWJsZVN0YXJ0LmRlZXBF
cXVpdmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CisgICAgUG9zaXRpb24gZW5k
ID0gdmlzaWJsZUVuZC5kZWVwRXF1aXZhbGVudCgpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgp
OworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmFuZ2Uob3duZXJEb2N1bWVudCwgc3RhcnQuYW5j
aG9yTm9kZSgpLCBzdGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlbmQuYW5jaG9yTm9k
ZSgpLCBlbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSkpOworfQorI2VuZGlmCisKIFJhbmdl
Ojp+UmFuZ2UoKQogewogICAgIC8vIEFsd2F5cyBkZXRhY2ggKGV2ZW4gaWYgd2UndmUgYWxyZWFk
eSBkZXRhY2hlZCkgdG8gZml4IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNjA0NApAQCAtMTY2MCw2ICsxNjczLDI5NiBAQCB2b2lkIFJhbmdlOjp0ZXh0UXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCwgUmFuZ2VJbgog
ICAgICAgICAqaW5GaXhlZCA9IGFsbEZpeGVkID8gRW50aXJlbHlGaXhlZFBvc2l0aW9uIDogKHNv
bWVGaXhlZCA/IFBhcnRpYWxseUZpeGVkUG9zaXRpb24gOiBOb3RGaXhlZFBvc2l0aW9uKTsKIH0K
IAorI2lmIFBMQVRGT1JNKElPUykKK3N0YXRpYyBib29sIGludGVydmFsc1N1ZmZpY2llbnRseU92
ZXJsYXAoaW50IHN0YXJ0QSwgaW50IGVuZEEsIGludCBzdGFydEIsIGludCBlbmRCKQoreworICAg
IGlmIChlbmRBIDw9IHN0YXJ0QSB8fCBlbmRCIDw9IHN0YXJ0QikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgY29uc3QgZmxvYXQgc3VmZmljaWVudE92ZXJsYXAgPSAuNzU7CisKKyAgICBp
bnQgbGVuZ3RoQSA9IGVuZEEgLSBzdGFydEE7CisgICAgaW50IGxlbmd0aEIgPSBlbmRCIC0gc3Rh
cnRCOworCisgICAgaW50IG1heFN0YXJ0ID0gc3RkOjptYXgoc3RhcnRBLCBzdGFydEIpOworICAg
IGludCBtaW5FbmQgPSBzdGQ6Om1pbihlbmRBLCBlbmRCKTsKKworICAgIGlmIChtYXhTdGFydCA+
IG1pbkVuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1pbkVuZCAtIG1h
eFN0YXJ0ID49IHN1ZmZpY2llbnRPdmVybGFwICogc3RkOjptaW4obGVuZ3RoQSwgbGVuZ3RoQik7
Cit9CisKKyNpZm5kZWYgTkRFQlVHCitzdGF0aWMgdm9pZCBwcmludFJlY3RzKFZlY3RvcjxTZWxl
Y3Rpb25SZWN0PiYgcmVjdHMpCit7CisgICAgc2l6ZV90IG51bWJlck9mUmVjdHMgPSByZWN0cy5z
aXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlJlY3RzOyArK2kpIHsK
KyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlenVcdFslZCwgJWRdIC0gWyVkLCAlZF1cdCVjICVz
XHRpcyBmaXJzdDogJXNcdGlzIGxhc3Q6JXNcdGNvbnRhaW5zIHN0YXJ0OiAlc1x0Y29udGFpbnMg
ZW5kOiAlc1x0bGluZTogJWRcdHJ1Ynk6ICVzXHRjb2x1bW46ICVkXG4iLAorICAgICAgICAgICAg
aSwKKyAgICAgICAgICAgIHJlY3RzW2ldLnJlY3QoKS54KCksIHJlY3RzW2ldLnJlY3QoKS55KCks
IHJlY3RzW2ldLnJlY3QoKS53aWR0aCgpLCByZWN0c1tpXS5yZWN0KCkuaGVpZ2h0KCksCisgICAg
ICAgICAgICByZWN0c1tpXS5pc0hvcml6b250YWwoKSA/ICdIJyA6ICdWJywKKyAgICAgICAgICAg
IHJlY3RzW2ldLmRpcmVjdGlvbigpID09IExUUiA/ICJMVFIiIDogIlJUTCIsCisgICAgICAgICAg
ICByZWN0c1tpXS5pc0ZpcnN0T25MaW5lKCkgPyAieWVzIiA6ICJubyIsCisgICAgICAgICAgICBy
ZWN0c1tpXS5pc0xhc3RPbkxpbmUoKSA/ICJ5ZXMiIDogIm5vIiwKKyAgICAgICAgICAgIHJlY3Rz
W2ldLmNvbnRhaW5zU3RhcnQoKSA/ICJ5ZXMiIDogIm5vIiwKKyAgICAgICAgICAgIHJlY3RzW2ld
LmNvbnRhaW5zRW5kKCkgPyAieWVzIiA6ICJubyIsCisgICAgICAgICAgICByZWN0c1tpXS5saW5l
TnVtYmVyKCksCisgICAgICAgICAgICByZWN0c1tpXS5pc1J1YnlUZXh0KCkgPyAieWVzIjogIm5v
IiwKKyAgICAgICAgICAgIHJlY3RzW2ldLmNvbHVtbk51bWJlcigpKTsKKyAgICB9CisgICAgZnBy
aW50ZihzdGRlcnIsICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7
Cit9CisjZW5kaWYKKworc3RhdGljIGlubGluZSB2b2lkIGFkanVzdExpbmVIZWlnaHRPZlNlbGVj
dGlvblJlY3RzKFZlY3RvcjxTZWxlY3Rpb25SZWN0PiYgcmVjdHMsIHNpemVfdCBudW1iZXJPZlJl
Y3RzLCBpbnQgbGluZU51bWJlciwgaW50IGxpbmVUb3AsIGludCBsaW5lSGVpZ2h0KQoreworICAg
IEFTU0VSVChyZWN0cy5zaXplKCkgPj0gbnVtYmVyT2ZSZWN0cyk7CisgICAgZm9yIChzaXplX3Qg
aSA9IG51bWJlck9mUmVjdHM7IGk7ICkgeworICAgICAgICAtLWk7CisgICAgICAgIGlmIChyZWN0
c1tpXS5saW5lTnVtYmVyKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgcmVjdHNbaV0u
c2V0TGluZU51bWJlcihsaW5lTnVtYmVyKTsKKyAgICAgICAgcmVjdHNbaV0uc2V0TG9naWNhbFRv
cChsaW5lVG9wKTsKKyAgICAgICAgcmVjdHNbaV0uc2V0TG9naWNhbEhlaWdodChsaW5lSGVpZ2h0
KTsKKyAgICB9Cit9CisKK3N0YXRpYyBTZWxlY3Rpb25SZWN0IGNvYWxlc2NlU2VsZWN0aW9uUmVj
dHMoY29uc3QgU2VsZWN0aW9uUmVjdCYgb3JpZ2luYWwsIGNvbnN0IFNlbGVjdGlvblJlY3QmIHBy
ZXZpb3VzKQoreworICAgIFNlbGVjdGlvblJlY3QgcmVzdWx0KHVuaW9uUmVjdChwcmV2aW91cy5y
ZWN0KCksIG9yaWdpbmFsLnJlY3QoKSksIG9yaWdpbmFsLmlzSG9yaXpvbnRhbCgpLCBvcmlnaW5h
bC5jb2x1bW5OdW1iZXIoKSk7CisgICAgcmVzdWx0LnNldERpcmVjdGlvbihvcmlnaW5hbC5jb250
YWluc1N0YXJ0KCkgfHwgb3JpZ2luYWwuY29udGFpbnNFbmQoKSA/IG9yaWdpbmFsLmRpcmVjdGlv
bigpIDogcHJldmlvdXMuZGlyZWN0aW9uKCkpOworICAgIHJlc3VsdC5zZXRDb250YWluc1N0YXJ0
KHByZXZpb3VzLmNvbnRhaW5zU3RhcnQoKSB8fCBvcmlnaW5hbC5jb250YWluc1N0YXJ0KCkpOwor
ICAgIHJlc3VsdC5zZXRDb250YWluc0VuZChwcmV2aW91cy5jb250YWluc0VuZCgpIHx8IG9yaWdp
bmFsLmNvbnRhaW5zRW5kKCkpOworICAgIHJlc3VsdC5zZXRJc0ZpcnN0T25MaW5lKHByZXZpb3Vz
LmlzRmlyc3RPbkxpbmUoKSB8fCBvcmlnaW5hbC5pc0ZpcnN0T25MaW5lKCkpOworICAgIHJlc3Vs
dC5zZXRJc0xhc3RPbkxpbmUocHJldmlvdXMuaXNMYXN0T25MaW5lKCkgfHwgb3JpZ2luYWwuaXNM
YXN0T25MaW5lKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIFRoaXMgZnVuY3Rpb24g
aXMgc2ltaWxhciBpbiBzcGlyaXQgdG8gYWRkTGluZUJveFJlY3RzLCBidXQgYW5ub3RhdGVzIHRo
ZSByZXR1cm5lZCByZWN0YW5nbGVzCisvLyB3aXRoIGFkZGl0aW9uYWwgc3RhdGUgd2hpY2ggaGVs
cHMgaU9TIGRyYXcgc2VsZWN0aW9ucyBpbiBpdHMgdW5pcXVlIHdheS4KK3ZvaWQgUmFuZ2U6OmNv
bGxlY3RTZWxlY3Rpb25SZWN0cyhWZWN0b3I8U2VsZWN0aW9uUmVjdD4mIHJlY3RzKQoreworICAg
IGlmICghbV9zdGFydC5jb250YWluZXIoKSB8fCAhbV9lbmQuY29udGFpbmVyKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIE5vZGUqIHN0YXJ0Q29udGFpbmVyID0gbV9zdGFydC5jb250YWluZXIo
KTsKKyAgICBOb2RlKiBlbmRDb250YWluZXIgPSBtX2VuZC5jb250YWluZXIoKTsKKyAgICBpbnQg
c3RhcnRPZmZzZXQgPSBtX3N0YXJ0Lm9mZnNldCgpOworICAgIGludCBlbmRPZmZzZXQgPSBtX2Vu
ZC5vZmZzZXQoKTsKKworICAgIFZlY3RvcjxTZWxlY3Rpb25SZWN0PiBuZXdSZWN0czsKKyAgICBO
b2RlKiBzdG9wTm9kZSA9IHBhc3RMYXN0Tm9kZSgpOworICAgIGJvb2wgaGFzRmxpcHBlZFdyaXRp
bmdNb2RlID0gc3RhcnRDb250YWluZXItPnJlbmRlcmVyKCkgJiYgc3RhcnRDb250YWluZXItPnJl
bmRlcmVyKCktPnN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKTsKKyAgICBib29s
IGNvbnRhaW5zRGlmZmVyZW50V3JpdGluZ01vZGVzID0gZmFsc2U7CisgICAgZm9yIChOb2RlKiBu
b2RlID0gZmlyc3ROb2RlKCk7IG5vZGUgJiYgbm9kZSAhPSBzdG9wTm9kZTsgbm9kZSA9IE5vZGVU
cmF2ZXJzYWw6Om5leHQobm9kZSkpIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgICAgIC8vIE9ubHkgYXNrIGxlYWYgcmVuZGVyIG9iamVj
dHMgZm9yIHRoZWlyIGxpbmUgYm94IHJlY3RzLgorICAgICAgICBpZiAocmVuZGVyZXIgJiYgIXJl
bmRlcmVyLT5maXJzdENoaWxkU2xvdygpICYmIHJlbmRlcmVyLT5zdHlsZSgpLnVzZXJTZWxlY3Qo
KSAhPSBTRUxFQ1RfTk9ORSkgeworICAgICAgICAgICAgYm9vbCBpc1N0YXJ0Tm9kZSA9IHJlbmRl
cmVyLT5ub2RlKCkgPT0gc3RhcnRDb250YWluZXI7CisgICAgICAgICAgICBib29sIGlzRW5kTm9k
ZSA9IHJlbmRlcmVyLT5ub2RlKCkgPT0gZW5kQ29udGFpbmVyOworICAgICAgICAgICAgaWYgKGhh
c0ZsaXBwZWRXcml0aW5nTW9kZSAhPSByZW5kZXJlci0+c3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NX
cml0aW5nTW9kZSgpKQorICAgICAgICAgICAgICAgIGNvbnRhaW5zRGlmZmVyZW50V3JpdGluZ01v
ZGVzID0gdHJ1ZTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBTZW5kaW5nIDAgZm9yIHRoZSBzdGFy
dE9mZnNldCBpcyBhIHdlaXJkIHdheSBvZiB0ZWxsaW5nIHRoZSByZW5kZXJlciB0aGF0IHRoZSBz
ZWxlY3Rpb24KKyAgICAgICAgICAgIC8vIGRvZXNuJ3Qgc3RhcnQgaW5zaWRlIGl0LCBzaW5jZSB3
ZSdsbCBhbHNvIHNlbmQgMCBpZiB0aGUgc2VsZWN0aW9uICpkb2VzKiBzdGFydCBpbiBpdCwgYXQg
b2Zmc2V0IDAuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gRklYTUU6IFNlbGVjdGlv
biBlbmRwb2ludHMgYXJlbid0IGFsd2F5cyBpbnNpZGUgbGVhdmVzLCBhbmQgd2Ugb25seSBidWls
ZCBTZWxlY3Rpb25SZWN0cyBmb3IgbGVhdmVzLAorICAgICAgICAgICAgLy8gc28gd2UgY2FuJ3Qg
YWNjdXJhdGVseSBkZXRlcm1pbmUgd2hpY2ggU2VsZWN0aW9uUmVjdHMgY29udGFpbiB0aGUgc2Vs
ZWN0aW9uIHN0YXJ0IGFuZCBlbmQgdXNpbmcKKyAgICAgICAgICAgIC8vIG9ubHkgdGhlIG9mZnNl
dHMgb2YgdGhlIHN0YXJ0IGFuZCBlbmQuIFdlIG5lZWQgdG8gcGFzcyB0aGUgd2hvbGUgUmFuZ2Uu
CisgICAgICAgICAgICBpbnQgYmVnaW5TZWxlY3Rpb25PZmZzZXQgPSBpc1N0YXJ0Tm9kZSA/IHN0
YXJ0T2Zmc2V0IDogMDsKKyAgICAgICAgICAgIGludCBlbmRTZWxlY3Rpb25PZmZzZXQgPSBpc0Vu
ZE5vZGUgPyBlbmRPZmZzZXQgOiBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOworICAg
ICAgICAgICAgcmVuZGVyZXItPmNvbGxlY3RTZWxlY3Rpb25SZWN0cyhuZXdSZWN0cywgYmVnaW5T
ZWxlY3Rpb25PZmZzZXQsIGVuZFNlbGVjdGlvbk9mZnNldCk7CisgICAgICAgICAgICBzaXplX3Qg
bnVtYmVyT2ZOZXdSZWN0cyA9IG5ld1JlY3RzLnNpemUoKTsKKyAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZOZXdSZWN0czsgKytpKSB7CisgICAgICAgICAgICAgICAg
U2VsZWN0aW9uUmVjdCYgc2VsZWN0aW9uUmVjdCA9IG5ld1JlY3RzW2ldOworICAgICAgICAgICAg
ICAgIGlmIChzZWxlY3Rpb25SZWN0LmNvbnRhaW5zU3RhcnQoKSAmJiAhaXNTdGFydE5vZGUpCisg
ICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3Quc2V0Q29udGFpbnNTdGFydChmYWxzZSk7
CisgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvblJlY3QuY29udGFpbnNFbmQoKSAmJiAhaXNF
bmROb2RlKQorICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0LnNldENvbnRhaW5zRW5k
KGZhbHNlKTsKKyAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uUmVjdC5sb2dpY2FsV2lkdGgo
KSB8fCBzZWxlY3Rpb25SZWN0LmxvZ2ljYWxIZWlnaHQoKSkKKyAgICAgICAgICAgICAgICAgICAg
cmVjdHMuYXBwZW5kKG5ld1JlY3RzW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5l
d1JlY3RzLnNocmluaygwKTsKKyAgICAgICAgfQorICAgIH0KKworI2lmbmRlZiBOREVCVUcKKyAg
ICBwcmludFJlY3RzKHJlY3RzKTsKKyNlbmRpZgorCisgICAgLy8gVGhlIHJhbmdlIGNvdWxkIHNw
YW4gb3ZlciBub2RlcyB3aXRoIGRpZmZlcmVudCB3cml0aW5nIG1vZGVzLgorICAgIC8vIElmIHRo
aXMgaXMgdGhlIGNhc2UsIHdlIHVzZSB0aGUgd3JpdGluZyBtb2RlIG9mIHRoZSBjb21tb24gYW5j
ZXN0b3IuCisgICAgaWYgKGNvbnRhaW5zRGlmZmVyZW50V3JpdGluZ01vZGVzKSB7CisgICAgICAg
IGlmIChOb2RlKiBhbmNlc3RvciA9IGNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKHN0YXJ0Q29udGFp
bmVyLCBlbmRDb250YWluZXIpKQorICAgICAgICAgICAgaGFzRmxpcHBlZFdyaXRpbmdNb2RlID0g
YW5jZXN0b3ItPnJlbmRlcmVyKCktPnN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUo
KTsKKyAgICB9CisKKyAgICBjb25zdCBzaXplX3QgbnVtYmVyT2ZSZWN0cyA9IHJlY3RzLnNpemUo
KTsKKworICAgIC8vIElmIHRoZSBzZWxlY3Rpb24gZW5kcyBpbiBhIEJSLCB0aGVuIGFkZCB0aGUg
bGluZSBicmVhayBiaXQgdG8gdGhlIGxhc3QKKyAgICAvLyByZWN0IHdlIGhhdmUuIFRoaXMgd2ls
bCBjYXVzZSBpdHMgc2VsZWN0aW9uIHJlY3QgdG8gZXh0ZW5kIHRvIHRoZQorICAgIC8vIGVuZCBv
ZiB0aGUgbGluZS4KKyAgICBpZiAoc3RvcE5vZGUgJiYgc3RvcE5vZGUtPmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjpiclRhZykgJiYgbnVtYmVyT2ZSZWN0cykgeworICAgICAgICAvLyBPbmx5IHNldCB0
aGUgbGluZSBicmVhayBiaXQgaWYgdGhlIGVuZCBvZiB0aGUgcmFuZ2UgYWN0dWFsbHkKKyAgICAg
ICAgLy8gZXh0ZW5kcyBhbGwgdGhlIHdheSB0byBpbmNsdWRlIHRoZSA8YnI+LiBWaXNpYmxlUG9z
aXRpb24gaGVscHMgdG8KKyAgICAgICAgLy8gZmlndXJlIHRoaXMgb3V0LgorICAgICAgICBWaXNp
YmxlUG9zaXRpb24gZW5kUG9zaXRpb24oY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGVuZENv
bnRhaW5lciwgZW5kT2Zmc2V0KSwgVlBfREVGQVVMVF9BRkZJTklUWSk7CisgICAgICAgIFZpc2li
bGVQb3NpdGlvbiBiclBvc2l0aW9uKGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihzdG9wTm9k
ZSwgMCksIFZQX0RFRkFVTFRfQUZGSU5JVFkpOworICAgICAgICBpZiAoZW5kUG9zaXRpb24gPT0g
YnJQb3NpdGlvbikKKyAgICAgICAgICAgIHJlY3RzLmxhc3QoKS5zZXRJc0xpbmVCcmVhayh0cnVl
KTsgICAgCisgICAgfQorCisgICAgaW50IGxpbmVUb3AgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dD46Om1heCgpOworICAgIGludCBsaW5lQm90dG9tID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+
OjptaW4oKTsKKyAgICBpbnQgbGFzdExpbmVUb3AgPSBsaW5lVG9wOworICAgIGludCBsYXN0TGlu
ZUJvdHRvbSA9IGxpbmVCb3R0b207CisgICAgaW50IGxpbmVOdW1iZXIgPSAwOworCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlJlY3RzOyArK2kpIHsKKyAgICAgICAgaW50IGN1
cnJlbnRSZWN0VG9wID0gcmVjdHNbaV0ubG9naWNhbFRvcCgpOworICAgICAgICBpbnQgY3VycmVu
dFJlY3RCb3R0b20gPSBjdXJyZW50UmVjdFRvcCArIHJlY3RzW2ldLmxvZ2ljYWxIZWlnaHQoKTsK
KworICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGNvdW50IHRoZSBydWJ5IHRleHQgYXMgYSBz
ZXBhcmF0ZSBsaW5lLgorICAgICAgICBpZiAoaW50ZXJ2YWxzU3VmZmljaWVudGx5T3ZlcmxhcChj
dXJyZW50UmVjdFRvcCwgY3VycmVudFJlY3RCb3R0b20sIGxpbmVUb3AsIGxpbmVCb3R0b20pIHx8
IChpICYmIHJlY3RzW2ldLmlzUnVieVRleHQoKSkpIHsKKyAgICAgICAgICAgIC8vIEdyb3cgdGhl
IGN1cnJlbnQgbGluZSBib3VuZHMuCisgICAgICAgICAgICBsaW5lVG9wID0gc3RkOjptaW4obGlu
ZVRvcCwgY3VycmVudFJlY3RUb3ApOworICAgICAgICAgICAgbGluZUJvdHRvbSA9IHN0ZDo6bWF4
KGxpbmVCb3R0b20sIGN1cnJlbnRSZWN0Qm90dG9tKTsKKyAgICAgICAgICAgIC8vIEF2b2lkIG92
ZXJsYXAgd2l0aCB0aGUgcHJldmlvdXMgbGluZS4KKyAgICAgICAgICAgIGlmICghaGFzRmxpcHBl
ZFdyaXRpbmdNb2RlKQorICAgICAgICAgICAgICAgIGxpbmVUb3AgPSBzdGQ6Om1heChsYXN0TGlu
ZUJvdHRvbSwgbGluZVRvcCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbGlu
ZUJvdHRvbSA9IHN0ZDo6bWluKGxhc3RMaW5lVG9wLCBsaW5lQm90dG9tKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGFkanVzdExpbmVIZWlnaHRPZlNlbGVjdGlvblJlY3RzKHJlY3Rz
LCBpLCBsaW5lTnVtYmVyLCBsaW5lVG9wLCBsaW5lQm90dG9tIC0gbGluZVRvcCk7CisgICAgICAg
ICAgICBpZiAoIWhhc0ZsaXBwZWRXcml0aW5nTW9kZSkgeworICAgICAgICAgICAgICAgIGxhc3RM
aW5lVG9wID0gbGluZVRvcDsKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudFJlY3RCb3R0b20g
Pj0gbGFzdExpbmVUb3ApIHsKKyAgICAgICAgICAgICAgICAgICAgbGFzdExpbmVCb3R0b20gPSBs
aW5lQm90dG9tOworICAgICAgICAgICAgICAgICAgICBsaW5lVG9wID0gbGFzdExpbmVCb3R0b207
CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbGluZVRvcCA9
IGN1cnJlbnRSZWN0VG9wOworICAgICAgICAgICAgICAgICAgICBsYXN0TGluZUJvdHRvbSA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGxpbmVCb3R0b20gPSBjdXJyZW50UmVjdEJvdHRvbTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgbGFzdExpbmVCb3R0b20gPSBsaW5lQm90dG9tOworICAg
ICAgICAgICAgICAgIGlmIChjdXJyZW50UmVjdFRvcCA8PSBsYXN0TGluZUJvdHRvbSAmJiBpICYm
IHJlY3RzW2ldLmNvbHVtbk51bWJlcigpID09IHJlY3RzW2kgLSAxXS5jb2x1bW5OdW1iZXIoKSkg
eworICAgICAgICAgICAgICAgICAgICBsYXN0TGluZVRvcCA9IGxpbmVUb3A7CisgICAgICAgICAg
ICAgICAgICAgIGxpbmVCb3R0b20gPSBsYXN0TGluZVRvcDsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBsYXN0TGluZVRvcCA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50Pjo6bWF4KCk7CisgICAgICAgICAgICAgICAgICAgIGxpbmVCb3R0b20gPSBjdXJyZW50
UmVjdEJvdHRvbTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbGluZVRvcCA9
IGN1cnJlbnRSZWN0VG9wOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKytsaW5lTnVtYmVy
OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gQWRqdXN0IGxpbmUgaGVpZ2h0LgorICAgIGFk
anVzdExpbmVIZWlnaHRPZlNlbGVjdGlvblJlY3RzKHJlY3RzLCBudW1iZXJPZlJlY3RzLCBsaW5l
TnVtYmVyLCBsaW5lVG9wLCBsaW5lQm90dG9tIC0gbGluZVRvcCk7CisKKyAgICAvLyBTb3J0IHRo
ZSByZWN0YW5nbGVzIGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGdhcHMuIFRoZSByZWN0YW5n
bGVzIGNvdWxkIGJlIHVuc29ydGVkIHdoZW4KKyAgICAvLyB0aGVyZSBpcyBydWJ5IHRleHQgYW5k
IHdlIGNvdWxkIGhhdmUgZ2FwcyBvbiB0aGUgbGluZSB3aGVuIGFkamFjZW50IGVsZW1lbnRzIG9u
IHRoZSBsaW5lCisgICAgLy8gaGF2ZSBhIGRpZmZlcmVudCBvcmllbnRhdGlvbi4KKyAgICBzaXpl
X3QgZmlyc3RSZWN0V2l0aEN1cnJlbnRMaW5lTnVtYmVyID0gMDsKKyAgICBmb3IgKHNpemVfdCBj
dXJyZW50UmVjdCA9IDE7IGN1cnJlbnRSZWN0IDwgbnVtYmVyT2ZSZWN0czsgKytjdXJyZW50UmVj
dCkgeworICAgICAgICBpZiAocmVjdHNbY3VycmVudFJlY3RdLmxpbmVOdW1iZXIoKSAhPSByZWN0
c1tjdXJyZW50UmVjdCAtIDFdLmxpbmVOdW1iZXIoKSkgeworICAgICAgICAgICAgZmlyc3RSZWN0
V2l0aEN1cnJlbnRMaW5lTnVtYmVyID0gY3VycmVudFJlY3Q7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmVjdHNbY3VycmVudFJlY3RdLmxvZ2ljYWxMZWZ0
KCkgPj0gcmVjdHNbY3VycmVudFJlY3QgLSAxXS5sb2dpY2FsTGVmdCgpKQorICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgU2VsZWN0aW9uUmVjdCBzZWxlY3Rpb25SZWN0ID0gcmVjdHNb
Y3VycmVudFJlY3RdOworICAgICAgICBzaXplX3QgaTsKKyAgICAgICAgZm9yIChpID0gY3VycmVu
dFJlY3Q7IGkgPiBmaXJzdFJlY3RXaXRoQ3VycmVudExpbmVOdW1iZXIgJiYgc2VsZWN0aW9uUmVj
dC5sb2dpY2FsTGVmdCgpIDwgcmVjdHNbaSAtIDFdLmxvZ2ljYWxMZWZ0KCk7IC0taSkKKyAgICAg
ICAgICAgIHJlY3RzW2ldID0gcmVjdHNbaSAtIDFdOworICAgICAgICByZWN0c1tpXSA9IHNlbGVj
dGlvblJlY3Q7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaiA9IDE7IGogPCBudW1iZXJPZlJl
Y3RzOyArK2opIHsKKyAgICAgICAgaWYgKHJlY3RzW2pdLmxpbmVOdW1iZXIoKSAhPSByZWN0c1tq
IC0gMV0ubGluZU51bWJlcigpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIFNlbGVj
dGlvblJlY3QmIHByZXZpb3VzUmVjdCA9IHJlY3RzW2ogLSAxXTsKKyAgICAgICAgYm9vbCBwcmV2
aW91c1JlY3RNYXlOb3RSZWFjaFJpZ2h0RWRnZSA9IChwcmV2aW91c1JlY3QuZGlyZWN0aW9uKCkg
PT0gTFRSICYmIHByZXZpb3VzUmVjdC5jb250YWluc0VuZCgpKSB8fCAocHJldmlvdXNSZWN0LmRp
cmVjdGlvbigpID09IFJUTCAmJiBwcmV2aW91c1JlY3QuY29udGFpbnNTdGFydCgpKTsKKyAgICAg
ICAgaWYgKHByZXZpb3VzUmVjdE1heU5vdFJlYWNoUmlnaHRFZGdlKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIGludCBhZGp1c3RlZFdpZHRoID0gcmVjdHNbal0ubG9naWNhbExlZnQo
KSAtIHByZXZpb3VzUmVjdC5sb2dpY2FsTGVmdCgpOworICAgICAgICBpZiAoYWRqdXN0ZWRXaWR0
aCA+IHByZXZpb3VzUmVjdC5sb2dpY2FsV2lkdGgoKSkKKyAgICAgICAgICAgIHByZXZpb3VzUmVj
dC5zZXRMb2dpY2FsV2lkdGgoYWRqdXN0ZWRXaWR0aCk7CisgICAgfQorCisgICAgaW50IG1heExp
bmVOdW1iZXIgPSBsaW5lTnVtYmVyOworCisgICAgLy8gRXh0ZW5kIHJlY3RzIG91dCB0byBlZGdl
cyBhcyBuZWVkZWQuCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlJlY3RzOyAr
K2kpIHsKKyAgICAgICAgU2VsZWN0aW9uUmVjdCYgc2VsZWN0aW9uUmVjdCA9IHJlY3RzW2ldOwor
ICAgICAgICBpZiAoIXNlbGVjdGlvblJlY3QuaXNMaW5lQnJlYWsoKSAmJiBzZWxlY3Rpb25SZWN0
LmxpbmVOdW1iZXIoKSA+PSBtYXhMaW5lTnVtYmVyKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIGlmIChzZWxlY3Rpb25SZWN0LmRpcmVjdGlvbigpID09IFJUTCAmJiBzZWxlY3Rpb25S
ZWN0LmlzRmlyc3RPbkxpbmUoKSkgeworICAgICAgICAgICAgc2VsZWN0aW9uUmVjdC5zZXRMb2dp
Y2FsV2lkdGgoc2VsZWN0aW9uUmVjdC5sb2dpY2FsV2lkdGgoKSArIHNlbGVjdGlvblJlY3QubG9n
aWNhbExlZnQoKSAtIHNlbGVjdGlvblJlY3QubWluWCgpKTsKKyAgICAgICAgICAgIHNlbGVjdGlv
blJlY3Quc2V0TG9naWNhbExlZnQoc2VsZWN0aW9uUmVjdC5taW5YKCkpOworICAgICAgICB9IGVs
c2UgaWYgKHNlbGVjdGlvblJlY3QuZGlyZWN0aW9uKCkgPT0gTFRSICYmIHNlbGVjdGlvblJlY3Qu
aXNMYXN0T25MaW5lKCkpCisgICAgICAgICAgICBzZWxlY3Rpb25SZWN0LnNldExvZ2ljYWxXaWR0
aChzZWxlY3Rpb25SZWN0Lm1heFgoKSAtIHNlbGVjdGlvblJlY3QubG9naWNhbExlZnQoKSk7Cisg
ICAgfQorCisgICAgLy8gVW5pb24gYWxsIHRoZSByZWN0YW5nbGVzIG9uIGludGVyaW9yIGxpbmVz
IChpLmUuIG5vdCBmaXJzdCBvciBsYXN0KS4KKyAgICAvLyBPbiBmaXJzdCBhbmQgbGFzdCBsaW5l
cywganVzdCBhdm9pZCBoYXZpbmcgb3ZlcmxhcHMgYnkgbWVyZ2luZyBpbnRlcnNlY3RpbmcgcmVj
dGFuZ2xlcy4KKyAgICBWZWN0b3I8U2VsZWN0aW9uUmVjdD4gdW5pb25lZFJlY3RzOworICAgIElu
dFJlY3QgaW50ZXJpb3JVbmlvblJlY3Q7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1i
ZXJPZlJlY3RzOyArK2kpIHsKKyAgICAgICAgU2VsZWN0aW9uUmVjdCYgY3VycmVudFJlY3QgPSBy
ZWN0c1tpXTsKKyAgICAgICAgaWYgKGN1cnJlbnRSZWN0LmxpbmVOdW1iZXIoKSA9PSAxKSB7Cisg
ICAgICAgICAgICBBU1NFUlQoaW50ZXJpb3JVbmlvblJlY3QuaXNFbXB0eSgpKTsKKyAgICAgICAg
ICAgIGlmICghdW5pb25lZFJlY3RzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIFNlbGVj
dGlvblJlY3QmIHByZXZpb3VzUmVjdCA9IHVuaW9uZWRSZWN0cy5sYXN0KCk7CisgICAgICAgICAg
ICAgICAgaWYgKHByZXZpb3VzUmVjdC5yZWN0KCkuaW50ZXJzZWN0cyhjdXJyZW50UmVjdC5yZWN0
KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzUmVjdCA9IGNvYWxlc2NlU2VsZWN0
aW9uUmVjdHMoY3VycmVudFJlY3QsIHByZXZpb3VzUmVjdCk7CisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC8vIENvdWxkbid0IG1lcmdlIHdpdGggcHJldmlvdXMgcmVjdCwgc28ganVzdCBhcHBlbmRpbmcu
CisgICAgICAgICAgICB1bmlvbmVkUmVjdHMuYXBwZW5kKGN1cnJlbnRSZWN0KTsKKyAgICAgICAg
fSBlbHNlIGlmIChjdXJyZW50UmVjdC5saW5lTnVtYmVyKCkgPCBtYXhMaW5lTnVtYmVyKSB7Cisg
ICAgICAgICAgICBpZiAoaW50ZXJpb3JVbmlvblJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICAgICAgLy8gU3RhcnQgY29sbGVjdGluZyBpbnRlcmlvciByZWN0cy4KKyAgICAgICAgICAgICAg
ICBpbnRlcmlvclVuaW9uUmVjdCA9IGN1cnJlbnRSZWN0LnJlY3QoKTsgICAgICAgICAKKyAgICAg
ICAgICAgIH0gZWxzZSBpZiAoaW50ZXJpb3JVbmlvblJlY3QuaW50ZXJzZWN0cyhjdXJyZW50UmVj
dC5yZWN0KCkpCisgICAgICAgICAgICAgICAgfHwgaW50ZXJpb3JVbmlvblJlY3QubWF4WCgpID09
IGN1cnJlbnRSZWN0LnJlY3QoKS54KCkKKyAgICAgICAgICAgICAgICB8fCBpbnRlcmlvclVuaW9u
UmVjdC5tYXhZKCkgPT0gY3VycmVudFJlY3QucmVjdCgpLnkoKQorICAgICAgICAgICAgICAgIHx8
IGludGVyaW9yVW5pb25SZWN0LngoKSA9PSBjdXJyZW50UmVjdC5yZWN0KCkubWF4WCgpCisgICAg
ICAgICAgICAgICAgfHwgaW50ZXJpb3JVbmlvblJlY3QueSgpID09IGN1cnJlbnRSZWN0LnJlY3Qo
KS5tYXhZKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBPbmx5IHVuaW9uIHRoZSBsaW5lcyB0aGF0
IGFyZSBhdHRhY2hlZC4KKyAgICAgICAgICAgICAgICAvLyBGb3IgaUJvb2tzLCB0aGUgaW50ZXJp
b3IgbGluZXMgbWF5IGNyb3NzIG11bHRpcGxlIGhvcml6b250YWwgcGFnZXMuCisgICAgICAgICAg
ICAgICAgaW50ZXJpb3JVbmlvblJlY3QudW5pdGUoY3VycmVudFJlY3QucmVjdCgpKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdW5pb25lZFJlY3RzLmFwcGVuZChTZWxl
Y3Rpb25SZWN0KGludGVyaW9yVW5pb25SZWN0LCBjdXJyZW50UmVjdC5pc0hvcml6b250YWwoKSwg
Y3VycmVudFJlY3QuY29sdW1uTnVtYmVyKCkpKTsKKyAgICAgICAgICAgICAgICBpbnRlcmlvclVu
aW9uUmVjdCA9IGN1cnJlbnRSZWN0LnJlY3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIC8vIFByb2Nlc3NpbmcgbGFzdCBsaW5lLgorICAgICAgICAgICAg
aWYgKCFpbnRlcmlvclVuaW9uUmVjdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICB1bmlv
bmVkUmVjdHMuYXBwZW5kKFNlbGVjdGlvblJlY3QoaW50ZXJpb3JVbmlvblJlY3QsIGN1cnJlbnRS
ZWN0LmlzSG9yaXpvbnRhbCgpLCBjdXJyZW50UmVjdC5jb2x1bW5OdW1iZXIoKSkpOworICAgICAg
ICAgICAgICAgIGludGVyaW9yVW5pb25SZWN0ID0gSW50UmVjdCgpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBBU1NFUlQoIXVuaW9uZWRSZWN0cy5pc0VtcHR5KCkpOworICAgICAgICAg
ICAgU2VsZWN0aW9uUmVjdCYgcHJldmlvdXNSZWN0ID0gdW5pb25lZFJlY3RzLmxhc3QoKTsKKyAg
ICAgICAgICAgIGlmIChwcmV2aW91c1JlY3QubG9naWNhbFRvcCgpID09IGN1cnJlbnRSZWN0Lmxv
Z2ljYWxUb3AoKSAmJiBwcmV2aW91c1JlY3QucmVjdCgpLmludGVyc2VjdHMoY3VycmVudFJlY3Qu
cmVjdCgpKSkgeworICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzUmVjdCBpcyBhbHNvIG9uIHRo
ZSBsYXN0IGxpbmUsIGFuZCBpbnRlcnNlY3RzIHRoZSBjdXJyZW50IG9uZS4KKyAgICAgICAgICAg
ICAgICBwcmV2aW91c1JlY3QgPSBjb2FsZXNjZVNlbGVjdGlvblJlY3RzKGN1cnJlbnRSZWN0LCBw
cmV2aW91c1JlY3QpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgLy8gQ291bGRuJ3QgbWVyZ2Ugd2l0aCBwcmV2aW91cyByZWN0LCBzbyBqdXN0
IGFwcGVuZGluZy4KKyAgICAgICAgICAgIHVuaW9uZWRSZWN0cy5hcHBlbmQoY3VycmVudFJlY3Qp
OworICAgICAgICB9CisgICAgfQorCisgICAgcmVjdHMuc3dhcCh1bmlvbmVkUmVjdHMpOworfQor
I2VuZGlmCisKICNpZm5kZWYgTkRFQlVHCiB2b2lkIFJhbmdlOjpmb3JtYXRGb3JEZWJ1Z2dlcihj
aGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9SYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgKaW5kZXgg
OGI3NzhmYTQ5NDYwMTRlM2RjMzQ4NWVkODdmYWQ3ZmYzOGE1ZTMzZS4uYzM1MzM0NjQzZDU1Y2Zl
N2I5MTU0ZDQzOGU4NGY1Y2ZhYWUyZDZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1JhbmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgKQEAgLTQ1LDEyICs0NSwy
MCBAQCBjbGFzcyBGbG9hdFF1YWQ7CiBjbGFzcyBOb2RlOwogY2xhc3MgTm9kZVdpdGhJbmRleDsK
IGNsYXNzIFRleHQ7CisjaWYgUExBVEZPUk0oSU9TKQorY2xhc3MgU2VsZWN0aW9uUmVjdDsKK2Ns
YXNzIFZpc2libGVQb3NpdGlvbjsKKyNlbmRpZgogCiBjbGFzcyBSYW5nZSA6IHB1YmxpYyBSZWZD
b3VudGVkPFJhbmdlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IGNy
ZWF0ZShEb2N1bWVudCYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJhbmdlPiBjcmVhdGUoRG9j
dW1lbnQmLCBQYXNzUmVmUHRyPE5vZGU+IHN0YXJ0Q29udGFpbmVyLCBpbnQgc3RhcnRPZmZzZXQs
IFBhc3NSZWZQdHI8Tm9kZT4gZW5kQ29udGFpbmVyLCBpbnQgZW5kT2Zmc2V0KTsKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxSYW5nZT4gY3JlYXRlKERvY3VtZW50JiwgY29uc3QgUG9zaXRpb24mLCBj
b25zdCBQb3NpdGlvbiYpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICAvLyBGSVhNRTogQ29uc2lk
ZXIgbWFraW5nIHRoaXMgYSBzdGF0aWMgbm9uLW1lbWJlciwgbm9uLWZyaWVuZCBmdW5jdGlvbi4K
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSYW5nZT4gY3JlYXRlKERvY3VtZW50JiwgY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CisjZW5kaWYKICAgICB+UmFu
Z2UoKTsKIAogICAgIERvY3VtZW50JiBvd25lckRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gY29u
c3RfY2FzdDxEb2N1bWVudCY+KG1fb3duZXJEb2N1bWVudC5nZXQoKSk7IH0KQEAgLTEyNyw2ICsx
MzUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXh0UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBi
b29sIHVzZVNlbGVjdGlvbkhlaWdodCA9IGZhbHNlLCBSYW5nZUluRml4ZWRQb3NpdGlvbiogPSAw
KSBjb25zdDsKICAgICB2b2lkIGdldEJvcmRlckFuZFRleHRRdWFkcyhWZWN0b3I8RmxvYXRRdWFk
PiYpIGNvbnN0OwogICAgIEZsb2F0UmVjdCBib3VuZGluZ1JlY3QoKSBjb25zdDsKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgdm9pZCBjb2xsZWN0U2VsZWN0aW9uUmVjdHMoVmVjdG9yPFNlbGVjdGlv
blJlY3Q+Jik7CisjZW5kaWYKIAogICAgIHZvaWQgbm9kZUNoaWxkcmVuQ2hhbmdlZChDb250YWlu
ZXJOb2RlJik7CiAgICAgdm9pZCBub2RlQ2hpbGRyZW5XaWxsQmVSZW1vdmVkKENvbnRhaW5lck5v
ZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApp
bmRleCBiNWViYTVkNGUzNDIwMjNiZjFlNWQ3OTMyZjE4MWM2MjU1NTkwOGVjLi5kZDMwZGQwN2Mz
ZDE5MmEzNDIxZGY0MmM3NzRmYzAwNjU4YzMzMGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC00Myw2ICs0MywxMCBAQAogLy8gRklYTUU6
IFRoaXMgaXMgYSBsYXllcmluZyB2aW9sYXRpb24uCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIK
IAorI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2VuZGlmCisKICNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgogI2Vu
ZGlmCkBAIC0xNzcsNiArMTgxLDEzIEBAIGJvb2wgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y2Fu
U3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKQogCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVu
c2lvbiB3aHkpCiB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChtX2FjdGl2ZURPTU9iamVj
dHNBcmVTdXNwZW5kZWQpIHsKKyAgICAgICAgQVNTRVJUKG1fcmVhc29uRm9yU3VzcGVuZGluZ0Fj
dGl2ZURPTU9iamVjdHMgPT0gQWN0aXZlRE9NT2JqZWN0OjpEb2N1bWVudFdpbGxCZVBhdXNlZCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIC8vIE5vIHByb3RlY3Rpb24g
YWdhaW5zdCBtX2FjdGl2ZURPTU9iamVjdHMgY2hhbmdpbmcgZHVyaW5nIGl0ZXJhdGlvbjogc3Vz
cGVuZCgpIHNob3VsZG4ndCBleGVjdXRlIGFyYml0cmFyeSBKUy4KICAgICBtX2l0ZXJhdGluZ0Fj
dGl2ZURPTU9iamVjdHMgPSB0cnVlOwogICAgIEFjdGl2ZURPTU9iamVjdHNTZXQ6Oml0ZXJhdG9y
IGFjdGl2ZU9iamVjdHNFbmQgPSBtX2FjdGl2ZURPTU9iamVjdHMuZW5kKCk7CkBAIC0zMjAsNiAr
MzMxLDE0IEBAIGJvb2wgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlzcGF0Y2hFcnJvckV2ZW50
KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQKICAgICBpZiAoIXRhcmdldCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmICh0YXJnZXQgPT0g
dGFyZ2V0LT50b0RPTVdpbmRvdygpICYmIGlzRG9jdW1lbnQoKSkgeworICAgICAgICBTZXR0aW5n
cyogc2V0dGluZ3MgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHRoaXMpLT5zZXR0aW5ncygpOwor
ICAgICAgICBpZiAoc2V0dGluZ3MgJiYgIXNldHRpbmdzLT5zaG91bGREaXNwYXRjaEphdmFTY3Jp
cHRXaW5kb3dPbkVycm9yRXZlbnRzKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorI2VuZGlmCisKICAgICBTdHJpbmcgbWVzc2FnZSA9IGVycm9yTWVzc2FnZTsKICAgICBpbnQg
bGluZSA9IGxpbmVOdW1iZXI7CiAgICAgaW50IGNvbHVtbiA9IGNvbHVtbk51bWJlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZS5jcHAKaW5kZXggMzZiYjNmZTI4ZjYzOWM2MDBiNTNjNGIwYzI1Y2Y1Zjhi
MWY3YzAxNC4uNDI0NmY5MmYzNmMwZTk1NWNmMzFlMDE5MTFiZDdjNzk0MTYxMjFkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RyZWVTY29wZS5jcHAKQEAgLTI0OCwxMSArMjQ4LDE3IEBAIE5vZGUqIG5vZGVGcm9t
UG9pbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBpbnQgeCwgaW50IHksIExheW91dFBvaW50KiBsb2Nh
bFBvaW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGZsb2F0IHNjYWxlRmFjdG9y
ID0gZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCkgKiBmcmFtZS0+ZnJhbWVTY2FsZUZhY3RvcigpOwor
I2lmICFQTEFURk9STShJT1MpCiAgICAgSW50UG9pbnQgcG9pbnQgPSByb3VuZGVkSW50UG9pbnQo
RmxvYXRQb2ludCh4ICogc2NhbGVGYWN0b3IgICsgZnJhbWVWaWV3LT5zY3JvbGxYKCksIHkgKiBz
Y2FsZUZhY3RvciArIGZyYW1lVmlldy0+c2Nyb2xsWSgpKSk7CiAKICAgICBpZiAoIWZyYW1lVmll
dy0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuY29udGFpbnMocG9pbnQpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyNlbHNlCisgICAgSW50UG9pbnQgcG9pbnQgPSByb3VuZGVkSW50UG9pbnQoRmxv
YXRQb2ludCh4ICogc2NhbGVGYWN0b3IgICsgZnJhbWVWaWV3LT5hY3R1YWxTY3JvbGxYKCksIHkg
KiBzY2FsZUZhY3RvciArIGZyYW1lVmlldy0+YWN0dWFsU2Nyb2xsWSgpKSk7CiAKKyAgICBpZiAo
IWZyYW1lVmlldy0+YWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KCkuY29udGFpbnMocG9pbnQpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVl
c3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhp
dFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0KHBvaW50KTsKICAgICBkb2N1bWVudC0+cmVuZGVyVmlldygpLT5oaXRUZXN0KHJlcXVl
c3QsIHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1
bWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAppbmRl
eCA5ZTJmNWVmM2EwZDgxOWY3OGUwNmI1ZDA4ZjZjYzA2ZTk1OGRiMTU0Li42MGYzOWQwMjljMDNi
YjgwZDhhYjZhNDAxYzBiZTIzZjAzMTQzNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVmlld3BvcnRBcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9y
dEFyZ3VtZW50cy5jcHAKQEAgLTM3LDYgKzM3LDEwIEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogCisjaWYgUExBVEZPUk0oSU9TKQor
I2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICNpZiBQTEFURk9STShCTEFDS0JFUlJZKSB8fCBQTEFURk9STShHVEspCkBA
IC0yNjMsNiArMjY3LDEzIEBAIHN0YXRpYyBGbG9hdFNpemUgY29udmVydFRvVXNlclNwYWNlKGNv
bnN0IEZsb2F0U2l6ZSYgZGV2aWNlU2l6ZSwgZmxvYXQgZGV2aWNlUGl4CiAKIFZpZXdwb3J0QXR0
cmlidXRlcyBjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzKFZpZXdwb3J0QXJndW1lbnRzIGFyZ3Ms
IGludCBkZXNrdG9wV2lkdGgsIGludCBkZXZpY2VXaWR0aCwgaW50IGRldmljZUhlaWdodCwgZmxv
YXQgZGV2aWNlUGl4ZWxSYXRpbywgSW50U2l6ZSB2aXNpYmxlVmlld3BvcnQpCiB7CisjaWYgUExB
VEZPUk0oSU9TKQorICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBmaXhlZCBl
bHNld2hlcmUgb24gaU9TLiBpT1MgbWF5IG9ubHkgdXNlIGNvbXB1dGVWaWV3cG9ydEF0dHJpYnV0
ZXMgZm9yIHRlc3RzLgorICAgIENHU2l6ZSBzY3JlZW5TaXplID0gd2tHZXRWaWV3cG9ydFNjcmVl
blNpemUoKTsKKyAgICB2aXNpYmxlVmlld3BvcnQuc2V0V2lkdGgoc2NyZWVuU2l6ZS53aWR0aCk7
CisgICAgdmlzaWJsZVZpZXdwb3J0LnNldEhlaWdodChzY3JlZW5TaXplLmhlaWdodCk7CisjZW5k
aWYKKwogICAgIEZsb2F0U2l6ZSBpbml0aWFsVmlld3BvcnRTaXplID0gY29udmVydFRvVXNlclNw
YWNlKHZpc2libGVWaWV3cG9ydCwgZGV2aWNlUGl4ZWxSYXRpbyk7CiAgICAgRmxvYXRTaXplIGRl
dmljZVNpemUgPSBjb252ZXJ0VG9Vc2VyU3BhY2UoRmxvYXRTaXplKGRldmljZVdpZHRoLCBkZXZp
Y2VIZWlnaHQpLCBkZXZpY2VQaXhlbFJhdGlvKTsKIApAQCAtMzk2LDEwICs0MDcsMzEgQEAgdm9p
ZCBzZXRWaWV3cG9ydEZlYXR1cmUoY29uc3QgU3RyaW5nJiBrZXlTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgdmFsdWVTdHJpbmcsIERvY3UKICAgICAgICAgYXJndW1lbnRzLT5tYXhab29tID0gZmluZFNj
YWxlVmFsdWUoa2V5U3RyaW5nLCB2YWx1ZVN0cmluZywgZG9jdW1lbnQpOwogICAgIGVsc2UgaWYg
KGtleVN0cmluZyA9PSAidXNlci1zY2FsYWJsZSIpCiAgICAgICAgIGFyZ3VtZW50cy0+dXNlclpv
b20gPSBmaW5kVXNlclNjYWxhYmxlVmFsdWUoa2V5U3RyaW5nLCB2YWx1ZVN0cmluZywgZG9jdW1l
bnQpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBlbHNlIGlmIChrZXlTdHJpbmcgPT0gIm1pbmlt
YWwtdWkiKQorICAgICAgICBhcmd1bWVudHMtPm1pbmltYWxVSSA9IHRydWU7CisjZW5kaWYKICAg
ICBlbHNlCiAgICAgICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwgVW5yZWNvZ25p
emVkVmlld3BvcnRBcmd1bWVudEtleUVycm9yLCBrZXlTdHJpbmcsIFN0cmluZygpKTsKIH0KIAor
I2lmIFBMQVRGT1JNKElPUykKK3ZvaWQgZmluYWxpemVWaWV3cG9ydEFyZ3VtZW50cyhWaWV3cG9y
dEFyZ3VtZW50cyYgYXJndW1lbnRzKQoreworICAgIENHU2l6ZSBzY3JlZW5TaXplID0gd2tHZXRW
aWV3cG9ydFNjcmVlblNpemUoKTsKKworICAgIGlmIChhcmd1bWVudHMud2lkdGggPT0gVmlld3Bv
cnRBcmd1bWVudHM6OlZhbHVlRGV2aWNlV2lkdGgpCisgICAgICAgIGFyZ3VtZW50cy53aWR0aCA9
IHNjcmVlblNpemUud2lkdGg7CisgICAgZWxzZSBpZiAoYXJndW1lbnRzLndpZHRoID09IFZpZXdw
b3J0QXJndW1lbnRzOjpWYWx1ZURldmljZUhlaWdodCkKKyAgICAgICAgYXJndW1lbnRzLndpZHRo
ID0gc2NyZWVuU2l6ZS5oZWlnaHQ7CisKKyAgICBpZiAoYXJndW1lbnRzLmhlaWdodCA9PSBWaWV3
cG9ydEFyZ3VtZW50czo6VmFsdWVEZXZpY2VXaWR0aCkKKyAgICAgICAgYXJndW1lbnRzLmhlaWdo
dCA9IHNjcmVlblNpemUud2lkdGg7CisgICAgZWxzZSBpZiAoYXJndW1lbnRzLmhlaWdodCA9PSBW
aWV3cG9ydEFyZ3VtZW50czo6VmFsdWVEZXZpY2VIZWlnaHQpCisgICAgICAgIGFyZ3VtZW50cy5o
ZWlnaHQgPSBzY3JlZW5TaXplLmhlaWdodDsKK30KKyNlbmRpZgorCiBzdGF0aWMgY29uc3QgY2hh
ciogdmlld3BvcnRFcnJvck1lc3NhZ2VUZW1wbGF0ZShWaWV3cG9ydEVycm9yQ29kZSBlcnJvckNv
ZGUpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGVycm9yc1tdID0gewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaAppbmRleCBjNjQ5Mzc1ODY0OTk2M2ZlODM3MzVm
MjA3MTg2MzcwNWE3ZTYwMDliLi5kNzQ5ZDQ4YzZiOWRhZGNmN2U4MzE1ZWRjZTVhN2Y4YWY1NmM2
YjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaApAQCAtNTEsNiArNTEs
OSBAQCBzdHJ1Y3QgVmlld3BvcnRBdHRyaWJ1dGVzIHsKIAogICAgIGZsb2F0IHVzZXJTY2FsYWJs
ZTsKICAgICBmbG9hdCBvcmllbnRhdGlvbjsKKyNpZiBQTEFURk9STShJT1MpCisgICAgYm9vbCBt
aW5pbWFsVUk7CisjZW5kaWYKIH07CiAKIHN0cnVjdCBWaWV3cG9ydEFyZ3VtZW50cyB7CkBAIC02
Myw2ICs2NiwxMCBAQCBzdHJ1Y3QgVmlld3BvcnRBcmd1bWVudHMgewogICAgICAgICBIYW5kaGVs
ZEZyaWVuZGx5TWV0YSwKICAgICAgICAgTW9iaWxlT3B0aW1pemVkTWV0YSwKICNlbmRpZgorI2lm
IFBMQVRGT1JNKElPUykKKyAgICAgICAgUGx1Z2luRG9jdW1lbnQsCisgICAgICAgIEltYWdlRG9j
dW1lbnQsCisjZW5kaWYKICAgICAgICAgVmlld3BvcnRNZXRhLAogICAgICAgICBDU1NEZXZpY2VB
ZGFwdGF0aW9uCiAgICAgfSB0eXBlOwpAQCAtODgsNiArOTUsOSBAQCBzdHJ1Y3QgVmlld3BvcnRB
cmd1bWVudHMgewogICAgICAgICAsIG1heFpvb20oVmFsdWVBdXRvKQogICAgICAgICAsIHVzZXJa
b29tKFZhbHVlQXV0bykKICAgICAgICAgLCBvcmllbnRhdGlvbihWYWx1ZUF1dG8pCisjaWYgUExB
VEZPUk0oSU9TKQorICAgICAgICAsIG1pbmltYWxVSShmYWxzZSkKKyNlbmRpZgogICAgIHsKICAg
ICB9CiAKQEAgLTExMCw2ICsxMjAsMTAgQEAgc3RydWN0IFZpZXdwb3J0QXJndW1lbnRzIHsKICAg
ICB7CiAgICAgICAgIC8vIFVzZWQgZm9yIGZpZ3VyaW5nIG91dCB3aGV0aGVyIHRvIHJlc2V0IHRo
ZSB2aWV3cG9ydCBvciBub3QsCiAgICAgICAgIC8vIHRodXMgd2UgYXJlIG5vdCB0YWtpbmcgdHlw
ZSBpbnRvIGFjY291bnQuCisjaWYgUExBVEZPUk0oSU9TKQorICAgICAgICAvLyBXZSBpZ25vcmUg
bWluaW1hbFVJIGZvciB0aGUgc2FtZSByZWFzb24gLS0gaXQgaXMgYSBoaWdoZXItbGV2ZWwKKyAg
ICAgICAgLy8gcHJvcGVydHkgdGhhdCBkb2Vzbid0IGFmZmVjdCB0aGUgYWN0dWFsIHZpZXdwb3J0
LgorI2VuZGlmCiAgICAgICAgIHJldHVybiB3aWR0aCA9PSBvdGhlci53aWR0aAogICAgICAgICAg
ICAgJiYgbWluV2lkdGggPT0gb3RoZXIubWluV2lkdGgKICAgICAgICAgICAgICYmIG1heFdpZHRo
ID09IG90aGVyLm1heFdpZHRoCkBAIC0xNDQsNiArMTU4LDEwIEBAIGZsb2F0IGNvbXB1dGVNaW5p
bXVtU2NhbGVGYWN0b3JGb3JDb250ZW50Q29udGFpbmVkKGNvbnN0IFZpZXdwb3J0QXR0cmlidXRl
cyYgcmVzCiB2b2lkIHNldFZpZXdwb3J0RmVhdHVyZShjb25zdCBTdHJpbmcmIGtleVN0cmluZywg
Y29uc3QgU3RyaW5nJiB2YWx1ZVN0cmluZywgRG9jdW1lbnQqLCB2b2lkKiBkYXRhKTsKIHZvaWQg
cmVwb3J0Vmlld3BvcnRXYXJuaW5nKERvY3VtZW50KiwgVmlld3BvcnRFcnJvckNvZGUsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnQxLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50Mik7CiAKKyNp
ZiBQTEFURk9STShJT1MpCit2b2lkIGZpbmFsaXplVmlld3BvcnRBcmd1bWVudHMoVmlld3BvcnRB
cmd1bWVudHMmKTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBWaWV3cG9ydEFyZ3VtZW50c19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFr
ZV9uYW1lcy5wbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCmluZGV4IGYwMzZj
ZmU0NmE3NmVmZGFhMWJjZjU0NTQ2MGI5NTMxNDUzZjMzOTAuLjE2YmQ2ZjRlOTU0YWU5ZDc5MmRk
ZTczM2ZkMTU1MzIzZTUxNmZkODcgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtl
X25hbWVzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCkBAIC02NSw4
ICs2NSwxMCBAQCByZXF1aXJlIENvbmZpZzsKIG15ICRnY2NMb2NhdGlvbiA9ICIiOwogaWYgKCRF
TlZ7Q0N9KSB7CiAgICAgJGdjY0xvY2F0aW9uID0gJEVOVntDQ307Ci19IGVsc2lmICgoJENvbmZp
Zzo6Q29uZmlneydvc25hbWUnfSkgPX4gL3NvbGFyaXMvaSkgeworfSBlbHNpZiAoKCRDb25maWc6
OkNvbmZpZ3sib3NuYW1lIn0pID1+IC9zb2xhcmlzL2kpIHsKICAgICAkZ2NjTG9jYXRpb24gPSAi
L3Vzci9zZncvYmluL2djYyI7Cit9IGVsc2lmICgkQ29uZmlnOjpDb25maWd7Im9zbmFtZSJ9IGVx
ICJkYXJ3aW4iICYmICRFTlZ7U0RLUk9PVH0pIHsKKyAgICBjaG9tcCgkZ2NjTG9jYXRpb24gPSBg
eGNydW4gLWZpbmQgY2MgLXNkayAnJEVOVntTREtST09UfSdgKTsKIH0gZWxzZSB7CiAgICAgJGdj
Y0xvY2F0aW9uID0gIi91c3IvYmluL2djYyI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAppbmRleCBiOWE0MmM2MTRhMjAzZWM5NWNiNWZlYWE4YmU5MTBjMmViNmUy
ZmU3Li40MWNkZjY2MzMxZDM0YmQyOTEwMDE1ZjQ0MWJmZWQyZGE5ZTY3YTc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTQyODksOCArNDI4OSw5IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uIHdoeSkKICAg
ICAgICAgICAgIHN0b3AoKTsKICAgICAgICAgICAgIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oUmVx
dWlyZVBhZ2VDb25zZW50VG9SZXN1bWVNZWRpYVJlc3RyaWN0aW9uKTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIFBhZ2VXaWxsQmVTdXNwZW5kZWQ6CisgICAgICAgIGNhc2UgRG9j
dW1lbnRXaWxsQmVQYXVzZWQ6CiAgICAgICAgIGNhc2UgSmF2YVNjcmlwdERlYnVnZ2VyUGF1c2Vk
OgorICAgICAgICBjYXNlIFBhZ2VXaWxsQmVTdXNwZW5kZWQ6CiAgICAgICAgIGNhc2UgV2lsbERl
ZmVyTG9hZGluZzoKICAgICAgICAgICAgIC8vIERvIG5vdGhpbmcsIHdlIGRvbid0IHBhdXNlIG1l
ZGlhIHBsYXliYWNrIGluIHRoZXNlIGNhc2VzLgogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuY3BwCmluZGV4IDQ4OTQ5MWM5NGI0NTRkNWI4NTczNTQ3MWIyOTdkZWMwZTMz
MmZlZDEuLmM1ZmFkNDlhMzFhNTQwZTgzMGE5NDgwZTczZDBmMTRhZjY3NWE1ZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC0xMzUsMTEgKzEzNSwxNyBAQCBzdGF0aWMgY29uc3QgYm9v
bCBkZWZhdWx0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCA9IGZhbHNlOwogc3RhdGljIGNvbnN0
IGJvb2wgZGVmYXVsdFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCA9IHRydWU7CiBzdGF0aWMgY29u
c3QgYm9vbCBkZWZhdWx0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCA9IGZhbHNlOwog
CisvLyBUaGlzIGFtb3VudCBvZiB0aW1lIG11c3QgaGF2ZSBlbGFwc2VkIGJlZm9yZSB3ZSB3aWxs
IGV2ZW4gY29uc2lkZXIgc2NoZWR1bGluZyBhIGxheW91dCB3aXRob3V0IGEgZGVsYXkuCisvLyBG
SVhNRTogRm9yIGZhc3RlciBtYWNoaW5lcyB0aGlzIHZhbHVlIGNhbiByZWFsbHkgYmUgbG93ZXJl
ZCB0byAyMDAuIDI1MCBpcyBhZGVxdWF0ZSwgYnV0IGEgbGl0dGxlIGhpZ2gKKy8vIGZvciBkdWFs
IEc1cy4gOikKK3N0YXRpYyBjb25zdCBpbnQgbGF5b3V0U2NoZWR1bGVUaHJlc2hvbGQgPSAyNTA7
CisKIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAgIDogbV9wYWdlKDApCiAgICAg
LCBtX21lZGlhVHlwZU92ZXJyaWRlKCJzY3JlZW4iKQogICAgICwgbV9mb250R2VuZXJpY0ZhbWls
aWVzKHN0ZDo6bWFrZV91bmlxdWU8Rm9udEdlbmVyaWNGYW1pbGllcz4oKSkKICAgICAsIG1fc3Rv
cmFnZUJsb2NraW5nUG9saWN5KFNlY3VyaXR5T3JpZ2luOjpBbGxvd0FsbFN0b3JhZ2UpCisgICAg
LCBtX2xheW91dEludGVydmFsKGxheW91dFNjaGVkdWxlVGhyZXNob2xkKQogI2lmIEVOQUJMRShU
RVhUX0FVVE9TSVpJTkcpCiAgICAgLCBtX3RleHRBdXRvc2l6aW5nRm9udFNjYWxlRmFjdG9yKDEp
CiAjaWYgSEFDS19GT1JDRV9URVhUX0FVVE9TSVpJTkdfT05fREVTS1RPUApAQCAtNDczLDYgKzQ3
OSwxMyBAQCBkb3VibGUgU2V0dGluZ3M6OmRvbVRpbWVyQWxpZ25tZW50SW50ZXJ2YWwoKSBjb25z
dAogICAgIHJldHVybiBtX3BhZ2UtPnRpbWVyQWxpZ25tZW50SW50ZXJ2YWwoKTsKIH0KIAordm9p
ZCBTZXR0aW5nczo6c2V0TGF5b3V0SW50ZXJ2YWwoaW50IGxheW91dEludGVydmFsKQoreworICAg
IC8vIEZJWE1FOiBJdCBzZWVtcyB3ZWlyZCB0aGF0IHRoaXMgZnVuY3Rpb24gbWF5IGRpc3JlZ2Fy
ZCB0aGUgc3BlY2lmaWVkIGxheW91dCBpbnRlcnZhbC4KKyAgICAvLyBXZSBzaG91bGQgZWl0aGVy
IGV4cG9zZSBsYXlvdXRTY2hlZHVsZVRocmVzaG9sZCBvciBiZXR0ZXIgY29tbXVuaWNhdGUgdGhp
cyBpbnZhcmlhbnQuCisgICAgbV9sYXlvdXRJbnRlcnZhbCA9IHN0ZDo6bWF4KGxheW91dEludGVy
dmFsLCBsYXlvdXRTY2hlZHVsZVRocmVzaG9sZCk7Cit9CisKIHZvaWQgU2V0dGluZ3M6OnNldFVz
ZXNQYWdlQ2FjaGUoYm9vbCB1c2VzUGFnZUNhY2hlKQogewogICAgIGlmIChtX3VzZXNQYWdlQ2Fj
aGUgPT0gdXNlc1BhZ2VDYWNoZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCAxOWRiZjgyYWEy
ZjVmOGFiNDE5ZGNhZGQwNTk1Y2IwYzIwMDhlZGM2Li4wNTAxMTQxYWViMGFiMjcyMDQwNTE1MzE0
NjUzNThlZTQ0MTllNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC0xNzEsNiArMTcxLDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERPTVRpbWVyQWxpZ25tZW50SW50ZXJ2YWwoZG91Ymxl
KTsKICAgICBkb3VibGUgZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZhbCgpIGNvbnN0OwogCisgICAg
Ly8gRklYTUU6IENoYW5nZSB0aGVzZSBtZXRob2RzIHRvIHRha2UvcmV0dXJuIGFuIHVuc2lnbmVk
IGludGVnZXIgYWZ0ZXIgd2UgdXBzdHJlYW0gdGhlIGlPUyBwb3J0LgorICAgIHZvaWQgc2V0TGF5
b3V0SW50ZXJ2YWwoaW50KTsKKyAgICBpbnQgbGF5b3V0SW50ZXJ2YWwoKSBjb25zdCB7IHJldHVy
biBtX2xheW91dEludGVydmFsOyB9CisKICNpZiBFTkFCTEUoSElEREVOX1BBR0VfRE9NX1RJTUVS
X1RIUk9UVExJTkcpCiAgICAgYm9vbCBoaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0VuYWJsZWQ7
IH0KICAgICB2b2lkIHNldEhpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdFbmFibGVkKGJvb2wp
OwpAQCAtMjc2LDYgKzI4MCw3IEBAIHByaXZhdGU6CiAgICAgVVJMIG1fdXNlclN0eWxlU2hlZXRM
b2NhdGlvbjsKICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Rm9udEdlbmVyaWNGYW1pbGllcz4g
bV9mb250R2VuZXJpY0ZhbWlsaWVzOwogICAgIFNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tp
bmdQb2xpY3kgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3k7CisgICAgaW50IG1fbGF5b3V0SW50ZXJ2
YWw7CiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKICAgICBmbG9hdCBtX3RleHRBdXRvc2l6
aW5nRm9udFNjYWxlRmFjdG9yOwogICAgIEludFNpemUgbV90ZXh0QXV0b3NpemluZ1dpbmRvd1Np
emVPdmVycmlkZTsK
</data>
<flag name="review"
          id="242699"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
          </attachment>
      

    </bug>

</bugzilla>