<?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>203976</bug_id>
          
          <creation_ts>2019-11-07 13:33:40 -0800</creation_ts>
          <short_desc>Make DeferredPromise behave nicely with regards to the back/forward cache</short_desc>
          <delta_ts>2019-11-15 10:18:47 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=203101</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=204232</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>202293</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>macpherson</cc>
    
    <cc>mark.lam</cc>
    
    <cc>menard</cc>
    
    <cc>msaboff</cc>
    
    <cc>philipj</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>tsavell</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1588375</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-11-07 13:33:40 -0800</bug_when>
    <thetext>Make DeferredPromise behave nicely with regards to the back/forward cache. Right now, we require call sites to queue tasks to resolve / reject promises in order to play nicely with the back/forward cache.
Ideally, DeferredPromise would do this for us and developers could resolve/reject promises without worrying about the back/forward cache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588379</commentid>
    <comment_count>1</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-11-07 13:38:38 -0800</bug_when>
    <thetext>I believe this is the way to fix ReadableStream as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588381</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-07 13:40:44 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #0)
&gt; Make DeferredPromise behave nicely with regards to the back/forward cache.
&gt; Right now, we require call sites to queue tasks to resolve / reject promises
&gt; in order to play nicely with the back/forward cache.
&gt; Ideally, DeferredPromise would do this for us and developers could
&gt; resolve/reject promises without worrying about the back/forward cache.

Should we integrate DeferredPromise with EventLoop somehow?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588382</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-11-07 13:42:00 -0800</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #2)
&gt; (In reply to Chris Dumez from comment #0)
&gt; &gt; Make DeferredPromise behave nicely with regards to the back/forward cache.
&gt; &gt; Right now, we require call sites to queue tasks to resolve / reject promises
&gt; &gt; in order to play nicely with the back/forward cache.
&gt; &gt; Ideally, DeferredPromise would do this for us and developers could
&gt; &gt; resolve/reject promises without worrying about the back/forward cache.
&gt; 
&gt; Should we integrate DeferredPromise with EventLoop somehow?

That&apos;s what I am doing. If we&apos;re not in back/forward cache, then resolve/reject as usual. If we&apos;re in the back/forward cache, then queue a task on the event loop to reject/resolve. Patch will be ready soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588424</commentid>
    <comment_count>4</comment_count>
      <attachid>383076</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-11-07 15:00:24 -0800</bug_when>
    <thetext>Created attachment 383076
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588434</commentid>
    <comment_count>5</comment_count>
      <attachid>383080</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-11-07 15:11:43 -0800</bug_when>
    <thetext>Created attachment 383080
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588475</commentid>
    <comment_count>6</comment_count>
      <attachid>383080</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-07 16:23:06 -0800</bug_when>
    <thetext>Comment on attachment 383080
WIP Patch

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

&gt; Source/WebCore/Modules/cache/DOMCache.cpp:62
&gt; -        enqueueTask([promise = WTFMove(promise), result = WTFMove(result)]() mutable {
&gt; +        queueTaskKeepingObjectAlive(*this, TaskSource::DOMManipulation, [promise = WTFMove(promise), result = WTFMove(result)]() mutable {

Maybe we can make this change to DOMCache in a separate patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588481</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-11-07 16:28:19 -0800</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #6)
&gt; Comment on attachment 383080 [details]
&gt; WIP Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=383080&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/cache/DOMCache.cpp:62
&gt; &gt; -        enqueueTask([promise = WTFMove(promise), result = WTFMove(result)]() mutable {
&gt; &gt; +        queueTaskKeepingObjectAlive(*this, TaskSource::DOMManipulation, [promise = WTFMove(promise), result = WTFMove(result)]() mutable {
&gt; 
&gt; Maybe we can make this change to DOMCache in a separate patch?

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588491</commentid>
    <comment_count>8</comment_count>
      <attachid>383090</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-11-07 16:40:29 -0800</bug_when>
    <thetext>Created attachment 383090
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588497</commentid>
    <comment_count>9</comment_count>
      <attachid>383080</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-11-07 16:52:23 -0800</bug_when>
    <thetext>Comment on attachment 383080
WIP Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/cache/DOMCache.cpp:62
&gt;&gt;&gt; +        queueTaskKeepingObjectAlive(*this, TaskSource::DOMManipulation, [promise = WTFMove(promise), result = WTFMove(result)]() mutable {
&gt;&gt; 
&gt;&gt; Maybe we can make this change to DOMCache in a separate patch?
&gt; 
&gt; Sure.

Will do this via https://bugs.webkit.org/show_bug.cgi?id=203985.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588800</commentid>
    <comment_count>10</comment_count>
      <attachid>383090</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-08 13:32:52 -0800</bug_when>
    <thetext>Comment on attachment 383090
Patch

Rejecting attachment 383090 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 383090, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Logging in as commit-queue@webkit.org...
Fetching: https://bugs.webkit.org/attachment.cgi?id=383090&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=203976&amp;ctype=xml&amp;excludefield=attachmentdata
Processing 1 patch from 1 bug.
Processing patch 383090 from bug 203976.
Fetching: https://bugs.webkit.org/attachment.cgi?id=383090
Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Ryosuke Niwa&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Parsed 24 diffs from patch file(s).
patching file Source/JavaScriptCore/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebCore/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/JavaScriptCore/heap/Handle.h
patching file Source/JavaScriptCore/heap/Strong.h
patching file Source/JavaScriptCore/heap/StrongInlines.h
patching file Source/WebCore/Modules/cache/DOMCacheStorage.cpp
patching file Source/WebCore/Modules/cache/DOMCacheStorage.h
patching file Source/WebCore/Modules/fetch/FetchBodyOwner.cpp
patching file Source/WebCore/Modules/fetch/FetchBodyOwner.h
patching file Source/WebCore/Modules/mediastream/UserMediaRequest.cpp
patching file Source/WebCore/WebCore.xcodeproj/project.pbxproj
Hunk #2 succeeded at 28744 (offset 29 lines).
Hunk #3 FAILED at 30675.
Hunk #4 FAILED at 31177.
2 out of 4 hunks FAILED -- saving rejects to file Source/WebCore/WebCore.xcodeproj/project.pbxproj.rej
patching file Source/WebCore/bindings/IDLTypes.h
patching file Source/WebCore/bindings/js/JSDOMGuardedObject.h
patching file Source/WebCore/bindings/js/JSDOMPromiseDeferred.cpp
patching file Source/WebCore/bindings/js/JSDOMPromiseDeferred.h
patching file Source/WebCore/css/FontFaceSet.cpp
patching file Source/WebCore/dom/ActiveDOMCallback.cpp
patching file Source/WebCore/dom/ActiveDOMCallback.h
patching file Source/WebCore/dom/Element.h
patching file Source/WebCore/dom/ScriptExecutionContext.h
patching file Source/WebCore/page/DOMWindow.h
patching file Source/WebCore/page/RemoteDOMWindow.h
patching file LayoutTests/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file LayoutTests/fast/mediastream/MediaDevices-getUserMedia-expected.txt

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Ryosuke Niwa&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: https://webkit-queues.webkit.org/results/13227628</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588808</commentid>
    <comment_count>11</comment_count>
      <attachid>383158</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-11-08 13:36:09 -0800</bug_when>
    <thetext>Created attachment 383158
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588832</commentid>
    <comment_count>12</comment_count>
      <attachid>383158</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-08 14:11:06 -0800</bug_when>
    <thetext>Comment on attachment 383158
Patch

Clearing flags on attachment: 383158

Committed r252263: &lt;https://trac.webkit.org/changeset/252263&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588833</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-08 14:11:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588905</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-08 17:10:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/57040422&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590514</commentid>
    <comment_count>15</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-11-15 08:49:43 -0800</bug_when>
    <thetext>It looks like the changes in https://trac.webkit.org/changeset/252263/webkit

caused http/tests/navigation/page-cache-getUserMedia-pending-promise.html to crash.

History:
https://results.webkit.org/?suite=layout-tests&amp;test=http%2Ftests%2Fnavigation%2Fpage-cache-getUserMedia-pending-promise.html

CRASHING TEST: /navigation/page-cache-getUserMedia-pending-promise.html

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x000000017ae83a40 WTFCrash + 16
1   com.apple.WebCore             	0x000000016272d85b WTFCrashWithInfo(int, char const*, char const*, int) + 27
2   com.apple.WebCore             	0x0000000164391b6b WebCore::UserMediaRequest::allow(WebCore::CaptureDevice&amp;&amp;, WebCore::CaptureDevice&amp;&amp;, WTF::String&amp;&amp;, WTF::CompletionHandler&lt;void ()&gt;&amp;&amp;)::$_2::operator()(WTF::RefPtr&lt;WebCore::MediaStreamPrivate, WTF::DumbPtrTraits&lt;WebCore::MediaStreamPrivate&gt; &gt;&amp;&amp;) + 587

Log:
https://build.webkit.org/results/Apple-Catalina-Debug-WK2-Tests/r252274%20(564)/http/tests/navigation/page-cache-getUserMedia-pending-promise-crash-log.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590515</commentid>
    <comment_count>16</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-11-15 08:50:36 -0800</bug_when>
    <thetext>http/tests/navigation/page-cache-getUserMedia-pending-promise.html

is crashing on Mac Debug WK2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590523</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-11-15 09:07:06 -0800</bug_when>
    <thetext>(In reply to Truitt Savell from comment #16)
&gt; http/tests/navigation/page-cache-getUserMedia-pending-promise.html
&gt; 
&gt; is crashing on Mac Debug WK2

Looking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590541</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-11-15 10:18:47 -0800</bug_when>
    <thetext>(In reply to Truitt Savell from comment #16)
&gt; http/tests/navigation/page-cache-getUserMedia-pending-promise.html
&gt; 
&gt; is crashing on Mac Debug WK2

Fixing via https://bugs.webkit.org/show_bug.cgi?id=204232.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383076</attachid>
            <date>2019-11-07 15:00:24 -0800</date>
            <delta_ts>2019-11-07 15:11:43 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>203976_wip.patch</filename>
            <type>text/plain</type>
            <size>45238</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlLmgKaW5kZXggYWJhNjUxMTM0M2EuLjg2NmEwNzY5
ZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaApAQCAtMzcsNiArMzcsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBsaWZldGltZSBpcyBndWFyYW50ZWVkIGJ5IHNvbWV0aGluZyBl
bHNlLgogKi8KIAorZW51bSBjbGFzcyBTaG91bGRTdHJvbmdEZXN0cnVjdG9yR3JhYkxvY2sgOiBi
b29sIHsgTm8sIFllcyB9OworCiB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgSGFuZGxlOwogCiAv
LyBDcmVhdGluZyBhIEpTVmFsdWUgSGFuZGxlIGlzIGludmFsaWQKQEAgLTQ0LDcgKzQ2LDcgQEAg
dGVtcGxhdGUgPD4gY2xhc3MgSGFuZGxlPEpTVmFsdWU+OwogCiBjbGFzcyBIYW5kbGVCYXNlIHsK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gZnJpZW5kIGNsYXNzIFdlYWs7Ci0gICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IGZyaWVuZCBjbGFzcyBTdHJvbmc7CisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIFNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jayBzaG91bGRTdHJvbmdEZXN0cnVj
dG9yR3JhYkxvY2s+IGZyaWVuZCBjbGFzcyBTdHJvbmc7CiAgICAgZnJpZW5kIGNsYXNzIEhhbmRs
ZVNldDsKICAgICBmcmllbmQgc3RydWN0IEpTQ2FsbGJhY2tPYmplY3REYXRhOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdHJvbmcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1N0cm9uZy5oCmluZGV4IGJmNGRkMzk0NDQzLi5jMzc0ODFhOTZmMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Ryb25nLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvU3Ryb25nLmgKQEAgLTI4LDE2ICsyOCwxNyBAQAogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSAiSGFuZGxlLmgiCiAjaW5jbHVkZSAiSGFu
ZGxlU2V0LmgiCisjaW5jbHVkZSAiSlNMb2NrLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFz
cyBWTTsKIAogLy8gQSBzdHJvbmdseSByZWZlcmVuY2VkIGhhbmRsZSB0aGF0IHByZXZlbnRzIHRo
ZSBvYmplY3QgaXQgcG9pbnRzIHRvIGZyb20gYmVpbmcgZ2FyYmFnZSBjb2xsZWN0ZWQuCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgU3Ryb25nIDogcHVibGljIEhhbmRsZTxUPiB7Cit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgU2hvdWxkU3Ryb25nRGVzdHJ1Y3RvckdyYWJMb2NrIHNob3VsZFN0
cm9uZ0Rlc3RydWN0b3JHcmFiTG9jayA9IFNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jazo6
Tm8+IGNsYXNzIFN0cm9uZyA6IHB1YmxpYyBIYW5kbGU8VD4gewogICAgIHVzaW5nIEhhbmRsZTxU
Pjo6c2xvdDsKICAgICB1c2luZyBIYW5kbGU8VD46OnNldFNsb3Q7Ci0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFU+IGZyaWVuZCBjbGFzcyBTdHJvbmc7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFUs
IFNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jaz4gZnJpZW5kIGNsYXNzIFN0cm9uZzsKIAog
cHVibGljOgogICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFuZGxlPFQ+OjpFeHRlcm5hbFR5cGUgRXh0
ZXJuYWxUeXBlOwpAQCAtMTIwLDggKzEyMSwxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBp
ZiAoIXNsb3QoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgSGFuZGxlU2V0OjpoZWFw
Rm9yKHNsb3QoKSktPmRlYWxsb2NhdGUoc2xvdCgpKTsKLSAgICAgICAgc2V0U2xvdCgwKTsKKwor
ICAgICAgICBhdXRvKiBoZWFwID0gSGFuZGxlU2V0OjpoZWFwRm9yKHNsb3QoKSk7CisgICAgICAg
IGlmIChzaG91bGRTdHJvbmdEZXN0cnVjdG9yR3JhYkxvY2sgPT0gU2hvdWxkU3Ryb25nRGVzdHJ1
Y3RvckdyYWJMb2NrOjpZZXMpIHsKKyAgICAgICAgICAgIEpTTG9ja0hvbGRlciBob2xkZXIoaGVh
cC0+dm0oKSk7CisgICAgICAgICAgICBoZWFwLT5kZWFsbG9jYXRlKHNsb3QoKSk7CisgICAgICAg
ICAgICBzZXRTbG90KDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaGVhcC0+ZGVh
bGxvY2F0ZShzbG90KCkpOworICAgICAgICAgICAgc2V0U2xvdCgwKTsKKyAgICAgICAgfQogICAg
IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0
cm9uZ0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0cm9uZ0lubGluZXMu
aAppbmRleCAyMDVmYjA0ZmI2OS4uMjg1NWVmODFkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1N0cm9uZ0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9TdHJvbmdJbmxpbmVzLmgKQEAgLTMwLDIyICszMCwyMiBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgU3Ryb25nPFQ+OjpTdHJvbmco
Vk0mIHZtLCBFeHRlcm5hbFR5cGUgdmFsdWUpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgU2hvdWxk
U3Ryb25nRGVzdHJ1Y3RvckdyYWJMb2NrIHNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jaz4K
K2lubGluZSBTdHJvbmc8VCwgc2hvdWxkU3Ryb25nRGVzdHJ1Y3RvckdyYWJMb2NrPjo6U3Ryb25n
KFZNJiB2bSwgRXh0ZXJuYWxUeXBlIHZhbHVlKQogICAgIDogSGFuZGxlPFQ+KHZtLmhlYXAuaGFu
ZGxlU2V0KCktPmFsbG9jYXRlKCkpCiB7CiAgICAgc2V0KHZhbHVlKTsKIH0KIAotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1pbmxpbmUgU3Ryb25nPFQ+OjpTdHJvbmcoVk0mIHZtLCBIYW5kbGU8VD4g
aGFuZGxlKQordGVtcGxhdGUgPHR5cGVuYW1lIFQsIFNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFi
TG9jayBzaG91bGRTdHJvbmdEZXN0cnVjdG9yR3JhYkxvY2s+CitpbmxpbmUgU3Ryb25nPFQsIHNo
b3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jaz46OlN0cm9uZyhWTSYgdm0sIEhhbmRsZTxUPiBo
YW5kbGUpCiAgICAgOiBIYW5kbGU8VD4odm0uaGVhcC5oYW5kbGVTZXQoKS0+YWxsb2NhdGUoKSkK
IHsKICAgICBzZXQoaGFuZGxlLmdldCgpKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1p
bmxpbmUgdm9pZCBTdHJvbmc8VD46OnNldChWTSYgdm0sIEV4dGVybmFsVHlwZSB2YWx1ZSkKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBULCBTaG91bGRTdHJvbmdEZXN0cnVjdG9yR3JhYkxvY2sgc2hvdWxk
U3Ryb25nRGVzdHJ1Y3RvckdyYWJMb2NrPgoraW5saW5lIHZvaWQgU3Ryb25nPFQsIHNob3VsZFN0
cm9uZ0Rlc3RydWN0b3JHcmFiTG9jaz46OnNldChWTSYgdm0sIEV4dGVybmFsVHlwZSB2YWx1ZSkK
IHsKICAgICBpZiAoIXNsb3QoKSkKICAgICAgICAgc2V0U2xvdCh2bS5oZWFwLmhhbmRsZVNldCgp
LT5hbGxvY2F0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
aW5kZXggZTIwNzE5YzNlNGEuLjBkNTU1YTExYTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtNTksNyArNTksNyBAQCBET01DYWNoZTo6fkRPTUNhY2hl
KCkKIHZvaWQgRE9NQ2FjaGU6Om1hdGNoKFJlcXVlc3RJbmZvJiYgaW5mbywgQ2FjaGVRdWVyeU9w
dGlvbnMmJiBvcHRpb25zLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAg
ZG9NYXRjaChXVEZNb3ZlKGluZm8pLCBXVEZNb3ZlKG9wdGlvbnMpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0
aW9uT3I8UmVmUHRyPEZldGNoUmVzcG9uc2U+PiYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAg
IGVucXVldWVUYXNrKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92
ZShyZXN1bHQpXSgpIG11dGFibGUgeworICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxp
dmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgcHJvbWlz
ZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIERPTUNhY2hlOjptYXRjaEFsbChPcHRpb25h
bDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbgogCiAgICAg
aWYgKCFyZXF1ZXN0KSB7CiAgICAgICAgIHJldHJpZXZlUmVjb3JkcyhVUkwgeyB9LCBbdGhpcywg
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRp
b24pIG11dGFibGUgewotICAgICAgICAgICAgZW5xdWV1ZVRhc2soW3RoaXMsIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSBXVEZNb3ZlKGV4Y2VwdGlvbildKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tT
b3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
LCBleGNlcHRpb24gPSBXVEZNb3ZlKGV4Y2VwdGlvbildKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICAgICAgaWYgKGV4Y2VwdGlvbikgewogICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVj
dChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIERPTUNhY2hlOjptYXRjaEFsbChPcHRpb25hbDxS
ZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbgogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIHF1ZXJ5Q2FjaGUocmVxdWVzdC5yZWxlYXNlTm9uTnVsbCgpLCBX
VEZNb3ZlKG9wdGlvbnMpLCBbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2Vw
dGlvbk9yPFZlY3RvcjxDYWNoZVN0b3JhZ2VSZWNvcmQ+PiYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0g
ICAgICAgIGVucXVldWVUYXNrKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVz
dWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgeworICAgICAgICBxdWV1ZVRhc2tLZWVw
aW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3RoaXMs
IHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAg
ICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjQyLDEzICsyNDIsMTMgQEAgdm9pZCBET01DYWNo
ZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+JiYgcHIKIAogICAgIGF1dG8gdGFza0hhbmRsZXIgPSBGZXRjaFRhc2tzSGFuZGxlcjo6
Y3JlYXRlKCp0aGlzLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8VmVjdG9yPFJlY29yZD4+JiYgcmVz
dWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAg
ICAgICAgICAgZW5xdWV1ZVRhc2soW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRp
b24gPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpXSgpIG11dGFibGUgewotICAgICAgICAgICAg
ICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uKSk7CisgICAgICAgICAgICBxdWV1
ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlv
biwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCld
KCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QocmVzdWx0LnJlbGVh
c2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICBiYXRjaFB1dE9wZXJhdGlvbihyZXN1bHQucmVsZWFzZVJldHVyblZh
bHVlKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0KSBtdXRh
YmxlIHsKLSAgICAgICAgICAgIGVucXVldWVUYXNrKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgeworICAgICAgICAgICAgcXVl
dWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRp
b24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQp
XSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVz
dWx0KSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CkBAIC0zMTMsOCArMzEzLDggQEAg
dm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKIHZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURh
dGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4m
JiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25zZUJv
ZHkuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgZW5xdWV1ZVRhc2soW3Byb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVsZWFzZUV4Y2VwdGlvbigp
XSgpIG11dGFibGUgewotICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRp
b24pKTsKKyAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291
cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVzcG9u
c2VCb2R5ID0gV1RGTW92ZShyZXNwb25zZUJvZHkpXSgpIG11dGFibGUgeworICAgICAgICAgICAg
cHJvbWlzZS5yZWplY3QocmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAg
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzIzLDcgKzMyMyw3IEBAIHZvaWQgRE9N
Q2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJv
bWlzZSwgUmVmPEZldGNoCiAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVzcG9uc2VCb2R5LnJlbGVh
c2VSZXR1cm5WYWx1ZSgpKQogICAgICAgICBib2R5ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7
CiAgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UuZ2V0KCksIFdU
Rk1vdmUoYm9keSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGVucXVldWVUYXNrKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVz
dWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgeworICAgICAgICBxdWV1ZVRhc2tLZWVw
aW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAg
ICB9KTsKICAgICB9KTsKQEAgLTM4OSw3ICszODksNyBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVx
dWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlz
ZQogICAgIH0KIAogICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNl
LmdldCgpLCByZXNwb25zZS0+Y29uc3VtZUJvZHkoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPHZv
aWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgZW5xdWV1ZVRhc2soW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7Cisg
ICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9N
TWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1v
dmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1v
dmUocmVzdWx0KSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpAQCAtNDA3LDcgKzQwNyw3IEBAIHZv
aWQgRE9NQ2FjaGU6OnJlbW92ZShSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25z
JiYgb3B0aW9ucywgRE9NUHJvbWlzCiAgICAgfQogCiAgICAgYmF0Y2hEZWxldGVPcGVyYXRpb24o
cmVxdWVzdE9yRXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBXVEZNb3ZlKG9wdGlvbnMp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8Ym9vbD4mJiByZXN1bHQpIG11dGFibGUgewotICAgICAg
ICBlbnF1ZXVlVGFzayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1v
dmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFs
aXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewogICAgICAg
ICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgfSk7CiAgICAg
fSk7CkBAIC00MzUsNyArNDM1LDcgQEAgdm9pZCBET01DYWNoZTo6a2V5cyhPcHRpb25hbDxSZXF1
ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIEsKIAogICAgIGlm
ICghcmVxdWVzdCkgewogICAgICAgICByZXRyaWV2ZVJlY29yZHMoVVJMIHsgfSwgW3RoaXMsIHBy
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9u
KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGVucXVldWVUYXNrKFt0aGlzLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gV1RGTW92ZShleGNlcHRpb24pXSgpIG11dGFibGUg
eworICAgICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291
cmNlOjpET01NYW5pcHVsYXRpb24sIFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwg
ZXhjZXB0aW9uID0gV1RGTW92ZShleGNlcHRpb24pXSgpIG11dGFibGUgewogICAgICAgICAgICAg
ICAgIGlmIChleGNlcHRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3Qo
V1RGTW92ZShleGNlcHRpb24udmFsdWUoKSkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47
CkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBET01DYWNoZTo6a2V5cyhPcHRpb25hbDxSZXF1ZXN0
SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIEsKICAgICB9CiAKICAg
ICBxdWVyeUNhY2hlKHJlcXVlc3QucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShvcHRpb25zKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICBlbnF1ZXVlVGFzayhb
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNr
U291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVz
dWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KHJlc3Vs
dC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTYwNywx
NCArNjA3LDQgQEAgY29uc3QgY2hhciogRE9NQ2FjaGU6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBj
b25zdAogICAgIHJldHVybiAiQ2FjaGUiOwogfQogCi12b2lkIERPTUNhY2hlOjplbnF1ZXVlVGFz
ayhGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKLXsKLSAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNvbnRleHQtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVs
YXRpb24sICpjb250ZXh0LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwZW5kaW5n
QWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGFzayA9IFdURk1vdmUodGFz
ayldIHsKLSAgICAgICAgdGFzaygpOwotICAgIH0pOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggMDk5MWI5MzBi
MjguLmE2ZWQyMjc2N2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5o
CkBAIC04NCw4ICs4NCw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZjxGZXRjaFJlc3BvbnNl
Pj4gY2xvbmVSZXNwb25zZXMoY29uc3QgVmVjdG9yPENhY2hlU3RvcmFnZVJlY29yZD4mKTsKICAg
ICBET01DYWNoZUVuZ2luZTo6UmVjb3JkIHRvQ29ubmVjdGlvblJlY29yZChjb25zdCBGZXRjaFJl
cXVlc3QmLCBGZXRjaFJlc3BvbnNlJiwgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSYmKTsK
IAotICAgIHZvaWQgZW5xdWV1ZVRhc2soRnVuY3Rpb248dm9pZCgpPiYmKTsKLQogICAgIFN0cmlu
ZyBtX25hbWU7CiAgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOwogICAgIFJlZjxDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAKaW5kZXggNDUwMGM1YTI3NWQuLjYwM2U5M2ZlZWY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2Uu
Y3BwCkBAIC04NywxOCArODcsMTYgQEAgc3RhdGljIGlubGluZSBSZWY8RE9NQ2FjaGU+IGNvcHlD
YWNoZShjb25zdCBSZWY8RE9NQ2FjaGU+JiBjYWNoZSkKIAogdm9pZCBET01DYWNoZVN0b3JhZ2U6
OmRvU2VxdWVudGlhbE1hdGNoKERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVl
cnlPcHRpb25zJiYgb3B0aW9ucywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewot
ICAgIHN0YXJ0U2VxdWVudGlhbE1hdGNoKFdURjo6bWFwKG1fY2FjaGVzLCBjb3B5Q2FjaGUpLCBX
VEZNb3ZlKGluZm8pLCBXVEZNb3ZlKG9wdGlvbnMpLCBbdGhpcywgcGVuZGluZ0FjdGl2aXR5ID0g
bWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShh
dXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgZW5xdWV1ZVRhc2soW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7Ci0g
ICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICAgICAg
cHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghcmVzdWx0LnJldHVy
blZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZTxJRExJbnRlcmZhY2U8RmV0Y2hSZXNwb25zZT4+KCpyZXN1bHQucmV0dXJuVmFsdWUoKSk7
Ci0gICAgICAgIH0pOworICAgIHN0YXJ0U2VxdWVudGlhbE1hdGNoKFdURjo6bWFwKG1fY2FjaGVz
LCBjb3B5Q2FjaGUpLCBXVEZNb3ZlKGluZm8pLCBXVEZNb3ZlKG9wdGlvbnMpLCBbcGVuZGluZ0Fj
dGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNF
eGNlcHRpb24oKSkgeworICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNl
RXhjZXB0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlm
ICghcmVzdWx0LnJldHVyblZhbHVlKCkpIHsKKyAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmUo
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBwcm9taXNlLT5yZXNv
bHZlPElETEludGVyZmFjZTxGZXRjaFJlc3BvbnNlPj4oKnJlc3VsdC5yZXR1cm5WYWx1ZSgpKTsK
ICAgICB9KTsKIH0KIApAQCAtMTA2LDkgKzEwNCw3IEBAIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpt
YXRjaChET01DYWNoZTo6UmVxdWVzdEluZm8mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9w
CiB7CiAgICAgcmV0cmlldmVDYWNoZXMoW3RoaXMsIGluZm8gPSBXVEZNb3ZlKGluZm8pLCBvcHRp
b25zID0gV1RGTW92ZShvcHRpb25zKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKE9wdGlv
bmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoZXhjZXB0
aW9uKSB7Ci0gICAgICAgICAgICBlbnF1ZXVlVGFzayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSksIGV4Y2VwdGlvbiA9IFdURk1vdmUoZXhjZXB0aW9uLnZhbHVlKCkpXSgpIG11dGFibGUgewot
ICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbikpOwotICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoV1RGTW92ZSgqZXhjZXB0
aW9uKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTE4LDkgKzExNCw3
IEBAIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjptYXRjaChET01DYWNoZTo6UmVxdWVzdEluZm8mJiBp
bmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wCiAgICAgICAgICAgICAgICAgbV9jYWNoZXNbcG9z
aXRpb25dLT5tYXRjaChXVEZNb3ZlKGluZm8pLCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3ZlKHBy
b21pc2UpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBlbnF1ZXVlVGFzayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwotICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtMTMxLDEzICsxMjUsMTEgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6Om1hdGNo
KERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3AKIHZv
aWQgRE9NQ2FjaGVTdG9yYWdlOjpoYXMoY29uc3QgU3RyaW5nJiBuYW1lLCBET01Qcm9taXNlRGVm
ZXJyZWQ8SURMQm9vbGVhbj4mJiBwcm9taXNlKQogewogICAgIHJldHJpZXZlQ2FjaGVzKFt0aGlz
LCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oT3B0aW9uYWw8RXhjZXB0aW9uPiYm
IGV4Y2VwdGlvbikgbXV0YWJsZSB7Ci0gICAgICAgIGVucXVldWVUYXNrKFt0aGlzLCBuYW1lLCBw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gV1RGTW92ZShleGNlcHRpb24p
XSgpIG11dGFibGUgewotICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAg
ICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uLnZhbHVlKCkpKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwcm9taXNlLnJlc29s
dmUobV9jYWNoZXMuZmluZE1hdGNoaW5nKFsmXShhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLT5u
YW1lKCkgPT0gbmFtZTsgfSkgIT0gbm90Rm91bmQpOwotICAgICAgICB9KTsKKyAgICAgICAgaWYg
KGV4Y2VwdGlvbikgeworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRp
b24udmFsdWUoKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHBy
b21pc2UucmVzb2x2ZShtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGF1dG8mIGl0ZW0pIHsgcmV0
dXJuIGl0ZW0tPm5hbWUoKSA9PSBuYW1lOyB9KSAhPSBub3RGb3VuZCk7CiAgICAgfSk7CiB9CiAK
QEAgLTE4OCw5ICsxODAsNyBAQCB2b2lkIERPTUNhY2hlU3RvcmFnZTo6b3Blbihjb25zdCBTdHJp
bmcmIG5hbWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8RAogewogICAgIHJldHJp
ZXZlQ2FjaGVzKFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oT3B0aW9u
YWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChleGNlcHRp
b24pIHsKLSAgICAgICAgICAgIGVucXVldWVUYXNrKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgZXhjZXB0aW9uID0gV1RGTW92ZShleGNlcHRpb24udmFsdWUoKSldKCkgbXV0YWJsZSB7Ci0g
ICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRpb24pKTsKLSAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZSgqZXhjZXB0aW9u
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgZG9PcGVuKG5hbWUs
IFdURk1vdmUocHJvbWlzZSkpOwpAQCAtMjAxLDI2ICsxOTEsMjAgQEAgdm9pZCBET01DYWNoZVN0
b3JhZ2U6OmRvT3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExJ
bnRlcmZhY2UKIHsKICAgICBhdXRvIHBvc2l0aW9uID0gbV9jYWNoZXMuZmluZE1hdGNoaW5nKFsm
XShhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLT5uYW1lKCkgPT0gbmFtZTsgfSk7CiAgICAgaWYg
KHBvc2l0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIGVucXVldWVUYXNrKFt0aGlzLCBwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKSwgY2FjaGUgPSBtX2NhY2hlc1twb3NpdGlvbl0uY29weVJl
ZigpXSgpIG11dGFibGUgewotICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKERPTUNhY2hlOjpj
cmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgU3RyaW5nIHsgY2FjaGUtPm5hbWUoKSB9
LCBjYWNoZS0+aWRlbnRpZmllcigpLCBtX2Nvbm5lY3Rpb24uY29weVJlZigpKSk7Ci0gICAgICAg
IH0pOworICAgICAgICBwcm9taXNlLnJlc29sdmUoRE9NQ2FjaGU6OmNyZWF0ZSgqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBTdHJpbmcgeyBtX2NhY2hlc1twb3NpdGlvbl0tPm5hbWUoKSB9LCBt
X2NhY2hlc1twb3NpdGlvbl0tPmlkZW50aWZpZXIoKSwgbV9jb25uZWN0aW9uLmNvcHlSZWYoKSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9jb25uZWN0aW9uLT5vcGVuKCpvcmln
aW4oKSwgbmFtZSwgW3RoaXMsIG5hbWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBwZW5k
aW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKV0oY29uc3QgQ2FjaGVJZGVu
dGlmaWVyT3JFcnJvciYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFyZXN1bHQuaGFz
X3ZhbHVlKCkpIHsKLSAgICAgICAgICAgIGVucXVldWVUYXNrKFt0aGlzLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgZXJyb3IgPSByZXN1bHQuZXJyb3IoKV0oKSBtdXRhYmxlIHsKLSAgICAg
ICAgICAgICAgICBwcm9taXNlLnJlamVjdChET01DYWNoZUVuZ2luZTo6Y29udmVydFRvRXhjZXB0
aW9uQW5kTG9nKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZXJyb3IpKTsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkK
KyAgICAgICAgICAgIHByb21pc2UucmVqZWN0KERPTUNhY2hlRW5naW5lOjpjb252ZXJ0VG9FeGNl
cHRpb25BbmRMb2coc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCByZXN1bHQuZXJyb3IoKSkpOwor
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQudmFsdWUoKS5oYWRTdG9yYWdl
RXJyb3IpCiAgICAgICAgICAgICAgICAgbG9nQ29uc29sZVBlcnNpc3RlbmN5RXJyb3Ioc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBuYW1lKTsKIAotICAgICAgICAgICAgZW5xdWV1ZVRhc2soW3Ro
aXMsIG5hbWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gcmVzdWx0
LnZhbHVlKCkuaWRlbnRpZmllcl0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBhdXRvIGNh
Y2hlID0gRE9NQ2FjaGU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBTdHJpbmcg
eyBuYW1lIH0sIGlkZW50aWZpZXIsIG1fY29ubmVjdGlvbi5jb3B5UmVmKCkpOwotICAgICAgICAg
ICAgICAgIHByb21pc2UucmVzb2x2ZShjYWNoZSk7Ci0gICAgICAgICAgICAgICAgbV9jYWNoZXMu
YXBwZW5kKFdURk1vdmUoY2FjaGUpKTsKLSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYXV0
byBjYWNoZSA9IERPTUNhY2hlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgU3Ry
aW5nIHsgbmFtZSB9LCByZXN1bHQudmFsdWUoKS5pZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29w
eVJlZigpKTsKKyAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShjYWNoZSk7CisgICAgICAgICAg
ICBtX2NhY2hlcy5hcHBlbmQoV1RGTW92ZShjYWNoZSkpOwogICAgICAgICB9CiAgICAgfSk7CiB9
CkBAIC0yMjksOSArMjEzLDcgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6OnJlbW92ZShjb25zdCBT
dHJpbmcmIG5hbWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYKIHsKICAgICByZXRy
aWV2ZUNhY2hlcyhbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKE9wdGlv
bmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoZXhjZXB0
aW9uKSB7Ci0gICAgICAgICAgICBlbnF1ZXVlVGFzayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSksIGV4Y2VwdGlvbiA9IFdURk1vdmUoZXhjZXB0aW9uLnZhbHVlKCkpXSgpIG11dGFibGUgewot
ICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uKSk7Ci0gICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoKmV4Y2VwdGlv
bikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGRvUmVtb3ZlKG5h
bWUsIFdURk1vdmUocHJvbWlzZSkpOwpAQCAtMjQyLDM4ICsyMjQsMzIgQEAgdm9pZCBET01DYWNo
ZVN0b3JhZ2U6OmRvUmVtb3ZlKGNvbnN0IFN0cmluZyYgbmFtZSwgRE9NUHJvbWlzZURlZmVycmVk
PElETEJvb2xlYW4KIHsKICAgICBhdXRvIHBvc2l0aW9uID0gbV9jYWNoZXMuZmluZE1hdGNoaW5n
KFsmXShhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLT5uYW1lKCkgPT0gbmFtZTsgfSk7CiAgICAg
aWYgKHBvc2l0aW9uID09IG5vdEZvdW5kKSB7Ci0gICAgICAgIGVucXVldWVUYXNrKFtwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHByb21pc2UucmVz
b2x2ZShmYWxzZSk7Ci0gICAgICAgIH0pOworICAgICAgICBwcm9taXNlLnJlc29sdmUoZmFsc2Up
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmUobV9j
YWNoZXNbcG9zaXRpb25dLT5pZGVudGlmaWVyKCksIFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhp
cyldKGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAg
ICAgIGVucXVldWVUYXNrKFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwg
cmVzdWx0XSgpIG11dGFibGUgewotICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkp
Ci0gICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRE9NQ2FjaGVFbmdpbmU6OmNvbnZlcnRU
b0V4Y2VwdGlvbkFuZExvZyhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHJlc3VsdC5lcnJvcigp
KSk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVl
KCkuaGFkU3RvcmFnZUVycm9yKQotICAgICAgICAgICAgICAgICAgICBsb2dDb25zb2xlUGVyc2lz
dGVuY3lFcnJvcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG5hbWUpOwotICAgICAgICAgICAg
ICAgIHByb21pc2UucmVzb2x2ZSghIXJlc3VsdC52YWx1ZSgpLmlkZW50aWZpZXIpOwotICAgICAg
ICAgICAgfQotICAgICAgICB9KTsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCisg
ICAgICAgICAgICBwcm9taXNlLnJlamVjdChET01DYWNoZUVuZ2luZTo6Y29udmVydFRvRXhjZXB0
aW9uQW5kTG9nKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgcmVzdWx0LmVycm9yKCkpKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlKCkuaGFkU3RvcmFnZUVy
cm9yKQorICAgICAgICAgICAgICAgIGxvZ0NvbnNvbGVQZXJzaXN0ZW5jeUVycm9yKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgbmFtZSk7CisgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoISFy
ZXN1bHQudmFsdWUoKS5pZGVudGlmaWVyKTsKKyAgICAgICAgfQogICAgIH0pOwogfQogCiB2b2lk
IERPTUNhY2hlU3RvcmFnZTo6a2V5cyhLZXlzUHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgcmV0
cmlldmVDYWNoZXMoW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShPcHRpb25hbDxF
eGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKLSAgICAgICAgZW5xdWV1ZVRhc2soW3Ro
aXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSBXVEZNb3ZlKGV4Y2Vw
dGlvbildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAg
ICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRpb24udmFsdWUoKSkpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgaWYgKGV4Y2VwdGlv
bikgeworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRpb24udmFsdWUo
KSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAgICAgIHByb21p
c2UucmVzb2x2ZShXVEY6Om1hcChtX2NhY2hlcywgW10gKGNvbnN0IGF1dG8mIGNhY2hlKSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGNhY2hlLT5uYW1lKCk7Ci0gICAgICAgICAgICB9KSk7Ci0g
ICAgICAgIH0pOworICAgICAgICBwcm9taXNlLnJlc29sdmUoV1RGOjptYXAobV9jYWNoZXMsIFtd
IChjb25zdCBhdXRvJiBjYWNoZSkgeworICAgICAgICAgICAgcmV0dXJuIGNhY2hlLT5uYW1lKCk7
CisgICAgICAgIH0pKTsKICAgICB9KTsKIH0KIApAQCAtMjg3LDE0ICsyNjMsNCBAQCBjb25zdCBj
aGFyKiBET01DYWNoZVN0b3JhZ2U6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogICAgIHJl
dHVybiAiQ2FjaGVTdG9yYWdlIjsKIH0KIAotdm9pZCBET01DYWNoZVN0b3JhZ2U6OmVucXVldWVU
YXNrKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQotewotICAgIGF1dG8qIGNvbnRleHQgPSBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm47
Ci0gICAgY29udGV4dC0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlw
dWxhdGlvbiwgKmNvbnRleHQsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBlbmRp
bmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0YXNrID0gV1RGTW92ZSh0
YXNrKV0gewotICAgICAgICB0YXNrKCk7Ci0gICAgfSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVT
dG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5o
CmluZGV4IDAxMDUzOWY0YjU3Li42ODZmMGEyYmYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5oCkBAIC01OSw4ICs1OSw2IEBAIHByaXZhdGU6
CiAgICAgUmVmPERPTUNhY2hlPiBmaW5kQ2FjaGVPckNyZWF0ZShET01DYWNoZUVuZ2luZTo6Q2Fj
aGVJbmZvJiYpOwogICAgIE9wdGlvbmFsPENsaWVudE9yaWdpbj4gb3JpZ2luKCkgY29uc3Q7CiAK
LSAgICB2b2lkIGVucXVldWVUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJik7Ci0KICAgICBWZWN0b3I8
UmVmPERPTUNhY2hlPj4gbV9jYWNoZXM7CiAgICAgdWludDY0X3QgbV91cGRhdGVDb3VudGVyIHsg
MCB9OwogICAgIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCmluZGV4IDAw
MGQ3OWVkNjhmLi4yNWVjYmU5YTM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTM5LDE3ICszOSw2IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotdm9pZCBGZXRjaEJvZHlPd25lcjo6cnVuTmV0d29ya1Rhc2tXaGVuUG9zc2li
bGUoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCi17Ci0gICAgYXV0byogY29udGV4dCA9IHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoIWNvbnRleHQgfHwgIXNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpKQotICAgICAgICByZXR1
cm4gdGFzaygpOwotCi0gICAgY29udGV4dC0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3Vy
Y2U6Ok5ldHdvcmtpbmcsICpjb250ZXh0LCBbcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdB
Y3Rpdml0eSgqdGhpcyksIHRhc2sgPSBXVEZNb3ZlKHRhc2spXSB7Ci0gICAgICAgIHRhc2soKTsK
LSAgICB9KTsKLX0KLQogRmV0Y2hCb2R5T3duZXI6OkZldGNoQm9keU93bmVyKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIE9wdGlvbmFsPEZldGNoQm9keT4mJiBib2R5LCBSZWY8RmV0
Y2hIZWFkZXJzPiYmIGhlYWRlcnMpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAg
ICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKQEAgLTI4MSwzMSArMjcwLDI3IEBAIHZvaWQgRmV0
Y2hCb2R5T3duZXI6OmZpbmlzaEJsb2JMb2FkaW5nKCkKIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJs
b2JMb2FkaW5nU3VjY2VlZGVkKCkKIHsKICAgICBBU1NFUlQoIWlzQm9keU51bGwoKSk7Ci0gICAg
cnVuTmV0d29ya1Rhc2tXaGVuUG9zc2libGUoW3RoaXNdKCkgbXV0YWJsZSB7CiAjaWYgRU5BQkxF
KFNUUkVBTVNfQVBJKQotICAgICAgICBpZiAobV9yZWFkYWJsZVN0cmVhbVNvdXJjZSkgewotICAg
ICAgICAgICAgbV9yZWFkYWJsZVN0cmVhbVNvdXJjZS0+Y2xvc2UoKTsKLSAgICAgICAgICAgIG1f
cmVhZGFibGVTdHJlYW1Tb3VyY2UgPSBudWxscHRyOwotICAgICAgICB9CisgICAgaWYgKG1fcmVh
ZGFibGVTdHJlYW1Tb3VyY2UpIHsKKyAgICAgICAgbV9yZWFkYWJsZVN0cmVhbVNvdXJjZS0+Y2xv
c2UoKTsKKyAgICAgICAgbV9yZWFkYWJsZVN0cmVhbVNvdXJjZSA9IG51bGxwdHI7CisgICAgfQog
I2VuZGlmCi0gICAgICAgIG1fYm9keS0+bG9hZGluZ1N1Y2NlZWRlZCgpOwotICAgIH0pOworICAg
IG1fYm9keS0+bG9hZGluZ1N1Y2NlZWRlZCgpOwogICAgIGZpbmlzaEJsb2JMb2FkaW5nKCk7CiB9
CiAKIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2JMb2FkaW5nRmFpbGVkKCkKIHsKICAgICBBU1NF
UlQoIWlzQm9keU51bGwoKSk7Ci0gICAgcnVuTmV0d29ya1Rhc2tXaGVuUG9zc2libGUoW3RoaXNd
KCkgbXV0YWJsZSB7CiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQotICAgICAgICBpZiAobV9yZWFk
YWJsZVN0cmVhbVNvdXJjZSkgewotICAgICAgICAgICAgaWYgKCFtX3JlYWRhYmxlU3RyZWFtU291
cmNlLT5pc0NhbmNlbGxpbmcoKSkKLSAgICAgICAgICAgICAgICBtX3JlYWRhYmxlU3RyZWFtU291
cmNlLT5lcnJvcihFeGNlcHRpb24geyBUeXBlRXJyb3IsICJCbG9iIGxvYWRpbmcgZmFpbGVkIl9z
fSk7Ci0gICAgICAgICAgICBtX3JlYWRhYmxlU3RyZWFtU291cmNlID0gbnVsbHB0cjsKLSAgICAg
ICAgfSBlbHNlCisgICAgaWYgKG1fcmVhZGFibGVTdHJlYW1Tb3VyY2UpIHsKKyAgICAgICAgaWYg
KCFtX3JlYWRhYmxlU3RyZWFtU291cmNlLT5pc0NhbmNlbGxpbmcoKSkKKyAgICAgICAgICAgIG1f
cmVhZGFibGVTdHJlYW1Tb3VyY2UtPmVycm9yKEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIkJsb2Ig
bG9hZGluZyBmYWlsZWQiX3N9KTsKKyAgICAgICAgbV9yZWFkYWJsZVN0cmVhbVNvdXJjZSA9IG51
bGxwdHI7CisgICAgfSBlbHNlCiAjZW5kaWYKLSAgICAgICAgICAgIG1fYm9keS0+bG9hZGluZ0Zh
aWxlZChFeGNlcHRpb24geyBUeXBlRXJyb3IsICJCbG9iIGxvYWRpbmcgZmFpbGVkIl9zfSk7Ci0g
ICAgfSk7CisgICAgICAgIG1fYm9keS0+bG9hZGluZ0ZhaWxlZChFeGNlcHRpb24geyBUeXBlRXJy
b3IsICJCbG9iIGxvYWRpbmcgZmFpbGVkIl9zfSk7CiAgICAgZmluaXNoQmxvYkxvYWRpbmcoKTsK
IH0KIApAQCAtMzE0LDEwICsyOTksOCBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpibG9iQ2h1bmso
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgQVNTRVJUKGRhdGEpOwogI2lmIEVO
QUJMRShTVFJFQU1TX0FQSSkKICAgICBBU1NFUlQobV9yZWFkYWJsZVN0cmVhbVNvdXJjZSk7Ci0g
ICAgcnVuTmV0d29ya1Rhc2tXaGVuUG9zc2libGUoW3RoaXMsIGFycmF5QnVmZmVyID0gQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFt
X3JlYWRhYmxlU3RyZWFtU291cmNlLT5lbnF1ZXVlKFdURk1vdmUoYXJyYXlCdWZmZXIpKSkKLSAg
ICAgICAgICAgIHN0b3AoKTsKLSAgICB9KTsKKyAgICBpZiAoIW1fcmVhZGFibGVTdHJlYW1Tb3Vy
Y2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKSkpCisgICAgICAg
IHN0b3AoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwogICAgIFVOVVNFRF9QQVJB
TShzaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5T3duZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIu
aAppbmRleCAzYjM4OWE4MmRkMi4uZGQyMWU1NTY2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKQEAgLTEyNSw4ICsxMjUsNiBAQCBwcm90ZWN0
ZWQ6CiAgICAgUmVmPEZldGNoSGVhZGVycz4gbV9oZWFkZXJzOwogCiBwcml2YXRlOgotICAgIHZv
aWQgcnVuTmV0d29ya1Rhc2tXaGVuUG9zc2libGUoRnVuY3Rpb248dm9pZCgpPiYmKTsKLQogICAg
IE9wdGlvbmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKICAgICBib29sIG1faXNCb2R5T3Bh
cXVlIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKaW5kZXggMjA5ZDlhZjFiYjMuLjBlMDM4ZjMx
NTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTIzMCw1MyArMjMwLDQ4IEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBpc01lZGlhU3RyZWFtQ29ycmVjdGx5U3RhcnRlZChjb25zdCBNZWRpYVN0cmVhbSYgc3Ry
ZWFtKQogdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjphbGxvdyhDYXB0dXJlRGV2aWNlJiYgYXVkaW9E
ZXZpY2UsIENhcHR1cmVEZXZpY2UmJiB2aWRlb0RldmljZSwgU3RyaW5nJiYgZGV2aWNlSWRlbnRp
Zmllckhhc2hTYWx0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgUkVMRUFTRV9MT0coTWVkaWFTdHJlYW0sICJVc2VyTWVkaWFSZXF1ZXN0Ojph
bGxvdyAlcyAlcyIsIGF1ZGlvRGV2aWNlID8gYXVkaW9EZXZpY2UucGVyc2lzdGVudElkKCkudXRm
OCgpLmRhdGEoKSA6ICIiLCB2aWRlb0RldmljZSA/IHZpZGVvRGV2aWNlLnBlcnNpc3RlbnRJZCgp
LnV0ZjgoKS5kYXRhKCkgOiAiIik7Ci0gICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVu
dCgpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cigpOwotCi0gICAgZG9jdW1lbnQtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpV
c2VySW50ZXJhY3Rpb24sICpkb2N1bWVudCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgYXVkaW9EZXZpY2UgPSBXVEZNb3ZlKGF1ZGlvRGV2aWNlKSwgdmlkZW9EZXZpY2Ug
PSBXVEZNb3ZlKHZpZGVvRGV2aWNlKSwgZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0ID0gV1RGTW92
ZShkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0g
W3RoaXMsIHByb3RlY3RvciA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShSZWZQdHI8TWVkaWFTdHJlYW1Q
cml2YXRlPiYmIHByaXZhdGVTdHJlYW0pIG11dGFibGUgewotICAgICAgICAgICAgYXV0byBzY29w
ZUV4aXQgPSBtYWtlU2NvcGVFeGl0KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGlmIChpc0NvbnRleHRTdG9wcGVk
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBpZiAoIXByaXZhdGVT
dHJlYW0pIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPRyhNZWRpYVN0cmVhbSwgIlVzZXJN
ZWRpYVJlcXVlc3Q6OmFsbG93IGZhaWxlZCB0byBjcmVhdGUgbWVkaWEgc3RyZWFtISIpOwotICAg
ICAgICAgICAgICAgIGRlbnkoTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OkhhcmR3YXJlRXJyb3Ip
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
YXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk7Ci0gICAgICAgICAgICBwcml2YXRlU3RyZWFtLT5tb25pdG9yT3JpZW50YXRpb24oZG9j
dW1lbnQub3JpZW50YXRpb25Ob3RpZmllcigpKTsKLQotICAgICAgICAgICAgYXV0byBzdHJlYW0g
PSBNZWRpYVN0cmVhbTo6Y3JlYXRlKGRvY3VtZW50LCBwcml2YXRlU3RyZWFtLnJlbGVhc2VOb25O
dWxsKCkpOwotICAgICAgICAgICAgc3RyZWFtLT5zdGFydFByb2R1Y2luZ0RhdGEoKTsKLQotICAg
ICAgICAgICAgaWYgKCFpc01lZGlhU3RyZWFtQ29ycmVjdGx5U3RhcnRlZChzdHJlYW0pKSB7Ci0g
ICAgICAgICAgICAgICAgZGVueShNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6SGFyZHdhcmVFcnJv
cik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBBU1NFUlQoZG9jdW1lbnQuaXNDYXB0dXJpbmcoKSk7Ci0gICAgICAgICAgICBzdHJlYW0tPmRv
Y3VtZW50KCktPnNldEhhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrKCk7Ci0gICAgICAgICAgICBt
X3Byb21pc2UtPnJlc29sdmUoV1RGTW92ZShzdHJlYW0pKTsKLSAgICAgICAgfTsKLQotICAgICAg
ICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKLSAgICAgICAgZG9jdW1lbnQuc2V0RGV2aWNlSURIYXNoU2FsdChkZXZpY2VJZGVu
dGlmaWVySGFzaFNhbHQpOwotCi0gICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNp
bmdsZXRvbigpLmNyZWF0ZU1lZGlhU3RyZWFtKGRvY3VtZW50LmxvZ2dlcigpLCBXVEZNb3ZlKGNh
bGxiYWNrKSwgV1RGTW92ZShkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpLCBXVEZNb3ZlKGF1ZGlv
RGV2aWNlKSwgV1RGTW92ZSh2aWRlb0RldmljZSksIG1fcmVxdWVzdCk7Ci0KLSAgICAgICAgaWYg
KCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisKKyAgICBhdXRvIGNhbGxiYWNrID0gW3RoaXMs
IHByb3RlY3RvciA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRl
PiYmIHByaXZhdGVTdHJlYW0pIG11dGFibGUgeworICAgICAgICBhdXRvIHNjb3BlRXhpdCA9IG1h
a2VTY29wZUV4aXQoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAg
ICB9KTsKKyAgICAgICAgaWYgKGlzQ29udGV4dFN0b3BwZWQoKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBpZiAoIXByaXZhdGVTdHJlYW0pIHsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HKE1lZGlhU3RyZWFtLCAiVXNlck1lZGlhUmVxdWVzdDo6YWxsb3cgZmFpbGVkIHRvIGNyZWF0
ZSBtZWRpYSBzdHJlYW0hIik7CisgICAgICAgICAgICBkZW55KE1lZGlhQWNjZXNzRGVuaWFsUmVh
c29uOjpIYXJkd2FyZUVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOworICAgICAgICBwcml2YXRlU3RyZWFtLT5tb25pdG9yT3JpZW50YXRpb24o
ZG9jdW1lbnQub3JpZW50YXRpb25Ob3RpZmllcigpKTsKKworICAgICAgICBhdXRvIHN0cmVhbSA9
IE1lZGlhU3RyZWFtOjpjcmVhdGUoZG9jdW1lbnQsIHByaXZhdGVTdHJlYW0ucmVsZWFzZU5vbk51
bGwoKSk7CisgICAgICAgIHN0cmVhbS0+c3RhcnRQcm9kdWNpbmdEYXRhKCk7CisKKyAgICAgICAg
aWYgKCFpc01lZGlhU3RyZWFtQ29ycmVjdGx5U3RhcnRlZChzdHJlYW0pKSB7CisgICAgICAgICAg
ICBkZW55KE1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpIYXJkd2FyZUVycm9yKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChkb2N1bWVudC5pc0NhcHR1
cmluZygpKTsKKyAgICAgICAgc3RyZWFtLT5kb2N1bWVudCgpLT5zZXRIYXNDYXB0dXJlTWVkaWFT
dHJlYW1UcmFjaygpOworICAgICAgICBtX3Byb21pc2UtPnJlc29sdmUoV1RGTW92ZShzdHJlYW0p
KTsKKyAgICB9OworCisgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgZG9jdW1lbnQuc2V0RGV2aWNlSURIYXNoU2Fs
dChkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpOworCisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcjo6c2luZ2xldG9uKCkuY3JlYXRlTWVkaWFTdHJlYW0oZG9jdW1lbnQubG9nZ2VyKCksIFdU
Rk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCksIFdURk1v
dmUoYXVkaW9EZXZpY2UpLCBXVEZNb3ZlKHZpZGVvRGV2aWNlKSwgbV9yZXF1ZXN0KTsKKworICAg
IGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgICAgICByZXR1cm47CiAKICNpZiBF
TkFCTEUoV0VCX1JUQykKLSAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCkp
Ci0gICAgICAgICAgICBwYWdlLT5ydGNDb250cm9sbGVyKCkuZGlzYWJsZUlDRUNhbmRpZGF0ZUZp
bHRlcmluZ0ZvckRvY3VtZW50KGRvY3VtZW50KTsKKyAgICBpZiAoYXV0byogcGFnZSA9IGRvY3Vt
ZW50LnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+cnRjQ29udHJvbGxlcigpLmRpc2FibGVJQ0VDYW5k
aWRhdGVGaWx0ZXJpbmdGb3JEb2N1bWVudChkb2N1bWVudCk7CiAjZW5kaWYKLSAgICB9KTsKIH0K
IAogdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpkZW55KE1lZGlhQWNjZXNzRGVuaWFsUmVhc29uIHJl
YXNvbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpAQCAtMzI0LDEyICszMTksMTAgQEAgdm9pZCBV
c2VyTWVkaWFSZXF1ZXN0OjpkZW55KE1lZGlhQWNjZXNzRGVuaWFsUmVhc29uIHJlYXNvbiwgY29u
c3QgU3RyaW5nJiBtZXNzYWcKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgZG9jdW1lbnQo
KS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OlVzZXJJbnRlcmFjdGlvbiwgKmRv
Y3VtZW50KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvZGUsIG1l
c3NhZ2VdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghbWVzc2FnZS5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICBtX3Byb21pc2UtPnJlamVjdChjb2RlLCBtZXNzYWdlKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV9wcm9taXNlLT5yZWplY3QoY29kZSk7Ci0gICAgfSk7CisgICAgaWYgKCFt
ZXNzYWdlLmlzRW1wdHkoKSkKKyAgICAgICAgbV9wcm9taXNlLT5yZWplY3QoY29kZSwgbWVzc2Fn
ZSk7CisgICAgZWxzZQorICAgICAgICBtX3Byb21pc2UtPnJlamVjdChjb2RlKTsKIH0KIAogdm9p
ZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdG9wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkOTA2MWIyZGRhNS4uZDA5N2YxOGZiODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEyNTAsNiArMTI1MCw3IEBACiAJCTQ2RUYxNDJDMUY5N0I3RDgwMEMyQTUyNCAvKiBT
ZXJ2aWNlV29ya2VyQ2xpZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZFRjE0MjIxRjk3QjdCQTAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGll
bnRzLmggKi87IH07CiAJCTQ2RUYxNDJEMUY5N0I3RDgwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2Vy
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkVGMTQyNDFGOTdCN0JBMDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudC5oICovOyB9Owog
CQk0NkVGQUYxMjFFNUZCOUYxMDBFN0YzNEIgLyogTG93UG93ZXJNb2RlTm90aWZpZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUZBRjEwMUU1RkI5
RTEwMEU3RjM0QiAvKiBMb3dQb3dlck1vZGVOb3RpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2RjAyQTFBMjM3MzdGODMwMDEwNkE2NCAv
KiBBYnN0cmFjdEV2ZW50TG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEFic3RyYWN0RXZlbnRMb29w
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZG
Q0I2MTgxQTcwODIwRTAwQzVBMjFFIC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzN0IzNzUxNUMxQTdFMTAw
NkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ5MDcwN0U3MTIxOUMwNDMwMEQ5MEU1MSAvKiBB
TkdMRVdlYktpdEJyaWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDkwNzA3RTUxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDkyOTFF
NEIxMzQxNzJDODAwRTc1M0RFIC8qIEltYWdlUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDkyOTFFNEExMzQxNzJDODAwRTc1M0RF
IC8qIEltYWdlUmVuZGVyaW5nTW9kZS5oICovOyB9OwpAQCAtMzEwMzcsNiArMzEwMzgsNyBAQAog
CQkJCTFBNzYyQzc0MEEwNzRGMjYwMDk4OUY1QiAvKiBKU1hQYXRoRXZhbHVhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTc2MkM3NjBBMDc0RjI2MDA5ODlGNUIgLyogSlNYUGF0aEV4cHJlc3Np
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNzYyQzc4MEEwNzRGMjYwMDk4OUY1QiAvKiBKU1hQ
YXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZGMDJBMUEyMzczN0Y4MzAwMTA2
QTY0IC8qIEFic3RyYWN0RXZlbnRMb29wLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTc2MkM3QTBB
MDc0RjI2MDA5ODlGNUIgLyogSlNYUGF0aFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNF
RkUxRUIwRENBNUY2NDAwNzM5MjE5IC8qIEpTWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODNCNzRFRjYxRjNFMEJGMjAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2Vy
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lE
TFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCmluZGV4IDc1MGVh
OGRmYzZkLi4zMDViY2Y1MTQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
SURMVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCkBAIC00
Myw3ICs0Myw2IEBAIGNsYXNzIEFycmF5QnVmZmVyVmlldzsKIGNsYXNzIERhdGFWaWV3OwogY2xh
c3MgSlNWYWx1ZTsKIGNsYXNzIEpTT2JqZWN0OwotdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0
cm9uZzsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HdWFyZGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUd1YXJkZWRPYmplY3QuaAppbmRleCA2M2MxNzcyZjRhYi4uYTA0YjgzZjkw
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR3VhcmRlZE9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR3VhcmRlZE9iamVj
dC5oCkBAIC01MSw3ICs1MSw3IEBAIHByb3RlY3RlZDoKICAgICBET01HdWFyZGVkT2JqZWN0KEpT
RE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpKU0NlbGwmKTsKIAogICAgIHZvaWQgY29udGV4dERlc3Ry
b3llZCgpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuICFtX2d1YXJkZWQ7
IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9ndWFyZGVkOyB9CiAKICAg
ICBKU0M6OldlYWs8SlNDOjpKU0NlbGw+IG1fZ3VhcmRlZDsKICAgICBKU0M6OldlYWs8SlNET01H
bG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwCmluZGV4IDU1MGJjYzNhNjAzLi4xMTY2
MWU5NTA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9t
aXNlRGVmZXJyZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJv
bWlzZURlZmVycmVkLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0V4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT05PYmplY3QuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5oPgorI2luY2x1
ZGUgPEphdmFzQ3JpcHRDb3JlL1N0cm9uZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwpAQCAtNDUsOSArNDYsMTggQEAgSlNDOjpKU1ZhbHVlIERlZmVycmVk
UHJvbWlzZTo6cHJvbWlzZSgpIGNvbnN0CiAKIHZvaWQgRGVmZXJyZWRQcm9taXNlOjpjYWxsRnVu
Y3Rpb24oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIFJlc29sdmVNb2RlIG1v
ZGUsIEpTVmFsdWUgcmVzb2x1dGlvbikKIHsKLSAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkp
CisgICAgaWYgKCFjYW5SdW5TY3JpcHQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKGFj
dGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSkgeworICAgICAgICBKU0M6OlN0cm9uZzxKU0M6
OlVua25vd24sIFNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jazo6WWVzPiBzdHJvbmdSZXNv
bHV0aW9uKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgcmVzb2x1dGlvbik7CisgICAgICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6
Ok5ldHdvcmtpbmcsICpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIG1vZGUsIHN0cm9uZ1Jlc29sdXRpb24gPSBXVEZNb3ZlKHN0
cm9uZ1Jlc29sdXRpb24pXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGNhblJ1blNjcmlw
dCgpKQorICAgICAgICAgICAgICAgIGNhbGxGdW5jdGlvbigqZ2xvYmFsT2JqZWN0KCksIG1vZGUs
IHN0cm9uZ1Jlc29sdXRpb24uZ2V0KCkpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKwogICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBoYXZlIGVycm9yIHNpbmNlIGFueSBKUyBj
YWxsIGNhbiB0aHJvdyBzdGFjay1vdmVyZmxvdyBlcnJvcnMuCiAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzQwMgogICAgIHN3aXRjaCAobW9kZSkgewpA
QCAtNjUsNyArNzUsMTAgQEAgdm9pZCBEZWZlcnJlZFByb21pc2U6OmNhbGxGdW5jdGlvbihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVzb2x2ZU0KIAogdm9pZCBEZWZlcnJl
ZFByb21pc2U6OndoZW5TZXR0bGVkKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKLSAg
ICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICBpZiAoIWNhblJ1blNjcmlwdCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBET01Qcm9taXNlOjp3aGVuUHJvbWlzZUlzU2V0dGxlZChnbG9iYWxP
YmplY3QoKSwgZGVmZXJyZWQoKSwgV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtNzMsNyArODYsNyBA
QCB2b2lkIERlZmVycmVkUHJvbWlzZTo6d2hlblNldHRsZWQoRnVuY3Rpb248dm9pZCgpPiYmIGNh
bGxiYWNrKQogCiB2b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0KCkKIHsKLSAgICBpZiAoaXNT
dXNwZW5kZWQoKSkKKyAgICBpZiAoIWNhblJ1blNjcmlwdCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CkBAIC04NSw3ICs5OCw3IEBAIHZvaWQgRGVmZXJyZWRQ
cm9taXNlOjpyZWplY3QoKQogCiB2b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0KHN0ZDo6bnVs
bHB0cl90KQogewotICAgIGlmIChpc1N1c3BlbmRlZCgpKQorICAgIGlmICghY2FuUnVuU2NyaXB0
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKQEAgLTk3LDcg
KzExMCw3IEBAIHZvaWQgRGVmZXJyZWRQcm9taXNlOjpyZWplY3Qoc3RkOjpudWxscHRyX3QpCiAK
IHZvaWQgRGVmZXJyZWRQcm9taXNlOjpyZWplY3QoRXhjZXB0aW9uIGV4Y2VwdGlvbikKIHsKLSAg
ICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICBpZiAoIWNhblJ1blNjcmlwdCgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CkBAIC0xMjksNyArMTQyLDcgQEAgdm9p
ZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChFeGNlcHRpb24gZXhjZXB0aW9uKQogCiB2b2lkIERl
ZmVycmVkUHJvbWlzZTo6cmVqZWN0KEV4Y2VwdGlvbkNvZGUgZWMsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKIHsKLSAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICBpZiAoIWNhblJ1blNjcmlwdCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CkBAIC0xNjIsNyAr
MTc1LDcgQEAgdm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChFeGNlcHRpb25Db2RlIGVjLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAKIHZvaWQgRGVmZXJyZWRQcm9taXNlOjpyZWplY3QoY29u
c3QgSlNDOjpQcml2YXRlTmFtZSYgcHJpdmF0ZU5hbWUpCiB7Ci0gICAgaWYgKGlzU3VzcGVuZGVk
KCkpCisgICAgaWYgKCFjYW5SdW5TY3JpcHQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNT
RVJUKGRlZmVycmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Qcm9taXNlRGVmZXJyZWQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
UHJvbWlzZURlZmVycmVkLmgKaW5kZXggZjBhMWU3ZTIwNGMuLjA2ZTExOGJkZjZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmgKQEAg
LTI1LDkgKzI1LDExIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQWJzdHJhY3RFdmVu
dExvb3AuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVy
dC5oIgogI2luY2x1ZGUgIkpTRE9NR3VhcmRlZE9iamVjdC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9DYXRjaFNjb3BlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNQcm9taXNlLmg+CiAKQEAgLTU4LDggKzYwLDkg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIElETFR5cGU+CiAgICAgdm9pZCByZXNvbHZl
KHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGUgdmFsdWUpCiAgICAgewotICAgICAgICBp
ZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgaWYgKCFjYW5SdW5TY3JpcHQoKSkKICAgICAgICAg
ICAgIHJldHVybjsKKwogICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CiAgICAgICAgIEFTU0VS
VChnbG9iYWxPYmplY3QoKSk7CiAgICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3QoKTsKQEAgLTY5LDggKzcyLDkgQEAgcHVibGljOgog
CiAgICAgdm9pZCByZXNvbHZlKCkKICAgICB7Ci0gICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQor
ICAgICAgICBpZiAoIWNhblJ1blNjcmlwdCgpKQogICAgICAgICAgICAgcmV0dXJuOworCiAgICAg
ICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKICAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsK
ICAgICAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGdsb2Jh
bE9iamVjdCgpOwpAQCAtODEsOCArODUsOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3Mg
SURMVHlwZT4KICAgICB2b2lkIHJlc29sdmVXaXRoTmV3bHlDcmVhdGVkKHR5cGVuYW1lIElETFR5
cGU6OlBhcmFtZXRlclR5cGUgdmFsdWUpCiAgICAgewotICAgICAgICBpZiAoaXNTdXNwZW5kZWQo
KSkKKyAgICAgICAgaWYgKCFjYW5SdW5TY3JpcHQoKSkKICAgICAgICAgICAgIHJldHVybjsKKwog
ICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CiAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3Qo
KSk7CiAgICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBn
bG9iYWxPYmplY3QoKTsKQEAgLTkzLDggKzk4LDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNs
YXNzIElETFR5cGU+CiAgICAgdm9pZCByZXNvbHZlQ2FsbGJhY2tWYWx1ZVdpdGhOZXdseUNyZWF0
ZWQoY29uc3QgRnVuY3Rpb248dHlwZW5hbWUgSURMVHlwZTo6SW5uZXJQYXJhbWV0ZXJUeXBlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mIGNyZWF0ZVZhbHVlKQogICAgIHsKLSAgICAgICAgaWYg
KGlzU3VzcGVuZGVkKCkpCisgICAgICAgIGlmICghY2FuUnVuU2NyaXB0KCkpCiAgICAgICAgICAg
ICByZXR1cm47CisKICAgICAgICAgQVNTRVJUKGRlZmVycmVkKCkpOwogICAgICAgICBBU1NFUlQo
Z2xvYmFsT2JqZWN0KCkpOwogICAgICAgICBhdXRvKiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZ2xv
YmFsT2JqZWN0KCk7CkBAIC0xMDUsOCArMTExLDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNs
YXNzIElETFR5cGU+CiAgICAgdm9pZCByZWplY3QodHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVy
VHlwZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQorICAgICAgICBp
ZiAoIWNhblJ1blNjcmlwdCgpKQogICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIEFTU0VS
VChkZWZlcnJlZCgpKTsKICAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKICAgICAgICAg
SlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdCgp
OwpAQCAtMTIzLDggKzEzMCw5IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxs
YmFjaz4KICAgICB2b2lkIHJlc29sdmVXaXRoQ2FsbGJhY2soQ2FsbGJhY2sgY2FsbGJhY2spCiAg
ICAgewotICAgICAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgaWYgKCFjYW5SdW5TY3Jp
cHQoKSkKICAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7
CiAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QoKSk7CiAgICAgICAgIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3QoKTsKQEAgLTEzNSw4ICsx
NDMsOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2s+CiAgICAgdm9p
ZCByZWplY3RXaXRoQ2FsbGJhY2soQ2FsbGJhY2sgY2FsbGJhY2spCiAgICAgewotICAgICAgICBp
ZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgaWYgKCFjYW5SdW5TY3JpcHQoKSkKICAgICAgICAg
ICAgIHJldHVybjsKKwogICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CiAgICAgICAgIEFTU0VS
VChnbG9iYWxPYmplY3QoKSk7CiAgICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3QoKTsKQEAgLTE1NSw2ICsxNjQsOCBAQCBwcml2YXRl
OgogICAgIHsKICAgICB9CiAKKyAgICBib29sIGNhblJ1blNjcmlwdCgpIGNvbnN0IHsgcmV0dXJu
ICFpc0VtcHR5KCkgJiYgIWFjdGl2ZURPTU9iamVjdEFyZVN0b3BwZWQoKTsgfQorCiAgICAgSlND
OjpKU1Byb21pc2UqIGRlZmVycmVkKCkgY29uc3QgeyByZXR1cm4gZ3VhcmRlZCgpOyB9CiAKICAg
ICBlbnVtIGNsYXNzIFJlc29sdmVNb2RlIHsgUmVzb2x2ZSwgUmVqZWN0IH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGYWNlU2V0LmNwcAppbmRleCA0M2NiYTg5OTA0ZC4uMjdmZjE3NTc5NmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0ZvbnRGYWNlU2V0LmNwcApAQCAtMTk5LDIyICsxOTksMTQgQEAgdm9pZCBGb250RmFj
ZVNldDo6c3RhcnRlZExvYWRpbmcoKQogdm9pZCBGb250RmFjZVNldDo6ZGlkRmlyc3RMYXlvdXQo
KQogewogICAgIG1faXNGaXJzdExheW91dERvbmUgPSB0cnVlOwotICAgIGlmICghbV9iYWNraW5n
LT5oYXNBY3RpdmVGb250RmFjZXMoKSAmJiAhbV9yZWFkeVByb21pc2UtPmlzRnVsZmlsbGVkKCkp
IHsKLSAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNl
OjpGb250TG9hZGluZywgW3RoaXNdIHsKLSAgICAgICAgICAgIGlmICghbV9yZWFkeVByb21pc2Ut
PmlzRnVsZmlsbGVkKCkpCi0gICAgICAgICAgICAgICAgbV9yZWFkeVByb21pc2UtPnJlc29sdmUo
KnRoaXMpOwotICAgICAgICB9KTsKLSAgICB9CisgICAgaWYgKCFtX2JhY2tpbmctPmhhc0FjdGl2
ZUZvbnRGYWNlcygpICYmICFtX3JlYWR5UHJvbWlzZS0+aXNGdWxmaWxsZWQoKSkKKyAgICAgICAg
bV9yZWFkeVByb21pc2UtPnJlc29sdmUoKnRoaXMpOwogfQogCiB2b2lkIEZvbnRGYWNlU2V0Ojpj
b21wbGV0ZWRMb2FkaW5nKCkKIHsKLSAgICBpZiAobV9pc0ZpcnN0TGF5b3V0RG9uZSAmJiAhbV9y
ZWFkeVByb21pc2UtPmlzRnVsZmlsbGVkKCkpIHsKLSAgICAgICAgcXVldWVUYXNrS2VlcGluZ09i
amVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpGb250TG9hZGluZywgW3RoaXNdIHsKLSAgICAg
ICAgICAgIGlmICghbV9yZWFkeVByb21pc2UtPmlzRnVsZmlsbGVkKCkpCi0gICAgICAgICAgICAg
ICAgbV9yZWFkeVByb21pc2UtPnJlc29sdmUoKnRoaXMpOwotICAgICAgICB9KTsKLSAgICB9Cisg
ICAgaWYgKG1faXNGaXJzdExheW91dERvbmUgJiYgIW1fcmVhZHlQcm9taXNlLT5pc0Z1bGZpbGxl
ZCgpKQorICAgICAgICBtX3JlYWR5UHJvbWlzZS0+cmVzb2x2ZSgqdGhpcyk7CiB9CiAKIHZvaWQg
Rm9udEZhY2VTZXQ6OmZhY2VGaW5pc2hlZChDU1NGb250RmFjZSYgZmFjZSwgQ1NTRm9udEZhY2U6
OlN0YXR1cyBuZXdTdGF0dXMpCkBAIC0yMjYsMjIgKzIxOCwyMCBAQCB2b2lkIEZvbnRGYWNlU2V0
OjpmYWNlRmluaXNoZWQoQ1NTRm9udEZhY2UmIGZhY2UsIENTU0ZvbnRGYWNlOjpTdGF0dXMgbmV3
U3RhdHVzKQogICAgIGlmIChwZW5kaW5nUHJvbWlzZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6
OkZvbnRMb2FkaW5nLCBbcGVuZGluZ1Byb21pc2VzID0gV1RGTW92ZShwZW5kaW5nUHJvbWlzZXMp
LCBuZXdTdGF0dXNdIHsKLSAgICAgICAgZm9yIChhdXRvJiBwZW5kaW5nUHJvbWlzZSA6IHBlbmRp
bmdQcm9taXNlcykgewotICAgICAgICAgICAgaWYgKHBlbmRpbmdQcm9taXNlLT5oYXNSZWFjaGVk
VGVybWluYWxTdGF0ZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlm
IChuZXdTdGF0dXMgPT0gQ1NTRm9udEZhY2U6OlN0YXR1czo6U3VjY2VzcykgewotICAgICAgICAg
ICAgICAgIGlmIChwZW5kaW5nUHJvbWlzZS0+aGFzT25lUmVmKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgcGVuZGluZ1Byb21pc2UtPnByb21pc2UtPnJlc29sdmUocGVuZGluZ1Byb21pc2UtPmZh
Y2VzKTsKLSAgICAgICAgICAgICAgICAgICAgcGVuZGluZ1Byb21pc2UtPmhhc1JlYWNoZWRUZXJt
aW5hbFN0YXRlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIEFTU0VSVChuZXdTdGF0dXMgPT0gQ1NTRm9udEZhY2U6OlN0YXR1
czo6RmFpbHVyZSk7Ci0gICAgICAgICAgICAgICAgcGVuZGluZ1Byb21pc2UtPnByb21pc2UtPnJl
amVjdChOZXR3b3JrRXJyb3IpOworICAgIGZvciAoYXV0byYgcGVuZGluZ1Byb21pc2UgOiBwZW5k
aW5nUHJvbWlzZXMpIHsKKyAgICAgICAgaWYgKHBlbmRpbmdQcm9taXNlLT5oYXNSZWFjaGVkVGVy
bWluYWxTdGF0ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAobmV3U3RhdHVz
ID09IENTU0ZvbnRGYWNlOjpTdGF0dXM6OlN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIGlmIChwZW5k
aW5nUHJvbWlzZS0+aGFzT25lUmVmKCkpIHsKKyAgICAgICAgICAgICAgICBwZW5kaW5nUHJvbWlz
ZS0+cHJvbWlzZS0+cmVzb2x2ZShwZW5kaW5nUHJvbWlzZS0+ZmFjZXMpOwogICAgICAgICAgICAg
ICAgIHBlbmRpbmdQcm9taXNlLT5oYXNSZWFjaGVkVGVybWluYWxTdGF0ZSA9IHRydWU7CiAgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQobmV3U3RhdHVz
ID09IENTU0ZvbnRGYWNlOjpTdGF0dXM6OkZhaWx1cmUpOworICAgICAgICAgICAgcGVuZGluZ1By
b21pc2UtPnByb21pc2UtPnJlamVjdChOZXR3b3JrRXJyb3IpOworICAgICAgICAgICAgcGVuZGlu
Z1Byb21pc2UtPmhhc1JlYWNoZWRUZXJtaW5hbFN0YXRlID0gdHJ1ZTsKICAgICAgICAgfQotICAg
IH0pOworICAgIH0KIH0KIAogRm9udEZhY2VTZXQmIEZvbnRGYWNlU2V0OjpyZWFkeVByb21pc2VS
ZXNvbHZlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01DYWxsYmFj
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NQ2FsbGJhY2suY3BwCmluZGV4IGFl
N2E0YTE1MDE0Li4yZjc5MzZhZWYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Fj
dGl2ZURPTUNhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NQ2Fs
bGJhY2suY3BwCkBAIC00OCw0ICs0OCwxNiBAQCBib29sIEFjdGl2ZURPTUNhbGxiYWNrOjpjYW5J
bnZva2VDYWxsYmFjaygpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnRleHQgJiYgIWNvbnRleHQtPmFj
dGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSAmJiAhY29udGV4dC0+YWN0aXZlRE9NT2JqZWN0
c0FyZVN0b3BwZWQoKTsKIH0KIAorYm9vbCBBY3RpdmVET01DYWxsYmFjazo6YWN0aXZlRE9NT2Jq
ZWN0c0FyZVN1c3BlbmRlZCgpIGNvbnN0Cit7CisgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKKyAgICByZXR1cm4gY29udGV4dCAmJiBjb250ZXh0LT5hY3RpdmVE
T01PYmplY3RzQXJlU3VzcGVuZGVkKCk7Cit9CisKK2Jvb2wgQWN0aXZlRE9NQ2FsbGJhY2s6OmFj
dGl2ZURPTU9iamVjdEFyZVN0b3BwZWQoKSBjb25zdAoreworICAgIGF1dG8qIGNvbnRleHQgPSBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgcmV0dXJuICFjb250ZXh0IHx8IGNvbnRleHQt
PmFjdGl2ZURPTU9iamVjdHNBcmVTdG9wcGVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01DYWxsYmFjay5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrLmgKaW5kZXggMmIzNWIxMjBjZDcu
LjdiMTFjZTA3ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NQ2Fs
bGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NQ2FsbGJhY2suaApAQCAt
NTEsNiArNTEsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+QWN0aXZlRE9NQ2FsbGJhY2soKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuSW52b2tlQ2FsbGJhY2soKSBjb25zdDsKKwor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYWN0aXZlRE9NT2JqZWN0QXJlU3RvcHBlZCgp
IGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgdm9pZCB2aXNpdEpTRnVuY3Rpb24oSlNDOjpTbG90
VmlzaXRvciYpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDVlZTA0NmVmNTk3Li4xZDNh
ZDAwM2Q4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
U2hhZG93Um9vdE1vZGUuaCIKICNpbmNsdWRlICJTaW11bGF0ZWRDbGlja09wdGlvbnMuaCIKICNp
bmNsdWRlICJTdHlsZUNoYW5nZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oCmluZGV4IGE2MzM0N2I4Mjc5Li4wZjE3MmExMjlkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC00NCw3ICs0NCw2IEBA
IGNsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEV4Y2VwdGlvbjsKIGNsYXNzIEpTUHJvbWlzZTsKIGNs
YXNzIFZNOwotdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0cm9uZzsKIH0KIAogbmFtZXNwYWNl
IEluc3BlY3RvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCA1ODcyOTJkZDBmYS4uNGJi
MWM5Zjc2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtMzcsNiArMzcsNyBAQAogI2lu
Y2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9IYW5kbGVUeXBlcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1N0cm9uZy5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTQ1LDcgKzQ2LDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiBjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU09iamVjdDsKIGNsYXNzIEpT
VmFsdWU7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgU3Ryb25nOwogfQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRv
dy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cuaAppbmRleCA0MDUwZGY1
MDlhZC4uNmUwNWMzYjI4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3Rl
RE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cuaApA
QCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQWJzdHJhY3RET01XaW5kb3cuaCIKICNpbmNs
dWRlICJSZW1vdGVGcmFtZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgog
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAK
QEAgLTM1LDcgKzM2LDYgQEAgY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7
CiBjbGFzcyBKU09iamVjdDsKIGNsYXNzIEpTVmFsdWU7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gY2xh
c3MgU3Ryb25nOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383080</attachid>
            <date>2019-11-07 15:11:43 -0800</date>
            <delta_ts>2019-11-07 16:40:27 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>203976_wip.patch</filename>
            <type>text/plain</type>
            <size>45238</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlLmgKaW5kZXggYWJhNjUxMTM0M2EuLjg2NmEwNzY5
ZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaApAQCAtMzcsNiArMzcsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBsaWZldGltZSBpcyBndWFyYW50ZWVkIGJ5IHNvbWV0aGluZyBl
bHNlLgogKi8KIAorZW51bSBjbGFzcyBTaG91bGRTdHJvbmdEZXN0cnVjdG9yR3JhYkxvY2sgOiBi
b29sIHsgTm8sIFllcyB9OworCiB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgSGFuZGxlOwogCiAv
LyBDcmVhdGluZyBhIEpTVmFsdWUgSGFuZGxlIGlzIGludmFsaWQKQEAgLTQ0LDcgKzQ2LDcgQEAg
dGVtcGxhdGUgPD4gY2xhc3MgSGFuZGxlPEpTVmFsdWU+OwogCiBjbGFzcyBIYW5kbGVCYXNlIHsK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gZnJpZW5kIGNsYXNzIFdlYWs7Ci0gICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IGZyaWVuZCBjbGFzcyBTdHJvbmc7CisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQsIFNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jayBzaG91bGRTdHJvbmdEZXN0cnVj
dG9yR3JhYkxvY2s+IGZyaWVuZCBjbGFzcyBTdHJvbmc7CiAgICAgZnJpZW5kIGNsYXNzIEhhbmRs
ZVNldDsKICAgICBmcmllbmQgc3RydWN0IEpTQ2FsbGJhY2tPYmplY3REYXRhOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdHJvbmcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1N0cm9uZy5oCmluZGV4IGJmNGRkMzk0NDQzLi5jMzc0ODFhOTZmMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Ryb25nLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvU3Ryb25nLmgKQEAgLTI4LDE2ICsyOCwxNyBAQAogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSAiSGFuZGxlLmgiCiAjaW5jbHVkZSAiSGFu
ZGxlU2V0LmgiCisjaW5jbHVkZSAiSlNMb2NrLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFz
cyBWTTsKIAogLy8gQSBzdHJvbmdseSByZWZlcmVuY2VkIGhhbmRsZSB0aGF0IHByZXZlbnRzIHRo
ZSBvYmplY3QgaXQgcG9pbnRzIHRvIGZyb20gYmVpbmcgZ2FyYmFnZSBjb2xsZWN0ZWQuCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgU3Ryb25nIDogcHVibGljIEhhbmRsZTxUPiB7Cit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgU2hvdWxkU3Ryb25nRGVzdHJ1Y3RvckdyYWJMb2NrIHNob3VsZFN0
cm9uZ0Rlc3RydWN0b3JHcmFiTG9jayA9IFNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jazo6
Tm8+IGNsYXNzIFN0cm9uZyA6IHB1YmxpYyBIYW5kbGU8VD4gewogICAgIHVzaW5nIEhhbmRsZTxU
Pjo6c2xvdDsKICAgICB1c2luZyBIYW5kbGU8VD46OnNldFNsb3Q7Ci0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFU+IGZyaWVuZCBjbGFzcyBTdHJvbmc7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFUs
IFNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jaz4gZnJpZW5kIGNsYXNzIFN0cm9uZzsKIAog
cHVibGljOgogICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFuZGxlPFQ+OjpFeHRlcm5hbFR5cGUgRXh0
ZXJuYWxUeXBlOwpAQCAtMTIwLDggKzEyMSwxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBp
ZiAoIXNsb3QoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgSGFuZGxlU2V0OjpoZWFw
Rm9yKHNsb3QoKSktPmRlYWxsb2NhdGUoc2xvdCgpKTsKLSAgICAgICAgc2V0U2xvdCgwKTsKKwor
ICAgICAgICBhdXRvKiBoZWFwID0gSGFuZGxlU2V0OjpoZWFwRm9yKHNsb3QoKSk7CisgICAgICAg
IGlmIChzaG91bGRTdHJvbmdEZXN0cnVjdG9yR3JhYkxvY2sgPT0gU2hvdWxkU3Ryb25nRGVzdHJ1
Y3RvckdyYWJMb2NrOjpZZXMpIHsKKyAgICAgICAgICAgIEpTTG9ja0hvbGRlciBob2xkZXIoaGVh
cC0+dm0oKSk7CisgICAgICAgICAgICBoZWFwLT5kZWFsbG9jYXRlKHNsb3QoKSk7CisgICAgICAg
ICAgICBzZXRTbG90KDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaGVhcC0+ZGVh
bGxvY2F0ZShzbG90KCkpOworICAgICAgICAgICAgc2V0U2xvdCgwKTsKKyAgICAgICAgfQogICAg
IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0
cm9uZ0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0cm9uZ0lubGluZXMu
aAppbmRleCAyMDVmYjA0ZmI2OS4uMjg1NWVmODFkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1N0cm9uZ0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9TdHJvbmdJbmxpbmVzLmgKQEAgLTMwLDIyICszMCwyMiBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgU3Ryb25nPFQ+OjpTdHJvbmco
Vk0mIHZtLCBFeHRlcm5hbFR5cGUgdmFsdWUpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgU2hvdWxk
U3Ryb25nRGVzdHJ1Y3RvckdyYWJMb2NrIHNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jaz4K
K2lubGluZSBTdHJvbmc8VCwgc2hvdWxkU3Ryb25nRGVzdHJ1Y3RvckdyYWJMb2NrPjo6U3Ryb25n
KFZNJiB2bSwgRXh0ZXJuYWxUeXBlIHZhbHVlKQogICAgIDogSGFuZGxlPFQ+KHZtLmhlYXAuaGFu
ZGxlU2V0KCktPmFsbG9jYXRlKCkpCiB7CiAgICAgc2V0KHZhbHVlKTsKIH0KIAotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1pbmxpbmUgU3Ryb25nPFQ+OjpTdHJvbmcoVk0mIHZtLCBIYW5kbGU8VD4g
aGFuZGxlKQordGVtcGxhdGUgPHR5cGVuYW1lIFQsIFNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFi
TG9jayBzaG91bGRTdHJvbmdEZXN0cnVjdG9yR3JhYkxvY2s+CitpbmxpbmUgU3Ryb25nPFQsIHNo
b3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jaz46OlN0cm9uZyhWTSYgdm0sIEhhbmRsZTxUPiBo
YW5kbGUpCiAgICAgOiBIYW5kbGU8VD4odm0uaGVhcC5oYW5kbGVTZXQoKS0+YWxsb2NhdGUoKSkK
IHsKICAgICBzZXQoaGFuZGxlLmdldCgpKTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1p
bmxpbmUgdm9pZCBTdHJvbmc8VD46OnNldChWTSYgdm0sIEV4dGVybmFsVHlwZSB2YWx1ZSkKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBULCBTaG91bGRTdHJvbmdEZXN0cnVjdG9yR3JhYkxvY2sgc2hvdWxk
U3Ryb25nRGVzdHJ1Y3RvckdyYWJMb2NrPgoraW5saW5lIHZvaWQgU3Ryb25nPFQsIHNob3VsZFN0
cm9uZ0Rlc3RydWN0b3JHcmFiTG9jaz46OnNldChWTSYgdm0sIEV4dGVybmFsVHlwZSB2YWx1ZSkK
IHsKICAgICBpZiAoIXNsb3QoKSkKICAgICAgICAgc2V0U2xvdCh2bS5oZWFwLmhhbmRsZVNldCgp
LT5hbGxvY2F0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUv
RE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAK
aW5kZXggZTIwNzE5YzNlNGEuLjBkNTU1YTExYTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtNTksNyArNTksNyBAQCBET01DYWNoZTo6fkRPTUNhY2hl
KCkKIHZvaWQgRE9NQ2FjaGU6Om1hdGNoKFJlcXVlc3RJbmZvJiYgaW5mbywgQ2FjaGVRdWVyeU9w
dGlvbnMmJiBvcHRpb25zLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAg
ZG9NYXRjaChXVEZNb3ZlKGluZm8pLCBXVEZNb3ZlKG9wdGlvbnMpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0
aW9uT3I8UmVmUHRyPEZldGNoUmVzcG9uc2U+PiYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAg
IGVucXVldWVUYXNrKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92
ZShyZXN1bHQpXSgpIG11dGFibGUgeworICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxp
dmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgcHJvbWlz
ZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIERPTUNhY2hlOjptYXRjaEFsbChPcHRpb25h
bDxSZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbgogCiAgICAg
aWYgKCFyZXF1ZXN0KSB7CiAgICAgICAgIHJldHJpZXZlUmVjb3JkcyhVUkwgeyB9LCBbdGhpcywg
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRp
b24pIG11dGFibGUgewotICAgICAgICAgICAgZW5xdWV1ZVRhc2soW3RoaXMsIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSBXVEZNb3ZlKGV4Y2VwdGlvbildKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tT
b3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
LCBleGNlcHRpb24gPSBXVEZNb3ZlKGV4Y2VwdGlvbildKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICAgICAgaWYgKGV4Y2VwdGlvbikgewogICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVj
dChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIERPTUNhY2hlOjptYXRjaEFsbChPcHRpb25hbDxS
ZXF1ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbgogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIHF1ZXJ5Q2FjaGUocmVxdWVzdC5yZWxlYXNlTm9uTnVsbCgpLCBX
VEZNb3ZlKG9wdGlvbnMpLCBbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2Vw
dGlvbk9yPFZlY3RvcjxDYWNoZVN0b3JhZ2VSZWNvcmQ+PiYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0g
ICAgICAgIGVucXVldWVUYXNrKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVz
dWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgeworICAgICAgICBxdWV1ZVRhc2tLZWVw
aW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3RoaXMs
IHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAg
ICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjQyLDEzICsyNDIsMTMgQEAgdm9pZCBET01DYWNo
ZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURlZmVycmVk
PHZvaWQ+JiYgcHIKIAogICAgIGF1dG8gdGFza0hhbmRsZXIgPSBGZXRjaFRhc2tzSGFuZGxlcjo6
Y3JlYXRlKCp0aGlzLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8VmVjdG9yPFJlY29yZD4+JiYgcmVz
dWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAg
ICAgICAgICAgZW5xdWV1ZVRhc2soW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRp
b24gPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpXSgpIG11dGFibGUgewotICAgICAgICAgICAg
ICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uKSk7CisgICAgICAgICAgICBxdWV1
ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlv
biwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCld
KCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QocmVzdWx0LnJlbGVh
c2VFeGNlcHRpb24oKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICBiYXRjaFB1dE9wZXJhdGlvbihyZXN1bHQucmVsZWFzZVJldHVyblZh
bHVlKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0KSBtdXRh
YmxlIHsKLSAgICAgICAgICAgIGVucXVldWVUYXNrKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgeworICAgICAgICAgICAgcXVl
dWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRp
b24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQp
XSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVz
dWx0KSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CkBAIC0zMTMsOCArMzEzLDggQEAg
dm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKIHZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNwb25zZURh
dGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVxdWVzdD4m
JiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9uT3I8UmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQogewogICAgIGlmIChyZXNwb25zZUJv
ZHkuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgZW5xdWV1ZVRhc2soW3Byb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSByZXNwb25zZUJvZHkucmVsZWFzZUV4Y2VwdGlvbigp
XSgpIG11dGFibGUgewotICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRp
b24pKTsKKyAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291
cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVzcG9u
c2VCb2R5ID0gV1RGTW92ZShyZXNwb25zZUJvZHkpXSgpIG11dGFibGUgeworICAgICAgICAgICAg
cHJvbWlzZS5yZWplY3QocmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAg
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzIzLDcgKzMyMyw3IEBAIHZvaWQgRE9N
Q2FjaGU6OnB1dFdpdGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJv
bWlzZSwgUmVmPEZldGNoCiAgICAgaWYgKGF1dG8gYnVmZmVyID0gcmVzcG9uc2VCb2R5LnJlbGVh
c2VSZXR1cm5WYWx1ZSgpKQogICAgICAgICBib2R5ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7
CiAgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5nZXQoKSwgcmVzcG9uc2UuZ2V0KCksIFdU
Rk1vdmUoYm9keSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25Pcjx2b2lkPiYmIHJlc3VsdCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGVucXVldWVUYXNrKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVz
dWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgeworICAgICAgICBxdWV1ZVRhc2tLZWVw
aW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOwogICAgICAg
ICB9KTsKICAgICB9KTsKQEAgLTM4OSw3ICszODksNyBAQCB2b2lkIERPTUNhY2hlOjpwdXQoUmVx
dWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRE9NUHJvbWlz
ZQogICAgIH0KIAogICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJlc3BvbnNl
LmdldCgpLCByZXNwb25zZS0+Y29uc3VtZUJvZHkoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPHZv
aWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgZW5xdWV1ZVRhc2soW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7Cisg
ICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9N
TWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1v
dmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1v
dmUocmVzdWx0KSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpAQCAtNDA3LDcgKzQwNyw3IEBAIHZv
aWQgRE9NQ2FjaGU6OnJlbW92ZShSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25z
JiYgb3B0aW9ucywgRE9NUHJvbWlzCiAgICAgfQogCiAgICAgYmF0Y2hEZWxldGVPcGVyYXRpb24o
cmVxdWVzdE9yRXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBXVEZNb3ZlKG9wdGlvbnMp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8Ym9vbD4mJiByZXN1bHQpIG11dGFibGUgewotICAgICAg
ICBlbnF1ZXVlVGFzayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1v
dmUocmVzdWx0KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFs
aXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewogICAgICAg
ICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKICAgICAgICAgfSk7CiAgICAg
fSk7CkBAIC00MzUsNyArNDM1LDcgQEAgdm9pZCBET01DYWNoZTo6a2V5cyhPcHRpb25hbDxSZXF1
ZXN0SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIEsKIAogICAgIGlm
ICghcmVxdWVzdCkgewogICAgICAgICByZXRyaWV2ZVJlY29yZHMoVVJMIHsgfSwgW3RoaXMsIHBy
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShPcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9u
KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGVucXVldWVUYXNrKFt0aGlzLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gV1RGTW92ZShleGNlcHRpb24pXSgpIG11dGFibGUg
eworICAgICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291
cmNlOjpET01NYW5pcHVsYXRpb24sIFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwg
ZXhjZXB0aW9uID0gV1RGTW92ZShleGNlcHRpb24pXSgpIG11dGFibGUgewogICAgICAgICAgICAg
ICAgIGlmIChleGNlcHRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3Qo
V1RGTW92ZShleGNlcHRpb24udmFsdWUoKSkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47
CkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBET01DYWNoZTo6a2V5cyhPcHRpb25hbDxSZXF1ZXN0
SW5mbz4mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIEsKICAgICB9CiAKICAg
ICBxdWVyeUNhY2hlKHJlcXVlc3QucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShvcHRpb25zKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICBlbnF1ZXVlVGFzayhb
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNr
U291cmNlOjpET01NYW5pcHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVz
dWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KHJlc3Vs
dC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTYwNywx
NCArNjA3LDQgQEAgY29uc3QgY2hhciogRE9NQ2FjaGU6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBj
b25zdAogICAgIHJldHVybiAiQ2FjaGUiOwogfQogCi12b2lkIERPTUNhY2hlOjplbnF1ZXVlVGFz
ayhGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKLXsKLSAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNvbnRleHQtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVs
YXRpb24sICpjb250ZXh0LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwZW5kaW5n
QWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGFzayA9IFdURk1vdmUodGFz
ayldIHsKLSAgICAgICAgdGFzaygpOwotICAgIH0pOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKaW5kZXggMDk5MWI5MzBi
MjguLmE2ZWQyMjc2N2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hl
L0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5o
CkBAIC04NCw4ICs4NCw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZjxGZXRjaFJlc3BvbnNl
Pj4gY2xvbmVSZXNwb25zZXMoY29uc3QgVmVjdG9yPENhY2hlU3RvcmFnZVJlY29yZD4mKTsKICAg
ICBET01DYWNoZUVuZ2luZTo6UmVjb3JkIHRvQ29ubmVjdGlvblJlY29yZChjb25zdCBGZXRjaFJl
cXVlc3QmLCBGZXRjaFJlc3BvbnNlJiwgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSYmKTsK
IAotICAgIHZvaWQgZW5xdWV1ZVRhc2soRnVuY3Rpb248dm9pZCgpPiYmKTsKLQogICAgIFN0cmlu
ZyBtX25hbWU7CiAgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOwogICAgIFJlZjxDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAKaW5kZXggNDUwMGM1YTI3NWQuLjYwM2U5M2ZlZWY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2Uu
Y3BwCkBAIC04NywxOCArODcsMTYgQEAgc3RhdGljIGlubGluZSBSZWY8RE9NQ2FjaGU+IGNvcHlD
YWNoZShjb25zdCBSZWY8RE9NQ2FjaGU+JiBjYWNoZSkKIAogdm9pZCBET01DYWNoZVN0b3JhZ2U6
OmRvU2VxdWVudGlhbE1hdGNoKERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVl
cnlPcHRpb25zJiYgb3B0aW9ucywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewot
ICAgIHN0YXJ0U2VxdWVudGlhbE1hdGNoKFdURjo6bWFwKG1fY2FjaGVzLCBjb3B5Q2FjaGUpLCBX
VEZNb3ZlKGluZm8pLCBXVEZNb3ZlKG9wdGlvbnMpLCBbdGhpcywgcGVuZGluZ0FjdGl2aXR5ID0g
bWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShh
dXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgZW5xdWV1ZVRhc2soW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCldKCkgbXV0YWJsZSB7Ci0g
ICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICAgICAg
cHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghcmVzdWx0LnJldHVy
blZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZTxJRExJbnRlcmZhY2U8RmV0Y2hSZXNwb25zZT4+KCpyZXN1bHQucmV0dXJuVmFsdWUoKSk7
Ci0gICAgICAgIH0pOworICAgIHN0YXJ0U2VxdWVudGlhbE1hdGNoKFdURjo6bWFwKG1fY2FjaGVz
LCBjb3B5Q2FjaGUpLCBXVEZNb3ZlKGluZm8pLCBXVEZNb3ZlKG9wdGlvbnMpLCBbcGVuZGluZ0Fj
dGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNF
eGNlcHRpb24oKSkgeworICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNl
RXhjZXB0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlm
ICghcmVzdWx0LnJldHVyblZhbHVlKCkpIHsKKyAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmUo
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBwcm9taXNlLT5yZXNv
bHZlPElETEludGVyZmFjZTxGZXRjaFJlc3BvbnNlPj4oKnJlc3VsdC5yZXR1cm5WYWx1ZSgpKTsK
ICAgICB9KTsKIH0KIApAQCAtMTA2LDkgKzEwNCw3IEBAIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpt
YXRjaChET01DYWNoZTo6UmVxdWVzdEluZm8mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9w
CiB7CiAgICAgcmV0cmlldmVDYWNoZXMoW3RoaXMsIGluZm8gPSBXVEZNb3ZlKGluZm8pLCBvcHRp
b25zID0gV1RGTW92ZShvcHRpb25zKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKE9wdGlv
bmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoZXhjZXB0
aW9uKSB7Ci0gICAgICAgICAgICBlbnF1ZXVlVGFzayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSksIGV4Y2VwdGlvbiA9IFdURk1vdmUoZXhjZXB0aW9uLnZhbHVlKCkpXSgpIG11dGFibGUgewot
ICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbikpOwotICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoV1RGTW92ZSgqZXhjZXB0
aW9uKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTE4LDkgKzExNCw3
IEBAIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjptYXRjaChET01DYWNoZTo6UmVxdWVzdEluZm8mJiBp
bmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wCiAgICAgICAgICAgICAgICAgbV9jYWNoZXNbcG9z
aXRpb25dLT5tYXRjaChXVEZNb3ZlKGluZm8pLCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3ZlKHBy
b21pc2UpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBlbnF1ZXVlVGFzayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwotICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtMTMxLDEzICsxMjUsMTEgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6Om1hdGNo
KERPTUNhY2hlOjpSZXF1ZXN0SW5mbyYmIGluZm8sIENhY2hlUXVlcnlPcHRpb25zJiYgb3AKIHZv
aWQgRE9NQ2FjaGVTdG9yYWdlOjpoYXMoY29uc3QgU3RyaW5nJiBuYW1lLCBET01Qcm9taXNlRGVm
ZXJyZWQ8SURMQm9vbGVhbj4mJiBwcm9taXNlKQogewogICAgIHJldHJpZXZlQ2FjaGVzKFt0aGlz
LCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oT3B0aW9uYWw8RXhjZXB0aW9uPiYm
IGV4Y2VwdGlvbikgbXV0YWJsZSB7Ci0gICAgICAgIGVucXVldWVUYXNrKFt0aGlzLCBuYW1lLCBw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gV1RGTW92ZShleGNlcHRpb24p
XSgpIG11dGFibGUgewotICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAg
ICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uLnZhbHVlKCkpKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwcm9taXNlLnJlc29s
dmUobV9jYWNoZXMuZmluZE1hdGNoaW5nKFsmXShhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLT5u
YW1lKCkgPT0gbmFtZTsgfSkgIT0gbm90Rm91bmQpOwotICAgICAgICB9KTsKKyAgICAgICAgaWYg
KGV4Y2VwdGlvbikgeworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRp
b24udmFsdWUoKSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHBy
b21pc2UucmVzb2x2ZShtX2NhY2hlcy5maW5kTWF0Y2hpbmcoWyZdKGF1dG8mIGl0ZW0pIHsgcmV0
dXJuIGl0ZW0tPm5hbWUoKSA9PSBuYW1lOyB9KSAhPSBub3RGb3VuZCk7CiAgICAgfSk7CiB9CiAK
QEAgLTE4OCw5ICsxODAsNyBAQCB2b2lkIERPTUNhY2hlU3RvcmFnZTo6b3Blbihjb25zdCBTdHJp
bmcmIG5hbWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExJbnRlcmZhY2U8RAogewogICAgIHJldHJp
ZXZlQ2FjaGVzKFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oT3B0aW9u
YWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChleGNlcHRp
b24pIHsKLSAgICAgICAgICAgIGVucXVldWVUYXNrKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgZXhjZXB0aW9uID0gV1RGTW92ZShleGNlcHRpb24udmFsdWUoKSldKCkgbXV0YWJsZSB7Ci0g
ICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRpb24pKTsKLSAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZSgqZXhjZXB0aW9u
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgZG9PcGVuKG5hbWUs
IFdURk1vdmUocHJvbWlzZSkpOwpAQCAtMjAxLDI2ICsxOTEsMjAgQEAgdm9pZCBET01DYWNoZVN0
b3JhZ2U6OmRvT3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExJ
bnRlcmZhY2UKIHsKICAgICBhdXRvIHBvc2l0aW9uID0gbV9jYWNoZXMuZmluZE1hdGNoaW5nKFsm
XShhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLT5uYW1lKCkgPT0gbmFtZTsgfSk7CiAgICAgaWYg
KHBvc2l0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIGVucXVldWVUYXNrKFt0aGlzLCBwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKSwgY2FjaGUgPSBtX2NhY2hlc1twb3NpdGlvbl0uY29weVJl
ZigpXSgpIG11dGFibGUgewotICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKERPTUNhY2hlOjpj
cmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgU3RyaW5nIHsgY2FjaGUtPm5hbWUoKSB9
LCBjYWNoZS0+aWRlbnRpZmllcigpLCBtX2Nvbm5lY3Rpb24uY29weVJlZigpKSk7Ci0gICAgICAg
IH0pOworICAgICAgICBwcm9taXNlLnJlc29sdmUoRE9NQ2FjaGU6OmNyZWF0ZSgqc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBTdHJpbmcgeyBtX2NhY2hlc1twb3NpdGlvbl0tPm5hbWUoKSB9LCBt
X2NhY2hlc1twb3NpdGlvbl0tPmlkZW50aWZpZXIoKSwgbV9jb25uZWN0aW9uLmNvcHlSZWYoKSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9jb25uZWN0aW9uLT5vcGVuKCpvcmln
aW4oKSwgbmFtZSwgW3RoaXMsIG5hbWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBwZW5k
aW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKV0oY29uc3QgQ2FjaGVJZGVu
dGlmaWVyT3JFcnJvciYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFyZXN1bHQuaGFz
X3ZhbHVlKCkpIHsKLSAgICAgICAgICAgIGVucXVldWVUYXNrKFt0aGlzLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgZXJyb3IgPSByZXN1bHQuZXJyb3IoKV0oKSBtdXRhYmxlIHsKLSAgICAg
ICAgICAgICAgICBwcm9taXNlLnJlamVjdChET01DYWNoZUVuZ2luZTo6Y29udmVydFRvRXhjZXB0
aW9uQW5kTG9nKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZXJyb3IpKTsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAoIXJlc3VsdC5oYXNfdmFsdWUoKSkK
KyAgICAgICAgICAgIHByb21pc2UucmVqZWN0KERPTUNhY2hlRW5naW5lOjpjb252ZXJ0VG9FeGNl
cHRpb25BbmRMb2coc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCByZXN1bHQuZXJyb3IoKSkpOwor
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQudmFsdWUoKS5oYWRTdG9yYWdl
RXJyb3IpCiAgICAgICAgICAgICAgICAgbG9nQ29uc29sZVBlcnNpc3RlbmN5RXJyb3Ioc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBuYW1lKTsKIAotICAgICAgICAgICAgZW5xdWV1ZVRhc2soW3Ro
aXMsIG5hbWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gcmVzdWx0
LnZhbHVlKCkuaWRlbnRpZmllcl0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBhdXRvIGNh
Y2hlID0gRE9NQ2FjaGU6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBTdHJpbmcg
eyBuYW1lIH0sIGlkZW50aWZpZXIsIG1fY29ubmVjdGlvbi5jb3B5UmVmKCkpOwotICAgICAgICAg
ICAgICAgIHByb21pc2UucmVzb2x2ZShjYWNoZSk7Ci0gICAgICAgICAgICAgICAgbV9jYWNoZXMu
YXBwZW5kKFdURk1vdmUoY2FjaGUpKTsKLSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYXV0
byBjYWNoZSA9IERPTUNhY2hlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgU3Ry
aW5nIHsgbmFtZSB9LCByZXN1bHQudmFsdWUoKS5pZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29w
eVJlZigpKTsKKyAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShjYWNoZSk7CisgICAgICAgICAg
ICBtX2NhY2hlcy5hcHBlbmQoV1RGTW92ZShjYWNoZSkpOwogICAgICAgICB9CiAgICAgfSk7CiB9
CkBAIC0yMjksOSArMjEzLDcgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6OnJlbW92ZShjb25zdCBT
dHJpbmcmIG5hbWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYKIHsKICAgICByZXRy
aWV2ZUNhY2hlcyhbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKE9wdGlv
bmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoZXhjZXB0
aW9uKSB7Ci0gICAgICAgICAgICBlbnF1ZXVlVGFzayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSksIGV4Y2VwdGlvbiA9IFdURk1vdmUoZXhjZXB0aW9uLnZhbHVlKCkpXSgpIG11dGFibGUgewot
ICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uKSk7Ci0gICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoKmV4Y2VwdGlv
bikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGRvUmVtb3ZlKG5h
bWUsIFdURk1vdmUocHJvbWlzZSkpOwpAQCAtMjQyLDM4ICsyMjQsMzIgQEAgdm9pZCBET01DYWNo
ZVN0b3JhZ2U6OmRvUmVtb3ZlKGNvbnN0IFN0cmluZyYgbmFtZSwgRE9NUHJvbWlzZURlZmVycmVk
PElETEJvb2xlYW4KIHsKICAgICBhdXRvIHBvc2l0aW9uID0gbV9jYWNoZXMuZmluZE1hdGNoaW5n
KFsmXShhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVtLT5uYW1lKCkgPT0gbmFtZTsgfSk7CiAgICAg
aWYgKHBvc2l0aW9uID09IG5vdEZvdW5kKSB7Ci0gICAgICAgIGVucXVldWVUYXNrKFtwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHByb21pc2UucmVz
b2x2ZShmYWxzZSk7Ci0gICAgICAgIH0pOworICAgICAgICBwcm9taXNlLnJlc29sdmUoZmFsc2Up
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmUobV9j
YWNoZXNbcG9zaXRpb25dLT5pZGVudGlmaWVyKCksIFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhp
cyldKGNvbnN0IENhY2hlSWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAg
ICAgIGVucXVldWVUYXNrKFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwg
cmVzdWx0XSgpIG11dGFibGUgewotICAgICAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkp
Ci0gICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRE9NQ2FjaGVFbmdpbmU6OmNvbnZlcnRU
b0V4Y2VwdGlvbkFuZExvZyhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHJlc3VsdC5lcnJvcigp
KSk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVl
KCkuaGFkU3RvcmFnZUVycm9yKQotICAgICAgICAgICAgICAgICAgICBsb2dDb25zb2xlUGVyc2lz
dGVuY3lFcnJvcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG5hbWUpOwotICAgICAgICAgICAg
ICAgIHByb21pc2UucmVzb2x2ZSghIXJlc3VsdC52YWx1ZSgpLmlkZW50aWZpZXIpOwotICAgICAg
ICAgICAgfQotICAgICAgICB9KTsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCisg
ICAgICAgICAgICBwcm9taXNlLnJlamVjdChET01DYWNoZUVuZ2luZTo6Y29udmVydFRvRXhjZXB0
aW9uQW5kTG9nKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgcmVzdWx0LmVycm9yKCkpKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlKCkuaGFkU3RvcmFnZUVy
cm9yKQorICAgICAgICAgICAgICAgIGxvZ0NvbnNvbGVQZXJzaXN0ZW5jeUVycm9yKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgbmFtZSk7CisgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoISFy
ZXN1bHQudmFsdWUoKS5pZGVudGlmaWVyKTsKKyAgICAgICAgfQogICAgIH0pOwogfQogCiB2b2lk
IERPTUNhY2hlU3RvcmFnZTo6a2V5cyhLZXlzUHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgcmV0
cmlldmVDYWNoZXMoW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShPcHRpb25hbDxF
eGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKLSAgICAgICAgZW5xdWV1ZVRhc2soW3Ro
aXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRpb24gPSBXVEZNb3ZlKGV4Y2Vw
dGlvbildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAg
ICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRpb24udmFsdWUoKSkpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgaWYgKGV4Y2VwdGlv
bikgeworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoV1RGTW92ZShleGNlcHRpb24udmFsdWUo
KSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAgICAgIHByb21p
c2UucmVzb2x2ZShXVEY6Om1hcChtX2NhY2hlcywgW10gKGNvbnN0IGF1dG8mIGNhY2hlKSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGNhY2hlLT5uYW1lKCk7Ci0gICAgICAgICAgICB9KSk7Ci0g
ICAgICAgIH0pOworICAgICAgICBwcm9taXNlLnJlc29sdmUoV1RGOjptYXAobV9jYWNoZXMsIFtd
IChjb25zdCBhdXRvJiBjYWNoZSkgeworICAgICAgICAgICAgcmV0dXJuIGNhY2hlLT5uYW1lKCk7
CisgICAgICAgIH0pKTsKICAgICB9KTsKIH0KIApAQCAtMjg3LDE0ICsyNjMsNCBAQCBjb25zdCBj
aGFyKiBET01DYWNoZVN0b3JhZ2U6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogICAgIHJl
dHVybiAiQ2FjaGVTdG9yYWdlIjsKIH0KIAotdm9pZCBET01DYWNoZVN0b3JhZ2U6OmVucXVldWVU
YXNrKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQotewotICAgIGF1dG8qIGNvbnRleHQgPSBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm47
Ci0gICAgY29udGV4dC0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlw
dWxhdGlvbiwgKmNvbnRleHQsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBlbmRp
bmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCB0YXNrID0gV1RGTW92ZSh0
YXNrKV0gewotICAgICAgICB0YXNrKCk7Ci0gICAgfSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVT
dG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5o
CmluZGV4IDAxMDUzOWY0YjU3Li42ODZmMGEyYmYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5oCkBAIC01OSw4ICs1OSw2IEBAIHByaXZhdGU6
CiAgICAgUmVmPERPTUNhY2hlPiBmaW5kQ2FjaGVPckNyZWF0ZShET01DYWNoZUVuZ2luZTo6Q2Fj
aGVJbmZvJiYpOwogICAgIE9wdGlvbmFsPENsaWVudE9yaWdpbj4gb3JpZ2luKCkgY29uc3Q7CiAK
LSAgICB2b2lkIGVucXVldWVUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJik7Ci0KICAgICBWZWN0b3I8
UmVmPERPTUNhY2hlPj4gbV9jYWNoZXM7CiAgICAgdWludDY0X3QgbV91cGRhdGVDb3VudGVyIHsg
MCB9OwogICAgIFJlZjxDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCmluZGV4IDAw
MGQ3OWVkNjhmLi4yNWVjYmU5YTM4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTM5LDE3ICszOSw2IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotdm9pZCBGZXRjaEJvZHlPd25lcjo6cnVuTmV0d29ya1Rhc2tXaGVuUG9zc2li
bGUoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCi17Ci0gICAgYXV0byogY29udGV4dCA9IHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoIWNvbnRleHQgfHwgIXNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpKQotICAgICAgICByZXR1
cm4gdGFzaygpOwotCi0gICAgY29udGV4dC0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3Vy
Y2U6Ok5ldHdvcmtpbmcsICpjb250ZXh0LCBbcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdB
Y3Rpdml0eSgqdGhpcyksIHRhc2sgPSBXVEZNb3ZlKHRhc2spXSB7Ci0gICAgICAgIHRhc2soKTsK
LSAgICB9KTsKLX0KLQogRmV0Y2hCb2R5T3duZXI6OkZldGNoQm9keU93bmVyKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIE9wdGlvbmFsPEZldGNoQm9keT4mJiBib2R5LCBSZWY8RmV0
Y2hIZWFkZXJzPiYmIGhlYWRlcnMpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAg
ICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKQEAgLTI4MSwzMSArMjcwLDI3IEBAIHZvaWQgRmV0
Y2hCb2R5T3duZXI6OmZpbmlzaEJsb2JMb2FkaW5nKCkKIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJs
b2JMb2FkaW5nU3VjY2VlZGVkKCkKIHsKICAgICBBU1NFUlQoIWlzQm9keU51bGwoKSk7Ci0gICAg
cnVuTmV0d29ya1Rhc2tXaGVuUG9zc2libGUoW3RoaXNdKCkgbXV0YWJsZSB7CiAjaWYgRU5BQkxF
KFNUUkVBTVNfQVBJKQotICAgICAgICBpZiAobV9yZWFkYWJsZVN0cmVhbVNvdXJjZSkgewotICAg
ICAgICAgICAgbV9yZWFkYWJsZVN0cmVhbVNvdXJjZS0+Y2xvc2UoKTsKLSAgICAgICAgICAgIG1f
cmVhZGFibGVTdHJlYW1Tb3VyY2UgPSBudWxscHRyOwotICAgICAgICB9CisgICAgaWYgKG1fcmVh
ZGFibGVTdHJlYW1Tb3VyY2UpIHsKKyAgICAgICAgbV9yZWFkYWJsZVN0cmVhbVNvdXJjZS0+Y2xv
c2UoKTsKKyAgICAgICAgbV9yZWFkYWJsZVN0cmVhbVNvdXJjZSA9IG51bGxwdHI7CisgICAgfQog
I2VuZGlmCi0gICAgICAgIG1fYm9keS0+bG9hZGluZ1N1Y2NlZWRlZCgpOwotICAgIH0pOworICAg
IG1fYm9keS0+bG9hZGluZ1N1Y2NlZWRlZCgpOwogICAgIGZpbmlzaEJsb2JMb2FkaW5nKCk7CiB9
CiAKIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2JMb2FkaW5nRmFpbGVkKCkKIHsKICAgICBBU1NF
UlQoIWlzQm9keU51bGwoKSk7Ci0gICAgcnVuTmV0d29ya1Rhc2tXaGVuUG9zc2libGUoW3RoaXNd
KCkgbXV0YWJsZSB7CiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQotICAgICAgICBpZiAobV9yZWFk
YWJsZVN0cmVhbVNvdXJjZSkgewotICAgICAgICAgICAgaWYgKCFtX3JlYWRhYmxlU3RyZWFtU291
cmNlLT5pc0NhbmNlbGxpbmcoKSkKLSAgICAgICAgICAgICAgICBtX3JlYWRhYmxlU3RyZWFtU291
cmNlLT5lcnJvcihFeGNlcHRpb24geyBUeXBlRXJyb3IsICJCbG9iIGxvYWRpbmcgZmFpbGVkIl9z
fSk7Ci0gICAgICAgICAgICBtX3JlYWRhYmxlU3RyZWFtU291cmNlID0gbnVsbHB0cjsKLSAgICAg
ICAgfSBlbHNlCisgICAgaWYgKG1fcmVhZGFibGVTdHJlYW1Tb3VyY2UpIHsKKyAgICAgICAgaWYg
KCFtX3JlYWRhYmxlU3RyZWFtU291cmNlLT5pc0NhbmNlbGxpbmcoKSkKKyAgICAgICAgICAgIG1f
cmVhZGFibGVTdHJlYW1Tb3VyY2UtPmVycm9yKEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIkJsb2Ig
bG9hZGluZyBmYWlsZWQiX3N9KTsKKyAgICAgICAgbV9yZWFkYWJsZVN0cmVhbVNvdXJjZSA9IG51
bGxwdHI7CisgICAgfSBlbHNlCiAjZW5kaWYKLSAgICAgICAgICAgIG1fYm9keS0+bG9hZGluZ0Zh
aWxlZChFeGNlcHRpb24geyBUeXBlRXJyb3IsICJCbG9iIGxvYWRpbmcgZmFpbGVkIl9zfSk7Ci0g
ICAgfSk7CisgICAgICAgIG1fYm9keS0+bG9hZGluZ0ZhaWxlZChFeGNlcHRpb24geyBUeXBlRXJy
b3IsICJCbG9iIGxvYWRpbmcgZmFpbGVkIl9zfSk7CiAgICAgZmluaXNoQmxvYkxvYWRpbmcoKTsK
IH0KIApAQCAtMzE0LDEwICsyOTksOCBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpibG9iQ2h1bmso
Y29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgQVNTRVJUKGRhdGEpOwogI2lmIEVO
QUJMRShTVFJFQU1TX0FQSSkKICAgICBBU1NFUlQobV9yZWFkYWJsZVN0cmVhbVNvdXJjZSk7Ci0g
ICAgcnVuTmV0d29ya1Rhc2tXaGVuUG9zc2libGUoW3RoaXMsIGFycmF5QnVmZmVyID0gQXJyYXlC
dWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFt
X3JlYWRhYmxlU3RyZWFtU291cmNlLT5lbnF1ZXVlKFdURk1vdmUoYXJyYXlCdWZmZXIpKSkKLSAg
ICAgICAgICAgIHN0b3AoKTsKLSAgICB9KTsKKyAgICBpZiAoIW1fcmVhZGFibGVTdHJlYW1Tb3Vy
Y2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKSkpCisgICAgICAg
IHN0b3AoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwogICAgIFVOVVNFRF9QQVJB
TShzaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5T3duZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIu
aAppbmRleCAzYjM4OWE4MmRkMi4uZGQyMWU1NTY2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKQEAgLTEyNSw4ICsxMjUsNiBAQCBwcm90ZWN0
ZWQ6CiAgICAgUmVmPEZldGNoSGVhZGVycz4gbV9oZWFkZXJzOwogCiBwcml2YXRlOgotICAgIHZv
aWQgcnVuTmV0d29ya1Rhc2tXaGVuUG9zc2libGUoRnVuY3Rpb248dm9pZCgpPiYmKTsKLQogICAg
IE9wdGlvbmFsPEJsb2JMb2FkZXI+IG1fYmxvYkxvYWRlcjsKICAgICBib29sIG1faXNCb2R5T3Bh
cXVlIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKaW5kZXggMjA5ZDlhZjFiYjMuLjBlMDM4ZjMx
NTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTIzMCw1MyArMjMwLDQ4IEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBpc01lZGlhU3RyZWFtQ29ycmVjdGx5U3RhcnRlZChjb25zdCBNZWRpYVN0cmVhbSYgc3Ry
ZWFtKQogdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjphbGxvdyhDYXB0dXJlRGV2aWNlJiYgYXVkaW9E
ZXZpY2UsIENhcHR1cmVEZXZpY2UmJiB2aWRlb0RldmljZSwgU3RyaW5nJiYgZGV2aWNlSWRlbnRp
Zmllckhhc2hTYWx0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgUkVMRUFTRV9MT0coTWVkaWFTdHJlYW0sICJVc2VyTWVkaWFSZXF1ZXN0Ojph
bGxvdyAlcyAlcyIsIGF1ZGlvRGV2aWNlID8gYXVkaW9EZXZpY2UucGVyc2lzdGVudElkKCkudXRm
OCgpLmRhdGEoKSA6ICIiLCB2aWRlb0RldmljZSA/IHZpZGVvRGV2aWNlLnBlcnNpc3RlbnRJZCgp
LnV0ZjgoKS5kYXRhKCkgOiAiIik7Ci0gICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVu
dCgpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cigpOwotCi0gICAgZG9jdW1lbnQtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpV
c2VySW50ZXJhY3Rpb24sICpkb2N1bWVudCwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgYXVkaW9EZXZpY2UgPSBXVEZNb3ZlKGF1ZGlvRGV2aWNlKSwgdmlkZW9EZXZpY2Ug
PSBXVEZNb3ZlKHZpZGVvRGV2aWNlKSwgZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0ID0gV1RGTW92
ZShkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBhdXRvIGNhbGxiYWNrID0g
W3RoaXMsIHByb3RlY3RvciA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShSZWZQdHI8TWVkaWFTdHJlYW1Q
cml2YXRlPiYmIHByaXZhdGVTdHJlYW0pIG11dGFibGUgewotICAgICAgICAgICAgYXV0byBzY29w
ZUV4aXQgPSBtYWtlU2NvcGVFeGl0KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGlmIChpc0NvbnRleHRTdG9wcGVk
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBpZiAoIXByaXZhdGVT
dHJlYW0pIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPRyhNZWRpYVN0cmVhbSwgIlVzZXJN
ZWRpYVJlcXVlc3Q6OmFsbG93IGZhaWxlZCB0byBjcmVhdGUgbWVkaWEgc3RyZWFtISIpOwotICAg
ICAgICAgICAgICAgIGRlbnkoTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OkhhcmR3YXJlRXJyb3Ip
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
YXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk7Ci0gICAgICAgICAgICBwcml2YXRlU3RyZWFtLT5tb25pdG9yT3JpZW50YXRpb24oZG9j
dW1lbnQub3JpZW50YXRpb25Ob3RpZmllcigpKTsKLQotICAgICAgICAgICAgYXV0byBzdHJlYW0g
PSBNZWRpYVN0cmVhbTo6Y3JlYXRlKGRvY3VtZW50LCBwcml2YXRlU3RyZWFtLnJlbGVhc2VOb25O
dWxsKCkpOwotICAgICAgICAgICAgc3RyZWFtLT5zdGFydFByb2R1Y2luZ0RhdGEoKTsKLQotICAg
ICAgICAgICAgaWYgKCFpc01lZGlhU3RyZWFtQ29ycmVjdGx5U3RhcnRlZChzdHJlYW0pKSB7Ci0g
ICAgICAgICAgICAgICAgZGVueShNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6SGFyZHdhcmVFcnJv
cik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBBU1NFUlQoZG9jdW1lbnQuaXNDYXB0dXJpbmcoKSk7Ci0gICAgICAgICAgICBzdHJlYW0tPmRv
Y3VtZW50KCktPnNldEhhc0NhcHR1cmVNZWRpYVN0cmVhbVRyYWNrKCk7Ci0gICAgICAgICAgICBt
X3Byb21pc2UtPnJlc29sdmUoV1RGTW92ZShzdHJlYW0pKTsKLSAgICAgICAgfTsKLQotICAgICAg
ICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKLSAgICAgICAgZG9jdW1lbnQuc2V0RGV2aWNlSURIYXNoU2FsdChkZXZpY2VJZGVu
dGlmaWVySGFzaFNhbHQpOwotCi0gICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OnNp
bmdsZXRvbigpLmNyZWF0ZU1lZGlhU3RyZWFtKGRvY3VtZW50LmxvZ2dlcigpLCBXVEZNb3ZlKGNh
bGxiYWNrKSwgV1RGTW92ZShkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpLCBXVEZNb3ZlKGF1ZGlv
RGV2aWNlKSwgV1RGTW92ZSh2aWRlb0RldmljZSksIG1fcmVxdWVzdCk7Ci0KLSAgICAgICAgaWYg
KCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisKKyAgICBhdXRvIGNhbGxiYWNrID0gW3RoaXMs
IHByb3RlY3RvciA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRl
PiYmIHByaXZhdGVTdHJlYW0pIG11dGFibGUgeworICAgICAgICBhdXRvIHNjb3BlRXhpdCA9IG1h
a2VTY29wZUV4aXQoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAg
ICB9KTsKKyAgICAgICAgaWYgKGlzQ29udGV4dFN0b3BwZWQoKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBpZiAoIXByaXZhdGVTdHJlYW0pIHsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HKE1lZGlhU3RyZWFtLCAiVXNlck1lZGlhUmVxdWVzdDo6YWxsb3cgZmFpbGVkIHRvIGNyZWF0
ZSBtZWRpYSBzdHJlYW0hIik7CisgICAgICAgICAgICBkZW55KE1lZGlhQWNjZXNzRGVuaWFsUmVh
c29uOjpIYXJkd2FyZUVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOworICAgICAgICBwcml2YXRlU3RyZWFtLT5tb25pdG9yT3JpZW50YXRpb24o
ZG9jdW1lbnQub3JpZW50YXRpb25Ob3RpZmllcigpKTsKKworICAgICAgICBhdXRvIHN0cmVhbSA9
IE1lZGlhU3RyZWFtOjpjcmVhdGUoZG9jdW1lbnQsIHByaXZhdGVTdHJlYW0ucmVsZWFzZU5vbk51
bGwoKSk7CisgICAgICAgIHN0cmVhbS0+c3RhcnRQcm9kdWNpbmdEYXRhKCk7CisKKyAgICAgICAg
aWYgKCFpc01lZGlhU3RyZWFtQ29ycmVjdGx5U3RhcnRlZChzdHJlYW0pKSB7CisgICAgICAgICAg
ICBkZW55KE1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpIYXJkd2FyZUVycm9yKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChkb2N1bWVudC5pc0NhcHR1
cmluZygpKTsKKyAgICAgICAgc3RyZWFtLT5kb2N1bWVudCgpLT5zZXRIYXNDYXB0dXJlTWVkaWFT
dHJlYW1UcmFjaygpOworICAgICAgICBtX3Byb21pc2UtPnJlc29sdmUoV1RGTW92ZShzdHJlYW0p
KTsKKyAgICB9OworCisgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgZG9jdW1lbnQuc2V0RGV2aWNlSURIYXNoU2Fs
dChkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpOworCisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcjo6c2luZ2xldG9uKCkuY3JlYXRlTWVkaWFTdHJlYW0oZG9jdW1lbnQubG9nZ2VyKCksIFdU
Rk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCksIFdURk1v
dmUoYXVkaW9EZXZpY2UpLCBXVEZNb3ZlKHZpZGVvRGV2aWNlKSwgbV9yZXF1ZXN0KTsKKworICAg
IGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgICAgICByZXR1cm47CiAKICNpZiBF
TkFCTEUoV0VCX1JUQykKLSAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCkp
Ci0gICAgICAgICAgICBwYWdlLT5ydGNDb250cm9sbGVyKCkuZGlzYWJsZUlDRUNhbmRpZGF0ZUZp
bHRlcmluZ0ZvckRvY3VtZW50KGRvY3VtZW50KTsKKyAgICBpZiAoYXV0byogcGFnZSA9IGRvY3Vt
ZW50LnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+cnRjQ29udHJvbGxlcigpLmRpc2FibGVJQ0VDYW5k
aWRhdGVGaWx0ZXJpbmdGb3JEb2N1bWVudChkb2N1bWVudCk7CiAjZW5kaWYKLSAgICB9KTsKIH0K
IAogdm9pZCBVc2VyTWVkaWFSZXF1ZXN0OjpkZW55KE1lZGlhQWNjZXNzRGVuaWFsUmVhc29uIHJl
YXNvbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpAQCAtMzI0LDEyICszMTksMTAgQEAgdm9pZCBV
c2VyTWVkaWFSZXF1ZXN0OjpkZW55KE1lZGlhQWNjZXNzRGVuaWFsUmVhc29uIHJlYXNvbiwgY29u
c3QgU3RyaW5nJiBtZXNzYWcKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgZG9jdW1lbnQo
KS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OlVzZXJJbnRlcmFjdGlvbiwgKmRv
Y3VtZW50KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvZGUsIG1l
c3NhZ2VdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghbWVzc2FnZS5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICBtX3Byb21pc2UtPnJlamVjdChjb2RlLCBtZXNzYWdlKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV9wcm9taXNlLT5yZWplY3QoY29kZSk7Ci0gICAgfSk7CisgICAgaWYgKCFt
ZXNzYWdlLmlzRW1wdHkoKSkKKyAgICAgICAgbV9wcm9taXNlLT5yZWplY3QoY29kZSwgbWVzc2Fn
ZSk7CisgICAgZWxzZQorICAgICAgICBtX3Byb21pc2UtPnJlamVjdChjb2RlKTsKIH0KIAogdm9p
ZCBVc2VyTWVkaWFSZXF1ZXN0OjpzdG9wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiN2VjMzNjYmZlMi4uMTJjODY4OThmMzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEyNTAsNiArMTI1MCw3IEBACiAJCTQ2RUYxNDJDMUY5N0I3RDgwMEMyQTUyNCAvKiBT
ZXJ2aWNlV29ya2VyQ2xpZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZFRjE0MjIxRjk3QjdCQTAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGll
bnRzLmggKi87IH07CiAJCTQ2RUYxNDJEMUY5N0I3RDgwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2Vy
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkVGMTQyNDFGOTdCN0JBMDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudC5oICovOyB9Owog
CQk0NkVGQUYxMjFFNUZCOUYxMDBFN0YzNEIgLyogTG93UG93ZXJNb2RlTm90aWZpZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUZBRjEwMUU1RkI5
RTEwMEU3RjM0QiAvKiBMb3dQb3dlck1vZGVOb3RpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2RjAyQTFBMjM3MzdGODMwMDEwNkE2NCAv
KiBBYnN0cmFjdEV2ZW50TG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEFic3RyYWN0RXZlbnRMb29w
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZG
Q0I2MTgxQTcwODIwRTAwQzVBMjFFIC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzN0IzNzUxNUMxQTdFMTAw
NkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ5MDcwN0U3MTIxOUMwNDMwMEQ5MEU1MSAvKiBB
TkdMRVdlYktpdEJyaWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDkwNzA3RTUxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDkyOTFF
NEIxMzQxNzJDODAwRTc1M0RFIC8qIEltYWdlUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDkyOTFFNEExMzQxNzJDODAwRTc1M0RF
IC8qIEltYWdlUmVuZGVyaW5nTW9kZS5oICovOyB9OwpAQCAtMzEwNDMsNiArMzEwNDQsNyBAQAog
CQkJCTFBNzYyQzc0MEEwNzRGMjYwMDk4OUY1QiAvKiBKU1hQYXRoRXZhbHVhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTc2MkM3NjBBMDc0RjI2MDA5ODlGNUIgLyogSlNYUGF0aEV4cHJlc3Np
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNzYyQzc4MEEwNzRGMjYwMDk4OUY1QiAvKiBKU1hQ
YXRoTlNSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZGMDJBMUEyMzczN0Y4MzAwMTA2
QTY0IC8qIEFic3RyYWN0RXZlbnRMb29wLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTc2MkM3QTBB
MDc0RjI2MDA5ODlGNUIgLyogSlNYUGF0aFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNF
RkUxRUIwRENBNUY2NDAwNzM5MjE5IC8qIEpTWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODNCNzRFRjYxRjNFMEJGMjAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2Vy
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lE
TFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCmluZGV4IDc1MGVh
OGRmYzZkLi4zMDViY2Y1MTQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
SURMVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCkBAIC00
Myw3ICs0Myw2IEBAIGNsYXNzIEFycmF5QnVmZmVyVmlldzsKIGNsYXNzIERhdGFWaWV3OwogY2xh
c3MgSlNWYWx1ZTsKIGNsYXNzIEpTT2JqZWN0OwotdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0
cm9uZzsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HdWFyZGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUd1YXJkZWRPYmplY3QuaAppbmRleCA2M2MxNzcyZjRhYi4uYTA0YjgzZjkw
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR3VhcmRlZE9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR3VhcmRlZE9iamVj
dC5oCkBAIC01MSw3ICs1MSw3IEBAIHByb3RlY3RlZDoKICAgICBET01HdWFyZGVkT2JqZWN0KEpT
RE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpKU0NlbGwmKTsKIAogICAgIHZvaWQgY29udGV4dERlc3Ry
b3llZCgpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuICFtX2d1YXJkZWQ7
IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9ndWFyZGVkOyB9CiAKICAg
ICBKU0M6OldlYWs8SlNDOjpKU0NlbGw+IG1fZ3VhcmRlZDsKICAgICBKU0M6OldlYWs8SlNET01H
bG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuY3BwCmluZGV4IDU1MGJjYzNhNjAzLi41N2Jj
Mjk0NTNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9t
aXNlRGVmZXJyZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJv
bWlzZURlZmVycmVkLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0V4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT05PYmplY3QuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5oPgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwpAQCAtNDUsOSArNDYsMTggQEAgSlNDOjpKU1ZhbHVlIERlZmVycmVk
UHJvbWlzZTo6cHJvbWlzZSgpIGNvbnN0CiAKIHZvaWQgRGVmZXJyZWRQcm9taXNlOjpjYWxsRnVu
Y3Rpb24oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIFJlc29sdmVNb2RlIG1v
ZGUsIEpTVmFsdWUgcmVzb2x1dGlvbikKIHsKLSAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkp
CisgICAgaWYgKCFjYW5SdW5TY3JpcHQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKGFj
dGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSkgeworICAgICAgICBKU0M6OlN0cm9uZzxKU0M6
OlVua25vd24sIFNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jazo6WWVzPiBzdHJvbmdSZXNv
bHV0aW9uKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgcmVzb2x1dGlvbik7CisgICAgICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6
Ok5ldHdvcmtpbmcsICpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIG1vZGUsIHN0cm9uZ1Jlc29sdXRpb24gPSBXVEZNb3ZlKHN0
cm9uZ1Jlc29sdXRpb24pXSgpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGNhblJ1blNjcmlw
dCgpKQorICAgICAgICAgICAgICAgIGNhbGxGdW5jdGlvbigqZ2xvYmFsT2JqZWN0KCksIG1vZGUs
IHN0cm9uZ1Jlc29sdXRpb24uZ2V0KCkpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKwogICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBoYXZlIGVycm9yIHNpbmNlIGFueSBKUyBj
YWxsIGNhbiB0aHJvdyBzdGFjay1vdmVyZmxvdyBlcnJvcnMuCiAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzQwMgogICAgIHN3aXRjaCAobW9kZSkgewpA
QCAtNjUsNyArNzUsMTAgQEAgdm9pZCBEZWZlcnJlZFByb21pc2U6OmNhbGxGdW5jdGlvbihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVzb2x2ZU0KIAogdm9pZCBEZWZlcnJl
ZFByb21pc2U6OndoZW5TZXR0bGVkKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKLSAg
ICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICBpZiAoIWNhblJ1blNjcmlwdCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBET01Qcm9taXNlOjp3aGVuUHJvbWlzZUlzU2V0dGxlZChnbG9iYWxP
YmplY3QoKSwgZGVmZXJyZWQoKSwgV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtNzMsNyArODYsNyBA
QCB2b2lkIERlZmVycmVkUHJvbWlzZTo6d2hlblNldHRsZWQoRnVuY3Rpb248dm9pZCgpPiYmIGNh
bGxiYWNrKQogCiB2b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0KCkKIHsKLSAgICBpZiAoaXNT
dXNwZW5kZWQoKSkKKyAgICBpZiAoIWNhblJ1blNjcmlwdCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CkBAIC04NSw3ICs5OCw3IEBAIHZvaWQgRGVmZXJyZWRQ
cm9taXNlOjpyZWplY3QoKQogCiB2b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0KHN0ZDo6bnVs
bHB0cl90KQogewotICAgIGlmIChpc1N1c3BlbmRlZCgpKQorICAgIGlmICghY2FuUnVuU2NyaXB0
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKQEAgLTk3LDcg
KzExMCw3IEBAIHZvaWQgRGVmZXJyZWRQcm9taXNlOjpyZWplY3Qoc3RkOjpudWxscHRyX3QpCiAK
IHZvaWQgRGVmZXJyZWRQcm9taXNlOjpyZWplY3QoRXhjZXB0aW9uIGV4Y2VwdGlvbikKIHsKLSAg
ICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICBpZiAoIWNhblJ1blNjcmlwdCgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CkBAIC0xMjksNyArMTQyLDcgQEAgdm9p
ZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChFeGNlcHRpb24gZXhjZXB0aW9uKQogCiB2b2lkIERl
ZmVycmVkUHJvbWlzZTo6cmVqZWN0KEV4Y2VwdGlvbkNvZGUgZWMsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKIHsKLSAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICBpZiAoIWNhblJ1blNjcmlwdCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CkBAIC0xNjIsNyAr
MTc1LDcgQEAgdm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdChFeGNlcHRpb25Db2RlIGVjLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAKIHZvaWQgRGVmZXJyZWRQcm9taXNlOjpyZWplY3QoY29u
c3QgSlNDOjpQcml2YXRlTmFtZSYgcHJpdmF0ZU5hbWUpCiB7Ci0gICAgaWYgKGlzU3VzcGVuZGVk
KCkpCisgICAgaWYgKCFjYW5SdW5TY3JpcHQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNT
RVJUKGRlZmVycmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Qcm9taXNlRGVmZXJyZWQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
UHJvbWlzZURlZmVycmVkLmgKaW5kZXggZjBhMWU3ZTIwNGMuLjA2ZTExOGJkZjZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmgKQEAg
LTI1LDkgKzI1LDExIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQWJzdHJhY3RFdmVu
dExvb3AuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVy
dC5oIgogI2luY2x1ZGUgIkpTRE9NR3VhcmRlZE9iamVjdC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9DYXRjaFNjb3BlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNQcm9taXNlLmg+CiAKQEAgLTU4LDggKzYwLDkg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIElETFR5cGU+CiAgICAgdm9pZCByZXNvbHZl
KHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGUgdmFsdWUpCiAgICAgewotICAgICAgICBp
ZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgaWYgKCFjYW5SdW5TY3JpcHQoKSkKICAgICAgICAg
ICAgIHJldHVybjsKKwogICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CiAgICAgICAgIEFTU0VS
VChnbG9iYWxPYmplY3QoKSk7CiAgICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3QoKTsKQEAgLTY5LDggKzcyLDkgQEAgcHVibGljOgog
CiAgICAgdm9pZCByZXNvbHZlKCkKICAgICB7Ci0gICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQor
ICAgICAgICBpZiAoIWNhblJ1blNjcmlwdCgpKQogICAgICAgICAgICAgcmV0dXJuOworCiAgICAg
ICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKICAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsK
ICAgICAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGdsb2Jh
bE9iamVjdCgpOwpAQCAtODEsOCArODUsOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3Mg
SURMVHlwZT4KICAgICB2b2lkIHJlc29sdmVXaXRoTmV3bHlDcmVhdGVkKHR5cGVuYW1lIElETFR5
cGU6OlBhcmFtZXRlclR5cGUgdmFsdWUpCiAgICAgewotICAgICAgICBpZiAoaXNTdXNwZW5kZWQo
KSkKKyAgICAgICAgaWYgKCFjYW5SdW5TY3JpcHQoKSkKICAgICAgICAgICAgIHJldHVybjsKKwog
ICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CiAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3Qo
KSk7CiAgICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBn
bG9iYWxPYmplY3QoKTsKQEAgLTkzLDggKzk4LDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNs
YXNzIElETFR5cGU+CiAgICAgdm9pZCByZXNvbHZlQ2FsbGJhY2tWYWx1ZVdpdGhOZXdseUNyZWF0
ZWQoY29uc3QgRnVuY3Rpb248dHlwZW5hbWUgSURMVHlwZTo6SW5uZXJQYXJhbWV0ZXJUeXBlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mIGNyZWF0ZVZhbHVlKQogICAgIHsKLSAgICAgICAgaWYg
KGlzU3VzcGVuZGVkKCkpCisgICAgICAgIGlmICghY2FuUnVuU2NyaXB0KCkpCiAgICAgICAgICAg
ICByZXR1cm47CisKICAgICAgICAgQVNTRVJUKGRlZmVycmVkKCkpOwogICAgICAgICBBU1NFUlQo
Z2xvYmFsT2JqZWN0KCkpOwogICAgICAgICBhdXRvKiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZ2xv
YmFsT2JqZWN0KCk7CkBAIC0xMDUsOCArMTExLDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNs
YXNzIElETFR5cGU+CiAgICAgdm9pZCByZWplY3QodHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVy
VHlwZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQorICAgICAgICBp
ZiAoIWNhblJ1blNjcmlwdCgpKQogICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIEFTU0VS
VChkZWZlcnJlZCgpKTsKICAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKICAgICAgICAg
SlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdCgp
OwpAQCAtMTIzLDggKzEzMCw5IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxs
YmFjaz4KICAgICB2b2lkIHJlc29sdmVXaXRoQ2FsbGJhY2soQ2FsbGJhY2sgY2FsbGJhY2spCiAg
ICAgewotICAgICAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgaWYgKCFjYW5SdW5TY3Jp
cHQoKSkKICAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7
CiAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QoKSk7CiAgICAgICAgIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3QoKTsKQEAgLTEzNSw4ICsx
NDMsOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2s+CiAgICAgdm9p
ZCByZWplY3RXaXRoQ2FsbGJhY2soQ2FsbGJhY2sgY2FsbGJhY2spCiAgICAgewotICAgICAgICBp
ZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgaWYgKCFjYW5SdW5TY3JpcHQoKSkKICAgICAgICAg
ICAgIHJldHVybjsKKwogICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CiAgICAgICAgIEFTU0VS
VChnbG9iYWxPYmplY3QoKSk7CiAgICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3QoKTsKQEAgLTE1NSw2ICsxNjQsOCBAQCBwcml2YXRl
OgogICAgIHsKICAgICB9CiAKKyAgICBib29sIGNhblJ1blNjcmlwdCgpIGNvbnN0IHsgcmV0dXJu
ICFpc0VtcHR5KCkgJiYgIWFjdGl2ZURPTU9iamVjdEFyZVN0b3BwZWQoKTsgfQorCiAgICAgSlND
OjpKU1Byb21pc2UqIGRlZmVycmVkKCkgY29uc3QgeyByZXR1cm4gZ3VhcmRlZCgpOyB9CiAKICAg
ICBlbnVtIGNsYXNzIFJlc29sdmVNb2RlIHsgUmVzb2x2ZSwgUmVqZWN0IH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGYWNlU2V0LmNwcAppbmRleCA0M2NiYTg5OTA0ZC4uMjdmZjE3NTc5NmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0ZvbnRGYWNlU2V0LmNwcApAQCAtMTk5LDIyICsxOTksMTQgQEAgdm9pZCBGb250RmFj
ZVNldDo6c3RhcnRlZExvYWRpbmcoKQogdm9pZCBGb250RmFjZVNldDo6ZGlkRmlyc3RMYXlvdXQo
KQogewogICAgIG1faXNGaXJzdExheW91dERvbmUgPSB0cnVlOwotICAgIGlmICghbV9iYWNraW5n
LT5oYXNBY3RpdmVGb250RmFjZXMoKSAmJiAhbV9yZWFkeVByb21pc2UtPmlzRnVsZmlsbGVkKCkp
IHsKLSAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNl
OjpGb250TG9hZGluZywgW3RoaXNdIHsKLSAgICAgICAgICAgIGlmICghbV9yZWFkeVByb21pc2Ut
PmlzRnVsZmlsbGVkKCkpCi0gICAgICAgICAgICAgICAgbV9yZWFkeVByb21pc2UtPnJlc29sdmUo
KnRoaXMpOwotICAgICAgICB9KTsKLSAgICB9CisgICAgaWYgKCFtX2JhY2tpbmctPmhhc0FjdGl2
ZUZvbnRGYWNlcygpICYmICFtX3JlYWR5UHJvbWlzZS0+aXNGdWxmaWxsZWQoKSkKKyAgICAgICAg
bV9yZWFkeVByb21pc2UtPnJlc29sdmUoKnRoaXMpOwogfQogCiB2b2lkIEZvbnRGYWNlU2V0Ojpj
b21wbGV0ZWRMb2FkaW5nKCkKIHsKLSAgICBpZiAobV9pc0ZpcnN0TGF5b3V0RG9uZSAmJiAhbV9y
ZWFkeVByb21pc2UtPmlzRnVsZmlsbGVkKCkpIHsKLSAgICAgICAgcXVldWVUYXNrS2VlcGluZ09i
amVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpGb250TG9hZGluZywgW3RoaXNdIHsKLSAgICAg
ICAgICAgIGlmICghbV9yZWFkeVByb21pc2UtPmlzRnVsZmlsbGVkKCkpCi0gICAgICAgICAgICAg
ICAgbV9yZWFkeVByb21pc2UtPnJlc29sdmUoKnRoaXMpOwotICAgICAgICB9KTsKLSAgICB9Cisg
ICAgaWYgKG1faXNGaXJzdExheW91dERvbmUgJiYgIW1fcmVhZHlQcm9taXNlLT5pc0Z1bGZpbGxl
ZCgpKQorICAgICAgICBtX3JlYWR5UHJvbWlzZS0+cmVzb2x2ZSgqdGhpcyk7CiB9CiAKIHZvaWQg
Rm9udEZhY2VTZXQ6OmZhY2VGaW5pc2hlZChDU1NGb250RmFjZSYgZmFjZSwgQ1NTRm9udEZhY2U6
OlN0YXR1cyBuZXdTdGF0dXMpCkBAIC0yMjYsMjIgKzIxOCwyMCBAQCB2b2lkIEZvbnRGYWNlU2V0
OjpmYWNlRmluaXNoZWQoQ1NTRm9udEZhY2UmIGZhY2UsIENTU0ZvbnRGYWNlOjpTdGF0dXMgbmV3
U3RhdHVzKQogICAgIGlmIChwZW5kaW5nUHJvbWlzZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6
OkZvbnRMb2FkaW5nLCBbcGVuZGluZ1Byb21pc2VzID0gV1RGTW92ZShwZW5kaW5nUHJvbWlzZXMp
LCBuZXdTdGF0dXNdIHsKLSAgICAgICAgZm9yIChhdXRvJiBwZW5kaW5nUHJvbWlzZSA6IHBlbmRp
bmdQcm9taXNlcykgewotICAgICAgICAgICAgaWYgKHBlbmRpbmdQcm9taXNlLT5oYXNSZWFjaGVk
VGVybWluYWxTdGF0ZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlm
IChuZXdTdGF0dXMgPT0gQ1NTRm9udEZhY2U6OlN0YXR1czo6U3VjY2VzcykgewotICAgICAgICAg
ICAgICAgIGlmIChwZW5kaW5nUHJvbWlzZS0+aGFzT25lUmVmKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgcGVuZGluZ1Byb21pc2UtPnByb21pc2UtPnJlc29sdmUocGVuZGluZ1Byb21pc2UtPmZh
Y2VzKTsKLSAgICAgICAgICAgICAgICAgICAgcGVuZGluZ1Byb21pc2UtPmhhc1JlYWNoZWRUZXJt
aW5hbFN0YXRlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIEFTU0VSVChuZXdTdGF0dXMgPT0gQ1NTRm9udEZhY2U6OlN0YXR1
czo6RmFpbHVyZSk7Ci0gICAgICAgICAgICAgICAgcGVuZGluZ1Byb21pc2UtPnByb21pc2UtPnJl
amVjdChOZXR3b3JrRXJyb3IpOworICAgIGZvciAoYXV0byYgcGVuZGluZ1Byb21pc2UgOiBwZW5k
aW5nUHJvbWlzZXMpIHsKKyAgICAgICAgaWYgKHBlbmRpbmdQcm9taXNlLT5oYXNSZWFjaGVkVGVy
bWluYWxTdGF0ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAobmV3U3RhdHVz
ID09IENTU0ZvbnRGYWNlOjpTdGF0dXM6OlN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIGlmIChwZW5k
aW5nUHJvbWlzZS0+aGFzT25lUmVmKCkpIHsKKyAgICAgICAgICAgICAgICBwZW5kaW5nUHJvbWlz
ZS0+cHJvbWlzZS0+cmVzb2x2ZShwZW5kaW5nUHJvbWlzZS0+ZmFjZXMpOwogICAgICAgICAgICAg
ICAgIHBlbmRpbmdQcm9taXNlLT5oYXNSZWFjaGVkVGVybWluYWxTdGF0ZSA9IHRydWU7CiAgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQobmV3U3RhdHVz
ID09IENTU0ZvbnRGYWNlOjpTdGF0dXM6OkZhaWx1cmUpOworICAgICAgICAgICAgcGVuZGluZ1By
b21pc2UtPnByb21pc2UtPnJlamVjdChOZXR3b3JrRXJyb3IpOworICAgICAgICAgICAgcGVuZGlu
Z1Byb21pc2UtPmhhc1JlYWNoZWRUZXJtaW5hbFN0YXRlID0gdHJ1ZTsKICAgICAgICAgfQotICAg
IH0pOworICAgIH0KIH0KIAogRm9udEZhY2VTZXQmIEZvbnRGYWNlU2V0OjpyZWFkeVByb21pc2VS
ZXNvbHZlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01DYWxsYmFj
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NQ2FsbGJhY2suY3BwCmluZGV4IGFl
N2E0YTE1MDE0Li4yZjc5MzZhZWYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Fj
dGl2ZURPTUNhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NQ2Fs
bGJhY2suY3BwCkBAIC00OCw0ICs0OCwxNiBAQCBib29sIEFjdGl2ZURPTUNhbGxiYWNrOjpjYW5J
bnZva2VDYWxsYmFjaygpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnRleHQgJiYgIWNvbnRleHQtPmFj
dGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSAmJiAhY29udGV4dC0+YWN0aXZlRE9NT2JqZWN0
c0FyZVN0b3BwZWQoKTsKIH0KIAorYm9vbCBBY3RpdmVET01DYWxsYmFjazo6YWN0aXZlRE9NT2Jq
ZWN0c0FyZVN1c3BlbmRlZCgpIGNvbnN0Cit7CisgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKKyAgICByZXR1cm4gY29udGV4dCAmJiBjb250ZXh0LT5hY3RpdmVE
T01PYmplY3RzQXJlU3VzcGVuZGVkKCk7Cit9CisKK2Jvb2wgQWN0aXZlRE9NQ2FsbGJhY2s6OmFj
dGl2ZURPTU9iamVjdEFyZVN0b3BwZWQoKSBjb25zdAoreworICAgIGF1dG8qIGNvbnRleHQgPSBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgcmV0dXJuICFjb250ZXh0IHx8IGNvbnRleHQt
PmFjdGl2ZURPTU9iamVjdHNBcmVTdG9wcGVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01DYWxsYmFjay5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrLmgKaW5kZXggMmIzNWIxMjBjZDcu
LjdiMTFjZTA3ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NQ2Fs
bGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NQ2FsbGJhY2suaApAQCAt
NTEsNiArNTEsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+QWN0aXZlRE9NQ2FsbGJhY2soKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuSW52b2tlQ2FsbGJhY2soKSBjb25zdDsKKwor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYWN0aXZlRE9NT2JqZWN0QXJlU3RvcHBlZCgp
IGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgdm9pZCB2aXNpdEpTRnVuY3Rpb24oSlNDOjpTbG90
VmlzaXRvciYpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDVlZTA0NmVmNTk3Li4xZDNh
ZDAwM2Q4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
U2hhZG93Um9vdE1vZGUuaCIKICNpbmNsdWRlICJTaW11bGF0ZWRDbGlja09wdGlvbnMuaCIKICNp
bmNsdWRlICJTdHlsZUNoYW5nZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oCmluZGV4IGE2MzM0N2I4Mjc5Li4wZjE3MmExMjlkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC00NCw3ICs0NCw2IEBA
IGNsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEV4Y2VwdGlvbjsKIGNsYXNzIEpTUHJvbWlzZTsKIGNs
YXNzIFZNOwotdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0cm9uZzsKIH0KIAogbmFtZXNwYWNl
IEluc3BlY3RvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCA1ODcyOTJkZDBmYS4uNGJi
MWM5Zjc2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtMzcsNiArMzcsNyBAQAogI2lu
Y2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9IYW5kbGVUeXBlcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1N0cm9uZy5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTQ1LDcgKzQ2LDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiBjbGFzcyBDYWxsRnJhbWU7CiBjbGFzcyBKU09iamVjdDsKIGNsYXNzIEpT
VmFsdWU7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgU3Ryb25nOwogfQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbW90ZURPTVdpbmRv
dy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cuaAppbmRleCA0MDUwZGY1
MDlhZC4uNmUwNWMzYjI4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3Rl
RE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cuaApA
QCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQWJzdHJhY3RET01XaW5kb3cuaCIKICNpbmNs
dWRlICJSZW1vdGVGcmFtZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgog
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAK
QEAgLTM1LDcgKzM2LDYgQEAgY2xhc3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7
CiBjbGFzcyBKU09iamVjdDsKIGNsYXNzIEpTVmFsdWU7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gY2xh
c3MgU3Ryb25nOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383090</attachid>
            <date>2019-11-07 16:40:29 -0800</date>
            <delta_ts>2019-11-08 13:36:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203976-20191107164028.patch</filename>
            <type>text/plain</type>
            <size>47597</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MTc0YmRlNjc3NDM0NDlkMGYzNWNkMzNlODgzZmExZWNiMDExY2FhLi4wM2IxYTkzODhjNjVhMWZj
YTg0ZDZkMmIyYmExOTAzNTk5MGI2NGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxOS0xMS0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgRGVmZXJyZWRQcm9taXNlIGJlaGF2ZSBuaWNlbHkgd2l0aCByZWdhcmRz
IHRvIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMzk3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCB0ZW1wbGF0ZSBwYXJhbWV0ZXIgdG8gSlNDOjpTdHJvbmcg
dG8gaW5kaWNhdGUgdGhhdCB0aGUgZGVzdHJ1Y3RvciBzaG91bGQgZ3JhYiB0aGUgSlMgbG9jay4K
KyAgICAgICAgTm9ybWFsbHksIHRoZSBjYWxsZXJzIGFyZSBpbiBjaGFyZ2Ugb2YgZ3JhYmJpbmcg
dGhlIGxvY2sgYnV0IHRoaXMgaXMgbm90IGFsd2F5cyBmZWFzaWJsZS4KKyAgICAgICAgSW4gcGFy
dGljdWxhciwgaW4gdGhpcyBwYXRjaCwgSSBjYXB0dXJlIGEgSlNDOjpTdHJvbmcgaW4gYSBsYW1i
ZGEuIElmIHRoZSBkb2N1bWVudCBnZXRzIGRlc3Ryb3llZAorICAgICAgICBiZWZvcmUgdGhlIGxh
bWJkYSBoYXMgcnVuLCB0aGUgbGFtYmRhIHdpbGwgZ2V0IGRlc3Ryb3llZCBhbmQgaXQgd2lsbCBk
ZXN0cm95IHRoZSBjYXB0dXJlZCBKU0M6OlN0cm9uZworICAgICAgICBhcyBhIHJlc3VsdC4KKwor
ICAgICAgICAqIGhlYXAvSGFuZGxlLmg6CisgICAgICAgICogaGVhcC9TdHJvbmcuaDoKKyAgICAg
ICAgKEpTQzo6U3Ryb25nOjpjbGVhcik6CisgICAgICAgICogaGVhcC9TdHJvbmdJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OnNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jaz46OlN0cm9uZyk6
CisgICAgICAgIChKU0M6OnNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jaz46OnNldCk6CisK
IDIwMTktMTEtMDcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFJFR1JFU1NJT04ocjI1MDA4Nyk6IGluc3BlY3Rvci9tb2RlbC9yZW1v
dGUtb2JqZWN0Lmh0bWwgaXMgdGltaW5nIG91dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJlNWYzZWQ5MWNhNzEw
ODNmMDIwYWJjY2Y2ZDM1MzkwMDIyMTRhZmMuLjllMGUxZTVjNGQ2OWE1Njk0NjYzOWE0ZTIyMzcw
ZDAzYWY1MWVkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NSBAQAorMjAxOS0xMS0wNyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgRGVmZXJyZWRQcm9t
aXNlIGJlaGF2ZSBuaWNlbHkgd2l0aCByZWdhcmRzIHRvIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzk3Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZpb3Vz
bHksIERlZmVycmVkUHJvbWlzZSB3b3VsZCBpZ25vcmUgcmVxdWVzdHMgdG8gZnVsZmlsbCB0aGUg
cHJvbWlzZSBpZgorICAgICAgICByZWplY3QvcmVzb2x2ZS9zZXR0bGUgZ290IGNhbGxlZCB3aGls
ZSB0aGUgcHJvbWlzZSdzIHNjcmlwdCBleGVjdXRpb24gY29udGV4dAorICAgICAgICBpcyBzdXNw
ZW5kZWQgaW4gdGhlIGJhY2svZm9yd2FyZCBjYWNoZS4gVGhpcyBpcyByZWFsbHkgbmV2ZXIgdGhl
IHJpZ2h0IHRoaW5nIHRvCisgICAgICAgIGRvIHRob3VnaCBiZWNhdXNlIHRoaXMgbWVhbnMgdGhl
IHByb21pc2Ugd2lsbCBuZXZlciBiZSBmdWxmaWxsZWQgaWYgdGhlIHVzZXIKKyAgICAgICAgZXZl
ciBnb2VzIGJhY2sgdG8gdGhpcyBwYWdlLgorCisgICAgICAgIFRvIGFkZHJlc3MgdGhlIGlzc3Vl
LCBEZWZlcnJlZFByb21pc2Ugbm93IHNjaGVkdWxlcyBhIHRhc2sgb24gdGhlIGV2ZW50IGxvb3Ag
aWYKKyAgICAgICAgaXQgZ2V0cyBmdWxmaWxsZWQgd2hpbGUgaXRzIHNjcmlwdCBleGVjdXRpb24g
Y29udGV4dCBpcyBzdXNwZW5kZWQuIEFzIGEgcmVzdWx0LAorICAgICAgICB0aGUgcHJvbWlzZSB3
aWxsIHByb3Blcmx5IGdldCBmdWxmaWxsZWQgaWYgdGhlIGRvY3VtZW50IGV2ZXIgY29tZXMgb3V0
IG9mIHRoZQorICAgICAgICBiYWNrL2ZvcndhcmQgY2FjaGUgYW5kIGRldmVsb3BlcnMgdXNpbmcg
RGVmZXJyZWRQcm9taXNlIGRvIG5vdCBoYXZlIHRvIHdvcnJ5CisgICAgICAgIGFib3V0IHN1c3Bl
bnNpb24uCisKKyAgICAgICAgTm93IHRoYXQgRGVmZXJyZWRQcm9taXNlIHByb3Blcmx5IGRlYWxz
IHdpdGggc3VzcGVuZGVkIGRvY3VtZW50cywgdGhpcyBwYXRjaCBhbHNvCisgICAgICAgIHJldmVy
dHMgY2hhbmdlcyBJIG1hZGUgcmVjZW50bHkgaW4gY29kZSB1c2luZyBEZWZlcnJlZFByb21pc2Uu
IEkgaGFkIG1hZGUgdGhlbQorICAgICAgICBxdWV1ZSBhIHRhc2sgb24gdGhlIGV2ZW50IGxvb3Ag
YmVmb3JlIGZ1bGZpbGxpbmcgdGhlIHByb21pc2UsIHdoaWNoIGRpZCBub3QgbWF0Y2gKKyAgICAg
ICAgdGhlaXIgc3BlY2lmaWNhdGlvbiBhbmQgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KKworICAgICAg
ICBOb3RlIHRoYXQgY2FwdHVyaW5nIHRoZSBTdHJvbmc8PiBpbiB0aGUgbGFtYmRhIGlzIGNvcnJl
Y3QgaGVyZSBiZWNhdXNlIHdlIHdhbnQKKyAgICAgICAgdGhlIHJlc29sdXRpb24gdmFsdWUgdG8g
c3Vydml2ZSB1bnRpbCBlaXRoZXI6CisgICAgICAgIDEuIFRoZSB0YXNrIGlzIHByb2Nlc3NlZCBi
eSB0aGUgZXZlbnQgbG9vcCBhbmQgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQuCisgICAgICAgIDIu
IFRoZSBiYWNrL2ZvcndhcmQgY2FjaGUgZW50cnkgY29udGFpbmluZyB0aGlzIGRvY3VtZW50IGlz
IGRlc3Ryb3llZAorCisgICAgICAgIE5vdGUgdGhhdCB3ZSBkbyBub3QgbGVhayBoZXJlIGJlY2F1
c2Ugd2hlbiB0aGUgYmFjay9mb3J3YXJkIGNhY2hlJ3MgQ2FjaGVkRnJhbWUKKyAgICAgICAgZ2V0
cyBkZXN0cm95ZWQsIGl0IHdpbGwgY2FsbCBEb2N1bWVudDo6cHJlcGFyZUZvckRlc3RydWN0aW9u
KCksIHdoaWNoIHdpbGwgY2FsbAorICAgICAgICBXaW5kb3dFdmVudExvb3A6OnN0b3AoKSBhbmQg
ZGVzdHJveXMgYWxsIHBlbmRpbmcgdGFza3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMKKyAgICAgICAg
ZG9jdW1lbnQuIFRoaXMgd2lsbCB0aGVyZWZvcmUgZGVzdHJveSB0aGUgU3Ryb25nIGNhcHR1cmVk
IGluIHRoZSB0YXNrLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGlu
ZyBiYWNrL2ZvcndhcmQgY2FjaGUgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RP
TUNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZVN0b3JhZ2U6OmRv
U2VxdWVudGlhbE1hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlU3RvcmFnZTo6bWF0
Y2gpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpoYXMpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNh
Y2hlU3RvcmFnZTo6ZG9PcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlU3RvcmFnZTo6
cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlU3RvcmFnZTo6ZG9SZW1vdmUpOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjprZXlzKToKKyAgICAgICAgKiBNb2R1
bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5T3duZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmJsb2JM
b2FkaW5nU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjpibG9i
TG9hZGluZ0ZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6YmxvYkNo
dW5rKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmg6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmFsbG93KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJN
ZWRpYVJlcXVlc3Q6OmRlbnkpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9JRExUeXBlcy5oOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NR3VhcmRlZE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
UHJvbWlzZURlZmVycmVkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6
Y2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6d2hlblNl
dHRsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpyZWplY3QpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmg6CisgICAgICAgIChXZWJD
b3JlOjpEZWZlcnJlZFByb21pc2U6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJy
ZWRQcm9taXNlOjpyZXNvbHZlV2l0aE5ld2x5Q3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpE
ZWZlcnJlZFByb21pc2U6OnJlc29sdmVDYWxsYmFja1ZhbHVlV2l0aE5ld2x5Q3JlYXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6OnJlamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpEZWZlcnJlZFByb21pc2U6OnJlc29sdmVXaXRoQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6RGVmZXJyZWRQcm9taXNlOjpyZWplY3RXaXRoQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6RGVmZXJyZWRQcm9taXNlOjpzaG91bGRJZ25vcmVSZXF1ZXN0VG9GdWxmaWxsIGNvbnN0
KToKKyAgICAgICAgKiBjc3MvRm9udEZhY2VTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dEZhY2VTZXQ6OmRpZEZpcnN0TGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0
Ojpjb21wbGV0ZWRMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0OjpmYWNl
RmluaXNoZWQpOgorICAgICAgICAqIGRvbS9BY3RpdmVET01DYWxsYmFjay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY3RpdmVET01DYWxsYmFjazo6YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRl
ZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVET01DYWxsYmFjazo6YWN0aXZlRE9N
T2JqZWN0QXJlU3RvcHBlZCBjb25zdCk6CisgICAgICAgICogZG9tL0FjdGl2ZURPTUNhbGxiYWNr
Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgICogcGFn
ZS9SZW1vdGVET01XaW5kb3cuaDoKKwogMjAxOS0xMS0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFBvcnQgV29ya2VyIHRvIHRoZSBIVE1MNSBldmVudCBsb29w
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5oCmluZGV4IGFiYTY1MTEzNDNhMzUyYzAzMWMy
ZjgzNDQ5Y2YxY2Q2MThhMDkwMjguLjg2NmEwNzY5ZWM2YmE4OTBmNTFmOGNhYjJhNzIyZDVkZTRh
YjUzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5oCkBAIC0zNyw2ICszNyw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGxpZmV0aW1lIGlzIGd1YXJhbnRlZWQgYnkgc29tZXRoaW5n
IGVsc2UuCiAqLwogCitlbnVtIGNsYXNzIFNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jayA6
IGJvb2wgeyBObywgWWVzIH07CisKIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBIYW5kbGU7CiAK
IC8vIENyZWF0aW5nIGEgSlNWYWx1ZSBIYW5kbGUgaXMgaW52YWxpZApAQCAtNDQsNyArNDYsNyBA
QCB0ZW1wbGF0ZSA8PiBjbGFzcyBIYW5kbGU8SlNWYWx1ZT47CiAKIGNsYXNzIEhhbmRsZUJhc2Ug
ewogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBmcmllbmQgY2xhc3MgV2VhazsKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gZnJpZW5kIGNsYXNzIFN0cm9uZzsKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgU2hvdWxkU3Ryb25nRGVzdHJ1Y3RvckdyYWJMb2NrIHNob3VsZFN0cm9uZ0Rlc3Ry
dWN0b3JHcmFiTG9jaz4gZnJpZW5kIGNsYXNzIFN0cm9uZzsKICAgICBmcmllbmQgY2xhc3MgSGFu
ZGxlU2V0OwogICAgIGZyaWVuZCBzdHJ1Y3QgSlNDYWxsYmFja09iamVjdERhdGE7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0cm9uZy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvU3Ryb25nLmgKaW5kZXggYmY0ZGQzOTQ0NDNkM2NmOWQxOWYzY2Y1MzU3
ZmZiNGI2Njk4NTVhOS4uYzM3NDgxYTk2ZjM0NWNlMjVmMmIyZGY3MDhkNzY2NDE4Y2M0ODYwNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Ryb25nLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Ryb25nLmgKQEAgLTI4LDE2ICsyOCwxNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSAiSGFuZGxlLmgiCiAjaW5jbHVkZSAi
SGFuZGxlU2V0LmgiCisjaW5jbHVkZSAiSlNMb2NrLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBj
bGFzcyBWTTsKIAogLy8gQSBzdHJvbmdseSByZWZlcmVuY2VkIGhhbmRsZSB0aGF0IHByZXZlbnRz
IHRoZSBvYmplY3QgaXQgcG9pbnRzIHRvIGZyb20gYmVpbmcgZ2FyYmFnZSBjb2xsZWN0ZWQuCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgU3Ryb25nIDogcHVibGljIEhhbmRsZTxUPiB7Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgU2hvdWxkU3Ryb25nRGVzdHJ1Y3RvckdyYWJMb2NrIHNob3Vs
ZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jayA9IFNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9j
azo6Tm8+IGNsYXNzIFN0cm9uZyA6IHB1YmxpYyBIYW5kbGU8VD4gewogICAgIHVzaW5nIEhhbmRs
ZTxUPjo6c2xvdDsKICAgICB1c2luZyBIYW5kbGU8VD46OnNldFNsb3Q7Ci0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFU+IGZyaWVuZCBjbGFzcyBTdHJvbmc7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFUsIFNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jaz4gZnJpZW5kIGNsYXNzIFN0cm9uZzsK
IAogcHVibGljOgogICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFuZGxlPFQ+OjpFeHRlcm5hbFR5cGUg
RXh0ZXJuYWxUeXBlOwpAQCAtMTIwLDggKzEyMSwxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBpZiAoIXNsb3QoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgSGFuZGxlU2V0Ojpo
ZWFwRm9yKHNsb3QoKSktPmRlYWxsb2NhdGUoc2xvdCgpKTsKLSAgICAgICAgc2V0U2xvdCgwKTsK
KworICAgICAgICBhdXRvKiBoZWFwID0gSGFuZGxlU2V0OjpoZWFwRm9yKHNsb3QoKSk7CisgICAg
ICAgIGlmIChzaG91bGRTdHJvbmdEZXN0cnVjdG9yR3JhYkxvY2sgPT0gU2hvdWxkU3Ryb25nRGVz
dHJ1Y3RvckdyYWJMb2NrOjpZZXMpIHsKKyAgICAgICAgICAgIEpTTG9ja0hvbGRlciBob2xkZXIo
aGVhcC0+dm0oKSk7CisgICAgICAgICAgICBoZWFwLT5kZWFsbG9jYXRlKHNsb3QoKSk7CisgICAg
ICAgICAgICBzZXRTbG90KDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaGVhcC0+
ZGVhbGxvY2F0ZShzbG90KCkpOworICAgICAgICAgICAgc2V0U2xvdCgwKTsKKyAgICAgICAgfQog
ICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1N0cm9uZ0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0cm9uZ0lubGlu
ZXMuaAppbmRleCAyMDVmYjA0ZmI2OTE0N2Q4ZmQ1ZTcyYWUxMGEwMzJkNTFlMTNkOTgwLi4yODU1
ZWY4MWQxYmUwYzAzNWZlNDVhZmU2OWRkNDM4ZTdkZDhlZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9TdHJvbmdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvU3Ryb25nSW5saW5lcy5oCkBAIC0zMCwyMiArMzAsMjIgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIFN0cm9uZzxUPjo6U3Ry
b25nKFZNJiB2bSwgRXh0ZXJuYWxUeXBlIHZhbHVlKQordGVtcGxhdGUgPHR5cGVuYW1lIFQsIFNo
b3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jayBzaG91bGRTdHJvbmdEZXN0cnVjdG9yR3JhYkxv
Y2s+CitpbmxpbmUgU3Ryb25nPFQsIHNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jaz46OlN0
cm9uZyhWTSYgdm0sIEV4dGVybmFsVHlwZSB2YWx1ZSkKICAgICA6IEhhbmRsZTxUPih2bS5oZWFw
LmhhbmRsZVNldCgpLT5hbGxvY2F0ZSgpKQogewogICAgIHNldCh2YWx1ZSk7CiB9CiAKLXRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIFN0cm9uZzxUPjo6U3Ryb25nKFZNJiB2bSwgSGFuZGxl
PFQ+IGhhbmRsZSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBTaG91bGRTdHJvbmdEZXN0cnVjdG9y
R3JhYkxvY2sgc2hvdWxkU3Ryb25nRGVzdHJ1Y3RvckdyYWJMb2NrPgoraW5saW5lIFN0cm9uZzxU
LCBzaG91bGRTdHJvbmdEZXN0cnVjdG9yR3JhYkxvY2s+OjpTdHJvbmcoVk0mIHZtLCBIYW5kbGU8
VD4gaGFuZGxlKQogICAgIDogSGFuZGxlPFQ+KHZtLmhlYXAuaGFuZGxlU2V0KCktPmFsbG9jYXRl
KCkpCiB7CiAgICAgc2V0KGhhbmRsZS5nZXQoKSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotaW5saW5lIHZvaWQgU3Ryb25nPFQ+OjpzZXQoVk0mIHZtLCBFeHRlcm5hbFR5cGUgdmFsdWUp
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgU2hvdWxkU3Ryb25nRGVzdHJ1Y3RvckdyYWJMb2NrIHNo
b3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jaz4KK2lubGluZSB2b2lkIFN0cm9uZzxULCBzaG91
bGRTdHJvbmdEZXN0cnVjdG9yR3JhYkxvY2s+OjpzZXQoVk0mIHZtLCBFeHRlcm5hbFR5cGUgdmFs
dWUpCiB7CiAgICAgaWYgKCFzbG90KCkpCiAgICAgICAgIHNldFNsb3Qodm0uaGVhcC5oYW5kbGVT
ZXQoKS0+YWxsb2NhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Nh
Y2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RP
TUNhY2hlU3RvcmFnZS5jcHAKaW5kZXggNDUwMGM1YTI3NWRiZDFmOTMzNDcwMmYxMTMzYmYzYjk4
MDUzMzI1MS4uNjAzZTkzZmVlZjg3OTI1Y2IzNGFkZWJmYzQ5MTVlYmM1ZDA4NjgxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmNwcApAQCAt
ODcsMTggKzg3LDE2IEBAIHN0YXRpYyBpbmxpbmUgUmVmPERPTUNhY2hlPiBjb3B5Q2FjaGUoY29u
c3QgUmVmPERPTUNhY2hlPiYgY2FjaGUpCiAKIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpkb1NlcXVl
bnRpYWxNYXRjaChET01DYWNoZTo6UmVxdWVzdEluZm8mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9u
cyYmIG9wdGlvbnMsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKLSAgICBzdGFy
dFNlcXVlbnRpYWxNYXRjaChXVEY6Om1hcChtX2NhY2hlcywgY29weUNhY2hlKSwgV1RGTW92ZShp
bmZvKSwgV1RGTW92ZShvcHRpb25zKSwgW3RoaXMsIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5k
aW5nQWN0aXZpdHkoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oYXV0byYmIHJl
c3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGVucXVldWVUYXNrKFtwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUgewotICAgICAgICAg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICAgICAgICAgIHByb21pc2Ut
PnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIXJlc3VsdC5yZXR1cm5WYWx1ZSgp
KSB7Ci0gICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURM
SW50ZXJmYWNlPEZldGNoUmVzcG9uc2U+PigqcmVzdWx0LnJldHVyblZhbHVlKCkpOwotICAgICAg
ICB9KTsKKyAgICBzdGFydFNlcXVlbnRpYWxNYXRjaChXVEY6Om1hcChtX2NhY2hlcywgY29weUNh
Y2hlKSwgV1RGTW92ZShpbmZvKSwgV1RGTW92ZShvcHRpb25zKSwgW3BlbmRpbmdBY3Rpdml0eSA9
IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0o
YXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9u
KCkpIHsKKyAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlv
bigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXJlc3Vs
dC5yZXR1cm5WYWx1ZSgpKSB7CisgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJ
bnRlcmZhY2U8RmV0Y2hSZXNwb25zZT4+KCpyZXN1bHQucmV0dXJuVmFsdWUoKSk7CiAgICAgfSk7
CiB9CiAKQEAgLTEwNiw5ICsxMDQsNyBAQCB2b2lkIERPTUNhY2hlU3RvcmFnZTo6bWF0Y2goRE9N
Q2FjaGU6OlJlcXVlc3RJbmZvJiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcAogewogICAg
IHJldHJpZXZlQ2FjaGVzKFt0aGlzLCBpbmZvID0gV1RGTW92ZShpbmZvKSwgb3B0aW9ucyA9IFdU
Rk1vdmUob3B0aW9ucyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShPcHRpb25hbDxFeGNl
cHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewot
ICAgICAgICAgICAgZW5xdWV1ZVRhc2soW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNl
cHRpb24gPSBXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKV0oKSBtdXRhYmxlIHsKLSAgICAgICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoV1RGTW92ZShleGNlcHRpb24pKTsKLSAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFdURk1vdmUoKmV4Y2VwdGlvbikpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTExOCw5ICsxMTQsNyBAQCB2b2lk
IERPTUNhY2hlU3RvcmFnZTo6bWF0Y2goRE9NQ2FjaGU6OlJlcXVlc3RJbmZvJiYgaW5mbywgQ2Fj
aGVRdWVyeU9wdGlvbnMmJiBvcAogICAgICAgICAgICAgICAgIG1fY2FjaGVzW3Bvc2l0aW9uXS0+
bWF0Y2goV1RGTW92ZShpbmZvKSwgV1RGTW92ZShvcHRpb25zKSwgV1RGTW92ZShwcm9taXNlKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZW5x
dWV1ZVRhc2soW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSgpIG11dGFibGUgewotICAgICAg
ICAgICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKLSAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTEzMSwxMyArMTI1LDExIEBAIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjptYXRjaChET01DYWNo
ZTo6UmVxdWVzdEluZm8mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9wCiB2b2lkIERPTUNh
Y2hlU3RvcmFnZTo6aGFzKGNvbnN0IFN0cmluZyYgbmFtZSwgRE9NUHJvbWlzZURlZmVycmVkPElE
TEJvb2xlYW4+JiYgcHJvbWlzZSkKIHsKICAgICByZXRyaWV2ZUNhY2hlcyhbdGhpcywgbmFtZSwg
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKE9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRp
b24pIG11dGFibGUgewotICAgICAgICBlbnF1ZXVlVGFzayhbdGhpcywgbmFtZSwgcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IFdURk1vdmUoZXhjZXB0aW9uKV0oKSBtdXRh
YmxlIHsKLSAgICAgICAgICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgICAgICAgICBwcm9t
aXNlLnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKSk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKG1fY2Fj
aGVzLmZpbmRNYXRjaGluZyhbJl0oYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS0+bmFtZSgpID09
IG5hbWU7IH0pICE9IG5vdEZvdW5kKTsKLSAgICAgICAgfSk7CisgICAgICAgIGlmIChleGNlcHRp
b24pIHsKKyAgICAgICAgICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uLnZhbHVl
KCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBwcm9taXNlLnJl
c29sdmUobV9jYWNoZXMuZmluZE1hdGNoaW5nKFsmXShhdXRvJiBpdGVtKSB7IHJldHVybiBpdGVt
LT5uYW1lKCkgPT0gbmFtZTsgfSkgIT0gbm90Rm91bmQpOwogICAgIH0pOwogfQogCkBAIC0xODgs
OSArMTgwLDcgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1l
LCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPEQKIHsKICAgICByZXRyaWV2ZUNhY2hl
cyhbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKE9wdGlvbmFsPEV4Y2Vw
dGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoZXhjZXB0aW9uKSB7Ci0g
ICAgICAgICAgICBlbnF1ZXVlVGFzayhbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2Vw
dGlvbiA9IFdURk1vdmUoZXhjZXB0aW9uLnZhbHVlKCkpXSgpIG11dGFibGUgewotICAgICAgICAg
ICAgICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uKSk7Ci0gICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoKmV4Y2VwdGlvbikpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGRvT3BlbihuYW1lLCBXVEZNb3Zl
KHByb21pc2UpKTsKQEAgLTIwMSwyNiArMTkxLDIwIEBAIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpk
b09wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNl
CiB7CiAgICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oYXV0byYg
aXRlbSkgeyByZXR1cm4gaXRlbS0+bmFtZSgpID09IG5hbWU7IH0pOwogICAgIGlmIChwb3NpdGlv
biAhPSBub3RGb3VuZCkgewotICAgICAgICBlbnF1ZXVlVGFzayhbdGhpcywgcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSksIGNhY2hlID0gbV9jYWNoZXNbcG9zaXRpb25dLmNvcHlSZWYoKV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShET01DYWNoZTo6Y3JlYXRlKCpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFN0cmluZyB7IGNhY2hlLT5uYW1lKCkgfSwgY2FjaGUt
PmlkZW50aWZpZXIoKSwgbV9jb25uZWN0aW9uLmNvcHlSZWYoKSkpOwotICAgICAgICB9KTsKKyAg
ICAgICAgcHJvbWlzZS5yZXNvbHZlKERPTUNhY2hlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgU3RyaW5nIHsgbV9jYWNoZXNbcG9zaXRpb25dLT5uYW1lKCkgfSwgbV9jYWNoZXNb
cG9zaXRpb25dLT5pZGVudGlmaWVyKCksIG1fY29ubmVjdGlvbi5jb3B5UmVmKCkpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fY29ubmVjdGlvbi0+b3Blbigqb3JpZ2luKCksIG5h
bWUsIFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcGVuZGluZ0FjdGl2
aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyldKGNvbnN0IENhY2hlSWRlbnRpZmllck9y
RXJyb3ImIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgp
KSB7Ci0gICAgICAgICAgICBlbnF1ZXVlVGFzayhbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIGVycm9yID0gcmVzdWx0LmVycm9yKCldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAg
ICAgcHJvbWlzZS5yZWplY3QoRE9NQ2FjaGVFbmdpbmU6OmNvbnZlcnRUb0V4Y2VwdGlvbkFuZExv
ZyhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGVycm9yKSk7Ci0gICAgICAgICAgICB9KTsKLSAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpCisgICAgICAg
ICAgICBwcm9taXNlLnJlamVjdChET01DYWNoZUVuZ2luZTo6Y29udmVydFRvRXhjZXB0aW9uQW5k
TG9nKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgcmVzdWx0LmVycm9yKCkpKTsKKyAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlKCkuaGFkU3RvcmFnZUVycm9yKQog
ICAgICAgICAgICAgICAgIGxvZ0NvbnNvbGVQZXJzaXN0ZW5jeUVycm9yKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgbmFtZSk7CiAKLSAgICAgICAgICAgIGVucXVldWVUYXNrKFt0aGlzLCBuYW1l
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IHJlc3VsdC52YWx1ZSgp
LmlkZW50aWZpZXJdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgYXV0byBjYWNoZSA9IERP
TUNhY2hlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgU3RyaW5nIHsgbmFtZSB9
LCBpZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29weVJlZigpKTsKLSAgICAgICAgICAgICAgICBw
cm9taXNlLnJlc29sdmUoY2FjaGUpOwotICAgICAgICAgICAgICAgIG1fY2FjaGVzLmFwcGVuZChX
VEZNb3ZlKGNhY2hlKSk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGF1dG8gY2FjaGUg
PSBET01DYWNoZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFN0cmluZyB7IG5h
bWUgfSwgcmVzdWx0LnZhbHVlKCkuaWRlbnRpZmllciwgbV9jb25uZWN0aW9uLmNvcHlSZWYoKSk7
CisgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoY2FjaGUpOworICAgICAgICAgICAgbV9jYWNo
ZXMuYXBwZW5kKFdURk1vdmUoY2FjaGUpKTsKICAgICAgICAgfQogICAgIH0pOwogfQpAQCAtMjI5
LDkgKzIxMyw3IEBAIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpyZW1vdmUoY29uc3QgU3RyaW5nJiBu
YW1lLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mCiB7CiAgICAgcmV0cmlldmVDYWNo
ZXMoW3RoaXMsIG5hbWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShPcHRpb25hbDxFeGNl
cHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewot
ICAgICAgICAgICAgZW5xdWV1ZVRhc2soW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNl
cHRpb24gPSBXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKV0oKSBtdXRhYmxlIHsKLSAgICAgICAg
ICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbikpOwotICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKCpleGNlcHRpb24pKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBkb1JlbW92ZShuYW1lLCBXVEZN
b3ZlKHByb21pc2UpKTsKQEAgLTI0MiwzOCArMjI0LDMyIEBAIHZvaWQgRE9NQ2FjaGVTdG9yYWdl
Ojpkb1JlbW92ZShjb25zdCBTdHJpbmcmIG5hbWUsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29s
ZWFuCiB7CiAgICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oYXV0
byYgaXRlbSkgeyByZXR1cm4gaXRlbS0+bmFtZSgpID09IG5hbWU7IH0pOwogICAgIGlmIChwb3Np
dGlvbiA9PSBub3RGb3VuZCkgewotICAgICAgICBlbnF1ZXVlVGFzayhbcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoZmFs
c2UpOwotICAgICAgICB9KTsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGZhbHNlKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlKG1fY2FjaGVzW3Bv
c2l0aW9uXS0+aWRlbnRpZmllcigpLCBbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpXShjb25z
dCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICBlbnF1
ZXVlVGFzayhbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHJlc3VsdF0o
KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQotICAgICAg
ICAgICAgICAgIHByb21pc2UucmVqZWN0KERPTUNhY2hlRW5naW5lOjpjb252ZXJ0VG9FeGNlcHRp
b25BbmRMb2coc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCByZXN1bHQuZXJyb3IoKSkpOwotICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSgpLmhhZFN0
b3JhZ2VFcnJvcikKLSAgICAgICAgICAgICAgICAgICAgbG9nQ29uc29sZVBlcnNpc3RlbmN5RXJy
b3Ioc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBuYW1lKTsKLSAgICAgICAgICAgICAgICBwcm9t
aXNlLnJlc29sdmUoISFyZXN1bHQudmFsdWUoKS5pZGVudGlmaWVyKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfSk7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKQorICAgICAgICAg
ICAgcHJvbWlzZS5yZWplY3QoRE9NQ2FjaGVFbmdpbmU6OmNvbnZlcnRUb0V4Y2VwdGlvbkFuZExv
ZyhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHJlc3VsdC5lcnJvcigpKSk7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSgpLmhhZFN0b3JhZ2VFcnJvcikKKyAg
ICAgICAgICAgICAgICBsb2dDb25zb2xlUGVyc2lzdGVuY3lFcnJvcihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIG5hbWUpOworICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCEhcmVzdWx0LnZh
bHVlKCkuaWRlbnRpZmllcik7CisgICAgICAgIH0KICAgICB9KTsKIH0KIAogdm9pZCBET01DYWNo
ZVN0b3JhZ2U6OmtleXMoS2V5c1Byb21pc2UmJiBwcm9taXNlKQogewogICAgIHJldHJpZXZlQ2Fj
aGVzKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oT3B0aW9uYWw8RXhjZXB0aW9u
PiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7Ci0gICAgICAgIGVucXVldWVUYXNrKFt0aGlzLCBwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gV1RGTW92ZShleGNlcHRpb24pXSgp
IG11dGFibGUgewotICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAgICAgICAgICAgICAg
IHByb21pc2UucmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uLnZhbHVlKCkpKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChleGNlcHRpb24pIHsKKyAg
ICAgICAgICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uLnZhbHVlKCkpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBwcm9taXNlLnJlc29s
dmUoV1RGOjptYXAobV9jYWNoZXMsIFtdIChjb25zdCBhdXRvJiBjYWNoZSkgewotICAgICAgICAg
ICAgICAgIHJldHVybiBjYWNoZS0+bmFtZSgpOwotICAgICAgICAgICAgfSkpOwotICAgICAgICB9
KTsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFdURjo6bWFwKG1fY2FjaGVzLCBbXSAoY29uc3Qg
YXV0byYgY2FjaGUpIHsKKyAgICAgICAgICAgIHJldHVybiBjYWNoZS0+bmFtZSgpOworICAgICAg
ICB9KSk7CiAgICAgfSk7CiB9CiAKQEAgLTI4NywxNCArMjYzLDQgQEAgY29uc3QgY2hhciogRE9N
Q2FjaGVTdG9yYWdlOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKICAgICByZXR1cm4gIkNh
Y2hlU3RvcmFnZSI7CiB9CiAKLXZvaWQgRE9NQ2FjaGVTdG9yYWdlOjplbnF1ZXVlVGFzayhGdW5j
dGlvbjx2b2lkKCk+JiYgdGFzaykKLXsKLSAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuOwotICAgIGNv
bnRleHQtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24s
ICpjb250ZXh0LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwZW5kaW5nQWN0aXZp
dHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGFzayA9IFdURk1vdmUodGFzayldIHsK
LSAgICAgICAgdGFzaygpOwotICAgIH0pOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3JhZ2UuaAppbmRleCAw
MTA1MzlmNGI1N2Q2NmFiNzdmYzAwNGZlOGIyNDBkNWQyYTY3NmFmLi42ODZmMGEyYmYyNTM2YjU2
NmEyYzU4NmU2NjNiMDQ4YjQ1NjZiNTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmgKQEAgLTU5LDggKzU5LDYgQEAgcHJpdmF0ZToKICAgICBS
ZWY8RE9NQ2FjaGU+IGZpbmRDYWNoZU9yQ3JlYXRlKERPTUNhY2hlRW5naW5lOjpDYWNoZUluZm8m
Jik7CiAgICAgT3B0aW9uYWw8Q2xpZW50T3JpZ2luPiBvcmlnaW4oKSBjb25zdDsKIAotICAgIHZv
aWQgZW5xdWV1ZVRhc2soRnVuY3Rpb248dm9pZCgpPiYmKTsKLQogICAgIFZlY3RvcjxSZWY8RE9N
Q2FjaGU+PiBtX2NhY2hlczsKICAgICB1aW50NjRfdCBtX3VwZGF0ZUNvdW50ZXIgeyAwIH07CiAg
ICAgUmVmPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKaW5kZXggMDAwZDc5ZWQ2
OGY3ZWFiNDYzYjYzMDExM2RlYTU5NWRhOWI1NDE0MS4uMjVlY2JlOWEzODY4ZGIyYjI4ZWU1Njcx
ZTYwMDBhMzM0ZDQ4ZGNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlPd25lci5jcHAKQEAgLTM5LDE3ICszOSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotdm9pZCBGZXRjaEJvZHlPd25lcjo6cnVuTmV0d29ya1Rhc2tXaGVuUG9zc2libGUoRnVu
Y3Rpb248dm9pZCgpPiYmIHRhc2spCi17Ci0gICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoIWNvbnRleHQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpKQotICAgICAgICByZXR1cm4gdGFz
aygpOwotCi0gICAgY29udGV4dC0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6Ok5l
dHdvcmtpbmcsICpjb250ZXh0LCBbcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0
eSgqdGhpcyksIHRhc2sgPSBXVEZNb3ZlKHRhc2spXSB7Ci0gICAgICAgIHRhc2soKTsKLSAgICB9
KTsKLX0KLQogRmV0Y2hCb2R5T3duZXI6OkZldGNoQm9keU93bmVyKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIE9wdGlvbmFsPEZldGNoQm9keT4mJiBib2R5LCBSZWY8RmV0Y2hIZWFk
ZXJzPiYmIGhlYWRlcnMpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBt
X2JvZHkoV1RGTW92ZShib2R5KSkKQEAgLTI4MSwzMSArMjcwLDI3IEBAIHZvaWQgRmV0Y2hCb2R5
T3duZXI6OmZpbmlzaEJsb2JMb2FkaW5nKCkKIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2JMb2Fk
aW5nU3VjY2VlZGVkKCkKIHsKICAgICBBU1NFUlQoIWlzQm9keU51bGwoKSk7Ci0gICAgcnVuTmV0
d29ya1Rhc2tXaGVuUG9zc2libGUoW3RoaXNdKCkgbXV0YWJsZSB7CiAjaWYgRU5BQkxFKFNUUkVB
TVNfQVBJKQotICAgICAgICBpZiAobV9yZWFkYWJsZVN0cmVhbVNvdXJjZSkgewotICAgICAgICAg
ICAgbV9yZWFkYWJsZVN0cmVhbVNvdXJjZS0+Y2xvc2UoKTsKLSAgICAgICAgICAgIG1fcmVhZGFi
bGVTdHJlYW1Tb3VyY2UgPSBudWxscHRyOwotICAgICAgICB9CisgICAgaWYgKG1fcmVhZGFibGVT
dHJlYW1Tb3VyY2UpIHsKKyAgICAgICAgbV9yZWFkYWJsZVN0cmVhbVNvdXJjZS0+Y2xvc2UoKTsK
KyAgICAgICAgbV9yZWFkYWJsZVN0cmVhbVNvdXJjZSA9IG51bGxwdHI7CisgICAgfQogI2VuZGlm
Ci0gICAgICAgIG1fYm9keS0+bG9hZGluZ1N1Y2NlZWRlZCgpOwotICAgIH0pOworICAgIG1fYm9k
eS0+bG9hZGluZ1N1Y2NlZWRlZCgpOwogICAgIGZpbmlzaEJsb2JMb2FkaW5nKCk7CiB9CiAKIHZv
aWQgRmV0Y2hCb2R5T3duZXI6OmJsb2JMb2FkaW5nRmFpbGVkKCkKIHsKICAgICBBU1NFUlQoIWlz
Qm9keU51bGwoKSk7Ci0gICAgcnVuTmV0d29ya1Rhc2tXaGVuUG9zc2libGUoW3RoaXNdKCkgbXV0
YWJsZSB7CiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQotICAgICAgICBpZiAobV9yZWFkYWJsZVN0
cmVhbVNvdXJjZSkgewotICAgICAgICAgICAgaWYgKCFtX3JlYWRhYmxlU3RyZWFtU291cmNlLT5p
c0NhbmNlbGxpbmcoKSkKLSAgICAgICAgICAgICAgICBtX3JlYWRhYmxlU3RyZWFtU291cmNlLT5l
cnJvcihFeGNlcHRpb24geyBUeXBlRXJyb3IsICJCbG9iIGxvYWRpbmcgZmFpbGVkIl9zfSk7Ci0g
ICAgICAgICAgICBtX3JlYWRhYmxlU3RyZWFtU291cmNlID0gbnVsbHB0cjsKLSAgICAgICAgfSBl
bHNlCisgICAgaWYgKG1fcmVhZGFibGVTdHJlYW1Tb3VyY2UpIHsKKyAgICAgICAgaWYgKCFtX3Jl
YWRhYmxlU3RyZWFtU291cmNlLT5pc0NhbmNlbGxpbmcoKSkKKyAgICAgICAgICAgIG1fcmVhZGFi
bGVTdHJlYW1Tb3VyY2UtPmVycm9yKEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIkJsb2IgbG9hZGlu
ZyBmYWlsZWQiX3N9KTsKKyAgICAgICAgbV9yZWFkYWJsZVN0cmVhbVNvdXJjZSA9IG51bGxwdHI7
CisgICAgfSBlbHNlCiAjZW5kaWYKLSAgICAgICAgICAgIG1fYm9keS0+bG9hZGluZ0ZhaWxlZChF
eGNlcHRpb24geyBUeXBlRXJyb3IsICJCbG9iIGxvYWRpbmcgZmFpbGVkIl9zfSk7Ci0gICAgfSk7
CisgICAgICAgIG1fYm9keS0+bG9hZGluZ0ZhaWxlZChFeGNlcHRpb24geyBUeXBlRXJyb3IsICJC
bG9iIGxvYWRpbmcgZmFpbGVkIl9zfSk7CiAgICAgZmluaXNoQmxvYkxvYWRpbmcoKTsKIH0KIApA
QCAtMzE0LDEwICsyOTksOCBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpibG9iQ2h1bmsoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgQVNTRVJUKGRhdGEpOwogI2lmIEVOQUJMRShT
VFJFQU1TX0FQSSkKICAgICBBU1NFUlQobV9yZWFkYWJsZVN0cmVhbVNvdXJjZSk7Ci0gICAgcnVu
TmV0d29ya1Rhc2tXaGVuUG9zc2libGUoW3RoaXMsIGFycmF5QnVmZmVyID0gQXJyYXlCdWZmZXI6
OnRyeUNyZWF0ZShkYXRhLCBzaXplKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFtX3JlYWRh
YmxlU3RyZWFtU291cmNlLT5lbnF1ZXVlKFdURk1vdmUoYXJyYXlCdWZmZXIpKSkKLSAgICAgICAg
ICAgIHN0b3AoKTsKLSAgICB9KTsKKyAgICBpZiAoIW1fcmVhZGFibGVTdHJlYW1Tb3VyY2UtPmVu
cXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKSkpCisgICAgICAgIHN0b3Ao
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwogICAgIFVOVVNFRF9QQVJBTShzaXpl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3du
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAppbmRl
eCAzYjM4OWE4MmRkMjk1OThmZWE4NWRkZGUyMGQ4YzA5YzRlYzAwMzY4Li5kZDIxZTU1NjZjYTQ4
MDdmODMzMThmMzIzNzk2MGVlZmM2ODQ5NTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCkBAIC0xMjUsOCArMTI1LDYgQEAgcHJvdGVjdGVkOgog
ICAgIFJlZjxGZXRjaEhlYWRlcnM+IG1faGVhZGVyczsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHJ1
bk5ldHdvcmtUYXNrV2hlblBvc3NpYmxlKEZ1bmN0aW9uPHZvaWQoKT4mJik7Ci0KICAgICBPcHRp
b25hbDxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX2lzQm9keU9wYXF1ZSB7
IGZhbHNlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IDIwOWQ5YWYxYmIzMDEzY2YzMzNjNTg0ODc2
YjM5OWM5MDg0ZDQxYzUuLjBlMDM4ZjMxNTQ0OWJiODA5MDRlZDBiZDk2YzdlMjBiOWJlZGU3NDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlh
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2Vy
TWVkaWFSZXF1ZXN0LmNwcApAQCAtMjMwLDUzICsyMzAsNDggQEAgc3RhdGljIGlubGluZSBib29s
IGlzTWVkaWFTdHJlYW1Db3JyZWN0bHlTdGFydGVkKGNvbnN0IE1lZGlhU3RyZWFtJiBzdHJlYW0p
CiB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmFsbG93KENhcHR1cmVEZXZpY2UmJiBhdWRpb0Rldmlj
ZSwgQ2FwdHVyZURldmljZSYmIHZpZGVvRGV2aWNlLCBTdHJpbmcmJiBkZXZpY2VJZGVudGlmaWVy
SGFzaFNhbHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBSRUxFQVNFX0xPRyhNZWRpYVN0cmVhbSwgIlVzZXJNZWRpYVJlcXVlc3Q6OmFsbG93
ICVzICVzIiwgYXVkaW9EZXZpY2UgPyBhdWRpb0RldmljZS5wZXJzaXN0ZW50SWQoKS51dGY4KCku
ZGF0YSgpIDogIiIsIHZpZGVvRGV2aWNlID8gdmlkZW9EZXZpY2UucGVyc2lzdGVudElkKCkudXRm
OCgpLmRhdGEoKSA6ICIiKTsKLSAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7
Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7
Ci0KLSAgICBkb2N1bWVudC0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OlVzZXJJ
bnRlcmFjdGlvbiwgKmRvY3VtZW50LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBhdWRpb0RldmljZSA9IFdURk1vdmUoYXVkaW9EZXZpY2UpLCB2aWRlb0RldmljZSA9IFdU
Rk1vdmUodmlkZW9EZXZpY2UpLCBkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQgPSBXVEZNb3ZlKGRl
dmljZUlkZW50aWZpZXJIYXNoU2FsdCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBbdGhp
cywgcHJvdGVjdG9yID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFJlZlB0cjxNZWRpYVN0cmVhbVByaXZh
dGU+JiYgcHJpdmF0ZVN0cmVhbSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRvIHNjb3BlRXhp
dCA9IG1ha2VTY29wZUV4aXQoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgaWYgKGlzQ29udGV4dFN0b3BwZWQoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGlmICghcHJpdmF0ZVN0cmVh
bSkgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HKE1lZGlhU3RyZWFtLCAiVXNlck1lZGlh
UmVxdWVzdDo6YWxsb3cgZmFpbGVkIHRvIGNyZWF0ZSBtZWRpYSBzdHJlYW0hIik7Ci0gICAgICAg
ICAgICAgICAgZGVueShNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6SGFyZHdhcmVFcnJvcik7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBhdXRv
JiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KTsKLSAgICAgICAgICAgIHByaXZhdGVTdHJlYW0tPm1vbml0b3JPcmllbnRhdGlvbihkb2N1bWVu
dC5vcmllbnRhdGlvbk5vdGlmaWVyKCkpOwotCi0gICAgICAgICAgICBhdXRvIHN0cmVhbSA9IE1l
ZGlhU3RyZWFtOjpjcmVhdGUoZG9jdW1lbnQsIHByaXZhdGVTdHJlYW0ucmVsZWFzZU5vbk51bGwo
KSk7Ci0gICAgICAgICAgICBzdHJlYW0tPnN0YXJ0UHJvZHVjaW5nRGF0YSgpOwotCi0gICAgICAg
ICAgICBpZiAoIWlzTWVkaWFTdHJlYW1Db3JyZWN0bHlTdGFydGVkKHN0cmVhbSkpIHsKLSAgICAg
ICAgICAgICAgICBkZW55KE1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpIYXJkd2FyZUVycm9yKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEFT
U0VSVChkb2N1bWVudC5pc0NhcHR1cmluZygpKTsKLSAgICAgICAgICAgIHN0cmVhbS0+ZG9jdW1l
bnQoKS0+c2V0SGFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2soKTsKLSAgICAgICAgICAgIG1fcHJv
bWlzZS0+cmVzb2x2ZShXVEZNb3ZlKHN0cmVhbSkpOwotICAgICAgICB9OwotCi0gICAgICAgIGF1
dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOwotICAgICAgICBkb2N1bWVudC5zZXREZXZpY2VJREhhc2hTYWx0KGRldmljZUlkZW50aWZp
ZXJIYXNoU2FsdCk7Ci0KLSAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xl
dG9uKCkuY3JlYXRlTWVkaWFTdHJlYW0oZG9jdW1lbnQubG9nZ2VyKCksIFdURk1vdmUoY2FsbGJh
Y2spLCBXVEZNb3ZlKGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCksIFdURk1vdmUoYXVkaW9EZXZp
Y2UpLCBXVEZNb3ZlKHZpZGVvRGV2aWNlKSwgbV9yZXF1ZXN0KTsKLQotICAgICAgICBpZiAoIW1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKworICAgIGF1dG8gY2FsbGJhY2sgPSBbdGhpcywgcHJv
dGVjdG9yID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFJlZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+JiYg
cHJpdmF0ZVN0cmVhbSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gc2NvcGVFeGl0ID0gbWFrZVNj
b3BlRXhpdChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIH0p
OworICAgICAgICBpZiAoaXNDb250ZXh0U3RvcHBlZCgpKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIGlmICghcHJpdmF0ZVN0cmVhbSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0co
TWVkaWFTdHJlYW0sICJVc2VyTWVkaWFSZXF1ZXN0OjphbGxvdyBmYWlsZWQgdG8gY3JlYXRlIG1l
ZGlhIHN0cmVhbSEiKTsKKyAgICAgICAgICAgIGRlbnkoTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246
OkhhcmR3YXJlRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCk7CisgICAgICAgIHByaXZhdGVTdHJlYW0tPm1vbml0b3JPcmllbnRhdGlvbihkb2N1
bWVudC5vcmllbnRhdGlvbk5vdGlmaWVyKCkpOworCisgICAgICAgIGF1dG8gc3RyZWFtID0gTWVk
aWFTdHJlYW06OmNyZWF0ZShkb2N1bWVudCwgcHJpdmF0ZVN0cmVhbS5yZWxlYXNlTm9uTnVsbCgp
KTsKKyAgICAgICAgc3RyZWFtLT5zdGFydFByb2R1Y2luZ0RhdGEoKTsKKworICAgICAgICBpZiAo
IWlzTWVkaWFTdHJlYW1Db3JyZWN0bHlTdGFydGVkKHN0cmVhbSkpIHsKKyAgICAgICAgICAgIGRl
bnkoTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OkhhcmR3YXJlRXJyb3IpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKGRvY3VtZW50LmlzQ2FwdHVyaW5n
KCkpOworICAgICAgICBzdHJlYW0tPmRvY3VtZW50KCktPnNldEhhc0NhcHR1cmVNZWRpYVN0cmVh
bVRyYWNrKCk7CisgICAgICAgIG1fcHJvbWlzZS0+cmVzb2x2ZShXVEZNb3ZlKHN0cmVhbSkpOwor
ICAgIH07CisKKyAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBkb2N1bWVudC5zZXREZXZpY2VJREhhc2hTYWx0KGRl
dmljZUlkZW50aWZpZXJIYXNoU2FsdCk7CisKKyAgICBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
OjpzaW5nbGV0b24oKS5jcmVhdGVNZWRpYVN0cmVhbShkb2N1bWVudC5sb2dnZXIoKSwgV1RGTW92
ZShjYWxsYmFjayksIFdURk1vdmUoZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KSwgV1RGTW92ZShh
dWRpb0RldmljZSksIFdURk1vdmUodmlkZW9EZXZpY2UpLCBtX3JlcXVlc3QpOworCisgICAgaWYg
KCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJM
RShXRUJfUlRDKQotICAgICAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50LnBhZ2UoKSkKLSAg
ICAgICAgICAgIHBhZ2UtPnJ0Y0NvbnRyb2xsZXIoKS5kaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVy
aW5nRm9yRG9jdW1lbnQoZG9jdW1lbnQpOworICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQu
cGFnZSgpKQorICAgICAgICBwYWdlLT5ydGNDb250cm9sbGVyKCkuZGlzYWJsZUlDRUNhbmRpZGF0
ZUZpbHRlcmluZ0ZvckRvY3VtZW50KGRvY3VtZW50KTsKICNlbmRpZgotICAgIH0pOwogfQogCiB2
b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmRlbnkoTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb24gcmVhc29u
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBAIC0zMjQsMTIgKzMxOSwxMCBAQCB2b2lkIFVzZXJN
ZWRpYVJlcXVlc3Q6OmRlbnkoTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb24gcmVhc29uLCBjb25zdCBT
dHJpbmcmIG1lc3NhZwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBkb2N1bWVudCgpLT5l
dmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6VXNlckludGVyYWN0aW9uLCAqZG9jdW1l
bnQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29kZSwgbWVzc2Fn
ZV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFtZXNzYWdlLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIG1fcHJvbWlzZS0+cmVqZWN0KGNvZGUsIG1lc3NhZ2UpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBtX3Byb21pc2UtPnJlamVjdChjb2RlKTsKLSAgICB9KTsKKyAgICBpZiAoIW1lc3Nh
Z2UuaXNFbXB0eSgpKQorICAgICAgICBtX3Byb21pc2UtPnJlamVjdChjb2RlLCBtZXNzYWdlKTsK
KyAgICBlbHNlCisgICAgICAgIG1fcHJvbWlzZS0+cmVqZWN0KGNvZGUpOwogfQogCiB2b2lkIFVz
ZXJNZWRpYVJlcXVlc3Q6OnN0b3AoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI3ZWMzM2NiZmUyZjMyOGMzNjEwNGNiMjJkZjRk
MTE0NWViYjQ1MjQuLjZmNzQ2YjE1OTdjYjAwOTk4NzVkMGQ2YjdkZTZlZmRhZGRhN2Y5ZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEyNTAsNiArMTI1MCw3IEBACiAJCTQ2RUYxNDJDMUY5N0I3RDgwMEMyQTUyNCAvKiBTZXJ2
aWNlV29ya2VyQ2xpZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZFRjE0MjIxRjk3QjdCQTAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnRz
LmggKi87IH07CiAJCTQ2RUYxNDJEMUY5N0I3RDgwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkVG
MTQyNDFGOTdCN0JBMDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudC5oICovOyB9OwogCQk0
NkVGQUYxMjFFNUZCOUYxMDBFN0YzNEIgLyogTG93UG93ZXJNb2RlTm90aWZpZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUZBRjEwMUU1RkI5RTEw
MEU3RjM0QiAvKiBMb3dQb3dlck1vZGVOb3RpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2RjAyQTFBMjM3MzdGODMwMDEwNkE2NCAvKiBB
YnN0cmFjdEV2ZW50TG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEFic3RyYWN0RXZlbnRMb29wLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZGQ0I2
MTgxQTcwODIwRTAwQzVBMjFFIC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzN0IzNzUxNUMxQTdFMTAwNkRD
ODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ5MDcwN0U3MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdM
RVdlYktpdEJyaWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDkwNzA3RTUxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDkyOTFFNEIx
MzQxNzJDODAwRTc1M0RFIC8qIEltYWdlUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDkyOTFFNEExMzQxNzJDODAwRTc1M0RFIC8q
IEltYWdlUmVuZGVyaW5nTW9kZS5oICovOyB9OwpAQCAtMjg3MTQsNiArMjg3MTUsNyBAQAogCQkJ
CTdDRDBFMkI4MUY4MEE0ODIwMDE2QTRDRSAvKiBBYm9ydENvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDRDBFMkJGMUY4MEE1NkUwMDE2QTRDRSAvKiBBYm9ydFNpZ25hbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDZCOTUxOTUyMDdENjMzNDAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2lu
ZG93LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkYwMkExQTIzNzM3RjgzMDAxMDZBNjQgLyogQWJz
dHJhY3RFdmVudExvb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk2MjA3RDYzM0EwMEE3
RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDgyMjMxMzFFMzg2
RTI0MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
MUUxQjFEMTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtMzA2NDQsNyArMzA2NDYsNiBAQAogCQkJCTc3QTE3QUE3MTJGMjhCMkEwMDRFMDJGNiAv
KiBKU09FU1ZlcnRleEFycmF5T2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGREY2QkFGOTEz
NEE0Qzk4MDA4MjI5MjAgLyogSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEQTkzMjY3MTY3MDNCQTkwMDg5ODJEQyAvKiBKU09mZmxpbmVBdWRpb0Nv
bnRleHQuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0NUJBNkFBMjM3NDkyNkMwMDRERkMwNyAvKiBN
YXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNDg3N0U2MUZB
QUIwMjUwMEMwNTc1OSAvKiBKU09mZnNjcmVlbkNhbnZhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzE0MEM1MjcxRkRGNTU4MjAwRDJBODczIC8qIEpTT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0UyMzM2NTFEQzdEQjFGMDBGMjhEMDEgLyog
SnNvbldlYktleS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTE0Nyw2ICszMTE0OCw3IEBACiAJCQkJ
OTMzMDlERjgwOTlFNjQ5MjAwNTZFNTgxIC8qIG1hcmt1cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTcyOEMzMTQxMjY4RTQzOTAwNDFFODlCIC8qIE1hcmt1cEFjY3VtdWxhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwMEM2MEUzRjEzRDc2RDdFMDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVySW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQ1QkE2QUEyMzc0OTI2QzAwNERGQzA3IC8qIE1h
dGNoZWREZWNsYXJhdGlvbnNDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkFCRTcyRjUxMDU5
QzFFQjAwRDg4OENDIC8qIE1hdGhNTEFubm90YXRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlGQUJFNzJGNTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDRBMjhBQUMxMkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0
b3J5LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L0lETFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCmluZGV4IDc1
MGVhOGRmYzZkNjAxYTIzYzdjYTA0MGMzYjM4YTViMDdlNDEzZDguLjMwNWJjZjUxNDRlMDJlMzYx
ZTVkMzJmMDQ3NTQxNWU1OGI4NjVmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL0lETFR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaApA
QCAtNDMsNyArNDMsNiBAQCBjbGFzcyBBcnJheUJ1ZmZlclZpZXc7CiBjbGFzcyBEYXRhVmlldzsK
IGNsYXNzIEpTVmFsdWU7CiBjbGFzcyBKU09iamVjdDsKLXRlbXBsYXRlPHR5cGVuYW1lPiBjbGFz
cyBTdHJvbmc7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR3VhcmRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HdWFyZGVkT2JqZWN0LmgKaW5kZXggNjNjMTc3MmY0YWI3ZmIzNTFl
MTRkYjhhMDVhOWY3YzcyYjc1OGI3Yi4uYTA0YjgzZjkwMzNiNjJjZGZhM2E4M2I5ODIzMDU5YmQ2
NzdhNzA1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HdWFy
ZGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HdWFyZGVk
T2JqZWN0LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHJvdGVjdGVkOgogICAgIERPTUd1YXJkZWRPYmpl
Y3QoSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OkpTQ2VsbCYpOwogCiAgICAgdm9pZCBjb250ZXh0
RGVzdHJveWVkKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gIW1fZ3Vh
cmRlZDsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2d1YXJkZWQ7IH0K
IAogICAgIEpTQzo6V2VhazxKU0M6OkpTQ2VsbD4gbV9ndWFyZGVkOwogICAgIEpTQzo6V2VhazxK
U0RPTUdsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5jcHAKaW5kZXggNTUwYmNjM2E2MDMx
OTIzOWEyYTY0YjJjZTdkZWFhN2Q1NmRmNDM5MS4uMGJjNWE4OTk4NGI5NmIxMTc1ZmNjOWJlY2Rj
NDI2ZTU1MTY5ZTIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Qcm9taXNlRGVmZXJyZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NUHJvbWlzZURlZmVycmVkLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0V4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT05PYmpl
Y3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5oPgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtNDUsOSArNDYsMTggQEAgSlNDOjpKU1ZhbHVlIERl
ZmVycmVkUHJvbWlzZTo6cHJvbWlzZSgpIGNvbnN0CiAKIHZvaWQgRGVmZXJyZWRQcm9taXNlOjpj
YWxsRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIFJlc29sdmVN
b2RlIG1vZGUsIEpTVmFsdWUgcmVzb2x1dGlvbikKIHsKLSAgICBpZiAoIWNhbkludm9rZUNhbGxi
YWNrKCkpCisgICAgaWYgKHNob3VsZElnbm9yZVJlcXVlc3RUb0Z1bGZpbGwoKSkKICAgICAgICAg
cmV0dXJuOwogCisgICAgaWYgKGFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSkgeworICAg
ICAgICBKU0M6OlN0cm9uZzxKU0M6OlVua25vd24sIFNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFi
TG9jazo6WWVzPiBzdHJvbmdSZXNvbHV0aW9uKGxleGljYWxHbG9iYWxPYmplY3Qudm0oKSwgcmVz
b2x1dGlvbik7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZXZlbnRMb29wKCku
cXVldWVUYXNrKFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsICpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1vZGUsIHN0cm9uZ1Jl
c29sdXRpb24gPSBXVEZNb3ZlKHN0cm9uZ1Jlc29sdXRpb24pXSgpIG11dGFibGUgeworICAgICAg
ICAgICAgaWYgKCFzaG91bGRJZ25vcmVSZXF1ZXN0VG9GdWxmaWxsKCkpCisgICAgICAgICAgICAg
ICAgY2FsbEZ1bmN0aW9uKCpnbG9iYWxPYmplY3QoKSwgbW9kZSwgc3Ryb25nUmVzb2x1dGlvbi5n
ZXQoKSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgLy8gRklY
TUU6IFdlIGNvdWxkIGhhdmUgZXJyb3Igc2luY2UgYW55IEpTIGNhbGwgY2FuIHRocm93IHN0YWNr
LW92ZXJmbG93IGVycm9ycy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAzNDAyCiAgICAgc3dpdGNoIChtb2RlKSB7CkBAIC02NSwxNSArNzUsMjIgQEAg
dm9pZCBEZWZlcnJlZFByb21pc2U6OmNhbGxGdW5jdGlvbihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgUmVzb2x2ZU0KIAogdm9pZCBEZWZlcnJlZFByb21pc2U6OndoZW5TZXR0
bGVkKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoaXNTdXNwZW5kZWQo
KSkKKyAgICBpZiAoc2hvdWxkSWdub3JlUmVxdWVzdFRvRnVsZmlsbCgpKQogICAgICAgICByZXR1
cm47CiAKKyAgICBpZiAoYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpKSB7CisgICAgICAg
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3Vy
Y2U6Ok5ldHdvcmtpbmcsICpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICB3aGVuU2V0dGxlZChXVEZNb3ZlKGNhbGxiYWNrKSk7Cisg
ICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgRE9NUHJvbWlzZTo6d2hl
blByb21pc2VJc1NldHRsZWQoZ2xvYmFsT2JqZWN0KCksIGRlZmVycmVkKCksIFdURk1vdmUoY2Fs
bGJhY2spKTsKIH0KIAogdm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdCgpCiB7Ci0gICAgaWYg
KGlzU3VzcGVuZGVkKCkpCisgICAgaWYgKHNob3VsZElnbm9yZVJlcXVlc3RUb0Z1bGZpbGwoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKGRlZmVycmVkKCkpOwpAQCAtODUsNyArMTAy
LDcgQEAgdm9pZCBEZWZlcnJlZFByb21pc2U6OnJlamVjdCgpCiAKIHZvaWQgRGVmZXJyZWRQcm9t
aXNlOjpyZWplY3Qoc3RkOjpudWxscHRyX3QpCiB7Ci0gICAgaWYgKGlzU3VzcGVuZGVkKCkpCisg
ICAgaWYgKHNob3VsZElnbm9yZVJlcXVlc3RUb0Z1bGZpbGwoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgQVNTRVJUKGRlZmVycmVkKCkpOwpAQCAtOTcsNyArMTE0LDcgQEAgdm9pZCBEZWZlcnJl
ZFByb21pc2U6OnJlamVjdChzdGQ6Om51bGxwdHJfdCkKIAogdm9pZCBEZWZlcnJlZFByb21pc2U6
OnJlamVjdChFeGNlcHRpb24gZXhjZXB0aW9uKQogewotICAgIGlmIChpc1N1c3BlbmRlZCgpKQor
ICAgIGlmIChzaG91bGRJZ25vcmVSZXF1ZXN0VG9GdWxmaWxsKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKQEAgLTEyOSw3ICsxNDYsNyBAQCB2b2lkIERlZmVy
cmVkUHJvbWlzZTo6cmVqZWN0KEV4Y2VwdGlvbiBleGNlcHRpb24pCiAKIHZvaWQgRGVmZXJyZWRQ
cm9taXNlOjpyZWplY3QoRXhjZXB0aW9uQ29kZSBlYywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQog
ewotICAgIGlmIChpc1N1c3BlbmRlZCgpKQorICAgIGlmIChzaG91bGRJZ25vcmVSZXF1ZXN0VG9G
dWxmaWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKQEAg
LTE2Miw3ICsxNzksNyBAQCB2b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0KEV4Y2VwdGlvbkNv
ZGUgZWMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogdm9pZCBEZWZlcnJlZFByb21pc2U6OnJl
amVjdChjb25zdCBKU0M6OlByaXZhdGVOYW1lJiBwcml2YXRlTmFtZSkKIHsKLSAgICBpZiAoaXNT
dXNwZW5kZWQoKSkKKyAgICBpZiAoc2hvdWxkSWdub3JlUmVxdWVzdFRvRnVsZmlsbCgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuaAppbmRleCBmMGExZTdlMjA0
YzgyODlkMTg5MGFjN2FjMjVhZWJkMGQxYjU1MGI4Li5jNTYzYTI2MDM4NGY4MDg3YTBlYmIwMTdl
OWQ0MzQ5NjM3NmY1ODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVByb21pc2VEZWZlcnJlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NUHJvbWlzZURlZmVycmVkLmgKQEAgLTI1LDkgKzI1LDExIEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiQWJzdHJhY3RFdmVudExvb3AuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5o
IgogI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgogI2luY2x1ZGUgIkpTRE9NR3VhcmRlZE9iamVj
dC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9DYXRjaFNjb3BlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNQcm9t
aXNlLmg+CiAKQEAgLTU4LDggKzYwLDkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIElE
TFR5cGU+CiAgICAgdm9pZCByZXNvbHZlKHR5cGVuYW1lIElETFR5cGU6OlBhcmFtZXRlclR5cGUg
dmFsdWUpCiAgICAgewotICAgICAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgaWYgKHNo
b3VsZElnbm9yZVJlcXVlc3RUb0Z1bGZpbGwoKSkKICAgICAgICAgICAgIHJldHVybjsKKwogICAg
ICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CiAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QoKSk7
CiAgICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBnbG9i
YWxPYmplY3QoKTsKQEAgLTY5LDggKzcyLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCByZXNvbHZl
KCkKICAgICB7Ci0gICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQorICAgICAgICBpZiAoc2hvdWxk
SWdub3JlUmVxdWVzdFRvRnVsZmlsbCgpKQogICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAg
IEFTU0VSVChkZWZlcnJlZCgpKTsKICAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKICAg
ICAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGdsb2JhbE9i
amVjdCgpOwpAQCAtODEsOCArODUsOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgSURM
VHlwZT4KICAgICB2b2lkIHJlc29sdmVXaXRoTmV3bHlDcmVhdGVkKHR5cGVuYW1lIElETFR5cGU6
OlBhcmFtZXRlclR5cGUgdmFsdWUpCiAgICAgewotICAgICAgICBpZiAoaXNTdXNwZW5kZWQoKSkK
KyAgICAgICAgaWYgKHNob3VsZElnbm9yZVJlcXVlc3RUb0Z1bGZpbGwoKSkKICAgICAgICAgICAg
IHJldHVybjsKKwogICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CiAgICAgICAgIEFTU0VSVChn
bG9iYWxPYmplY3QoKSk7CiAgICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QgPSBnbG9iYWxPYmplY3QoKTsKQEAgLTkzLDggKzk4LDkgQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPGNsYXNzIElETFR5cGU+CiAgICAgdm9pZCByZXNvbHZlQ2FsbGJhY2tWYWx1ZVdp
dGhOZXdseUNyZWF0ZWQoY29uc3QgRnVuY3Rpb248dHlwZW5hbWUgSURMVHlwZTo6SW5uZXJQYXJh
bWV0ZXJUeXBlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKT4mIGNyZWF0ZVZhbHVlKQogICAgIHsK
LSAgICAgICAgaWYgKGlzU3VzcGVuZGVkKCkpCisgICAgICAgIGlmIChzaG91bGRJZ25vcmVSZXF1
ZXN0VG9GdWxmaWxsKCkpCiAgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgQVNTRVJUKGRl
ZmVycmVkKCkpOwogICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KCkpOwogICAgICAgICBhdXRv
KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0KCk7CkBAIC0xMDUsOCArMTExLDkg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIElETFR5cGU+CiAgICAgdm9pZCByZWplY3Qo
dHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGlm
IChpc1N1c3BlbmRlZCgpKQorICAgICAgICBpZiAoc2hvdWxkSWdub3JlUmVxdWVzdFRvRnVsZmls
bCgpKQogICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIEFTU0VSVChkZWZlcnJlZCgpKTsK
ICAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKICAgICAgICAgSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdCgpOwpAQCAtMTIzLDggKzEz
MCw5IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYmFjaz4KICAgICB2b2lk
IHJlc29sdmVXaXRoQ2FsbGJhY2soQ2FsbGJhY2sgY2FsbGJhY2spCiAgICAgewotICAgICAgICBp
ZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgaWYgKHNob3VsZElnbm9yZVJlcXVlc3RUb0Z1bGZp
bGwoKSkKICAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7
CiAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QoKSk7CiAgICAgICAgIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3QoKTsKQEAgLTEzNSw4ICsx
NDMsOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2s+CiAgICAgdm9p
ZCByZWplY3RXaXRoQ2FsbGJhY2soQ2FsbGJhY2sgY2FsbGJhY2spCiAgICAgewotICAgICAgICBp
ZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgaWYgKHNob3VsZElnbm9yZVJlcXVlc3RUb0Z1bGZp
bGwoKSkKICAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7
CiAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QoKSk7CiAgICAgICAgIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3QoKTsKQEAgLTE1NSw2ICsx
NjQsOCBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKKyAgICBib29sIHNob3VsZElnbm9yZVJl
cXVlc3RUb0Z1bGZpbGwoKSBjb25zdCB7IHJldHVybiBpc0VtcHR5KCkgfHwgYWN0aXZlRE9NT2Jq
ZWN0QXJlU3RvcHBlZCgpOyB9CisKICAgICBKU0M6OkpTUHJvbWlzZSogZGVmZXJyZWQoKSBjb25z
dCB7IHJldHVybiBndWFyZGVkKCk7IH0KIAogICAgIGVudW0gY2xhc3MgUmVzb2x2ZU1vZGUgeyBS
ZXNvbHZlLCBSZWplY3QgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFj
ZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCmluZGV4IDQzY2Jh
ODk5MDRkZmZjOTBhZGMzOTYzMjYwYjk1MDI4YjQ1ZTNjMTUuLjI3ZmYxNzU3OTZlM2Y1ODE2ZDBh
NjJmNTEzYjc3YmUzYTQ5YmFhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
RmFjZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmNwcApAQCAt
MTk5LDIyICsxOTksMTQgQEAgdm9pZCBGb250RmFjZVNldDo6c3RhcnRlZExvYWRpbmcoKQogdm9p
ZCBGb250RmFjZVNldDo6ZGlkRmlyc3RMYXlvdXQoKQogewogICAgIG1faXNGaXJzdExheW91dERv
bmUgPSB0cnVlOwotICAgIGlmICghbV9iYWNraW5nLT5oYXNBY3RpdmVGb250RmFjZXMoKSAmJiAh
bV9yZWFkeVByb21pc2UtPmlzRnVsZmlsbGVkKCkpIHsKLSAgICAgICAgcXVldWVUYXNrS2VlcGlu
Z09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpGb250TG9hZGluZywgW3RoaXNdIHsKLSAg
ICAgICAgICAgIGlmICghbV9yZWFkeVByb21pc2UtPmlzRnVsZmlsbGVkKCkpCi0gICAgICAgICAg
ICAgICAgbV9yZWFkeVByb21pc2UtPnJlc29sdmUoKnRoaXMpOwotICAgICAgICB9KTsKLSAgICB9
CisgICAgaWYgKCFtX2JhY2tpbmctPmhhc0FjdGl2ZUZvbnRGYWNlcygpICYmICFtX3JlYWR5UHJv
bWlzZS0+aXNGdWxmaWxsZWQoKSkKKyAgICAgICAgbV9yZWFkeVByb21pc2UtPnJlc29sdmUoKnRo
aXMpOwogfQogCiB2b2lkIEZvbnRGYWNlU2V0Ojpjb21wbGV0ZWRMb2FkaW5nKCkKIHsKLSAgICBp
ZiAobV9pc0ZpcnN0TGF5b3V0RG9uZSAmJiAhbV9yZWFkeVByb21pc2UtPmlzRnVsZmlsbGVkKCkp
IHsKLSAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNl
OjpGb250TG9hZGluZywgW3RoaXNdIHsKLSAgICAgICAgICAgIGlmICghbV9yZWFkeVByb21pc2Ut
PmlzRnVsZmlsbGVkKCkpCi0gICAgICAgICAgICAgICAgbV9yZWFkeVByb21pc2UtPnJlc29sdmUo
KnRoaXMpOwotICAgICAgICB9KTsKLSAgICB9CisgICAgaWYgKG1faXNGaXJzdExheW91dERvbmUg
JiYgIW1fcmVhZHlQcm9taXNlLT5pc0Z1bGZpbGxlZCgpKQorICAgICAgICBtX3JlYWR5UHJvbWlz
ZS0+cmVzb2x2ZSgqdGhpcyk7CiB9CiAKIHZvaWQgRm9udEZhY2VTZXQ6OmZhY2VGaW5pc2hlZChD
U1NGb250RmFjZSYgZmFjZSwgQ1NTRm9udEZhY2U6OlN0YXR1cyBuZXdTdGF0dXMpCkBAIC0yMjYs
MjIgKzIxOCwyMCBAQCB2b2lkIEZvbnRGYWNlU2V0OjpmYWNlRmluaXNoZWQoQ1NTRm9udEZhY2Um
IGZhY2UsIENTU0ZvbnRGYWNlOjpTdGF0dXMgbmV3U3RhdHVzKQogICAgIGlmIChwZW5kaW5nUHJv
bWlzZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBxdWV1ZVRhc2tLZWVwaW5n
T2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkZvbnRMb2FkaW5nLCBbcGVuZGluZ1Byb21p
c2VzID0gV1RGTW92ZShwZW5kaW5nUHJvbWlzZXMpLCBuZXdTdGF0dXNdIHsKLSAgICAgICAgZm9y
IChhdXRvJiBwZW5kaW5nUHJvbWlzZSA6IHBlbmRpbmdQcm9taXNlcykgewotICAgICAgICAgICAg
aWYgKHBlbmRpbmdQcm9taXNlLT5oYXNSZWFjaGVkVGVybWluYWxTdGF0ZSkKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChuZXdTdGF0dXMgPT0gQ1NTRm9udEZhY2U6
OlN0YXR1czo6U3VjY2VzcykgewotICAgICAgICAgICAgICAgIGlmIChwZW5kaW5nUHJvbWlzZS0+
aGFzT25lUmVmKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgcGVuZGluZ1Byb21pc2UtPnByb21p
c2UtPnJlc29sdmUocGVuZGluZ1Byb21pc2UtPmZhY2VzKTsKLSAgICAgICAgICAgICAgICAgICAg
cGVuZGluZ1Byb21pc2UtPmhhc1JlYWNoZWRUZXJtaW5hbFN0YXRlID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChu
ZXdTdGF0dXMgPT0gQ1NTRm9udEZhY2U6OlN0YXR1czo6RmFpbHVyZSk7Ci0gICAgICAgICAgICAg
ICAgcGVuZGluZ1Byb21pc2UtPnByb21pc2UtPnJlamVjdChOZXR3b3JrRXJyb3IpOworICAgIGZv
ciAoYXV0byYgcGVuZGluZ1Byb21pc2UgOiBwZW5kaW5nUHJvbWlzZXMpIHsKKyAgICAgICAgaWYg
KHBlbmRpbmdQcm9taXNlLT5oYXNSZWFjaGVkVGVybWluYWxTdGF0ZSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICBpZiAobmV3U3RhdHVzID09IENTU0ZvbnRGYWNlOjpTdGF0dXM6OlN1
Y2Nlc3MpIHsKKyAgICAgICAgICAgIGlmIChwZW5kaW5nUHJvbWlzZS0+aGFzT25lUmVmKCkpIHsK
KyAgICAgICAgICAgICAgICBwZW5kaW5nUHJvbWlzZS0+cHJvbWlzZS0+cmVzb2x2ZShwZW5kaW5n
UHJvbWlzZS0+ZmFjZXMpOwogICAgICAgICAgICAgICAgIHBlbmRpbmdQcm9taXNlLT5oYXNSZWFj
aGVkVGVybWluYWxTdGF0ZSA9IHRydWU7CiAgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBBU1NFUlQobmV3U3RhdHVzID09IENTU0ZvbnRGYWNlOjpTdGF0dXM6OkZh
aWx1cmUpOworICAgICAgICAgICAgcGVuZGluZ1Byb21pc2UtPnByb21pc2UtPnJlamVjdChOZXR3
b3JrRXJyb3IpOworICAgICAgICAgICAgcGVuZGluZ1Byb21pc2UtPmhhc1JlYWNoZWRUZXJtaW5h
bFN0YXRlID0gdHJ1ZTsKICAgICAgICAgfQotICAgIH0pOworICAgIH0KIH0KIAogRm9udEZhY2VT
ZXQmIEZvbnRGYWNlU2V0OjpyZWFkeVByb21pc2VSZXNvbHZlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9BY3RpdmVET01DYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
QWN0aXZlRE9NQ2FsbGJhY2suY3BwCmluZGV4IGFlN2E0YTE1MDE0NTg3MWI5NDE0YjQxZDM5NzY0
NDkzY2JiODVhZjguLjJmNzkzNmFlZjM5MzcxNDkyZmJmMzc5NDdmYTczMjM2YzIyZjBjMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01DYWxsYmFjay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrLmNwcApAQCAtNDgsNCArNDgsMTYg
QEAgYm9vbCBBY3RpdmVET01DYWxsYmFjazo6Y2FuSW52b2tlQ2FsbGJhY2soKSBjb25zdAogICAg
IHJldHVybiBjb250ZXh0ICYmICFjb250ZXh0LT5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVk
KCkgJiYgIWNvbnRleHQtPmFjdGl2ZURPTU9iamVjdHNBcmVTdG9wcGVkKCk7CiB9CiAKK2Jvb2wg
QWN0aXZlRE9NQ2FsbGJhY2s6OmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSBjb25zdAor
eworICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgcmV0
dXJuIGNvbnRleHQgJiYgY29udGV4dC0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpOwor
fQorCitib29sIEFjdGl2ZURPTUNhbGxiYWNrOjphY3RpdmVET01PYmplY3RBcmVTdG9wcGVkKCkg
Y29uc3QKK3sKKyAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwor
ICAgIHJldHVybiAhY29udGV4dCB8fCBjb250ZXh0LT5hY3RpdmVET01PYmplY3RzQXJlU3RvcHBl
ZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQWN0aXZlRE9NQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVE
T01DYWxsYmFjay5oCmluZGV4IDJiMzViMTIwY2Q3NTQ0MjlkZDFlYjE0MzI4ZDU1NTY3NmJjMjk2
ODkuLjdiMTFjZTA3ZDM5YTM0YmU4NDg3Njc3NWQ5MjZmNWI3ODk0ODI2MjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01DYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9BY3RpdmVET01DYWxsYmFjay5oCkBAIC01MSw2ICs1MSw5IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5BY3RpdmVET01DYWxsYmFjaygpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBjYW5JbnZva2VDYWxsYmFjaygpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBh
Y3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBhY3RpdmVET01PYmplY3RBcmVTdG9wcGVkKCkgY29uc3Q7CiAgICAgCiAgICAgdmlydHVh
bCB2b2lkIHZpc2l0SlNGdW5jdGlvbihKU0M6OlNsb3RWaXNpdG9yJikgeyB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmgKaW5kZXggNWVlMDQ2ZWY1OTcyNDFhNzQ5YjA1MTRiMDdhMzUwMmU2ODVjMmMwZi4u
MWQzYWQwMDNkOGZkNDQ0MDdkMTE1Yjg4OWNlOTc2YTM4ZmZkMjk1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU2hhZG93Um9vdE1vZGUuaCIKICNpbmNs
dWRlICJTaW11bGF0ZWRDbGlja09wdGlvbnMuaCIKICNpbmNsdWRlICJTdHlsZUNoYW5nZS5oIgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IGE2
MzM0N2I4Mjc5ZDBlZmE0OGMzNTRhYTA4MTY5ZjQ3MzVjYzQ4N2IuLjBmMTcyYTEyOWRhZDAxYjRk
M2M5YmIxMjMyY2MwMmQzMzExNWNmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaApAQCAtNDQsNyArNDQsNiBAQCBjbGFzcyBDYWxsRnJhbWU7CiBjbGFz
cyBFeGNlcHRpb247CiBjbGFzcyBKU1Byb21pc2U7CiBjbGFzcyBWTTsKLXRlbXBsYXRlPHR5cGVu
YW1lPiBjbGFzcyBTdHJvbmc7CiB9CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmgKaW5kZXggNTg3MjkyZGQwZmFhZWRmZjA2NzA5MmYzYWU5ZjlmY2U0OTg4ODli
OC4uNGJiMWM5Zjc2MmU5OWFlYWU4MmEwOGFmZGEzZmI5ZjVmY2Q1ZWQxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIK
ICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hh
bmRsZVR5cGVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgpAQCAtNDUsNyArNDYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIENh
bGxGcmFtZTsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgSlNWYWx1ZTsKLXRlbXBsYXRlPHR5cGVu
YW1lPiBjbGFzcyBTdHJvbmc7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1JlbW90ZURPTVdpbmRvdy5oCmluZGV4IDQwNTBkZjUwOWFkYTk5YzFiNDI4MzA1NTljMmM4
ZThjZjQzZWIxODMuLjZlMDVjM2IyODMwYTllMzE0NjUzOGQ3MWNiNjZiMTQyNmJjMWE4MjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVtb3RlRE9NV2luZG93LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cuaApAQCAtMjcsNiArMjcsNyBAQAogCiAj
aW5jbHVkZSAiQWJzdHJhY3RET01XaW5kb3cuaCIKICNpbmNsdWRlICJSZW1vdGVGcmFtZS5oIgor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2MuaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKQEAgLTM1LDcgKzM2LDYgQEAgY2xh
c3MgQ2FsbEZyYW1lOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBKU09iamVjdDsKIGNs
YXNzIEpTVmFsdWU7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgU3Ryb25nOwogfQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmZlNDZmYTNjMjBhNjRlY2MxNGRhNWQyMzVmOWY4ZTUw
ODA2ZWZlNy4uODM5MGFkZThlYWQ4ZmUzNzRhMmE1ZDcxZWU5YzgxZjQzNTQwZjc3ZCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDE5LTExLTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgTWFrZSBEZWZlcnJlZFByb21pc2UgYmVoYXZlIG5pY2VseSB3aXRoIHJl
Z2FyZHMgdG8gdGhlIGJhY2svZm9yd2FyZCBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzOTc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmViYXNlbGluZSB0ZXN0IHdoZXJlIG9yZGVyaW5nIGhh
cyBjaGFuZ2VkIHNsaWdodGx5IGR1ZSB0byBub3QgcXVldWVpbmcgYSB0YXNrIGFueW1vcmUgYmVm
b3JlCisgICAgICAgIHJlc29sdmluZyB0aGUgcHJvbWlzZS4gVGhpcyByZXN0b3JlcyBwcmUtcjI1
MTc0NiBiZWhhdmlvci4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2Vz
LWdldFVzZXJNZWRpYS1leHBlY3RlZC50eHQ6CisKIDIwMTktMTEtMDcgIFl1cnkgU2VtaWtoYXRz
a3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvdGFyZ2V0L3RhcmdldC1ldmVudHMtZm9yLXByb3Zpc2lvbmFsLXBhZ2Uu
aHRtbCBpcyBmbGFreSB3aGVuIHJ1bm5pbmcgd2l0aCBvdGhlciB0ZXN0cwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0VXNlck1lZGlhLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdl
dFVzZXJNZWRpYS1leHBlY3RlZC50eHQKaW5kZXggMDM0NzM4YTZjOTc3NWQ0OTdhZTRlNTI0Yzgz
YjI4OTZlMWRjMzhkNy4uMGVjMzI1MTNmZTQ5MGRhZGVmNjJkMjVhMjIzYThmYzZlMjdhZjkyYSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMtZ2V0
VXNlck1lZGlhLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L01lZGlhRGV2aWNlcy1nZXRVc2VyTWVkaWEtZXhwZWN0ZWQudHh0CkBAIC02LDkgKzYsOSBAQCBP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURQogUEFTUyB0eXBlb2YgbmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy53ZWJraXRHZXRVc2VyTWVkaWEgaXMgJ3VuZGVmaW5lZCcKIAogUEFTUyBuYXZpZ2F0b3IubWVk
aWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oZ290U3RyZWFtMSk7IGRp
ZCBub3QgdGhyb3cgZXhjZXB0aW9uLgotUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVz
ZXJNZWRpYS5hcHBseSh1bmRlZmluZWQpIHJlamVjdGVkIHdpdGggZXJyb3I6IFR5cGVFcnJvcjog
Q2FuIG9ubHkgY2FsbCBNZWRpYURldmljZXMuZ2V0VXNlck1lZGlhIG9uIGluc3RhbmNlcyBvZiBN
ZWRpYURldmljZXMKIFBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoKSBy
ZWplY3RlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIFBBU1MgbmF2aWdhdG9y
Lm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe30pIHJlamVjdGVkIHdpdGggZXJyb3I6IFR5cGVF
cnJvcjogVHlwZSBlcnJvcgorUEFTUyBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRp
YS5hcHBseSh1bmRlZmluZWQpIHJlamVjdGVkIHdpdGggZXJyb3I6IFR5cGVFcnJvcjogQ2FuIG9u
bHkgY2FsbCBNZWRpYURldmljZXMuZ2V0VXNlck1lZGlhIG9uIGluc3RhbmNlcyBvZiBNZWRpYURl
dmljZXMKIFBBU1MgU3RyZWFtIDEgZ2VuZXJhdGVkLgogUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFj
a3MoKS5sZW5ndGggaXMgMQogUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMg
MAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383158</attachid>
            <date>2019-11-08 13:36:09 -0800</date>
            <delta_ts>2019-11-08 14:11:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203976-20191108133602.patch</filename>
            <type>text/plain</type>
            <size>46506</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
Yjc5OGY4ZDUxYjM1MzkwNGRhY2U2ZDQ0YmYxMzJiYjBmZGNjNmQ5Li43MThjMjhlZWViYTRlYWJm
MWEyZTJmNzExMDFiNGFjNjhkZTYwMjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxOS0xMS0wOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgRGVmZXJyZWRQcm9taXNlIGJlaGF2ZSBuaWNlbHkgd2l0aCByZWdhcmRz
IHRvIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMzk3NgorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2Ug
Tml3YS4KKworICAgICAgICBBZGQgdGVtcGxhdGUgcGFyYW1ldGVyIHRvIEpTQzo6U3Ryb25nIHRv
IGluZGljYXRlIHRoYXQgdGhlIGRlc3RydWN0b3Igc2hvdWxkIGdyYWIgdGhlIEpTIGxvY2suCisg
ICAgICAgIE5vcm1hbGx5LCB0aGUgY2FsbGVycyBhcmUgaW4gY2hhcmdlIG9mIGdyYWJiaW5nIHRo
ZSBsb2NrIGJ1dCB0aGlzIGlzIG5vdCBhbHdheXMgZmVhc2libGUuCisgICAgICAgIEluIHBhcnRp
Y3VsYXIsIGluIHRoaXMgcGF0Y2gsIEkgY2FwdHVyZSBhIEpTQzo6U3Ryb25nIGluIGEgbGFtYmRh
LiBJZiB0aGUgZG9jdW1lbnQgZ2V0cyBkZXN0cm95ZWQKKyAgICAgICAgYmVmb3JlIHRoZSBsYW1i
ZGEgaGFzIHJ1biwgdGhlIGxhbWJkYSB3aWxsIGdldCBkZXN0cm95ZWQgYW5kIGl0IHdpbGwgZGVz
dHJveSB0aGUgY2FwdHVyZWQgSlNDOjpTdHJvbmcKKyAgICAgICAgYXMgYSByZXN1bHQuCisKKyAg
ICAgICAgKiBoZWFwL0hhbmRsZS5oOgorICAgICAgICAqIGhlYXAvU3Ryb25nLmg6CisgICAgICAg
IChKU0M6OlN0cm9uZzo6Y2xlYXIpOgorICAgICAgICAqIGhlYXAvU3Ryb25nSW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpzaG91bGRTdHJvbmdEZXN0cnVjdG9yR3JhYkxvY2s+OjpTdHJvbmcpOgor
ICAgICAgICAoSlNDOjpzaG91bGRTdHJvbmdEZXN0cnVjdG9yR3JhYkxvY2s+OjpzZXQpOgorCiAy
MDE5LTExLTA4ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAg
W0pTQ10gVXNlIExpbmtUaW1lQ29uc3RhbnRzIGFuZCBtYWtlIHNvbWUgcHJvcGVydGllcyBsYXp5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggNzY5N2FjY2EwMGJlNTI0NjcyMDYyZGNiYTkzYzk2NDZlN2QwMzQxYy4u
MWE0MjUyZmNjZTkyNmZjN2ZjYzRjYWE1MDk0YmNiZDNlYmE4MzZlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDg1IEBACisyMDE5LTExLTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgTWFrZSBEZWZlcnJlZFByb21pc2UgYmVoYXZlIG5pY2VseSB3aXRoIHJlZ2Fy
ZHMgdG8gdGhlIGJhY2svZm9yd2FyZCBjYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzOTc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3Vr
ZSBOaXdhLgorCisgICAgICAgIFByZXZpb3VzbHksIERlZmVycmVkUHJvbWlzZSB3b3VsZCBpZ25v
cmUgcmVxdWVzdHMgdG8gZnVsZmlsbCB0aGUgcHJvbWlzZSBpZgorICAgICAgICByZWplY3QvcmVz
b2x2ZS9zZXR0bGUgZ290IGNhbGxlZCB3aGlsZSB0aGUgcHJvbWlzZSdzIHNjcmlwdCBleGVjdXRp
b24gY29udGV4dAorICAgICAgICBpcyBzdXNwZW5kZWQgaW4gdGhlIGJhY2svZm9yd2FyZCBjYWNo
ZS4gVGhpcyBpcyByZWFsbHkgbmV2ZXIgdGhlIHJpZ2h0IHRoaW5nIHRvCisgICAgICAgIGRvIHRo
b3VnaCBiZWNhdXNlIHRoaXMgbWVhbnMgdGhlIHByb21pc2Ugd2lsbCBuZXZlciBiZSBmdWxmaWxs
ZWQgaWYgdGhlIHVzZXIKKyAgICAgICAgZXZlciBnb2VzIGJhY2sgdG8gdGhpcyBwYWdlLgorCisg
ICAgICAgIFRvIGFkZHJlc3MgdGhlIGlzc3VlLCBEZWZlcnJlZFByb21pc2Ugbm93IHNjaGVkdWxl
cyBhIHRhc2sgb24gdGhlIGV2ZW50IGxvb3AgaWYKKyAgICAgICAgaXQgZ2V0cyBmdWxmaWxsZWQg
d2hpbGUgaXRzIHNjcmlwdCBleGVjdXRpb24gY29udGV4dCBpcyBzdXNwZW5kZWQuIEFzIGEgcmVz
dWx0LAorICAgICAgICB0aGUgcHJvbWlzZSB3aWxsIHByb3Blcmx5IGdldCBmdWxmaWxsZWQgaWYg
dGhlIGRvY3VtZW50IGV2ZXIgY29tZXMgb3V0IG9mIHRoZQorICAgICAgICBiYWNrL2ZvcndhcmQg
Y2FjaGUgYW5kIGRldmVsb3BlcnMgdXNpbmcgRGVmZXJyZWRQcm9taXNlIGRvIG5vdCBoYXZlIHRv
IHdvcnJ5CisgICAgICAgIGFib3V0IHN1c3BlbnNpb24uCisKKyAgICAgICAgTm93IHRoYXQgRGVm
ZXJyZWRQcm9taXNlIHByb3Blcmx5IGRlYWxzIHdpdGggc3VzcGVuZGVkIGRvY3VtZW50cywgdGhp
cyBwYXRjaCBhbHNvCisgICAgICAgIHJldmVydHMgY2hhbmdlcyBJIG1hZGUgcmVjZW50bHkgaW4g
Y29kZSB1c2luZyBEZWZlcnJlZFByb21pc2UuIEkgaGFkIG1hZGUgdGhlbQorICAgICAgICBxdWV1
ZSBhIHRhc2sgb24gdGhlIGV2ZW50IGxvb3AgYmVmb3JlIGZ1bGZpbGxpbmcgdGhlIHByb21pc2Us
IHdoaWNoIGRpZCBub3QgbWF0Y2gKKyAgICAgICAgdGhlaXIgc3BlY2lmaWNhdGlvbiBhbmQgaXMg
bm8gbG9uZ2VyIG5lZWRlZC4KKworICAgICAgICBOb3RlIHRoYXQgY2FwdHVyaW5nIHRoZSBTdHJv
bmc8PiBpbiB0aGUgbGFtYmRhIGlzIGNvcnJlY3QgaGVyZSBiZWNhdXNlIHdlIHdhbnQKKyAgICAg
ICAgdGhlIHJlc29sdXRpb24gdmFsdWUgdG8gc3Vydml2ZSB1bnRpbCBlaXRoZXI6CisgICAgICAg
IDEuIFRoZSB0YXNrIGlzIHByb2Nlc3NlZCBieSB0aGUgZXZlbnQgbG9vcCBhbmQgdGhlIHByb21p
c2UgaXMgcmVzb2x2ZWQuCisgICAgICAgIDIuIFRoZSBiYWNrL2ZvcndhcmQgY2FjaGUgZW50cnkg
Y29udGFpbmluZyB0aGlzIGRvY3VtZW50IGlzIGRlc3Ryb3llZAorCisgICAgICAgIE5vdGUgdGhh
dCB3ZSBkbyBub3QgbGVhayBoZXJlIGJlY2F1c2Ugd2hlbiB0aGUgYmFjay9mb3J3YXJkIGNhY2hl
J3MgQ2FjaGVkRnJhbWUKKyAgICAgICAgZ2V0cyBkZXN0cm95ZWQsIGl0IHdpbGwgY2FsbCBEb2N1
bWVudDo6cHJlcGFyZUZvckRlc3RydWN0aW9uKCksIHdoaWNoIHdpbGwgY2FsbAorICAgICAgICBX
aW5kb3dFdmVudExvb3A6OnN0b3AoKSBhbmQgZGVzdHJveXMgYWxsIHBlbmRpbmcgdGFza3MgYXNz
b2NpYXRlZCB3aXRoIHRoaXMKKyAgICAgICAgZG9jdW1lbnQuIFRoaXMgd2lsbCB0aGVyZWZvcmUg
ZGVzdHJveSB0aGUgU3Ryb25nIGNhcHR1cmVkIGluIHRoZSB0YXNrLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyBiYWNrL2ZvcndhcmQgY2FjaGUgdGVzdHMuCisK
KyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01DYWNoZVN0b3JhZ2U6OmRvU2VxdWVudGlhbE1hdGNoKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUNhY2hlU3RvcmFnZTo6bWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2Fj
aGVTdG9yYWdlOjpoYXMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9yYWdlOjpvcGVu
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlU3RvcmFnZTo6ZG9PcGVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUNhY2hlU3RvcmFnZTo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TUNhY2hlU3RvcmFnZTo6ZG9SZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQ2FjaGVTdG9y
YWdlOjprZXlzKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hCb2R5T3duZXI6OmJsb2JMb2FkaW5nU3VjY2VlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keU93bmVyOjpibG9iTG9hZGluZ0ZhaWxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlPd25lcjo6YmxvYkNodW5rKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNo
L0ZldGNoQm9keU93bmVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmFsbG93
KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmRlbnkpOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9J
RExUeXBlcy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR3VhcmRlZE9iamVjdC5oOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6Y2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkRlZmVycmVkUHJvbWlzZTo6d2hlblNldHRsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGVm
ZXJyZWRQcm9taXNlOjpyZWplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlz
ZURlZmVycmVkLmg6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6OnJlc29sdmUp
OgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpyZXNvbHZlV2l0aE5ld2x5Q3Jl
YXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6OnJlc29sdmVDYWxsYmFj
a1ZhbHVlV2l0aE5ld2x5Q3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFByb21p
c2U6OnJlamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6OnJlc29sdmVX
aXRoQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpyZWplY3RX
aXRoQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9taXNlOjpzaG91bGRJ
Z25vcmVSZXF1ZXN0VG9GdWxmaWxsIGNvbnN0KToKKyAgICAgICAgKiBjc3MvRm9udEZhY2VTZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OmRpZEZpcnN0TGF5b3V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0Ojpjb21wbGV0ZWRMb2FkaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRGYWNlU2V0OjpmYWNlRmluaXNoZWQpOgorICAgICAgICAqIGRvbS9BY3Rp
dmVET01DYWxsYmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVET01DYWxsYmFjazo6
YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y3RpdmVET01DYWxsYmFjazo6YWN0aXZlRE9NT2JqZWN0QXJlU3RvcHBlZCBjb25zdCk6CisgICAg
ICAgICogZG9tL0FjdGl2ZURPTUNhbGxiYWNrLmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoK
KyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIHBhZ2Uv
RE9NV2luZG93Lmg6CisgICAgICAgICogcGFnZS9SZW1vdGVET01XaW5kb3cuaDoKKwogMjAxOS0x
MS0wOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgU3R5bGVS
ZXNvbHZlciBzdGF0ZSBzaG91bGQgc3RvcmUgdXNlciBhZ2VudCBhcHBlYXJhbmNlIHN0eWxlIGFz
IFJlbmRlclN0eWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5k
bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5oCmluZGV4IGFiYTY1MTEz
NDNhMzUyYzAzMWMyZjgzNDQ5Y2YxY2Q2MThhMDkwMjguLjg2NmEwNzY5ZWM2YmE4OTBmNTFmOGNh
YjJhNzIyZDVkZTRhYjUzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hhbmRsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5oCkBAIC0z
Nyw2ICszNyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGxpZmV0aW1lIGlzIGd1YXJhbnRlZWQg
Ynkgc29tZXRoaW5nIGVsc2UuCiAqLwogCitlbnVtIGNsYXNzIFNob3VsZFN0cm9uZ0Rlc3RydWN0
b3JHcmFiTG9jayA6IGJvb2wgeyBObywgWWVzIH07CisKIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFz
cyBIYW5kbGU7CiAKIC8vIENyZWF0aW5nIGEgSlNWYWx1ZSBIYW5kbGUgaXMgaW52YWxpZApAQCAt
NDQsNyArNDYsNyBAQCB0ZW1wbGF0ZSA8PiBjbGFzcyBIYW5kbGU8SlNWYWx1ZT47CiAKIGNsYXNz
IEhhbmRsZUJhc2UgewogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBmcmllbmQgY2xhc3MgV2Vh
azsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gZnJpZW5kIGNsYXNzIFN0cm9uZzsKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgU2hvdWxkU3Ryb25nRGVzdHJ1Y3RvckdyYWJMb2NrIHNob3Vs
ZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jaz4gZnJpZW5kIGNsYXNzIFN0cm9uZzsKICAgICBmcmll
bmQgY2xhc3MgSGFuZGxlU2V0OwogICAgIGZyaWVuZCBzdHJ1Y3QgSlNDYWxsYmFja09iamVjdERh
dGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0cm9uZy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Ryb25nLmgKaW5kZXggYmY0ZGQzOTQ0NDNkM2Nm
OWQxOWYzY2Y1MzU3ZmZiNGI2Njk4NTVhOS4uYzM3NDgxYTk2ZjM0NWNlMjVmMmIyZGY3MDhkNzY2
NDE4Y2M0ODYwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Ryb25n
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Ryb25nLmgKQEAgLTI4LDE2ICsy
OCwxNyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSAiSGFuZGxlLmgi
CiAjaW5jbHVkZSAiSGFuZGxlU2V0LmgiCisjaW5jbHVkZSAiSlNMb2NrLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCiBjbGFzcyBWTTsKIAogLy8gQSBzdHJvbmdseSByZWZlcmVuY2VkIGhhbmRsZSB0
aGF0IHByZXZlbnRzIHRoZSBvYmplY3QgaXQgcG9pbnRzIHRvIGZyb20gYmVpbmcgZ2FyYmFnZSBj
b2xsZWN0ZWQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgU3Ryb25nIDogcHVibGljIEhh
bmRsZTxUPiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgU2hvdWxkU3Ryb25nRGVzdHJ1Y3Rvckdy
YWJMb2NrIHNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jayA9IFNob3VsZFN0cm9uZ0Rlc3Ry
dWN0b3JHcmFiTG9jazo6Tm8+IGNsYXNzIFN0cm9uZyA6IHB1YmxpYyBIYW5kbGU8VD4gewogICAg
IHVzaW5nIEhhbmRsZTxUPjo6c2xvdDsKICAgICB1c2luZyBIYW5kbGU8VD46OnNldFNsb3Q7Ci0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IGZyaWVuZCBjbGFzcyBTdHJvbmc7CisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFUsIFNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jaz4gZnJpZW5kIGNs
YXNzIFN0cm9uZzsKIAogcHVibGljOgogICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFuZGxlPFQ+OjpF
eHRlcm5hbFR5cGUgRXh0ZXJuYWxUeXBlOwpAQCAtMTIwLDggKzEyMSwxNiBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBpZiAoIXNsb3QoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
SGFuZGxlU2V0OjpoZWFwRm9yKHNsb3QoKSktPmRlYWxsb2NhdGUoc2xvdCgpKTsKLSAgICAgICAg
c2V0U2xvdCgwKTsKKworICAgICAgICBhdXRvKiBoZWFwID0gSGFuZGxlU2V0OjpoZWFwRm9yKHNs
b3QoKSk7CisgICAgICAgIGlmIChzaG91bGRTdHJvbmdEZXN0cnVjdG9yR3JhYkxvY2sgPT0gU2hv
dWxkU3Ryb25nRGVzdHJ1Y3RvckdyYWJMb2NrOjpZZXMpIHsKKyAgICAgICAgICAgIEpTTG9ja0hv
bGRlciBob2xkZXIoaGVhcC0+dm0oKSk7CisgICAgICAgICAgICBoZWFwLT5kZWFsbG9jYXRlKHNs
b3QoKSk7CisgICAgICAgICAgICBzZXRTbG90KDApOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgaGVhcC0+ZGVhbGxvY2F0ZShzbG90KCkpOworICAgICAgICAgICAgc2V0U2xvdCgwKTsK
KyAgICAgICAgfQogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1N0cm9uZ0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1N0cm9uZ0lubGluZXMuaAppbmRleCAyMDVmYjA0ZmI2OTE0N2Q4ZmQ1ZTcyYWUxMGEwMzJkNTFl
MTNkOTgwLi4yODU1ZWY4MWQxYmUwYzAzNWZlNDVhZmU2OWRkNDM4ZTdkZDhlZWEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdHJvbmdJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Ryb25nSW5saW5lcy5oCkBAIC0zMCwyMiArMzAsMjIg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIFN0
cm9uZzxUPjo6U3Ryb25nKFZNJiB2bSwgRXh0ZXJuYWxUeXBlIHZhbHVlKQordGVtcGxhdGUgPHR5
cGVuYW1lIFQsIFNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jayBzaG91bGRTdHJvbmdEZXN0
cnVjdG9yR3JhYkxvY2s+CitpbmxpbmUgU3Ryb25nPFQsIHNob3VsZFN0cm9uZ0Rlc3RydWN0b3JH
cmFiTG9jaz46OlN0cm9uZyhWTSYgdm0sIEV4dGVybmFsVHlwZSB2YWx1ZSkKICAgICA6IEhhbmRs
ZTxUPih2bS5oZWFwLmhhbmRsZVNldCgpLT5hbGxvY2F0ZSgpKQogewogICAgIHNldCh2YWx1ZSk7
CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIFN0cm9uZzxUPjo6U3Ryb25nKFZN
JiB2bSwgSGFuZGxlPFQ+IGhhbmRsZSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBTaG91bGRTdHJv
bmdEZXN0cnVjdG9yR3JhYkxvY2sgc2hvdWxkU3Ryb25nRGVzdHJ1Y3RvckdyYWJMb2NrPgoraW5s
aW5lIFN0cm9uZzxULCBzaG91bGRTdHJvbmdEZXN0cnVjdG9yR3JhYkxvY2s+OjpTdHJvbmcoVk0m
IHZtLCBIYW5kbGU8VD4gaGFuZGxlKQogICAgIDogSGFuZGxlPFQ+KHZtLmhlYXAuaGFuZGxlU2V0
KCktPmFsbG9jYXRlKCkpCiB7CiAgICAgc2V0KGhhbmRsZS5nZXQoKSk7CiB9CiAKLXRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgU3Ryb25nPFQ+OjpzZXQoVk0mIHZtLCBFeHRlcm5h
bFR5cGUgdmFsdWUpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgU2hvdWxkU3Ryb25nRGVzdHJ1Y3Rv
ckdyYWJMb2NrIHNob3VsZFN0cm9uZ0Rlc3RydWN0b3JHcmFiTG9jaz4KK2lubGluZSB2b2lkIFN0
cm9uZzxULCBzaG91bGRTdHJvbmdEZXN0cnVjdG9yR3JhYkxvY2s+OjpzZXQoVk0mIHZtLCBFeHRl
cm5hbFR5cGUgdmFsdWUpCiB7CiAgICAgaWYgKCFzbG90KCkpCiAgICAgICAgIHNldFNsb3Qodm0u
aGVhcC5oYW5kbGVTZXQoKS0+YWxsb2NhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5jcHAKaW5kZXggNDUwMGM1YTI3NWRiZDFmOTMzNDcw
MmYxMTMzYmYzYjk4MDUzMzI1MS4uNjAzZTkzZmVlZjg3OTI1Y2IzNGFkZWJmYzQ5MTVlYmM1ZDA4
NjgxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0
b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9y
YWdlLmNwcApAQCAtODcsMTggKzg3LDE2IEBAIHN0YXRpYyBpbmxpbmUgUmVmPERPTUNhY2hlPiBj
b3B5Q2FjaGUoY29uc3QgUmVmPERPTUNhY2hlPiYgY2FjaGUpCiAKIHZvaWQgRE9NQ2FjaGVTdG9y
YWdlOjpkb1NlcXVlbnRpYWxNYXRjaChET01DYWNoZTo6UmVxdWVzdEluZm8mJiBpbmZvLCBDYWNo
ZVF1ZXJ5T3B0aW9ucyYmIG9wdGlvbnMsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkK
IHsKLSAgICBzdGFydFNlcXVlbnRpYWxNYXRjaChXVEY6Om1hcChtX2NhY2hlcywgY29weUNhY2hl
KSwgV1RGTW92ZShpbmZvKSwgV1RGTW92ZShvcHRpb25zKSwgW3RoaXMsIHBlbmRpbmdBY3Rpdml0
eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGVucXVldWVUYXNrKFtwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSgpIG11dGFibGUg
ewotICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICAgICAg
ICAgIHByb21pc2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIXJlc3VsdC5y
ZXR1cm5WYWx1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHByb21pc2Ut
PnJlc29sdmU8SURMSW50ZXJmYWNlPEZldGNoUmVzcG9uc2U+PigqcmVzdWx0LnJldHVyblZhbHVl
KCkpOwotICAgICAgICB9KTsKKyAgICBzdGFydFNlcXVlbnRpYWxNYXRjaChXVEY6Om1hcChtX2Nh
Y2hlcywgY29weUNhY2hlKSwgV1RGTW92ZShpbmZvKSwgV1RGTW92ZShvcHRpb25zKSwgW3BlbmRp
bmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChyZXN1bHQucmVs
ZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoIXJlc3VsdC5yZXR1cm5WYWx1ZSgpKSB7CisgICAgICAgICAgICBwcm9taXNlLT5yZXNv
bHZlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcHJvbWlzZS0+
cmVzb2x2ZTxJRExJbnRlcmZhY2U8RmV0Y2hSZXNwb25zZT4+KCpyZXN1bHQucmV0dXJuVmFsdWUo
KSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwNiw5ICsxMDQsNyBAQCB2b2lkIERPTUNhY2hlU3RvcmFn
ZTo6bWF0Y2goRE9NQ2FjaGU6OlJlcXVlc3RJbmZvJiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMm
JiBvcAogewogICAgIHJldHJpZXZlQ2FjaGVzKFt0aGlzLCBpbmZvID0gV1RGTW92ZShpbmZvKSwg
b3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShP
cHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGV4
Y2VwdGlvbikgewotICAgICAgICAgICAgZW5xdWV1ZVRhc2soW3Byb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpLCBleGNlcHRpb24gPSBXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoV1RGTW92ZShleGNlcHRpb24pKTsK
LSAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFdURk1vdmUoKmV4
Y2VwdGlvbikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTExOCw5ICsx
MTQsNyBAQCB2b2lkIERPTUNhY2hlU3RvcmFnZTo6bWF0Y2goRE9NQ2FjaGU6OlJlcXVlc3RJbmZv
JiYgaW5mbywgQ2FjaGVRdWVyeU9wdGlvbnMmJiBvcAogICAgICAgICAgICAgICAgIG1fY2FjaGVz
W3Bvc2l0aW9uXS0+bWF0Y2goV1RGTW92ZShpbmZvKSwgV1RGTW92ZShvcHRpb25zKSwgV1RGTW92
ZShwcm9taXNlKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZW5xdWV1ZVRhc2soW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKLSAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTEzMSwxMyArMTI1LDExIEBAIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpt
YXRjaChET01DYWNoZTo6UmVxdWVzdEluZm8mJiBpbmZvLCBDYWNoZVF1ZXJ5T3B0aW9ucyYmIG9w
CiB2b2lkIERPTUNhY2hlU3RvcmFnZTo6aGFzKGNvbnN0IFN0cmluZyYgbmFtZSwgRE9NUHJvbWlz
ZURlZmVycmVkPElETEJvb2xlYW4+JiYgcHJvbWlzZSkKIHsKICAgICByZXRyaWV2ZUNhY2hlcyhb
dGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKE9wdGlvbmFsPEV4Y2VwdGlv
bj4mJiBleGNlcHRpb24pIG11dGFibGUgewotICAgICAgICBlbnF1ZXVlVGFzayhbdGhpcywgbmFt
ZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbiA9IFdURk1vdmUoZXhjZXB0
aW9uKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAg
ICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKSk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcHJvbWlzZS5y
ZXNvbHZlKG1fY2FjaGVzLmZpbmRNYXRjaGluZyhbJl0oYXV0byYgaXRlbSkgeyByZXR1cm4gaXRl
bS0+bmFtZSgpID09IG5hbWU7IH0pICE9IG5vdEZvdW5kKTsKLSAgICAgICAgfSk7CisgICAgICAg
IGlmIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoZXhj
ZXB0aW9uLnZhbHVlKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBwcm9taXNlLnJlc29sdmUobV9jYWNoZXMuZmluZE1hdGNoaW5nKFsmXShhdXRvJiBpdGVtKSB7
IHJldHVybiBpdGVtLT5uYW1lKCkgPT0gbmFtZTsgfSkgIT0gbm90Rm91bmQpOwogICAgIH0pOwog
fQogCkBAIC0xODgsOSArMTgwLDcgQEAgdm9pZCBET01DYWNoZVN0b3JhZ2U6Om9wZW4oY29uc3Qg
U3RyaW5nJiBuYW1lLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMSW50ZXJmYWNlPEQKIHsKICAgICBy
ZXRyaWV2ZUNhY2hlcyhbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKE9w
dGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pIG11dGFibGUgewogICAgICAgICBpZiAoZXhj
ZXB0aW9uKSB7Ci0gICAgICAgICAgICBlbnF1ZXVlVGFzayhbcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIGV4Y2VwdGlvbiA9IFdURk1vdmUoZXhjZXB0aW9uLnZhbHVlKCkpXSgpIG11dGFibGUg
ewotICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uKSk7Ci0g
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoKmV4Y2Vw
dGlvbikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGRvT3Blbihu
YW1lLCBXVEZNb3ZlKHByb21pc2UpKTsKQEAgLTIwMSwyNiArMTkxLDIwIEBAIHZvaWQgRE9NQ2Fj
aGVTdG9yYWdlOjpkb09wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBET01Qcm9taXNlRGVmZXJyZWQ8
SURMSW50ZXJmYWNlCiB7CiAgICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRjaGlu
ZyhbJl0oYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS0+bmFtZSgpID09IG5hbWU7IH0pOwogICAg
IGlmIChwb3NpdGlvbiAhPSBub3RGb3VuZCkgewotICAgICAgICBlbnF1ZXVlVGFzayhbdGhpcywg
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGNhY2hlID0gbV9jYWNoZXNbcG9zaXRpb25dLmNv
cHlSZWYoKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShET01DYWNo
ZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFN0cmluZyB7IGNhY2hlLT5uYW1l
KCkgfSwgY2FjaGUtPmlkZW50aWZpZXIoKSwgbV9jb25uZWN0aW9uLmNvcHlSZWYoKSkpOwotICAg
ICAgICB9KTsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKERPTUNhY2hlOjpjcmVhdGUoKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgU3RyaW5nIHsgbV9jYWNoZXNbcG9zaXRpb25dLT5uYW1lKCkg
fSwgbV9jYWNoZXNbcG9zaXRpb25dLT5pZGVudGlmaWVyKCksIG1fY29ubmVjdGlvbi5jb3B5UmVm
KCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fY29ubmVjdGlvbi0+b3Blbigq
b3JpZ2luKCksIG5hbWUsIFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwg
cGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyldKGNvbnN0IENhY2hl
SWRlbnRpZmllck9yRXJyb3ImIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghcmVzdWx0
Lmhhc192YWx1ZSgpKSB7Ci0gICAgICAgICAgICBlbnF1ZXVlVGFzayhbdGhpcywgcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSksIGVycm9yID0gcmVzdWx0LmVycm9yKCldKCkgbXV0YWJsZSB7Ci0g
ICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRE9NQ2FjaGVFbmdpbmU6OmNvbnZlcnRUb0V4
Y2VwdGlvbkFuZExvZyhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGVycm9yKSk7Ci0gICAgICAg
ICAgICB9KTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVl
KCkpCisgICAgICAgICAgICBwcm9taXNlLnJlamVjdChET01DYWNoZUVuZ2luZTo6Y29udmVydFRv
RXhjZXB0aW9uQW5kTG9nKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgcmVzdWx0LmVycm9yKCkp
KTsKKyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlKCkuaGFkU3Rv
cmFnZUVycm9yKQogICAgICAgICAgICAgICAgIGxvZ0NvbnNvbGVQZXJzaXN0ZW5jeUVycm9yKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbmFtZSk7CiAKLSAgICAgICAgICAgIGVucXVldWVUYXNr
KFt0aGlzLCBuYW1lLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IHJl
c3VsdC52YWx1ZSgpLmlkZW50aWZpZXJdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgYXV0
byBjYWNoZSA9IERPTUNhY2hlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgU3Ry
aW5nIHsgbmFtZSB9LCBpZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uY29weVJlZigpKTsKLSAgICAg
ICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoY2FjaGUpOwotICAgICAgICAgICAgICAgIG1fY2Fj
aGVzLmFwcGVuZChXVEZNb3ZlKGNhY2hlKSk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IGF1dG8gY2FjaGUgPSBET01DYWNoZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IFN0cmluZyB7IG5hbWUgfSwgcmVzdWx0LnZhbHVlKCkuaWRlbnRpZmllciwgbV9jb25uZWN0aW9u
LmNvcHlSZWYoKSk7CisgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoY2FjaGUpOworICAgICAg
ICAgICAgbV9jYWNoZXMuYXBwZW5kKFdURk1vdmUoY2FjaGUpKTsKICAgICAgICAgfQogICAgIH0p
OwogfQpAQCAtMjI5LDkgKzIxMyw3IEBAIHZvaWQgRE9NQ2FjaGVTdG9yYWdlOjpyZW1vdmUoY29u
c3QgU3RyaW5nJiBuYW1lLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mCiB7CiAgICAg
cmV0cmlldmVDYWNoZXMoW3RoaXMsIG5hbWUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXShP
cHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGV4
Y2VwdGlvbikgewotICAgICAgICAgICAgZW5xdWV1ZVRhc2soW3Byb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpLCBleGNlcHRpb24gPSBXVEZNb3ZlKGV4Y2VwdGlvbi52YWx1ZSgpKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlvbikpOwot
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBwcm9taXNlLnJlamVjdChXVEZNb3ZlKCpleGNl
cHRpb24pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBkb1JlbW92
ZShuYW1lLCBXVEZNb3ZlKHByb21pc2UpKTsKQEAgLTI0MiwzOCArMjI0LDMyIEBAIHZvaWQgRE9N
Q2FjaGVTdG9yYWdlOjpkb1JlbW92ZShjb25zdCBTdHJpbmcmIG5hbWUsIERPTVByb21pc2VEZWZl
cnJlZDxJRExCb29sZWFuCiB7CiAgICAgYXV0byBwb3NpdGlvbiA9IG1fY2FjaGVzLmZpbmRNYXRj
aGluZyhbJl0oYXV0byYgaXRlbSkgeyByZXR1cm4gaXRlbS0+bmFtZSgpID09IG5hbWU7IH0pOwog
ICAgIGlmIChwb3NpdGlvbiA9PSBub3RGb3VuZCkgewotICAgICAgICBlbnF1ZXVlVGFzayhbcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBwcm9taXNl
LnJlc29sdmUoZmFsc2UpOwotICAgICAgICB9KTsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGZh
bHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fY29ubmVjdGlvbi0+cmVtb3Zl
KG1fY2FjaGVzW3Bvc2l0aW9uXS0+aWRlbnRpZmllcigpLCBbdGhpcywgbmFtZSwgcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSksIHBlbmRpbmdBY3Rpdml0eSA9IG1ha2VQZW5kaW5nQWN0aXZpdHko
KnRoaXMpXShjb25zdCBDYWNoZUlkZW50aWZpZXJPckVycm9yJiByZXN1bHQpIG11dGFibGUgewot
ICAgICAgICBlbnF1ZXVlVGFzayhbdGhpcywgbmFtZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSksIHJlc3VsdF0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1
ZSgpKQotICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KERPTUNhY2hlRW5naW5lOjpjb252
ZXJ0VG9FeGNlcHRpb25BbmRMb2coc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCByZXN1bHQuZXJy
b3IoKSkpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC52
YWx1ZSgpLmhhZFN0b3JhZ2VFcnJvcikKLSAgICAgICAgICAgICAgICAgICAgbG9nQ29uc29sZVBl
cnNpc3RlbmN5RXJyb3Ioc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBuYW1lKTsKLSAgICAgICAg
ICAgICAgICBwcm9taXNlLnJlc29sdmUoISFyZXN1bHQudmFsdWUoKS5pZGVudGlmaWVyKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfSk7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgp
KQorICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoRE9NQ2FjaGVFbmdpbmU6OmNvbnZlcnRUb0V4
Y2VwdGlvbkFuZExvZyhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHJlc3VsdC5lcnJvcigpKSk7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKHJlc3VsdC52YWx1ZSgpLmhhZFN0b3Jh
Z2VFcnJvcikKKyAgICAgICAgICAgICAgICBsb2dDb25zb2xlUGVyc2lzdGVuY3lFcnJvcihzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIG5hbWUpOworICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZl
KCEhcmVzdWx0LnZhbHVlKCkuaWRlbnRpZmllcik7CisgICAgICAgIH0KICAgICB9KTsKIH0KIAog
dm9pZCBET01DYWNoZVN0b3JhZ2U6OmtleXMoS2V5c1Byb21pc2UmJiBwcm9taXNlKQogewogICAg
IHJldHJpZXZlQ2FjaGVzKFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oT3B0aW9u
YWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikgbXV0YWJsZSB7Ci0gICAgICAgIGVucXVldWVUYXNr
KFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgZXhjZXB0aW9uID0gV1RGTW92ZShl
eGNlcHRpb24pXSgpIG11dGFibGUgewotICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikgewotICAg
ICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uLnZhbHVlKCkpKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChleGNl
cHRpb24pIHsKKyAgICAgICAgICAgIHByb21pc2UucmVqZWN0KFdURk1vdmUoZXhjZXB0aW9uLnZh
bHVlKCkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBw
cm9taXNlLnJlc29sdmUoV1RGOjptYXAobV9jYWNoZXMsIFtdIChjb25zdCBhdXRvJiBjYWNoZSkg
ewotICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZS0+bmFtZSgpOwotICAgICAgICAgICAgfSkp
OwotICAgICAgICB9KTsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFdURjo6bWFwKG1fY2FjaGVz
LCBbXSAoY29uc3QgYXV0byYgY2FjaGUpIHsKKyAgICAgICAgICAgIHJldHVybiBjYWNoZS0+bmFt
ZSgpOworICAgICAgICB9KSk7CiAgICAgfSk7CiB9CiAKQEAgLTI4NywxNCArMjYzLDQgQEAgY29u
c3QgY2hhciogRE9NQ2FjaGVTdG9yYWdlOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKICAg
ICByZXR1cm4gIkNhY2hlU3RvcmFnZSI7CiB9CiAKLXZvaWQgRE9NQ2FjaGVTdG9yYWdlOjplbnF1
ZXVlVGFzayhGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKLXsKLSAgICBhdXRvKiBjb250ZXh0ID0g
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0
dXJuOwotICAgIGNvbnRleHQtPmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01N
YW5pcHVsYXRpb24sICpjb250ZXh0LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBw
ZW5kaW5nQWN0aXZpdHkgPSBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgdGFzayA9IFdURk1v
dmUodGFzayldIHsKLSAgICAgICAgdGFzaygpOwotICAgIH0pOwotfQotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZVN0b3Jh
Z2UuaAppbmRleCAwMTA1MzlmNGI1N2Q2NmFiNzdmYzAwNGZlOGIyNDBkNWQyYTY3NmFmLi42ODZm
MGEyYmYyNTM2YjU2NmEyYzU4NmU2NjNiMDQ4YjQ1NjZiNTY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGVTdG9yYWdlLmgKQEAgLTU5LDggKzU5LDYgQEAgcHJp
dmF0ZToKICAgICBSZWY8RE9NQ2FjaGU+IGZpbmRDYWNoZU9yQ3JlYXRlKERPTUNhY2hlRW5naW5l
OjpDYWNoZUluZm8mJik7CiAgICAgT3B0aW9uYWw8Q2xpZW50T3JpZ2luPiBvcmlnaW4oKSBjb25z
dDsKIAotICAgIHZvaWQgZW5xdWV1ZVRhc2soRnVuY3Rpb248dm9pZCgpPiYmKTsKLQogICAgIFZl
Y3RvcjxSZWY8RE9NQ2FjaGU+PiBtX2NhY2hlczsKICAgICB1aW50NjRfdCBtX3VwZGF0ZUNvdW50
ZXIgeyAwIH07CiAgICAgUmVmPENhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKaW5k
ZXggMDAwZDc5ZWQ2OGY3ZWFiNDYzYjYzMDExM2RlYTU5NWRhOWI1NDE0MS4uMjVlY2JlOWEzODY4
ZGIyYjI4ZWU1NjcxZTYwMDBhMzM0ZDQ4ZGNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHAKQEAgLTM5LDE3ICszOSw2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdm9pZCBGZXRjaEJvZHlPd25lcjo6cnVuTmV0d29ya1Rhc2tXaGVu
UG9zc2libGUoRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCi17Ci0gICAgYXV0byogY29udGV4dCA9
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoIWNvbnRleHQgfHwgIXNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpKQotICAgICAg
ICByZXR1cm4gdGFzaygpOwotCi0gICAgY29udGV4dC0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRh
c2tTb3VyY2U6Ok5ldHdvcmtpbmcsICpjb250ZXh0LCBbcGVuZGluZ0FjdGl2aXR5ID0gbWFrZVBl
bmRpbmdBY3Rpdml0eSgqdGhpcyksIHRhc2sgPSBXVEZNb3ZlKHRhc2spXSB7Ci0gICAgICAgIHRh
c2soKTsKLSAgICB9KTsKLX0KLQogRmV0Y2hCb2R5T3duZXI6OkZldGNoQm9keU93bmVyKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE9wdGlvbmFsPEZldGNoQm9keT4mJiBib2R5LCBS
ZWY8RmV0Y2hIZWFkZXJzPiYmIGhlYWRlcnMpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRl
eHQpCiAgICAgLCBtX2JvZHkoV1RGTW92ZShib2R5KSkKQEAgLTI4MSwzMSArMjcwLDI3IEBAIHZv
aWQgRmV0Y2hCb2R5T3duZXI6OmZpbmlzaEJsb2JMb2FkaW5nKCkKIHZvaWQgRmV0Y2hCb2R5T3du
ZXI6OmJsb2JMb2FkaW5nU3VjY2VlZGVkKCkKIHsKICAgICBBU1NFUlQoIWlzQm9keU51bGwoKSk7
Ci0gICAgcnVuTmV0d29ya1Rhc2tXaGVuUG9zc2libGUoW3RoaXNdKCkgbXV0YWJsZSB7CiAjaWYg
RU5BQkxFKFNUUkVBTVNfQVBJKQotICAgICAgICBpZiAobV9yZWFkYWJsZVN0cmVhbVNvdXJjZSkg
ewotICAgICAgICAgICAgbV9yZWFkYWJsZVN0cmVhbVNvdXJjZS0+Y2xvc2UoKTsKLSAgICAgICAg
ICAgIG1fcmVhZGFibGVTdHJlYW1Tb3VyY2UgPSBudWxscHRyOwotICAgICAgICB9CisgICAgaWYg
KG1fcmVhZGFibGVTdHJlYW1Tb3VyY2UpIHsKKyAgICAgICAgbV9yZWFkYWJsZVN0cmVhbVNvdXJj
ZS0+Y2xvc2UoKTsKKyAgICAgICAgbV9yZWFkYWJsZVN0cmVhbVNvdXJjZSA9IG51bGxwdHI7Cisg
ICAgfQogI2VuZGlmCi0gICAgICAgIG1fYm9keS0+bG9hZGluZ1N1Y2NlZWRlZCgpOwotICAgIH0p
OworICAgIG1fYm9keS0+bG9hZGluZ1N1Y2NlZWRlZCgpOwogICAgIGZpbmlzaEJsb2JMb2FkaW5n
KCk7CiB9CiAKIHZvaWQgRmV0Y2hCb2R5T3duZXI6OmJsb2JMb2FkaW5nRmFpbGVkKCkKIHsKICAg
ICBBU1NFUlQoIWlzQm9keU51bGwoKSk7Ci0gICAgcnVuTmV0d29ya1Rhc2tXaGVuUG9zc2libGUo
W3RoaXNdKCkgbXV0YWJsZSB7CiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQotICAgICAgICBpZiAo
bV9yZWFkYWJsZVN0cmVhbVNvdXJjZSkgewotICAgICAgICAgICAgaWYgKCFtX3JlYWRhYmxlU3Ry
ZWFtU291cmNlLT5pc0NhbmNlbGxpbmcoKSkKLSAgICAgICAgICAgICAgICBtX3JlYWRhYmxlU3Ry
ZWFtU291cmNlLT5lcnJvcihFeGNlcHRpb24geyBUeXBlRXJyb3IsICJCbG9iIGxvYWRpbmcgZmFp
bGVkIl9zfSk7Ci0gICAgICAgICAgICBtX3JlYWRhYmxlU3RyZWFtU291cmNlID0gbnVsbHB0cjsK
LSAgICAgICAgfSBlbHNlCisgICAgaWYgKG1fcmVhZGFibGVTdHJlYW1Tb3VyY2UpIHsKKyAgICAg
ICAgaWYgKCFtX3JlYWRhYmxlU3RyZWFtU291cmNlLT5pc0NhbmNlbGxpbmcoKSkKKyAgICAgICAg
ICAgIG1fcmVhZGFibGVTdHJlYW1Tb3VyY2UtPmVycm9yKEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwg
IkJsb2IgbG9hZGluZyBmYWlsZWQiX3N9KTsKKyAgICAgICAgbV9yZWFkYWJsZVN0cmVhbVNvdXJj
ZSA9IG51bGxwdHI7CisgICAgfSBlbHNlCiAjZW5kaWYKLSAgICAgICAgICAgIG1fYm9keS0+bG9h
ZGluZ0ZhaWxlZChFeGNlcHRpb24geyBUeXBlRXJyb3IsICJCbG9iIGxvYWRpbmcgZmFpbGVkIl9z
fSk7Ci0gICAgfSk7CisgICAgICAgIG1fYm9keS0+bG9hZGluZ0ZhaWxlZChFeGNlcHRpb24geyBU
eXBlRXJyb3IsICJCbG9iIGxvYWRpbmcgZmFpbGVkIl9zfSk7CiAgICAgZmluaXNoQmxvYkxvYWRp
bmcoKTsKIH0KIApAQCAtMzE0LDEwICsyOTksOCBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpibG9i
Q2h1bmsoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgQVNTRVJUKGRhdGEpOwog
I2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKICAgICBBU1NFUlQobV9yZWFkYWJsZVN0cmVhbVNvdXJj
ZSk7Ci0gICAgcnVuTmV0d29ya1Rhc2tXaGVuUG9zc2libGUoW3RoaXMsIGFycmF5QnVmZmVyID0g
QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKV0oKSBtdXRhYmxlIHsKLSAgICAgICAg
aWYgKCFtX3JlYWRhYmxlU3RyZWFtU291cmNlLT5lbnF1ZXVlKFdURk1vdmUoYXJyYXlCdWZmZXIp
KSkKLSAgICAgICAgICAgIHN0b3AoKTsKLSAgICB9KTsKKyAgICBpZiAoIW1fcmVhZGFibGVTdHJl
YW1Tb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKSkpCisg
ICAgICAgIHN0b3AoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRhdGEpOwogICAgIFVOVVNF
RF9QQVJBTShzaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5T3duZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuaAppbmRleCAzYjM4OWE4MmRkMjk1OThmZWE4NWRkZGUyMGQ4YzA5YzRlYzAwMzY4Li5k
ZDIxZTU1NjZjYTQ4MDdmODMzMThmMzIzNzk2MGVlZmM2ODQ5NTJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCkBAIC0xMjUsOCArMTI1LDYgQEAg
cHJvdGVjdGVkOgogICAgIFJlZjxGZXRjaEhlYWRlcnM+IG1faGVhZGVyczsKIAogcHJpdmF0ZToK
LSAgICB2b2lkIHJ1bk5ldHdvcmtUYXNrV2hlblBvc3NpYmxlKEZ1bmN0aW9uPHZvaWQoKT4mJik7
Ci0KICAgICBPcHRpb25hbDxCbG9iTG9hZGVyPiBtX2Jsb2JMb2FkZXI7CiAgICAgYm9vbCBtX2lz
Qm9keU9wYXF1ZSB7IGZhbHNlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IDIwOWQ5YWYxYmIzMDEz
Y2YzMzNjNTg0ODc2YjM5OWM5MDg0ZDQxYzUuLjBlMDM4ZjMxNTQ0OWJiODA5MDRlZDBiZDk2Yzdl
MjBiOWJlZGU3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAtMjMwLDUzICsyMzAsNDggQEAgc3RhdGlj
IGlubGluZSBib29sIGlzTWVkaWFTdHJlYW1Db3JyZWN0bHlTdGFydGVkKGNvbnN0IE1lZGlhU3Ry
ZWFtJiBzdHJlYW0pCiB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmFsbG93KENhcHR1cmVEZXZpY2Um
JiBhdWRpb0RldmljZSwgQ2FwdHVyZURldmljZSYmIHZpZGVvRGV2aWNlLCBTdHJpbmcmJiBkZXZp
Y2VJZGVudGlmaWVySGFzaFNhbHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPRyhNZWRpYVN0cmVhbSwgIlVzZXJNZWRpYVJl
cXVlc3Q6OmFsbG93ICVzICVzIiwgYXVkaW9EZXZpY2UgPyBhdWRpb0RldmljZS5wZXJzaXN0ZW50
SWQoKS51dGY4KCkuZGF0YSgpIDogIiIsIHZpZGVvRGV2aWNlID8gdmlkZW9EZXZpY2UucGVyc2lz
dGVudElkKCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKLSAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMt
PmRvY3VtZW50KCk7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKCk7Ci0KLSAgICBkb2N1bWVudC0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tT
b3VyY2U6OlVzZXJJbnRlcmFjdGlvbiwgKmRvY3VtZW50LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBhdWRpb0RldmljZSA9IFdURk1vdmUoYXVkaW9EZXZpY2UpLCB2aWRl
b0RldmljZSA9IFdURk1vdmUodmlkZW9EZXZpY2UpLCBkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQg
PSBXVEZNb3ZlKGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gY2Fs
bGJhY2sgPSBbdGhpcywgcHJvdGVjdG9yID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFJlZlB0cjxNZWRp
YVN0cmVhbVByaXZhdGU+JiYgcHJpdmF0ZVN0cmVhbSkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBh
dXRvIHNjb3BlRXhpdCA9IG1ha2VTY29wZUV4aXQoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgaWYgKGlzQ29udGV4
dFN0b3BwZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGlmICgh
cHJpdmF0ZVN0cmVhbSkgewotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HKE1lZGlhU3RyZWFt
LCAiVXNlck1lZGlhUmVxdWVzdDo6YWxsb3cgZmFpbGVkIHRvIGNyZWF0ZSBtZWRpYSBzdHJlYW0h
Iik7Ci0gICAgICAgICAgICAgICAgZGVueShNZWRpYUFjY2Vzc0RlbmlhbFJlYXNvbjo6SGFyZHdh
cmVFcnJvcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0KTsKLSAgICAgICAgICAgIHByaXZhdGVTdHJlYW0tPm1vbml0b3JPcmllbnRh
dGlvbihkb2N1bWVudC5vcmllbnRhdGlvbk5vdGlmaWVyKCkpOwotCi0gICAgICAgICAgICBhdXRv
IHN0cmVhbSA9IE1lZGlhU3RyZWFtOjpjcmVhdGUoZG9jdW1lbnQsIHByaXZhdGVTdHJlYW0ucmVs
ZWFzZU5vbk51bGwoKSk7Ci0gICAgICAgICAgICBzdHJlYW0tPnN0YXJ0UHJvZHVjaW5nRGF0YSgp
OwotCi0gICAgICAgICAgICBpZiAoIWlzTWVkaWFTdHJlYW1Db3JyZWN0bHlTdGFydGVkKHN0cmVh
bSkpIHsKLSAgICAgICAgICAgICAgICBkZW55KE1lZGlhQWNjZXNzRGVuaWFsUmVhc29uOjpIYXJk
d2FyZUVycm9yKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIEFTU0VSVChkb2N1bWVudC5pc0NhcHR1cmluZygpKTsKLSAgICAgICAgICAgIHN0
cmVhbS0+ZG9jdW1lbnQoKS0+c2V0SGFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2soKTsKLSAgICAg
ICAgICAgIG1fcHJvbWlzZS0+cmVzb2x2ZShXVEZNb3ZlKHN0cmVhbSkpOwotICAgICAgICB9Owot
Ci0gICAgICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOwotICAgICAgICBkb2N1bWVudC5zZXREZXZpY2VJREhhc2hTYWx0KGRl
dmljZUlkZW50aWZpZXJIYXNoU2FsdCk7Ci0KLSAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcjo6c2luZ2xldG9uKCkuY3JlYXRlTWVkaWFTdHJlYW0oZG9jdW1lbnQubG9nZ2VyKCksIFdU
Rk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCksIFdURk1v
dmUoYXVkaW9EZXZpY2UpLCBXVEZNb3ZlKHZpZGVvRGV2aWNlKSwgbV9yZXF1ZXN0KTsKLQotICAg
ICAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKworICAgIGF1dG8gY2FsbGJhY2sg
PSBbdGhpcywgcHJvdGVjdG9yID0gbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcyksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFJlZlB0cjxNZWRpYVN0cmVh
bVByaXZhdGU+JiYgcHJpdmF0ZVN0cmVhbSkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gc2NvcGVF
eGl0ID0gbWFrZVNjb3BlRXhpdChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgICAgIH0pOworICAgICAgICBpZiAoaXNDb250ZXh0U3RvcHBlZCgpKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGlmICghcHJpdmF0ZVN0cmVhbSkgeworICAgICAgICAgICAg
UkVMRUFTRV9MT0coTWVkaWFTdHJlYW0sICJVc2VyTWVkaWFSZXF1ZXN0OjphbGxvdyBmYWlsZWQg
dG8gY3JlYXRlIG1lZGlhIHN0cmVhbSEiKTsKKyAgICAgICAgICAgIGRlbnkoTWVkaWFBY2Nlc3NE
ZW5pYWxSZWFzb246OkhhcmR3YXJlRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAgIHByaXZhdGVTdHJlYW0tPm1vbml0b3JPcmll
bnRhdGlvbihkb2N1bWVudC5vcmllbnRhdGlvbk5vdGlmaWVyKCkpOworCisgICAgICAgIGF1dG8g
c3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZShkb2N1bWVudCwgcHJpdmF0ZVN0cmVhbS5yZWxl
YXNlTm9uTnVsbCgpKTsKKyAgICAgICAgc3RyZWFtLT5zdGFydFByb2R1Y2luZ0RhdGEoKTsKKwor
ICAgICAgICBpZiAoIWlzTWVkaWFTdHJlYW1Db3JyZWN0bHlTdGFydGVkKHN0cmVhbSkpIHsKKyAg
ICAgICAgICAgIGRlbnkoTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OkhhcmR3YXJlRXJyb3IpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKGRvY3VtZW50
LmlzQ2FwdHVyaW5nKCkpOworICAgICAgICBzdHJlYW0tPmRvY3VtZW50KCktPnNldEhhc0NhcHR1
cmVNZWRpYVN0cmVhbVRyYWNrKCk7CisgICAgICAgIG1fcHJvbWlzZS0+cmVzb2x2ZShXVEZNb3Zl
KHN0cmVhbSkpOworICAgIH07CisKKyAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3Vt
ZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBkb2N1bWVudC5zZXREZXZpY2VJ
REhhc2hTYWx0KGRldmljZUlkZW50aWZpZXJIYXNoU2FsdCk7CisKKyAgICBSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5jcmVhdGVNZWRpYVN0cmVhbShkb2N1bWVudC5sb2dn
ZXIoKSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0
KSwgV1RGTW92ZShhdWRpb0RldmljZSksIFdURk1vdmUodmlkZW9EZXZpY2UpLCBtX3JlcXVlc3Qp
OworCisgICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgICAgIHJldHVybjsK
IAogI2lmIEVOQUJMRShXRUJfUlRDKQotICAgICAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50
LnBhZ2UoKSkKLSAgICAgICAgICAgIHBhZ2UtPnJ0Y0NvbnRyb2xsZXIoKS5kaXNhYmxlSUNFQ2Fu
ZGlkYXRlRmlsdGVyaW5nRm9yRG9jdW1lbnQoZG9jdW1lbnQpOworICAgIGlmIChhdXRvKiBwYWdl
ID0gZG9jdW1lbnQucGFnZSgpKQorICAgICAgICBwYWdlLT5ydGNDb250cm9sbGVyKCkuZGlzYWJs
ZUlDRUNhbmRpZGF0ZUZpbHRlcmluZ0ZvckRvY3VtZW50KGRvY3VtZW50KTsKICNlbmRpZgotICAg
IH0pOwogfQogCiB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmRlbnkoTWVkaWFBY2Nlc3NEZW5pYWxS
ZWFzb24gcmVhc29uLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBAIC0zMjQsMTIgKzMxOSwxMCBA
QCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmRlbnkoTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb24gcmVh
c29uLCBjb25zdCBTdHJpbmcmIG1lc3NhZwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBk
b2N1bWVudCgpLT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6VXNlckludGVyYWN0
aW9uLCAqZG9jdW1lbnQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
Y29kZSwgbWVzc2FnZV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFtZXNzYWdlLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIG1fcHJvbWlzZS0+cmVqZWN0KGNvZGUsIG1lc3NhZ2UpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX3Byb21pc2UtPnJlamVjdChjb2RlKTsKLSAgICB9KTsKKyAg
ICBpZiAoIW1lc3NhZ2UuaXNFbXB0eSgpKQorICAgICAgICBtX3Byb21pc2UtPnJlamVjdChjb2Rl
LCBtZXNzYWdlKTsKKyAgICBlbHNlCisgICAgICAgIG1fcHJvbWlzZS0+cmVqZWN0KGNvZGUpOwog
fQogCiB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnN0b3AoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM0MDFiNDZjM2ZkYjZjY2U3
NzRkODM0OTE3M2M1MjdkZDcxNzg3M2MuLjJjZTVhOTczZDcwNDhkNjE1MzcxOWVkNTU5NmMyYTQ4
NDFmZGVhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEyNTAsNiArMTI1MCw3IEBACiAJCTQ2RUYxNDJDMUY5N0I3RDgwMEMy
QTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRjE0MjIxRjk3QjdCQTAwQzJBNTI0IC8qIFNlcnZpY2VX
b3JrZXJDbGllbnRzLmggKi87IH07CiAJCTQ2RUYxNDJEMUY5N0I3RDgwMEMyQTUyNCAvKiBTZXJ2
aWNlV29ya2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkVGMTQyNDFGOTdCN0JBMDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudC5o
ICovOyB9OwogCQk0NkVGQUYxMjFFNUZCOUYxMDBFN0YzNEIgLyogTG93UG93ZXJNb2RlTm90aWZp
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUZB
RjEwMUU1RkI5RTEwMEU3RjM0QiAvKiBMb3dQb3dlck1vZGVOb3RpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2RjAyQTFBMjM3MzdGODMw
MDEwNkE2NCAvKiBBYnN0cmFjdEV2ZW50TG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwQUJDQTEyMzY3OUFCMzAwQjQ1MDg1IC8qIEFic3RyYWN0
RXZlbnRMb29wLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDZGQ0I2MTgxQTcwODIwRTAwQzVBMjFFIC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzN0IzNzUx
NUMxQTdFMTAwNkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ5MDcwN0U3MTIxOUMwNDMwMEQ5
MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDkwNzA3RTUxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0
QnJpZGdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDkyOTFFNEIxMzQxNzJDODAwRTc1M0RFIC8qIEltYWdlUmVuZGVyaW5nTW9kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDkyOTFFNEExMzQxNzJD
ODAwRTc1M0RFIC8qIEltYWdlUmVuZGVyaW5nTW9kZS5oICovOyB9OwpAQCAtMjg3NDMsNiArMjg3
NDQsNyBAQAogCQkJCTdDRDBFMkI4MUY4MEE0ODIwMDE2QTRDRSAvKiBBYm9ydENvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdDRDBFMkJGMUY4MEE1NkUwMDE2QTRDRSAvKiBBYm9ydFNp
Z25hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCOTUxOTUyMDdENjMzNDAwQTdEMkREIC8qIEFi
c3RyYWN0RE9NV2luZG93LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkYwMkExQTIzNzM3RjgzMDAx
MDZBNjQgLyogQWJzdHJhY3RFdmVudExvb3AuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk2
MjA3RDYzM0EwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NDgyMjMxMzFFMzg2RTI0MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURMVHlw
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKaW5kZXggNzUwZWE4ZGZj
NmQ2MDFhMjNjN2NhMDQwYzNiMzhhNWIwN2U0MTNkOC4uMzA1YmNmNTE0NGUwMmUzNjFlNWQzMmYw
NDc1NDE1ZTU4Yjg2NWZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvSURM
VHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9JRExUeXBlcy5oCkBAIC00Myw3
ICs0Myw2IEBAIGNsYXNzIEFycmF5QnVmZmVyVmlldzsKIGNsYXNzIERhdGFWaWV3OwogY2xhc3Mg
SlNWYWx1ZTsKIGNsYXNzIEpTT2JqZWN0OwotdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFN0cm9u
ZzsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HdWFyZGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUd1YXJkZWRPYmplY3QuaAppbmRleCA2M2MxNzcyZjRhYjdmYjM1MWUxNGRiOGEw
NWE5ZjdjNzJiNzU4YjdiLi5hMDRiODNmOTAzM2I2MmNkZmEzYTgzYjk4MjMwNTliZDY3N2E3MDUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUd1YXJkZWRPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUd1YXJkZWRPYmplY3Qu
aApAQCAtNTEsNyArNTEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgRE9NR3VhcmRlZE9iamVjdChKU0RP
TUdsb2JhbE9iamVjdCYsIEpTQzo6SlNDZWxsJik7CiAKICAgICB2b2lkIGNvbnRleHREZXN0cm95
ZWQoKSBvdmVycmlkZTsKLSAgICBib29sIGlzRW1wdHkoKSB7IHJldHVybiAhbV9ndWFyZGVkOyB9
CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fZ3VhcmRlZDsgfQogCiAgICAg
SlNDOjpXZWFrPEpTQzo6SlNDZWxsPiBtX2d1YXJkZWQ7CiAgICAgSlNDOjpXZWFrPEpTRE9NR2xv
YmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmNwcAppbmRleCA1NTBiY2MzYTYwMzE5MjM5YTJh
NjRiMmNlN2RlYWE3ZDU2ZGY0MzkxLi4wYmM1YTg5OTg0Yjk2YjExNzVmY2M5YmVjZGM0MjZlNTUx
NjllMjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21p
c2VEZWZlcnJlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9t
aXNlRGVmZXJyZWQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPTk9iamVjdC5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CkBAIC00NSw5ICs0NiwxOCBAQCBKU0M6OkpTVmFsdWUgRGVmZXJyZWRQ
cm9taXNlOjpwcm9taXNlKCkgY29uc3QKIAogdm9pZCBEZWZlcnJlZFByb21pc2U6OmNhbGxGdW5j
dGlvbihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVzb2x2ZU1vZGUgbW9k
ZSwgSlNWYWx1ZSByZXNvbHV0aW9uKQogewotICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkK
KyAgICBpZiAoc2hvdWxkSWdub3JlUmVxdWVzdFRvRnVsZmlsbCgpKQogICAgICAgICByZXR1cm47
CiAKKyAgICBpZiAoYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpKSB7CisgICAgICAgIEpT
Qzo6U3Ryb25nPEpTQzo6VW5rbm93biwgU2hvdWxkU3Ryb25nRGVzdHJ1Y3RvckdyYWJMb2NrOjpZ
ZXM+IHN0cm9uZ1Jlc29sdXRpb24obGV4aWNhbEdsb2JhbE9iamVjdC52bSgpLCByZXNvbHV0aW9u
KTsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5ldmVudExvb3AoKS5xdWV1ZVRh
c2soVGFza1NvdXJjZTo6TmV0d29ya2luZywgKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbW9kZSwgc3Ryb25nUmVzb2x1dGlv
biA9IFdURk1vdmUoc3Ryb25nUmVzb2x1dGlvbildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBp
ZiAoIXNob3VsZElnbm9yZVJlcXVlc3RUb0Z1bGZpbGwoKSkKKyAgICAgICAgICAgICAgICBjYWxs
RnVuY3Rpb24oKmdsb2JhbE9iamVjdCgpLCBtb2RlLCBzdHJvbmdSZXNvbHV0aW9uLmdldCgpKTsK
KyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBGSVhNRTogV2Ug
Y291bGQgaGF2ZSBlcnJvciBzaW5jZSBhbnkgSlMgY2FsbCBjYW4gdGhyb3cgc3RhY2stb3ZlcmZs
b3cgZXJyb3JzLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDM0MDIKICAgICBzd2l0Y2ggKG1vZGUpIHsKQEAgLTY1LDE1ICs3NSwyMiBAQCB2b2lkIERl
ZmVycmVkUHJvbWlzZTo6Y2FsbEZ1bmN0aW9uKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBSZXNvbHZlTQogCiB2b2lkIERlZmVycmVkUHJvbWlzZTo6d2hlblNldHRsZWQoRnVu
Y3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogewotICAgIGlmIChpc1N1c3BlbmRlZCgpKQorICAg
IGlmIChzaG91bGRJZ25vcmVSZXF1ZXN0VG9GdWxmaWxsKCkpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIGlmIChhY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCkpIHsKKyAgICAgICAgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6TmV0
d29ya2luZywgKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIHdoZW5TZXR0bGVkKFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAg
fSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBET01Qcm9taXNlOjp3aGVuUHJvbWlz
ZUlzU2V0dGxlZChnbG9iYWxPYmplY3QoKSwgZGVmZXJyZWQoKSwgV1RGTW92ZShjYWxsYmFjaykp
OwogfQogCiB2b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0KCkKIHsKLSAgICBpZiAoaXNTdXNw
ZW5kZWQoKSkKKyAgICBpZiAoc2hvdWxkSWdub3JlUmVxdWVzdFRvRnVsZmlsbCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBBU1NFUlQoZGVmZXJyZWQoKSk7CkBAIC04NSw3ICsxMDIsNyBAQCB2
b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0KCkKIAogdm9pZCBEZWZlcnJlZFByb21pc2U6OnJl
amVjdChzdGQ6Om51bGxwdHJfdCkKIHsKLSAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICBpZiAo
c2hvdWxkSWdub3JlUmVxdWVzdFRvRnVsZmlsbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBB
U1NFUlQoZGVmZXJyZWQoKSk7CkBAIC05Nyw3ICsxMTQsNyBAQCB2b2lkIERlZmVycmVkUHJvbWlz
ZTo6cmVqZWN0KHN0ZDo6bnVsbHB0cl90KQogCiB2b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0
KEV4Y2VwdGlvbiBleGNlcHRpb24pCiB7Ci0gICAgaWYgKGlzU3VzcGVuZGVkKCkpCisgICAgaWYg
KHNob3VsZElnbm9yZVJlcXVlc3RUb0Z1bGZpbGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
QVNTRVJUKGRlZmVycmVkKCkpOwpAQCAtMTI5LDcgKzE0Niw3IEBAIHZvaWQgRGVmZXJyZWRQcm9t
aXNlOjpyZWplY3QoRXhjZXB0aW9uIGV4Y2VwdGlvbikKIAogdm9pZCBEZWZlcnJlZFByb21pc2U6
OnJlamVjdChFeGNlcHRpb25Db2RlIGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAg
aWYgKGlzU3VzcGVuZGVkKCkpCisgICAgaWYgKHNob3VsZElnbm9yZVJlcXVlc3RUb0Z1bGZpbGwo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKGRlZmVycmVkKCkpOwpAQCAtMTYyLDcg
KzE3OSw3IEBAIHZvaWQgRGVmZXJyZWRQcm9taXNlOjpyZWplY3QoRXhjZXB0aW9uQ29kZSBlYywg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiB2b2lkIERlZmVycmVkUHJvbWlzZTo6cmVqZWN0KGNv
bnN0IEpTQzo6UHJpdmF0ZU5hbWUmIHByaXZhdGVOYW1lKQogewotICAgIGlmIChpc1N1c3BlbmRl
ZCgpKQorICAgIGlmIChzaG91bGRJZ25vcmVSZXF1ZXN0VG9GdWxmaWxsKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5oCmluZGV4IGYwYTFlN2UyMDRjODI4OWQx
ODkwYWM3YWMyNWFlYmQwZDFiNTUwYjguLmM1NjNhMjYwMzg0ZjgwODdhMGViYjAxN2U5ZDQzNDk2
Mzc2ZjU4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJv
bWlzZURlZmVycmVkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9t
aXNlRGVmZXJyZWQuaApAQCAtMjUsOSArMjUsMTEgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJBYnN0cmFjdEV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5j
bHVkZSAiSlNET01Db252ZXJ0LmgiCiAjaW5jbHVkZSAiSlNET01HdWFyZGVkT2JqZWN0LmgiCisj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0NhdGNoU2NvcGUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1Byb21pc2UuaD4K
IApAQCAtNTgsOCArNjAsOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgSURMVHlwZT4K
ICAgICB2b2lkIHJlc29sdmUodHlwZW5hbWUgSURMVHlwZTo6UGFyYW1ldGVyVHlwZSB2YWx1ZSkK
ICAgICB7Ci0gICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQorICAgICAgICBpZiAoc2hvdWxkSWdu
b3JlUmVxdWVzdFRvRnVsZmlsbCgpKQogICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIEFT
U0VSVChkZWZlcnJlZCgpKTsKICAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKICAgICAg
ICAgSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVj
dCgpOwpAQCAtNjksOCArNzIsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc29sdmUoKQogICAg
IHsKLSAgICAgICAgaWYgKGlzU3VzcGVuZGVkKCkpCisgICAgICAgIGlmIChzaG91bGRJZ25vcmVS
ZXF1ZXN0VG9GdWxmaWxsKCkpCiAgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgQVNTRVJU
KGRlZmVycmVkKCkpOwogICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KCkpOwogICAgICAgICBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0KCk7
CkBAIC04MSw4ICs4NSw5IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBJRExUeXBlPgog
ICAgIHZvaWQgcmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQodHlwZW5hbWUgSURMVHlwZTo6UGFyYW1l
dGVyVHlwZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGlmIChpc1N1c3BlbmRlZCgpKQorICAgICAg
ICBpZiAoc2hvdWxkSWdub3JlUmVxdWVzdFRvRnVsZmlsbCgpKQogICAgICAgICAgICAgcmV0dXJu
OworCiAgICAgICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKICAgICAgICAgQVNTRVJUKGdsb2JhbE9i
amVjdCgpKTsKICAgICAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCA9IGdsb2JhbE9iamVjdCgpOwpAQCAtOTMsOCArOTgsOSBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8Y2xhc3MgSURMVHlwZT4KICAgICB2b2lkIHJlc29sdmVDYWxsYmFja1ZhbHVlV2l0aE5ld2x5
Q3JlYXRlZChjb25zdCBGdW5jdGlvbjx0eXBlbmFtZSBJRExUeXBlOjpJbm5lclBhcmFtZXRlclR5
cGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYgY3JlYXRlVmFsdWUpCiAgICAgewotICAgICAg
ICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgaWYgKHNob3VsZElnbm9yZVJlcXVlc3RUb0Z1
bGZpbGwoKSkKICAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBBU1NFUlQoZGVmZXJyZWQo
KSk7CiAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QoKSk7CiAgICAgICAgIGF1dG8qIGxleGlj
YWxHbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3QoKTsKQEAgLTEwNSw4ICsxMTEsOSBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgSURMVHlwZT4KICAgICB2b2lkIHJlamVjdCh0eXBlbmFt
ZSBJRExUeXBlOjpQYXJhbWV0ZXJUeXBlIHZhbHVlKQogICAgIHsKLSAgICAgICAgaWYgKGlzU3Vz
cGVuZGVkKCkpCisgICAgICAgIGlmIChzaG91bGRJZ25vcmVSZXF1ZXN0VG9GdWxmaWxsKCkpCiAg
ICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgQVNTRVJUKGRlZmVycmVkKCkpOwogICAgICAg
ICBBU1NFUlQoZ2xvYmFsT2JqZWN0KCkpOwogICAgICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0KCk7CkBAIC0xMjMsOCArMTMwLDkgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxiYWNrPgogICAgIHZvaWQgcmVzb2x2
ZVdpdGhDYWxsYmFjayhDYWxsYmFjayBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGlmIChpc1N1
c3BlbmRlZCgpKQorICAgICAgICBpZiAoc2hvdWxkSWdub3JlUmVxdWVzdFRvRnVsZmlsbCgpKQog
ICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKICAgICAg
ICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKICAgICAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdCgpOwpAQCAtMTM1LDggKzE0Myw5IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYmFjaz4KICAgICB2b2lkIHJlamVj
dFdpdGhDYWxsYmFjayhDYWxsYmFjayBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGlmIChpc1N1
c3BlbmRlZCgpKQorICAgICAgICBpZiAoc2hvdWxkSWdub3JlUmVxdWVzdFRvRnVsZmlsbCgpKQog
ICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIEFTU0VSVChkZWZlcnJlZCgpKTsKICAgICAg
ICAgQVNTRVJUKGdsb2JhbE9iamVjdCgpKTsKICAgICAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdCgpOwpAQCAtMTU1LDYgKzE2NCw4IEBA
IHByaXZhdGU6CiAgICAgewogICAgIH0KIAorICAgIGJvb2wgc2hvdWxkSWdub3JlUmVxdWVzdFRv
RnVsZmlsbCgpIGNvbnN0IHsgcmV0dXJuIGlzRW1wdHkoKSB8fCBhY3RpdmVET01PYmplY3RBcmVT
dG9wcGVkKCk7IH0KKwogICAgIEpTQzo6SlNQcm9taXNlKiBkZWZlcnJlZCgpIGNvbnN0IHsgcmV0
dXJuIGd1YXJkZWQoKTsgfQogCiAgICAgZW51bSBjbGFzcyBSZXNvbHZlTW9kZSB7IFJlc29sdmUs
IFJlamVjdCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAKaW5kZXggNDNjYmE4OTkwNGRm
ZmM5MGFkYzM5NjMyNjBiOTUwMjhiNDVlM2MxNS4uMjdmZjE3NTc5NmUzZjU4MTZkMGE2MmY1MTNi
NzdiZTNhNDliYWEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCkBAIC0xOTksMjIg
KzE5OSwxNCBAQCB2b2lkIEZvbnRGYWNlU2V0OjpzdGFydGVkTG9hZGluZygpCiB2b2lkIEZvbnRG
YWNlU2V0OjpkaWRGaXJzdExheW91dCgpCiB7CiAgICAgbV9pc0ZpcnN0TGF5b3V0RG9uZSA9IHRy
dWU7Ci0gICAgaWYgKCFtX2JhY2tpbmctPmhhc0FjdGl2ZUZvbnRGYWNlcygpICYmICFtX3JlYWR5
UHJvbWlzZS0+aXNGdWxmaWxsZWQoKSkgewotICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0
QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkZvbnRMb2FkaW5nLCBbdGhpc10gewotICAgICAgICAg
ICAgaWYgKCFtX3JlYWR5UHJvbWlzZS0+aXNGdWxmaWxsZWQoKSkKLSAgICAgICAgICAgICAgICBt
X3JlYWR5UHJvbWlzZS0+cmVzb2x2ZSgqdGhpcyk7Ci0gICAgICAgIH0pOwotICAgIH0KKyAgICBp
ZiAoIW1fYmFja2luZy0+aGFzQWN0aXZlRm9udEZhY2VzKCkgJiYgIW1fcmVhZHlQcm9taXNlLT5p
c0Z1bGZpbGxlZCgpKQorICAgICAgICBtX3JlYWR5UHJvbWlzZS0+cmVzb2x2ZSgqdGhpcyk7CiB9
CiAKIHZvaWQgRm9udEZhY2VTZXQ6OmNvbXBsZXRlZExvYWRpbmcoKQogewotICAgIGlmIChtX2lz
Rmlyc3RMYXlvdXREb25lICYmICFtX3JlYWR5UHJvbWlzZS0+aXNGdWxmaWxsZWQoKSkgewotICAg
ICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6OkZvbnRM
b2FkaW5nLCBbdGhpc10gewotICAgICAgICAgICAgaWYgKCFtX3JlYWR5UHJvbWlzZS0+aXNGdWxm
aWxsZWQoKSkKLSAgICAgICAgICAgICAgICBtX3JlYWR5UHJvbWlzZS0+cmVzb2x2ZSgqdGhpcyk7
Ci0gICAgICAgIH0pOwotICAgIH0KKyAgICBpZiAobV9pc0ZpcnN0TGF5b3V0RG9uZSAmJiAhbV9y
ZWFkeVByb21pc2UtPmlzRnVsZmlsbGVkKCkpCisgICAgICAgIG1fcmVhZHlQcm9taXNlLT5yZXNv
bHZlKCp0aGlzKTsKIH0KIAogdm9pZCBGb250RmFjZVNldDo6ZmFjZUZpbmlzaGVkKENTU0ZvbnRG
YWNlJiBmYWNlLCBDU1NGb250RmFjZTo6U3RhdHVzIG5ld1N0YXR1cykKQEAgLTIyNiwyMiArMjE4
LDIwIEBAIHZvaWQgRm9udEZhY2VTZXQ6OmZhY2VGaW5pc2hlZChDU1NGb250RmFjZSYgZmFjZSwg
Q1NTRm9udEZhY2U6OlN0YXR1cyBuZXdTdGF0dXMpCiAgICAgaWYgKHBlbmRpbmdQcm9taXNlcy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RB
bGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6Rm9udExvYWRpbmcsIFtwZW5kaW5nUHJvbWlzZXMgPSBX
VEZNb3ZlKHBlbmRpbmdQcm9taXNlcyksIG5ld1N0YXR1c10gewotICAgICAgICBmb3IgKGF1dG8m
IHBlbmRpbmdQcm9taXNlIDogcGVuZGluZ1Byb21pc2VzKSB7Ci0gICAgICAgICAgICBpZiAocGVu
ZGluZ1Byb21pc2UtPmhhc1JlYWNoZWRUZXJtaW5hbFN0YXRlKQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgaWYgKG5ld1N0YXR1cyA9PSBDU1NGb250RmFjZTo6U3RhdHVz
OjpTdWNjZXNzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHBlbmRpbmdQcm9taXNlLT5oYXNPbmVS
ZWYoKSkgewotICAgICAgICAgICAgICAgICAgICBwZW5kaW5nUHJvbWlzZS0+cHJvbWlzZS0+cmVz
b2x2ZShwZW5kaW5nUHJvbWlzZS0+ZmFjZXMpOwotICAgICAgICAgICAgICAgICAgICBwZW5kaW5n
UHJvbWlzZS0+aGFzUmVhY2hlZFRlcm1pbmFsU3RhdGUgPSB0cnVlOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG5ld1N0YXR1
cyA9PSBDU1NGb250RmFjZTo6U3RhdHVzOjpGYWlsdXJlKTsKLSAgICAgICAgICAgICAgICBwZW5k
aW5nUHJvbWlzZS0+cHJvbWlzZS0+cmVqZWN0KE5ldHdvcmtFcnJvcik7CisgICAgZm9yIChhdXRv
JiBwZW5kaW5nUHJvbWlzZSA6IHBlbmRpbmdQcm9taXNlcykgeworICAgICAgICBpZiAocGVuZGlu
Z1Byb21pc2UtPmhhc1JlYWNoZWRUZXJtaW5hbFN0YXRlKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGlmIChuZXdTdGF0dXMgPT0gQ1NTRm9udEZhY2U6OlN0YXR1czo6U3VjY2Vzcykg
eworICAgICAgICAgICAgaWYgKHBlbmRpbmdQcm9taXNlLT5oYXNPbmVSZWYoKSkgeworICAgICAg
ICAgICAgICAgIHBlbmRpbmdQcm9taXNlLT5wcm9taXNlLT5yZXNvbHZlKHBlbmRpbmdQcm9taXNl
LT5mYWNlcyk7CiAgICAgICAgICAgICAgICAgcGVuZGluZ1Byb21pc2UtPmhhc1JlYWNoZWRUZXJt
aW5hbFN0YXRlID0gdHJ1ZTsKICAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIEFTU0VSVChuZXdTdGF0dXMgPT0gQ1NTRm9udEZhY2U6OlN0YXR1czo6RmFpbHVyZSk7
CisgICAgICAgICAgICBwZW5kaW5nUHJvbWlzZS0+cHJvbWlzZS0+cmVqZWN0KE5ldHdvcmtFcnJv
cik7CisgICAgICAgICAgICBwZW5kaW5nUHJvbWlzZS0+aGFzUmVhY2hlZFRlcm1pbmFsU3RhdGUg
PSB0cnVlOwogICAgICAgICB9Ci0gICAgfSk7CisgICAgfQogfQogCiBGb250RmFjZVNldCYgRm9u
dEZhY2VTZXQ6OnJlYWR5UHJvbWlzZVJlc29sdmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVE
T01DYWxsYmFjay5jcHAKaW5kZXggYWU3YTRhMTUwMTQ1ODcxYjk0MTRiNDFkMzk3NjQ0OTNjYmI4
NWFmOC4uMmY3OTM2YWVmMzkzNzE0OTJmYmYzNzk0N2ZhNzMyMzZjMjJmMGMxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQWN0aXZlRE9NQ2FsbGJhY2suY3BwCkBAIC00OCw0ICs0OCwxNiBAQCBib29s
IEFjdGl2ZURPTUNhbGxiYWNrOjpjYW5JbnZva2VDYWxsYmFjaygpIGNvbnN0CiAgICAgcmV0dXJu
IGNvbnRleHQgJiYgIWNvbnRleHQtPmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSAmJiAh
Y29udGV4dC0+YWN0aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKTsKIH0KIAorYm9vbCBBY3RpdmVE
T01DYWxsYmFjazo6YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIGNvbnN0Cit7CisgICAg
YXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICByZXR1cm4gY29u
dGV4dCAmJiBjb250ZXh0LT5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCk7Cit9CisKK2Jv
b2wgQWN0aXZlRE9NQ2FsbGJhY2s6OmFjdGl2ZURPTU9iamVjdEFyZVN0b3BwZWQoKSBjb25zdAor
eworICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgcmV0
dXJuICFjb250ZXh0IHx8IGNvbnRleHQtPmFjdGl2ZURPTU9iamVjdHNBcmVTdG9wcGVkKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9BY3RpdmVET01DYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxi
YWNrLmgKaW5kZXggMmIzNWIxMjBjZDc1NDQyOWRkMWViMTQzMjhkNTU1Njc2YmMyOTY4OS4uN2Ix
MWNlMDdkMzlhMzRiZTg0ODc2Nzc1ZDkyNmY1Yjc4OTQ4MjYyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0FjdGl2ZURPTUNhbGxiYWNrLmgKQEAgLTUxLDYgKzUxLDkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfkFjdGl2ZURPTUNhbGxiYWNrKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhbklu
dm9rZUNhbGxiYWNrKCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGFjdGl2ZURP
TU9iamVjdHNBcmVTdXNwZW5kZWQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGFj
dGl2ZURPTU9iamVjdEFyZVN0b3BwZWQoKSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQg
dmlzaXRKU0Z1bmN0aW9uKEpTQzo6U2xvdFZpc2l0b3ImKSB7IH0KIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAppbmRleCA0MmE3ZjIyNWQ3YTNkYmFlZTc5NTdjYTBkOGQ3NmRjNGY5YTFlM2RjLi4zNjZjMDM2
Nzg4ZTcwODZkZGU4ZjhjOWE4MDQ1OGMxMjExOGRlZjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJTaGFkb3dSb290TW9kZS5oIgogI2luY2x1ZGUgIlNp
bXVsYXRlZENsaWNrT3B0aW9ucy5oIgogI2luY2x1ZGUgIlN0eWxlQ2hhbmdlLmgiCisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggYTYzMzQ3Yjgy
NzlkMGVmYTQ4YzM1NGFhMDgxNjlmNDczNWNjNDg3Yi4uMGYxNzJhMTI5ZGFkMDFiNGQzYzliYjEy
MzJjYzAyZDMzMTE1Y2ZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oCkBAIC00NCw3ICs0NCw2IEBAIGNsYXNzIENhbGxGcmFtZTsKIGNsYXNzIEV4Y2Vw
dGlvbjsKIGNsYXNzIEpTUHJvbWlzZTsKIGNsYXNzIFZNOwotdGVtcGxhdGU8dHlwZW5hbWU+IGNs
YXNzIFN0cm9uZzsKIH0KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaAppbmRleCA1ODcyOTJkZDBmYWFlZGZmMDY3MDkyZjNhZTlmOWZjZTQ5ODg4OWI4Li40YmIx
YzlmNzYyZTk5YWVhZTgyYTA4YWZkYTNmYjlmNWZjZDVlZDExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1
ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGFuZGxlVHlw
ZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KICNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CkBAIC00NSw3ICs0Niw2IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgQ2FsbEZyYW1l
OwogY2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBKU1ZhbHVlOwotdGVtcGxhdGU8dHlwZW5hbWU+IGNs
YXNzIFN0cm9uZzsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVt
b3RlRE9NV2luZG93LmgKaW5kZXggNDA1MGRmNTA5YWRhOTljMWI0MjgzMDU1OWMyYzhlOGNmNDNl
YjE4My4uNmUwNWMzYjI4MzBhOWUzMTQ2NTM4ZDcxY2I2NmIxNDI2YmMxYTgyMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW1vdGVET01XaW5kb3cuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbW90ZURPTVdpbmRvdy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRl
ICJBYnN0cmFjdERPTVdpbmRvdy5oIgogI2luY2x1ZGUgIlJlbW90ZUZyYW1lLmgiCisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgog
I2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIApAQCAtMzUsNyArMzYsNiBAQCBjbGFzcyBDYWxs
RnJhbWU7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgSlNW
YWx1ZTsKLXRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBTdHJvbmc7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCAyNjdlMmMyMjM2MzAyNGM0MzQyYWE4NWFjNzNiZjlhZGU0MGJiNWFk
Li4xNWZiMDNkYjdjMDU2ZDJhOTU2YTk4N2QwMWRlZTQyOWI3ZmNmZDEwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTktMTEtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBNYWtlIERlZmVycmVkUHJvbWlzZSBiZWhhdmUgbmljZWx5IHdpdGggcmVnYXJkcyB0
byB0aGUgYmFjay9mb3J3YXJkIGNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDM5NzYKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5p
d2EuCisKKyAgICAgICAgUmViYXNlbGluZSB0ZXN0IHdoZXJlIG9yZGVyaW5nIGhhcyBjaGFuZ2Vk
IHNsaWdodGx5IGR1ZSB0byBub3QgcXVldWVpbmcgYSB0YXNrIGFueW1vcmUgYmVmb3JlCisgICAg
ICAgIHJlc29sdmluZyB0aGUgcHJvbWlzZS4gVGhpcyByZXN0b3JlcyBwcmUtcjI1MTc0NiBiZWhh
dmlvci4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJN
ZWRpYS1leHBlY3RlZC50eHQ6CisKIDIwMTktMTEtMDggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgICdTdHJpa2V0aHJvdWdoJyBlZGl0aW5nIGNv
bW1hbmQgcmVwb3J0ZWQgYXMgJ2Zvcm1hdFVuZGVybGluZScKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRpYS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy1nZXRVc2VyTWVk
aWEtZXhwZWN0ZWQudHh0CmluZGV4IDAzNDczOGE2Yzk3NzVkNDk3YWU0ZTUyNGM4M2IyODk2ZTFk
YzM4ZDcuLjBlYzMyNTEzZmU0OTBkYWRlZjYyZDI1YTIyM2E4ZmM2ZTI3YWY5MmEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLWdldFVzZXJNZWRp
YS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYURl
dmljZXMtZ2V0VXNlck1lZGlhLWV4cGVjdGVkLnR4dApAQCAtNiw5ICs2LDkgQEAgT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUKIFBBU1MgdHlwZW9mIG5hdmlnYXRvci5tZWRpYURldmljZXMud2Via2l0
R2V0VXNlck1lZGlhIGlzICd1bmRlZmluZWQnCiAKIFBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNl
cy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KS50aGVuKGdvdFN0cmVhbTEpOyBkaWQgbm90IHRo
cm93IGV4Y2VwdGlvbi4KLVBBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEu
YXBwbHkodW5kZWZpbmVkKSByZWplY3RlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IENhbiBvbmx5
IGNhbGwgTWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSBvbiBpbnN0YW5jZXMgb2YgTWVkaWFEZXZp
Y2VzCiBQQVNTIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKCkgcmVqZWN0ZWQg
d2l0aCBlcnJvcjogVHlwZUVycm9yOiBUeXBlIGVycm9yCiBQQVNTIG5hdmlnYXRvci5tZWRpYURl
dmljZXMuZ2V0VXNlck1lZGlhKHt9KSByZWplY3RlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IKK1BBU1MgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEuYXBwbHko
dW5kZWZpbmVkKSByZWplY3RlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IENhbiBvbmx5IGNhbGwg
TWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSBvbiBpbnN0YW5jZXMgb2YgTWVkaWFEZXZpY2VzCiBQ
QVNTIFN0cmVhbSAxIGdlbmVyYXRlZC4KIFBBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVu
Z3RoIGlzIDEKIFBBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDAK
</data>

          </attachment>
      

    </bug>

</bugzilla>