<?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>184750</bug_id>
          
          <creation_ts>2018-04-18 13:16:21 -0700</creation_ts>
          <short_desc>Add globally-unique HistoryItem identifiers (and have WebKit2 adopt them)</short_desc>
          <delta_ts>2018-04-20 13:43:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1415670</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-18 13:16:21 -0700</bug_when>
    <thetext>Add globally-unique HistoryItem identifiers (and have WebKit2 adopt them)

With process swapping, the WebKit assumption that &quot;back/forward items belong to a process&quot; has been invalidated.

So we need to uniquely identify all history items across all processes so there will never be a collision in the global UIProcess namespace.

This also lets us get rid of the &quot;per-WebProcess WebBackForwardListItem registry&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415869</commentid>
    <comment_count>1</comment_count>
      <attachid>338309</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-18 22:20:54 -0700</bug_when>
    <thetext>Created attachment 338309
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415880</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-18 22:59:46 -0700</bug_when>
    <thetext>Assume I&apos;ll fix the GTK build failure sensibly - Should still be ready for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415883</commentid>
    <comment_count>3</comment_count>
      <attachid>338309</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-04-18 23:30:46 -0700</bug_when>
    <thetext>Comment on attachment 338309
Patch

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

&gt; Source/WebCore/history/BackForwardItemIdentifier.h:102
&gt; +    static void constructDeletedValue(WebCore::BackForwardItemIdentifier&amp; slot) { slot.processIdentifier = makeObjectIdentifier&lt;WebCore::ProcessIdentifierType&gt;(std::numeric_limits&lt;uint64_t&gt;::max()); }

Please use ObjectIdentifier&lt;WebCore::ProcessIdentifierType&gt;::hashTableDeletedValue().
Alternatively, define a constructor for HashTableDeletedValueType &amp; add isHashTableDeletedValue to BackForwardItemIdentifier?

&gt; Source/WebKit/UIProcess/WebBackForwardList.cpp:422
&gt; +        backForwardListItemState.identifier = { Process::identifier(), generateObjectIdentifier&lt;BackForwardItemIdentifier::ItemIdentifierType&gt;() };

Neat!

&gt; Source/WebKit/WebProcess/WebPage/WebBackForwardListProxy.cpp:-158
&gt; -    updateBackForwardItem(itemID, m_page-&gt;pageID(), item.ptr());

Why is it okay to stop calling updateBackForwardItem here? Could you clarify in the change log?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415915</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-19 07:38:00 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #3)
&gt; Comment on attachment 338309 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=338309&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/history/BackForwardItemIdentifier.h:102
&gt; &gt; +    static void constructDeletedValue(WebCore::BackForwardItemIdentifier&amp; slot) { slot.processIdentifier = makeObjectIdentifier&lt;WebCore::ProcessIdentifierType&gt;(std::numeric_limits&lt;uint64_t&gt;::max()); }
&gt; 
&gt; Please use
&gt; ObjectIdentifier&lt;WebCore::ProcessIdentifierType&gt;::hashTableDeletedValue().
&gt; Alternatively, define a constructor for HashTableDeletedValueType &amp; add
&gt; isHashTableDeletedValue to BackForwardItemIdentifier?
&gt; 

Sure.

&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/WebBackForwardListProxy.cpp:-158
&gt; &gt; -    updateBackForwardItem(itemID, m_page-&gt;pageID(), item.ptr());
&gt; 
&gt; Why is it okay to stop calling updateBackForwardItem here? Could you clarify
&gt; in the change log?

Previously, adding an item was &quot;add or update to the process&quot; followed by &quot;associate that item to the web page&quot;

Now it&apos;s one step &quot;Add a new item to the page&quot;

I&apos;ll put this in the changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415945</commentid>
    <comment_count>5</comment_count>
      <attachid>338327</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-19 09:26:21 -0700</bug_when>
    <thetext>Created attachment 338327
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415947</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-04-19 09:28:05 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415953</commentid>
    <comment_count>7</comment_count>
      <attachid>338332</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-19 09:46:03 -0700</bug_when>
    <thetext>Created attachment 338332
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415958</commentid>
    <comment_count>8</comment_count>
      <attachid>338334</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-19 10:04:36 -0700</bug_when>
    <thetext>Created attachment 338334
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416007</commentid>
    <comment_count>9</comment_count>
      <attachid>338334</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-19 11:45:46 -0700</bug_when>
    <thetext>Comment on attachment 338334
Patch

Clearing flags on attachment: 338334

Committed r230812: &lt;https://trac.webkit.org/changeset/230812&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416008</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-19 11:45:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416009</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-19 11:46:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/39571288&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416148</commentid>
    <comment_count>12</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2018-04-19 19:10:56 -0700</bug_when>
    <thetext>Two quick follow up questions:
1) I seem to remember that our long term goal was to try and make it so that back/forward list items were always created in the UIProcess, making among other things, the globally unique id problem trivial. Is that still a goal?

2) What is the reason that WebCore still uses the term HistoryItem? Should we change the name to BackForwardItem (or something like that) at some point (perhaps along with HistoryController)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416398</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-04-20 13:43:39 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #12)
&gt; Two quick follow up questions:
&gt; 1) I seem to remember that our long term goal was to try and make it so that
&gt; back/forward list items were always created in the UIProcess, making among
&gt; other things, the globally unique id problem trivial. Is that still a goal?

Sure!

&gt; 2) What is the reason that WebCore still uses the term HistoryItem? Should
&gt; we change the name to BackForwardItem (or something like that) at some point
&gt; (perhaps along with HistoryController)?

There&apos;s no reason to be HistoryItem instead of BackForwardListItem.

I considered it here, but didn&apos;t do it because it would&apos;ve taken half a day of fighting will all the platforms and all the build systems.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338309</attachid>
            <date>2018-04-18 22:20:54 -0700</date>
            <delta_ts>2018-04-19 09:26:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184750-20180418222053.patch</filename>
            <type>text/plain</type>
            <size>69306</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAwOTE2NGI3MDQwMzNiMjc1Y2E0MzRi
ODgxZjVlMDYyNTU2NDZiNGMuLjI5ZjgyNThlMWRlNTZmZTFmZjYzNWMxMmY5YWQ5ZDYyYTFhOTc5
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDQtMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBnbG9iYWxseS11bmlxdWUgSGlzdG9yeUl0ZW0g
aWRlbnRpZmllcnMgKGFuZCBoYXZlIFdlYktpdDIgYWRvcHQgdGhlbSkuCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8zOTUzMzk0OT4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODQ3NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHd0Zi9EZWJ1Z1V0aWxpdGllcy5oOgorICAgICAgICAoV1RGOjpkZWJ1Z1N0cmlu
Zyk6CisKIDIwMTgtMDQtMTggIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29t
PgogCiAgICAgICAgIFtXaW5dIExheW91dCBUZXN0IGpzL2RhdGUtY29uc3RydWN0b3IuaHRtbCBp
cyBmYWlsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGMwYmM4N2NjM2I0YzUzYWUxODllODM1NGU0YzQ5ZmQx
YmZmMWM1Zi4uMjczM2MwMWQxZDYzZDdiZGFlMWZmMWMyYjA5NGU0ZTUwMDE3NGM0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE4LTA0LTE4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgZ2xvYmFsbHktdW5pcXVlIEhpc3RvcnlJdGVtIGlk
ZW50aWZpZXJzIChhbmQgaGF2ZSBXZWJLaXQyIGFkb3B0IHRoZW0pLgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMzk1MzM5NDk+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg0NzUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIChSZWZhY3Rvciwgbm8gYmVoYXZpb3IgY2hhbmdlKS4KKworICAg
ICAgICBJbiBXZWJDb3JlLCB3ZToKKyAgICAgICAgLSBBZGQgYSBwcm9jZXNzLXVuaXF1ZSAiQmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllciIKKyAgICAgICAgLSBNYWtlIGFsbCBIaXN0b3J5SXRlbXMg
aGF2ZSBzdWNoIGFuIGlkZW50aWZpZXIgYXMgYSBtZW1iZXIKKworICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIGhpc3RvcnkvQmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXI6OmxvZ1N0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVy
YXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6
aGFzaCBjb25zdCk6CisgICAgICAgIChXVEY6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXJIYXNo
OjpoYXNoKToKKyAgICAgICAgKFdURjo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllckhhc2g6OmVx
dWFsKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1J
ZGVudGlmaWVyPjo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29y
ZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj46OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSk6Cisg
ICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmll
cj46OmlzRGVsZXRlZFZhbHVlKToKKworICAgICAgICAqIGhpc3RvcnkvSGlzdG9yeUl0ZW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW06OmdlbmVyYXRlU2VxdWVuY2VOdW1iZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKToKKyAgICAgICAg
KFdlYkNvcmU6OmdlbmVyYXRlU2VxdWVuY2VOdW1iZXIpOiBEZWxldGVkLgorCisgICAgICAgICog
aGlzdG9yeS9IaXN0b3J5SXRlbS5oOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW06OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5SXRlbTo6aWRlbnRpZmllciBjb25zdCk6
CisKIDIwMTgtMDQtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBTZXQgUmVtb3RlRE9NV2luZG93J3MgaW5pdGlhbCBvcGVuZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNWIyMTIy
ZGFlMjFiM2I0Y2M1ODdjMmQyOTUzZGU2Njg1N2YzNDA0Yi4uNWY4Y2JjMDk4Yzg3OGE0NGZhY2Rl
M2Q0ZDJjYmRhMzY3MzYxNjM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDggQEAKKzIwMTgtMDQt
MTggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBnbG9i
YWxseS11bmlxdWUgSGlzdG9yeUl0ZW0gaWRlbnRpZmllcnMgKGFuZCBoYXZlIFdlYktpdDIgYWRv
cHQgdGhlbSkuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zOTUzMzk0OT4gYW5kIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ3NTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaXRoIHByb2Nlc3Mgc3dhcHBpbmcsIHRo
ZSBhc3N1bXB0aW9uIHRoYXQgImJhY2svZm9yd2FyZCBpdGVtcyBiZWxvbmcgdG8gYSBwcm9jZXNz
IiBpcyBpbnZhbGlkLgorCisgICAgICAgIEFsbCBIaXN0b3J5SXRlbS9XZWJCYWNrRm9yd2FyZExp
c3RJdGVtcyBub3cgbmVlZCB0byBiZSB1bmlxdWVseSBpZGVudGlmaWVkIGFjcm9zcyBhbGwgcHJv
Y2Vzc2VzLAorICAgICAgICBubyBtYXR0ZXIgd2hpY2ggcHJvY2VzcyB0aGV5IG9yaWdpbmF0ZWQg
ZnJvbSwgc28gdGhlcmUgd2lsbCBuZXZlciBiZSBhIGNvbGxpc2lvbiBpbiB0aGUgVUlQcm9jZXNz
LgorCisgICAgICAgIFRoaXMgYWxsb3dzIHVzIHRvOgorICAgICAgICAtIEhhdmUgdGhlIFVJUHJv
Y2VzcyB0byBrZWVwIGEgc2luZ2xlIHByb2Nlc3Mtd2lkZSBtYXAgb2YgYWxsIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW1zCisgICAgICAgIC0gR2V0IHJpZCBvZiB0aGUgcGVyLVdlYlByb2Nlc3MgV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSBtYXAKKyAgICAgICAgLSBTaW1wbGlmeSBhbG90IG9mIFdlYkJh
Y2tGb3J3YXJkTGlzdChQcm94eSkgY29kZSB0aGF0IG5vIGxvbmdlciBuZWVkcyB0byBrZWVwIHRo
YXQgcGVyLXByb2Nlc3MKKyAgICAgICAgICBtYXAgaW4gc3luYworICAgICAgICAtIEdldCByaWQg
b2YgYSBsb3Qgb2Ygb3RoZXIgYW5jaWxsYXJ5IGNvZGUKKworICAgICAgICAqIFNoYXJlZC9TZXNz
aW9uU3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU6
OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1Nlc3Npb25TdGF0ZS5oOgorCisgICAgICAgICog
U2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJC
YWNrRm9yd2FyZExpc3RJdGVtOjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6fldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjppdGVtRm9ySUQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpoaWdoZXN0VXNlZEl0ZW1JRCk6
IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUlEIGNvbnN0KToKKwor
ICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAg
KiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3
YXJkTGlzdDo6aXRlbUZvcklEKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0
OjpwYWdlQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0OjphZGRJ
dGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0OjpyZXN0b3JlRnJvbVN0
YXRlKToKKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVXZWJCYWNrRm9yd2FyZEl0ZW1JRCk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oOgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6bWF5YmVDcmVhdGVTdXNwZW5kZWRQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6d2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6YmFja0ZvcndhcmRBZGRJdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpiYWNrRm9yd2FyZEdvVG9JdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpiYWNrRm9yd2FyZEl0ZW1BdEluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmJhY2tGb3J3YXJkUmVtb3ZlZEl0ZW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorIAor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6IEV4cGxpY2l0bHkgc2V0IHRo
ZSBVSVByb2Nlc3MgUHJvY2Vzczo6SWRlbnRpZmllciBzbyBpdCBzdGFydHMKKyAgICAgICAgICBh
dCAiMSIgYW5kIHRoZW4gdGhlIGZpcnN0IGNoaWxkIHByb2Nlc3Mgc3RhcnRzIGF0ICIyIiwgZXRj
IGV0Yy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OmNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dXBkYXRlQmFja0ZvcndhcmRJdGVtKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp3ZWJCYWNrRm9yd2FyZEl0ZW0gY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVy
TmV3V2ViQmFja0ZvcndhcmRMaXN0SXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6cmVtb3ZlQmFja0ZvcndhcmRJdGVtKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjphZGRPclVwZGF0ZUJhY2tGb3J3YXJkSXRlbSk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwOgorICAgICAg
ICAoV2ViS2l0Ojp0b0JhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OmFwcGx5RnJhbWVTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OnRvSGlzdG9yeUl0ZW0pOgorICAg
ICAgICAoV2ViS2l0Ojp0b1BhZ2VTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmg6CisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEdvVG9IaXN0b3J5SXRlbSBj
b25zdCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6YWRk
SXRlbUZyb21VSVByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXSzJOb3RpZnlIaXN0b3J5SXRl
bUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6aXRl
bUZvcklEKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OnJlbW92
ZUl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6YWRkSXRl
bSk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5Ojpnb1RvSXRlbSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppdGVtQXRJbmRleCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpjbG9zZSk6CisgICAg
ICAgIChXZWJLaXQ6Omhpc3RvcnlJdGVtVG9JRE1hcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OmdlbmVyYXRlSGlzdG9yeUl0ZW1JRCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YkJhY2tGb3J3YXJkTGlzdFByb3h5OjpzZXRIaWdoZXN0SXRlbUlERnJvbVVJUHJvY2Vzcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OnVwZGF0ZUJhY2tGb3J3YXJkSXRlbSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppZEZvckl0ZW0pOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQ
cm94eS5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjptX2NyZWRlbnRpYWxzTWVzc2VuZ2VyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnJlc3RvcmVTZXNzaW9uSW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRS
ZW1vdmVCYWNrRm9yd2FyZEl0ZW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46
CisKIDIwMTgtMDQtMTggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEFsbG93IFNhbWVPcmlnaW4gY3JlZGVudGlhbHMgaGFuZGxpbmcgZm9yIHN5bmNocm9ub3Vz
IFhIUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGVidWdVdGlsaXRpZXMuaCBiL1NvdXJj
ZS9XVEYvd3RmL0RlYnVnVXRpbGl0aWVzLmgKaW5kZXggYTQ0MWI1Y2RlOGJkMzQ4NjU4YjE4YzE1
MmY5NTViNDU5MGNmZjhiNC4uZGIzZDU2NjViZGE1YzA3MWM0ODU4ZWM2MjZhNmQxMjEzZDNkY2Y5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGVidWdVdGlsaXRpZXMuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9EZWJ1Z1V0aWxpdGllcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGUuaD4KIApAQCAtNDIsNiArNDMsMTIgQEAgZG8geyBcCiAKIG5hbWVzcGFj
ZSBXVEYgewogCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlPgorY29uc3QgY2hhciogZGVi
dWdTdHJpbmcoU3RyaW5nVHlwZSBzdHJpbmcpCit7CisgICAgcmV0dXJuIGRlYnVnU3RyaW5nKHN0
cmluZywgIiIpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBTdHJpbmdUeXBlcz4KIGNvbnN0
IGNoYXIqIGRlYnVnU3RyaW5nKFN0cmluZ1R5cGVzLi4uIHN0cmluZ3MpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDFkY2Qz
ZWVkZmFhNzU1ZTA2M2M2ZTc5ZjM5ODUwNDcxY2YzM2FiNC4uMDM5MTQ4OTUyMmE3OTAyZjA2NzM4
YzgxMDQ0Mzg2OWI0ZTA1NzliYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ2Niw2ICsxNDY2LDcgQEAKIAkJNTE5REJDNzIx
REMxMEY1MjAwMzI5QkY1IC8qIElEQkdldEFsbFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE5REJDNzExREMxMEQzMzAwMzI5QkY1IC8qIElE
QkdldEFsbFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUxQTA1MjMzMTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBMDUyMzEx
MDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFBMDUyNTYxMDU4ODc0MDAwQ0M5RTk1
IC8qIFByb3RlY3Rpb25TcGFjZUhhc2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQTA1MjU1MTA1ODg3NDAwMENDOUU5NSAvKiBQcm90ZWN0aW9uU3Bh
Y2VIYXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNTFBMUI4N0QyMDg3QzRDMDAwOTc5QTc1IC8qIEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTFCODdC
MjA4N0M0QjgwMDk3OUE3NSAvKiBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFBNEJCMEExOTU0RDYx
NjAwRkE1QzJFIC8qIEdhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFBNEJCMDcxOTU0RDYxNjAwRkE1QzJFIC8qIEdhbWVwYWQuY3BwICov
OyB9OwogCQk1MUE0QkIxMDE5NTRENjI3MDBGQTVDMkUgLyogTmF2aWdhdG9yR2FtZXBhZC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE0QkIwRDE5
NTRENjI3MDBGQTVDMkUgLyogTmF2aWdhdG9yR2FtZXBhZC5jcHAgKi87IH07CiAJCTUxQTc0OEUz
MjAwNUQwRTgwMDc1QkE2OCAvKiBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBNzQ4RTAyMDA1RDBFMDAwNzVC
QTY4IC8qIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc5NTQsNiArNzk1NSw3IEBACiAJCTUxQTA1MjMx
MTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDcmVkZW50aWFsU3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUEwNTIzMjEwNTg3NzRGMDBDQzlFOTUgLyogQ3JlZGVudGlhbFN0b3JhZ2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3JlZGVudGlhbFN0b3Jh
Z2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUEwNTI1NTEwNTg4NzQwMDBD
QzlFOTUgLyogUHJvdGVjdGlvblNwYWNlSGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQcm90ZWN0aW9uU3BhY2VIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxQTFCODdCMjA4N0M0QjgwMDk3OUE3NSAvKiBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBNEJCMDcxOTU0RDYxNjAw
RkE1QzJFIC8qIEdhbWVwYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR2FtZXBhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQTRCQjA4MTk1
NEQ2MTYwMEZBNUMyRSAvKiBHYW1lcGFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdhbWVwYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBNEJCMDkxOTU0
RDYxNjAwRkE1QzJFIC8qIEdhbWVwYWQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdhbWVw
YWQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc1ODYsNiArMTc1ODgsNyBA
QAogCQkJCTUxNzQxRDBCMEIwNzI1OUEwMEVENDQyQyAvKiBCYWNrRm9yd2FyZENsaWVudC5oICov
LAogCQkJCUJDQThDODFEMTFFM0QzNjkwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZENvbnRyb2xsZXIu
Y3BwICovLAogCQkJCUJDQThDODFDMTFFM0QzNjkwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZENvbnRy
b2xsZXIuaCAqLywKKwkJCQk1MUExQjg3QjIwODdDNEI4MDA5NzlBNzUgLyogQmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllci5oICovLAogCQkJCTUxQzBBQTQwMEYyQUExNUUwMDE2NDhDMiAvKiBDYWNo
ZWRGcmFtZS5jcHAgKi8sCiAJCQkJNTFDMEFBMzgwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZy
YW1lLmggKi8sCiAJCQkJNTFDQkZDOTgwRDEwRTQ4MzAwMkRCRjUxIC8qIENhY2hlZEZyYW1lUGxh
dGZvcm1EYXRhLmggKi8sCkBAIC0yNjkyMiw2ICsyNjkyNSw3IEBACiAJCQkJOTFDOUYyRjkxQUUz
QkVCMDAwOTVCNjFDIC8qIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTc0MUQwRjBCMDcyNTlBMDBFRDQ0MkMgLyogQmFja0ZvcndhcmRDbGllbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDQThDODFFMTFFM0QzNjkwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZENv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQTFCODdEMjA4N0M0QzAwMDk3OUE3NSAv
KiBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzEyNEVF
ODBDMjY0MUNEMDA5RTIzNDkgLyogQmFyUHJvcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDYwQkI2
MTYxRDBBMUJGMDAwMjIxODEyIC8qIEJhc2U2NFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzc5RTYxQ0ExMjZDQTVDNDAwQjYzRThEIC8qIEJhc2VCdXR0b25JbnB1dFR5cGUuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTVjZmQ2MzZlYThkNzljNGNhMWI1MDNiN2FmYzVm
YjliMTk0YTI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyLmgKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlByb2Nlc3MuaCIKKyNpbmNsdWRlIDx3dGYvRGVidWdV
dGlsaXRpZXMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXIgeworICAgIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVy
OworICAgIGVudW0gSXRlbUlkZW50aWZpZXJUeXBlIHsgfTsKKyAgICBPYmplY3RJZGVudGlmaWVy
PEl0ZW1JZGVudGlmaWVyVHlwZT4gaXRlbUlkZW50aWZpZXI7CisKKyAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3Q7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKKworI2lm
ICFMT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dTdHJpbmcoKSBjb25zdDsKKyNlbmRp
ZgorfTsKKworI2lmICFMT0dfRElTQUJMRUQKK2lubGluZSBjb25zdCBjaGFyKiBCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyOjpsb2dTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBkZWJ1Z1N0
cmluZyhTdHJpbmc6Om51bWJlcihwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKSwgIi0iLCBT
dHJpbmc6Om51bWJlcihpdGVtSWRlbnRpZmllci50b1VJbnQ2NCgpKSk7Cit9CisjZW5kaWYKKwor
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBh
LCBjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBiKQoreworICAgIHJldHVybiBhLnBy
b2Nlc3NJZGVudGlmaWVyID09IGIucHJvY2Vzc0lkZW50aWZpZXIgJiYgIGEuaXRlbUlkZW50aWZp
ZXIgPT0gYi5pdGVtSWRlbnRpZmllcjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3Zv
aWQgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Cit7CisgICAgZW5jb2RlciA8PCBwcm9jZXNzSWRlbnRpZmllciA8PCBpdGVtSWRlbnRpZmll
cjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8QmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllcj4gQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxQcm9jZXNzSWRlbnRpZmllcj4gcHJv
Y2Vzc0lkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBwcm9jZXNzSWRlbnRpZmllcjsKKyAgICBp
ZiAoIXByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgc3RkOjpvcHRpb25hbDxPYmplY3RJZGVudGlmaWVyPEl0ZW1JZGVudGlmaWVyVHlwZT4+IGl0
ZW1JZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gaXRlbUlkZW50aWZpZXI7CisgICAgaWYgKCFp
dGVtSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVy
biB7IHsgV1RGTW92ZSgqcHJvY2Vzc0lkZW50aWZpZXIpLCBXVEZNb3ZlKCppdGVtSWRlbnRpZmll
cikgfSB9OworfQorCitpbmxpbmUgdW5zaWduZWQgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6
aGFzaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbXB1dGVIYXNoKHByb2Nlc3NJZGVudGlmaWVy
LnRvVUludDY0KCksIGl0ZW1JZGVudGlmaWVyLnRvVUludDY0KCkpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCitzdHJ1Y3QgQmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllckhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYkNvcmU6
OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQor
ICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXImIGEsIGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGIpIHsg
cmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0Vt
cHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8
V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gOiBHZW5lcmljSGFzaFRyYWl0czxX
ZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiB7CisgICAgc3RhdGljIFdlYkNvcmU6
OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHsgfTsgfQor
CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OkJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXImIHNsb3QpIHsgc2xvdC5wcm9jZXNzSWRlbnRpZmllciA9IG1ha2VP
YmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyVHlwZT4oc3RkOjpudW1l
cmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKTsgfQorCisgICAgc3RhdGljIGJvb2wgaXNEZWxl
dGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYgc2xvdCkg
eyByZXR1cm4gc2xvdC5wcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpID09IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dWludDY0X3Q+OjptYXgoKTsgfQorfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4geworICAgIHR5cGVk
ZWYgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllckhhc2ggSGFzaDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAppbmRleCA5ZDg2ODk4
OGFkMGVkYWUwMGQ5NWY4NDJmZDM4MjMyNGRmOWY1NTg0Li5hNWJhOTVlNDM1NjY0M2NiN2VmMzIz
N2FlNjIyY2UzODc4ZTY2NzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hp
c3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNw
cApAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBsb25n
IGxvbmcgZ2VuZXJhdGVTZXF1ZW5jZU51bWJlcigpCitpbnQ2NF90IEhpc3RvcnlJdGVtOjpnZW5l
cmF0ZVNlcXVlbmNlTnVtYmVyKCkKIHsKICAgICAvLyBJbml0aWFsaXplIHRvIHRoZSBjdXJyZW50
IHRpbWUgdG8gcmVkdWNlIHRoZSBsaWtlbGlob29kIG9mIGdlbmVyYXRpbmcKICAgICAvLyBpZGVu
dGlmaWVycyB0aGF0IG92ZXJsYXAgd2l0aCB0aG9zZSBmcm9tIHBhc3QvZnV0dXJlIGJyb3dzZXIg
c2Vzc2lvbnMuCkBAIC01NSwzMSArNTUsMjcgQEAgc3RhdGljIHZvaWQgZGVmYXVsdE5vdGlmeUhp
c3RvcnlJdGVtQ2hhbmdlZChIaXN0b3J5SXRlbSopCiBXRUJDT1JFX0VYUE9SVCB2b2lkICgqbm90
aWZ5SGlzdG9yeUl0ZW1DaGFuZ2VkKShIaXN0b3J5SXRlbSopID0gZGVmYXVsdE5vdGlmeUhpc3Rv
cnlJdGVtQ2hhbmdlZDsKIAogSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKCkKLSAgICA6IG1faXRl
bVNlcXVlbmNlTnVtYmVyKGdlbmVyYXRlU2VxdWVuY2VOdW1iZXIoKSkKLSAgICAsIG1fZG9jdW1l
bnRTZXF1ZW5jZU51bWJlcihnZW5lcmF0ZVNlcXVlbmNlTnVtYmVyKCkpCi0gICAgLCBtX3BydW5p
bmdSZWFzb24oUHJ1bmluZ1JlYXNvbjo6Tm9uZSkKKyAgICA6IEhpc3RvcnlJdGVtKHsgfSwgeyB9
KQogewogfQogCiBIaXN0b3J5SXRlbTo6SGlzdG9yeUl0ZW0oY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIGNvbnN0IFN0cmluZyYgdGl0bGUpCi0gICAgOiBtX3VybFN0cmluZyh1cmxTdHJpbmcpCi0g
ICAgLCBtX29yaWdpbmFsVVJMU3RyaW5nKHVybFN0cmluZykKLSAgICAsIG1fdGl0bGUodGl0bGUp
Ci0gICAgLCBtX2l0ZW1TZXF1ZW5jZU51bWJlcihnZW5lcmF0ZVNlcXVlbmNlTnVtYmVyKCkpCi0g
ICAgLCBtX2RvY3VtZW50U2VxdWVuY2VOdW1iZXIoZ2VuZXJhdGVTZXF1ZW5jZU51bWJlcigpKQot
ICAgICwgbV9wcnVuaW5nUmVhc29uKFBydW5pbmdSZWFzb246Ok5vbmUpCisgICAgOiBIaXN0b3J5
SXRlbSh1cmxTdHJpbmcsIHRpdGxlLCB7IH0pCiB7CiB9CiAKIEhpc3RvcnlJdGVtOjpIaXN0b3J5
SXRlbShjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
U3RyaW5nJiBhbHRlcm5hdGVUaXRsZSkKKyAgICA6IEhpc3RvcnlJdGVtKHVybFN0cmluZywgdGl0
bGUsIGFsdGVybmF0ZVRpdGxlLCB7IFByb2Nlc3M6OmlkZW50aWZpZXIoKSwgZ2VuZXJhdGVPYmpl
Y3RJZGVudGlmaWVyPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI6Okl0ZW1JZGVudGlmaWVyVHlw
ZT4oKSB9KQoreworfQorCitIaXN0b3J5SXRlbTo6SGlzdG9yeUl0ZW0oY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRlVGl0
bGUsIEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcikK
ICAgICA6IG1fdXJsU3RyaW5nKHVybFN0cmluZykKICAgICAsIG1fb3JpZ2luYWxVUkxTdHJpbmco
dXJsU3RyaW5nKQogICAgICwgbV90aXRsZSh0aXRsZSkKICAgICAsIG1fZGlzcGxheVRpdGxlKGFs
dGVybmF0ZVRpdGxlKQotICAgICwgbV9wYWdlU2NhbGVGYWN0b3IoMCkKLSAgICAsIG1faXRlbVNl
cXVlbmNlTnVtYmVyKGdlbmVyYXRlU2VxdWVuY2VOdW1iZXIoKSkKLSAgICAsIG1fZG9jdW1lbnRT
ZXF1ZW5jZU51bWJlcihnZW5lcmF0ZVNlcXVlbmNlTnVtYmVyKCkpCiAgICAgLCBtX3BydW5pbmdS
ZWFzb24oUHJ1bmluZ1JlYXNvbjo6Tm9uZSkKKyAgICAsIG1faWRlbnRpZmllcihCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L0hpc3RvcnlJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgK
aW5kZXggNGQxZTJjZGQ3NDYxMmY0OGNjZjIyZjc0MWNmOTk1NDc3YzhhNTZjZi4uZWU0NjZjN2Yx
NGQxYmY4ZTc0YzA5NWYxMjZjYjlhNzVhNjVmN2U2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlz
dG9yeUl0ZW0uaApAQCAtMjYsNiArMjYsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
IkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKQEAgLTYy
LDIwICs2MywzMiBAQCBjbGFzcyBIaXN0b3J5SXRlbSA6IHB1YmxpYyBSZWZDb3VudGVkPEhpc3Rv
cnlJdGVtPiB7CiAgICAgZnJpZW5kIGNsYXNzIFBhZ2VDYWNoZTsKIAogcHVibGljOiAKLSAgICBz
dGF0aWMgUmVmPEhpc3RvcnlJdGVtPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEhp
c3RvcnlJdGVtKTsgfQorICAgIHN0YXRpYyBSZWY8SGlzdG9yeUl0ZW0+IGNyZWF0ZSgpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIaXN0b3J5SXRlbSk7CisgICAgfQorCiAg
ICAgc3RhdGljIFJlZjxIaXN0b3J5SXRlbT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSGlzdG9yeUl0ZW0odXJsU3RyaW5nLCB0aXRsZSkpOwogICAgIH0KKwogICAgIHN0YXRpYyBS
ZWY8SGlzdG9yeUl0ZW0+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGVUaXRsZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEhpc3RvcnlJdGVtKHVybFN0cmluZywgdGl0bGUsIGFsdGVy
bmF0ZVRpdGxlKSk7CiAgICAgfQorCisgICAgc3RhdGljIFJlZjxIaXN0b3J5SXRlbT4gY3JlYXRl
KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJp
bmcmIGFsdGVybmF0ZVRpdGxlLCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyIGlkZW50aWZpZXIp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIaXN0b3J5SXRlbSh1cmxTdHJp
bmcsIHRpdGxlLCBhbHRlcm5hdGVUaXRsZSwgaWRlbnRpZmllcikpOworICAgIH0KICAgICAKICAg
ICBXRUJDT1JFX0VYUE9SVCB+SGlzdG9yeUl0ZW0oKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJl
ZjxIaXN0b3J5SXRlbT4gY29weSgpIGNvbnN0OwogCisgICAgY29uc3QgQmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQor
CiAgICAgLy8gUmVzZXRzIHRoZSBIaXN0b3J5SXRlbSB0byBpdHMgaW5pdGlhbCBzdGF0ZSwgYXMg
cmV0dXJuZWQgYnkgY3JlYXRlKCkuCiAgICAgdm9pZCByZXNldCgpOwogICAgIApAQCAtMjA2LDkg
KzIxOSwxMiBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIEhpc3RvcnlJdGVtKCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgdGl0bGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIEhpc3RvcnlJdGVtKGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGFs
dGVybmF0ZVRpdGxlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBIaXN0b3J5SXRlbShjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBhbHRlcm5h
dGVUaXRsZSwgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcik7CiAKICAgICBIaXN0b3J5SXRlbShj
b25zdCBIaXN0b3J5SXRlbSYpOwogCisgICAgc3RhdGljIGludDY0X3QgZ2VuZXJhdGVTZXF1ZW5j
ZU51bWJlcigpOworCiAgICAgYm9vbCBoYXNTYW1lRG9jdW1lbnRUcmVlKEhpc3RvcnlJdGVtJiBv
dGhlckl0ZW0pIGNvbnN0OwogCiAgICAgU3RyaW5nIG1fdXJsU3RyaW5nOwpAQCAtMjM1LDEyICsy
NTEsMTIgQEAgcHJpdmF0ZToKICAgICAvLyBjbG9uZXMgb2Ygb25lIGFub3RoZXIuICBUcmF2ZXJz
aW5nIGhpc3RvcnkgZnJvbSBvbmUgc3VjaCBIaXN0b3J5SXRlbSB0bwogICAgIC8vIGFub3RoZXIg
aXMgYSBuby1vcC4gIEhpc3RvcnlJdGVtIGNsb25lcyBhcmUgY3JlYXRlZCBmb3IgcGFyZW50IGFu
ZAogICAgIC8vIHNpYmxpbmcgZnJhbWVzIHdoZW4gb25seSBhIHN1YmZyYW1lIG5hdmlnYXRlcy4K
LSAgICBpbnQ2NF90IG1faXRlbVNlcXVlbmNlTnVtYmVyOworICAgIGludDY0X3QgbV9pdGVtU2Vx
dWVuY2VOdW1iZXIgeyBnZW5lcmF0ZVNlcXVlbmNlTnVtYmVyKCkgfTsKIAogICAgIC8vIElmIHR3
byBIaXN0b3J5SXRlbXMgaGF2ZSB0aGUgc2FtZSBkb2N1bWVudCBzZXF1ZW5jZSBudW1iZXIsIHRo
ZW4gdGhleQogICAgIC8vIHJlZmVyIHRvIHRoZSBzYW1lIGluc3RhbmNlIG9mIGEgZG9jdW1lbnQu
ICBUcmF2ZXJzaW5nIGhpc3RvcnkgZnJvbSBvbmUKICAgICAvLyBzdWNoIEhpc3RvcnlJdGVtIHRv
IGFub3RoZXIgcHJlc2VydmVzIHRoZSBkb2N1bWVudC4KLSAgICBpbnQ2NF90IG1fZG9jdW1lbnRT
ZXF1ZW5jZU51bWJlcjsKKyAgICBpbnQ2NF90IG1fZG9jdW1lbnRTZXF1ZW5jZU51bWJlciB7IGdl
bmVyYXRlU2VxdWVuY2VOdW1iZXIoKSB9OwogCiAgICAgLy8gU3VwcG9ydCBmb3IgSFRNTDUgSGlz
dG9yeQogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fc3RhdGVPYmplY3Q7CkBA
IC0yNjgsNiArMjg0LDggQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8aWQ+IG1fdmlld1N0YXRl
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPGlkPj4+IG1f
dHJhbnNpZW50UHJvcGVydGllczsKICNlbmRpZgorCisgICAgQmFja0ZvcndhcmRJdGVtSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAppbmRleCA5MTFkMmU3Mzc3OGM5ZWY1YWE4ZjViMzIz
OWNkYmM4ZDU0MTI2MjI4Li5kNzdiYmU3YzVmNGQyNTg5YTUzYjljY2MzNzE3NzVmY2Q0ZDc2YTY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlICJTZXNzaW9uU3RhdGUuaCIKIAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllci5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMjMyLDggKzIzMywxMCBAQCBzdGQ6Om9w
dGlvbmFsPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4gQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRl
OjpkZWNvZGUoSVBDOjpEZQogewogICAgIEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSByZXN1bHQ7
CiAKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pZGVudGlmaWVyKSkKKyAgICBhdXRv
IGlkZW50aWZpZXIgPSBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOjpkZWNvZGUoZGVjb2Rlcik7
CisgICAgaWYgKCFpZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IHJlc3VsdC5pZGVudGlmaWVyID0gKmlkZW50aWZpZXI7CiAKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5wYWdlU3RhdGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaAppbmRleCAxNDgyMTQ0NWM4N2ZlNDMzNTU3OTYyYmNi
MzQ5OTNlNTFkMmYyYWZlLi5kYjNkZmRhODU0Y2FmMTc4MGMyZGVmODE3NmExMmY3OTliODUxOGEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIlZpZXdTbmFwc2hvdFN0b3JlLmgiCiAjZW5kaWYKIAorI2luY2x1ZGUgPFdlYkNvcmUv
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbnRSZWN0Lmg+CkBAIC0xMjcsNyArMTI4LDcgQEAgc3RydWN0IEJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZSB7CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPiBkZWNvZGUoSVBD
OjpEZWNvZGVyJik7CiAKLSAgICB1aW50NjRfdCBpZGVudGlmaWVyOworICAgIFdlYkNvcmU6OkJh
Y2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgaWRlbnRpZmllcjsKIAogICAgIFBhZ2VTdGF0ZSBwYWdl
U3RhdGU7CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCmluZGV4IDFhY2Q1ZGRjYTVlODlhNTMxMTI4MTg3N2Jm
MDkwNWVhOGExN2IyOWIuLmE3MzhjN2RhMzNiYzEzMzUyNDZkZjgxZGFkM2JhZDJjNTU4YjhmNTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3Bw
CkBAIC0yOCw5ICsyOCw5IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgdWludDY0X3Qg
aGlnaGVzdEl0ZW1JRCA9IDA7CituYW1lc3BhY2UgV2ViS2l0IHsKIAogUmVmPFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0+IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShCYWNrRm9yd2FyZExp
c3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUsIHVpbnQ2NF90IHBhZ2VJRCkK
IHsKQEAgLTQxLDEyICs0MSwyNSBAQCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tGbwogICAgIDogbV9p
dGVtU3RhdGUoV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUpKQogICAgICwgbV9wYWdl
SUQocGFnZUlEKQogewotICAgIGlmIChtX2l0ZW1TdGF0ZS5pZGVudGlmaWVyID4gaGlnaGVzdEl0
ZW1JRCkKLSAgICAgICAgaGlnaGVzdEl0ZW1JRCA9IG1faXRlbVN0YXRlLmlkZW50aWZpZXI7Cisg
ICAgYXV0byByZXN1bHQgPSBhbGxJdGVtcygpLmFkZChtX2l0ZW1TdGF0ZS5pZGVudGlmaWVyLCB0
aGlzKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQog
CiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjp+V2ViQmFja0ZvcndhcmRMaXN0SXRlbSgpCiB7Cisg
ICAgQVNTRVJUKGFsbEl0ZW1zKCkuZ2V0KG1faXRlbVN0YXRlLmlkZW50aWZpZXIpID09IHRoaXMp
OworICAgIGFsbEl0ZW1zKCkucmVtb3ZlKG1faXRlbVN0YXRlLmlkZW50aWZpZXIpOworfQorCitI
YXNoTWFwPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0q
PiYgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6YWxsSXRlbXMoKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoTWFwPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIsIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0qPj4gaXRlbXM7CisgICAgcmV0dXJuIGl0ZW1zOworfQorCitXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjppdGVtRm9ySUQoY29uc3QgQmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gYWxsSXRl
bXMoKS5nZXQoaWRlbnRpZmllcik7CiB9CiAKIHN0YXRpYyBjb25zdCBGcmFtZVN0YXRlKiBjaGls
ZEl0ZW1XaXRoRG9jdW1lbnRTZXF1ZW5jZU51bWJlcihjb25zdCBGcmFtZVN0YXRlJiBmcmFtZVN0
YXRlLCBpbnQ2NF90IG51bWJlcikKQEAgLTk4LDExICsxMTEsNiBAQCBib29sIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW06Oml0ZW1Jc0luU2FtZURvY3VtZW50KGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0mCiAgICAgcmV0dXJuIGRvY3VtZW50VHJlZXNBcmVFcXVhbChtYWluRnJhbWVTdGF0ZSwg
b3RoZXJNYWluRnJhbWVTdGF0ZSk7CiB9CiAKLXVpbnQ2NF90IFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW06OmhpZ2hlc3RVc2VkSXRlbUlEKCkKLXsKLSAgICByZXR1cm4gaGlnaGVzdEl0ZW1JRDsKLX0K
LQogdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpzZXRTdXNwZW5kZWRQYWdlKFN1c3BlbmRl
ZFBhZ2VQcm94eSYgcGFnZSkKIHsKICAgICBtX3N1c3BlbmRlZFBhZ2UgPSAmcGFnZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAppbmRleCA0ZWEyY2E3
MDEwNjVjMTBjZTdmMDExMmQ2NzYzNjFjYTE5NTZkOWY5Li4zYzFjYzI5OWIxYjhiMWVjMzVkOGM0
YzQwOWE2ZDMyMjUzMGMwMGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJC
YWNrRm9yd2FyZExpc3RJdGVtLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0Zv
cndhcmRMaXN0SXRlbS5oCkBAIC00OCw3ICs0OCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRl
JiYsIHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgdmlydHVhbCB+V2ViQmFja0ZvcndhcmRMaXN0SXRl
bSgpOwogCi0gICAgdWludDY0X3QgaXRlbUlEKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtU3RhdGUu
aWRlbnRpZmllcjsgfQorICAgIHN0YXRpYyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtRm9y
SUQoY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYpOworICAgIHN0YXRp
YyBIYXNoTWFwPFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIsIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0qPiYgYWxsSXRlbXMoKTsKKworICAgIGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCgpIGNvbnN0IHsgcmV0dXJuIG1faXRlbVN0YXRlLmlk
ZW50aWZpZXI7IH0KICAgICBjb25zdCBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmIGl0ZW1TdGF0
ZSgpIHsgcmV0dXJuIG1faXRlbVN0YXRlOyB9CiAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9wYWdlSUQ7IH0KIApAQCAtNjcsOCArNzAsNiBAQCBwdWJsaWM6CiAjZW5kaWYK
ICAgICB2b2lkIHNldFN1c3BlbmRlZFBhZ2UoU3VzcGVuZGVkUGFnZVByb3h5Jik7CiAKLSAgICBz
dGF0aWMgdWludDY0X3QgaGlnaGVzdFVzZWRJdGVtSUQoKTsKLQogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1
aW50NjRfdCBwYWdlSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDI2MzAzNGE0NzkyMjEwYmMxYzA4ZGVmOGNlNmQ3
YzY0MmM1YmY3MzcuLjNjZmUzYjJlNWIxNDI1OTFjYTY2YTgyMjhiOTIyOTAzN2MwZTMxZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCkBAIC01Myw3ICs1Myw2IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5j
b2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHVzZXJBZ2Vu
dDsKICAgICBlbmNvZGVyIDw8IGl0ZW1TdGF0ZXM7CiAgICAgZW5jb2RlciA8PCBzZXNzaW9uSUQ7
Ci0gICAgZW5jb2RlciA8PCBoaWdoZXN0VXNlZEJhY2tGb3J3YXJkSXRlbUlEOwogICAgIGVuY29k
ZXIgPDwgdXNlckNvbnRlbnRDb250cm9sbGVySUQudG9VSW50NjQoKTsKICAgICBlbmNvZGVyIDw8
IHZpc2l0ZWRMaW5rVGFibGVJRDsKICAgICBlbmNvZGVyIDw8IHdlYnNpdGVEYXRhU3RvcmVJRDsK
QEAgLTE3Nyw4ICsxNzYsNiBAQCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OgogCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNlc3Npb25JRCkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmhpZ2hlc3RVc2Vk
QmFja0ZvcndhcmRJdGVtSUQpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsK
ICAgICBkZWNvZGVyID4+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggYmFl
YmFmNGQ0MTAwODk2NWE1NmY0YzFjM2YyMWFjZTg3M2VhNDMyNi4uNTczZTE3OTMyYmUyZmZiM2Rj
NzczMWU4YTEyNDVkMWMzYzc4OGNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtOTYsNyArOTYsNiBAQCBzdHJ1Y3QgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBWZWN0b3I8QmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlPiBpdGVtU3RhdGVzOwogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRDsKLSAgICB1aW50
NjRfdCBoaWdoZXN0VXNlZEJhY2tGb3J3YXJkSXRlbUlEOwogCiAgICAgVXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJRDsKICAgICB1aW50NjRfdCB2
aXNpdGVkTGlua1RhYmxlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0Zv
cndhcmRMaXN0LmNwcAppbmRleCA5OTgyZDgxNjM3MGJmYmFlYjEwMWE4N2I5ZTRhOTk4MGRiNmY3
NjY1Li5mMGMzOTQxZmFkN2FlYWVlYjg0YjVhYWUxZjVkZWZmMTU3ZjhkNTA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTM2LDE5ICsz
Niw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAot
Ly8gRklYTUU6IE1ha2UgdGhpcyBzdGF0aWMgb25jZSBXZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAg
aXMgbm8gbG9uZ2VyIHVzaW5nIGl0LgotdWludDY0X3QgZ2VuZXJhdGVXZWJCYWNrRm9yd2FyZEl0
ZW1JRCgpOwotCi11aW50NjRfdCBnZW5lcmF0ZVdlYkJhY2tGb3J3YXJkSXRlbUlEKCkKLXsKLSAg
ICAvLyBUaGVzZSBJRHMgZXhpc3QgaW4gdGhlIFVJUHJvY2VzcyBmb3IgaXRlbXMgY3JlYXRlZCBi
eSB0aGUgVUlQcm9jZXNzLgotICAgIC8vIFRoZSBJRHMgZ2VuZXJhdGVkIGhlcmUgbmVlZCB0byBu
ZXZlciBjb2xsaWRlIHdpdGggdGhlIElEcyBjcmVhdGVkIGluIFdlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5IGluIHRoZSBXZWJQcm9jZXNzLgotICAgIC8vIFdlIGFjY29tcGxpc2ggdGhpcyBieSBzdGFy
dGluZyBmcm9tIDIsIGFuZCBvbmx5IGV2ZXIgdXNpbmcgZXZlbiBpZHMuCi0gICAgc3RhdGljIHVp
bnQ2NF90IHVuaXF1ZUhpc3RvcnlJdGVtSUQgPSAwOwotICAgIHVuaXF1ZUhpc3RvcnlJdGVtSUQg
Kz0gMjsKLSAgICByZXR1cm4gdW5pcXVlSGlzdG9yeUl0ZW1JRDsKLX0KLQogc3RhdGljIGNvbnN0
IHVuc2lnbmVkIERlZmF1bHRDYXBhY2l0eSA9IDEwMDsKIAogV2ViQmFja0ZvcndhcmRMaXN0OjpX
ZWJCYWNrRm9yd2FyZExpc3QoV2ViUGFnZVByb3h5JiBwYWdlKQpAQCAtNjUsNiArNTIsMTkgQEAg
V2ViQmFja0ZvcndhcmRMaXN0Ojp+V2ViQmFja0ZvcndhcmRMaXN0KCkKICAgICBBU1NFUlQoKCFt
X3BhZ2UgJiYgIW1faGFzQ3VycmVudEluZGV4KSB8fCAhbV9wYWdlLT5pc1ZhbGlkKCkpOwogfQog
CitXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBXZWJCYWNrRm9yd2FyZExpc3Q6Oml0ZW1Gb3JJRChj
b25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIGlmICgh
bV9wYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8qIGl0ZW0gPSBXZWJC
YWNrRm9yd2FyZExpc3RJdGVtOjppdGVtRm9ySUQoaWRlbnRpZmllcik7CisgICAgaWYgKCFpdGVt
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEFTU0VSVChpdGVtLT5wYWdlSUQoKSA9
PSBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICByZXR1cm4gaXRlbTsKK30KKwogdm9pZCBXZWJCYWNr
Rm9yd2FyZExpc3Q6OnBhZ2VDbG9zZWQoKQogewogICAgIC8vIFdlIHNob3VsZCBoYXZlIGFsd2F5
cyBzdGFydGVkIG91dCB3aXRoIGFuIG1fcGFnZSBhbmQgd2Ugc2hvdWxkIG5ldmVyIGNsb3NlIHRo
ZSBwYWdlIHR3aWNlLgpAQCAtNzYsMTYgKzc2LDE2IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0
OjpwYWdlQ2xvc2VkKCkKICAgICAgICAgICAgIGRpZFJlbW92ZUl0ZW0obV9lbnRyaWVzW2ldKTsK
ICAgICB9CiAKLSAgICBtX3BhZ2UgPSAwOworICAgIG1fcGFnZSA9IG51bGxwdHI7CiAgICAgbV9l
bnRyaWVzLmNsZWFyKCk7CiAgICAgbV9oYXNDdXJyZW50SW5kZXggPSBmYWxzZTsKIH0KIAotdm9p
ZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogbmV3
SXRlbSkKK3ZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFJlZjxXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtPiYmIG5ld0l0ZW0pCiB7CiAgICAgQVNTRVJUKCFtX2hhc0N1cnJlbnRJbmRleCB8
fCBtX2N1cnJlbnRJbmRleCA8IG1fZW50cmllcy5zaXplKCkpOwogCi0gICAgaWYgKCFtX2NhcGFj
aXR5IHx8ICFuZXdJdGVtIHx8ICFtX3BhZ2UpCisgICAgaWYgKCFtX2NhcGFjaXR5IHx8ICFtX3Bh
Z2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIFZlY3RvcjxSZWY8V2ViQmFja0ZvcndhcmRMaXN0
SXRlbT4+IHJlbW92ZWRJdGVtczsKQEAgLTEzOSwyMyArMTM5LDI0IEBAIHZvaWQgV2ViQmFja0Zv
cndhcmRMaXN0OjphZGRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIG5ld0l0ZW0pCiAgICAg
ICAgICAgICBtX2N1cnJlbnRJbmRleCsrOwogICAgIH0KIAorICAgIGF1dG8qIG5ld0l0ZW1QdHIg
PSBuZXdJdGVtLnB0cigpOwogICAgIGlmICghc2hvdWxkS2VlcEN1cnJlbnRJdGVtKSB7CiAgICAg
ICAgIC8vIG1fY3VycmVudCBzaG91bGQgbmV2ZXIgYmUgcG9pbnRpbmcgcGFzdCB0aGUgZW5kIG9m
IHRoZSBlbnRyaWVzIFZlY3Rvci4KICAgICAgICAgLy8gSWYgaXQgaXMsIHNvbWV0aGluZyBoYXMg
Z29uZSB3cm9uZyBhbmQgd2Ugc2hvdWxkIG5vdCB0cnkgdG8gc3dhcCBpbiB0aGUgbmV3IGl0ZW0u
CiAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRJbmRleCA8IG1fZW50cmllcy5zaXplKCkpOwogCiAg
ICAgICAgIHJlbW92ZWRJdGVtcy5hcHBlbmQobV9lbnRyaWVzW21fY3VycmVudEluZGV4XS5jb3B5
UmVmKCkpOwotICAgICAgICBtX2VudHJpZXNbbV9jdXJyZW50SW5kZXhdID0gKm5ld0l0ZW07Cisg
ICAgICAgIG1fZW50cmllc1ttX2N1cnJlbnRJbmRleF0gPSBXVEZNb3ZlKG5ld0l0ZW0pOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIC8vIG1fY3VycmVudCBzaG91bGQgbmV2ZXIgYmUgcG9pbnRpbmcg
bW9yZSB0aGFuIDEgcGFzdCB0aGUgZW5kIG9mIHRoZSBlbnRyaWVzIFZlY3Rvci4KICAgICAgICAg
Ly8gSWYgaXQgaXMsIHNvbWV0aGluZyBoYXMgZ29uZSB3cm9uZyBhbmQgd2Ugc2hvdWxkIG5vdCB0
cnkgdG8gaW5zZXJ0IHRoZSBuZXcgaXRlbS4KICAgICAgICAgQVNTRVJUKG1fY3VycmVudEluZGV4
IDw9IG1fZW50cmllcy5zaXplKCkpOwogCiAgICAgICAgIGlmIChtX2N1cnJlbnRJbmRleCA8PSBt
X2VudHJpZXMuc2l6ZSgpKQotICAgICAgICAgICAgbV9lbnRyaWVzLmluc2VydChtX2N1cnJlbnRJ
bmRleCwgKm5ld0l0ZW0pOworICAgICAgICAgICAgbV9lbnRyaWVzLmluc2VydChtX2N1cnJlbnRJ
bmRleCwgV1RGTW92ZShuZXdJdGVtKSk7CiAgICAgfQogCi0gICAgbV9wYWdlLT5kaWRDaGFuZ2VC
YWNrRm9yd2FyZExpc3QobmV3SXRlbSwgV1RGTW92ZShyZW1vdmVkSXRlbXMpKTsKKyAgICBtX3Bh
Z2UtPmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChuZXdJdGVtUHRyLCBXVEZNb3ZlKHJlbW92ZWRJ
dGVtcykpOwogfQogCiB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6Z29Ub0l0ZW0oV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSYgaXRlbSkKQEAgLTQxOCw3ICs0MTksNyBAQCB2b2lkIFdlYkJhY2tGb3J3
YXJkTGlzdDo6cmVzdG9yZUZyb21TdGF0ZShCYWNrRm9yd2FyZExpc3RTdGF0ZSBiYWNrRm9yd2Fy
ZExpc3RTdAogICAgIGl0ZW1zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYmFja0ZvcndhcmRMaXN0
U3RhdGUuaXRlbXMuc2l6ZSgpKTsKIAogICAgIGZvciAoYXV0byYgYmFja0ZvcndhcmRMaXN0SXRl
bVN0YXRlIDogYmFja0ZvcndhcmRMaXN0U3RhdGUuaXRlbXMpIHsKLSAgICAgICAgYmFja0Zvcndh
cmRMaXN0SXRlbVN0YXRlLmlkZW50aWZpZXIgPSBnZW5lcmF0ZVdlYkJhY2tGb3J3YXJkSXRlbUlE
KCk7CisgICAgICAgIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZS5pZGVudGlmaWVyID0geyBQcm9j
ZXNzOjppZGVudGlmaWVyKCksIGdlbmVyYXRlT2JqZWN0SWRlbnRpZmllcjxCYWNrRm9yd2FyZEl0
ZW1JZGVudGlmaWVyOjpJdGVtSWRlbnRpZmllclR5cGU+KCkgfTsKICAgICAgICAgaXRlbXMudW5j
aGVja2VkQXBwZW5kKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShXVEZNb3ZlKGJhY2tG
b3J3YXJkTGlzdEl0ZW1TdGF0ZSksIG1fcGFnZS0+cGFnZUlEKCkpKTsKICAgICB9CiAgICAgbV9o
YXNDdXJyZW50SW5kZXggPSAhIWJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJbmRleDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmgKaW5kZXggZmNkYWYw
M2QzYjJmYWM4NTI0Y2E4NzAzOGM2MzkzNDUxOTMxMDkzYi4uMjhmY2VhMzFkMmRiYzhmNDdmMmU0
ZDJjYTM1MTVkMmM5YjIxNGY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQmFja0ZvcndhcmRMaXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFj
a0ZvcndhcmRMaXN0LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
ICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDUsNyAr
NDYsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5XZWJCYWNrRm9yd2FyZExpc3QoKTsKIAot
ICAgIHZvaWQgYWRkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKik7CisgICAgV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSogaXRlbUZvcklEKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXImKTsKKworICAgIHZvaWQgYWRkSXRlbShSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRl
bT4mJik7CiAgICAgdm9pZCBnb1RvSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik7CiAgICAg
dm9pZCByZW1vdmVBbGxJdGVtcygpOwogICAgIHZvaWQgY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGEwMWVkODE5ZDQxM2FmZGIwMWQxMzI0ZjJm
YzZhNzQ2NDVkZWY0ZDAuLjgyYjBhNmFhMjMxNDZhYjU0ZjI2ZTllNTU0ZDQ3MTJiYWQ5YzRmYzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjcwLDcgKzY3
MCw3IEBAIFN1c3BlbmRlZFBhZ2VQcm94eSogV2ViUGFnZVByb3h5OjptYXliZUNyZWF0ZVN1c3Bl
bmRlZFBhZ2UoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAKICAgICBtX3N1c3BlbmRlZFBhZ2UgPSBT
dXNwZW5kZWRQYWdlUHJveHk6OmNyZWF0ZSgqdGhpcywgcHJvY2VzcywgKmN1cnJlbnRJdGVtKTsK
IAotICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3Jl
YXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBp
dGVtICUiIFBSSXU2NCwgcGFnZUlEKCksIG1fc3VzcGVuZGVkUGFnZS0+bG9nZ2luZ1N0cmluZygp
LCBwcm9jZXNzLnByb2Nlc3NJZGVudGlmaWVyKCksIGN1cnJlbnRJdGVtLT5pdGVtSUQoKSk7Cisg
ICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBjcmVhdGVk
IHN1c3BlbmRlZCBwYWdlICVzIGZvciBwcm9jZXNzIHBpZCAlaSwgYmFjay9mb3J3YXJkIGl0ZW0g
JXMiIFBSSXU2NCwgcGFnZUlEKCksIG1fc3VzcGVuZGVkUGFnZS0+bG9nZ2luZ1N0cmluZygpLCBw
cm9jZXNzLnByb2Nlc3NJZGVudGlmaWVyKCksIGN1cnJlbnRJdGVtLT5pdGVtSUQoKS5sb2dTdHJp
bmcoKSk7CiAKICAgICByZXR1cm4gbV9zdXNwZW5kZWRQYWdlLmdldCgpOwogfQpAQCAtNzczLDEw
ICs3NzMsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQogewogICAg
IEFTU0VSVChpc1ZhbGlkKCkpOwogCi0gICAgY29uc3QgQmFja0ZvcndhcmRMaXN0SXRlbVZlY3Rv
ciYgaXRlbXMgPSBtX2JhY2tGb3J3YXJkTGlzdC0+ZW50cmllcygpOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fcHJvY2Vzcy0+cmVnaXN0
ZXJOZXdXZWJCYWNrRm9yd2FyZExpc3RJdGVtKGl0ZW1zW2ldLmdldCgpKTsKLQogICAgIG1fZHJh
d2luZ0FyZWEgPSBtX3BhZ2VDbGllbnQuY3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpOwogICAgIEFT
U0VSVChtX2RyYXdpbmdBcmVhKTsKIApAQCAtMTI3MSwxMSArMTI2NywxMSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0q
IGFkZGVkLCBWZWN0bwogICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRDYW5Hb0ZvcndhcmQodHJhbnNh
Y3Rpb24sIG1fYmFja0ZvcndhcmRMaXN0LT5mb3J3YXJkSXRlbSgpKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSh1aW50NjRfdCBpdGVtSUQsIGJv
b2wgaW5QYWdlQ2FjaGUsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVBy
b3h5Ojp3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oY29uc3QgQmFja0ZvcndhcmRJdGVtSWRl
bnRpZmllciYgaXRlbUlELCBib29sIGluUGFnZUNhY2hlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsK
IAotICAgIGlmIChhdXRvKiBpdGVtID0gbV9wcm9jZXNzLT53ZWJCYWNrRm9yd2FyZEl0ZW0oaXRl
bUlEKSkgeworICAgIGlmIChhdXRvKiBpdGVtID0gbV9iYWNrRm9yd2FyZExpc3QtPml0ZW1Gb3JJ
RChpdGVtSUQpKSB7CiAgICAgICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQgJiYgbV9uYXZpZ2F0
aW9uQ2xpZW50LT53aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oKnRoaXMsICppdGVtLCBpblBh
Z2VDYWNoZSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9i
amVjdCgpKS5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1fbG9hZGVyQ2xp
ZW50LT53aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oKnRoaXMsICppdGVtLCBtX3Byb2Nlc3Mt
PnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKQEAg
LTI1NTcsMTAgKzI1NTMsNiBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6
OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKFNlc3Npb25TdGF0ZSBzZXNzaQogCiAgICAgaWYgKGhh
c0JhY2tGb3J3YXJkTGlzdCkgewogICAgICAgICBtX2JhY2tGb3J3YXJkTGlzdC0+cmVzdG9yZUZy
b21TdGF0ZShXVEZNb3ZlKHNlc3Npb25TdGF0ZS5iYWNrRm9yd2FyZExpc3RTdGF0ZSkpOwotCi0g
ICAgICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBtX2JhY2tGb3J3YXJkTGlzdC0+ZW50cmll
cygpKQotICAgICAgICAgICAgcHJvY2VzcygpLnJlZ2lzdGVyTmV3V2ViQmFja0ZvcndhcmRMaXN0
SXRlbShlbnRyeS5nZXQoKSk7Ci0KICAgICAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlJlc3RvcmVTZXNzaW9uKG1fYmFja0ZvcndhcmRMaXN0LT5pdGVtU3RhdGVzKCkpLCBt
X3BhZ2VJRCk7CiAKICAgICAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50
cmFuc2FjdGlvbigpOwpAQCAtNDY3NSwxNCArNDY2NywxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0TmVlZHNQbGFpblRleHRRdWlyayhib29sIG5lZWRzUGxhaW5UZXh0UXVpcmspCiAKIC8vIEJh
Y2tGb3J3YXJkTGlzdAogCi12b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRBZGRJdGVtKHVp
bnQ2NF90IGl0ZW1JRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEFkZEl0ZW0oQmFj
a0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgaXRlbVN0YXRlKQogewotICAgIG1fYmFja0ZvcndhcmRM
aXN0LT5hZGRJdGVtKG1fcHJvY2Vzcy0+d2ViQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCkpOworICAg
IG1fYmFja0ZvcndhcmRMaXN0LT5hZGRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0
ZShXVEZNb3ZlKGl0ZW1TdGF0ZSksIHBhZ2VJRCgpKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpiYWNrRm9yd2FyZEdvVG9JdGVtKHVpbnQ2NF90IGl0ZW1JRCwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBXZWJQYWdlUHJveHk6OmJhY2tG
b3J3YXJkR29Ub0l0ZW0oY29uc3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYgaXRlbUlELCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiB7Ci0gICAg
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSA9IG1fcHJvY2Vzcy0+d2ViQmFja0ZvcndhcmRJ
dGVtKGl0ZW1JRCk7CisgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSA9IG1fYmFja0Zv
cndhcmRMaXN0LT5pdGVtRm9ySUQoaXRlbUlEKTsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJl
dHVybjsKIApAQCAtNDY5MiwxMCArNDY4NCwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0Zv
cndhcmRHb1RvSXRlbSh1aW50NjRfdCBpdGVtSUQsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZQog
ICAgIG1fYmFja0ZvcndhcmRMaXN0LT5nb1RvSXRlbSgqaXRlbSk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpiYWNrRm9yd2FyZEl0ZW1BdEluZGV4KGludDMyX3QgaW5kZXgsIHVpbnQ2NF90JiBp
dGVtSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRJdGVtQXRJbmRleChpbnQzMl90
IGluZGV4LCBzdGQ6Om9wdGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+JiBpdGVtSUQp
CiB7CiAgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSA9IG1fYmFja0ZvcndhcmRMaXN0
LT5pdGVtQXRJbmRleChpbmRleCk7Ci0gICAgaXRlbUlEID0gaXRlbSA/IGl0ZW0tPml0ZW1JRCgp
IDogMDsKKyAgICBpZiAoaXRlbSkKKyAgICAgICAgaXRlbUlEID0gaXRlbS0+aXRlbUlEKCk7Cisg
ICAgZWxzZQorICAgICAgICBpdGVtSUQgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpiYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQoaW50MzJfdCYgY291bnQpCkBAIC01OTQ1
LDcgKzU5NDAsNiBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3Jl
YXRpb25QYXJhbWV0ZXJzKCkKICAgICBwYXJhbWV0ZXJzLnVzZXJBZ2VudCA9IHVzZXJBZ2VudCgp
OwogICAgIHBhcmFtZXRlcnMuaXRlbVN0YXRlcyA9IG1fYmFja0ZvcndhcmRMaXN0LT5pdGVtU3Rh
dGVzKCk7CiAgICAgcGFyYW1ldGVycy5zZXNzaW9uSUQgPSBzZXNzaW9uSUQoKTsKLSAgICBwYXJh
bWV0ZXJzLmhpZ2hlc3RVc2VkQmFja0ZvcndhcmRJdGVtSUQgPSBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtOjpoaWdoZXN0VXNlZEl0ZW1JRCgpOwogICAgIHBhcmFtZXRlcnMudXNlckNvbnRlbnRDb250
cm9sbGVySUQgPSBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+aWRlbnRpZmllcigpOwogICAgIHBh
cmFtZXRlcnMudmlzaXRlZExpbmtUYWJsZUlEID0gbV92aXNpdGVkTGlua1N0b3JlLT5pZGVudGlm
aWVyKCk7CiAgICAgcGFyYW1ldGVycy53ZWJzaXRlRGF0YVN0b3JlSUQgPSBtX3dlYnNpdGVEYXRh
U3RvcmUtPmlkZW50aWZpZXIoKTsKQEAgLTYzNTIsOSArNjM0Niw4IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihjb25zdCBT
dHJpbmcmIHN1CiAgICAgbV9wYWdlQ2xpZW50LmRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9t
Q29udGVudFByb3ZpZGVyKHN1Z2dlc3RlZEZpbGVuYW1lLCBkYXRhUmVmZXJlbmNlKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkUmVtb3ZlZEl0ZW0odWludDY0X3QgaXRlbUlE
KQordm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkUmVtb3ZlZEl0ZW0oY29uc3QgQmFja0Zv
cndhcmRJdGVtSWRlbnRpZmllciYgaXRlbUlEKQogewotICAgIG1fcHJvY2Vzcy0+cmVtb3ZlQmFj
a0ZvcndhcmRJdGVtKGl0ZW1JRCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oaXRlbUlEKSwgbV9wYWdlSUQpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDg3YTBiNTljZDE2NDI4NmY1
YmNkYTcwMGVlZWQwMWUxYjVmYTI5N2QuLmEzZjE0NmIwYmE3NGQ3MTEyYzZiZTU0YjYzOGI5YmFh
ZjYyNjljZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNzQs
NiArMTc0LDcgQEAgZW51bSBjbGFzcyBOb3RpZmljYXRpb25EaXJlY3Rpb247CiBlbnVtIGNsYXNz
IFNob3VsZFNhbXBsZTsKIAogc3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q7CitzdHJ1Y3QgQmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllcjsKIHN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwogc3Ry
dWN0IEV4Y2VwdGlvbkRldGFpbHM7CiBzdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5nczsKQEAgLTQ0
Niw3ICs0NDcsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gZ29Ub0Jh
Y2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik7CiAgICAgdm9pZCB0cnlSZXN0
b3JlU2Nyb2xsUG9zaXRpb24oKTsKICAgICB2b2lkIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBhZGRlZEl0ZW0sIFZlY3RvcjxSZWY8V2ViQmFja0Zvcndh
cmRMaXN0SXRlbT4+JiYgcmVtb3ZlZCk7Ci0gICAgdm9pZCB3aWxsR29Ub0JhY2tGb3J3YXJkTGlz
dEl0ZW0odWludDY0X3QgaXRlbUlELCBib29sIGluUGFnZUNhY2hlLCBjb25zdCBVc2VyRGF0YSYp
OworICAgIHZvaWQgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKGNvbnN0IFdlYkNvcmU6OkJh
Y2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBib29sIGluUGFnZUNhY2hlLCBjb25zdCBVc2VyRGF0
YSYpOwogCiAgICAgYm9vbCBzaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxp
c3QoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpOwogCkBAIC04NzcsNyArODc4LDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlv
biwgV2ViRnJhbWVQcm94eSYsIHVpbnQ2NF90IGxpc3RlbmVySUQsIEFQSTo6TmF2aWdhdGlvbiog
bmF2aWdhdGlvbklELCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYpOwogCi0g
ICAgdm9pZCBiYWNrRm9yd2FyZFJlbW92ZWRJdGVtKHVpbnQ2NF90IGl0ZW1JRCk7CisgICAgdm9p
ZCBiYWNrRm9yd2FyZFJlbW92ZWRJdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXImKTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICAgIAogICAgIC8vIERyYWcg
YW5kIGRyb3Agc3VwcG9ydC4KQEAgLTE0NzAsOSArMTQ3MSw5IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXROZWVkc1BsYWluVGV4dFF1aXJrKGJvb2wpOwogCiAgICAgLy8gQmFjay9Gb3J3YXJkIGxp
c3QgbWFuYWdlbWVudAotICAgIHZvaWQgYmFja0ZvcndhcmRBZGRJdGVtKHVpbnQ2NF90IGl0ZW1J
RCk7Ci0gICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtKHVpbnQ2NF90IGl0ZW1JRCwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJik7Ci0gICAgdm9pZCBiYWNrRm9yd2FyZEl0ZW1BdEluZGV4KGlu
dDMyX3QgaW5kZXgsIHVpbnQ2NF90JiBpdGVtSUQpOworICAgIHZvaWQgYmFja0ZvcndhcmRBZGRJ
dGVtKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmKTsKKyAgICB2b2lkIGJhY2tGb3J3YXJkR29U
b0l0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYpOworICAgIHZvaWQgYmFja0ZvcndhcmRJdGVtQXRJbmRleChpbnQz
Ml90IGluZGV4LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZp
ZXI+Jik7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQoaW50MzJfdCYgY291bnQp
OwogICAgIHZvaWQgYmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50KGludDMyX3QmIGNvdW50KTsK
ICAgICB2b2lkIGJhY2tGb3J3YXJkQ2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA1M2ZiMTgzMmQ1ZDM4Y2E3MDU4ODM0
YTk5NDdhMjJlMWU1ZGZmN2VjLi5lYjA4MzU3ZDBmNzg4MjkwMWMwYWQ5NDdjOThhZDhjZmIyNzc0
ODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC0yMTksMTMgKzIxOSwxMyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewog
I2VuZGlmCiAKICAgICAjIEJhY2tGb3J3YXJkIG1lc3NhZ2VzCi0gICAgQmFja0ZvcndhcmRBZGRJ
dGVtKHVpbnQ2NF90IGl0ZW1JRCkKLSAgICBCYWNrRm9yd2FyZEdvVG9JdGVtKHVpbnQ2NF90IGl0
ZW1JRCkgLT4gKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpCi0gICAgQmFja0ZvcndhcmRJdGVtQXRJbmRleChpbnQzMl90IGl0ZW1JbmRleCkg
LT4gKHVpbnQ2NF90IGl0ZW1JRCkKKyAgICBCYWNrRm9yd2FyZEFkZEl0ZW0oc3RydWN0IFdlYktp
dDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIGl0ZW1TdGF0ZSkKKyAgICBCYWNrRm9yd2FyZEdv
VG9JdGVtKHN0cnVjdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyIGl0ZW1JRCkg
LT4gKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUpCisgICAgQmFja0ZvcndhcmRJdGVtQXRJbmRleChpbnQzMl90IGl0ZW1JbmRleCkgLT4gKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gaXRlbUlEKQog
ICAgIEJhY2tGb3J3YXJkQmFja0xpc3RDb3VudCgpIC0+IChpbnQzMl90IGNvdW50KQogICAgIEJh
Y2tGb3J3YXJkRm9yd2FyZExpc3RDb3VudCgpIC0+IChpbnQzMl90IGNvdW50KQogICAgIEJhY2tG
b3J3YXJkQ2xlYXIoKQotICAgIFdpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSh1aW50NjRfdCBp
dGVtSUQsIGJvb2wgaW5QYWdlQ2FjaGUsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAg
V2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKHN0cnVjdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0
ZW1JZGVudGlmaWVyIGl0ZW1JRCwgYm9vbCBpblBhZ2VDYWNoZSwgV2ViS2l0OjpVc2VyRGF0YSB1
c2VyRGF0YSkKIAogICAgICMgVW5kby9SZWRvIG1lc3NhZ2VzCiAgICAgUmVnaXN0ZXJFZGl0Q29t
bWFuZEZvclVuZG8odWludDY0X3QgY29tbWFuZElELCB1aW50MzJfdCBlZGl0QWN0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGFiOWM4YjA0NDMw
NWIwMGYwNWUzNmJlYmI3YzVjYWVhMjkxMWI4NTkuLmMwMTE5OGMzZjc4YWI1MTAwNDUwNTdlNTJh
NGI1ZmM1MDAxNWUyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKQEAgLTgwLDYgKzgwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0xvZ0luaXRpYWxpemF0
aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTI0OCw2ICsy
NDksNyBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcs
IFtdIHsKICAgICAgICAgV1RGOjpzZXRQcm9jZXNzUHJpdmlsZWdlcyhhbGxQcml2aWxlZ2VzKCkp
OwogICAgICAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnBlcm1pdFByb2Nlc3NU
b1VzZUNvb2tpZUFQSSh0cnVlKTsKKyAgICAgICAgUHJvY2Vzczo6c2V0SWRlbnRpZmllcihnZW5l
cmF0ZU9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXJUeXBlPigpKTsK
ICAgICB9KTsKIAogICAgIGlmIChtX2NvbmZpZ3VyYXRpb24tPnNob3VsZEhhdmVMZWdhY3lEYXRh
U3RvcmUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmlu
ZGV4IDlhMDFkNWI0YjM1NzFhODg3NjYxMmM3NWEzY2FkNzI5MDQ4NGEzZTYuLjQ5M2U4OGQyMzli
ZjhhZDAxNmJiNWI3YTk3OWJhMDU5ZjRiNzBjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDI3LDE0ICs0MjcsNiBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6cmVtb3ZlV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIHVpbnQ2NF90IHBh
Z2VJRCkKICAgICBtX3Byb2Nlc3NQb29sLT5wYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHdl
YlBhZ2UpOwogCiAgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKLSAg
ICAKLSAgICBWZWN0b3I8dWludDY0X3Q+IGl0ZW1JRHNUb1JlbW92ZTsKLSAgICBmb3IgKGF1dG8m
IGlkQW5kSXRlbSA6IG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcCkgewotICAgICAgICBpZiAoaWRB
bmRJdGVtLnZhbHVlLT5wYWdlSUQoKSA9PSBwYWdlSUQpCi0gICAgICAgICAgICBpdGVtSURzVG9S
ZW1vdmUuYXBwZW5kKGlkQW5kSXRlbS5rZXkpOwotICAgIH0KLSAgICBmb3IgKGF1dG8gaXRlbUlE
IDogaXRlbUlEc1RvUmVtb3ZlKQotICAgICAgICBtX2JhY2tGb3J3YXJkTGlzdEl0ZW1NYXAucmVt
b3ZlKGl0ZW1JRCk7CiAKICAgICBtYXliZVNodXREb3duKCk7CiB9CkBAIC00NjMsMjUgKzQ1NSw2
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkoV2ViVXNlckNvbnRlbnRDb250CiAgICAgbV93ZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94aWVzLnJlbW92ZSgmcHJveHkpOwogfQogCi1XZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBX
ZWJQcm9jZXNzUHJveHk6OndlYkJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcC5nZXQoaXRlbUlEKTsKLX0K
LQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyTmV3V2ViQmFja0ZvcndhcmRMaXN0SXRl
bShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQotewotICAgIC8vIFRoaXMgaXRlbSB3YXMg
anVzdCBjcmVhdGVkIGJ5IHRoZSBVSVByb2Nlc3MgYW5kIGlzIGJlaW5nIGFkZGVkIHRvIHRoZSBt
YXAgZm9yIHRoZSBmaXJzdCB0aW1lCi0gICAgLy8gc28gd2Ugc2hvdWxkIG5vdCBhbHJlYWR5IGhh
dmUgYW4gaXRlbSBmb3IgdGhpcyBJRC4KLSAgICBBU1NFUlQoIW1fYmFja0ZvcndhcmRMaXN0SXRl
bU1hcC5jb250YWlucyhpdGVtLml0ZW1JRCgpKSk7Ci0KLSAgICBtX2JhY2tGb3J3YXJkTGlzdEl0
ZW1NYXAuc2V0KGl0ZW0uaXRlbUlEKCksICZpdGVtKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnJlbW92ZUJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQpCi17Ci0gICAgbV9iYWNr
Rm9yd2FyZExpc3RJdGVtTWFwLnJlbW92ZShpdGVtSUQpOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZykK
IHsKICAgICBVUkwgdXJsKFVSTCgpLCB1cmxTdHJpbmcpOwpAQCAtNTQ3LDExICs1MjAsMTEgQEAg
Ym9vbCBXZWJQcm9jZXNzUHJveHk6OmNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyhjb25z
dCBVUkwmIHVybCkKICAgICAvLyBJdGVtcyBpbiBiYWNrL2ZvcndhcmQgbGlzdCBoYXZlIGJlZW4g
YWxyZWFkeSBjaGVja2VkLgogICAgIC8vIE9uZSBjYXNlIHdoZXJlIHdlIGRvbid0IGhhdmUgc2Fu
ZGJveCBleHRlbnNpb25zIGZvciBmaWxlIFVSTHMgaW4gYi9mIGxpc3QgaXMgaWYgdGhlIGxpc3Qg
aGFzIGJlZW4gcmVpbnN0YXRlZCBhZnRlciBhIGNyYXNoIG9yIGEgYnJvd3NlciByZXN0YXJ0Lgog
ICAgIFN0cmluZyBwYXRoID0gdXJsLmZpbGVTeXN0ZW1QYXRoKCk7Ci0gICAgZm9yIChXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtTWFwOjppdGVyYXRvciBpdGVyID0gbV9iYWNrRm9yd2FyZExpc3RJdGVt
TWFwLmJlZ2luKCksIGVuZCA9IG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcC5lbmQoKTsgaXRlciAh
PSBlbmQ7ICsraXRlcikgewotICAgICAgICBVUkwgaXRlbVVSTChVUkwoKSwgaXRlci0+dmFsdWUt
PnVybCgpKTsKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjph
bGxJdGVtcygpLnZhbHVlcygpKSB7CisgICAgICAgIFVSTCBpdGVtVVJMKFVSTCgpLCBpdGVtLT51
cmwoKSk7CiAgICAgICAgIGlmIChpdGVtVVJMLmlzTG9jYWxGaWxlKCkgJiYgaXRlbVVSTC5maWxl
U3lzdGVtUGF0aCgpID09IHBhdGgpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
VVJMIGl0ZW1PcmlnaW5hbFVSTChVUkwoKSwgaXRlci0+dmFsdWUtPm9yaWdpbmFsVVJMKCkpOwor
ICAgICAgICBVUkwgaXRlbU9yaWdpbmFsVVJMKFVSTCgpLCBpdGVtLT5vcmlnaW5hbFVSTCgpKTsK
ICAgICAgICAgaWYgKGl0ZW1PcmlnaW5hbFVSTC5pc0xvY2FsRmlsZSgpICYmIGl0ZW1PcmlnaW5h
bFVSTC5maWxlU3lzdGVtUGF0aCgpID09IHBhdGgpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CkBAIC01NjgsMjIgKzU0MSwxMCBAQCBib29sIFdlYlByb2Nlc3NQcm94eTo6ZnVsbEtl
eWJvYXJkQWNjZXNzRW5hYmxlZCgpCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmFkZE9yVXBkYXRlQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCwgdWludDY0X3QgcGFn
ZUlELCBjb25zdCBQYWdlU3RhdGUmIHBhZ2VTdGF0ZSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1
cGRhdGVCYWNrRm9yd2FyZEl0ZW0oY29uc3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiBpdGVt
U3RhdGUpCiB7Ci0gICAgTUVTU0FHRV9DSEVDS19VUkwocGFnZVN0YXRlLm1haW5GcmFtZVN0YXRl
Lm9yaWdpbmFsVVJMU3RyaW5nKTsKLSAgICBNRVNTQUdFX0NIRUNLX1VSTChwYWdlU3RhdGUubWFp
bkZyYW1lU3RhdGUudXJsU3RyaW5nKTsKLQotICAgIGF1dG8mIGJhY2tGb3J3YXJkTGlzdEl0ZW0g
PSBtX2JhY2tGb3J3YXJkTGlzdEl0ZW1NYXAuYWRkKGl0ZW1JRCwgbnVsbHB0cikuaXRlcmF0b3It
PnZhbHVlOwotICAgIGlmICghYmFja0ZvcndhcmRMaXN0SXRlbSkgewotICAgICAgICBCYWNrRm9y
d2FyZExpc3RJdGVtU3RhdGUgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOwotICAgICAgICBiYWNr
Rm9yd2FyZExpc3RJdGVtU3RhdGUuaWRlbnRpZmllciA9IGl0ZW1JRDsKLSAgICAgICAgYmFja0Zv
cndhcmRMaXN0SXRlbVN0YXRlLnBhZ2VTdGF0ZSA9IHBhZ2VTdGF0ZTsKLSAgICAgICAgYmFja0Zv
cndhcmRMaXN0SXRlbSA9IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShXVEZNb3ZlKGJh
Y2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSksIHBhZ2VJRCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICAvLyBVcGRhdGUgZXhpc3RpbmcgaXRlbS4KLSAgICBiYWNrRm9yd2FyZExpc3RJdGVt
LT5zZXRQYWdlU3RhdGUocGFnZVN0YXRlKTsKKyAgICBpZiAoYXV0byogaXRlbSA9IFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW06Oml0ZW1Gb3JJRChpdGVtU3RhdGUuaWRlbnRpZmllcikpCisgICAgICAg
IGl0ZW0tPnNldFBhZ2VTdGF0ZShpdGVtU3RhdGUucGFnZVN0YXRlKTsKIH0KIAogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaAppbmRleCA2MDdiOWIyYWU0YWRkMjQ2NjUwMWIyMTg4NmMzNGM5MTFhZmQwYmFjLi5l
ZDEwZjkzZGRiYTkwMDA2OGQ0MWQ1M2RmZWE0ODliZGI1NWQ1ZDJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtOTIsNyArOTIsNiBAQCB0eXBlZGVmIEJh
Y2tncm91bmRXZWJQcm9jZXNzQ291bnRlcjo6VG9rZW4gQmFja2dyb3VuZFdlYlByb2Nlc3NUb2tl
bjsKIAogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVibGljIENoaWxkUHJvY2Vzc1Byb3h5LCBw
dWJsaWMgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBwcml2YXRlIFByb2Nlc3NUaHJvdHRs
ZXJDbGllbnQgewogcHVibGljOgotICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtTWFwOwogICAg
IHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkZyYW1lUHJveHk+PiBXZWJGcmFt
ZVByb3h5TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgV2ViUGFnZVByb3h5Kj4g
V2ViUGFnZVByb3h5TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEFQ
STo6VXNlckluaXRpYXRlZEFjdGlvbj4+IFVzZXJJbml0aWF0ZWRBY3Rpb25NYXA7CkBAIC0xMjQs
NyArMTIzLDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRGVzdHJveVZpc2l0ZWRMaW5rU3RvcmUo
VmlzaXRlZExpbmtTdG9yZSYpOwogICAgIHZvaWQgZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Jik7CiAKLSAgICBXZWJC
YWNrRm9yd2FyZExpc3RJdGVtKiB3ZWJCYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgaXRlbUlEKSBj
b25zdDsKICAgICBSZWZQdHI8QVBJOjpVc2VySW5pdGlhdGVkQWN0aW9uPiB1c2VySW5pdGlhdGVk
QWN0aXZpdHkodWludDY0X3QpOwogCiAgICAgUmVzcG9uc2l2ZW5lc3NUaW1lciYgcmVzcG9uc2l2
ZW5lc3NUaW1lcigpIHsgcmV0dXJuIG1fcmVzcG9uc2l2ZW5lc3NUaW1lcjsgfQpAQCAtMTQyLDkg
KzE0MCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlVGV4dENoZWNrZXJTdGF0ZSgpOwog
Ci0gICAgdm9pZCByZWdpc3Rlck5ld1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViQmFja0Zvcndh
cmRMaXN0SXRlbSYpOwotICAgIHZvaWQgcmVtb3ZlQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90KTsK
LQogICAgIHZvaWQgd2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24o
KSB7IG1fbWF5SGF2ZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbiA9IHRydWU7IH0K
ICAgICB2b2lkIGFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoY29uc3QgU3RyaW5nJik7CiAgICAg
Ym9vbCBoYXNBc3N1bWVkUmVhZEFjY2Vzc1RvVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0
OwpAQCAtMjMzLDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXliZVNodXREb3duKCk7
CiAKICAgICAvLyBJUEMgbWVzc2FnZSBoYW5kbGVycy4KLSAgICB2b2lkIGFkZE9yVXBkYXRlQmFj
a0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCwgdWludDY0X3QgcGFnZUlELCBjb25zdCBQYWdl
U3RhdGUmKTsKKyAgICB2b2lkIHVwZGF0ZUJhY2tGb3J3YXJkSXRlbShjb25zdCBCYWNrRm9yd2Fy
ZExpc3RJdGVtU3RhdGUmKTsKICAgICB2b2lkIGRpZERlc3Ryb3lGcmFtZSh1aW50NjRfdCk7CiAg
ICAgdm9pZCBkaWREZXN0cm95VXNlckdlc3R1cmVUb2tlbih1aW50NjRfdCk7CiAKQEAgLTMxMCw3
ICszMDUsNiBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eU1hcCBtX3BhZ2VNYXA7CiAgICAg
SGFzaE1hcDx1aW50NjRfdCwgU3VzcGVuZGVkUGFnZVByb3h5Kj4gbV9zdXNwZW5kZWRQYWdlTWFw
OwogICAgIFdlYkZyYW1lUHJveHlNYXAgbV9mcmFtZU1hcDsKLSAgICBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtTWFwIG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcDsKICAgICBVc2VySW5pdGlhdGVkQWN0
aW9uTWFwIG1fdXNlckluaXRpYXRlZEFjdGlvbk1hcDsKIAogICAgIEhhc2hTZXQ8VmlzaXRlZExp
bmtTdG9yZSo+IG1fdmlzaXRlZExpbmtTdG9yZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZWM3Y2Y1MDEzOTM3NmI1
Mzg3Nzk5NDYwOWMwNzA1MjkwNjY2MzU4Mi4uZWRiMDVhNzA2NTM0YjE1MWIwNWViM2U2MzI2M2Uz
OTI3ODNlNjU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNyBAQAogIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBt
ZXNzYWdlcyAtPiBXZWJQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewotICAgIEFkZE9yVXBk
YXRlQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCwgdWludDY0X3QgcGFnZUlELCBzdHJ1
Y3QgV2ViS2l0OjpQYWdlU3RhdGUgcGFnZVN0YXRlKQorICAgIFVwZGF0ZUJhY2tGb3J3YXJkSXRl
bShzdHJ1Y3QgV2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgYmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlKQogICAgIERpZERlc3Ryb3lGcmFtZSh1aW50NjRfdCBmcmFtZUlEKSAKIAogICAg
IERpZERlc3Ryb3lVc2VyR2VzdHVyZVRva2VuKHVpbnQ2NF90IHVzZXJHZXN0dXJlVG9rZW5JRCkg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vz
c2lvblN0YXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggYTVkNDVhOWE4MGVlODU4
MmFiNWQzZmY5YTc4MjY4ZGZjYmRiOTIwNS4uYTQ0NzIyYWEzNWNhNjg1OWI4NDQ0ZmU3NWY1ZGZi
Zjg1MTRiYTk3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcApAQCAtMTEy
LDE1ICsxMTIsMTUgQEAgc3RhdGljIEZyYW1lU3RhdGUgdG9GcmFtZVN0YXRlKGNvbnN0IEhpc3Rv
cnlJdGVtJiBoaXN0b3J5SXRlbSkKICAgICByZXR1cm4gZnJhbWVTdGF0ZTsKIH0KIAotUGFnZVN0
YXRlIHRvUGFnZVN0YXRlKGNvbnN0IFdlYkNvcmU6Okhpc3RvcnlJdGVtJiBoaXN0b3J5SXRlbSkK
K0JhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSB0b0JhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZShjb25z
dCBXZWJDb3JlOjpIaXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0pCiB7Ci0gICAgUGFnZVN0YXRlIHBh
Z2VTdGF0ZTsKLQotICAgIHBhZ2VTdGF0ZS50aXRsZSA9IGhpc3RvcnlJdGVtLnRpdGxlKCk7Ci0g
ICAgcGFnZVN0YXRlLm1haW5GcmFtZVN0YXRlID0gdG9GcmFtZVN0YXRlKGhpc3RvcnlJdGVtKTsK
LSAgICBwYWdlU3RhdGUuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IGhpc3RvcnlJdGVt
LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKTsKLSAgICBwYWdlU3RhdGUuc2Vzc2lvblN0
YXRlT2JqZWN0ID0gaGlzdG9yeUl0ZW0uc3RhdGVPYmplY3QoKTsKLSAgICByZXR1cm4gcGFnZVN0
YXRlOworICAgIEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSBzdGF0ZTsKKyAgICBzdGF0ZS5pZGVu
dGlmaWVyID0gaGlzdG9yeUl0ZW0uaWRlbnRpZmllcigpOworICAgIHN0YXRlLnBhZ2VTdGF0ZS50
aXRsZSA9IGhpc3RvcnlJdGVtLnRpdGxlKCk7CisgICAgc3RhdGUucGFnZVN0YXRlLm1haW5GcmFt
ZVN0YXRlID0gdG9GcmFtZVN0YXRlKGhpc3RvcnlJdGVtKTsKKyAgICBzdGF0ZS5wYWdlU3RhdGUu
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IGhpc3RvcnlJdGVtLnNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3koKTsKKyAgICBzdGF0ZS5wYWdlU3RhdGUuc2Vzc2lvblN0YXRlT2JqZWN0
ID0gaGlzdG9yeUl0ZW0uc3RhdGVPYmplY3QoKTsKKyAgICByZXR1cm4gc3RhdGU7CiB9CiAKIHN0
YXRpYyBSZWY8Rm9ybURhdGE+IHRvRm9ybURhdGEoY29uc3QgSFRUUEJvZHkmIGh0dHBCb2R5KQpA
QCAtMTgyLDE5ICsxODIsMTkgQEAgc3RhdGljIHZvaWQgYXBwbHlGcmFtZVN0YXRlKEhpc3RvcnlJ
dGVtJiBoaXN0b3J5SXRlbSwgY29uc3QgRnJhbWVTdGF0ZSYgZnJhbWVTdGEKICNlbmRpZgogCiAg
ICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZEZyYW1lU3RhdGUgOiBmcmFtZVN0YXRlLmNoaWxkcmVu
KSB7Ci0gICAgICAgIFJlZjxIaXN0b3J5SXRlbT4gY2hpbGRIaXN0b3J5SXRlbSA9IEhpc3RvcnlJ
dGVtOjpjcmVhdGUoY2hpbGRGcmFtZVN0YXRlLnVybFN0cmluZywgU3RyaW5nKCkpOworICAgICAg
ICBSZWY8SGlzdG9yeUl0ZW0+IGNoaWxkSGlzdG9yeUl0ZW0gPSBIaXN0b3J5SXRlbTo6Y3JlYXRl
KGNoaWxkRnJhbWVTdGF0ZS51cmxTdHJpbmcsIHsgfSwgeyB9LCB7IFByb2Nlc3M6OmlkZW50aWZp
ZXIoKSwgZ2VuZXJhdGVPYmplY3RJZGVudGlmaWVyPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI6
Okl0ZW1JZGVudGlmaWVyVHlwZT4oKSB9KTsKICAgICAgICAgYXBwbHlGcmFtZVN0YXRlKGNoaWxk
SGlzdG9yeUl0ZW0sIGNoaWxkRnJhbWVTdGF0ZSk7CiAKICAgICAgICAgaGlzdG9yeUl0ZW0uYWRk
Q2hpbGRJdGVtKFdURk1vdmUoY2hpbGRIaXN0b3J5SXRlbSkpOwogICAgIH0KIH0KIAotUmVmPEhp
c3RvcnlJdGVtPiB0b0hpc3RvcnlJdGVtKGNvbnN0IFBhZ2VTdGF0ZSYgcGFnZVN0YXRlKQorUmVm
PEhpc3RvcnlJdGVtPiB0b0hpc3RvcnlJdGVtKGNvbnN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0
ZSYgaXRlbVN0YXRlKQogewotICAgIFJlZjxIaXN0b3J5SXRlbT4gaGlzdG9yeUl0ZW0gPSBIaXN0
b3J5SXRlbTo6Y3JlYXRlKHBhZ2VTdGF0ZS5tYWluRnJhbWVTdGF0ZS51cmxTdHJpbmcsIHBhZ2VT
dGF0ZS50aXRsZSk7Ci0gICAgaGlzdG9yeUl0ZW0tPnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kocGFnZVN0YXRlLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwotICAgIGhpc3Rv
cnlJdGVtLT5zZXRTdGF0ZU9iamVjdChwYWdlU3RhdGUuc2Vzc2lvblN0YXRlT2JqZWN0LmdldCgp
KTsKLSAgICBhcHBseUZyYW1lU3RhdGUoaGlzdG9yeUl0ZW0sIHBhZ2VTdGF0ZS5tYWluRnJhbWVT
dGF0ZSk7CisgICAgUmVmPEhpc3RvcnlJdGVtPiBoaXN0b3J5SXRlbSA9IEhpc3RvcnlJdGVtOjpj
cmVhdGUoaXRlbVN0YXRlLnBhZ2VTdGF0ZS5tYWluRnJhbWVTdGF0ZS51cmxTdHJpbmcsIGl0ZW1T
dGF0ZS5wYWdlU3RhdGUudGl0bGUsIHsgfSwgaXRlbVN0YXRlLmlkZW50aWZpZXIpOworICAgIGhp
c3RvcnlJdGVtLT5zZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KGl0ZW1TdGF0ZS5wYWdl
U3RhdGUuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CisgICAgaGlzdG9yeUl0ZW0tPnNl
dFN0YXRlT2JqZWN0KGl0ZW1TdGF0ZS5wYWdlU3RhdGUuc2Vzc2lvblN0YXRlT2JqZWN0LmdldCgp
KTsKKyAgICBhcHBseUZyYW1lU3RhdGUoaGlzdG9yeUl0ZW0sIGl0ZW1TdGF0ZS5wYWdlU3RhdGUu
bWFpbkZyYW1lU3RhdGUpOwogCiAgICAgcmV0dXJuIGhpc3RvcnlJdGVtOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNv
bnZlcnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNz
aW9uU3RhdGVDb252ZXJzaW9uLmgKaW5kZXggYmVlOWQyMjhjYTczOWE1YThmNjY1MGNhZmNmN2Jl
ZjBkYmNkNGRmNi4uZTBlMTFmYzhjNTIwYmM5ZjBiYTI0MTM0M2U4MWZlMWFmOGEwYTliMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25T
dGF0ZUNvbnZlcnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5oCkBAIC0zNCwxMCArMzQsMTEgQEAgY2xhc3Mg
SGlzdG9yeUl0ZW07CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdHJ1Y3QgQmFja0ZvcndhcmRM
aXN0SXRlbVN0YXRlOwogc3RydWN0IFBhZ2VTdGF0ZTsKIAotUGFnZVN0YXRlIHRvUGFnZVN0YXRl
KGNvbnN0IFdlYkNvcmU6Okhpc3RvcnlJdGVtJik7Ci1SZWY8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+
IHRvSGlzdG9yeUl0ZW0oY29uc3QgUGFnZVN0YXRlJik7CitCYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGUgdG9CYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUoY29uc3QgV2ViQ29yZTo6SGlzdG9yeUl0ZW0m
KTsKK1JlZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gdG9IaXN0b3J5SXRlbShjb25zdCBCYWNrRm9y
d2FyZExpc3RJdGVtU3RhdGUmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGE0ZWVhY2EwODIwNzUyODcwNTE0ZmUxNTc1ZjUw
ZjdkNzZiZDNjNmQuLjc0YWM4YjJmODY5MGJmNmZmNjUxZGIxODdhNmFlMTIxNjI1ZDY3NTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTEzNiwxMyArMTEzNiw2IEBAIGJv
b2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEdvVG9IaXN0b3J5SXRlbShIaXN0b3J5SXRl
bSogaXRlbSkgY29uc3QKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwog
ICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIHVpbnQ2
NF90IGl0ZW1JRCA9IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppZEZvckl0ZW0oaXRlbSk7Ci0g
ICAgaWYgKCFpdGVtSUQpIHsKLSAgICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGJlIGNvbnNpZGVy
aW5nIG5hdmlnYXRpbmcgdG8gYW4gaXRlbSB0aGF0IGlzIG5vdCBhY3R1YWxseSBpbiB0aGUgYmFj
ay9mb3J3YXJkIGxpc3QuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlQmFja0Zvcndh
cmRMaXN0SXRlbT4gYnVuZGxlSXRlbSA9IEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRl
bTo6Y3JlYXRlKGl0ZW0pOwogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CkBAIC0x
MTUyLDcgKzExNDUsNyBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRHb1RvSGlz
dG9yeUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pIGNvbnN0CiAgICAgaWYgKCFzaG91bGRHb1RvQmFj
a0ZvcndhcmRMaXN0SXRlbSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgd2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXaWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0o
aXRlbUlELCBidW5kbGVJdGVtLT5pc0luUGFnZUNhY2hlKCksIFVzZXJEYXRhKFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdl
dCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2lsbEdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtKGl0ZW0tPmlkZW50aWZpZXIoKSwgYnVuZGxlSXRlbS0+aXNJ
blBhZ2VDYWNoZSgpLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1P
YmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCmluZGV4IDdjMTBjNzhlM2ZlZjJiMTc5Mzcx
ZGE1YmE0ODMyNTIyNjFkZTc5MzUuLmU4YTNjYjdlNTE1OGE5ODQyOWUxZDZjNmVlOThiMzhjYjdh
ZmNjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJh
Y2tGb3J3YXJkTGlzdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKQEAgLTQ3LDg0ICs0NywzMiBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIC8vIEZJWE1FIDxyZGFyOi8vcHJvYmxlbS84ODE5MjY4PjogVGhpcyBs
ZWFrcyBhbGwgSGlzdG9yeUl0ZW1zIHRoYXQgZ28gaW50byB0aGVzZSBtYXBzLgogLy8gV2UgbmVl
ZCB0byBjbGVhciB1cCB0aGUgbGlmZSB0aW1lIG9mIHRoZXNlIG9iamVjdHMuCiAKLXR5cGVkZWYg
SGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEhpc3RvcnlJdGVtPj4gSURUb0hpc3RvcnlJdGVtTWFw
OyAvLyAiSUQiIGhlcmUgaXMgdGhlIGl0ZW0gSUQuCi0gICAgCi1zdHJ1Y3QgSXRlbUFuZFBhZ2VJ
RCB7Ci0gICAgdWludDY0X3QgaXRlbUlEOwotICAgIHVpbnQ2NF90IHBhZ2VJRDsKLX07Ci10eXBl
ZGVmIEhhc2hNYXA8UmVmUHRyPEhpc3RvcnlJdGVtPiwgSXRlbUFuZFBhZ2VJRD4gSGlzdG9yeUl0
ZW1Ub0lETWFwOwotCit0eXBlZGVmIEhhc2hNYXA8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciwg
UmVmUHRyPEhpc3RvcnlJdGVtPj4gSURUb0hpc3RvcnlJdGVtTWFwOyAvLyAiSUQiIGhlcmUgaXMg
dGhlIGl0ZW0gSUQuCiBzdGF0aWMgSURUb0hpc3RvcnlJdGVtTWFwJiBpZFRvSGlzdG9yeUl0ZW1N
YXAoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJRFRvSGlzdG9yeUl0ZW1NYXA+IG1h
cDsKICAgICByZXR1cm4gbWFwOwogfQogCi1zdGF0aWMgSGlzdG9yeUl0ZW1Ub0lETWFwJiBoaXN0
b3J5SXRlbVRvSURNYXAoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIaXN0b3J5SXRl
bVRvSURNYXA+IG1hcDsKLSAgICByZXR1cm4gbWFwOwotfQotCi1zdGF0aWMgdWludDY0X3QgdW5p
cXVlSGlzdG9yeUl0ZW1JRCA9IDE7Ci0KLXN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUhpc3RvcnlJ
dGVtSUQoKQotewotICAgIC8vIFRoZXNlIElEcyBleGlzdCBpbiB0aGUgV2ViUHJvY2VzcyBmb3Ig
aXRlbXMgY3JlYXRlZCBieSB0aGUgV2ViUHJvY2Vzcy4KLSAgICAvLyBUaGUgSURzIGdlbmVyYXRl
ZCBoZXJlIG5lZWQgdG8gbmV2ZXIgY29sbGlkZSB3aXRoIHRoZSBJRHMgY3JlYXRlZCBpbiBXZWJC
YWNrRm9yd2FyZExpc3QgaW4gdGhlIFVJUHJvY2Vzcy4KLSAgICAvLyBXZSBhY2NvbXBsaXNoIHRo
aXMgYnkgc3RhcnRpbmcgZnJvbSAzLCBhbmQgb25seSBldmVyIHVzaW5nIG9kZCBpZHMuCi0gICAg
dW5pcXVlSGlzdG9yeUl0ZW1JRCArPSAyOwotICAgIHJldHVybiB1bmlxdWVIaXN0b3J5SXRlbUlE
OwotfQotCi12b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpzZXRIaWdoZXN0SXRlbUlERnJv
bVVJUHJvY2Vzcyh1aW50NjRfdCBpdGVtSUQpCit2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5
OjphZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBp
dGVtSUQsIFJlZjxIaXN0b3J5SXRlbT4mJiBpdGVtLCB1aW50NjRfdCBwYWdlSUQpCiB7Ci0gICAg
aWYgKGl0ZW1JRCA8PSB1bmlxdWVIaXN0b3J5SXRlbUlEKQotICAgICAgICByZXR1cm47Ci0gICAg
Ci0gICAgIGlmIChpdGVtSUQgJSAyKQotICAgICAgICAgdW5pcXVlSGlzdG9yeUl0ZW1JRCA9IGl0
ZW1JRDsKLSAgICAgZWxzZQotICAgICAgICAgdW5pcXVlSGlzdG9yeUl0ZW1JRCA9IGl0ZW1JRCAr
IDE7Ci19Ci0KLXN0YXRpYyB2b2lkIHVwZGF0ZUJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVt
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgSGlzdG9yeUl0ZW0qIGl0ZW0pCi17Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViUHJvY2Vzc1Byb3h5OjpBZGRPclVwZGF0ZUJhY2tGb3J3YXJkSXRlbShpdGVtSUQsIHBhZ2VJ
RCwgdG9QYWdlU3RhdGUoKml0ZW0pKSwgMCk7Ci19Ci0KLXZvaWQgV2ViQmFja0ZvcndhcmRMaXN0
UHJveHk6OmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKHVpbnQ2NF90IGl0ZW1JRCwgUmVmPEhpc3RvcnlJ
dGVtPiYmIGl0ZW0sIHVpbnQ2NF90IHBhZ2VJRCkKLXsKLSAgICAvLyBUaGlzIGl0ZW0vaXRlbUlE
IHBhaXIgc2hvdWxkIG5vdCBhbHJlYWR5IGV4aXN0IGluIG91ciBtYXBzLgotICAgIEFTU0VSVCgh
aGlzdG9yeUl0ZW1Ub0lETWFwKCkuY29udGFpbnMoaXRlbS5wdHIoKSkpOworICAgIC8vIFRoaXMg
aXRlbS9pdGVtSUQgcGFpciBzaG91bGQgbm90IGFscmVhZHkgZXhpc3QgaW4gb3VyIG1hcC4KICAg
ICBBU1NFUlQoIWlkVG9IaXN0b3J5SXRlbU1hcCgpLmNvbnRhaW5zKGl0ZW1JRCkpOwogCi0gICAg
aGlzdG9yeUl0ZW1Ub0lETWFwKCkuc2V0PEl0ZW1BbmRQYWdlSUQ+KGl0ZW0ucHRyKCksIHsgaXRl
bUlELCBwYWdlSUQgfSk7CiAgICAgaWRUb0hpc3RvcnlJdGVtTWFwKCkuc2V0KGl0ZW1JRCwgaXRl
bS5wdHIoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIFdLMk5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZChI
aXN0b3J5SXRlbSogaXRlbSkKIHsKLSAgICBJdGVtQW5kUGFnZUlEIGlkcyA9IGhpc3RvcnlJdGVt
VG9JRE1hcCgpLmdldChpdGVtKTsKLSAgICBpZiAoIWlkcy5pdGVtSUQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHVwZGF0ZUJhY2tGb3J3YXJkSXRlbShpZHMuaXRlbUlELCBpZHMucGFnZUlELCBp
dGVtKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlVwZGF0ZUJhY2tGb3J3YXJkSXRl
bSh0b0JhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSgqaXRlbSkpLCAwKTsKIH0KIAotSGlzdG9yeUl0
ZW0qIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppdGVtRm9ySUQodWludDY0X3QgaXRlbUlEKQor
SGlzdG9yeUl0ZW0qIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppdGVtRm9ySUQoY29uc3QgQmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllciYgaXRlbUlEKQogewogICAgIHJldHVybiBpZFRvSGlzdG9y
eUl0ZW1NYXAoKS5nZXQoaXRlbUlEKTsKIH0KIAotdWludDY0X3QgV2ViQmFja0ZvcndhcmRMaXN0
UHJveHk6OmlkRm9ySXRlbShIaXN0b3J5SXRlbSogaXRlbSkKLXsKLSAgICBBU1NFUlQoaXRlbSk7
Ci0gICAgcmV0dXJuIGhpc3RvcnlJdGVtVG9JRE1hcCgpLmdldChpdGVtKS5pdGVtSUQ7Ci19Ci0K
LXZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OnJlbW92ZUl0ZW0odWludDY0X3QgaXRlbUlE
KQordm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6cmVtb3ZlSXRlbShjb25zdCBCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQpCiB7CiAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBp
dGVtID0gaWRUb0hpc3RvcnlJdGVtTWFwKCkudGFrZShpdGVtSUQpOwogICAgIGlmICghaXRlbSkK
QEAgLTEzMiw3ICs4MCw2IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OnJlbW92ZUl0
ZW0odWludDY0X3QgaXRlbUlEKQogICAgICAgICAKICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigp
LnJlbW92ZSgqaXRlbSk7CiAgICAgV2ViQ29yZTo6UGFnZTo6Y2xlYXJQcmV2aW91c0l0ZW1Gcm9t
QWxsUGFnZXMoaXRlbS5nZXQoKSk7Ci0gICAgaGlzdG9yeUl0ZW1Ub0lETWFwKCkucmVtb3ZlKGl0
ZW0pOwogfQogCiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6V2ViQmFja0ZvcndhcmRMaXN0UHJv
eHkoV2ViUGFnZSogcGFnZSkKQEAgLTE0MywyMCArOTAsMTMgQEAgV2ViQmFja0ZvcndhcmRMaXN0
UHJveHk6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5KFdlYlBhZ2UqIHBhZ2UpCiAKIHZvaWQgV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYmIGl0ZW0pCiB7
Ci0gICAgQVNTRVJUKCFoaXN0b3J5SXRlbVRvSURNYXAoKS5jb250YWlucyhpdGVtLnB0cigpKSk7
Ci0KICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdWludDY0X3QgaXRl
bUlEID0gZ2VuZXJhdGVIaXN0b3J5SXRlbUlEKCk7Ci0KLSAgICBBU1NFUlQoIWlkVG9IaXN0b3J5
SXRlbU1hcCgpLmNvbnRhaW5zKGl0ZW1JRCkpOwotCi0gICAgaGlzdG9yeUl0ZW1Ub0lETWFwKCku
c2V0PEl0ZW1BbmRQYWdlSUQ+KGl0ZW0ucHRyKCksIHsgaXRlbUlELCBtX3BhZ2UtPnBhZ2VJRCgp
IH0pOwotICAgIGlkVG9IaXN0b3J5SXRlbU1hcCgpLnNldChpdGVtSUQsIGl0ZW0ucHRyKCkpOwor
ICAgIGF1dG8gcmVzdWx0ID0gaWRUb0hpc3RvcnlJdGVtTWFwKCkuYWRkKGl0ZW0tPmlkZW50aWZp
ZXIoKSwgaXRlbS5wdHIoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05l
d0VudHJ5KTsKIAotICAgIHVwZGF0ZUJhY2tGb3J3YXJkSXRlbShpdGVtSUQsIG1fcGFnZS0+cGFn
ZUlEKCksIGl0ZW0ucHRyKCkpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpCYWNrRm9yd2FyZEFkZEl0ZW0oaXRlbUlEKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkQWRkSXRlbSh0b0JhY2tGb3J3YXJkTGlzdEl0
ZW1TdGF0ZShpdGVtLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5
Ojpnb1RvSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKQEAgLTE2NSw3ICsxMDUsNyBAQCB2b2lkIFdl
YkJhY2tGb3J3YXJkTGlzdFByb3h5Ojpnb1RvSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNp
b25IYW5kbGU7Ci0gICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpC
YWNrRm9yd2FyZEdvVG9JdGVtKGhpc3RvcnlJdGVtVG9JRE1hcCgpLmdldChpdGVtKS5pdGVtSUQp
LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEdvVG9JdGVtOjpSZXBseShzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKSk7CisgICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpCYWNrRm9yd2FyZEdvVG9JdGVtKGl0ZW0tPmlkZW50aWZpZXIoKSksIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkR29Ub0l0ZW06OlJlcGx5KHNhbmRib3hFeHRl
bnNpb25IYW5kbGUpKTsKICAgICBtX3BhZ2UtPnNhbmRib3hFeHRlbnNpb25UcmFja2VyKCkuYmVn
aW5Mb2FkKG1fcGFnZS0+bWFpbldlYkZyYW1lKCksIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSkpOwogfQogCkBAIC0xNzQsMTQgKzExNCwxNCBAQCBIaXN0b3J5SXRlbSogV2ViQmFja0Zv
cndhcmRMaXN0UHJveHk6Oml0ZW1BdEluZGV4KGludCBpdGVtSW5kZXgpCiAgICAgaWYgKCFtX3Bh
Z2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgdWludDY0X3QgaXRlbUlEID0gMDsK
KyAgICBzdGQ6Om9wdGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+IGl0ZW1JRDsKICAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkSXRlbUF0SW5kZXgo
aXRlbUluZGV4KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRJdGVtQXRJbmRl
eDo6UmVwbHkoaXRlbUlEKSwgbV9wYWdlLT5wYWdlSUQoKSkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgaWYgKCFpdGVtSUQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIGlkVG9IaXN0b3J5SXRlbU1hcCgpLmdldChpdGVtSUQpOworICAgIHJldHVybiBpZFRv
SGlzdG9yeUl0ZW1NYXAoKS5nZXQoKml0ZW1JRCk7CiB9CiAKIGludCBXZWJCYWNrRm9yd2FyZExp
c3RQcm94eTo6YmFja0xpc3RDb3VudCgpCkBAIC0yMTAsNiArMTUwLDcgQEAgaW50IFdlYkJhY2tG
b3J3YXJkTGlzdFByb3h5Ojpmb3J3YXJkTGlzdENvdW50KCkKIAogdm9pZCBXZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eTo6Y2xvc2UoKQogeworICAgIEFTU0VSVChtX3BhZ2UpOwogICAgIG1fcGFnZSA9
IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCmluZGV4IGQ0M2Y5NDhjYTAxYmMwMWRj
NWMzZmRkYzMyMjJlNGQ1NzZiNTIxNGMuLmNhZDcwZTg2MDI5ZTQ2MDg3ODYyZjAwMjViMTE1MTc3
NjIyZTAyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaApAQCAtMjksNiArMjksMTAgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0JhY2tGb3J3YXJkQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZp
ZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlOwpAQCAtMzcsMTIg
KzQxLDEwIEBAIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5IDogcHVibGljIFdlYkNvcmU6
OkJhY2tGb3J3YXJkQ2xpZW50IHsKIHB1YmxpYzogCiAgICAgc3RhdGljIFJlZjxXZWJCYWNrRm9y
d2FyZExpc3RQcm94eT4gY3JlYXRlKFdlYlBhZ2UqIHBhZ2UpIHsgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViQmFja0ZvcndhcmRMaXN0UHJveHkocGFnZSkpOyB9CiAKLSAgICBzdGF0aWMgV2ViQ29y
ZTo6SGlzdG9yeUl0ZW0qIGl0ZW1Gb3JJRCh1aW50NjRfdCk7Ci0gICAgc3RhdGljIHVpbnQ2NF90
IGlkRm9ySXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopOwotICAgIHN0YXRpYyB2b2lkIHJlbW92
ZUl0ZW0odWludDY0X3QgaXRlbUlEKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6SGlzdG9yeUl0ZW0q
IGl0ZW1Gb3JJRChjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJik7Cisg
ICAgc3RhdGljIHZvaWQgcmVtb3ZlSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1J
ZGVudGlmaWVyJik7CiAKLSAgICB2b2lkIGFkZEl0ZW1Gcm9tVUlQcm9jZXNzKHVpbnQ2NF90IGl0
ZW1JRCwgUmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYmLCB1aW50NjRfdCBwYWdlSUQpOwotICAg
IHN0YXRpYyB2b2lkIHNldEhpZ2hlc3RJdGVtSURGcm9tVUlQcm9jZXNzKHVpbnQ2NF90IGl0ZW1J
RCk7CisgICAgdm9pZCBhZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyJiwgUmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYmLCB1aW50NjRf
dCBwYWdlSUQpOwogICAgIAogICAgIHZvaWQgY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA5ZTkxYzNiOGU1MjMzOGI2NDkyY2Q2
NjljMjExZjEyNWJhZjY0Y2IxLi5mMDIyZWUxM2U1YzM4Yzg2NTBmZTFlN2E5NzMwYzliY2E5ZDRj
MjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtNTIzLDggKzUyMyw2IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBzZXRUb3BDb250ZW50SW5z
ZXQocGFyYW1ldGVycy50b3BDb250ZW50SW5zZXQpOwogCiAgICAgbV91c2VyQWdlbnQgPSBwYXJh
bWV0ZXJzLnVzZXJBZ2VudDsKLQotICAgIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpzZXRIaWdo
ZXN0SXRlbUlERnJvbVVJUHJvY2VzcyhwYXJhbWV0ZXJzLmhpZ2hlc3RVc2VkQmFja0ZvcndhcmRJ
dGVtSUQpOwogICAgIAogICAgIGlmICghcGFyYW1ldGVycy5pdGVtU3RhdGVzLmlzRW1wdHkoKSkK
ICAgICAgICAgcmVzdG9yZVNlc3Npb25JbnRlcm5hbChwYXJhbWV0ZXJzLml0ZW1TdGF0ZXMsIFdh
c1Jlc3RvcmVkQnlBUElSZXF1ZXN0OjpObyk7CkBAIC0xMzkwLDcgKzEzODgsNyBAQCB2b2lkIFdl
YlBhZ2U6OnJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHJlbG9hZE9wdGlv
bnMsIFNhbmRib3hFeHRlbgogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjpnb1RvQmFja0Zvcndh
cmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QgYmFja0ZvcndhcmRJdGVtSUQs
IEZyYW1lTG9hZFR5cGUgYmFja0ZvcndhcmRUeXBlLCBOYXZpZ2F0aW9uUG9saWN5Q2hlY2sgbmF2
aWdhdGlvblBvbGljeUNoZWNrKQordm9pZCBXZWJQYWdlOjpnb1RvQmFja0ZvcndhcmRJdGVtKHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYgYmFj
a0ZvcndhcmRJdGVtSUQsIEZyYW1lTG9hZFR5cGUgYmFja0ZvcndhcmRUeXBlLCBOYXZpZ2F0aW9u
UG9saWN5Q2hlY2sgbmF2aWdhdGlvblBvbGljeUNoZWNrKQogewogICAgIFNlbmRTdG9wUmVzcG9u
c2l2ZW5lc3NUaW1lciBzdG9wcGVyOwogCkBAIC0yNDg4LDcgKzI0ODYsNyBAQCB2b2lkIFdlYlBh
Z2U6OmV4ZWN1dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBjb25zdCBT
dHJpbmcmIGFyZ3VtZQogdm9pZCBXZWJQYWdlOjpyZXN0b3JlU2Vzc2lvbkludGVybmFsKGNvbnN0
IFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+JiBpdGVtU3RhdGVzLCBXYXNSZXN0b3Jl
ZEJ5QVBJUmVxdWVzdCByZXN0b3JlZEJ5QVBJUmVxdWVzdCkKIHsKICAgICBmb3IgKGNvbnN0IGF1
dG8mIGl0ZW1TdGF0ZSA6IGl0ZW1TdGF0ZXMpIHsKLSAgICAgICAgYXV0byBoaXN0b3J5SXRlbSA9
IHRvSGlzdG9yeUl0ZW0oaXRlbVN0YXRlLnBhZ2VTdGF0ZSk7CisgICAgICAgIGF1dG8gaGlzdG9y
eUl0ZW0gPSB0b0hpc3RvcnlJdGVtKGl0ZW1TdGF0ZSk7CiAgICAgICAgIGhpc3RvcnlJdGVtLT5z
ZXRXYXNSZXN0b3JlZEZyb21TZXNzaW9uKHJlc3RvcmVkQnlBUElSZXF1ZXN0ID09IFdhc1Jlc3Rv
cmVkQnlBUElSZXF1ZXN0OjpZZXMpOwogICAgICAgICBzdGF0aWNfY2FzdDxXZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eSo+KGNvcmVQYWdlKCktPmJhY2tGb3J3YXJkKCkuY2xpZW50KCkpLT5hZGRJdGVt
RnJvbVVJUHJvY2VzcyhpdGVtU3RhdGUuaWRlbnRpZmllciwgV1RGTW92ZShoaXN0b3J5SXRlbSks
IG1fcGFnZUlEKTsKICAgICB9CkBAIC00MDgyLDcgKzQwODAsNyBAQCB2b2lkIFdlYlBhZ2U6OnNl
dEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGluZykKICAgICBtX3Bh
Z2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5nKGVuY29k
aW5nKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0odWludDY0
X3QgaXRlbUlEKQordm9pZCBXZWJQYWdlOjpkaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oY29uc3Qg
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYgaXRlbUlEKQogewogICAgIFdlYkJhY2tGb3J3YXJk
TGlzdFByb3h5OjpyZW1vdmVJdGVtKGl0ZW1JRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNTMwMGI3ZWQ0OTI1ZTM3MWQ4OTUyNWRmNzViNzgw
MTVjZWVlMjcxNC4uYzNjNjBmMjcxZTVkY2FmM2IwNTMzYjk1NjczZjA4NTI5YWFiMTY0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTU0LDYgKzE1
NCw3IEBAIGVudW0gU3ludGhldGljQ2xpY2tUeXBlIDogaW50OF90OwogZW51bSBjbGFzcyBOYXZp
Z2F0aW9uUG9saWN5Q2hlY2s7CiBlbnVtIGNsYXNzIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25U
cmFuc2l0aW9uIDogdWludDhfdDsKIAorc3RydWN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7
CiBzdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmU7CiBzdHJ1Y3QgRGljdGF0aW9uQWx0ZXJuYXRp
dmU7CiBzdHJ1Y3QgR2xvYmFsRnJhbWVJZGVudGlmaWVyOwpAQCAtMTE1Myw3ICsxMTU0LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvbnN0IExvYWRQYXJh
bWV0ZXJzJik7CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhj
b25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2ludCwgV2ViQ29y
ZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwogICAgIHZvaWQgcmVsb2FkKHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgdWludDMyX3QgcmVsb2FkT3B0aW9ucywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiYpOwotICAgIHZvaWQgZ29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IHVpbnQ2NF90LCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlLCBXZWJDb3JlOjpOYXZpZ2F0aW9uUG9s
aWN5Q2hlY2spOworICAgIHZvaWQgZ29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBXZWJDb3Jl
OjpGcmFtZUxvYWRUeXBlLCBXZWJDb3JlOjpOYXZpZ2F0aW9uUG9saWN5Q2hlY2spOwogICAgIHZv
aWQgdHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7CiAgICAgdm9pZCBzZXRJbml0aWFsRm9jdXMo
Ym9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2Fy
ZEV2ZW50JiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB1cGRhdGVJc0luV2luZG93KGJvb2wgaXNJ
bml0aWFsU3RhdGUgPSBmYWxzZSk7CkBAIC0xMTg2LDcgKzExODcsNyBAQCBwcml2YXRlOgogICAg
IGVudW0gY2xhc3MgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3QgeyBObywgWWVzIH07CiAgICAgdm9p
ZCByZXN0b3JlU2Vzc2lvbkludGVybmFsKGNvbnN0IFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGU+JiwgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3QpOwogICAgIHZvaWQgcmVzdG9yZVNlc3Np
b24oY29uc3QgVmVjdG9yPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4mKTsKLSAgICB2b2lkIGRp
ZFJlbW92ZUJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCk7CisgICAgdm9pZCBkaWRSZW1vdmVCYWNr
Rm9yd2FyZEl0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYpOwog
CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgdm9pZCBzZXRBbGxvd3NSZW1vdGVJ
bnNwZWN0aW9uKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggY2M3MGE5YWM4MTgxZTFjZGU1ODNiMmQzNTc1
NTVmMzk3MDczZTcxYy4uMmI5MDIxZmE3MTQ3MjI5OGJhZDkxY2EzYzZhNWE4NjczOGQ4OGU3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCkBAIC0xMzEsNyArMTMxLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgU2Nyb2xsQnkodWludDMyX3Qgc2Nyb2xsRGlyZWN0aW9uLCB1aW50MzJf
dCBzY3JvbGxHcmFudWxhcml0eSkKICAgICBDZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKCkK
IAotICAgIEdvVG9CYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRf
dCBiYWNrRm9yd2FyZEl0ZW1JRCwgZW51bSBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlIGJhY2tGb3J3
YXJkVHlwZSwgZW51bSBXZWJDb3JlOjpOYXZpZ2F0aW9uUG9saWN5Q2hlY2sgbmF2aWdhdGlvblBv
bGljeUNoZWNrKQorICAgIEdvVG9CYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgbmF2aWdhdGlvbklE
LCBzdHJ1Y3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBiYWNrRm9yd2FyZEl0
ZW1JRCwgZW51bSBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlIGJhY2tGb3J3YXJkVHlwZSwgZW51bSBX
ZWJDb3JlOjpOYXZpZ2F0aW9uUG9saWN5Q2hlY2sgbmF2aWdhdGlvblBvbGljeUNoZWNrKQogICAg
IFRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCiAKICAgICBMb2FkVVJMSW5GcmFtZShXZWJDb3Jl
OjpVUkwgdXJsLCB1aW50NjRfdCBmcmFtZUlEKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIAogICAgIFJlc3RvcmVTZXNzaW9uKFZl
Y3RvcjxXZWJLaXQ6OkJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4gaXRlbVN0YXRlcykKIAotICAg
IERpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBiYWNrRm9yd2FyZEl0ZW1JRCkKKyAg
ICBEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXIgYmFja0ZvcndhcmRJdGVtSUQpCiAKICAgICBVcGRhdGVXZWJzaXRlUG9saWNp
ZXMoc3RydWN0IFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YSB3ZWJzaXRlUG9saWNpZXMpCiAg
ICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxp
c3RlbmVySUQsIGVudW0gV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgc3RkOjpvcHRp
b25hbDxXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llcykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338327</attachid>
            <date>2018-04-19 09:26:21 -0700</date>
            <delta_ts>2018-04-19 09:46:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184750-20180419092620.patch</filename>
            <type>text/plain</type>
            <size>70895</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAwOTE2NGI3MDQwMzNiMjc1Y2E0MzRi
ODgxZjVlMDYyNTU2NDZiNGMuLmIxZDI2NGUwNmJjNmQzNWNiYmFjZTAxNWNkODM0YzcxYTU5ZWE3
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDQtMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBnbG9iYWxseS11bmlxdWUgSGlzdG9yeUl0ZW0g
aWRlbnRpZmllcnMgKGFuZCBoYXZlIFdlYktpdDIgYWRvcHQgdGhlbSkuCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8zOTUzMzk0OT4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODQ3NTAKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAg
ICAgICAgKiB3dGYvRGVidWdVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdURjo6ZGVidWdTdHJpbmcp
OgorCiAyMDE4LTA0LTE4ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4K
IAogICAgICAgICBbV2luXSBMYXlvdXQgVGVzdCBqcy9kYXRlLWNvbnN0cnVjdG9yLmh0bWwgaXMg
ZmFpbGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDhjMGJjODdjYzNiNGM1M2FlMTg5ZTgzNTRlNGM0OWZkMWJm
ZjFjNWYuLjJlMzFlOTYxZTA0ZWI1YjE0M2FlMjllYzA4Njk4ZTAzNzVmNjk5ODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzOSBAQAorMjAxOC0wNC0xOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIGdsb2JhbGx5LXVuaXF1ZSBIaXN0b3J5SXRlbSBpZGVu
dGlmaWVycyAoYW5kIGhhdmUgV2ViS2l0MiBhZG9wdCB0aGVtKS4KKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzM5NTMzOTQ5PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NDc1MAorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgKFJlZmFjdG9yLCBubyBiZWhhdmlvciBjaGFuZ2UpLgorCisgICAgICAg
IEluIFdlYkNvcmUsIHdlOgorICAgICAgICAtIEFkZCBhIHByb2Nlc3MtdW5pcXVlICJCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyIgorICAgICAgICAtIE1ha2UgYWxsIEhpc3RvcnlJdGVtcyBoYXZl
IHN1Y2ggYW4gaWRlbnRpZmllciBhcyBhIG1lbWJlcgorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZEl0
ZW1JZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllcjo6bG9nU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9y
PT0pOgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOjpoYXNo
IGNvbnN0KToKKyAgICAgICAgKFdURjo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllckhhc2g6Omhh
c2gpOgorICAgICAgICAoV1RGOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVySGFzaDo6ZXF1YWwp
OgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXI+OjplbXB0eVZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJDb3JlOjpC
YWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAg
ICAgKFdURjo6SGFzaFRyYWl0czxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPjo6
aXNEZWxldGVkVmFsdWUpOgorCisgICAgICAgICogaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIaXN0b3J5SXRlbTo6Z2VuZXJhdGVTZXF1ZW5jZU51bWJlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpIaXN0b3J5SXRlbTo6SGlzdG9yeUl0ZW0pOgorICAgICAgICAoV2Vi
Q29yZTo6Z2VuZXJhdGVTZXF1ZW5jZU51bWJlcik6IERlbGV0ZWQuCisKKyAgICAgICAgKiBoaXN0
b3J5L0hpc3RvcnlJdGVtLmg6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5SXRlbTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlJdGVtOjppZGVudGlmaWVyIGNvbnN0KToKKwog
MjAxOC0wNC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFNl
dCBSZW1vdGVET01XaW5kb3cncyBpbml0aWFsIG9wZW5lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1YjIxMjJkYWUy
MWIzYjRjYzU4N2MyZDI5NTNkZTY2ODU3ZjM0MDRiLi41NDQ3NDhkOWE3NjZiZGU2N2Q3YTgwMDdh
OTE0YTBlN2Q0NTE1MzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAxOC0wNC0xOCAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGdsb2JhbGx5
LXVuaXF1ZSBIaXN0b3J5SXRlbSBpZGVudGlmaWVycyAoYW5kIGhhdmUgV2ViS2l0MiBhZG9wdCB0
aGVtKS4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM5NTMzOTQ5PiBhbmQgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDc1MAorCisgICAgICAgIFJldmlld2VkIGJ5
IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBXaXRoIHByb2Nlc3Mgc3dhcHBpbmcsIHRoZSBhc3N1
bXB0aW9uIHRoYXQgImJhY2svZm9yd2FyZCBpdGVtcyBiZWxvbmcgdG8gYSBwcm9jZXNzIiBpcyBp
bnZhbGlkLgorCisgICAgICAgIEFsbCBIaXN0b3J5SXRlbS9XZWJCYWNrRm9yd2FyZExpc3RJdGVt
cyBub3cgbmVlZCB0byBiZSB1bmlxdWVseSBpZGVudGlmaWVkIGFjcm9zcyBhbGwgcHJvY2Vzc2Vz
LAorICAgICAgICBubyBtYXR0ZXIgd2hpY2ggcHJvY2VzcyB0aGV5IG9yaWdpbmF0ZWQgZnJvbSwg
c28gdGhlcmUgd2lsbCBuZXZlciBiZSBhIGNvbGxpc2lvbiBpbiB0aGUgVUlQcm9jZXNzLgorCisg
ICAgICAgIFRoaXMgYWxsb3dzIHVzIHRvOgorICAgICAgICAtIEhhdmUgdGhlIFVJUHJvY2VzcyB0
byBrZWVwIGEgc2luZ2xlIHByb2Nlc3Mtd2lkZSBtYXAgb2YgYWxsIFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW1zCisgICAgICAgIC0gR2V0IHJpZCBvZiB0aGUgcGVyLVdlYlByb2Nlc3MgV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSBtYXAKKyAgICAgICAgLSBTaW1wbGlmeSBhIGxvdCBvZiBXZWJCYWNrRm9y
d2FyZExpc3QoUHJveHkpIGNvZGUgdGhhdCBubyBsb25nZXIgbmVlZHMgdG8ga2VlcCB0aGF0IHBl
ci1wcm9jZXNzCisgICAgICAgICAgbWFwIGluIHN5bmMKKyAgICAgICAgLSBHZXQgcmlkIG9mIGEg
bG90IG9mIG90aGVyIGFuY2lsbGFyeSBjb2RlCisKKyAgICAgICAgKiBTaGFyZWQvU2Vzc2lvblN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOjpkZWNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9TZXNzaW9uU3RhdGUuaDoKKworICAgICAgICAqIFNoYXJl
ZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0Zv
cndhcmRMaXN0SXRlbTo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06On5XZWJCYWNrRm9yd2FyZExpc3RJdGVtKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUZvcklEKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aGlnaGVzdFVzZWRJdGVtSUQpOiBEZWxl
dGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisgICAgICAg
IChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06Oml0ZW1JRCBjb25zdCk6CisKKyAgICAg
ICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExp
c3Q6Oml0ZW1Gb3JJRCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6cGFn
ZUNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9yZUZyb21TdGF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlV2ViQmFja0ZvcndhcmRJdGVtSUQpOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuaDoKKworICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6Om1heWJlQ3JlYXRlU3VzcGVuZGVkUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVzdG9yZUZyb21TZXNzaW9uU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmJhY2tGb3J3YXJkQWRkSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6YmFja0ZvcndhcmRHb1RvSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
YmFja0ZvcndhcmRJdGVtQXRJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpiYWNr
Rm9yd2FyZFJlbW92ZWRJdGVtKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOiBFeHBsaWNpdGx5IHNldCB0aGUgVUlQ
cm9jZXNzIFByb2Nlc3M6OklkZW50aWZpZXIgc28gaXQgc3RhcnRzCisgICAgICAgICAgYXQgIjEi
IGFuZCB0aGVuIHRoZSBmaXJzdCBjaGlsZCBwcm9jZXNzIHN0YXJ0cyBhdCAiMiIsIGV0YyBldGMu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpjaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZUJhY2tGb3J3YXJkSXRlbSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6d2ViQmFja0ZvcndhcmRJdGVtIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3Rlck5ld1dl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OnJlbW92ZUJhY2tGb3J3YXJkSXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6YWRkT3JVcGRhdGVCYWNrRm9yd2FyZEl0ZW0pOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6dG9CYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjphcHBs
eUZyYW1lU3RhdGUpOgorICAgICAgICAoV2ViS2l0Ojp0b0hpc3RvcnlJdGVtKToKKyAgICAgICAg
KFdlYktpdDo6dG9QYWdlU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5oOgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRHb1RvSGlzdG9yeUl0ZW0gY29uc3Qp
OgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW1G
cm9tVUlQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V0syTm90aWZ5SGlzdG9yeUl0ZW1DaGFu
Z2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Oml0ZW1Gb3JJ
RCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpyZW1vdmVJdGVt
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW0pOiBQ
cmV2aW91c2x5IHRoaXMgd2FzIGEgdHdvLXN0ZXAgcHJvY2VzcyBvZiBhZGRpbmcgYW4gaXRlbQor
ICAgICAgICAgIHRvIHRoZSBwcm9jZXNzIGFuZCB0aGVuIGFzc29jaWF0aW5nIGl0IHdpdGggdGhl
IHBhZ2UuIE5vdyBpdCdzIGp1c3QgZGlyZWN0bHkgYWRkaW5nIGl0IHRvIHRoZSBwYWdlLAorICAg
ICAgICAgIHNvIHdlIGRvbid0IG5lZWQgdG8gY2FsbCB1cGRhdGVCYWNrRm9yd2FyZEl0ZW0gZmly
c3QuCisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5Ojpnb1RvSXRlbSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppdGVtQXRJbmRleCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpjbG9zZSk6CisgICAg
ICAgIChXZWJLaXQ6Omhpc3RvcnlJdGVtVG9JRE1hcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OmdlbmVyYXRlSGlzdG9yeUl0ZW1JRCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YkJhY2tGb3J3YXJkTGlzdFByb3h5OjpzZXRIaWdoZXN0SXRlbUlERnJvbVVJUHJvY2Vzcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OnVwZGF0ZUJhY2tGb3J3YXJkSXRlbSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppZEZvckl0ZW0pOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQ
cm94eS5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjptX2NyZWRlbnRpYWxzTWVzc2VuZ2VyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnJlc3RvcmVTZXNzaW9uSW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRS
ZW1vdmVCYWNrRm9yd2FyZEl0ZW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46
CisKIDIwMTgtMDQtMTggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEFsbG93IFNhbWVPcmlnaW4gY3JlZGVudGlhbHMgaGFuZGxpbmcgZm9yIHN5bmNocm9ub3Vz
IFhIUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGVidWdVdGlsaXRpZXMuaCBiL1NvdXJj
ZS9XVEYvd3RmL0RlYnVnVXRpbGl0aWVzLmgKaW5kZXggYTQ0MWI1Y2RlOGJkMzQ4NjU4YjE4YzE1
MmY5NTViNDU5MGNmZjhiNC4uZGIzZDU2NjViZGE1YzA3MWM0ODU4ZWM2MjZhNmQxMjEzZDNkY2Y5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGVidWdVdGlsaXRpZXMuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9EZWJ1Z1V0aWxpdGllcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGUuaD4KIApAQCAtNDIsNiArNDMsMTIgQEAgZG8geyBcCiAKIG5hbWVzcGFj
ZSBXVEYgewogCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlPgorY29uc3QgY2hhciogZGVi
dWdTdHJpbmcoU3RyaW5nVHlwZSBzdHJpbmcpCit7CisgICAgcmV0dXJuIGRlYnVnU3RyaW5nKHN0
cmluZywgIiIpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBTdHJpbmdUeXBlcz4KIGNvbnN0
IGNoYXIqIGRlYnVnU3RyaW5nKFN0cmluZ1R5cGVzLi4uIHN0cmluZ3MpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDFkY2Qz
ZWVkZmFhNzU1ZTA2M2M2ZTc5ZjM5ODUwNDcxY2YzM2FiNC4uMDM5MTQ4OTUyMmE3OTAyZjA2NzM4
YzgxMDQ0Mzg2OWI0ZTA1NzliYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ2Niw2ICsxNDY2LDcgQEAKIAkJNTE5REJDNzIx
REMxMEY1MjAwMzI5QkY1IC8qIElEQkdldEFsbFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE5REJDNzExREMxMEQzMzAwMzI5QkY1IC8qIElE
QkdldEFsbFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUxQTA1MjMzMTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBMDUyMzEx
MDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFBMDUyNTYxMDU4ODc0MDAwQ0M5RTk1
IC8qIFByb3RlY3Rpb25TcGFjZUhhc2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQTA1MjU1MTA1ODg3NDAwMENDOUU5NSAvKiBQcm90ZWN0aW9uU3Bh
Y2VIYXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNTFBMUI4N0QyMDg3QzRDMDAwOTc5QTc1IC8qIEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTFCODdC
MjA4N0M0QjgwMDk3OUE3NSAvKiBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFBNEJCMEExOTU0RDYx
NjAwRkE1QzJFIC8qIEdhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFBNEJCMDcxOTU0RDYxNjAwRkE1QzJFIC8qIEdhbWVwYWQuY3BwICov
OyB9OwogCQk1MUE0QkIxMDE5NTRENjI3MDBGQTVDMkUgLyogTmF2aWdhdG9yR2FtZXBhZC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE0QkIwRDE5
NTRENjI3MDBGQTVDMkUgLyogTmF2aWdhdG9yR2FtZXBhZC5jcHAgKi87IH07CiAJCTUxQTc0OEUz
MjAwNUQwRTgwMDc1QkE2OCAvKiBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBNzQ4RTAyMDA1RDBFMDAwNzVC
QTY4IC8qIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc5NTQsNiArNzk1NSw3IEBACiAJCTUxQTA1MjMx
MTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDcmVkZW50aWFsU3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUEwNTIzMjEwNTg3NzRGMDBDQzlFOTUgLyogQ3JlZGVudGlhbFN0b3JhZ2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3JlZGVudGlhbFN0b3Jh
Z2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUEwNTI1NTEwNTg4NzQwMDBD
QzlFOTUgLyogUHJvdGVjdGlvblNwYWNlSGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQcm90ZWN0aW9uU3BhY2VIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxQTFCODdCMjA4N0M0QjgwMDk3OUE3NSAvKiBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBNEJCMDcxOTU0RDYxNjAw
RkE1QzJFIC8qIEdhbWVwYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR2FtZXBhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQTRCQjA4MTk1
NEQ2MTYwMEZBNUMyRSAvKiBHYW1lcGFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdhbWVwYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBNEJCMDkxOTU0
RDYxNjAwRkE1QzJFIC8qIEdhbWVwYWQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdhbWVw
YWQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc1ODYsNiArMTc1ODgsNyBA
QAogCQkJCTUxNzQxRDBCMEIwNzI1OUEwMEVENDQyQyAvKiBCYWNrRm9yd2FyZENsaWVudC5oICov
LAogCQkJCUJDQThDODFEMTFFM0QzNjkwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZENvbnRyb2xsZXIu
Y3BwICovLAogCQkJCUJDQThDODFDMTFFM0QzNjkwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZENvbnRy
b2xsZXIuaCAqLywKKwkJCQk1MUExQjg3QjIwODdDNEI4MDA5NzlBNzUgLyogQmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllci5oICovLAogCQkJCTUxQzBBQTQwMEYyQUExNUUwMDE2NDhDMiAvKiBDYWNo
ZWRGcmFtZS5jcHAgKi8sCiAJCQkJNTFDMEFBMzgwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZy
YW1lLmggKi8sCiAJCQkJNTFDQkZDOTgwRDEwRTQ4MzAwMkRCRjUxIC8qIENhY2hlZEZyYW1lUGxh
dGZvcm1EYXRhLmggKi8sCkBAIC0yNjkyMiw2ICsyNjkyNSw3IEBACiAJCQkJOTFDOUYyRjkxQUUz
QkVCMDAwOTVCNjFDIC8qIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTc0MUQwRjBCMDcyNTlBMDBFRDQ0MkMgLyogQmFja0ZvcndhcmRDbGllbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDQThDODFFMTFFM0QzNjkwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZENv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQTFCODdEMjA4N0M0QzAwMDk3OUE3NSAv
KiBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzEyNEVF
ODBDMjY0MUNEMDA5RTIzNDkgLyogQmFyUHJvcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDYwQkI2
MTYxRDBBMUJGMDAwMjIxODEyIC8qIEJhc2U2NFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzc5RTYxQ0ExMjZDQTVDNDAwQjYzRThEIC8qIEJhc2VCdXR0b25JbnB1dFR5cGUuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDkxOWNmNDA2ODgwODM1ZDllOWFjZWFhZjIyMDZm
Y2ViZmYxMDA4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyLmgKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlByb2Nlc3MuaCIKKyNpbmNsdWRlIDx3dGYvRGVidWdV
dGlsaXRpZXMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXIgeworICAgIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVy
OworICAgIGVudW0gSXRlbUlkZW50aWZpZXJUeXBlIHsgfTsKKyAgICBPYmplY3RJZGVudGlmaWVy
PEl0ZW1JZGVudGlmaWVyVHlwZT4gaXRlbUlkZW50aWZpZXI7CisKKyAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3Q7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKKworI2lm
ICFMT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dTdHJpbmcoKSBjb25zdDsKKyNlbmRp
ZgorfTsKKworI2lmICFMT0dfRElTQUJMRUQKK2lubGluZSBjb25zdCBjaGFyKiBCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyOjpsb2dTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBkZWJ1Z1N0
cmluZyhTdHJpbmc6Om51bWJlcihwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKSwgIi0iLCBT
dHJpbmc6Om51bWJlcihpdGVtSWRlbnRpZmllci50b1VJbnQ2NCgpKSk7Cit9CisjZW5kaWYKKwor
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBh
LCBjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBiKQoreworICAgIHJldHVybiBhLnBy
b2Nlc3NJZGVudGlmaWVyID09IGIucHJvY2Vzc0lkZW50aWZpZXIgJiYgIGEuaXRlbUlkZW50aWZp
ZXIgPT0gYi5pdGVtSWRlbnRpZmllcjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3Zv
aWQgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Cit7CisgICAgZW5jb2RlciA8PCBwcm9jZXNzSWRlbnRpZmllciA8PCBpdGVtSWRlbnRpZmll
cjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8QmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllcj4gQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxQcm9jZXNzSWRlbnRpZmllcj4gcHJv
Y2Vzc0lkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBwcm9jZXNzSWRlbnRpZmllcjsKKyAgICBp
ZiAoIXByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgc3RkOjpvcHRpb25hbDxPYmplY3RJZGVudGlmaWVyPEl0ZW1JZGVudGlmaWVyVHlwZT4+IGl0
ZW1JZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gaXRlbUlkZW50aWZpZXI7CisgICAgaWYgKCFp
dGVtSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVy
biB7IHsgV1RGTW92ZSgqcHJvY2Vzc0lkZW50aWZpZXIpLCBXVEZNb3ZlKCppdGVtSWRlbnRpZmll
cikgfSB9OworfQorCitpbmxpbmUgdW5zaWduZWQgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6
aGFzaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbXB1dGVIYXNoKHByb2Nlc3NJZGVudGlmaWVy
LnRvVUludDY0KCksIGl0ZW1JZGVudGlmaWVyLnRvVUludDY0KCkpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCitzdHJ1Y3QgQmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllckhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYkNvcmU6
OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQor
ICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXImIGEsIGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGIpIHsg
cmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0Vt
cHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8
V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gOiBHZW5lcmljSGFzaFRyYWl0czxX
ZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiB7CisgICAgc3RhdGljIFdlYkNvcmU6
OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHsgfTsgfQor
CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OkJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXImIHNsb3QpIHsgc2xvdC5wcm9jZXNzSWRlbnRpZmllciA9IE9iamVj
dElkZW50aWZpZXI8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXJUeXBlPjo6aGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCk7IH0KKworICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdl
YkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIHNsb3QpIHsgcmV0dXJuIHNsb3QucHJv
Y2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90
Pjo6bWF4KCk7IH0KK307CisKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6
OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+IHsKKyAgICB0eXBlZGVmIEJhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXJIYXNoIEhhc2g7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKaW5kZXggOWQ4Njg5ODhhZDBlZGFlMDBkOTVmODQy
ZmQzODIzMjRkZjlmNTU4NC4uYTViYTk1ZTQzNTY2NDNjYjdlZjMyMzdhZTYyMmNlMzg3OGU2Njc3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKQEAgLTQwLDcgKzQwLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgbG9uZyBsb25nIGdlbmVyYXRlU2Vx
dWVuY2VOdW1iZXIoKQoraW50NjRfdCBIaXN0b3J5SXRlbTo6Z2VuZXJhdGVTZXF1ZW5jZU51bWJl
cigpCiB7CiAgICAgLy8gSW5pdGlhbGl6ZSB0byB0aGUgY3VycmVudCB0aW1lIHRvIHJlZHVjZSB0
aGUgbGlrZWxpaG9vZCBvZiBnZW5lcmF0aW5nCiAgICAgLy8gaWRlbnRpZmllcnMgdGhhdCBvdmVy
bGFwIHdpdGggdGhvc2UgZnJvbSBwYXN0L2Z1dHVyZSBicm93c2VyIHNlc3Npb25zLgpAQCAtNTUs
MzEgKzU1LDI3IEBAIHN0YXRpYyB2b2lkIGRlZmF1bHROb3RpZnlIaXN0b3J5SXRlbUNoYW5nZWQo
SGlzdG9yeUl0ZW0qKQogV0VCQ09SRV9FWFBPUlQgdm9pZCAoKm5vdGlmeUhpc3RvcnlJdGVtQ2hh
bmdlZCkoSGlzdG9yeUl0ZW0qKSA9IGRlZmF1bHROb3RpZnlIaXN0b3J5SXRlbUNoYW5nZWQ7CiAK
IEhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbSgpCi0gICAgOiBtX2l0ZW1TZXF1ZW5jZU51bWJlcihn
ZW5lcmF0ZVNlcXVlbmNlTnVtYmVyKCkpCi0gICAgLCBtX2RvY3VtZW50U2VxdWVuY2VOdW1iZXIo
Z2VuZXJhdGVTZXF1ZW5jZU51bWJlcigpKQotICAgICwgbV9wcnVuaW5nUmVhc29uKFBydW5pbmdS
ZWFzb246Ok5vbmUpCisgICAgOiBIaXN0b3J5SXRlbSh7IH0sIHsgfSkKIHsKIH0KIAogSGlzdG9y
eUl0ZW06Okhpc3RvcnlJdGVtKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHRpdGxlKQotICAgIDogbV91cmxTdHJpbmcodXJsU3RyaW5nKQotICAgICwgbV9vcmlnaW5hbFVS
TFN0cmluZyh1cmxTdHJpbmcpCi0gICAgLCBtX3RpdGxlKHRpdGxlKQotICAgICwgbV9pdGVtU2Vx
dWVuY2VOdW1iZXIoZ2VuZXJhdGVTZXF1ZW5jZU51bWJlcigpKQotICAgICwgbV9kb2N1bWVudFNl
cXVlbmNlTnVtYmVyKGdlbmVyYXRlU2VxdWVuY2VOdW1iZXIoKSkKLSAgICAsIG1fcHJ1bmluZ1Jl
YXNvbihQcnVuaW5nUmVhc29uOjpOb25lKQorICAgIDogSGlzdG9yeUl0ZW0odXJsU3RyaW5nLCB0
aXRsZSwgeyB9KQogewogfQogCiBIaXN0b3J5SXRlbTo6SGlzdG9yeUl0ZW0oY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRl
VGl0bGUpCisgICAgOiBIaXN0b3J5SXRlbSh1cmxTdHJpbmcsIHRpdGxlLCBhbHRlcm5hdGVUaXRs
ZSwgeyBQcm9jZXNzOjppZGVudGlmaWVyKCksIGdlbmVyYXRlT2JqZWN0SWRlbnRpZmllcjxCYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyOjpJdGVtSWRlbnRpZmllclR5cGU+KCkgfSkKK3sKK30KKwor
SGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGFsdGVybmF0ZVRpdGxlLCBCYWNrRm9yd2FyZEl0
ZW1JZGVudGlmaWVyIEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIpCiAgICAgOiBtX3VybFN0cmlu
Zyh1cmxTdHJpbmcpCiAgICAgLCBtX29yaWdpbmFsVVJMU3RyaW5nKHVybFN0cmluZykKICAgICAs
IG1fdGl0bGUodGl0bGUpCiAgICAgLCBtX2Rpc3BsYXlUaXRsZShhbHRlcm5hdGVUaXRsZSkKLSAg
ICAsIG1fcGFnZVNjYWxlRmFjdG9yKDApCi0gICAgLCBtX2l0ZW1TZXF1ZW5jZU51bWJlcihnZW5l
cmF0ZVNlcXVlbmNlTnVtYmVyKCkpCi0gICAgLCBtX2RvY3VtZW50U2VxdWVuY2VOdW1iZXIoZ2Vu
ZXJhdGVTZXF1ZW5jZU51bWJlcigpKQogICAgICwgbV9wcnVuaW5nUmVhc29uKFBydW5pbmdSZWFz
b246Ok5vbmUpCisgICAgLCBtX2lkZW50aWZpZXIoQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcikK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5o
IGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCmluZGV4IDRkMWUyY2RkNzQ2
MTJmNDhjY2YyMmY3NDFjZjk5NTQ3N2M4YTU2Y2YuLmVlNDY2YzdmMTRkMWJmOGU3NGMwOTVmMTI2
Y2I5YTc1YTY1ZjdlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9y
eUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKQEAgLTI2
LDYgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJCYWNrRm9yd2FyZEl0ZW1J
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXJUeXBlcy5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCkBAIC02MiwyMCArNjMsMzIgQEAgY2xh
c3MgSGlzdG9yeUl0ZW0gOiBwdWJsaWMgUmVmQ291bnRlZDxIaXN0b3J5SXRlbT4gewogICAgIGZy
aWVuZCBjbGFzcyBQYWdlQ2FjaGU7CiAKIHB1YmxpYzogCi0gICAgc3RhdGljIFJlZjxIaXN0b3J5
SXRlbT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBIaXN0b3J5SXRlbSk7IH0KKyAg
ICBzdGF0aWMgUmVmPEhpc3RvcnlJdGVtPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSGlzdG9yeUl0ZW0pOworICAgIH0KKwogICAgIHN0YXRpYyBSZWY8SGlz
dG9yeUl0ZW0+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiB0
aXRsZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhpc3RvcnlJdGVtKHVy
bFN0cmluZywgdGl0bGUpKTsKICAgICB9CisKICAgICBzdGF0aWMgUmVmPEhpc3RvcnlJdGVtPiBj
cmVhdGUoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0
IFN0cmluZyYgYWx0ZXJuYXRlVGl0bGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBIaXN0b3J5SXRlbSh1cmxTdHJpbmcsIHRpdGxlLCBhbHRlcm5hdGVUaXRsZSkpOwogICAg
IH0KKworICAgIHN0YXRpYyBSZWY8SGlzdG9yeUl0ZW0+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVy
bFN0cmluZywgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGVUaXRs
ZSwgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSGlzdG9yeUl0ZW0odXJsU3RyaW5nLCB0aXRsZSwgYWx0ZXJu
YXRlVGl0bGUsIGlkZW50aWZpZXIpKTsKKyAgICB9CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQg
fkhpc3RvcnlJdGVtKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8SGlzdG9yeUl0ZW0+IGNv
cHkoKSBjb25zdDsKIAorICAgIGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKwogICAgIC8vIFJlc2V0cyB0
aGUgSGlzdG9yeUl0ZW0gdG8gaXRzIGluaXRpYWwgc3RhdGUsIGFzIHJldHVybmVkIGJ5IGNyZWF0
ZSgpLgogICAgIHZvaWQgcmVzZXQoKTsKICAgICAKQEAgLTIwNiw5ICsyMTksMTIgQEAgcHJpdmF0
ZToKICAgICBXRUJDT1JFX0VYUE9SVCBIaXN0b3J5SXRlbSgpOwogICAgIFdFQkNPUkVfRVhQT1JU
IEhpc3RvcnlJdGVtKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxl
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBIaXN0b3J5SXRlbShjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZywgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGVUaXRsZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRlVGl0bGUsIEJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXIpOwogCiAgICAgSGlzdG9yeUl0ZW0oY29uc3QgSGlzdG9yeUl0ZW0m
KTsKIAorICAgIHN0YXRpYyBpbnQ2NF90IGdlbmVyYXRlU2VxdWVuY2VOdW1iZXIoKTsKKwogICAg
IGJvb2wgaGFzU2FtZURvY3VtZW50VHJlZShIaXN0b3J5SXRlbSYgb3RoZXJJdGVtKSBjb25zdDsK
IAogICAgIFN0cmluZyBtX3VybFN0cmluZzsKQEAgLTIzNSwxMiArMjUxLDEyIEBAIHByaXZhdGU6
CiAgICAgLy8gY2xvbmVzIG9mIG9uZSBhbm90aGVyLiAgVHJhdmVyc2luZyBoaXN0b3J5IGZyb20g
b25lIHN1Y2ggSGlzdG9yeUl0ZW0gdG8KICAgICAvLyBhbm90aGVyIGlzIGEgbm8tb3AuICBIaXN0
b3J5SXRlbSBjbG9uZXMgYXJlIGNyZWF0ZWQgZm9yIHBhcmVudCBhbmQKICAgICAvLyBzaWJsaW5n
IGZyYW1lcyB3aGVuIG9ubHkgYSBzdWJmcmFtZSBuYXZpZ2F0ZXMuCi0gICAgaW50NjRfdCBtX2l0
ZW1TZXF1ZW5jZU51bWJlcjsKKyAgICBpbnQ2NF90IG1faXRlbVNlcXVlbmNlTnVtYmVyIHsgZ2Vu
ZXJhdGVTZXF1ZW5jZU51bWJlcigpIH07CiAKICAgICAvLyBJZiB0d28gSGlzdG9yeUl0ZW1zIGhh
dmUgdGhlIHNhbWUgZG9jdW1lbnQgc2VxdWVuY2UgbnVtYmVyLCB0aGVuIHRoZXkKICAgICAvLyBy
ZWZlciB0byB0aGUgc2FtZSBpbnN0YW5jZSBvZiBhIGRvY3VtZW50LiAgVHJhdmVyc2luZyBoaXN0
b3J5IGZyb20gb25lCiAgICAgLy8gc3VjaCBIaXN0b3J5SXRlbSB0byBhbm90aGVyIHByZXNlcnZl
cyB0aGUgZG9jdW1lbnQuCi0gICAgaW50NjRfdCBtX2RvY3VtZW50U2VxdWVuY2VOdW1iZXI7Cisg
ICAgaW50NjRfdCBtX2RvY3VtZW50U2VxdWVuY2VOdW1iZXIgeyBnZW5lcmF0ZVNlcXVlbmNlTnVt
YmVyKCkgfTsKIAogICAgIC8vIFN1cHBvcnQgZm9yIEhUTUw1IEhpc3RvcnkKICAgICBSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX3N0YXRlT2JqZWN0OwpAQCAtMjY4LDYgKzI4NCw4IEBA
IHByaXZhdGU6CiAgICAgUmV0YWluUHRyPGlkPiBtX3ZpZXdTdGF0ZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SGFzaE1hcDxTdHJpbmcsIFJldGFpblB0cjxpZD4+PiBtX3RyYW5zaWVudFByb3BlcnRp
ZXM7CiAjZW5kaWYKKworICAgIEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgbV9pZGVudGlmaWVy
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25T
dGF0ZS5jcHAKaW5kZXggOTExZDJlNzM3NzhjOWVmNWFhOGY1YjMyMzljZGJjOGQ1NDEyNjIyOC4u
ZDc3YmJlN2M1ZjRkMjU4OWE1M2I5Y2NjMzcxNzc1ZmNkNGQ3NmE2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TZXNzaW9uU3RhdGUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU2Vzc2lv
blN0YXRlLmgiCiAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0JhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKQEAgLTIzMiw4ICsyMzMsMTAgQEAgc3RkOjpvcHRpb25hbDxCYWNrRm9yd2Fy
ZExpc3RJdGVtU3RhdGU+IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZTo6ZGVjb2RlKElQQzo6RGUK
IHsKICAgICBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgcmVzdWx0OwogCi0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuaWRlbnRpZmllcikpCisgICAgYXV0byBpZGVudGlmaWVyID0gQmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6ZGVjb2RlKGRlY29kZXIpOworICAgIGlmICghaWRlbnRp
ZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXN1bHQuaWRlbnRpZmll
ciA9ICppZGVudGlmaWVyOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucGFnZVN0
YXRlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lv
blN0YXRlLmgKaW5kZXggMTQ4MjE0NDVjODdmZTQzMzU1Nzk2MmJjYjM0OTkzZTUxZDJmMmFmZS4u
ZGIzZGZkYTg1NGNhZjE3ODBjMmRlZjgxNzZhMTJmNzk5Yjg1MThhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2Vzc2lvblN0YXRlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJWaWV3U25hcHNo
b3RTdG9yZS5oIgogI2VuZGlmCiAKKyNpbmNsdWRlIDxXZWJDb3JlL0JhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgpA
QCAtMTI3LDcgKzEyOCw3IEBAIHN0cnVjdCBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgewogICAg
IHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCi0g
ICAgdWludDY0X3QgaWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVu
dGlmaWVyIGlkZW50aWZpZXI7CiAKICAgICBQYWdlU3RhdGUgcGFnZVN0YXRlOwogI2lmIFBMQVRG
T1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0Zvcndh
cmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJ
dGVtLmNwcAppbmRleCAxYWNkNWRkY2E1ZTg5YTUzMTEyODE4NzdiZjA5MDVlYThhMTdiMjliLi5h
NzM4YzdkYTMzYmMxMzM1MjQ2ZGY4MWRhZDNiYWQyYzU1OGI4ZjU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtMjgsOSArMjgsOSBA
QAogCiAjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7Cit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIHVpbnQ2NF90IGhpZ2hlc3RJdGVtSUQgPSAw
OworbmFtZXNwYWNlIFdlYktpdCB7CiAKIFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBXZWJC
YWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFj
a0ZvcndhcmRMaXN0SXRlbVN0YXRlLCB1aW50NjRfdCBwYWdlSUQpCiB7CkBAIC00MSwxMiArNDEs
MjUgQEAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbShCYWNr
Rm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm8KICAgICA6IG1faXRlbVN0YXRlKFdURk1vdmUo
YmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSkKICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKIHsKLSAg
ICBpZiAobV9pdGVtU3RhdGUuaWRlbnRpZmllciA+IGhpZ2hlc3RJdGVtSUQpCi0gICAgICAgIGhp
Z2hlc3RJdGVtSUQgPSBtX2l0ZW1TdGF0ZS5pZGVudGlmaWVyOworICAgIGF1dG8gcmVzdWx0ID0g
YWxsSXRlbXMoKS5hZGQobV9pdGVtU3RhdGUuaWRlbnRpZmllciwgdGhpcyk7CisgICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAogV2ViQmFja0ZvcndhcmRM
aXN0SXRlbTo6fldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oKQogeworICAgIEFTU0VSVChhbGxJdGVt
cygpLmdldChtX2l0ZW1TdGF0ZS5pZGVudGlmaWVyKSA9PSB0aGlzKTsKKyAgICBhbGxJdGVtcygp
LnJlbW92ZShtX2l0ZW1TdGF0ZS5pZGVudGlmaWVyKTsKK30KKworSGFzaE1hcDxCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKj4mIFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW06OmFsbEl0ZW1zKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1h
cDxCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKj4+IGl0
ZW1zOworICAgIHJldHVybiBpdGVtczsKK30KKworV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUZvcklEKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXImIGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIGFsbEl0ZW1zKCkuZ2V0KGlkZW50aWZp
ZXIpOwogfQogCiBzdGF0aWMgY29uc3QgRnJhbWVTdGF0ZSogY2hpbGRJdGVtV2l0aERvY3VtZW50
U2VxdWVuY2VOdW1iZXIoY29uc3QgRnJhbWVTdGF0ZSYgZnJhbWVTdGF0ZSwgaW50NjRfdCBudW1i
ZXIpCkBAIC05OCwxMSArMTExLDYgQEAgYm9vbCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjppdGVt
SXNJblNhbWVEb2N1bWVudChjb25zdCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJgogICAgIHJldHVy
biBkb2N1bWVudFRyZWVzQXJlRXF1YWwobWFpbkZyYW1lU3RhdGUsIG90aGVyTWFpbkZyYW1lU3Rh
dGUpOwogfQogCi11aW50NjRfdCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpoaWdoZXN0VXNlZEl0
ZW1JRCgpCi17Ci0gICAgcmV0dXJuIGhpZ2hlc3RJdGVtSUQ7Ci19Ci0KIHZvaWQgV2ViQmFja0Zv
cndhcmRMaXN0SXRlbTo6c2V0U3VzcGVuZGVkUGFnZShTdXNwZW5kZWRQYWdlUHJveHkmIHBhZ2Up
CiB7CiAgICAgbV9zdXNwZW5kZWRQYWdlID0gJnBhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKaW5kZXggNGVhMmNhNzAxMDY1YzEwY2U3ZjAxMTJk
Njc2MzYxY2ExOTU2ZDlmOS4uM2MxY2MyOTliMWI4YjFlYzM1ZDhjNGM0MDlhNmQzMjI1MzBjMDBl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRl
bS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaApA
QCAtNDgsNyArNDgsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViQmFja0ZvcndhcmRM
aXN0SXRlbT4gY3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50NjRfdCBwYWdl
SUQpOwogICAgIHZpcnR1YWwgfldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oKTsKIAotICAgIHVpbnQ2
NF90IGl0ZW1JRCgpIGNvbnN0IHsgcmV0dXJuIG1faXRlbVN0YXRlLmlkZW50aWZpZXI7IH0KKyAg
ICBzdGF0aWMgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbUZvcklEKGNvbnN0IFdlYkNvcmU6
OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImKTsKKyAgICBzdGF0aWMgSGFzaE1hcDxXZWJDb3Jl
OjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKj4mIGFs
bEl0ZW1zKCk7CisKKyAgICBjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
JiBpdGVtSUQoKSBjb25zdCB7IHJldHVybiBtX2l0ZW1TdGF0ZS5pZGVudGlmaWVyOyB9CiAgICAg
Y29uc3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiBpdGVtU3RhdGUoKSB7IHJldHVybiBtX2l0
ZW1TdGF0ZTsgfQogICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlE
OyB9CiAKQEAgLTY3LDggKzcwLDYgQEAgcHVibGljOgogI2VuZGlmCiAgICAgdm9pZCBzZXRTdXNw
ZW5kZWRQYWdlKFN1c3BlbmRlZFBhZ2VQcm94eSYpOwogCi0gICAgc3RhdGljIHVpbnQ2NF90IGhp
Z2hlc3RVc2VkSXRlbUlEKCk7Ci0KIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViQmFja0Zvcndh
cmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiwgdWludDY0X3QgcGFnZUlEKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAppbmRleCAyNjMwMzRhNDc5MjIxMGJjMWMwOGRlZjhjZTZkN2M2NDJjNWJmNzM3Li4zY2Zl
M2IyZTViMTQyNTkxY2E2NmE4MjI4YjkyMjkwMzdjMGUzMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNTMsNyArNTMs
NiBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCB1c2VyQWdlbnQ7CiAgICAgZW5jb2RlciA8
PCBpdGVtU3RhdGVzOwogICAgIGVuY29kZXIgPDwgc2Vzc2lvbklEOwotICAgIGVuY29kZXIgPDwg
aGlnaGVzdFVzZWRCYWNrRm9yd2FyZEl0ZW1JRDsKICAgICBlbmNvZGVyIDw8IHVzZXJDb250ZW50
Q29udHJvbGxlcklELnRvVUludDY0KCk7CiAgICAgZW5jb2RlciA8PCB2aXNpdGVkTGlua1RhYmxl
SUQ7CiAgICAgZW5jb2RlciA8PCB3ZWJzaXRlRGF0YVN0b3JlSUQ7CkBAIC0xNzcsOCArMTc2LDYg
QEAgc3RkOjpvcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjoKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFy
YW1ldGVycy5zZXNzaW9uSUQpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5oaWdoZXN0VXNlZEJhY2tGb3J3YXJkSXRlbUlE
KSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiB1
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGJhZWJhZjRkNDEwMDg5NjVhNTZm
NGMxYzNmMjFhY2U4NzNlYTQzMjYuLjU3M2UxNzkzMmJlMmZmYjNkYzc3MzFlOGExMjQ1ZDFjM2M3
ODhjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmgKQEAgLTk2LDcgKzk2LDYgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMgewogCiAgICAgVmVjdG9yPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4gaXRlbVN0YXRlczsK
ICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQ7Ci0gICAgdWludDY0X3QgaGlnaGVzdFVzZWRC
YWNrRm9yd2FyZEl0ZW1JRDsKIAogICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIg
dXNlckNvbnRlbnRDb250cm9sbGVySUQ7CiAgICAgdWludDY0X3QgdmlzaXRlZExpbmtUYWJsZUlE
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Vmlld1Nlc3Npb25TdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlLmNwcAppbmRleCA5Y2I1ZDkzMzU1MDVhODM4YjkwNDll
NDQ2ODAzZTQxNDI5YmNiODIwLi5kMDQ1MjZjODVjOTNkZmIwNzNkOWQ1Y2FmYmQzMGY1MTEwOWVl
YmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3U2Vzc2lvblN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlLmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2lu
Y2x1ZGUgIldlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUuaCIKIAogI2luY2x1ZGUgIldlYktpdFdl
YlZpZXdTZXNzaW9uU3RhdGVQcml2YXRlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KIApAQCAtMzQ0LDcgKzM0NSw3IEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCBkZWNvZGVCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUoR1ZhcmlhbnRJdGVyKiBi
YWNrRm9yd2FyZExpc3RTCiAgICAgdW5zaWduZWQgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eTsKICAgICB3aGlsZSAoZ192YXJpYW50X2l0ZXJfbG9vcChiYWNrRm9yd2FyZExpc3RTdGF0ZUl0
ZXIsIEJBQ0tfRk9SV0FSRF9MSVNUX0lURU1fRk9STUFUX1NUUklOR19WMSwgJmlkZW50aWZpZXIs
ICZ0aXRsZSwgJmZyYW1lU3RhdGVWYXJpYW50LCAmc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSkpIHsKICAgICAgICAgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIHN0YXRlOwotICAgICAgICBz
dGF0ZS5pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAgICAgICAgc3RhdGUuaWRlbnRpZmllciA9
IHsgUHJvY2Vzczo6aWRlbnRpZmllcigpLCBnZW5lcmF0ZU9iamVjdElkZW50aWZpZXI8QmFja0Zv
cndhcmRJdGVtSWRlbnRpZmllcjo6SXRlbUlkZW50aWZpZXJUeXBlPigpIH07CiAgICAgICAgIHN0
YXRlLnBhZ2VTdGF0ZS50aXRsZSA9IFN0cmluZzo6ZnJvbVVURjgodGl0bGUpOwogICAgICAgICBk
ZWNvZGVGcmFtZVN0YXRlKGZyYW1lU3RhdGVWYXJpYW50LCBzdGF0ZS5wYWdlU3RhdGUubWFpbkZy
YW1lU3RhdGUpOwogICAgICAgICBzdGF0ZS5wYWdlU3RhdGUuc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSA9IHRvV2ViQ29yZUV4dGVybmFsVVJMc1BvbGljeShzaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tG
b3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExp
c3QuY3BwCmluZGV4IDk5ODJkODE2MzcwYmZiYWViMTAxYTg3YjllNGE5OTgwZGI2Zjc2NjUuLmYw
YzM5NDFmYWQ3YWVhZWViODRiNWFhZTFmNWRlZmYxNTdmOGQ1MDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcApAQCAtMzYsMTkgKzM2LDYgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi0vLyBGSVhN
RTogTWFrZSB0aGlzIHN0YXRpYyBvbmNlIFdlYkJhY2tGb3J3YXJkTGlzdENGLmNwcCBpcyBubyBs
b25nZXIgdXNpbmcgaXQuCi11aW50NjRfdCBnZW5lcmF0ZVdlYkJhY2tGb3J3YXJkSXRlbUlEKCk7
Ci0KLXVpbnQ2NF90IGdlbmVyYXRlV2ViQmFja0ZvcndhcmRJdGVtSUQoKQotewotICAgIC8vIFRo
ZXNlIElEcyBleGlzdCBpbiB0aGUgVUlQcm9jZXNzIGZvciBpdGVtcyBjcmVhdGVkIGJ5IHRoZSBV
SVByb2Nlc3MuCi0gICAgLy8gVGhlIElEcyBnZW5lcmF0ZWQgaGVyZSBuZWVkIHRvIG5ldmVyIGNv
bGxpZGUgd2l0aCB0aGUgSURzIGNyZWF0ZWQgaW4gV2ViQmFja0ZvcndhcmRMaXN0UHJveHkgaW4g
dGhlIFdlYlByb2Nlc3MuCi0gICAgLy8gV2UgYWNjb21wbGlzaCB0aGlzIGJ5IHN0YXJ0aW5nIGZy
b20gMiwgYW5kIG9ubHkgZXZlciB1c2luZyBldmVuIGlkcy4KLSAgICBzdGF0aWMgdWludDY0X3Qg
dW5pcXVlSGlzdG9yeUl0ZW1JRCA9IDA7Ci0gICAgdW5pcXVlSGlzdG9yeUl0ZW1JRCArPSAyOwot
ICAgIHJldHVybiB1bmlxdWVIaXN0b3J5SXRlbUlEOwotfQotCiBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgRGVmYXVsdENhcGFjaXR5ID0gMTAwOwogCiBXZWJCYWNrRm9yd2FyZExpc3Q6OldlYkJhY2tG
b3J3YXJkTGlzdChXZWJQYWdlUHJveHkmIHBhZ2UpCkBAIC02NSw2ICs1MiwxOSBAQCBXZWJCYWNr
Rm9yd2FyZExpc3Q6On5XZWJCYWNrRm9yd2FyZExpc3QoKQogICAgIEFTU0VSVCgoIW1fcGFnZSAm
JiAhbV9oYXNDdXJyZW50SW5kZXgpIHx8ICFtX3BhZ2UtPmlzVmFsaWQoKSk7CiB9CiAKK1dlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0qIFdlYkJhY2tGb3J3YXJkTGlzdDo6aXRlbUZvcklEKGNvbnN0IEJh
Y2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGlkZW50aWZpZXIpCit7CisgICAgaWYgKCFtX3BhZ2Up
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byogaXRlbSA9IFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW06Oml0ZW1Gb3JJRChpZGVudGlmaWVyKTsKKyAgICBpZiAoIWl0ZW0pCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgQVNTRVJUKGl0ZW0tPnBhZ2VJRCgpID09IG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIHJldHVybiBpdGVtOworfQorCiB2b2lkIFdlYkJhY2tGb3J3YXJk
TGlzdDo6cGFnZUNsb3NlZCgpCiB7CiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYWx3YXlzIHN0YXJ0
ZWQgb3V0IHdpdGggYW4gbV9wYWdlIGFuZCB3ZSBzaG91bGQgbmV2ZXIgY2xvc2UgdGhlIHBhZ2Ug
dHdpY2UuCkBAIC03NiwxNiArNzYsMTYgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OnBhZ2VD
bG9zZWQoKQogICAgICAgICAgICAgZGlkUmVtb3ZlSXRlbShtX2VudHJpZXNbaV0pOwogICAgIH0K
IAotICAgIG1fcGFnZSA9IDA7CisgICAgbV9wYWdlID0gbnVsbHB0cjsKICAgICBtX2VudHJpZXMu
Y2xlYXIoKTsKICAgICBtX2hhc0N1cnJlbnRJbmRleCA9IGZhbHNlOwogfQogCi12b2lkIFdlYkJh
Y2tGb3J3YXJkTGlzdDo6YWRkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBuZXdJdGVtKQor
dm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0oUmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0+JiYgbmV3SXRlbSkKIHsKICAgICBBU1NFUlQoIW1faGFzQ3VycmVudEluZGV4IHx8IG1fY3Vy
cmVudEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKSk7CiAKLSAgICBpZiAoIW1fY2FwYWNpdHkgfHwg
IW5ld0l0ZW0gfHwgIW1fcGFnZSkKKyAgICBpZiAoIW1fY2FwYWNpdHkgfHwgIW1fcGFnZSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgVmVjdG9yPFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4g
cmVtb3ZlZEl0ZW1zOwpAQCAtMTM5LDIzICsxMzksMjQgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExp
c3Q6OmFkZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogbmV3SXRlbSkKICAgICAgICAgICAg
IG1fY3VycmVudEluZGV4Kys7CiAgICAgfQogCisgICAgYXV0byogbmV3SXRlbVB0ciA9IG5ld0l0
ZW0ucHRyKCk7CiAgICAgaWYgKCFzaG91bGRLZWVwQ3VycmVudEl0ZW0pIHsKICAgICAgICAgLy8g
bV9jdXJyZW50IHNob3VsZCBuZXZlciBiZSBwb2ludGluZyBwYXN0IHRoZSBlbmQgb2YgdGhlIGVu
dHJpZXMgVmVjdG9yLgogICAgICAgICAvLyBJZiBpdCBpcywgc29tZXRoaW5nIGhhcyBnb25lIHdy
b25nIGFuZCB3ZSBzaG91bGQgbm90IHRyeSB0byBzd2FwIGluIHRoZSBuZXcgaXRlbS4KICAgICAg
ICAgQVNTRVJUKG1fY3VycmVudEluZGV4IDwgbV9lbnRyaWVzLnNpemUoKSk7CiAKICAgICAgICAg
cmVtb3ZlZEl0ZW1zLmFwcGVuZChtX2VudHJpZXNbbV9jdXJyZW50SW5kZXhdLmNvcHlSZWYoKSk7
Ci0gICAgICAgIG1fZW50cmllc1ttX2N1cnJlbnRJbmRleF0gPSAqbmV3SXRlbTsKKyAgICAgICAg
bV9lbnRyaWVzW21fY3VycmVudEluZGV4XSA9IFdURk1vdmUobmV3SXRlbSk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgLy8gbV9jdXJyZW50IHNob3VsZCBuZXZlciBiZSBwb2ludGluZyBtb3JlIHRo
YW4gMSBwYXN0IHRoZSBlbmQgb2YgdGhlIGVudHJpZXMgVmVjdG9yLgogICAgICAgICAvLyBJZiBp
dCBpcywgc29tZXRoaW5nIGhhcyBnb25lIHdyb25nIGFuZCB3ZSBzaG91bGQgbm90IHRyeSB0byBp
bnNlcnQgdGhlIG5ldyBpdGVtLgogICAgICAgICBBU1NFUlQobV9jdXJyZW50SW5kZXggPD0gbV9l
bnRyaWVzLnNpemUoKSk7CiAKICAgICAgICAgaWYgKG1fY3VycmVudEluZGV4IDw9IG1fZW50cmll
cy5zaXplKCkpCi0gICAgICAgICAgICBtX2VudHJpZXMuaW5zZXJ0KG1fY3VycmVudEluZGV4LCAq
bmV3SXRlbSk7CisgICAgICAgICAgICBtX2VudHJpZXMuaW5zZXJ0KG1fY3VycmVudEluZGV4LCBX
VEZNb3ZlKG5ld0l0ZW0pKTsKICAgICB9CiAKLSAgICBtX3BhZ2UtPmRpZENoYW5nZUJhY2tGb3J3
YXJkTGlzdChuZXdJdGVtLCBXVEZNb3ZlKHJlbW92ZWRJdGVtcykpOworICAgIG1fcGFnZS0+ZGlk
Q2hhbmdlQmFja0ZvcndhcmRMaXN0KG5ld0l0ZW1QdHIsIFdURk1vdmUocmVtb3ZlZEl0ZW1zKSk7
CiB9CiAKIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0Ojpnb1RvSXRlbShXZWJCYWNrRm9yd2FyZExp
c3RJdGVtJiBpdGVtKQpAQCAtNDE4LDcgKzQxOSw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0
OjpyZXN0b3JlRnJvbVN0YXRlKEJhY2tGb3J3YXJkTGlzdFN0YXRlIGJhY2tGb3J3YXJkTGlzdFN0
CiAgICAgaXRlbXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShiYWNrRm9yd2FyZExpc3RTdGF0ZS5p
dGVtcy5zaXplKCkpOwogCiAgICAgZm9yIChhdXRvJiBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUg
OiBiYWNrRm9yd2FyZExpc3RTdGF0ZS5pdGVtcykgewotICAgICAgICBiYWNrRm9yd2FyZExpc3RJ
dGVtU3RhdGUuaWRlbnRpZmllciA9IGdlbmVyYXRlV2ViQmFja0ZvcndhcmRJdGVtSUQoKTsKKyAg
ICAgICAgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLmlkZW50aWZpZXIgPSB7IFByb2Nlc3M6Omlk
ZW50aWZpZXIoKSwgZ2VuZXJhdGVPYmplY3RJZGVudGlmaWVyPEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXI6Okl0ZW1JZGVudGlmaWVyVHlwZT4oKSB9OwogICAgICAgICBpdGVtcy51bmNoZWNrZWRB
cHBlbmQoV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKFdURk1vdmUoYmFja0ZvcndhcmRM
aXN0SXRlbVN0YXRlKSwgbV9wYWdlLT5wYWdlSUQoKSkpOwogICAgIH0KICAgICBtX2hhc0N1cnJl
bnRJbmRleCA9ICEhYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuaAppbmRleCBmY2RhZjAzZDNiMmZh
Yzg1MjRjYTg3MDM4YzYzOTM0NTE5MzEwOTNiLi4yOGZjZWEzMWQyZGJjOGY0N2YyZTRkMmNhMzUx
NWQyYzliMjE0Zjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNr
Rm9yd2FyZExpc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2Fy
ZExpc3QuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1
ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0JhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00NSw3ICs0Niw5IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfldlYkJhY2tGb3J3YXJkTGlzdCgpOwogCi0gICAgdm9p
ZCBhZGRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qKTsKKyAgICBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtKiBpdGVtRm9ySUQoY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmll
ciYpOworCisgICAgdm9pZCBhZGRJdGVtKFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiYmKTsK
ICAgICB2b2lkIGdvVG9JdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKTsKICAgICB2b2lkIHJl
bW92ZUFsbEl0ZW1zKCk7CiAgICAgdm9pZCBjbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYTAxZWQ4MTlkNDEzYWZkYjAxZDEzMjRmMmZjNmE3NDY0
NWRlZjRkMC4uODJiMGE2YWEyMzE0NmFiNTRmMjZlOWU1NTRkNDcxMmJhZDljNGZjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC02NzAsNyArNjcwLDcgQEAg
U3VzcGVuZGVkUGFnZVByb3h5KiBXZWJQYWdlUHJveHk6Om1heWJlQ3JlYXRlU3VzcGVuZGVkUGFn
ZShXZWJQcm9jZXNzUHJveHkmIHByb2MKIAogICAgIG1fc3VzcGVuZGVkUGFnZSA9IFN1c3BlbmRl
ZFBhZ2VQcm94eTo6Y3JlYXRlKCp0aGlzLCBwcm9jZXNzLCAqY3VycmVudEl0ZW0pOwogCi0gICAg
TE9HKFByb2Nlc3NTd2FwcGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBjcmVhdGVkIHN1
c3BlbmRlZCBwYWdlICVzIGZvciBwcm9jZXNzIHBpZCAlaSwgYmFjay9mb3J3YXJkIGl0ZW0gJSIg
UFJJdTY0LCBwYWdlSUQoKSwgbV9zdXNwZW5kZWRQYWdlLT5sb2dnaW5nU3RyaW5nKCksIHByb2Nl
c3MucHJvY2Vzc0lkZW50aWZpZXIoKSwgY3VycmVudEl0ZW0tPml0ZW1JRCgpKTsKKyAgICBMT0co
UHJvY2Vzc1N3YXBwaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGNyZWF0ZWQgc3VzcGVu
ZGVkIHBhZ2UgJXMgZm9yIHByb2Nlc3MgcGlkICVpLCBiYWNrL2ZvcndhcmQgaXRlbSAlcyIgUFJJ
dTY0LCBwYWdlSUQoKSwgbV9zdXNwZW5kZWRQYWdlLT5sb2dnaW5nU3RyaW5nKCksIHByb2Nlc3Mu
cHJvY2Vzc0lkZW50aWZpZXIoKSwgY3VycmVudEl0ZW0tPml0ZW1JRCgpLmxvZ1N0cmluZygpKTsK
IAogICAgIHJldHVybiBtX3N1c3BlbmRlZFBhZ2UuZ2V0KCk7CiB9CkBAIC03NzMsMTAgKzc3Myw2
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSgpCiB7CiAgICAgQVNTRVJU
KGlzVmFsaWQoKSk7CiAKLSAgICBjb25zdCBCYWNrRm9yd2FyZExpc3RJdGVtVmVjdG9yJiBpdGVt
cyA9IG1fYmFja0ZvcndhcmRMaXN0LT5lbnRyaWVzKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBpdGVtcy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9wcm9jZXNzLT5yZWdpc3Rlck5ld1dl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0oaXRlbXNbaV0uZ2V0KCkpOwotCiAgICAgbV9kcmF3aW5nQXJl
YSA9IG1fcGFnZUNsaWVudC5jcmVhdGVEcmF3aW5nQXJlYVByb3h5KCk7CiAgICAgQVNTRVJUKG1f
ZHJhd2luZ0FyZWEpOwogCkBAIC0xMjcxLDExICsxMjY3LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogYWRkZWQs
IFZlY3RvCiAgICAgbV9wYWdlTG9hZFN0YXRlLnNldENhbkdvRm9yd2FyZCh0cmFuc2FjdGlvbiwg
bV9iYWNrRm9yd2FyZExpc3QtPmZvcndhcmRJdGVtKCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6d2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKHVpbnQ2NF90IGl0ZW1JRCwgYm9vbCBpblBh
Z2VDYWNoZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6Ondp
bGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
JiBpdGVtSUQsIGJvb2wgaW5QYWdlQ2FjaGUsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsK
ICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQpOwogCi0gICAg
aWYgKGF1dG8qIGl0ZW0gPSBtX3Byb2Nlc3MtPndlYkJhY2tGb3J3YXJkSXRlbShpdGVtSUQpKSB7
CisgICAgaWYgKGF1dG8qIGl0ZW0gPSBtX2JhY2tGb3J3YXJkTGlzdC0+aXRlbUZvcklEKGl0ZW1J
RCkpIHsKICAgICAgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCAmJiBtX25hdmlnYXRpb25DbGll
bnQtPndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSgqdGhpcywgKml0ZW0sIGluUGFnZUNhY2hl
LCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkp
LmdldCgpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9sb2FkZXJDbGllbnQtPndp
bGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSgqdGhpcywgKml0ZW0sIG1fcHJvY2Vzcy0+dHJhbnNm
b3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwpAQCAtMjU1Nywx
MCArMjU1Myw2IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVzdG9y
ZUZyb21TZXNzaW9uU3RhdGUoU2Vzc2lvblN0YXRlIHNlc3NpCiAKICAgICBpZiAoaGFzQmFja0Zv
cndhcmRMaXN0KSB7CiAgICAgICAgIG1fYmFja0ZvcndhcmRMaXN0LT5yZXN0b3JlRnJvbVN0YXRl
KFdURk1vdmUoc2Vzc2lvblN0YXRlLmJhY2tGb3J3YXJkTGlzdFN0YXRlKSk7Ci0KLSAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IG1fYmFja0ZvcndhcmRMaXN0LT5lbnRyaWVzKCkpCi0g
ICAgICAgICAgICBwcm9jZXNzKCkucmVnaXN0ZXJOZXdXZWJCYWNrRm9yd2FyZExpc3RJdGVtKGVu
dHJ5LmdldCgpKTsKLQogICAgICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UmVzdG9yZVNlc3Npb24obV9iYWNrRm9yd2FyZExpc3QtPml0ZW1TdGF0ZXMoKSksIG1fcGFnZUlE
KTsKIAogICAgICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0
aW9uKCk7CkBAIC00Njc1LDE0ICs0NjY3LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXROZWVk
c1BsYWluVGV4dFF1aXJrKGJvb2wgbmVlZHNQbGFpblRleHRRdWlyaykKIAogLy8gQmFja0Zvcndh
cmRMaXN0CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEFkZEl0ZW0odWludDY0X3Qg
aXRlbUlEKQordm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkQWRkSXRlbShCYWNrRm9yd2Fy
ZExpc3RJdGVtU3RhdGUmJiBpdGVtU3RhdGUpCiB7Ci0gICAgbV9iYWNrRm9yd2FyZExpc3QtPmFk
ZEl0ZW0obV9wcm9jZXNzLT53ZWJCYWNrRm9yd2FyZEl0ZW0oaXRlbUlEKSk7CisgICAgbV9iYWNr
Rm9yd2FyZExpc3QtPmFkZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKFdURk1v
dmUoaXRlbVN0YXRlKSwgcGFnZUlEKCkpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tG
b3J3YXJkR29Ub0l0ZW0odWludDY0X3QgaXRlbUlELCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRH
b1RvSXRlbShjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKIHsKLSAgICBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtKiBpdGVtID0gbV9wcm9jZXNzLT53ZWJCYWNrRm9yd2FyZEl0ZW0oaXRl
bUlEKTsKKyAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtID0gbV9iYWNrRm9yd2FyZExp
c3QtPml0ZW1Gb3JJRChpdGVtSUQpOwogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC00NjkyLDEwICs0Njg0LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEdv
VG9JdGVtKHVpbnQ2NF90IGl0ZW1JRCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlCiAgICAgbV9i
YWNrRm9yd2FyZExpc3QtPmdvVG9JdGVtKCppdGVtKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OmJhY2tGb3J3YXJkSXRlbUF0SW5kZXgoaW50MzJfdCBpbmRleCwgdWludDY0X3QmIGl0ZW1JRCkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEl0ZW1BdEluZGV4KGludDMyX3QgaW5kZXgs
IHN0ZDo6b3B0aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4mIGl0ZW1JRCkKIHsKICAg
ICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtID0gbV9iYWNrRm9yd2FyZExpc3QtPml0ZW1B
dEluZGV4KGluZGV4KTsKLSAgICBpdGVtSUQgPSBpdGVtID8gaXRlbS0+aXRlbUlEKCkgOiAwOwor
ICAgIGlmIChpdGVtKQorICAgICAgICBpdGVtSUQgPSBpdGVtLT5pdGVtSUQoKTsKKyAgICBlbHNl
CisgICAgICAgIGl0ZW1JRCA9IHN0ZDo6bnVsbG9wdDsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmJhY2tGb3J3YXJkQmFja0xpc3RDb3VudChpbnQzMl90JiBjb3VudCkKQEAgLTU5NDUsNyArNTk0
MCw2IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBh
cmFtZXRlcnMoKQogICAgIHBhcmFtZXRlcnMudXNlckFnZW50ID0gdXNlckFnZW50KCk7CiAgICAg
cGFyYW1ldGVycy5pdGVtU3RhdGVzID0gbV9iYWNrRm9yd2FyZExpc3QtPml0ZW1TdGF0ZXMoKTsK
ICAgICBwYXJhbWV0ZXJzLnNlc3Npb25JRCA9IHNlc3Npb25JRCgpOwotICAgIHBhcmFtZXRlcnMu
aGlnaGVzdFVzZWRCYWNrRm9yd2FyZEl0ZW1JRCA9IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06Omhp
Z2hlc3RVc2VkSXRlbUlEKCk7CiAgICAgcGFyYW1ldGVycy51c2VyQ29udGVudENvbnRyb2xsZXJJ
RCA9IG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5pZGVudGlmaWVyKCk7CiAgICAgcGFyYW1ldGVy
cy52aXNpdGVkTGlua1RhYmxlSUQgPSBtX3Zpc2l0ZWRMaW5rU3RvcmUtPmlkZW50aWZpZXIoKTsK
ICAgICBwYXJhbWV0ZXJzLndlYnNpdGVEYXRhU3RvcmVJRCA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+
aWRlbnRpZmllcigpOwpAQCAtNjM1Miw5ICs2MzQ2LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYg
c3UKICAgICBtX3BhZ2VDbGllbnQuZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50
UHJvdmlkZXIoc3VnZ2VzdGVkRmlsZW5hbWUsIGRhdGFSZWZlcmVuY2UpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6YmFja0ZvcndhcmRSZW1vdmVkSXRlbSh1aW50NjRfdCBpdGVtSUQpCit2b2lk
IFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRSZW1vdmVkSXRlbShjb25zdCBCYWNrRm9yd2FyZEl0
ZW1JZGVudGlmaWVyJiBpdGVtSUQpCiB7Ci0gICAgbV9wcm9jZXNzLT5yZW1vdmVCYWNrRm9yd2Fy
ZEl0ZW0oaXRlbUlEKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRp
ZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShpdGVtSUQpLCBtX3BhZ2VJRCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggODdhMGI1OWNkMTY0Mjg2ZjViY2RhNzAw
ZWVlZDAxZTFiNWZhMjk3ZC4uYTNmMTQ2YjBiYTc0ZDcxMTJjNmJlNTRiNjM4YjliYWFmNjI2OWNm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE3NCw2ICsxNzQs
NyBAQCBlbnVtIGNsYXNzIE5vdGlmaWNhdGlvbkRpcmVjdGlvbjsKIGVudW0gY2xhc3MgU2hvdWxk
U2FtcGxlOwogCiBzdHJ1Y3QgQXBwbGljYXRpb25NYW5pZmVzdDsKK3N0cnVjdCBCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyOwogc3RydWN0IERpY3Rpb25hcnlQb3B1cEluZm87CiBzdHJ1Y3QgRXhj
ZXB0aW9uRGV0YWlsczsKIHN0cnVjdCBGaWxlQ2hvb3NlclNldHRpbmdzOwpAQCAtNDQ2LDcgKzQ0
Nyw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBnb1RvQmFja0Zvcndh
cmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKTsKICAgICB2b2lkIHRyeVJlc3RvcmVTY3Jv
bGxQb3NpdGlvbigpOwogICAgIHZvaWQgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0qIGFkZGVkSXRlbSwgVmVjdG9yPFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtPj4mJiByZW1vdmVkKTsKLSAgICB2b2lkIHdpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSh1
aW50NjRfdCBpdGVtSUQsIGJvb2wgaW5QYWdlQ2FjaGUsIGNvbnN0IFVzZXJEYXRhJik7CisgICAg
dm9pZCB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllciYsIGJvb2wgaW5QYWdlQ2FjaGUsIGNvbnN0IFVzZXJEYXRhJik7CiAK
ICAgICBib29sIHNob3VsZEtlZXBDdXJyZW50QmFja0ZvcndhcmRMaXN0SXRlbUluTGlzdChXZWJC
YWNrRm9yd2FyZExpc3RJdGVtJik7CiAKQEAgLTg3Nyw3ICs4NzgsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBXZWJG
cmFtZVByb3h5JiwgdWludDY0X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0
aW9uSUQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJik7CiAKLSAgICB2b2lk
IGJhY2tGb3J3YXJkUmVtb3ZlZEl0ZW0odWludDY0X3QgaXRlbUlEKTsKKyAgICB2b2lkIGJhY2tG
b3J3YXJkUmVtb3ZlZEl0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmll
ciYpOwogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgICAgCiAgICAgLy8gRHJhZyBhbmQgZHJv
cCBzdXBwb3J0LgpAQCAtMTQ3MCw5ICsxNDcxLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldE5l
ZWRzUGxhaW5UZXh0UXVpcmsoYm9vbCk7CiAKICAgICAvLyBCYWNrL0ZvcndhcmQgbGlzdCBtYW5h
Z2VtZW50Ci0gICAgdm9pZCBiYWNrRm9yd2FyZEFkZEl0ZW0odWludDY0X3QgaXRlbUlEKTsKLSAg
ICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW0odWludDY0X3QgaXRlbUlELCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmKTsKLSAgICB2b2lkIGJhY2tGb3J3YXJkSXRlbUF0SW5kZXgoaW50MzJfdCBp
bmRleCwgdWludDY0X3QmIGl0ZW1JRCk7CisgICAgdm9pZCBiYWNrRm9yd2FyZEFkZEl0ZW0oQmFj
a0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYpOworICAgIHZvaWQgYmFja0ZvcndhcmRHb1RvSXRlbShj
b25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJik7CisgICAgdm9pZCBiYWNrRm9yd2FyZEl0ZW1BdEluZGV4KGludDMyX3QgaW5k
ZXgsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4mKTsK
ICAgICB2b2lkIGJhY2tGb3J3YXJkQmFja0xpc3RDb3VudChpbnQzMl90JiBjb3VudCk7CiAgICAg
dm9pZCBiYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQoaW50MzJfdCYgY291bnQpOwogICAgIHZv
aWQgYmFja0ZvcndhcmRDbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDUzZmIxODMyZDVkMzhjYTcwNTg4MzRhOTk0N2Ey
MmUxZTVkZmY3ZWMuLmViMDgzNTdkMGY3ODgyOTAxYzBhZDk0N2M5OGFkOGNmYjI3NzQ4ODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
QEAgLTIxOSwxMyArMjE5LDEzIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYK
IAogICAgICMgQmFja0ZvcndhcmQgbWVzc2FnZXMKLSAgICBCYWNrRm9yd2FyZEFkZEl0ZW0odWlu
dDY0X3QgaXRlbUlEKQotICAgIEJhY2tGb3J3YXJkR29Ub0l0ZW0odWludDY0X3QgaXRlbUlEKSAt
PiAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSkKLSAgICBCYWNrRm9yd2FyZEl0ZW1BdEluZGV4KGludDMyX3QgaXRlbUluZGV4KSAtPiAodWlu
dDY0X3QgaXRlbUlEKQorICAgIEJhY2tGb3J3YXJkQWRkSXRlbShzdHJ1Y3QgV2ViS2l0OjpCYWNr
Rm9yd2FyZExpc3RJdGVtU3RhdGUgaXRlbVN0YXRlKQorICAgIEJhY2tGb3J3YXJkR29Ub0l0ZW0o
c3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgaXRlbUlEKSAtPiAoV2Vi
S2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKKyAg
ICBCYWNrRm9yd2FyZEl0ZW1BdEluZGV4KGludDMyX3QgaXRlbUluZGV4KSAtPiAoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiBpdGVtSUQpCiAgICAgQmFj
a0ZvcndhcmRCYWNrTGlzdENvdW50KCkgLT4gKGludDMyX3QgY291bnQpCiAgICAgQmFja0Zvcndh
cmRGb3J3YXJkTGlzdENvdW50KCkgLT4gKGludDMyX3QgY291bnQpCiAgICAgQmFja0ZvcndhcmRD
bGVhcigpCi0gICAgV2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKHVpbnQ2NF90IGl0ZW1JRCwg
Ym9vbCBpblBhZ2VDYWNoZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBXaWxsR29U
b0JhY2tGb3J3YXJkTGlzdEl0ZW0oc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXIgaXRlbUlELCBib29sIGluUGFnZUNhY2hlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
KQogCiAgICAgIyBVbmRvL1JlZG8gbWVzc2FnZXMKICAgICBSZWdpc3RlckVkaXRDb21tYW5kRm9y
VW5kbyh1aW50NjRfdCBjb21tYW5kSUQsIHVpbnQzMl90IGVkaXRBY3Rpb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYWI5YzhiMDQ0MzA1YjAwZjA1
ZTM2YmViYjdjNWNhZWEyOTExYjg1OS4uYzAxMTk4YzNmNzhhYjUxMDA0NTA1N2U1MmE0YjVmYzUw
MDE1ZTI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApA
QCAtODAsNiArODAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTG9nSW5pdGlhbGl6YXRpb24uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3MuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVVJM
UGFyc2VyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpAQCAtMjQ4LDYgKzI0OSw3IEBA
IFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbikKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewog
ICAgICAgICBXVEY6OnNldFByb2Nlc3NQcml2aWxlZ2VzKGFsbFByaXZpbGVnZXMoKSk7CiAgICAg
ICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cGVybWl0UHJvY2Vzc1RvVXNlQ29v
a2llQVBJKHRydWUpOworICAgICAgICBQcm9jZXNzOjpzZXRJZGVudGlmaWVyKGdlbmVyYXRlT2Jq
ZWN0SWRlbnRpZmllcjxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllclR5cGU+KCkpOwogICAgIH0p
OwogCiAgICAgaWYgKG1fY29uZmlndXJhdGlvbi0+c2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggOWEw
MWQ1YjRiMzU3MWE4ODc2NjEyYzc1YTNjYWQ3MjkwNDg0YTNlNi4uNDkzZTg4ZDIzOWJmOGFkMDE2
YmI1YjdhOTc5YmEwNTlmNGI3MGM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCkBAIC00MjcsMTQgKzQyNyw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpyZW1vdmVXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgdWludDY0X3QgcGFnZUlEKQog
ICAgIG1fcHJvY2Vzc1Bvb2wtPnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUod2ViUGFnZSk7
CiAKICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwotICAgIAotICAg
IFZlY3Rvcjx1aW50NjRfdD4gaXRlbUlEc1RvUmVtb3ZlOwotICAgIGZvciAoYXV0byYgaWRBbmRJ
dGVtIDogbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwKSB7Ci0gICAgICAgIGlmIChpZEFuZEl0ZW0u
dmFsdWUtPnBhZ2VJRCgpID09IHBhZ2VJRCkKLSAgICAgICAgICAgIGl0ZW1JRHNUb1JlbW92ZS5h
cHBlbmQoaWRBbmRJdGVtLmtleSk7Ci0gICAgfQotICAgIGZvciAoYXV0byBpdGVtSUQgOiBpdGVt
SURzVG9SZW1vdmUpCi0gICAgICAgIG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcC5yZW1vdmUoaXRl
bUlEKTsKIAogICAgIG1heWJlU2h1dERvd24oKTsKIH0KQEAgLTQ2MywyNSArNDU1LDYgQEAgdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OmRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eShXZWJVc2VyQ29udGVudENvbnQKICAgICBtX3dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hp
ZXMucmVtb3ZlKCZwcm94eSk7CiB9CiAKLVdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIFdlYlByb2Nl
c3NQcm94eTo6d2ViQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLmdldChpdGVtSUQpOwotfQotCi12b2lk
IFdlYlByb2Nlc3NQcm94eTo6cmVnaXN0ZXJOZXdXZWJCYWNrRm9yd2FyZExpc3RJdGVtKFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCi17Ci0gICAgLy8gVGhpcyBpdGVtIHdhcyBqdXN0IGNy
ZWF0ZWQgYnkgdGhlIFVJUHJvY2VzcyBhbmQgaXMgYmVpbmcgYWRkZWQgdG8gdGhlIG1hcCBmb3Ig
dGhlIGZpcnN0IHRpbWUKLSAgICAvLyBzbyB3ZSBzaG91bGQgbm90IGFscmVhZHkgaGF2ZSBhbiBp
dGVtIGZvciB0aGlzIElELgotICAgIEFTU0VSVCghbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLmNv
bnRhaW5zKGl0ZW0uaXRlbUlEKCkpKTsKLQotICAgIG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcC5z
ZXQoaXRlbS5pdGVtSUQoKSwgJml0ZW0pOwotfQotCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVt
b3ZlQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkKLXsKLSAgICBtX2JhY2tGb3J3YXJk
TGlzdEl0ZW1NYXAucmVtb3ZlKGl0ZW1JRCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojph
c3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogewogICAg
IFVSTCB1cmwoVVJMKCksIHVybFN0cmluZyk7CkBAIC01NDcsMTEgKzUyMCwxMSBAQCBib29sIFdl
YlByb2Nlc3NQcm94eTo6Y2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKGNvbnN0IFVSTCYg
dXJsKQogICAgIC8vIEl0ZW1zIGluIGJhY2svZm9yd2FyZCBsaXN0IGhhdmUgYmVlbiBhbHJlYWR5
IGNoZWNrZWQuCiAgICAgLy8gT25lIGNhc2Ugd2hlcmUgd2UgZG9uJ3QgaGF2ZSBzYW5kYm94IGV4
dGVuc2lvbnMgZm9yIGZpbGUgVVJMcyBpbiBiL2YgbGlzdCBpcyBpZiB0aGUgbGlzdCBoYXMgYmVl
biByZWluc3RhdGVkIGFmdGVyIGEgY3Jhc2ggb3IgYSBicm93c2VyIHJlc3RhcnQuCiAgICAgU3Ry
aW5nIHBhdGggPSB1cmwuZmlsZVN5c3RlbVBhdGgoKTsKLSAgICBmb3IgKFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW1NYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2JhY2tGb3J3YXJkTGlzdEl0ZW1NYXAuYmVn
aW4oKSwgZW5kID0gbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLmVuZCgpOyBpdGVyICE9IGVuZDsg
KytpdGVyKSB7Ci0gICAgICAgIFVSTCBpdGVtVVJMKFVSTCgpLCBpdGVyLT52YWx1ZS0+dXJsKCkp
OworICAgIGZvciAoYXV0byYgaXRlbSA6IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmFsbEl0ZW1z
KCkudmFsdWVzKCkpIHsKKyAgICAgICAgVVJMIGl0ZW1VUkwoVVJMKCksIGl0ZW0tPnVybCgpKTsK
ICAgICAgICAgaWYgKGl0ZW1VUkwuaXNMb2NhbEZpbGUoKSAmJiBpdGVtVVJMLmZpbGVTeXN0ZW1Q
YXRoKCkgPT0gcGF0aCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBVUkwgaXRl
bU9yaWdpbmFsVVJMKFVSTCgpLCBpdGVyLT52YWx1ZS0+b3JpZ2luYWxVUkwoKSk7CisgICAgICAg
IFVSTCBpdGVtT3JpZ2luYWxVUkwoVVJMKCksIGl0ZW0tPm9yaWdpbmFsVVJMKCkpOwogICAgICAg
ICBpZiAoaXRlbU9yaWdpbmFsVVJMLmlzTG9jYWxGaWxlKCkgJiYgaXRlbU9yaWdpbmFsVVJMLmZp
bGVTeXN0ZW1QYXRoKCkgPT0gcGF0aCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
QEAgLTU2OCwyMiArNTQxLDEwIEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpmdWxsS2V5Ym9hcmRB
Y2Nlc3NFbmFibGVkKCkKIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkT3JV
cGRhdGVCYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgaXRlbUlELCB1aW50NjRfdCBwYWdlSUQsIGNv
bnN0IFBhZ2VTdGF0ZSYgcGFnZVN0YXRlKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZUJh
Y2tGb3J3YXJkSXRlbShjb25zdCBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmIGl0ZW1TdGF0ZSkK
IHsKLSAgICBNRVNTQUdFX0NIRUNLX1VSTChwYWdlU3RhdGUubWFpbkZyYW1lU3RhdGUub3JpZ2lu
YWxVUkxTdHJpbmcpOwotICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHBhZ2VTdGF0ZS5tYWluRnJhbWVT
dGF0ZS51cmxTdHJpbmcpOwotCi0gICAgYXV0byYgYmFja0ZvcndhcmRMaXN0SXRlbSA9IG1fYmFj
a0ZvcndhcmRMaXN0SXRlbU1hcC5hZGQoaXRlbUlELCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7
Ci0gICAgaWYgKCFiYWNrRm9yd2FyZExpc3RJdGVtKSB7Ci0gICAgICAgIEJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZSBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU7Ci0gICAgICAgIGJhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZS5pZGVudGlmaWVyID0gaXRlbUlEOwotICAgICAgICBiYWNrRm9yd2FyZExp
c3RJdGVtU3RhdGUucGFnZVN0YXRlID0gcGFnZVN0YXRlOwotICAgICAgICBiYWNrRm9yd2FyZExp
c3RJdGVtID0gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKFdURk1vdmUoYmFja0Zvcndh
cmRMaXN0SXRlbVN0YXRlKSwgcGFnZUlEKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IC8vIFVwZGF0ZSBleGlzdGluZyBpdGVtLgotICAgIGJhY2tGb3J3YXJkTGlzdEl0ZW0tPnNldFBh
Z2VTdGF0ZShwYWdlU3RhdGUpOworICAgIGlmIChhdXRvKiBpdGVtID0gV2ViQmFja0ZvcndhcmRM
aXN0SXRlbTo6aXRlbUZvcklEKGl0ZW1TdGF0ZS5pZGVudGlmaWVyKSkKKyAgICAgICAgaXRlbS0+
c2V0UGFnZVN0YXRlKGl0ZW1TdGF0ZS5wYWdlU3RhdGUpOwogfQogCiAjaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CmluZGV4IDYwN2I5YjJhZTRhZGQyNDY2NTAxYjIxODg2YzM0YzkxMWFmZDBiYWMuLmVkMTBmOTNk
ZGJhOTAwMDY4ZDQxZDUzZGZlYTQ4OWJkYjU1ZDVkMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC05Miw3ICs5Miw2IEBAIHR5cGVkZWYgQmFja2dyb3Vu
ZFdlYlByb2Nlc3NDb3VudGVyOjpUb2tlbiBCYWNrZ3JvdW5kV2ViUHJvY2Vzc1Rva2VuOwogCiBj
bGFzcyBXZWJQcm9jZXNzUHJveHkgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzUHJveHksIHB1YmxpYyBS
ZXNwb25zaXZlbmVzc1RpbWVyOjpDbGllbnQsIHByaXZhdGUgUHJvY2Vzc1Rocm90dGxlckNsaWVu
dCB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViQmFj
a0ZvcndhcmRMaXN0SXRlbT4+IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW1NYXA7CiAgICAgdHlwZWRl
ZiBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViRnJhbWVQcm94eT4+IFdlYkZyYW1lUHJveHlN
YXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBXZWJQYWdlUHJveHkqPiBXZWJQYWdl
UHJveHlNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8QVBJOjpVc2Vy
SW5pdGlhdGVkQWN0aW9uPj4gVXNlckluaXRpYXRlZEFjdGlvbk1hcDsKQEAgLTEyNCw3ICsxMjMs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWREZXN0cm95VmlzaXRlZExpbmtTdG9yZShWaXNpdGVk
TGlua1N0b3JlJik7CiAgICAgdm9pZCBkaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkmKTsKIAotICAgIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0qIHdlYkJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQpIGNvbnN0Owog
ICAgIFJlZlB0cjxBUEk6OlVzZXJJbml0aWF0ZWRBY3Rpb24+IHVzZXJJbml0aWF0ZWRBY3Rpdml0
eSh1aW50NjRfdCk7CiAKICAgICBSZXNwb25zaXZlbmVzc1RpbWVyJiByZXNwb25zaXZlbmVzc1Rp
bWVyKCkgeyByZXR1cm4gbV9yZXNwb25zaXZlbmVzc1RpbWVyOyB9CkBAIC0xNDIsOSArMTQwLDYg
QEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVUZXh0Q2hlY2tlclN0YXRlKCk7CiAKLSAgICB2
b2lkIHJlZ2lzdGVyTmV3V2ViQmFja0ZvcndhcmRMaXN0SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtJik7Ci0gICAgdm9pZCByZW1vdmVCYWNrRm9yd2FyZEl0ZW0odWludDY0X3QpOwotCiAgICAg
dm9pZCB3aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbigpIHsgbV9t
YXlIYXZlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uID0gdHJ1ZTsgfQogICAgIHZv
aWQgYXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChjb25zdCBTdHJpbmcmKTsKICAgICBib29sIGhh
c0Fzc3VtZWRSZWFkQWNjZXNzVG9VUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CkBAIC0y
MzMsNyArMjI4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1heWJlU2h1dERvd24oKTsKIAogICAg
IC8vIElQQyBtZXNzYWdlIGhhbmRsZXJzLgotICAgIHZvaWQgYWRkT3JVcGRhdGVCYWNrRm9yd2Fy
ZEl0ZW0odWludDY0X3QgaXRlbUlELCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFBhZ2VTdGF0ZSYp
OworICAgIHZvaWQgdXBkYXRlQmFja0ZvcndhcmRJdGVtKGNvbnN0IEJhY2tGb3J3YXJkTGlzdEl0
ZW1TdGF0ZSYpOwogICAgIHZvaWQgZGlkRGVzdHJveUZyYW1lKHVpbnQ2NF90KTsKICAgICB2b2lk
IGRpZERlc3Ryb3lVc2VyR2VzdHVyZVRva2VuKHVpbnQ2NF90KTsKIApAQCAtMzEwLDcgKzMwNSw2
IEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5TWFwIG1fcGFnZU1hcDsKICAgICBIYXNoTWFw
PHVpbnQ2NF90LCBTdXNwZW5kZWRQYWdlUHJveHkqPiBtX3N1c3BlbmRlZFBhZ2VNYXA7CiAgICAg
V2ViRnJhbWVQcm94eU1hcCBtX2ZyYW1lTWFwOwotICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW1N
YXAgbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwOwogICAgIFVzZXJJbml0aWF0ZWRBY3Rpb25NYXAg
bV91c2VySW5pdGlhdGVkQWN0aW9uTWFwOwogCiAgICAgSGFzaFNldDxWaXNpdGVkTGlua1N0b3Jl
Kj4gbV92aXNpdGVkTGlua1N0b3JlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlYzdjZjUwMTM5Mzc2YjUzODc3OTk0
NjA5YzA3MDUyOTA2NjYzNTgyLi5lZGIwNWE3MDY1MzRiMTUxYjA1ZWIzZTYzMjYzZTM5Mjc4M2U2
NThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCkBAIC0yMSw3ICsyMSw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2Vz
IC0+IFdlYlByb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7Ci0gICAgQWRkT3JVcGRhdGVCYWNr
Rm9yd2FyZEl0ZW0odWludDY0X3QgaXRlbUlELCB1aW50NjRfdCBwYWdlSUQsIHN0cnVjdCBXZWJL
aXQ6OlBhZ2VTdGF0ZSBwYWdlU3RhdGUpCisgICAgVXBkYXRlQmFja0ZvcndhcmRJdGVtKHN0cnVj
dCBXZWJLaXQ6OkJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSBiYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGUpCiAgICAgRGlkRGVzdHJveUZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpIAogCiAgICAgRGlkRGVz
dHJveVVzZXJHZXN0dXJlVG9rZW4odWludDY0X3QgdXNlckdlc3R1cmVUb2tlbklEKSAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3Rh
dGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAppbmRleCBhNWQ0NWE5YTgwZWU4NTgyYWI1ZDNm
ZjlhNzgyNjhkZmNiZGI5MjA1Li5hNDQ3MjJhYTM1Y2E2ODU5Yjg0NDRmZTc1ZjVkZmJmODUxNGJh
OTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
U2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCkBAIC0xMTIsMTUgKzEx
MiwxNSBAQCBzdGF0aWMgRnJhbWVTdGF0ZSB0b0ZyYW1lU3RhdGUoY29uc3QgSGlzdG9yeUl0ZW0m
IGhpc3RvcnlJdGVtKQogICAgIHJldHVybiBmcmFtZVN0YXRlOwogfQogCi1QYWdlU3RhdGUgdG9Q
YWdlU3RhdGUoY29uc3QgV2ViQ29yZTo6SGlzdG9yeUl0ZW0mIGhpc3RvcnlJdGVtKQorQmFja0Zv
cndhcmRMaXN0SXRlbVN0YXRlIHRvQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKGNvbnN0IFdlYkNv
cmU6Okhpc3RvcnlJdGVtJiBoaXN0b3J5SXRlbSkKIHsKLSAgICBQYWdlU3RhdGUgcGFnZVN0YXRl
OwotCi0gICAgcGFnZVN0YXRlLnRpdGxlID0gaGlzdG9yeUl0ZW0udGl0bGUoKTsKLSAgICBwYWdl
U3RhdGUubWFpbkZyYW1lU3RhdGUgPSB0b0ZyYW1lU3RhdGUoaGlzdG9yeUl0ZW0pOwotICAgIHBh
Z2VTdGF0ZS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gaGlzdG9yeUl0ZW0uc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSgpOwotICAgIHBhZ2VTdGF0ZS5zZXNzaW9uU3RhdGVPYmpl
Y3QgPSBoaXN0b3J5SXRlbS5zdGF0ZU9iamVjdCgpOwotICAgIHJldHVybiBwYWdlU3RhdGU7Cisg
ICAgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIHN0YXRlOworICAgIHN0YXRlLmlkZW50aWZpZXIg
PSBoaXN0b3J5SXRlbS5pZGVudGlmaWVyKCk7CisgICAgc3RhdGUucGFnZVN0YXRlLnRpdGxlID0g
aGlzdG9yeUl0ZW0udGl0bGUoKTsKKyAgICBzdGF0ZS5wYWdlU3RhdGUubWFpbkZyYW1lU3RhdGUg
PSB0b0ZyYW1lU3RhdGUoaGlzdG9yeUl0ZW0pOworICAgIHN0YXRlLnBhZ2VTdGF0ZS5zaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gaGlzdG9yeUl0ZW0uc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSgpOworICAgIHN0YXRlLnBhZ2VTdGF0ZS5zZXNzaW9uU3RhdGVPYmplY3QgPSBoaXN0
b3J5SXRlbS5zdGF0ZU9iamVjdCgpOworICAgIHJldHVybiBzdGF0ZTsKIH0KIAogc3RhdGljIFJl
ZjxGb3JtRGF0YT4gdG9Gb3JtRGF0YShjb25zdCBIVFRQQm9keSYgaHR0cEJvZHkpCkBAIC0xODIs
MTkgKzE4MiwxOSBAQCBzdGF0aWMgdm9pZCBhcHBseUZyYW1lU3RhdGUoSGlzdG9yeUl0ZW0mIGhp
c3RvcnlJdGVtLCBjb25zdCBGcmFtZVN0YXRlJiBmcmFtZVN0YQogI2VuZGlmCiAKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGNoaWxkRnJhbWVTdGF0ZSA6IGZyYW1lU3RhdGUuY2hpbGRyZW4pIHsKLSAg
ICAgICAgUmVmPEhpc3RvcnlJdGVtPiBjaGlsZEhpc3RvcnlJdGVtID0gSGlzdG9yeUl0ZW06OmNy
ZWF0ZShjaGlsZEZyYW1lU3RhdGUudXJsU3RyaW5nLCBTdHJpbmcoKSk7CisgICAgICAgIFJlZjxI
aXN0b3J5SXRlbT4gY2hpbGRIaXN0b3J5SXRlbSA9IEhpc3RvcnlJdGVtOjpjcmVhdGUoY2hpbGRG
cmFtZVN0YXRlLnVybFN0cmluZywgeyB9LCB7IH0sIHsgUHJvY2Vzczo6aWRlbnRpZmllcigpLCBn
ZW5lcmF0ZU9iamVjdElkZW50aWZpZXI8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6SXRlbUlk
ZW50aWZpZXJUeXBlPigpIH0pOwogICAgICAgICBhcHBseUZyYW1lU3RhdGUoY2hpbGRIaXN0b3J5
SXRlbSwgY2hpbGRGcmFtZVN0YXRlKTsKIAogICAgICAgICBoaXN0b3J5SXRlbS5hZGRDaGlsZEl0
ZW0oV1RGTW92ZShjaGlsZEhpc3RvcnlJdGVtKSk7CiAgICAgfQogfQogCi1SZWY8SGlzdG9yeUl0
ZW0+IHRvSGlzdG9yeUl0ZW0oY29uc3QgUGFnZVN0YXRlJiBwYWdlU3RhdGUpCitSZWY8SGlzdG9y
eUl0ZW0+IHRvSGlzdG9yeUl0ZW0oY29uc3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiBpdGVt
U3RhdGUpCiB7Ci0gICAgUmVmPEhpc3RvcnlJdGVtPiBoaXN0b3J5SXRlbSA9IEhpc3RvcnlJdGVt
OjpjcmVhdGUocGFnZVN0YXRlLm1haW5GcmFtZVN0YXRlLnVybFN0cmluZywgcGFnZVN0YXRlLnRp
dGxlKTsKLSAgICBoaXN0b3J5SXRlbS0+c2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShw
YWdlU3RhdGUuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7Ci0gICAgaGlzdG9yeUl0ZW0t
PnNldFN0YXRlT2JqZWN0KHBhZ2VTdGF0ZS5zZXNzaW9uU3RhdGVPYmplY3QuZ2V0KCkpOwotICAg
IGFwcGx5RnJhbWVTdGF0ZShoaXN0b3J5SXRlbSwgcGFnZVN0YXRlLm1haW5GcmFtZVN0YXRlKTsK
KyAgICBSZWY8SGlzdG9yeUl0ZW0+IGhpc3RvcnlJdGVtID0gSGlzdG9yeUl0ZW06OmNyZWF0ZShp
dGVtU3RhdGUucGFnZVN0YXRlLm1haW5GcmFtZVN0YXRlLnVybFN0cmluZywgaXRlbVN0YXRlLnBh
Z2VTdGF0ZS50aXRsZSwgeyB9LCBpdGVtU3RhdGUuaWRlbnRpZmllcik7CisgICAgaGlzdG9yeUl0
ZW0tPnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koaXRlbVN0YXRlLnBhZ2VTdGF0ZS5z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKKyAgICBoaXN0b3J5SXRlbS0+c2V0U3RhdGVP
YmplY3QoaXRlbVN0YXRlLnBhZ2VTdGF0ZS5zZXNzaW9uU3RhdGVPYmplY3QuZ2V0KCkpOworICAg
IGFwcGx5RnJhbWVTdGF0ZShoaXN0b3J5SXRlbSwgaXRlbVN0YXRlLnBhZ2VTdGF0ZS5tYWluRnJh
bWVTdGF0ZSk7CiAKICAgICByZXR1cm4gaGlzdG9yeUl0ZW07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lv
bi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0
ZUNvbnZlcnNpb24uaAppbmRleCBiZWU5ZDIyOGNhNzM5YTVhOGY2NjUwY2FmY2Y3YmVmMGRiY2Q0
ZGY2Li5lMGUxMWZjOGM1MjBiYzlmMGJhMjQxMzQzZTgxZmUxYWY4YTBhOWIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29u
dmVyc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9T
ZXNzaW9uU3RhdGVDb252ZXJzaW9uLmgKQEAgLTM0LDEwICszNCwxMSBAQCBjbGFzcyBIaXN0b3J5
SXRlbTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0cnVjdCBCYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGU7CiBzdHJ1Y3QgUGFnZVN0YXRlOwogCi1QYWdlU3RhdGUgdG9QYWdlU3RhdGUoY29uc3Qg
V2ViQ29yZTo6SGlzdG9yeUl0ZW0mKTsKLVJlZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gdG9IaXN0
b3J5SXRlbShjb25zdCBQYWdlU3RhdGUmKTsKK0JhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSB0b0Jh
Y2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZShjb25zdCBXZWJDb3JlOjpIaXN0b3J5SXRlbSYpOworUmVm
PFdlYkNvcmU6Okhpc3RvcnlJdGVtPiB0b0hpc3RvcnlJdGVtKGNvbnN0IEJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKaW5kZXggYTRlZWFjYTA4MjA3NTI4NzA1MTRmZTE1NzVmNTBmN2Q3NmJk
M2M2ZC4uNzRhYzhiMmY4NjkwYmY2ZmY2NTFkYjE4N2E2YWUxMjE2MjVkNjc1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTM2LDEzICsxMTM2LDYgQEAgYm9vbCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6c2hvdWxkR29Ub0hpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKiBpdGVt
KSBjb25zdAogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYg
KCF3ZWJQYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgdWludDY0X3QgaXRl
bUlEID0gV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmlkRm9ySXRlbShpdGVtKTsKLSAgICBpZiAo
IWl0ZW1JRCkgewotICAgICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgYmUgY29uc2lkZXJpbmcgbmF2
aWdhdGluZyB0byBhbiBpdGVtIHRoYXQgaXMgbm90IGFjdHVhbGx5IGluIHRoZSBiYWNrL2Zvcndh
cmQgbGlzdC4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9CiAKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJ
dGVtPiBidW5kbGVJdGVtID0gSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVh
dGUoaXRlbSk7CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKQEAgLTExNTIsNyAr
MTE0NSw3IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEdvVG9IaXN0b3J5SXRl
bShIaXN0b3J5SXRlbSogaXRlbSkgY29uc3QKICAgICBpZiAoIXNob3VsZEdvVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB3ZWJQYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OldpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShpdGVtSUQs
IGJ1bmRsZUl0ZW0tPmlzSW5QYWdlQ2FjaGUoKSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7
CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXaWxsR29Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW0oaXRlbS0+aWRlbnRpZmllcigpLCBidW5kbGVJdGVtLT5pc0luUGFnZUNh
Y2hlKCksIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNU
b0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogICAgIHJldHVybiB0cnVlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9y
d2FyZExpc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJC
YWNrRm9yd2FyZExpc3RQcm94eS5jcHAKaW5kZXggN2MxMGM3OGUzZmVmMmIxNzkzNzFkYTViYTQ4
MzI1MjI2MWRlNzkzNS4uZThhM2NiN2U1MTU4YTk4NDI5ZTFkNmM2ZWU5OGIzOGNiN2FmY2M3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0Zvcndh
cmRMaXN0UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcApAQCAtNDcsODQgKzQ3LDMyIEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogLy8gRklYTUUgPHJkYXI6Ly9wcm9ibGVtLzg4MTkyNjg+OiBUaGlzIGxlYWtzIGFs
bCBIaXN0b3J5SXRlbXMgdGhhdCBnbyBpbnRvIHRoZXNlIG1hcHMuCiAvLyBXZSBuZWVkIHRvIGNs
ZWFyIHVwIHRoZSBsaWZlIHRpbWUgb2YgdGhlc2Ugb2JqZWN0cy4KIAotdHlwZWRlZiBIYXNoTWFw
PHVpbnQ2NF90LCBSZWZQdHI8SGlzdG9yeUl0ZW0+PiBJRFRvSGlzdG9yeUl0ZW1NYXA7IC8vICJJ
RCIgaGVyZSBpcyB0aGUgaXRlbSBJRC4KLSAgICAKLXN0cnVjdCBJdGVtQW5kUGFnZUlEIHsKLSAg
ICB1aW50NjRfdCBpdGVtSUQ7Ci0gICAgdWludDY0X3QgcGFnZUlEOwotfTsKLXR5cGVkZWYgSGFz
aE1hcDxSZWZQdHI8SGlzdG9yeUl0ZW0+LCBJdGVtQW5kUGFnZUlEPiBIaXN0b3J5SXRlbVRvSURN
YXA7Ci0KK3R5cGVkZWYgSGFzaE1hcDxCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLCBSZWZQdHI8
SGlzdG9yeUl0ZW0+PiBJRFRvSGlzdG9yeUl0ZW1NYXA7IC8vICJJRCIgaGVyZSBpcyB0aGUgaXRl
bSBJRC4KIHN0YXRpYyBJRFRvSGlzdG9yeUl0ZW1NYXAmIGlkVG9IaXN0b3J5SXRlbU1hcCgpCiB7
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPElEVG9IaXN0b3J5SXRlbU1hcD4gbWFwOwogICAg
IHJldHVybiBtYXA7CiB9CiAKLXN0YXRpYyBIaXN0b3J5SXRlbVRvSURNYXAmIGhpc3RvcnlJdGVt
VG9JRE1hcCgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhpc3RvcnlJdGVtVG9JRE1h
cD4gbWFwOwotICAgIHJldHVybiBtYXA7Ci19Ci0KLXN0YXRpYyB1aW50NjRfdCB1bmlxdWVIaXN0
b3J5SXRlbUlEID0gMTsKLQotc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlSGlzdG9yeUl0ZW1JRCgp
Ci17Ci0gICAgLy8gVGhlc2UgSURzIGV4aXN0IGluIHRoZSBXZWJQcm9jZXNzIGZvciBpdGVtcyBj
cmVhdGVkIGJ5IHRoZSBXZWJQcm9jZXNzLgotICAgIC8vIFRoZSBJRHMgZ2VuZXJhdGVkIGhlcmUg
bmVlZCB0byBuZXZlciBjb2xsaWRlIHdpdGggdGhlIElEcyBjcmVhdGVkIGluIFdlYkJhY2tGb3J3
YXJkTGlzdCBpbiB0aGUgVUlQcm9jZXNzLgotICAgIC8vIFdlIGFjY29tcGxpc2ggdGhpcyBieSBz
dGFydGluZyBmcm9tIDMsIGFuZCBvbmx5IGV2ZXIgdXNpbmcgb2RkIGlkcy4KLSAgICB1bmlxdWVI
aXN0b3J5SXRlbUlEICs9IDI7Ci0gICAgcmV0dXJuIHVuaXF1ZUhpc3RvcnlJdGVtSUQ7Ci19Ci0K
LXZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OnNldEhpZ2hlc3RJdGVtSURGcm9tVUlQcm9j
ZXNzKHVpbnQ2NF90IGl0ZW1JRCkKK3ZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0
ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCwg
UmVmPEhpc3RvcnlJdGVtPiYmIGl0ZW0sIHVpbnQ2NF90IHBhZ2VJRCkKIHsKLSAgICBpZiAoaXRl
bUlEIDw9IHVuaXF1ZUhpc3RvcnlJdGVtSUQpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICAg
aWYgKGl0ZW1JRCAlIDIpCi0gICAgICAgICB1bmlxdWVIaXN0b3J5SXRlbUlEID0gaXRlbUlEOwot
ICAgICBlbHNlCi0gICAgICAgICB1bmlxdWVIaXN0b3J5SXRlbUlEID0gaXRlbUlEICsgMTsKLX0K
LQotc3RhdGljIHZvaWQgdXBkYXRlQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCwgdWlu
dDY0X3QgcGFnZUlELCBIaXN0b3J5SXRlbSogaXRlbSkKLXsKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkFkZE9yVXBkYXRlQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCwgcGFnZUlELCB0b1Bh
Z2VTdGF0ZSgqaXRlbSkpLCAwKTsKLX0KLQotdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6
YWRkSXRlbUZyb21VSVByb2Nlc3ModWludDY0X3QgaXRlbUlELCBSZWY8SGlzdG9yeUl0ZW0+JiYg
aXRlbSwgdWludDY0X3QgcGFnZUlEKQotewotICAgIC8vIFRoaXMgaXRlbS9pdGVtSUQgcGFpciBz
aG91bGQgbm90IGFscmVhZHkgZXhpc3QgaW4gb3VyIG1hcHMuCi0gICAgQVNTRVJUKCFoaXN0b3J5
SXRlbVRvSURNYXAoKS5jb250YWlucyhpdGVtLnB0cigpKSk7CisgICAgLy8gVGhpcyBpdGVtL2l0
ZW1JRCBwYWlyIHNob3VsZCBub3QgYWxyZWFkeSBleGlzdCBpbiBvdXIgbWFwLgogICAgIEFTU0VS
VCghaWRUb0hpc3RvcnlJdGVtTWFwKCkuY29udGFpbnMoaXRlbUlEKSk7CiAKLSAgICBoaXN0b3J5
SXRlbVRvSURNYXAoKS5zZXQ8SXRlbUFuZFBhZ2VJRD4oaXRlbS5wdHIoKSwgeyBpdGVtSUQsIHBh
Z2VJRCB9KTsKICAgICBpZFRvSGlzdG9yeUl0ZW1NYXAoKS5zZXQoaXRlbUlELCBpdGVtLnB0cigp
KTsKIH0KIAogc3RhdGljIHZvaWQgV0syTm90aWZ5SGlzdG9yeUl0ZW1DaGFuZ2VkKEhpc3RvcnlJ
dGVtKiBpdGVtKQogewotICAgIEl0ZW1BbmRQYWdlSUQgaWRzID0gaGlzdG9yeUl0ZW1Ub0lETWFw
KCkuZ2V0KGl0ZW0pOwotICAgIGlmICghaWRzLml0ZW1JRCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgdXBkYXRlQmFja0ZvcndhcmRJdGVtKGlkcy5pdGVtSUQsIGlkcy5wYWdlSUQsIGl0ZW0pOwor
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6VXBkYXRlQmFja0ZvcndhcmRJdGVtKHRvQmFj
a0ZvcndhcmRMaXN0SXRlbVN0YXRlKCppdGVtKSksIDApOwogfQogCi1IaXN0b3J5SXRlbSogV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHk6Oml0ZW1Gb3JJRCh1aW50NjRfdCBpdGVtSUQpCitIaXN0b3J5
SXRlbSogV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Oml0ZW1Gb3JJRChjb25zdCBCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQpCiB7CiAgICAgcmV0dXJuIGlkVG9IaXN0b3J5SXRlbU1h
cCgpLmdldChpdGVtSUQpOwogfQogCi11aW50NjRfdCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6
aWRGb3JJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQotewotICAgIEFTU0VSVChpdGVtKTsKLSAgICBy
ZXR1cm4gaGlzdG9yeUl0ZW1Ub0lETWFwKCkuZ2V0KGl0ZW0pLml0ZW1JRDsKLX0KLQotdm9pZCBX
ZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6cmVtb3ZlSXRlbSh1aW50NjRfdCBpdGVtSUQpCit2b2lk
IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpyZW1vdmVJdGVtKGNvbnN0IEJhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXImIGl0ZW1JRCkKIHsKICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBp
ZFRvSGlzdG9yeUl0ZW1NYXAoKS50YWtlKGl0ZW1JRCk7CiAgICAgaWYgKCFpdGVtKQpAQCAtMTMy
LDcgKzgwLDYgQEAgdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6cmVtb3ZlSXRlbSh1aW50
NjRfdCBpdGVtSUQpCiAgICAgICAgIAogICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVtb3Zl
KCppdGVtKTsKICAgICBXZWJDb3JlOjpQYWdlOjpjbGVhclByZXZpb3VzSXRlbUZyb21BbGxQYWdl
cyhpdGVtLmdldCgpKTsKLSAgICBoaXN0b3J5SXRlbVRvSURNYXAoKS5yZW1vdmUoaXRlbSk7CiB9
CiAKIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpXZWJCYWNrRm9yd2FyZExpc3RQcm94eShXZWJQ
YWdlKiBwYWdlKQpAQCAtMTQzLDIwICs5MCwxMyBAQCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6
V2ViQmFja0ZvcndhcmRMaXN0UHJveHkoV2ViUGFnZSogcGFnZSkKIAogdm9pZCBXZWJCYWNrRm9y
d2FyZExpc3RQcm94eTo6YWRkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYgaXRlbSkKIHsKLSAgICBB
U1NFUlQoIWhpc3RvcnlJdGVtVG9JRE1hcCgpLmNvbnRhaW5zKGl0ZW0ucHRyKCkpKTsKLQogICAg
IGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICB1aW50NjRfdCBpdGVtSUQgPSBn
ZW5lcmF0ZUhpc3RvcnlJdGVtSUQoKTsKLQotICAgIEFTU0VSVCghaWRUb0hpc3RvcnlJdGVtTWFw
KCkuY29udGFpbnMoaXRlbUlEKSk7Ci0KLSAgICBoaXN0b3J5SXRlbVRvSURNYXAoKS5zZXQ8SXRl
bUFuZFBhZ2VJRD4oaXRlbS5wdHIoKSwgeyBpdGVtSUQsIG1fcGFnZS0+cGFnZUlEKCkgfSk7Ci0g
ICAgaWRUb0hpc3RvcnlJdGVtTWFwKCkuc2V0KGl0ZW1JRCwgaXRlbS5wdHIoKSk7CisgICAgYXV0
byByZXN1bHQgPSBpZFRvSGlzdG9yeUl0ZW1NYXAoKS5hZGQoaXRlbS0+aWRlbnRpZmllcigpLCBp
dGVtLnB0cigpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkp
OwogCi0gICAgdXBkYXRlQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCwgbV9wYWdlLT5wYWdlSUQoKSwg
aXRlbS5wdHIoKSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJh
Y2tGb3J3YXJkQWRkSXRlbShpdGVtSUQpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6QmFja0ZvcndhcmRBZGRJdGVtKHRvQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRl
KGl0ZW0uZ2V0KCkpKSk7CiB9CiAKIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmdvVG9J
dGVtKEhpc3RvcnlJdGVtKiBpdGVtKQpAQCAtMTY1LDcgKzEwNSw3IEBAIHZvaWQgV2ViQmFja0Zv
cndhcmRMaXN0UHJveHk6OmdvVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgICAgICByZXR1
cm47CiAKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZTsKLSAgICBtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3
YXJkR29Ub0l0ZW0oaGlzdG9yeUl0ZW1Ub0lETWFwKCkuZ2V0KGl0ZW0pLml0ZW1JRCksIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkR29Ub0l0ZW06OlJlcGx5KHNhbmRib3hFeHRl
bnNpb25IYW5kbGUpKTsKKyAgICBtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkJhY2tGb3J3YXJkR29Ub0l0ZW0oaXRlbS0+aWRlbnRpZmllcigpKSwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6QmFja0ZvcndhcmRHb1RvSXRlbTo6UmVwbHkoc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSkpOwogICAgIG1fcGFnZS0+c2FuZGJveEV4dGVuc2lvblRyYWNrZXIoKS5iZWdpbkxvYWQo
bV9wYWdlLT5tYWluV2ViRnJhbWUoKSwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7
CiB9CiAKQEAgLTE3NCwxNCArMTE0LDE0IEBAIEhpc3RvcnlJdGVtKiBXZWJCYWNrRm9yd2FyZExp
c3RQcm94eTo6aXRlbUF0SW5kZXgoaW50IGl0ZW1JbmRleCkKICAgICBpZiAoIW1fcGFnZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICB1aW50NjRfdCBpdGVtSUQgPSAwOworICAgIHN0
ZDo6b3B0aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gaXRlbUlEOwogICAgIGlmICgh
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRJdGVtQXRJbmRleChpdGVtSW5k
ZXgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEl0ZW1BdEluZGV4OjpSZXBs
eShpdGVtSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBpZiAoIWl0ZW1JRCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
aWRUb0hpc3RvcnlJdGVtTWFwKCkuZ2V0KGl0ZW1JRCk7CisgICAgcmV0dXJuIGlkVG9IaXN0b3J5
SXRlbU1hcCgpLmdldCgqaXRlbUlEKTsKIH0KIAogaW50IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5
OjpiYWNrTGlzdENvdW50KCkKQEAgLTIxMCw2ICsxNTAsNyBAQCBpbnQgV2ViQmFja0ZvcndhcmRM
aXN0UHJveHk6OmZvcndhcmRMaXN0Q291bnQoKQogCiB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5OjpjbG9zZSgpCiB7CisgICAgQVNTRVJUKG1fcGFnZSk7CiAgICAgbV9wYWdlID0gbnVsbHB0
cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKaW5kZXggZDQzZjk0OGNhMDFiYzAxZGM1YzNmZGRj
MzIyMmU0ZDU3NmI1MjE0Yy4uY2FkNzBlODYwMjllNDYwODc4NjJmMDAyNWIxMTUxNzc2MjJlMDI2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0Zv
cndhcmRMaXN0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCkBAIC0yOSw2ICsyOSwxMCBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvQmFja0ZvcndhcmRDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjsKK30K
KwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlBhZ2U7CkBAIC0zNywxMiArNDEsMTAg
QEAgY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0UHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6QmFja0Zv
cndhcmRDbGllbnQgewogcHVibGljOiAKICAgICBzdGF0aWMgUmVmPFdlYkJhY2tGb3J3YXJkTGlz
dFByb3h5PiBjcmVhdGUoV2ViUGFnZSogcGFnZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJC
YWNrRm9yd2FyZExpc3RQcm94eShwYWdlKSk7IH0KIAotICAgIHN0YXRpYyBXZWJDb3JlOjpIaXN0
b3J5SXRlbSogaXRlbUZvcklEKHVpbnQ2NF90KTsKLSAgICBzdGF0aWMgdWludDY0X3QgaWRGb3JJ
dGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKik7Ci0gICAgc3RhdGljIHZvaWQgcmVtb3ZlSXRlbSh1
aW50NjRfdCBpdGVtSUQpOworICAgIHN0YXRpYyBXZWJDb3JlOjpIaXN0b3J5SXRlbSogaXRlbUZv
cklEKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImKTsKKyAgICBzdGF0
aWMgdm9pZCByZW1vdmVJdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZp
ZXImKTsKIAotICAgIHZvaWQgYWRkSXRlbUZyb21VSVByb2Nlc3ModWludDY0X3QgaXRlbUlELCBS
ZWY8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+JiYsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgc3RhdGlj
IHZvaWQgc2V0SGlnaGVzdEl0ZW1JREZyb21VSVByb2Nlc3ModWludDY0X3QgaXRlbUlEKTsKKyAg
ICB2b2lkIGFkZEl0ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXImLCBSZWY8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+JiYsIHVpbnQ2NF90IHBhZ2VJ
RCk7CiAgICAgCiAgICAgdm9pZCBjbGVhcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDllOTFjM2I4ZTUyMzM4YjY0OTJjZDY2OWMyMTFm
MTI1YmFmNjRjYjEuLmYwMjJlZTEzZTVjMzhjODY1MGZlMWU3YTk3MzBjOWJjYTlkNGMyNjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC01MjMs
OCArNTIzLDYgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHNldFRvcENvbnRlbnRJbnNldChwYXJh
bWV0ZXJzLnRvcENvbnRlbnRJbnNldCk7CiAKICAgICBtX3VzZXJBZ2VudCA9IHBhcmFtZXRlcnMu
dXNlckFnZW50OwotCi0gICAgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OnNldEhpZ2hlc3RJdGVt
SURGcm9tVUlQcm9jZXNzKHBhcmFtZXRlcnMuaGlnaGVzdFVzZWRCYWNrRm9yd2FyZEl0ZW1JRCk7
CiAgICAgCiAgICAgaWYgKCFwYXJhbWV0ZXJzLml0ZW1TdGF0ZXMuaXNFbXB0eSgpKQogICAgICAg
ICByZXN0b3JlU2Vzc2lvbkludGVybmFsKHBhcmFtZXRlcnMuaXRlbVN0YXRlcywgV2FzUmVzdG9y
ZWRCeUFQSVJlcXVlc3Q6Ok5vKTsKQEAgLTEzOTAsNyArMTM4OCw3IEBAIHZvaWQgV2ViUGFnZTo6
cmVsb2FkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3QgcmVsb2FkT3B0aW9ucywgU2Fu
ZGJveEV4dGVuCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2U6OmdvVG9CYWNrRm9yd2FyZEl0ZW0o
dWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCBiYWNrRm9yd2FyZEl0ZW1JRCwgRnJhbWVM
b2FkVHlwZSBiYWNrRm9yd2FyZFR5cGUsIE5hdmlnYXRpb25Qb2xpY3lDaGVjayBuYXZpZ2F0aW9u
UG9saWN5Q2hlY2spCit2b2lkIFdlYlBhZ2U6OmdvVG9CYWNrRm9yd2FyZEl0ZW0odWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBiYWNrRm9yd2Fy
ZEl0ZW1JRCwgRnJhbWVMb2FkVHlwZSBiYWNrRm9yd2FyZFR5cGUsIE5hdmlnYXRpb25Qb2xpY3lD
aGVjayBuYXZpZ2F0aW9uUG9saWN5Q2hlY2spCiB7CiAgICAgU2VuZFN0b3BSZXNwb25zaXZlbmVz
c1RpbWVyIHN0b3BwZXI7CiAKQEAgLTI0ODgsNyArMjQ4Niw3IEBAIHZvaWQgV2ViUGFnZTo6ZXhl
Y3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYg
YXJndW1lCiB2b2lkIFdlYlBhZ2U6OnJlc3RvcmVTZXNzaW9uSW50ZXJuYWwoY29uc3QgVmVjdG9y
PEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4mIGl0ZW1TdGF0ZXMsIFdhc1Jlc3RvcmVkQnlBUElS
ZXF1ZXN0IHJlc3RvcmVkQnlBUElSZXF1ZXN0KQogewogICAgIGZvciAoY29uc3QgYXV0byYgaXRl
bVN0YXRlIDogaXRlbVN0YXRlcykgewotICAgICAgICBhdXRvIGhpc3RvcnlJdGVtID0gdG9IaXN0
b3J5SXRlbShpdGVtU3RhdGUucGFnZVN0YXRlKTsKKyAgICAgICAgYXV0byBoaXN0b3J5SXRlbSA9
IHRvSGlzdG9yeUl0ZW0oaXRlbVN0YXRlKTsKICAgICAgICAgaGlzdG9yeUl0ZW0tPnNldFdhc1Jl
c3RvcmVkRnJvbVNlc3Npb24ocmVzdG9yZWRCeUFQSVJlcXVlc3QgPT0gV2FzUmVzdG9yZWRCeUFQ
SVJlcXVlc3Q6Olllcyk7CiAgICAgICAgIHN0YXRpY19jYXN0PFdlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5Kj4oY29yZVBhZ2UoKS0+YmFja0ZvcndhcmQoKS5jbGllbnQoKSktPmFkZEl0ZW1Gcm9tVUlQ
cm9jZXNzKGl0ZW1TdGF0ZS5pZGVudGlmaWVyLCBXVEZNb3ZlKGhpc3RvcnlJdGVtKSwgbV9wYWdl
SUQpOwogICAgIH0KQEAgLTQwODIsNyArNDA4MCw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0Q3VzdG9t
VGV4dEVuY29kaW5nTmFtZShjb25zdCBTdHJpbmcmIGVuY29kaW5nKQogICAgIG1fcGFnZS0+bWFp
bkZyYW1lKCkubG9hZGVyKCkucmVsb2FkV2l0aE92ZXJyaWRlRW5jb2RpbmcoZW5jb2RpbmcpOwog
fQogCi12b2lkIFdlYlBhZ2U6OmRpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVt
SUQpCit2b2lkIFdlYlBhZ2U6OmRpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShjb25zdCBCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQpCiB7CiAgICAgV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHk6OnJlbW92ZUl0ZW0oaXRlbUlEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAppbmRleCA1MzAwYjdlZDQ5MjVlMzcxZDg5NTI1ZGY3NWI3ODAxNWNlZWUy
NzE0Li5jM2M2MGYyNzFlNWRjYWYzYjA1MzNiOTU2NzNmMDg1MjlhYWIxNjRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNTQsNiArMTU0LDcgQEAg
ZW51bSBTeW50aGV0aWNDbGlja1R5cGUgOiBpbnQ4X3Q7CiBlbnVtIGNsYXNzIE5hdmlnYXRpb25Q
b2xpY3lDaGVjazsKIGVudW0gY2xhc3MgVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRp
b24gOiB1aW50OF90OwogCitzdHJ1Y3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjsKIHN0cnVj
dCBDb21wb3NpdGlvblVuZGVybGluZTsKIHN0cnVjdCBEaWN0YXRpb25BbHRlcm5hdGl2ZTsKIHN0
cnVjdCBHbG9iYWxGcmFtZUlkZW50aWZpZXI7CkBAIC0xMTUzLDcgKzExNTQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgbG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgTG9hZFBhcmFtZXRlcnMm
KTsKICAgICB2b2lkIG5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0
cmluZyYgdXJsLCBXZWJDb3JlOjpJbnRQb2ludCBkb2N1bWVudFBvaW50LCBXZWJDb3JlOjpJbnRQ
b2ludCBzY3JlZW5Qb2ludCk7CiAgICAgdm9pZCByZWxvYWQodWludDY0X3QgbmF2aWdhdGlvbklE
LCB1aW50MzJfdCByZWxvYWRPcHRpb25zLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7Ci0g
ICAgdm9pZCBnb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0
X3QsIFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUsIFdlYkNvcmU6Ok5hdmlnYXRpb25Qb2xpY3lDaGVj
ayk7CisgICAgdm9pZCBnb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIFdlYkNvcmU6OkZyYW1l
TG9hZFR5cGUsIFdlYkNvcmU6Ok5hdmlnYXRpb25Qb2xpY3lDaGVjayk7CiAgICAgdm9pZCB0cnlS
ZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTsKICAgICB2b2lkIHNldEluaXRpYWxGb2N1cyhib29sIGZv
cndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnN0IFdlYktleWJvYXJkRXZlbnQm
LCBDYWxsYmFja0lEKTsKICAgICB2b2lkIHVwZGF0ZUlzSW5XaW5kb3coYm9vbCBpc0luaXRpYWxT
dGF0ZSA9IGZhbHNlKTsKQEAgLTExODYsNyArMTE4Nyw3IEBAIHByaXZhdGU6CiAgICAgZW51bSBj
bGFzcyBXYXNSZXN0b3JlZEJ5QVBJUmVxdWVzdCB7IE5vLCBZZXMgfTsKICAgICB2b2lkIHJlc3Rv
cmVTZXNzaW9uSW50ZXJuYWwoY29uc3QgVmVjdG9yPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4m
LCBXYXNSZXN0b3JlZEJ5QVBJUmVxdWVzdCk7CiAgICAgdm9pZCByZXN0b3JlU2Vzc2lvbihjb25z
dCBWZWN0b3I8QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPiYpOwotICAgIHZvaWQgZGlkUmVtb3Zl
QmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90KTsKKyAgICB2b2lkIGRpZFJlbW92ZUJhY2tGb3J3YXJk
SXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJik7CiAKICNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICB2b2lkIHNldEFsbG93c1JlbW90ZUluc3BlY3Rp
b24oYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgppbmRleCBjYzcwYTlhYzgxODFlMWNkZTU4M2IyZDM1NzU1NWYzOTcw
NzNlNzFjLi4yYjkwMjFmYTcxNDcyMjk4YmFkOTFjYTNjNmE1YTg2NzM4ZDg4ZTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KQEAgLTEzMSw3ICsxMzEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVy
IHsKICAgICBTY3JvbGxCeSh1aW50MzJfdCBzY3JvbGxEaXJlY3Rpb24sIHVpbnQzMl90IHNjcm9s
bEdyYW51bGFyaXR5KQogICAgIENlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFyZWEoKQogCi0gICAg
R29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90IGJhY2tG
b3J3YXJkSXRlbUlELCBlbnVtIFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUgYmFja0ZvcndhcmRUeXBl
LCBlbnVtIFdlYkNvcmU6Ok5hdmlnYXRpb25Qb2xpY3lDaGVjayBuYXZpZ2F0aW9uUG9saWN5Q2hl
Y2spCisgICAgR29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVj
dCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyIGJhY2tGb3J3YXJkSXRlbUlELCBl
bnVtIFdlYkNvcmU6OkZyYW1lTG9hZFR5cGUgYmFja0ZvcndhcmRUeXBlLCBlbnVtIFdlYkNvcmU6
Ok5hdmlnYXRpb25Qb2xpY3lDaGVjayBuYXZpZ2F0aW9uUG9saWN5Q2hlY2spCiAgICAgVHJ5UmVz
dG9yZVNjcm9sbFBvc2l0aW9uKCkKIAogICAgIExvYWRVUkxJbkZyYW1lKFdlYkNvcmU6OlVSTCB1
cmwsIHVpbnQ2NF90IGZyYW1lSUQpCkBAIC0xNDksNyArMTQ5LDcgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgCiAgICAgUmVzdG9yZVNlc3Npb24oVmVjdG9yPFdl
YktpdDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPiBpdGVtU3RhdGVzKQogCi0gICAgRGlkUmVt
b3ZlQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGJhY2tGb3J3YXJkSXRlbUlEKQorICAgIERpZFJl
bW92ZUJhY2tGb3J3YXJkSXRlbShzdHJ1Y3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRp
ZmllciBiYWNrRm9yd2FyZEl0ZW1JRCkKIAogICAgIFVwZGF0ZVdlYnNpdGVQb2xpY2llcyhzdHJ1
Y3QgV2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhIHdlYnNpdGVQb2xpY2llcykKICAgICBEaWRS
ZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJ
RCwgZW51bSBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6Om9wdGlvbmFsPFdl
YktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338332</attachid>
            <date>2018-04-19 09:46:03 -0700</date>
            <delta_ts>2018-04-19 10:04:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184750-20180419094602.patch</filename>
            <type>text/plain</type>
            <size>70893</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAwOTE2NGI3MDQwMzNiMjc1Y2E0MzRi
ODgxZjVlMDYyNTU2NDZiNGMuLmIxZDI2NGUwNmJjNmQzNWNiYmFjZTAxNWNkODM0YzcxYTU5ZWE3
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDQtMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBnbG9iYWxseS11bmlxdWUgSGlzdG9yeUl0ZW0g
aWRlbnRpZmllcnMgKGFuZCBoYXZlIFdlYktpdDIgYWRvcHQgdGhlbSkuCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8zOTUzMzk0OT4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODQ3NTAKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAg
ICAgICAgKiB3dGYvRGVidWdVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdURjo6ZGVidWdTdHJpbmcp
OgorCiAyMDE4LTA0LTE4ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4K
IAogICAgICAgICBbV2luXSBMYXlvdXQgVGVzdCBqcy9kYXRlLWNvbnN0cnVjdG9yLmh0bWwgaXMg
ZmFpbGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDhjMGJjODdjYzNiNGM1M2FlMTg5ZTgzNTRlNGM0OWZkMWJm
ZjFjNWYuLjJlMzFlOTYxZTA0ZWI1YjE0M2FlMjllYzA4Njk4ZTAzNzVmNjk5ODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzOSBAQAorMjAxOC0wNC0xOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIGdsb2JhbGx5LXVuaXF1ZSBIaXN0b3J5SXRlbSBpZGVu
dGlmaWVycyAoYW5kIGhhdmUgV2ViS2l0MiBhZG9wdCB0aGVtKS4KKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzM5NTMzOTQ5PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NDc1MAorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgKFJlZmFjdG9yLCBubyBiZWhhdmlvciBjaGFuZ2UpLgorCisgICAgICAg
IEluIFdlYkNvcmUsIHdlOgorICAgICAgICAtIEFkZCBhIHByb2Nlc3MtdW5pcXVlICJCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyIgorICAgICAgICAtIE1ha2UgYWxsIEhpc3RvcnlJdGVtcyBoYXZl
IHN1Y2ggYW4gaWRlbnRpZmllciBhcyBhIG1lbWJlcgorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZEl0
ZW1JZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllcjo6bG9nU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9y
PT0pOgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOjpoYXNo
IGNvbnN0KToKKyAgICAgICAgKFdURjo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllckhhc2g6Omhh
c2gpOgorICAgICAgICAoV1RGOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVySGFzaDo6ZXF1YWwp
OgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXI+OjplbXB0eVZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJDb3JlOjpC
YWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAg
ICAgKFdURjo6SGFzaFRyYWl0czxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPjo6
aXNEZWxldGVkVmFsdWUpOgorCisgICAgICAgICogaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIaXN0b3J5SXRlbTo6Z2VuZXJhdGVTZXF1ZW5jZU51bWJlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpIaXN0b3J5SXRlbTo6SGlzdG9yeUl0ZW0pOgorICAgICAgICAoV2Vi
Q29yZTo6Z2VuZXJhdGVTZXF1ZW5jZU51bWJlcik6IERlbGV0ZWQuCisKKyAgICAgICAgKiBoaXN0
b3J5L0hpc3RvcnlJdGVtLmg6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5SXRlbTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlJdGVtOjppZGVudGlmaWVyIGNvbnN0KToKKwog
MjAxOC0wNC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFNl
dCBSZW1vdGVET01XaW5kb3cncyBpbml0aWFsIG9wZW5lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1YjIxMjJkYWUy
MWIzYjRjYzU4N2MyZDI5NTNkZTY2ODU3ZjM0MDRiLi41NDQ3NDhkOWE3NjZiZGU2N2Q3YTgwMDdh
OTE0YTBlN2Q0NTE1MzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAxOC0wNC0xOCAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGdsb2JhbGx5
LXVuaXF1ZSBIaXN0b3J5SXRlbSBpZGVudGlmaWVycyAoYW5kIGhhdmUgV2ViS2l0MiBhZG9wdCB0
aGVtKS4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM5NTMzOTQ5PiBhbmQgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDc1MAorCisgICAgICAgIFJldmlld2VkIGJ5
IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBXaXRoIHByb2Nlc3Mgc3dhcHBpbmcsIHRoZSBhc3N1
bXB0aW9uIHRoYXQgImJhY2svZm9yd2FyZCBpdGVtcyBiZWxvbmcgdG8gYSBwcm9jZXNzIiBpcyBp
bnZhbGlkLgorCisgICAgICAgIEFsbCBIaXN0b3J5SXRlbS9XZWJCYWNrRm9yd2FyZExpc3RJdGVt
cyBub3cgbmVlZCB0byBiZSB1bmlxdWVseSBpZGVudGlmaWVkIGFjcm9zcyBhbGwgcHJvY2Vzc2Vz
LAorICAgICAgICBubyBtYXR0ZXIgd2hpY2ggcHJvY2VzcyB0aGV5IG9yaWdpbmF0ZWQgZnJvbSwg
c28gdGhlcmUgd2lsbCBuZXZlciBiZSBhIGNvbGxpc2lvbiBpbiB0aGUgVUlQcm9jZXNzLgorCisg
ICAgICAgIFRoaXMgYWxsb3dzIHVzIHRvOgorICAgICAgICAtIEhhdmUgdGhlIFVJUHJvY2VzcyB0
byBrZWVwIGEgc2luZ2xlIHByb2Nlc3Mtd2lkZSBtYXAgb2YgYWxsIFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW1zCisgICAgICAgIC0gR2V0IHJpZCBvZiB0aGUgcGVyLVdlYlByb2Nlc3MgV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSBtYXAKKyAgICAgICAgLSBTaW1wbGlmeSBhIGxvdCBvZiBXZWJCYWNrRm9y
d2FyZExpc3QoUHJveHkpIGNvZGUgdGhhdCBubyBsb25nZXIgbmVlZHMgdG8ga2VlcCB0aGF0IHBl
ci1wcm9jZXNzCisgICAgICAgICAgbWFwIGluIHN5bmMKKyAgICAgICAgLSBHZXQgcmlkIG9mIGEg
bG90IG9mIG90aGVyIGFuY2lsbGFyeSBjb2RlCisKKyAgICAgICAgKiBTaGFyZWQvU2Vzc2lvblN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOjpkZWNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9TZXNzaW9uU3RhdGUuaDoKKworICAgICAgICAqIFNoYXJl
ZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0Zv
cndhcmRMaXN0SXRlbTo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06On5XZWJCYWNrRm9yd2FyZExpc3RJdGVtKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUZvcklEKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aGlnaGVzdFVzZWRJdGVtSUQpOiBEZWxl
dGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisgICAgICAg
IChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06Oml0ZW1JRCBjb25zdCk6CisKKyAgICAg
ICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExp
c3Q6Oml0ZW1Gb3JJRCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6cGFn
ZUNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9yZUZyb21TdGF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlV2ViQmFja0ZvcndhcmRJdGVtSUQpOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuaDoKKworICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6Om1heWJlQ3JlYXRlU3VzcGVuZGVkUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVzdG9yZUZyb21TZXNzaW9uU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmJhY2tGb3J3YXJkQWRkSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6YmFja0ZvcndhcmRHb1RvSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
YmFja0ZvcndhcmRJdGVtQXRJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpiYWNr
Rm9yd2FyZFJlbW92ZWRJdGVtKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOiBFeHBsaWNpdGx5IHNldCB0aGUgVUlQ
cm9jZXNzIFByb2Nlc3M6OklkZW50aWZpZXIgc28gaXQgc3RhcnRzCisgICAgICAgICAgYXQgIjEi
IGFuZCB0aGVuIHRoZSBmaXJzdCBjaGlsZCBwcm9jZXNzIHN0YXJ0cyBhdCAiMiIsIGV0YyBldGMu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpjaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZUJhY2tGb3J3YXJkSXRlbSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6d2ViQmFja0ZvcndhcmRJdGVtIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3Rlck5ld1dl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OnJlbW92ZUJhY2tGb3J3YXJkSXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6YWRkT3JVcGRhdGVCYWNrRm9yd2FyZEl0ZW0pOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6dG9CYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjphcHBs
eUZyYW1lU3RhdGUpOgorICAgICAgICAoV2ViS2l0Ojp0b0hpc3RvcnlJdGVtKToKKyAgICAgICAg
KFdlYktpdDo6dG9QYWdlU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5oOgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRHb1RvSGlzdG9yeUl0ZW0gY29uc3Qp
OgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW1G
cm9tVUlQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V0syTm90aWZ5SGlzdG9yeUl0ZW1DaGFu
Z2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Oml0ZW1Gb3JJ
RCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpyZW1vdmVJdGVt
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW0pOiBQ
cmV2aW91c2x5IHRoaXMgd2FzIGEgdHdvLXN0ZXAgcHJvY2VzcyBvZiBhZGRpbmcgYW4gaXRlbQor
ICAgICAgICAgIHRvIHRoZSBwcm9jZXNzIGFuZCB0aGVuIGFzc29jaWF0aW5nIGl0IHdpdGggdGhl
IHBhZ2UuIE5vdyBpdCdzIGp1c3QgZGlyZWN0bHkgYWRkaW5nIGl0IHRvIHRoZSBwYWdlLAorICAg
ICAgICAgIHNvIHdlIGRvbid0IG5lZWQgdG8gY2FsbCB1cGRhdGVCYWNrRm9yd2FyZEl0ZW0gZmly
c3QuCisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5Ojpnb1RvSXRlbSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppdGVtQXRJbmRleCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpjbG9zZSk6CisgICAg
ICAgIChXZWJLaXQ6Omhpc3RvcnlJdGVtVG9JRE1hcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OmdlbmVyYXRlSGlzdG9yeUl0ZW1JRCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YkJhY2tGb3J3YXJkTGlzdFByb3h5OjpzZXRIaWdoZXN0SXRlbUlERnJvbVVJUHJvY2Vzcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OnVwZGF0ZUJhY2tGb3J3YXJkSXRlbSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppZEZvckl0ZW0pOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQ
cm94eS5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjptX2NyZWRlbnRpYWxzTWVzc2VuZ2VyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnJlc3RvcmVTZXNzaW9uSW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRS
ZW1vdmVCYWNrRm9yd2FyZEl0ZW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46
CisKIDIwMTgtMDQtMTggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEFsbG93IFNhbWVPcmlnaW4gY3JlZGVudGlhbHMgaGFuZGxpbmcgZm9yIHN5bmNocm9ub3Vz
IFhIUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGVidWdVdGlsaXRpZXMuaCBiL1NvdXJj
ZS9XVEYvd3RmL0RlYnVnVXRpbGl0aWVzLmgKaW5kZXggYTQ0MWI1Y2RlOGJkMzQ4NjU4YjE4YzE1
MmY5NTViNDU5MGNmZjhiNC4uZGIzZDU2NjViZGE1YzA3MWM0ODU4ZWM2MjZhNmQxMjEzZDNkY2Y5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGVidWdVdGlsaXRpZXMuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9EZWJ1Z1V0aWxpdGllcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGUuaD4KIApAQCAtNDIsNiArNDMsMTIgQEAgZG8geyBcCiAKIG5hbWVzcGFj
ZSBXVEYgewogCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlPgorY29uc3QgY2hhciogZGVi
dWdTdHJpbmcoU3RyaW5nVHlwZSBzdHJpbmcpCit7CisgICAgcmV0dXJuIGRlYnVnU3RyaW5nKHN0
cmluZywgIiIpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBTdHJpbmdUeXBlcz4KIGNvbnN0
IGNoYXIqIGRlYnVnU3RyaW5nKFN0cmluZ1R5cGVzLi4uIHN0cmluZ3MpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDFkY2Qz
ZWVkZmFhNzU1ZTA2M2M2ZTc5ZjM5ODUwNDcxY2YzM2FiNC4uMDM5MTQ4OTUyMmE3OTAyZjA2NzM4
YzgxMDQ0Mzg2OWI0ZTA1NzliYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ2Niw2ICsxNDY2LDcgQEAKIAkJNTE5REJDNzIx
REMxMEY1MjAwMzI5QkY1IC8qIElEQkdldEFsbFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE5REJDNzExREMxMEQzMzAwMzI5QkY1IC8qIElE
QkdldEFsbFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUxQTA1MjMzMTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBMDUyMzEx
MDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFBMDUyNTYxMDU4ODc0MDAwQ0M5RTk1
IC8qIFByb3RlY3Rpb25TcGFjZUhhc2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQTA1MjU1MTA1ODg3NDAwMENDOUU5NSAvKiBQcm90ZWN0aW9uU3Bh
Y2VIYXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNTFBMUI4N0QyMDg3QzRDMDAwOTc5QTc1IC8qIEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTFCODdC
MjA4N0M0QjgwMDk3OUE3NSAvKiBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFBNEJCMEExOTU0RDYx
NjAwRkE1QzJFIC8qIEdhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFBNEJCMDcxOTU0RDYxNjAwRkE1QzJFIC8qIEdhbWVwYWQuY3BwICov
OyB9OwogCQk1MUE0QkIxMDE5NTRENjI3MDBGQTVDMkUgLyogTmF2aWdhdG9yR2FtZXBhZC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE0QkIwRDE5
NTRENjI3MDBGQTVDMkUgLyogTmF2aWdhdG9yR2FtZXBhZC5jcHAgKi87IH07CiAJCTUxQTc0OEUz
MjAwNUQwRTgwMDc1QkE2OCAvKiBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBNzQ4RTAyMDA1RDBFMDAwNzVC
QTY4IC8qIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc5NTQsNiArNzk1NSw3IEBACiAJCTUxQTA1MjMx
MTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDcmVkZW50aWFsU3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUEwNTIzMjEwNTg3NzRGMDBDQzlFOTUgLyogQ3JlZGVudGlhbFN0b3JhZ2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3JlZGVudGlhbFN0b3Jh
Z2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUEwNTI1NTEwNTg4NzQwMDBD
QzlFOTUgLyogUHJvdGVjdGlvblNwYWNlSGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQcm90ZWN0aW9uU3BhY2VIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxQTFCODdCMjA4N0M0QjgwMDk3OUE3NSAvKiBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBNEJCMDcxOTU0RDYxNjAw
RkE1QzJFIC8qIEdhbWVwYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR2FtZXBhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQTRCQjA4MTk1
NEQ2MTYwMEZBNUMyRSAvKiBHYW1lcGFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdhbWVwYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBNEJCMDkxOTU0
RDYxNjAwRkE1QzJFIC8qIEdhbWVwYWQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdhbWVw
YWQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc1ODYsNiArMTc1ODgsNyBA
QAogCQkJCTUxNzQxRDBCMEIwNzI1OUEwMEVENDQyQyAvKiBCYWNrRm9yd2FyZENsaWVudC5oICov
LAogCQkJCUJDQThDODFEMTFFM0QzNjkwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZENvbnRyb2xsZXIu
Y3BwICovLAogCQkJCUJDQThDODFDMTFFM0QzNjkwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZENvbnRy
b2xsZXIuaCAqLywKKwkJCQk1MUExQjg3QjIwODdDNEI4MDA5NzlBNzUgLyogQmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllci5oICovLAogCQkJCTUxQzBBQTQwMEYyQUExNUUwMDE2NDhDMiAvKiBDYWNo
ZWRGcmFtZS5jcHAgKi8sCiAJCQkJNTFDMEFBMzgwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZy
YW1lLmggKi8sCiAJCQkJNTFDQkZDOTgwRDEwRTQ4MzAwMkRCRjUxIC8qIENhY2hlZEZyYW1lUGxh
dGZvcm1EYXRhLmggKi8sCkBAIC0yNjkyMiw2ICsyNjkyNSw3IEBACiAJCQkJOTFDOUYyRjkxQUUz
QkVCMDAwOTVCNjFDIC8qIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTc0MUQwRjBCMDcyNTlBMDBFRDQ0MkMgLyogQmFja0ZvcndhcmRDbGllbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDQThDODFFMTFFM0QzNjkwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZENv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQTFCODdEMjA4N0M0QzAwMDk3OUE3NSAv
KiBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzEyNEVF
ODBDMjY0MUNEMDA5RTIzNDkgLyogQmFyUHJvcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDYwQkI2
MTYxRDBBMUJGMDAwMjIxODEyIC8qIEJhc2U2NFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzc5RTYxQ0ExMjZDQTVDNDAwQjYzRThEIC8qIEJhc2VCdXR0b25JbnB1dFR5cGUuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZGVkNjRhZDRmM2NhMWYyMmNkMmNmNGY2MDc5Y2Uy
Y2MxMTVjZDNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyLmgKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlByb2Nlc3MuaCIKKyNpbmNsdWRlIDx3dGYvRGVidWdV
dGlsaXRpZXMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXIgeworICAgIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVy
OworICAgIGVudW0gSXRlbUlkZW50aWZpZXJUeXBlIHsgfTsKKyAgICBPYmplY3RJZGVudGlmaWVy
PEl0ZW1JZGVudGlmaWVyVHlwZT4gaXRlbUlkZW50aWZpZXI7CisKKyAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3Q7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKKworI2lm
ICFMT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dTdHJpbmcoKSBjb25zdDsKKyNlbmRp
ZgorfTsKKworI2lmICFMT0dfRElTQUJMRUQKK2lubGluZSBjb25zdCBjaGFyKiBCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyOjpsb2dTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBkZWJ1Z1N0
cmluZyhTdHJpbmc6Om51bWJlcihwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKSwgIi0iLCBT
dHJpbmc6Om51bWJlcihpdGVtSWRlbnRpZmllci50b1VJbnQ2NCgpKSk7Cit9CisjZW5kaWYKKwor
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBh
LCBjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBiKQoreworICAgIHJldHVybiBhLnBy
b2Nlc3NJZGVudGlmaWVyID09IGIucHJvY2Vzc0lkZW50aWZpZXIgJiYgIGEuaXRlbUlkZW50aWZp
ZXIgPT0gYi5pdGVtSWRlbnRpZmllcjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3Zv
aWQgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Cit7CisgICAgZW5jb2RlciA8PCBwcm9jZXNzSWRlbnRpZmllciA8PCBpdGVtSWRlbnRpZmll
cjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8QmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllcj4gQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxQcm9jZXNzSWRlbnRpZmllcj4gcHJv
Y2Vzc0lkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBwcm9jZXNzSWRlbnRpZmllcjsKKyAgICBp
ZiAoIXByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgc3RkOjpvcHRpb25hbDxPYmplY3RJZGVudGlmaWVyPEl0ZW1JZGVudGlmaWVyVHlwZT4+IGl0
ZW1JZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gaXRlbUlkZW50aWZpZXI7CisgICAgaWYgKCFp
dGVtSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVy
biB7IHsgV1RGTW92ZSgqcHJvY2Vzc0lkZW50aWZpZXIpLCBXVEZNb3ZlKCppdGVtSWRlbnRpZmll
cikgfSB9OworfQorCitpbmxpbmUgdW5zaWduZWQgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6
aGFzaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbXB1dGVIYXNoKHByb2Nlc3NJZGVudGlmaWVy
LnRvVUludDY0KCksIGl0ZW1JZGVudGlmaWVyLnRvVUludDY0KCkpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCitzdHJ1Y3QgQmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllckhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYkNvcmU6
OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQor
ICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXImIGEsIGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGIpIHsg
cmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0Vt
cHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8
V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gOiBHZW5lcmljSGFzaFRyYWl0czxX
ZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiB7CisgICAgc3RhdGljIFdlYkNvcmU6
OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHsgfTsgfQor
CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OkJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXImIHNsb3QpIHsgc2xvdC5wcm9jZXNzSWRlbnRpZmllciA9IE9iamVj
dElkZW50aWZpZXI8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXJUeXBlPihIYXNoVGFibGVEZWxl
dGVkVmFsdWUpOyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJD
b3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBzbG90KSB7IHJldHVybiBzbG90LnByb2Nl
c3NJZGVudGlmaWVyLnRvVUludDY0KCkgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46
Om1heCgpOyB9Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpC
YWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiB7CisgICAgdHlwZWRlZiBCYWNrRm9yd2FyZEl0ZW1J
ZGVudGlmaWVySGFzaCBIYXNoOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCmluZGV4IDlkODY4OTg4YWQwZWRhZTAwZDk1Zjg0MmZk
MzgyMzI0ZGY5ZjU1ODQuLmE1YmE5NWU0MzU2NjQzY2I3ZWYzMjM3YWU2MjJjZTM4NzhlNjY3N2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCkBAIC00MCw3ICs0MCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGxvbmcgbG9uZyBnZW5lcmF0ZVNlcXVl
bmNlTnVtYmVyKCkKK2ludDY0X3QgSGlzdG9yeUl0ZW06OmdlbmVyYXRlU2VxdWVuY2VOdW1iZXIo
KQogewogICAgIC8vIEluaXRpYWxpemUgdG8gdGhlIGN1cnJlbnQgdGltZSB0byByZWR1Y2UgdGhl
IGxpa2VsaWhvb2Qgb2YgZ2VuZXJhdGluZwogICAgIC8vIGlkZW50aWZpZXJzIHRoYXQgb3Zlcmxh
cCB3aXRoIHRob3NlIGZyb20gcGFzdC9mdXR1cmUgYnJvd3NlciBzZXNzaW9ucy4KQEAgLTU1LDMx
ICs1NSwyNyBAQCBzdGF0aWMgdm9pZCBkZWZhdWx0Tm90aWZ5SGlzdG9yeUl0ZW1DaGFuZ2VkKEhp
c3RvcnlJdGVtKikKIFdFQkNPUkVfRVhQT1JUIHZvaWQgKCpub3RpZnlIaXN0b3J5SXRlbUNoYW5n
ZWQpKEhpc3RvcnlJdGVtKikgPSBkZWZhdWx0Tm90aWZ5SGlzdG9yeUl0ZW1DaGFuZ2VkOwogCiBI
aXN0b3J5SXRlbTo6SGlzdG9yeUl0ZW0oKQotICAgIDogbV9pdGVtU2VxdWVuY2VOdW1iZXIoZ2Vu
ZXJhdGVTZXF1ZW5jZU51bWJlcigpKQotICAgICwgbV9kb2N1bWVudFNlcXVlbmNlTnVtYmVyKGdl
bmVyYXRlU2VxdWVuY2VOdW1iZXIoKSkKLSAgICAsIG1fcHJ1bmluZ1JlYXNvbihQcnVuaW5nUmVh
c29uOjpOb25lKQorICAgIDogSGlzdG9yeUl0ZW0oeyB9LCB7IH0pCiB7CiB9CiAKIEhpc3RvcnlJ
dGVtOjpIaXN0b3J5SXRlbShjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiB0
aXRsZSkKLSAgICA6IG1fdXJsU3RyaW5nKHVybFN0cmluZykKLSAgICAsIG1fb3JpZ2luYWxVUkxT
dHJpbmcodXJsU3RyaW5nKQotICAgICwgbV90aXRsZSh0aXRsZSkKLSAgICAsIG1faXRlbVNlcXVl
bmNlTnVtYmVyKGdlbmVyYXRlU2VxdWVuY2VOdW1iZXIoKSkKLSAgICAsIG1fZG9jdW1lbnRTZXF1
ZW5jZU51bWJlcihnZW5lcmF0ZVNlcXVlbmNlTnVtYmVyKCkpCi0gICAgLCBtX3BydW5pbmdSZWFz
b24oUHJ1bmluZ1JlYXNvbjo6Tm9uZSkKKyAgICA6IEhpc3RvcnlJdGVtKHVybFN0cmluZywgdGl0
bGUsIHsgfSkKIHsKIH0KIAogSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGFsdGVybmF0ZVRp
dGxlKQorICAgIDogSGlzdG9yeUl0ZW0odXJsU3RyaW5nLCB0aXRsZSwgYWx0ZXJuYXRlVGl0bGUs
IHsgUHJvY2Vzczo6aWRlbnRpZmllcigpLCBnZW5lcmF0ZU9iamVjdElkZW50aWZpZXI8QmFja0Zv
cndhcmRJdGVtSWRlbnRpZmllcjo6SXRlbUlkZW50aWZpZXJUeXBlPigpIH0pCit7Cit9CisKK0hp
c3RvcnlJdGVtOjpIaXN0b3J5SXRlbShjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGVUaXRsZSwgQmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllciBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyKQogICAgIDogbV91cmxTdHJpbmco
dXJsU3RyaW5nKQogICAgICwgbV9vcmlnaW5hbFVSTFN0cmluZyh1cmxTdHJpbmcpCiAgICAgLCBt
X3RpdGxlKHRpdGxlKQogICAgICwgbV9kaXNwbGF5VGl0bGUoYWx0ZXJuYXRlVGl0bGUpCi0gICAg
LCBtX3BhZ2VTY2FsZUZhY3RvcigwKQotICAgICwgbV9pdGVtU2VxdWVuY2VOdW1iZXIoZ2VuZXJh
dGVTZXF1ZW5jZU51bWJlcigpKQotICAgICwgbV9kb2N1bWVudFNlcXVlbmNlTnVtYmVyKGdlbmVy
YXRlU2VxdWVuY2VOdW1iZXIoKSkKICAgICAsIG1fcHJ1bmluZ1JlYXNvbihQcnVuaW5nUmVhc29u
OjpOb25lKQorICAgICwgbV9pZGVudGlmaWVyKEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIpCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaCBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAppbmRleCA0ZDFlMmNkZDc0NjEy
ZjQ4Y2NmMjJmNzQxY2Y5OTU0NzdjOGE1NmNmLi5lZTQ2NmM3ZjE0ZDFiZjhlNzRjMDk1ZjEyNmNi
OWE3NWE2NWY3ZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJ
dGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCkBAIC0yNiw2
ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQmFja0ZvcndhcmRJdGVtSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVy
VHlwZXMuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgpAQCAtNjIsMjAgKzYzLDMyIEBAIGNsYXNz
IEhpc3RvcnlJdGVtIDogcHVibGljIFJlZkNvdW50ZWQ8SGlzdG9yeUl0ZW0+IHsKICAgICBmcmll
bmQgY2xhc3MgUGFnZUNhY2hlOwogCiBwdWJsaWM6IAotICAgIHN0YXRpYyBSZWY8SGlzdG9yeUl0
ZW0+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSGlzdG9yeUl0ZW0pOyB9CisgICAg
c3RhdGljIFJlZjxIaXN0b3J5SXRlbT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEhpc3RvcnlJdGVtKTsKKyAgICB9CisKICAgICBzdGF0aWMgUmVmPEhpc3Rv
cnlJdGVtPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdGl0
bGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIaXN0b3J5SXRlbSh1cmxT
dHJpbmcsIHRpdGxlKSk7CiAgICAgfQorCiAgICAgc3RhdGljIFJlZjxIaXN0b3J5SXRlbT4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBT
dHJpbmcmIGFsdGVybmF0ZVRpdGxlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSGlzdG9yeUl0ZW0odXJsU3RyaW5nLCB0aXRsZSwgYWx0ZXJuYXRlVGl0bGUpKTsKICAgICB9
CisKKyAgICBzdGF0aWMgUmVmPEhpc3RvcnlJdGVtPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRlVGl0bGUs
IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEhpc3RvcnlJdGVtKHVybFN0cmluZywgdGl0bGUsIGFsdGVybmF0
ZVRpdGxlLCBpZGVudGlmaWVyKSk7CisgICAgfQogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIH5I
aXN0b3J5SXRlbSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEhpc3RvcnlJdGVtPiBjb3B5
KCkgY29uc3Q7CiAKKyAgICBjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKICAgICAvLyBSZXNldHMgdGhl
IEhpc3RvcnlJdGVtIHRvIGl0cyBpbml0aWFsIHN0YXRlLCBhcyByZXR1cm5lZCBieSBjcmVhdGUo
KS4KICAgICB2b2lkIHJlc2V0KCk7CiAgICAgCkBAIC0yMDYsOSArMjE5LDEyIEBAIHByaXZhdGU6
CiAgICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0oKTsKICAgICBXRUJDT1JFX0VYUE9SVCBI
aXN0b3J5SXRlbShjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiB0aXRsZSk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRlVGl0bGUpOworICAg
IFdFQkNPUkVfRVhQT1JUIEhpc3RvcnlJdGVtKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGFsdGVybmF0ZVRpdGxlLCBCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyKTsKIAogICAgIEhpc3RvcnlJdGVtKGNvbnN0IEhpc3RvcnlJdGVtJik7
CiAKKyAgICBzdGF0aWMgaW50NjRfdCBnZW5lcmF0ZVNlcXVlbmNlTnVtYmVyKCk7CisKICAgICBi
b29sIGhhc1NhbWVEb2N1bWVudFRyZWUoSGlzdG9yeUl0ZW0mIG90aGVySXRlbSkgY29uc3Q7CiAK
ICAgICBTdHJpbmcgbV91cmxTdHJpbmc7CkBAIC0yMzUsMTIgKzI1MSwxMiBAQCBwcml2YXRlOgog
ICAgIC8vIGNsb25lcyBvZiBvbmUgYW5vdGhlci4gIFRyYXZlcnNpbmcgaGlzdG9yeSBmcm9tIG9u
ZSBzdWNoIEhpc3RvcnlJdGVtIHRvCiAgICAgLy8gYW5vdGhlciBpcyBhIG5vLW9wLiAgSGlzdG9y
eUl0ZW0gY2xvbmVzIGFyZSBjcmVhdGVkIGZvciBwYXJlbnQgYW5kCiAgICAgLy8gc2libGluZyBm
cmFtZXMgd2hlbiBvbmx5IGEgc3ViZnJhbWUgbmF2aWdhdGVzLgotICAgIGludDY0X3QgbV9pdGVt
U2VxdWVuY2VOdW1iZXI7CisgICAgaW50NjRfdCBtX2l0ZW1TZXF1ZW5jZU51bWJlciB7IGdlbmVy
YXRlU2VxdWVuY2VOdW1iZXIoKSB9OwogCiAgICAgLy8gSWYgdHdvIEhpc3RvcnlJdGVtcyBoYXZl
IHRoZSBzYW1lIGRvY3VtZW50IHNlcXVlbmNlIG51bWJlciwgdGhlbiB0aGV5CiAgICAgLy8gcmVm
ZXIgdG8gdGhlIHNhbWUgaW5zdGFuY2Ugb2YgYSBkb2N1bWVudC4gIFRyYXZlcnNpbmcgaGlzdG9y
eSBmcm9tIG9uZQogICAgIC8vIHN1Y2ggSGlzdG9yeUl0ZW0gdG8gYW5vdGhlciBwcmVzZXJ2ZXMg
dGhlIGRvY3VtZW50LgotICAgIGludDY0X3QgbV9kb2N1bWVudFNlcXVlbmNlTnVtYmVyOworICAg
IGludDY0X3QgbV9kb2N1bWVudFNlcXVlbmNlTnVtYmVyIHsgZ2VuZXJhdGVTZXF1ZW5jZU51bWJl
cigpIH07CiAKICAgICAvLyBTdXBwb3J0IGZvciBIVE1MNSBIaXN0b3J5CiAgICAgUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9zdGF0ZU9iamVjdDsKQEAgLTI2OCw2ICsyODQsOCBAQCBw
cml2YXRlOgogICAgIFJldGFpblB0cjxpZD4gbV92aWV3U3RhdGU7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8aWQ+Pj4gbV90cmFuc2llbnRQcm9wZXJ0aWVz
OwogI2VuZGlmCisKKyAgICBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyIG1faWRlbnRpZmllcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3Rh
dGUuY3BwCmluZGV4IDkxMWQyZTczNzc4YzllZjVhYThmNWIzMjM5Y2RiYzhkNTQxMjYyMjguLmQ3
N2JiZTdjNWY0ZDI1ODlhNTNiOWNjYzM3MTc3NWZjZDRkNzZhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2Vzc2lvblN0YXRlLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlNlc3Npb25T
dGF0ZS5oIgogCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCkBAIC0yMzIsOCArMjMzLDEwIEBAIHN0ZDo6b3B0aW9uYWw8QmFja0ZvcndhcmRM
aXN0SXRlbVN0YXRlPiBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU6OmRlY29kZShJUEM6OkRlCiB7
CiAgICAgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIHJlc3VsdDsKIAotICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LmlkZW50aWZpZXIpKQorICAgIGF1dG8gaWRlbnRpZmllciA9IEJhY2tG
b3J3YXJkSXRlbUlkZW50aWZpZXI6OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIWlkZW50aWZp
ZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmVzdWx0LmlkZW50aWZpZXIg
PSAqaWRlbnRpZmllcjsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBhZ2VTdGF0
ZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25T
dGF0ZS5oCmluZGV4IDE0ODIxNDQ1Yzg3ZmU0MzM1NTc5NjJiY2IzNDk5M2U1MWQyZjJhZmUuLmRi
M2RmZGE4NTRjYWYxNzgwYzJkZWY4MTc2YTEyZjc5OWI4NTE4YTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1Nlc3Npb25TdGF0ZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVmlld1NuYXBzaG90
U3RvcmUuaCIKICNlbmRpZgogCisjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZEl0ZW1JZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KQEAg
LTEyNyw3ICsxMjgsNyBAQCBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIHsKICAgICB2
b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIAotICAg
IHVpbnQ2NF90IGlkZW50aWZpZXI7CisgICAgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRp
ZmllciBpZGVudGlmaWVyOwogCiAgICAgUGFnZVN0YXRlIHBhZ2VTdGF0ZTsKICNpZiBQTEFURk9S
TShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRl
bS5jcHAKaW5kZXggMWFjZDVkZGNhNWU4OWE1MzExMjgxODc3YmYwOTA1ZWE4YTE3YjI5Yi4uYTcz
OGM3ZGEzM2JjMTMzNTI0NmRmODFkYWQzYmFkMmM1NThiOGY1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKQEAgLTI4LDkgKzI4LDkgQEAK
IAogI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgewordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRpYyB1aW50NjRfdCBoaWdoZXN0SXRlbUlEID0gMDsK
K25hbWVzcGFjZSBXZWJLaXQgewogCiBSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tG
b3J3YXJkTGlzdEl0ZW1TdGF0ZSwgdWludDY0X3QgcGFnZUlEKQogewpAQCAtNDEsMTIgKzQxLDI1
IEBAIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0Zv
cndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvCiAgICAgOiBtX2l0ZW1TdGF0ZShXVEZNb3ZlKGJh
Y2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSkpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiB7Ci0gICAg
aWYgKG1faXRlbVN0YXRlLmlkZW50aWZpZXIgPiBoaWdoZXN0SXRlbUlEKQotICAgICAgICBoaWdo
ZXN0SXRlbUlEID0gbV9pdGVtU3RhdGUuaWRlbnRpZmllcjsKKyAgICBhdXRvIHJlc3VsdCA9IGFs
bEl0ZW1zKCkuYWRkKG1faXRlbVN0YXRlLmlkZW50aWZpZXIsIHRoaXMpOworICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKIFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW06On5XZWJCYWNrRm9yd2FyZExpc3RJdGVtKCkKIHsKKyAgICBBU1NFUlQoYWxsSXRlbXMo
KS5nZXQobV9pdGVtU3RhdGUuaWRlbnRpZmllcikgPT0gdGhpcyk7CisgICAgYWxsSXRlbXMoKS5y
ZW1vdmUobV9pdGVtU3RhdGUuaWRlbnRpZmllcik7Cit9CisKK0hhc2hNYXA8QmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllciwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSo+JiBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtOjphbGxJdGVtcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSo+PiBpdGVt
czsKKyAgICByZXR1cm4gaXRlbXM7Cit9CisKK1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW06Oml0ZW1Gb3JJRChjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyJiBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBhbGxJdGVtcygpLmdldChpZGVudGlmaWVy
KTsKIH0KIAogc3RhdGljIGNvbnN0IEZyYW1lU3RhdGUqIGNoaWxkSXRlbVdpdGhEb2N1bWVudFNl
cXVlbmNlTnVtYmVyKGNvbnN0IEZyYW1lU3RhdGUmIGZyYW1lU3RhdGUsIGludDY0X3QgbnVtYmVy
KQpAQCAtOTgsMTEgKzExMSw2IEBAIGJvb2wgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUlz
SW5TYW1lRG9jdW1lbnQoY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYKICAgICByZXR1cm4g
ZG9jdW1lbnRUcmVlc0FyZUVxdWFsKG1haW5GcmFtZVN0YXRlLCBvdGhlck1haW5GcmFtZVN0YXRl
KTsKIH0KIAotdWludDY0X3QgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aGlnaGVzdFVzZWRJdGVt
SUQoKQotewotICAgIHJldHVybiBoaWdoZXN0SXRlbUlEOwotfQotCiB2b2lkIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW06OnNldFN1c3BlbmRlZFBhZ2UoU3VzcGVuZGVkUGFnZVByb3h5JiBwYWdlKQog
ewogICAgIG1fc3VzcGVuZGVkUGFnZSA9ICZwYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCmluZGV4IDRlYTJjYTcwMTA2NWMxMGNlN2YwMTEyZDY3
NjM2MWNhMTk1NmQ5ZjkuLjNjMWNjMjk5YjFiOGIxZWMzNWQ4YzRjNDA5YTZkMzIyNTMwYzAwZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKQEAg
LTQ4LDcgKzQ4LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0+IGNyZWF0ZShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiwgdWludDY0X3QgcGFnZUlE
KTsKICAgICB2aXJ0dWFsIH5XZWJCYWNrRm9yd2FyZExpc3RJdGVtKCk7CiAKLSAgICB1aW50NjRf
dCBpdGVtSUQoKSBjb25zdCB7IHJldHVybiBtX2l0ZW1TdGF0ZS5pZGVudGlmaWVyOyB9CisgICAg
c3RhdGljIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW1Gb3JJRChjb25zdCBXZWJDb3JlOjpC
YWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJik7CisgICAgc3RhdGljIEhhc2hNYXA8V2ViQ29yZTo6
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSo+JiBhbGxJ
dGVtcygpOworCisgICAgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYg
aXRlbUlEKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtU3RhdGUuaWRlbnRpZmllcjsgfQogICAgIGNv
bnN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYgaXRlbVN0YXRlKCkgeyByZXR1cm4gbV9pdGVt
U3RhdGU7IH0KICAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsg
fQogCkBAIC02Nyw4ICs3MCw2IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHZvaWQgc2V0U3VzcGVu
ZGVkUGFnZShTdXNwZW5kZWRQYWdlUHJveHkmKTsKIAotICAgIHN0YXRpYyB1aW50NjRfdCBoaWdo
ZXN0VXNlZEl0ZW1JRCgpOwotCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIHVpbnQ2NF90IHBhZ2VJRCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHAKaW5kZXggMjYzMDM0YTQ3OTIyMTBiYzFjMDhkZWY4Y2U2ZDdjNjQyYzViZjczNy4uM2NmZTNi
MmU1YjE0MjU5MWNhNjZhODIyOGI5MjI5MDM3YzBlMzFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTUzLDcgKzUzLDYg
QEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgdXNlckFnZW50OwogICAgIGVuY29kZXIgPDwg
aXRlbVN0YXRlczsKICAgICBlbmNvZGVyIDw8IHNlc3Npb25JRDsKLSAgICBlbmNvZGVyIDw8IGhp
Z2hlc3RVc2VkQmFja0ZvcndhcmRJdGVtSUQ7CiAgICAgZW5jb2RlciA8PCB1c2VyQ29udGVudENv
bnRyb2xsZXJJRC50b1VJbnQ2NCgpOwogICAgIGVuY29kZXIgPDwgdmlzaXRlZExpbmtUYWJsZUlE
OwogICAgIGVuY29kZXIgPDwgd2Vic2l0ZURhdGFTdG9yZUlEOwpAQCAtMTc3LDggKzE3Niw2IEBA
IHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMuc2Vzc2lvbklEKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuaGlnaGVzdFVzZWRCYWNrRm9yd2FyZEl0ZW1JRCkp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gdXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBiYWViYWY0ZDQxMDA4OTY1YTU2ZjRj
MWMzZjIxYWNlODczZWE0MzI2Li41NzNlMTc5MzJiZTJmZmIzZGM3NzMxZThhMTI0NWQxYzNjNzg4
Y2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oCkBAIC05Niw3ICs5Niw2IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
IHsKIAogICAgIFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+IGl0ZW1TdGF0ZXM7CiAg
ICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEOwotICAgIHVpbnQ2NF90IGhpZ2hlc3RVc2VkQmFj
a0ZvcndhcmRJdGVtSUQ7CiAKICAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVz
ZXJDb250ZW50Q29udHJvbGxlcklEOwogICAgIHVpbnQ2NF90IHZpc2l0ZWRMaW5rVGFibGVJRDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZp
ZXdTZXNzaW9uU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViVmlld1Nlc3Npb25TdGF0ZS5jcHAKaW5kZXggOWNiNWQ5MzM1NTA1YTgzOGI5MDQ5ZTQ0
NjgwM2U0MTQyOWJjYjgyMC4uZDA0NTI2Yzg1YzkzZGZiMDczZDlkNWNhZmJkMzBmNTExMDllZWJk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Vmlld1Nlc3Npb25TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZS5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNs
dWRlICJXZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlLmgiCiAKICNpbmNsdWRlICJXZWJLaXRXZWJW
aWV3U2Vzc2lvblN0YXRlUHJpdmF0ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAKQEAgLTM0NCw3ICszNDUsNyBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgZGVjb2RlQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKEdWYXJpYW50SXRlciogYmFj
a0ZvcndhcmRMaXN0UwogICAgIHVuc2lnbmVkIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7
CiAgICAgd2hpbGUgKGdfdmFyaWFudF9pdGVyX2xvb3AoYmFja0ZvcndhcmRMaXN0U3RhdGVJdGVy
LCBCQUNLX0ZPUldBUkRfTElTVF9JVEVNX0ZPUk1BVF9TVFJJTkdfVjEsICZpZGVudGlmaWVyLCAm
dGl0bGUsICZmcmFtZVN0YXRlVmFyaWFudCwgJnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kp
KSB7CiAgICAgICAgIEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSBzdGF0ZTsKLSAgICAgICAgc3Rh
dGUuaWRlbnRpZmllciA9IGlkZW50aWZpZXI7CisgICAgICAgIHN0YXRlLmlkZW50aWZpZXIgPSB7
IFByb2Nlc3M6OmlkZW50aWZpZXIoKSwgZ2VuZXJhdGVPYmplY3RJZGVudGlmaWVyPEJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXI6Okl0ZW1JZGVudGlmaWVyVHlwZT4oKSB9OwogICAgICAgICBzdGF0
ZS5wYWdlU3RhdGUudGl0bGUgPSBTdHJpbmc6OmZyb21VVEY4KHRpdGxlKTsKICAgICAgICAgZGVj
b2RlRnJhbWVTdGF0ZShmcmFtZVN0YXRlVmFyaWFudCwgc3RhdGUucGFnZVN0YXRlLm1haW5GcmFt
ZVN0YXRlKTsKICAgICAgICAgc3RhdGUucGFnZVN0YXRlLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgPSB0b1dlYkNvcmVFeHRlcm5hbFVSTHNQb2xpY3koc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9y
d2FyZExpc3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0
LmNwcAppbmRleCA5OTgyZDgxNjM3MGJmYmFlYjEwMWE4N2I5ZTRhOTk4MGRiNmY3NjY1Li5mMGMz
OTQxZmFkN2FlYWVlYjg0YjVhYWUxZjVkZWZmMTU3ZjhkNTA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTM2LDE5ICszNiw2IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotLy8gRklYTUU6
IE1ha2UgdGhpcyBzdGF0aWMgb25jZSBXZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAgaXMgbm8gbG9u
Z2VyIHVzaW5nIGl0LgotdWludDY0X3QgZ2VuZXJhdGVXZWJCYWNrRm9yd2FyZEl0ZW1JRCgpOwot
Ci11aW50NjRfdCBnZW5lcmF0ZVdlYkJhY2tGb3J3YXJkSXRlbUlEKCkKLXsKLSAgICAvLyBUaGVz
ZSBJRHMgZXhpc3QgaW4gdGhlIFVJUHJvY2VzcyBmb3IgaXRlbXMgY3JlYXRlZCBieSB0aGUgVUlQ
cm9jZXNzLgotICAgIC8vIFRoZSBJRHMgZ2VuZXJhdGVkIGhlcmUgbmVlZCB0byBuZXZlciBjb2xs
aWRlIHdpdGggdGhlIElEcyBjcmVhdGVkIGluIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5IGluIHRo
ZSBXZWJQcm9jZXNzLgotICAgIC8vIFdlIGFjY29tcGxpc2ggdGhpcyBieSBzdGFydGluZyBmcm9t
IDIsIGFuZCBvbmx5IGV2ZXIgdXNpbmcgZXZlbiBpZHMuCi0gICAgc3RhdGljIHVpbnQ2NF90IHVu
aXF1ZUhpc3RvcnlJdGVtSUQgPSAwOwotICAgIHVuaXF1ZUhpc3RvcnlJdGVtSUQgKz0gMjsKLSAg
ICByZXR1cm4gdW5pcXVlSGlzdG9yeUl0ZW1JRDsKLX0KLQogc3RhdGljIGNvbnN0IHVuc2lnbmVk
IERlZmF1bHRDYXBhY2l0eSA9IDEwMDsKIAogV2ViQmFja0ZvcndhcmRMaXN0OjpXZWJCYWNrRm9y
d2FyZExpc3QoV2ViUGFnZVByb3h5JiBwYWdlKQpAQCAtNjUsNiArNTIsMTkgQEAgV2ViQmFja0Zv
cndhcmRMaXN0Ojp+V2ViQmFja0ZvcndhcmRMaXN0KCkKICAgICBBU1NFUlQoKCFtX3BhZ2UgJiYg
IW1faGFzQ3VycmVudEluZGV4KSB8fCAhbV9wYWdlLT5pc1ZhbGlkKCkpOwogfQogCitXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtKiBXZWJCYWNrRm9yd2FyZExpc3Q6Oml0ZW1Gb3JJRChjb25zdCBCYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIGlmICghbV9wYWdlKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8qIGl0ZW0gPSBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtOjppdGVtRm9ySUQoaWRlbnRpZmllcik7CisgICAgaWYgKCFpdGVtKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIEFTU0VSVChpdGVtLT5wYWdlSUQoKSA9PSBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICByZXR1cm4gaXRlbTsKK30KKwogdm9pZCBXZWJCYWNrRm9yd2FyZExp
c3Q6OnBhZ2VDbG9zZWQoKQogewogICAgIC8vIFdlIHNob3VsZCBoYXZlIGFsd2F5cyBzdGFydGVk
IG91dCB3aXRoIGFuIG1fcGFnZSBhbmQgd2Ugc2hvdWxkIG5ldmVyIGNsb3NlIHRoZSBwYWdlIHR3
aWNlLgpAQCAtNzYsMTYgKzc2LDE2IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjpwYWdlQ2xv
c2VkKCkKICAgICAgICAgICAgIGRpZFJlbW92ZUl0ZW0obV9lbnRyaWVzW2ldKTsKICAgICB9CiAK
LSAgICBtX3BhZ2UgPSAwOworICAgIG1fcGFnZSA9IG51bGxwdHI7CiAgICAgbV9lbnRyaWVzLmNs
ZWFyKCk7CiAgICAgbV9oYXNDdXJyZW50SW5kZXggPSBmYWxzZTsKIH0KIAotdm9pZCBXZWJCYWNr
Rm9yd2FyZExpc3Q6OmFkZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogbmV3SXRlbSkKK3Zv
aWQgV2ViQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVt
PiYmIG5ld0l0ZW0pCiB7CiAgICAgQVNTRVJUKCFtX2hhc0N1cnJlbnRJbmRleCB8fCBtX2N1cnJl
bnRJbmRleCA8IG1fZW50cmllcy5zaXplKCkpOwogCi0gICAgaWYgKCFtX2NhcGFjaXR5IHx8ICFu
ZXdJdGVtIHx8ICFtX3BhZ2UpCisgICAgaWYgKCFtX2NhcGFjaXR5IHx8ICFtX3BhZ2UpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFZlY3RvcjxSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4+IHJl
bW92ZWRJdGVtczsKQEAgLTEzOSwyMyArMTM5LDI0IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0
OjphZGRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIG5ld0l0ZW0pCiAgICAgICAgICAgICBt
X2N1cnJlbnRJbmRleCsrOwogICAgIH0KIAorICAgIGF1dG8qIG5ld0l0ZW1QdHIgPSBuZXdJdGVt
LnB0cigpOwogICAgIGlmICghc2hvdWxkS2VlcEN1cnJlbnRJdGVtKSB7CiAgICAgICAgIC8vIG1f
Y3VycmVudCBzaG91bGQgbmV2ZXIgYmUgcG9pbnRpbmcgcGFzdCB0aGUgZW5kIG9mIHRoZSBlbnRy
aWVzIFZlY3Rvci4KICAgICAgICAgLy8gSWYgaXQgaXMsIHNvbWV0aGluZyBoYXMgZ29uZSB3cm9u
ZyBhbmQgd2Ugc2hvdWxkIG5vdCB0cnkgdG8gc3dhcCBpbiB0aGUgbmV3IGl0ZW0uCiAgICAgICAg
IEFTU0VSVChtX2N1cnJlbnRJbmRleCA8IG1fZW50cmllcy5zaXplKCkpOwogCiAgICAgICAgIHJl
bW92ZWRJdGVtcy5hcHBlbmQobV9lbnRyaWVzW21fY3VycmVudEluZGV4XS5jb3B5UmVmKCkpOwot
ICAgICAgICBtX2VudHJpZXNbbV9jdXJyZW50SW5kZXhdID0gKm5ld0l0ZW07CisgICAgICAgIG1f
ZW50cmllc1ttX2N1cnJlbnRJbmRleF0gPSBXVEZNb3ZlKG5ld0l0ZW0pOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIC8vIG1fY3VycmVudCBzaG91bGQgbmV2ZXIgYmUgcG9pbnRpbmcgbW9yZSB0aGFu
IDEgcGFzdCB0aGUgZW5kIG9mIHRoZSBlbnRyaWVzIFZlY3Rvci4KICAgICAgICAgLy8gSWYgaXQg
aXMsIHNvbWV0aGluZyBoYXMgZ29uZSB3cm9uZyBhbmQgd2Ugc2hvdWxkIG5vdCB0cnkgdG8gaW5z
ZXJ0IHRoZSBuZXcgaXRlbS4KICAgICAgICAgQVNTRVJUKG1fY3VycmVudEluZGV4IDw9IG1fZW50
cmllcy5zaXplKCkpOwogCiAgICAgICAgIGlmIChtX2N1cnJlbnRJbmRleCA8PSBtX2VudHJpZXMu
c2l6ZSgpKQotICAgICAgICAgICAgbV9lbnRyaWVzLmluc2VydChtX2N1cnJlbnRJbmRleCwgKm5l
d0l0ZW0pOworICAgICAgICAgICAgbV9lbnRyaWVzLmluc2VydChtX2N1cnJlbnRJbmRleCwgV1RG
TW92ZShuZXdJdGVtKSk7CiAgICAgfQogCi0gICAgbV9wYWdlLT5kaWRDaGFuZ2VCYWNrRm9yd2Fy
ZExpc3QobmV3SXRlbSwgV1RGTW92ZShyZW1vdmVkSXRlbXMpKTsKKyAgICBtX3BhZ2UtPmRpZENo
YW5nZUJhY2tGb3J3YXJkTGlzdChuZXdJdGVtUHRyLCBXVEZNb3ZlKHJlbW92ZWRJdGVtcykpOwog
fQogCiB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6Z29Ub0l0ZW0oV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSYgaXRlbSkKQEAgLTQxOCw3ICs0MTksNyBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6
cmVzdG9yZUZyb21TdGF0ZShCYWNrRm9yd2FyZExpc3RTdGF0ZSBiYWNrRm9yd2FyZExpc3RTdAog
ICAgIGl0ZW1zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYmFja0ZvcndhcmRMaXN0U3RhdGUuaXRl
bXMuc2l6ZSgpKTsKIAogICAgIGZvciAoYXV0byYgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIDog
YmFja0ZvcndhcmRMaXN0U3RhdGUuaXRlbXMpIHsKLSAgICAgICAgYmFja0ZvcndhcmRMaXN0SXRl
bVN0YXRlLmlkZW50aWZpZXIgPSBnZW5lcmF0ZVdlYkJhY2tGb3J3YXJkSXRlbUlEKCk7CisgICAg
ICAgIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZS5pZGVudGlmaWVyID0geyBQcm9jZXNzOjppZGVu
dGlmaWVyKCksIGdlbmVyYXRlT2JqZWN0SWRlbnRpZmllcjxCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyOjpJdGVtSWRlbnRpZmllclR5cGU+KCkgfTsKICAgICAgICAgaXRlbXMudW5jaGVja2VkQXBw
ZW5kKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShXVEZNb3ZlKGJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZSksIG1fcGFnZS0+cGFnZUlEKCkpKTsKICAgICB9CiAgICAgbV9oYXNDdXJyZW50
SW5kZXggPSAhIWJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJbmRleDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmgKaW5kZXggZmNkYWYwM2QzYjJmYWM4
NTI0Y2E4NzAzOGM2MzkzNDUxOTMxMDkzYi4uMjhmY2VhMzFkMmRiYzhmNDdmMmU0ZDJjYTM1MTVk
MmM5YjIxNGY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0Zv
cndhcmRMaXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRM
aXN0LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRl
ICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDUsNyArNDYsOSBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIH5XZWJCYWNrRm9yd2FyZExpc3QoKTsKIAotICAgIHZvaWQg
YWRkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKik7CisgICAgV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSogaXRlbUZvcklEKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIm
KTsKKworICAgIHZvaWQgYWRkSXRlbShSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4mJik7CiAg
ICAgdm9pZCBnb1RvSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik7CiAgICAgdm9pZCByZW1v
dmVBbGxJdGVtcygpOwogICAgIHZvaWQgY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IGEwMWVkODE5ZDQxM2FmZGIwMWQxMzI0ZjJmYzZhNzQ2NDVk
ZWY0ZDAuLjgyYjBhNmFhMjMxNDZhYjU0ZjI2ZTllNTU0ZDQ3MTJiYWQ5YzRmYzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjcwLDcgKzY3MCw3IEBAIFN1
c3BlbmRlZFBhZ2VQcm94eSogV2ViUGFnZVByb3h5OjptYXliZUNyZWF0ZVN1c3BlbmRlZFBhZ2Uo
V2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAKICAgICBtX3N1c3BlbmRlZFBhZ2UgPSBTdXNwZW5kZWRQ
YWdlUHJveHk6OmNyZWF0ZSgqdGhpcywgcHJvY2VzcywgKmN1cnJlbnRJdGVtKTsKIAotICAgIExP
RyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNw
ZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBpdGVtICUiIFBS
SXU2NCwgcGFnZUlEKCksIG1fc3VzcGVuZGVkUGFnZS0+bG9nZ2luZ1N0cmluZygpLCBwcm9jZXNz
LnByb2Nlc3NJZGVudGlmaWVyKCksIGN1cnJlbnRJdGVtLT5pdGVtSUQoKSk7CisgICAgTE9HKFBy
b2Nlc3NTd2FwcGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBjcmVhdGVkIHN1c3BlbmRl
ZCBwYWdlICVzIGZvciBwcm9jZXNzIHBpZCAlaSwgYmFjay9mb3J3YXJkIGl0ZW0gJXMiIFBSSXU2
NCwgcGFnZUlEKCksIG1fc3VzcGVuZGVkUGFnZS0+bG9nZ2luZ1N0cmluZygpLCBwcm9jZXNzLnBy
b2Nlc3NJZGVudGlmaWVyKCksIGN1cnJlbnRJdGVtLT5pdGVtSUQoKS5sb2dTdHJpbmcoKSk7CiAK
ICAgICByZXR1cm4gbV9zdXNwZW5kZWRQYWdlLmdldCgpOwogfQpAQCAtNzczLDEwICs3NzMsNiBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQogewogICAgIEFTU0VSVChp
c1ZhbGlkKCkpOwogCi0gICAgY29uc3QgQmFja0ZvcndhcmRMaXN0SXRlbVZlY3RvciYgaXRlbXMg
PSBtX2JhY2tGb3J3YXJkTGlzdC0+ZW50cmllcygpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgaXRlbXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fcHJvY2Vzcy0+cmVnaXN0ZXJOZXdXZWJC
YWNrRm9yd2FyZExpc3RJdGVtKGl0ZW1zW2ldLmdldCgpKTsKLQogICAgIG1fZHJhd2luZ0FyZWEg
PSBtX3BhZ2VDbGllbnQuY3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpOwogICAgIEFTU0VSVChtX2Ry
YXdpbmdBcmVhKTsKIApAQCAtMTI3MSwxMSArMTI2NywxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGFkZGVkLCBW
ZWN0bwogICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRDYW5Hb0ZvcndhcmQodHJhbnNhY3Rpb24sIG1f
YmFja0ZvcndhcmRMaXN0LT5mb3J3YXJkSXRlbSgpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSh1aW50NjRfdCBpdGVtSUQsIGJvb2wgaW5QYWdl
Q2FjaGUsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojp3aWxs
R29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oY29uc3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYg
aXRlbUlELCBib29sIGluUGFnZUNhY2hlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAg
ICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKIAotICAgIGlm
IChhdXRvKiBpdGVtID0gbV9wcm9jZXNzLT53ZWJCYWNrRm9yd2FyZEl0ZW0oaXRlbUlEKSkgewor
ICAgIGlmIChhdXRvKiBpdGVtID0gbV9iYWNrRm9yd2FyZExpc3QtPml0ZW1Gb3JJRChpdGVtSUQp
KSB7CiAgICAgICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQgJiYgbV9uYXZpZ2F0aW9uQ2xpZW50
LT53aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oKnRoaXMsICppdGVtLCBpblBhZ2VDYWNoZSwg
bV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5n
ZXQoKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1fbG9hZGVyQ2xpZW50LT53aWxs
R29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oKnRoaXMsICppdGVtLCBtX3Byb2Nlc3MtPnRyYW5zZm9y
bUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKQEAgLTI1NTcsMTAg
KzI1NTMsNiBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlc3RvcmVG
cm9tU2Vzc2lvblN0YXRlKFNlc3Npb25TdGF0ZSBzZXNzaQogCiAgICAgaWYgKGhhc0JhY2tGb3J3
YXJkTGlzdCkgewogICAgICAgICBtX2JhY2tGb3J3YXJkTGlzdC0+cmVzdG9yZUZyb21TdGF0ZShX
VEZNb3ZlKHNlc3Npb25TdGF0ZS5iYWNrRm9yd2FyZExpc3RTdGF0ZSkpOwotCi0gICAgICAgIGZv
ciAoY29uc3QgYXV0byYgZW50cnkgOiBtX2JhY2tGb3J3YXJkTGlzdC0+ZW50cmllcygpKQotICAg
ICAgICAgICAgcHJvY2VzcygpLnJlZ2lzdGVyTmV3V2ViQmFja0ZvcndhcmRMaXN0SXRlbShlbnRy
eS5nZXQoKSk7Ci0KICAgICAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJl
c3RvcmVTZXNzaW9uKG1fYmFja0ZvcndhcmRMaXN0LT5pdGVtU3RhdGVzKCkpLCBtX3BhZ2VJRCk7
CiAKICAgICAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlv
bigpOwpAQCAtNDY3NSwxNCArNDY2NywxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TmVlZHNQ
bGFpblRleHRRdWlyayhib29sIG5lZWRzUGxhaW5UZXh0UXVpcmspCiAKIC8vIEJhY2tGb3J3YXJk
TGlzdAogCi12b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRBZGRJdGVtKHVpbnQ2NF90IGl0
ZW1JRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEFkZEl0ZW0oQmFja0ZvcndhcmRM
aXN0SXRlbVN0YXRlJiYgaXRlbVN0YXRlKQogewotICAgIG1fYmFja0ZvcndhcmRMaXN0LT5hZGRJ
dGVtKG1fcHJvY2Vzcy0+d2ViQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCkpOworICAgIG1fYmFja0Zv
cndhcmRMaXN0LT5hZGRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShXVEZNb3Zl
KGl0ZW1TdGF0ZSksIHBhZ2VJRCgpKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9y
d2FyZEdvVG9JdGVtKHVpbnQ2NF90IGl0ZW1JRCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkR29U
b0l0ZW0oY29uc3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYgaXRlbUlELCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiB7Ci0gICAgV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSogaXRlbSA9IG1fcHJvY2Vzcy0+d2ViQmFja0ZvcndhcmRJdGVtKGl0ZW1J
RCk7CisgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSA9IG1fYmFja0ZvcndhcmRMaXN0
LT5pdGVtRm9ySUQoaXRlbUlEKTsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybjsKIApA
QCAtNDY5MiwxMCArNDY4NCwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRHb1Rv
SXRlbSh1aW50NjRfdCBpdGVtSUQsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZQogICAgIG1fYmFj
a0ZvcndhcmRMaXN0LT5nb1RvSXRlbSgqaXRlbSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpi
YWNrRm9yd2FyZEl0ZW1BdEluZGV4KGludDMyX3QgaW5kZXgsIHVpbnQ2NF90JiBpdGVtSUQpCit2
b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRJdGVtQXRJbmRleChpbnQzMl90IGluZGV4LCBz
dGQ6Om9wdGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+JiBpdGVtSUQpCiB7CiAgICAg
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSA9IG1fYmFja0ZvcndhcmRMaXN0LT5pdGVtQXRJ
bmRleChpbmRleCk7Ci0gICAgaXRlbUlEID0gaXRlbSA/IGl0ZW0tPml0ZW1JRCgpIDogMDsKKyAg
ICBpZiAoaXRlbSkKKyAgICAgICAgaXRlbUlEID0gaXRlbS0+aXRlbUlEKCk7CisgICAgZWxzZQor
ICAgICAgICBpdGVtSUQgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpi
YWNrRm9yd2FyZEJhY2tMaXN0Q291bnQoaW50MzJfdCYgY291bnQpCkBAIC01OTQ1LDcgKzU5NDAs
NiBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJh
bWV0ZXJzKCkKICAgICBwYXJhbWV0ZXJzLnVzZXJBZ2VudCA9IHVzZXJBZ2VudCgpOwogICAgIHBh
cmFtZXRlcnMuaXRlbVN0YXRlcyA9IG1fYmFja0ZvcndhcmRMaXN0LT5pdGVtU3RhdGVzKCk7CiAg
ICAgcGFyYW1ldGVycy5zZXNzaW9uSUQgPSBzZXNzaW9uSUQoKTsKLSAgICBwYXJhbWV0ZXJzLmhp
Z2hlc3RVc2VkQmFja0ZvcndhcmRJdGVtSUQgPSBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpoaWdo
ZXN0VXNlZEl0ZW1JRCgpOwogICAgIHBhcmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVySUQg
PSBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+aWRlbnRpZmllcigpOwogICAgIHBhcmFtZXRlcnMu
dmlzaXRlZExpbmtUYWJsZUlEID0gbV92aXNpdGVkTGlua1N0b3JlLT5pZGVudGlmaWVyKCk7CiAg
ICAgcGFyYW1ldGVycy53ZWJzaXRlRGF0YVN0b3JlSUQgPSBtX3dlYnNpdGVEYXRhU3RvcmUtPmlk
ZW50aWZpZXIoKTsKQEAgLTYzNTIsOSArNjM0Niw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRG
aW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcmIHN1
CiAgICAgbV9wYWdlQ2xpZW50LmRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFBy
b3ZpZGVyKHN1Z2dlc3RlZEZpbGVuYW1lLCBkYXRhUmVmZXJlbmNlKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmJhY2tGb3J3YXJkUmVtb3ZlZEl0ZW0odWludDY0X3QgaXRlbUlEKQordm9pZCBX
ZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkUmVtb3ZlZEl0ZW0oY29uc3QgQmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllciYgaXRlbUlEKQogewotICAgIG1fcHJvY2Vzcy0+cmVtb3ZlQmFja0ZvcndhcmRJ
dGVtKGl0ZW1JRCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRS
ZW1vdmVCYWNrRm9yd2FyZEl0ZW0oaXRlbUlEKSwgbV9wYWdlSUQpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDg3YTBiNTljZDE2NDI4NmY1YmNkYTcwMGVl
ZWQwMWUxYjVmYTI5N2QuLmEzZjE0NmIwYmE3NGQ3MTEyYzZiZTU0YjYzOGI5YmFhZjYyNjljZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNzQsNiArMTc0LDcg
QEAgZW51bSBjbGFzcyBOb3RpZmljYXRpb25EaXJlY3Rpb247CiBlbnVtIGNsYXNzIFNob3VsZFNh
bXBsZTsKIAogc3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q7CitzdHJ1Y3QgQmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllcjsKIHN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJbmZvOwogc3RydWN0IEV4Y2Vw
dGlvbkRldGFpbHM7CiBzdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5nczsKQEAgLTQ0Niw3ICs0NDcs
NyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gZ29Ub0JhY2tGb3J3YXJk
SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik7CiAgICAgdm9pZCB0cnlSZXN0b3JlU2Nyb2xs
UG9zaXRpb24oKTsKICAgICB2b2lkIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKiBhZGRlZEl0ZW0sIFZlY3RvcjxSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRl
bT4+JiYgcmVtb3ZlZCk7Ci0gICAgdm9pZCB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0odWlu
dDY0X3QgaXRlbUlELCBib29sIGluUGFnZUNhY2hlLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZv
aWQgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXImLCBib29sIGluUGFnZUNhY2hlLCBjb25zdCBVc2VyRGF0YSYpOwogCiAg
ICAgYm9vbCBzaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3QoV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbSYpOwogCkBAIC04NzcsNyArODc4LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgV2ViRnJh
bWVQcm94eSYsIHVpbnQ2NF90IGxpc3RlbmVySUQsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlv
bklELCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYpOwogCi0gICAgdm9pZCBi
YWNrRm9yd2FyZFJlbW92ZWRJdGVtKHVpbnQ2NF90IGl0ZW1JRCk7CisgICAgdm9pZCBiYWNrRm9y
d2FyZFJlbW92ZWRJdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIm
KTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICAgIAogICAgIC8vIERyYWcgYW5kIGRyb3Ag
c3VwcG9ydC4KQEAgLTE0NzAsOSArMTQ3MSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXROZWVk
c1BsYWluVGV4dFF1aXJrKGJvb2wpOwogCiAgICAgLy8gQmFjay9Gb3J3YXJkIGxpc3QgbWFuYWdl
bWVudAotICAgIHZvaWQgYmFja0ZvcndhcmRBZGRJdGVtKHVpbnQ2NF90IGl0ZW1JRCk7Ci0gICAg
dm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtKHVpbnQ2NF90IGl0ZW1JRCwgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJik7Ci0gICAgdm9pZCBiYWNrRm9yd2FyZEl0ZW1BdEluZGV4KGludDMyX3QgaW5k
ZXgsIHVpbnQ2NF90JiBpdGVtSUQpOworICAgIHZvaWQgYmFja0ZvcndhcmRBZGRJdGVtKEJhY2tG
b3J3YXJkTGlzdEl0ZW1TdGF0ZSYmKTsKKyAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW0oY29u
c3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYpOworICAgIHZvaWQgYmFja0ZvcndhcmRJdGVtQXRJbmRleChpbnQzMl90IGluZGV4
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+Jik7CiAg
ICAgdm9pZCBiYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQoaW50MzJfdCYgY291bnQpOwogICAgIHZv
aWQgYmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50KGludDMyX3QmIGNvdW50KTsKICAgICB2b2lk
IGJhY2tGb3J3YXJkQ2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA1M2ZiMTgzMmQ1ZDM4Y2E3MDU4ODM0YTk5NDdhMjJl
MWU1ZGZmN2VjLi5lYjA4MzU3ZDBmNzg4MjkwMWMwYWQ5NDdjOThhZDhjZmIyNzc0ODg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0yMTksMTMgKzIxOSwxMyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAK
ICAgICAjIEJhY2tGb3J3YXJkIG1lc3NhZ2VzCi0gICAgQmFja0ZvcndhcmRBZGRJdGVtKHVpbnQ2
NF90IGl0ZW1JRCkKLSAgICBCYWNrRm9yd2FyZEdvVG9JdGVtKHVpbnQ2NF90IGl0ZW1JRCkgLT4g
KFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUp
Ci0gICAgQmFja0ZvcndhcmRJdGVtQXRJbmRleChpbnQzMl90IGl0ZW1JbmRleCkgLT4gKHVpbnQ2
NF90IGl0ZW1JRCkKKyAgICBCYWNrRm9yd2FyZEFkZEl0ZW0oc3RydWN0IFdlYktpdDo6QmFja0Zv
cndhcmRMaXN0SXRlbVN0YXRlIGl0ZW1TdGF0ZSkKKyAgICBCYWNrRm9yd2FyZEdvVG9JdGVtKHN0
cnVjdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyIGl0ZW1JRCkgLT4gKFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCisgICAg
QmFja0ZvcndhcmRJdGVtQXRJbmRleChpbnQzMl90IGl0ZW1JbmRleCkgLT4gKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gaXRlbUlEKQogICAgIEJhY2tG
b3J3YXJkQmFja0xpc3RDb3VudCgpIC0+IChpbnQzMl90IGNvdW50KQogICAgIEJhY2tGb3J3YXJk
Rm9yd2FyZExpc3RDb3VudCgpIC0+IChpbnQzMl90IGNvdW50KQogICAgIEJhY2tGb3J3YXJkQ2xl
YXIoKQotICAgIFdpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSh1aW50NjRfdCBpdGVtSUQsIGJv
b2wgaW5QYWdlQ2FjaGUsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgV2lsbEdvVG9C
YWNrRm9yd2FyZExpc3RJdGVtKHN0cnVjdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyIGl0ZW1JRCwgYm9vbCBpblBhZ2VDYWNoZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkK
IAogICAgICMgVW5kby9SZWRvIG1lc3NhZ2VzCiAgICAgUmVnaXN0ZXJFZGl0Q29tbWFuZEZvclVu
ZG8odWludDY0X3QgY29tbWFuZElELCB1aW50MzJfdCBlZGl0QWN0aW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGFiOWM4YjA0NDMwNWIwMGYwNWUz
NmJlYmI3YzVjYWVhMjkxMWI4NTkuLmMwMTE5OGMzZjc4YWI1MTAwNDUwNTdlNTJhNGI1ZmM1MDAx
NWUyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAg
LTgwLDYgKzgwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0xvZ0luaXRpYWxpemF0aW9uLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BsYXRmb3JtU2NyZWVuLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VSTFBh
cnNlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTI0OCw2ICsyNDksNyBAQCBX
ZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24mIGNvbmZpZ3VyYXRpb24pCiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKICAg
ICAgICAgV1RGOjpzZXRQcm9jZXNzUHJpdmlsZWdlcyhhbGxQcml2aWxlZ2VzKCkpOwogICAgICAg
ICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnBlcm1pdFByb2Nlc3NUb1VzZUNvb2tp
ZUFQSSh0cnVlKTsKKyAgICAgICAgUHJvY2Vzczo6c2V0SWRlbnRpZmllcihnZW5lcmF0ZU9iamVj
dElkZW50aWZpZXI8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXJUeXBlPigpKTsKICAgICB9KTsK
IAogICAgIGlmIChtX2NvbmZpZ3VyYXRpb24tPnNob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDlhMDFk
NWI0YjM1NzFhODg3NjYxMmM3NWEzY2FkNzI5MDQ4NGEzZTYuLjQ5M2U4OGQyMzliZjhhZDAxNmJi
NWI3YTk3OWJhMDU5ZjRiNzBjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcApAQCAtNDI3LDE0ICs0MjcsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
cmVtb3ZlV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIHVpbnQ2NF90IHBhZ2VJRCkKICAg
ICBtX3Byb2Nlc3NQb29sLT5wYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHdlYlBhZ2UpOwog
CiAgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKLSAgICAKLSAgICBW
ZWN0b3I8dWludDY0X3Q+IGl0ZW1JRHNUb1JlbW92ZTsKLSAgICBmb3IgKGF1dG8mIGlkQW5kSXRl
bSA6IG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcCkgewotICAgICAgICBpZiAoaWRBbmRJdGVtLnZh
bHVlLT5wYWdlSUQoKSA9PSBwYWdlSUQpCi0gICAgICAgICAgICBpdGVtSURzVG9SZW1vdmUuYXBw
ZW5kKGlkQW5kSXRlbS5rZXkpOwotICAgIH0KLSAgICBmb3IgKGF1dG8gaXRlbUlEIDogaXRlbUlE
c1RvUmVtb3ZlKQotICAgICAgICBtX2JhY2tGb3J3YXJkTGlzdEl0ZW1NYXAucmVtb3ZlKGl0ZW1J
RCk7CiAKICAgICBtYXliZVNodXREb3duKCk7CiB9CkBAIC00NjMsMjUgKzQ1NSw2IEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHko
V2ViVXNlckNvbnRlbnRDb250CiAgICAgbV93ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVz
LnJlbW92ZSgmcHJveHkpOwogfQogCi1XZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBXZWJQcm9jZXNz
UHJveHk6OndlYkJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcC5nZXQoaXRlbUlEKTsKLX0KLQotdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyTmV3V2ViQmFja0ZvcndhcmRMaXN0SXRlbShXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtJiBpdGVtKQotewotICAgIC8vIFRoaXMgaXRlbSB3YXMganVzdCBjcmVh
dGVkIGJ5IHRoZSBVSVByb2Nlc3MgYW5kIGlzIGJlaW5nIGFkZGVkIHRvIHRoZSBtYXAgZm9yIHRo
ZSBmaXJzdCB0aW1lCi0gICAgLy8gc28gd2Ugc2hvdWxkIG5vdCBhbHJlYWR5IGhhdmUgYW4gaXRl
bSBmb3IgdGhpcyBJRC4KLSAgICBBU1NFUlQoIW1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcC5jb250
YWlucyhpdGVtLml0ZW1JRCgpKSk7Ci0KLSAgICBtX2JhY2tGb3J3YXJkTGlzdEl0ZW1NYXAuc2V0
KGl0ZW0uaXRlbUlEKCksICZpdGVtKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92
ZUJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQpCi17Ci0gICAgbV9iYWNrRm9yd2FyZExp
c3RJdGVtTWFwLnJlbW92ZShpdGVtSUQpOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YXNz
dW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKICAgICBV
UkwgdXJsKFVSTCgpLCB1cmxTdHJpbmcpOwpAQCAtNTQ3LDExICs1MjAsMTEgQEAgYm9vbCBXZWJQ
cm9jZXNzUHJveHk6OmNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyhjb25zdCBVUkwmIHVy
bCkKICAgICAvLyBJdGVtcyBpbiBiYWNrL2ZvcndhcmQgbGlzdCBoYXZlIGJlZW4gYWxyZWFkeSBj
aGVja2VkLgogICAgIC8vIE9uZSBjYXNlIHdoZXJlIHdlIGRvbid0IGhhdmUgc2FuZGJveCBleHRl
bnNpb25zIGZvciBmaWxlIFVSTHMgaW4gYi9mIGxpc3QgaXMgaWYgdGhlIGxpc3QgaGFzIGJlZW4g
cmVpbnN0YXRlZCBhZnRlciBhIGNyYXNoIG9yIGEgYnJvd3NlciByZXN0YXJ0LgogICAgIFN0cmlu
ZyBwYXRoID0gdXJsLmZpbGVTeXN0ZW1QYXRoKCk7Ci0gICAgZm9yIChXZWJCYWNrRm9yd2FyZExp
c3RJdGVtTWFwOjppdGVyYXRvciBpdGVyID0gbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLmJlZ2lu
KCksIGVuZCA9IG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcC5lbmQoKTsgaXRlciAhPSBlbmQ7ICsr
aXRlcikgewotICAgICAgICBVUkwgaXRlbVVSTChVUkwoKSwgaXRlci0+dmFsdWUtPnVybCgpKTsK
KyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjphbGxJdGVtcygp
LnZhbHVlcygpKSB7CisgICAgICAgIFVSTCBpdGVtVVJMKFVSTCgpLCBpdGVtLT51cmwoKSk7CiAg
ICAgICAgIGlmIChpdGVtVVJMLmlzTG9jYWxGaWxlKCkgJiYgaXRlbVVSTC5maWxlU3lzdGVtUGF0
aCgpID09IHBhdGgpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgVVJMIGl0ZW1P
cmlnaW5hbFVSTChVUkwoKSwgaXRlci0+dmFsdWUtPm9yaWdpbmFsVVJMKCkpOworICAgICAgICBV
UkwgaXRlbU9yaWdpbmFsVVJMKFVSTCgpLCBpdGVtLT5vcmlnaW5hbFVSTCgpKTsKICAgICAgICAg
aWYgKGl0ZW1PcmlnaW5hbFVSTC5pc0xvY2FsRmlsZSgpICYmIGl0ZW1PcmlnaW5hbFVSTC5maWxl
U3lzdGVtUGF0aCgpID09IHBhdGgpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBA
IC01NjgsMjIgKzU0MSwxMCBAQCBib29sIFdlYlByb2Nlc3NQcm94eTo6ZnVsbEtleWJvYXJkQWNj
ZXNzRW5hYmxlZCgpCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZE9yVXBk
YXRlQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCwgdWludDY0X3QgcGFnZUlELCBjb25z
dCBQYWdlU3RhdGUmIHBhZ2VTdGF0ZSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVCYWNr
Rm9yd2FyZEl0ZW0oY29uc3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiBpdGVtU3RhdGUpCiB7
Ci0gICAgTUVTU0FHRV9DSEVDS19VUkwocGFnZVN0YXRlLm1haW5GcmFtZVN0YXRlLm9yaWdpbmFs
VVJMU3RyaW5nKTsKLSAgICBNRVNTQUdFX0NIRUNLX1VSTChwYWdlU3RhdGUubWFpbkZyYW1lU3Rh
dGUudXJsU3RyaW5nKTsKLQotICAgIGF1dG8mIGJhY2tGb3J3YXJkTGlzdEl0ZW0gPSBtX2JhY2tG
b3J3YXJkTGlzdEl0ZW1NYXAuYWRkKGl0ZW1JRCwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwot
ICAgIGlmICghYmFja0ZvcndhcmRMaXN0SXRlbSkgewotICAgICAgICBCYWNrRm9yd2FyZExpc3RJ
dGVtU3RhdGUgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOwotICAgICAgICBiYWNrRm9yd2FyZExp
c3RJdGVtU3RhdGUuaWRlbnRpZmllciA9IGl0ZW1JRDsKLSAgICAgICAgYmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlLnBhZ2VTdGF0ZSA9IHBhZ2VTdGF0ZTsKLSAgICAgICAgYmFja0ZvcndhcmRMaXN0
SXRlbSA9IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShXVEZNb3ZlKGJhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZSksIHBhZ2VJRCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAv
LyBVcGRhdGUgZXhpc3RpbmcgaXRlbS4KLSAgICBiYWNrRm9yd2FyZExpc3RJdGVtLT5zZXRQYWdl
U3RhdGUocGFnZVN0YXRlKTsKKyAgICBpZiAoYXV0byogaXRlbSA9IFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW06Oml0ZW1Gb3JJRChpdGVtU3RhdGUuaWRlbnRpZmllcikpCisgICAgICAgIGl0ZW0tPnNl
dFBhZ2VTdGF0ZShpdGVtU3RhdGUucGFnZVN0YXRlKTsKIH0KIAogI2lmIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApp
bmRleCA2MDdiOWIyYWU0YWRkMjQ2NjUwMWIyMTg4NmMzNGM5MTFhZmQwYmFjLi5lZDEwZjkzZGRi
YTkwMDA2OGQ0MWQ1M2RmZWE0ODliZGI1NWQ1ZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaApAQCAtOTIsNyArOTIsNiBAQCB0eXBlZGVmIEJhY2tncm91bmRX
ZWJQcm9jZXNzQ291bnRlcjo6VG9rZW4gQmFja2dyb3VuZFdlYlByb2Nlc3NUb2tlbjsKIAogY2xh
c3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVibGljIENoaWxkUHJvY2Vzc1Byb3h5LCBwdWJsaWMgUmVz
cG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBwcml2YXRlIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQg
ewogcHVibGljOgotICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0+PiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtTWFwOwogICAgIHR5cGVkZWYg
SGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkZyYW1lUHJveHk+PiBXZWJGcmFtZVByb3h5TWFw
OwogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgV2ViUGFnZVByb3h5Kj4gV2ViUGFnZVBy
b3h5TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEFQSTo6VXNlcklu
aXRpYXRlZEFjdGlvbj4+IFVzZXJJbml0aWF0ZWRBY3Rpb25NYXA7CkBAIC0xMjQsNyArMTIzLDYg
QEAgcHVibGljOgogICAgIHZvaWQgZGlkRGVzdHJveVZpc2l0ZWRMaW5rU3RvcmUoVmlzaXRlZExp
bmtTdG9yZSYpOwogICAgIHZvaWQgZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5KFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Jik7CiAKLSAgICBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtKiB3ZWJCYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgaXRlbUlEKSBjb25zdDsKICAg
ICBSZWZQdHI8QVBJOjpVc2VySW5pdGlhdGVkQWN0aW9uPiB1c2VySW5pdGlhdGVkQWN0aXZpdHko
dWludDY0X3QpOwogCiAgICAgUmVzcG9uc2l2ZW5lc3NUaW1lciYgcmVzcG9uc2l2ZW5lc3NUaW1l
cigpIHsgcmV0dXJuIG1fcmVzcG9uc2l2ZW5lc3NUaW1lcjsgfQpAQCAtMTQyLDkgKzE0MCw2IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlVGV4dENoZWNrZXJTdGF0ZSgpOwogCi0gICAgdm9p
ZCByZWdpc3Rlck5ld1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSYpOwotICAgIHZvaWQgcmVtb3ZlQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90KTsKLQogICAgIHZv
aWQgd2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKSB7IG1fbWF5
SGF2ZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbiA9IHRydWU7IH0KICAgICB2b2lk
IGFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoY29uc3QgU3RyaW5nJik7CiAgICAgYm9vbCBoYXNB
c3N1bWVkUmVhZEFjY2Vzc1RvVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OwpAQCAtMjMz
LDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXliZVNodXREb3duKCk7CiAKICAgICAv
LyBJUEMgbWVzc2FnZSBoYW5kbGVycy4KLSAgICB2b2lkIGFkZE9yVXBkYXRlQmFja0ZvcndhcmRJ
dGVtKHVpbnQ2NF90IGl0ZW1JRCwgdWludDY0X3QgcGFnZUlELCBjb25zdCBQYWdlU3RhdGUmKTsK
KyAgICB2b2lkIHVwZGF0ZUJhY2tGb3J3YXJkSXRlbShjb25zdCBCYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGUmKTsKICAgICB2b2lkIGRpZERlc3Ryb3lGcmFtZSh1aW50NjRfdCk7CiAgICAgdm9pZCBk
aWREZXN0cm95VXNlckdlc3R1cmVUb2tlbih1aW50NjRfdCk7CiAKQEAgLTMxMCw3ICszMDUsNiBA
QCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eU1hcCBtX3BhZ2VNYXA7CiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgU3VzcGVuZGVkUGFnZVByb3h5Kj4gbV9zdXNwZW5kZWRQYWdlTWFwOwogICAgIFdl
YkZyYW1lUHJveHlNYXAgbV9mcmFtZU1hcDsKLSAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtTWFw
IG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcDsKICAgICBVc2VySW5pdGlhdGVkQWN0aW9uTWFwIG1f
dXNlckluaXRpYXRlZEFjdGlvbk1hcDsKIAogICAgIEhhc2hTZXQ8VmlzaXRlZExpbmtTdG9yZSo+
IG1fdmlzaXRlZExpbmtTdG9yZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZWM3Y2Y1MDEzOTM3NmI1Mzg3Nzk5NDYw
OWMwNzA1MjkwNjY2MzU4Mi4uZWRiMDVhNzA2NTM0YjE1MWIwNWViM2U2MzI2M2UzOTI3ODNlNjU4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAt
PiBXZWJQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewotICAgIEFkZE9yVXBkYXRlQmFja0Zv
cndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCwgdWludDY0X3QgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0
OjpQYWdlU3RhdGUgcGFnZVN0YXRlKQorICAgIFVwZGF0ZUJhY2tGb3J3YXJkSXRlbShzdHJ1Y3Qg
V2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRl
KQogICAgIERpZERlc3Ryb3lGcmFtZSh1aW50NjRfdCBmcmFtZUlEKSAKIAogICAgIERpZERlc3Ry
b3lVc2VyR2VzdHVyZVRva2VuKHVpbnQ2NF90IHVzZXJHZXN0dXJlVG9rZW5JRCkgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRl
Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
U2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggYTVkNDVhOWE4MGVlODU4MmFiNWQzZmY5
YTc4MjY4ZGZjYmRiOTIwNS4uYTQ0NzIyYWEzNWNhNjg1OWI4NDQ0ZmU3NWY1ZGZiZjg1MTRiYTk3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nl
c3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcApAQCAtMTEyLDE1ICsxMTIs
MTUgQEAgc3RhdGljIEZyYW1lU3RhdGUgdG9GcmFtZVN0YXRlKGNvbnN0IEhpc3RvcnlJdGVtJiBo
aXN0b3J5SXRlbSkKICAgICByZXR1cm4gZnJhbWVTdGF0ZTsKIH0KIAotUGFnZVN0YXRlIHRvUGFn
ZVN0YXRlKGNvbnN0IFdlYkNvcmU6Okhpc3RvcnlJdGVtJiBoaXN0b3J5SXRlbSkKK0JhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZSB0b0JhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZShjb25zdCBXZWJDb3Jl
OjpIaXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0pCiB7Ci0gICAgUGFnZVN0YXRlIHBhZ2VTdGF0ZTsK
LQotICAgIHBhZ2VTdGF0ZS50aXRsZSA9IGhpc3RvcnlJdGVtLnRpdGxlKCk7Ci0gICAgcGFnZVN0
YXRlLm1haW5GcmFtZVN0YXRlID0gdG9GcmFtZVN0YXRlKGhpc3RvcnlJdGVtKTsKLSAgICBwYWdl
U3RhdGUuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IGhpc3RvcnlJdGVtLnNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3koKTsKLSAgICBwYWdlU3RhdGUuc2Vzc2lvblN0YXRlT2JqZWN0
ID0gaGlzdG9yeUl0ZW0uc3RhdGVPYmplY3QoKTsKLSAgICByZXR1cm4gcGFnZVN0YXRlOworICAg
IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSBzdGF0ZTsKKyAgICBzdGF0ZS5pZGVudGlmaWVyID0g
aGlzdG9yeUl0ZW0uaWRlbnRpZmllcigpOworICAgIHN0YXRlLnBhZ2VTdGF0ZS50aXRsZSA9IGhp
c3RvcnlJdGVtLnRpdGxlKCk7CisgICAgc3RhdGUucGFnZVN0YXRlLm1haW5GcmFtZVN0YXRlID0g
dG9GcmFtZVN0YXRlKGhpc3RvcnlJdGVtKTsKKyAgICBzdGF0ZS5wYWdlU3RhdGUuc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSA9IGhpc3RvcnlJdGVtLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3koKTsKKyAgICBzdGF0ZS5wYWdlU3RhdGUuc2Vzc2lvblN0YXRlT2JqZWN0ID0gaGlzdG9y
eUl0ZW0uc3RhdGVPYmplY3QoKTsKKyAgICByZXR1cm4gc3RhdGU7CiB9CiAKIHN0YXRpYyBSZWY8
Rm9ybURhdGE+IHRvRm9ybURhdGEoY29uc3QgSFRUUEJvZHkmIGh0dHBCb2R5KQpAQCAtMTgyLDE5
ICsxODIsMTkgQEAgc3RhdGljIHZvaWQgYXBwbHlGcmFtZVN0YXRlKEhpc3RvcnlJdGVtJiBoaXN0
b3J5SXRlbSwgY29uc3QgRnJhbWVTdGF0ZSYgZnJhbWVTdGEKICNlbmRpZgogCiAgICAgZm9yIChj
b25zdCBhdXRvJiBjaGlsZEZyYW1lU3RhdGUgOiBmcmFtZVN0YXRlLmNoaWxkcmVuKSB7Ci0gICAg
ICAgIFJlZjxIaXN0b3J5SXRlbT4gY2hpbGRIaXN0b3J5SXRlbSA9IEhpc3RvcnlJdGVtOjpjcmVh
dGUoY2hpbGRGcmFtZVN0YXRlLnVybFN0cmluZywgU3RyaW5nKCkpOworICAgICAgICBSZWY8SGlz
dG9yeUl0ZW0+IGNoaWxkSGlzdG9yeUl0ZW0gPSBIaXN0b3J5SXRlbTo6Y3JlYXRlKGNoaWxkRnJh
bWVTdGF0ZS51cmxTdHJpbmcsIHsgfSwgeyB9LCB7IFByb2Nlc3M6OmlkZW50aWZpZXIoKSwgZ2Vu
ZXJhdGVPYmplY3RJZGVudGlmaWVyPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI6Okl0ZW1JZGVu
dGlmaWVyVHlwZT4oKSB9KTsKICAgICAgICAgYXBwbHlGcmFtZVN0YXRlKGNoaWxkSGlzdG9yeUl0
ZW0sIGNoaWxkRnJhbWVTdGF0ZSk7CiAKICAgICAgICAgaGlzdG9yeUl0ZW0uYWRkQ2hpbGRJdGVt
KFdURk1vdmUoY2hpbGRIaXN0b3J5SXRlbSkpOwogICAgIH0KIH0KIAotUmVmPEhpc3RvcnlJdGVt
PiB0b0hpc3RvcnlJdGVtKGNvbnN0IFBhZ2VTdGF0ZSYgcGFnZVN0YXRlKQorUmVmPEhpc3RvcnlJ
dGVtPiB0b0hpc3RvcnlJdGVtKGNvbnN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYgaXRlbVN0
YXRlKQogewotICAgIFJlZjxIaXN0b3J5SXRlbT4gaGlzdG9yeUl0ZW0gPSBIaXN0b3J5SXRlbTo6
Y3JlYXRlKHBhZ2VTdGF0ZS5tYWluRnJhbWVTdGF0ZS51cmxTdHJpbmcsIHBhZ2VTdGF0ZS50aXRs
ZSk7Ci0gICAgaGlzdG9yeUl0ZW0tPnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kocGFn
ZVN0YXRlLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwotICAgIGhpc3RvcnlJdGVtLT5z
ZXRTdGF0ZU9iamVjdChwYWdlU3RhdGUuc2Vzc2lvblN0YXRlT2JqZWN0LmdldCgpKTsKLSAgICBh
cHBseUZyYW1lU3RhdGUoaGlzdG9yeUl0ZW0sIHBhZ2VTdGF0ZS5tYWluRnJhbWVTdGF0ZSk7Cisg
ICAgUmVmPEhpc3RvcnlJdGVtPiBoaXN0b3J5SXRlbSA9IEhpc3RvcnlJdGVtOjpjcmVhdGUoaXRl
bVN0YXRlLnBhZ2VTdGF0ZS5tYWluRnJhbWVTdGF0ZS51cmxTdHJpbmcsIGl0ZW1TdGF0ZS5wYWdl
U3RhdGUudGl0bGUsIHsgfSwgaXRlbVN0YXRlLmlkZW50aWZpZXIpOworICAgIGhpc3RvcnlJdGVt
LT5zZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KGl0ZW1TdGF0ZS5wYWdlU3RhdGUuc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CisgICAgaGlzdG9yeUl0ZW0tPnNldFN0YXRlT2Jq
ZWN0KGl0ZW1TdGF0ZS5wYWdlU3RhdGUuc2Vzc2lvblN0YXRlT2JqZWN0LmdldCgpKTsKKyAgICBh
cHBseUZyYW1lU3RhdGUoaGlzdG9yeUl0ZW0sIGl0ZW1TdGF0ZS5wYWdlU3RhdGUubWFpbkZyYW1l
U3RhdGUpOwogCiAgICAgcmV0dXJuIGhpc3RvcnlJdGVtOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24u
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVD
b252ZXJzaW9uLmgKaW5kZXggYmVlOWQyMjhjYTczOWE1YThmNjY1MGNhZmNmN2JlZjBkYmNkNGRm
Ni4uZTBlMTFmYzhjNTIwYmM5ZjBiYTI0MTM0M2U4MWZlMWFmOGEwYTliMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZl
cnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vz
c2lvblN0YXRlQ29udmVyc2lvbi5oCkBAIC0zNCwxMCArMzQsMTEgQEAgY2xhc3MgSGlzdG9yeUl0
ZW07CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlOwogc3RydWN0IFBhZ2VTdGF0ZTsKIAotUGFnZVN0YXRlIHRvUGFnZVN0YXRlKGNvbnN0IFdl
YkNvcmU6Okhpc3RvcnlJdGVtJik7Ci1SZWY8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IHRvSGlzdG9y
eUl0ZW0oY29uc3QgUGFnZVN0YXRlJik7CitCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgdG9CYWNr
Rm9yd2FyZExpc3RJdGVtU3RhdGUoY29uc3QgV2ViQ29yZTo6SGlzdG9yeUl0ZW0mKTsKK1JlZjxX
ZWJDb3JlOjpIaXN0b3J5SXRlbT4gdG9IaXN0b3J5SXRlbShjb25zdCBCYWNrRm9yd2FyZExpc3RJ
dGVtU3RhdGUmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCmluZGV4IGE0ZWVhY2EwODIwNzUyODcwNTE0ZmUxNTc1ZjUwZjdkNzZiZDNj
NmQuLjc0YWM4YjJmODY5MGJmNmZmNjUxZGIxODdhNmFlMTIxNjI1ZDY3NTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTEzNiwxMyArMTEzNiw2IEBAIGJvb2wgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnNob3VsZEdvVG9IaXN0b3J5SXRlbShIaXN0b3J5SXRlbSogaXRlbSkg
Y29uc3QKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICgh
d2ViUGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIHVpbnQ2NF90IGl0ZW1J
RCA9IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppZEZvckl0ZW0oaXRlbSk7Ci0gICAgaWYgKCFp
dGVtSUQpIHsKLSAgICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGJlIGNvbnNpZGVyaW5nIG5hdmln
YXRpbmcgdG8gYW4gaXRlbSB0aGF0IGlzIG5vdCBhY3R1YWxseSBpbiB0aGUgYmFjay9mb3J3YXJk
IGxpc3QuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQogCiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRl
bT4gYnVuZGxlSXRlbSA9IEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRl
KGl0ZW0pOwogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CkBAIC0xMTUyLDcgKzEx
NDUsNyBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRHb1RvSGlzdG9yeUl0ZW0o
SGlzdG9yeUl0ZW0qIGl0ZW0pIGNvbnN0CiAgICAgaWYgKCFzaG91bGRHb1RvQmFja0ZvcndhcmRM
aXN0SXRlbSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgd2ViUGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpXaWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oaXRlbUlELCBi
dW5kbGVJdGVtLT5pc0luUGFnZUNhY2hlKCksIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwor
ICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V2lsbEdvVG9CYWNrRm9y
d2FyZExpc3RJdGVtKGl0ZW0tPmlkZW50aWZpZXIoKSwgYnVuZGxlSXRlbS0+aXNJblBhZ2VDYWNo
ZSgpLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9I
YW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0Zvcndh
cmRMaXN0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFj
a0ZvcndhcmRMaXN0UHJveHkuY3BwCmluZGV4IDdjMTBjNzhlM2ZlZjJiMTc5MzcxZGE1YmE0ODMy
NTIyNjFkZTc5MzUuLmU4YTNjYjdlNTE1OGE5ODQyOWUxZDZjNmVlOThiMzhjYjdhZmNjNzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJk
TGlzdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJC
YWNrRm9yd2FyZExpc3RQcm94eS5jcHAKQEAgLTQ3LDg0ICs0NywzMiBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIC8vIEZJWE1FIDxyZGFyOi8vcHJvYmxlbS84ODE5MjY4PjogVGhpcyBsZWFrcyBhbGwg
SGlzdG9yeUl0ZW1zIHRoYXQgZ28gaW50byB0aGVzZSBtYXBzLgogLy8gV2UgbmVlZCB0byBjbGVh
ciB1cCB0aGUgbGlmZSB0aW1lIG9mIHRoZXNlIG9iamVjdHMuCiAKLXR5cGVkZWYgSGFzaE1hcDx1
aW50NjRfdCwgUmVmUHRyPEhpc3RvcnlJdGVtPj4gSURUb0hpc3RvcnlJdGVtTWFwOyAvLyAiSUQi
IGhlcmUgaXMgdGhlIGl0ZW0gSUQuCi0gICAgCi1zdHJ1Y3QgSXRlbUFuZFBhZ2VJRCB7Ci0gICAg
dWludDY0X3QgaXRlbUlEOwotICAgIHVpbnQ2NF90IHBhZ2VJRDsKLX07Ci10eXBlZGVmIEhhc2hN
YXA8UmVmUHRyPEhpc3RvcnlJdGVtPiwgSXRlbUFuZFBhZ2VJRD4gSGlzdG9yeUl0ZW1Ub0lETWFw
OwotCit0eXBlZGVmIEhhc2hNYXA8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciwgUmVmUHRyPEhp
c3RvcnlJdGVtPj4gSURUb0hpc3RvcnlJdGVtTWFwOyAvLyAiSUQiIGhlcmUgaXMgdGhlIGl0ZW0g
SUQuCiBzdGF0aWMgSURUb0hpc3RvcnlJdGVtTWFwJiBpZFRvSGlzdG9yeUl0ZW1NYXAoKQogewog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJRFRvSGlzdG9yeUl0ZW1NYXA+IG1hcDsKICAgICBy
ZXR1cm4gbWFwOwogfQogCi1zdGF0aWMgSGlzdG9yeUl0ZW1Ub0lETWFwJiBoaXN0b3J5SXRlbVRv
SURNYXAoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIaXN0b3J5SXRlbVRvSURNYXA+
IG1hcDsKLSAgICByZXR1cm4gbWFwOwotfQotCi1zdGF0aWMgdWludDY0X3QgdW5pcXVlSGlzdG9y
eUl0ZW1JRCA9IDE7Ci0KLXN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUhpc3RvcnlJdGVtSUQoKQot
ewotICAgIC8vIFRoZXNlIElEcyBleGlzdCBpbiB0aGUgV2ViUHJvY2VzcyBmb3IgaXRlbXMgY3Jl
YXRlZCBieSB0aGUgV2ViUHJvY2Vzcy4KLSAgICAvLyBUaGUgSURzIGdlbmVyYXRlZCBoZXJlIG5l
ZWQgdG8gbmV2ZXIgY29sbGlkZSB3aXRoIHRoZSBJRHMgY3JlYXRlZCBpbiBXZWJCYWNrRm9yd2Fy
ZExpc3QgaW4gdGhlIFVJUHJvY2Vzcy4KLSAgICAvLyBXZSBhY2NvbXBsaXNoIHRoaXMgYnkgc3Rh
cnRpbmcgZnJvbSAzLCBhbmQgb25seSBldmVyIHVzaW5nIG9kZCBpZHMuCi0gICAgdW5pcXVlSGlz
dG9yeUl0ZW1JRCArPSAyOwotICAgIHJldHVybiB1bmlxdWVIaXN0b3J5SXRlbUlEOwotfQotCi12
b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpzZXRIaWdoZXN0SXRlbUlERnJvbVVJUHJvY2Vz
cyh1aW50NjRfdCBpdGVtSUQpCit2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjphZGRJdGVt
RnJvbVVJUHJvY2Vzcyhjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQsIFJl
ZjxIaXN0b3J5SXRlbT4mJiBpdGVtLCB1aW50NjRfdCBwYWdlSUQpCiB7Ci0gICAgaWYgKGl0ZW1J
RCA8PSB1bmlxdWVIaXN0b3J5SXRlbUlEKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgIGlm
IChpdGVtSUQgJSAyKQotICAgICAgICAgdW5pcXVlSGlzdG9yeUl0ZW1JRCA9IGl0ZW1JRDsKLSAg
ICAgZWxzZQotICAgICAgICAgdW5pcXVlSGlzdG9yeUl0ZW1JRCA9IGl0ZW1JRCArIDE7Ci19Ci0K
LXN0YXRpYyB2b2lkIHVwZGF0ZUJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgSGlzdG9yeUl0ZW0qIGl0ZW0pCi17Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpBZGRPclVwZGF0ZUJhY2tGb3J3YXJkSXRlbShpdGVtSUQsIHBhZ2VJRCwgdG9QYWdl
U3RhdGUoKml0ZW0pKSwgMCk7Ci19Ci0KLXZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFk
ZEl0ZW1Gcm9tVUlQcm9jZXNzKHVpbnQ2NF90IGl0ZW1JRCwgUmVmPEhpc3RvcnlJdGVtPiYmIGl0
ZW0sIHVpbnQ2NF90IHBhZ2VJRCkKLXsKLSAgICAvLyBUaGlzIGl0ZW0vaXRlbUlEIHBhaXIgc2hv
dWxkIG5vdCBhbHJlYWR5IGV4aXN0IGluIG91ciBtYXBzLgotICAgIEFTU0VSVCghaGlzdG9yeUl0
ZW1Ub0lETWFwKCkuY29udGFpbnMoaXRlbS5wdHIoKSkpOworICAgIC8vIFRoaXMgaXRlbS9pdGVt
SUQgcGFpciBzaG91bGQgbm90IGFscmVhZHkgZXhpc3QgaW4gb3VyIG1hcC4KICAgICBBU1NFUlQo
IWlkVG9IaXN0b3J5SXRlbU1hcCgpLmNvbnRhaW5zKGl0ZW1JRCkpOwogCi0gICAgaGlzdG9yeUl0
ZW1Ub0lETWFwKCkuc2V0PEl0ZW1BbmRQYWdlSUQ+KGl0ZW0ucHRyKCksIHsgaXRlbUlELCBwYWdl
SUQgfSk7CiAgICAgaWRUb0hpc3RvcnlJdGVtTWFwKCkuc2V0KGl0ZW1JRCwgaXRlbS5wdHIoKSk7
CiB9CiAKIHN0YXRpYyB2b2lkIFdLMk5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZChIaXN0b3J5SXRl
bSogaXRlbSkKIHsKLSAgICBJdGVtQW5kUGFnZUlEIGlkcyA9IGhpc3RvcnlJdGVtVG9JRE1hcCgp
LmdldChpdGVtKTsKLSAgICBpZiAoIWlkcy5pdGVtSUQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IHVwZGF0ZUJhY2tGb3J3YXJkSXRlbShpZHMuaXRlbUlELCBpZHMucGFnZUlELCBpdGVtKTsKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlVwZGF0ZUJhY2tGb3J3YXJkSXRlbSh0b0JhY2tG
b3J3YXJkTGlzdEl0ZW1TdGF0ZSgqaXRlbSkpLCAwKTsKIH0KIAotSGlzdG9yeUl0ZW0qIFdlYkJh
Y2tGb3J3YXJkTGlzdFByb3h5OjppdGVtRm9ySUQodWludDY0X3QgaXRlbUlEKQorSGlzdG9yeUl0
ZW0qIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppdGVtRm9ySUQoY29uc3QgQmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllciYgaXRlbUlEKQogewogICAgIHJldHVybiBpZFRvSGlzdG9yeUl0ZW1NYXAo
KS5nZXQoaXRlbUlEKTsKIH0KIAotdWludDY0X3QgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Omlk
Rm9ySXRlbShIaXN0b3J5SXRlbSogaXRlbSkKLXsKLSAgICBBU1NFUlQoaXRlbSk7Ci0gICAgcmV0
dXJuIGhpc3RvcnlJdGVtVG9JRE1hcCgpLmdldChpdGVtKS5pdGVtSUQ7Ci19Ci0KLXZvaWQgV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHk6OnJlbW92ZUl0ZW0odWludDY0X3QgaXRlbUlEKQordm9pZCBX
ZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6cmVtb3ZlSXRlbShjb25zdCBCYWNrRm9yd2FyZEl0ZW1J
ZGVudGlmaWVyJiBpdGVtSUQpCiB7CiAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtID0gaWRU
b0hpc3RvcnlJdGVtTWFwKCkudGFrZShpdGVtSUQpOwogICAgIGlmICghaXRlbSkKQEAgLTEzMiw3
ICs4MCw2IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OnJlbW92ZUl0ZW0odWludDY0
X3QgaXRlbUlEKQogICAgICAgICAKICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZSgq
aXRlbSk7CiAgICAgV2ViQ29yZTo6UGFnZTo6Y2xlYXJQcmV2aW91c0l0ZW1Gcm9tQWxsUGFnZXMo
aXRlbS5nZXQoKSk7Ci0gICAgaGlzdG9yeUl0ZW1Ub0lETWFwKCkucmVtb3ZlKGl0ZW0pOwogfQog
CiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHkoV2ViUGFn
ZSogcGFnZSkKQEAgLTE0MywyMCArOTAsMTMgQEAgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Oldl
YkJhY2tGb3J3YXJkTGlzdFByb3h5KFdlYlBhZ2UqIHBhZ2UpCiAKIHZvaWQgV2ViQmFja0Zvcndh
cmRMaXN0UHJveHk6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYmIGl0ZW0pCiB7Ci0gICAgQVNT
RVJUKCFoaXN0b3J5SXRlbVRvSURNYXAoKS5jb250YWlucyhpdGVtLnB0cigpKSk7Ci0KICAgICBp
ZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdWludDY0X3QgaXRlbUlEID0gZ2Vu
ZXJhdGVIaXN0b3J5SXRlbUlEKCk7Ci0KLSAgICBBU1NFUlQoIWlkVG9IaXN0b3J5SXRlbU1hcCgp
LmNvbnRhaW5zKGl0ZW1JRCkpOwotCi0gICAgaGlzdG9yeUl0ZW1Ub0lETWFwKCkuc2V0PEl0ZW1B
bmRQYWdlSUQ+KGl0ZW0ucHRyKCksIHsgaXRlbUlELCBtX3BhZ2UtPnBhZ2VJRCgpIH0pOwotICAg
IGlkVG9IaXN0b3J5SXRlbU1hcCgpLnNldChpdGVtSUQsIGl0ZW0ucHRyKCkpOworICAgIGF1dG8g
cmVzdWx0ID0gaWRUb0hpc3RvcnlJdGVtTWFwKCkuYWRkKGl0ZW0tPmlkZW50aWZpZXIoKSwgaXRl
bS5wdHIoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsK
IAotICAgIHVwZGF0ZUJhY2tGb3J3YXJkSXRlbShpdGVtSUQsIG1fcGFnZS0+cGFnZUlEKCksIGl0
ZW0ucHRyKCkpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNr
Rm9yd2FyZEFkZEl0ZW0oaXRlbUlEKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkJhY2tGb3J3YXJkQWRkSXRlbSh0b0JhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZShp
dGVtLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5Ojpnb1RvSXRl
bShIaXN0b3J5SXRlbSogaXRlbSkKQEAgLTE2NSw3ICsxMDUsNyBAQCB2b2lkIFdlYkJhY2tGb3J3
YXJkTGlzdFByb3h5Ojpnb1RvSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7
Ci0gICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2Fy
ZEdvVG9JdGVtKGhpc3RvcnlJdGVtVG9JRE1hcCgpLmdldChpdGVtKS5pdGVtSUQpLCBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEdvVG9JdGVtOjpSZXBseShzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKSk7CisgICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpCYWNrRm9yd2FyZEdvVG9JdGVtKGl0ZW0tPmlkZW50aWZpZXIoKSksIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkJhY2tGb3J3YXJkR29Ub0l0ZW06OlJlcGx5KHNhbmRib3hFeHRlbnNpb25IYW5k
bGUpKTsKICAgICBtX3BhZ2UtPnNhbmRib3hFeHRlbnNpb25UcmFja2VyKCkuYmVnaW5Mb2FkKG1f
cGFnZS0+bWFpbldlYkZyYW1lKCksIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwog
fQogCkBAIC0xNzQsMTQgKzExNCwxNCBAQCBIaXN0b3J5SXRlbSogV2ViQmFja0ZvcndhcmRMaXN0
UHJveHk6Oml0ZW1BdEluZGV4KGludCBpdGVtSW5kZXgpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgdWludDY0X3QgaXRlbUlEID0gMDsKKyAgICBzdGQ6
Om9wdGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+IGl0ZW1JRDsKICAgICBpZiAoIVdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkSXRlbUF0SW5kZXgoaXRlbUluZGV4
KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRJdGVtQXRJbmRleDo6UmVwbHko
aXRlbUlEKSwgbV9wYWdlLT5wYWdlSUQoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgaWYgKCFpdGVtSUQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGlk
VG9IaXN0b3J5SXRlbU1hcCgpLmdldChpdGVtSUQpOworICAgIHJldHVybiBpZFRvSGlzdG9yeUl0
ZW1NYXAoKS5nZXQoKml0ZW1JRCk7CiB9CiAKIGludCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6
YmFja0xpc3RDb3VudCgpCkBAIC0yMTAsNiArMTUwLDcgQEAgaW50IFdlYkJhY2tGb3J3YXJkTGlz
dFByb3h5Ojpmb3J3YXJkTGlzdENvdW50KCkKIAogdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94
eTo6Y2xvc2UoKQogeworICAgIEFTU0VSVChtX3BhZ2UpOwogICAgIG1fcGFnZSA9IG51bGxwdHI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJh
Y2tGb3J3YXJkTGlzdFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCmluZGV4IGQ0M2Y5NDhjYTAxYmMwMWRjNWMzZmRkYzMy
MjJlNGQ1NzZiNTIxNGMuLmNhZDcwZTg2MDI5ZTQ2MDg3ODYyZjAwMjViMTE1MTc3NjIyZTAyNjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3
YXJkTGlzdFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHkuaApAQCAtMjksNiArMjksMTAgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0JhY2tGb3J3YXJkQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAorbmFt
ZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7Cit9CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlOwpAQCAtMzcsMTIgKzQxLDEwIEBA
IGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5IDogcHVibGljIFdlYkNvcmU6OkJhY2tGb3J3
YXJkQ2xpZW50IHsKIHB1YmxpYzogCiAgICAgc3RhdGljIFJlZjxXZWJCYWNrRm9yd2FyZExpc3RQ
cm94eT4gY3JlYXRlKFdlYlBhZ2UqIHBhZ2UpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQmFj
a0ZvcndhcmRMaXN0UHJveHkocGFnZSkpOyB9CiAKLSAgICBzdGF0aWMgV2ViQ29yZTo6SGlzdG9y
eUl0ZW0qIGl0ZW1Gb3JJRCh1aW50NjRfdCk7Ci0gICAgc3RhdGljIHVpbnQ2NF90IGlkRm9ySXRl
bShXZWJDb3JlOjpIaXN0b3J5SXRlbSopOwotICAgIHN0YXRpYyB2b2lkIHJlbW92ZUl0ZW0odWlu
dDY0X3QgaXRlbUlEKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW1Gb3JJ
RChjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJik7CisgICAgc3RhdGlj
IHZvaWQgcmVtb3ZlSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
Jik7CiAKLSAgICB2b2lkIGFkZEl0ZW1Gcm9tVUlQcm9jZXNzKHVpbnQ2NF90IGl0ZW1JRCwgUmVm
PFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYmLCB1aW50NjRfdCBwYWdlSUQpOwotICAgIHN0YXRpYyB2
b2lkIHNldEhpZ2hlc3RJdGVtSURGcm9tVUlQcm9jZXNzKHVpbnQ2NF90IGl0ZW1JRCk7CisgICAg
dm9pZCBhZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1J
ZGVudGlmaWVyJiwgUmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYmLCB1aW50NjRfdCBwYWdlSUQp
OwogICAgIAogICAgIHZvaWQgY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA5ZTkxYzNiOGU1MjMzOGI2NDkyY2Q2NjljMjExZjEy
NWJhZjY0Y2IxLi5mMDIyZWUxM2U1YzM4Yzg2NTBmZTFlN2E5NzMwYzliY2E5ZDRjMjY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTIzLDgg
KzUyMyw2IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBzZXRUb3BDb250ZW50SW5zZXQocGFyYW1l
dGVycy50b3BDb250ZW50SW5zZXQpOwogCiAgICAgbV91c2VyQWdlbnQgPSBwYXJhbWV0ZXJzLnVz
ZXJBZ2VudDsKLQotICAgIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpzZXRIaWdoZXN0SXRlbUlE
RnJvbVVJUHJvY2VzcyhwYXJhbWV0ZXJzLmhpZ2hlc3RVc2VkQmFja0ZvcndhcmRJdGVtSUQpOwog
ICAgIAogICAgIGlmICghcGFyYW1ldGVycy5pdGVtU3RhdGVzLmlzRW1wdHkoKSkKICAgICAgICAg
cmVzdG9yZVNlc3Npb25JbnRlcm5hbChwYXJhbWV0ZXJzLml0ZW1TdGF0ZXMsIFdhc1Jlc3RvcmVk
QnlBUElSZXF1ZXN0OjpObyk7CkBAIC0xMzkwLDcgKzEzODgsNyBAQCB2b2lkIFdlYlBhZ2U6OnJl
bG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHJlbG9hZE9wdGlvbnMsIFNhbmRi
b3hFeHRlbgogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjpnb1RvQmFja0ZvcndhcmRJdGVtKHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QgYmFja0ZvcndhcmRJdGVtSUQsIEZyYW1lTG9h
ZFR5cGUgYmFja0ZvcndhcmRUeXBlLCBOYXZpZ2F0aW9uUG9saWN5Q2hlY2sgbmF2aWdhdGlvblBv
bGljeUNoZWNrKQordm9pZCBXZWJQYWdlOjpnb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYgYmFja0ZvcndhcmRJ
dGVtSUQsIEZyYW1lTG9hZFR5cGUgYmFja0ZvcndhcmRUeXBlLCBOYXZpZ2F0aW9uUG9saWN5Q2hl
Y2sgbmF2aWdhdGlvblBvbGljeUNoZWNrKQogewogICAgIFNlbmRTdG9wUmVzcG9uc2l2ZW5lc3NU
aW1lciBzdG9wcGVyOwogCkBAIC0yNDg4LDcgKzI0ODYsNyBAQCB2b2lkIFdlYlBhZ2U6OmV4ZWN1
dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBjb25zdCBTdHJpbmcmIGFy
Z3VtZQogdm9pZCBXZWJQYWdlOjpyZXN0b3JlU2Vzc2lvbkludGVybmFsKGNvbnN0IFZlY3RvcjxC
YWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+JiBpdGVtU3RhdGVzLCBXYXNSZXN0b3JlZEJ5QVBJUmVx
dWVzdCByZXN0b3JlZEJ5QVBJUmVxdWVzdCkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW1T
dGF0ZSA6IGl0ZW1TdGF0ZXMpIHsKLSAgICAgICAgYXV0byBoaXN0b3J5SXRlbSA9IHRvSGlzdG9y
eUl0ZW0oaXRlbVN0YXRlLnBhZ2VTdGF0ZSk7CisgICAgICAgIGF1dG8gaGlzdG9yeUl0ZW0gPSB0
b0hpc3RvcnlJdGVtKGl0ZW1TdGF0ZSk7CiAgICAgICAgIGhpc3RvcnlJdGVtLT5zZXRXYXNSZXN0
b3JlZEZyb21TZXNzaW9uKHJlc3RvcmVkQnlBUElSZXF1ZXN0ID09IFdhc1Jlc3RvcmVkQnlBUElS
ZXF1ZXN0OjpZZXMpOwogICAgICAgICBzdGF0aWNfY2FzdDxXZWJCYWNrRm9yd2FyZExpc3RQcm94
eSo+KGNvcmVQYWdlKCktPmJhY2tGb3J3YXJkKCkuY2xpZW50KCkpLT5hZGRJdGVtRnJvbVVJUHJv
Y2VzcyhpdGVtU3RhdGUuaWRlbnRpZmllciwgV1RGTW92ZShoaXN0b3J5SXRlbSksIG1fcGFnZUlE
KTsKICAgICB9CkBAIC00MDgyLDcgKzQwODAsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEN1c3RvbVRl
eHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGluZykKICAgICBtX3BhZ2UtPm1haW5G
cmFtZSgpLmxvYWRlcigpLnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5nKGVuY29kaW5nKTsKIH0K
IAotdm9pZCBXZWJQYWdlOjpkaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgaXRlbUlE
KQordm9pZCBXZWJQYWdlOjpkaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oY29uc3QgQmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllciYgaXRlbUlEKQogewogICAgIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5
OjpyZW1vdmVJdGVtKGl0ZW1JRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKaW5kZXggNTMwMGI3ZWQ0OTI1ZTM3MWQ4OTUyNWRmNzViNzgwMTVjZWVlMjcx
NC4uYzNjNjBmMjcxZTVkY2FmM2IwNTMzYjk1NjczZjA4NTI5YWFiMTY0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTU0LDYgKzE1NCw3IEBAIGVu
dW0gU3ludGhldGljQ2xpY2tUeXBlIDogaW50OF90OwogZW51bSBjbGFzcyBOYXZpZ2F0aW9uUG9s
aWN5Q2hlY2s7CiBlbnVtIGNsYXNzIFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9u
IDogdWludDhfdDsKIAorc3RydWN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7CiBzdHJ1Y3Qg
Q29tcG9zaXRpb25VbmRlcmxpbmU7CiBzdHJ1Y3QgRGljdGF0aW9uQWx0ZXJuYXRpdmU7CiBzdHJ1
Y3QgR2xvYmFsRnJhbWVJZGVudGlmaWVyOwpAQCAtMTE1Myw3ICsxMTU0LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvbnN0IExvYWRQYXJhbWV0ZXJzJik7
CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJp
bmcmIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9p
bnQgc2NyZWVuUG9pbnQpOwogICAgIHZvaWQgcmVsb2FkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
dWludDMyX3QgcmVsb2FkT3B0aW9ucywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOwotICAg
IHZvaWQgZ29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90
LCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlLCBXZWJDb3JlOjpOYXZpZ2F0aW9uUG9saWN5Q2hlY2sp
OworICAgIHZvaWQgZ29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBXZWJDb3JlOjpGcmFtZUxv
YWRUeXBlLCBXZWJDb3JlOjpOYXZpZ2F0aW9uUG9saWN5Q2hlY2spOwogICAgIHZvaWQgdHJ5UmVz
dG9yZVNjcm9sbFBvc2l0aW9uKCk7CiAgICAgdm9pZCBzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3
YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWJLZXlib2FyZEV2ZW50Jiwg
Q2FsbGJhY2tJRCk7CiAgICAgdm9pZCB1cGRhdGVJc0luV2luZG93KGJvb2wgaXNJbml0aWFsU3Rh
dGUgPSBmYWxzZSk7CkBAIC0xMTg2LDcgKzExODcsNyBAQCBwcml2YXRlOgogICAgIGVudW0gY2xh
c3MgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3QgeyBObywgWWVzIH07CiAgICAgdm9pZCByZXN0b3Jl
U2Vzc2lvbkludGVybmFsKGNvbnN0IFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+Jiwg
V2FzUmVzdG9yZWRCeUFQSVJlcXVlc3QpOwogICAgIHZvaWQgcmVzdG9yZVNlc3Npb24oY29uc3Qg
VmVjdG9yPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4mKTsKLSAgICB2b2lkIGRpZFJlbW92ZUJh
Y2tGb3J3YXJkSXRlbSh1aW50NjRfdCk7CisgICAgdm9pZCBkaWRSZW1vdmVCYWNrRm9yd2FyZEl0
ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYpOwogCiAjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgdm9pZCBzZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9u
KGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KaW5kZXggY2M3MGE5YWM4MTgxZTFjZGU1ODNiMmQzNTc1NTVmMzk3MDcz
ZTcxYy4uMmI5MDIxZmE3MTQ3MjI5OGJhZDkxY2EzYzZhNWE4NjczOGQ4OGU3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CkBAIC0xMzEsNyArMTMxLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7
CiAgICAgU2Nyb2xsQnkodWludDMyX3Qgc2Nyb2xsRGlyZWN0aW9uLCB1aW50MzJfdCBzY3JvbGxH
cmFudWxhcml0eSkKICAgICBDZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKCkKIAotICAgIEdv
VG9CYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCBiYWNrRm9y
d2FyZEl0ZW1JRCwgZW51bSBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlIGJhY2tGb3J3YXJkVHlwZSwg
ZW51bSBXZWJDb3JlOjpOYXZpZ2F0aW9uUG9saWN5Q2hlY2sgbmF2aWdhdGlvblBvbGljeUNoZWNr
KQorICAgIEdvVG9CYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3Qg
V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBiYWNrRm9yd2FyZEl0ZW1JRCwgZW51
bSBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlIGJhY2tGb3J3YXJkVHlwZSwgZW51bSBXZWJDb3JlOjpO
YXZpZ2F0aW9uUG9saWN5Q2hlY2sgbmF2aWdhdGlvblBvbGljeUNoZWNrKQogICAgIFRyeVJlc3Rv
cmVTY3JvbGxQb3NpdGlvbigpCiAKICAgICBMb2FkVVJMSW5GcmFtZShXZWJDb3JlOjpVUkwgdXJs
LCB1aW50NjRfdCBmcmFtZUlEKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIAogICAgIFJlc3RvcmVTZXNzaW9uKFZlY3RvcjxXZWJL
aXQ6OkJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4gaXRlbVN0YXRlcykKIAotICAgIERpZFJlbW92
ZUJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBiYWNrRm9yd2FyZEl0ZW1JRCkKKyAgICBEaWRSZW1v
dmVCYWNrRm9yd2FyZEl0ZW0oc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZp
ZXIgYmFja0ZvcndhcmRJdGVtSUQpCiAKICAgICBVcGRhdGVXZWJzaXRlUG9saWNpZXMoc3RydWN0
IFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YSB3ZWJzaXRlUG9saWNpZXMpCiAgICAgRGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IGVudW0gV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgc3RkOjpvcHRpb25hbDxXZWJL
aXQ6OldlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llcykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338334</attachid>
            <date>2018-04-19 10:04:36 -0700</date>
            <delta_ts>2018-04-19 11:45:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184750-20180419100436.patch</filename>
            <type>text/plain</type>
            <size>70911</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAwOTE2NGI3MDQwMzNiMjc1Y2E0MzRi
ODgxZjVlMDYyNTU2NDZiNGMuLmIxZDI2NGUwNmJjNmQzNWNiYmFjZTAxNWNkODM0YzcxYTU5ZWE3
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDQtMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBnbG9iYWxseS11bmlxdWUgSGlzdG9yeUl0ZW0g
aWRlbnRpZmllcnMgKGFuZCBoYXZlIFdlYktpdDIgYWRvcHQgdGhlbSkuCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8zOTUzMzk0OT4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODQ3NTAKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAg
ICAgICAgKiB3dGYvRGVidWdVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdURjo6ZGVidWdTdHJpbmcp
OgorCiAyMDE4LTA0LTE4ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4K
IAogICAgICAgICBbV2luXSBMYXlvdXQgVGVzdCBqcy9kYXRlLWNvbnN0cnVjdG9yLmh0bWwgaXMg
ZmFpbGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDhjMGJjODdjYzNiNGM1M2FlMTg5ZTgzNTRlNGM0OWZkMWJm
ZjFjNWYuLjJlMzFlOTYxZTA0ZWI1YjE0M2FlMjllYzA4Njk4ZTAzNzVmNjk5ODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzOSBAQAorMjAxOC0wNC0xOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIGdsb2JhbGx5LXVuaXF1ZSBIaXN0b3J5SXRlbSBpZGVu
dGlmaWVycyAoYW5kIGhhdmUgV2ViS2l0MiBhZG9wdCB0aGVtKS4KKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzM5NTMzOTQ5PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NDc1MAorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgKFJlZmFjdG9yLCBubyBiZWhhdmlvciBjaGFuZ2UpLgorCisgICAgICAg
IEluIFdlYkNvcmUsIHdlOgorICAgICAgICAtIEFkZCBhIHByb2Nlc3MtdW5pcXVlICJCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyIgorICAgICAgICAtIE1ha2UgYWxsIEhpc3RvcnlJdGVtcyBoYXZl
IHN1Y2ggYW4gaWRlbnRpZmllciBhcyBhIG1lbWJlcgorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogaGlzdG9yeS9CYWNrRm9yd2FyZEl0
ZW1JZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllcjo6bG9nU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9y
PT0pOgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOjpoYXNo
IGNvbnN0KToKKyAgICAgICAgKFdURjo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllckhhc2g6Omhh
c2gpOgorICAgICAgICAoV1RGOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVySGFzaDo6ZXF1YWwp
OgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXI+OjplbXB0eVZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJDb3JlOjpC
YWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPjo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAg
ICAgKFdURjo6SGFzaFRyYWl0czxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPjo6
aXNEZWxldGVkVmFsdWUpOgorCisgICAgICAgICogaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIaXN0b3J5SXRlbTo6Z2VuZXJhdGVTZXF1ZW5jZU51bWJlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpIaXN0b3J5SXRlbTo6SGlzdG9yeUl0ZW0pOgorICAgICAgICAoV2Vi
Q29yZTo6Z2VuZXJhdGVTZXF1ZW5jZU51bWJlcik6IERlbGV0ZWQuCisKKyAgICAgICAgKiBoaXN0
b3J5L0hpc3RvcnlJdGVtLmg6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5SXRlbTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlJdGVtOjppZGVudGlmaWVyIGNvbnN0KToKKwog
MjAxOC0wNC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFNl
dCBSZW1vdGVET01XaW5kb3cncyBpbml0aWFsIG9wZW5lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1YjIxMjJkYWUy
MWIzYjRjYzU4N2MyZDI5NTNkZTY2ODU3ZjM0MDRiLi41NDQ3NDhkOWE3NjZiZGU2N2Q3YTgwMDdh
OTE0YTBlN2Q0NTE1MzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAxOC0wNC0xOCAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGdsb2JhbGx5
LXVuaXF1ZSBIaXN0b3J5SXRlbSBpZGVudGlmaWVycyAoYW5kIGhhdmUgV2ViS2l0MiBhZG9wdCB0
aGVtKS4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM5NTMzOTQ5PiBhbmQgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NDc1MAorCisgICAgICAgIFJldmlld2VkIGJ5
IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBXaXRoIHByb2Nlc3Mgc3dhcHBpbmcsIHRoZSBhc3N1
bXB0aW9uIHRoYXQgImJhY2svZm9yd2FyZCBpdGVtcyBiZWxvbmcgdG8gYSBwcm9jZXNzIiBpcyBp
bnZhbGlkLgorCisgICAgICAgIEFsbCBIaXN0b3J5SXRlbS9XZWJCYWNrRm9yd2FyZExpc3RJdGVt
cyBub3cgbmVlZCB0byBiZSB1bmlxdWVseSBpZGVudGlmaWVkIGFjcm9zcyBhbGwgcHJvY2Vzc2Vz
LAorICAgICAgICBubyBtYXR0ZXIgd2hpY2ggcHJvY2VzcyB0aGV5IG9yaWdpbmF0ZWQgZnJvbSwg
c28gdGhlcmUgd2lsbCBuZXZlciBiZSBhIGNvbGxpc2lvbiBpbiB0aGUgVUlQcm9jZXNzLgorCisg
ICAgICAgIFRoaXMgYWxsb3dzIHVzIHRvOgorICAgICAgICAtIEhhdmUgdGhlIFVJUHJvY2VzcyB0
byBrZWVwIGEgc2luZ2xlIHByb2Nlc3Mtd2lkZSBtYXAgb2YgYWxsIFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW1zCisgICAgICAgIC0gR2V0IHJpZCBvZiB0aGUgcGVyLVdlYlByb2Nlc3MgV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSBtYXAKKyAgICAgICAgLSBTaW1wbGlmeSBhIGxvdCBvZiBXZWJCYWNrRm9y
d2FyZExpc3QoUHJveHkpIGNvZGUgdGhhdCBubyBsb25nZXIgbmVlZHMgdG8ga2VlcCB0aGF0IHBl
ci1wcm9jZXNzCisgICAgICAgICAgbWFwIGluIHN5bmMKKyAgICAgICAgLSBHZXQgcmlkIG9mIGEg
bG90IG9mIG90aGVyIGFuY2lsbGFyeSBjb2RlCisKKyAgICAgICAgKiBTaGFyZWQvU2Vzc2lvblN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOjpkZWNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9TZXNzaW9uU3RhdGUuaDoKKworICAgICAgICAqIFNoYXJl
ZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0Zv
cndhcmRMaXN0SXRlbTo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06On5XZWJCYWNrRm9yd2FyZExpc3RJdGVtKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUZvcklEKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aGlnaGVzdFVzZWRJdGVtSUQpOiBEZWxl
dGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmg6CisgICAgICAg
IChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW06Oml0ZW1JRCBjb25zdCk6CisKKyAgICAg
ICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExp
c3Q6Oml0ZW1Gb3JJRCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6cGFn
ZUNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9yZUZyb21TdGF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlV2ViQmFja0ZvcndhcmRJdGVtSUQpOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuaDoKKworICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6Om1heWJlQ3JlYXRlU3VzcGVuZGVkUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVzdG9yZUZyb21TZXNzaW9uU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmJhY2tGb3J3YXJkQWRkSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6YmFja0ZvcndhcmRHb1RvSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
YmFja0ZvcndhcmRJdGVtQXRJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpiYWNr
Rm9yd2FyZFJlbW92ZWRJdGVtKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOiBFeHBsaWNpdGx5IHNldCB0aGUgVUlQ
cm9jZXNzIFByb2Nlc3M6OklkZW50aWZpZXIgc28gaXQgc3RhcnRzCisgICAgICAgICAgYXQgIjEi
IGFuZCB0aGVuIHRoZSBmaXJzdCBjaGlsZCBwcm9jZXNzIHN0YXJ0cyBhdCAiMiIsIGV0YyBldGMu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpjaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZUJhY2tGb3J3YXJkSXRlbSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6d2ViQmFja0ZvcndhcmRJdGVtIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3Rlck5ld1dl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OnJlbW92ZUJhY2tGb3J3YXJkSXRlbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6YWRkT3JVcGRhdGVCYWNrRm9yd2FyZEl0ZW0pOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6dG9CYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjphcHBs
eUZyYW1lU3RhdGUpOgorICAgICAgICAoV2ViS2l0Ojp0b0hpc3RvcnlJdGVtKToKKyAgICAgICAg
KFdlYktpdDo6dG9QYWdlU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5oOgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRHb1RvSGlzdG9yeUl0ZW0gY29uc3Qp
OgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW1G
cm9tVUlQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V0syTm90aWZ5SGlzdG9yeUl0ZW1DaGFu
Z2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Oml0ZW1Gb3JJ
RCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpyZW1vdmVJdGVt
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW0pOiBQ
cmV2aW91c2x5IHRoaXMgd2FzIGEgdHdvLXN0ZXAgcHJvY2VzcyBvZiBhZGRpbmcgYW4gaXRlbQor
ICAgICAgICAgIHRvIHRoZSBwcm9jZXNzIGFuZCB0aGVuIGFzc29jaWF0aW5nIGl0IHdpdGggdGhl
IHBhZ2UuIE5vdyBpdCdzIGp1c3QgZGlyZWN0bHkgYWRkaW5nIGl0IHRvIHRoZSBwYWdlLAorICAg
ICAgICAgIHNvIHdlIGRvbid0IG5lZWQgdG8gY2FsbCB1cGRhdGVCYWNrRm9yd2FyZEl0ZW0gZmly
c3QuCisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5Ojpnb1RvSXRlbSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppdGVtQXRJbmRleCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpjbG9zZSk6CisgICAg
ICAgIChXZWJLaXQ6Omhpc3RvcnlJdGVtVG9JRE1hcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OmdlbmVyYXRlSGlzdG9yeUl0ZW1JRCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YkJhY2tGb3J3YXJkTGlzdFByb3h5OjpzZXRIaWdoZXN0SXRlbUlERnJvbVVJUHJvY2Vzcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OnVwZGF0ZUJhY2tGb3J3YXJkSXRlbSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppZEZvckl0ZW0pOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQ
cm94eS5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjptX2NyZWRlbnRpYWxzTWVzc2VuZ2VyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnJlc3RvcmVTZXNzaW9uSW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRS
ZW1vdmVCYWNrRm9yd2FyZEl0ZW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46
CisKIDIwMTgtMDQtMTggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEFsbG93IFNhbWVPcmlnaW4gY3JlZGVudGlhbHMgaGFuZGxpbmcgZm9yIHN5bmNocm9ub3Vz
IFhIUgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGVidWdVdGlsaXRpZXMuaCBiL1NvdXJj
ZS9XVEYvd3RmL0RlYnVnVXRpbGl0aWVzLmgKaW5kZXggYTQ0MWI1Y2RlOGJkMzQ4NjU4YjE4YzE1
MmY5NTViNDU5MGNmZjhiNC4uZGIzZDU2NjViZGE1YzA3MWM0ODU4ZWM2MjZhNmQxMjEzZDNkY2Y5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGVidWdVdGlsaXRpZXMuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9EZWJ1Z1V0aWxpdGllcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGUuaD4KIApAQCAtNDIsNiArNDMsMTIgQEAgZG8geyBcCiAKIG5hbWVzcGFj
ZSBXVEYgewogCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlPgorY29uc3QgY2hhciogZGVi
dWdTdHJpbmcoU3RyaW5nVHlwZSBzdHJpbmcpCit7CisgICAgcmV0dXJuIGRlYnVnU3RyaW5nKHN0
cmluZywgIiIpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBTdHJpbmdUeXBlcz4KIGNvbnN0
IGNoYXIqIGRlYnVnU3RyaW5nKFN0cmluZ1R5cGVzLi4uIHN0cmluZ3MpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDFkY2Qz
ZWVkZmFhNzU1ZTA2M2M2ZTc5ZjM5ODUwNDcxY2YzM2FiNC4uMDM5MTQ4OTUyMmE3OTAyZjA2NzM4
YzgxMDQ0Mzg2OWI0ZTA1NzliYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ2Niw2ICsxNDY2LDcgQEAKIAkJNTE5REJDNzIx
REMxMEY1MjAwMzI5QkY1IC8qIElEQkdldEFsbFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE5REJDNzExREMxMEQzMzAwMzI5QkY1IC8qIElE
QkdldEFsbFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUxQTA1MjMzMTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBMDUyMzEx
MDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRpYWxTdG9yYWdlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFBMDUyNTYxMDU4ODc0MDAwQ0M5RTk1
IC8qIFByb3RlY3Rpb25TcGFjZUhhc2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQTA1MjU1MTA1ODg3NDAwMENDOUU5NSAvKiBQcm90ZWN0aW9uU3Bh
Y2VIYXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNTFBMUI4N0QyMDg3QzRDMDAwOTc5QTc1IC8qIEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQTFCODdC
MjA4N0M0QjgwMDk3OUE3NSAvKiBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFBNEJCMEExOTU0RDYx
NjAwRkE1QzJFIC8qIEdhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFBNEJCMDcxOTU0RDYxNjAwRkE1QzJFIC8qIEdhbWVwYWQuY3BwICov
OyB9OwogCQk1MUE0QkIxMDE5NTRENjI3MDBGQTVDMkUgLyogTmF2aWdhdG9yR2FtZXBhZC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE0QkIwRDE5
NTRENjI3MDBGQTVDMkUgLyogTmF2aWdhdG9yR2FtZXBhZC5jcHAgKi87IH07CiAJCTUxQTc0OEUz
MjAwNUQwRTgwMDc1QkE2OCAvKiBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBNzQ4RTAyMDA1RDBFMDAwNzVC
QTY4IC8qIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc5NTQsNiArNzk1NSw3IEBACiAJCTUxQTA1MjMx
MTA1ODc3NEYwMENDOUU5NSAvKiBDcmVkZW50aWFsU3RvcmFnZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDcmVkZW50aWFsU3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUEwNTIzMjEwNTg3NzRGMDBDQzlFOTUgLyogQ3JlZGVudGlhbFN0b3JhZ2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3JlZGVudGlhbFN0b3Jh
Z2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUEwNTI1NTEwNTg4NzQwMDBD
QzlFOTUgLyogUHJvdGVjdGlvblNwYWNlSGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQcm90ZWN0aW9uU3BhY2VIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxQTFCODdCMjA4N0M0QjgwMDk3OUE3NSAvKiBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBNEJCMDcxOTU0RDYxNjAw
RkE1QzJFIC8qIEdhbWVwYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR2FtZXBhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQTRCQjA4MTk1
NEQ2MTYwMEZBNUMyRSAvKiBHYW1lcGFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdhbWVwYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFBNEJCMDkxOTU0
RDYxNjAwRkE1QzJFIC8qIEdhbWVwYWQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdhbWVw
YWQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc1ODYsNiArMTc1ODgsNyBA
QAogCQkJCTUxNzQxRDBCMEIwNzI1OUEwMEVENDQyQyAvKiBCYWNrRm9yd2FyZENsaWVudC5oICov
LAogCQkJCUJDQThDODFEMTFFM0QzNjkwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZENvbnRyb2xsZXIu
Y3BwICovLAogCQkJCUJDQThDODFDMTFFM0QzNjkwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZENvbnRy
b2xsZXIuaCAqLywKKwkJCQk1MUExQjg3QjIwODdDNEI4MDA5NzlBNzUgLyogQmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllci5oICovLAogCQkJCTUxQzBBQTQwMEYyQUExNUUwMDE2NDhDMiAvKiBDYWNo
ZWRGcmFtZS5jcHAgKi8sCiAJCQkJNTFDMEFBMzgwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZy
YW1lLmggKi8sCiAJCQkJNTFDQkZDOTgwRDEwRTQ4MzAwMkRCRjUxIC8qIENhY2hlZEZyYW1lUGxh
dGZvcm1EYXRhLmggKi8sCkBAIC0yNjkyMiw2ICsyNjkyNSw3IEBACiAJCQkJOTFDOUYyRjkxQUUz
QkVCMDAwOTVCNjFDIC8qIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTc0MUQwRjBCMDcyNTlBMDBFRDQ0MkMgLyogQmFja0ZvcndhcmRDbGllbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDQThDODFFMTFFM0QzNjkwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZENv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQTFCODdEMjA4N0M0QzAwMDk3OUE3NSAv
KiBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzEyNEVF
ODBDMjY0MUNEMDA5RTIzNDkgLyogQmFyUHJvcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDYwQkI2
MTYxRDBBMUJGMDAwMjIxODEyIC8qIEJhc2U2NFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzc5RTYxQ0ExMjZDQTVDNDAwQjYzRThEIC8qIEJhc2VCdXR0b25JbnB1dFR5cGUuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZGVkNjRhZDRmM2NhMWYyMmNkMmNmNGY2MDc5Y2Uy
Y2MxMTVjZDNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyLmgKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlByb2Nlc3MuaCIKKyNpbmNsdWRlIDx3dGYvRGVidWdV
dGlsaXRpZXMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXIgeworICAgIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVy
OworICAgIGVudW0gSXRlbUlkZW50aWZpZXJUeXBlIHsgfTsKKyAgICBPYmplY3RJZGVudGlmaWVy
PEl0ZW1JZGVudGlmaWVyVHlwZT4gaXRlbUlkZW50aWZpZXI7CisKKyAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3Q7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKKworI2lm
ICFMT0dfRElTQUJMRUQKKyAgICBjb25zdCBjaGFyKiBsb2dTdHJpbmcoKSBjb25zdDsKKyNlbmRp
ZgorfTsKKworI2lmICFMT0dfRElTQUJMRUQKK2lubGluZSBjb25zdCBjaGFyKiBCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyOjpsb2dTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBkZWJ1Z1N0
cmluZyhTdHJpbmc6Om51bWJlcihwcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpKSwgIi0iLCBT
dHJpbmc6Om51bWJlcihpdGVtSWRlbnRpZmllci50b1VJbnQ2NCgpKSk7Cit9CisjZW5kaWYKKwor
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBh
LCBjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBiKQoreworICAgIHJldHVybiBhLnBy
b2Nlc3NJZGVudGlmaWVyID09IGIucHJvY2Vzc0lkZW50aWZpZXIgJiYgIGEuaXRlbUlkZW50aWZp
ZXIgPT0gYi5pdGVtSWRlbnRpZmllcjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3Zv
aWQgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Cit7CisgICAgZW5jb2RlciA8PCBwcm9jZXNzSWRlbnRpZmllciA8PCBpdGVtSWRlbnRpZmll
cjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8QmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllcj4gQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxQcm9jZXNzSWRlbnRpZmllcj4gcHJv
Y2Vzc0lkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBwcm9jZXNzSWRlbnRpZmllcjsKKyAgICBp
ZiAoIXByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgc3RkOjpvcHRpb25hbDxPYmplY3RJZGVudGlmaWVyPEl0ZW1JZGVudGlmaWVyVHlwZT4+IGl0
ZW1JZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gaXRlbUlkZW50aWZpZXI7CisgICAgaWYgKCFp
dGVtSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVy
biB7IHsgV1RGTW92ZSgqcHJvY2Vzc0lkZW50aWZpZXIpLCBXVEZNb3ZlKCppdGVtSWRlbnRpZmll
cikgfSB9OworfQorCitpbmxpbmUgdW5zaWduZWQgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjo6
aGFzaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbXB1dGVIYXNoKHByb2Nlc3NJZGVudGlmaWVy
LnRvVUludDY0KCksIGl0ZW1JZGVudGlmaWVyLnRvVUludDY0KCkpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCitzdHJ1Y3QgQmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllckhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYkNvcmU6
OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQor
ICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXImIGEsIGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGIpIHsg
cmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0Vt
cHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8
V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gOiBHZW5lcmljSGFzaFRyYWl0czxX
ZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiB7CisgICAgc3RhdGljIFdlYkNvcmU6
OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHsgfTsgfQor
CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OkJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXImIHNsb3QpIHsgc2xvdC5wcm9jZXNzSWRlbnRpZmllciA9IE9iamVj
dElkZW50aWZpZXI8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXJUeXBlPihIYXNoVGFibGVEZWxl
dGVkVmFsdWUpOyB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJD
b3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBzbG90KSB7IHJldHVybiBzbG90LnByb2Nl
c3NJZGVudGlmaWVyLnRvVUludDY0KCkgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46
Om1heCgpOyB9Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpC
YWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiB7CisgICAgdHlwZWRlZiBCYWNrRm9yd2FyZEl0ZW1J
ZGVudGlmaWVySGFzaCBIYXNoOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCmluZGV4IDlkODY4OTg4YWQwZWRhZTAwZDk1Zjg0MmZk
MzgyMzI0ZGY5ZjU1ODQuLmE1YmE5NWU0MzU2NjQzY2I3ZWYzMjM3YWU2MjJjZTM4NzhlNjY3N2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCkBAIC00MCw3ICs0MCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGxvbmcgbG9uZyBnZW5lcmF0ZVNlcXVl
bmNlTnVtYmVyKCkKK2ludDY0X3QgSGlzdG9yeUl0ZW06OmdlbmVyYXRlU2VxdWVuY2VOdW1iZXIo
KQogewogICAgIC8vIEluaXRpYWxpemUgdG8gdGhlIGN1cnJlbnQgdGltZSB0byByZWR1Y2UgdGhl
IGxpa2VsaWhvb2Qgb2YgZ2VuZXJhdGluZwogICAgIC8vIGlkZW50aWZpZXJzIHRoYXQgb3Zlcmxh
cCB3aXRoIHRob3NlIGZyb20gcGFzdC9mdXR1cmUgYnJvd3NlciBzZXNzaW9ucy4KQEAgLTU1LDMx
ICs1NSwyNyBAQCBzdGF0aWMgdm9pZCBkZWZhdWx0Tm90aWZ5SGlzdG9yeUl0ZW1DaGFuZ2VkKEhp
c3RvcnlJdGVtKikKIFdFQkNPUkVfRVhQT1JUIHZvaWQgKCpub3RpZnlIaXN0b3J5SXRlbUNoYW5n
ZWQpKEhpc3RvcnlJdGVtKikgPSBkZWZhdWx0Tm90aWZ5SGlzdG9yeUl0ZW1DaGFuZ2VkOwogCiBI
aXN0b3J5SXRlbTo6SGlzdG9yeUl0ZW0oKQotICAgIDogbV9pdGVtU2VxdWVuY2VOdW1iZXIoZ2Vu
ZXJhdGVTZXF1ZW5jZU51bWJlcigpKQotICAgICwgbV9kb2N1bWVudFNlcXVlbmNlTnVtYmVyKGdl
bmVyYXRlU2VxdWVuY2VOdW1iZXIoKSkKLSAgICAsIG1fcHJ1bmluZ1JlYXNvbihQcnVuaW5nUmVh
c29uOjpOb25lKQorICAgIDogSGlzdG9yeUl0ZW0oeyB9LCB7IH0pCiB7CiB9CiAKIEhpc3RvcnlJ
dGVtOjpIaXN0b3J5SXRlbShjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiB0
aXRsZSkKLSAgICA6IG1fdXJsU3RyaW5nKHVybFN0cmluZykKLSAgICAsIG1fb3JpZ2luYWxVUkxT
dHJpbmcodXJsU3RyaW5nKQotICAgICwgbV90aXRsZSh0aXRsZSkKLSAgICAsIG1faXRlbVNlcXVl
bmNlTnVtYmVyKGdlbmVyYXRlU2VxdWVuY2VOdW1iZXIoKSkKLSAgICAsIG1fZG9jdW1lbnRTZXF1
ZW5jZU51bWJlcihnZW5lcmF0ZVNlcXVlbmNlTnVtYmVyKCkpCi0gICAgLCBtX3BydW5pbmdSZWFz
b24oUHJ1bmluZ1JlYXNvbjo6Tm9uZSkKKyAgICA6IEhpc3RvcnlJdGVtKHVybFN0cmluZywgdGl0
bGUsIHsgfSkKIHsKIH0KIAogSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGFsdGVybmF0ZVRp
dGxlKQorICAgIDogSGlzdG9yeUl0ZW0odXJsU3RyaW5nLCB0aXRsZSwgYWx0ZXJuYXRlVGl0bGUs
IHsgUHJvY2Vzczo6aWRlbnRpZmllcigpLCBnZW5lcmF0ZU9iamVjdElkZW50aWZpZXI8QmFja0Zv
cndhcmRJdGVtSWRlbnRpZmllcjo6SXRlbUlkZW50aWZpZXJUeXBlPigpIH0pCit7Cit9CisKK0hp
c3RvcnlJdGVtOjpIaXN0b3J5SXRlbShjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGVUaXRsZSwgQmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllciBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyKQogICAgIDogbV91cmxTdHJpbmco
dXJsU3RyaW5nKQogICAgICwgbV9vcmlnaW5hbFVSTFN0cmluZyh1cmxTdHJpbmcpCiAgICAgLCBt
X3RpdGxlKHRpdGxlKQogICAgICwgbV9kaXNwbGF5VGl0bGUoYWx0ZXJuYXRlVGl0bGUpCi0gICAg
LCBtX3BhZ2VTY2FsZUZhY3RvcigwKQotICAgICwgbV9pdGVtU2VxdWVuY2VOdW1iZXIoZ2VuZXJh
dGVTZXF1ZW5jZU51bWJlcigpKQotICAgICwgbV9kb2N1bWVudFNlcXVlbmNlTnVtYmVyKGdlbmVy
YXRlU2VxdWVuY2VOdW1iZXIoKSkKICAgICAsIG1fcHJ1bmluZ1JlYXNvbihQcnVuaW5nUmVhc29u
OjpOb25lKQorICAgICwgbV9pZGVudGlmaWVyKEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIpCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaCBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAppbmRleCA0ZDFlMmNkZDc0NjEy
ZjQ4Y2NmMjJmNzQxY2Y5OTU0NzdjOGE1NmNmLi5lZTQ2NmM3ZjE0ZDFiZjhlNzRjMDk1ZjEyNmNi
OWE3NWE2NWY3ZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJ
dGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCkBAIC0yNiw2
ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQmFja0ZvcndhcmRJdGVtSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVy
VHlwZXMuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgpAQCAtNjIsMjAgKzYzLDMyIEBAIGNsYXNz
IEhpc3RvcnlJdGVtIDogcHVibGljIFJlZkNvdW50ZWQ8SGlzdG9yeUl0ZW0+IHsKICAgICBmcmll
bmQgY2xhc3MgUGFnZUNhY2hlOwogCiBwdWJsaWM6IAotICAgIHN0YXRpYyBSZWY8SGlzdG9yeUl0
ZW0+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSGlzdG9yeUl0ZW0pOyB9CisgICAg
c3RhdGljIFJlZjxIaXN0b3J5SXRlbT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEhpc3RvcnlJdGVtKTsKKyAgICB9CisKICAgICBzdGF0aWMgUmVmPEhpc3Rv
cnlJdGVtPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdGl0
bGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIaXN0b3J5SXRlbSh1cmxT
dHJpbmcsIHRpdGxlKSk7CiAgICAgfQorCiAgICAgc3RhdGljIFJlZjxIaXN0b3J5SXRlbT4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBT
dHJpbmcmIGFsdGVybmF0ZVRpdGxlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSGlzdG9yeUl0ZW0odXJsU3RyaW5nLCB0aXRsZSwgYWx0ZXJuYXRlVGl0bGUpKTsKICAgICB9
CisKKyAgICBzdGF0aWMgUmVmPEhpc3RvcnlJdGVtPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRlVGl0bGUs
IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEhpc3RvcnlJdGVtKHVybFN0cmluZywgdGl0bGUsIGFsdGVybmF0
ZVRpdGxlLCBpZGVudGlmaWVyKSk7CisgICAgfQogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIH5I
aXN0b3J5SXRlbSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEhpc3RvcnlJdGVtPiBjb3B5
KCkgY29uc3Q7CiAKKyAgICBjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKICAgICAvLyBSZXNldHMgdGhl
IEhpc3RvcnlJdGVtIHRvIGl0cyBpbml0aWFsIHN0YXRlLCBhcyByZXR1cm5lZCBieSBjcmVhdGUo
KS4KICAgICB2b2lkIHJlc2V0KCk7CiAgICAgCkBAIC0yMDYsOSArMjE5LDEyIEBAIHByaXZhdGU6
CiAgICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0oKTsKICAgICBXRUJDT1JFX0VYUE9SVCBI
aXN0b3J5SXRlbShjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiB0aXRsZSk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRlVGl0bGUpOworICAg
IFdFQkNPUkVfRVhQT1JUIEhpc3RvcnlJdGVtKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGFsdGVybmF0ZVRpdGxlLCBCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyKTsKIAogICAgIEhpc3RvcnlJdGVtKGNvbnN0IEhpc3RvcnlJdGVtJik7
CiAKKyAgICBzdGF0aWMgaW50NjRfdCBnZW5lcmF0ZVNlcXVlbmNlTnVtYmVyKCk7CisKICAgICBi
b29sIGhhc1NhbWVEb2N1bWVudFRyZWUoSGlzdG9yeUl0ZW0mIG90aGVySXRlbSkgY29uc3Q7CiAK
ICAgICBTdHJpbmcgbV91cmxTdHJpbmc7CkBAIC0yMzUsMTIgKzI1MSwxMiBAQCBwcml2YXRlOgog
ICAgIC8vIGNsb25lcyBvZiBvbmUgYW5vdGhlci4gIFRyYXZlcnNpbmcgaGlzdG9yeSBmcm9tIG9u
ZSBzdWNoIEhpc3RvcnlJdGVtIHRvCiAgICAgLy8gYW5vdGhlciBpcyBhIG5vLW9wLiAgSGlzdG9y
eUl0ZW0gY2xvbmVzIGFyZSBjcmVhdGVkIGZvciBwYXJlbnQgYW5kCiAgICAgLy8gc2libGluZyBm
cmFtZXMgd2hlbiBvbmx5IGEgc3ViZnJhbWUgbmF2aWdhdGVzLgotICAgIGludDY0X3QgbV9pdGVt
U2VxdWVuY2VOdW1iZXI7CisgICAgaW50NjRfdCBtX2l0ZW1TZXF1ZW5jZU51bWJlciB7IGdlbmVy
YXRlU2VxdWVuY2VOdW1iZXIoKSB9OwogCiAgICAgLy8gSWYgdHdvIEhpc3RvcnlJdGVtcyBoYXZl
IHRoZSBzYW1lIGRvY3VtZW50IHNlcXVlbmNlIG51bWJlciwgdGhlbiB0aGV5CiAgICAgLy8gcmVm
ZXIgdG8gdGhlIHNhbWUgaW5zdGFuY2Ugb2YgYSBkb2N1bWVudC4gIFRyYXZlcnNpbmcgaGlzdG9y
eSBmcm9tIG9uZQogICAgIC8vIHN1Y2ggSGlzdG9yeUl0ZW0gdG8gYW5vdGhlciBwcmVzZXJ2ZXMg
dGhlIGRvY3VtZW50LgotICAgIGludDY0X3QgbV9kb2N1bWVudFNlcXVlbmNlTnVtYmVyOworICAg
IGludDY0X3QgbV9kb2N1bWVudFNlcXVlbmNlTnVtYmVyIHsgZ2VuZXJhdGVTZXF1ZW5jZU51bWJl
cigpIH07CiAKICAgICAvLyBTdXBwb3J0IGZvciBIVE1MNSBIaXN0b3J5CiAgICAgUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9zdGF0ZU9iamVjdDsKQEAgLTI2OCw2ICsyODQsOCBAQCBw
cml2YXRlOgogICAgIFJldGFpblB0cjxpZD4gbV92aWV3U3RhdGU7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8aWQ+Pj4gbV90cmFuc2llbnRQcm9wZXJ0aWVz
OwogI2VuZGlmCisKKyAgICBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyIG1faWRlbnRpZmllcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3Rh
dGUuY3BwCmluZGV4IDkxMWQyZTczNzc4YzllZjVhYThmNWIzMjM5Y2RiYzhkNTQxMjYyMjguLmQ3
N2JiZTdjNWY0ZDI1ODlhNTNiOWNjYzM3MTc3NWZjZDRkNzZhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2Vzc2lvblN0YXRlLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlNlc3Npb25T
dGF0ZS5oIgogCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCkBAIC0yMzIsOCArMjMzLDEwIEBAIHN0ZDo6b3B0aW9uYWw8QmFja0ZvcndhcmRM
aXN0SXRlbVN0YXRlPiBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU6OmRlY29kZShJUEM6OkRlCiB7
CiAgICAgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIHJlc3VsdDsKIAotICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LmlkZW50aWZpZXIpKQorICAgIGF1dG8gaWRlbnRpZmllciA9IEJhY2tG
b3J3YXJkSXRlbUlkZW50aWZpZXI6OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIWlkZW50aWZp
ZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmVzdWx0LmlkZW50aWZpZXIg
PSAqaWRlbnRpZmllcjsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBhZ2VTdGF0
ZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25T
dGF0ZS5oCmluZGV4IDE0ODIxNDQ1Yzg3ZmU0MzM1NTc5NjJiY2IzNDk5M2U1MWQyZjJhZmUuLmRi
M2RmZGE4NTRjYWYxNzgwYzJkZWY4MTc2YTEyZjc5OWI4NTE4YTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1Nlc3Npb25TdGF0ZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVmlld1NuYXBzaG90
U3RvcmUuaCIKICNlbmRpZgogCisjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZEl0ZW1JZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KQEAg
LTEyNyw3ICsxMjgsNyBAQCBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIHsKICAgICB2
b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+IGRlY29kZShJUEM6OkRlY29kZXImKTsKIAotICAg
IHVpbnQ2NF90IGlkZW50aWZpZXI7CisgICAgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRp
ZmllciBpZGVudGlmaWVyOwogCiAgICAgUGFnZVN0YXRlIHBhZ2VTdGF0ZTsKICNpZiBQTEFURk9S
TShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRl
bS5jcHAKaW5kZXggMWFjZDVkZGNhNWU4OWE1MzExMjgxODc3YmYwOTA1ZWE4YTE3YjI5Yi4uYTcz
OGM3ZGEzM2JjMTMzNTI0NmRmODFkYWQzYmFkMmM1NThiOGY1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKQEAgLTI4LDkgKzI4LDkgQEAK
IAogI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgewordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRpYyB1aW50NjRfdCBoaWdoZXN0SXRlbUlEID0gMDsK
K25hbWVzcGFjZSBXZWJLaXQgewogCiBSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tG
b3J3YXJkTGlzdEl0ZW1TdGF0ZSwgdWludDY0X3QgcGFnZUlEKQogewpAQCAtNDEsMTIgKzQxLDI1
IEBAIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0Zv
cndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvCiAgICAgOiBtX2l0ZW1TdGF0ZShXVEZNb3ZlKGJh
Y2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSkpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiB7Ci0gICAg
aWYgKG1faXRlbVN0YXRlLmlkZW50aWZpZXIgPiBoaWdoZXN0SXRlbUlEKQotICAgICAgICBoaWdo
ZXN0SXRlbUlEID0gbV9pdGVtU3RhdGUuaWRlbnRpZmllcjsKKyAgICBhdXRvIHJlc3VsdCA9IGFs
bEl0ZW1zKCkuYWRkKG1faXRlbVN0YXRlLmlkZW50aWZpZXIsIHRoaXMpOworICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKIFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW06On5XZWJCYWNrRm9yd2FyZExpc3RJdGVtKCkKIHsKKyAgICBBU1NFUlQoYWxsSXRlbXMo
KS5nZXQobV9pdGVtU3RhdGUuaWRlbnRpZmllcikgPT0gdGhpcyk7CisgICAgYWxsSXRlbXMoKS5y
ZW1vdmUobV9pdGVtU3RhdGUuaWRlbnRpZmllcik7Cit9CisKK0hhc2hNYXA8QmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllciwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSo+JiBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtOjphbGxJdGVtcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSo+PiBpdGVt
czsKKyAgICByZXR1cm4gaXRlbXM7Cit9CisKK1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW06Oml0ZW1Gb3JJRChjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyJiBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBhbGxJdGVtcygpLmdldChpZGVudGlmaWVy
KTsKIH0KIAogc3RhdGljIGNvbnN0IEZyYW1lU3RhdGUqIGNoaWxkSXRlbVdpdGhEb2N1bWVudFNl
cXVlbmNlTnVtYmVyKGNvbnN0IEZyYW1lU3RhdGUmIGZyYW1lU3RhdGUsIGludDY0X3QgbnVtYmVy
KQpAQCAtOTgsMTEgKzExMSw2IEBAIGJvb2wgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUlz
SW5TYW1lRG9jdW1lbnQoY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYKICAgICByZXR1cm4g
ZG9jdW1lbnRUcmVlc0FyZUVxdWFsKG1haW5GcmFtZVN0YXRlLCBvdGhlck1haW5GcmFtZVN0YXRl
KTsKIH0KIAotdWludDY0X3QgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aGlnaGVzdFVzZWRJdGVt
SUQoKQotewotICAgIHJldHVybiBoaWdoZXN0SXRlbUlEOwotfQotCiB2b2lkIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW06OnNldFN1c3BlbmRlZFBhZ2UoU3VzcGVuZGVkUGFnZVByb3h5JiBwYWdlKQog
ewogICAgIG1fc3VzcGVuZGVkUGFnZSA9ICZwYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCmluZGV4IDRlYTJjYTcwMTA2NWMxMGNlN2YwMTEyZDY3
NjM2MWNhMTk1NmQ5ZjkuLjNjMWNjMjk5YjFiOGIxZWMzNWQ4YzRjNDA5YTZkMzIyNTMwYzAwZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKQEAg
LTQ4LDcgKzQ4LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0+IGNyZWF0ZShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiwgdWludDY0X3QgcGFnZUlE
KTsKICAgICB2aXJ0dWFsIH5XZWJCYWNrRm9yd2FyZExpc3RJdGVtKCk7CiAKLSAgICB1aW50NjRf
dCBpdGVtSUQoKSBjb25zdCB7IHJldHVybiBtX2l0ZW1TdGF0ZS5pZGVudGlmaWVyOyB9CisgICAg
c3RhdGljIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW1Gb3JJRChjb25zdCBXZWJDb3JlOjpC
YWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJik7CisgICAgc3RhdGljIEhhc2hNYXA8V2ViQ29yZTo6
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSo+JiBhbGxJ
dGVtcygpOworCisgICAgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYg
aXRlbUlEKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtU3RhdGUuaWRlbnRpZmllcjsgfQogICAgIGNv
bnN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYgaXRlbVN0YXRlKCkgeyByZXR1cm4gbV9pdGVt
U3RhdGU7IH0KICAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsg
fQogCkBAIC02Nyw4ICs3MCw2IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHZvaWQgc2V0U3VzcGVu
ZGVkUGFnZShTdXNwZW5kZWRQYWdlUHJveHkmKTsKIAotICAgIHN0YXRpYyB1aW50NjRfdCBoaWdo
ZXN0VXNlZEl0ZW1JRCgpOwotCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIHVpbnQ2NF90IHBhZ2VJRCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHAKaW5kZXggMjYzMDM0YTQ3OTIyMTBiYzFjMDhkZWY4Y2U2ZDdjNjQyYzViZjczNy4uM2NmZTNi
MmU1YjE0MjU5MWNhNjZhODIyOGI5MjI5MDM3YzBlMzFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTUzLDcgKzUzLDYg
QEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgdXNlckFnZW50OwogICAgIGVuY29kZXIgPDwg
aXRlbVN0YXRlczsKICAgICBlbmNvZGVyIDw8IHNlc3Npb25JRDsKLSAgICBlbmNvZGVyIDw8IGhp
Z2hlc3RVc2VkQmFja0ZvcndhcmRJdGVtSUQ7CiAgICAgZW5jb2RlciA8PCB1c2VyQ29udGVudENv
bnRyb2xsZXJJRC50b1VJbnQ2NCgpOwogICAgIGVuY29kZXIgPDwgdmlzaXRlZExpbmtUYWJsZUlE
OwogICAgIGVuY29kZXIgPDwgd2Vic2l0ZURhdGFTdG9yZUlEOwpAQCAtMTc3LDggKzE3Niw2IEBA
IHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMuc2Vzc2lvbklEKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuaGlnaGVzdFVzZWRCYWNrRm9yd2FyZEl0ZW1JRCkp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gdXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBiYWViYWY0ZDQxMDA4OTY1YTU2ZjRj
MWMzZjIxYWNlODczZWE0MzI2Li41NzNlMTc5MzJiZTJmZmIzZGM3NzMxZThhMTI0NWQxYzNjNzg4
Y2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oCkBAIC05Niw3ICs5Niw2IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
IHsKIAogICAgIFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+IGl0ZW1TdGF0ZXM7CiAg
ICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEOwotICAgIHVpbnQ2NF90IGhpZ2hlc3RVc2VkQmFj
a0ZvcndhcmRJdGVtSUQ7CiAKICAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVz
ZXJDb250ZW50Q29udHJvbGxlcklEOwogICAgIHVpbnQ2NF90IHZpc2l0ZWRMaW5rVGFibGVJRDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZp
ZXdTZXNzaW9uU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViVmlld1Nlc3Npb25TdGF0ZS5jcHAKaW5kZXggOWNiNWQ5MzM1NTA1YTgzOGI5MDQ5ZTQ0
NjgwM2U0MTQyOWJjYjgyMC4uYjdjYmY4YmNkYzJmNGZiOWI5ZTNlMzU1MjgwNDMwZWMwYTRhNWIw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Vmlld1Nlc3Npb25TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZS5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNs
dWRlICJXZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlLmgiCiAKICNpbmNsdWRlICJXZWJLaXRXZWJW
aWV3U2Vzc2lvblN0YXRlUHJpdmF0ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAKQEAgLTM0NCw3ICszNDUsNyBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgZGVjb2RlQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKEdWYXJpYW50SXRlciogYmFj
a0ZvcndhcmRMaXN0UwogICAgIHVuc2lnbmVkIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7
CiAgICAgd2hpbGUgKGdfdmFyaWFudF9pdGVyX2xvb3AoYmFja0ZvcndhcmRMaXN0U3RhdGVJdGVy
LCBCQUNLX0ZPUldBUkRfTElTVF9JVEVNX0ZPUk1BVF9TVFJJTkdfVjEsICZpZGVudGlmaWVyLCAm
dGl0bGUsICZmcmFtZVN0YXRlVmFyaWFudCwgJnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kp
KSB7CiAgICAgICAgIEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSBzdGF0ZTsKLSAgICAgICAgc3Rh
dGUuaWRlbnRpZmllciA9IGlkZW50aWZpZXI7CisgICAgICAgIHN0YXRlLmlkZW50aWZpZXIgPSB7
IFdlYkNvcmU6OlByb2Nlc3M6OmlkZW50aWZpZXIoKSwgZ2VuZXJhdGVPYmplY3RJZGVudGlmaWVy
PFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI6Okl0ZW1JZGVudGlmaWVyVHlwZT4o
KSB9OwogICAgICAgICBzdGF0ZS5wYWdlU3RhdGUudGl0bGUgPSBTdHJpbmc6OmZyb21VVEY4KHRp
dGxlKTsKICAgICAgICAgZGVjb2RlRnJhbWVTdGF0ZShmcmFtZVN0YXRlVmFyaWFudCwgc3RhdGUu
cGFnZVN0YXRlLm1haW5GcmFtZVN0YXRlKTsKICAgICAgICAgc3RhdGUucGFnZVN0YXRlLnNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSB0b1dlYkNvcmVFeHRlcm5hbFVSTHNQb2xpY3koc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCA5OTgyZDgxNjM3MGJmYmFlYjEwMWE4N2I5ZTRh
OTk4MGRiNmY3NjY1Li5mMGMzOTQxZmFkN2FlYWVlYjg0YjVhYWUxZjVkZWZmMTU3ZjhkNTA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExpc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKQEAg
LTM2LDE5ICszNiw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAotLy8gRklYTUU6IE1ha2UgdGhpcyBzdGF0aWMgb25jZSBXZWJCYWNrRm9yd2FyZExp
c3RDRi5jcHAgaXMgbm8gbG9uZ2VyIHVzaW5nIGl0LgotdWludDY0X3QgZ2VuZXJhdGVXZWJCYWNr
Rm9yd2FyZEl0ZW1JRCgpOwotCi11aW50NjRfdCBnZW5lcmF0ZVdlYkJhY2tGb3J3YXJkSXRlbUlE
KCkKLXsKLSAgICAvLyBUaGVzZSBJRHMgZXhpc3QgaW4gdGhlIFVJUHJvY2VzcyBmb3IgaXRlbXMg
Y3JlYXRlZCBieSB0aGUgVUlQcm9jZXNzLgotICAgIC8vIFRoZSBJRHMgZ2VuZXJhdGVkIGhlcmUg
bmVlZCB0byBuZXZlciBjb2xsaWRlIHdpdGggdGhlIElEcyBjcmVhdGVkIGluIFdlYkJhY2tGb3J3
YXJkTGlzdFByb3h5IGluIHRoZSBXZWJQcm9jZXNzLgotICAgIC8vIFdlIGFjY29tcGxpc2ggdGhp
cyBieSBzdGFydGluZyBmcm9tIDIsIGFuZCBvbmx5IGV2ZXIgdXNpbmcgZXZlbiBpZHMuCi0gICAg
c3RhdGljIHVpbnQ2NF90IHVuaXF1ZUhpc3RvcnlJdGVtSUQgPSAwOwotICAgIHVuaXF1ZUhpc3Rv
cnlJdGVtSUQgKz0gMjsKLSAgICByZXR1cm4gdW5pcXVlSGlzdG9yeUl0ZW1JRDsKLX0KLQogc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIERlZmF1bHRDYXBhY2l0eSA9IDEwMDsKIAogV2ViQmFja0Zvcndh
cmRMaXN0OjpXZWJCYWNrRm9yd2FyZExpc3QoV2ViUGFnZVByb3h5JiBwYWdlKQpAQCAtNjUsNiAr
NTIsMTkgQEAgV2ViQmFja0ZvcndhcmRMaXN0Ojp+V2ViQmFja0ZvcndhcmRMaXN0KCkKICAgICBB
U1NFUlQoKCFtX3BhZ2UgJiYgIW1faGFzQ3VycmVudEluZGV4KSB8fCAhbV9wYWdlLT5pc1ZhbGlk
KCkpOwogfQogCitXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBXZWJCYWNrRm9yd2FyZExpc3Q6Oml0
ZW1Gb3JJRChjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpZGVudGlmaWVyKQorewor
ICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8qIGl0
ZW0gPSBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjppdGVtRm9ySUQoaWRlbnRpZmllcik7CisgICAg
aWYgKCFpdGVtKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEFTU0VSVChpdGVtLT5w
YWdlSUQoKSA9PSBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICByZXR1cm4gaXRlbTsKK30KKwogdm9p
ZCBXZWJCYWNrRm9yd2FyZExpc3Q6OnBhZ2VDbG9zZWQoKQogewogICAgIC8vIFdlIHNob3VsZCBo
YXZlIGFsd2F5cyBzdGFydGVkIG91dCB3aXRoIGFuIG1fcGFnZSBhbmQgd2Ugc2hvdWxkIG5ldmVy
IGNsb3NlIHRoZSBwYWdlIHR3aWNlLgpAQCAtNzYsMTYgKzc2LDE2IEBAIHZvaWQgV2ViQmFja0Zv
cndhcmRMaXN0OjpwYWdlQ2xvc2VkKCkKICAgICAgICAgICAgIGRpZFJlbW92ZUl0ZW0obV9lbnRy
aWVzW2ldKTsKICAgICB9CiAKLSAgICBtX3BhZ2UgPSAwOworICAgIG1fcGFnZSA9IG51bGxwdHI7
CiAgICAgbV9lbnRyaWVzLmNsZWFyKCk7CiAgICAgbV9oYXNDdXJyZW50SW5kZXggPSBmYWxzZTsK
IH0KIAotdm9pZCBXZWJCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSogbmV3SXRlbSkKK3ZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFJlZjxXZWJC
YWNrRm9yd2FyZExpc3RJdGVtPiYmIG5ld0l0ZW0pCiB7CiAgICAgQVNTRVJUKCFtX2hhc0N1cnJl
bnRJbmRleCB8fCBtX2N1cnJlbnRJbmRleCA8IG1fZW50cmllcy5zaXplKCkpOwogCi0gICAgaWYg
KCFtX2NhcGFjaXR5IHx8ICFuZXdJdGVtIHx8ICFtX3BhZ2UpCisgICAgaWYgKCFtX2NhcGFjaXR5
IHx8ICFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIFZlY3RvcjxSZWY8V2ViQmFja0Zv
cndhcmRMaXN0SXRlbT4+IHJlbW92ZWRJdGVtczsKQEAgLTEzOSwyMyArMTM5LDI0IEBAIHZvaWQg
V2ViQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIG5ld0l0
ZW0pCiAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCsrOwogICAgIH0KIAorICAgIGF1dG8qIG5l
d0l0ZW1QdHIgPSBuZXdJdGVtLnB0cigpOwogICAgIGlmICghc2hvdWxkS2VlcEN1cnJlbnRJdGVt
KSB7CiAgICAgICAgIC8vIG1fY3VycmVudCBzaG91bGQgbmV2ZXIgYmUgcG9pbnRpbmcgcGFzdCB0
aGUgZW5kIG9mIHRoZSBlbnRyaWVzIFZlY3Rvci4KICAgICAgICAgLy8gSWYgaXQgaXMsIHNvbWV0
aGluZyBoYXMgZ29uZSB3cm9uZyBhbmQgd2Ugc2hvdWxkIG5vdCB0cnkgdG8gc3dhcCBpbiB0aGUg
bmV3IGl0ZW0uCiAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRJbmRleCA8IG1fZW50cmllcy5zaXpl
KCkpOwogCiAgICAgICAgIHJlbW92ZWRJdGVtcy5hcHBlbmQobV9lbnRyaWVzW21fY3VycmVudElu
ZGV4XS5jb3B5UmVmKCkpOwotICAgICAgICBtX2VudHJpZXNbbV9jdXJyZW50SW5kZXhdID0gKm5l
d0l0ZW07CisgICAgICAgIG1fZW50cmllc1ttX2N1cnJlbnRJbmRleF0gPSBXVEZNb3ZlKG5ld0l0
ZW0pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIG1fY3VycmVudCBzaG91bGQgbmV2ZXIgYmUg
cG9pbnRpbmcgbW9yZSB0aGFuIDEgcGFzdCB0aGUgZW5kIG9mIHRoZSBlbnRyaWVzIFZlY3Rvci4K
ICAgICAgICAgLy8gSWYgaXQgaXMsIHNvbWV0aGluZyBoYXMgZ29uZSB3cm9uZyBhbmQgd2Ugc2hv
dWxkIG5vdCB0cnkgdG8gaW5zZXJ0IHRoZSBuZXcgaXRlbS4KICAgICAgICAgQVNTRVJUKG1fY3Vy
cmVudEluZGV4IDw9IG1fZW50cmllcy5zaXplKCkpOwogCiAgICAgICAgIGlmIChtX2N1cnJlbnRJ
bmRleCA8PSBtX2VudHJpZXMuc2l6ZSgpKQotICAgICAgICAgICAgbV9lbnRyaWVzLmluc2VydCht
X2N1cnJlbnRJbmRleCwgKm5ld0l0ZW0pOworICAgICAgICAgICAgbV9lbnRyaWVzLmluc2VydCht
X2N1cnJlbnRJbmRleCwgV1RGTW92ZShuZXdJdGVtKSk7CiAgICAgfQogCi0gICAgbV9wYWdlLT5k
aWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QobmV3SXRlbSwgV1RGTW92ZShyZW1vdmVkSXRlbXMpKTsK
KyAgICBtX3BhZ2UtPmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChuZXdJdGVtUHRyLCBXVEZNb3Zl
KHJlbW92ZWRJdGVtcykpOwogfQogCiB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6Z29Ub0l0ZW0o
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkKQEAgLTQxOCw3ICs0MTksNyBAQCB2b2lkIFdl
YkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9yZUZyb21TdGF0ZShCYWNrRm9yd2FyZExpc3RTdGF0ZSBi
YWNrRm9yd2FyZExpc3RTdAogICAgIGl0ZW1zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYmFja0Zv
cndhcmRMaXN0U3RhdGUuaXRlbXMuc2l6ZSgpKTsKIAogICAgIGZvciAoYXV0byYgYmFja0Zvcndh
cmRMaXN0SXRlbVN0YXRlIDogYmFja0ZvcndhcmRMaXN0U3RhdGUuaXRlbXMpIHsKLSAgICAgICAg
YmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLmlkZW50aWZpZXIgPSBnZW5lcmF0ZVdlYkJhY2tGb3J3
YXJkSXRlbUlEKCk7CisgICAgICAgIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZS5pZGVudGlmaWVy
ID0geyBQcm9jZXNzOjppZGVudGlmaWVyKCksIGdlbmVyYXRlT2JqZWN0SWRlbnRpZmllcjxCYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyOjpJdGVtSWRlbnRpZmllclR5cGU+KCkgfTsKICAgICAgICAg
aXRlbXMudW5jaGVja2VkQXBwZW5kKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShXVEZN
b3ZlKGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSksIG1fcGFnZS0+cGFnZUlEKCkpKTsKICAgICB9
CiAgICAgbV9oYXNDdXJyZW50SW5kZXggPSAhIWJhY2tGb3J3YXJkTGlzdFN0YXRlLmN1cnJlbnRJ
bmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJk
TGlzdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmgKaW5k
ZXggZmNkYWYwM2QzYjJmYWM4NTI0Y2E4NzAzOGM2MzkzNDUxOTMxMDkzYi4uMjhmY2VhMzFkMmRi
YzhmNDdmMmU0ZDJjYTM1MTVkMmM5YjIxNGY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQmFja0ZvcndhcmRMaXN0LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBUElP
YmplY3QuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApA
QCAtNDUsNyArNDYsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5XZWJCYWNrRm9yd2FyZExp
c3QoKTsKIAotICAgIHZvaWQgYWRkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKik7CisgICAg
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbUZvcklEKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXImKTsKKworICAgIHZvaWQgYWRkSXRlbShSZWY8V2ViQmFja0Zvcndh
cmRMaXN0SXRlbT4mJik7CiAgICAgdm9pZCBnb1RvSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVt
Jik7CiAgICAgdm9pZCByZW1vdmVBbGxJdGVtcygpOwogICAgIHZvaWQgY2xlYXIoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGEwMWVkODE5ZDQxM2FmZGIw
MWQxMzI0ZjJmYzZhNzQ2NDVkZWY0ZDAuLjgyYjBhNmFhMjMxNDZhYjU0ZjI2ZTllNTU0ZDQ3MTJi
YWQ5YzRmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
NjcwLDcgKzY3MCw3IEBAIFN1c3BlbmRlZFBhZ2VQcm94eSogV2ViUGFnZVByb3h5OjptYXliZUNy
ZWF0ZVN1c3BlbmRlZFBhZ2UoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAKICAgICBtX3N1c3BlbmRl
ZFBhZ2UgPSBTdXNwZW5kZWRQYWdlUHJveHk6OmNyZWF0ZSgqdGhpcywgcHJvY2VzcywgKmN1cnJl
bnRJdGVtKTsKIAotICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJ
dTY0ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2sv
Zm9yd2FyZCBpdGVtICUiIFBSSXU2NCwgcGFnZUlEKCksIG1fc3VzcGVuZGVkUGFnZS0+bG9nZ2lu
Z1N0cmluZygpLCBwcm9jZXNzLnByb2Nlc3NJZGVudGlmaWVyKCksIGN1cnJlbnRJdGVtLT5pdGVt
SUQoKSk7CisgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQg
IiBjcmVhdGVkIHN1c3BlbmRlZCBwYWdlICVzIGZvciBwcm9jZXNzIHBpZCAlaSwgYmFjay9mb3J3
YXJkIGl0ZW0gJXMiIFBSSXU2NCwgcGFnZUlEKCksIG1fc3VzcGVuZGVkUGFnZS0+bG9nZ2luZ1N0
cmluZygpLCBwcm9jZXNzLnByb2Nlc3NJZGVudGlmaWVyKCksIGN1cnJlbnRJdGVtLT5pdGVtSUQo
KS5sb2dTdHJpbmcoKSk7CiAKICAgICByZXR1cm4gbV9zdXNwZW5kZWRQYWdlLmdldCgpOwogfQpA
QCAtNzczLDEwICs3NzMsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2Uo
KQogewogICAgIEFTU0VSVChpc1ZhbGlkKCkpOwogCi0gICAgY29uc3QgQmFja0ZvcndhcmRMaXN0
SXRlbVZlY3RvciYgaXRlbXMgPSBtX2JhY2tGb3J3YXJkTGlzdC0+ZW50cmllcygpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fcHJvY2Vz
cy0+cmVnaXN0ZXJOZXdXZWJCYWNrRm9yd2FyZExpc3RJdGVtKGl0ZW1zW2ldLmdldCgpKTsKLQog
ICAgIG1fZHJhd2luZ0FyZWEgPSBtX3BhZ2VDbGllbnQuY3JlYXRlRHJhd2luZ0FyZWFQcm94eSgp
OwogICAgIEFTU0VSVChtX2RyYXdpbmdBcmVhKTsKIApAQCAtMTI3MSwxMSArMTI2NywxMSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0qIGFkZGVkLCBWZWN0bwogICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRDYW5Hb0Zvcndh
cmQodHJhbnNhY3Rpb24sIG1fYmFja0ZvcndhcmRMaXN0LT5mb3J3YXJkSXRlbSgpKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSh1aW50NjRfdCBp
dGVtSUQsIGJvb2wgaW5QYWdlQ2FjaGUsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQg
V2ViUGFnZVByb3h5Ojp3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oY29uc3QgQmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllciYgaXRlbUlELCBib29sIGluUGFnZUNhY2hlLCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdl
Q2xpZW50KTsKIAotICAgIGlmIChhdXRvKiBpdGVtID0gbV9wcm9jZXNzLT53ZWJCYWNrRm9yd2Fy
ZEl0ZW0oaXRlbUlEKSkgeworICAgIGlmIChhdXRvKiBpdGVtID0gbV9iYWNrRm9yd2FyZExpc3Qt
Pml0ZW1Gb3JJRChpdGVtSUQpKSB7CiAgICAgICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQgJiYg
bV9uYXZpZ2F0aW9uQ2xpZW50LT53aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oKnRoaXMsICpp
dGVtLCBpblBhZ2VDYWNoZSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVz
ZXJEYXRhLm9iamVjdCgpKS5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1f
bG9hZGVyQ2xpZW50LT53aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oKnRoaXMsICppdGVtLCBt
X3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdl
dCgpKTsKQEAgLTI1NTcsMTAgKzI1NTMsNiBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQ
YWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKFNlc3Npb25TdGF0ZSBzZXNzaQogCiAg
ICAgaWYgKGhhc0JhY2tGb3J3YXJkTGlzdCkgewogICAgICAgICBtX2JhY2tGb3J3YXJkTGlzdC0+
cmVzdG9yZUZyb21TdGF0ZShXVEZNb3ZlKHNlc3Npb25TdGF0ZS5iYWNrRm9yd2FyZExpc3RTdGF0
ZSkpOwotCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBtX2JhY2tGb3J3YXJkTGlz
dC0+ZW50cmllcygpKQotICAgICAgICAgICAgcHJvY2VzcygpLnJlZ2lzdGVyTmV3V2ViQmFja0Zv
cndhcmRMaXN0SXRlbShlbnRyeS5nZXQoKSk7Ci0KICAgICAgICAgcHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVTZXNzaW9uKG1fYmFja0ZvcndhcmRMaXN0LT5pdGVtU3Rh
dGVzKCkpLCBtX3BhZ2VJRCk7CiAKICAgICAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxv
YWRTdGF0ZS50cmFuc2FjdGlvbigpOwpAQCAtNDY3NSwxNCArNDY2NywxNCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0TmVlZHNQbGFpblRleHRRdWlyayhib29sIG5lZWRzUGxhaW5UZXh0UXVpcmsp
CiAKIC8vIEJhY2tGb3J3YXJkTGlzdAogCi12b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRB
ZGRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEFk
ZEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgaXRlbVN0YXRlKQogewotICAgIG1fYmFj
a0ZvcndhcmRMaXN0LT5hZGRJdGVtKG1fcHJvY2Vzcy0+d2ViQmFja0ZvcndhcmRJdGVtKGl0ZW1J
RCkpOworICAgIG1fYmFja0ZvcndhcmRMaXN0LT5hZGRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW06OmNyZWF0ZShXVEZNb3ZlKGl0ZW1TdGF0ZSksIHBhZ2VJRCgpKSk7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpiYWNrRm9yd2FyZEdvVG9JdGVtKHVpbnQ2NF90IGl0ZW1JRCwgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBXZWJQYWdlUHJv
eHk6OmJhY2tGb3J3YXJkR29Ub0l0ZW0oY29uc3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYg
aXRlbUlELCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUp
CiB7Ci0gICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSA9IG1fcHJvY2Vzcy0+d2ViQmFj
a0ZvcndhcmRJdGVtKGl0ZW1JRCk7CisgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSA9
IG1fYmFja0ZvcndhcmRMaXN0LT5pdGVtRm9ySUQoaXRlbUlEKTsKICAgICBpZiAoIWl0ZW0pCiAg
ICAgICAgIHJldHVybjsKIApAQCAtNDY5MiwxMCArNDY4NCwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6YmFja0ZvcndhcmRHb1RvSXRlbSh1aW50NjRfdCBpdGVtSUQsIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZQogICAgIG1fYmFja0ZvcndhcmRMaXN0LT5nb1RvSXRlbSgqaXRlbSk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEl0ZW1BdEluZGV4KGludDMyX3QgaW5kZXgsIHVp
bnQ2NF90JiBpdGVtSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRJdGVtQXRJbmRl
eChpbnQzMl90IGluZGV4LCBzdGQ6Om9wdGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+
JiBpdGVtSUQpCiB7CiAgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSA9IG1fYmFja0Zv
cndhcmRMaXN0LT5pdGVtQXRJbmRleChpbmRleCk7Ci0gICAgaXRlbUlEID0gaXRlbSA/IGl0ZW0t
Pml0ZW1JRCgpIDogMDsKKyAgICBpZiAoaXRlbSkKKyAgICAgICAgaXRlbUlEID0gaXRlbS0+aXRl
bUlEKCk7CisgICAgZWxzZQorICAgICAgICBpdGVtSUQgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQoaW50MzJfdCYgY291bnQp
CkBAIC01OTQ1LDcgKzU5NDAsNiBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQ
cm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKCkKICAgICBwYXJhbWV0ZXJzLnVzZXJBZ2VudCA9IHVz
ZXJBZ2VudCgpOwogICAgIHBhcmFtZXRlcnMuaXRlbVN0YXRlcyA9IG1fYmFja0ZvcndhcmRMaXN0
LT5pdGVtU3RhdGVzKCk7CiAgICAgcGFyYW1ldGVycy5zZXNzaW9uSUQgPSBzZXNzaW9uSUQoKTsK
LSAgICBwYXJhbWV0ZXJzLmhpZ2hlc3RVc2VkQmFja0ZvcndhcmRJdGVtSUQgPSBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtOjpoaWdoZXN0VXNlZEl0ZW1JRCgpOwogICAgIHBhcmFtZXRlcnMudXNlckNv
bnRlbnRDb250cm9sbGVySUQgPSBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+aWRlbnRpZmllcigp
OwogICAgIHBhcmFtZXRlcnMudmlzaXRlZExpbmtUYWJsZUlEID0gbV92aXNpdGVkTGlua1N0b3Jl
LT5pZGVudGlmaWVyKCk7CiAgICAgcGFyYW1ldGVycy53ZWJzaXRlRGF0YVN0b3JlSUQgPSBtX3dl
YnNpdGVEYXRhU3RvcmUtPmlkZW50aWZpZXIoKTsKQEAgLTYzNTIsOSArNjM0Niw4IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRl
cihjb25zdCBTdHJpbmcmIHN1CiAgICAgbV9wYWdlQ2xpZW50LmRpZEZpbmlzaExvYWRpbmdEYXRh
Rm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKHN1Z2dlc3RlZEZpbGVuYW1lLCBkYXRhUmVmZXJlbmNl
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkUmVtb3ZlZEl0ZW0odWludDY0
X3QgaXRlbUlEKQordm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkUmVtb3ZlZEl0ZW0oY29u
c3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYgaXRlbUlEKQogewotICAgIG1fcHJvY2Vzcy0+
cmVtb3ZlQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oaXRlbUlEKSwgbV9wYWdlSUQp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDg3YTBiNTlj
ZDE2NDI4NmY1YmNkYTcwMGVlZWQwMWUxYjVmYTI5N2QuLmEzZjE0NmIwYmE3NGQ3MTEyYzZiZTU0
YjYzOGI5YmFhZjYyNjljZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CkBAIC0xNzQsNiArMTc0LDcgQEAgZW51bSBjbGFzcyBOb3RpZmljYXRpb25EaXJlY3Rpb247CiBl
bnVtIGNsYXNzIFNob3VsZFNhbXBsZTsKIAogc3RydWN0IEFwcGxpY2F0aW9uTWFuaWZlc3Q7Citz
dHJ1Y3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjsKIHN0cnVjdCBEaWN0aW9uYXJ5UG9wdXBJ
bmZvOwogc3RydWN0IEV4Y2VwdGlvbkRldGFpbHM7CiBzdHJ1Y3QgRmlsZUNob29zZXJTZXR0aW5n
czsKQEAgLTQ0Niw3ICs0NDcsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlv
bj4gZ29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik7CiAgICAgdm9p
ZCB0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTsKICAgICB2b2lkIGRpZENoYW5nZUJhY2tGb3J3
YXJkTGlzdChXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBhZGRlZEl0ZW0sIFZlY3RvcjxSZWY8V2Vi
QmFja0ZvcndhcmRMaXN0SXRlbT4+JiYgcmVtb3ZlZCk7Ci0gICAgdm9pZCB3aWxsR29Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW0odWludDY0X3QgaXRlbUlELCBib29sIGluUGFnZUNhY2hlLCBjb25zdCBV
c2VyRGF0YSYpOworICAgIHZvaWQgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKGNvbnN0IFdl
YkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBib29sIGluUGFnZUNhY2hlLCBjb25z
dCBVc2VyRGF0YSYpOwogCiAgICAgYm9vbCBzaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlz
dEl0ZW1Jbkxpc3QoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpOwogCkBAIC04NzcsNyArODc4LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBv
bGljeUFjdGlvbiwgV2ViRnJhbWVQcm94eSYsIHVpbnQ2NF90IGxpc3RlbmVySUQsIEFQSTo6TmF2
aWdhdGlvbiogbmF2aWdhdGlvbklELCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+
JiYpOwogCi0gICAgdm9pZCBiYWNrRm9yd2FyZFJlbW92ZWRJdGVtKHVpbnQ2NF90IGl0ZW1JRCk7
CisgICAgdm9pZCBiYWNrRm9yd2FyZFJlbW92ZWRJdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXImKTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICAgIAogICAg
IC8vIERyYWcgYW5kIGRyb3Agc3VwcG9ydC4KQEAgLTE0NzAsOSArMTQ3MSw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXROZWVkc1BsYWluVGV4dFF1aXJrKGJvb2wpOwogCiAgICAgLy8gQmFjay9G
b3J3YXJkIGxpc3QgbWFuYWdlbWVudAotICAgIHZvaWQgYmFja0ZvcndhcmRBZGRJdGVtKHVpbnQ2
NF90IGl0ZW1JRCk7Ci0gICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtKHVpbnQ2NF90IGl0ZW1J
RCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7Ci0gICAgdm9pZCBiYWNrRm9yd2FyZEl0ZW1B
dEluZGV4KGludDMyX3QgaW5kZXgsIHVpbnQ2NF90JiBpdGVtSUQpOworICAgIHZvaWQgYmFja0Zv
cndhcmRBZGRJdGVtKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmKTsKKyAgICB2b2lkIGJhY2tG
b3J3YXJkR29Ub0l0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOworICAgIHZvaWQgYmFja0ZvcndhcmRJdGVtQXRJ
bmRleChpbnQzMl90IGluZGV4LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXI+Jik7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQoaW50MzJf
dCYgY291bnQpOwogICAgIHZvaWQgYmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50KGludDMyX3Qm
IGNvdW50KTsKICAgICB2b2lkIGJhY2tGb3J3YXJkQ2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA1M2ZiMTgzMmQ1ZDM4
Y2E3MDU4ODM0YTk5NDdhMjJlMWU1ZGZmN2VjLi5lYjA4MzU3ZDBmNzg4MjkwMWMwYWQ5NDdjOThh
ZDhjZmIyNzc0ODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0yMTksMTMgKzIxOSwxMyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogI2VuZGlmCiAKICAgICAjIEJhY2tGb3J3YXJkIG1lc3NhZ2VzCi0gICAgQmFja0Zv
cndhcmRBZGRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkKLSAgICBCYWNrRm9yd2FyZEdvVG9JdGVtKHVp
bnQ2NF90IGl0ZW1JRCkgLT4gKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpCi0gICAgQmFja0ZvcndhcmRJdGVtQXRJbmRleChpbnQzMl90IGl0
ZW1JbmRleCkgLT4gKHVpbnQ2NF90IGl0ZW1JRCkKKyAgICBCYWNrRm9yd2FyZEFkZEl0ZW0oc3Ry
dWN0IFdlYktpdDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIGl0ZW1TdGF0ZSkKKyAgICBCYWNr
Rm9yd2FyZEdvVG9JdGVtKHN0cnVjdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
IGl0ZW1JRCkgLT4gKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRl
bnNpb25IYW5kbGUpCisgICAgQmFja0ZvcndhcmRJdGVtQXRJbmRleChpbnQzMl90IGl0ZW1JbmRl
eCkgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4g
aXRlbUlEKQogICAgIEJhY2tGb3J3YXJkQmFja0xpc3RDb3VudCgpIC0+IChpbnQzMl90IGNvdW50
KQogICAgIEJhY2tGb3J3YXJkRm9yd2FyZExpc3RDb3VudCgpIC0+IChpbnQzMl90IGNvdW50KQog
ICAgIEJhY2tGb3J3YXJkQ2xlYXIoKQotICAgIFdpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSh1
aW50NjRfdCBpdGVtSUQsIGJvb2wgaW5QYWdlQ2FjaGUsIFdlYktpdDo6VXNlckRhdGEgdXNlckRh
dGEpCisgICAgV2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKHN0cnVjdCBXZWJDb3JlOjpCYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyIGl0ZW1JRCwgYm9vbCBpblBhZ2VDYWNoZSwgV2ViS2l0OjpV
c2VyRGF0YSB1c2VyRGF0YSkKIAogICAgICMgVW5kby9SZWRvIG1lc3NhZ2VzCiAgICAgUmVnaXN0
ZXJFZGl0Q29tbWFuZEZvclVuZG8odWludDY0X3QgY29tbWFuZElELCB1aW50MzJfdCBlZGl0QWN0
aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGFi
OWM4YjA0NDMwNWIwMGYwNWUzNmJlYmI3YzVjYWVhMjkxMWI4NTkuLmMwMTE5OGMzZjc4YWI1MTAw
NDUwNTdlNTJhNGI1ZmM1MDAxNWUyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKQEAgLTgwLDYgKzgwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0xvZ0lu
aXRpYWxpemF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Qcm9jZXNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAg
LTI0OCw2ICsyNDksNyBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUZsYWcsIFtdIHsKICAgICAgICAgV1RGOjpzZXRQcm9jZXNzUHJpdmlsZWdlcyhhbGxQcml2
aWxlZ2VzKCkpOwogICAgICAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnBlcm1p
dFByb2Nlc3NUb1VzZUNvb2tpZUFQSSh0cnVlKTsKKyAgICAgICAgUHJvY2Vzczo6c2V0SWRlbnRp
ZmllcihnZW5lcmF0ZU9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXJU
eXBlPigpKTsKICAgICB9KTsKIAogICAgIGlmIChtX2NvbmZpZ3VyYXRpb24tPnNob3VsZEhhdmVM
ZWdhY3lEYXRhU3RvcmUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCmluZGV4IDlhMDFkNWI0YjM1NzFhODg3NjYxMmM3NWEzY2FkNzI5MDQ4NGEzZTYuLjQ5
M2U4OGQyMzliZjhhZDAxNmJiNWI3YTk3OWJhMDU5ZjRiNzBjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDI3LDE0ICs0MjcsNiBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIHVp
bnQ2NF90IHBhZ2VJRCkKICAgICBtX3Byb2Nlc3NQb29sLT5wYWdlRW5kVXNpbmdXZWJzaXRlRGF0
YVN0b3JlKHdlYlBhZ2UpOwogCiAgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGlt
ZXIoKTsKLSAgICAKLSAgICBWZWN0b3I8dWludDY0X3Q+IGl0ZW1JRHNUb1JlbW92ZTsKLSAgICBm
b3IgKGF1dG8mIGlkQW5kSXRlbSA6IG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcCkgewotICAgICAg
ICBpZiAoaWRBbmRJdGVtLnZhbHVlLT5wYWdlSUQoKSA9PSBwYWdlSUQpCi0gICAgICAgICAgICBp
dGVtSURzVG9SZW1vdmUuYXBwZW5kKGlkQW5kSXRlbS5rZXkpOwotICAgIH0KLSAgICBmb3IgKGF1
dG8gaXRlbUlEIDogaXRlbUlEc1RvUmVtb3ZlKQotICAgICAgICBtX2JhY2tGb3J3YXJkTGlzdEl0
ZW1NYXAucmVtb3ZlKGl0ZW1JRCk7CiAKICAgICBtYXliZVNodXREb3duKCk7CiB9CkBAIC00NjMs
MjUgKzQ1NSw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkoV2ViVXNlckNvbnRlbnRDb250CiAgICAgbV93ZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94aWVzLnJlbW92ZSgmcHJveHkpOwogfQogCi1XZWJCYWNrRm9yd2FyZExp
c3RJdGVtKiBXZWJQcm9jZXNzUHJveHk6OndlYkJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVt
SUQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcC5nZXQoaXRl
bUlEKTsKLX0KLQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyTmV3V2ViQmFja0Zvcndh
cmRMaXN0SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQotewotICAgIC8vIFRoaXMg
aXRlbSB3YXMganVzdCBjcmVhdGVkIGJ5IHRoZSBVSVByb2Nlc3MgYW5kIGlzIGJlaW5nIGFkZGVk
IHRvIHRoZSBtYXAgZm9yIHRoZSBmaXJzdCB0aW1lCi0gICAgLy8gc28gd2Ugc2hvdWxkIG5vdCBh
bHJlYWR5IGhhdmUgYW4gaXRlbSBmb3IgdGhpcyBJRC4KLSAgICBBU1NFUlQoIW1fYmFja0Zvcndh
cmRMaXN0SXRlbU1hcC5jb250YWlucyhpdGVtLml0ZW1JRCgpKSk7Ci0KLSAgICBtX2JhY2tGb3J3
YXJkTGlzdEl0ZW1NYXAuc2V0KGl0ZW0uaXRlbUlEKCksICZpdGVtKTsKLX0KLQotdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnJlbW92ZUJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQpCi17Ci0g
ICAgbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLnJlbW92ZShpdGVtSUQpOwotfQotCiB2b2lkIFdl
YlByb2Nlc3NQcm94eTo6YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChjb25zdCBTdHJpbmcmIHVy
bFN0cmluZykKIHsKICAgICBVUkwgdXJsKFVSTCgpLCB1cmxTdHJpbmcpOwpAQCAtNTQ3LDExICs1
MjAsMTEgQEAgYm9vbCBXZWJQcm9jZXNzUHJveHk6OmNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJv
Y2Vzcyhjb25zdCBVUkwmIHVybCkKICAgICAvLyBJdGVtcyBpbiBiYWNrL2ZvcndhcmQgbGlzdCBo
YXZlIGJlZW4gYWxyZWFkeSBjaGVja2VkLgogICAgIC8vIE9uZSBjYXNlIHdoZXJlIHdlIGRvbid0
IGhhdmUgc2FuZGJveCBleHRlbnNpb25zIGZvciBmaWxlIFVSTHMgaW4gYi9mIGxpc3QgaXMgaWYg
dGhlIGxpc3QgaGFzIGJlZW4gcmVpbnN0YXRlZCBhZnRlciBhIGNyYXNoIG9yIGEgYnJvd3NlciBy
ZXN0YXJ0LgogICAgIFN0cmluZyBwYXRoID0gdXJsLmZpbGVTeXN0ZW1QYXRoKCk7Ci0gICAgZm9y
IChXZWJCYWNrRm9yd2FyZExpc3RJdGVtTWFwOjppdGVyYXRvciBpdGVyID0gbV9iYWNrRm9yd2Fy
ZExpc3RJdGVtTWFwLmJlZ2luKCksIGVuZCA9IG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcC5lbmQo
KTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewotICAgICAgICBVUkwgaXRlbVVSTChVUkwoKSwgaXRl
ci0+dmFsdWUtPnVybCgpKTsKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtOjphbGxJdGVtcygpLnZhbHVlcygpKSB7CisgICAgICAgIFVSTCBpdGVtVVJMKFVSTCgp
LCBpdGVtLT51cmwoKSk7CiAgICAgICAgIGlmIChpdGVtVVJMLmlzTG9jYWxGaWxlKCkgJiYgaXRl
bVVSTC5maWxlU3lzdGVtUGF0aCgpID09IHBhdGgpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgVVJMIGl0ZW1PcmlnaW5hbFVSTChVUkwoKSwgaXRlci0+dmFsdWUtPm9yaWdpbmFs
VVJMKCkpOworICAgICAgICBVUkwgaXRlbU9yaWdpbmFsVVJMKFVSTCgpLCBpdGVtLT5vcmlnaW5h
bFVSTCgpKTsKICAgICAgICAgaWYgKGl0ZW1PcmlnaW5hbFVSTC5pc0xvY2FsRmlsZSgpICYmIGl0
ZW1PcmlnaW5hbFVSTC5maWxlU3lzdGVtUGF0aCgpID09IHBhdGgpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CkBAIC01NjgsMjIgKzU0MSwxMCBAQCBib29sIFdlYlByb2Nlc3NQcm94
eTo6ZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCgpCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmFkZE9yVXBkYXRlQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCwgdWlu
dDY0X3QgcGFnZUlELCBjb25zdCBQYWdlU3RhdGUmIHBhZ2VTdGF0ZSkKK3ZvaWQgV2ViUHJvY2Vz
c1Byb3h5Ojp1cGRhdGVCYWNrRm9yd2FyZEl0ZW0oY29uc3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlJiBpdGVtU3RhdGUpCiB7Ci0gICAgTUVTU0FHRV9DSEVDS19VUkwocGFnZVN0YXRlLm1haW5G
cmFtZVN0YXRlLm9yaWdpbmFsVVJMU3RyaW5nKTsKLSAgICBNRVNTQUdFX0NIRUNLX1VSTChwYWdl
U3RhdGUubWFpbkZyYW1lU3RhdGUudXJsU3RyaW5nKTsKLQotICAgIGF1dG8mIGJhY2tGb3J3YXJk
TGlzdEl0ZW0gPSBtX2JhY2tGb3J3YXJkTGlzdEl0ZW1NYXAuYWRkKGl0ZW1JRCwgbnVsbHB0ciku
aXRlcmF0b3ItPnZhbHVlOwotICAgIGlmICghYmFja0ZvcndhcmRMaXN0SXRlbSkgewotICAgICAg
ICBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOwotICAg
ICAgICBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUuaWRlbnRpZmllciA9IGl0ZW1JRDsKLSAgICAg
ICAgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLnBhZ2VTdGF0ZSA9IHBhZ2VTdGF0ZTsKLSAgICAg
ICAgYmFja0ZvcndhcmRMaXN0SXRlbSA9IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShX
VEZNb3ZlKGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSksIHBhZ2VJRCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICAvLyBVcGRhdGUgZXhpc3RpbmcgaXRlbS4KLSAgICBiYWNrRm9yd2Fy
ZExpc3RJdGVtLT5zZXRQYWdlU3RhdGUocGFnZVN0YXRlKTsKKyAgICBpZiAoYXV0byogaXRlbSA9
IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06Oml0ZW1Gb3JJRChpdGVtU3RhdGUuaWRlbnRpZmllcikp
CisgICAgICAgIGl0ZW0tPnNldFBhZ2VTdGF0ZShpdGVtU3RhdGUucGFnZVN0YXRlKTsKIH0KIAog
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaAppbmRleCA2MDdiOWIyYWU0YWRkMjQ2NjUwMWIyMTg4NmMzNGM5MTFh
ZmQwYmFjLi5lZDEwZjkzZGRiYTkwMDA2OGQ0MWQ1M2RmZWE0ODliZGI1NWQ1ZDJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtOTIsNyArOTIsNiBAQCB0
eXBlZGVmIEJhY2tncm91bmRXZWJQcm9jZXNzQ291bnRlcjo6VG9rZW4gQmFja2dyb3VuZFdlYlBy
b2Nlc3NUb2tlbjsKIAogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVibGljIENoaWxkUHJvY2Vz
c1Byb3h5LCBwdWJsaWMgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBwcml2YXRlIFByb2Nl
c3NUaHJvdHRsZXJDbGllbnQgewogcHVibGljOgotICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRf
dCwgUmVmUHRyPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkZyYW1lUHJveHk+
PiBXZWJGcmFtZVByb3h5TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgV2ViUGFn
ZVByb3h5Kj4gV2ViUGFnZVByb3h5TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwg
UmVmUHRyPEFQSTo6VXNlckluaXRpYXRlZEFjdGlvbj4+IFVzZXJJbml0aWF0ZWRBY3Rpb25NYXA7
CkBAIC0xMjQsNyArMTIzLDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRGVzdHJveVZpc2l0ZWRM
aW5rU3RvcmUoVmlzaXRlZExpbmtTdG9yZSYpOwogICAgIHZvaWQgZGlkRGVzdHJveVdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Jik7CiAK
LSAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB3ZWJCYWNrRm9yd2FyZEl0ZW0odWludDY0X3Qg
aXRlbUlEKSBjb25zdDsKICAgICBSZWZQdHI8QVBJOjpVc2VySW5pdGlhdGVkQWN0aW9uPiB1c2Vy
SW5pdGlhdGVkQWN0aXZpdHkodWludDY0X3QpOwogCiAgICAgUmVzcG9uc2l2ZW5lc3NUaW1lciYg
cmVzcG9uc2l2ZW5lc3NUaW1lcigpIHsgcmV0dXJuIG1fcmVzcG9uc2l2ZW5lc3NUaW1lcjsgfQpA
QCAtMTQyLDkgKzE0MCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlVGV4dENoZWNrZXJT
dGF0ZSgpOwogCi0gICAgdm9pZCByZWdpc3Rlck5ld1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSYpOwotICAgIHZvaWQgcmVtb3ZlQmFja0ZvcndhcmRJdGVtKHVp
bnQ2NF90KTsKLQogICAgIHZvaWQgd2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hF
eHRlbnNpb24oKSB7IG1fbWF5SGF2ZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbiA9
IHRydWU7IH0KICAgICB2b2lkIGFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoY29uc3QgU3RyaW5n
Jik7CiAgICAgYm9vbCBoYXNBc3N1bWVkUmVhZEFjY2Vzc1RvVVJMKGNvbnN0IFdlYkNvcmU6OlVS
TCYpIGNvbnN0OwpAQCAtMjMzLDcgKzIyOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXliZVNo
dXREb3duKCk7CiAKICAgICAvLyBJUEMgbWVzc2FnZSBoYW5kbGVycy4KLSAgICB2b2lkIGFkZE9y
VXBkYXRlQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCwgdWludDY0X3QgcGFnZUlELCBj
b25zdCBQYWdlU3RhdGUmKTsKKyAgICB2b2lkIHVwZGF0ZUJhY2tGb3J3YXJkSXRlbShjb25zdCBC
YWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmKTsKICAgICB2b2lkIGRpZERlc3Ryb3lGcmFtZSh1aW50
NjRfdCk7CiAgICAgdm9pZCBkaWREZXN0cm95VXNlckdlc3R1cmVUb2tlbih1aW50NjRfdCk7CiAK
QEAgLTMxMCw3ICszMDUsNiBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eU1hcCBtX3BhZ2VN
YXA7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgU3VzcGVuZGVkUGFnZVByb3h5Kj4gbV9zdXNwZW5k
ZWRQYWdlTWFwOwogICAgIFdlYkZyYW1lUHJveHlNYXAgbV9mcmFtZU1hcDsKLSAgICBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtTWFwIG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcDsKICAgICBVc2VySW5p
dGlhdGVkQWN0aW9uTWFwIG1fdXNlckluaXRpYXRlZEFjdGlvbk1hcDsKIAogICAgIEhhc2hTZXQ8
VmlzaXRlZExpbmtTdG9yZSo+IG1fdmlzaXRlZExpbmtTdG9yZXM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZWM3Y2Y1
MDEzOTM3NmI1Mzg3Nzk5NDYwOWMwNzA1MjkwNjY2MzU4Mi4uZWRiMDVhNzA2NTM0YjE1MWIwNWVi
M2U2MzI2M2UzOTI3ODNlNjU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNyBAQAogIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogCiBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewotICAg
IEFkZE9yVXBkYXRlQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCwgdWludDY0X3QgcGFn
ZUlELCBzdHJ1Y3QgV2ViS2l0OjpQYWdlU3RhdGUgcGFnZVN0YXRlKQorICAgIFVwZGF0ZUJhY2tG
b3J3YXJkSXRlbShzdHJ1Y3QgV2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgYmFja0Zv
cndhcmRMaXN0SXRlbVN0YXRlKQogICAgIERpZERlc3Ryb3lGcmFtZSh1aW50NjRfdCBmcmFtZUlE
KSAKIAogICAgIERpZERlc3Ryb3lVc2VyR2VzdHVyZVRva2VuKHVpbnQ2NF90IHVzZXJHZXN0dXJl
VG9rZW5JRCkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggYTVkNDVh
OWE4MGVlODU4MmFiNWQzZmY5YTc4MjY4ZGZjYmRiOTIwNS4uYTQ0NzIyYWEzNWNhNjg1OWI4NDQ0
ZmU3NWY1ZGZiZjg1MTRiYTk3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNw
cApAQCAtMTEyLDE1ICsxMTIsMTUgQEAgc3RhdGljIEZyYW1lU3RhdGUgdG9GcmFtZVN0YXRlKGNv
bnN0IEhpc3RvcnlJdGVtJiBoaXN0b3J5SXRlbSkKICAgICByZXR1cm4gZnJhbWVTdGF0ZTsKIH0K
IAotUGFnZVN0YXRlIHRvUGFnZVN0YXRlKGNvbnN0IFdlYkNvcmU6Okhpc3RvcnlJdGVtJiBoaXN0
b3J5SXRlbSkKK0JhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSB0b0JhY2tGb3J3YXJkTGlzdEl0ZW1T
dGF0ZShjb25zdCBXZWJDb3JlOjpIaXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0pCiB7Ci0gICAgUGFn
ZVN0YXRlIHBhZ2VTdGF0ZTsKLQotICAgIHBhZ2VTdGF0ZS50aXRsZSA9IGhpc3RvcnlJdGVtLnRp
dGxlKCk7Ci0gICAgcGFnZVN0YXRlLm1haW5GcmFtZVN0YXRlID0gdG9GcmFtZVN0YXRlKGhpc3Rv
cnlJdGVtKTsKLSAgICBwYWdlU3RhdGUuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IGhp
c3RvcnlJdGVtLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKTsKLSAgICBwYWdlU3RhdGUu
c2Vzc2lvblN0YXRlT2JqZWN0ID0gaGlzdG9yeUl0ZW0uc3RhdGVPYmplY3QoKTsKLSAgICByZXR1
cm4gcGFnZVN0YXRlOworICAgIEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSBzdGF0ZTsKKyAgICBz
dGF0ZS5pZGVudGlmaWVyID0gaGlzdG9yeUl0ZW0uaWRlbnRpZmllcigpOworICAgIHN0YXRlLnBh
Z2VTdGF0ZS50aXRsZSA9IGhpc3RvcnlJdGVtLnRpdGxlKCk7CisgICAgc3RhdGUucGFnZVN0YXRl
Lm1haW5GcmFtZVN0YXRlID0gdG9GcmFtZVN0YXRlKGhpc3RvcnlJdGVtKTsKKyAgICBzdGF0ZS5w
YWdlU3RhdGUuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IGhpc3RvcnlJdGVtLnNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKTsKKyAgICBzdGF0ZS5wYWdlU3RhdGUuc2Vzc2lvblN0
YXRlT2JqZWN0ID0gaGlzdG9yeUl0ZW0uc3RhdGVPYmplY3QoKTsKKyAgICByZXR1cm4gc3RhdGU7
CiB9CiAKIHN0YXRpYyBSZWY8Rm9ybURhdGE+IHRvRm9ybURhdGEoY29uc3QgSFRUUEJvZHkmIGh0
dHBCb2R5KQpAQCAtMTgyLDE5ICsxODIsMTkgQEAgc3RhdGljIHZvaWQgYXBwbHlGcmFtZVN0YXRl
KEhpc3RvcnlJdGVtJiBoaXN0b3J5SXRlbSwgY29uc3QgRnJhbWVTdGF0ZSYgZnJhbWVTdGEKICNl
bmRpZgogCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZEZyYW1lU3RhdGUgOiBmcmFtZVN0YXRl
LmNoaWxkcmVuKSB7Ci0gICAgICAgIFJlZjxIaXN0b3J5SXRlbT4gY2hpbGRIaXN0b3J5SXRlbSA9
IEhpc3RvcnlJdGVtOjpjcmVhdGUoY2hpbGRGcmFtZVN0YXRlLnVybFN0cmluZywgU3RyaW5nKCkp
OworICAgICAgICBSZWY8SGlzdG9yeUl0ZW0+IGNoaWxkSGlzdG9yeUl0ZW0gPSBIaXN0b3J5SXRl
bTo6Y3JlYXRlKGNoaWxkRnJhbWVTdGF0ZS51cmxTdHJpbmcsIHsgfSwgeyB9LCB7IFByb2Nlc3M6
OmlkZW50aWZpZXIoKSwgZ2VuZXJhdGVPYmplY3RJZGVudGlmaWVyPEJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXI6Okl0ZW1JZGVudGlmaWVyVHlwZT4oKSB9KTsKICAgICAgICAgYXBwbHlGcmFtZVN0
YXRlKGNoaWxkSGlzdG9yeUl0ZW0sIGNoaWxkRnJhbWVTdGF0ZSk7CiAKICAgICAgICAgaGlzdG9y
eUl0ZW0uYWRkQ2hpbGRJdGVtKFdURk1vdmUoY2hpbGRIaXN0b3J5SXRlbSkpOwogICAgIH0KIH0K
IAotUmVmPEhpc3RvcnlJdGVtPiB0b0hpc3RvcnlJdGVtKGNvbnN0IFBhZ2VTdGF0ZSYgcGFnZVN0
YXRlKQorUmVmPEhpc3RvcnlJdGVtPiB0b0hpc3RvcnlJdGVtKGNvbnN0IEJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZSYgaXRlbVN0YXRlKQogewotICAgIFJlZjxIaXN0b3J5SXRlbT4gaGlzdG9yeUl0
ZW0gPSBIaXN0b3J5SXRlbTo6Y3JlYXRlKHBhZ2VTdGF0ZS5tYWluRnJhbWVTdGF0ZS51cmxTdHJp
bmcsIHBhZ2VTdGF0ZS50aXRsZSk7Ci0gICAgaGlzdG9yeUl0ZW0tPnNldFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kocGFnZVN0YXRlLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwot
ICAgIGhpc3RvcnlJdGVtLT5zZXRTdGF0ZU9iamVjdChwYWdlU3RhdGUuc2Vzc2lvblN0YXRlT2Jq
ZWN0LmdldCgpKTsKLSAgICBhcHBseUZyYW1lU3RhdGUoaGlzdG9yeUl0ZW0sIHBhZ2VTdGF0ZS5t
YWluRnJhbWVTdGF0ZSk7CisgICAgUmVmPEhpc3RvcnlJdGVtPiBoaXN0b3J5SXRlbSA9IEhpc3Rv
cnlJdGVtOjpjcmVhdGUoaXRlbVN0YXRlLnBhZ2VTdGF0ZS5tYWluRnJhbWVTdGF0ZS51cmxTdHJp
bmcsIGl0ZW1TdGF0ZS5wYWdlU3RhdGUudGl0bGUsIHsgfSwgaXRlbVN0YXRlLmlkZW50aWZpZXIp
OworICAgIGhpc3RvcnlJdGVtLT5zZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KGl0ZW1T
dGF0ZS5wYWdlU3RhdGUuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CisgICAgaGlzdG9y
eUl0ZW0tPnNldFN0YXRlT2JqZWN0KGl0ZW1TdGF0ZS5wYWdlU3RhdGUuc2Vzc2lvblN0YXRlT2Jq
ZWN0LmdldCgpKTsKKyAgICBhcHBseUZyYW1lU3RhdGUoaGlzdG9yeUl0ZW0sIGl0ZW1TdGF0ZS5w
YWdlU3RhdGUubWFpbkZyYW1lU3RhdGUpOwogCiAgICAgcmV0dXJuIGhpc3RvcnlJdGVtOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Np
b25TdGF0ZUNvbnZlcnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmgKaW5kZXggYmVlOWQyMjhjYTczOWE1YThmNjY1
MGNhZmNmN2JlZjBkYmNkNGRmNi4uZTBlMTFmYzhjNTIwYmM5ZjBiYTI0MTM0M2U4MWZlMWFmOGEw
YTliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5oCkBAIC0zNCwxMCArMzQsMTEg
QEAgY2xhc3MgSGlzdG9yeUl0ZW07CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdHJ1Y3QgQmFj
a0ZvcndhcmRMaXN0SXRlbVN0YXRlOwogc3RydWN0IFBhZ2VTdGF0ZTsKIAotUGFnZVN0YXRlIHRv
UGFnZVN0YXRlKGNvbnN0IFdlYkNvcmU6Okhpc3RvcnlJdGVtJik7Ci1SZWY8V2ViQ29yZTo6SGlz
dG9yeUl0ZW0+IHRvSGlzdG9yeUl0ZW0oY29uc3QgUGFnZVN0YXRlJik7CitCYWNrRm9yd2FyZExp
c3RJdGVtU3RhdGUgdG9CYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUoY29uc3QgV2ViQ29yZTo6SGlz
dG9yeUl0ZW0mKTsKK1JlZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gdG9IaXN0b3J5SXRlbShjb25z
dCBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGE0ZWVhY2EwODIwNzUyODcwNTE0
ZmUxNTc1ZjUwZjdkNzZiZDNjNmQuLjc0YWM4YjJmODY5MGJmNmZmNjUxZGIxODdhNmFlMTIxNjI1
ZDY3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTEzNiwxMyArMTEz
Niw2IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEdvVG9IaXN0b3J5SXRlbShI
aXN0b3J5SXRlbSogaXRlbSkgY29uc3QKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+
cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAot
ICAgIHVpbnQ2NF90IGl0ZW1JRCA9IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppZEZvckl0ZW0o
aXRlbSk7Ci0gICAgaWYgKCFpdGVtSUQpIHsKLSAgICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGJl
IGNvbnNpZGVyaW5nIG5hdmlnYXRpbmcgdG8gYW4gaXRlbSB0aGF0IGlzIG5vdCBhY3R1YWxseSBp
biB0aGUgYmFjay9mb3J3YXJkIGxpc3QuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQogCiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxl
QmFja0ZvcndhcmRMaXN0SXRlbT4gYnVuZGxlSXRlbSA9IEluamVjdGVkQnVuZGxlQmFja0Zvcndh
cmRMaXN0SXRlbTo6Y3JlYXRlKGl0ZW0pOwogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRh
dGE7CkBAIC0xMTUyLDcgKzExNDUsNyBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91
bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pIGNvbnN0CiAgICAgaWYgKCFzaG91
bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
d2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXaWxsR29Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW0oaXRlbUlELCBidW5kbGVJdGVtLT5pc0luUGFnZUNhY2hlKCksIFVzZXJEYXRhKFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEu
Z2V0KCkpLmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6V2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKGl0ZW0tPmlkZW50aWZpZXIoKSwgYnVuZGxl
SXRlbS0+aXNJblBhZ2VDYWNoZSgpLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50
cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCmluZGV4IDdjMTBjNzhlM2Zl
ZjJiMTc5MzcxZGE1YmE0ODMyNTIyNjFkZTc5MzUuLmU4YTNjYjdlNTE1OGE5ODQyOWUxZDZjNmVl
OThiMzhjYjdhZmNjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKQEAgLTQ3LDg0ICs0Nywz
MiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIC8vIEZJWE1FIDxyZGFyOi8vcHJvYmxlbS84ODE5MjY4
PjogVGhpcyBsZWFrcyBhbGwgSGlzdG9yeUl0ZW1zIHRoYXQgZ28gaW50byB0aGVzZSBtYXBzLgog
Ly8gV2UgbmVlZCB0byBjbGVhciB1cCB0aGUgbGlmZSB0aW1lIG9mIHRoZXNlIG9iamVjdHMuCiAK
LXR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEhpc3RvcnlJdGVtPj4gSURUb0hpc3Rv
cnlJdGVtTWFwOyAvLyAiSUQiIGhlcmUgaXMgdGhlIGl0ZW0gSUQuCi0gICAgCi1zdHJ1Y3QgSXRl
bUFuZFBhZ2VJRCB7Ci0gICAgdWludDY0X3QgaXRlbUlEOwotICAgIHVpbnQ2NF90IHBhZ2VJRDsK
LX07Ci10eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEhpc3RvcnlJdGVtPiwgSXRlbUFuZFBhZ2VJRD4g
SGlzdG9yeUl0ZW1Ub0lETWFwOwotCit0eXBlZGVmIEhhc2hNYXA8QmFja0ZvcndhcmRJdGVtSWRl
bnRpZmllciwgUmVmUHRyPEhpc3RvcnlJdGVtPj4gSURUb0hpc3RvcnlJdGVtTWFwOyAvLyAiSUQi
IGhlcmUgaXMgdGhlIGl0ZW0gSUQuCiBzdGF0aWMgSURUb0hpc3RvcnlJdGVtTWFwJiBpZFRvSGlz
dG9yeUl0ZW1NYXAoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxJRFRvSGlzdG9yeUl0
ZW1NYXA+IG1hcDsKICAgICByZXR1cm4gbWFwOwogfQogCi1zdGF0aWMgSGlzdG9yeUl0ZW1Ub0lE
TWFwJiBoaXN0b3J5SXRlbVRvSURNYXAoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
aXN0b3J5SXRlbVRvSURNYXA+IG1hcDsKLSAgICByZXR1cm4gbWFwOwotfQotCi1zdGF0aWMgdWlu
dDY0X3QgdW5pcXVlSGlzdG9yeUl0ZW1JRCA9IDE7Ci0KLXN0YXRpYyB1aW50NjRfdCBnZW5lcmF0
ZUhpc3RvcnlJdGVtSUQoKQotewotICAgIC8vIFRoZXNlIElEcyBleGlzdCBpbiB0aGUgV2ViUHJv
Y2VzcyBmb3IgaXRlbXMgY3JlYXRlZCBieSB0aGUgV2ViUHJvY2Vzcy4KLSAgICAvLyBUaGUgSURz
IGdlbmVyYXRlZCBoZXJlIG5lZWQgdG8gbmV2ZXIgY29sbGlkZSB3aXRoIHRoZSBJRHMgY3JlYXRl
ZCBpbiBXZWJCYWNrRm9yd2FyZExpc3QgaW4gdGhlIFVJUHJvY2Vzcy4KLSAgICAvLyBXZSBhY2Nv
bXBsaXNoIHRoaXMgYnkgc3RhcnRpbmcgZnJvbSAzLCBhbmQgb25seSBldmVyIHVzaW5nIG9kZCBp
ZHMuCi0gICAgdW5pcXVlSGlzdG9yeUl0ZW1JRCArPSAyOwotICAgIHJldHVybiB1bmlxdWVIaXN0
b3J5SXRlbUlEOwotfQotCi12b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpzZXRIaWdoZXN0
SXRlbUlERnJvbVVJUHJvY2Vzcyh1aW50NjRfdCBpdGVtSUQpCit2b2lkIFdlYkJhY2tGb3J3YXJk
TGlzdFByb3h5OjphZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVu
dGlmaWVyJiBpdGVtSUQsIFJlZjxIaXN0b3J5SXRlbT4mJiBpdGVtLCB1aW50NjRfdCBwYWdlSUQp
CiB7Ci0gICAgaWYgKGl0ZW1JRCA8PSB1bmlxdWVIaXN0b3J5SXRlbUlEKQotICAgICAgICByZXR1
cm47Ci0gICAgCi0gICAgIGlmIChpdGVtSUQgJSAyKQotICAgICAgICAgdW5pcXVlSGlzdG9yeUl0
ZW1JRCA9IGl0ZW1JRDsKLSAgICAgZWxzZQotICAgICAgICAgdW5pcXVlSGlzdG9yeUl0ZW1JRCA9
IGl0ZW1JRCArIDE7Ci19Ci0KLXN0YXRpYyB2b2lkIHVwZGF0ZUJhY2tGb3J3YXJkSXRlbSh1aW50
NjRfdCBpdGVtSUQsIHVpbnQ2NF90IHBhZ2VJRCwgSGlzdG9yeUl0ZW0qIGl0ZW0pCi17Ci0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpBZGRPclVwZGF0ZUJhY2tGb3J3YXJkSXRlbShpdGVt
SUQsIHBhZ2VJRCwgdG9QYWdlU3RhdGUoKml0ZW0pKSwgMCk7Ci19Ci0KLXZvaWQgV2ViQmFja0Zv
cndhcmRMaXN0UHJveHk6OmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKHVpbnQ2NF90IGl0ZW1JRCwgUmVm
PEhpc3RvcnlJdGVtPiYmIGl0ZW0sIHVpbnQ2NF90IHBhZ2VJRCkKLXsKLSAgICAvLyBUaGlzIGl0
ZW0vaXRlbUlEIHBhaXIgc2hvdWxkIG5vdCBhbHJlYWR5IGV4aXN0IGluIG91ciBtYXBzLgotICAg
IEFTU0VSVCghaGlzdG9yeUl0ZW1Ub0lETWFwKCkuY29udGFpbnMoaXRlbS5wdHIoKSkpOworICAg
IC8vIFRoaXMgaXRlbS9pdGVtSUQgcGFpciBzaG91bGQgbm90IGFscmVhZHkgZXhpc3QgaW4gb3Vy
IG1hcC4KICAgICBBU1NFUlQoIWlkVG9IaXN0b3J5SXRlbU1hcCgpLmNvbnRhaW5zKGl0ZW1JRCkp
OwogCi0gICAgaGlzdG9yeUl0ZW1Ub0lETWFwKCkuc2V0PEl0ZW1BbmRQYWdlSUQ+KGl0ZW0ucHRy
KCksIHsgaXRlbUlELCBwYWdlSUQgfSk7CiAgICAgaWRUb0hpc3RvcnlJdGVtTWFwKCkuc2V0KGl0
ZW1JRCwgaXRlbS5wdHIoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIFdLMk5vdGlmeUhpc3RvcnlJdGVt
Q2hhbmdlZChIaXN0b3J5SXRlbSogaXRlbSkKIHsKLSAgICBJdGVtQW5kUGFnZUlEIGlkcyA9IGhp
c3RvcnlJdGVtVG9JRE1hcCgpLmdldChpdGVtKTsKLSAgICBpZiAoIWlkcy5pdGVtSUQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIHVwZGF0ZUJhY2tGb3J3YXJkSXRlbShpZHMuaXRlbUlELCBpZHMu
cGFnZUlELCBpdGVtKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlVwZGF0ZUJhY2tG
b3J3YXJkSXRlbSh0b0JhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSgqaXRlbSkpLCAwKTsKIH0KIAot
SGlzdG9yeUl0ZW0qIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppdGVtRm9ySUQodWludDY0X3Qg
aXRlbUlEKQorSGlzdG9yeUl0ZW0qIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppdGVtRm9ySUQo
Y29uc3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYgaXRlbUlEKQogewogICAgIHJldHVybiBp
ZFRvSGlzdG9yeUl0ZW1NYXAoKS5nZXQoaXRlbUlEKTsKIH0KIAotdWludDY0X3QgV2ViQmFja0Zv
cndhcmRMaXN0UHJveHk6OmlkRm9ySXRlbShIaXN0b3J5SXRlbSogaXRlbSkKLXsKLSAgICBBU1NF
UlQoaXRlbSk7Ci0gICAgcmV0dXJuIGhpc3RvcnlJdGVtVG9JRE1hcCgpLmdldChpdGVtKS5pdGVt
SUQ7Ci19Ci0KLXZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OnJlbW92ZUl0ZW0odWludDY0
X3QgaXRlbUlEKQordm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6cmVtb3ZlSXRlbShjb25z
dCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQpCiB7CiAgICAgUmVmUHRyPEhpc3Rv
cnlJdGVtPiBpdGVtID0gaWRUb0hpc3RvcnlJdGVtTWFwKCkudGFrZShpdGVtSUQpOwogICAgIGlm
ICghaXRlbSkKQEAgLTEzMiw3ICs4MCw2IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6
OnJlbW92ZUl0ZW0odWludDY0X3QgaXRlbUlEKQogICAgICAgICAKICAgICBQYWdlQ2FjaGU6OnNp
bmdsZXRvbigpLnJlbW92ZSgqaXRlbSk7CiAgICAgV2ViQ29yZTo6UGFnZTo6Y2xlYXJQcmV2aW91
c0l0ZW1Gcm9tQWxsUGFnZXMoaXRlbS5nZXQoKSk7Ci0gICAgaGlzdG9yeUl0ZW1Ub0lETWFwKCku
cmVtb3ZlKGl0ZW0pOwogfQogCiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6V2ViQmFja0Zvcndh
cmRMaXN0UHJveHkoV2ViUGFnZSogcGFnZSkKQEAgLTE0MywyMCArOTAsMTMgQEAgV2ViQmFja0Zv
cndhcmRMaXN0UHJveHk6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5KFdlYlBhZ2UqIHBhZ2UpCiAK
IHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYm
IGl0ZW0pCiB7Ci0gICAgQVNTRVJUKCFoaXN0b3J5SXRlbVRvSURNYXAoKS5jb250YWlucyhpdGVt
LnB0cigpKSk7Ci0KICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdWlu
dDY0X3QgaXRlbUlEID0gZ2VuZXJhdGVIaXN0b3J5SXRlbUlEKCk7Ci0KLSAgICBBU1NFUlQoIWlk
VG9IaXN0b3J5SXRlbU1hcCgpLmNvbnRhaW5zKGl0ZW1JRCkpOwotCi0gICAgaGlzdG9yeUl0ZW1U
b0lETWFwKCkuc2V0PEl0ZW1BbmRQYWdlSUQ+KGl0ZW0ucHRyKCksIHsgaXRlbUlELCBtX3BhZ2Ut
PnBhZ2VJRCgpIH0pOwotICAgIGlkVG9IaXN0b3J5SXRlbU1hcCgpLnNldChpdGVtSUQsIGl0ZW0u
cHRyKCkpOworICAgIGF1dG8gcmVzdWx0ID0gaWRUb0hpc3RvcnlJdGVtTWFwKCkuYWRkKGl0ZW0t
PmlkZW50aWZpZXIoKSwgaXRlbS5wdHIoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdC5pc05ld0VudHJ5KTsKIAotICAgIHVwZGF0ZUJhY2tGb3J3YXJkSXRlbShpdGVtSUQsIG1f
cGFnZS0+cGFnZUlEKCksIGl0ZW0ucHRyKCkpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEFkZEl0ZW0oaXRlbUlEKSk7CisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkQWRkSXRlbSh0b0JhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZShpdGVtLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkJhY2tGb3J3YXJk
TGlzdFByb3h5Ojpnb1RvSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKQEAgLTE2NSw3ICsxMDUsNyBA
QCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5Ojpnb1RvSXRlbShIaXN0b3J5SXRlbSogaXRl
bSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpCYWNrRm9yd2FyZEdvVG9JdGVtKGhpc3RvcnlJdGVtVG9JRE1hcCgpLmdldChpdGVt
KS5pdGVtSUQpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEdvVG9JdGVtOjpS
ZXBseShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CisgICAgbV9wYWdlLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEdvVG9JdGVtKGl0ZW0tPmlkZW50aWZpZXIo
KSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkR29Ub0l0ZW06OlJlcGx5KHNh
bmRib3hFeHRlbnNpb25IYW5kbGUpKTsKICAgICBtX3BhZ2UtPnNhbmRib3hFeHRlbnNpb25UcmFj
a2VyKCkuYmVnaW5Mb2FkKG1fcGFnZS0+bWFpbldlYkZyYW1lKCksIFdURk1vdmUoc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSkpOwogfQogCkBAIC0xNzQsMTQgKzExNCwxNCBAQCBIaXN0b3J5SXRlbSog
V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Oml0ZW1BdEluZGV4KGludCBpdGVtSW5kZXgpCiAgICAg
aWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgdWludDY0X3QgaXRl
bUlEID0gMDsKKyAgICBzdGQ6Om9wdGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+IGl0
ZW1JRDsKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkSXRl
bUF0SW5kZXgoaXRlbUluZGV4KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRJ
dGVtQXRJbmRleDo6UmVwbHkoaXRlbUlEKSwgbV9wYWdlLT5wYWdlSUQoKSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgaWYgKCFpdGVtSUQpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcmV0dXJuIGlkVG9IaXN0b3J5SXRlbU1hcCgpLmdldChpdGVtSUQpOworICAgIHJl
dHVybiBpZFRvSGlzdG9yeUl0ZW1NYXAoKS5nZXQoKml0ZW1JRCk7CiB9CiAKIGludCBXZWJCYWNr
Rm9yd2FyZExpc3RQcm94eTo6YmFja0xpc3RDb3VudCgpCkBAIC0yMTAsNiArMTUwLDcgQEAgaW50
IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5Ojpmb3J3YXJkTGlzdENvdW50KCkKIAogdm9pZCBXZWJC
YWNrRm9yd2FyZExpc3RQcm94eTo6Y2xvc2UoKQogeworICAgIEFTU0VSVChtX3BhZ2UpOwogICAg
IG1fcGFnZSA9IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCmluZGV4IGQ0M2Y5NDhj
YTAxYmMwMWRjNWMzZmRkYzMyMjJlNGQ1NzZiNTIxNGMuLmNhZDcwZTg2MDI5ZTQ2MDg3ODYyZjAw
MjViMTE1MTc3NjIyZTAyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaApAQCAtMjksNiArMjksMTAg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0JhY2tGb3J3YXJkQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IEJhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlOwpA
QCAtMzcsMTIgKzQxLDEwIEBAIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5IDogcHVibGlj
IFdlYkNvcmU6OkJhY2tGb3J3YXJkQ2xpZW50IHsKIHB1YmxpYzogCiAgICAgc3RhdGljIFJlZjxX
ZWJCYWNrRm9yd2FyZExpc3RQcm94eT4gY3JlYXRlKFdlYlBhZ2UqIHBhZ2UpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViQmFja0ZvcndhcmRMaXN0UHJveHkocGFnZSkpOyB9CiAKLSAgICBzdGF0
aWMgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW1Gb3JJRCh1aW50NjRfdCk7Ci0gICAgc3RhdGlj
IHVpbnQ2NF90IGlkRm9ySXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopOwotICAgIHN0YXRpYyB2
b2lkIHJlbW92ZUl0ZW0odWludDY0X3QgaXRlbUlEKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6SGlz
dG9yeUl0ZW0qIGl0ZW1Gb3JJRChjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyJik7CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyJik7CiAKLSAgICB2b2lkIGFkZEl0ZW1Gcm9tVUlQcm9jZXNzKHVp
bnQ2NF90IGl0ZW1JRCwgUmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYmLCB1aW50NjRfdCBwYWdl
SUQpOwotICAgIHN0YXRpYyB2b2lkIHNldEhpZ2hlc3RJdGVtSURGcm9tVUlQcm9jZXNzKHVpbnQ2
NF90IGl0ZW1JRCk7CisgICAgdm9pZCBhZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBXZWJDb3Jl
OjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgUmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYm
LCB1aW50NjRfdCBwYWdlSUQpOwogICAgIAogICAgIHZvaWQgY2xlYXIoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA5ZTkxYzNiOGU1MjMz
OGI2NDkyY2Q2NjljMjExZjEyNWJhZjY0Y2IxLi5mMDIyZWUxM2U1YzM4Yzg2NTBmZTFlN2E5NzMw
YzliY2E5ZDRjMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcApAQCAtNTIzLDggKzUyMyw2IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFn
ZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBzZXRUb3BD
b250ZW50SW5zZXQocGFyYW1ldGVycy50b3BDb250ZW50SW5zZXQpOwogCiAgICAgbV91c2VyQWdl
bnQgPSBwYXJhbWV0ZXJzLnVzZXJBZ2VudDsKLQotICAgIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5
OjpzZXRIaWdoZXN0SXRlbUlERnJvbVVJUHJvY2VzcyhwYXJhbWV0ZXJzLmhpZ2hlc3RVc2VkQmFj
a0ZvcndhcmRJdGVtSUQpOwogICAgIAogICAgIGlmICghcGFyYW1ldGVycy5pdGVtU3RhdGVzLmlz
RW1wdHkoKSkKICAgICAgICAgcmVzdG9yZVNlc3Npb25JbnRlcm5hbChwYXJhbWV0ZXJzLml0ZW1T
dGF0ZXMsIFdhc1Jlc3RvcmVkQnlBUElSZXF1ZXN0OjpObyk7CkBAIC0xMzkwLDcgKzEzODgsNyBA
QCB2b2lkIFdlYlBhZ2U6OnJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHJl
bG9hZE9wdGlvbnMsIFNhbmRib3hFeHRlbgogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlOjpnb1Rv
QmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QgYmFja0Zvcndh
cmRJdGVtSUQsIEZyYW1lTG9hZFR5cGUgYmFja0ZvcndhcmRUeXBlLCBOYXZpZ2F0aW9uUG9saWN5
Q2hlY2sgbmF2aWdhdGlvblBvbGljeUNoZWNrKQordm9pZCBXZWJQYWdlOjpnb1RvQmFja0Zvcndh
cmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgQmFja0ZvcndhcmRJdGVtSWRlbnRp
ZmllciYgYmFja0ZvcndhcmRJdGVtSUQsIEZyYW1lTG9hZFR5cGUgYmFja0ZvcndhcmRUeXBlLCBO
YXZpZ2F0aW9uUG9saWN5Q2hlY2sgbmF2aWdhdGlvblBvbGljeUNoZWNrKQogewogICAgIFNlbmRT
dG9wUmVzcG9uc2l2ZW5lc3NUaW1lciBzdG9wcGVyOwogCkBAIC0yNDg4LDcgKzI0ODYsNyBAQCB2
b2lkIFdlYlBhZ2U6OmV4ZWN1dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1l
LCBjb25zdCBTdHJpbmcmIGFyZ3VtZQogdm9pZCBXZWJQYWdlOjpyZXN0b3JlU2Vzc2lvbkludGVy
bmFsKGNvbnN0IFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+JiBpdGVtU3RhdGVzLCBX
YXNSZXN0b3JlZEJ5QVBJUmVxdWVzdCByZXN0b3JlZEJ5QVBJUmVxdWVzdCkKIHsKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGl0ZW1TdGF0ZSA6IGl0ZW1TdGF0ZXMpIHsKLSAgICAgICAgYXV0byBoaXN0
b3J5SXRlbSA9IHRvSGlzdG9yeUl0ZW0oaXRlbVN0YXRlLnBhZ2VTdGF0ZSk7CisgICAgICAgIGF1
dG8gaGlzdG9yeUl0ZW0gPSB0b0hpc3RvcnlJdGVtKGl0ZW1TdGF0ZSk7CiAgICAgICAgIGhpc3Rv
cnlJdGVtLT5zZXRXYXNSZXN0b3JlZEZyb21TZXNzaW9uKHJlc3RvcmVkQnlBUElSZXF1ZXN0ID09
IFdhc1Jlc3RvcmVkQnlBUElSZXF1ZXN0OjpZZXMpOwogICAgICAgICBzdGF0aWNfY2FzdDxXZWJC
YWNrRm9yd2FyZExpc3RQcm94eSo+KGNvcmVQYWdlKCktPmJhY2tGb3J3YXJkKCkuY2xpZW50KCkp
LT5hZGRJdGVtRnJvbVVJUHJvY2VzcyhpdGVtU3RhdGUuaWRlbnRpZmllciwgV1RGTW92ZShoaXN0
b3J5SXRlbSksIG1fcGFnZUlEKTsKICAgICB9CkBAIC00MDgyLDcgKzQwODAsNyBAQCB2b2lkIFdl
YlBhZ2U6OnNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGluZykK
ICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLnJlbG9hZFdpdGhPdmVycmlkZUVuY29k
aW5nKGVuY29kaW5nKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRSZW1vdmVCYWNrRm9yd2FyZEl0
ZW0odWludDY0X3QgaXRlbUlEKQordm9pZCBXZWJQYWdlOjpkaWRSZW1vdmVCYWNrRm9yd2FyZEl0
ZW0oY29uc3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYgaXRlbUlEKQogewogICAgIFdlYkJh
Y2tGb3J3YXJkTGlzdFByb3h5OjpyZW1vdmVJdGVtKGl0ZW1JRCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNTMwMGI3ZWQ0OTI1ZTM3MWQ4OTUy
NWRmNzViNzgwMTVjZWVlMjcxNC4uYzNjNjBmMjcxZTVkY2FmM2IwNTMzYjk1NjczZjA4NTI5YWFi
MTY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
MTU0LDYgKzE1NCw3IEBAIGVudW0gU3ludGhldGljQ2xpY2tUeXBlIDogaW50OF90OwogZW51bSBj
bGFzcyBOYXZpZ2F0aW9uUG9saWN5Q2hlY2s7CiBlbnVtIGNsYXNzIFRleHRJbmRpY2F0b3JQcmVz
ZW50YXRpb25UcmFuc2l0aW9uIDogdWludDhfdDsKIAorc3RydWN0IEJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXI7CiBzdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmU7CiBzdHJ1Y3QgRGljdGF0aW9u
QWx0ZXJuYXRpdmU7CiBzdHJ1Y3QgR2xvYmFsRnJhbWVJZGVudGlmaWVyOwpAQCAtMTE1Myw3ICsx
MTU0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvbnN0
IExvYWRQYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0
ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2lu
dCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwogICAgIHZvaWQgcmVsb2FkKHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3QgcmVsb2FkT3B0aW9ucywgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiYpOwotICAgIHZvaWQgZ29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIHVpbnQ2NF90LCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlLCBXZWJDb3JlOjpOYXZp
Z2F0aW9uUG9saWN5Q2hlY2spOworICAgIHZvaWQgZ29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIm
LCBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlLCBXZWJDb3JlOjpOYXZpZ2F0aW9uUG9saWN5Q2hlY2sp
OwogICAgIHZvaWQgdHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7CiAgICAgdm9pZCBzZXRJbml0
aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBX
ZWJLZXlib2FyZEV2ZW50JiwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB1cGRhdGVJc0luV2luZG93
KGJvb2wgaXNJbml0aWFsU3RhdGUgPSBmYWxzZSk7CkBAIC0xMTg2LDcgKzExODcsNyBAQCBwcml2
YXRlOgogICAgIGVudW0gY2xhc3MgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3QgeyBObywgWWVzIH07
CiAgICAgdm9pZCByZXN0b3JlU2Vzc2lvbkludGVybmFsKGNvbnN0IFZlY3RvcjxCYWNrRm9yd2Fy
ZExpc3RJdGVtU3RhdGU+JiwgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3QpOwogICAgIHZvaWQgcmVz
dG9yZVNlc3Npb24oY29uc3QgVmVjdG9yPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4mKTsKLSAg
ICB2b2lkIGRpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCk7CisgICAgdm9pZCBkaWRS
ZW1vdmVCYWNrRm9yd2FyZEl0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRp
ZmllciYpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgdm9pZCBzZXRBbGxv
d3NSZW1vdGVJbnNwZWN0aW9uKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggY2M3MGE5YWM4MTgxZTFjZGU1
ODNiMmQzNTc1NTVmMzk3MDczZTcxYy4uMmI5MDIxZmE3MTQ3MjI5OGJhZDkxY2EzYzZhNWE4Njcz
OGQ4OGU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xMzEsNyArMTMxLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2Nyb2xsQnkodWludDMyX3Qgc2Nyb2xsRGlyZWN0aW9u
LCB1aW50MzJfdCBzY3JvbGxHcmFudWxhcml0eSkKICAgICBDZW50ZXJTZWxlY3Rpb25JblZpc2li
bGVBcmVhKCkKIAotICAgIEdvVG9CYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgbmF2aWdhdGlvbklE
LCB1aW50NjRfdCBiYWNrRm9yd2FyZEl0ZW1JRCwgZW51bSBXZWJDb3JlOjpGcmFtZUxvYWRUeXBl
IGJhY2tGb3J3YXJkVHlwZSwgZW51bSBXZWJDb3JlOjpOYXZpZ2F0aW9uUG9saWN5Q2hlY2sgbmF2
aWdhdGlvblBvbGljeUNoZWNrKQorICAgIEdvVG9CYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgbmF2
aWdhdGlvbklELCBzdHJ1Y3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBiYWNr
Rm9yd2FyZEl0ZW1JRCwgZW51bSBXZWJDb3JlOjpGcmFtZUxvYWRUeXBlIGJhY2tGb3J3YXJkVHlw
ZSwgZW51bSBXZWJDb3JlOjpOYXZpZ2F0aW9uUG9saWN5Q2hlY2sgbmF2aWdhdGlvblBvbGljeUNo
ZWNrKQogICAgIFRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCiAKICAgICBMb2FkVVJMSW5GcmFt
ZShXZWJDb3JlOjpVUkwgdXJsLCB1aW50NjRfdCBmcmFtZUlEKQpAQCAtMTQ5LDcgKzE0OSw3IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIAogICAgIFJlc3RvcmVT
ZXNzaW9uKFZlY3RvcjxXZWJLaXQ6OkJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4gaXRlbVN0YXRl
cykKIAotICAgIERpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBiYWNrRm9yd2FyZEl0
ZW1JRCkKKyAgICBEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oc3RydWN0IFdlYkNvcmU6OkJhY2tG
b3J3YXJkSXRlbUlkZW50aWZpZXIgYmFja0ZvcndhcmRJdGVtSUQpCiAKICAgICBVcGRhdGVXZWJz
aXRlUG9saWNpZXMoc3RydWN0IFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YSB3ZWJzaXRlUG9s
aWNpZXMpCiAgICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIGVudW0gV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlv
biwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwg
c3RkOjpvcHRpb25hbDxXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2ll
cykK
</data>

          </attachment>
      

    </bug>

</bugzilla>